我不知道如何处理大小小于全局大小设置的数组clEnqueueNDRangeKernel
。
在我的原子计算中,全局大小由原子数设置。这是位置、速度和力的大小。然后,我进行伪归约并将数据存储在与块数相对应的大小数组中。我还有一个小数组来存储对势的参数。
我对这个职位没有任何问题,我将它们声明为__global const double4 *positions
. 我的问题是关于另外两种。据我了解,线程与每个数组元素相关联,但这不是我想要的小数组。对我来说,最好的方法是将参数数组传递为__const
or __private
,但我不确定我是否可以传递一个数组__private
(就像我使用标量一样)并将其设置为__const
产生错误:
:149:80: error: invalid address space for pointee of pointer argument to __kernel function
__global float2 *atom_type,__global const double *atmmass, __const double8 *two_body_type,
关于我的 reduce 数组,现在我正在传递它,因为__global
输出只是垃圾。当我声明它时,__const
我得到与上面相同的错误,无论如何我想这将是一个问题,然后取回数据。
你们会怎么做?