Skip to content

Commit

Permalink
Upstream staging 2024 03 22 (#467)
Browse files Browse the repository at this point in the history
* Refactor threefry tests.

The threefry tests for 2x32 and 4x32 were essentially identical, and
same happened with tests for 2x64 and 4x54. So I implemented a similar
approach as in the sobol tests:

  - Added common headers (test_rocrand_threefryNx32_20_prng.hpp
    and test_rocrand_threefryNx32_20_prng.hpp) in which the typed tests
    are registered.

  - Removed all the duplicated code from the old tests, and add the
    correspondent instantiation of the gerator API tess.

  - The engine API tests remain unmodified because that refactor is out
    of the scope of the current issue.

* Refactor lfsr113, mrg, mt19937, mtgp32, philox, sobol and xorwow tests.

Implemented the "typed test suite" approach:

  - Changed the old implementation to use typed tests.

  - Homogeneized code structure and variables names.

  - Engine API tests remain unmodified because that refactor is out
    of the scope of the current issue.

* Added lfsr113 generator tests to match the other prng generators'

- init_test
- uniform_float_test
- normal_double_test
- log_normal_float/double_test
- continuity tests

* Added mrg generator tests to match the other prng generators'

- init_test
- normal_double_test
- log_normal_float/double_test
- different_seed_uint4_test

* Added mt19937 generator tests to match the other prng generators'

- init_test
- uniform_double
- normal_double_test
- log_normal_float/double_test
- different_seed_uint4_test

* Added mgp32 generator tests to match the other prng generators'

- init_test
- uniform_double_test
- normal_double_test
- log_normal_float/double_test
- different_seed_uint4_test
- continuity tets

* Added philox generator tests to match the other prng generators'

- init_test
- uniform_double_test
- normal_float/double_test
- log_normal_float/double_test
- poisson_test
- different_seed_uint4_test

* Added sobol generator tests for the functionality left to be tested

- init_test (generator.init())
- log_normal_float/double_test (generator.generate_log_normal())

* Added threefry generator tests to match the other prng generators'

- init_test
- uniform_double_test
- normal_float/double_test
- log_normal_float/double_test
- poisson_test

* Added xorwow generator tests to match the other prng generators'

- uniform_double_test
- normal_float/double_test
- log_normal_float/double_test
- poisson_test
- different_seed_uint4_test

* Move out common functionality to header file test_rocrand_prng

* mrg mad_u64_u32_test not typed

* Use ordering in templated generator tests

* Separate engine-only tests from generator ones for mt19937

* Add different_seed_test to common generator test suite and keep lfsr113's particular implementation

* Disable lfsr113 continuity tests

* Add different_seed_test to common generator test suite and keep lfsr113's particular implementation

* Don't run MT19937 with dynamic ordering

* Remove unnecessary includes from internal hpp headers

Deprecate src/rng/distribution/distributions.hpp
Deprecated src/rng/device_engines.hpp
Rename and unify the existing ROCRAND_DETAIL_.*_BM_NOT_IN_STATE to ROCRAND_DETAIL_BM_NOT_IN_STATE
Directly include some headers that were previously only included
transitively

* Added functions for float2 and double2, with tests for float2

* Clang format

* Added mtgp32 tests for double and double2

* Clang format

* Division of work in test with constant to prevent deadlock in cuda

* MTGP32 tests cleanup and added new MTGP32 functions to CHANGELOG

* Re-enable continuity tests for lfsr113

* Re-tuned lfsr113 for gfx908

* Re-tuned lfsr113 for gfx1030

* Re-tuned lfsr113 for gfx906

* Add comment for mtgp32 continuity tests

* Add offsets test to threefyNx64 generators

* Fix test types for threefryNx64_20

* Fix incorrect output type in sobol64 test for poisson distribution and doxygen docs for (scrambled) sobol64

* clarify and add check for dynamic ordering on host

* add api function to create block host generator

* add mtgp32 host generator

* Removed FQUALIFIERS and MT_FQUALIFIERS

* Made rocrand, rocrand_mtgp32_block_copy and rocrand_mtgp32_set_params device function for mtgp32_engine

* Removed FQUALIFIER added in merge

* Made the function calls for mtpg32 in discrete, log_normal, normal and uniform only device

* Add generator of precomputed state matrices for LFSR113

* Add common header with utility functions for matrix exponentiation

* Implement skipahead for LFSR113

* Add engine API tests for LFSR113's discard()/discard(offset) functions

* Implement offset for LFSR113

* Add generator API offsets test for LFSR113

* Update CHANGELOG

* Fix python tests

* Add comments to utils_matrix_exponentiation functions and merge equivalent implementations

* Fix comments from LFSR113's precomputed matrices generation

* Removed unneded methods and extra semicolon

* Default initialize to prevent breaking change

* Fix typo in LFSR113's precomputed state matrices generation

* Use hip_runtime's uint4

* Remove arguments passed by value and global mutable variables

* Enable host generator test for LFSR113

* Cmake files to build all non kernel tests with cpp

* Add g++ wrapper package test to CI

* Removed unused Windows code from cmake in cpp_wrapper

* add dynamic ordering for gfx1102

* fix changelog

* Move internal symbols to namespace rocrand_impl

* Updated Doxyfile

* Updated changelog

---------

Co-authored-by: Beatriz Navidad Vilches <[email protected]>
Co-authored-by: Matthias Knorr <[email protected]>
Co-authored-by: Nick Breed <[email protected]>
Co-authored-by: Nol Moonen <[email protected]>
Co-authored-by: Lőrinc Serfőző <[email protected]>
Co-authored-by: Nara Prasetya <[email protected]>
  • Loading branch information
7 people authored Apr 12, 2024
1 parent 0f63134 commit 02b2669
Show file tree
Hide file tree
Showing 143 changed files with 10,062 additions and 7,192 deletions.
18 changes: 18 additions & 0 deletions .gitlab-ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -482,6 +482,24 @@ test:nvcc-package:
needs:
- build:nvcc-cmake-minimum

test:cpp-wrapper:
stage: test
extends:
- .rocm:cmake-minimum
- .rules:test
needs:
- build:rocm-cmake-minimum
script:
- cd $CI_PROJECT_DIR/build
- $SUDO_CMD dpkg -i rocrand*.deb
- cmake
-S $CI_PROJECT_DIR/test/cpp_wrapper/
-B $CI_PROJECT_DIR/build_cpp_wrapper_test
- cmake --build $CI_PROJECT_DIR/build_cpp_wrapper_test
- cd $CI_PROJECT_DIR/build_cpp_wrapper_test
- ctest --output-on-failure
- $SUDO_CMD dpkg -r rocrand-benchmarks rocrand-clients rocrand-dev rocrand-tests rocrand

.test:install:
stage: test
extends:
Expand Down
16 changes: 16 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -32,13 +32,24 @@ Documentation for rocRAND is available at
* C++ wrapper:
* `lfsr113_engine` now also supports being constructed with a seed of type `unsigned long long`, not only `uint4`.
* added optional order parameter to constructor of `mt19937_engine`
* Added the following functions for the `ROCRAND_RNG_PSEUDO_MTGP32` generator:
* `rocrand_normal2`
* `rocrand_normal_double2`
* `rocrand_log_normal2`
* `rocrand_log_normal_double2`
* Added `rocrand_create_generator_host_blocking` which dispatches without stream semantics.
* Added host-side generator for `ROCRAND_RNG_PSEUDO_MTGP32`.
* Added offset and skipahead functionality to LFSR113 generator.
* Added dynamic ordering for architecture `gfx1102`.

### Changes

* Building rocRAND now requires a C++17 capable compiler, as the internal library sources now require it. However consuming rocRAND is still possible from C++11 as public headers don't make use of the new features.
* Building rocRAND should be faster on machines with multiple CPU cores as the library has been
split to multiple compilation units.
* C++ wrapper: the `min()` and `max()` member functions of the generators and distributions are now `static constexpr`.
* Rename and unify the existing ROCRAND_DETAIL_.*_BM_NOT_IN_STATE to ROCRAND_DETAIL_BM_NOT_IN_STATE
* Static & dynamic library: moved all internal symbols to namespaces to avoid potential symbol name collisions when linking.

### Deprecations

Expand All @@ -47,12 +58,17 @@ Documentation for rocRAND is available at
* `rocrand_device::threefry2x64_20_engine::threefry2x64_20_state`
* `rocrand_device::threefry4x32_20_engine::threefry4x32_20_state`
* `rocrand_device::threefry4x64_20_engine::threefry4x64_20_state`
* Deprecated internal header: src/rng/distribution/distributions.hpp
* Deprecated internal header: src/rng/device_engines.hpp

### Removals

* Removed references to and workarounds for deprecated hcc.
* Support for HIP-CPU

### Known issues
- SOBOL64 and SCRAMBLED_SOBOL64 generate poisson-distributed `unsigned long long int` numbers instead of `unsigned int`. This will be fixed in the next major release.

## (Unreleased) rocRAND-3.0.0 for ROCm 6.0.0

### Additions
Expand Down
36 changes: 16 additions & 20 deletions benchmark/tuning/benchmark_tuning.cpp
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
// Copyright (c) 2023 Advanced Micro Devices, Inc. All rights reserved.
// Copyright (c) 2023-2024 Advanced Micro Devices, Inc. All rights reserved.
//
// Permission is hereby granted, free of charge, to any person obtaining a copy
// of this software and associated documentation files (the "Software"), to deal
Expand Down Expand Up @@ -51,32 +51,28 @@ int main(int argc, char** argv)
add_common_benchmark_rocrand_info();

std::vector<benchmark::internal::Benchmark*> benchmarks;
benchmark_tuning::add_all_benchmarks_for_generator<benchmark_tuning::rocrand_lfsr113_template>(
benchmarks,
config);
benchmark_tuning::add_all_benchmarks_for_generator<benchmark_tuning::rocrand_mrg31k3p_template>(
benchmarks,
config);
benchmark_tuning::add_all_benchmarks_for_generator<benchmark_tuning::rocrand_mrg32k3a_template>(
benchmarks,
config);
benchmark_tuning::add_all_benchmarks_for_generator<benchmark_tuning::rocrand_mt19937_template>(
benchmarks,
config);
benchmark_tuning::add_all_benchmarks_for_generator<benchmark_tuning::rocrand_mtgp32_template>(
benchmark_tuning::add_all_benchmarks_for_generator<
benchmark_tuning::lfsr113_generator_template>(benchmarks, config);
benchmark_tuning::add_all_benchmarks_for_generator<
benchmark_tuning::mrg31k3p_generator_template>(benchmarks, config);
benchmark_tuning::add_all_benchmarks_for_generator<
benchmark_tuning::mrg32k3a_generator_template>(benchmarks, config);
benchmark_tuning::add_all_benchmarks_for_generator<
benchmark_tuning::mt19937_generator_template>(benchmarks, config);
benchmark_tuning::add_all_benchmarks_for_generator<benchmark_tuning::mtgp32_generator_template>(
benchmarks,
config);
benchmark_tuning::add_all_benchmarks_for_generator<
benchmark_tuning::rocrand_philox4x32_10_template>(benchmarks, config);
benchmark_tuning::philox4x32_10_generator_template>(benchmarks, config);
benchmark_tuning::add_all_benchmarks_for_generator<
benchmark_tuning::rocrand_threefry2x32_20_template>(benchmarks, config);
benchmark_tuning::threefry2x32_20_generator_template>(benchmarks, config);
benchmark_tuning::add_all_benchmarks_for_generator<
benchmark_tuning::rocrand_threefry2x64_20_template>(benchmarks, config);
benchmark_tuning::threefry2x64_20_generator_template>(benchmarks, config);
benchmark_tuning::add_all_benchmarks_for_generator<
benchmark_tuning::rocrand_threefry4x32_20_template>(benchmarks, config);
benchmark_tuning::threefry4x32_20_generator_template>(benchmarks, config);
benchmark_tuning::add_all_benchmarks_for_generator<
benchmark_tuning::rocrand_threefry4x64_20_template>(benchmarks, config);
benchmark_tuning::add_all_benchmarks_for_generator<benchmark_tuning::rocrand_xorwow_template>(
benchmark_tuning::threefry4x64_20_generator_template>(benchmarks, config);
benchmark_tuning::add_all_benchmarks_for_generator<benchmark_tuning::xorwow_generator_template>(
benchmarks,
config);

Expand Down
37 changes: 19 additions & 18 deletions benchmark/tuning/benchmark_tuning.hpp
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
// Copyright (c) 2023 Advanced Micro Devices, Inc. All rights reserved.
// Copyright (c) 2023-2024 Advanced Micro Devices, Inc. All rights reserved.
//
// Permission is hereby granted, free of charge, to any person obtaining a copy
// of this software and associated documentation files (the "Software"), to deal
Expand Down Expand Up @@ -56,7 +56,7 @@ struct distribution_input
template<template<class> class GeneratorTemplate>
using distribution_input_t = typename distribution_input<GeneratorTemplate>::type;

using rocrand_host::detail::generator_config;
using rocrand_impl::host::generator_config;

/// @brief Provides a way to opt out from benchmarking certain configs for certain generators and types
/// @note See benchmarked_generators.hpp for specializations
Expand Down Expand Up @@ -140,37 +140,39 @@ class generator_benchmark_factory
else if constexpr(std::is_integral_v<T>)
{
using uniform_distribution_t
= uniform_distribution<T, distribution_input_t<GeneratorTemplate>>;
= rocrand_impl::host::uniform_distribution<T,
distribution_input_t<GeneratorTemplate>>;
add_benchmarks_impl<T, uniform_distribution_t>();

if constexpr(std::is_same_v<T, unsigned int>)
{
// The poisson distribution is only supported for unsigned int.
using poisson_distribution_t
= rocrand_poisson_distribution<ROCRAND_DISCRETE_METHOD_ALIAS>;
using poisson_distribution_t = rocrand_impl::host::poisson_distribution<
rocrand_impl::host::DISCRETE_METHOD_ALIAS>;
add_benchmarks_impl<T, poisson_distribution_t>();
}
}
else if constexpr(std::is_floating_point_v<T> || std::is_same_v<T, half>)
{
// float, double and half support these distributions only.
using uniform_distribution_t
= uniform_distribution<T, distribution_input_t<GeneratorTemplate>>;
= rocrand_impl::host::uniform_distribution<T,
distribution_input_t<GeneratorTemplate>>;
add_benchmarks_impl<T, uniform_distribution_t>();

constexpr rocrand_rng_type rng_type
= rocrand_host::detail::gen_template_type_v<GeneratorTemplate>;
= rocrand_impl::host::gen_template_type_v<GeneratorTemplate>;

using normal_distribution_t
= normal_distribution<T,
distribution_input_t<GeneratorTemplate>,
normal_distribution_max_input_width<rng_type, T>>;
using normal_distribution_t = rocrand_impl::host::normal_distribution<
T,
distribution_input_t<GeneratorTemplate>,
rocrand_impl::host::normal_distribution_max_input_width<rng_type, T>>;
add_benchmarks_impl<T, normal_distribution_t>();

using log_normal_distribution_t
= log_normal_distribution<T,
distribution_input_t<GeneratorTemplate>,
log_normal_distribution_max_input_width<rng_type, T>>;
using log_normal_distribution_t = rocrand_impl::host::log_normal_distribution<
T,
distribution_input_t<GeneratorTemplate>,
rocrand_impl::host::log_normal_distribution_max_input_width<rng_type, T>>;
add_benchmarks_impl<T, log_normal_distribution_t>();
}
}
Expand All @@ -183,7 +185,7 @@ class generator_benchmark_factory
// The elements of the arrays can be controlled with CMake cache variables
// BENCHMARK_TUNING_THREAD_OPTIONS and BENCHMARK_TUNING_BLOCK_OPTIONS
static constexpr inline auto s_param_combinations
= cpp_utils::numeric_combinations(thread_options, block_options);
= rocrand_impl::cpp_utils::numeric_combinations(thread_options, block_options);

template<class Distribution, class StaticConfigProvider>
static std::string get_benchmark_name()
Expand Down Expand Up @@ -220,8 +222,7 @@ class generator_benchmark_factory
if constexpr(grid_size < min_benchmarked_grid_size)
return;

using ConfigProvider
= rocrand_host::detail::static_config_provider<threads, blocks>;
using ConfigProvider = rocrand_impl::host::static_config_provider<threads, blocks>;

if constexpr(config_filter<GeneratorTemplate, T>::is_enabled(
ConfigProvider::static_config))
Expand Down
4 changes: 2 additions & 2 deletions benchmark/tuning/benchmark_tuning_lfsr113.cpp
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
// Copyright (c) 2023 Advanced Micro Devices, Inc. All rights reserved.
// Copyright (c) 2023-2024 Advanced Micro Devices, Inc. All rights reserved.
//
// Permission is hereby granted, free of charge, to any person obtaining a copy
// of this software and associated documentation files (the "Software"), to deal
Expand All @@ -24,7 +24,7 @@
namespace benchmark_tuning
{

template void add_all_benchmarks_for_generator<rocrand_lfsr113_template>(
template void add_all_benchmarks_for_generator<lfsr113_generator_template>(
std::vector<benchmark::internal::Benchmark*>& benchmarks, const benchmark_config& config);

} // namespace benchmark_tuning
2 changes: 1 addition & 1 deletion benchmark/tuning/benchmark_tuning_mrg31k3p.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,7 @@
namespace benchmark_tuning
{

template void add_all_benchmarks_for_generator<rocrand_mrg31k3p_template>(
template void add_all_benchmarks_for_generator<mrg31k3p_generator_template>(
std::vector<benchmark::internal::Benchmark*>& benchmarks, const benchmark_config& config);

} // namespace benchmark_tuning
2 changes: 1 addition & 1 deletion benchmark/tuning/benchmark_tuning_mrg32k3a.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,7 @@
namespace benchmark_tuning
{

template void add_all_benchmarks_for_generator<rocrand_mrg32k3a_template>(
template void add_all_benchmarks_for_generator<mrg32k3a_generator_template>(
std::vector<benchmark::internal::Benchmark*>& benchmarks, const benchmark_config& config);

} // namespace benchmark_tuning
4 changes: 2 additions & 2 deletions benchmark/tuning/benchmark_tuning_mt19937.cpp
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
// Copyright (c) 2023 Advanced Micro Devices, Inc. All rights reserved.
// Copyright (c) 2023-2024 Advanced Micro Devices, Inc. All rights reserved.
//
// Permission is hereby granted, free of charge, to any person obtaining a copy
// of this software and associated documentation files (the "Software"), to deal
Expand All @@ -24,7 +24,7 @@
namespace benchmark_tuning
{

template void add_all_benchmarks_for_generator<rocrand_mt19937_template>(
template void add_all_benchmarks_for_generator<mt19937_generator_template>(
std::vector<benchmark::internal::Benchmark*>& benchmarks, const benchmark_config& config);

} // namespace benchmark_tuning
4 changes: 2 additions & 2 deletions benchmark/tuning/benchmark_tuning_mtgp32.cpp
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
// Copyright (c) 2023 Advanced Micro Devices, Inc. All rights reserved.
// Copyright (c) 2023-2024 Advanced Micro Devices, Inc. All rights reserved.
//
// Permission is hereby granted, free of charge, to any person obtaining a copy
// of this software and associated documentation files (the "Software"), to deal
Expand All @@ -24,7 +24,7 @@
namespace benchmark_tuning
{

template void add_all_benchmarks_for_generator<rocrand_mtgp32_template>(
template void add_all_benchmarks_for_generator<mtgp32_generator_template>(
std::vector<benchmark::internal::Benchmark*>& benchmarks, const benchmark_config& config);

} // namespace benchmark_tuning
4 changes: 2 additions & 2 deletions benchmark/tuning/benchmark_tuning_philox.cpp
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
// Copyright (c) 2023 Advanced Micro Devices, Inc. All rights reserved.
// Copyright (c) 2023-2024 Advanced Micro Devices, Inc. All rights reserved.
//
// Permission is hereby granted, free of charge, to any person obtaining a copy
// of this software and associated documentation files (the "Software"), to deal
Expand All @@ -24,7 +24,7 @@
namespace benchmark_tuning
{

template void add_all_benchmarks_for_generator<rocrand_philox4x32_10_template>(
template void add_all_benchmarks_for_generator<philox4x32_10_generator_template>(
std::vector<benchmark::internal::Benchmark*>& benchmarks, const benchmark_config& config);

} // namespace benchmark_tuning
4 changes: 2 additions & 2 deletions benchmark/tuning/benchmark_tuning_threefry2x32_20.cpp
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
// Copyright (c) 2023 Advanced Micro Devices, Inc. All rights reserved.
// Copyright (c) 2023-2024 Advanced Micro Devices, Inc. All rights reserved.
//
// Permission is hereby granted, free of charge, to any person obtaining a copy
// of this software and associated documentation files (the "Software"), to deal
Expand All @@ -24,7 +24,7 @@
namespace benchmark_tuning
{

template void add_all_benchmarks_for_generator<rocrand_threefry2x32_20_template>(
template void add_all_benchmarks_for_generator<threefry2x32_20_generator_template>(
std::vector<benchmark::internal::Benchmark*>& benchmarks, const benchmark_config& config);

} // namespace benchmark_tuning
4 changes: 2 additions & 2 deletions benchmark/tuning/benchmark_tuning_threefry2x64_20.cpp
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
// Copyright (c) 2023 Advanced Micro Devices, Inc. All rights reserved.
// Copyright (c) 2023-2024 Advanced Micro Devices, Inc. All rights reserved.
//
// Permission is hereby granted, free of charge, to any person obtaining a copy
// of this software and associated documentation files (the "Software"), to deal
Expand All @@ -24,7 +24,7 @@
namespace benchmark_tuning
{

template void add_all_benchmarks_for_generator<rocrand_threefry2x64_20_template>(
template void add_all_benchmarks_for_generator<threefry2x64_20_generator_template>(
std::vector<benchmark::internal::Benchmark*>& benchmarks, const benchmark_config& config);

} // namespace benchmark_tuning
4 changes: 2 additions & 2 deletions benchmark/tuning/benchmark_tuning_threefry4x32_20.cpp
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
// Copyright (c) 2023 Advanced Micro Devices, Inc. All rights reserved.
// Copyright (c) 2023-2024 Advanced Micro Devices, Inc. All rights reserved.
//
// Permission is hereby granted, free of charge, to any person obtaining a copy
// of this software and associated documentation files (the "Software"), to deal
Expand All @@ -24,7 +24,7 @@
namespace benchmark_tuning
{

template void add_all_benchmarks_for_generator<rocrand_threefry4x32_20_template>(
template void add_all_benchmarks_for_generator<threefry4x32_20_generator_template>(
std::vector<benchmark::internal::Benchmark*>& benchmarks, const benchmark_config& config);

} // namespace benchmark_tuning
4 changes: 2 additions & 2 deletions benchmark/tuning/benchmark_tuning_threefry4x64_20.cpp
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
// Copyright (c) 2023 Advanced Micro Devices, Inc. All rights reserved.
// Copyright (c) 2023-2024 Advanced Micro Devices, Inc. All rights reserved.
//
// Permission is hereby granted, free of charge, to any person obtaining a copy
// of this software and associated documentation files (the "Software"), to deal
Expand All @@ -24,7 +24,7 @@
namespace benchmark_tuning
{

template void add_all_benchmarks_for_generator<rocrand_threefry4x64_20_template>(
template void add_all_benchmarks_for_generator<threefry4x64_20_generator_template>(
std::vector<benchmark::internal::Benchmark*>& benchmarks, const benchmark_config& config);

} // namespace benchmark_tuning
4 changes: 2 additions & 2 deletions benchmark/tuning/benchmark_tuning_xorwow.cpp
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
// Copyright (c) 2023 Advanced Micro Devices, Inc. All rights reserved.
// Copyright (c) 2023-2024 Advanced Micro Devices, Inc. All rights reserved.
//
// Permission is hereby granted, free of charge, to any person obtaining a copy
// of this software and associated documentation files (the "Software"), to deal
Expand All @@ -24,7 +24,7 @@
namespace benchmark_tuning
{

template void add_all_benchmarks_for_generator<rocrand_xorwow_template>(
template void add_all_benchmarks_for_generator<xorwow_generator_template>(
std::vector<benchmark::internal::Benchmark*>& benchmarks, const benchmark_config& config);

} // namespace benchmark_tuning
Loading

0 comments on commit 02b2669

Please sign in to comment.