Opencl 调用ClenqueEndRangeKernel时出现错误CL_无效程序_可执行文件

Opencl 调用ClenqueEndRangeKernel时出现错误CL_无效程序_可执行文件,opencl,Opencl,我建立了一个库,它调用了许多opencl内核。所有内核都通过以下步骤: -oclLoadProgSource -clCreateProgramWithSource -clBuildProgram -clCreateKernel 问题是,当我使用clEnqueueNDRangeKernel启动其中一个内核时,会出现以下错误:CL\u无效的程序\u可执行文件 我知道: 之前已经成功推出了5个其他内核 当我直接使用源代码(而不是通过库)时,我根本不会遇到这样的问题,而且一切都很好 您应该测试clB

我建立了一个库,它调用了许多
opencl
内核。所有内核都通过以下步骤:

-oclLoadProgSource
-clCreateProgramWithSource
-clBuildProgram
-clCreateKernel
问题是,当我使用
clEnqueueNDRangeKernel
启动其中一个内核时,会出现以下错误:
CL\u无效的程序\u可执行文件

我知道:

  • 之前已经成功推出了5个其他内核
  • 当我直接使用源代码(而不是通过库)时,我根本不会遇到这样的问题,而且一切都很好
您应该测试clBuildProgram返回的状态。当它失败时,使用clGetProgramBuildInfo(…,CL_PROGRAM_BUILD_LOG…)获取编译器诊断程序

什么库?在内核编译的每一步中,您传递给处理器的参数是什么?你的内核代码是什么?如果没有这些信息,我们根本帮不上忙。首先,对不起我的英语,也许我不清楚我的意思。我有一个代码,可以创建和使用多个内核。我使用这样的代码有以下两种方式:1-直接使用源代码。2-将源代码转换为lib文件,并使用此lib文件。这就是我所说的图书馆。我使用以下选项进行内核编译:“-cl opt disable”我不能提供我的内核代码,但当我直接使用源代码而不是通过我构建的库时,可能就足以说明它工作正常。你的平台是什么?如何将源代码转换为lib文件?我正在Windows7上使用VisualStudio2008。我只是根据我的源代码构建了一个lib文件——或者我不理解你的问题。对不起,我是这方面的新手