Version 23.9
Release Notes原文
当ページは原文の意訳となっております。
1. 新機能について
NVIDIA HPC SDK 23.9へようこそ。NVIDIA HPC SDKは、CPU、GPU、インターコネクトといったHPCプラットフォーム全体のプログラム開発を可能にするコンパイラとライブラリの包括的パッケージです。HPC SDK 23.9のリリースは、新機能および重要な機能性やパフォーマンスの向上を含みます。
-fcoroutines
で利用可能です。NVHPC_INSTALL_TYPE=auto
の設定によって選択されることがあります。「自動」インストールモードを選択することによって、compiler localrc configuration fileは$HOME/.config/NVIDIA/nvhpc
内に保存され、HPC SDKインストールディレクトリには保存されません。今後のリリースで、「自動」インストールモードはデフォルトになる予定です。2. リリースに含まれる各コンポーネントのバージョン
各コンポーネントについて、バージョン番号が記載されております。
各バージョンについて詳細を確認したい場合は原文の表をご確認ください。
3. サポートされるプラットフォーム
3.1. プラットフォーム要件
Linuxディストリビューション、gcc/glibcの最低バージョン、CUDAドライバの最低バージョンが記載されております。
詳細は原文の表をご確認ください。
3.2. サポートされるCUDA Toolkitのバージョン
NVIDIA HPC SDKは、NVIDIA GPUを用いたプログラムをビルドする場合にCUDA Toolchainの機能を使用します。すべてのNVIDIA HPC SDKは、必要なCUDAコンポーネントをインストールディレクトリにインストールします。インストール先のパスは [install-prefix]/[arch]/[nvhpc-version]/cuda
です。
GPU用にコンパイルされたプログラムを実行するためには、GPU搭載システムにNVIDIA CUDA GPUデバイスドライバのインストールが必要です。
NVIDIA HPC SDKにはCUDAドライバは含まれませんので、適切なCUDAドライバをNVIDIAからダウンロードする必要があります。
システムにインストールされたCUDAドライバのバージョンを確認するためにnvaccelinfo
コマンドが利用できます。
NVIDIA HPC SDK 23.9は以下のtoolchainを含みます。
- CUDA 11.0
- CUDA 11.8
- CUDA 12.2
4. 制限事項
- Fortranサブプログラムへの内部手続きの実引数としての受け渡しは、仮引数がインターフェイスブロックや手続き仮引数として宣言された場合、nvfortranによってサポートされます。nvfortranは、外部で宣言された仮引数へ、内部手続きを実引数として受け渡すことをサポートしません。
- MKLバージョン2023.1.0を使用するHaswellやBroadwell上で、OpenMPスレッド数が4以上の特定のワークロードの実行時に、一部のアプリケーションで不具合が発生する可能性があります。その問題はMKLバージョン2023.2.0で解決されました。
- cuSolverMPは、HPC-Xディレクトリ内のUCCとUCXライブラリの2つの新たな依存関係を持ちます。cuSolverMPを利用するプログラムを実行する場合、HPC-Xライブラリを含む
nvhpc-hpcx-cuda 11
environment moduleをご利用ください。または、環境変数LD_LIBRARY_PATH
を以下のように設定してください。
$ LD_LIBRARY_PATH=${NVHPCSDK_HOME}/comm_libs/hpcx/latest/ucc/lib:${NVHPCSDK_HOME}/comm_libs/11.8/hpcx/latest/ucx/lib:$LD_LIBRARY_PATH
- 提供されたモジュールファイルを利用しない場合は、HPC-Xを利用する前に、利用者は hpcx-init.shスクリプトを実行するよう注意が必要です。
$ ./[install-path]/Linux_x86_64/dev/comm_libs/X.Y/hpcx/latest/hpcx-init.sh
その後、hpcx_load
を実行してください。$ hpcx_load
これらの作業により、HPC-Xを利用するために必要な重要な環境変数が設定されます。
また、もしMPIジョブを実行中にHPC-Xの以下の警告メッセージが表示された場合には、性能が低下するかもしれませんが、実行は継続され警告のみです。
WARNING: Open MPI tried to bind a process but failed.
これは既知の問題で、以下のように対処することができます。
$ export OMPI_MCA_hwloc_base_binding_policy=""
- sourced allocationまたはallocatable assignmentで利用される、サイズが0の派生タイプallocatable componentを持つFortran派生タイプオブジェクトは、セグメント違反が発生する可能性があります。
- C++の並列アルゴリズムを高速化するために
-stdpar
を利用する場合、アルゴリズムの呼び出しは、仮想関数呼び出しや、関数ポインタによる関数呼び出し、C++例外を含むことができません。ヒープを指すデリファレンスポインタのみを利用し、ランダムアクセスイテレータを利用する必要があります(通常のポインタをイテレータとするのが最善です)。
5. 廃止事項
- Arm (aarch64)のみ:
nvfortranバージョン23.9では、Fortran複素関数のcalling/return手順を、GNUのgfortranの規約と合致するように変更します。23.9以前では、関数は「隠れた」ポインタを最初のパラメータとして使い、stackを通して複素数値を返しました。現在は、浮動小数点レジスターを通して、gfortranの規約に従って複素数値が返されます。NVIDIA HPC SDK のArmの全ライブラリは“gfortran’’の方法に従うようにアップデートされました。Armのパフォーマンスライブラリを利用する場合、“arm’’バージョンの代わりに“gcc’’バージョンを使う必要があります。Armシステムでnvfortranを使う場合、複素数型を利用するすべてのFortranコードは、ライブラリを含め、再コンパイルする必要があります。 - CUDA Fortran textureのサポートはCUDA 11.0と11.8で非推奨となり、CUDA 12で削除されました。23.9のリリースは、CUDA Fortran textureのサポートを含むHPCコンパイラの最後のバージョンです。
- HPC SDKと共に含まれるモジュールファイルによって選択されたデフォルトのMPI実装は、今後のリリースの中でHPC-Xに変更される予定です。
-Minfo=intensity
オプションはサポートされなくなりました。CUDA_HOME
環境変数はHPCコンパイラに無視されます。NVHPC_CUDA_HOME
を利用してください。- HPCコンパイラ23.3から
-Mipa
オプションが無効になりました。 - HPCコンパイラの
-ta=tesla
,-Mcuda
,-Mcudalib
オプションは非推奨となりました。 - アップストリームのend-of-life (EOL)に合わせて、RHEL 7ベースのオペレーティングシステムのサポートは、HPC SDK 23.7では削除されます。
- 今後のリリースで、HPC SDKはCUDA12.xシリーズの最新のバージョンとCUDA 11.8のみバンドルする予定です。11.0より古いCUDAバージョンをサポートするHPCコンパイラ内のコードパスは検査や保守管理されなくなります。
- アップストリームのend-of-life (EOL)に合わせて、HPC SDK 23.5ではUbuntu 18.04のサポートは削除されました。
- CUDA Fortranの
cudaDeviceSynchronize()
は非推奨となり、デバイスコードから削除されました。ホストコード内ではまだサポートされます。 - NVIDIA HPC SDKの21.11から、HPC-XパッケージはPOWERアーキテクチャ向けのパッケージには含まれません。
- NVIDIA HPC SDK 21.5から、NVC++とNVFORTRANの
-cuda
オプションは、NVIDIA GPU数学ライブラリを自動的にリンクしません。-cudalib
オプションを参照ください。 - NVIDIA HPC SDK 21.3から、NVIDIA GPUのKeplerアーキテクチャのHPCコンパイラサポートが廃止されました。