BFSを使用して、グラフ内の各ノードから他のノードへの最短パスを見つけるopenCLコードを書いています。(これが私がやっていることの詳細です: BFSによる最短パス、CUDAからopenCLへのコードの移植
clEnqueueNDRangeKernelに渡すデータを分割する方法は次のとおりです
size_t global_size, local_size;
local_size=1024;
global_size=ceil(e_count/(float)local_size)*local_size;
cl_event sync1;
err = clEnqueueNDRangeKernel(queue, kernel, 1, NULL,
&global_size, &local_size, 0, NULL, &sync1); //wait for this to finish (to synchronize);
err = clWaitForEvents(1, &sync1)
このコードは、エッジの数 <= 50000 でうまく機能します (同等の CPU バージョンよりもかなり遅くなります)。エッジの数を増やすと、プログラムが終了し、エラー -58 が発生しました ( clEnqueueNDRangeKernel の後)
NVIDIA Geforce 630M を使用しています。
何が起こったのか、問題を解決するにはどうすればよいですか?
よろしくお願いします