在Open CL中使用静态变量?

时间:2014-05-27 10:46:57

标签: opencl

我们可以在static内核中使用openCL个变量吗? 我尝试使用它但得到以下异常

 ptxas application ptx input, line 11; error   : Module-scoped variables in .local state space are not allowed with ABI ptxas fatal   : Ptx assembly aborted due to errors

修改

我找到了一个不支持的页面。那么我们怎样才能使变量在多次调用期间保留其旧值?

1 个答案:

答案 0 :(得分:0)

在OpenCL 1.2中,所有程序范围变量必须位于__constant地址空间中(参见规范的第6.5节,第224页),这意味着您不能拥有既可以读取也可以读取的这种变量由多个内核编写。相反,您需要创建一个缓冲区对象,并将其作为参数传递给需要它的每个内核(它将在多个内核调用中保留其内容)。

在OpenCL 2.0中,允许__global地址空间中的程序范围变量,因此当我们拥有OpenCL 2.0的硬件和实现时,您将能够更轻松地执行此类操作。