Mathematica Stack Exchange is a question and answer site for users of Mathematica. Join them; it only takes a minute:

Sign up
Here's how it works:
  1. Anybody can ask a question
  2. Anybody can answer
  3. The best answers are voted up and rise to the top

I would like to diagonalize one unitary non-sparse matrix of size 12870 with complex number entries (not symbols, this is really a numerical problem). Is is possible to make eigensystem run in parallel - I have access to a HPC cluster with many kernels - so that the diagonalization runs as fast as possible?

share|improve this question
Likely the best approach to this problem is to use/write a parallel solver in your favorite traditional language and call it from mathematica. – george2079 May 23 '14 at 14:42
I guess it can help you:… – Rom38 May 23 '14 at 15:02
Have you tried it? Eigenvalues for instance should use all available cores on the machine it's running. By the way 12870 is Binomial[16, 8] so presumably you're looking at spinless fermions on a 16-site lattice at half filling? And the entries are complex so you are looking at a time-dependent H? Or maybe a density matrix? (idle guessing here while waiting for mma to finish something) – acl May 23 '14 at 17:01
@acl . You are close! Eigenvalues uses all the cores (there are 12 nodes) but still takes 2 hours. I need to do this for 500 matrices of the same size. – lagoa May 23 '14 at 20:07
For a dense numerical problem, that you want to distribute over a cluster--provided that it can be done at machine precision, my suggestion would be to use ScaLAPACK (but make sure that your cluster has InfiniBand). But I think that @acl's suggestion of doing the 500 matrices in parallel one on each node, rather than one at a time over all nodes, will be more computationally efficient. – Oleksandr R. May 24 '14 at 0:12

Your Answer


By posting your answer, you agree to the privacy policy and terms of service.

Browse other questions tagged or ask your own question.