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 it possible to make eigensystem run in parallel - I have access to an HPC cluster with many kernels - so that the diagonalization runs as fast as possible?

  • 1
    $\begingroup$ Likely the best approach to this problem is to use/write a parallel solver in your favorite traditional language and call it from mathematica. $\endgroup$ – george2079 May 23 '14 at 14:42
  • $\begingroup$ I guess it can help you: mathematica.stackexchange.com/questions/13419/… $\endgroup$ – Rom38 May 23 '14 at 15:02
  • 3
    $\begingroup$ 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) $\endgroup$ – acl May 23 '14 at 17:01
  • $\begingroup$ @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. $\endgroup$ – lagoa May 23 '14 at 20:07
  • 2
    $\begingroup$ 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. $\endgroup$ – Oleksandr R. May 24 '14 at 0:12

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Browse other questions tagged or ask your own question.