クラスがあります
class A {
int bla;
float blabla;
};
スレッドのレジストリにオブジェクトを作成する方法はありA
ますか?なぜなら、そしてグローバルメモリにスペースを割り当てているからです(私はやりたくないです)。new
malloc
カーネル内のすべてのローカル変数は、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;
}
}