1

I develop a program using ojAlgo library for computing matrix exponential. It includes eigen value decomposition. Does ojAlgo include multi-threaded algorithms ? For example is it possible to attach more than one thread to the decomposition task to reduce decomposition time?

eigenvalue = Eigenvalue.PRIMITIVE.make(matrix);
eigenvalue.decompose(matrix); //matrix dimension (3000x3000)
Johann MARTINET
  • 94
  • 1
  • 10

1 Answers1

1

Yes it does. If you look inside that factory method Eigenvalue.PRIMITIVE.make(matrix); you'll se that it switches implementation depending on matrix size. The implementation used for the larger matrices is multi-threaded. The only problem for you is that the single-threaded implementation is so efficient that the factory doesn't switch to multi-threading until the matrices are larger than 8192.

Do you know if the matrices are symmetric or not? If you do I would recommend you to use Eigenvalue.PRIMITIVE.make(matrix, boolean); instead of Eigenvalue.PRIMITIVE.make(matrix);. Otherwise the algorithm will check for symmetry with every call to eigenvalue.decompose(matrix);.

apete
  • 1,250
  • 1
  • 10
  • 16
  • Thank you for your answer. If the single threaded implementation is efficient for my matrix I will keep it. Thank you for your recommendation, I know that my matrix is not symmetric, I will use the second approach with false. – Johann MARTINET Aug 17 '18 at 04:32