私のプログラムは MPI に適しています。各 CPU は独自の特定の (洗練された) ジョブを実行し、単一double
の を生成し、次に を使用しMPI_Reduce
てすべての CPU からの結果を乗算します。
しかし、私はこれを何度も繰り返します (> 100,000)。したがって、GPU を使用すると劇的に速度が向上することがわかりました。
私は周りをグーグルで検索しましたが、具体的なものは何も見つかりません。MPI と GPU を混在させるにはどうすればよいですか? プログラムが「ああ、このランクは GPU であり、他のすべては CPU です」と照会して検証する方法はありますか? おすすめのチュートリアルか何かありますか?
重要なことは、GPU のフル セットは必要ないということです。私が実際に必要としているのは、多くの CPU と、頻繁に使用されるMPI_Reduce
操作を高速化するための 1 つの GPU だけです。
これが私が話していることの概略的な例です:
500 個の CPU があるとします。各 CPU はどういうわけか、たとえば 50double
秒を生成します。これらの 250,00 個すべてを乗算する必要がありdouble
ます。そして、これを1万回から100万回繰り返します。(500 個の CPU に加えて) GPU が 1 つあれば、非常に効率的です。各 CPU は、約double
100 万の「状態」すべてに対して 50 秒を計算します。次に、500 個の CPU すべてがそれぞれdouble
の を GPU に送信します。次に、GPU は、double
100 万の「状態」ごとに 250,000 を乗算して、100 万を生成しdoubles
ます。
これらの数値は正確ではありません。コンピューティングは確かに非常に大きいです。一般的な問題を伝えようとしているだけです。