LoginSignup
3
2

More than 5 years have passed since last update.

MSYS2でPGIコンパイラを使う

Last updated at Posted at 2017-06-04

PGIコミュニティ版は誰でも無料で使えます。URLはpgi.comでもpgigroup.comでもないので注意。Fortranが含まれていて,OpenACCやCUDA Fortran(macOSはGPUサポートなし)が使えます。MPIは16プロセスまで。詳しくは 機能の比較 参照。

インストール

Mac版のインストールは,インストーラーを使って簡単にできます。

Linux版はシェルスクリプトの質問に答えていく形式。

Windows版はVisual Studio 2015が必要です。Microsoftアカウントを作って,このあたりからダウンロードします。Visual Studio 2015からだと最新版の2017に誘導されます。
[追記] 18.10からVisual Studio 2017に対応

MSYS2が使いたいので,Cygwinは断りました。それでも環境変数を設定済のコマンドプロンプトPGI Cmdから使えます。

数値計算をするならIntelのMKL無料で使えるので入れておきましょう。オプションでPGIコンパイラのサポートにチェックを入れてください。

MSYS2から使う

MSYS2から使うにはPATHの設定が必要です。PGIコンパイラは無料ですがコンパイル時にはライセンスをチェックしていますので,ライセンスファイルを環境変数LM_LICENSE_FILEに指定しておく必要があります。MKLPATHIntel Math Kernel Libraryのライブラリのパスを指定します。ここではMKLで導入したものを指定しています。

PGI="/c/Program Files/PGI"
PGIVERSION=18.10
PATH="/c/Program Files/Java/jdk1.8.0_144/bin:/c/Program Files/PGI/flexlm:${PGICE}/win64/2018/cuda/9.1/bin:${PGI}/win64/2018/cuda/9.2/bin:${PGI}/win64/2018/cuda/10.0/bin:/c/Program Files (x86)/Windows Kits/10/bin/x64:/c/Program Files (x86)/Microsoft Visual Studio/2017/Community/VC/Tools/MSVC/14.15.26726/bin/Hostx64/x64:${PGI}/win64/${PGIVERSION}/bin:${PATH}"
MANPATH="${PGICE}/win64/${PGIVERSION}/man:${MANPATH}"
LM_LICENSE_FILE="${PGI}/license.dat"
MKLPATH="/c/Program Files (x86)/IntelSWTools/compilers_and_libraries/windows/mkl/lib/intel64_win"
export PATH MANPATH LM_LICENSE_FILE MKLPATH

[追記] 18.10に更新しました。バッチファイルC:\Program Files\PGI\win64\18.10\pgi_dos.batを参考にPATH等環境変数の設定を改めました。

動作確認

PGIコンパイラによるインテル MKL ライブラリのリンク方法の行列積のプログラムのコンパイルやリンクを試してみましょう。MKLPATHは設定済ですし,WindowsのPathの設定などは必要ありません。

$ pgfortran -Minfo -fast -L"$MKPATH" mkl_intel_lp64.lib mkl_pgi_thread.lib mkl_core.lib -mp mutmul.f -o mutmul

[追記]
* MKLPATHは引用符で囲む。
* ライブラリを-lで参照すると当然先頭にlibがついてlibmkl_coreのようになるので,ファイル名をそのまま書く。

3
2
0

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
3
2