clBuildProgram在NVidia卡上崩溃

时间:2014-10-28 13:55:18

标签: opencl nvidia

我有一个OpenCL应用程序在使用AMD GPU时运行良好。

使用NVidia卡时,clBuildProgram调用会使应用程序崩溃(甚至不会返回失败值,只会导致崩溃)。调试时,崩溃产生:

在nvopencl.dll模块中读取访问冲突。代码0xc0000005。调试器将clGetExportTable函数(在nvopencl.dll内)指示为违规源。

通过评论内核的随机部分,我已达到这一点:

在代码片段中:

if (something){
     //some stuff
     float3 gradient = (float3)(0,1,0);
     gradient = normalize(gradient);
     return;
}

删除“gradient = normalize(gradient);”一行,clBuildProgram不会崩溃,但让它在那里,崩溃了程序。渐变变量甚至没有在内核中使用,因此它与它的任何其他部分都没有关系。规范化函数本身不应该是问题的根源,因为它用在代码的其他部分。

我认为这可能与某些驱动程序错误有关。因为安装最新的CUDA版本(6.5)会使NVidia分发的OpenCL Volume Rendering sample binaries行为不当,而使用CUDA 6安装会使Volume Rendering示例正常工作。

我的代码与卷渲染技术有关,这就是为什么我认为它可能是相关的,但我的问题出现在CUDA 6.5和CUDA 6安装中。

您是否经历过类似的事情?可能是问题的原因,我该如何处理?

谢谢。

1 个答案:

答案 0 :(得分:0)

经过进一步分析,问题似乎是驱动程序中的一个错误,正如Xapa所说。