Comments (14)
https://github.com/vloncar/hls4ml/tree/intel
from hls4ml.
Has some work been done toward this goal? I'm wondering what is involved to use this on an intel/altera FPGA.
from hls4ml.
hi @kutenai -- there is work on-going to integrate intel/altera FPGAs into the workflow. It was a bit slow-going at first, but there is more progress recently. we don't have a fixed timeline for any release, but we could try to put out something in pre-alpha on the timescale of ~weeks/month or so
from hls4ml.
That is very exciting news... thanks for the work.
I'm not sure what is involved, or if there is a way I could help out or not.. but, I could theoretically do that in a month or so. Right now I'm in a crunch to implement a CNN in a Cyclone V, so using OpenCL, but this hls4ml looks very very impressive... and I daresay like a better long-term solution.
from hls4ml.
Are there any updates on this @nhanvtran ?
from hls4ml.
How far did you get with your CNN implementation? As of now, we only support Quantized Dense networks with user-defined latency/area trade off. We do plan to extend this to CNN's in the near future. Also what specific models are you interested in implementing?
from hls4ml.
@hamzajaved780 -- I did not get far at all. I've been trying to use OpenCL with a Cyclone V device, and HLS -- lots of buzzwords in there ;-)
But, I just found out from Intel that this is not supported. It used to be, but it never really panned out I guess, so support was dropped in Quartus 17. I've been trying to make this work in Quartus 18, and have had no luck at all.. now, I know why.
I'm coming back to look at HLS...
I have one SUPER important question that I hope someone can answer... Does hls4ml outputs some code that I could manually import into a Quartus project?
I'm find doing the legwork on that, and would even be interested in porting that back in for support if possible, but I would like to know if I'm on a "reasonable" track.
My hope is that the "Xilinx" support is more along the lines of intergartion into the IDE, generation of .tcl files, etc... but the code itself is close to portable. If so, I'll figure out the steps to get it into Quartus...
Sound possible?
from hls4ml.
I think you can import both the HLS and the compiled project into Quartus, the HLS compiler even generates a Quartus project file.
CNN implementation on the Xilinx side is still a work in progress, mainly limited by the size of layer/model you want to implement.
Portability wont be an issue, the HLS code is mostly shared between the two, although you'll have to do a lot of optimizations to get similar performance (mainly through pragmas and interface modification).
I'll be starting my work on implementing CNNs from next week, so it'd be nice if you have some specific model that we can target for this device and see how well it performs.
My recommendation would be to start from the new large dense implementation and then convert it into a Conv layer (using the Xilinx Conv template). If we can get something working, generalizing it would be trivial. Limiting resource usage is super critical when dealing with millions of MACs (Multiplication and Addition), so we might have to change a bit of architecture for it to work well on Intel.
from hls4ml.
I don't see in the "example-models" projects where it generates a quartus output file.
I ran the example hls4ml conviert -c keras-config.yml
.
It ran fine, but there is no quartus output file. Note that this is on the master
branch.
from hls4ml.
You'll have to run "make myproject-fgpa" for it to generate those files. Also, master only works with Vivado. Try this repo instead: https://github.com/hamzajaved780/hls4ml/tree/activation-update. I'll update this repo but it should give you a nice idea.
from hls4ml.
I noticed you did not fork your repo, that's too bad, as it does not allow comparing against the main repo (as easily), or merging to the man repo with a PR.. however, it's great the work you're doing!!!!
from hls4ml.
The main repo uses an entirely different frontend than the Quartus one, it'll be updated however soon.
from hls4ml.
hls4ml will eventually consisted of three frontends for three different HLS backends. When these developments will be over, all these frontends will be integrated in a single package.
from hls4ml.
Close with #245
from hls4ml.
Related Issues (20)
- `output_rounding_saturation_mode` pass does not work with convolutional layers HOT 2
- "warning: integer constant is so large that it is unsigned" causes hls_model.compile() to fail
- CNN Synthesis fail : ERROR: [XFORM 203-504] Stop unrolling loop 'Product1' (firmware/nnet_utils/nnet_dense_latency.h:37) in function 'nnet::dense_latency<ap_fixed<2, 1, (ap_q_mode)5, (ap_o_mode)3, 0>, ap_fixed<2, 1, (ap_q_mode)5, (ap_o_mode)3, 0>, config6>' because it may cause large runtime and excessive memory usage due to increase in code size. Please avoid unrolling the loop or form sub-functions for code in the loop body. ERROR: [HLS 200-70] Pre-synthesis failed. HOT 13
- part7b of tutorial has no result returned back
- [XFORM 203-502] HOT 6
- Non-quantized QKeras layers break conversion
- Concatenation Layer Issue with PyTorch ResNet
- Keras Reshape Layer is Built with Error HOT 1
- vivadoaccelerator backend : bit file note generated HOT 5
- About QBatchNormalization is not support QKeras po2 quantizer HOT 1
- ERROR: [XFORM 203-504] Stop unrolling loop 'Product1' (firmware/nnet_utils/nnet_dense_latency.h:37) in function 'nnet::dense_latency<ap_fixed<16, 6, (ap_q_mode)5, (ap_o_mode)3, 0>, ap_fixed<16, 6, (ap_q_mode)5, (ap_o_mode)3, 0>, config42_mult>' because it may cause large runtime and excessive memory usage due to increase in code size. Please avoid unrolling the loop or form sub-functions for code in the loop body. myproject_prj:solution1 Dec 27, 2023 6:47:26 PM
- Failure at converters.convert_from_pytorch_model . compile/build()
- Move transpose based on backend from hls4ml/model/layers.py to backend-specific areas
- Problem tracing binary CNN model after recent tracing optimization HOT 8
- Wrong prediction of C Simulation compared to QKeras? HOT 3
- The hls4ml transformation successful, however, the result of inference all zeros. HOT 1
- Issue with ModelGraph function during ONNX model synthesis HOT 4
- TypeError: 'NoneType' object is not subscriptable HOT 6
- SR backend doesn't work with Vitis HLS
- Incorrect hls4ml results for AveragePooling2D/MaxPooling2D Keras layer
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from hls4ml.