GTC 2015において、MPIを使うマルチGPUプログラミングというチュートリアルセッションが行われた。これからマルチGPUのシステムのプログラムを作ろうという人には役立ちそうな内容であるので紹介する。 次の図のように、CPUにメモリが付き、さらにPCIe経由でGPUとネットワークカードが付いているというのが計算ノードで、複数の計算ノードがネットワークでつながっているというのが、一般的なマルチGPU環境である。これらのノード間の通信には、MPI(Message Passing Interface)というライブラリが使われることが多い。MPIはSPMD(Single Program Multiple Data)実行モデルであり、すべてのノード(後述のように、正確にはランク)で同じプログラムが走る。 MPIを動かすと、ネットワークに繋がっているすべてのノードを見つけ出し、それぞれのノードに実