Ax=b,若A为大型的稀疏矩阵,如何能够julia高效并行的求解这个方程?使得求解效率高于或相当于MATLAB。另外,mkl这些应该怎么用啊?不太明白。感谢您的回答!我用的windows的版本。
稀疏矩阵
julia 标准库里自带 稀疏数组 CSC 格式的。
需要其他格式的,可以去 JuliaSparse 看看有没有封装好的库。
能导出 C 接口的其它语言的库,julia 也能调用, Clang.jl 封装或者 ccall
直接用。
最好先算算矩阵的稀疏性,画个图看看矩阵的对称性,对称性好的用 特殊矩阵 效率会比通用的稀疏矩阵好。
放点 python scipy 的文档链接吧,其他的格式搜一下说明文章不少。
- Sparse matrices (scipy.sparse) — SciPy v1.4.1 Reference Guide
python 对 bsr, coo, csc, csr, dia, dok, lil 格式的简介,附带优缺点说明 - scipy-sparse-benchmark/Scipy-sparse-benchmark.ipynb at master · musically-ut/scipy-sparse-benchmark
python 对 bsr, coo, csc, csr, dia, dok, lil 之间互操作性的测试,16 年的,可以重新跑一下
MKL, Pardiso
MKL 有现成的包。
稀疏并行看起来得上 JuliaSparse/Pardiso.jl: Calling the PARDISO library from Julia
性能测试
程序跑得慢多做性能测试吧.
CPU 火焰图(自带的 @profile
就行,画图用 ProfileView.jl
)
和内存分配计数(自带的命令行参数 --track-allocation
)都测一测,先找到瓶颈,再去找解决方案。
1 个赞
另外 matlab 也能通过 FFI 调用 MKL,所以你比较解这个方程意义不大。
都是 MKL 看谁的 FFI 开销小呗。
非常感谢,学到了不少,目前对Julia的了解还不够透彻!