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

新スーパーコンピュータ 「ITOシステム」利用講習会

N/A
N/A
Protected

Academic year: 2021

シェア "新スーパーコンピュータ 「ITOシステム」利用講習会"

Copied!
47
0
0

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

全文

(1)

新スーパーコンピュータ

「ITOシステム」利用講習会

九州大学情報基盤研究開発センター 2017年10月

(2)
(3)

ITOシステムの特徴

• 最新ハードウェア技術

• Intel Skylake-SP

• NVIDIA Pascal + NVLink • Mellanox InfiniBand EDR

• 対話的な利用環境の拡充 • 合計 164ノードのフロントエンド • ノード当たりメモリ量: 384GB ~ 12TB • 外部システムとの接続性向上 • パブリッククラウドとの連携 • オープンデータへのアクセス

(4)

本講習会の内容

• ITOシステム利用手段の選択 • 利用の準備 • ログインノード、ITOポータルの利用 • フロントエンドの利用(富士通社より説明) • バックエンドの利用 • ITOシステムのソフトウェア

(5)

ITOシステム利用手段の選択

• ログインノード • 主に、ファイルの編集やコンパイル、 ジョブ投入等の基本操作 • HPCポータル • Webインタフェースによるファイル操作、 コンパイル、ジョブ投入 • フロントエンド • GUI等による対話的な大規模データの操作、 解析 • バックエンド • 大規模計算 ITOポータル フロントエンド バックエンド ログインノード

(6)

利用の準備

• 利用登録 • 利用申請書入手 • 本センターの Webサイト https://www.cc.kyushu-u.ac.jp/scp/ 「利用案内」⇒「センターご利用のための手続き」 • ユーザIDと初期パスワードを確認 • 返送される利用承認書に記述 • 初期パスワード変更 • ITOポータル https://ito-portal.cc.kyushu-u.ac.jp/itoportal • 公開鍵登録 • ログインノード、フロントエンド、 バックエンドの利用に必要

(7)

公開鍵の登録

• 鍵ペア(秘密鍵、公開鍵) • まだ作成していなければ、新規に作成 • Windows: 端末エミュレータ(MobaXterm、Putty、TeraTerm等) に付属の作成ツール • MacOS X、Linux: ターミナルで ssh-keygen • SSH-1(RSA)等の古い鍵ではログイン不可 ⇒ 新規に鍵ペアを作成 • 公開鍵の登録 • 本センター Webサイト: 「システム」 ⇒「スーパーコンピュータシステムITO」 ⇒「ログイン方法」 ⇒「HPC Portalを利用した鍵登録方法」

(8)

ログインノードの利用

• Windows: 端末エミュレータを利用 • MobaXterm、Putty、TeraTerm等 • ホスト名: ito.cc.kyushu-u.ac.jp • 認証方法: 「SSH認証」で、「プライベートキー」として、作成した秘密鍵を指定 • MacOS X、Linux: ターミナルでsshコマンドを利用 • ログインノードの利用制限: メモリ 2GB以下、連続計算時間 1時間(全スレッド合計) • 多数の利用者が同時にログインして利用するため • 大規模な計算は、フロントエンド、もしくはバックエンドで実行 $ ssh -i 秘密鍵のパス ITOのユーザID@ito.cc.kyushu-u.ac.jp

(9)

ITOポータルの利用

• URL: https://ito-portal.cc.kyushu-u.ac.jp/itoportal • 主な操作: • 各種マニュアル参照 • ファイル操作 • ファイル編集、コピー、移動、削除 • 手元の PCからのアップロード、ダウンロード • コンパイル • Fujitsuコンパイラ、Intelコンパイラ • OpenMP、MPI、MKL、SSL2 • バックエンドへのジョブ操作 • ジョブ作成、投入 • 状態表示 • バックエンドの混雑状況確認 • 投入したジョブの状況表示、削除 • ディスク使用量確認

(10)

ログインノード、ITOポータルの利用

• 0.初期パスワード変更

• 1.MobaXtermへの鍵の登録

• 2.ログインノードへのログイン

(11)

0.初期パスワード変更

1. ITOポータルにアクセス https://ito-portal.cc.kyushu-u.ac.jp/itoportal 2. 配布されたユーザIDと初期パスワードでログイン 3. 新しいパスワードを入力(2回) • 8文字以上

(12)

1.MobaXtermへの鍵の登録

1. MobaXtermを起動

2. Settingsをクリック

3. SSHをクリック

4. 「Use internal SSH agent "MobAgent" のボックスをチェック

5. その下の右側の + をクリック

6. デスクトップの ito_id_rsa.ppk をダブルクリック

(13)

2.ログインノードへのログイン

1. 秘密鍵のパスフレーズ を入力

2. 「Session」をクリック

3. 「SSH」をクリック

4. Remote hostに ito.cc.kyushu-u.ac.jp

5. Specify usernameの左のボックスをクリック

6. その右のボックスにユーザ IDを入力

7. ログインできたことを確認したら、ログアウト

(14)

3.ITOポータルへログイン

1. ブラウザ起動 2. 以下の URLにアクセス https://ito-portal.cc.kyushu-u.ac.jp/itoportal 3. ユーザIDとパスワードを入力 4. ファイル操作、コンパイル、ジョブ、状態表示、をそれぞれ選択して、 表示を確認 5. メイン で、マニュアルを選んで表示 6. ログアウト

(15)

フロントエンドの利用

• 富士通社から説明 • 基本的な流れ: https://www.cc.kyushu-u.ac.jp/scp/system/ITO/frontend/ 1.予約システムにログイン 2.システムの空き状況確認 3.自分の利用状況確認 4.予約 5.メールで IPアドレス通知 6.ログインノード経由で 指定アドレスにログイン

(16)

SSHエージェントフォワーディング機能

• フロントエンドで予約したホストへのログインに利用 https://www.cc.kyushu-u.ac.jp/scp/system/ITO/frontend/02_login.html • ログインノードを経由した二段階ログイン • 手元のPCの秘密鍵をログインノードにコピーせず、予約ホストにログイン可能 • Windows: 端末エミュレータの機能を利用 • MobaXtermの利用を推奨 • MacOS X: .ssh/configを編集 • Linux: ssh-agentおよび ssh-addを利用

(17)

バックエンドの利用

• バッチシステムによる利用 • ログインノード、ITOポータル、フロントエンドからジョブ投入 • 基本的な流れ: 1.ジョブスクリプト作成 2.ジョブ投入 (システムの空き状況に応じて、 順にジョブを実行) 3.完了を待って、出力ファイル確認 ITOポータル フロントエンド バックエンド ログインノード 計算結果

(18)

バッチシステムの仕組み

• 処理してほしい内容を記述したファイルを投入 • ジョブとして受付 • 資源の空き状況に応じて順に処理される • 要求内容や空き状況によっては先を越されることも リソースグループ(待ち行列) ジョブの使用資源量(CPU,メモリ)で選択 計算機 ジョブ 小規模ジョブ用 中規模ジョブ用 大規模ジョブ用 #!/bin/sh #PJM -L "vnode=4" #PJM -L "vnode-core=36" #PJM -L "rscunit=ito-b" #PJM -L "rscgrp=ito-g-16" #PJM -L "elapse=10:00" export OMP_NUM_THREADS=4 mpiexec -n 16 ./a.out

(19)

バッチシステムの必要性

• 対話的な利用の限界: • 負荷が計算機で同時に処理可能な量を超えると, 資源が空くまではコマンドの実行不可 • 次にいつ資源が空くか不明 • ジョブ実行要求を交通整理する仕組みが必要:バッチシステム • 要求された処理内容をジョブとして登録 • 資源の空き状況に応じて自動的に実行開始

(20)

バッチ処理に用いるコマンド

• バッチジョブの投入 pjsub • バッチジョブの状況 pjstat • バッチジョブのキャンセル pjdel

(21)

pjsub バッチジョブの投入

• コマンド • オプション:使用する資源等に関する指定 • いつも同じ指定をするのであれば、ジョブスクリプトファイルの中に記述 • pjsubコマンドでのオプション指定が優先 • ジョブスクリプトファイル:依頼する処理内容 • シェルスクリプトとして記述 • 例)ジョブスクリプトファイル test.sh を投入 $ pjsub オプション ジョブスクリプトファイル名 $ pjsub test.sh

[INFO] PJM 0000 pjsub Job 28246 submitted.

(22)

主なオプション

オプション 説明 -L rscunit=name リソースユニット名を指定(必須) -L rscgrp=name リソースグループ名を指定(必須) -L elapse=h:m:s ジョブの最大実行時間を h時間m分s秒に制限 -L vnode=num 使用する仮想ノード数の最大値 -L vnode_core=num 使用する仮想ノード当たりのコア数

--mpi proc=procs MPIのプロセス数(富士通MPI使用時のみ)

-o filename 標準出力ファイル名 (デフォルト: ジョブ名.oジョブID) -e filename 標準エラー出力ファイル名 (デフォルト: ジョブ名.eジョブID) -j 標準エラー出力と標準出力を同じファイルに書き出す -N name ジョブ名をジョブスクリプトファイル名から nameに変更 -S 投入したジョブのノード情報を含む統計情報を出力 -X ジョブ投入時の環境変数をジョブ実行環境に継承

(23)

リソースユニットとリソースグループ

• リソースユニット:使用する計算機群の選択 • サブシステムA(2018年1月運用開始予定): ito-a • サブシステムB: ito-b • リソースグループ:使用する計算資源量の選択 リソースグループ名 ノード数 コア数 メモリサイズ 計算時間 備 考

ito-g-4-dbg 1 36 339GiB 1時間 デバッグ専用GPU: 4基 x 1ノード ito-g-16-dbg 4 36×4 339GiB×4 1時間 デバッグ専用GPU: 4基 x 4ノード ito-g-4 1 36 339GiB 48時間 シングルノードジョブGPU: 4基 x 1ノード ito-g-16 4 36×4 339GiB×4 24時間 4ノードまで利用可能GPU: 4基 x 4ノード ito-test 1/12 3 28GiB 48時間 1/12ノード利用GPU使用不可

ito-test-dbg 1/12 3 28GiB 1時間

デバッグ専用 1/12ノード利用 GPU使用不可

(24)

• 「バックフィルスケジューリング」 • 他のジョブを遅らせない範囲で、ジョブの追い越しを認める • 例)ジョブCを先に実行しても、ジョブBの実行開始時刻は変わらない • 最大実行時間をリソースグループの制限値より短く設定 ⇒ 追い越し実行の可能性増 • 注意: 最大実行時間を過ぎたジョブは強制終了

最大実行時間を指定する理由

ジョブC ジョブB ジョブA ジョブBの開始予定時刻 追い越し 時間

(25)

vnodeと vnode_core

• 実ノード = 計算ノード • CPUコア数: 36コア • vnode(仮想ノード) = バッチシステムが提供する仮想的なノード • 富士通MPIを利用する場合: • vnode = 最大プロセス数 • vnode_core = プロセス内コア数 • バッチシステムが MPIプログラムの 実行を管理 • 他のMPI(Intel MPI等)を利用する場合: • vnode = 使用する計算ノード数 • vnode_core = ノード内コア数(36) • MPIライブラリの mpirunが MPIプログラムの実行を管理 • 例)mpiexec.hydra -n 16 例)vnode=16, vnode_core=9 例)vnode=4, vnode_core=36 vnode プロセス

(26)

プログラムの実行形態

• 逐次 • 1コアを使用 • スレッド並列 • 共有メモリでの並列実行 • 基本的にスレッド数分のコアを使用 • MPI並列(プロセス並列) • 分散メモリでの並列実行 • 主に複数ノードを使用 • 基本的にプロセス数分のコアを使用 • ハイブリッド並列 • 各プロセス内でスレッド並列実行 • 主に複数ノードを使用 • 基本的に、 プロセス数 x スレッド数 のコアを使用

(27)

ジョブスクリプトファイルの様式

• 通常のシェルスクリプト • 冒頭にジョブのオプションを指定可能 • 実行開始時の作業ディレクトリ = ジョブ投入時の作業ディレクトリ

#!/bin/sh

ジョブのオプション

実行コマンド

実行コマンド

(28)

逐次処理

#!/bin/bash

#PJM -L "rscunit=ito-b"

#PJM -L "rscgrp=ito-test-dbg"

#PJM -L "vnode=1"

#PJM -L "vnode-core=1"

#PJM -L "elapse=10:00"

#PJM -j

#PJM -X

./a.out

Intelコンパイラ利用時は、 module load intel/2017 を追加

使用実ノード数 1 使用コア数 1

(29)

スレッド並列処理

富士通コンパイラの自動並列化

#!/bin/bash

#PJM -L "rscunit=ito-b"

#PJM -L "rscgrp=ito-g-4-dbg"

#PJM -L "vnode=1"

#PJM -L "vnode-core=36"

#PJM -L "elapse=10:00"

#PJM -j

#PJM -X

export PARALLEL=36

./a.out

使用実ノード数 1 使用コア数 36

(30)

スレッド並列処理

OpenMP

#!/bin/bash

#PJM -L "rscunit=ito-b"

#PJM -L "rscgrp=ito-g-4-dbg"

#PJM -L "vnode=1"

#PJM -L "vnode-core=36"

#PJM -L "elapse=10:00"

#PJM -j

#PJM -X

export OMP_NUM_THREADS=36

./a.out

Intelコンパイラ利用時は、 module load intel/2017 を追加

使用実ノード数 1 使用コア数 36

(31)

MPIによる並列処理(富士通MPI)

#!/bin/bash

#PJM -L "rscunit=ito-b"

#PJM -L "rscgrp=ito-g-16-dbg"

#PJM -L "vnode=144"

#PJM -L "vnode-core=1"

#PJM -L "elapse=10:00"

#PJM -j

#PJM -X

mpiexec -n 144 ./a.out

使用実ノード数 4 使用コア数 144 (36 x 4)

(32)

ハイブリッド並列処理

富士通MPI + OpenMP

#!/bin/bash

#PJM -L "rscunit=ito-b"

#PJM -L "rscgrp=ito-g-16-dbg"

#PJM -L "vnode=24"

#PJM -L "vnode-core=6"

#PJM -L "elapse=10:00"

#PJM -j

#PJM -X

export OMP_NUM_THREADS=6

mpiexec -n 24 ./a.out

使用実ノード数 4 使用コア数 144 (36 x 4)

(33)

MPIによる並列処理(Intel MPI)

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

module load intel/2017 export I_MPI_PERHOST=36 export I_MPI_FABRICS=shm:ofa export I_MPI_HYDRA_BOOTSTRAP=rsh export I_MPI_HYDRA_BOOTSTRAP_EXEC=/bin/pjrsh export I_MPI_HYDRA_HOST_FILE=${PJM_O_NODEINF} mpiexec.hydra -n 144 ./a.out 使用実ノード数 4 使用コア数 144 (36 x 4)

(34)

ハイブリッド並列処理

Intel MPI + OpenMP

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

module load intel/2017

export I_MPI_PERHOST=4 export I_MPI_FABRICS=shm:ofa export I_MPI_PIN_DOMAIN=omp export I_MPI_PIN_CELL=core export OMP_NUM_THREADS=9 export KMP_STACKSIZE=8m export KMP_AFFINITY=compact export I_MPI_HYDRA_BOOTSTRAP=rsh export I_MPI_HYDRA_BOOTSTRAP_EXEC=/bin/pjrsh export I_MPI_HYDRA_HOST_FILE=${PJM_O_NODEINF} mpiexec.hydra -n 16 ./a.out 使用実ノード数 4 使用コア数 144 (36 x 4)

(35)

pjstat ジョブの状態確認

• 現在投入されているジョブの情報を表示 • 表示内容: • オプション無し: 自分が投入したジョブのみ表示 • --all オプション: 実行中の全ジョブを表示 $ pjstat

ACCEPT QUEUED STGIN READY RUNING RUNOUT STGOUT HOLD ERROR TOTAL 0 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_MEM 28700 test-mpifc NM RNE k70043a 10/04 09:34:06 0000:05:00 - 1 36 unlimited ジョブID ジョブスクリプト ユーザID 実行開始日時 制限時間

ファイル名

(36)

pjsub ジョブの削除

• 利用法:

• pjstatで表示されるジョブIDを指定

(37)

ITOシステムのソフトウェア

• コンパイラ、言語処理系 • 富士通コンパイラ、Intelコンパイラ、PGIコンパイラ、CUDA、CUDA Fortran、Perl、Python • 数値計算ライブラリ • SSL II、BLAS/LAPACK/ScaLAPACK、NAGライブラリ、FFTW、PETSc • その他ライブラリ • HDF5、NetCDF • 計算化学 • Gaussian、Gaussview、CHARMM、VASP、Molpro、SCIGRESS、AMBER、GAMESS、 GROMACS • 流体・構造解析

• Marc/Marc Mentat、MSC Nastran/Patran、ANSYS、OpenFOAM、FrontFlow/Red

• データ解析 • SAS、ENVI/IDL、R • 科学技術計算 • Mathematica、MATLAB • 機械学習 • TensorFlow • 画像処理 • FIELDVIEW、AVS

(38)

Moduleコマンド

• 使用するソフトウェアの選択 • 必要な環境変数の自動設定 • 利用例: • 利用可能なモジュールの確認 • モジュールの選択 • モジュールの選択取り消し • 使用するモジュールファイルディレクトリ(モジュールの設定ファイル群がある場所)を追加 $ module avail $ module load モジュール名/バージョン $ module unload モジュール名/バージョン $ module use モジュールファイルディレクトリ

(39)

富士通コンパイラ

• コマンド名

言語 コマンド 自動並列 OpenMP

非MPI Fortran frt -Kparallel -Kopenmp

C fcc

C++ FCC

MPI Fortran mpifrt

C mpifcc

(40)

富士通コンパイラの主なオプション

-c オブジェクトファイルの作成までを行う -o ファイル名 作成するファイル名を変更 -Kfast 最適化(推奨オプション) -Kparallel 自動並列化 -Kopenmp OpenMPによる並列化 -Free 自由形式(Fortran) -Fixed 固定形式(Fortran) -Haefosux コンパイル時及び実行時に引数の整合性、添え字式、部分列式 の値、未定義変数の参照、配列式の形状適合等を検査(Fortran) -Kocl 最適化制御行を有効化(C/C++) -Xg GCC Cコンパイラ(C89規格)の仕様に基づいてコンパイル (C)

(41)

Intelコンパイラ

• 環境設定 • コンパイル時、対話的な実行時、およびジョブスクリプト内での利用時に必要 • バージョン2017を利用 • バージョン2016を利用 • コマンド

$ module load intel

$ module load intel/2016

言語

コマンド

自動並列

OpenMP

非MPI

Fortran

ifort

-parallel -qopenmp

C

icc

C++

icpc

MPI

Fortran

mpiifort

C

mpiicc

C++

mpiicpc

(42)

Intelコンパイラの主なオプション

-c オブジェクトファイルの作成まで

を行う

-o ファイル名 作成するファイル名を変更

-ipo -O3 -no-prec-div -fp-model fast=2 -xHost 最適化(推奨オプション)

-parallel 自動並列化

-qopenmp OpenMPによる並列化

(43)

GPU(CUDA)の利用方法

• 環境設定

• ジョブスクリプトにも記述

• CUDAプログラムのコンパイル例)

• ジョブスクリプト例)

$ module load cuda

$ nvcc -gencode arch=compute_60,code=sm_60 -o test test.cu

#!/bin/bash #PJM -L "vnode=1" #PJM -L "vnode-core=36" #PJM -L "rscunit=ito-b" #PJM -L "rscgrp=ito-g-4" #PJM -L "elapse=1:00" module load cuda

(44)

Pythonの利用

• Python2 • 特に設定せず、利用可能 • Python3 • moduleで選択して利用 • 利用可能なバージョンの確認 • 使用するモジュールの選択 • 実行 • python2 コマンドで、Python2も実行可能 $ python

$ module avail python

$ module load python/バージョン番号

(45)

Pythonのパッケージ追加

• 自分のホームディレクトリに追加可能 • Python2 • Python3 (モジュール選択後) • 注意 • パッケージの追加に伴って、ストレージの使用量が増加するので、不要なパッケージは削 除する • パッケージ追加時にメモリやCPU時間が不足して失敗する場合、フロントエンド、もしく はバックエンドで実行

$ pip2 install パッケージ名 --user

(46)

試験的に公開中のソフトウェア

• 動作確認が十分に行えていないソフトウェアを試験的に公開中 • Caffe、FrontFlow/Red、OpenCV、Open MPI、MVAPICH2等 • 利用方法: • モジュールファイル・ディレクトリの追加 • module avail で利用可能なモジュールファイルを確認して、選択

(47)

実習 バックエンドの利用

• MobaXtermで、Sessions から ito.cc.kyushu-u.ac.jp をダブルクリックして ログインノードにログイン • 以下の手順で、MPIプログラムのコンパイル、ジョブ投入、結果確認 • 時間が余ったら、プログラムやスクリプトを書き換えて試してみて下さい。 $ cp /home/tmp/test/* . $ ls $ cat test-mpi.c $ cat test.sh $ cat test.dat

$ mpifcc -Kfast test-mpi.c -o test-mpi $ pjsub test.sh

$ pjstat

参照

関連したドキュメント

本研修会では、上記クリーニング&加工作業の 詳細は扱いません。午後のPower BIレポート

ダウンロードしたファイルを 解凍して自動作成ツール (StartPro2018.exe) を起動します。.

平成 28 年 3 月 31 日現在のご利用者は 28 名となり、新規 2 名と転居による廃 止が 1 件ありました。年間を通し、 20 名定員で 1

例1) 自社又は顧客サーバの増加 例2) 情報通信用途の面積増加. 例3)

 このフェスティバルを成功させようと、まずは小学校5年生から50 代まで 53

原子力規制委員会 設置法の一部の施 行に伴う変更(新 規制基準の施行に 伴う変更). 実用発電用原子炉 の設置,運転等に

具体的な取組の 状況とその効果 に対する評価.

地点と KAAT の共同制作作品。平成 29 年、地点「忘れる日本人」で鮮烈な KAAT デビューを飾った作家、松原俊太郎による 新作を上演する。.. 9