バージョン | モジュールファイル名 | システムA | システムB/C | システムG | クラウドシステム | 備考 |
---|---|---|---|---|---|---|
23.9 (default) | nvhpc/23.9 | - | - | + | - | 2024年4月導入 |
23.5 | nvhpc/23.5 | - | - | + | - | 2023年8月導入 |
22.9 | nvhpc/22.9 | - | - | + | - | 2023年1月導入 |
+ : すべてのユーザが利用可能
- : 利用不可
システムGでは、システムにログインした時点で、NVIDIA HPC SDKコンパイラがデフォルトで設定されています。システムB、C、クラウドではNVIDIA HPC SDKコンパイラは使えません。
ログイン時に自動で環境設定を行いたい場合は、ログインシェルの起動ファイルに必要なmoduleコマンドを記述してください。詳細は 環境設定 をご覧ください。 moduleコマンドの詳細は Modules をご覧ください。
バージョン | モジュールファイル名 | システムA | システムB/C | システムG | クラウドシステム | 備考 |
---|---|---|---|---|---|---|
12.2.2 (dafault) | cuda/12.2.2 | - | - | + | - | 2024年4月導入 |
12.1.1 | cuda/12.1.1 | - | - | + | - | 2023年8月導入 |
11.7.1 | cuda/11.7.1 | - | - | + | - | 2023年1月導入 |
9.2 | cuda/9.2 | - | - | + | - | 2023年1月導入 |
+ : すべてのユーザが利用可能
- : 利用不可
NVIDIA HPC SDKコンパイラのモジュールファイルをダウンロードするだけでcudaもロードされます。 cudaのデフォルトバージョンは11.7ですが、バージョンを切り替えたい場合は、PrgEnvNvidia がロードされている状態で、以下のようにmoduleコマンドを実行してください。
$ module load cuda/9.2
言語 | コマンド | 実行形式 |
---|---|---|
Fortran | nvfortran | nvfortran [オプション] ファイル名 |
C | nvc | nvc [オプション] ファイル名 |
C++ | nvc++ | nvc++ [オプション] ファイル名 |
オプション名 | 説明 |
---|---|
-o FILENAME | オブジェクトファイルの名前を指定します。 |
-mcmodel=medium | 2Gbyteを超えるメモリを使用できるようになります。 |
-mp | OpenMP指示子を有効にしてコンパイルします。 |
-Mconcur | 自動並列化を行います。 |
-O0/-O1/-O2/-O3/-O4 | 最適化のレベルを指定します |
-fast | 一般的な最適化機能を有効にします。 |
-Mipa=fast | 手続き間の解析処理を最適化します。(注意事項) 現在のバージョンでは使用できなくなりました。 |
オプション名 | 説明 |
---|---|
-Mlist | リスティングファイルを作成します。 |
-Minform=inform | すべてのエラーメッセージを表示します。 |
-Minfo[=OPTION] | 標準エラー出力に情報を表示します。 表示する情報はオプションで指定します。 |
-Mneginfo[=OPTION] | 実施されなかった最適化についての情報を表示します。 |
オプション名 | 説明 |
---|---|
-Mfixed | プログラムが固定形式で記述されていることを指示します。 |
-Mfree | プログラムが自由形式で記述されていることを指示します。 |
-Mstandard | ANSI規格準拠でない構文を警告します。 |
-Mdclchk | 暗黙の型宣言を警告します。 |
-C | プログラム実行時に、配列の領域外参照を検出します。 |
オプション名 | 説明 |
---|---|
-gpu | GPUに関する設定を指定します。-acc、-cuda、-mp、-stdparオプションと併せて使用します。 (例)-gpu=cc80 -acc ※ccはcompute capabilityを意味します。システムGに搭載のGPUはA100ですので、ccを指定する場合は、cc80としてください。 |
-acc | OpenACCを有効にします。 |
-cuda | CUDAを有効にします。 |
-Minfo=accel | GPU関連のコンパイル情報を出力します。 |
$ nvfortran test.f90 # Fortranの例
$ nvc test.c # C言語の例
$ nvc++ test.cpp # C++の例
$ tssrun ./a.out # 実行
$ nvfortran -Mconcur test.f90
$ tssrun --rsc p=1:t=4:c=4 ./a.out # 並列数4を指定して実行
OpenMPは、プログラムの並列化のためのオープン規格です。 ソースコードに#pragma omp(C/C++)もしくは!$ompで始まる指示を書き込み、所定のオプションをつけてコンパイルするだけで、コンパイラに自動で並列化を行わせることができます。
OpenMPへの指示を書き込んだソースコードをコンパイルするには、-mpオプションをつけます。
$ nvc -mp test.c
コンパイルしたプログラムを実行する時、--rscオプションでtとcに並列数を指定すると、その並列数でプログラムが実行されます。
$ tssrun --rsc p=1:t=8:c=8 ./a.out # 並列数8を指定して実行
OpenACCは、プログラムの並列化のためのオープン規格です。 ソースコードに#pragma acc(C/C++)もしくは!$accで始まる指示を書き込み、所定のオプションをつけてコンパイルするだけで、GPU上で動作する実行コードを生成します。
OpenACCへの指示を書き込んだソースコードをコンパイルするには、-accオプションをつけます。
$ nvfortran -acc test.f90
OpenMPIライブラリが利用できます。MPIプログラムのコンパイル、リンク、実行方法については、 OpenMPIライブラリ をご覧ください。