我正在用Cloo在C#中开发一个OpenCL应用程序。我从我的设备(Intel )得到了一些奇怪的值,所以我决定使用OpenCL调试器在内核中设置一些断点。它们被忽略了,尽管我在Visual Studio 2012<code>E 215</code>中启用了Intel Debugger。也许我应该使用内核的路径而不是包含源代码的字符串来构建程序,但是我无法找到使用Cloo的方法。
下面是我构建程序的方法:
program = new ComputeProgram(context, kernelSource);
program.Build(devices, "-g
我使用的是CUDA6.0和与CUDA捆绑在一起的OpenCL实现。对于每个平台,我有两个相同的内核(它们在特定于平台的关键字上有所不同)。它们只读写全局内存,每个线程都有不同的位置。CUDA的启动配置是200 blocks of 250 threads (1D),它直接对应于OpenCL - 50,000 global work size and 250 local work size的配置。
OpenCL代码运行得更快。这是可能的吗?还是我选错了时机?我的理解是,NVIDIA的OpenCL实现是基于CUDA的。我使用OpenCL获得了大约15%的性能提升。
如果你能建议我为什么会看到这一点,