【问题标题】:Invalid Context error in openCLopenCL 中的无效上下文错误
【发布时间】:2013-12-14 01:01:46
【问题描述】:

我正在为 n 体算法编写 OpenCL 代码。当我尝试执行它时,我收到了一个 Invalid Context 错误。错误出现在调用内核以在 GPU 上执行的代码部分。我在这里粘贴了我的代码。如果有人能帮助我理解为什么会出现此错误并帮助我解决它,我将不胜感激。

  if (gpuSize) {
/*launch the kernel on second device (GPU)*/
ret = clEnqueueNDRangeKernel(
                           accelState.queues[1],
                           accelState.kernel,
                           1,
                           global_work_offset1,
                           global_work_size1,
                           NULL, /*let OpenCL determine localWorkSize*/
                           1, &enqEvents[noOfQEvents-1],
                           &enqEvents[noOfEvents]
                           );
 /*noOfEvents++;*/
 checkResult(ret);
}

最后一行 checkResult(ret) 出现错误,但据我了解,我的命令队列 accelState.queues[1] 与内核中的某些内容不匹配?任何帮助将不胜感激。谢谢。

【问题讨论】:

    标签: opencl


    【解决方案1】:

    问题很明显,您正在从一个上下文(上下文 B)运行内核,在另一个上下文(上下文 A)的队列中。

    这是不允许的,所有的对象都只能与它们自己的上下文对象交互。这适用于内核、缓冲区、队列、事件等。

    但是,设备等硬件资源可以在不同的环境中使用。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-09-30
      • 2015-12-14
      • 1970-01-01
      • 1970-01-01
      • 2013-11-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多