現在の研究内容
並列入出力システム
平成11年度には、並列入出力・可視化システムの研究ではプロトタ
イプのシステムを構築し、その上に並列入出力プログラミングを行
なうためのプロトタイプAPI (Application Program Interface)を
設計・実装し、その性能を評価した。さらに、並列データ流に基づ
く可視化システムのプロトタイプを設計・実装した。
平成12年度は、実用システムの構築に向けて、CP-PACS の 128 台
の入出力プロセッサ(IOU:Input/Output Unit)のうち 16台に対し、
Fast (100base-TX)Ethernet インターフェイスを実装し、これらを
2台の FastEthernet Switching Hub を経由して、並列ファイルサー
バ Origin-2000 及び並列ビジュアリゼーションサーバ Onyx2 に接
続した。Origin-2000 及び Onyx2 には、各々4ポートの
FastEthernet インタフェースが備わっている(図1)。このハードウェ
アの上に、前年度より開発を進めている並列入出力システムである
PIO (Parallel Input/Output)システムを実装した。
図1:PIO システムの接続図
超並列計算機に対する PIOシステムの適用
並列入出力システムの研究は、現在の主流commodityネットワーク
である、100base-TXイーサネットの並列敷設による通信スループッ
ト向上に関する実験と、それに基づく並列入出力システムの開発を
中心に行なっている(図2)。
並列イーサネットを用いた予備的な転送実験の結果、各計算機資源
におけるネットワーク入出力では、データ転送要求をなるべく独立
な(相互作用のない)パケットに分割し、それらを並列に処理及び転
送することによって、全体のスループットを線形に増加させること
が可能であることがわかった。これを用いて、超並列計算機によっ
て生成されたデータを、並列チャネルを用いて直接外部環境に送出
するシステムを、ユーザに使い易い形で提供する。
このためには、アプリケーション・プログラムから見て、並列入出
力チャネルが容易にアクセスできる必要がある。しかし、並列プロ
セッサから生成されるデータ流は場合によっては空間的及び時間的
に粗密が生じる可能性があり、これをうまく平滑化し、チャネル負
荷を均等にする必要がある。分散メモリ型アーキテクチャを持つ超
並列計算機においてこのような負荷分散を自動化するために、入出
力要求を並列処理しつつ協調動作する、システム・デーモンを実装
する。これにより、ユーザは並列入出力システムの存在を意識せず
に、入出力システムを効率的に運用できるようにする。
図2:並列入出力システムにおける各種プロセスの結合
並列入出力のためのAPI
本研究で開発する並列入出力用API (Application Program
Interface)を、``PIOシステム''と名付ける。PIOシステムは(1) シ
ステムで利用可能な並列入出力チャネルの構成要素情報の提供、
(2) データ入出力操作、(3) 接続先システムの情報の提供、(4) 手
動または自動による通信負荷の空間的均等化(データ生成プロセッ
サ毎の負荷分散)、(5) 通信負荷の時間的均等化(時系列上のデータ
に対する負荷分散)、といった機能を提供するライブラリ群からな
る。
本APIでは、システム構成のうち、最低限の情報のみをユーザに提
供、あるいは操作させ、大部分を自動化することを目的としている。
明示的な情報操作をしない限り、ユーザプログラムからの入出力要
求は、並列チャネルのいずれかに自動的に割り振られる。また、
PIOシステムは、入出力双方の計算機における並列性を想定してい
る。このため、一般的なTCP/IP等の通信と異なり、ホストのアドレ
スだけでなく、そのホスト上の並列プロセッサまでを通信パートナー
として識別できるようになっている。
現在の実装対象は、CP-PACSシステム上のOSF-1/MPP及び
Origin-2000, Onyx2上のIRIX-6.2である。これらのシステム上には、
各々、実行時のサポートを行なうデーモンが実装され、各システム
において最適な通信を行なうようになっている。その際、不必要な
データコピーによるオーバヘッドを低減するため、CP-PACS側では
PU間のゼロコピー通信機能を、Origin-2000及びOnyx2側では共有メ
モリによるサーバとユーザの両プロセス間でのデータ共有を利用し
ている。
PIOシステムの性能評価
PIOシステムを用い、CP-PACSとOrigin-2000間での簡単なping-pong
転送を行なった場合の通信性能を図3に示す。ここでは両システム上
で4対のユーザプロセス間での通信の総スループットを示している。
ユーザアプリケーションのプログラムを全く変更せず、通信チャネ
ル数を増加させた場合に、性能が向上しているのがわかる。しかし、
絶対的なスループットという点で見ると、最大でも裸のTCP/IP通信
性能の約半分程度の性能しか出ていない。これは、システム中の各
種レイヤでのソフトウェアオーバヘッドの影響である。
図3:Ping-Pong転送におけるPIOシステムのスループット
しかし、本PIOシステムの利用法としては、このような双方向の通
信よりも、一方向での非同期な大量通信が主であると考えられる。
この点で重要なのは、データ生成側のユーザプロセスにとって、い
かにPIOへのアクセス時間が短く見えるかが重要である。この点で
は、PIOシステムを構成している各種デーモンがバッファの役割を
果たすため、CP-PACS上で裸のTCP/IP通信を用いて外部と通信した
場合に比べ、非常に小さな(見かけ上の)レイテンシで処理が行なえ
る。一方向通信を行なった場合の、ユーザプロセスに処理が戻るま
での時間を図4に示す。図4からわかるように、ユーザプロセスは出力
処理から短時間で解放され、処理を継続することができる。ここで
は、多数の入出力プロセッサを利用できる、超並列計算機のメリッ
トが活かされている。
図4:一方向転送におけるユーザプロセスから見たレイテンシ
平成11年度までのシステム開発は、主にCP-PACSの小型機である
PILOT-3 (128PU+16IOU)上で行なってきたが、平成12年度はCP-PACS
に多数の並列ネットワークインターフェイスを設置したことにより、
2048PU+128IOUを用いた大規模な実験が可能となり、これらを用い
て実アプリケーションに対するPIOの性能評価を行った。実験の結
果、CP-PACSの128台のIOU全てでPIO serverを実行させた場合、
2048PU全てを用いたユーザアプリケーションからの出力サービスは
余裕をもって処理できることがわかった。これは、PIO server群か
ら成す多数のプロセスが十分な容量を持つバッファ機能を提供する
ため、ユーザアプリケーションの出力にストレスを与えず、効率的
なパイプライン処理が実現できているためである。また、バッファ
リング処理のオーバヘッドを加えても、PIO serverは裸のTCP/IP通
信に対し、約80%の性能を達成することがわかった。従って、PIOシ
ステムを使用することにより、例えば16台のIOUに設置されたFast
Ethernetインタフェース群により、最大でTCP/IP1本分に比べ約13
倍の通信性能が達成可能である。
動的負荷分散機能の実装と評価
PIOシステムの持つ動的負荷分散機能に対する性能評価を、CP-PACS
の256PUを用いて行なった。行なった。PIOシステムは米国のHPSSの
ような従来の大規模並列入出力システムとは異なり、静的なファイ
ル転送だけでなく、ユーザアプリケーションからの直接的な入出力
を並列処理することを目的としている。このため、静的なファイル
の入出力とは異なり、事前に負荷バランスを予測することが難しい
ため、並列ネットワークを効率的に使用するには動的負荷分散機能
が不可欠である。分散メモリ型並列計算機で、情報の一局集中を避
けつつ動的な入出力負荷分散を実現するのは困難であるが、PIOシ
ステムでは外部に接続された共有メモリワークステーションを負荷
バランス情報サーバとして用いることでこれを解決している。
この機能を用いて、各並列プロセスの出力データ量が動的に変化す
るテストプログラムをCP-PACS上で実行し、PIOサーバによって
Origin-2000に並列出力する実験を行なった(図5)。
実験では送出パケットの平均サイズを64KBから2048KBのいずれかに固定し、
平均サイズに対し最大で2.1倍までパケットサイズを増加させる(ただし総デー
タ量は一定)ように出力を調整した。結果として、動的負荷分散(DYNAMIC)を
行なった場合、静的負荷分散(プロセスの位置に基づく均等割付, STATIC)に
対し、1.40倍から2.08倍までの性能が得られた。平均パケットサイ
ズを大きくするほど動的負荷分散の効果が顕著になり、最終的に理
論的な上限値(USER)とほぼ同じ値が得られた。
図5:動的負荷分散機能の評価
並列可視化システム
並列可視化システムは、並列入出力システムであるPIOインタフェー
スに基づき、データ生成システムからの並列データ入力処理及び、
画像生成システムへの並列データ供給システムの開発を中心に行なっ
ている。
並列可視化システムのプラットフォームは、並列画像処理専用ワー
クステーションOnyx2である。平成10年度に導入したシステムは、2
台の CPU と1台のラスタマネージャ(画像生成エンジン)、さらに4
チャネルの100base-TXインタフェースを備えている。平成12年度は
Onyx2上の並列プロセッサ数を4台に増強し、より高いスループット
で可視化を行なえるようになった。この4台の CPU を用いることに
より、一連の可視化処理の負荷分散、例えば並列データ入力とその
画像処理といった機能分散が可能であり、CPU台数のさらなる増加
にも対応できるようになっている。
AVS/Express システムのネットワーク化及び並列化
本可視化システムでは、画像生成のためのソフトウェアとして、業
界標準であるAVS/Express を用いる。AVS/Express は単一プロセッ
サ上での動作を想定しており、さらにデータの供給がそのシステム
(ワークステーション)上のファイル環境として閉じていることを前
提としている。このため、そのままの形では我々の目的である、並
列ネットワークを介したオープンな環境での利用に適さない。そこ
で、AVS/Express のデータ入力モジュールを構築し直し、(1)ネッ
トワーク環境における外部からのデータ供給、(2)共有メモリを利
用した他プロセスからのデータ供給、の2機能を実現した。これら
の機能は、AVS/Express のユーザ・モジュールとして実装され、
AVS/Express システムの一部に取り込まれるようになっている。
本データ入力モジュールを、先述のBinderと共有メモリを介して結
合することにより、超並列計算機によって生成されたデータを並列
入出力システムで転送し、画像処理の直前まで並列化されたデータ
流を供給することが可能となっている。
図6:並列可視化システムの出力例
並列ボリュームレンダリングモジュール
図2に、並列ビジュアリゼーションサーバOnyx2におけるPIOシステ
ムからのデータ入力から最終画像の描画までの流れを示す。binder
はPIOから供給される並列データストリームをマルチスレッド化さ
れた並列プロセスによって処理し、AVS/Express が通常に処理できるデータ
に変換する。このデータはAVSに組み込まれた任意のモジュールに
流され、適宜処理される。AVSの各モジュールは基本的にシステム
によって予め用意されているが、特定のモジュールを任意のユーザ
モジュールに差し替えることも可能である。我々はこの機能を用い、
3次元ボリュームレンダリング(以下VRと省略)を実行するAVSモジュー
ルに対する高速化を行なった。
図7:並列可視化システムのデータ処理の流れ
AVSは基本的に全体を逐次処理することしかできず、特に3次元VRの
ような重い処理が伴なうとその性能は一気に低下する。本システム
では、AVSの行なっているVR処理を解析し、それと等価な働きをす
る。本システムでは、AVSの行なっているVR処理を解析し、それと
等価な働きをする、マルチスレッドによって並列化された高速モジュー
ルを開発した(図1(b)中のvolume render)。このモジュールは、3次
元VRにおける処理をほぼ完全に並列化しており、使用可能プロセッ
サ数にほぼ比例した非常に効率の高い並列処理を実現している。従
来のソフトウェアによる並列VRの研究では、主として静止画像に対
する高速VRが研究されてきた。ここでは、医学等の応用分野におい
て、一旦取り込んだ画像をいろいろなパラメータの下で高速描画す
ることが目的となっている。しかし、我々が目指すのは動的に流入
してくるデータ流のスナップショットに対する可視化であり、従来
のデータ蓄積型・中間表現型のアルゴリズムが適用できない。その
代わりに、3次元データに対する補完作業を効率良く処理し、全体
の負荷バランスを重視する実装を行なった。図3に、最大8スレッド
を用いた場合の、VR処理の速度向上率を示す(台数効果を見るため、
8プロセッサを持つOrigin-2000上でAVSを稼働させた)。このような
高い並列処理効率により、例えば後述する計算宇宙物理における
128^3の空間データを512^2の2次元データに変換するVR処理におい
て、約1秒/フレームの実時間描画が可能となった。
図8:並列ボリュームレンダリングモジュールにおける速度向上率
並列入出力・可視化システムの統合制御
PIO及び並列可視化システムを実並列計算機と共に快適に使用する
環境を提供するために、超並列計算機CP-PACSをはじめ、関連する
計算機上で各種プロセスを起動し、全体のデータ流を構築する作業
を全てスクリプトとして事前に記述し、AVSの操作コンソールから
簡単なメニュー選択によって自動的に起動できるようなシステムを
構築した。また、ビジュアリゼーションサーバのCPU数及び性能に
限りがある場合、binder等の他の並列プロセスとの負荷バランスが
問題となる。これを簡単に調節できるよう、AVS上の並列VR制御画
面では、使用するプロセッサ数(立ち上げるスレッド数)を実時間的
に変更可能なスライドバー等が用意されており、実際にCP-PACSで
行なわれている計算負荷・PIOにおけるデータ転送負荷・並列可視
化処理の負荷等を総合的に判断して、可視化処理時間の最適化が行
なえるようになっている。
CP-PACSにおける実応用アプリケーション
これまで述べた PIO システムと柔軟な制御性を持つ並列可視化シ
ステムを総合的に使用した例として、2048台の全PUを使用した
CP-PACS実機において、128台のIOU上でのPIOサーバの稼働、16チャ
ネルの Fast Ethernet を経由した並列データ転送、ビジュアリゼー
ションサーバにおける並列データ入力及び並列可視化の全処理を、
実際のアプリケーションを対象い実行した。対象アプリケーション
は計算宇宙物理学のおける宇宙の再イオン化シミュレーション及び、
大量のアルゴン分子に対する分子動力学法シミュレーションである。
いずれも 2048台の PU から生成されるデータストリームを16本の
Fast Ethernet リンクで負荷分散しながら転送して、1秒/フレーム
程度の3次元VR及び描画を実現できた。これにより、超並列計算機
における計算結果の実時間可視化が可能であることが確認された。
宇宙の再イオン化シミュレーションを実行している際の並列可視化
システムの出力画像を図4に示す。この例では、再イオン化の進行
の様子が確認できるように、輻射が一方向のみから入射した場合を
扱っている。これは全ての方向からの入射を取り扱う現実的なシミュ
レーションの第一歩であると同時に、素過程の解析に役立っている。
図9:並列ボリュームレンダリングを用いた出力例
並列入出力・可視化システムに戻る
未来開拓のトップページに戻る