概要
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
- インストールディレクトリの選択(標準は
/opt/nvidia/hpcsdk
)3 - 2020ディレクトリへのシンボリックリンクの作成・更新
- Open MPIのインストール
- Open MPIのNVIDIA GPUサポートの有効化
パスの設定
どのようにパスを設定するかはInstallation Guideに書いてあるので,それに沿って設定するだけです.
パスを設定するのは,HPC SDKのコンパイラのbin
とman
,Open MPIをインストールしていれば,それのbin
とman
の,計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をコンパイルして実行してみます.
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
構文は使えるようになっていました.バンザイ.