# CURAND API supported by HIP

## **1. CURAND Data types**

|**CUDA**|**A**|**D**|**C**|**R**|**HIP**|**A**|**D**|**C**|**R**|**E**|
|:--|:-:|:-:|:-:|:-:|:--|:-:|:-:|:-:|:-:|:-:|
|`CURAND_3RD`| | | | | | | | | | |
|`CURAND_BINARY_SEARCH`| | | | | | | | | | |
|`CURAND_CHOOSE_BEST`| | | | | | | | | | |
|`CURAND_DEFINITION`| | | | | | | | | | |
|`CURAND_DEVICE_API`| | | | | | | | | | |
|`CURAND_DIRECTION_VECTORS_32_JOEKUO6`| | | | |`HIPRAND_DIRECTION_VECTORS_32_JOEKUO6`|6.0.0| | | | |
|`CURAND_DIRECTION_VECTORS_64_JOEKUO6`| | | | |`HIPRAND_DIRECTION_VECTORS_64_JOEKUO6`|6.0.0| | | | |
|`CURAND_DISCRETE_GAUSS`| | | | | | | | | | |
|`CURAND_FAST_REJECTION`| | | | | | | | | | |
|`CURAND_HITR`| | | | | | | | | | |
|`CURAND_ITR`| | | | | | | | | | |
|`CURAND_KNUTH`| | | | | | | | | | |
|`CURAND_M1`| | | | | | | | | | |
|`CURAND_M2`| | | | | | | | | | |
|`CURAND_ORDERING_PSEUDO_BEST`| | | | |`HIPRAND_ORDERING_PSEUDO_BEST`|6.2.0| | | | |
|`CURAND_ORDERING_PSEUDO_DEFAULT`| | | | |`HIPRAND_ORDERING_PSEUDO_DEFAULT`|6.2.0| | | | |
|`CURAND_ORDERING_PSEUDO_DYNAMIC`|11.5| | | |`HIPRAND_ORDERING_PSEUDO_DYNAMIC`|6.2.0| | | | |
|`CURAND_ORDERING_PSEUDO_LEGACY`|11.0| | | |`HIPRAND_ORDERING_PSEUDO_LEGACY`|6.2.0| | | | |
|`CURAND_ORDERING_PSEUDO_SEEDED`| | | | |`HIPRAND_ORDERING_PSEUDO_SEEDED`|6.2.0| | | | |
|`CURAND_ORDERING_QUASI_DEFAULT`| | | | |`HIPRAND_ORDERING_QUASI_DEFAULT`|6.2.0| | | | |
|`CURAND_POISSON`| | | | | | | | | | |
|`CURAND_REJECTION`| | | | | | | | | | |
|`CURAND_RNG_PSEUDO_DEFAULT`| | | | |`HIPRAND_RNG_PSEUDO_DEFAULT`|1.5.0| | | | |
|`CURAND_RNG_PSEUDO_MRG32K3A`| | | | |`HIPRAND_RNG_PSEUDO_MRG32K3A`|1.5.0| | | | |
|`CURAND_RNG_PSEUDO_MT19937`| | | | |`HIPRAND_RNG_PSEUDO_MT19937`|1.5.0| | | | |
|`CURAND_RNG_PSEUDO_MTGP32`| | | | |`HIPRAND_RNG_PSEUDO_MTGP32`|1.5.0| | | | |
|`CURAND_RNG_PSEUDO_PHILOX4_32_10`| | | | |`HIPRAND_RNG_PSEUDO_PHILOX4_32_10`|1.5.0| | | | |
|`CURAND_RNG_PSEUDO_XORWOW`| | | | |`HIPRAND_RNG_PSEUDO_XORWOW`|1.5.0| | | | |
|`CURAND_RNG_QUASI_DEFAULT`| | | | |`HIPRAND_RNG_QUASI_DEFAULT`|1.5.0| | | | |
|`CURAND_RNG_QUASI_SCRAMBLED_SOBOL32`| | | | |`HIPRAND_RNG_QUASI_SCRAMBLED_SOBOL32`|1.5.0| | | | |
|`CURAND_RNG_QUASI_SCRAMBLED_SOBOL64`| | | | |`HIPRAND_RNG_QUASI_SCRAMBLED_SOBOL64`|1.5.0| | | | |
|`CURAND_RNG_QUASI_SOBOL32`| | | | |`HIPRAND_RNG_QUASI_SOBOL32`|1.5.0| | | | |
|`CURAND_RNG_QUASI_SOBOL64`| | | | |`HIPRAND_RNG_QUASI_SOBOL64`|1.5.0| | | | |
|`CURAND_RNG_TEST`| | | | |`HIPRAND_RNG_TEST`|1.5.0| | | | |
|`CURAND_SCRAMBLED_DIRECTION_VECTORS_32_JOEKUO6`| | | | |`HIPRAND_SCRAMBLED_DIRECTION_VECTORS_32_JOEKUO6`|6.0.0| | | | |
|`CURAND_SCRAMBLED_DIRECTION_VECTORS_64_JOEKUO6`| | | | |`HIPRAND_SCRAMBLED_DIRECTION_VECTORS_64_JOEKUO6`|6.0.0| | | | |
|`CURAND_STATUS_ALLOCATION_FAILED`| | | | |`HIPRAND_STATUS_ALLOCATION_FAILED`|1.5.0| | | | |
|`CURAND_STATUS_ARCH_MISMATCH`| | | | |`HIPRAND_STATUS_ARCH_MISMATCH`|1.5.0| | | | |
|`CURAND_STATUS_DOUBLE_PRECISION_REQUIRED`| | | | |`HIPRAND_STATUS_DOUBLE_PRECISION_REQUIRED`|1.5.0| | | | |
|`CURAND_STATUS_INITIALIZATION_FAILED`| | | | |`HIPRAND_STATUS_INITIALIZATION_FAILED`|1.5.0| | | | |
|`CURAND_STATUS_INTERNAL_ERROR`| | | | |`HIPRAND_STATUS_INTERNAL_ERROR`|1.5.0| | | | |
|`CURAND_STATUS_LAUNCH_FAILURE`| | | | |`HIPRAND_STATUS_LAUNCH_FAILURE`|1.5.0| | | | |
|`CURAND_STATUS_LENGTH_NOT_MULTIPLE`| | | | |`HIPRAND_STATUS_LENGTH_NOT_MULTIPLE`|1.5.0| | | | |
|`CURAND_STATUS_NOT_INITIALIZED`| | | | |`HIPRAND_STATUS_NOT_INITIALIZED`|1.5.0| | | | |
|`CURAND_STATUS_OUT_OF_RANGE`| | | | |`HIPRAND_STATUS_OUT_OF_RANGE`|1.5.0| | | | |
|`CURAND_STATUS_PREEXISTING_FAILURE`| | | | |`HIPRAND_STATUS_PREEXISTING_FAILURE`|1.5.0| | | | |
|`CURAND_STATUS_SUCCESS`| | | | |`HIPRAND_STATUS_SUCCESS`|1.5.0| | | | |
|`CURAND_STATUS_TYPE_ERROR`| | | | |`HIPRAND_STATUS_TYPE_ERROR`|1.5.0| | | | |
|`CURAND_STATUS_VERSION_MISMATCH`| | | | |`HIPRAND_STATUS_VERSION_MISMATCH`|1.5.0| | | | |
|`curandDirectionVectorSet`| | | | |`hiprandDirectionVectorSet_t`|6.0.0| | | | |
|`curandDirectionVectorSet_t`| | | | |`hiprandDirectionVectorSet_t`|6.0.0| | | | |
|`curandDirectionVectors32_t`| | | | |`hiprandDirectionVectors32_t`|1.5.0| | | | |
|`curandDirectionVectors64_t`| | | | |`hiprandDirectionVectors64_t`|6.0.0| | | | |
|`curandDiscreteDistribution_st`| | | | |`hiprandDiscreteDistribution_st`|1.5.0| | | | |
|`curandDiscreteDistribution_t`| | | | |`hiprandDiscreteDistribution_t`|1.5.0| | | | |
|`curandDistributionM2Shift_st`| | | | | | | | | | |
|`curandDistributionM2Shift_t`| | | | | | | | | | |
|`curandDistributionShift_st`| | | | | | | | | | |
|`curandDistributionShift_t`| | | | | | | | | | |
|`curandDistribution_st`| | | | | | | | | | |
|`curandDistribution_t`| | | | | | | | | | |
|`curandGenerator_st`| | | | |`hiprandGenerator_st`|1.5.0| | | | |
|`curandGenerator_t`| | | | |`hiprandGenerator_t`|1.5.0| | | | |
|`curandHistogramM2K_st`| | | | | | | | | | |
|`curandHistogramM2K_t`| | | | | | | | | | |
|`curandHistogramM2V_st`| | | | | | | | | | |
|`curandHistogramM2V_t`| | | | | | | | | | |
|`curandHistogramM2_st`| | | | | | | | | | |
|`curandHistogramM2_t`| | | | | | | | | | |
|`curandMethod`| | | | | | | | | | |
|`curandMethod_t`| | | | | | | | | | |
|`curandOrdering`| | | | |`hiprandOrdering`|6.2.0| | | | |
|`curandOrdering_t`| | | | |`hiprandOrdering_t`|6.2.0| | | | |
|`curandRngType`| | | | |`hiprandRngType_t`|1.5.0| | | | |
|`curandRngType_t`| | | | |`hiprandRngType_t`|1.5.0| | | | |
|`curandState`| | | | |`hiprandState`|1.8.0| | | | |
|`curandStateMRG32k3a`| | | | |`hiprandStateMRG32k3a`|1.8.0| | | | |
|`curandStateMRG32k3a_t`| | | | |`hiprandStateMRG32k3a_t`|1.5.0| | | | |
|`curandStateMtgp32`| | | | |`hiprandStateMtgp32`|1.8.0| | | | |
|`curandStateMtgp32_t`| | | | |`hiprandStateMtgp32_t`|1.5.0| | | | |
|`curandStatePhilox4_32_10`| | | | |`hiprandStatePhilox4_32_10`|1.8.0| | | | |
|`curandStatePhilox4_32_10_t`| | | | |`hiprandStatePhilox4_32_10_t`|1.8.0| | | | |
|`curandStateScrambledSobol32`| | | | |`hiprandStateScrambledSobol32`|6.2.0| | | | |
|`curandStateScrambledSobol32_t`| | | | |`hiprandStateScrambledSobol32_t`|6.2.0| | | | |
|`curandStateScrambledSobol64`| | | | |`hiprandStateScrambledSobol64`|6.2.0| | | | |
|`curandStateScrambledSobol64_t`| | | | |`hiprandStateScrambledSobol64_t`|6.2.0| | | | |
|`curandStateSobol32`| | | | |`hiprandStateSobol32`|1.8.0| | | | |
|`curandStateSobol32_t`| | | | |`hiprandStateSobol32_t`|1.5.0| | | | |
|`curandStateSobol64`| | | | |`hiprandStateSobol64`|6.2.0| | | | |
|`curandStateSobol64_t`| | | | |`hiprandStateSobol64_t`|6.2.0| | | | |
|`curandStateXORWOW`| | | | |`hiprandStateXORWOW`|1.8.0| | | | |
|`curandStateXORWOW_t`| | | | |`hiprandStateXORWOW_t`|1.5.0| | | | |
|`curandState_t`| | | | |`hiprandState_t`|1.5.0| | | | |
|`curandStatus`| | | | |`hiprandStatus`|1.5.0| | | | |
|`curandStatus_t`| | | | |`hiprandStatus_t`|1.5.0| | | | |

## **2. Host API Functions**

|**CUDA**|**A**|**D**|**C**|**R**|**HIP**|**A**|**D**|**C**|**R**|**E**|
|:--|:-:|:-:|:-:|:-:|:--|:-:|:-:|:-:|:-:|:-:|
|`curandCreateGenerator`| | | | |`hiprandCreateGenerator`|1.5.0| | | | |
|`curandCreateGeneratorHost`| | | | |`hiprandCreateGeneratorHost`|1.5.0| | | | |
|`curandCreatePoissonDistribution`| | | | |`hiprandCreatePoissonDistribution`|1.5.0| | | | |
|`curandDestroyDistribution`| | | | |`hiprandDestroyDistribution`|1.5.0| | | | |
|`curandDestroyGenerator`| | | | |`hiprandDestroyGenerator`|1.5.0| | | | |
|`curandGenerate`| | | | |`hiprandGenerate`|1.5.0| | | | |
|`curandGenerateLogNormal`| | | | |`hiprandGenerateLogNormal`|1.5.0| | | | |
|`curandGenerateLogNormalDouble`| | | | |`hiprandGenerateLogNormalDouble`|1.5.0| | | | |
|`curandGenerateLongLong`| | | | |`hiprandGenerateLongLong`|5.5.0| | | | |
|`curandGenerateNormal`| | | | |`hiprandGenerateNormal`|1.5.0| | | | |
|`curandGenerateNormalDouble`| | | | |`hiprandGenerateNormalDouble`|1.5.0| | | | |
|`curandGeneratePoisson`| | | | |`hiprandGeneratePoisson`|1.5.0| | | | |
|`curandGenerateSeeds`| | | | |`hiprandGenerateSeeds`|1.5.0| | | | |
|`curandGenerateUniform`| | | | |`hiprandGenerateUniform`|1.5.0| | | | |
|`curandGenerateUniformDouble`| | | | |`hiprandGenerateUniformDouble`|1.5.0| | | | |
|`curandGetDirectionVectors32`| | | | |`hiprandGetDirectionVectors32`|6.0.0| | | | |
|`curandGetDirectionVectors64`| | | | |`hiprandGetDirectionVectors64`|6.0.0| | | | |
|`curandGetProperty`|8.0| | | | | | | | | |
|`curandGetScrambleConstants32`| | | | |`hiprandGetScrambleConstants32`|6.0.0| | | | |
|`curandGetScrambleConstants64`| | | | |`hiprandGetScrambleConstants64`|6.0.0| | | | |
|`curandGetVersion`| | | | |`hiprandGetVersion`|1.5.0| | | | |
|`curandMakeMTGP32Constants`| | | | |`hiprandMakeMTGP32Constants`|1.5.0| | | | |
|`curandMakeMTGP32KernelState`| | | | |`hiprandMakeMTGP32KernelState`|1.5.0| | | | |
|`curandSetGeneratorOffset`| | | | |`hiprandSetGeneratorOffset`|1.5.0| | | | |
|`curandSetGeneratorOrdering`| | | | |`hiprandSetGeneratorOrdering`|6.2.0| | | | |
|`curandSetPseudoRandomGeneratorSeed`| | | | |`hiprandSetPseudoRandomGeneratorSeed`|1.5.0| | | | |
|`curandSetQuasiRandomGeneratorDimensions`| | | | |`hiprandSetQuasiRandomGeneratorDimensions`|1.5.0| | | | |
|`curandSetStream`| | | | |`hiprandSetStream`|1.5.0| | | | |

## **3. Device API Functions**

|**CUDA**|**A**|**D**|**C**|**R**|**HIP**|**A**|**D**|**C**|**R**|**E**|
|:--|:-:|:-:|:-:|:-:|:--|:-:|:-:|:-:|:-:|:-:|
|`__curand_umul`|11.5| | | | | | | | | |
|`curand`| | | | |`hiprand`|1.5.0| | | | |
|`curand_Philox4x32_10`| | | | | | | | | | |
|`curand_discrete`| | | | |`hiprand_discrete`|1.5.0| | | | |
|`curand_discrete4`| | | | |`hiprand_discrete4`|1.5.0| | | | |
|`curand_init`| | | | |`hiprand_init`|1.5.0| | | | |
|`curand_log_normal`| | | | |`hiprand_log_normal`|1.5.0| | | | |
|`curand_log_normal2`| | | | |`hiprand_log_normal2`|1.5.0| | | | |
|`curand_log_normal2_double`| | | | |`hiprand_log_normal2_double`|1.5.0| | | | |
|`curand_log_normal4`| | | | |`hiprand_log_normal4`|1.5.0| | | | |
|`curand_log_normal4_double`| | | | |`hiprand_log_normal4_double`|1.5.0| | | | |
|`curand_log_normal_double`| | | | |`hiprand_log_normal_double`|1.5.0| | | | |
|`curand_mtgp32_single`| | | | | | | | | | |
|`curand_mtgp32_single_specific`| | | | | | | | | | |
|`curand_mtgp32_specific`| | | | | | | | | | |
|`curand_normal`| | | | |`hiprand_normal`|1.5.0| | | | |
|`curand_normal2`| | | | |`hiprand_normal2`|1.5.0| | | | |
|`curand_normal2_double`| | | | |`hiprand_normal2_double`|1.5.0| | | | |
|`curand_normal4`| | | | |`hiprand_normal4`|1.5.0| | | | |
|`curand_normal4_double`| | | | |`hiprand_normal4_double`|1.5.0| | | | |
|`curand_normal_double`| | | | |`hiprand_normal_double`|1.5.0| | | | |
|`curand_poisson`| | | | |`hiprand_poisson`|1.5.0| | | | |
|`curand_poisson4`| | | | |`hiprand_poisson4`|1.5.0| | | | |
|`curand_uniform`| | | | |`hiprand_uniform`|1.5.0| | | | |
|`curand_uniform2_double`| | | | |`hiprand_uniform2_double`|1.5.0| | | | |
|`curand_uniform4`| | | | |`hiprand_uniform4`|1.5.0| | | | |
|`curand_uniform4_double`| | | | |`hiprand_uniform4_double`|1.5.0| | | | |
|`curand_uniform_double`| | | | |`hiprand_uniform_double`|1.5.0| | | | |


\*A - Added; D - Deprecated; C - Changed; R - Removed; E - Experimental