我的程序非常适合 MPI。每个 CPU 都执行自己的特定(复杂)工作,生成单个double
,然后我使用 anMPI_Reduce
将每个 CPU 的结果相乘。
但是我重复了很多很多次(> 100,000)。因此,我想到 GPU 会大大加快速度。
我已经google了,但找不到任何具体的东西。您如何将 MPI 与 GPU 混合使用?程序有没有办法查询和验证“哦,这个等级是GPU,其他都是CPU”? 有推荐的教程之类的吗?
重要的是,我不想要或不需要一整套 GPU。我真的只需要很多 CPU,然后是单个 GPU 来加速常用MPI_Reduce
操作。
这是我正在谈论的示意性示例:
假设我有 500 个 CPU。每个 CPU 以某种方式产生 50double
秒。我需要将所有 250,00 个这些double
s 相乘。然后我重复这 10,000 到 100 万次。如果我可以拥有一个 GPU(除了 500 个 CPU),这将非常有效。每个 CPU 将计算double
所有约 100 万个“状态”的 50 秒。然后,所有 500 个 CPU 都会将它们double
的 s 发送到 GPU。然后,GPU 会将double
100 万个“状态”中的每一个的 250,000 s 相乘,产生 100 万个 s doubles
。
这些数字并不准确。计算量确实很大。我只是想传达一般问题。