Version 22.11
Release Notes原文
当ページは原文の意訳となっております。
1. 新機能について
NVIDIA HPC SDK 22.11にようこそ。NVIDIA HPC SDKはCPU, GPU, インターコネクトといったHPCプラットフォーム全体のプログラム開発を可能にするコンパイラとライブラリの包括的パッケージです。
- 22.11リリースは、ISO規格に提案されたC++の並列高性能計算機能のいくつかの試験的な実装を提供しています。
- ISO規格 C++の提案 p2300:”std::execution”.
stdexec
ライブラリは標準のC++で、細粒度の制御が可能なワークロードの非同期パイプライン化を記述する性能可搬性のある方法を導入しました。この試験的な実装はCPUおよび単一・複数のGPUをサポートします。 - ISO規格 C++の提案 p0009:”mdspan”. 本機能は多次元配列ビュー
mdspan
と、多次元配列ビューを記述・作成するためのクラス・クラステンプレート・定数を提供します。mdspan
クラステンプレートは翻訳時・実行時の拡張の任意の組み合わせを表現します - ISO規格 C++の提案 p1673:”A free function linear algebra interface based on the BLAS”. 提案されたこれらのC++規格のアルゴリズムは、密行列基本線形代数サブルーチン(BLAS)を基にしたC++標準ライブラリの密行列線形代数インタフェースを構成します。
- ISO規格 C++の提案 p2300:”std::execution”.
- 21.11リリースは、X86-64, Arm Server, POWERアーキテクチャでのRedhat Enterprise Linux version 8.6をサポートします。
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.11は以下のtoolcainを含みます。
- CUDA 10.2
- CUDA 11.0
- CUDA 11.8
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. 廃止事項
- CUDA Toolkitの次期バージョンのリリースに伴い、HPC SDK “multi” パッケージに含まれる3種のCUDAバージョンは更新されます。
- CUDA Fortran texturesは非推奨となり、将来のリリースで廃止予定です。
- 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コンパイラサポートは廃止されました。
- NVIDIA HPC SDK 21.3からNVIDIA HPC SDKのKNLアーキテクチャサポートは廃止されました。