5.2. SSL IIライブラリ

SSL IIライブラリは、スレッドセーフな数値計算ライブラリであり、10分野のサブルーチンが提供されます。
スレッド並列版は、並列効果の見込める重要な機能に関して、並列処理向けのアルゴリズムおよびインタフェースで提供されています。
  1. 線形計算

  2. 固有値固有ベクトル

  3. 非線形計算

  4. 極値問題

  5. 補間、近似

  6. 変換

  7. 数値微積分

  8. 微分方程式

  9. 特殊関数

  10. 擬似乱数

5.2.1. Fortranコンパイル方法

FortranプログラムからSSL II を利用するには-SSL2、または、-SSL2BLAMPオプションを指定します。
SSL II/MPIライブラリを使用する場合は、mpifrtpxコマンドに、-SSL2MPIオプションを指定し、同時に-SSL2、または、-SSL2BLAMPを指定します。

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

  1. MPI/自動並列/SSL II(主にマルチノードジョブ)

[_LNlogin]$ mpifrtpx -Kfast,parallel,SVE sample.f90 -SSL2MPI -SSL2
  1. MPI/OpenMP/SSL II(主にマルチノードジョブ)

[_LNlogin]$ mpifrtpx -Kfast,parallel,openmp,SVE sample.f90 -SSL2MPI -SSL2
  1. 逐次/SSL II(シングルノードジョブ)

[_LNlogin]$ frtpx -Kfast,SVE sample.f90 -SSL2
  1. 自動並列/SSL II(シングルノードジョブ)

[_LNlogin]$ frtpx -Kfast,parallel,SVE sample.f90 -SSL2
  1. OpenMP/SSL II(シングルノードジョブ)

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

参考

  • SSL II のサブルーチンは、スレッド並列版と逐次版で、サブルーチン名およびインタフェースが異なります。

  • 分割コンパイルを行う場合は、リンク時にもSSL II のオプションを指定してください。

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

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

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

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

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

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

5.2.2. サンプルプログラム(SSL2/Fortran)

サンプルプログラムを用いたコンパイル例を示します。

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

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

[_LNlogin]$ pjsub sample_SSL2.sh
[INFO] PJM 0000 pjsub Job 140 submitted.

5.2.3. C言語から利用する場合のプログラム復帰値

SSL II はFortran用のライブラリですが、C言語からも利用できます。
C言語からSSL II を利用する場合、Cの最初に実行される関数名によりプログラムの復帰値が異なります。
Cの復帰値を利用したい場合は留意ください。
詳しくはマニュアル「C言語使用手引書」の「Fortranとの結合」を参照してください。

関数名

プログラムの復帰値

main

Cの復帰値

MAIN__

Fortranの復帰値
ただし、Fortranの復帰値が0の場合はCの復帰値を返します。