{"id":20179644,"url":"https://github.com/ingonyama-zk/ingo-hash","last_synced_at":"2025-05-07T02:30:37.494Z","repository":{"id":209653784,"uuid":"724094640","full_name":"ingonyama-zk/ingo-hash","owner":"ingonyama-zk","description":" FPGA accelerated cryptographic hash functions","archived":true,"fork":false,"pushed_at":"2024-05-16T23:22:56.000Z","size":44,"stargazers_count":7,"open_issues_count":0,"forks_count":0,"subscribers_count":4,"default_branch":"main","last_synced_at":"2025-03-18T00:47:26.142Z","etag":null,"topics":["acceleration","cryptography","hardware","hashing"],"latest_commit_sha":null,"homepage":"","language":"C++","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/ingonyama-zk.png","metadata":{"files":{"readme":"README.md","changelog":null,"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}},"created_at":"2023-11-27T11:40:59.000Z","updated_at":"2024-05-21T13:29:06.000Z","dependencies_parsed_at":"2024-05-16T16:57:59.298Z","dependency_job_id":null,"html_url":"https://github.com/ingonyama-zk/ingo-hash","commit_stats":{"total_commits":9,"total_committers":4,"mean_commits":2.25,"dds":0.4444444444444444,"last_synced_commit":"2d8acde041c15e8f26ae90a38a12d67579b599b0"},"previous_names":["ingonyama-zk/ingo-hash"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ingonyama-zk%2Fingo-hash","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ingonyama-zk%2Fingo-hash/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ingonyama-zk%2Fingo-hash/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ingonyama-zk%2Fingo-hash/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/ingonyama-zk","download_url":"https://codeload.github.com/ingonyama-zk/ingo-hash/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":252801260,"owners_count":21806283,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","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":["acceleration","cryptography","hardware","hashing"],"created_at":"2024-11-14T02:27:36.396Z","updated_at":"2025-05-07T02:30:37.201Z","avatar_url":"https://github.com/ingonyama-zk.png","language":"C++","funding_links":[],"categories":[],"sub_categories":[],"readme":"# ingo-hash\nThis repo contains various FPGA accelerated hash functions.\n\nA demo kernel is included with each hash function that conforms to the following API:\n\n```c++\n// hashes a batch_size of messages, each of the same msg_size\nvoid hash(char *msg_buffer, char *hash_buffer, int msg_size, int batch_size);\n```\n\nThe demo application demonstrates correctness, however it is intended for the user\nto integrate the internal building blocks in their own FPGA-based design\n(e.g. instantiate multiple cores).\n\nCurrently only the Groestl_256 hash function is avaliable. More hash functions coming soon!\n\n## Demo Application Stats\nNote that the demo applications are bottlenecked by PCIe or memory bandwidth.\nPower is measured as total card power.\n\n|             | LUTs    | Freq (MHz) | Throughput (GiB/s) | Power (W) |\n|-------------|---------|------------|--------------------|-----------|\n| groestl_256 | 122K    | 300        | 12.8189            | 31        |\n| sha3_256    |         |            |                    |           |\n| blake2s     |         |            |                    |           |\n\n## Hash Core Stats\nFrequency achievable when instantiating the cores without data movers.\nPower is measured just for the hash core.\n\n|             | LUTs | Freq (MHz) | Throughput (GiB/s) | Power (W) |\n|-------------|------|------------|--------------------|-----------|\n| groestl_256 | 115K | 750        | 44.7               | 12        |\n| sha3_256    |      |            |                    |           |\n| blake2s     |      |            |                    |           |\n\n## Total Board Throughput\nAchievable throughput when instantiating as many cores as possible, ignoring\nmemory bandwidth. On cards with HBM, this throughput is realistically achievable.\n\n|             | U200        | U250      | U280        | U50         | U55C        |\n|-------------|-------------|-----------|-------------|-------------|-------------|\n| groestl_256 | 312.9 GiB/s | 447 GiB/s | 357.6 GiB/s | 223.5 GiB/s | 357.6 GiB/s |\n| sha3_256    |             |           |             |             |             |\n| blake2s     |             |           |             |             |             |\n\n## Running the Demo\nThe demo is targets any AMD Alveo card, any of the following will work:\n\n```\nAMD U200\nAMD U250\nAMD U280\nAMD U50\nAMD U55C\n```\n\n### Install Deployment Prerequisites\nDownload and install the Xilinx Runtime (XRT) and the deployment target platform for your respective\ndevice:\n\n(NOTE: Tool version \u003e= 2023.1 required)\nhttps://www.xilinx.com/support/download/index.html/content/xilinx/en/downloadNav/alveo.html\n\nFor example, assuming you have an U250 on Ubuntu 22.04, install the packages using apt:\n\n```bash\n# Download files\nwget https://www.xilinx.com/bin/public/openDownload?filename=xrt_202310.2.15.225_22.04-amd64-xrt.deb\nwget https://www.xilinx.com/bin/public/openDownload?filename=xilinx-u250-gen3x16-xdma_2023.1_2023_0507_2220-all.deb.tar.gz\n# Extract tar\ntar -xvf ./xilinx-u250-gen3x16-xdma_2023.1_2023_0507_2220-all.deb.tar.gz\n# Install all deb files\nsudo apt install ./xrt_202310.2.15.225_22.04-amd64-xrt.deb\ncd xilinx-u250-gen3x16-xdma_2023.1_2023_0507_2220-all\nsudo apt install ./*.deb\n```\n\nIf this is your first time using XRT with your card please follow the instructions to update your card from the user guide:\nhttps://docs.xilinx.com/r/en-US/ug1301-getting-started-guide-alveo-accelerator-cards\n\n### Compile and run the host application\n\n```bash\ngit clone https://github.com/ingonyama-zk/ingo-hash.git\nsource /opt/xilinx/xrt/setup.sh\ncd ingo-hash\ncd host\nmake test\n```\n\n## Compiling the xclbin\nIn addition to the deployment platform you need the development platform for your respective card, and\ninstall the latest Vitis 2023.2 tools.\n\nAfter installing the tools, we can finally compile:\n\n```bash\ngit clone https://github.com/ingonyama-zk/ingo-hash.git\nsource /tools/Xilinx/Vitis/2023.2/settings64.sh\nsource /opt/xilinx/xrt/setup.sh\ncd ingo-hash\nmake pl/groestl/work/kernel_m_axi_groestl_256.xo\nmake work/xilinx_u250_gen3x16_xdma_4_1_202210_1/m_axi_groestl_256/hw/m_axi_groestl_256.xclbin\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fingonyama-zk%2Fingo-hash","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fingonyama-zk%2Fingo-hash","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fingonyama-zk%2Fingo-hash/lists"}