PC クラスタ潜在性能を
引き出すためには?
2000年2月18日(金)
第2回ソフテッククラスタセミナー
Agenda
• ソフテックPC クラスタの紹介 • クラスタシステムの性能 • 最適な線形計算ライブラリの利用 • 最適なクラスタ間通信ソフトウェアの利用 • ベンチマークによる最適化クラスタシステムの性能 評価 • まとめ今が「旬」な
Linux OS
• ライセンス費用の負担がほとんどない • UNIX互換のOSである • ソースが公開され、カーネルのカスタマイズが可能 • フリーソフトウェアが充実 • 商用ソフトウェアもLinux対応版が増えてきた • 主要ハードウェアベンダがLinuxを正式サポート 今がまさに「旬」なOSであり、皆が興味を持っているHPC分野における計算機事情
• 1世代前は、高性能プロセッサを搭載していたベ クトル型スーパーコンピュータが主流。
l 高性能化した汎用プロセッサを多数搭載した超
Beowulf タイプのPCクラスタ
• 一般的に入手可能な部品で構成できる(PC) • PCのCPU(PentiumⅢ)でもその性能は型落ち スパコンレベル • 安価でクラスタを構成することが可能かつ、価格性 能比が非常に高いシステムを容易に構築できる Beowulf: ベオウルフと読みます。 カリフォルニア工科大学の研究者で、NASAのゴダート宇宙センターの研究者であるTomas Sterling氏 とDonald Becker氏の2名が提唱したプロジェクト名で、一般に入手可能な製品を組み合わせて、コスト パフォーマンスの高い複数台のコンピュータ(PCクラスタなど)を形成し、スーパーコンピュータ並の計算 性能を出せるように、最適化したシステムを総称する言葉として使われています。 さらに並列対応の開発環境、通信ライブラリ、並列対応数値計算ライブPCクラスタへの疑問・不安
• 本当に実用的な並列処理ができるのか? • 既存のアプリケーションが正しく動作するのか? • 本当に性能が出るのか? • ハードウェアの組み立て・OS設定が面倒では? ユーザーの希望していることは単純明快「本当に使えるクラスタシステムが欲しい
!!」
ソフテックの提供する
Linux Cluster システム(1)
l l Level 1: Level 1: ソリューションのご提供(フルセット)ソリューションのご提供(フルセット) – ハード・OS・通信ミドルウェア・開発ツール – 導入、運用支援 – 基本的な並列計算に関わるテクニカルサポート l l Level 2: Level 2: ソフトウェア・技術提供サービスのご提供ソフトウェア・技術提供サービスのご提供 – ハードはユーザーが選択 – 通信ミドルウェア・開発ツールを提供 – 並列計算に関わるテクニカルサポートユーザーの使用用途、アプリケーションの特性を ヒアリングし、最適なシステム&ソリューションを ご提案します ユーザーの使用用途、アプリケーションの特性を ヒアリングし、最適なシステム&ソリューションを ご提案します
ソフテックの提供する
Linux Cluster システム(2)
l l Level 3: Level 3: 高効率な並列計算高効率な並列計算((処理処理))を実現する技術を実現する技術 のご提供 のご提供 – ユーザーは、既存のマシンを利用 – 通信ミドルウェア・開発ツールも既存品を利用 – 並列計算(処理)に関わる最適化実現のためのコンサル テーション導入事例
(国立大学 大学院研究室 ) SofTek PC Cluster 1350 SofTek PC Cluster 1350--324324 (24 node) (24 node) Spec Spec CPU: Pentiumlll 500MHz * 24 RAM:12GBNetwork: Fast Ethernet(100BaseTX) Peak Performance: 13.6GFlops OS: LASER5 Linux6.0 (kernel 2.2.5) Compiler: PGI CDK
Programming Model: C/C++, F77,f90,HPF
クラスタシステムの性能
• Beowulf type クラスタシステムの導入は確かに 簡単であり、それなりの性能も得ることが可能 • 更に性能向上を図ることが可能であるか? • 性能向上の妨げとなる要因を特定し、改良を加 えることが性能向上のために不可欠 1. メモリアーキテクチャ、特にキャッシュメモリの活用 2. クラスタ間通信のオーバヘッドの低減メモリアーキテクチャの重要性
Memory Cache Processor Onchip Cache Processor Memory フォン・ノイマン・ボトルネック =メモリからのデータ供給 データ授受のbottleneck 16K-32KB 128K∼4MB キャッシュの活用 演算能力に見合う だけのデータ供給 ができないキャッシュの効果(
一時キャッシュ)
0 20 40 60 80 100 120 140 160 0 4 8 12 16 20 24 28 32 データサイズ (KB) Mflop/s 1st Cache=16KBの時 急激に性能低下 Pentium II 300MHzキャッシュの効果(
二次キャッシュ)
0 10 20 30 40 50 60 70 80 90 100 0 128 256 384 512 640 768 896 1024 1152 データサイズ(KB) Mflop/s 急激に性能低下 2nd Cache=512KB Pentium II 300MHz キャッシュ外• キャッシュミスが増加するようなメモリ参照パター ンの排除 • キャッシュに収まり切れないデータサイズの参照 の排除 • 科学技術計算などでは、性能に大きな影響を及 ぼす、計算ライブラリ等がキャッシュを考慮する 必要がある
キャッシュを生かすシステム
Linpack LAPACK ScaLAPACK PBLAS BLACS PVM/MPI.. BLAS BLAS Opt. BLAS 1CPU 1CPU/SMP 分散メモリ型 ATLAS
ASCI-Red Parallel BLAS
Basic Linear Algebra Communication Subprogram 分散メモリ並列対応 機能の標準化 共通のI/Fの提供 性能は? サブルーチン群の 性能最適化を考慮 Block Algorithm 性能最適化
Basic Linear Algebra Subprogram
通信系のI/F
Cache最適化
V V V + * M V * V M M M M * + Level 1 BLAS Vector-Vector Operations Level 2 BLAS Matrix-Vector Operations Level 3 BLAS Matrix-Matrix Operations S
BLAS Level毎の特性
Level 1 BLAS y = y + s * x Operation Level 2 BLAS y = y + A* x Operation Level 3 BLAS C = C + A*B Operation Memory
参照回数 演算回数(FLOP) FLOPs/MemRatio
3n 2n 2/3
n
22n
22
4n
22n
3n/2
メモリ参照の回数を減らすことが重要 大きいほど 性能最適化 が可能 キャッシュ内 での演算の可 能性が高くなるBLASの計算、性能特性の関係
50 100 150 200 250 100 200 300 400 500 MFLOPS Level 3 BLAS Level 2 BLAS Level 1 BLAS
BLASの性能(予測値)
PentiumIII 500MHz を仮定Matrix Size (N x N)
Source+ATLAS(BLAS) Source coding Source+BLAS
1CPU性能:PentiumIII (500MHz) 0 50 100 150 200 250 300 350 0 100 200 300 400 500 600 700 800 900 1000 1100 1200 1300 1400 1500 1600 1700 1800 1900 2000 Mflop /s LAPACK (BLAS 3) Linpack (BLAS1) ATLAS BLAS Normal BLAS ASCI-Red BLAS
LU分解の性能(Linpack &LAPACK)
PGI compiler使用まとめ(
線形計算ライブラリ)
• Linpack : Level 1 BLASを使用
: ユーザのCoding Styleに近い : Cache外アクセスで性能劣化
• LAPACK : Level 3 BLASを使用
: Block algorithmによりCache内
アクセスの確率が増すが、限界あり
BLASのCache最適化の必要性
• ATLAS (Automatically Tuned Linear Algebra Software) [1] • ASCI-Red BLAS[2]
BLASのCache最適化の必要性
• ATLAS (Automatically Tuned Linear Algebra Software) [1]
通信の重要性
• クラスタシステムにおける通信は、クラスタの性 能に多くの影響を及ぼす
• 通信において必要な性能指標
– latency small messagesの通信に係る
– throughput large messagesの通信に係る
– scalability compute nodeの数に係る
• コストをかければGigabit級の通信デバイスも利 用可能だが、コストに見合う性能が出せるのか?
TCP/IPベースの通信の現状(1)
• Socket I/F及びTCP/IP プロトコルは、プロトコル 処理とインタフェース処理がマルチレイヤレベル で行われ、プロトコル処理においてはwindowに 基づくフロー制御を行っているため、パケットの ack及びcheck sum処理に多くのCPUを消費する • TCP/IPスタック上の一連の処理を効率的に行う ため、カーネルバッファ領域を使用したデータチェ インニングを絶えず行うため、メモリ管理(mbuf) が複雑であり、特にスモールTCPパケットの処理 は、多くのCPUリソースを使用する• パケットのMTU(Ethernet:1500byte)が小さい
ためにlarge packetに対しては、OS interrupt
のオーバヘッドが生じる
• ユーザ領域とカーネル領域間のデータコピー処
理に多くの時間を消費する
IP処理 Program USER Space Kernel Space NIC Data Link処理 ユーザメモリ領域 カーネルメモリ領域 Memory Copy Packet Xfer TCP/UDP +header+Descripter 作成 system call NICメモリ領域 割込み オーバヘッド Program 通信処理 ユーザメモリ領域 カーネルメモリ領域 Packet Xfer system call NICメモリ領域 専用ドライバ ポーリング TCP/IP 専用通信
通信オーバヘッドの低減
カーネルを経由しないユーザレベル通信によって 通信オーバヘッドを回避できる!提案されている通信ソフトウェア
• 低遅延通信ソフトウェアの実装必要要件 – 複数の処理に対して物理的なネットワーク(NIC)を共 有できること – 同時に複数のプロセスでネットワークを使用する状況 において、それぞれをプロテクトできること – カーネルオーバヘッドを削減すること – ユーザ標準APIを提供できること• M-VIA (Linux用VI Architectureの実装) • GAMMA (Linux用Active Messageの実装)
M-VIA, GAMMA共に上位ソフトウェアとしてMPIを提供
M-VIA
(A High Performance Modular VIA for Linux)[3]• VI Architecture に完全準拠
• 独自APIによる低通信レイテンシ、高スループット を実現
• 対応NIC:DEC Tulip (DC21*4*, 21143含む) chip, Intel i8255x (for x=7, 8 or 9) chip,
Packet Engines GNIC-I, GNIC-II Gigabit Ethernet
MVICH
[4] • VI Architecture上で動作可能なMPI • 現在MPICH 1.1.2に対応 • 現在初期バージョン(0.0.3)のリリースのため、 bsend, pack/unpack等が使えない制限あり • M-VIAと同様に低通信レイテンシ、高スループッ トを実現性能比較 (
通信レイテンシ)
0 50 100 150 200 250 300 0 128 256 384 512 640 768 896 1024latency (1/2 Round Trip Time) (μs)
MPICH socket(TCP) MVICH M-VIA
128byteでMPICH と比べMVICHは 1.9倍の高速化
評価環境:Pentium III 500MHz×2, Memory 384MB, Intel EtherExpress Pro/100 NIC, 100Base Switching Hub, Linux 2.2.13
性能比較 (
通信スループット)
0 2 4 6 8 10 12 32 64 128 256 512 1K 2K 4K 8K 16K 32K 64K 128K 256Kmessage size (byte)
Througput (Band width) (Mbyte/s)
MPICH socket(TCP) MVICH(M-VIA) M-VIA 4KbyteまでMPICHと 比べMVICHは平均34%、 最大139%(32byte)の スループット向上
GAMMA
(Genoa Active Message Machine) [5] • “communication handlers” という低レベルのネッ トワークデバイスへのアクセス機能を、ユーザプ ログラムで扱える Active Messages [7]ライブラリを 提供 • 独自APIによる低通信レイテンシ、高スループット を実現 • 対応NIC:DEC Tulip (DC21*4*, 21143含む) chipsets, Intel i8255x (for x=7, 8 or 9)MPI/GAMMA
[6]• GAMMA上で動作可能なMPI • 現在MPICH 1.1.2に対応
• Fast Ethernetを用いたMPIの中で現在最良の性 能(低通信レイテンシ、高スループット)を発揮
0 50 100 150 200 250 300
latency (1/2 Round Trip Time) (μs)
MPICH socket(TCP) MPI/GAMMA GAMMA
評価環境:Pentium III 500MHz×2, Memory 384MB, DEC DC21143 NIC, 100Base Switching Hub, Linux 2.2.13
128byteでMPICH と比べMPI/GAMMA は3.1倍の高速化
0 2 4 6 8 10 12 32 64 128 256 512 1K 2K 4K 8K 16K 32K 64K 128K 256K
message size (byte)
Througput (Band width) (Mbyte/s)
MPICH socket(TCP) MPI/GAMMA GAMMA 8KbyteまでMPICHと 比べMPI/GAMMAは 平均49%、最大404% (32byte)のスループット 向上
性能差 (
通信スループット)
0 50 100 150 200 250 300 0 128 256 384 512 640 768 896 1024
message size (byte)
latency (1/2 Round Trip Time) (μs)
MPICH socket(TCP) MVICH M-VIA MPI/GAMMA GAMMA
総合性能比較 (
通信レイテンシ)
IPレイヤを介さない通信ソフトウェアで低レイテンシを実現 IPレイヤを介さない通信ソフトウェアで低レイテンシを実現0 2 4 6 8 1 0 1 2 32 64 128 256 512 1K 2K 4K 8K 16K 32K 64K 128K 256K m e s s a g e s i z e ( b y t e )
Througput (Band width) (Mbyte/s)
M P I C H socket(TCP) M V I C H ( M - V I A ) M - V I A M P I / G A M M A G A M M A IPレイヤを介さない通信ソフトウェアで高スループットを実現 IPレイヤを介さない通信ソフトウェアで高スループットを実現
総合性能比較 (
通信スループット)
まとめ
(通信)
• Fast Ethernetベースの通信においても、適切な通 信ソフトウェアの利用で、通信性能向上が可能 • 通信のAPIとしてMPIが汎用的に使用可能 • GAMMA、MPI/GAMMAを用いるとFast Ethernet の持つ最大性能近くまで、性能を発揮できる • 特にメッセージサイズが小さい時に、通信レイテン シを大幅に減少可能(Gigabit級の通信デバイス に匹敵) コモディティなFast Ethernet ベースの通信は コモディティなFast Ethernet ベースの通信は• ScaLAPACK(ScalLable Linear Algebra PACKage) は、線形計算ライブラリLAPACK の並列版 • PGI CDKで提供されるScaLAPCKを用いた並列計 算機向けLU分解プログラムxdlutime [8]を利用 • Pentium III用にATLASを用いて最適化された BLAS及び、ASCI-Red BLASを適用 • ScaLAPACKの下位で呼び出されるMPIとして、 MPICH(p4)及び、MPI/GAMMAを適用 • 台数効果及び、BLASの違い、MPIの違いによるク ラスタ性能を測定
ScaLAPACKを用いたクラスタ性能測定
評価環境
• Pentium III 500MHz×4, Memory 256MB, DEC
DC21143 NIC, 100Base Switching Hub, Linux 2.2.13 • 各ノード(CPU)への行列の割り当て:2×2 • 1回当たりの計算単位:64×64のブロック N N cpu1 cpu2 cpu3 cpu4 64 64
ScaLAPACK 性能比較(台数効果)
0 100 200 300 400 500 600 700 800 900 0 500 1000 1500 2000 2500 3000 3500 4000 4500 matrix size Mflop/s 1cpu- Normal-BLAS 1cpu-Atlas 1cpu-ASCI 2cpu-Atlas-p4 2cpu-ASCI-p4 4cpu-Atlas-p4 4cpu-ASCI-p4 Matrix size 2000 ASCI-red, MPI/GAMMAcpu Mflop/s scalability
1 284 1
2 448.65 1.6
ScaLAPACK 性能比較(通信による差異)
0 100 200 300 400 500 600 700 800 900 Mflop/s 1cpu-ASCI 2cpu-ASCI-p4 2cpu-ASCI-gm 4cpu-ASCI-p4 4cpu-ASCI-gm ASCI-MPICHと比べ ASCI-MPI/GAMMAは 平均4%、最大79% (size 100)の性能向上性能差の同定
1(性能デバッガ利用例)
VAMPIR&VAMPIRtraceによる性能デバッグ
MPICH