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

講習会 :MPI 基礎 2 講習会概略 開催日 : 2017 年 3 月 6 日 ( 月 ) 10:30-17: 年 3 月 7 日 ( 火 ) 10:00-17:00 場所 : 東京大学情報基盤センター 4 階 413 遠隔会義室 講習会プログラム : 3 月 6 日 ( 月 ) 1

N/A
N/A
Protected

Academic year: 2022

シェア "講習会 :MPI 基礎 2 講習会概略 開催日 : 2017 年 3 月 6 日 ( 月 ) 10:30-17: 年 3 月 7 日 ( 火 ) 10:00-17:00 場所 : 東京大学情報基盤センター 4 階 413 遠隔会義室 講習会プログラム : 3 月 6 日 ( 月 ) 1"

Copied!
229
0
0

読み込み中.... (全文を見る)

全文

(1)

第 72 回 お試しアカウント付き 並列プログラミング講習会

MPI 基礎:並列プログラミング入門」

東京大学情報基盤センター

内容に関するご質問は

hanawa @ cc.u-tokyo.ac.jp

まで、お願いします

(2)

講習会概略

開催日:

2017

3

6

日(月)

10

30 - 17

00 2017

3

7

日(火)

10

00 - 17

00

場所:東京大学情報基盤センター

4

413

遠隔会義室

講習会プログラム:

• 3

6

日(月)

• 10

00 - 10

30

受付

• 10:30 - 12:30

ノートパソコンの設定、テストプログラムの実行など(演習)

(講師:塙)

• 14:00 - 15:45

並列プログラミングの基本(座学)(講師:塙)

• 16

00 - 17

00 MPI

プログラム実習Ⅰ(演習)(講師:塙)

• 3月7日(火)

• 10

00 - 12

30

プログラミングの基礎(分割コンパイル)(演習)(講師:大島)

• 14

00 - 15

30 MPI

プログラミング実習Ⅱ(演習)(講師:塙)

• 15:45 - 17:00 MPIプログラミング実習Ⅲ(演習)(講師:塙)

講習会:MPI基礎

2

2017/3/6,7

(3)

東大センターのスパコン

2

基の大型システム,

6

年サイクル

FY 08 09 10 11 12 13 14 15 16 17 18 19 20 21 22

Hitachi SR11K/J2 IBM Power-5+

18.8TFLOPS, 16.4TB

K Peta

JCAHPC:

筑波大・

東大

Yayoi: Hitachi SR16000/M1

IBM Power-7

54.9 TFLOPS, 11.2 TB

Reedbush, SGI Broadwell + Pascal

1.93 PFLOPS

データ解析・シミュレーション

融合スーパーコンピュータ

Hitachi HA8000 (T2K) AMD Opteron

140TFLOPS, 31.3TB

Oakforest-PACS Fujitsu, Intel KNL

25PFLOPS, 919.3TB

BDEC system

50+ PFLOPS (?)

Post-K ? K computer

Oakleaf-FX: Fujitsu PRIMEHPC FX10, SPARC64 IXfx

1.13 PFLOPS, 150 TB

Oakbridge-FX

136.2 TFLOPS, 18.4 TB

Reedbush-L Pascal 1.4+PF

メニーコア型大規模 スーパーコンピュータ

Big Data &

Extreme Computing

長時間ジョブ実行用演算加速装置 付き並列スーパーコンピュータ

(4)

5 システム運用中

• Yayoi (

日立

SR16000, IBM Power7)

• 54.9 TF, 2011

11

月 〜

2017

10

• Oakleaf-FX (

富士通

PRIMEHPC FX10)

• 1.135 PF,

京コンピュータ商用版

, 2012

4

月 〜

2018

3

• Oakbridge-FX (

富士通

PRIMEHPC FX10)

• 136.2 TF,

長時間実行用(

168

時間)

, 2014

4

月 〜

2018

3

• Reedbush (SGI, Intel BDW + NVIDIA P100 (Pascal))

データ解析・シミュレーション融合スーパー コンピュータ

• 1.93 PF, 2016

7

月〜

2020

6

東大

ITC

初の

GPU

システム

(2017

3

月より

), DDN IME (Burst Buffer)

• Oakforest-PACS (OFP) (

富士通、

Intel Xeon Phi (KNL))

• JCAHPC (筑波大CCS&東大ITC)

• 25 PF, TOP 500で6位 (2016年11月) (日本で1位)

• Omni-Path アーキテクチャ, DDN IME (Burst Buffer)

2017/3/6,7 講習会:MPI基礎 4

(5)

トライアルユース制度について

安価に当センターの

Oakleaf/Oakbridge-FX, Reedbush-U/H, Oakforest- PACS

システムが使える「無償トライアルユース」および「有償トライアルユー ス」制度があります。

アカデミック利用

パーソナルコース、グループコースの双方(1ヶ月~3ヶ月)

企業利用

パーソナルコース(1ヶ月~3ヶ月)(FX10: 最大24ノード、最大96ノード,

RB-U: 最大16ノード, RB-H: 最大2ノード、OFP: 最大16ノード, 最大64ノード)

本講習会の受講が必須、審査無

グループコース

無償トライアルユース:(1ヶ月~3ヶ月):無料(FX10:最大1,440ノード、

RB- U: 最大128ノード、RB-H: 最大32ノード、OFP: 最大2048ノード)

有償トライアルユース:(1ヶ月~最大通算9ヶ月)、有償(計算資源は無償と同 等)

スーパーコンピュータ利用資格者審査委員会の審査が必要(年2回実施)

双方のコースともに、簡易な利用報告書の提出が必要

料金体系や利用条件の詳細は、以下のHPをご覧ください

http://www.cc.u-tokyo.ac.jp/service/trial/fx10.html

(6)

スパコンへのログイン・

テストプログラム起動

2017/3/6,7 講習会:MPI基礎

20

(7)

講義の流れ

1. スパコン利用の仕方

• 単純な並列プログラムの実行

2. 総和演算

(8)

Reedbush-U へログイン

Ø ターミナルから、以下を入力する

$ ssh reedbush-u.cc.u-tokyo.ac.jp -l tYYxxx

「 -l 」はハイフンと小文字のL、

「 tYYxxx 」は利用者番号(数字)

“ tYYxxx ”は、利用者番号を入れる

Ø 接続するかと聞かれるので、 yes を入れる

Ø 鍵の設定時に入れた

自分が決めたパスワード(パスフレーズ)

を入れる

Ø 成功すると、ログインができる

講習会:MPI基礎

22

2017/3/6,7

(9)

Reedbush-U のデータを PC に取り込む

Ø ターミナルから、以下を入力する

$ scp tYYxxx@reedbush-u.cc.u-tokyo.ac.jp:~/a.f90 ./

「 tYYxxx 」は利用者番号(数字)

“ tYYxxx ”は、利用者番号を入れる

Ø Reedbush 上のホームディレクトリにある ”a.f90” を、 PC のカレントディレクトリに取ってくる

Ø ディレクトリごと取ってくるには、 ”-r” を指定

$ scp -r tYYxxx@reedbush-u.cc.u- tokyo.ac.jp:~/SAMP ./

Ø Reedbush 上のホームディレクトリにある SAMP フォル ダを、

その中身ごと、 PC のカレントディレクトリに取ってくる

(10)

PC のファイルを Reedbush-U に置く

Ø ターミナルから、以下を入力する

$ scp ./a.f90 tYYxxx@reedbush-u.cc.u-tokyo.ac.jp:

「 tYYxxx 」は利用者番号(数字)

“ tYYxxx ”は、利用者番号を入れる

Ø PC のカレントディレクトリにある ”a.f90” を、 Reedbush 上のホームディレクトリに置く

Ø ディレクトリごと置くには、 ”-r” を指定

$ scp -r ./SAMP tYYxxx@reedbush-u.cc.u-tokyo.ac.jp:

Ø PC のカレントディレクトリにある SAMP フォルダを、

その中身ごと、 Reedbush 上のホームディレクトリに置 く

講習会:MPI基礎

24

2017/3/6,7

(11)

Emacs の Tramp 機能

(必要な人のみ)

• emacs

が自分のパソコンに入っている人は、

Tramp

機能により、遠隔のファイルが操作できます

• Reedbush

の秘密鍵を、

SSH

に登録します

• emacs

を立ち上げます

ファイル検索モードにします

^x ^f (^は control )

• “Find file: ” の現在のパス名部分を消し、以下を 入れます(ただし、 t ~は自分のログイン ID にする)

Find file:/ssh:tYYxxx@reedbush-u.cc.u-tokyo.ac.jp:

• パスフレーズを入れると、ローカルファイルのように

Reedbush 上のファイルが編集できます。

(12)

Reedbush における注意

• /home

ファイルシステムは容量が小さく、ログインに必要な ファイルだけを置くための場所です。

• /home

に置いたファイルは計算ノードから参照できません。ジョブの実

行もできません。

転送が終わったら、

/lustre

ファイルシステムに移動

(mv)

してく ださい。

または、直接

/lustre

ファイルシステムを指定して転送してくだ さい。

ホームディレクトリ

: /home/gt00/t002XX

• cd

コマンドで移動できます。

• Lustre

ディレクトリ

: /lustre/gt00/t002XX

• cdw

コマンドで移動できます。

2017/3/6,7 講習会:MPI基礎

26

(13)

UNIX備忘録 (1/3)

• emacs の起動: emacs 編集ファイル名

• ^x ^s

(^は

control

) :テキストの保存

• ^x ^c

: 終了

^z

で終了すると、スパコンの負荷が上がる。絶対にしないこと。)

• ^g :

訳がわからなくなったとき。

• ^k :

カーソルより行末まで消す。

消した行は、一時的に記憶される。

• ^y : ^k

で消した行を、現在のカーソルの場所にコピーする。

• ^s

文字列

:

文字列の箇所まで移動する。

• ^M x goto-line :

指定した行まで移動する。

(14)

UNIX備忘録 (2/3)

• rm ファイル名: ファイル名のファイルを消す。

• rm *~ : test.c~

などの、

~

がついたバックアップファイルを消す。使う時は 慎重に。

*~

の間に空白が入ってしまうと、全てが消えます。

• ls : 現在いるフォルダの中身を見る。

• cd フォルダ名: フォルダに移動する。

• cd .. :

一つ上のフォルダに移動。

• cd ~

:ホームディレクトリに行く。訳がわからなくなったとき。

• cat ファイル名: ファイル名の中身を見る

• make : 実行ファイルを作る

( Makefile があるところでしか実行できない)

• make clean :

実行ファイルを消す。

clean

Makefile

で定義されていないと実行できない)

講習会:MPI基礎

28

2017/3/6,7

(15)

UNIX備忘録 (3/3)

• less ファイル名: ファイル名の中身を見る (cat では 画面がいっぱいになってしまうとき)

スペースキー

: 1

画面スクロール

• / :

文字列の箇所まで移動する。

• q

終了 (訳がわからなくなったとき)

(16)

サンプルプログラムの実行

初めての並列プログラムの実行

講習会:MPI基礎

30

2017/3/6,7

(17)

サンプルプログラム名

• C言語版・Fortran 90 版共通ファイル:

Samples-rb.tar

• tar で展開後、C言語とFortran 90 言語の ディレクトリが作られる

• C/ : C 言語用

• F/ : Fortran90 言語用

• 上記のファイルが置いてある場所

/lustre/gt00/z30105 (/home

でないので注意)

(18)

並列版 Hello プログラムをコンパイルしよう (1/2)

1. cdw コマンドを実行して Lustre ファイルシステムに移 動する

2. /lustre/gt00/z30105 にある Samples-rb.tar を 自分のディレクトリにコピーする

$ cp /lustre/gt00/z30105/Samples-rb.tar ./

3. Samples-rb.tar を展開する

$ tar xvf Samples-rb.tar

4. Samples フォルダに入る

$ cd Samples

5. C 言語 : $ cd C Fortran90 言語 : $ cd F

6. Hello フォルダに入る

$ cd Hello

2017/3/6,7 講習会:MPI基礎

32

(19)

並列版 Hello プログラムをコンパイルしよう (2/2)

6. ピュアMPI用のM a k efile をコピーする

$ cp Makefile_pure Makefile

7. make する

$ make

8. 実行ファイル (hello) ができていることを確認 する

$ ls

(20)

Reedbush-U スーパーコンピュータシステム でのジョブ実行形態

以下の2通りがあります

インタラクティブジョブ実行

PCでの実行のように、コマンドを入力して実行する方法

スパコン環境では、あまり一般的でない

デバック用、大規模実行はできない

• Reedbush-U

では、以下に限定

1ノード(36コア)(30分まで)

• 4

ノード(

144

コア)(

10

分まで)

バッチジョブ実行

バッチジョブシステムに処理を依頼して実行する方法

スパコン環境で一般的

大規模実行用

• Reedbush-U

では、最大

128

ノード(

4,608

コア)

(24

時間

)

2017/3/6,7 講習会:MPI基礎

34

※講習会アカウントではバッ

チジョブ実行のみ、最大

8

ノードまで

(21)

インタラクティブ実行のやり方

• コマンドラインで以下を入力

• 1 ノード実行用

$ qsub -I -q u-interactive -l select=1 -l walltime=01:00 -W group_list=gt00

• 4 ノード実行用

$ qsub -I -q u-interactive -l select=4 -l walltime=01:00 -W group_list=gt00

※インタラクティブ用のノードがすべて使われている場合、

資源が空くまで、ログインできません。

※講習会アカウントでは使えません。

(22)

コンパイラの種類とインタラクティブ実行お よびバッチ実行

• Reedbush-U では、コンパイラはバッチ実行、

インタラクティブ実行で共通に使えます。

• 例) Intel コンパイラ

• C

コンパイラ

: icc, mpiicc (Intel MPI

を使う場合)

• Fortran90

コンパイラ

: ifort, mpiifort (Intel MPI

を使う場合)

2017/3/6,7 講習会:MPI基礎

36

(23)

バッチ処理とは

スパコン環境では、通常は、インタラクティブ実行(コマンドライ ンで実行すること)はできません。

ジョブはバッチ処理で実行します。

ユーザ スパコン

バッチ処理 システムが

ジョブを取り出す

実行

バッチキュー

ジョブの依頼

(24)

バッチキューの設定のしかた

バッチ処理は、

Altair

社のバッチシステム

PBS Professional

で管理されています。

以下、主要コマンドを説明します。

ジョブの投入:

qsub <

ジョブスクリプトファイル名

>

自分が投入したジョブの状況確認:

rbstat

投入ジョブの削除:

qdel <

ジョブ

ID>

バッチキューの状態を見る:

rbstat --rsc

バッチキューの詳細構成を見る:

rbstat --rsc -x

投げられているジョブ数を見る:

rbstat -b

過去の投入履歴を見る:

rbstat -H

同時に投入できる数/実行できる数を見る:

rbstat --limit

2017/3/6,7 講習会:MPI基礎

38

(25)

本お試し講習会でのキュー名

• 本演習中のキュー名:

• u-tutorial

最大

10

分まで

最大ノード数は

8

ノード

(288

コア

)

まで

• 本演習時間以外( 24 時間)のキュー名:

• u-lecture

利用条件は演習中のキュー名と同様

(26)

rbstat --rsc の実行画面例

2017/3/6,7 講習会:MPI基礎

40

$ rbstat --rsc

QUEUE STATUS NODE u-debug [ENABLE ,START] 54 u-short [ENABLE ,START] 16 u-regular [ENABLE ,START]

|---- u-small [ENABLE ,START] 288

|---- u-medium [ENABLE ,START] 288

|---- u-large [ENABLE ,START] 288

|---- u-x-large [ENABLE ,START] 288 u-interactive [ENABLE ,START]

|---- u-interactive_1 [ENABLE ,START] 54

|---- u-interactive_4 [ENABLE ,START] 54 u-lecture [ENABLE ,START] 54 u-lecture8 [DISABLE,START] 54 u-tutorial [ENABLE ,START] 54

使える キュー名

(

リソース グループ

)

現在

使えるか

ノードの

利用可能数

(27)

rbstat --rsc -x の実行画面例

$ rbstat --rsc -x

QUEUE STATUS MIN_NODE MAX_NODE MAX_ELAPSE REMAIN_ELAPSE MEM(GB)/NODE PROJECT u-debug [ENABLE ,START] 1 24 00:30:00 00:30:00 244GB pz0105,gcXX u-short [ENABLE ,START] 1 8 02:00:00 02:00:00 244GB pz0105,gcXX u-regular [ENABLE ,START]

|---- u-small [ENABLE ,START] 4 16 12:00:00 12:00:00 244GB gcXX,pz0105

|---- u-medium [ENABLE ,START] 17 32 12:00:00 12:00:00 244GB gcXX

|---- u-large [ENABLE ,START] 33 64 12:00:00 12:00:00 244GB gcXX

|---- u-x-large [ENABLE ,START] 65 128 06:00:00 06:00:00 244GB gcXX u-interactive [ENABLE ,START]

|---- u-interactive_1 [ENABLE ,START] 1 1 00:15:00 00:15:00 244GB pz0105,gcXX

|---- u-interactive_4 [ENABLE ,START] 2 4 00:05:00 00:05:00 244GB pz0105,gcXX u-lecture [ENABLE ,START] 1 8 00:10:00 00:10:00 244GB gt00,gtYY u-lecture8 [DISABLE,START] 1 8 00:10:00 00:10:00 244GB gtYY u-tutorial [ENABLE ,START] 1 8 00:10:00 00:10:00 244GB gt00

使える キュー名

(

リソース グループ

)

現在

使えるか

ノードの 実行情報

課金情報(財布)

実習では1つのみ

(28)

rbstat --rsc -b の実行画面例

2017/3/6,7 講習会:MPI基礎

42

$ rbstat --rsc –b

QUEUE STATUS TOTAL RUNNING QUEUED HOLD BEGUN WAIT EXIT TRANSIT NODE u-debug [ENABLE ,START] 1 1 0 0 0 0 0 0 54 u-short [ENABLE ,START] 9 3 5 1 0 0 0 0 16 u-regular [ENABLE ,START]

|---- u-small [ENABLE ,START] 38 10 6 22 0 0 0 0 288

|---- u-medium [ENABLE ,START] 2 2 0 0 0 0 0 0 288

|---- u-large [ENABLE ,START] 4 2 0 2 0 0 0 0 288

|---- u-x-large [ENABLE ,START] 1 0 1 0 0 0 0 0 288 u-interactive [ENABLE ,START]

|---- u-interactive_1 [ENABLE ,START] 0 0 0 0 0 0 0 0 54

|---- u-interactive_4 [ENABLE ,START] 0 0 0 0 0 0 0 0 54 u-lecture [ENABLE ,START] 0 0 0 0 0 0 0 0 54 u-lecture8 [DISABLE,START] 0 0 0 0 0 0 0 0 54 u-tutorial [ENABLE ,START] 0 0 0 0 0 0 0 0 54

使える キュー名

(

リソース グループ

)

現在 使え るか

ジョブ の総数

実行して いるジョブ の数

待たされて いるジョブ の数

ノードの 利用可能 数

(29)

#!/bin/bash

#PBS -q u-lecture

#PBS -Wgroup_list=gt00

#PBS -l select=8:mpiprocs=36

#PBS -l walltime=00:01:00 cd $PBS_O_WORKDIR . /etc/profile.d/modules.sh mpirun ./hello

JOB

スクリプトサンプルの説明(ピュアMPI)

hello-pure.bash, C

言語、

Fortran

言語共通)

リソースグループ名

u-lecture

利用グループ名

gt00

MPI

ジョブを

8

36 = 288

プロセス で実行する。

利用ノード数 ノード内利用コア数

(MPIプロセス数)

実行時間制限

:1分

カレントディレクトリ設定、環境変 数設定(必ず入れておく)

(30)

Memory Memory Memory

2017/3/6,7 講習会:MPI基礎

44

1ソケットのみを図示(もう

1

ソケットある)

76.8 GB/秒

=(8Byte

×

2400MHz

×

4 channel) DDR4

DIMM Memory

16GB

×

2

16GB ×2枚 16GB ×2枚 16GB ×2枚

ソケット当たりメモリ量:

16GB

×

8

128GB

Core

#0 L 1

L

2 L3

Core

#1 L 1

L

2 L3

Core

#2 L 1

L

2 L3

Core

#3 L 1

L

2 L3

Core

#4 L 1

L

2 L3

Core

#5 L 1

L

2 L3

Core

#6 L 1

L

2 L3

Core

#7 L 1

L

2 L3

Core

#8 L 1

L

2 L3

Core

#9 L 1

L

2 L3

Core

#10 L 1

L

2 L3

Core

#11 L 1

L

2 L3

Core

#12 L 1

L

2 L3

Core

#13 L 1

L

2 L3

Core

#14 L 1

L

2 L3

Core

#15 L 1

L

2 L3

Core

#16 L 1

L

2 L3

Core

#17 L 1

L

2 L3

QPI x2 PCIe

コア当たりL1データ: 2KB, L2: 256KB,

L3: 2.5MB(

共有

) => L3

は全体で

45MB

ピュアMPIの実行状況(ノード内)

MPIプロセス

(31)

並列版 Hello プログラムを実行しよう

(ピュア MPI )

• このサンプルのJOBスクリプトは

hello-pure.bash

です。

• 配布のサンプルでは、キュー名が ”u- lecture” になっています

• $ emacs hello-pure.bash

で、 “u-lecture” → “u-tutorial”

に変更してください

(32)

並列版 Hello プログラムを実行しよう

(ピュア MPI )

1. Hello フォルダ中で以下を実行する

$ qsub hello-pure.bash

2. 自分の導入されたジョブを確認する

$ rbstat

3. 実行が終了すると、以下のファイルが生成される hello-pure.bash.e XXXXXX

hello-pure.bash.o XXXXXX ( XXXXXX は数字)

4. 上記の標準出力ファイルの中身を見てみる

$ cat hello-pure.bash.o XXXXXX

5. “ Hello parallel world! ”が、

36 プロセス *8 ノード =288 表示されていたら成功。

2017/3/6,7 講習会:MPI基礎

46

(33)

バッチジョブ実行による標準出力、

標準エラー出力

バッチジョブの実行が終了すると、標準出力ファイルと標準エ ラー出力ファイルが、ジョブ投入時のディレクトリに作成されま す。

標準出力ファイルにはジョブ実行中の標準出力、標準エラー 出力ファイルにはジョブ実行中のエラーメッセージが出力され ます。

ジョブ名 .oXXXXX --- 標準出力ファイル

ジョブ名 .eXXXXX --- 標準エラー出力ファイル

(XXXXX はジョブ投入時に表示されるジョブのジョブ ID)

(34)

並列版 Hello プログラムの説明( C 言語)

講習会:MPI基礎

48

#include <stdio.h>

#include <mpi.h>

int main(int argc, char* argv[]) { int myid, numprocs;

int ierr, rc;

ierr = MPI_Init(&argc, &argv);

ierr = MPI_Comm_rank(MPI_COMM_WORLD, &myid);

ierr = MPI_Comm_size(MPI_COMM_WORLD, &numprocs);

printf("Hello parallel world! Myid:%d ¥n", myid);

rc = MPI_Finalize();

exit(0);

}

MPI

の初期化

自分の

ID

番号を取得

:各PEで値は異なる

全体のプロセッサ台数 を取得

:各PEで値は同じ

(演習環境では

288

、もしくは

8

MPI

の終了

このプログラムは、全PEで起動される

2017/3/6,7

(35)

並列版 Hello プログラムの説明( Fortran 言語)

program main

common /mpienv/myid,numprocs integer myid, numprocs

integer ierr

call MPI_INIT(ierr)

call MPI_COMM_RANK(MPI_COMM_WORLD, myid, ierr) call MPI_COMM_SIZE(MPI_COMM_WORLD, numprocs, ierr) print *, "Hello parallel world! Myid:", myid

call MPI_FINALIZE(ierr) stop

end

MPI

の初期化

自分の

ID

番号を取得

:各PEで値は異なる

全体のプロセッサ台数 を取得

:各PEで値は同じ

(演習環境では

288

、もしくは

8

MPI

の終了

このプログラムは、全PEで起動される

(36)

時間計測方法( C 言語)

講習会:MPI基礎

50

double t0, t1, t2, t_w;

..

ierr = MPI_Barrier(MPI_COMM_WORLD);

t1 = MPI_Wtime();

<ここに測定したいプログラムを書く>

ierr = MPI_Barrier(MPI_COMM_WORLD);

t2 = MPI_Wtime();

t0 = t2 - t1;

ierr = MPI_Reduce(&t0, &t_w, 1, MPI_DOUBLE,MPI_MAX, 0, MPI_COMM_WORLD);

バリア同期後

時間を習得し保存

各プロセッサーで、t

0

の値は 異なる。

この場合は、最も遅いものの 値をプロセッサ0番が受け取る

2017/3/6,7

(37)

時間計測方法( Fortran 言語)

double precision t0, t1, t2, t_w double precision MPI_WTIME ..

call MPI_BARRIER(MPI_COMM_WORLD, ierr) t1 = MPI_WTIME(ierr)

<ここに測定したいプログラムを書く>

call MPI_BARRIER(MPI_COMM_WORLD, ierr) t2 = MPI_WTIME(ierr)

t0 = t2 - t1

call MPI_REDUCE(t0, t_w, 1,

& MPI_DOUBLE_PRECISION,

& MPI_MAX, 0, MPI_COMM_WORLD, ierr)

バリア同期後

時間を習得し保存

各プロセッサーで、t

0

の値 は異なる。

この場合は、最も遅いも のの値をプロセッサ0番 が受け取る

(38)

MPI 実行時のリダイレクトについて

• Reedbush スーパーコンピュータシステムでは、

MPI 実行時の入出力のリダイレクトができます。

• 例) mpirun ./a.out < in.txt > out.txt

講習会:MPI基礎

52

2017/3/6,7

(39)

依存関係のあるジョブの投げ方

(ステップジョブ、チェーンジョブ)

あるジョブスクリプト

go1.sh

の後に、

go2.sh

を投げたい

さらに、

go2.sh

の後に、

go3.sh

を投げたい、ということがある

以上を、ステップジョブまたはチェーンジョブという。

• Reedbush

におけるステップジョブの投げ方

1. $qsub go1.sh

12345.reedbush-pbsadmin0

2.

上記のジョブ番号

12345

を覚えておき、以下の入力をする

$qsub -W depend=afterok:12345 go2.sh 12346.reedbush-pbsadmin0

3.

以下同様

$qsub -W depend=afterok:12346 go3.sh 12347.reedbush-pbsadmin0

afterok:

前のジョブが正常に終了したら実行する

afternotok:

前のジョブが正常終了しなかった場合に実行する

afterany:

どのような状態でも実行する

(40)

並列プログラミングの基礎

(座学)

東京大学情報基盤センター 准教授 塙 敏博

2017/3/6,7 講習会:MPI基礎

54

(41)

教科書(演習書)

「スパコンプログラミング入門

-並列処理とMPIの学習-」

片桐 孝洋 著、

東大出版会、ISBN978-4-13-062453-4、

発売日:2013年3月12日、判型:A5, 200頁

【本書の特徴】

C言語で解説

C言語、Fortran90言語のサンプルプログラムが付属

数値アルゴリズムは、図でわかりやすく説明

本講義の内容を全てカバー

内容は初級。初めて並列数値計算を学ぶ人向けの入門書

(42)

教科書(演習書)

「並列プログラミング入門:

サンプルプログラムで学ぶOpenMPとOpenACC」(仮題)

片桐 孝洋 著

東大出版会、ISBN-10: 4130624563、

ISBN-13: 978-4130624565、発売日: 2015年5月25日

【本書の特徴】

C言語、Fortran90言語で解説

C言語、Fortran90言語の複数のサンプルプログラムが入手可能(ダウンロー ド形式)

本講義の内容を全てカバー

Windows PC演習可能(Cygwin利用)。スパコンでも演習可能。

内容は初級。初めて並列プログラミングを学ぶ人向けの 入門書

講習会:MPI基礎

56

2017/3/6,7

(43)

参考書

「スパコンを知る:

その基礎から最新の動向まで」

岩下武史、片桐孝洋、高橋大介 著

東大出版会、ISBN-10: 4130634550、

ISBN-13: 978-4130634557、

発売日:2015年2月20日、176頁

【本書の特徴】

スパコンの解説書です。以下を 分かりやすく解説します。

スパコンは何に使えるか

スパコンはどんな仕組みで、なぜ速く計算できるのか

最新技術、今後の課題と将来展望、など

(44)

参考書

「並列数値処理 - 高速化と性能向上のために -」

金田康正 東大教授 理博 編著、

片桐孝洋 東大特任准教授 博士(理学) 著、黒田久泰 愛媛大准教授 博士(理学) 著、山本有作 神戸大教授 博士(工学) 著、 五百木伸洋

㈱日立製作所 著、

コロナ社、発行年月日:2010/04/30 , 判 型: A5, ページ数:272頁、

ISBN:978-4-339-02589-7, 定価:3,990円 (本体3,800円+税5%)

【本書の特徴】

Fortran言語で解説

数値アルゴリズムは、数式などで厳密に説明

本講義の内容に加えて、固有値問題の解法、疎行列反復解法、FFT、

ソート、など、主要な数値計算アルゴリズムをカバー

内容は中級~上級。専門として並列数値計算を学びたい人向き

2017/3/6,7 講習会:MPI基礎

58

(45)

本講義の流れ

1.

東大スーパーコンピュータの概略

2.

並列プログラミングの基礎

3.

性能評価指標

4.

基礎的な

MPI

関数

5.

データ分散方式

6.

ベクトルどうしの演算

7.

ベクトル

-

行列積

8.

リダクション演算

(46)

東大スーパーコンピュータ の概略

講習会:MPI基礎

60

2017/3/6,7

(47)

東京大学情報基盤センター スパコン( 1/3 )

61

Total Peak performance : 1.13 PFLOPS Total number of nodes : 4,800

Total memory : 150TB

Peak performance per node : 236.5 GFLOPS Main memory per node : 32 GB

Disk capacity : 2.1 PB SPARC64 IXfx 1.848GHz

Fujitsu PRIMEHPC FX10

FX10

スーパーコンピュータシステム)

2012

7

~2018

3

月(予定)

Oakbridge-FX

:長時間ジョブ用の

FX10

。 ノード数:

24

576

制限時間:最大

168

時間

(1週間)

(48)

東京大学情報基盤センター スパコン( 2/3-1 )

2017/3/6,7 講習会:MPI基礎

62

62

Total Peak performance : 508 TFLOPS Total number of nodes : 420

Total memory : 105 TB

Peak performance per node : 1209.6 GFLOPS Main memory per node : 256 GB

Disk capacity : 5.04 PB File Cache system (SSD) : 230 TB

Intel Xeon E5-2695v4 2.1GHz 18 core x2 socket

Reedbush-U

SGI Rackable

クラスタシステム )

2016

7

1

日試験運転開始

2016

9

1

日正式運用開始

(49)

東京大学情報基盤センター スパコン( 2/3-2 )

63

Total Peak performance : 145 TFLOPS + 1272 TFLOPS Total number of nodes : 120

Total memory : 30 TB + 8 TB Peak performance per node : 1209.6 GFLOPS

+ 10.6 TFLOPS Main memory per node : 256 GB

+ 32 GB Disk capacity (shared w/ U) : 5.04 PB File Cache system (SSD, (shared w/ U)

: 230 TB

Intel Xeon E5-2695v4 2.1GHz 18 core x2 socket + NVIDIA Tesla P100 with NVLink x 2

Reedbush-H

SGI Rackable

クラスタシステム )

2017

3

1

日試験運転開始

2017

4

1

日正式運用開始

(予定)

(50)

東京大学情報基盤センター スパコン( 3/3 )

64

Total Peak performance : 25 PFLOPS Total number of nodes : 8,208

Total memory : 897.7 TB

Peak performance per node : 3.046 TFLOPS Main memory per node : 96 GB (DDR4)

+ 16 GB(MCDRAM) Disk capacity : 26.2 PB

File Cache system (SSD) : 960 TB

Intel Xeon Phi 7250 1.4 GHz 68 core x1 socket

Oakforest-PACS

Fujitsu PRIMERGY CX600

2016

12

1

日試験運転開始

2017

4

3

日正式運用開始

(予定)

筑波大学計算科学研究センター と共同運用

2017/3/6,7 講習会:MPI基礎

64

(51)

FX10

計算ノードの構成

Memory Memory Memory

各CPUの内部構成

Core

#1

Core

#2

Core

#3 Core

#0

1ソケットのみ

Core

#13

Core

#14

Core

#15 Core

#12

L2 (16

コアで共有、

12MB)

L1 L1 L1 L1

: L1データキャッシュ32KB

L1 L1 L1 L1

85GB/秒

=(8Byte

×

1333MHz

×8 channel)

DDR3 DIMM

Memory

4GB

×

2

4GB

×

2

4GB

×

2

4GB

×

2

ノード内合計メモリ量:

8GB

×

4

32GB

20GB/

TOFU Network

ICC

(52)

FX10 の通信網(1 TOFU 単位)

2017/3/6,7 講習会:MPI基礎

66

ノード ノード

ノード ノード

ノード

ノード ノード

ノード ノード

ノード

ノード ノード

TOFU

単位

6

本それぞれ

5GB/

(双方向)

計算ノード内

1TOFU

単位 間の結合用

ノード

(53)

1 TOFU

単位 1

TOFU 単位

1 TOFU

単位

1 TOFU

単位

1 TOFU

単位

1 TOFU

単位

1 TOFU

単位

1 TOFU

単位

1 TOFU

単位 1

TOFU 単位 1

TOFU 単位

1 TOFU

単位

1 TOFU

単位

1 TOFU

単位

1 TOFU

単位

1 TOFU

単位

1 TOFU

単位

1 TOFU

単位

FX10 の通信網(1 TOFU 単位間の結合)

1 TOFU

単位

1 TOFU

単位

1 TOFU

単位

1 TOFU

単位

1 TOFU

単位

1 TOFU

単位

1 TOFU

単位

1 TOFU

単位

1 TOFU

単位

3次元接続

l

ユーザから見ると、

X

軸、

Y

軸、

Z

軸について、

奥の

1TOFU

と、手前の

TOFU

は、繋がってみえます

(3次元トーラス接続)

l

ただし物理結線では

l X

軸はトーラス

l Y

軸はメッシュ

l Z

軸はメッシュまたは、

トーラス になっています

(54)

Reedbush-U ノードのブロック図

メモリのうち、「近い」メモリと「遠い」メモリがある

=> NUMA (Non-Uniform Memory Access) (FX10

はフラット

)

Intel Xeon E5-2695 v4 (Broadwell-

EP)

QPI 76.8GB/s

76.8GB/s

IB EDR HCA

15.7 GB/s

DDR4

メモリ 128GB

76.8GB/s 76.8GB/s

Intel Xeon E5-2695 v4 (Broadwell-

QPI EP) DDR4

DDR4 DDR4

DDR4 DDR4 DDR4 DDR4

メモリ 128GB

G3 x16

2017/3/6,7 講習会:MPI基礎

68

(55)

Broadwell-EP

の構成

Memory Memory Memory

1ソケットのみを図示

76.8 GB/秒

=(8Byte

×

2400MHz

×

4 channel) DDR4

DIMM Memory

16GB

×

2

16GB ×2枚 16GB ×2枚 16GB ×2枚

ソケット当たりメモリ量:

16GB

×

8

128GB

Core

#0 L 1

L

2 L3

Core

#1 L 1

L

2 L3

Core

#2 L 1

L

2 L3

Core

#3 L 1

L

2 L3

Core

#4 L 1

L

2 L3

Core

#5 L 1

L

2 L3

Core

#6 L 1

L

2 L3

Core

#7 L 1

L

2 L3

Core

#8 L 1

L

2 L3

Core

#9 L 1

L

2 L3

Core

#10 L 1

L

2 L3

Core

#11 L 1

L

2 L3

Core

#12 L 1

L

2 L3

Core

#13 L 1

L

2 L3

Core

#14 L 1

L

2 L3

Core

#15 L 1

L

2 L3

Core

#16 L 1

L

2 L3

Core

#17 L 1

L

2 L3

QPI x2 PCIe

コア当たりL1データ: 2KB, L2: 256KB,

L3: 2.5MB(

共有

) => L3

は全体で

45MB

(56)

Reedbush-U の通信網

フルバイセクションバンド幅を持つ

Fat Tree

どのように計算ノードを選んでも互いに無衝突で通信が可能

• Mellanox InfiniBand EDR 4x CS7500: 648

ポート

内部は

36

ポートスイッチ

(SB7800)

(36+18)

台組み合わせたものと等価

2017/3/6,7 講習会:MPI基礎

70

18

1 19 36 37 54

Downlink: 18

. . . . . . . . .

Uplink: 18

. . .

. . . Leaf 36

ポートスイッチ

36

36

ポート

Spine

スイッチ

18

648

ポート

Director

スイッチ

1

台の中身

(57)

Reedbush-H ノードのブロック図

NVIDIA Pascal

NVIDIA Pascal NVLinK

20 GB/s

Intel Xeon E5-2695 v4 (Broadwell-

EP)

NVLinK 20 GB/s

QPI 76.8GB/s

76.8GB/s

IB FDR HCA

G3x16 15.7 GB/s 15.7 GB/s

DDR4

メモリ 128G

B

EDR switch

ED R

76.8GB/s 76.8GB/s

Intel Xeon E5-2695 v4 (Broadwell-

QPI EP) DDR4

DDR4 DDR4

DDR4 DDR4 DDR4 DDR4

メモリ 128G

B

PCIe sw

G3x16

PCIe sw

G3x16 G3x16

IB FDR

HCA

(58)

Oakforest-PACS 計算ノード

• Intel Xeon Phi (Knights Landing)

• 1

ノード

1

ソケット

• MCDRAM:

オンパッケージ の高バンド幅メモリ

16GB + DDR4

メモリ

2017/3/6,7 講習会:MPI基礎

Knights Landing Overview

Chip: 36 Tiles interconnected by 2D Mesh Tile: 2 Cores + 2 VPU/core + 1 MB L2

Memory: MCDRAM: 16 GB on-package; High BW DDR4: 6 channels @ 2400 up to 384GB IO: 36 lanes PCIe Gen3. 4 lanes of DMI for chipset Node: 1-Socket only

Fabric: Omni-Path on-package (not shown)

Vector Peak Perf: 3+TF DP and 6+TF SP Flops Scalar Perf: ~3x over Knights Corner

Streams Triad (GB/s): MCDRAM : 400+; DDR: 90+

TILE

4

2 VPU Core

2 VPU Core 1MB

L2 CHA

Package

Source Intel: All products, computer systems, dates and figures specified are preliminary based on current expectations, and are subject to change without notice. KNL data are preliminary based on current expectations and are subject to change without notice. 1Binary Compatible with Intel Xeon processors using Haswell Instruction Set (except TSX). 2Bandwidth numbers are based on STREAM-like memory access pattern when MCDRAM used as flat memory. Results have been estimated based on internal Intel analysis and are provided for informational purposes only. Any difference in system hardware or software design or configuration may affect actual performance.

Omni-path not shown

EDC EDC PCIe Gen 3

EDC EDC

Tile

DDR MC DDR MC

EDC EDC misc EDC EDC

36 Tiles connected by

2D Mesh Interconnect

MCDRAM MCDRAM MCDRAM MCDRAM

3 D D R 4 C H A N N E L S

3 D D R 4 C H A N N E L S

MCDRAM MCDRAM MCDRAM MCDRAM

D M I 2 x16

1 x4

X4 DMI

HotChips27 KNLスライドより

Knights Landing: Next Intel® Xeon Phi™ Processor

First self-boot Intel® Xeon Phi™ processor that is binary compatible with main line IA. Boots standard OS.

Significant improvement in scalar and vector performance Integration of Memory on package: innovative memory architecture for high bandwidth and high capacity Integration of Fabric on package

Potential future options subject to change without notice.

All timeframes, features, products and dates are preliminary forecasts and subject to change without further notification.

Three products

KNL Self-Boot KNL Self-Boot w/ Fabric KNL Card (Baseline) (Fabric Integrated) (PCIe-Card)

Intel® Many-Core Processor targeted for HPC and Supercomputing

2 VPU 2 VPU

Core 1MB Core L2

MCDRAM: 490GB/

秒以上 (実測)

DDR4: 115.2 GB/

=(8Byte

×

2400MHz

×

6 channel)

ソケット当たりメモリ量:

16GB

×

6

96GB

72

(59)

Oakforest-PACS: Intel Omni-Path Architecture による フルバイセクションバンド幅 Fat-tree 網

768 port Director Switch

12

(Source by Intel)

48 port Edge Switch 362

2 2

24

1 25 48 49 72

Uplink: 24

Downlink: 24

. . . . . . . . .

コストはかかるがフルバイセクションバンド幅を維持

システム全系使用時にも高い並列性能を実現

柔軟な運用:ジョブに対する計算ノード割り当ての自由度が高い

計算ノード ラックに分散

(60)

東大情報基盤センター Oakforest-PACS スーパーコン ピュータシステムの料金表( 2017 年 4 月 1 日 )

パーソナルコース(年間)

コース1:

100,000

円 :

8

ノード

(

基準

)

、最大

16

ノードまで

コース2:

200,000

円 :

16

ノード

(

基準

)

、最大

64

ノードまで

グループコース

• 400,000

(

企業

480,000

)

1

8

ノード(基準)、最大

128

ノードまで

以上は、「トークン制」で運営

申し込みノード数×

360

日×

24

時間の「トークン」が与えられる

基準ノードまでは、トークン消費係数が1.0

基準ノードを超えると、超えた分は、消費係数が2.0になる

大学等のユーザは

FX10

Reedbush

との相互トークン移行も可能

2017/3/6,7 講習会:MPI基礎

74

(61)

東大情報基盤センター Reedbush スーパーコン ピュータシステムの料金表( 2017 年 4 月 1 日 )

パーソナルコース(年間)

• 150,000

円 :

RB-U: 4

ノード(基準)、最大

16

ノードまで

RB-H: 1

ノード(基準)、最大

2

ノードまで

グループコース

• 300,000

円:

1

4

ノード(基準)、最大

128

ノードまで、

RB-H

1

ノード(基準)、最大

32

ノードまで(トークン係数は

U

2.5

倍)

• RB-U

のみ 企業

360,000

円 :

1

4

ノード(基準)、最大

128

ノードまで

• RB-H

のみ 企業

216,000

円 :

1

1

ノード(基準)、最大

32

ノードまで

以上は、「トークン制」で運営

申し込みノード数×

360

日×

24

時間の「トークン」が与えられる

基準ノードまでは、トークン消費係数が

1.0

基準ノードを超えると、超えた分は、消費係数が

2.0

になる

大学等のユーザは

FX10, Oakforest-PACS

との相互トークン移行も可能

ノード固定もあり

(62)

東大情報基盤センター FX10 スーパーコン ピュータシステムの料金表( 2017 年 4 月 1 日)

パーソナルコース(年間)

コース1:

90,000

円 :

12

ノード

(

基準

)

、最大

24

ノードまで

コース2:

180,000

円 :

24

ノード

(

基準

)

、最大

96

ノードまで

グループコース

• 360,000

(

企業

432,000

)

1

口、

12

ノード、最大

1440

ノードまで

以上は、「トークン制」で運営

申し込みノード数×

360

日×

24

時間の「トークン」が与えられる

基準ノードまでは、トークン消費係数が1.0

基準ノードを超えると、超えた分は、消費係数が2.0になる

大学等のユーザは

Reedbush, Oakforest-PACS

との相互トークン移 行も可能

2017/3/6,7 講習会:MPI基礎

76

(63)

スーパーコンピュータシステムの詳細

• 以下のページをご参照ください

• 利用申請方法

• 運営体系

• 料金体系

• 利用の手引

などがご覧になれます。

http://www.cc.u-tokyo.ac.jp/system/ofp/

http://www.cc.u-tokyo.ac.jp/system/reedbush/

http://www.cc.u-tokyo.ac.jp/system/fx10/

(64)

並列プログラミングの基礎

講習会:MPI基礎

78

2017/3/6,7

(65)

並列プログラミングとは何か?

逐次実行のプログラム(実行時間

T

)を、p台の計算機を使っ て、

T /

p にすること。

素人考えでは自明。

実際は、できるかどうかは、対象処理の内容

(アルゴリズム)で 大きく 難しさが違う

アルゴリズム上、絶対に並列化できない部分の存在

通信のためのオーバヘッドの存在

通信立ち上がり時間

データ転送時間

T

T /

(66)

並列と並行

並列(

Parallel

物理的に並列(時間的に独立)

ある時間に実行されるものは多数

並行(

Concurrent

論理的に並列(時間的に依存)

ある時間に実行されるものは1つ(=1プロセッサで実行)

時分割多重、疑似並列

• OS

によるプロセス実行スケジューリング(ラウンドロビン方式)

講習会:MPI基礎

80

T

T

2017/3/6,7

(67)

並列計算機の分類

• Michael J. Flynn 教授(スタンフォード大)の分類(196 6)

• 単一命令・単一データ流

( SISD, Single Instruction Single Data Stream )

• 単一命令・複数データ流

( SIMD, Single Instruction Multiple Data Stream )

• 複数命令・単一データ流

( MISD, Multiple Instruction Single Data Stream )

• 複数命令・複数データ流

( MIMD, Multiple Instruction Multiple Data Stream )

(68)

並列計算機のメモリ型による分類

A)

メモリアドレスを共有している:互いのメモリがアクセス可能

1.

共有メモリ型

SMP:

Symmetric Multiprocessor,

UMA: Uniform Memory Access

2.

分散共有メモリ型

DSM:

Distributed Shared Memory

) 共有・非対称メモリ型

ccNUMA

Cache Coherent Non-Uniform Memory Access

講習会:MPI基礎

82

2017/3/6,7

(69)

並列計算機のメモリ型による分類

B)

メモリアドレスは独立:互いのメモリはアクセス不可

3.

分散メモリ型

(メッセージパッシング)

(70)

並列プログラミングのモデル

• 実際の並列プログラムの挙動は MIMD

• アルゴリズムを考えるときは< SIMD が基本>

• 複雑な挙動は人間には想定し難い

講習会:MPI基礎

84

2017/3/6,7

(71)

並列プログラミングのモデル

• 多くの MIMD 上での並列プログラミングのモデル

1. SPMD

Single Program Multiple Data

1つの共通のプログラムが、並列処理開始時に、

全プロセッサ上で起動する

• MPI (バージョン1)のモデル

2. Master / Worker

Master / Slave

1つのプロセス(

Master

)が、複数のプロセス(

Worker

)を 管理(生成、消去)する。

(72)

並列プログラムの種類

マルチプロセス

• MPI

Message Passing Interface

• HPF

High Performance Fortran

自動並列化

Fortran

コンパイラ

ユーザがデータ分割方法を明示的に記述

マルチスレッド

• P

hread (POSIX

スレッド

)

• Solaris Thread (Sun Solaris OS

)

• NT thread (Windows NT

系、

Windows95

以降

)

スレッドの

Fork

(分離) と

Join

(融合) を明示的に記述

• Java

言語仕様としてスレッドを規定

• OpenMP

ユーザが並列化指示行を記述

講習会:MPI基礎

86

プロセスとスレッドの違い

メモリを意識するかどうかの違い

別メモリは「プロセス」

同一メモリは「スレッド」

マルチプロセスとマルチスレッドは 共存可能

ハイブリッド

MPI/OpenMP

実行

2017/3/6,7

参照

関連したドキュメント

日時:2013 年 8 月 21 日(水)16:00~17:00 場所:日本エネルギー経済研究所 会議室 参加者:子ども議員 3 名 実行委員

1月 2月 3月 4月 5月 6月 7月 8月 9月10月 11月 12月1月 2月 3月 4月 5月 6月 7月 8月 9月10月 11月 12月1月 2月 3月.

平成30年5月11日 海洋都市横浜うみ協議会理事会 平成30年6月 1日 うみ博2018開催記者発表 平成30年6月21日 出展者説明会..

平成 31 年度アウトドアリーダー養成講習会 後援 秋田県キャンプ協会 キャンプインストラクター養成講習会 後援. (公財)日本教育科学研究所

授業内容 授業目的.. 春学期:2019年4月1日(月)8:50~4月3日(水)16:50

大変な盛り上がりを見せましたリオ 2016 が終わり、次は いよいよ東京です。東京 2020

曜日 9:00 10:00 11:00 12:00 13:00 14:00 15:00 16:00 17:00 18:00.

年度内に5回(6 月 27 日(土) 、8 月 22 日(土) 、10 月 3 日(土) 、2 月 6 日(土) 、3 月 27 日(土)