C/C++の使い方(NVIDIA HPC Compiler)
2024年2月現在、遺伝研スパコンシステムではNVIDIA HPC SDK 23.7をシステムに導入しています。旧PGI Compilerは、NVIDIA HPC SDK内のNVIDIA HPC Compilerとして開発が継続されています。
バージョン23.7の各コンポーネントのバージョン等は23.7 リリースノードを参照してください。制限事項等については日本語のリリースノートを参照してください。
NVIDIA HPC SDKの利用を検討した方が良い場合としては、以下が考えられます。
- NVIDIA社製GPUを利用した 各種最適化、高速化を図りたい場合。
- NVIDIA社製GPUの利用が前提となった各種オープンソースソフトウェアを最適化も考慮しつつビルドする場合
- OpenACCを利用したソースコードを利用し、GPUオフロードコードを生成したい場合
- 各種CPU(Intel,AMD,Arm,OpenPOWER)向けに最適化されたオブジェクトコードを生成して性能比較したい場合
- NVIDIA社製GPUを利用して高速化が図られたNVIDIAが開発する各種数値計算ライブラリを利用したい場合
- 分散深層学習のライブラリでNCCLを利用したい場合(ソースコードをダウンロードして自分でビルドした方が簡単な場合もあるとは思われる)
- InfiniBandのSHARPを利用したMPI集合通信のハードウェアオフロードが可能なMPIを利用したい場合(大規模MPI並列の場合)
- CUDAを利用したアプリケーション開発、デバッグを行いたい場合
遺伝研スパコンで利用可能なのは以下のコンポーネントです。
NVIDIA HPC SDKのコンポーネント概要
コンポーネント名 | 概要 |
---|---|
NVIDIA HPC Compiler | (旧)PGIコンパイラ。NVIDIAが現在開発。OpenMP,OpenACCに対応し、CPU(Intel,AMD,Arm,OpenPOWER)、NVIDIA GPUに対応した最適化コードを生成可能 |
MPI | OpenMPIベースでSHARPのハードウェアオフロードに対応したhpc-xとOpenMPIが同梱されている。 |
CUDA Toolkit | NVIDIA GPU対応のCUDAコンパイラ、ライブラリ、ヘッダファイルなど開発環境一式 |
NSight Systems | CPU,GPUのプロファイラ |
NSight Compute | CUDAカーネルのプロファイラ。GPU内のハードウェアカウンタを参照した詳細なプロファ イリングが可能 |
NCCL | 分散深層学習用のコミュニケーションライブラリ |
NVSHMEM | OpenSHMEMをマルチGPU、マルチノード対応に拡張したソフトウェア |
cuBLAS | CUDA上のGPU対応BLAS |
cuFFT,cuFFTMp | GPU対応のFFT、マルチGPU対応のFFTライブラリ |
cuRAND | GPU対応の乱数生成ライブラリ |
cuSOLVER | cuBLASとcuSPARSEをベースにしたCUDA上の線形代数関数のパッケージ |
cuSPARSE | CUDA上の疎行列計算ライブラリ |
cuTENSOR,cuTENSORMg | CUDA上でテンソル計算を高速化する為のライブラリ MgはマルチGPU対応 |
NVPL ScalaPack | NVIDIAがエンハンスするScaLAPACK |
Thrust,CUB,libcu++ | CUDA対応C++テンプレートライブラリ群 |
また、NVIDIA HPC SDKは、以下のサイトからダウンロード可能です。
お手持ちの計算機で開発、デバッグを行い、大規模計算を遺伝研スパコンで行うといった利用方法も可能と考えます。また、NSight Systemsなどの GUIを利用するシステムを利用する場合は、解析情報を遺伝研スパコンで取得し、その結果を転送して手元の計算機上のNSight SystemsのGUIで表示すると いった利用形態をとることも可能です。