我正在尝试运行向量加法的应用程序,我需要同时启动多个内核,因此对于并发内核启动,我最后一个问题中有人建议我使用多个命令队列。我由数组定义
context = clCreateContext(NULL, 1, &device_id, NULL, NULL, &err);
for(i=0;i<num_ker;++i)
{
queue[i] = clCreateCommandQueue(context, device_id, 0, &err);
}
我在上述代码附近的某个地方收到错误“命令由信号 11 终止”。
我也使用 for 循环来启动内核和排队数据
for(i=0;i<num_ker;++i)
{
err = clEnqueueNDRangeKernel(queue[i], kernel, 1, NULL, &globalSize, &localSize,
0, NULL, NULL);
}
问题是我不确定我哪里出错了,我在某个地方看到我们可以制作命令队列数组,所以这就是我使用数组的原因。另一个信息,当我不使用 A for 循环时,只需手动定义多个命令队列,它就可以正常工作。