cuda のバックアップ(No.2) - Araya PukiWiki

CUDA プログラミング

ランダム関数(GAP のルーチンを移植)

#define r228 (1<<28)

__device__ int myrandom(int max, int rn, long rx[])
{
    rn = (rn%55) + 1;
    rx[rn-1] = (rx[rn-1] + rx[(rn+30)%55])%r228;
    return rx[rn-1]*max/r228;
}

__device__ void myseed(int n, int rn, long rx[])
{
  int i;
  rn = 1;
  rx[0] = n%r228;
  for(i = 2 ; i <= 55 ; i++)rx[i-1]=(1664525*rx[i-2]+1)%r228;
  for(i = 1 ; i < 100 ; i++){
    rn = (rn%55) + 1;
    rx[rn-1] = (rx[rn-1]+rx[(rn+30)%55])%r228;
  }

}


トップ   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS