現在は SDPA の改造を行っている。以下は SDPA の出力ファイルの一部である。ボトルネックとなるのは、主に以下の三つの箇所になっている。
1: Make bMat (特に Make bF1, Make bF3) : Schur complement 行列の作成
これは現在の改造(マルチスレッド化など)で高速化されている(継続中)。
2: Cholesky bMat : Schur complement 行列の Cholesky 分解
これについてはこれから作業を行う予定
3: makedXdZ : 探索方向の計算
この部分は行列積(DGEMM)に依存する部分が多い。反対にこの部分が実行時間の多くを占める場合には添付の図のように SDPA 全体の実行時間も O(n^3) に近くなる。
Time(sec) Ratio(% : MainLoop)
Predictor time = 93.160000, 96.021439
Corrector time = 2.390000, 2.463410
Make bMat time = 33.310000, 34.333127
Make bDia time = 0.000000, 0.000000
Make bF1 time = 0.000000, 0.000000
Make bF2 time = 0.010000, 0.010307
Make bF3 time = 48.390000, 49.876314
Make bPRE time = 0.060000, 0.061843
Make rMat time = 0.370000, 0.381365
Make gVec Mul = 0.050000, 0.051536
Make gVec time = 0.080000, 0.082457
Cholesky bMat = 57.680000, 59.451659
Ste Pre time = 0.010000, 0.010307
Ste Cor time = 0.890000, 0.917337
solve = 3.410000, 3.514739
sumDz = 0.080000, 0.082457
makedX = 0.590000, 0.608122
symmetriseDx = 0.010000, 0.010307
makedXdZ = 0.680000, 0.700886
xMatTime = 0.190000, 0.195836
zMatTime = 0.250000, 0.257679
invzMatTime = 0.000000, 0.000000
xMatzMatTime = 0.000000, 0.000000
EigxMatTime = 0.450000, 0.463822
EigzMatTime = 0.410000, 0.422593
EigxMatzMatTime = 0.000000, 0.000000
updateRes = 0.090000, 0.092764
EigTime = 0.860000, 0.886415
sub_total_bMat = 63.710000, 65.666873
Main Loop = 97.020000, 100.000000
File Check = 0.000000, 0.000000
File Change = 0.000000, 0.000000
File Read = 0.090000, 0.092764
Total = 97.110000, 100.092764
1: Make bMat (特に Make bF1, Make bF3) : Schur complement 行列の作成
これは現在の改造(マルチスレッド化など)で高速化されている(継続中)。
2: Cholesky bMat : Schur complement 行列の Cholesky 分解
これについてはこれから作業を行う予定
3: makedXdZ : 探索方向の計算
この部分は行列積(DGEMM)に依存する部分が多い。反対にこの部分が実行時間の多くを占める場合には添付の図のように SDPA 全体の実行時間も O(n^3) に近くなる。
Time(sec) Ratio(% : MainLoop)
Predictor time = 93.160000, 96.021439
Corrector time = 2.390000, 2.463410
Make bMat time = 33.310000, 34.333127
Make bDia time = 0.000000, 0.000000
Make bF1 time = 0.000000, 0.000000
Make bF2 time = 0.010000, 0.010307
Make bF3 time = 48.390000, 49.876314
Make bPRE time = 0.060000, 0.061843
Make rMat time = 0.370000, 0.381365
Make gVec Mul = 0.050000, 0.051536
Make gVec time = 0.080000, 0.082457
Cholesky bMat = 57.680000, 59.451659
Ste Pre time = 0.010000, 0.010307
Ste Cor time = 0.890000, 0.917337
solve = 3.410000, 3.514739
sumDz = 0.080000, 0.082457
makedX = 0.590000, 0.608122
symmetriseDx = 0.010000, 0.010307
makedXdZ = 0.680000, 0.700886
xMatTime = 0.190000, 0.195836
zMatTime = 0.250000, 0.257679
invzMatTime = 0.000000, 0.000000
xMatzMatTime = 0.000000, 0.000000
EigxMatTime = 0.450000, 0.463822
EigzMatTime = 0.410000, 0.422593
EigxMatzMatTime = 0.000000, 0.000000
updateRes = 0.090000, 0.092764
EigTime = 0.860000, 0.886415
sub_total_bMat = 63.710000, 65.666873
Main Loop = 97.020000, 100.000000
File Check = 0.000000, 0.000000
File Change = 0.000000, 0.000000
File Read = 0.090000, 0.092764
Total = 97.110000, 100.092764