适用于CPU和GPU的相同代码库

时间:2012-03-09 09:38:50

标签: c gpgpu

有没有人有为CPU和GPU维护单个代码库的经验? 我想创建一个应用程序,在可能的情况下将使用GPU进行一些持久的计算,但如果目标机器上没有兼容的GPU,它将只使用常规CPU版本。如果我可以使用条件编译指令编写一部分代码来编写CPU版本和GPU版本,那将非常有用。当然会有一些CPU和GPU不同的部分,但我想将算法的本质保留在一个地方。它可能吗?

1 个答案:

答案 0 :(得分:1)

OpenCL是一种基于C语言。存在可在GPU(来自NVidiaAMD)和CPU(来自IntelAMD)上运行的OpenCL平台。

虽然可以在GPU和CPU上执行相同的OpenCL代码,但它确实需要针对目标设备进行优化。需要为不同的GPU和CPU编写不同的代码以获得最佳性能。但是,CPU OpenCL平台可以作为GPU优化代码的低性能回退。

如果您乐于编写根据目标设备(CPU或GPU)执行的条件指令,那么这可以帮助在多个设备上执行OpenCL代码。