Reputation: 6861
I'm looking for a simple way to generate a random floats between 0.0 and 1.0 for multiple threads in parallel. This is my kernel so far..
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
I've been looking around in forums and reading the CURAND manual, but I still can't figure out what to do. I'm not even sure if there are any random number libraries for CUDA FORTRAN. I just need a push in a right direction then I can write myself a decent random number generator.
Thanks for the help
Upvotes: 2
Views: 1270
Reputation: 11
you have to generate random numbers in FORTRAN and transfer it to device.
call random_number(pkf)
pkf_dev=pkf
Upvotes: 1
Reputation: 5910
I found an article explaining how to call a CUDA C implemented pseudo-random number generator (the Mersenne Twister implementation from the CUDA SDK) from a CUDA Fortran code.
Details can be found in the section "Calling a CUDA C Random Number Generator" of this article:
http://www.pgroup.com/lit/articles/insider/v2n1a4.htm
Upvotes: 3