-
Notifications
You must be signed in to change notification settings - Fork 75
Googlebenchmark integration #277
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Conversation
c94865a to
4191b49
Compare
|
Restored the legacy generate benchmark, and added an option to enable building them (on by default). The default can be changed to OFF in later versions, before the legacy benchmarks are removed. If legacy benchmarks are enabled a deprecation warning is printed to warn users, it can be disabled by passing Additional changes: |
|
Dropped the compiler workaround in Dependencies.cmake, as the cause is fixed in googlebenchmark since 1.4.5 (the PR already requires 1.6.1) |
Instead of an ad-hoc reporting format, use the googlebenchmark library to define, filter and execute benchmarks. Custom context information is also added to the benchmark for archival reasons similar to rocPRIM. Googlebenchmark is automatically downloaded if not found when benchmarks are enabled.
…test The hip headers have device only code visible to the host compiler on the nvcc path. Package test is compiled with just the host compiler because its only using the host api of rocrand. This workaround sets it to CUDA mode in the nvcc path until the fix for hip headers is released. Modernize to CUDA language instead of FindCuda.cmake.
The underlying issue has been fixed in latest rocm-cmake.
On some distributions (notable ones include alpine and nixos) `bash` is not part of the base installation, therefore its not installed in `/bin`. Use `env` to find bash in the `PATH` which is portable on most *nix systems.
Restore the old `bencmark_rocrand_generate` for backwards compatibility. Add the googlebenchmark based version as `benchmark_rocrand_host_api`. Building the old benchmark can be enabled by setting `BUILD_LEGACY_BENCHMARK` to `ON` (on by default). A later change can change the default and then finally remove the old benchmarks giving users time to adjust to the changes.
The underlying issue has been fixed in v1.5.5 with google/benchmark#1174. The workaround is no longer needed.
a37ac5d to
76fa592
Compare
|
Rebased the branch. |
* Update windows compiler for googlebenchmark * Fix line indentations
Added docs on generating dynamic ordering configs Closes #277 See merge request amd/libraries/rocRAND!287
Added docs on generating dynamic ordering configs Closes ROCm#277 See merge request amd/libraries/rocRAND!287
Added docs on generating dynamic ordering configs Closes ROCm#277 See merge request amd/libraries/rocRAND!287
Added docs on generating dynamic ordering configs Closes ROCm#277 See merge request amd/libraries/rocRAND!287
Added docs on generating dynamic ordering configs Closes ROCm#277 See merge request amd/libraries/rocRAND!287
* Fix CI * add clang format file and ci lint stage * Use googlebenchmark for the generate benchmark Instead of an ad-hoc reporting format, use the googlebenchmark library to define, filter and execute benchmarks. Custom context information is also added to the benchmark for archival reasons similar to rocPRIM. Googlebenchmark is automatically downloaded if not found when benchmarks are enabled. * Workaround broken hip headers included from host compiler in package test The hip headers have device only code visible to the host compiler on the nvcc path. Package test is compiled with just the host compiler because its only using the host api of rocrand. This workaround sets it to CUDA mode in the nvcc path until the fix for hip headers is released. Modernize to CUDA language instead of FindCuda.cmake. * Revert workaround for `ROCM_SYMLINK_LIBS` The underlying issue has been fixed in latest rocm-cmake. * Fix shebang of check-format.sh using env On some distributions (notable ones include alpine and nixos) `bash` is not part of the base installation, therefore its not installed in `/bin`. Use `env` to find bash in the `PATH` which is portable on most *nix systems. * Separate new and legacy benchmarks with a cmake option Restore the old `bencmark_rocrand_generate` for backwards compatibility. Add the googlebenchmark based version as `benchmark_rocrand_host_api`. Building the old benchmark can be enabled by setting `BUILD_LEGACY_BENCHMARK` to `ON` (on by default). A later change can change the default and then finally remove the old benchmarks giving users time to adjust to the changes. * Use the new benchmark name for the host api benchmark * Add deprecation for BUILD_LEGACY_BENCHMARK * Drop googlebenchmark compiler override The underlying issue has been fixed in v1.5.5 with google/benchmark#1174. The workaround is no longer needed. * Fixes to enable benchmark build on Windows (#282) * add new generators to changed benchmarks * Windows googlebench ci fix (#294) * Update windows compiler for googlebenchmark * Fix line indentations Co-authored-by: Lőrinc Serfőző <lorinc@streamhpc.com> Co-authored-by: Nol Moonen <nol@streamhpc.com> Co-authored-by: Bibrak Qamar <bibrak@streamhpc.com> Co-authored-by: Máté Ferenc Nagy-Egri <mate@streamhpc.com> Co-authored-by: Stanley Tsang <stanley.tsang@amd.com> [ROCm/rocRAND commit: 622e20e]
rocRAND google benchmark integration
This pull request includes an initiative to replacing the current benchmark system with Google benchmark. Google benchmark has a number of advantages over the current benchmark system, like integrated options for filtering benchmarks by regex, and outputting machine-readable results in json or csv format. Furthermore, google benchmark is also used by a number of other ROCm repositories, such as rocPRIM and hipCUB, and so this reduces the total amount of custom benchmark processing scripts required.
The changes in this pull request have the following implications:
--benchmark_filteroption of Google benchmark.hipDeviceProp_tof the device that the benchmarks were executed on, and can be useful during futher processing of the results.Additional changes
There are some minor changes included mainly addressing the gitlab CI