我正在寻找一种简单的方法来为并行的多个线程生成 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/