Numbapro cuda python在gpu中的线程寄存器中定义数组

时间:2014-11-28 10:14:50

标签: python cuda pycuda numba numba-pro

我知道如何使用np.arraynp.zerosnp.empty(shape, dtype)在主机内创建全局设备功能,然后使用cuda.to_device进行复制。

此外,可以将共享数组声明为cuda.shared.array(shape, dtype)

但是如何在gpu函数内的特定线程的寄存器中创建一个常量大小的数组。

我尝试cuda.device_arraynp.array但没有任何效果。

我只想在一个线程中执行此操作 -

x = array(CONSTANT, int32) # should make x for each thread

1 个答案:

答案 0 :(得分:0)

Numbapro支持numba.cuda.local.array(shape, type)来定义线程本地数组。

与CUDA C一样,是否在本地存储器或寄存器中定义了数组是基于数组使用模式的编译器决策。如果静态定义了本地数组的索引模式并且存在足够的寄存器空间,则编译器将使用寄存器来存储该数组。否则它将存储在本地内存中。有关详细信息,请参阅this question and answer pair