我正在编写一个 openCL 代码,以使用 BFS 在图中查找从每个节点到其他节点的最短路径。(这是我正在做的事情的详细信息: 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);
错误 = clWaitForEvents(1, &sync1)
该代码适用于边数 <= 50000(比其等效的 cpu 版本慢得多)。当我增加边数时,程序刚刚退出并给出错误-58(在 clEnqueueNDRangeKernel 之后)
我正在使用 NVIDIA Geforce 630M。
我怎样才能弄清楚发生了什么以及如何解决问题?
最好的祝福