CPU和GPU的代码库相同

CPU和GPU的代码库相同,c,gpgpu,C,Gpgpu,有没有人有为CPU和GPU维护单一代码库的经验? 我想创建一个应用程序,在可能的情况下将使用GPU进行一些持久的计算,但如果目标机器上没有兼容的GPU,它将只使用常规CPU版本。如果我可以使用条件编译指令编写一部分代码,将编译为CPU版本和GPU版本,这将非常有帮助。当然,CPU和GPU会有一些不同的部分,但我想把算法的本质放在一个地方。有可能吗 是一种基于C的语言。存在在GPU(从和)和CPU(从和)上运行的OpenCL平台 虽然可以在GPU和CPU上执行相同的OpenCL代码,但它确实需要针

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

是一种基于C的语言。存在在GPU(从和)和CPU(从和)上运行的OpenCL平台

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


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

您没有指定操作系统,但我认为这是操作系统特有的。您不太可能希望在CPU和GPU上使用完全相同的代码结构,因为这对两者都不是最佳的。当然,这可能是抽象意义上的。这需要一些组织,但肯定是可行的。例如,看一看(它现在与CUDA捆绑在一起)。它为实际的计算提供了几个后端。我确实需要Windows,但我不介意是否可以同时使用Windows和Linux。@巴特,谢谢。推力看起来很有趣。据我所知,CUDA还使用C/C++语言的变体。另外还有新的Visual Studio 11,它应该同时支持ATI和NVidia GPU。所以我认为我不仅仅局限于OpenGL,还是我?另一点是,我同意编写一些特定于CPU/GPU的代码,我只是不想保留两个版本的算法主逻辑。