2011-02-04 26 views
2

私は、並列で複数のスレッドに対して0.0から1.0の間のランダムな浮動小数点数を生成する簡単な方法を探しています。これは私がフォーラムで周りを見て、CURANDマニュアルを読んで、私はまだ何をするかを把握することはできませんされてきたCUDA FORTRANで乱数を生成するにはどうすればよいですか?

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 

...これまでのところ、私のカーネルです。 CUDA FORTRAN用の乱数ライブラリがあるかどうかはわかりません。 私はちょうど正しい方向にプッシュする必要がありますし、まともな乱数ジェネレータを書くことができます。ヘルプ

答えて

3

ため

おかげで私は、CUDA Cは、CUDA Fortranのコードから擬似乱数生成器(CUDA SDKからメルセンヌツイスターの実装)を実装呼び出す方法を説明する記事を見つけました。

詳細は、この記事の「CUDA C乱数発生器の呼び出し」セクションに記載されています:
http://www.pgroup.com/lit/articles/insider/v2n1a4.htm

+0

同じテクニックを使用して、CURANDとインターフェースすることができます。 – Tom

+0

確かに、CURANDに埋め込まれたジェネレータは、多くの科学的研究によって悪質なジェネレータとして記述されているため、推奨しません。 – jopasserat

1

あなたはFORTRANで乱数を生成し、デバイスに転送する必要があります。

関連する問題