• 検索結果がありません。

MPI レベルでの基本通信性能

第 8 章 Martini 向け PM 通信ライブラリにおける メッセージ通信の実装メッセージ通信の実装

8.5 MPI レベルでの基本通信性能

PMのメッセージ通信のスループット

PM/RHiNET-VPPM/RHiNETのスループットの測定結果を図8.8に示す.測定は,PM/RHiNET では8184byteまで,PM/RHiNET-VPでは2040byteまでと,それぞれで送ることのできるメッセー ジサイズの最大値まで行った.

0 50 100 150 200

1 4 16 64 256 1k 4k 16k

Throughput (Mbyte/s)

Size (byte) PM/RHiNET

PM/RHiNET-VP

図8.8 バースト転送時のメッセージ通信のスループット

バースト転送時のスループットは,1024byteまではPM/RHiNETPM/RHiNET-VPとの間で差 が小さく,RTTとは異なる傾向を示している.これは,PM/RHiNETでは,8.4.3節で述べたよう に直前に送信したpushパケットに対応するackパケットの到着を確認してからでないと次のpush パケットを送り出せないという制約が課されているために,バースト転送時にパケット送信の間 隔が空いてしまうことに起因する.

MPIレベルでのスループット

図8.9に,PMB Sendrecvベンチマークにより測定したスループットを示す.PM/RHiNETRMA に対応しているが,安定動作させるため,通常はRMAを無効にしている.図8.9にの“Zerocopy”

はRMAを有効にした場合の参考値として示してある.

0 100 200 300 400

1 4 16 64 256 1k 4k 16k 64k 256k 1M

Throughput (Mbyte/s)

Size (byte) PM/RHiNET

PM/RHiNET-VP Zerocopy

図8.9 MPIのスループット

PM/RHiNETを用いた場合のMPIレベルでのスループットは,PM/RHiNETの性能の傾向がその まま表れており,2Kbyteを境に向上が緩やかになっている.また,PM/RHiNETPM/RHiNET-VP のどちらを用いた場合でも,スループットは32Kbyte付近でピークに達し,それより大きいメッ セージサイズでは横ばいとなっている.このスループットのピークは,評価で用いたベンチマー クプログラムであるPMBにおいて,MPI_Sendrecvを呼ぶ際に送受信バッファとして指定する領 域の多くがCPUL2キャッシュに収まってしまっていることに起因している.PMB Sendrecv

は,MPI_Sendrecvを複数回連続発行して計測を行うが,その際,送受信バッファとして毎イテ

レーション同一の領域を繰り返し用いている.そのため,送受信のメッセージサイズが小さい場 合は,送受信バッファがL2キャッシュに収まりやすくなりMPIのAPI呼び出し後にMPICH内 部で行われるメモリ間コピーが高速に完了するが,メッセージサイズが大きくなるとメモリ間コ ピーにおいてキャッシュラインのリプレースメントが多発して,速度が低下する.

なお,RMA機構を有効にした場合,16Kbyteを境にMPICH-SCore内部での通信方式がEager

からRendezvousに切り替わり,16Kbyteより大きいサイズではRMAを用いてメッセージ転送を

行うようになるため,メモリ間コピーに伴うL2キャッシュのリプレースメント処理によるスルー プット低下の影響は見られず,300Mbyte/sec以上の高いスループットを示すようになる.

MPIレベルでの通信レイテンシ

次に,PMB PingPongベンチマークによるレイテンシの測定結果を図8.10に示す.

0 10 20 30 40 50 60 70 80 90 100 110

1 4 16 64 256 1k 4k

Latency (µsec)

Size (byte) PM/RHiNET

PM/RHiNET-VP

図8.10 MPIのレイテンシ

図より,メッセージサイズが2Kbyte以下ではPM/RHiNETを用いた場合の方がPM/RHiNET-VP を用いた場合に比べ低いレイテンシを示し,それ以上の転送サイズではPM/RHiNET-VPの方が低 いレイテンシを示していることがわかる.2Kbyte以下の場合については図8.7で示したPMレベル でのRTTと同様の傾向であるが,これはMPICH-SCoreが通常のSendおよびRecvの実装にPM のメッセージ通信をほぼそのまま利用しているためである.一方,メッセージサイズが2Kbyte以 上の場合,PM/RHiNETではPUSHを2Kbyte単位で発行し,次のPUSHを発行する前に毎回ack パケットの受信を待つ実装となっているため,pmSendの呼び出しが1回であったとしても内部で データサイズを2Kbyteで割った回数分ackパケットを待つ処理が加わり,2Kbyteごとにレイテ ンシが大幅に増大してしまう.これに対し,PM/RHiNET-VPでもPM自体のMTU2Kbyteに制 限されているため,MPIレベルでの2Kbyte以上のデータ転送においてはPMのメッセージ通信が 複数回呼ばれることになるが,VPUSH自体がackパケットを発行しない実装となっており,送信 側ではPUSH要求を連続して発行できるため,受信側ではパケットを1つ受信処理した後,すぐ に次のパケットの受信を開始できる.これらより,PM/RHiNET-VPを用いた場合,単純にパケッ トの受信処理時間に加えて2KbyteごとにVPUSHの受信処理分のレイテンシが増すことになる

が,PM/RHiNETを用いた場合,それより大きなパケット往復分のレイテンシが2Kbyteごとに加

わることから,2Kbyte以上の転送ではPM/RHiNET-VPを用いた場合の方が低レイテンシとなっ ている.