I'm solving an optimization problem using Bayesian analysis, which involves solving an eigenvalue problem for a sparse hermitian matrix. (Link to a brief presentation describing the problem).
The Bayesian analysis uses a number of "walkers" which explores the parameter-space. Each walker solves the eigenvalue problem for various set of model-parameters. We have been using the
emcee package which parallelizes each walker using MPI. So each compute core solves the eigenvalue problem separately and this forms the bottleneck in terms of computational time.
So far I've tried eigenvalue functions from
- tensorflow (tf.linalg.eigh)
- scipy (scipy.sparse.linalg.eigsh)
- numpy (numpy.linalg.eigh)
and found that the solver from scipy.sparse is the fastest among the three.
Is there an already known computational architecture (GPU/CPU) in python to speedup the eigenvalue computation?