我使用ojAlgo库开发了一个用于计算矩阵指数的程序。它包括特征值分解。 ojAlgo是否包含多线程算法?例如,是否可以将多个线程附加到分解任务以减少分解时间?
eigenvalue = Eigenvalue.PRIMITIVE.make(matrix);
eigenvalue.decompose(matrix); //matrix dimension (3000x3000)
答案 0 :(得分:1)
是的。如果查看该工厂方法Eigenvalue.PRIMITIVE.make(matrix);
,您会发现它根据矩阵大小来切换实现。用于较大矩阵的实现是多线程的。唯一的问题是单线程实现是如此高效,以至于在矩阵大于8192之前,工厂不会切换到多线程。
您知道矩阵是否对称吗?如果这样做,我建议您使用Eigenvalue.PRIMITIVE.make(matrix, boolean);
而不是Eigenvalue.PRIMITIVE.make(matrix);
。否则,算法将在每次调用eigenvalue.decompose(matrix);
时检查对称性。