1

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

错误:CL_BUILD_PROGRAM_FAILURE

谢谢。

4

1 回答 1

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

于 2012-11-15T10:18:30.090 回答