Version 23.3

Release Notes原文
当ページは原文の意訳となっております。

1. 新機能について

NVIDIA HPC SDK 23.3へようこそ。NVIDIA HPC SDKは、CPU、GPU、インターコネクトといったHPCプラットフォーム全体のプログラム開発を可能にするコンパイラとライブラリの包括的パッケージです。HPC SDK 23.3のリリースは、新機能および重要な機能性やパフォーマンスの向上を含みます。

  • Armサーバーに対する新しいSUSE Linux Enterprise Server (SLES) RPMパッケージが利用可能です。
  • HPCコンパイラは、オプション-Ofastを追加しました。これはGCCやLLVM内の同じオプションと類似です。それは-O3 -Mfprelaxed [-Mstack_arrays]のエイリアスです。このオプションにより、浮動小数点の精度の低下を犠牲にして積極的な最適化が可能です。-Ofast-stdpar=gpuを併記すると、-Mstack_arraysは自動的に無効になります。
  • CUDA Fortranは、NVIDIA Hopper GPUのアーキテクチャのサポートを、スレッドブロッククラスタや分散共有メモリのプログラミングに拡張します。
  • HPCコンパイラは、Arm Neoverse-V2 CPUへのターゲットコード生成の-tp=neoverse-v2オプションを提供します。
  • HPCコンパイラは、C/C++純粋関数の属性のサポートを追加しました。__attribute__((pure))の関数宣言は、関数が戻り値の他に副作用がないことを示唆します。これにより、純粋関数の呼び出しの最適化が可能になります。
  • -fdiagnostics-colorオプションを使用すると、CMakeの診断メッセージの色が改善されます。
  • GCC 8やGCC 9のビルディング時におけるC++20やC++23モード内の__cplusplusマクロの値と、GCC 11やそれより新しいもののビルディング時におけるC++23モード内のマクロの値は、GCCがそれらのモードを使う__cplusplusの値と一致します。
  • NVC++は、デフォルトでCCFF info内のマングルされた名前をデマングルしなくなりました。CCFF info APIのユーザーは、このデマングリングをするか、nvc++コマンドラインに-Mccff=demangleを加える必要があります。
  • LLVM 16がサポートされ、HPCコンパイラの中に統合されました。

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.3は以下のtoolchainを含みます。

  • CUDA 11.0
  • CUDA 11.8
  • CUDA 12.0

4. 制限事項

  • HPCコンパイラのバージョン23.3では、-Mipaオプションは無効です。
  • 本リリースにバンドルされる最新のcuSolverMP (0.3.1.0)は、UCCとUCXに依存関係を持ちます。cuSolverMPを利用するプログラムを実行する場合、 HPC-Xライブラリを含むnvhpc-hpcx Environment moduleをご利用ください。または、環境変数LD_LIBRARY_PATHを以下のように設定ください。
    $ LD_LIBRARY_PATH=${NVHPCSDK_HOME}/comm_libs/hpcx/latest/ucc/lib:${NVHPCSDK_HOME}/comm_libs/hpcx/latest/ucx/lib:$LD_LIBRARY_PATH
  • HopperベースのシステムにバンドルされるOpenMPI 4またはHPC-Xを使用する場合、 CUDA P2Pは無効化されます。
  • HPC SDK 23.3に同梱されるHPC-X 2.14は、CUDA 12.0をサポートしていません。
  • HPC-Xを利用する前に、利用者は hpcx-init.shスクリプトを実行するよう注意が必要です。
    $ . /[install-path]/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. 廃止事項

  • Ubuntu 18.04のサポート終了に合わせ、HPC SDK 23.5で当該OSのサポートは削除される予定です。
  • CUDA Toolkitの次期バージョンのリリースに伴い、HPC SDK “multi”パッケージに含まれる3種のCUDAバージョンは更新されます。
  • CUDA Fortran texturesはCUDA 11.0, 11.8で非推奨となり、CUDA 12.0では削除されました。
  • 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アーキテクチャサポートは廃止されました。

Notices

原文をご確認ください。

前の記事

Version 23.1

次の記事

Version 23.5