議論はコンピューティング機能 2.x に限定されています。
質問1
curandState のサイズは 48 バイトです (sizeof() で測定)。curandStates の配列が割り当てられるとき、各要素は何らかの形で (たとえば 64 バイトまで) パディングされますか? それとも、メモリに連続して配置されているだけですか?
質問2
Passing structs to CUDA kernelsの OP には、「align 部分は不要だった」と記載されています。しかし、アラインメントなしでは、その構造体へのアクセスは、a と b への 2 つの連続するアクセスに分割されます。右?
質問 3
struct
{
double x, y, z;
}Position
各スレッドが上記の構造にアクセスしているとします。
int globalThreadID=blockIdx.x*blockDim.x+threadIdx.x;
Position positionRegister=positionGlobal[globalThreadID];
メモリ アクセスを最適化するには、単純に 3 つの個別の double 変数 x、y、z を使用して構造を置き換える必要がありますか?
御時間ありがとうございます!