クラスタコンピュータを
メモリ資源として利用する
ソフトウエア分散共有メモリ技術とその応用
-情報科学科
緑川博子
第3回 私立大学戦略的研究基盤形成支援事業シンポジウム
2010年 5月15日
概要
•
背景
–
分散メモリシステムと共有メモリシステム
–
クラスタコンピュータの台頭
–
ネットワークの高性能化
–
並列プログラミングモデル
•
ソフトウエア分散共有メモリ
(SDSM)とは
•
研究紹介
–
ソフトウエア分散共有メモリシステム
SMS
–
並列プログラミング環境、並列言語
MpC
–
逐次処理用の分散大容量メモリ
DLM
スーパーコンピュータ世界の
Top500
におけるコンピュータアーキテクチャの変遷
Top 500 list of Supercomputers
世界トップ500スーパーコンピュータリストにおける
クラスタコンピュータの占める割合の変遷
Top 500 list of Supercomputers
(http://www.top500.org)
日本の学会誌おける最初のクラスタの紹介
並列コンピュータシステム
メモリアーキテクチャによる分類
分散メモリコンピュータ
共有メモリコンピュータ
SMP
Symmetric Multiprocessor
密結合
疎結合
クラスタ
cluster
CPU間通信高速、CPU数に制限
CPU間通信低速、CPU数増やせる
ネットワーク結合
CPU
メモリ
バス結合
CPU
CPU
メモリ
CPU
メモリ
CPU
メモリ
CPU
ネットワークの性能向上
1990年代には100倍の性能向上
最近
10年でも20 50倍の性能向上
(KHUQHW 0ELWVHF )DVW(KHUQHW 0ELWVHF *LJDELW(KHUQHW 0ELWVHF*ELWVHF $70 *ELWVHF 0\ULQHW *ELWVHF )LEHU&KDQHO *ELWVHF ,QILQL%DQG *ELWVHF;6'5 *LJDELW(KHUQHW *ELWVHF ,QILQL%DQG *ELWVHF;6'5 0\UL* *ELWVHF ,QILQL%DQG *ELWVHF;''5 *ELWVHF;6'5 ,QILQL%DQG *ELWVHF;4'5 *LJDELW(KHUQHW *ELWVHF *LJDELW(KHUQHW *ELWVHF ,QILQL%DQG *ELWVHF;('5コンピュータクラスタ
CPU
CPU
CPU
CPU
メモリ
メモリ
メモリ
メモリ
複数コンピュータをネットワーク結合�
分散メモリ並列コンピュータ�
ネットワーク�
それぞれメモリが分散しているので、�
他のノードのメモリの中にあるデータを読み書きできない�
コンピュータクラスタ
(分散メモリ並列コンピュータ)
CPU
CPU
CPU
CPU
メモリ
メモリ
メモリ
メモリ
普通のプログラムの書き方はできない�
コンピュータ同志でデータを送り合う必要がある�
メッセージパッシングプログラミングモデル
を用いる�
書き込み
読みだし
CPU
CPU
メモリ
共有メモリプログラミングモデルを使って�
プログラムは簡単に書ける�
data
バス
共有メモリ並列コンピュータ
a = 10
b = a
データ書き込み
データ読み込み
並列プログラムの書き方のモデル
CPU間のデータ交換方式で分類
すると2種類
1. メッセージパッシング プログラミングモデル
データのメッセージの送受信文で記述
(記述例:
send p0 a; receive p1 b; )
MPI (標準的なプログラミングインターフェース)
2.
共有メモリプログラミングモデル
共有データへの読み書き、代入文で記述
(記述例:
b=a; )
並列プログラミングモデル
メッセージパッシングモデル
P0
P1
int a; int a;
a=10;
send P1 a; recv P0 a;
共有メモリモデル
P0
P1
int a;
a=10;
局所データ
a
しかない
データ送受信
共有データ
a
がある
同じデータで
も送受信が
必要
更新した値は
自動的に
全員に見える
並列プログラミングモデル
2変数使用時,bへのaの代入
メッセージパッシングモデル
P0
P1
int a=10; int b
send P1 a; recv P0 b;
共有メモリモデル
P0
P1
int a=10; int b;
b=a;
局所データ
a,b
データ送受信
データ送受信文
大域データ
データ代入文
a,b
データ代入文
プログラム
が煩雑で、
見にくい
分散メモリ
あたかも一つのメモリであるかのようにみせかける�
分散共有メモリ
コンピュータクラスタ
CPU
CPU
CPU
CPU
メモリ
メモリ
メモリ
メモリ
SMS
(ソフトウエア分散共有メモリ
SDSM
)
CPU
CPU
CPU
CPU
メモリ
メモリ
メモリ
メモリ
従来のプログラムと同じようなプログラミングが可能�
ソフトウエア分散共有メモリ�
概要
•
背景
–
分散メモリシステムと共有メモリシステム
–
クラスタコンピュータの台頭
–
ネットワークの高性能化
–
並列プログラミングモデル
•
ソフトウエア分散共有メモリ
(SDSM)とは
•
研究紹介
–
ソフトウエア分散共有メモリシステム
SMS
–
並列プログラミング環境、並列言語
MpC
–
逐次処理用の分散大容量メモリ
DLM
概要
•
背景
–
分散メモリシステムと共有メモリシステム
–
クラスタコンピュータの台頭
–
ネットワークの高性能化
–
並列プログラミングモデル
•
ソフトウエア分散共有メモリ
(SDSM)とは
•
研究紹介
–
ソフトウエア分散共有メモリシステム
SMS
–
並列プログラミング環境、並列言語
MpC
–
逐次処理用の分散大容量メモリ
DL
P0
PCノード0
P1
P2
PCノード1
PCノード2
プロセスが協調してジョブを実行(メタプロセス)
プロセス
PCクラスタ
並列処理(ジョブ)とプロセスの関係
汎用ネットワーク
並列処理ジョブ(メタプロセス)
local
...
プロセスP1
プロセスP0
global
local
shared
global
Shared変数と階層データスコープ
一つのジョブを協力して行う
プロセス全体から読み書きできる
データのカテゴリを追加した
共有メモリプログラミングモデル
MpC言語
メタプロセスモデルを実現するための言語
• C言語に最小限の拡張を施した言語
• 共有データ型 shared
記憶クラス指定子に追加
auto|register|static|extern|typedef|
shared
• データ分散割付指定
を導入した拡張C言語
分散共有メモリプログラミングモデル
並列言語
MpC
P0
shared int a;
int b;
main( ){
int c=10;
a=20;
}
P1
shared int a;
int b;
main( ){
int c=10;
b=a;
}
PCクラスタのような
分散メモリコンピュータ
でも、
共有メモリモデル
でプログラムが書ける
ネットワーク
MpCプログラム
SMSプログラム
pthreadプログラム
コンパイルコマンド例
mpcc
prg.mpc -osms_prog –use sms
MpCプログラム
実行プログラム
共有メモリ並列マシン用
pthreadプログラム
Cプログラム
MpCトランスレータ
Cコンパイラ
実行プログラム
クラスタ用
SDSMプログラム
SDSM用のライブラリ
SMS, TreadMarks, JIAJIA
pthreadライブラリ
MpC コンパイラ
MpC
コンパイラ
floyd : Shortest path search
node memory 128MB
クラスタにおける性能評価
MpC vs. OmniOpenMP (Score : RWCプロジェクト)
MpCは,他の共有メモリモデル (OmniOpenMP)に比べ, 実行時間が短い(高速)! 2倍の速度をもつノード間通信 (Myrinetで高速PM通信)を 用いた場合に比べても速い! クラスタのノード間通信 1GbpsのEthernet および2GbpsのMyrinet2000 の場合の実行時間の比較H. Midorikawa, et al.: "The Performance Analysis of Portable Parallel Programming Interface MpC for SDSM and pthread", Proc. of IEEE/ACM Inter. Symp. on Cluster Computing and the Grid (CCGrid2005) ,Vol.2, pp.889-896
実行時間
(s
ec
)
ep
laplace
実行時間
(s
ec
)
実行時間
(s
ec
)
プロセス数(ノード数)
プロセス数(ノード数)
mm(nonblocking)
mm(blocking)
実行時間
(s
ec
)
実行時間
(s
ec
)
プロセス数(ノード数)
プロセス数(ノード数)
MpCは,
いずれのベンチマークに
おいても高速!
H. Midorikawa, et al.: "The Performance Analysis of Portable Parallel Programming Interface MpC for SDSM and pthread", Proc. of IEEE/ACM Inter. Symp. on Cluster Computing and the Grid (CCGrid2005) ,Vol.2, pp.889-896, (2005) 緑川他: “メタプロセスモデルに基づくポータブルな並列プログラミングインターフェースMpC”, 情報処理学会論文誌コンピューテイングシステム,Vol.46 No.SIG4(ACS9), pp.69-85,(2005)
NPB3.0の複数のベンチマークプログラムの
逐次プログラムに対する
各種
API(言語)で書かれた並列プログラムの平均有効行数増加率
逐次プログラムに比べ、 MpCは,プログラム行数が 7%程度しか増加しない より簡単に記述が可能! メッセージパッシングモデル は逐次プログラムに比べ、 74%もプログラム行数が増加概要
•
背景
–
分散メモリシステムと共有メモリシステム
–
クラスタコンピュータの台頭
–
ネットワークの高性能化
–
並列プログラミングモデル
•
ソフトウエア分散共有メモリ
(SDSM)とは
•
研究紹介
–
ソフトウエア分散共有メモリシステム
SMS
–
並列プログラミング環境、並列言語
MpC
–
逐次処理用の分散大容量メモリ
DLM
• 64bitOSの普及⇒ 巨大アドレス空間が利用可能
(
x86_64 現実装 → 48bitアドレス 256TB)
大規模データを利用する応用に恩恵
(バイオインフォマティックス、データベース、新応用)
48bit (256tebibytes)
56bit (64pebibytes)
64bit (16exbibytes)
動機大きなアドレス空間を活かす
大規模データ処理への期待
DLM
( Distributed Large Memory)
ランタイムシステムの構成
Memserv Process Memserv Process Cal Process Cal Thread Com Thread Memserv Process memhost2 memhost1:
memhost3 calhostメモリサーバーホスト
計算ホスト
calhost 2048 // 2GB
memhost1 8192 // 8GB
memhost2 4096 // 4GB
memhost3 4096 // 4GB
memhost4 4096 // 4GB
:
設定ファイル例:
hostfile
コマンド実行例
usr_prog args -- -n 4 –f
hostfile
DLMページサイズ : OS管理ページサイズの整数倍の自由な値
DLMページサイズ
DLM プログラム例1
(行列ベクトル積
matv.c)
#include <stdio.h> #include <dlm.h>
#define N 16384 // total memory 231B + 215 B, 約2GiB
dlm double a[N][N], x[N], y[N]; // DLM使用
int main(int argc, char *argv[]) { int i,j;
double temp;
// 行列aを初期化
for ( i = 0; i< N; i++)
for ( j = 0; j<N; j++) a[i][j] = i; // ベクトルxを初期化 for (i = 0; i < N; i++) x[i] = i; // a[N][N]*x[N]=y[N] 計算 for(i = 0; i < N; i++){
temp = 0;
for(j = 0; j<N; j++) temp += a[i][j]*x[j]; y[i] = temp; } return 0; }
dlm宣言
宣言されたデータはローカルメモリが
足りない時、遠隔メモリに展開される
DLM宣言しないデータは
従来通りローカルメモリ
のみが使用される。
従来同様、ユーザは逐次プログラム
を書くだけ!
実際には並列プログラム
(計算プロセス+メモリサーバプロセス)
として稼働
コンパイルコマンド例
dlmcc
matv.c -omatv
性能評価実験環境
10GbEthe結合クラスタ
10GbEther結合クラスタ(CSLM) (swap領域 10GB)
Cluster HP DL585 G2 x 5 Nodes
Node CPU Opteron 2.8GHz x 4 (8Cores)
Node Memory 64GByte(64GiB)
PCI bus 64bit/100MHz PCI-X, PCI-Expressx4 PCI-Expressx8
OS Linux kernel 2.6.9-42 x86_64
Compiler gcc version 3.4.6
Network 10GbEthernet protocol
NIC Myri-10G
Switch Fujitsu XG1200(10GbE Switch)
Hard Disk
SAS 147GB 10krpm 2台RAID1 Smart array 5i HP 431958-B21 (SAS 147GB, 10krpm,
TransRate 300MBps, seektime 4(Ave),8.1(Max)ms)
CSLM: 理化学研究所 次世代計算科学研究開発プログラム所有のクラスタ
op4 6000 // 60GB
op3 6000
hostfile
通信方式
TCP socket 使用
SwapDisk使用時に対するDLM速度向上比
10GbEthernet結合, 64GBMemory,10GBswap領域
行列ベクトル積
matv.c
67.1GB 64GiB速度向上比1
物理メモリちょうどくらいで、
DiskとDLM(2台)は同等性能
物理メモリに対するswap使用比が 15%程度で, DLM性能はハードディスク使用時性 能の10倍を超える 物理メモリに対する swap使用比が3%程 度でも, DLM性能は 3倍高い 緑川他:“分散大容量メモリシステムDLMの設計とDLMコンパイラの構築”, 信学技報 Vol.102, No.398, pp.29-34, 2007SwapDisk使用時に対するDLM速度向上比
1GbEthernet結合, 1GBMem, 4GBswap
行列ベクトル積
matv.c
物理メモリに対するswap使用比が 160%程度で, DLM性能は9.5倍高速 物理メモリに対するswap使 用比がそれ以上になると DLM性能は4.5∼5.5倍高速 緑川他: “分散大容量メモリシステムDLMの設計とDLMコンパイラの構築”, 信学技報 Vol.102, No.398, pp.29-34, 20070 50 100 150 200 250 300 350 400 1024 512 256 128 64 32 16 8 4 Ra te M B /s ec DLM Page Size (KB)
Array Size:100M (2.4GBytes) 8% LocalMemory/Total memory Copy Scale Add Triad
DLM利用時の 遠隔メモリバンド幅
(STREAM Benchmark)
380MB/sec
~ 40MB/
sec
DLM ページサイズ
1MB ~ 4KB
他の研究:
ネットワークブロックデバイス
によるスワップデバイス交換方式
• Panda[2005]らの研究
InfiniBand,RDMA,メモリ登録
119MB/s
• 後藤ら[2006]の研究
10Gb Ethernet,専用NIC,RDMA
131MB/S∼204MB/s
特殊な通信方式やハードウエアを用いた従来研究に比べ, ユーザレベルソフトウエアと汎用通信プロトコルのみで、 DLMは、他研究より高速!最悪時でも
35倍の実行時間
(
DLMページサイズ 4KBのとき)
後藤ら
[2006]の研究(10GbE,専用NIC,RDMA):
ローカルメモリ率17%で
55倍低下(ページサイズ128KB)
通常プログラム
(ローカルメモリのみ使用
)
に対する
DLMプログラム
(遠隔メモリも使用)
の相対実行時間
Himeno Benchmark(Large)
ローカルメモリ
が全データの
8%
であっても
DLMページサイズ1MB
で
5
倍の実行時間ですむ
H.Midorikawa et al. : "DLM: A Distributed Large Memory System using Remote Memory Swapping over Cluster Nodes", Proc. of IEEE Cluster2008 pp.268-273, (2008-09)
緑川他:"遠隔メモリを利用する分散大容量メモリシステムDLMの設計と10GbEthernetにおける初期性能評価", 情報処理学会論文誌コンピューティングシステム, Vol.1, No.3, pp.136-157(2008) DLM利用により, 5倍程度の実行時間低下で, 10倍以上のメモリサイズが利用可能 ユーザレベルソフトウエアと 汎用通信プロトコルのみで、 DLMは、他研究より高速!
DLM-MPI
汎用オープンクラスタ向けシステム
• MPIバッチキューイングシステムで利用可能なDLM
– 可搬性,可用性 の向上
– 高性能なクラスタを、少ない資金で多くの人が手軽に利用可能
(従来、クラスタに縁のない逐次プログラムユーザにも恩恵)
– 通信媒体から独立な通信方式 MPI を採用
(様々なネットワーク:
Ethernet, InfiniBand, Myrinet
などでも利用可
)
オープンクラスタ
2システムで稼働実験済み
– T2K-Tokyo (ノード間 Myri-10G x 4本 40Gbps)
– T2K-Tsukuba (ノード間 InfiniBand 64Gbps)
!"#䉲䊮䊘䉳䉡䊛䈧䈒䈳"$$%
!"#$%&'($)*&'+,-.&*/'+
᧲੩ᄢቇ᭴ᚑ 䋨ᣣ┙䋩
!"#䉲䊮䊘䊘䊘䊘䊘䊘䊘䊘䊘䊘䊘䊘䉳䉡䊛䈧䈒䈳"$$%!"#$%&' ! ()*
+,&-.
! /01234$,'
5&6$78 ! 9/"2:
3;44<:='&>?=$# @#?&7>$##&>? A$7"/*B"#$%&'C D01E:F'&>"G"/"H 9*1E:F'&>"G"9 3;44<:='&>?=$#"@#?&7>$##&>? A$7")/*"#$%&'C"*I)2:F'&> J?$7-K&"J8'?&6 /"L:M""/)E:F'&>インターコネクト
Myri-10G x 4本 /node
Node間 40Gbps x双方向
4CPUs(16コア)/node
(AMD Opteron8356)メモリ
32GB/node
8nodes メモリ 128GB/node
Top500 45位 (日本3位) Nov. 2009
システム図:朴泰祐:T2Kシンポジウムつくば2008 資料 http://www.ccs.tsukuba.ac.jp/workshop/t2k-sympo2008/Kernel Code
STREAM
COPY a(i) = b(i)
SCALE a(i) = q*b(i)
ADD a(i) = b(i) + c(i)
TRIAD a(i) = b(i) + q*c(i)
DLM-MPI: MPI-MX
493MB/s (Myri-10G x2)
613MB/s(Myri-10G x4)
DLM-socket: TCP/IP
EthernetonMyri-10G x 1
380MB/s
DLM Himeno benchmark
さらに大きなサイズでも稼働
XLARGE (
112GB
) 179.4MFLOPS,
Relative Time 2.32 ( based on the time in Elarge,15GB)
float 1025 x 1025 x 2049
20GB/node x
6 nodes
Local memory ratio
17.4%
Bonding = 4
XLARGE-d (
241GB
)88.8 MFLOPS,
Relative Time
4.68
( based on the time in Elarge,15GB)
double1025 x 1025 x 2049
20GB/node x
12nodes
Localmemory ratio
8.1%
!"#$%&'($)*&'+,-.&*/'+
╳ᵄᄢቇ᭴ᚑ
01&&+- 2$3+45$64&4(7
!"#$%&' ! ()* +,&-. ! /0"123$,' 4&5$67 ! 89"1: ;<$6-=&";7'<&5 *99"1:>""?8@:A'&B 2C33D:E'&B<E$#"F#<&6B$##&B< 0G8"1:A' 4&5$67 ! 89"1: 2C33D:E'&B<E$#"F#<&6B$##&B< 0G8"1:A'インターコネクト
InfiniBand
4x DDR 4本 /node
Node間 64Gbps x双方向
4CPUs(16コア)/node
(
AMD Opteron8356)
メモリ
32GB/node
Top500 56位 (日本6位)Nov. 2009
システム図:朴泰祐:T2Kシンポジウムつくば2008 資料 http://www.ccs.tsukuba.ac.jp/workshop/t2k-sympo2008/DLM-M
マルチクライアント向け
DLM
( メモリーサーバプロセス常駐型 )
– 計算プロセス
• 計算スレッド(クライアント)
• 通信スレッド
– メモリサーバ
• サーバメインプロセス
• 複数の処理プロセス
– ノード間通信
• ネットワークに汎用の
TCP/IPソケットを利用
計算プロセス 計算 スレッド 通信 スレッド 計算ノード2 計算プロセス 計算 スレッド 通信 スレッド 計算ノード1 メモリ サーバ プロセス 処理プロセス メモリ サーバ プロセス 処理プロセス メモリ サーバ プロセス 処理プロセス メモリサーバ1 メモリサーバ2 メモリサーバ3 2 2 2 1 1 1 ユーザの実行する プログラム計算プロセス 計算 スレッド 通信 スレッド 計算ノード1 管理 プロセス 管理ノード 計算プロセス 計算 スレッド 通信 スレッド 計算ノード2 処理プロセス メモリサーバ1 1 状況報告 スレッド メモリサーバ スレッド 処理プロセス メモリサーバ2 1 2 状況報告 スレッド メモリサーバ スレッド 処理プロセス メモリサーバ3 2 状況報告 スレッド メモリサーバ スレッド メモリサーバ プロセス メモリサーバ プロセス メモリサーバ プロセス
自動メモリサーバ割り付け
DLM fora Cluster on LAN
負荷分散、ユーザ利用環境の向上
Clients
WAN
WAN結合クラスタ群
InTrigger
http://www.intrigger.jp/
• オープンコンピュータシステム群
– インタラクティブな利用環境
– ユーザアカウント共通
– WAN環境(
全国
17大学サイト, 21 クラスタ
) 2010年5月現在
構成図2008年6月現在 (11組織 319ノード/848コア)
田浦: Intrigger : オープンな情報処理・システム研究プラットフォーム ,Client User
User Program