Full documentation for rocRAND is available at https://rocrand.readthedocs.io/en/latest/
- MT19937 pseudo random number generator based on M. Matsumoto and T. Nishimura, 1998, Mersenne Twister: A 623-dimensionally equidistributed uniform pseudorandom number generator.
- New benchmark for the device API using Google Benchmark,
benchmark_rocrand_device_api
, replacingbenchmark_rocrand_kernel
.benchmark_rocrand_kernel
is deprecated and will be removed in a future version. Likewise,benchmark_curand_host_api
is added to replacebenchmark_curand_generate
andbenchmark_curand_device_api
is added to replacebenchmark_curand_kernel
. - experimental HIP-CPU feature
- ThreeFry pseudorandom number generator based on Salmon et al., 2011, "Parallel random numbers: as easy as 1, 2, 3".
- Python 2.7 is no longer officially supported.
- MRG31K3P pseudorandom number generator based on L'Ecuyer and Touzin, 2000, "Fast combined multiple recursive generators with multipliers of the form a = ±2q ±2r".
- LFSR113 pseudorandom number generator based on L'Ecuyer, 1999, "Tables of maximally equidistributed combined LFSR generators".
- SCRAMBLED_SOBOL32 and SCRAMBLED_SOBOL64 quasirandom number generators. The Scrambled Sobol sequences are generated by scrambling the output of a Sobol sequence.
- The
mrg_<distribution>_distribution
structures, which provided numbers based on MRG32K3A, are now replaced bymrg_engine_<distribution>_distribution
, where<distribution>
islog_normal
,normal
,poisson
, oruniform
. These structures provide numbers for MRG31K3P (with template typerocrand_state_mrg31k3p
) and MRG32K3A (with template typerocrand_state_mrg32k3a
).
- Sobol64 now returns 64 bits random numbers, instead of 32 bits random numbers. As a result, the performance of this generator has regressed.
- Fixed a bug that prevented compiling code in C++ mode (with a host compiler) when it included the rocRAND headers on Windows.
- New benchmark for the host api using googlebenchmark replacing
benchmark_rocrand_generate
,benchmark_rocrand_generate
is deprecated and will be removed in a future version.
- Increased number of warmup iterations for rocrand_benchmark_generate from 5 to 15 to eliminate corner cases that would generate artificially high benchmark scores.
- Backward compatibility for deprecated
#include <rocrand.h>
using wrapper header files. - Packages for test and benchmark executables on all supported OSes using CPack.
- Generating a random sequence different sizes now produces the same sequence without gaps
indepent of how many values are generated per call.
- Only in the case of XORWOW, MRG32K3A, PHILOX4X32_10, SOBOL32 and SOBOL64
- This only holds true if the size in each call is a divisor of the distributions
output_width
due to performance - Similarly the output pointer has to be aligned to
output_width * sizeof(output_type)
- hipRAND split into a separate package
- Header file installation location changed to match other libraries.
- When using the
rocrand.h
header file, users should now use#include <rocrand/rocrand.h>
, rather than#include <rocrand.h>
- When using the
- rocRAND still includes hipRAND using a submodule
- The rocRAND package also sets the provides field with hipRAND, so projects which require hipRAND can begin to specify it.
- Fix offset behaviour for XORWOW, MRG32K3A and PHILOX4X32_10 generator, setting offset now
correctly generates the same sequence starting from the offset.
- Only uniform int and float will work as these can be generated with a single call to the generator
- kernel_xorwow unit test is failing for certain GPU architectures.
- No updates or changes for ROCm 5.0.0.
- Initial HIP on Windows support. See README for instructions on how to build and install.
- Packaging split into a runtime package called rocrand and a development package called rocrand-devel. The development package depends on runtime. The runtime package suggests the development package for all supported OSes except CentOS 7 to aid in the transition. The suggests feature in packaging is introduced as a deprecated feature and will be removed in a future rocm release.
- Fix for mrg_uniform_distribution_double generating incorrect range of values
- Fix for order of state calls for log_normal, normal, and uniform
- kernel_xorwow test is failing for certain GPU architectures.
- Sobol64 support added.
- Benchmark time measurement improvement
- Address Sanitizer build option added.
- nvcc backend fix
- Fix ranges of MRG32k3a device functions.
- gfx90a support added.
- gfx1030 support added
- gfx803 supported re-enabled
- Memory leaks in Poisson tests has been fixed.
- Memory leaks when generator has been created but setting seed/offset/dimensions throws an exception has been fixed.
- rocRAND benchmark performance drop for xorwow has been fixed for older ROCm builds.
- Ability to force install dependencies with new -d flag in install script
- rocRAND package name has been updated to support newer versions of ROCm.
- rocRAND benchmark performance drop has been fixed.
- Debug builds via the install script have been fixed.
- No new features
- No new features
- No new features
- No new features
- Fixed package naming to reflect OS name and architecture.
- No new features
- Static library build options added in beta (subject to change in build method and naming in future releases)
- Switched to hip-clang as default compiler
- HCC build deprecated