2012-11-14 52 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