5.5. 高速4倍精度基本演算ライブラリ

高速4倍精度基本演算ライブラリ(fast_dd)は、4倍精度の値を double-double 形式で表現し演算を行うライブラリです。
double-double 形式は倍精度実数型の変数2つで、4倍精度変数を表現する形式です。
演算はプロセッサの持つ倍精度演算命令を使って行うため、言語処理系が持つ4倍精度実数型に比べて高速に演算できます。

高速4倍精度基本演算ライブラリは、Fortran、または、C++プログラムから利用できます。

5.5.1. Fortran 版の結合方法

fast_dd は、Fortran または C++で記述された利用者プログラムに結合して使用することができます。翻訳、結合には富士通製 Fortran/C++コンパイラを使用します。

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

  1. SVE版 fast_dd のアーカイブを結合する

[_LNlogin]$ frtpx -Kfast,optmsg=2,SVE a.f90 -SSL2
  1. 汎用版 fast_dd のアーカイブを結合する

[_LNlogin]$ frtpx -Kfast,optmsg=2,NOSVE a.f90 -SSL2
  1. スレッド並列ルーチンを使用するユーザプログラムを翻訳し、fast_dd のアーカイブを結合する

[_LNlogin]$ frtpx -Kfast,openmp,optmsg=2,SVE b.f90 -SSL2
  1. ネイティブコンパイラにより、ユーザプログラムを翻訳し、SVE版 fast_dd のアーカイブを結合する

[_CNlogin]$ frt -Kfast,optmsg=2,SVE a.f90 -SSL2

参考

  • ユーザプログラムをクロスコンパイラにより翻訳し、fast_dd を結合する場合、frtpxコマンド行に-SSL2を指定します。

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

  • fast_dd のスレッド並列化されたルーチンを使用する場合は、-Kopenmpまたは -Kparallelオプションを追加します。

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

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

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

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

  • MPIプログラムを翻訳し、fast_dd を結合するためには mpifrtpx、mpifrtコマンドを使用します。

5.5.2. C++版の結合方法

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

  1. ユーザプログラムa.cppを翻訳し, SVE版 fast_dd のアーカイブを結合する

[_LNlogin]$ FCCpx -Kfast,openmp,optmsg=2,SVE a.cpp -SSL2
  1. ユーザプログラムa.cppを翻訳し, 汎用版 fast_dd のアーカイブを結合する

[_LNlogin]$ FCCpx -Kfast,openmp,optmsg=2,NOSVE a.cpp -SSL2
  1. ネイティブコンパイラでユーザプログラムを翻訳し、SVE 版 fast_dd のアーカイブを結合する

[_CNlogin]$ FCC -Kfast,openmp,optmsg=2,SVE a.cpp -SSL2

参考

  • ユーザプログラムをクロスコンパイラにより翻訳し、fast_dd を結合するためには、FCCpxコマンド行に-SSL2を指定します。

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

  • fast_dd はスレッドセーフなオブジェクトであるため、-Kopenmp、-Kparallel、または、-mtのいずれかを指定します。

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

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

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

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

  • MPIプログラムを翻訳し、fast_dd を結合するためには、mpiFCCpx、mpiFCCコマンドを使用します。