4. ソフトウェア環境¶
Info
本ページのコマンドライン例では、以下の表記を使用します。
[login]$ : ログインノード
[rNnN]$ : 計算ノード
[login/rNnN]$ : ログインノードまたは計算ノード
[yourPC]$ : ログインノードへの接続元環境
4.1. TSUBAME4.0固有の機能について¶
4.1.1. t4-user-info コマンド¶
TSUBAME4.0では、システム固有の各種情報を表示するためのコマンド t4-user-info を提供しています。
本コマンドでは以下の情報を取得できます。
引数なしで t4-user-info コマンドを実行すると、使用方法・引数の概要が表示されます。
[login]$ t4-user-info
usage: t4-user-info [command] [sub command] [option]
< 以降、省略 >
Info
t4-user-info コマンドはログインノード上でのみ利用可能です。
4.1.1.1. 所有するTSUBAMEポイントの確認¶
自身が所属するTSUBAMEグループが所有するTSUBAMEポイントを確認するには、以下のコマンドを実行します。
[login]$ t4-user-info group point # 所属する全グループを表示
[login]$ t4-user-info group point -g <グループ名> # 指定したグループのみ表示
オプション
| オプション | 説明 |
|---|---|
| -g <グループ名> | 指定したグループの結果のみ表示します。 |
出力結果例を以下に示します。
gid group_name deposit balance
--------------------------------------------------------------
0000 group-foo 15.00 1000.00
9999 group-bar 20.00 300.00
--------------------------------------------------------------
total : 2 35.00 1300.00
| 項目名 | 説明 |
|---|---|
| gid | グループID |
| group_name | グループ名 |
| deposit | 仮ポイント(精算処理中のポイント) |
| balance | 所持ポイント |
4.1.1.2. グループディスクの利用状況確認¶
グループディスクの利用状況を確認したい場合、以下のコマンドを実行します。
[login]$ t4-user-info disk group # 所属する全グループを表示
[login]$ t4-user-info disk group -g <グループ名> # 指定したグループのみ表示
オプション
| オプション | 説明 |
|---|---|
| -g <グループ名> | 指定したグループの結果のみ表示します。 |
出力結果例を以下に示します。
/gs/fs /gs/bs
gid group_name size(GB) quota(GB) file(M) quota(M) size(GB) quota(GB) file(M) quota(M)
---------------------------------------------------------------------------------------------------------------
xxxx TESTGROUP 0.00 0 0.00 0 29781.32 50000 7.50 100
| 項目名 | 説明 |
|---|---|
| /gs/fs | 高速ストレージ領域 |
| /gs/bs | 大容量ストレージ領域 |
| gid | グループID |
| group_name | TSUBAMEグループ名 |
| size(GB) | 使用中のファイルサイズ (単位:GB) |
| quota(GB) | 利用可能なファイルサイズ (単位:GB) |
| file(M) | 使用中のinode数 (単位:100万) |
| quota(M) | 利用可能なinode数 (単位:100万) |
Info
inodeとは、ファイルやディレクトリを管理するための管理情報です。ファイル・ディレクトリの総数とお考え下さい。
なお、現在/gs/fs領域全体の空きinode数が非常に少なくなっています。大量のファイルを取り扱う場合、/gs/bs領域の利用もご検討いただけますと幸いです。
4.1.1.3. ホームディレクトリ・ワークディレクトリの利用状況確認¶
ホームディレクトリおよびワークディレクトリの利用状況を確認したい場合、以下のコマンドを実行します。
[login]$ t4-user-info disk home
出力結果例を以下に示します。
uid name b_size(GB) b_quota(GB) i_files i_quota area
--------------------------------------------------------------------
xxxx ux00000 13 25 33943 2000000 home
xxxx ux00000 0 100 1 2000000 work
| 項目名 | 説明 |
|---|---|
| uid | ユーザーID |
| name | TSUBAMEアカウント名 |
| b_size(GB) | 使用中のファイルサイズ (単位:GB) |
| b_quota(G) | 利用可能なファイルサイズ (単位:GB) |
| i_files | 使用中のinode数 |
| i_quota | 利用可能なinode数 |
| area | home:ホームディレクトリ work:ワークディレクトリ |
Info
inodeとは、ファイルやディレクトリを管理するための管理情報です。ファイル・ディレクトリの総数とお考え下さい。
なお、現在ホームディレクトリ全体の空きinode数が非常に少なくなっています。大量のファイルを取り扱う場合、ワークディレクトリの利用をご検討ください。
4.1.1.4. 計算ノードの予約状況確認¶
予約中のノードを確認したい場合、以下のコマンドを実行します。
[login]$ t4-user-info compute ar # 今月の空きノード状況を表示
| オプション | 説明 |
|---|---|
| -g <グループ名> | 指定したグループの結果のみ表示します |
| -m < yyyymm > | 指定した月内に利用開始時間を迎える予約のみ表示します |
| -n < yyyy1 mm1 dd1 yyyy2 mm2 dd2 > | 指定した年月日(yyyy1 mm1 dd1 から yyyy2 mm2 dd2 まで)の範囲内に利用開始時間を迎える予約のみ表示します |
| -o | 終了した予約を表示します |
| -csv | 出力フォーマットがcsv形式(カンマ区切り)となります |
出力結果例を以下に示します。
ar_id uid user_name gid group_name state start_date end_date time_hour node_count point return_point
-------------------------------------------------------------------------------------------------------------------------------------------------------
0000 0000 ua00000 0000 TESTGROUP r 2026-07-17 09:00:00 2026-07-17 16:00:00 7 1 35.00 0.00
-------------------------------------------------------------------------------------------------------------------------------------------------------
total : 1 7 1 35.00 0.00
| 項目名 | 説明 |
|---|---|
| ar_id | 予約ID |
| uid | ユーザーID |
| user_name | TSUBAMEアカウント名 |
| gid | グループID |
| group_name | TSUBAMEグループ名 |
| state | 予約ノードの状態を表示します r : 稼働中 / w:待機中 / E:停止中 / W:準備中 / d:削除中 |
| start_date | 利用開始時間 |
| end_date | 利用終了時間 |
| time_hour | 利用時間 (単位:時) |
| node_count | 利用ノード数 |
| point | 消費ポイント |
| return_point | 予約・実行期間中にキャンセルされた際、返却されたポイント |
4.1.1.5. 計算ノードの予約空き状況確認¶
計算ノードの予約が可能な空きノード数を確認したい場合、以下のコマンドを実行します。
[login]$ t4-user-info compute ars # 今月の空きノード状況を表示
[login]$ t4-user-info compute ars -m <yyyy mm> # 指定した年/月の空きノード状況を表示
| オプション | 説明 |
|---|---|
| -m <yyyy mm> | 指定した年/月の空きノード状況を表示します |
| -csv | 出力フォーマットがcsv形式(カンマ区切り)となります |
出力結果例を以下に示します。
=== Number of nodes that can be reserved ===
month : 2026-07
Day Week 00:00 01:00 02:00 03:00 04:00 05:00 06:00 07:00 08:00 09:00 10:00 11:00 12:00 13:00 14:00 15:00 16:00 17:00 18:00 19:00 20:00 21:00 22:00 23:00
-----------------------------------------------------------------------------------------------------------------------------------------------------------
01 Wed 72 73 73 73 73 73 73 73 72 72 71 71 71 70 68 68 68 73 74 74 75 75 79 80
02 Thu 80 80 80 80 80 80 80 80 79 54 45 42 42 18 17 17 17 17 17 17 17 17 17 3
03 Fri 12 12 12 12 12 12 12 12 51 51 42 44 43 67 59 59 67 69 70 70 70 70 68 69
04 Sat 54 54 54 54 54 54 54 54 54 54 45 46 46 47 38 38 37 36 36 36 36 37 38 39
05 Sun 72 72 72 71 71 71 71 71 71 79 79 78 77 78 77 77 77 77 79 79 79 79 79 80
06 Mon 80 80 80 80 80 80 80 80 78 79 59 59 58 57 51 52 51 51 75 75 79 79 81 82
07 Tue 81 81 81 81 81 81 81 81 81 81 79 80 78 79 82 83 83 84 80 80 80 79 80 80
08 Wed 80 80 80 80 80 81 81 81 80 80 80 77 77 53 52 52 52 53 53 53 53 52 52 53
09 Thu 52 53 53 53 53 53 53 53 53 53 53 53 53 71 66 64 64 64 64 64 64 64 65 66
10 Fri 66 66 66 66 66 66 66 66 66 66 66 66 67 67 66 65 65 65 65 65 65 64 65 66
11 Sat 66 66 66 66 66 66 67 67 67 67 67 67 43 43 42 42 42 42 66 66 66 66 65 65
12 Sun 66 66 66 66 66 66 66 66 66 65 65 65 62 62 65 67 67 67 67 66 66 66 66 67
13 Mon 68 68 68 68 68 69 69 69 69 69 67 68 75 76 75 75 74 75 75 75 75 75 76 78
14 Tue 79 79 79 79 79 79 79 79 79 79 79 79 78 78 77 76 76 75 77 76 75 74 74 75
15 Wed 75 75 75 75 75 75 75 75 75 75 75 78 78 78 77 75 75 75 71 71 71 71 71 72
16 Thu 72 73 73 73 73 73 73 73 72 73 73 73 73 79 78 78 78 78 76 75 75 75 76 78
17 Fri 78 78 78 78 78 78 78 79 78 78 78 78 78 78 77 78 77 77 77 77 77 77 78 80
18 Sat 80 80 80 80 80 80 80 80 80 80 80 80 81 81 80 80 80 80 80 80 80 80 80 81
19 Sun 81 81 81 81 81 81 81 81 80 80 80 80 81 80 79 79 79 79 78 78 78 78 80 81
20 Mon 81 81 81 81 81 81 81 81 81 81 83 83 83 83 82 82 82 82 82 82 82 82 82 85
21 Tue 85 85 85 85 85 85 85 85 84 84 84 84 84 84 83 83 83 83 83 83 84 85 85 86
22 Wed 86 86 86 86 86 86 86 86 86 86 86 86 86 86 85 87 87 87 92 92 92 92 92 94
23 Thu 94 94 94 94 94 94 94 94 94 94 94 94 94 94 93 93 93 93 93 93 93 93 94 95
24 Fri 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 96 97 97 97 97 97 97 97 98
25 Sat 98 98 98 98 98 98 98 98 98 98 98 98 98 98 97 97 97 97 97 97 97 97 97 98
26 Sun 98 98 98 98 98 98 98 98 98 98 98 98 98 99 98 98 98 98 98 98 98 98 98 99
27 Mon 99 99 99 99 99 99 99 99 99 99 119 119 119 119 118 118 118 118 118 118 118 118 118 119
28 Tue 119 119 119 119 119 119 119 119 119 119 119 119 120 120 119 119 119 119 119 119 119 119 119 120
29 Wed 120 120 120 120 120 120 120 120 120 120 120 120 120 120 119 119 119 119 119 119 119 119 119 120
30 Thu 120 120 120 120 120 120 120 120 120 120 120 120 120 120 119 119 119 119 119 119 119 119 119 120
31 Fri 120 120 120 120 120 120 120 120 120 120 120 120 120 120 119 119 119 119 119 119 119 119 119 120
-----------------------------------------------------------------------------------------------------------------------------------------------------------
| 項目名 | 説明 |
|---|---|
| month | 表示している年/月 |
| Day | 日 |
| Week | 曜日 |
| 0:00 - 23:00 | 時 |
日/時が交わる位置の値が、その時間の空きノード数です。
例として、上記の出力結果例を元に5ノードの予約を取ろうとした場合、7/2 23:00-23:59は3ノードしか空きがないため、この期間を含む予約は出来ません。
Warning
本コマンドで確認出来るのは各時間帯の空きノード数のみとなります。
通常は任意の時間帯で表示された空きノード数の連続した予約を取ることができますが、運用・メンテナンス上の都合上、特定の時刻をまたいだ予約の作成が予告なく制限されることがあります。
予約の作成に失敗した場合、時間帯をずらして予約を作成してください。
4.1.2. 利用環境の切換え方法(Environment Modules)¶
TSUBAME4.0では、Environment Modules(moduleコマンド)を使用することでコンパイラやアプリケーション利用環境の切り替えを行うことができます。
Environment Modulesについては man module または公式サイトをご参照ください。
4.1.2.1. 利用可能なmodule環境の表示¶
利用可能なmodule環境はmodule availまたはmodule avaで確認できます。
[login/rNnN]$ module avail
読み込めるバージョンについてはTSUBAME計算サービスWebページのシステム構成の下記項目をご確認下さい。
システムソフトウェア
サポートされているアプリケーション
4.1.2.2. module環境の設定情報表示¶
module環境の設定情報を確認したい場合、「module whatisモジュール名」を実行します。
[login/rNnN]$ module whatis intel/2024.0.2
-------------------------------- /apps/t4/rhel9/modules/modulefiles/compiler --------------------------------
intel/2024.0.2: Intel oneAPI compiler 2024.0 and MKL
4.1.2.3. module環境のロード¶
module環境をロードしたい場合、「module load モジュール名」を実行します。
[login/rNnN]$ module load intel
バッチスクリプトにおいてロードするmoduleは、コンパイル時と同様のものをロードしてください。
4.1.2.4. module環境の表示¶
現在使用しているmodule環境を確認したい場合、「module list」を実行します。
[login/rNnN]$ module list
Currently Loaded Modulefiles:
1) intel/2024.0.2 2) cuda/12.3.2
4.1.2.5. module環境のアンロード¶
ロードしたmodule環境をアンロードしたい場合「module unload モジュール名」を実行します。
[login/rNnN]$ module list
Currently Loaded Modulefiles:
1) intel/2024.0.2 2) cuda/12.3.2
[login/rNnN]$ module unload cuda
[login/rNnN]$ module list
Currently Loaded Modulefiles:
1) intel/2024.0.2
4.1.2.6. module環境の初期化¶
ロードしたmodule環境を初期化したい場合、「module purge」を実行します。
[login/rNnN]$ module list
Currently Loaded Modulefiles:
1) intel/2024.0.2 2) cuda/12.3.2
[login/rNnN]$ module purge
[login/rNnN]$ module list
No Modulefiles Currently Loaded.
4.2. Intelコンパイラ¶
TSUBAME4.0ではコンパイラとして、Intel コンパイラ (oneAPI) 、AMD コンパイラ (AOCC)、NVIDIA コンパイラ (NVIDIA HPC SDK) および GNU コンパイラが利用できます。
Intel コンパイラの各コマンドは以下のとおりです。
| コマンド | 言語 | コマンド形式 | 旧コマンド(廃止) |
|---|---|---|---|
| ifx | Fortran 77/90/95 | $ ifx [オプション] source_file |
ifort |
| icx | C | $ icx [オプション] source_file |
icc |
| icpx | C++ | $ icpx [オプション] source_file |
icpc |
利用する際は、moduleコマンドでintelを読み込んでください。--helpオプションを指定して頂くとコンパイラオプションの一覧が表示されます。
Info
Intel oneAPI 2024から、iccコマンドおよびicpcコマンドが使用できなくなりました。
icxコマンドおよびicpxコマンドを使用してください。
また、Intel oneAPI 2025から、ifortコマンドが使用できなくなりました。
ifxコマンドを使用してください。
Info
Intel oneAPI 2024から、C++のデフォルトの規格がC++14からC++17に変更になりました。それに伴い、一部文法がエラーとなります。詳細についてはこちらをご参照ください。
4.2.1. コンパイルの主なオプション¶
コンパイルの最適化オプションを以下に示します。
| オプション | 説明 |
|---|---|
-O |
O2 と同じ。 |
-O0 |
すべての最適化を無効にします。 |
-O1 |
最適化を有効にします。コードサイズを大きくするだけで高速化に影響を与えるような一部の最適化を無効にします。 |
-O2 |
最適化を有効にします。一般的に推奨される最適化レベルです。 ベクトル化は O2 以上のレベルで有効になります。-Oオプションを指定しない場合、デフォルトでこちらが指定されます。 |
-O3 |
O2 よりも積極的に最適化を行い、融合、アンロールとジャムのブロック、IF 文の折りたたみなど、より強力なループ変換を有効にします。 |
-xCORE-AVX512 |
Intel プロセッサー向けのIntel アドバンスト・ベクトル・エクステンション 512 (Intel AVX512)、Intel AVX2、AVX、SSE4.2、SSE4.1、SSSE3、SSE3、SSE2、SSE 命令を生成します。Intel AVX512 命令セット対応のIntel プロセッサー向けに最適化します。 |
-xCORE-AVX2 |
Intel プロセッサー向けのIntel アドバンスト・ベクトル・エクステンション 2 (Intel AVX2)、Intel AVX、SSE4.2、SSE4.1、SSSE3、SSE3、SSE2、SSE 命令を生成します。Intel AVX2 命令セット対応のIntel プロセッサー向けに最適化します。 |
-xSSE4.2 |
Intel プロセッサー向けのIntel SSE4 高効率および高速な文字列処理命令、Intel SSE4 ベクトル化コンパイラ命令およびメディア・アクセラレーター命令、およびIntel SSSE3、SSE3、SSE2、SSE 命令を生成します。Intel SSE4.2 命令セット対応のIntel プロセッサー向けに最適化します。 |
-xSSSE3 |
Intel プロセッサー向けのIntel SSSE3、SSE3、SSE2、SSE 命令を生成します。Intel SSSE3 命令セット対応のIntel プロセッサー向けに最適化します。xオプションを指定しない場合、デフォルトでこちらが指定されます。 |
-qopt-report=n |
最適化レポートを生成します。デフォルトでは、レポートは.optrpt 拡張子を持つファイルに出力されます。nには、0 (レポートなし) から5 (最も詳しい) の詳細レベルを指定します。デフォルトは 2 です。 |
-fp-model precise |
浮動小数点演算のセマンティクスを制御します。浮動小数点データの精度に影響する最適化を無効にし、中間結果をソースで定義された精度まで丸めます。 |
-g |
-gオプションはオブジェクト・ファイルのサイズを大きくするシンボリック・デバッグ情報をオブジェクト・ファイルに生成するようにコンパイラに指示します。 |
-traceback |
このオプションは、ランタイム時に致命的なエラーが発生したとき、ソースファイルのトレースバック情報を表示できるように、オブジェクト・ファイル内に補足情報を生成するようにコンパイラに指示します。 致命的なエラーが発生すると、コールスタックの 16 進アドレス (プログラム・カウンター・トレース) とともに、ソースファイル、ルーチン名、および行番号の相関情報が表示されます。 マップファイルとエラーが発生したときに表示されるスタックの 16 進アドレスを使用することで、エラーの原因を特定できます。 このオプションを指定すると、実行プログラムのサイズが増えます。 |
4.2.2. コンパイルの推奨最適化オプション¶
コンパイルの推奨最適化オプションを以下に示します。本システムに搭載している AMD EPYC 9654 は、Intel AVX512 命令セットに対応していますので、-xCORE-AVX512オプションを指定することができます。-xCORE-AVX512を指定すると、コンパイラがソースコードを解析し、最適なAVX512、AVX2、AVX、SSE命令を生成します。推奨最適化オプションは積極的な最適化を行い、かつ安全なオプションです。最適化のために計算の順序を変更する可能性があり、結果に誤差が生じる場合があります。
Info
Intel Xeon (Skylake 以降)で採用された AVX512 は、AMD では本システムに搭載している Zen4 アーキテクチャの第4世代 EPYC で対応しました。
| オプション | 説明 |
|---|---|
-O3 |
O2 最適化を行い、融合、アンロールとジャムのブロック、IF 文の折りたたみなど、より強力なループ変換を有効にします。 |
-xCORE-AVX512 |
Intel プロセッサー向けのIntel アドバンスト・ベクトル・エクステンション 512 (Intel AVX512)、Intel AVX2、AVX、SSE4.2、SSE4.1、SSSE3、SSE3、SSE2、SSE 命令を生成します。Intel AVX512 命令セット対応のIntel プロセッサー向けに最適化します。 |
上記のオプションを使用することにより、プログラムの性能が悪化した場合、最適化のレベルを-O2に下げるかベクトル化のオプションを変更してください。 また、結果が一致していない場合、浮動小数点のオプションも試してみてください。
4.2.3. Intel 64アーキテクチャーのメモリモデル指定¶
次のいずれかのメモリモデルを使用して実行バイナリを作成します。
| メモリモデル | 説明 |
|---|---|
small (-mcmodel=small) |
コードとデータのすべてのアクセスが、命令ポインター (IP) 相対アドレス指定で行われるように、コードとデータはアドレス空間の最初の 2GB までに制限されます。 -mcmodelオプションを指定しない場合、デフォルトでこちらが指定されます。 |
medium (-mcmodel=medium) |
コードはアドレス空間の最初の 2GB までに制限されますが、データは制限されません。コードは IP 相対アドレス指定でアクセスできますが、データのアクセスは絶対アドレス指定を使用する必要があります。 |
large (-mcmodel=large) |
コードもデータも制限されません。コードもデータもアクセスは絶対アドレス指定を使用します。 |
IP 相対アドレス指定は 32 ビットのみ必要ですが、絶対アドレス指定は 64 ビット必要です。 これは、コードサイズとパフォーマンスに影響します。 (IP 相対アドレス指定の方が多少速くアクセスできます。)
プログラム内の共通ブロック、グローバルデータ、静的データの合計が2GBを越えるとき、リンク時に次のエラーメッセージが出力されます。
<some lib.a library>(some .o): In Function <function>:
: relocation truncated to fit: R_X86_64_PC32 <some symbol>
…………………
: relocation truncated to fit: R_X86_64_PC32 <some symbol>
この場合は、-mcmodel=mediumと-shared-intelを指定してコンパイル/リンクして下さい。
medium メモリモデルまたは large メモリモデルを指定した場合、Intelのランタイム・ライブラリの適切なダイナミック・バージョンが使用されるように、-shared-intel コンパイラ・オプションも指定する必要があります。
4.3. NVIDIA HPC SDK¶
NVIDIA HPC SDK (旧PGIコンパイラ)の各コマンドは以下のとおりです。
| コマンド | 言語 | コマンド形式 | 旧コマンド |
|---|---|---|---|
| nvfortran | Fortran 77/90/95/2003/2008/2018 | $ nvfortran [オプション] source_file |
pgfortran |
| nvc | C | $ nvcc [オプション] source_file |
pgcc |
| nvc++ | C++ | $ nvc++ [オプション] source_file |
pgc++ |
各コマンドの詳細は$ man nvcc等でご確認下さい。
利用する際は、moduleコマンドでnvhpcを読み込んでください。--helpオプションを指定して頂くとコンパイラオプションの一覧が表示されます。
4.4. AOCC¶
AMD Optimizing C/C++ and Fortran Compilers (AOCC) の各コマンドは以下のとおりです。
| コマンド | 言語 | コマンド形式 |
|---|---|---|
| flang (clang) | Fortran 95/2003/2008 | $ flang [オプション] source_file |
| clang | C | $ clang [オプション] source_file |
| clang-cpp (clang) | C++ | $ clang-cpp [オプション] source_file |
利用する際は、moduleコマンドでaoccを読み込んでください。--helpオプションを指定して頂くとコンパイラオプションの一覧が表示されます。
4.5. GPU環境¶
TSUBAME4.0ではGPU(NVIDIA H100 SXM5)の利用環境を提供しております。
4.5.1. インタラクティブジョブの実行・デバッグ¶
ログインノード(login, login1, login2)には、GPUを搭載しておらず、コンパイル、リンクのみ実行可能です。 また、ログインノードにおける高負荷プログラムの実行は制限されています。
インタラクティブでの実行、デバックについては、バッチシステムを使用して実行可能です。 詳細については、インタラクティブジョブの投入を参照ください。
4.5.2. 対応アプリケーション¶
現在のGPU対応アプリケーションは次の通りです。(2024.4.1現在)
- ABAQUS 2024 --- ABAQUS利用の手引(別冊) を参照ください。
- ANSYS 2024R1 --- ANSYS 利用の手引(別冊) を参照ください。
- AMBER 22up05 --- AMBER利用の手引(別冊) を参照ください。
- Mathematica 14 --- Mathematica利用の手引(別冊) を参照ください。
- MATLAB 2024 --- MATLAB利用の手引(別冊) を参照ください。
- Linaro forge(旧:Arm Forge) --- 講習会内の「並列プログラミング」を参照ください。
- NVIDIA HPC SDK --- NVIDIA コンパイラ 利用の手引(別冊) を参照ください。
他のアプリケーションにつきまても、順次展開してまいります。
4.5.3. CUDA 対応のMPI¶
CUDA版に対応したMPI環境を用意しております。
Info
- OpenMPIのモジュールはOpenMPIのバージョンとビルド環境の組み合わせでバージョン管理されています。module load openmpi 利用時は、必ずバージョン指定をしてください。
- 本ドキュメントに記載されたOpenMPIのバージョンは最新でない可能性があります。 利用可能なバージョン一覧については module avail openmpi コマンドでご確認ください。 ( 特に理由がない場合、最新バージョンの利用を推奨します )
- 必要な関連 module がある場合、自動でロードされます。
OpenMPI + gcc環境
# OpenMPI, GCC環境の読込
[rNnN]$ module purge
[rNnN]$ module load openmpi/5.0.7-gcc
Loading openmpi/5.0.7-gcc
Loading requirement: cuda/12.8.0
OpenMPI + NVIDIA HPC SDK環境
# OpenMPI、NVIDIA HCP SDK 環境の読込
[rNnN]$ module purge
[rNnN]$ module load openmpi/5.0.7-nvhpc
Loading openmpi/5.0.7-nvhpc
Loading requirement: nvhpc/25.1_cuda12.6
OpenMPI + Intel環境
# OpenMPI, Intel環境の読込
[rNnN]$ module purge
[rNnN]$ module load openmpi/5.0.7-intel
Loading openmpi/5.0.7-intel
Loading requirement: intel/2025.0.0 cuda/12.8.0
4.5.4. Multi-Instance GPU (MIG)¶
資源タイプ node_o および gpu_h では、GPU数 1/2 が割り当てられています。
これはMulti-Instance GPU(MIG)機能を使用して、TSUBAME4.0の計算ノードに搭載されているNVIDIA H100 SXM5 94GB HBM2eを2つに論理分割することで実装しています。
MIGの詳細についてはこちらを参照してください。
なお、その他の資源タイプでは、MIG機能は使用しておりません。
4.5.5. Multi-Process Service (MPS)¶
マルチプロセスサービス (MPS) を使用すると、単一の GPU で複数の CUDA プロセスを使用できます。
プロセスは GPU 上で並行して実行されるため、GPU コンピュートリソースの飽和が発生しなくなります。
MPS を使用すると、カーネル操作や、別のプロセスからのメモリーコピーの同時実行または重複も可能になります。
MPSの詳細についてはこちらをご参照ください。
Info
TSUBAME4.0でMPSを利用した際に、同一ノード上で実行されている別のジョブに障害が発生する事案が発生しました。
本障害を回避するため、TSUBAME4.0では独自の nvidia-cuda-mps-control コマンドを用意しています。
module load cuda
または
module load nvhpc (nvhpc/21.3 を除く)
を実行することで、利用できるようになります。必ずこちらのコマンドを使用してください。
また、MPS利用時に環境変数 CUDA_MPS_PIPE_DIRECTORY を設定するよう紹介されているサイトがありますが、TSUBAME4.0では当該環境変数を変更してはいけません。
利用者が独自にCUDA_MPS_PIPE_DIRECTORY を設定することで、同様に上記障害が発生することがわかっています。
これらのルールを守らず他の利用者に損害を与えた場合、無予告でのジョブ削除や計算機アカウントの一時停止などの措置を行う可能性もありますので十分ご注意ください。
4.5.6. GPUのCOMPUTE MODEの変更¶
資源タイプnode_f、node_h、node_q、またはgpu_1を利用した場合、GPUのCOMPUTE MODEを変更することが出来ます。 GPUのCOMPUTE MODEを変更するには、対象となる資源タイプを指定した上で、ジョブスクリプトの中で、以下を指定してください。
#$ -v GPU_COMPUTE_MODE=<利用するモードの番号>
利用可能なモードは以下の3つです。
| 番号 | モード | 説明 |
|---|---|---|
| 0 | DEFAULTモード | 1つのGPUを複数のプロセスから同時に利用できる。 |
| 1 | EXCLUSIVE_PROCESSモード | 1つのGPUを1プロセスのみが利用できる。1プロセスから複数スレッドの利用は可能。 |
| 2 | PROHIBITEDモード | GPUへのプロセス割り当てを禁止する。 |
Info
対象となる資源タイプ指定時にGPU_COMPUTE_MODEを指定しない場合、DEFAULTモード(0)が設定されます。
対象外の資源タイプを指定した場合、GPU_COMPUTE_MODEはDEFAULTモード(0)固定です。
以下はスクリプトの例となります。
#!/bin/sh
#$ -cwd
#$ -l node_f=1
#$ -l h_rt=1:00:00
#$ -N gpumode
#$ -v GPU_COMPUTE_MODE=1
/usr/bin/nvidia-smi
インタラクティブで利用する場合、qrshは以下のような形となります。
[login]$ qrsh -g [TSUBAMEグループ] -l node_f=1 -l h_rt=0:10:00 -pty yes -v TERM -v GPU_COMPUTE_MODE=1 /bin/bash
4.6. コンテナの利用¶
TSUBAME4.0では、HPC向けコンテナ環境として Apptainer(旧:Singularity) が利用可能です。
Apptainer の使い方の例を以下に記します。
4.6.1. イメージの作成¶
Apptainer のイメージ作成手順例について以下に示します。ここでは、Ubuntu の最新 Docker イメージを使用します。
[オプション]
- -nv : GPUを使用する
- -B : ファイルシステムをマウントする
- -s : サンドボックス形式でイメージをビルドする
[login]$ mkdir $HOME/apptainer
[login]$ cd $HOME/apptainer
[login]$ apptainer build -s ubuntu/ docker://ubuntu:latest
INFO: Starting build...
Getting image source signatures
Copying blob 49b384cc7b4a done
Copying config bf3dc08bfe done
Writing manifest to image destination
Storing signatures
2024/05/29 13:07:49 info unpack layer: sha256:49b384cc7b4aa0dfd16ff7817ad0ea04f1d0a8072e62114efcd99119f8ceb9ed
2024/05/29 13:07:50 warn xattr{etc/gshadow} ignoring ENOTSUP on setxattr "user.rootlesscontainers"
2024/05/29 13:07:50 warn xattr{$HOME/apptainer/build-temp-2088960457/rootfs/etc/gshadow} destination filesystem does not support xattrs, further warnings will be suppressed
INFO: Creating sandbox directory...
INFO: Build complete: ubuntu/
[login apptainer]$ cd ubuntu/
[login apptainer]$ mkdir gs apps # /gs /apps をマウントするためのディレクトリを作成します
[login apptainer]$ cd ../
4.6.2. シェルの起動¶
Apptainer でシェルを起動する手順例について以下に示します。 ここでは、イメージの作成 で作成したイメージを使用します。
[オプション]
- -nv : GPUを使用する
- -B : ファイルシステムをマウントする
- -f (--fakeroot) : コンテナ内でroot権限を行使する
- -w (--writable) : コンテナ内への書き込みを可能にする
Info
-w (--writable) オプションは必ず指定してください。
指定しない場合、正常に起動しないことを確認しています。
[login]$ cd $HOME/apptainer
[login]$ apptainer shell -B /gs -B /apps -B /home --nv -f -w ubuntu/
INFO: User not listed in /etc/subuid, trying root-mapped namespace
INFO: Using fakeroot command combined with root-mapped namespace
WARNING: nv files may not be bound with --writable
WARNING: Skipping mount /etc/localtime [binds]: /etc/localtime doesn't exist in container
WARNING: Skipping mount /bin/nvidia-smi [files]: /usr/bin/nvidia-smi doesn't exist in container
WARNING: Skipping mount /bin/nvidia-debugdump [files]: /usr/bin/nvidia-debugdump doesn't exist in container
WARNING: Skipping mount /bin/nvidia-persistenced [files]: /usr/bin/nvidia-persistenced doesn't exist in container
WARNING: Skipping mount /bin/nvidia-cuda-mps-control [files]: /usr/bin/nvidia-cuda-mps-control doesn't exist in container
WARNING: Skipping mount /bin/nvidia-cuda-mps-server [files]: /usr/bin/nvidia-cuda-mps-server doesn't exist in container
Apptainer> id
uid=0(root) gid=0(root) groups=0(root)
4.6.2.1. fakeroot利用時の留意事項について¶
Apptainer でフェイクルート機能(--fakeroot)を使用する場合、Apptainer はホスト側のfakerootをバインドマップして利用するためホストとコンテナの間でlibcのバージョンを一致させる必要があります。
ホストの libc ライブラリがコンテナー内の対応するライブラリよりも新しい場合、fakeroot コマンドは GLIBC バージョンが不足しているというエラーを出力する場合があります。( 参考:Fakeroot feature )
エラー出力例:
/.singularity.d/libs/faked: /lib/x86_64-linux-gnu/libc.so.6: version`GLIBC_2.33' not found (required by /.singularity.d/libs/faked)
/.singularity.d/libs/faked: /lib/x86_64-linux-gnu/libc.so.6: version`GLIBC_2.34' not found (required by /.singularity.d/libs/faked)
fakeroot: error while starting the `faked' daemon.
/.singularity.d/libs/fakeroot: 1: kill: Usage: kill [-s sigspec | -signum |-sigspec] [pid | job]... or
kill -l [exitstatus]
また、実験的サービスのため未サポートですが、本問題を回避するための互換ライブラリを用意しています。