[SCore-users-jp] PM/Myrinet及びPM/S hmemにおけるゼロコピー機能のメカニズム

Atsushi HORI hori @ swimmy-soft.com
2004年 2月 26日 (木) 10:02:17 JST


堀@スイミー・ソフトウェアです.

>書いたところまででも結構なので、是非、回答を頂けないでしょうか。
>お手数ですが、よろしくお願い致します。

ということなので若干加筆訂正してお送りします.

>SCoreのゼロコピー機能に関して、下記質問に対する回答をお願い致します。

あくまで推測の域を出ませんし,計測方法の詳細も不明なのですが,

>-----以下、質問
>
>通信部と演算部がオーバーラップしていないMPIを使用したプログラム(参考(1))
>において、ゼロコピー機能を用いて性能測定を実施しました。
>
>その結果、ノード内MPI並列の性能測定(参考(2))ではゼロコピー機能をONにした
>場合、ゼロコピー機能をOFFにした場合と比較して演算部の性能が向上しました。
>
>しかし、ノード間及びノード内MPI並列の性能測定(参考(3))ではゼロコピー機能
>をONにした場合、ゼロコピー機能をOFFにした場合と比較して演算部の性能が劣
>化しました。

非ゼロコピー通信では,CPU が通信に介在するため通信時間の一部は計算処理
を行うことができません.一方,Myrinet のように NIC にプロセッサを用い
るゼロコピー通信では,通信は NIC のプロセッサが処理をするため,CPU は
計算処理が可能です.

というのがゼロコピー通信の謳い文句で,多くの人が「ゼロコピーの方が速い
」と思いこんでいますが,これが常に正しいとは限りません.

#というのが言いたかっただけなのです.すいません.

ひとつの問題はメモリバスのバンド幅の問題があります.ゼロコピー通信時に
は,プロセッサがその計算コードやデータの load/store のためにメモリにア
クセスする一方で,NIC が DMA でメモリにアクセスします.PCI のバンド幅
とプロセッサがメモリにアクセスするバンド幅が実際のメモリのバンド幅を超
えるような場合,性能低下が生じることがあります.

実はもう一つ問題があります.NIC からの DMA でメモリに直接書き込むと,
プロセッサのキャッシュに載っている DMA と同じアドレスのキャッシュが無
効になってしまうことです.このための速度低下*も*考えられます.逆に非ゼ
ロコピー通信ではプロセッサが通信データをコピーすることで通信データがキ
ャッシュに載るようになり,結果として高速になる「可能性」も考えられます.

最も多いのが,MPI で「普通に」プログラムを書くと通信と計算がオーバーラ
ップしないので,ゼロコピーにしたからといって性能向上しないことです(こ
れが一番悲しい!).

----
と,ここまで書いて気が付きました.1x4 と 2x4 の比較なのですね.1x4 の
時は「ゼロコピー」にはなりません.同一 PC 内の通信なのでコピーは不可避
です.

蛇足ついでですが,最近のプロセッサはメモリコピーが速いので,ゼロコピー
の優位性は数年前に比べ低くなっているのではないか(逆転している場合もあ
る?)と感じています.ゼロコピーはオーバーヘッドが大きいですから.

私の経験に基づいてもう一言.並列計算では性能に影響する要因は何か,とい
うことが頻繁に問われますが,詳しく調べると仮説(思惑?)とは異なる原因
だったということが本当に多いです(クラスタ固有?).ですので,上の内容
をそのまま「信じない」ようお願いいたします.プロセッサのカウンターやバ
スアナライザーを使って「ちゃんと」調べるのが一番確かと思います.

以上,ご参考になれば幸いです.

----
堀 敦史(ほり あつし)
スイミー・ソフトウェア株式会社




SCore-users-jp メーリングリストの案内