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> アライメント=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 に答える