{"id":18711198,"url":"https://github.com/rocm/rocm_bandwidth_test","last_synced_at":"2026-04-06T02:32:10.564Z","repository":{"id":27257343,"uuid":"110733012","full_name":"ROCm/rocm_bandwidth_test","owner":"ROCm","description":"Bandwidth test for ROCm","archived":false,"fork":false,"pushed_at":"2026-04-02T16:34:19.000Z","size":1192,"stargazers_count":83,"open_issues_count":12,"forks_count":30,"subscribers_count":19,"default_branch":"amd-mainline","last_synced_at":"2026-04-03T04:43:51.802Z","etag":null,"topics":["compare-files"],"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/ROCm.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE.md","code_of_conduct":"CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":".github/CODEOWNERS","security":"SECURITY.md","support":null,"governance":null,"roadmap":null,"authors":"AUTHORS.md","dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":"NOTICE.md","maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2017-11-14T19:09:46.000Z","updated_at":"2026-04-02T16:34:23.000Z","dependencies_parsed_at":"2023-10-14T19:00:24.345Z","dependency_job_id":"fd2f97d4-8cbb-4221-a228-8165bcf22e66","html_url":"https://github.com/ROCm/rocm_bandwidth_test","commit_stats":{"total_commits":89,"total_committers":9,"mean_commits":9.88888888888889,"dds":0.3146067415730337,"last_synced_commit":"9579aff15bced9c9598d428352a7096023a41006"},"previous_names":["rocm/rocm_bandwidth_test","radeonopencompute/rocm_bandwidth_test"],"tags_count":101,"template":false,"template_full_name":null,"purl":"pkg:github/ROCm/rocm_bandwidth_test","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ROCm%2Frocm_bandwidth_test","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ROCm%2Frocm_bandwidth_test/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ROCm%2Frocm_bandwidth_test/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ROCm%2Frocm_bandwidth_test/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/ROCm","download_url":"https://codeload.github.com/ROCm/rocm_bandwidth_test/tar.gz/refs/heads/amd-mainline","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ROCm%2Frocm_bandwidth_test/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":31457568,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-05T21:22:52.476Z","status":"online","status_checked_at":"2026-04-06T02:00:07.287Z","response_time":112,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"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":["compare-files"],"created_at":"2024-11-07T12:37:44.250Z","updated_at":"2026-04-06T02:32:10.559Z","avatar_url":"https://github.com/ROCm.png","language":"C++","funding_links":[],"categories":[],"sub_categories":[],"readme":"# ROCm Bandwidth Test (RBT-Next Generation, RBT-NG)\n[![AMD](https://img.shields.io/badge/AMD-%23000000.svg?style=for-the-badge\u0026logo=amd\u0026logoColor=white)](https://www.amd.com)\n[![Language](https://img.shields.io/badge/Language-C++-blue.svg)](https://isocpp.org/)\n[![Standard](https://img.shields.io/badge/C%2B%2B-23-blue.svg)](https://en.wikipedia.org/wiki/C%2B%2B#Standardization)\n[![Standard](https://img.shields.io/badge/C-23-purple.svg)](https://en.wikipedia.org/wiki/C23_(C_standard_revision))\n[![License](https://img.shields.io/badge/License-MIT-blue.svg)](LICENSE)\n\u003c!---\n[![Build](https://github.com/ROCm/rocm_bandwidth_test/actions/workflows/unit-test.yml/badge.svg)](https://github.com/ROCm/rocm_bandwidth_test/actions/workflows/unit-test.yml)\n--\u003e\n\n**RBT-NG** is the next generation of the ROCm Bandwidth Test, designed to measure the bandwidth between CPU and GPU devices on AMD platforms. This version has been completely rewritten with a focus on modularity and extensibility through a plugin-based architecture.\n\n\u003e[!NOTE]\n\u003eThis project is a successor to [RBT](https://rocm.docs.amd.com/projects/rocm_bandwidth_test/en/latest/index.html)\n\u003eand [TB](https://rocm.docs.amd.com/projects/TransferBench/en/latest/index.html).\n\n## Overview\n\nRBT-NG leverages [TransferBench (TB)](https://github.com/ROCm/TransferBench) as its core engine for benchmarking data transfers. This approach allows for more flexible and efficient testing scenarios.\n\n- **Plugin Architecture:** Easily extend the functionality of RBT-NG with custom plugins.\n- **Modular Design:** Separate concerns for better maintenance and development.\n- **Enhanced Performance:** Improved algorithms and integration with TransferBench for precise measurements.\n\nSee the [full library and API documentation](https://rocm.docs.amd.com/en/latest/deploy/linux/index.html)\n\n\n## Features\n\n- **CPU to GPU Bandwidth Testing:** Measure data transfer rates in various scenarios.\n- **GPU to GPU Bandwidth Testing:** For systems with multiple GPUs.\n- **Multi-Threaded Testing:** Simulate real-world applications with concurrent data transfers.\n- **Extensibility:** Add new test scenarios through plugins.\n\n## Installation\n\n### Prerequisites\n\n- ROCm compatible hardware\n- ROCm stack installed ([Installation Guide](https://rocm.docs.amd.com/en/latest/deploy/linux/index.html))\n- *Clang (19.0.1+) / GCC (12.4.0+) compiler(s)\n- CMake (3.20+)\n- CURL / libcurl4-openssl-dev (libcurl-devel)\n\n\n\u003e [!NOTE]\n\u003e This project uses the following external libraries:\n\u003e - [boost](https://github.com/boostorg/boost)\n\u003e - [Catch2](https://github.com/catchorg/Catch2)\n\u003e - [CLI11](https://github.com/CLIUtils/CLI11)\n\u003e - [fmt](https://github.com/fmtlib/fmt)\n\u003e - [json](https://github.com/nlohmann/json)\n\u003e - [spdlog](https://github.com/gabime/spdlog)\n\u003e\n\u003e These submodules are checked out and matched with the required versions or commits, according to the tool version.\n\n\n### Build from Source\n\nSee [Build from Source](#Build_from_Source)\n\n```bash\ngit clone https://github.com/ROCm/rocm_bandwidth_test\ncd rocm_bandwidth_test\nmkdir build \u0026\u0026 cd build\ncmake .. -DCMAKE_BUILD_TYPE=Debug|Release\nmake\n```\n\n## Usage\n\nFor the RBT-NG tool to run and be able to find the related plugins properly, we need to make sure the following environment variable(s) are set:\n\n- `PATH`: includes the **location for the executable**\n- `LD_LIBRARY_PATH`: includes the **location for the libraries *required by the plugins***\n\nThe RBT-NG plugins are installed at: `…/lib/rocm_bandwidth_test/plugins/`\n\nUnder `ROCm`, if the `ROCM_PATH` variable is set to `/opt/rocm`, we will have something like:\n\n- `PATH`: `$ROCM_PATH/bin:…`\n- `LD_LIBRARY_PATH`: `$ROCM_PATH/lib:…`\n- Plugins will be at: `$ROCM_PATH/lib/rocm_bandwidth_test/plugins/`\n\nWe can set them manually (current session only) or added to the user’s shell configuration file (e.g., `~/.bashrc`, `~/.zshrc`) for automatic loading in new sessions (persistence across sessions):\n\n```bash\nexport PATH=/opt/rocm/bin:$PATH\nexport LD_LIBRARY_PATH=/opt/rocm/lib:$LD_LIBRARY_PATH\n```\n\n\n### Help options:\nRBT-NG can be run with various options to customize tests:\n```bash\n$ ./rocm_bandwidth_test --help\n\nAMD ROCm Bandwidth Test: Command Line Interface\n\nUsage: [OPTIONS] SUBCOMMAND\n\nOPTIONS:\n  -h,     --help              Print this help message and exit\n          --builtin-help      Print help for builtin plugin/subcommands\n          --version           Print the utility/framework version\n\nSUBCOMMANDS:\n  plugin                      Plugin: subcommand\n  run                         Run a plugin\n\n\n$ ./rocm_bandwidth_test --version\n\nAMD ROCm Bandwidth Test:\n -\u003e version: 2.6.0-debug\n -\u003e [Commit: 052f4b09b2fd8fffb581e7be64848181c9c802f2 / Branch: develop / Build Type: Engineering]\nEnvironment:\n -\u003e Kernel: Host: amd-dev-tools  Kernel: 6.8.0-64-generic  v#67-Ubuntu SMP PREEMPT_DYNAMIC Sun Jun 22 03:42:59 UTC 2025  Arch: x86_64\n -\u003e OS: Distro: Ubuntu  Version: 24.04\n\n\n$ ./rocm_bandwidth_test --builtin-help\n\n        Help: AMD ROCm Bandwidth Test Command Line Interface\n        Usage: rocm_bandwidth_test [subcommand] [options]\n\n        Available subcommands (builtin):\n\n       --builtin-help      Print help about this command\n       --pcie-info         Display PCIE Print Spec info help about this command\n\n\n$ ./rocm_bandwidth_test --pcie-info\n\n         * PCIe link performance *\n Version   Introduced    Transfer Rate                    Bandwidth (GB/s)\n   1.0         2003         2.500 GT/s   x1       0.250   x2       0.500   x4       1.000   x8       2.000   x16      4.000\n   2.0         2007         5.000 GT/s   x1       0.500   x2       1.000   x4       2.000   x8       4.000   x16      8.000\n   3.0         2010         8.000 GT/s   x1       0.985   x2       1.969   x4       3.938   x8       7.877   x16     15.754\n   4.0         2017        16.000 GT/s   x1       1.969   x2       3.938   x4       7.877   x8      15.754   x16     31.508\n   5.0         2019        32.000 GT/s   x1       3.938   x2       7.877   x4      15.754   x8      31.508   x16     63.015\n   6.0         2022        64.000 GT/s   x1       7.563   x2      15.125   x4      30.250   x8      60.500   x16    121.000\n   7.0     2025 (plan)    128.000 GT/s   x1      15.125   x2      30.250   x4      60.500   x8     121.000   x16    242.000\n        *Reference: https://en.wikipedia.org/wiki/PCI_Express\n\n```\n\n### Plugin options:\nRBT-NG plugin related options:\n```bash\n$ ./rocm_bandwidth_test plugin --help\nPlugin: subcommand\n\nplugin [OPTIONS]\n\nOPTIONS:\n  -h,     --help              Print this help message and exit\n  -c,     --legacy [1]        Legacy mode: For plugins supporting legacy output\n  -l,     --list TEXT [*]     List plugin(s) (all by default)\n  -i,     --info TEXT [*]     Get information about plugin(s)\n  -r,     --run TEXT          Run a plugin\n  -v,     --verbose [0]       Verbose output\n\n\n$ ./rocm_bandwidth_test plugin --list\n\n    Plugin Management:\n\n        *Registered plugin(s):\n        - Hello      \u003e Builtin: Hello                                \u003e Version: 0.0.1\n        - tb         \u003e Builtin: TransferBench                        \u003e Version: 1.0.0\n\n\n$ ./rocm_bandwidth_test plugin --info\n\n    Plugin Management:\n\n        *Registered plugin(s):\n        - Hello      \u003e Builtin: Hello                                \u003e Version: 0.0.1\n          - Author: Linux System Tools Team (MLSE Linux) @AMD     \u003e Framework Compat.V: 2.6.0-debug\n          - Loaded: No      \u003e Path: /opt/rocm-7.0.0/lib/rocm_bandwidth_test/plugins/amd_hello.amdplug                            [=] Main Entry Avail: Yes\n\n        - tb         \u003e Builtin: TransferBench                        \u003e Version: 1.0.0\n          - Author: Linux System Tools Team (MLSE Linux) @AMD     \u003e Framework Compat.V: 2.6.0-debug\n          - Loaded: No      \u003e Path: /opt/rocm-7.0.0/lib/rocm_bandwidth_test/plugins/transferbench.amdplug                        [=] Main Entry Avail: Yes\n\n## These are equivalent ways of running a plugin.\n$ ./rocm_bandwidth_test run custom_plugin_shortname\n\n$ ./rocm_bandwidth_test plugin --run tb\n$ ./rocm_bandwidth_test run tb\n\n```\n\n\n## Plugins\n\nPlugins are the heart of RBT-NG's extensibility. Here's how you can create or use them:\n\n- Creating Plugins: Follow the `Plugin Development Guide`.\n- Using Existing Plugins: Check the `plugins` directory for available options.\n\n\n## Documentation\n\n- [Official RBT Documentation](https://rocm.docs.amd.com/projects/rocm_bandwidth_test/en/latest/index.html)\n- [TransferBench Documentation](https://rocm.docs.amd.com/projects/TransferBench/en/latest/index.html)\n\n\n## Contributing \u0026 support\n\nWe welcome contributions! Please read our [CONTRIBUTING](./CONTRIBUTING.md) for details on how to get started.\n\nJoin the community by reporting issues or asking questions via [GitHub issues](https://github.com/ROCm/rocm_bandwidth_test/issues). All feedback and proposals are welcome.\n\nPlease review our [SECURITY](./SECURITY.md) policy for information on reporting security issues.\n\n\n## License\n\nThis project is licensed under the MIT Software License. See accompanying file [LICENSE](./LICENSE.md) file or copy [here](https://opensource.org/licenses/MIT) for legal details.\nSee [AUTHORS](./AUTHORS.md) file for details about the current maintainers.\n\n\n## Acknowledgments\n\n- Thanks to AMD ROCm team for providing the foundational work with RBT and TB.\n- AMD MLSE Linux team\n- Contributors to this project.\n- Other projects who inspired this one:\n  - [ROCm](https://github.com/ROCm/)\n  - [TransferBench (TB)](https://github.com/ROCm/TransferBench)\n  - [Developer Hub](https://www.amd.com/en/developer/resources/rocm-hub.html)\n\n\n## DISCLAIMER\n\n\u003cp align=\"justify\"\u003e\nThe information contained herein is for informational purposes only, and is subject to change without notice. In\naddition, any stated support is planned and is also subject to change. While every precaution has been taken in\nthe preparation of this document, it may contain technical inaccuracies, omissions and typographical errors, and\nAMD is under no obligation to update or otherwise correct this information. Advanced Micro Devices, Inc. makes no\nrepresentations or warranties with respect to the accuracy or completeness of the contents of this document, and\nassumes no liability of any kind, including the implied warranties of noninfringement, merchantability or fitness\nfor particular purposes, with respect to the operation or use of AMD hardware, software or other products\ndescribed herein.\n\u003c/p\u003e\n\n© 2023-2025 Advanced Micro Devices, Inc. All Rights Reserved.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Frocm%2Frocm_bandwidth_test","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Frocm%2Frocm_bandwidth_test","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Frocm%2Frocm_bandwidth_test/lists"}