2012-11-14 69 views
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); 
} 

而且我得到这个错误:

Your OpenCL kernels failed to compile: Error: Code selection failed to select: 0x5307370: i32,ch = AtomicLoadAdd 0x53072e8, 0x5303d68, 0x53011a8 <0x4edf478:0> alignment=4

Error: CL_BUILD_PROGRAM_FAILURE

感谢。

回答

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(挥发性__local INT * P)

+0

嘿对不起我迟到 “这个功能,atom_inc的64位版本,由cl_khr_int64_base_atomics启用。​​”答复,我完全肯定,但它接缝,我的GPU不接受原子功能。 谢谢 – fritsMaister