CPU 和 GPU 具有相同的代码库

Max*_*Max 5 c gpgpu

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

pru*_*nge 1

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

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

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