LoginSignup
5

More than 3 years have passed since last update.

NVIDIA HPC SDKのインストールと実行

Last updated at Posted at 2020-06-09

概要

NVIDIA HPC SDK(以下,HPC SDK)のEarly Access Programに応募したところ,無事承認されたので,試してみました.

現状,HPC SDKのリソースにアクセスしてよいのは,Early Access Programに登録している人だけです.
そのため,ドキュメントをどの程度参照してよいのか判らず,情報がぼかし気になっています.

NVIDIA HPC SDKのEarly Access Request

The NVIDIA HPC SDKのページにRequest Early Accessボタンがあるので,それをクリックしてページを移動し,さらにJoin Nowボタンをクリックし,出てきたフォームに必要事項を記入してHPC SDKのEarly Accessをリクエストします.
どのくらいで承認されるのかは判りませんが,しばらくすると,承認された事が書かれた非常に簡素なメールが来ます.

NVIDIA HPC SDKのダウンロード

Early Access Requestが承認されると,Member areaへ行くことができるようになります.
Member areaでHPC SDKがダウンロードできます.

現状で対応しているアーキテクチャは

  • Linux x86_64
  • Linux OpenPOWER
  • Linux Arm

のみで,Windows向けの提供は,もう少し後になるようです.

インストール方法は,この記事執筆時点(2020年6月9日)ではローカルインストールしか用意されておらず,どのアーキテクチャを選んでも,4 GBほどの圧縮ファイルをダウンロードすることになります.

また,ダウンロードページには,HPC SDKの依存ファイルが書いてあります.

  • プロファイラを使う場合はJava Runtime 1.6以降
  • CUDA 10.1以降のドライバ

HPC SDKには,CUDA 10.1, 10.2, 11.0が同梱されているので,わざわざCUDAを別途ダウンロードしてインストールする必要はないと思われます.すでにCUDA環境を整えている場合は,インストール時に環境変数を設定することで,CUDAをインストールしないようにできます.

NVIDIA HPC SDKのインストール

インストール

ダウンロードした圧縮ファイルを解凍し,インストール用のシェルスクリプトを実行すると,対話的にインストールが進んでいきます.このとき,環境変数を設定すると,silent installできるようになるようです.環境変数については,Installation Guideで確認できます.

インストールは以下の手順で進んでいきます.

  1. エンドユーザライセンスの確認
  2. インストール方法の選択(ローカルインストール1かネットワークインストールか)2
  3. インストールディレクトリの選択(標準は/opt/nvidia/hpcsdk3
  4. 2020ディレクトリへのシンボリックリンクの作成・更新
  5. Open MPIのインストール
  6. Open MPIのNVIDIA GPUサポートの有効化

パスの設定

どのようにパスを設定するかはInstallation Guideに書いてあるので,それに沿って設定するだけです.

パスを設定するのは,HPC SDKのコンパイラのbinman,Open MPIをインストールしていれば,それのbinmanの,計4カ所です.

HPC SDKをデフォルトディレクトリ(/opt/nvidia/hpcsdk)にインストールしたとすると,それ以下のLinux_x86_64/20.5/compilers/binおよびLinux_x86_64/20.5/compilers/manにパスを通します.

Open MPIは/opt/nvidia/hpcsdk下の/Linux_x86_64/2020/mpi/openmpi-3.1.5/にインストールされるので,openmpi-3.1.5/直下のbinディレクトリにパスを通します.また,Installation Guideでは,openmpi-3.1.5/直下のmanにもパスを通すように書かれていますが,manのディレクトリは,openmpi-3.1.5/share/manなので,私はopenmpi-3.1.5/share/manの方にパスを通しました.

結局,私の環境では下記4カ所にパスを通しました.

  • /opt/nvidia/hpcsdk/Linux_x86_64/20.5/compilers/bin
  • /opt/nvidia/hpcsdk/Linux_x86_64/20.5/compilers/man
  • /opt/nvidia/hpcsdk/Linux_x86_64/2020/mpi/openmpi-3.1.5/bin
  • /opt/nvidia/hpcsdk/Linux_x86_64/2020/mpi/openmpi-3.1.5/share/man

コンパイラの呼出し

インストールができたので,いよいよFortranコンパイラ界に登場した新入りを呼び出してみます.HPC SDKに同梱されているFortranコンパイラの実行ファイル名は,nvfortranです.

nvfortranのバージョンを表示してみたところ,無事に呼び出されました.

$ nvfortran --version

nvfortran 20.5-0 LLVM 64-bit target on x86-64 Linux -tp skylake
NVIDIA Compilers and Tools
Copyright (c) 2020, NVIDIA CORPORATION.  All rights reserved.

次に,hello worldをコンパイルして実行してみます.

hello.f90
program main
    implicit none

    print *, "Hello NVIDIA HPC SDK"

end program main
$ nvfortran hello.f90
$ vim hello.f90
$ ./a.out
 Hello NVIDIA HPC SDK
$

無事コンパイルして,実行できました.

(2020年6月11日追記)
ヘルプを表示する場合は,-helpオプションを付けて実行してください.

$ nvfortran -help

まとめ

NVIDA HPC SDKにEarly Accessできるようになったので,早速インストールして実行してみました.
Installation Guideにはちらほらと不整合がみられますが,致命的ではないと思います.

Fortranコンパイラは多くありますが,コンパイラ間の可搬性が非常に低いので,nvfortranがどのような挙動で,どのFortran規格まで実装されているか,確認してまとめたいと思います.
前身がPGI Fortranなので,かなり頑張らないといけない印象ですが,最後に使ったバージョン(18.7)から進化していることを期待します.
簡単に試したところ,block構文は使えるようになっていました.バンザイ.


  1. Single system installと書かれています. 

  2. ネットワークインストールは試していません.4 GBもダウンロードさせておいて何を言うかとう感じですが,今後ネットワークインストールにも対応してくれるのでしょう. 

  3. Installation Guideには,/opt/nvidia/hpc_sdkが標準ディレクトリだと書かれていて,その後の設定も/opt/nvidia/hpc_sdkが用いられています. 

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
5