くらし情報『GTC 2015 - MPIを使ったマルチGPUのプログラミング「高性能化編」』

2015年4月16日 12:34

GTC 2015 - MPIを使ったマルチGPUのプログラミング「高性能化編」

MPSによる性能向上はアプリケーションを変更する必要はなく、その効果はMPIアプリに留まらない。また、CUDA7からはマルチGPUの環境でもMPSが使えるようになっている。

さらに実行の並列度を上げる方法として、ノンブロッキングのMPIコールを使う手がある。MPI_SendやMPI_Recvを呼び出すと、送信や受信が完了するまで、呼び出し元には戻ってこない。しかし、MPIにはMPI_Isend、MPI_Irecvという関数があり、このIの付いた関数は送信や受信の起動をすると、その動作の完了を待たないで、呼び出し元に戻ってくる。

次の図の上側のブロッキングのコードでは、最初のMPI_Sendrecvの送信と受信が終わってから、2番目のMPI_Sendrecvを実行するが、下側のノンブロッキングのコードでは2つの受信を起動してから2つの送信を起動している。そして、その後のMPI_Waitallでこれらすべての終了を待ち合わせている。このようにすれば、1番目のMPI_Sendrecvの終了を待ち合わせる時間を有効に使え、性能が上がる。


まとめとして、MPIを使えば、マルチGPUの環境を抽象化してプログラムを書くことができる。

関連記事
新着くらしまとめ
もっと見る
記事配信社一覧
facebook
Facebook
Instagram
Instagram
X
X
YouTube
YouTube
上へ戻る
エキサイトのおすすめサービス

Copyright © 1997-2024 Excite Japan Co., LTD. All Rights Reserved.