我正在做一些量子计算的数值模拟,我希望找到一个大厄米矩阵的特征向量(~2^14 行/列)
我在 24 核/48 线程 XEON 机器上运行。该代码最初是在 Qutip 库的帮助下编写的。我发现包含的eigenstates()
函数只使用我机器上的一个线程,所以我试图找到一种更快的方法来做到这一点。
我尝试使用scipy.linalg
eig()
andeigh()
函数以及scipy.sparse.linalg
eig()
and ,eigh()
但两者似乎都比 Qutip 中内置的函数慢。
我已经看到一些建议,我可能会从使用 slepc4py 获得一些加速,但是包的文档似乎非常缺乏。我不知道如何将 numpy 复数数组转换为 SLEPC 矩阵。
A = PETSc.Mat().create()
A[:,:] = B[:,:]
# where B is a scipy array of complex type
TypeError: Cannot cast array data from dtype('complex128') to dtype('float64') according to the rule 'safe'