{"id":26232706,"url":"https://github.com/pc2/convfpga","last_synced_at":"2026-04-15T17:32:22.522Z","repository":{"id":136811851,"uuid":"418135192","full_name":"pc2/ConvFPGA","owner":"pc2","description":"an OpenCL based library for FFT-based convolution on FPGAs","archived":false,"fork":false,"pushed_at":"2022-03-30T20:13:51.000Z","size":107,"stargazers_count":1,"open_issues_count":0,"forks_count":1,"subscribers_count":4,"default_branch":"master","last_synced_at":"2025-12-26T06:48:23.277Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"C","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/pc2.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG","contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2021-10-17T13:10:35.000Z","updated_at":"2024-02-12T10:49:04.000Z","dependencies_parsed_at":"2026-01-20T16:04:20.005Z","dependency_job_id":null,"html_url":"https://github.com/pc2/ConvFPGA","commit_stats":null,"previous_names":[],"tags_count":1,"template":false,"template_full_name":null,"purl":"pkg:github/pc2/ConvFPGA","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pc2%2FConvFPGA","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pc2%2FConvFPGA/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pc2%2FConvFPGA/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pc2%2FConvFPGA/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/pc2","download_url":"https://codeload.github.com/pc2/ConvFPGA/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pc2%2FConvFPGA/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":31852772,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-15T15:24:51.572Z","status":"ssl_error","status_checked_at":"2026-04-15T15:24:39.138Z","response_time":63,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2025-03-13T00:38:11.294Z","updated_at":"2026-04-15T17:32:22.510Z","avatar_url":"https://github.com/pc2.png","language":"C","funding_links":[],"categories":[],"sub_categories":[],"readme":"# ConvFPGA\n\nConvFPGA is an OpenCL based library for Fast Fourier Transformation based Convolutions on FPGAs.\n\n## Features\n\n- FFT-based 3D Convolution\n- Input sizes of powers of 2\n- Single Precision (32 bit floating point)\n- Batched convolutions\n- OpenCL Shared Virtual Memory (SVM) extensions for data transfers\n\n## Supported FPGAs\n\nThis library has been tested using the following FPGAs present in the [Noctua](https://pc2.uni-paderborn.de/hpc-services/available-systems/noctua1/) cluster of the Paderborn Center for Parallel Computing (PC2) at Paderborn University:\n\n- [Bittware 520N](https://www.bittware.com/fpga/520n/) card with Intel Stratix 10 GX 2800 FPGA\n- [Intel FPGA PAC D5005](https://www.intel.com/content/www/us/en/programmable/products/boards_and_kits/dev-kits/altera/intel-fpga-pac-d5005/overview.html) card with Intel Stratix 10 SX 2800 FPGA\n\n## Quick Setup\n\nFirstly, *dependencies* for building the system\n- [CMake](https://cmake.org/) \u003e= 3.16\n- C++ compiler with C++11 support (GCC 4.9.0+)\n- Intel FPGA SDK for OpenCL\n- FFTW3\n\nOnce you have this covered, execute the following:\n\n```bash\nmkdir build \u0026\u0026 cd build  # Directory to store build outputs\ncmake ..\nmake\n```\n\nYou have built the *API* i.e., the OpenCL host code that invokes different transformations correctly are packed into a static library. This must be linked to an application that helps invoke the APIs\n\n*Strictly said*, you have built the following:\n\n- `convfpga` static library, linked such as `-l`\n- `convfpga/convfpga.h` header file\n- `convolution` - an application which links and includes the above two.\n\nNow onto synthesizing the OpenCL Convolution kernels. These can be synthesized to run on software emulation or on hardware as bitstreams.\n\n- Emulation\n\n```bash\nmake \u003ckernel_name\u003e_emu\nmake conv3D_emulate\n```\n\n- Hardware Bitstream\n\n```bash\nmake \u003ckernel_name\u003e_syn\nmake conv3D_syn\n```\n\nPutting them all together, in order to execute the required convolution, set the path to the synthesized bitstream along with other correct configurations as command line parameters to the sample application generated.\n\n```bash\n./convolution --num=64 --path=conv3d.aocx\n```\n\n*Tip*: for emulation, use the `--emulate` command line parameter.\n\nFor explanations regarding the command line options and the OpenCL kernels, check out x and y in the user guide.  \n\n## Related Repositories\n\n- [FFTFPGA](https://github.com/pc2/fft3d-fpga) - an OpenCL based library for Fast Fourier Transformations for FPGAs\n- [FFTFPGA-eval](https://git.uni-paderborn.de/arjunr/fftfpga-eval) - archives reports and measurements from FFTFPGA and ConvFPGA\n\n## Contact\n\n- [Arjun Ramaswami](https://github.com/arjunramaswami)\n- [Tobias Kenter](https://www.uni-paderborn.de/person/3145/)\n- [Thomas D. Kühne](https://chemie.uni-paderborn.de/arbeitskreise/theoretische-chemie/kuehne/)\n- [Christian Plessl](https://github.com/plessl)\n\n## Acknowledgements\n\n- [Marius Meyer](https://pc2.uni-paderborn.de/about-pc2/staff-board/staff/person/?tx_upbperson_personsite%5BpersonId%5D=40778\u0026tx_upbperson_personsite%5Bcontroller%5D=Person\u0026cHash=867dec7cae43afd76c85cd503d8da47b) for code reviews, testing and discussions.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fpc2%2Fconvfpga","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fpc2%2Fconvfpga","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fpc2%2Fconvfpga/lists"}