我有一些课
class A {
int bla;
float blabla;
};
有没有办法A
在线程注册表中创建对象?因为,new
并且malloc
正在全局内存中分配空间(我不想这样做)。
内核中的每个局部变量都分配在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;
}
}