5.4. BLAS/LAPACK/ScaLAPACKライブラリ

Fortran/C言語/C++からBLAS/LAPACK/ScaLAPACKを利用することができます。

  • BLAS(Basic Linear Algebra Subprograms)は、ベクトル演算や行列演算を行なうライブラリです。

  • LAPACK(Linear Algebra PACKage)は、線形代数の問題を解くライブラリです。

  • ScaLAPACK(Scalable LAPACK)は、線形代数分野の計算をメッセージパッシングで並列化したライブラリです。

5.4.1. Fortranコンパイル方法

FortranにおけるBLAS/LAPACK/ScaLAPACKのコンパイル方法を示します。

コンパイル例は以下のとおりです。

  1. MPI/ScaLAPACK/BLAS,LAPACK(逐次版)

[_LNlogin]$ mpifrtpx -Kfast,SVE sample.f90 -SCALAPACK -SSL2
  1. MPI/OpenMP/ScaLAPACK/BLAS,LAPACK(スレッド並列版)

[_LNlogin]$ mpifrtpx -Kfast,parallel,openmp,SVE sample.f90 -SCALAPACK -SSL2BLAMP
  1. 逐次/BLAS,LAPACK(逐次版)

[_LNlogin]$ frtpx -Kfast,SVE sample.f90 -SSL2
  1. OpenMP/BLAS,LAPACK(スレッド並列版)

[_LNlogin]$ frtpx -Kfast,openmp,SVE sample.f90 -SSL2BLAMP

参考

  • BLAS、LAPACK逐次版を使用するには、frtpxコマンドに-SSL2を指定します。

  • BLAS、LAPACKスレッド並列版を使用するには、-Kopenmp、および、-SSL2BLAMPを指定します。

  • ScaLAPACKを使用するには、mpifrtpxコマンドに -SCALAPACKをオプションとして指定します。また、BLAS、LAPACKの逐次版、スレッド並列版の種類に応じて、-SSL2、または、-SSL2BLAMPオプションも指定します。

  • ログインノードで結合する場合、-KSVEが有効であれば、SVEを使用したライブラリを結合します。

  • ログインノードで結合する場合、-KNOSVEが有効であれば、汎用のライブラリを結合します。

  • 計算ノードで結合する場合、-KSVE-KNOSVEのどちらを指定してもSVEを使用したライブラリを結合します。

  • -KSVEオプションのデフォルト(省略時)は、-KSVEになります。

  • ネイティブコンパイラでユーザプログラムを翻訳し、BLAS、LAPACKを結合する場合、frtコマンドを使用します。

  • ネイティブコンパイラでMPIプログラムを翻訳し、BLAS、LAPACKを結合する場合、mpifrtコマンドを使用します。

5.4.2. C言語コンパイル方法

C言語におけるBLAS/LAPACK/ScaLAPACKのコンパイル方法を示します。

コンパイル例は以下のとおりです。

  1. MPI/ScaLAPACK/BLAS,LAPACK(逐次版)

[_LNlogin]$ mpifccpx -Kfast,SVE sample.c -SCALAPACK -SSL2
  1. MPI/OpenMP/ScaLAPACK/BLAS,LAPACK(スレッド並列版)

[_LNlogin]$ mpifccpx -Kfast,parallel,openmp,SVE sample.c -SCALAPACK -SSL2BLAMP
  1. 逐次/BLAS,LAPACK(逐次版)

[_LNlogin]$ fccpx -Kfast,SVE sample.c -SSL2
  1. OpenMP/BLAS,LAPACK(スレッド並列版)

[_LNlogin]$ fccpx -Kfast,openmp,SVE sample.c -SSL2BLAMP

参考

  • BLAS、LAPACK逐次版を使用するには、fccpxコマンドに-SSL2を指定します。

  • BLAS、LAPACKスレッド並列版を使用するには、-Kopenmp、および、-SSL2BLAMPを指定します。

  • ScaLAPACKを使用するには、mpifccpxコマンドに -SCALAPACKをオプションとして指定します。また、BLAS、LAPACKの逐次版、スレッド並列版の種類に応じて、-SSL2、または、-SSL2BLAMPオプションも指定します。

  • ログインノードで結合する場合、-KSVEが有効であれば、SVEを使用したライブラリを結合します。

  • ログインノードで結合する場合、-KNOSVEが有効であれば、汎用のライブラリを結合します。

  • 計算ノードで結合する場合、-KSVE-KNOSVEのどちらを指定してもSVEを使用したライブラリを結合します。

  • -KSVEオプションのデフォルト(省略時)は、-KSVEになります。

  • ネイティブコンパイラでユーザプログラムを翻訳し、BLAS、LAPACK アーカイブを結合する場合、fccコマンドを使用します。

  • ネイティブコンパイラでMPIプログラムを翻訳し、BLAS、LAPACKを結合する場合、mpifccコマンドを使用します。

5.4.3. C++コンパイル方法

C++におけるBLAS/LAPACK/ScaLAPACKのコンパイル方法を示します。

コンパイル例は以下のとおりです。

  1. MPI/ScaLAPACK/BLAS,LAPACK(逐次版)

[_LNlogin]$ mpiFCCpx -Kfast,SVE sample.cc -SCALAPACK -SSL2
  1. MPI/OpenMP/ScaLAPACK/BLAS,LAPACK(スレッド並列版)

[_LNlogin]$ mpiFCCpx -Kfast,parallel,openmp,SVE sample.cc -SCALAPACK -SSL2BLAMP
  1. 逐次/BLAS,LAPACK(逐次版)

[_LNlogin]$ FCCpx -Kfast,SVE sample.cc -SSL2
  1. OpenMP/BLAS,LAPACK(スレッド並列版)

[_LNlogin]$ FCCpx -Kfast,openmp,SVE sample.cc -SSL2BLAMP

参考

  • BLAS、LAPACK逐次版を使用するには、FCCpxコマンドに-SSL2を指定します。

  • BLAS、LAPACKスレッド並列版を使用するには、-Kopenmp、および、-SSL2BLAMPを指定します。

  • ScaLAPACKを使用するには、mpiFCCpxコマンドに -SCALAPACKをオプションとして指定します。また、BLAS、LAPACKの逐次版、スレッド並列版の種類に応じて、-SSL2、または、-SSL2BLAMPオプションも指定します。

  • ログインノードで結合する場合、-KSVEが有効であれば、SVEを使用したライブラリを結合します。

  • ログインノードで結合する場合、-KNOSVEが有効であれば、汎用のライブラリを結合します。

  • 計算ノードで結合する場合、-KSVE-KNOSVEのどちらを指定してもSVEを使用したライブラリを結合します。

  • -KSVEオプションのデフォルト(省略時)は、-KSVEになります。

  • ネイティブコンパイラでユーザプログラムを翻訳し、BLAS、LAPACK アーカイブを結合する場合、FCCコマンドを使用します。

  • ネイティブコンパイラでMPIプログラムを翻訳し、BLAS、LAPACKを結合する結合する場合、mpiFCCコマンドを使用します。

5.4.4. サンプルプログラム(ScaLAPACK/FORTRAN)

サンプルプログラムを使用して、コンパイルからジョブ実行までの例を示します。

  1. ソースプログラムを用意します。
    サンプルプログラムを/home/system/sample/SCALAPACK/sample_ScaLAPACK.fとして用意しています。
  2. サンプルプログラムをコンパイルします。

[_LNlogin]$ mpifrtpx -V -Kfast,optmsg=2 -Nlst=t -o sample_ScaLAPACK  sample_ScaLAPACK.f -SCALAPACK -SSL2
  1. ジョブスクリプトを用意します。
    ジョブスクリプトのサンプルは/home/system/sample/SCALAPACK/sample_ScaLAPACK.shとして用意しています。
  2. pjsubコマンドでジョブを投入します。

[_LNlogin]$ pjsub sample_ScaLAPACK.sh
[INFO] PJM 0000 pjsub Job 150 submitted.

5.4.5. 共有ライブラリの利用方法

BLAS、LAPACK、ScaLAPACK は「Fortranコンパイル方法」「C言語コンパイル方法」「C++コンパイル方法」で示した方法で結合すると、スタティックリンクになります。これとは別に、共有ライブラリも提供しています。共有ライブラリ版は動的ロードして使う場合を考慮し、アーカイブの構成および結合方法がスタティックリンク版と異なっています。

また共有ライブラリのBLAS、LAPACKでは整数型および論理型の引数が4バイト整数であるLP64インターフェースのライブラリに加えて、整数型および論理型の引数を8バイト整数とするILP64インターフェースのライブラリを使うことができます。ILP64インターフェースを使用する場合は、ILP64の共有ライブラリを指定してください。

5.4.5.1. BLAS、LAPACK 逐次版の Fortran からの利用方法

Fortranで書かれたユーザプログラムを翻訳し、BLAS 及び LAPACKの逐次版の共有ライブラリを結合するためには、frtpx 、または、frtコマンド行に、以下の表に示すオプションを指定します。

種類

結合オプション

LP64、汎用版

-lfjlapack

LP64、SVE版

-lfjlapacksve

ILP64、汎用版

-lfjlapack_ilp64

ILP64、SVE版

-lfjlapacksve_ilp64

このオプションはユーザプログラムよりも後ろに指定します。

利用方法の例は以下のとおりです。

  1. Fortranで書かれたユーザプログラムa.fを翻訳し、SVE版 BLAS、LAPACKライブラリを結合します。

[_LNlogin]$ frtpx -Kfast,optmsg=2 a.f -lfjlapacksve
  1. Fortranで書かれたユーザプログラムa.fを翻訳し、汎用版 BLAS、LAPACKライブラリを結合します。

[_LNlogin]$ frtpx -Kfast,optmsg=2 a.f -lfjlapack
  1. Fortran で書かれたユーザプログラムa.fを翻訳し、ILP64 インターフェースのSVE版BLAS、LAPACKライブラリを結合します。ソースプログラムの基本整数型 および 基本論理型は、-CcdII8、-CcdLL8 オプションで、8バイトに拡張します。

[_LNlogin]$ frtpx -Kfast,optmsg=2 -CcdII8 -CcdLL8 a.f -lfjlapacksve_ilp64
  1. OpenMP Fortran で書かれたユーザプログラムa.fを翻訳し、SVE版BLAS、LAPACK ライブラリを結合します。

[_LNlogin]$ frtpx -Kfast,openmp,optmsg=2 a.f -lfjlapacksve
  1. Fortran で書かれたユーザプログラムa.fをネイティブコンパイラで翻訳し、SVE版BLAS、LAPACK ライブラリを結合します。

[_LNlogin]$ frt -Kfast,optmsg=2 a.f -lfjlapacksve

5.4.5.2. BLAS、LAPACK スレッド並列版の Fotran からの利用方法

Fortranで書かれたユーザプログラムを翻訳し、BLAS及びLAPACKのスレッド並列版の共有ライブラリを結合するためには、frtpx、または、frtコマンド行にオプション-Kopenmpに加えて、以下の表に示すオプションを指定します。

種類

結合オプション

LP64、汎用版

-lfjlapackex

LP64、SVE版

-lfjlapackexsve

ILP64、汎用版

-lfjlapackex_ilp64

ILP64、SVE版

-lfjlapackexsve_ilp64

このオプションはユーザプログラムよりも後ろに指定します。
-Kopenmpオプションのかわりに-Kparallelオプションを指定することもできます。

利用方法の例は以下のとおりです。

  1. Fortran で書かれたユーザプログラムa.fを翻訳し、SVE版BLAS、LAPACK スレッド並列版ライブラリを結合します。

[_LNlogin]$ frtpx -Kfast,openmp,optmsg=2 a.f -lfjlapackexsve
  1. Fortran で書かれたユーザプログラムa.fを翻訳し、汎用版BLAS、LAPACK スレッド並列版ライブラリを結合します。

[_LNlogin]$ frtpx -Kfast,openmp,optmsg=2 a.f -lfjlapackex
  1. Fortran で書かれたユーザプログラムa.fを翻訳し、ILP64 インターフェースのSVE版BLAS、LAPACK スレッド並列版ライブラリを結合します。ソースプログラムの基本整数型 および 基本論理型は、-CcdII8、-CcdLL8 オプションで8バイトに拡張します。

[_LNlogin]$ frtpx -Kfast,openmp,optmsg=2 -CcdII8 -CcdLL8 a.f -lfjlapackexsve_ilp64
  1. Fortran で書かれたユーザプログラムa.fをネイティブコンパイラで翻訳し、SVE版BLAS、LAPACK スレッド並列版ライブラリを結合します。

[_CNlogin]$ frt -Kfast,openmp,optmsg=2 a.f -lfjlapackexsve
  1. Fortran で書かれたユーザプログラムa.fを逐次実行プログラムとして翻訳し、SVE版BLAS、LAPACK スレッド並列版ライブラリを結合します。

[_LNlogin]$ frtpx -Kfast,optmsg=2 -c a.f
[_LNlogin]$ frtpx -Kfast,openmp a.o -lfjlapackexsve
  1. Fortran で書かれたユーザプログラムa.fを自動並列化して翻訳し、SVE版BLAS、LAPACK スレッド並列版ライブラリを結合します。

[_LNlogin]$ frtpx -Kfast,parallel,optmsg=2 -c a.f
[_LNlogin]$ frtpx -Kfast,parallel a.o -lfjlapackexsve

5.4.5.3. ScaLAPACKのFortranからの利用方法

ScaLAPACKを使用するユーザプログラムを翻訳しScaLAPACKの共有ライブラリを結合するためには、mpifrtpx、または、mpifrtコマンドを使用し、以下の表に示すオプションを指定します。

種類

結合オプション

LP64、汎用版

-lfjscalapack

LP64、SVE版

-lfjscalapacksve

ILP64、汎用版

-

ILP64、SVE版

-

ScaLAPACK を結合するオプションはユーザプログラムよりも後ろに指定し、BLAS、LAPACK を結合するためのオプションよりも前に指定します。
スレッド並列版BLAS、LAPACK を使用する場合、-Kopenmpオプションも一緒に指定します。

利用方法の例は以下のとおりです。

  1. Fortran で書かれたユーザプログラムa.fを翻訳し、SVE版ScaLAPACK ライブラリを結合します。BLAS、LAPACK は逐次版を結合します。

[_LNlogin]$ mpifrtpx -Kfast,optmsg=2 a.f -lfjscalapacksve -lfjlapacksve
  1. Fortran で書かれたユーザプログラムa.fを翻訳し、汎用版ScaLAPACK ライブラリを結合します。BLAS、LAPACK は逐次版を結合します。

[_LNlogin]$ mpifrtpx -Kfast,optmsg=2 a.f -lfjscalapack -lfjlapack
  1. Fortran で書かれたユーザプログラムa.fを翻訳し、SVE版ScaLAPACK ライブラリを結合します。BLAS、LAPACK はスレッド並列版を結合します。

[_LNlogin]$ mpifrtpx -Kfast,openmp,optmsg=2 a.f -lfjscalapacksve -lfjlapackexsve
  1. Fortran で書かれたユーザプログラムa.fをネイティブコンパイラで翻訳し、SVE版ScaLAPACK ライブラリを結合します。BLAS、LAPACK はスレッド並列版を結合します。

[_CNlogin]$ mpifrt -Kfast,openmp,optmsg=2 a.f -lfjscalapacksve -lfjlapackexsve

5.4.5.4. BLAS、LAPACK逐次版のC、C++からの利用方法

C、C++で書かれたユーザプログラムを翻訳し、BLAS 及びLAPACKの逐次版の共有ライブラリを結合するためには、fccpxFCCpxfcc、または、FCCコマンド行に、以下の表に示すオプションに加えて、 -SSL2、または、-SSL2BLAMPを指定します。

種類

結合オプション

LP64、汎用版

-lfjlapack

LP64、SVE版

-lfjlapacksve

ILP64、汎用版

-lfjlapack_ilp64

ILP64、SVE版

-lfjlapacksve_ilp64

結合オプションはユーザプログラムよりも後ろに指定します。-SSL2、または、-SSL2BLAMPオプションはどちらを指定してもかまいません。
ILP64 インターフェースのライブラリを使用する場合は、ILP64 に対応したヘッダファイルを使用するために-I$FJSVXTCLANGA/include/lapack_ilp64を翻訳時のオプションに指定します。

利用方法の例は以下のとおりです。

  1. C で書かれたユーザプログラムa.cを翻訳し、SVE版BLAS、LAPACK ライブラリを結合します。

[_LNlogin]$ fccpx -Kfast,optmsg=2 a.c -lfjlapacksve -SSL2
  1. C で書かれたユーザプログラムa.cを翻訳し、汎用版BLAS、LAPACK ライブラリを結合します。

[_LNlogin]$ fccpx -Kfast,optmsg=2 a.c -lfjlapack -SSL2
  1. C で書かれたユーザプログラムa.cを翻訳し、ILP64 インターフェースのSVE版BLAS、LAPACK ライブラリを結合します。

[_LNlogin]$ fccpx -Kfast,optmsg=2 -I${FJSVXTCLANGA}/include/lapack_ilp64 a.c -lfjlapacksve_ilp64 -SSL2
  1. C++で書かれたユーザプログラムa.cppを翻訳し、SVE版BLAS、LAPACK ライブラリを結合します。

[_LNlogin]$ FCCpx -Kfast,optmsg=2 a.cpp -lfjlapacksve -SSL2
  1. OpenMP C で書かれたユーザプログラムa.cを翻訳し、SVE版BLAS、LAPACKライブラリを結合します。

[_LNlogin]$ fccpx -Kfast,openmp,optmsg=2 a.c -lfjlapacksve -SSL2
  1. OpenMP C で書かれたユーザプログラムa.cをネイティブコンパイラで翻訳し、SVE版BLAS、LAPACK ライブラリを結合します。

[_CNlogin]$ fcc -Kfast,openmp,optmsg=2 a.c -lfjlapacksve -SSL2

5.4.5.5. BLAS、LAPACKスレッド並列版のC、C++からの利用方法

ユーザプログラムを翻訳し、BLAS 及びLAPACKのスレッド並列版の共有ライブラリを結合するためには、fccpxFCCpxfcc、または、FCCコマンド行にオプション -Kopenmpと、以下の表に示すオプションに加えて、-SSL2、または、-SSL2BLAMPを指定します。

種類

結合オプション

LP64、汎用版

-lfjlapackex

LP64、SVE版

-lfjlapackexsve

ILP64、汎用版

-lfjlapackex_ilp64

ILP64、SVE版

-lfjlapackexsve_ilp64

結合オプションはユーザプログラムよりも後ろに指定します。-SSL2、または、-SSL2BLAMPオプションはどちらを指定してもかまいません。
-Kopenmpオプションのかわりに -Kparallelオプションを指定することもできます。
ILP64 インターフェースのライブラリを使用する場合は、ILP64 に対応したヘッダファイルを使用するために-I${FJSVXTCLANGA}/include/lapack_ilp64を翻訳時のオプションに指定します。

利用方法の例は以下のとおりです。

  1. C で書かれたユーザプログラムa.cを翻訳し、SVE版BLAS、LAPACK スレッド並列版ライブラリを結合します。

[_LNlogin]$ fccpx -Kfast,openmp,optmsg=2 a.c -lfjlapackexsve -SSL2
  1. CC で書かれたユーザプログラムa.cを翻訳し、汎用版BLAS、LAPACK スレッド並列版ライブラリを結合します。

[_LNlogin]$ fccpx -Kfast,openmp,optmsg=2 a.c -lfjlapackex -SSL2
  1. C で書かれたユーザプログラムa.cを翻訳し、ILP64 インターフェースのSVE版BLAS、LAPACK スレッド並列版ライブラリを結合します。

[_LNlogin]$ fccpx -Kfast,openmp,optmsg=2 -I${FJSVXTCLANGA}/include/lapack_ilp64 a.c -lfjlapackexsve_ilp64 -SSL2
  1. C++で書かれたユーザプログラムa.cppを翻訳し、SVE版BLAS、LAPACK スレッド並列版ライブラリを結合します。

[_LNlogin]$ FCCpx -Kfast,openmp,optmsg=2 a.cpp -lfjlapackexsve -SSL2
  1. C で書かれたユーザプログラムa.cを逐次実行プログラムとして翻訳し、SVE版BLAS、LAPACK スレッド並列版ライブラリを結合します。

[_LNlogin]$ fccpx -c -Kfast,optmsg=2 a.c
[_LNlogin]$ fccpx -Kopenmp a.o -lfjlapackexsve -SSL2
  1. C で書かれたユーザプログラムa.cを自動並列化して翻訳し、SVE版BLAS、LAPACK スレッド並列版ライブラリを結合します。

[_LNlogin]$ fccpx -c -Kfast,parallel,optmsg=2 a.c
[_LNlogin]$ fccpx -Kfast,parallel,openmp a.o -lfjlapackexsve -SSL2
  1. Cで書かれたユーザプログラムa.cをネイティブコンパイラで翻訳し、SVE版BLAS、LAPACK スレッド並列版ライブラリを結合します。

[_CNlogin]$ fcc -Kfast,openmp,optmsg=2 a.c -lfjlapackexsve -SSL2

5.4.5.6. ScaLAPACK の C、C++からの利用方法

C、C++で書かれたユーザプログラムを翻訳し、ScaLAPACKの共有ライブラリを結合するためには、mpifccpxmpiFCCpxmpifcc、または、mpiFCCコマンドを使用します。

また、以下の表に示すオプション、および、使用するBLAS、LAPACKの種類に応じて、 BLAS、LAPACK逐次版のC、C++からの利用方法 、または、BLAS、LAPACKスレッド並列版のC、C++からの利用方法 の表に示すオプションを指定します。さらに、-SCALAPACKに加えて -SSL2、または、-SSL2BLAMPを指定します。

種類

結合オプション

LP64、汎用版

-lfjscalapack

LP64、SVE版

-lfjscalapacksve

ILP64、汎用版

-

ILP64、SVE版

-

ScaLAPACKの結合オプションはユーザプログラムよりも後ろに指定し、BLAS、LAPACK を結合するためのオプションよりも前に指定します。-SSL2または、-SSL2BLAMPオプションはどちらを指定してもかまいません。
スレッド並列版BLAS、LAPACK を使用する場合、-Kopenmpオプションも一緒に指定します。

利用方法の例は以下のとおりです。

  1. C で書かれたユーザプログラムa.cを翻訳し、SVE版ScaLAPACK ライブラリを結合します。BLAS、LAPACK は逐次版を結合します。

[_LNlogin]$ mpifccpx -Kfast,optmsg=2 a.c -lfjscalapacksve -lfjlapacksve -SSL2 -SCALAPACK
  1. C で書かれたユーザプログラムa.cを翻訳し、汎用版ScaLAPACK ライブラリを結合します。BLAS、LAPACK は逐次版を結合します。

[_LNlogin]$ mpifccpx -Kfast,optmsg=2 a.c -lfjscalapack -lfjlapack -SSL2 -SCALAPACK
  1. C で書かれたユーザプログラムa.cを翻訳し、SVE版ScaLAPACK ライブラリを結合します。BLAS、LAPACK は逐次版を結合します。

[_LNlogin]$ mpifccpx -Kfast,optmsg=2 a.c -lfjscalapacksve -lfjlapacksve -SSL2 -SCALAPACK
  1. C++で書かれたユーザプログラムa.cppを翻訳し、SVE版ScaLAPACK ライブラリを結合します。BLAS、LAPACK はスレッド並列版を結合します。

[_LNlogin]$ mpiFCCpx -Kfast,openmp,optmsg=2 a.cpp -lfjscalapacksve -lfjlapackexsve -SSL2 -SCALAPACK
  1. C で書かれたユーザプログラムa.cをネイティブコンパイラで翻訳し、SVE版ScaLAPACK ライブラリを結合します。BLAS、LAPACK はスレッド並列版を結合します。

[_CNlogin]$ mpifcc -Kfast,openmp,optmsg=2 a.c -lfjscalapacksve -lfjlapackexsve -SSL2 -SCALAPACK

5.4.5.7. BLAS、LAPACK、ScaLAPACK を動的ロードして利用する方法

dlopen、dlsym 関数で動的ロードしてBLAS、LAPACK、ScaLAPACK ライブラリを利用する場合、dlopen 関数でにファイル名を指定してライブラリをロードします。

共有ライブラリのファイル名を以下の表に示します。

種類

BLAS、LAPACK逐次版

BLAS、LAPACKスレッド並列版

ScaLAPACK

LP64、汎用版

libfjlapack.so

libfjlapackex.so

libfjscalapack.so

LP64、SVE 版

libfjlapacksve.so

libfjlapackexsve.so

libfjscalapacksve.so

ILP64、汎用版

libfjlapack_ilp64.so

libfjlapackex_ilp64.so

-

ILP64、SVE 版

libfjlapacksve_ilp64.so

libfjlapackexsve_ilp64.so

-

  • dlopen、dlsym 関数を使ってBLAS、LAPACK、および、ScaLAPACKを使用する場合、結合時にライブラリを指定するオプションは必要ありません。

  • BLAS、LAPACK スレッド並列版を使用するユーザプログラムを結合する場合、結合時のオプションに-Kopenmpを指定します。

  • fccpx、FCCpx、mpifccpxまたは mpiFCCpxコマンドを使ってユーザプログラムを結合する場合、-SSL2または-SSL2BLAMPオプションも一緒に指定します。

  • mpifccpxまたは、mpiFCCpxコマンドを使ってユーザプログラムと、ScaLAPACKライブラリを結合する場合、-SCALAPACKオプションも一緒に指定します。

利用方法の例は以下のとおりです。

  1. BLAS、LAPACK 逐次版を動的ロードする Cプログラムa.cを翻訳、結合する。

[_LNlogin]$ fccpx -Kfast,optmsg=2 a.c -SSL2
  1. BLAS、LAPACK スレッド並列版を動的ロードする Cプログラムa.cを翻訳、結合する。

[_LNlogin]$ fccpx -Kfast,openmp,optmsg=2 a.c -SSL2
  1. ScaLAPACK および BLAS、LAPACK 逐次版を動的ロードする Cプログラムa.cを翻訳、結合する。

[_LNlogin]$ mpifccpx -Kfast,optmsg=2 a.c -SSL2 -SCALAPACK
  1. ScaLAPACK および BLAS、LAPACK スレッド並列版を動的ロードする Cプログラムa.cを翻訳、結合する。

[_LNlogin]$ mpifccpx -Kfast,openmp,optmsg=2 a.c -SSL2 -SCALAPACK
  1. BLAS、LAPACK 逐次版を動的ロードする Cプログラムa.cと、それを呼び出す Fortranプログラムb.fを翻訳、結合する。

[_LNlogin]$ fccpx -c -Kfast,optmsg=2 a.c
[_LNlogin]$ frtpx -Kfast,optmsg=2 b.f a.o
  1. BLAS, LAPACK スレッド並列版を動的ロードする Cプログラムa.cと、それを呼び出す Fortranプログラムb.fを翻訳、結合する。

[_LNlogin]$ fccpx -c -Kfast,optmsg=2 a.c
[_LNlogin]$ frtpx -Kfast,openmp,optmsg=2 b.f a.o
  1. ScaLAPACK および BLAS、LAPACK 逐次版を動的ロードする Cプログラムa.cと、それを呼び出す Fortran プログラムb.fを翻訳、結合する

[_LNlogin]$ mpifccpx -c -Kfast,optmsg=2 a.c
[_LNlogin]$ mpifrtpx -Kfast,optmsg=2 b.f a.o
  1. ScaLAPACK および BLAS、LAPACK スレッド並列版を動的ロードする Cプログラムa.cと、それを呼び出す Fortran プログラムb.fを翻訳、結合する

[_LNlogin]$ mpifccpx -c -Kfast,optmsg=2 a.c
[_LNlogin]$ mpifrtpx -Kfast,openmp,optmsg=2 b.f a.o