NVIDIA HPC SDKコンパイラ

バージョン モジュールファイル名 システム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] 実施されなかった最適化についての情報を表示します。
  • Fortran言語固有オプション
オプション名 説明
-Mfixed プログラムが固定形式で記述されていることを指示します。
-Mfree プログラムが自由形式で記述されていることを指示します。
-Mstandard ANSI規格準拠でない構文を警告します。
-Mdclchk 暗黙の型宣言を警告します。
-C プログラム実行時に、配列の領域外参照を検出します。
  • GPU関連のオプション
オプション名 説明
-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ライブラリ をご覧ください。