Hello, I am new to julia and parallel computing. I want to use parallel computing capability in julia in doing shift-invert calculations. My problem is that I have a couple of sparse matrices, and want to find specific eigenvalue of these matrices. depending on the size of my matrices, I want to use 4-24 of cores available on each computing node. The usual sparse matrices, shift-invert, Arpack function I use is as follows:
To the best of my knowledge there is no way to run the Arpack eigensolver in parallel. Since the process is iterative, the previous result is needed in every step of the iteration in order to obtain a new approximation to a subspace. However, it might be possible to parallelize the application of the operator (i.e. the shift-and-invert operation in your case) to the vectors of the krylov subspace.
It looks like there is a P_ARPACK library that uses MPI to to do ARPACK algorithms in parallel. This doesn’t appear to have a counterpart in julia, but you can make a ccall wrapper to use it from julia.
If you do succeed in getting that working, it may be a valuable contribution to the julia community as a package.
According to my observations, it seems like only the initial factorization of the matrix is performed using multiple threads and afterwards only a single one is used. But honestly, I do not know whether it makes sense to perform the subsequent calculations in parallel…
You can take a look at a project I’ve just started : SlepcWrap.jl. It is a julia wrapper for the SLEPc library, aimed to solve large eigenvalue problems on (parallel) distributed architectures. Check out the README or the documentation for an example.