diff --git a/.gitignore b/.gitignore index e4f443c..1fbef14 100644 --- a/.gitignore +++ b/.gitignore @@ -1,3 +1,9 @@ +# Calculation outputs +*.dat +*.csv +*.hdf5 +*.out + # Temporary and scratch files temp/ scratch/ diff --git a/Hamiltonian.jl b/Hamiltonian.jl index 321c343..324346c 100644 --- a/Hamiltonian.jl +++ b/Hamiltonian.jl @@ -1,5 +1,5 @@ include("common.jl") -using TensorOperations, KrylovKit, LinearAlgebra, CUDA, CUDA.CUTENSOR +using TensorOperations, KrylovKit, LinearAlgebra, CUDA, cuTENSOR, NVTX @enum Hamiltonian_backend cpu_tensor gpu_cutensor @@ -134,7 +134,7 @@ function eig(H::Hamiltonian{T}, levels::Int; resonances = !H.hermitian)::Tuple{V x₀ = CUDA.rand(Complex{T}, vectorDims(H)...) synchronize() end - evals, evecs, info = eigsolve(H, x₀, levels, resonances ? :LI : :SR; ishermitian = H.hermitian, tol = tolerance) + evals, evecs, info = eigsolve(H, x₀, levels, resonances ? :LI : :SR; ishermitian = H.hermitian, tol = tolerance, krylovdim = levels * 2) resonances || info.converged < levels && throw(error("Not enough convergence")) # don't check convergence for resonances if H.hermitian evals = real.(evals) end if H.mode == gpu_cutensor # to avoid possible GPU memory leak