我正在使用CUDA 6.0和随CUDA SDK捆绑的OpenCL实现。我为每个平台都有两个相同的内核(它们在平台特定关键字方面不同)。 它们仅读取和写入全局内存,每个线程位于不同的位置。 CUDA的启动配置是200块250线程(1D)
,这直接对应于OpenCL的配置-50,000全局工作大小和250本地工作大小
。
OpenCL代码运行得更快。这可能吗?还是我的计时方式有误?我了解到,NVIDIA的OpenCL实现基于CUDA的OpenCL实现。我用OpenCL获得了约15%的性能提升。
如果您能够说明我可能会看到的原因以及NVIDIA实现CUDA和OpenCL之间的一些差异,那将是很好的。