Sdk OpenCL代码与AMD/Nvidia一起使用

Sdk OpenCL代码与AMD/Nvidia一起使用,sdk,opencl,nvidia,amd-processor,Sdk,Opencl,Nvidia,Amd Processor,有人能告诉我们,在编译后,是否有可能让OpenCL代码同时与AMD和Nvidia卡一起工作?一般的程序是什么? 我是否需要安装OpenCLSDK(AMD/Nvidia)并使用“如果”结构为每种情况(AMD设备或Nvidia设备)生成不同的代码? 如果你能用一些标题澄清一下,我将不胜感激。 谢谢。是的,这是可能的,这是OpenCL over CUDA(仅适用于NVIDIA硬件)的目的。基本上,您可以在C99中编写代码,然后在中间的“独立于制造商”代码中编译内核。最后的代码将在运行时由您的卡(AMD

有人能告诉我们,在编译后,是否有可能让OpenCL代码同时与AMD和Nvidia卡一起工作?一般的程序是什么? 我是否需要安装OpenCLSDK(AMD/Nvidia)并使用“如果”结构为每种情况(AMD设备或Nvidia设备)生成不同的代码? 如果你能用一些标题澄清一下,我将不胜感激。
谢谢。

是的,这是可能的,这是OpenCL over CUDA(仅适用于NVIDIA硬件)的目的。基本上,您可以在C99中编写代码,然后在中间的“独立于制造商”代码中编译内核。最后的代码将在运行时由您的卡(AMD或Nvidia)解释。
通常情况下,您没有理由编写不同的特定于卡的代码,也没有理由使用不同的SDK(但是……我使用的是Max OS 10.7,它可能与其他环境不同)

谢谢Flavien,所以如果我使用OpenCL和AMD SDK编译示例,它应该可以与Nvidia卡一起工作?AMD BLAS和FFT库也在NVIDIA设备上运行,ArrayFire OpenCL库也是如此。非常方便!如果您想要获得性能,您可能必须进行供应商特定的调优,对于AMD,您可以通过内核分析器运行openCL内核,并查看生成的中间语言以及将在硬件上运行的ISA代码。@ocluser:您能澄清一下“进行供应商特定的调优以获得性能”的含义吗?我能不能不写一个优化的代码来获得性能(当使用OpenCL并根据内核数量、任务大小等划分任务时)……这实际上可以与Nvidia/AMD一起工作?继续。。。操作时,NVIDIA/AMD都提供了性能/评测工具,它们告诉您有关内核的不同情况,如占用率、内存/缓冲区使用情况、kerenl运行时、IL/PTX视图、ISA代码等,在GPU一代中,ex AMD 5XXX系列有不同的调优机制,在AMD 7xxx southern island卡中可能无法正常工作。。所以,在IMHO上,如果您计划从硬件中获得最大性能,则需要进行特定于供应商的调优。