1. text inputの形式
[[0,2,0,...],[0,0,3,0,......],...,[...]]
2. vimで変換
:%s/\],\[/\r/g :%s/\[\[//g :%s/\]\]//g
=>
0,2,0,.......... 0,0,3,0,......... .......
という形式になる
これをmatrix.json.txtとして保存した
3. MATLABでMatrix Market Formatに変換する
ここのmmwrite.mを使った
http://math.nist.gov/MatrixMarket/mmio/matlab/mmiomatlab.html
A = dlmread('matrix.json.txt'); B = sparse(A); mmwrite('output.tri',B);
これでoutput.triが出力される
あとはcholmodに食わせればよい。
4. 計算実行
$ time ./cholmod_demo < output.tri ---------------------------------- cholmod_demo: cholmod version 3.0.4 SuiteSparse version 4.4.2 norm (A,inf) = 1.95833 norm (A,1) = 4.60089 CHOLMOD sparse: A: 1852-by-1852, nz 12988, up/lo. OK CHOLMOD dense: B: 1852-by-1, OK bnorm 1.99946 Analyze: flop 2.73833e+06 lnz 64137 Factorizing A*A'+beta*I CHOLMOD factor: L: 1852-by-1852 supernodal, LL'. nz 77557 OK Ordering: AMD fl/lnz 42.7 lnz/anz 3.1 ints in L: 10655, doubles in L: 95907 factor flops 2.73833e+06 nnz(L) 64137 (w/no amalgamation) nnz(A): 20844 flops / nnz(L): 42.7 nnz(L) / nnz(A): 3.1 analyze cputime: 0.0000 factor cputime: 0.0000 mflop: 0.0 solve cputime: 0.0000 mflop: 0.0 overall cputime: 0.0000 mflop: 0.0 solve cputime: 0.0000 mflop: 0.0 (100 trials) solve2 cputime: 0.0000 mflop: 0.0 (100 trials) peak memory usage: 2 (MB) residual (|Ax-b|/(|A||x|+|b|)): 4.99e-16 4.73e-16 4.73e-16 6.20e-17 rcond 1.5e-01 CHOLMOD GPU/CPU statistics: SYRK CPU calls 505 time 0.0000e+00 GPU calls 0 time 0.0000e+00 GEMM CPU calls 335 time 0.0000e+00 GPU calls 0 time 0.0000e+00 POTRF CPU calls 171 time 0.0000e+00 GPU calls 0 time 0.0000e+00 TRSM CPU calls 170 time 0.0000e+00 GPU calls 0 time 0.0000e+00 time in the BLAS: CPU 0.0000e+00 GPU 0.0000e+00 total: 0.0000e+00 assembly time 0.0000e+00 0.0000e+00 ./cholmod_demo < output.tri 0.19s user 0.00s system 97% cpu 0.195 total