{"id":22928160,"url":"https://github.com/cea-hpc/harp","last_synced_at":"2025-05-13T01:52:14.975Z","repository":{"id":175575384,"uuid":"627807466","full_name":"cea-hpc/HARP","owner":"cea-hpc","description":"Small tool for profiling the performance of hardware-accelerated Rust code using OpenCL and CUDA","archived":false,"fork":false,"pushed_at":"2023-08-31T14:15:30.000Z","size":1455,"stargazers_count":11,"open_issues_count":1,"forks_count":1,"subscribers_count":9,"default_branch":"master","last_synced_at":"2025-04-01T05:51:06.509Z","etag":null,"topics":["cuda","gpgpu-computing","hpc","opencl","rust"],"latest_commit_sha":null,"homepage":"","language":"Rust","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/cea-hpc.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE-APACHE","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}},"created_at":"2023-04-14T08:41:44.000Z","updated_at":"2025-03-22T03:40:21.000Z","dependencies_parsed_at":"2023-09-18T10:00:36.394Z","dependency_job_id":null,"html_url":"https://github.com/cea-hpc/HARP","commit_stats":null,"previous_names":["cea-hpc/harp"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cea-hpc%2FHARP","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cea-hpc%2FHARP/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cea-hpc%2FHARP/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cea-hpc%2FHARP/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/cea-hpc","download_url":"https://codeload.github.com/cea-hpc/HARP/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":253856619,"owners_count":21974576,"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":["cuda","gpgpu-computing","hpc","opencl","rust"],"created_at":"2024-12-14T09:17:38.745Z","updated_at":"2025-05-13T01:52:14.953Z","avatar_url":"https://github.com/cea-hpc.png","language":"Rust","readme":"# HARP - Hardware-Accelerated Rust Profiling\n\n## About\nHARP is a simple profiler for evaluating the performance of hardware-accelerated Rust code. It aims at gauging the capabilities of Rust as a first-class language for GPGPU computing, especially in the field of High Performance Computing (HPC).  \n\nCurrently, HARP can profile the following GPU-accelerated kernels (targeting OpenCL C and NVIDIA CUDA C++ implementations):\n- AXPY (general vector-vector addition)\n- GEMM (general dense matrix-matrix multiplication)\n- Reduce (32-bit integer sum reduction)\n- Scan (32-bit integer sum exclusive scan)\n\nProfiling can be done on both single-precision and double-precision floating-point formats (see [IEEE 754](https://en.wikipedia.org/wiki/IEEE_754)). The `reduce` and `scan` kernels are only supported using 32-bit signed integers for the moment.\n\n## Quickstart\n### Pre-requisites\nBefore starting, make sure the following software is installed on your machine:\n- [Rust](https://rustup.rs/) 1.68.0+\n- [OpenCL](https://www.khronos.org/opencl/) 2.0+\n- [NVIDIA CUDA Toolkit](https://developer.nvidia.com/cuda-downloads) 11.2+ (12.0 recommended) and the appropriate drivers\n  - ensure the `libnvvm` library is installed and that its path is in the `LD_LIBRARY_PATH` environment variable\n  - `libnvvm` specifically requires LLVM 7.x (7.0 to 7.4), which you can get [here](https://github.com/llvm/llvm-project/releases/tag/llvmorg-7.1.0)\n- [Python](https://www.python.org/downloads/) 3.7+ (only needed for plot generation)\n  - depends on the `pandas`, `plotly` and `kaleido` Python packages\n\n### Build\nFirst, clone this repository locally:\n```sh\ngit clone https://github.com/cea-hpc/HARP\ncd HARP\n```\n\nAs any Rust-based project, HARP is built with `cargo`:\n```sh\ncargo build --release\n```\n\n### Run\nSee HARP's documentation for the full list of supported flags, or use the `help` subcommand.  \n\n**Example**: to execute HARP and profile a DGEMM on multiple matrix sizes, execute the following example command:\n```sh\ncargo run --release -- dgemm --sizes 32 64 128 256 512 1024 2048 4096\n# Or with shortand aliases\ncargo r -r -- dgemm -s 32 64 128 256 512 1024 2048 4096\n```\n\n### Documentation\nThe crate's documentation is available using `cargo`:\n```sh\ncargo doc --open\n```\n\n## Contributing\nContributions are welcome and accepted as pull requests on [GitHub](https://github.com/cea-hpc/HARP).\n\nYou may also ask questions or file bug reports on the [issue tracker](https://github.com/cea-hpc/HARP/issues).\n\n## License\nLicensed under either of:\n- Apache License, Version 2.0 ([LICENSE-APACHE](https://github.com/cea-hpc/HARP/blob/master/LICENSE-APACHE) or [https://www.apache.org/licenses/LICENSE-2.0](https://www.apache.org/licenses/LICENSE-2.0));\n- MIT License ([LICENSE-MIT](https://github.com/cea-hpc/HARP/blob/master/LICENSE-MIT) or [http://opensource.org/licenses/MIT](http://opensource.org/licenses/MIT))\nat your option.  \n\nThe [SPDX](https://spdx.dev/) license identifier for this project is MIT OR Apache-2.0.\n\nUnless you explicitly state otherwise, any contribution intentionally submitted for inclusion in the work by you, as defined in the Apache-2.0 license, shall be dual licensed as above, without any additional terms or conditions.\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcea-hpc%2Fharp","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fcea-hpc%2Fharp","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcea-hpc%2Fharp/lists"}