--- title: FX700の利用方法 taxonomy: category: - docs external_links: process: true no_follow: true target: _blank mode: active media_order: fx700_system.png published: true --- [toc] ## 概要 {#overview} PRIMEHPC FX700は、富岳と同じCPUを搭載した最新のスーパーコンピュータです。京都大学学術情報メディアセンターでは、FX700を小規模な構成で保有しており、スーパーコンピュータシステムの利用者向けの評価環境として提供しています。 利用するためには、[FX700「試用制度」及び「小ノード実行枠」](http://www.iimc.kyoto-u.ac.jp/ja/services/comp/support/kyodo/fx700_2021.html)に応募してください。試用制度であれば審査なし1か月間お使いいただけます。利用にかかる費用負担はありません。 ! 2023年4月より、ジョブスケジューラを PBS から Slurm に変更しました。 ## システム構成 {#system} Camphor3やLaurel3とは独立したネットワークに接続した小規模なPCクラスタ型の構成です。 ログインノードは、Intel Xeonプロセッサ(x86_64アーキテクチャ)のサーバのため、計算ノードのA64FXプロセッサ(aarch64アーキテクチャ)でプログラムを実行するためには、クロスコンパイルが必要となります。利便性を考えて、計算ノード fx-0001 でも対話的にネイティブコンパイルが可能な構成としています。 ![fx700_system](fx700_system.png?lightbox=100%&resize=600 "fx700_system") 計算ノードCPU仕様 | 項目 | 内容 | ------------ | -------------- | 名称 | A64FX | 命令 | セット | アーキテクチャー | Armv8.2-A SVE | 演算コア数 | 48 コア | クロック | 1.8 GHz | 理論演算性能 | 2.7648 TFLOPS 計算ノード仕様 | 項目 | 内容 | ------------ | -------------- | アーキテクチャー | 1 CPU/ノード | メモリ容量 | 32 GiB(HBM2, 4スタック) | メモリバンド幅 | 1,024 GB/s | インターコネクト | InfiniBand EDR | 内蔵ストレージ | M.2 SSD Type 2280 スロット(NVMe) | OS | Red Hat Enterprise Linux 8 [PRIMEHPC FX700の製品情報](https://www.fujitsu.com/jp/products/computing/servers/supercomputer/downloads/#anc-fx700) ### ログインノード {#login} FX700にログインするには、SSH公開鍵認証により次のホストに接続してください。 ``` fx-login.kudpc.kyoto-u.ac.jp ``` - スパコンの利用者ポータルに登録済みの鍵でログインできます。(Camphor3, Laurel3のホームディレクトリにあるauthorized_keysに直接追加した鍵は利用できません) - クラスタ内部はホストベース認証で相互ログイン可能です。 ### 共有ストレージ {#storage} /home および /work を共有ストレージとして構成しています。/homeは fx-loginのローカルストレージですので、ログインノード上の操作に対する応答は高速ですが、負荷には強くありません。計算の実行には /work をご利用ください。 ```bash [root@fx-0001 ~]# df -h /home/ /work/ Filesystem Size Used Avail Use% Mounted on fx-login-ib:/home 399G 27G 373G 7% /home armst-ib:/work 7.0T 25G 7.0T 1% /work ``` - /home は fx-login:/home をマウントしています。 ** ユーザ当たり20GB の容量制限をかけています。** - /work は armst:/work をマウント。計算にはこちらを使ってください。 **ユーザ当たり 500GB の容量制限をかけています。** - /home, /workはautofsによりアクセス時に都度マウントする仕様です。 - /work の容量が不足する場合はご相談ください。 - ファイルサーバの応答が無い場合は管理者にお知らせください。ファイルサーバ側を再起動します。 - 利用終了後にファイルは削除しますので、利用期間中にご自身でバックアップを実施してください。 ## コンパイル方法 {#compile} 利用可能なコンパイラは Fujitsu compiler と GCC です. ### Fujitsu コンパイラ {#fujitsu-compiler} **fx-login におけるクロスコンパイル用コマンド** ```bash # fortran用 [b12345@fx-login ~]$ frtpx -v frtpx: Fujitsu Fortran Compiler 4.4.0 使用法: frtpx [オプション] ファイル [b12345@fx-login ~]$ mpifrtpx -v frtpx: Fujitsu Fortran Compiler 4.4.0 使用法: frtpx [オプション] ファイル # C言語用 [b12345@fx-login ~]$ fccpx -v fccpx: Fujitsu C/C++ Compiler 4.4.0 simulating gcc version 6.1 [b12345@fx-login ~]$ mpifccpx -v fccpx: Fujitsu C/C++ Compiler 4.4.0 simulating gcc version 6.1 使用法: fccpx [オプション] ファイル # C++言語用 [b12345@fx-login ~]$ FCCpx -v FCCpx: Fujitsu C/C++ Compiler 4.4.0 simulating gcc version 6.1 使用法: FCCpx [オプション] ファイル [b12345@fx-login ~]$ mpiFCCpx -v FCCpx: Fujitsu C/C++ Compiler 4.4.0 simulating gcc version 6.1 使用法: FCCpx [オプション] ファイル ``` **fx-0001 におけるネイティブコンパイル用コマンド** ```bash # fortran用 [b12345@fx-0001 ~]$ frt -v frt: Fujitsu Fortran Compiler 4.4.0 使用法: frt [オプション] ファイル [b12345@fx-0001 ~]$ mpifrt -v frt: Fujitsu Fortran Compiler 4.4.0 使用法: frt [オプション] ファイル # C言語用 [b12345@fx-0001 ~]$ fcc -v fcc: Fujitsu C/C++ Compiler 4.4.0 simulating gcc version 6.1 使用法: fcc [オプション] ファイル [b12345@fx-0001 ~]$ mpifcc -v fcc: Fujitsu C/C++ Compiler 4.4.0 simulating gcc version 6.1 使用法: fcc [オプション] ファイル # C++言語用 [b12345@fx-0001 ~]$ FCC -v FCC: Fujitsu C/C++ Compiler 4.4.0 simulating gcc version 6.1 使用法: FCC [オプション] ファイル [b12345@fx-0001 ~]$ mpiFCC -v FCC: Fujitsu C/C++ Compiler 4.4.0 simulating gcc version 6.1 使用法: FCC [オプション] ファイル ``` 代表的なコンパイルオプション | オプション名 | 説明 | ------------ | -------------- | -Kopenmp | OpenMP指示子を有効にしてコンパイルします。 | -Kparallel | 自動並列化を有効にします。 | -Kfast | ターゲットマシン上で高速に実行するオブジェクトプログラムを作成します。-O3 -Keval,fast_matmul,fp_contract,fp_relaxed,fz,ilfunc,mfunc,omitfp,simd_packed_promotion と等価です。 | -KA64FX | A64FXプロセッサ向けのオブジェクトファイルを出力するように指示します。 | -KSVE | Armv8-Aアーキテクチャの拡張であるSVEを利用するか否かを指示します。 コンパイラの詳細は、マニュアルを参照してください。 [富士通コンパイラマニュアル](https://web.kudpc.kyoto-u.ac.jp/auth/manual/fcomp/lastest) (アクセスにはスパコンのログインアカウントで認証が必要) ### GCC fx-0001上でネイティブコンパイルしてください。 ```bash [b12345@fx-0001 ~]$ gfortran --version GNU Fortran (GCC) 8.3.1 20191121 (Red Hat 8.3.1-5) Copyright (C) 2018 Free Software Foundation, Inc. This is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. [b12345@fx-0001 ~]$ gcc --version gcc (GCC) 8.3.1 20191121 (Red Hat 8.3.1-5) Copyright (C) 2018 Free Software Foundation, Inc. This is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. [b12345@fx-0001 ~]$ g++ --version g++ (GCC) 8.3.1 20191121 (Red Hat 8.3.1-5) Copyright (C) 2018 Free Software Foundation, Inc. This is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. ``` ## ジョブ投入方法 (Slurm) {#job} sbatchコマンドでジョブを投入してください。Camphor3, Laurel3 とはジョブスクリプトの記述方法が異なりますのでご注意ください。 Camphor3, Laurel3 はSlurm を独自仕様にカスタマイズしていますが、FX700は標準のSlurmの機能のみを使用します。 ### バッチキュー {#queue} 1ノードだけ割り当てたdebugキューと、10ノード割り当てた shortキューがあります。 debugキューでテストした後に、shortキューで本番のジョブを実行してください。 ```bash $ sinfo -s PARTITION AVAIL TIMELIMIT NODES(A/I/O/T) NODELIST debug* up infinite 2/7/2/11 fx-[0002-0012] short up infinite 2/7/2/11 fx-[0002-0012] ``` ### オプション |オプション|説明|初期値|最大値| |----------|----|------|------| |#SBATCH -p _QUEUE_ | キュー名の指定 | -- | -- | |#SBATCH -N _NODE_ |使用するノード数の指定|1|試用制度:1 / 小ノード実行枠:8| |#SBATCH -n _PROCS_ |プロセス数の指定|1|試用制度:48 / 小ノード実行枠:384| |#SBATCH --cpus-per-task=_CORES_|プロセスあたりのコア数の指定|1|48| |#SBATCH --mem=_MEMORY_|プロセスあたりのメモリサイズの指定|650M|31200M| |#SBATCH -t _HOUR_:_MINUTES_:_SECONDS_ | 実行時間の上限を指定 | 1:00:00(1時間) | 168:0:0(7日間)| ### ジョブスクリプトの記述例 {#jobscript} ジョブスクリプト例1 (1コア8GBを確保した逐次ジョブ) ```bash #!/bin/bash #SBATCH -p debug #SBATCH -N 1 # ノード数 #SBATCH -n 8 # プロセス数 #SBATCH --cpus-per-task=1 # プロセスあたりのコア数 #SBATCH --mem=8G # ノード当たりのメモリサイズ srun ./a.out ``` ジョブスクリプト例2 (16コア8GBを確保したOpenMPジョブ(16スレッド)) ```bash #!/bin/bash #SBATCH -p debug #SBATCH -N 1 # ノード数 #SBATCH -n 1 # プロセス数 #SBATCH --cpus-per-task=16 # プロセスあたりのコア数 #SBATCH --mem=8G # ノード当たりのメモリサイズ #SBATCH -t 1:00:00 # 経過時間の上限1時間 srun ./a.out ``` ジョブスクリプト例3 ((48コア、8GBメモリ) x 2ノードのMPIジョブ(96プロセス)) ```bash #!/usr/bin/bash #SBATCH -p debug #SBATCH -N 2 # ノード数 #SBATCH -n 96 # プロセス数 #SBATCH --cpus-per-task=1 # プロセスあたりのコア数 #SBATCH --mem=30G # ノード当たりのメモリサイズ #SBATCH -t 1:00:00 # 経過時間の上限1時間 srun ./a.out ``` ジョブスクリプト例4 ((48コア、30GBメモリ) x 2ノードのハイブリッドジョブ(24プロセス x 4スレッド)) ```bash #!/bin/bash #SBATCH -p debug #SBATCH -N 2 # ノード数 #SBATCH -n 24 # プロセス数 #SBATCH --cpus-per-task=4 # プロセスあたりのコア数 #SBATCH --mem=30G # ノード当たりのメモリサイズ #SBATCH -t 1:00:00 # 経過時間の上限1時間 srun ./a.out ```