我正在尝试编译这个openCl代码:
#pragma OPENCL EXTENSION cl_khr_local_int32_base_atomics : enable
__kernel void nQueens( __global int * data, __global int * result, __local int * stack, __local int *stack_size, int board_size)
{
atom_inc( stack_size );
}
我收到了这个错误:
您的OpenCL内核无法编译:错误:代码选择失败 选择:0x5307370:i32,ch = AtomicLoadAdd 0x53072e8,0x5303d68, 0x53011a8< 0x4edf478:0>对准= 4
错误:CL_BUILD_PROGRAM_FAILURE
感谢。
答案 0 :(得分:1)
atom_inc是64位版本,atomic_inc是32位版本。 stack_size也应声明为volatile。因此,由于您使用的是32位整数,因此应使用atomic_inc。
来自http://www.khronos.org/registry/cl/sdk/1.2/docs/man/xhtml/atomic_inc.html:
int atomic_inc(volatile __local int * p)
“此函数的64位版本atom_inc由cl_khr_int64_base_atomics启用。”