GTC 2015 - MPIを使ったマルチGPUのプログラミング「高性能化編」
図の横軸はメッセージのサイズで縦軸は通信のバンド幅である。
緑のGPUDirect RDMAを使うMPIの性能が一番高く、データサイズが大きい場合は6GB/sのバンド幅が得られ、1B転送の遅延時間は5.7μsと短い。この遅延の短縮はCPUメモリへのコピーを省いたことが効いていると考えられる。
青のGPUDirectを使わないMPIも大きなデータサイズでは6GB/sのバンド幅となっているが、データサイズが小さくなるとバンド幅が減少している。また、1Bメッセージの遅延は17.97μsと大きい。
そして通常のMPIはバンド幅が2GB/sと前の2つのMPIの1/3の性能に留まっている。また、1Bメッセージの遅延も19.97μsの最大である。遅延はともかく、バンド幅は同じだけ出ても良いと思うのであるが、GPUメモリからCPUメモリへのcudaMemcpyとCPUメモリからIB NICへのDMAが同時並列に実行できていないという問題がありそうである。
A、B2つのプロセスで1つのGPUを共用すると、プロセスAのComputeとStreamsの実行とプロセスBのComputeとStreamsの実行は排他的に行われる。