를 사용하여 HPC에 발견하고, 나는 큰 에르 미트 행렬의 고유 벡터 (~ 2^14 행/열)빠른 고유 벡터는 Qutip 및 slepc4py
나는를 찾고자 24 코어/48 스레드 Xeon 시스템에서 실행됩니다. 이 코드는 원래 Qutip 라이브러리를 사용하여 작성되었습니다. 나는 포함 된 eigenstates()
함수가 내 컴퓨터에서 단 하나의 쓰레드만을 사용하므로 더 빠른 방법을 찾으려고한다는 것을 알았다.
scipy.linalg
eig()
및
eigh()
기능뿐만 아니라
scipy.sparse.linalg
eig()
및
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'
Welcome to Stackoverflow! 귀하의 질문은 http://stackoverflow.com/questions/29525041/petsc4py-creating-aij-matrix-from-csc-matrix-results-in-typeerror와 유사합니다. PETSc 및 SLEPc를 다시 컴파일하고 빌드 - petsc4py와 slepc4py를 설치하십시오. 저비용의 순수 양자 상태에 관심이 있으시면, \t EPS_SMALLEST_MAGNITUDE of EPSSetWhichEigenpairs()와 EPSSetDimensions()를 EPSARNOLDI 또는 EPSLANCZOS와 같은 EPSType과 함께 사용하면됩니다. – francis
그건 그렇고, [scipy.sparse.linalg.eigsh] (https://docs.scipy.org/doc/scipy-0.14.0/reference/generated/scipy.sparse.linalg.eigsh.html) 또한 증명할 수 있습니다 도움이 ... – francis