自動チューニングの指定方法と指定ファイルの内容
ABCLib_DRSSEDにおける自動チューニングは、ライブラリルーチン毎に決められた名前をもつファイル(指定ファイル)で指示します。
以下に、各ライブラリルーチンと対応する指定ファイル名をのせます。
- 実数対称密行列用三重対角化ルーチン[一般版] (ABCLibTriRed):
指定ファイル .ABCLibTriRed
- 実数対称密行列用三重対角化ルーチン[特化版] (ABCLibTriRedR):
指定ファイル .ABCLibTriRedR
- 実数対称密行列用固有値求解ルーチン (ABCLibDRSAllEig):
指定ファイル .ABCLibDRSSEDAllEig
- 実数対称密行列用固有値および固有ベクトル求解ルーチン (ABCLibDRSAllEigVec):
指定ファイル .ABCLibDRSSEDAllEigVec
- エルミート行列用全固有値求解ルーチン (ABCLibHerAllEig):
指定ファイル .ABCLibHerAllEig
- エルミート行列用全固有値および全固有ベクトル求解ルーチン (ABCLibHerAllEigVec):
指定ファイル .ABCLibHerAllEigVec
- Gram-Schmidt直交化ルーチン (ABCLibQRD):
指定ファイル .ABCLibQRD
また指定ファイルに記述できる内容は、以下の通りです。なお指定ファイルには、以下の記述を含め、最低80文字以上の空白を入れてください。
- -autotune
自動チューニングするかどうかの指定です。``yes''、 ``no''で指定し、実装されている
自動チューニング全てを行います。また、全て自動チューニングしたい場合は``1''、
Householder三重対角化部のみ自動チューニングしたい場合は``2''、Householder逆変換による固有ベクトル計算部のみ自動チューニングしたい場合は``3''、および、Gram-Schmidt直交化ルーチンのみ自動チューニングしたい場合は``4''、という指定もできます。
- -starttunesize
自動チューニングする際の、開始する行列次元数を指定します。
- -maxtunesize
自動チューニングする際の、終了する行列次元数を指定します。
- -tunestride100
インストール時自動チューニングする際の、1000次元に満たない次元についての増加サイズを指定します。
- -tunestride1000
インストール時自動チューニングする際の、1,000次元を越える次元についての増加サイズを指定します。
- -ort
固有ベクトル計算の際の、直交化方式を指定します。
ここで指定される直交化方式は、固有ベクトルの精度および実行時間に影響を及ぼします。試用版で提供されている直交化方式の種類は、以下の通りです。
- MGS: 修正Gram-Schmidt法(Modified Gram-Schmidt Method)による直交化です。
最も精度が高い方法ですが、並列性がなく、高速処理に向きません。実行時間にかかわらず精度を保証したい場合に、指定を推奨します。
- CGS: 古典Gram-Schmidt法(Classical Gram-Schmidt Method)による直交化です。ただしPE内の直交化はMGSを用います。精度が低い方法ですが、並列性があり、高速処理に向いています。
- RB_MGS: 修正Gram-Schmidt法による直交化ですが、行方向分散に再分散し並列性の向上を狙います。この方法は著者独自の方法[A-33]です。並列計算機の性能に依存しますが、MGSよりも4倍程度高速化される可能性があります。なお精度は、MGSと同様です。
- RB_CGS: 古典Gram-Schmidt法による直交化ですが、行方向分散に再分散し並列性の向上を狙います。この方法は著者独自の方法[A-33]です。多くの並列計算機において、CGSよりも高速化されます。なお精度は、CGSと同様です。
- HCGS: 古典Gram-Schmidt法と修正Gram-Schmidt法を混合した方法です。
古典Gram-Schmidt法を用いているため精度が低いのですが、単純なCGSに比べて精度改善される場合があります。並列性があり、高速処理に向いています。
- IRCGS: 古典Gram-Schmidt法を2回行うことで精度を改良する直交化方式(Iterative Refinement Classical Gram-Schmidt Method)です。精度が低い方法ですが、単純なCGSに比べ精度改善される場合があります。並列性があり、高速処理に向いています。
- SCGS: 純粋な古典Gram-Schmidt法による直交化です。精度が低い方法であり、理論上CGS法よりも精度が悪くなります。この方式は比較検討などの数値実験の用途以外、普通は指定してはいけません。
- NoOrt: 全く直交化をしない方法です。精度破綻する場合がありますが、並列性が極めて高いので高速実行に向いています。精度はともかく高速に計算したい場合のみ、指定が推奨されます。
- -imp_acc_ort (拡張機能)
再直交化のためのGram-Schmidt法の計算方法を工夫することで、直交精度の改善を試みます。デフォルトでは、本機能はOFFです。
- NO: 直交精度改善手法を適用しません。
- SORT: 内積値をキーとしてソートすることにより、古典Gram-Schmidt法による直交化演算精度の改善を試みます。メモリ量、および計算時間が増加します。
- CMP: 内積値計算における積和演算を2変数により精度保証する方法により、Gram-Schmidt法による直交化演算精度の改善を試みます。古典Gram-Schmidt法、修正Gram-Schmidt法両方に適用されます。
- BOTH: 古典Gram-Schmidt法では、内積値をキーとしてソートし、かつ内積値計算における積和演算を2変数により精度保証することで、Gram-Schmidt法による直交化演算精度の改善を試みます。一方、修正Gram-Schmidt法では、CMPと同等になります。
- -beo
実行起動前最適化を行うかどうかを指定します。行う場合``yes''、行わない場合``no''で指定します。なお実行起動前最適化では多項式によるパラメタ推定をおこないません。
- -print
内部実行時間などの詳細情報を表示するかどうかを指定します。表示する場合``yes''、しない場合``no''で指定します。また、表示レベルを1〜10で指定することもできます。``yes''で指定した場合の表示レベルは1です。
- -heterogeneous
ヘテロジニアス(非均質)PCクラスタ環境において、静的負荷分散機構による計算負荷の調整を行うかどうかの指定です。``yes''、 ``no''で指定します。デフォルトは、”no”です。
以下に、指定ファイルの記述例をのせます。
例1: -autotune yes -starttunesize 100 -maxtunesize 8000
-tunestride100 100 -tunestride1000 1000 -ort MGS -print yes
例1の記述では、行列サイズ100次元から1,000次元までは100刻みで,1,000次元を越える場合は1,000刻みで、8,000次元までの行列サイズをサンプル点にとり、インストール時自動チューニングします。
例2: -autotune no -starttunesize 100 -maxtunesize 8000
-tunestride100 100 -tunestride1000 1000 -ort MGS -print yes
例2の記述では、直交化方式にMGS、ライブラリの内部実行時間を表示しつつ、ライブラリを実行することを指定します。自動チューニングはしないことを指定する。