ホーム > ソフトウェア一覧 > PGIコンパイラ NVIDIA HPC SDK

NVIDIA HPC SDK利用法

最終更新日:2022年7月15日

NVIDIA HPC SDK (旧 PGIコンパイラ) は、主に GPU利用のためのツールを集めた開発環境です。 インストールされているものの他、個人のホームディレクトリに、 お好きなバージョンをインストールして利用していただくこともできます。


NVIDIA HPC SDK


利用環境

  • サブシステムA
  • バージョン 九州大学構成員 学術研究機関構成員 民間利用の方
    20.11
  • サブシステムB
  • バージョン 九州大学構成員 学術研究機関構成員 民間利用の方
    20.11
  • 基本フロントエンド
  • バージョン 九州大学構成員 学術研究機関構成員 民間利用の方
    20.11
  • 大容量フロントエンド
  • バージョン 九州大学構成員 学術研究機関構成員 民間利用の方
    20.11

利用コマンド

プログラム言語の翻訳・リンクのための書式とコマンドの一覧は以下の通りです。

コマンド [option] file [...]
言語処理系 コマンド OpenACC CUDA
非MPI並列 Fortran nvfortran -acc -cuda
C nvc
C++ nvc++
MPI並列 Fortran mpifort
C mpicc
C++ mpic++

利用方法

環境設定(moduleコマンド)

moduleコマンドによる環境設定はコンパイル時と実行時の両方で行う必要があります。

MPIを用いない場合や、NVIDIA HPC SDKに付属の MPIライブラリを利用する場合

$ module load nvhpc/nvhpc_20.11

NVIDIA HPC SDKに付属の MPIライブラリ以外を利用する場合

$ module load nvhpc/nvhpc-nompi_20.11

C/C++

C/C++コンパイラにはnvc / nvc++コマンドを用います。 またNVIDIA HPC SDKに付属の MPIライブラリを利用する場合には,mpicc / mpic++コマンドを用います。 (以下のプログラム例では nvcおよびmpiccのみを記載しますのでC++を使う場合はnvc++およびmpic++に読み替えてください。)


例1)OpenACCプログラム

$ nvc -acc -gpu=cc60,cuda11.0,pinned sample.c

例2)CUDAプログラム

$ nvc -cuda sample.c

例3)MPI+OpenACC並列プログラム

$ mpicc -acc -gpu=cc60,cuda11.0,pinned sample.c

Fortran

Fortranコンパイラは nvfortranコマンドを利用します。 またNVIDIA HPC SDKに付属の MPIライブラリを利用する場合には mpifort コマンドを利用します。


例1)OpenACCプログラム

$ nvfortran -acc -gpu=cc60,cuda11.0,pinned sample.f90

例2) CUDAプログラム

$ nvfortran -cuda sample.cuf

例3) MPI+OpenACCプログラム

$ mpifort -acc -gpu=cc60,cuda11.0,pinned sample.f90

主なコンパイルオプション

コンパイルオプション 説明
-c オブジェクトファイルまで作成します
-o filename 実行可能ファイル名/オブジェクトファイル名をfilenameに変更します。デフォルトの実行可能ファイル名は a.out
-On 最適化を行います [n=0〜3]。n の値が大きくなるに従って、最適化のレベルが上がります。
n=0の場合は最適化を行いません(nを省略した場合は -O2)
-gpu=GPUに関する設定 使用するGPUに関する設定を指示します。ITOサブシステムBでは以下を指示してください。
  • 通常
    -gpu=cc60,cuda11.0,pinned
  • Unified Memory使用時
    -gpu=cc60,cuda11.0,managed
-Minfo=コンパイルメッセージの指定 コンパイル時に出力するメッセージを指定します。GPUに向けたコード生成の様子を表示するには、以下を指定してください。
-Minfo=accel

バッチ処理

以下にNVIDIA HPC SDKで翻訳した実行可能ファイルをバッチ処理により処理するスクリプトの例を示します。


例1)OpenACCプログラム


#!/bin/bash
#PJM -L "rscunit=ito-b" 
#PJM -L "rscgrp=ito-g-1"
#PJM -L "vnode=1"
#PJM -L "vnode-core=9"
#PJM -L "elapse=10:00"
#PJM -j

module load nvhpc/nvhpc_20.11
./a.out

例2)MPI+OpenACCプログラム(4ノード x 4GPU)


#!/bin/bash
#PJM -L "rscunit=ito-b" 
#PJM -L "rscgrp=ito-g-16"
#PJM -L "vnode=4"
#PJM -L "vnode-core=36"
#PJM -L "elapse=10:00"
#PJM -j

module load nvhpc/nvhpc_20.11
mpirun -np 16 --map-by ppr:4:node --bind-to none -mca plm_rsh_agent /bin/pjrsh \
-mca btl_openib_warn_default_gid_prefix 0 -machinefile ${PJM_O_NODEINF} 

別のバージョンのNVIDIA HPC SDKを自分のホームディレクトリにインストールする手順

  • https://developer.nvidia.com/nvidia-hpc-sdk-downloads にアクセス。
  • "I accept the license agreement"をクリック
  • "Bundled with the newest plus two previous CUDA versions [11.7, 11.0, 10.2]"の "Linux x86_64 Tarball"をクリック
  • 表示されたコマンドを一つずつ実行。
    (Installation directoryとして、自分のホームディレクトリ内のパスを指定。
    CUDAのバージョンとして、ITOで利用可能な最新のCUDAを指定。)
  • 利用する際は、以下を実行することで、PATH等の環境変数を設定する。
    (「ディレクトリ」には、インストール時の Installation directory を指定し、
     「バージョン」には、ディレクトリ/modulefiles/nvhpc/ の下にあるファイル名を指定する。)
    module load ディレクトリ/modulefiles/nvhpc/バージョン