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

GTC 2015 - MPIを使ったマルチGPUのプログラミング「基礎編」

これが右の図で1と書かれた通信である。

そして青字で書かれたMPI_Sendrecvで2の通信を行う。こうすると、上下の隣接行の内容が白○の部分でも上下の隣接データが存在することになる。

図の下半分のCUDAのコードでもほぼ同じ記述で上下の隣接領域のデータのコピーを行うことができる。なお、これはCUDA対応のMPIを使った場合で、一般のMPIを使う場合は、送信データをcudaMemcpyで明示的にホストCPUのメモリにコピーしてから送信し、受信はホストCPUのメモリに確保したバッファに入れる。そして、また、cudaMemcpyで受信データをGPUのメモリにコピーするという手順が必要となる。

横の隣接データはアドレスが連続していないので、いったんto_leftという配列にコピーしてから送り、from_left配列に受け取ったデータを縦方向に並び替えているが、Halo部分を埋めるという考え方は縦の隣接と同じである。

このようなヤコビ法のプログラムを、プロセスあたり4K×4Kを分担させて1000ステップ実行した場合の実行時間の例を次の図に示す。
黄色がK20X GPUでの実行で青はXeon E5-2690 v2の3GHzクロックでの実行結果である。

関連記事
新着くらしまとめ
もっと見る
記事配信社一覧
facebook
Facebook
Instagram
Instagram
X
X
YouTube
YouTube
漫画家・脚本家募集LPバナー 上へ戻る
エキサイトのおすすめサービス

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