第57回お試しアカウント付き講習会「超初心者利用」
2023年12月11日
名古屋大学 情報基盤センター
特任助教 河合 直聡

2023/12/11 v2.0

超初心者利用

2

本講習会の狙い これからスーパーコンピュータ（スパコン）の利用を開始される方のための講習会
 研究等でスパコンを利用予定
 本学または他学のスパコン講習会を受講予定
 ログインからプログラム実行、結果の確認まで
 以下の単語（内容）について紹介 ssh(ログイン)
 Linuxコマンド(ファイル操作、コンパイル)
 ジョブスケジューラー（プログラム実行） 受講者の皆様の需要にこたえられるかどうかは別の講習会で
 高速化したい 大規模な問題を扱いたい 試行回数を増やしたい2022/4/22

3

超初心者利用

スパコン向け最適化に関する講習会 ＠ 名大ITC
目的に応じて受講をご検討ください。
Modeling

Algorithm

中級

上級

Science

Hardware

並列プログラミング(OpenMP)
性能チューニング

OpenFOAM (中級)

OpenACC(初級)MPI (初級)

Gaussian講習会

初級

Software

OpenFOAM (初級)
OpenFOAM (基礎)

機械学習活用(初級)OpenMP(初級)

数値計算ライブラリ
超初心者利用超初心者利用

4

講習会を始める前に 質問は随時受付とします。
1. Zoomメニュー中の「リアクション」
 Zoomの挙手機能を利用ください。
をクリック
 短く答えられる物はその場で対応します。
 操作方法など、時間を必要とする
質問は後程の実習時間で対応します。
2.

ポップアップで表示された「手を挙げる」をクリック

超初心者利用

 スーパーコンピュータとは？
 スーパーコンピュータで何ができるのか？
 スーパーコンピュータの使い方 ログイン プログラム作成
 コンパイル 実行
 結果の確認5

2022/4/22

超初心者利用名大スーパーコンピュータ 不老 TypeⅠ、Ⅱ
TypeⅠ

TypeⅡ

6

2022/4/22

7

超初心者利用

スーパーコンピュータ、略してスパコン
高い性能をもつ大規模計算機
コア
CPU

ノード0
メモリ
CPU

メモリ

ノード1
メモリ

メモリ

CPU

CPU

CPU

GPUなど加速装置ある場合もネットワーク

ここ20年のスーパーコンピュータ＝ 多数の構成要素が協調して動作→ 高速な浮動小数点計算、大規模データ処理

ストレージ

高性能なノード、高速なネットワーク、大容量かつ高速なストレージ

2022/4/22

8

超初心者利用

性能指標 〜 不老 TypeⅠを例に (1)多数のコア、高いメモリ転送速度

CPU
MemoryCore i911900

不老 TypeⅠ

コア数

8

48

周波数 [GHz]

2.5

2.2

容量 [GByte]

128

32

転送速度 [GByte/秒]

50

1,024

約200mm

約270mm

これで2台分
出展：https://www.nextplatform.com/2021/06/22/u-sinstitutions-put-fujitsu-a64fx-through-the-paces/

ボードには水冷（とにかく熱い）！

2022/4/22

9

超初心者利用大きいことはいいこと（もある）
たくさんのパソコンを同時に連携して使用するようなもの
図は富岳の説明

出展：https://www.fujitsu.com/jp/about/businesspolicy/tech/design/activities/primehpc01/

2ノード

×8

×3
×8

×6

全部で2,304ノード

2022/4/22

10

超初心者利用

性能指標 〜 不老TypeⅠを例に (2)多数のノード数を全体で繋ぐためにネットワークは非常に複雑かつ高速
TofuD (Torus Fusion-high Density)
全体の通信性能とスケールを両立させたネットワークトポロジー
全ノードで通信してもそれほど性能が落ちない。
簡単な接続例と問題点
通信性能、スケール性ともに低switch

高スケール性、低信性能

switch

ここがネック
隣接ノード間
出展：Supercomputer PRIMEHPC FX 100 Evolution to the Next
Generation Next Generation Technical Computing Unit

転送速度
[Gbit/秒]

携帯
４G
0.1 ~ 1.0

無線
(Wifi 11ac)
6.9

Tofu

Infiniband
EDR(TypeⅡ)*
1 54.41200

有線(Gigabit
Ether)*1 隣接ノード6台と同時に通信しても性能は落ちない。

2022/4/22

スーパーコンピュータ超入門

別のスパコン(OBCX)のネットワーク構成
こちの方が高性能だが、低スケール性能かつ高額
携帯
４G
転送速度
[Gbit/秒]

0.1 ~ 1.0

無線
(Wifi 11ac)
6.9

Omni-path(OBCX)

有線(Gigabit
Ether)
1100

11

2022/4/22

12

超初心者利用

性能指標 〜 OBCXを例に (3)大容量・高速のストレージ
不老 ホットストレージ （FEFS）
 容量 ： 30.44PByte (33,440TByte) 構成 ： HDD 14TB x 730本
 転送速度 ： おおよそ100GByte/秒
HDD,SSDの転送速度はHDD ：0.1～0.2GByte/秒
SSD ： ～7GByte/秒*2023年9月現在

2022/4/22

13

超初心者利用全体性能
FLOPS値（Floating Point Operations per Second，浮動小数点演算）
1秒当たりの実数演算性能• 106 FLOPS= 1 Mega FLOPS = 1 MFLOPS• 109 FLOPS= 1 Giga FLOPS = 1 GFLOPS• 1012 FLOPS= 1 Tera FLOPS = 1 TFLOPS• 1015 FLOPS= 1 Peta FLOPS = 1 PFLOPS• 1018 FLOPS= 1 Exa FLOPS = 1 EFLOPS

（百万）
（十億）
（兆）
（千兆）
（百京）

不老 TypeⅠ– Fujitsu A64fx：1コアの性能は86.4GFLOPS– 1ノード：48コア» 1秒間に864億回の倍精度実数演算» 3,379.2 GFLOPS= 3.3792 TFLOPS– 全システム：2,304ノード〜 3兆3,792億回

7.782 PFLOPS 〜7,782兆回

2022/4/22

超初心者利用不老全体の構成

14

超初心者利用

 スーパーコンピュータとは？
 スーパーコンピュータで何ができるのか？
 スーパーコンピュータの使い方 ログイン プログラム作成
 コンパイル 実行
 結果の確認15

2022/4/22

16

超初心者利用スパコン利用に向けて何を学ぶのか？
Case A ) 新しい計算向けのプログラムを作る
Case A ) 誰かが作ったプログラムを速くする
繰り返し計算を高速化したい
基本のところは C/C++ と FORTRAN で共通特有の技術必要！

do i=1, 1000000
c(i) = a(j) * x(i,j) + b(i)enddo

1. CPU、GPUが動作しやすい形にプログラムを書き換える方法
SIMD演算、キャッシュの活用、メモリアクセス改善

2. 協調動作のための分散処理方法、CPU間など通信方法、GPUの利用
OpenMPMPI

OpenACC、CUDA

3. 上記1. 2. を最適にして演算を行うライブラリの呼出方法

2022/4/22

超初心者利用スパコン利用に向けて何を学ぶのか？
Case B )スパコン向けに作られたソフトウェアを利用する

数値流体力学、構造解析、統計解析、
分子動力学、電子状態計算、量子化学計算、…
ソフトウェアがどのように協調動作するのかの概略を理解することにつとめる→ 並列プログラミングをしない人でも、使ってみた
速さなどから、計算の仕組みのイメージを獲得

17

2022/4/22

超初心者利用18

スパコン利用に向けて何を学ぶのか？
Case C )新しいタイプのデータ処理（学習）をしたいー

多くの方は、手元のマシンで何かされてる方かもしれません

1. Python等による高速なデータ処理
2. スパコン特有の環境構築の方法（コンテナ環境の利用など）
多数のGPUの使用方法
3. バッチジョブシステム特有の事項
注：大学設置スパコンだとどうしても（民間のクラウドと比較すると）少し環境準備が手間がかかるところはあります。

2022/4/22

超初心者利用スパコン利用に向けて何を学ぶのか？
Case D )多数のパラメータ、パターンの組み合わせを試したい

Embarrassingly Parallel(バカパラ)
1.バッチジョブシステムとどう付き合うか
Xcryptというツールがあります。
講習会も検討中192022/4/22

20

超初心者利用

スパコン向け最適化に関する講習会 ＠ 名大ITC
目的に応じて受講をご検討ください。
ScienceModeling

Algorithm

上級
中級

Hardware

並列プログラミング(OpenMP)
性能チューニング

OpenFOAM (中級)

OpenACC(初級)MPI (初級)

Gaussian講習会

初級

Software

OpenFOAM (初級)
OpenFOAM (基礎)

機械学習活用(初級)OpenMP(初級)

数値計算ライブラリ
超初心者利用超初心者利用

 スーパーコンピュータとは？
 スーパーコンピュータで何ができるのか？
 スーパーコンピュータの使い方
 Linux
 ログイン プログラム作成
 コンパイル 実行
 結果の確認21

2022/4/22

22

超初心者利用Linux OS
世界中のスパコンのほとんどが採用しているOS→これが使えないと何もできない・・・・ので最初にやります！

Tux

 Operating Systemの1つ (他にはWindowsやOS X, iOS, Androidなど・・・) 現在のTOP500（上位500台のスパコンランキング）のシェアは100％
 スパコンだけでなく、サーバーの多くはLinuxで動作 基本的にOpen Sourceで構成
 無料のOS CLI（Command Line Interface)で完結、高機能なShellが用意されている。
 本講習ではBashを使用
 マウスでする操作を文字で行うイメージ
 GUI(Graphical User Interface)もあり。
スパコンではあまり使わない。
講習会では基本的なコマンドとBashについて扱います。
bashにコマンドを渡して必要な操作を実施
bash = windowsでいうターミナルやPowerShellみたいな物
LinuxではWindows、Macでいうフォルダをディレクトリといいます。（この後頻出します。）

23

超初心者利用Windowsのフォルダ構成
Users
C:
Cドライブ

Windows
Program Files
Program Files (x86)

ユーザー名1Documents

ユーザー名1

Desktop

ユーザー名2

Downloads
Windowsの場合、ここをクリックすると、パスが出てくる。
¥区切りでフォルダが表示されている。
例だと• Cドライブの下の• Usersの下の• Defaultというディレクトリ

24

超初心者利用Linuxのディレクトリ構成
ディレクトリ(Windows、Macではフォルダ)は、名前は違えど考え方はほとんど変わらない。
Windowsのフォルダ構成

Users

C:
Cドライブ

Windows
Program Files
Program Files (x86)Linuxのディレクトリ構成

home

/
ルート

bin
lib
etc

ユーザー名1Documents

ユーザー名1

Desktop

ユーザー名2

Downloads

Windowsだと・・・・C:¥Users¥ユーザー名1¥Downloads

ユーザー名1Documents

ユーザー名1

Desktop

ユーザー名2

Downloads

Linuxだと・・・・/home/ユーザー名1/Downloads• C:から始まらない
違いは• 区切り文字はスラッシュ2022/4/22

25

超初心者利用スパコン(不老)でのディレクトリ構造
home

centerw49001aw49001a/w49001a/
ルート
ディレクトリdatagroup1

w4900*agroup2

FEFS ファイルシステム
/usr
/etc

 /home 普段利用(ソースコードなど)
 小容量データ
 少I/O要求
 /data
 大容量データ
 多I/O要求

ホーム
ディレクトリ2022/4/22

26

超初心者利用コマンドとは？
特定の機能(GUIだとマウスを使ってする操作)を実行する命令$コマンド [オプション1、オプション2・・・] 引数1、引数2・・・・・$ cd /home/center/w4900*a/ :作業ディレクトリを変更(Windowsだと、フォルダのダブルクリック)$ cp a.txt b.txt:a.txt と同じ内容のファイルを b.txt として作成(Windowsだと、右クリック→コピー、ペースト＆名前の変更)
コマンドの例
コマンド用途

よく使うオプション

pwd

現在のディレクトリ(カレントディレクトリ)を表示

cd

ディレクトリを変更 (引数なしだとホームに移動)

ls

ファイル一覧を表示-l ： 詳細表示

cp

ファイルまたはディレクトリのコピー-r ： 再帰的にコピー

rm

ファイルまたはディレクトリの削除-r ： 再帰的に削除

exit

セッションの終了（スパコンからログアウト）$ hogehoge と書いてあると、hogehoge部はコマンドだと思ってください。

超初心者利用27

Linuxコマンドで特別な意味を持つ記号 (メタキャラクタ)以下の文字列は特別な意味を持つので、ディレクトリ、ファイル名に使わないようにしてください。
(正確には使えますが、慣れないうちはトラブルの元です。)
•
•
•
•
•
•
•
•
•
•
•

(Space) : アンダーライドなどに置き換えてください。
. (Dot)* (Asterisk)/ (Slash)| (Pipeline)~ (Tilde)? (Question)‘ (Single Quote)“ (Double Quote)[] (Square Bracket){} (Curly Bracket)

超初心者利用28

メタキャラクタの使い方• ~ ： ホームディレクトリ
• ./ : 今のディレクトリ(カレントディレクトリ)• ../ : 1つ上のディレクトリ

home

centerw49001aw49001a//w49001a

今ここにいると仮定~ : /home/center/w49001a./ : /home/center../ : /home• * ： 全て
例 : test* → testで始まる全ての文字列 test1, test2, test11, test22……..

ホームディレクトリ

2022/4/22

超初心者利用コマンドの実行例
以下のコマンドを実際に実行してみてください。
各コマンドで何をしているか意識してください。
常に、自分はどのディレクトリにいるのかを意識して下さい。

[w4900*a @flow-fx01 ~]$ pwd/home/center/w4900*a[w4900*a @flow-fx01 ~]$ mkdir test
[w4900*a @flow-fx01 ~]$ ls
test[w4900*a @flow-fx01 ~]$ cd test
[w4900*a @flow-fx01 test]$ pwd/home/center/w4900*a/test[w4900*a @flow-fx01 test]$ cd[w4900*a @flow-fx01 ~]$ pwd/home/center/w4900*a

現在のディレクトリを出力
testディレクトリの作成
現在のディレクトリの中身の出力
testディレクトリに移動

引数なしでcdコマンドを実行すると、ホームディレクトリに移動

29

2022/4/22

超初心者利用Bash特有の機能 1/2
コマンド入力を簡易にする基本機能一覧
操作

動作内容

Auto filltab

途中まで入力したコマンドやパスの残りを補完

履歴↑

過去に実行したコマンドを1つずつさかのぼる

履歴探索モード ctrl+r

過去に実行したコマンドを検索

リダイレクト>

結果をファイルなどに出力
例：ls > list.txt list.txtにlsの結果が出力される

パイプ|

結果を次のコマンドに渡す
例：ls | sort
lsコマンドの結果をソートする

コマンドとbashの機能を使用したスクリプトも記述可能

30

超初心者利用

bashの便利機能 2/2
特に、以下の機能は初めての方にも便利• Auto fill
 Tabキーを押すと入力中の文字を予測してその後を補完 testtesttesttest.txtというファイルがある testtまで入力した後にTabキーを押す
 testtに続くほかのファイルがなければ、esttesttest.txtを勝手に入力
 testtに続くほかの候補がある場合は、tabキーを2回押すと、全ての候補を出力• 履歴、履歴探索モード
 ↑キーを押すと、過去のコマンドを1つずつ遡る
 ctrl+rを押してから、過去に実行したコマンドを入力すると、履歴から後ろを自動で入力
 ctrl+rを何度も押すとどんどん過去に

31

超初心者利用課題

当日のお楽しみ32

超初心者利用問題

当日のお楽しみ33

34

超初心者利用ほかのコマンドの例
コマンド用途

よく使うオプション

mv

ファイルまたはディレクトリの移動

mkdir

ディレクトリの作成

man

コマンドの説明cat

ファイル内容の表示（全体）less

ファイル内容の表示（一画面ごと）

head

ファイル内容の表示（先頭部分）-n ## : 表示行数の指定

tail

ファイル内容の表示（末尾部分）-n ## : 表示行数の指定

grep

ファイルに含まれる文字列を検索

awk

文字列の抽出sed

文字列の置換diff

２つのファイルの内容比較

echo

変数や文字列の値を出力

exit

セッションの終了

2022/4/22

超初心者利用スパコンを使うための手順
SSHでログイン

SSH、鍵認証、鍵ペア作成、ログイン

プログラム作成

エディタ(emacs, vi, nano)、Linux 利用法

コンパイル

環境モジュール、コンパイルオプション

実行(ジョブの投入)

結果の確認

ジョブスクリプトの作成、ジョブ管理35

2022/4/22

36

超初心者利用

スーパーコンピュータ (スパコン) 利用のイメージ
通常、スパコンでは
ログインノードと呼ばれる玄関口から実行命令を出します1. ログイン
SSH

端末

SSH で接続するには鍵の準備が必要！

[tut138@obcx02~]$ ls -l
drwxr-x--- 2 shiba group 10 1
Apr 13:00 test.out[tut138@obcx02~]$ ./test.out
Hello world[tut138@obcx02~]$ qsub a.sh

3. プログラム動作

2. ジョブ投入
ログインノード

計算ノード
= 本体

2022/4/22

超初心者利用Secure Shell(SSH) プロトコル
通信が暗号化されたShell
 ShellはOSとユーザーの仲介をする
コマンドベースのソフトウェア
 通信データを暗号化し、リモートマシンにアクセスできる方法:SSH

暗号化

ログイン後の画面の一例

不老

暗号化された通信を使用して、様々なことが可能 ファイルのコピー
 グラフィカル画面の転送
 トンネリング ディレクトリのマウント
操作はsshで暗号化される・・・・ログインは？→公開鍵暗号方式を使います。

372022/4/22

超初心者利用鍵認証方式 (1/2)
より安全な接続をする→鍵認証方式
 パスワードではなく、秘密鍵と公開鍵のペアを使用してログインする方法
 秘密鍵にもパスワードを設定可能
初期設定（初回ログイン時のみ）
 鍵ペアを作成
 公開鍵をログインノードに登録④秘密鍵を使用
して復号①ログインをリクエスト

不老③暗号を返信

②公開鍵を使用して暗号を作成⑤復号結果を送信⑥返信結果を確認⑦ログインを許可

暗号通信開始38

2022/4/22

超初心者利用鍵認証方式 (2/2)
鍵を開けてスパコンに入る！（実際はもうちょっと複雑） 秘密鍵→物理鍵
 公開鍵→鍵穴
 秘密鍵を持っていって、ログインを試行→通信経路を傍受されていると、物理鍵が見られて終わり④金庫開ける①ログインしたい！

不老③金庫を送信②金庫(鍵穴は公開鍵)を作って、パスワードを入れる。

⑤金庫の中身(パスワード)を送信⑥パスワードを確認⑦ログインを許可

暗号通信開始39

2022/4/22

超初心者利用鍵認証方式の注意点
注意点
秘密鍵の取り扱いに注意
 厳重に管理してください。
 漏洩すると容易にログインできてしまうため。
 秘密鍵は他のところにコピーしたりしないでください。
 秘密鍵の入ったPCの紛失などがあった場合は速やかに公開鍵を更新してください。
 鍵の生成時には必ずパスワードを設定してください。
よく間違える点
 秘密鍵のパスワードはHPポータルのログインパスワードやログ
イン後のアカウントのパスワードとは異なります。

40

超初心者利用41

SSHを使えるようにする。
 Mac、Linuxの方：何もする必要ありません。
 Windowsの方：すでにubuntu on windowsまたはCygwinをインストール済みなので、sshが利用可能です。
Windowsの場合、以下の方法もあります。
1. PuTTY or TeraTerm + WinSCP
sshの機能だけをインストール
2. OpenSSH client from PowerShell ：要管理者権限？
Windows標準のCLIにsshの機能をインストール

2022/4/22

超初心者利用スパコンを使うための手順
SSHでログイン

SSH、鍵認証、鍵ペア作成、ログイン

プログラム作成

エディタ(emacs, vi, nano)、Linux 利用法

コンパイル

環境モジュール、コンパイルオプション

実行(ジョブの投入)

結果の確認

ジョブスクリプトの作成、ジョブ管理42

2022/4/22

超初心者利用

43

鍵の作成
PC上で鍵（秘密鍵，公開鍵）を生成（1/3）
Cygwin またはターミナルを開いたその場所から下記の操作を開始$ ssh-keygen -t rsa
Generating public/private rsa key pair.
Enter file in which to save the key (/home/user/.ssh/id_rsa): Return
パスフレーズを設定
Enter passphrase (empty for no passphrase):
ReturnEnter same passphrase again: 同じパスフレーズ Return
Your identification has been saved in /home/user/.ssh/id_rsa.
Your public key has been saved in /home/user/.ssh/id_rsa.pub.
The key fingerprint is:
SHA256:vt88O+PTcscHkOyabvxGjeRsMWLAWds+ENsDcReNwKo tut138@ITCUT-VAIO
The key's randomart image is:+---[RSA 2048]----+|. o=oo.o+ ||+ O... .|
操作手順
|
.+o+.
|
|
+oB. |• ssh-keygen -t rsa <Return>|
So *o*||.E B.o |• <Return>|.. = . o |• お好きなパスフレーズ <Return>|.=oB o +||.+o+*O ..|• 同じパスフレーズ <Return>+----[SHA256]-----+

鍵が作成できたはず2022/4/22

第138回講習会超初心者利用：実習編

44

鍵の作成
PC上に秘密鍵、公開鍵があることを確認（2/3）
コマンドの意味がわからない方も、黄色の文字を打って、同じような画面になる確認してください。
$ cd .ssh$ ls
id_rsaid_rsa.pub⇒秘密鍵（Private Key）
⇒公開鍵（Public Key）

$ cat id_rsa.pub
ssh-rsa
AAAAB3NzaC1yc2EAAAADAQABAAABAQDa6InmOYYaCrWjQDukjiNEfdW8veUwJyZtEI3oDu0A28eey6p0wbtI7JB
09xnI17O7HG4yYvOM81+/nlAHy5tAfJly0dsPzjTgdTBLdgi3cSf5pWEY6U96yaEr0Ei8Wge1HkXrhcwUjGDVTz
vT0Refe6zLdRziL/KNmmesSQfR5lsZ/ihsjMgFxGaKsHHq/IErCtHIIIf9V/Ds2yj6vkAaWH6asBn+ZsRiRFvwH
PhkYAnp/j3LY6b8Qfqg0p4WZRenh/HgySWTYIGi8x67VzMaUlm9qlK0QFMCaK2rivX1fmbwyWJ/vrWDqiek6YXo
xLDu+GPeQ4CPvxJcZnqF9gf3 tut138@ITCUT-VAIO

2022/4/22

第138回講習会超初心者利用：実習編

45

鍵の作成
公開鍵をコピーする（3/3）
通常のカットアンドペーストの手順で「公開鍵」をコピー$ cd .ssh$ ls
id_rsaid_rsa.pub$ cat id_rsa.pub

操作手順• cat id_rsa.pub <Return>• “ssh-rsa”にカーソルを合わせ⇒秘密鍵（Private Key）
⇒公開鍵（Public Key）
• 最後の行の”f3”までを選択して「Copy」によって記憶• 最後の「tut138@ITCUT-VAIO」まで含んでも良いが，こ
こに漢字が含まれていると登録に失敗します。

ssh-rsa
AAAAB3NzaC1yc2EAAAADAQABAAABAQDa6InmOYYaCrWjQDukjiNEfdW8veUwJyZtEI3oDu0A28eey6p0wbtI7JB
09xnI17O7HG4yYvOM81+/nlAHy5tAfJly0dsPzjTgdTBLdgi3cSf5pWEY6U96yaEr0Ei8Wge1HkXrhcwUjGDVTz
vT0Refe6zLdRziL/KNmmesSQfR5lsZ/ihsjMgFxGaKsHHq/IErCtHIIIf9V/Ds2yj6vkAaWH6asBn+ZsRiRFvwH
PhkYAnp/j3LY6b8Qfqg0p4WZRenh/HgySWTYIGi8x67VzMaUlm9qlK0QFMCaK2rivX1fmbwyWJ/vrWDqiek6YXo
xLDu+GPeQ4CPvxJcZnqF9gf3 tut138@ITCUT-VAIO

2022/4/22

超初心者利用SSH 公開鍵認証
id_rsa• Private Key（秘密鍵） ：PC上
• 文字通り「秘密」にしておく

作成した場所からコピー・移動しない、他の人に送らない

id_rsa.pub• Public Key（公開鍵）：スパコン上• コピー可能，他の人にe-mailで送ることも可能• もし複数のPCからスパコンにログインする場合は，各PCごとに「公開鍵・秘密鍵」のペアをssh-keygenによって作成• 各スパコンには、複数の公開鍵を登録できます

スパコン上の公開鍵のうちの一つがPC上の「秘密鍵＋Passphrase」とマッチすると確認されるとログインできる46

2022/4/22

48

超初心者利用

②初期パスワードの変更

情報基盤センターから送付された初期パスワード

変更後のパスワード
を入力（2回）

2022/4/22

超初心者利用

③公開鍵登録（id_rsa.pub）

1. 「SSH公開鍵登録」を選択
2. 先ほどCopyした公開鍵 （ id_rsa.pub ) を貼り付ける
3. 「登録」をクリック
よくトラブルが起きますので、先に進めなければ質問してください49超初心者利用

複数の鍵を登録する場合
 HPCポータルからの登録は1回限り
その一回で複数の登録は可能 2つ目以降は不老にログイン後、追記/home/ユーザ名/.ssh/authorized_keys

50

超初心者利用

HPCポータルについて
 HPCポータルではスパコンのマニュアルも公開されています。
必要に応じてご閲覧ください。

51

2022/4/22

超初心者利用スパコンを使うための手順
SSHでログイン

SSH、鍵認証、鍵ペア作成、ログイン

プログラム作成

エディタ(emacs, vi, nano)、Linux 利用法

コンパイル

環境モジュール、コンパイルオプション

実行(ジョブの投入)

結果の確認

ジョブスクリプトの作成、ジョブ管理52

超初心者利用53

スパコンにログイン (Cygwin, Mac, Linux)

1. ssh -i ~/.ssh/id_rsa ユーザーID@スパコンホスト名<Return>
不老TypeⅠのURLはflow-fx.cc.nagoya-u.ac.jp
2. 鍵生成時に打ち込んだPassphrase <Return>超初心者利用

スパコンへのログインまで完了しました！

休憩54

2022/4/22

超初心者利用スパコンを使うための手順
SSHでログイン

SSH、鍵認証、鍵ペア作成、ログイン

プログラム作成

エディタ(emacs, vi, nano)

コンパイル

実行(ジョブの投入)

結果の確認

環境モジュール、コンパイルオプション

ジョブスクリプトの作成、ジョブ管理55

2022/4/22

超初心者利用

エディタ
ファイルを編集するためのソフトウェア
Windowsの標準だとメモ帳に該当Linuxでは以下のエディタが有名（ほかにもたくさんあります）
 Emacs
 高機能
 拡張機能も豊富 (LISPで記述されている)
 Vim
 軽量
 Linuxの初期状態でインストールされている
 Nano 一番簡易 コマンドが下段に表示されるため、わかりやすい
機能性
使いやすさ
Emacs

Vim

Nano

56

2022/4/22

57

超初心者利用エディタでプログラムを作成する
さて、実際に作業してみましょう。
プログラムを編集するディレクトリを作成します。

[w4900*a@flow-fx01 ~]$ cd Return[w4900*a@flow-fx01 ~]$ mkdir test Return[w4900*a@flow-fx01 ~]$ cd test Return
ログインノード上では、Emacs, vim, または nano のエディタを利用してください。
例1： Emacs を使用, Fortranプログラムを作成[w4900*a@flow-fx01 test]$ emacs hello_world.f90

Return例2： vim を使用, Python プログラムを作成[w4900*a@flow-fx01 test]$ vim hello_world.c

Return

例3： nano を使用, C プログラムを作成[w4900*a@flow-fx01 test]$ nano hello_world.c

Return2022/4/22

58

超初心者利用Emacs チートシート$ emacsで起動

Emacs = 「control (ctl) キー + 文字」でコマンドに移行

コマンド
Ctl-x Ctl-s

編集中のファイルを同じファイル名で保存

Ctl-x Ctl-w

編集中のファイルを名前をつけて保存

Ctl-x Ctl-f

既存のファイルを開く

Ctl-x Ctl-c

Emacs を終了する（保存するか聞かれたらY/N で答える）

Ctl-g

コマンド入力Ctl-a

行の先頭にカーソルを持ってくる

Ctl-k

カーソルから行末までを削除し、（クリップボードみたいなところに）コピー

Ctl-y

コピーされた内容を貼り付ける

C-spaceMark Set

Mark Set, 範囲選択, M, w

コピーMark Set, 範囲選択, C-w

切り取り

Ctl-s

文字列を検索する

Esc-%

文字列を置換する

コマンド確認画面

2022/4/22

超初心者利用vim チートシート$ vi で起動
ノーマルモード / 入力モード / コマンドを切り替え
現在のモード
ノーマル
ノーマル
入力

移行先モード入力
コマンドライン
ノーマル

編集画面

キー
i, a, Ins:
esc, ctrl-c

キー
Esc

ノーマルモードに移行する

i

入力モード（挿入）に移行するo

新しい行を追加して入力モード（挿入）に移行

R

入力モード（上書き）に移行する:w ###

コマンド - ファイル名 ### で保存する:qコマンド - vim を終了する:q!

コマンド - 保存せずにvim を強制終了する/###### という文字列を検索する

yy

カーソルのある行をコピーする

p

貼り付けする

モードおよびコマンド確認画面
 ブランク → ノーマルモード
 : → コマンドモード
 :w Ret 上書き保存
 --挿入-- → 入力モード

59

2022/4/22

超初心者利用nano チートシート
nano = 最も操作方法が単純ー予習漏れの場合はお使いください。

$ nano で起動 M-U → Escキー、Uキーを
順番に押す
キー
Ctl+S

ファイルを保存

Ctl+O

ファイルを名前をつけて保存

Ctl+X

nano エディタ を終了する

Ctl+W

文字列を検索（順方向）

Ctl+D

カーソルのある文字を削除

M-A

マーク

M-6

コピ
ー

Ctl+K

1行カットして削除

Ctl+U

ペースト

コマンド確認画面
 ^ → Ctl
 M → Esc
 - → 順次押す

60

2022/4/22

超初心者利用61

プログラム例題：Hello World
C言語

プログラム作成 [w4900*a@flow-fx01 test]$ emacs hello_world.c#include <stdio.h>#include <mpi.h>#include <omp.h>
int main(int argc, char *argv[]){
int me_proc, me_thrd;
int num_procs, num_thrds;
int prov;
MPI_Init_thread(&argc, &argv, MPI_THREAD_FUNNELED, &prov);
MPI_Comm_size(MPI_COMM_WORLD, &num_procs);
MPI_Comm_rank(MPI_COMM_WORLD, &me_proc);#pragma omp parallel private(num_thrds, me_thrd) firstprivate(num_procs, me_proc){
num_thrds = omp_get_num_threads();
me_thrd = omp_get_thread_num();
printf("Hello world!!, Number of processes = %d, Number of threads = %d, process-ID = %d, thread-ID = %d¥n",num_procs, num_thrds, me_proc, me_thrd);}
MPI_Finalize();}

return 0;

2022/4/22

超初心者利用プログラム例題：Hello World
Fortranプログラム作成 [w4900*a@flow-fx01 test]$ emacs hello_world.f90
program mainuse mpi!$ use omp_lib
implicit none
integer me_proc, me_thrd;
integer num_procs, num_thrds;
integer prov, ierrcall MPI_Init_thread(MPI_THREAD_FUNNELED, prov, ierr)call MPI_Comm_size(MPI_COMM_WORLD, num_procs, ierr)call MPI_Comm_rank(MPI_COMM_WORLD, me_proc, ierr)me_proc = me_proc + 1!$OMP parallel private(num_thrds, me_thrd) firstprivate(num_procs, me_proc)
num_thrds = omp_get_num_threads()
me_thrd = omp_get_thread_num() + 1
write(*, '(4(a, i3))') "Hello world!!, Number of processes =", num_procs, ", Number of threads =", num_thrds, &", process-ID =", me_proc, ", thread-ID =", me_thrd!$OMP end parallel
call MPI_Finalize(ierr)end program main62

2022/4/22

超初心者利用スパコンを使うための手順
SSHでログイン

SSH、鍵認証、鍵ペア作成、ログイン

プログラム作成

エディタ(emacs, vi, nano)

コンパイル

実行(ジョブの投入)

結果の確認

環境モジュール、コンパイルオプション

ジョブスクリプトの作成、ジョブ管理63

2022/4/22

64

超初心者利用Environment modulesの利用 (1)
コンパイラ等の選択
富士通コンパイラ、gnu コンパイラ, インテル製コンパイラ,

ライブラリを利用した計算の高速化
離散フーリエ変換, 線形代数・連立１次方程式, …

使用中モジュールの表示 (デフォルトは富士通コンパイラ)[w4900*a@flow-fx01 ~]$ module list
Currently Loaded Modulefiles:
1) tcs/1.2.37

Return

もしGCCコンパイラに切り替えるなら・・・・[w4900*a@flow-fx01 ~]$ module purge Return[w4900*a@flow-fx01 ~]$ module list Return
No Modulefiles Currently Loaded.
[w4900*a@flow-fx01 ~]$ module load gcc/10.4.0

Return2022/4/22

65

超初心者利用

利用可能なEnvironment modulesの一覧を表示できます[w4900*a@flow-fx01 ~]$ module avail

Return--------------------------------------------- /home/center/opt/aarch64/modulefiles ---------------------------------------------amber/19.0(default)
mumps/5.2.0(default)
py-matplotlib/3.2.1(default)
boost_gcc/1.77.0(default)
mxnet/1.6.0
py-mpi4py/3.0.3(default)
caffe/1.0(default)
mxnet/1.8.0(default)
py-numpy/1.18.5
cmake/3.17.1
namd/2.14(default)
py-numpy/1.19.0(default)
cmake/3.21.1(default)
namd/2.14b1
py-onnx/1.6.0(default)
conda4aarch64/1.0.0(default)
netcdf-c/4.7.3
py-pillow/7.0.0(default)
dhpmm-f/alpha(default)
netcdf-c/4.7.4(default)
py-pytest-check-links/0.3.4(default)
ffb/8.1(default)
netcdf-cxx/4.2(default)
py-scikit-image/0.14.2(default)
ffr/3.0.000
netcdf-cxx4/4.3.1(default)
py-scikit-learn/0.23.1(default)
ffr/3.1.004(default)
netcdf-fortran/4.5.2
py-scipy/1.4.1(default)
fftw/3.3.8(default)
netcdf-fortran/4.5.3(default)
py-tensorflow/2.1.0(default)
fftw/3.3.9-tune
openblas/0.3.17(default)
py-theano/1.0.4(default)
fftw-tune/3.3.8(default)
opencv/4.2.0(default)
python/2.7.16
fjmpi-gcc/10.2.0
opencv/4.5.4
python/3.7.7(default)
fjmpi-gcc/10.4.0
openfoam/v1812-tunepython/3.8.12
fjmpi-gcc/8.3.1(default)
openfoam/v2006(default)
py-torch/1.5.0(default)
frontistr/5.0
openfoam/v2106
qe/6.4.1-tune
frontistr/5.0-tune(default)
parallel-netcdf/1.12.1(default)
qe/6.5(default)
gamess/2020R2(default)parmetis/4.0.3(default)
r/4.0.0
gaussian16/c01(default)
petsc/3.13.1
r/4.0.5(default)
gcc/10.2.0
petsc/3.16.0(default)
ruby/2.7.1(default)
gcc/10.4.0(default)
phdf5/1.10.6
scotch/6.0.8(default)
geant4/10.6.2(default)
phdf5/1.10.7(default)
specfem3d_globe/7.0.2-tune(default)
gromacs/2021.2
pio/2.5.3(default)
superlu/5.2.1(default)
gromacs/2021.4(default)
ppohAMR_FDM/0.3.0(default)
superlu-dist/6.1.1(default)
gromacs-gcc/2022.4
ppohAT/1.0.0(default)
superlu-mt/3.1(default)
hdf5/1.10.6
ppohBEM/0.5.0(default)
tcs/1.2.24
hdf5/1.10.7(default)
ppohBEM_AT/0.1.0(default)
tcs/1.2.25
jhpcn-df/1.1.0(default)
ppohDEM_util/1.0.0(default)
tcs/1.2.26
kmath_random/1.1(default)
ppohFDM/0.3.1(default)
tcs/1.2.27
lammps/20200505
ppohFDM_AT/1.0.0(default)
tcs/1.2.30
lammps/7Aug19-tune(default)
ppohFEM/1.0.1(default)
tcs/1.2.31
lapack/3.10.0(default)
ppohFVM/0.3.0(default)
tcs/1.2.33
linsys-v/alpha(default)
ppohMATH_MP/1.0.0(default)
tcs/1.2.35
metis/5.1.0(default)
ppohMATH_VIS/0.2.0(default)
tcs/1.2.37(default)
modylas/1.0.4(default)
py-chainer/7.2.0(default)
texlive/2021(default)
mpas/6.2-tune(default)
py-json5/0.9.4(default)
xabclib/1.03(default)
mt-metis/0.6.0(default)
py-keras/2.2.4(default)----------------------------------------- /home/center/local/app/a64fx/hpci/modulefiles -----------------------------------------

2022/4/22

超初心者利用

コンパイル、実行環境構築
コンパイル、実行環境を整えるために、moduleコマンドを使用$ module [オプション] 引数
オプション

内容

avail

利用可能な環境の一覧を表示

list

現在ロードしている環境一覧を表示

load

指定した環境のロード

unload

指定した環境のアンロード

switch環境のロードとアンロードを同時に実行

purge

環境を全てアンロード66

2022/4/22

67

超初心者利用プログラムのコンパイル
C または Fortran を使用される方→ プログラムをコンパイルして、実行ファイル（バイナリ）を生成します。
C を使われる方[w4900*a@flow-fx01 test]$ mpifccpx –Kopenmp hello_world.c

ReturnFortran を使われる方[w4900*a@flow-fx01 test]$ mpifrtpx –Kopenmp hellow_world.f90
その他、コンパイルオプションなどはマニュアルを参照ください。
Tips!
 TypeⅠはログインノードと計算ノードのアーキテクチャが異なります。
 この場合、異なるシステム用のプログラムをコンパイルする必要があります。
 このようなコンパイルをクロスコンパイルといいます。

Return2022/4/22

スーパーコンピュータ超入門

プログラムのコンパイル (TypeⅠ)
富士通コンパイラの使用方法
ソースコードのタイプ

コンパイルターゲット
クロスコンパイル*1

非MPIコード
セルフコンパイル*2
クロスコンパイル*1
MPIコードセルフコンパイル*2

言語

呼び出しコマンドC

fccpx

Fortran frtpx
Cfcc

Fortran frt
C

mpifccpx

Fortran mpifrtpx
C

mpifccFortran mpifrt*1 クロスコンパイル：開発環境と実行環境が異なる場合のコンパイル*2 セルフコンパイル：開発環境と実行環境が同一の場合のコンパイル68

2022/4/22

スーパーコンピュータ超入門

コンパイルオプション例（TypeⅠ、参考情報）
富士通コンパイラでよく使うコンパイルオプション一覧
タイプ

言語

Intel
オプション

内容

共通

共通

-Kopenmp

OpenMPを有効化-g

実行ファイルにソース
コードの情報を付与-Nquickdbg

コンパイル時にバグの元になりそうな箇所等を警告-Eg

実行中デバッグを有効化(遅くなる)-O0、-O1、-O2、-O3

数字が大きいほど積極的な最適化を適用-KfastCPUアーキテクチャを考慮した様々な最適化を有効化

デバッグ
オプション

共通

Fortran
最適化
オプション

共通

69

2022/4/22

スーパーコンピュータ超入門

プログラムのコンパイル (TypeⅡ)IntelおよびGNUコンパイラがインストール済み
ソースコードのタイプ

コンパイラ開発元
Intel

非MPIコード
GNU
Intel
MPIコードGNU

言語

呼び出しコマンドC

icc

Fortran

ifort

C

gcc

FortrangfortranC

mpiiccFortranmpiifortC

mpicc

Fortranmpif77 or mpif90

IntelでC言語のコードをコンパイルする場合$ icc [オプション] “ソースコード.c” –o “出力ファイル名”
GNUでFortran90/95のコードをコンパイルする場合$ gfortran [オプション] -free-line-length-none “ソースコード.f90” –o “出力ファイル名”-free-line-length-none : Fortranの自由形式を有効化

702022/4/22

スーパーコンピュータ超入門

コンパイルオプション例（参考情報）
IntelおよびGNUでよく使うコンパイルオプション一覧
タイプ

言語

Intel
オプション

GNU
オプション

内容

共通

共通

-qopenmp-fopenmp

OpenMPを有効化

デバッグ
オプション

共通

-g

実行ファイルにソース
コードの情報を付与-Wall

コンパイル時にバグの元になりそうな箇所等を警告-traceback
Fortran -check bounds

最適化
オプション

-fbacktrace

実行時にエラー発生個所を特定-fbounds-check

実行中に初期化していない
値へのアクセスなどを検知-O0、-O1、-O2、-O3

数字が大きいほど積極的な最適化を適用-xHostCPUアーキテクチャを考慮した最適化

共通-march=native712022/4/22

超初心者利用スパコンを使うための手順
SSHでログイン

SSH、鍵認証、ソフトのインストール、鍵ペア作成、ログイン

プログラム作成

エディタ(emacs, vi, nano)

コンパイル

実行(ジョブの投入)

結果の確認

環境モジュール、コンパイルオプション

ジョブスクリプトの作成、ジョブ管理72

2022/4/22

73

超初心者利用スパコンでプログラムを実行する方法
ジョブスケジューラーを使用
3. プログラム動作

 スパコンは複数のユーザーが共有する資源 ユーザーの要求に合わせて、資源を割り当てる仕組みが必要→ジョブスケジューラ
 レストランでお客様を席に案内するイメージ？

1. ログイン
SSH

端末

2. ジョブ投入
ログインノード ジョブスケジューラーに資源を要求→ ジョブスクリプトを記述
計算ノード
= 本体

2022/4/22

74

超初心者利用ジョブスクリプト = スパコンへの指示書
プログラムをコンパイルしたあとにログインノード上で直接 プログラム実行することはしないでください！
ー 負荷がかかると、他のユーザーの同時作業の妨げとなります
かわりに計算ノードに計算をしてもらうための「指示書」が必要となります。

hello_world.sh#!/bin/bash#PJM -L rscunit=fx#PJM -L rscgrp=fx-workshop#PJM -L node=2#PJM --mpi proc=8#PJM -o test.txt#PJM -L elapse=0:01:00#PJM -j［リソースグループ(後述)］［使用するノードの数］[プロセス数][出力結果格納ファイル名*1][実行時間上限（1分）］*1ファイル名を指定すると、古い結果は新しい結果で上書きされます。

［エラー出力を標準出力にマージ］

export OMP_NUM_THREADS=12 [スレッド数]
mpirun ./a.out[プログラム実行]
プロセス数×スレッド数 = ノード数×ノードたりのコア数(Type1は48)

2022/4/22

スーパーコンピュータ超入門

参考情報：TypeⅠのリソースグループ
リソースグループ毎のノード数および最長実行時間一覧
リソース
グループ名

ノード数

最長実行
時間

説明

fx-debug

1～36

fx-small1～24

fx-middle

12～96

fx-large

96～192fx-xlarge

96～768fx-special

7,304

fx-middle2

1～96

72時間 優先実行、事前予約制

fx-iteractive

1～4

24時間 会話型

fx-workshop

1~12

60分 デバッグ用
168時間
72時間 通常使うリソースグループ
24時間
制限なし 事前予約制

20分 講習会用

 講習会ではfw-workshopをご利用ください。

752022/4/22

76

超初心者利用スパコンでのジョブの実行
作成したジョブスクリプトを投入、計算ノードで実行してもらいます。
[w4900*a@flow-fx01 test]$ pjsub hellow_world.sh

Return

実行されているジョブを確認します。
（一瞬で実行が終わるので、ジョブ一覧に出ないかも）[w4900*a@flow-fx01 test]$ pjstat

Return得られた結果を表示します。
[w4900*a@flow-fx01 test]$ more test.txt［

ReturnReturnで下の方に進めていくことができます］

2022/4/22

超初心者利用ジョブの管理コマンド
コマンド

内容

使い方

pjsub

ジョブの投入$pjsub “script.sh”

pjdel

ジョブの削除$pjdel “job ID”

pjstatジョブの状態$pjstat

注＊これらのコマンドはスパコンによって異なる

pjstatのオプション
 -H: 終了したジョブの確認772022/4/22

超初心者利用78

参考情報：計算ノードで直接操作したい場合
インタラクティブジョブ
対話型のジョブ デバッグなどに便利
手元で実行しているのと同様の挙動[w4900*a@flow-fx01 ~]$ pjsub --interact -L rscgrp=fx-interactive,node=2[INFO] PJM 0000 pjsub Job 517079 submitted.
[INFO] PJM 0081 .connected.
[INFO] PJM 0082 pjsub Interactive job 517079 started.
[w4900*a@fx0391 ~]$ログインノード(flow-fx*)から計算ノード(fx****)へログインしたような状態でプログラムの実行が可能

ログインノードとは違い専用の領域にいるので、負荷のある実行をして良い
注意！：クロスコンパイルじゃなくなるので、コンパイル時のコマンドが変わります！
mpifccpx→mpifcc、mpifrtpx→mpifrt

2022/4/22

超初心者利用スパコンを使うための手順
SSHでログイン

SSH、鍵認証、鍵ペア作成、ログイン

プログラム作成

エディタ(emacs, vi, nano)

コンパイル

実行(ジョブの投入)

結果の確認

環境モジュール、コンパイルオプション

ジョブスクリプトの作成、ジョブ管理79

超初心者利用80

計算結果のファイルを手元に転送する
scpを使ってスパコン上のファイルを手元のマシンにコピー
scp -i “秘密鍵“ ユーザーID@flow-fx.cc.nagoya-u.ac.jp:~/test/test.txt ./result.txt
コピー元

コピー先

$ scp –i ~/.ssh/id_rsa w4900*a@flow-fx.cc.nagoya-u.ac.jp:~/test/test.txt ./result.txt$ ls
result.txt

ローカルのデータをスパコンにコピーする場合は、先のコマンドのコピー元とコピー先を入れ替える形
Windows OSからファイルを確認する方法
Ubuntu on Windows : エクスプローラーのパスに¥¥wsl$と入力→ubuntuのルートにアクセス可能
Cygwin： C:¥cygwinの下がcygwinのディレクトリ

81

超初心者利用おまけ1 sshfs (Mac、Cygwin、Ubuntu on windows)
sshfsを使用すると、ローカルのディレクトリにリモートのディレクトリをマウントできます。
$ sshfs -o ssh_command=‘ssh -i /home/hoge/.ssh/id_rsa’ w4900*a@/home/center/w4900*a ~/dir_fx
 マウント：リモートのディレクトリをローカルのディレクトリに繋げる操作
 コピー等の操作なく、リモートのファイル操作が可能
 アンマウント(接続を切る操作)は以下$ fusermount -u ~/dir_fx
 dir_fx以下にいるとアンマウントできません。
不老上の/home/center/w4900*a/home/home/hoge/home/hoge/dir_fx/
ルートディレクトリ

不老上のデータ

test1
test2

/usr
/etc

注意事項
 ファイルの読み書き先がリモートなので、ネットワークが遅いと操作性が下がります。

超初心者利用82

おまけ2 X11 forwarding (Mac、Cygwin、Ubuntu on windows)
リモートのグラフィカルな画面をssh経由でローカルに表示できます(上級者向け)。
$ ssh -i ~/.ssh/id_rsa ユーザーID@スパコンホスト名-CXオプションを追加$ ssh -CX -i ~/.ssh/id_rsa ユーザーID@スパコンホスト名
注意
Cygwin、ubuntu on windowsでは以下のソフトウェアのインストールが必要
Cygwin：X11（Cygwinが管理、openssh（p39-44)と同じ手順）、Cygwin X(Cygwinとは別のパッケージ)
ubuntu on windows：Xmingのインストール、$apt install x11-appsの実行

gnuplotの一例

超初心者利用お疲れ様でした！
この後は、質問等ございましたら受け付けます。
内容によってはブレイクアウトルームを用意いたします。

83