85
スーパーコンピュータ超入門講習会 九州大学情報基盤研究開発センター 1

スーパーコンピューティング - 高速に計算する技術 · 今日の内容 1. スーパーコンピュータの仕組み 2. スーパーコンピュータの使い方

  • Upload
    others

  • View
    7

  • Download
    0

Embed Size (px)

Citation preview

Page 1: スーパーコンピューティング - 高速に計算する技術 · 今日の内容 1. スーパーコンピュータの仕組み 2. スーパーコンピュータの使い方

スーパーコンピュータ超入門講習会九州大学情報基盤研究開発センター

1

Page 2: スーパーコンピューティング - 高速に計算する技術 · 今日の内容 1. スーパーコンピュータの仕組み 2. スーパーコンピュータの使い方

今日の内容1. スーパーコンピュータの仕組み

2. スーパーコンピュータの使い方

3. 九州大学のスーパーコンピュータ ITOの紹介

4. Q & A

2

Page 3: スーパーコンピューティング - 高速に計算する技術 · 今日の内容 1. スーパーコンピュータの仕組み 2. スーパーコンピュータの使い方

今日の内容1. スーパーコンピュータの仕組み

2. スーパーコンピュータの使い方

3. 九州大学のスーパーコンピュータ ITOの紹介

4. Q & A

3

Page 4: スーパーコンピューティング - 高速に計算する技術 · 今日の内容 1. スーパーコンピュータの仕組み 2. スーパーコンピュータの使い方

突然ですが、「富岳」って知ってますか?• 2020年6月に世界一になった理化学研究所のスーパーコンピュータ

• 何が世界一?

4

https://www.fujitsu.com/jp/about/businesspolicy/tech/fugaku/

種目 性能 説明TOP500 415.53PFLOPS

(2位の IBM Summitの約 2.8倍)密行列連立一次方程式の求解

HPCG 13.40 PFLOPS(2位の IBM Summitの約 4.6倍)

科学技術シミュレーションで使う有限要素法に現れる疎行列連立一次方程式の求解

Graph500 70.98 GTEPS (2位の Sunway TaihuLightの約 3倍、

3位の IBM Summitの約 9倍)

最短経路探索等の問題に現れるグラフ探索

HPL-AI 1.421 EFLOPS 機械学習で多用される混合精度実数計算を連立一次方程式求解に応用した反復的な解法(FP64 (64bit浮動小数点数) から計算途中で FP32, FP16, BF16に変換して求解し、元の方程式に代入して誤差計算し、補正、を繰り返す)

Page 5: スーパーコンピューティング - 高速に計算する技術 · 今日の内容 1. スーパーコンピュータの仕組み 2. スーパーコンピュータの使い方

そもそもスーパーコンピュータとは?• あえて言えば、「スーパーな計算機」

• 実は、明確な定義はない• 計算機は時代とともに高速化、高機能化

⇒ 条件を定めるのは困難• 今のPCは20年前の世界一の

スーパーコンピュータより高速

• 一般に、「同じ時代の他の計算機より、

明らかに速い計算機達」のことをスーパーコンピュータと呼んでいる

5

では、計算の速さとは?

スマートフォン

スーパーコンピュータ

PC

サーバ、ワークステーション

Page 6: スーパーコンピューティング - 高速に計算する技術 · 今日の内容 1. スーパーコンピュータの仕組み 2. スーパーコンピュータの使い方

計算機の速さ• ある時間の間に実行できる演算の回数

• 最もよく使われる指標: 「フロップス」FLOPS (FLoating-point Operations Per Second)

• floating-point operation= 浮動小数点計算= 計算機で行われる実数計算

6

Page 7: スーパーコンピューティング - 高速に計算する技術 · 今日の内容 1. スーパーコンピュータの仕組み 2. スーパーコンピュータの使い方

計算機の速さの限界• 計算機の理論演算性能(FLOPS):

P = N x C x O• 物理的に、これ以上速く計算することは出来ない

7

Nと Cは、計算機の仕様でだいたいわかる。O は、なにによって決まる?

パラメータ 説明N その計算機内の CPUの数

(簡単のため、ここではCPUによる理論演算性能だけ計算)

C その CPUのクロック周波数(Hz)= 一秒間に回路の状態を変える回数= (だいたい)一秒間に命令を実行する回数

O 一つの CPUが一回のクロックで同時に実行できる演算数

CPU

Page 8: スーパーコンピューティング - 高速に計算する技術 · 今日の内容 1. スーパーコンピュータの仕組み 2. スーパーコンピュータの使い方

一般的なCPUの構成• 一つ、または複数の「コア」で構成

• コアに「演算器」を一つ、または複数搭載

• 各演算器は SIMD (Single Instruction Multiple Data) 演算可能• 一度に複数のデータに同じ演算を適用

• 積和演算器で足し算と掛け算も同時に実行

8

C A B

C + A x B

CPU

コア

演算器O = CPU内のコアの数

x コアが一回のクロックで実行できる最大の演算数

https://www.r-ccs.riken.jp/wp-content/uploads/2020/05/A64FX_Chip_S.png

Page 9: スーパーコンピューティング - 高速に計算する技術 · 今日の内容 1. スーパーコンピュータの仕組み 2. スーパーコンピュータの使い方

例)富岳の構成

• システムを構成する計算ノード(サーバ)の数: 158,976 台

• 計算ノードあたりのCPU数: 1 個

• CPUのクロック周波数: 2 GHz

• CPUあたりのコア数: 48個• 別にアシスタントコア(後述)が 2~4個

• コアあたりの最大同時演算数: 32

9

Kilo = 103 , Mega = 106 , Giga = 109 , Tera = 1012 , Peta = 1015 , Exa = 1018

488,374,272 GFLOPS(ギガ フロップス)= 約 488 PFLOPS(ペタ フロップス)一秒間に 48.8京回の演算が出来る

https://www.fujitsu.com/jp/about/businesspolicy/tech/fugaku/

計算ノード

CPU

コア

演算器

N

C

O

総理論性能 P = N x C x O

メモリ

Page 10: スーパーコンピューティング - 高速に計算する技術 · 今日の内容 1. スーパーコンピュータの仕組み 2. スーパーコンピュータの使い方

スーパーコンピュータ とPC、スマートフォン

10

10

スマートフォン(Snapdragon 865)

PC(Intel Core i9 10980XE)

スーパーコンピュータ富岳 (Fujitsu A64FX)

CPU数 1 1 158,976

クロック周波数 1.8GHz,2.4GHz,2.84GHz 3.0GHz 2.0GHz

コア数 計 8 18 48

最大同時演算対象データ数

8? 32 32

総理論演算性能 137.92 GFLOPS 1,728 GFLOPS 488,374,272 GFLOPS

CPU数やコア数で演算性能を稼ぐクロック周波数はほぼ同じ

https://www.fujitsu.com/jp/about/businesspolicy/tech/fugaku/https://livedoor.blogimg.jp/wisteriear/imgs/1/a/1ac59590.jpg

https://d2tfhz5takygeh.cloudfront.net/contents/img/products/SC51A/SC51A_CosmicGray_XL.jpg

Page 11: スーパーコンピューティング - 高速に計算する技術 · 今日の内容 1. スーパーコンピュータの仕組み 2. スーパーコンピュータの使い方

FLOPSは分かりにくいので、計算にかかる時間で比較• 理想的な計算時間: T = S / P

• S: プログラム中の演算回数• P: 計算機の理論的な最高 FLOPS

• 注意: 計算機は、絶対に、理想的には動かない• 演算器が動けない時間があるため

• 計算するデータが CPUに届くまでの待ち時間• HDDから主記憶へ、主記憶から CPUへ

• CPU間やコア間で待ち合わせる時間• 同時に実行できる計算が少なく、演算器が空く時間

11

理想的な計算時間 = その計算に最小限必要な時間

Page 12: スーパーコンピューティング - 高速に計算する技術 · 今日の内容 1. スーパーコンピュータの仕組み 2. スーパーコンピュータの使い方

プログラムの演算回数?• 例えば、行列積 C = A x B のプログラムの場合

12

for i = 1 to Mfor j = 1 to M

for k = 1 to MC(i, j) = C(i, j) + A(i, k) * B(k, j)

2 演算

MM2M3

演算回数 = 2 M3 回

C A B

*=i

j

i

jk

k

Page 13: スーパーコンピューティング - 高速に計算する技術 · 今日の内容 1. スーパーコンピュータの仕組み 2. スーパーコンピュータの使い方

行列積の計算に最小限必要な時間13

M Snapdragon 865(137.92 x 109 FLOPS)

Intel Core i9 (1728 x 109 FLOPS)

富岳(488374272 x 109 FLOPS)

1000 0.015 秒 0.00012 秒 0.000000004 秒10000 15 秒 1.2 秒 0.000004 秒

100000 4 時間 0.32 時間 0.004 秒1000000 167 日 13 日 4 秒

10000000 460 年 37 年 1.1 時間

PCで 37年かかる計算が、スーパーコンピュータだと約 1時間で終わる(かもしれない)

この速度の差は、ほぼ、CPUやコアの数によるもの

Page 14: スーパーコンピューティング - 高速に計算する技術 · 今日の内容 1. スーパーコンピュータの仕組み 2. スーパーコンピュータの使い方

なぜ、CPUやコアを増やす?• コア 1個の性能を上げる場合、電力が指数関数的に増加• 電力も、冷却能力も不足

• 1個当たりの性能が低いコア= 電力当たりの性能が高いコアを多数並べた方が効率的• 限られた電力でシステム全体の性能向上

14

例) 1/10の性能を 1/100 の電力で達成

システム全体の電力当たり性能 10倍

電力

性能コアの性能と電力の関係

Page 15: スーパーコンピューティング - 高速に計算する技術 · 今日の内容 1. スーパーコンピュータの仕組み 2. スーパーコンピュータの使い方

コア数の増やし方• CPUの中のコアの数を増やす

• CPUの面積(電子回路の数)で制限• 通常、数個~数十個

• 計算ノードの中のCPUの数を増やす• 主記憶とCPUをつなぐ回路(バス)で制限

• 通常、スーパーコンピュータでは1~2個程度

• 計算ノードの数を増やす• ネットワークを使って接続するため

比較的増やしやすい• スーパーコンピュータでは数千台~数十万台

• 富岳:158,976台

15

https://www.r-ccs.riken.jp/wp-content/uploads/2020/05/A64FX_Chip_S.png

CPU

Memory

バス

CPU CPU CPU

Page 16: スーパーコンピューティング - 高速に計算する技術 · 今日の内容 1. スーパーコンピュータの仕組み 2. スーパーコンピュータの使い方

アクセラレータ• CPUコアよりも性能や機能が低い演算装置を多数配置

• 基本的な演算(積、和など)を高い電力効率で実行

• CPUからの命令に応じて動作

• 通常、内部に専用のメモリ(デバイスメモリ)を搭載• 適宜、CPU側のメモリ(ホストメモリ)との間でデータ転送

16

メモリ

CPUアクセラレータ

演算装置群 デバイスメモリ

命令

入力データ 結果

Page 17: スーパーコンピューティング - 高速に計算する技術 · 今日の内容 1. スーパーコンピュータの仕組み 2. スーパーコンピュータの使い方

GPGPU (General Purpose computation on Graphic Processing Unit)• グラフィック処理用プロセッサ GPUをシミュレーションや機械学習の計算に使用• どちらも大量の数値データに対して同じ処理を繰り返す計算が主体• 例) NVIDIA GA100:

3456 CUDAコア(一般演算用、9.7 TFLOPS)+ 432 Tensorコア(行列演算用、19.5 TFLOPS)

• https://www.nvidia.com/content/dam/en-zz/ja/Solutions/Data-Center/documents/nvidia-ampere-architecture-whitepaper-jp.pdf

17

https://www.nvidia.com/content/dam/en-zz/Solutions/Data-Center/a100/nvidia-a100-hgx-3qtr-front-left-2c50-d.jpg

Page 18: スーパーコンピューティング - 高速に計算する技術 · 今日の内容 1. スーパーコンピュータの仕組み 2. スーパーコンピュータの使い方

アクセラレータを搭載した計算機の例• IBM Summit

18

IBM Summit 富岳 比率総CPUコア数 202,752 7,299,072ノード数 4,608 158,976アクセラレータ 27,648 0総理論性能 194 PFLOPS 488 PFLOPS 2.5理論CPU性能 5 PFLOPS 488 PFLOPS電力 10.1 MW 28.3 MW 2.8TOP500性能 149 PFLOPS 416 PFLOPS 2.8HPCG性能 2.9 PFLOPS 13.4 PFLOPS 4.6Graph500性能 7.7 GTEPS 70.98 GTEPS 9.2HPL-AI性能 445 PFLOPS 1,421 PFLOPS 3.2

Summitは2年前のシステムなので優劣の比較はあまり意味が無いただし、Summitで HPCG、Graph500の性能が特に低い点は、重要

Page 19: スーパーコンピューティング - 高速に計算する技術 · 今日の内容 1. スーパーコンピュータの仕組み 2. スーパーコンピュータの使い方

アクセラレータの特徴• 長所

• 基本的に、電力に対する性能が高い• 少ないノード数で高い性能が得られる• 特に GPUは、近年、性能向上が著しい

• 例)NVIDIA A100• V100 (Summitのアクセラレータ)の 2.5倍の性能を 1.3倍の電力で達成

• 短所• 不得手なプログラムでは極端に性能が低い• プログラム開発が複雑

• CPU用、アクセラレータ用のプログラム作成• ホストメモリ~デバイスメモリのデータ転送

19

https://www.nvidia.com/content/dam/en-zz/Solutions/Data-Center/a100/nvidia-a100-hgx-3qtr-front-left-2c50-d.jpg

Page 20: スーパーコンピューティング - 高速に計算する技術 · 今日の内容 1. スーパーコンピュータの仕組み 2. スーパーコンピュータの使い方

もう一つの問題:メモリの速さ• メモリから演算器にデータが届かないと演算が出来ない

• 演算性能とメモリ性能のバランスが重要

20

メモリ

演算器

Page 21: スーパーコンピューティング - 高速に計算する技術 · 今日の内容 1. スーパーコンピュータの仕組み 2. スーパーコンピュータの使い方

メモリの速度が足りない• 例) 富岳のCPUとメモリ

• CPU: Fujitsu PROCESSOR A64FX, 2.0GHz, 48コア, 最大32演算

• メモリ: HBM2

21

CPUの性能を約 1.3% しか利用できない??

CPUの演算性能 3,072 GFLOPS2演算(Y=A*X+B)当たりのデータ read 24バイト

演算に必要なメモリ速度 read 73,728 GB/秒メモリ速度 1,024 GB/秒

Page 22: スーパーコンピューティング - 高速に計算する技術 · 今日の内容 1. スーパーコンピュータの仕組み 2. スーパーコンピュータの使い方

メモリの種類と速度• DDR4

• ほとんどのPCやサーバに搭載• DDR5

• 2020年7月に最終仕様発表、2021年に製品登場予定• HBM2 (High Bandwidth Memory)

• 富岳、NVIDIAのGPU に搭載

22

どれも、演算器の演算速度に追いつかない

メモリ 最大メモリ速度 容量DDR4 2933 (Intel Xeon Gold) 140GB/秒 ~1.5TBDDR5 (見込み) DDR4の約2倍 DDR4の約2倍HBM2 (Fujitsu PROCESSOR A64FX) 1,024GB/秒 32GBHBM2 (NVIDIA GA100) 1,600GB/秒 40GB

Page 23: スーパーコンピューティング - 高速に計算する技術 · 今日の内容 1. スーパーコンピュータの仕組み 2. スーパーコンピュータの使い方

キャッシュメモリとレジスタ• キャッシュメモリ:

演算器とメモリの間に置く高速記憶装置• 例) Intel Xeon Gold

• レジスタ:演算器が直接参照できるデータの置き場所

23

メモリ

3次

2次

1次

演算器

キャッシュメモリ階層 速度 容量

1次 約 128バイト/クロック 32KB / コア

2次 約 32バイト/クロック 256KB / コア

3次 約 16バイト/クロック 36MB / CPU

レジスタ

キャッシュやレジスタのデータをうまく再利用できればCPUの性能を発揮

Page 24: スーパーコンピューティング - 高速に計算する技術 · 今日の内容 1. スーパーコンピュータの仕組み 2. スーパーコンピュータの使い方

データの再利用= 「参照の局所性」

• 時間的な参照の局所性• 一度演算に使ったデータを、連続して何度も使う

• 空間的な参照の局所性• 一度演算に使ったデータのすぐ近くのデータを連続して使う

• 例) 行列同士の積の計算

24

for i = 1 to Mfor j = 1 to M

for k = 1 to MC(i, j) = C(i, j) + A(i, k) * B(k, j)

C(i, j)

*+i

j j

A(i, k) B(k, j)

ki k時間的な参照の局所性

空間的な参照の局所性

Page 25: スーパーコンピューティング - 高速に計算する技術 · 今日の内容 1. スーパーコンピュータの仕組み 2. スーパーコンピュータの使い方

スーパーコンピュータの全体構成25

Memory

高速ネットワーク

計算ノード

ログインノード共有ストレージ

…CPU

core

Internet

Page 26: スーパーコンピューティング - 高速に計算する技術 · 今日の内容 1. スーパーコンピュータの仕組み 2. スーパーコンピュータの使い方

計算ノードの構成• 必ず載っているもの:

• 1個~複数個の CPU• メモリ• ネットワークインタフェース

• システムによって載っている場合があるもの:• ディスク (HDD or SSD)

• 用途: OS起動用、一時的なデータ格納用、等• ディスクを搭載しない場合もある

• ネットワーク経由で OSを起動⇒ 電力、故障率の低減、省スペース

• アクセラレータ (GPU等)• 用途: 特定の計算を高速化

26

Memory

CPU

Memory

CPU

Accelerator Local storage

NIC

NIC

Page 27: スーパーコンピューティング - 高速に計算する技術 · 今日の内容 1. スーパーコンピュータの仕組み 2. スーパーコンピュータの使い方

CPUとメモリの位置関係• ノード内の「近い」メモリ

• 直接読み書き可• 高速

• ノード内の「遠い」メモリ• 直接読み書き可• 若干遅い

• 他ノードのメモリ• 直接読み書き不可

• ネットワーク越しに通信• 遅い

27

特にノード間の計算とデータの配置が性能に大きく影響

近いメモリ 遠いメモリ 他のノードのメモリ

Page 28: スーパーコンピューティング - 高速に計算する技術 · 今日の内容 1. スーパーコンピュータの仕組み 2. スーパーコンピュータの使い方

ログインノード• 外部からログインし、対話的に操作できるノード

• 通常、計算ノードとは別に用意• 計算ノードを計算に専念させるため• 計算ノードと CPUや OSが違う場合も

• 富岳では2種類用意• Intel Xeonサーバと、ARMサーバ

• 主な用途• 外部とのファイル転送• プログラムやデータの準備• 計算ノードへの計算依頼• 計算結果の処理

28

Internet

Page 29: スーパーコンピューティング - 高速に計算する技術 · 今日の内容 1. スーパーコンピュータの仕組み 2. スーパーコンピュータの使い方

共有ストレージ• 計算ノード、ログインノードと、複数本の高速ネットワークで接続

• 多数のノードが同時に読み書きすると性能低下

• 富岳の場合• 第一階層

• 16ノード毎に 1.6TBずつ• 主にキャッシュ領域として利用

• 第二階層• 約 150PBを全ノードで共有

• 第三階層(予定)• クラウドストレージ

• Oracle Cloud Infrastructure

29

Page 30: スーパーコンピューティング - 高速に計算する技術 · 今日の内容 1. スーパーコンピュータの仕組み 2. スーパーコンピュータの使い方

高速ネットワーク• 通信性能がスーパーコンピュータの性能に大きく影響• 複数のノードを使った計算• 大量のファイルアクセス

• 富岳の場合• Tofu-D ネットワーク

• 6次元メッシュトーラス構造• 2x3x2 = 12ノード単位で、

格子状にノードを配置し、隣接ノード間を接続

• 少ないコストで高速接続可能• 帯域幅:約 6.8GB/秒• 遅延:約 0.5μ秒

30

出典: http://www.ssken.gr.jp/MAINSITE/download/newsletter/2011/20110825-sci-1/lecture-5/ppt.pdf

Page 31: スーパーコンピューティング - 高速に計算する技術 · 今日の内容 1. スーパーコンピュータの仕組み 2. スーパーコンピュータの使い方

今日の内容1. スーパーコンピュータの仕組み

2. スーパーコンピュータの使い方

3. 九州大学のスーパーコンピュータ ITOの紹介

4. Q & A

31

Page 32: スーパーコンピューティング - 高速に計算する技術 · 今日の内容 1. スーパーコンピュータの仕組み 2. スーパーコンピュータの使い方

一般的なスーパーコンピュータの利用手順1. ログインノードにログイン

2. プログラムやデータの準備

3. 計算ノードに「ジョブ」投入

(実行完了待ち)

4. 実行結果の処理

32

Page 33: スーパーコンピューティング - 高速に計算する技術 · 今日の内容 1. スーパーコンピュータの仕組み 2. スーパーコンピュータの使い方

ジョブ• 計算機にコマンド群の実行を依頼する

単位• ジョブの設定情報も併せて指定

• 使用を希望するノード数、時間、等• ジョブスクリプトファイルに記述

• ジョブ管理システム• 計算ノードが空いたら順にジョブ割り当て

33

#!/bin/bash#PJM -L "rscunit=ito-a"#PJM -L "rscgrp=ito-s-dbg"#PJM -L "vnode=4"#PJM -L "vnode-core=36"#PJM -L "elapse=10:00"#PJM -j#PJM -X

export OMP_NUM_THREADS=36for i in data1 data2 data3 do

mpiexec -n 4 ./run ${i}done

ジョブ管理システム

ジョブ

ジョブの設定

コマンド

空いている場所に割り当て

ジョブスクリプトの例

Page 34: スーパーコンピューティング - 高速に計算する技術 · 今日の内容 1. スーパーコンピュータの仕組み 2. スーパーコンピュータの使い方

スーパーコンピュータは並列計算機

• スーパーコンピュータの性能を発揮させる使い方:計算を分担させ、計算時間を短縮

• ノード、CPU、コア、演算器

• 逐次処理の並列実行• ジョブ単位の並列計算• (1つのジョブで多数プログラムを実行)

• プログラムの並列化• プロセス並列• スレッド並列• ハイブリッド並列• アクセラレータ、SIMD演算器で並列化

34

計算1 計算2 計算3

計算1

計算2

計算3

逐次処理

並列化

Page 35: スーパーコンピューティング - 高速に計算する技術 · 今日の内容 1. スーパーコンピュータの仕組み 2. スーパーコンピュータの使い方

ジョブ単位の並列計算

• 計算したい入力データやプログラムが多数ある場合、簡単にスーパーコンピュータを活用• プログラムの改変なし

• 出力ファイルに用心• 相互に上書きしないよう、ジョブ毎に出力ファイル名を変える

35

入力データ

ジョブ

Page 36: スーパーコンピューティング - 高速に計算する技術 · 今日の内容 1. スーパーコンピュータの仕組み 2. スーパーコンピュータの使い方

1つのジョブで多数プログラムを実行• 実際には、ジョブ単位の同時並列数はシステム側で制限

• 大量ジョブの制御はスーパーコンピュータでも大変・・・• 解決策:1つのジョブで多数のプログラムを実行• 便利なツール: GNU Parallel

• スパコンの並列性を多数の(逐次)プログラムでも活用可能にする

• ジョブ内キューを作って同時実行数を制限しながら順次実行

36

GNU Parallel

(逐次)プログラム

1つのジョブ

ジョブが使える計算資源

Page 37: スーパーコンピューティング - 高速に計算する技術 · 今日の内容 1. スーパーコンピュータの仕組み 2. スーパーコンピュータの使い方

プログラムの並列化• 計算を分割して、計算ノードやコアや演算器に分担させる• 必要に応じて、データも分割• 必要に応じて、通信を呼び出し

• プログラムを「並列化」する必要がある場合:

• 一つのプログラムで、一つの入力データに対して、出来るだけ速く計算したい

• 一つの計算ノードではメモリが不足する

37

どのように分割するか?

Page 38: スーパーコンピューティング - 高速に計算する技術 · 今日の内容 1. スーパーコンピュータの仕組み 2. スーパーコンピュータの使い方

並列化されていないプログラムの例:2つのベクトルの和を計算

• 0番目から99番目までの要素を順に計算

38

A

B

C

=+

=+

=+

=+

=+

=+

=+

=+

=+

=+

=+

=+

=+

=+

=+

=+

=+

=+

=+

=+

0 99...

double A[100], B[100], C[100];...

for (i = 0; i < 100; i++)A[i] = B[i] + C[i];

プログラム

Page 39: スーパーコンピューティング - 高速に計算する技術 · 今日の内容 1. スーパーコンピュータの仕組み 2. スーパーコンピュータの使い方

計算だけを分割: スレッド並列• スレッド = 同じ記憶空間を共有しながら

プログラムの実行を進める流れ

39

A

B

C

=+

=+

=+

=+

=+

=+

=+

=+

=+

=+

=+

=+

=+

=+

=+

=+

=+

=+

=+

=+

...0 24 25... 49 50... 74 75... 99

double A[100],B[100],C[100];...

for (i=0; i<25; i++)A[i] = B[i] + C[i];

double A[100],B[100],C[100];...

for (i=25; i<50; i++)A[i] = B[i] + C[i];

double A[100],B[100],C[100];...

for (i=50; i<75; i++)A[i] = B[i] + C[i];

double A[100],B[100],C[100];...

for (i=75; i<100; i++)A[i] = B[i] + C[i];スレッド0 スレッド1 スレッド2 スレッド3

スレッド0 スレッド1 スレッド2 スレッド3全スレッドが同じ配列を共有

Page 40: スーパーコンピューティング - 高速に計算する技術 · 今日の内容 1. スーパーコンピュータの仕組み 2. スーパーコンピュータの使い方

計算とデータを分割: プロセス並列• プロセス = それぞれ独立した記憶空間を持って

プログラムの実行を進める流れ

40

double A[25],B[25],C[25];...

for (i=0;i<25;i++)A[i] = B[i] + C[i];

プロセス0

A

B

C

=+

=+

=+

=+

=+

...0 24

プロセス0

A

B

=+

=+

=+

=+

=+

...0 24

プロセス1

A

B=

+=

+=

+=

+=

+...0 24

プロセス2

A

B

=+

=+

=+

=+

=+

...0 24

プロセス3

double A[25],B[25],C[25];...

for (i=0;i<25;i++)A[i] = B[i] + C[i];

double A[25],B[25],C[25];...

for (i=0;i<25;i++)A[i] = B[i] + C[i];

double A[25],B[25],C[25];...

for (i=0;i<25;i++)A[i] = B[i] + C[i];

プロセス1プロセス2

プロセス3

C C C各プロセスが別の配列を利用

Page 41: スーパーコンピューティング - 高速に計算する技術 · 今日の内容 1. スーパーコンピュータの仕組み 2. スーパーコンピュータの使い方

ハイブリッド並列• 各プロセスの中で複数のスレッドを実行

41

double A[25],B[25],C[25];...

for (i=0;i<5;i++)A[i] = B[i] + C[i];プロセス0スレッド0

A

B

C

=+

=+

=+

=+

=+

0-4 20-24

プロセス0

A

B

=+

=+

=+

=+

=+

...

プロセス1

A

B=

+=

+=

+=

+=

+

プロセス2

A

B

=+

=+

=+

=+

=+

プロセス3

C C C

5-9 0-4 20-24...5-9 0-4 20-24...5-9 0-4 20-24...5-9

スレッド0スレッド1

スレッド4

double A[25],B[25],C[25];...

for (i=5;i<10;i++)A[i] = B[i] + C[i];プロセス0スレッド1

double A[25],B[25],C[25];...

for (i=20;i<25;i++)A[i] = B[i] + C[i];プロセス0スレッド4

double A[25],B[25],C[25];...

for (i=0;i<5;i++)A[i] = B[i] + C[i];プロセス1スレッド0double A[25],B[25],C[25];

...for (i=5;i<10;i++)

A[i] = B[i] + C[i];プロセス1スレッド1double A[25],B[25],C[25];

...for (i=20;i<25;i++)

A[i] = B[i] + C[i];プロセス1スレッド4

double A[25],B[25],C[25];...

for (i=0;i<5;i++)A[i] = B[i] + C[i];プロセス2スレッド0double A[25],B[25],C[25];

...for (i=5;i<10;i++)

A[i] = B[i] + C[i];プロセス2スレッド1double A[25],B[25],C[25];

...for (i=20;i<25;i++)

A[i] = B[i] + C[i];プロセス2スレッド4

double A[25],B[25],C[25];...

for (i=0;i<5;i++)A[i] = B[i] + C[i];プロセス3スレッド0double A[25],B[25],C[25];

...for (i=5;i<10;i++)

A[i] = B[i] + C[i];プロセス3スレッド1double A[25],B[25],C[25];

...for (i=20;i<25;i++)

A[i] = B[i] + C[i];プロセス3スレッド4

スレッド0スレッド1

スレッド4

スレッド0スレッド1

スレッド4

スレッド0スレッド1

スレッド4

Page 42: スーパーコンピューティング - 高速に計算する技術 · 今日の内容 1. スーパーコンピュータの仕組み 2. スーパーコンピュータの使い方

プロセス、スレッドとノード、コア• プロセスは、一つのノードの中で実行• スレッドは、プロセスに割り当てられたコアの一つで実行

• 例) 2ノード x 12コアでの計算• 一つのコアに一つのスレッドを割り当てる場合

42

2プロセス x 12スレッド 4プロセス x 6スレッド 8プロセス x 3スレッド

Page 43: スーパーコンピューティング - 高速に計算する技術 · 今日の内容 1. スーパーコンピュータの仕組み 2. スーパーコンピュータの使い方

アクセラレータ、SIMD演算器での計算• アクセラレータ

• 専用のプログラム言語やインタフェースで、「アクセラレータに任せる計算」を記述

• CUDA C(GPU用)の例

• もっと簡単に記述できる方法も登場• OpenACC, OpenMP 4.0以降

• SIMD演算器• 内部では、「SIMD命令」で並列処理• 多くの場合、コンパイラが自動的に

SIMD命令に変換

43

__global__ void vectorAdd(const float *A, const float *B, float *C, int numElements){

int i = blockDim.x * blockIdx.x + threadIdx.x;if(i < numElements)

C[i] = A[i] + B[i];}

int main(void){

...vectorAdd<<<blocksPerGrid, threadsPerBlock>>>(d_A, d_B, d_C, numElements);

...}

__m512 ax = _mm512_load_ps(&a[i]);__m512 bx = _mm512_load_ps(&b[i]);sumx = _mm512_fmadd_ps(ax, bx, sumx);

Page 44: スーパーコンピューティング - 高速に計算する技術 · 今日の内容 1. スーパーコンピュータの仕組み 2. スーパーコンピュータの使い方

プログラム並列化の効果• 速度向上率=(並列化前の実行時間) / (並列化後の実行時間)• 並列化によって何倍速くなったか

44

並列化前 並列化後

10時間

1時間

速度向上率 = 10.0

Page 45: スーパーコンピューティング - 高速に計算する技術 · 今日の内容 1. スーパーコンピュータの仕組み 2. スーパーコンピュータの使い方

並列化に対する期待と現実

• 期待:「CPUを 4台使うんだから,並列化で 4倍速くなって欲しい」

• 現実:「CPU 4台で 3倍くらい速くなれば十分だろう」• 探索問題などでは、台数より速く結果が得られることはある

• 主な理由• アムダールの法則• 負荷のバランス• 通信のコスト

45

Page 46: スーパーコンピューティング - 高速に計算する技術 · 今日の内容 1. スーパーコンピュータの仕組み 2. スーパーコンピュータの使い方

アムダールの法則• プログラム中の高速化した部分しか高速化されない

• 並列化にあてはめて考えると:並列化による性能向上率の理論的な限界

=1/((1-P)+P/N)• P: プログラム中の並列化対象部分が全処理時間に占める割合• N: プロセス数

• Example) N=4 で 3.5倍以上高速化するためには 95%以上の部分の並列化が必要

46

Page 47: スーパーコンピューティング - 高速に計算する技術 · 今日の内容 1. スーパーコンピュータの仕組み 2. スーパーコンピュータの使い方

負荷のバランス• 並列プログラムの実行時間は

「最も遅いプロセスの実行時間」である

47

プロセス0

プロセス1

プロセス2

プロセス3

プロセス0

プロセス1

プロセス2

プロセス3

全体の実行時間 全体の実行時間

Page 48: スーパーコンピューティング - 高速に計算する技術 · 今日の内容 1. スーパーコンピュータの仕組み 2. スーパーコンピュータの使い方

通信時間

• 並列化前は不要だった時間

48

Rank 0

Rank 1

Rank 2

Rank 3

並列化前

並列化後

Page 49: スーパーコンピューティング - 高速に計算する技術 · 今日の内容 1. スーパーコンピュータの仕組み 2. スーパーコンピュータの使い方

並列化以外の高速化も重要• コンパイラの最適化オプションを試す

• キャッシュメモリやレジスタの利用効率を上げるようプログラムを改良する

• 無駄な計算を省く

49

それでも速度が遅ければ、プログラムを並列化

Page 50: スーパーコンピューティング - 高速に計算する技術 · 今日の内容 1. スーパーコンピュータの仕組み 2. スーパーコンピュータの使い方

誰がプログラムを並列化するか?1. 既に誰かが並列化したプログラムを使う

2. 誰かが並列化したライブラリを使う

3. コンパイラに並列化させる

4. 自分で並列化する

50

Page 51: スーパーコンピューティング - 高速に計算する技術 · 今日の内容 1. スーパーコンピュータの仕組み 2. スーパーコンピュータの使い方

1.既に誰かが並列化したプログラム

• スーパーコンピュータセンターで用意されているアプリケーションを確認• 並列化されていれば、マニュアルに「プロセス数」や「スレッド

数」の指定方法があるはず

• 並列化されたオープンソースソフトウェアの利用• コンパイル方法や実行方法の詳細は、センターの Webページ等を

参照• 困ったらセンターに相談

51

Page 52: スーパーコンピューティング - 高速に計算する技術 · 今日の内容 1. スーパーコンピュータの仕組み 2. スーパーコンピュータの使い方

2.誰かが並列化したライブラリ• 主に行列計算の関数を提供

52

ライブラリ名 内容Fujitsu SSLII 連立1次方程式の直接解法・反復解法、逆行列、固

有値問題、フーリエ変換、擬似乱数など

Intel Math Kernel Library BLAS、LAPACK、ScaLAPACK、BLACS、PBLAS、Sparse BLAS、疎行列演算関数(PARDISO含む)、フーリエ変換、 偏微分方程式、非線形最適化ソルバ、データフィッティング関数、GMP(多倍長計算)関数、 ベクトル化数学ライブラリ(VML)、統計関数(疑似乱数生成含む)

NAG Library Numerical Algorithm Group社によって開発された数値計算ライブラリ

FFTW 離散フーリエ変換PETSc 偏微分方程式によって記述された問題を並列計算機

上で高速に処理するための数値計算ライブラリ

Page 53: スーパーコンピューティング - 高速に計算する技術 · 今日の内容 1. スーパーコンピュータの仕組み 2. スーパーコンピュータの使い方

3.コンパイラによる並列化• コンパイラが、プログラムのスレッド並列化や、SIMD命令の挿入を自動的に適用

• ほとんどの C, C++, Fortranコンパイラで利用可能• GNU, Intel, Fujitsu, PGI, etc.

• 簡単なプログラムでは、それなりの効果• ループの中に関数呼び出しや条件分岐が入っていない• ループの繰り返し数が、コンパイル時に分かっている• ループの繰り返し順序が変わっても、計算結果が変わらない

53

それでも速度が遅ければ、自分でプログラムを並列化

Page 54: スーパーコンピューティング - 高速に計算する技術 · 今日の内容 1. スーパーコンピュータの仕組み 2. スーパーコンピュータの使い方

4.自分で並列化• 最も一般的な方法:

• OpenMP でスレッド並列化

• MPI (Message Passing Interface) でプロセス並列化

• 他にも:• Chapel• CAF (Co-array Fortran)• XcalableMP

54

Page 55: スーパーコンピューティング - 高速に計算する技術 · 今日の内容 1. スーパーコンピュータの仕組み 2. スーパーコンピュータの使い方

OpenMPによる並列化• プログラム中に「指示行」を追加

• コンパイラが指示に従ってスレッド並列プログラムを作成

55

#include <omp.h>double A[100], B[100], C[100];

...#pragma omp parallel forfor (i = 0; i < 100; i++)

A[i] = B[i] + C[i];

並列化指示行

Page 56: スーパーコンピューティング - 高速に計算する技術 · 今日の内容 1. スーパーコンピュータの仕組み 2. スーパーコンピュータの使い方

MPI (Message Passing Interface)• 並列プログラム用に用意された通信関数群の定義

• 例) プロセス0からプロセス1にデータを転送

56

MPI_Comm_rank(MPI_COMM_WORLD, &myid);...

if (myid == 0) MPI_Send(&(a[5]), 1, MPI_DOUBLE, 1,

0, MPI_COMM_WORLD);if (myid == 1)MPI_Recv(&(a[3]), 1, MPI_DOUBLE, 0,

0, MPI_COMM_WORLD, &status);

自分のプロセス番号を取得

プロセス0がプロセス1に送信

プロセス1がプロセス0から受信

プロセス0 プロセス1

MPI_Send MPI_Recv

Page 57: スーパーコンピューティング - 高速に計算する技術 · 今日の内容 1. スーパーコンピュータの仕組み 2. スーパーコンピュータの使い方

今日の内容1. スーパーコンピュータの仕組み

2. スーパーコンピュータの使い方

3. 九州大学のスーパーコンピュータ ITOの紹介

4. Q & A

57

Page 58: スーパーコンピューティング - 高速に計算する技術 · 今日の内容 1. スーパーコンピュータの仕組み 2. スーパーコンピュータの使い方

九州大学のスーパーコンピュータ ITO

58

(InfiniBand EDR 100Gbps)

Page 59: スーパーコンピューティング - 高速に計算する技術 · 今日の内容 1. スーパーコンピュータの仕組み 2. スーパーコンピュータの使い方

ITOと富岳の比較59

ITO 富岳サブシステムA サブシステムB

総CPUコア数 72,000 4608 7,299,072ノード数 2,000 128 158,976アクセラレータ 0 512 0総理論性能 6.9 PFLOPS 3.0 PFLOPS 488 PFLOPS理論CPU性能 6.9 PFLOPS 0.3 PFLOPS 488 PFLOPSTOP500性能 4.5 PFLOPS 416 PFLOPS電力 約 2.0 MW 28.3 MW

https://www.fujitsu.com/jp/about/businesspolicy/tech/fugaku/

Page 60: スーパーコンピューティング - 高速に計算する技術 · 今日の内容 1. スーパーコンピュータの仕組み 2. スーパーコンピュータの使い方

ITOのインターコネクトネットワーク• NVIDIA InfiniBand EDR

• リンク当たりバンド幅: 12.5 GB/秒• 通信遅延: 約 1μ秒• 形状: Fat Tree• 機能: 遠隔メモリアクセス、集約演算オフロード

60

Page 61: スーパーコンピューティング - 高速に計算する技術 · 今日の内容 1. スーパーコンピュータの仕組み 2. スーパーコンピュータの使い方

ITOの利用法• フロントエンド

• 対話的に利用• 30分単位の予約利用、もしくは月単位の占有利用

• バックエンド• バッチジョブで利用

61

Page 62: スーパーコンピューティング - 高速に計算する技術 · 今日の内容 1. スーパーコンピュータの仕組み 2. スーパーコンピュータの使い方

想定している利用例- 大規模シミュレーション

• バックエンド• ジョブでシミュレーション

プログラム実行

• フロントエンド• 対話的に、

- 入力データの作成- 計算結果の解析、可視化

バックエンド

ストレージ

入力データ

フロントエンド

大規模計算

入力データ作成

可視化計算結果

Page 63: スーパーコンピューティング - 高速に計算する技術 · 今日の内容 1. スーパーコンピュータの仕組み 2. スーパーコンピュータの使い方

想定している利用例- データサイエンス

• ストレージ• インターネット経由で

データ収集

• バックエンド• 機械学習、解析

• フロントエンド• 学習データの作成• 結果の可視化

バックエンド

ストレージ

オンラインデータ

フロントエンド

収集

学習・解析

可視化

Page 64: スーパーコンピューティング - 高速に計算する技術 · 今日の内容 1. スーパーコンピュータの仕組み 2. スーパーコンピュータの使い方

ITOのソフトウェア64

種類 ソフトウェア名

コンパイラ、言語処理系

C / C++ / Fortran (Intel, 富士通, PGI, GNU),Python, Java, etc

数値計算ライブラリ Intel MKL, 富士通 SSL II, BLAS/LAPACK, NAG, FFTW, PETScその他ライブラリ HDF5, NetCDF化学 Gaussian, Gaussview, CHARMM, VASP, Molpro, SCIGRESS,

AMBER, GAMESS, GROMACS流体・構造解析 Marc, MSC NASTRAN/Patran, ANSYS, OpenFOAM,

FrontFlow/Redデータ解析 SAS, ENVI/IDL, R数値計算 MATLAB機械学習 TensorFlow, Caffe, Chainer, CNTK画像処理 FIELDVIEW, AVS

利用者からの追加要望にも、可能な範囲で対応

Page 65: スーパーコンピューティング - 高速に計算する技術 · 今日の内容 1. スーパーコンピュータの仕組み 2. スーパーコンピュータの使い方

ITOの利用資格• 大学、高等専門学校又は大学共同利用機関の教員及び学生• 独立行政法人に所属する研究職員• 学術研究を目的とする研究機関でセンター長が認めた機関に所属し、専ら研究に従事する者

• 外部資金を受けて学術研究を行う者• 民間企業等に所属する者で、別に定める審査機関における審査を経て、センター長が認めた者

• その他特にセンター長が適当と認めた者

65

Page 66: スーパーコンピューティング - 高速に計算する技術 · 今日の内容 1. スーパーコンピュータの仕組み 2. スーパーコンピュータの使い方

ITOの利用プラン (有料)• 共有タイプ

• 計算ノード群を複数のユーザで共有して利用

• ノード固定タイプ• 割り当てられた計算ノード群を準占有的に利用

66

Page 67: スーパーコンピューティング - 高速に計算する技術 · 今日の内容 1. スーパーコンピュータの仕組み 2. スーパーコンピュータの使い方

ITOの利用負担金• サブシステム A

• 4ノード(共有): 2,960円 / 月• 4ノード(固定): 23,600円 / 月

• サブシステム B• 1ノード(共有): 2,100円 / 月• 1ノード(固定): 17,000円 / 月

• 基本フロントエンド• 2CPU x 24時間まで同時予約可能: 900円 / 月

• 大規模フロントエンド• 8CPU x 24時間まで同時予約可能: 5,200円 / 月

• ストレージ• 10TB: 340円 / 月

67

Page 68: スーパーコンピューティング - 高速に計算する技術 · 今日の内容 1. スーパーコンピュータの仕組み 2. スーパーコンピュータの使い方

プロジェクト利用 (原則無料)• 先端的計算科学研究プロジェクト

• ITOを対象に九州大学が公募(毎年度末締切)

• HPCI (High Performance Computing Infrastructure)• 全国の共同利用スーパーコンピュータを対象に高度情報科学技術

研究機構が公募

• JHPCN (学際大規模情報基盤共同利用・共同研究拠点)• 全国の共同利用スーパーコンピュータを対象にJHPCNが公募(毎

年1月締切)

• JHPCN-Q • ITOを対象に、萌芽研究支援を目的として九州大学が公募(随時)

68

Page 69: スーパーコンピューティング - 高速に計算する技術 · 今日の内容 1. スーパーコンピュータの仕組み 2. スーパーコンピュータの使い方

申請から利用開始までの流れ1. 利用申請

• 利用プランの検討• 計算機利用申請書を記入• 申請書送付• 利用承認書発行(1週間程度)

2. 利用準備• 初期パスワード変更• 公開鍵登録• 必要なファイルのアップロード、

もしくは作成• プログラムのコンパイル

3. 利用(フロントエンド)• 予約• ログインしてプログラム実行

4. 利用(バックエンド)• ジョブスクリプトの作成• ジョブ投入• 結果の確認

69

Page 70: スーパーコンピューティング - 高速に計算する技術 · 今日の内容 1. スーパーコンピュータの仕組み 2. スーパーコンピュータの使い方

1.利用申請利用プランの検討

• 共有タイプ or ノード固定タイプ• 最初は共有タイプの利用を推奨

• 利用システム• 対話的な利用が不要な場合

• サブシステム A:• CPUのみ、メモリ 192GB / ノード

• サブシステム B: • CPU + GPU利用、メモリ 384GB / ノード

• 対話的な利用が必要な場合• 基本フロントエンド: 384GBメモリ / ノード• 大容量フロントエンド: 12TBメモリ / ノード

• 上記を組み合わせて利用可能

• 使用ノード数• プログラムやデータによる

• 使用メモリ量、一回の計算にかかる時間、同時に何個の計算を実行させるか、等

• ストレージ• 10TB or 100TB

70

例)今まで 4コア 16GBの PCで1回1時間かかったプログラムを1000個のデータについて実行したい

- 方法 1 プログラムを変更しない場合・ITO サブシステムAを 4ノード利用・4ノードで最大 16個のジョブ(データ)を

同時実行(ノード当たり 4個ずつ)・所要時間: 約 64時間

- 方法 2 GPUで 10倍高速化されたプログラムを利用できる場合

・ITO サブシステムBを 2ノード利用・2ノードで最大 2個のジョブを同時実行・所要時間: 約 50時間

- さらに、大量の計算結果からグラフを作成するために基本フロントエンド Sプラン(2CPU * 24時間まで同時予約可能)

- ストレージは、とりあえず 10TB(足りなくなったら、研究室に退避するか、

容量を追加申請)

利用負担金表:https://www.cc.kyushu-u.ac.jp/scp/service/fee_list/

Page 71: スーパーコンピューティング - 高速に計算する技術 · 今日の内容 1. スーパーコンピュータの仕組み 2. スーパーコンピュータの使い方

1.利用申請利用申請書の記入

• 利用タイプに応じて選択• 利用タイプを組み合わせて利用する場合は、両方提出

71

共有利用

利用申請書:https://www.cc.kyushu-u.ac.jp/scp/service/guidance/application/

利用は月単位研究費を管理している会計担当の方に相談

固定ノード共有利用

Page 72: スーパーコンピューティング - 高速に計算する技術 · 今日の内容 1. スーパーコンピュータの仕組み 2. スーパーコンピュータの使い方

1.利用申請申請書の記入

• 申請書2ページ目 (共有、固定ノード利用共通)• 全利用者の情報を記入

• 外国籍や海外居住の方の利用承認には1か月程度必要

72

Page 73: スーパーコンピューティング - 高速に計算する技術 · 今日の内容 1. スーパーコンピュータの仕組み 2. スーパーコンピュータの使い方

1.利用申請利用承認書到着

• アカウント• 初期パスワード

を確認

73

Page 74: スーパーコンピューティング - 高速に計算する技術 · 今日の内容 1. スーパーコンピュータの仕組み 2. スーパーコンピュータの使い方

2.利用準備初期パスワード変更

• ITOポータルにアクセスhttps://ito-portal.cc.kyushu-u.ac.jp/itoportal

• 配布されたユーザIDと初期パスワードでログイン• 新しいパスワードを入力(2回)

• 8文字以上• 変更後、反映されるまでに数分要します。

74

Page 75: スーパーコンピューティング - 高速に計算する技術 · 今日の内容 1. スーパーコンピュータの仕組み 2. スーパーコンピュータの使い方

2.利用準備公開鍵登録

• 鍵ペア(秘密鍵、公開鍵)の用意• まだ作成していなければ、新規に作成

• 注意: SSH-1(RSA)等の古い鍵ではログイン不可⇒ 新規に鍵ペアを作成

• Windows:端末エミュレータ(MobaXterm、Putty、TeraTerm等)に付属の作成ツール

• macOS、Linux:ターミナルで ssh-keygen

• 公開鍵の登録• 本センター Webサイトを参照

75

公開鍵登録:https://www.cc.kyushu-u.ac.jp/scp/system/ITO/02_login/2.html

Page 76: スーパーコンピューティング - 高速に計算する技術 · 今日の内容 1. スーパーコンピュータの仕組み 2. スーパーコンピュータの使い方

2.利用準備ファイルのアップロード

• Windowsの場合: WinSCP

• macOS, Linuxの場合: scpコマンド

76

ファイル転送:https://www.cc.kyushu-u.ac.jp/scp/system/ITO/02_login/

Page 77: スーパーコンピューティング - 高速に計算する技術 · 今日の内容 1. スーパーコンピュータの仕組み 2. スーパーコンピュータの使い方

2.利用準備ログインノードにログイン

• Windowsの場合:• 端末エミュレータを利用

• MobaXterm, TeraTerm,Putty, etc.

• Windows上の Linux• Cygwin,

Bash on Ubuntu on Windows,etc.

• macOS, Linuxの場合:• ターミナルから sshコマンドでログイン

77

ファイル転送:https://www.cc.kyushu-u.ac.jp/scp/system/ITO/02_login/

$ ssh -i 秘密鍵ファイル名 -l ユーザ名 ito.cc.kyushu-u.ac.jp

Page 78: スーパーコンピューティング - 高速に計算する技術 · 今日の内容 1. スーパーコンピュータの仕組み 2. スーパーコンピュータの使い方

2.利用準備プログラムのコンパイル

• 自作プログラムやオープンソースソフトウェアの場合

• 利用可能コンパイラ (C / C++ / Fortran)• Intel Compier• GNU• Fujitsu• PGI

• 例) Intel Compiler 2018の場合

78

$ module load intel/2018.3$ icc -ipo -O3 -no-prec-div -fp-model fast=2 -xHost test.c -o test

コンパイラの利用方法:https://www.cc.kyushu-u.ac.jp/scp/software/

Page 79: スーパーコンピューティング - 高速に計算する技術 · 今日の内容 1. スーパーコンピュータの仕組み 2. スーパーコンピュータの使い方

3.利用(フロントエンド予約利用)予約

1.予約システムにログインhttps://ito-portal.cc.kyushu-u.ac.jp/itofront

2.システムの空き状況確認3.自分の利用状況確認4.予約

79

フロントエンドの予約:https://www.cc.kyushu-u.ac.jp/scp/system/ITO/frontend/

Page 80: スーパーコンピューティング - 高速に計算する技術 · 今日の内容 1. スーパーコンピュータの仕組み 2. スーパーコンピュータの使い方

3.利用(フロントエンド予約利用)ログイン

• 利用の準備が出来たらメールで利用ノード情報を通知• IPアドレスを確認

• ログインノードから、指定された IPアドレスにログイン

80

$ ssh -Y 予約したホストの IPアドレス

Page 81: スーパーコンピューティング - 高速に計算する技術 · 今日の内容 1. スーパーコンピュータの仕組み 2. スーパーコンピュータの使い方

3.利用(フロントエンドノード固定利用)ログイン

• 利用承認時に IPアドレス通知

• 自分の PCから、指定された IPアドレスに直接ログイン

81

Page 82: スーパーコンピューティング - 高速に計算する技術 · 今日の内容 1. スーパーコンピュータの仕組み 2. スーパーコンピュータの使い方

3.利用(バックエンド)ジョブスクリプトの作成

• テキストファイルとして作成• ログインノードで編集、もしくは PCで編集したものをアップロード

• 処理してほしい内容とジョブの内容を記述

• 例) サブシステム Aを 1ノード利用するプログラムの実行

82

#!/bin/sh

#PJM -L "vnode=1"#PJM -L "vnode-core=36"#PJM -L "rscunit=ito-a"#PJM -L "rscgrp=ito-ss"#PJM -L "elapse=02:00:00"

module load intel/2018.3./test data1

Page 83: スーパーコンピューティング - 高速に計算する技術 · 今日の内容 1. スーパーコンピュータの仕組み 2. スーパーコンピュータの使い方

3.利用(バックエンド)ジョブ投入と結果確認

• ジョブの投入

• ジョブの状態確認

• ジョブの結果確認

83

$ pjsub test.sh[INFO] PJM 0000 pjsub Job 28246 submitted.

$ ls test test.c test.sh test.sh.i28246 test.sh.o28246

$ pjstat

ACCEPT QUEUED STGIN READY RUNING RUNOUT STGOUT HOLD ERROR TOTAL0 0 0 0 1 0 0 0 0 1

s 0 0 0 0 1 0 0 0 0 1

JOB_ID JOB_NAME MD ST USER START_DATE ELAPSE_LIM NODE_REQUIRE VNODE CORE V_MEM28246 test-mpifc NM RNE k70043a 10/04 09:34:06 0000:05:00 - 1 36 unlimited

Page 84: スーパーコンピューティング - 高速に計算する技術 · 今日の内容 1. スーパーコンピュータの仕組み 2. スーパーコンピュータの使い方

3.利用ITOポータル

• Webインタフェースでバックエンドを利用可能• ファイル転送• コンパイル• バッチジョブ投入• 結果確認

• 利用方法• 「メイン」タブの、

「マニュアル」の「ITO Portal」を参照

84

Page 85: スーパーコンピューティング - 高速に計算する技術 · 今日の内容 1. スーパーコンピュータの仕組み 2. スーパーコンピュータの使い方

Q & A• ITOの情報

• https://www.cc.kyushu-u.ac.jp/scp/system/ITO/

• ITO、スーパーコンピューティングに関する問い合わせ• E-mail: [email protected]

• 九州大学 情報システム部情報基盤課 全国共同利用担当

85