GPU上使用随机数的问题
请问如何用一个高效的方法在kernel里使用随机数?
我目前用的方法是先在内存里生成一个连续随机数数组空间,然后再用内存拷贝,复制到Global memory里去,这样做的效率很低。
像这样:
const int Ant_Num = 30;
const int rand_Size = Ant_Num * sizeof(float);
float* P_rand = (float*)malloc( rand_Size);
float* d_rand;
cudaMalloc( (void**)&d_rand, rand_Size);
for ( k = 0; k <= Ant_Num - 1; k++)
{
int jrand = rand() % 3000;
P_rand[k] = float( jrand) / 3001;
}
cudaMemcpy( d_rand, P_rand, rand_Size, cudaMemcpyHostToDevice);