Full documentation for rocRAND is available at https://rocrand.readthedocs.io/en/latest/
- Removed hipRAND submodule from rocRAND. hipRAND is now only available as a separate package.
- Generator classes from
rocrand.hpp
are no longer copyable, in previous versions these copies would copy internal references to the generators and would lead to double free or memory leak errors. These types should be moved instead of copied, and move constructors and operators are now defined for them. - Improved MT19937 initialization and generation performance.
- Removed references to and workarounds for deprecated hcc
mt19937_engine
fromrocrand.hpp
is now move-constructible and move-assignable. Previously the move constructor and move assignment operator was deleted for this class.- Various fixes for the C++ wrapper header rocrand.hpp
- fixed the name of
mrg31k3p
it is now correctly spelled (was incorrectly namedmrg31k3a
in previous versions). - added missing
order
setter method forthreefry4x64
- fixed the default ordering parameter for
lfsr113
- fixed the name of
- 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".
- Accessor methods for sobol 32 and 64 direction vectors and constants:
- Enum
rocrand_direction_vector_set
to select the direction vector set. rocrand_get_direction_vectors32(...)
supersedes:rocrand_h_sobol32_direction_vectors
rocrand_h_scrambled_sobol32_direction_vectors
rocrand_get_direction_vectors64(...)
supersedes:rocrand_h_sobol64_direction_vectors
rocrand_h_scrambled_sobol64_direction_vectors
rocrand_get_scramble_constants32(...)
supersedesh_scrambled_sobol32_constants
rocrand_get_scramble_constants64(...)
supersedesh_scrambled_sobol64_constants
- Enum
- 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