0

クラスがあります

class A {
int bla;
float blabla;
};

スレッドのレジストリにオブジェクトを作成する方法はありAますか?なぜなら、そしてグローバルメモリにスペースを割り当てているからです(私はやりたくないです)。newmalloc

4

1 に答える 1

1

カーネル内のすべてのローカル変数は、GPUのレジスタファイルに割り当てられます。すでにすべてのレジスタを使用していない限り。レジスタファイルの使用は自動的に処理されるため、多くのことを行うことはできませんが、コードを変更し、コンパイラフラグで使用状況を確認してください。レジスタファイルがいっぱいになると、有効になっている場合、データはキャッシュL1にスピルアウトされます。それ以外の場合、データはキャッシュL2に入れられます。--ptxas-options=-v

カーネルの例は次のとおりです。

__global__ regKernel(int length)
{
 A localA; // goes to register file
 int threadId = threadIdx.x;// goes to register file
 if (threadId < length)
 {
   localA.bla++;
   localA.blabla = 0.4;
 }
}
于 2013-03-01T07:49:09.700 に答える