如何利用julia高效并行求解 Ax=b,A为稀疏矩阵

Ax=b,若A为大型的稀疏矩阵,如何能够julia高效并行的求解这个方程?使得求解效率高于或相当于MATLAB。另外,mkl这些应该怎么用啊?不太明白。感谢您的回答!我用的windows的版本。

稀疏矩阵

julia 标准库里自带 稀疏数组 CSC 格式的。

需要其他格式的,可以去 JuliaSparse 看看有没有封装好的库。
能导出 C 接口的其它语言的库,julia 也能调用, Clang.jl 封装或者 ccall 直接用。

最好先算算矩阵的稀疏性,画个图看看矩阵的对称性,对称性好的用 特殊矩阵 效率会比通用的稀疏矩阵好。

放点 python scipy 的文档链接吧,其他的格式搜一下说明文章不少。

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的了解还不够透彻!