在GPU上启动许多POSIX C++代码副本



我有一个计算密集型的单线程POSIX+boost C++程序,我只是在48核CPU上以多个副本的形式启动(这是一种蛮力a*搜索算法(

有没有任何简单的方法可以重新编译GPU的代码并在"GPU"上运行;更多";GPU核心?

假设我想按原样运行线程,那么为GPU移植现有的boost C++代码的最简单方法是什么?

有没有任何简单的方法可以为GPU重新编译代码并在"更多";GPU核心?

假设我想按原样运行线程,那么为GPU移植现有的boost C++代码的最简单方法是什么?

没有。如评论中所述,C++17包括并行算法,NVIDIA提供了一个支持CUDA的C++17编译器。这离取得"成功"还有很长的路要走;POSIX C++";代码并直接在GPU上运行。我所熟悉的GPU编程范式中没有这样的工作。

对于任何对为什么这不可能(而且可能永远都不可能(感兴趣的人来说,GPU有一个非常特定的计算逻辑,在通常情况下,即使程序以某种方式在多核上启动,它的性能也会比单线程CPU低得多:

  • 在多核CPU中,内核尽可能地分离,这样开发人员就不会考虑芯片内部。只有少数因素会影响线程性能扩展:比如内存带宽和(在某些情况下(同时的多线程效果。

  • 在GPU中;"故意";紧密连接:例如,如果分支在不同的线程中发生不同的情况,那么一组完整的核心(在某些情况下多达一百个(最终将按顺序执行代码,从而放弃所有并行化的好处。此外,由于芯通常是"芯";"较慢";它们的主要优点在于";矢量化的";操作,要求开发者";在矢量中思考";而不是在";数据结构";以获得标称性能。

因此,尽管存在编程工具包;看起来像C";它们实际上是隐藏在C语法和类C库调用后面的特定于领域的语言。

制作";可用的";从普通代码到高度并行GPU代码的转换将需要一种算法,该算法可以将代码加载为逻辑,在数十亿个接地状态的尺度上找到并证明等效逻辑转换的正确性,并基于GPU的计算模型将其转换回GPU指令。虽然在未来有可能,但这远远超出了现代算法知识和计算能力。研究这些努力的科学包括人工智能规划、程序合成、自动定理证明、深度学习。

最新更新