HOME サイトマップ  
大学研究機関等パワーユーザの方々を対象に
主に科学計算用 Custom-Made PCを製作販売しております

トップページ > GPUクラスタ構築例 > データ転送速度の検証

当社製GPUクラスタの構築例です


データ転送速度の検証

OpenMPIではバージョン1.7からCUDAをサポートしておりCUDA Aware MPIの機能を利用することが可能です.
このCUDA Aware MPIを利用することにより、GPUデバイスから別のノードのGPUデバイスへのデータ転送を
MPI APIのみで行うことができるようになり、データ転送速度も大きく改善されるケースがあります.
MPIにおけるCUDAサポートが行われる前には、ノード内でデバイス−ホスト間のデータ転送をCUDA APIで行い、
ノード間のホスト−ホスト間の転送をMPI APIで行う必要があったため
、このMPIのCUDAサポートによりGPUとMPIを組み
合わせたプログラミングがより
シンプルになります.

CPUのみのノード間の通信性能と、CUDA Aware MPIを使った場合のノード間のGPUからGPUへの通信性能を測定した
結果を図1に示します.
測定にはOSU microbenchmarkを使っており、グラフの横軸がデータサイズ、縦軸がバンド幅(GB/s)となります.
CPUのみのバンド幅性能の最大値として6.37GB/sが得られており、これはFDR Infinibandの理論性能(56Gbps)の
約90%の性能です.また、CUDA Aware MPIによる異なるノード間のGPUからGPUへのデータ転送速度は最大で
約5.33GB/sとなりました.
次に、CUDA Aware MPIを使用した場合と使用しない場合での性能を比較を行いました.CUDA Aware MPIを使用しない
場合には、
cudaMallocHost(page-locked)とmalloc(not page-locked)の2つの方法でホストメモリを確保して測定を行いました.
図2にはMPI_SendとMPI_Recvを使って、異なるノードのGPUの間でデータ転送を行った場合のバンド幅の結果を示しています

図1に示したOSU microbenchmarkとは処理の内容が異なるために、 図1と図2を比較してもバンド幅やグラフの
傾向は一致しない点に注意が必要です.
図2のグラフから、CUDA Aware MPIを使用した場合には、 使用しない場合に比べて大幅にデータ転送速度が向上している
ことがわかります.また、この機能はデータサイズがある程度大きい場合に有効であると言えます.CUDA Aware MPIを
使用した場合のCUDAプロファイラの出力を見ると、 ホスト−デバイス間のデータ転送において、自動的にデータを分割して
非同期でデータ転送が実行されていることを確認できます.



図1 MPI bandwidth performance

図1 MPI bandwidth performance

図2 MPI Device to Device transfer rate
図2 MPI Device to Device transfer rate

(C)Copyright OTB Transnational Inc. 2017 All rights reserved.