random - 如何在 CUDA FORTRAN 中生成随机数?

标签 random cuda fortran

我正在寻找一种简单的方法来为并行的多个线程生成 0.0 到 1.0 之间的随机 float 。到目前为止,这是我的内核..

  attributes(global) subroutine rand_kernel()
     implicit none

     integer :: tid
     real :: r

     ! Thread ID
     tid = threadIdx%x

     ! Generate random number
     call <some random number generator> (r)

     ! Randomise array
     d_array(tid) = r

   end subroutine rand_kernel

我一直在论坛中查找并阅读 CURAND 手册,但我仍然不知道该怎么做。我什至不确定是否有 CUDA FORTRAN 的随机数库。 我只需要朝着正确的方向插入,然后我就可以为自己编写一个像样的随机数生成器。

感谢您的帮助

最佳答案

我发现一篇文章解释了如何从 CUDA Fortran 代码调用 CUDA C 实现的伪随机数生成器(CUDA SDK 中的 Mersenne Twister 实现)。

详细信息可以在本文的“调用 CUDA C 随机数生成器”部分找到:
http://www.pgroup.com/lit/articles/insider/v2n1a4.htm

关于random - 如何在 CUDA FORTRAN 中生成随机数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4897878/

相关文章:

java - 随机排列(随机重新排列)随机生成的密码

java - 随机方法的效率

CUDA:在大型二维阵列上共享内存

arrays - Fortran 中的函数指针数组

随机选择 R 数据中的特定行

linux - 当我更改 cuda 内核时,为什么 cudaGraphicsGLRegisterBuffer 会出现段错误?

matrix - 为什么 cuSparse 在稀疏矩阵乘法方面比 cuBlas 慢得多

python - 在 Fortran 中实现像快速插值一样的 numpy

algorithm - Fortran 算法帮助 - 得到错误的结果

c++ - 在二维数组中生成随机数时保证特定数字的 X 数量的任何方法