NVIDIA NVPL RAND Documentation

NVPL RAND library provides a collection of efficient pseudorandom and quasirandom number generators for ARM CPUs. APIs provided in NVPL RAND library are designed to be very similar to cuRAND. Users familiar with cuRAND can use NVPL RAND with ease.


  • NVPL RAND includes most of the random number generators available in cuRAND, including

    • four pseudorandom generators: XORWOW, MRG32k3a, Philox_4x32_10, and MT19937,

    • 32- and 64-bit SOBOL and Scrambled SOBOL quasirandom generators.

  • A new pseudorandom generator, Permuted Congruential Generator (PCG) is included. It is said to be fast, statistically sound, and less predictable than most generators.

  • In additional to the distributions available in cuRAND, NVPL RAND also offers eight more distributions, including

    • three uni-variate continuous distributions: exponential, gamma, and beta,

    • one multi-variate continuous distribution: Dirichlet,

    • three uni-variate discrete distributions: Bernoulli, categorical, and binomial,

    • one multi-variate discrete distribution: multinomial.

  • NVPL RAND provides both a single-threaded lib, libnvpl_rand.so, and a multi-threaded lib, libnvpl_rand_mt.so. Depending on the need of an application, users can either use multi-threaded generators to create a sequence with high throughput, or use single-threaded generators in application’s own parallel regions.