Version 22.7
Release Notes原文
当ページは原文の意訳となっております。
1. 新機能について
NVIDIA HPC SDK 22.7にようこそ。NVIDIA HPC SDKはCPU, GPU, インターコネクトといったHPCプラットフォーム全体のプログラム開発を可能にするコンパイラとライブラリの包括的パッケージです。
- NVIDIA HPCコンパイラは 22.7リリースでArmのScalable Vector Extension(SVE)をサポートしました。コンパイラはコンパイル時に特定のベクトルビット幅のコードを生成し、目的とするCPUコアに対して高度に最適化された特定のベクトル長(VLS)のコードを生成します。VLSコードは異なるベクトル長のシステム間で可搬性がないことにご注意ください。ホストアーキテクチャベクトル長に適合する、ベクトル長の依存しない(VLA)コードの生成は利用できません。
- HPC SDKコンパイラは、いくつかの異なる-tpアーキテクチャフラグをarm向けにサポートします。
- -tp neoverse-n1: Arm Neoverse N1 architectureアーキテクチャ向け (NEON)
- -tp neoverse-v1: Arm Neoverse V1 architectureアーキテクチャ向け (SVE x 256)
-tpオプションの既定値はコンパイラが使用されたシステムに適合します。最新のAWS Grabiton3プロセッサにより強化されたAmazon EC2 C7gインスタンスがHPC SDK22.7でサポートされます。AWS C7gインスタンス上でNVIDIA HPCコンパイラでコンパイルされたアプリケーションは自動的にCPUの2x256bit SVE SIMDを活用することができます。
- 22.7リリースでは、コンパイラの実行時の非正規化数の設定がより一貫したものに変わりました。
22.5 defaults 22.7 defaults intel -Mdaz -Mdaz -Mnoflushz -Mflushz AMD -Mnodaz -Mdaz -Mnoflushz -Mflushz Arm v8 -Mnodaz -Mdaz -Mnoflushz -Mflushz 詳細な情報はHPCコンパイラユーザマニュアルを参照ください。
- Rocky LinuxがHPC SDK 22.7リリースからサポートされました。詳細についてはサポートプラットフォーム節を参照ください。
- NVCOMPLER_NOSWITCHERRORは未知のコマンドラインスイッチを無視するために設定できる環境変数です。これは-noswitcherrと同等です。
- HPCコンパイラはFortran配列の可変境界のデバッグ情報を生成します。この情報はGDBなどのデバッガで利用することができます。
- HPCコンパイラにより、OpenMP Tools(OMPT)インターフェースがNVIDIA NSight developer toolsで利用可能になりました。
- -noimplicitsectionsの既定値が、OpenAccの仕様の動作に従って変更になりました。詳細についてはHPCコンパイラのドキュメントを参照ください。
- nvfortran 22.7で生成される乱数の系列が以前のバージョンとは異なります。
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 22.7は以下のtoolcainを含みます。
- CUDA 10.2
- CUDA 11.0
- CUDA 11.7
4. 制限事項
- HPC-Xを利用する前に、利用者は hpcx-init.shスクリプトを実行するよう注意が必要です:
$ . /proj/nv/Linux_x86_64/dev/comm_libs/hpcx/hpcx-2.11/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を持つ派生タイプのオブジェクトはセグメント違反が発生する可能性があります。
- C++の並列アルゴリズムを高速化するために-stdparを利用する場合、アルゴリズムの呼び出しにおいて、仮想関数呼び出しや、関数ポインタによる関数呼び出し、C++例外を含むことができません。ヒープを指すデリフェレンスポインタのみを利用し、ランダムアクセスイテレータを利用する必要があります(通常のポインタをイテレータとするのが最善です)。
5. 廃止事項
- 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コンパイラサポートは廃止されました。
- NVIDIA HPC SDK 21.3からNVIDIA HPC SDKのKNLアーキテクチャサポートは廃止されました。