TEBD with GPU - error with eigen

Hi all! I did a little digging into the problem and what happens is during the apply(gates_even_offdiag, psi) in the first iterations with a precision of Float32 an eigenvalue call is made on an extremely ill conditioned matrix and as a result CUDA.jl returns an eigen spectrum of all NaN values. In my testing I catch this problem and convert the matrix into Floa64 and compute the eigenvalue again, there are too many eigenvalues to print (1053 of them) but I can say the condition number of this matrix is 1.91e27. As Matt said there is much to learn about how and when we can use single precision numbers in ITensors/physics algorithms and how we design algorithms around their performance enhancements on GPU. Thanks for sending this interesting issue!

1 Like