7月31日に筑波大学で行われた
シンポジウムで SDP のサイズについて質問があったので、こちらで補足を行う。
資産の数を n とすると、mDIM (制約式の数 = Schur complement 行列の大きさ) = (n(n + 1)) / 2 + 2n + 5 となる。よって n = 225 のときには mDIM = 25880 となる。DNN(半正定値 + 非負)制約があるので mDIM のかなり大きくなる。ところが、制約式のほとんどが DNN なので以下のように各制約行列の第一ブロックは 225 とかなり小さめになっている。
25880 (mDIM)
2 (nBLOCK)
226 -25877 (bLOCKsTRUCT)
そのため、SDPARA で解いたときの各部分の実行時間は以下のようになる。一見すると mDIM = 25880 となる巨大な SDP が 1095 秒程で解くことができるのは不思議に見えるのだが、上記の性質から F3 式の計算部分(Make bF3 time) が少なくなっている。Parallel Cholesky 分解は効率良く並列に計算できるので、F3 式の計算に大きく依存しなければ、このように高速に解くことができる。つまり mDIM が大きくても bLOCKsTRUCT の正の部分の値が小さければ高速に解くことができる(これも SDPARA による高速化の恩恵)。
Predictor time = 1082.062081, 98.831590
Corrector time = 11.097648, 1.013619
Make bMat time = 34.830153, 3.181259
Make bF3 time = 50.397050, 4.603082
copy bMat time = 93.721031, 8.560136
symm bMat time = 64.199433, 5.863741
Cholesky bMat = 878.015744, 80.194744
solve = 20.991411, 1.917279
makedX = 0.330666, 0.030202
symmetriseDx = 0.007777, 0.000710
makedXdZ = 0.717884, 0.065569
Main Loop = 1094.854472, 100.000000
Total = 1095.090178, 100.021529
○ SDPA クラスタ
16 Nodes, 32 CPUs, 128 CPU cores;
CPU : Intel Xeon 5460 3.16GHz (quad cores) x 2 / node
Memory : 48GB / node
NIC : GbE x 2 and Myrinet-10G x 1 / node
OS : CentOS 5.5 for x86_64