2010-10-08 118 views
2

说我有一个CUDA内核CUDA内核参数

__global__ foo (int a, int b) 
{ 
    ... ... 
} 

其中a和b存储。这是否需要每个线程的寄存器空间?

回答

2

不,这不会为每个线程占用寄存器空间,而是在固定空间(只读空间)中分配一次ab,所有线程都可以从该空间读取空间。

注意,这个空间是由常量寄存器缓存和共享由所有线程:

只读恒定高速缓存是 由所有的标量处理器核心 共享并加速从恒定 存储器中读取空间,这是设备内存的只读 区域[PTX ISA版本2.1第3章]。

+0

我猜测至少当你修改代码中的参数时,它们会被复制到寄存器中。此外,寄存器可能比常量内存还要快,所以无论如何复制都可能发生。有人应该检查生成的程序集。 – masterxilo 2016-04-07 00:42:31