Как генерировать случайные числа в CUDA FORTRAN? - PullRequest
2 голосов
/ 04 февраля 2011

Я ищу простой способ генерировать случайные числа с плавающей запятой между 0.0 и 1.0 для нескольких потоков параллельно. Это мое ядро ​​до сих пор ..

  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. Мне просто нужен толчок в правильном направлении, тогда я могу написать себе достойный генератор случайных чисел.

Спасибо за помощь

Ответы [ 2 ]

3 голосов
/ 04 февраля 2011

Я нашел статью, объясняющую, как вызывать генератор псевдослучайных чисел, реализованный в CUDA C (реализация Mersenne Twister из CUDA SDK) из кода CUDA Fortran.

Подробности можно найти в разделе «Вызов генератора случайных чисел CUDA C» этой статьи:
http://www.pgroup.com/lit/articles/insider/v2n1a4.htm

1 голос
/ 27 мая 2012

вы должны сгенерировать случайные числа в FORTRAN и передать их на устройство.

call random_number(pkf)

pkf_dev=pkf
...