我尝试启动至少有很多参数的空内核,但在函数enqueueNDRangeKernel中出现内存访问冲突。请检查我的代码,也许我错过了一些东西或者只是不知道。OpenCL中的访问冲突错误enqueueNDRangeKernel
主机代码: https://dl.dropboxusercontent.com/u/71256314/main.cpp 起初去一些初始化,然后我创建缓冲区,然后设置参数。没有错误出现。它在第一次enqueueNDRangeKernel函数调用时崩溃。
内核代码: https://dl.dropboxusercontent.com/u/71256314/baum_kernel.cl 即使内核为空,它也不起作用。
缓冲区的一些问题我猜,但没有错误返回。
版本: AMD APP SDK 2.8版 - AMD催化剂™12.10(9.002) GPU:ATI的Mobility Radeon HD 5650
检查编译和库链接。这看起来像程序没有正确链接到OpenCL。 API不应该以这种方式崩溃。 – DarkZeros
@DarkZeros我不认为这是问题。我在VS 2012中设置了项目,就像它在这里描述的一样(对于x64系统): http://kode-stuff.blogspot.ru/2012/11/setting-up-opencl-in-visual-studio_1.html I试图用这种配置运行简单的helloworld示例,并且它们运行良好。 –
Sry告诉你他们放置的Hello world示例是无用的,只是调用一个不运行的OpenCL函数(只返回一些ID)。即使它起作用,链接也可能是错误的。您遇到的错误的典型问题是链接错误的库版本或以错误的方式动态加载它。 – DarkZeros