用原子函数编译的问题

时间:2012-11-14 17:15:00

标签: opencl gpu-programming

我正在尝试编译这个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

感谢。

1 个答案:

答案 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启用。​​”