OpenCL内核中数组的内存空间是多少?

时间:2015-05-08 01:14:24

标签: arrays opencl

我写了一个我声明的OpenCL内核函数 内核中的本地数组,如:

float arr[10000];

现在看来每个工作项都有一个10000个元素的独立数组。私人注册后我在这里有点困惑 每个线程可能无法容纳10000个元素数组。

有没有人对此有任何想法?

1 个答案:

答案 0 :(得分:1)

OpenCL规范,§6.5地址空间限定符说:

  

程序中函数的参数的通用地址空间名称,或函数的局部变量是__private

因此,在内核中,float arr[10000]驻留在私有地址空间中。这就是所有规范所说的。

理论上,除此之外发生的事情取决于实现:未指定私有地址空间是否应物理存储在寄存器,寄存器文件,某种片外存储器,这些存储器的组合中,或者别的什么。

在实践中,一些实现会根据许多因素将小数组放入寄存器中,而较大的数组将放在片外存储器中。