在opencl中使用静态变量?

在opencl中使用静态变量?,opencl,Opencl,我们可以在openCL内核中使用static变量吗。 我尝试使用它,但出现以下异常 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 编辑 我发现一个页面说它不受支持。那么,我们如何才能使一个变量在多次调用

我们可以在
openCL
内核中使用
static
变量吗。 我尝试使用它,但出现以下异常

 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
编辑
我发现一个页面说它不受支持。那么,我们如何才能使一个变量在多次调用期间保留其旧值呢?

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


在OpenCL2.0中,允许在
\uu global
地址空间中使用程序作用域变量,因此当我们有OpenCL2.0的硬件和实现时,您将能够更轻松地完成这类工作。

如果您希望变量在不同的内核运行之间保持值,只需使用全局变量即可。