コンテンツにスキップ

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 進アドレスを使用することで、エラーの原因を特定できます。
このオプションを指定すると、実行プログラムのサイズが増えます。

コンパイルの推奨最適化オプションを以下に示します。本システムに搭載している 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]
上記のようなエラーが発生した場合、ホストとコンテナの libc ライブラリバージョンが一致するようにコンテナを再作成してください。
また、実験的サービスのため未サポートですが、本問題を回避するための互換ライブラリを用意しています。