0

我有一些课

class A {
int bla;
float blabla;
};

有没有办法A线程注册表中创建对象?因为,new并且malloc正在全局内存中分配空间(我不想这样做)。

4

1 回答 1

1

内核中的每个局部变量都分配在GPU的寄存器文件中。除非您已经使用了所有寄存器。寄存器文件的使用是自动处理的,所以你不能做太多的事情,但改变你的代码并使用编译器标志检查使用情况:--ptxas-options=-v。当寄存器文件已满时,数据会溢出到缓存 L1(如果启用)。否则数据进入缓存 L2。

示例内核将是:

__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 回答