carstenbauer / StableDQMC.jl

Numerical stabilization routines for determinant quantum Monte Carlo
https://carstenbauer.github.io/StableDQMC.jl/dev/
MIT License
28 stars 5 forks source link

Can we use this method to projector QMC? #13

Open liuzhaochen opened 4 years ago

liuzhaochen commented 4 years ago

Hi crstnbr! Thanks for your excellent code and your benchmark for different methods. I am a newcomer to QMC. Recently I am studying the Projector QMC. I wonder if it is possible to use your method in PQMC? And I noticed you just submitted a paper on arXiv about monte carlo calculation. Did you perform the calculation with julia? How's the performance of julia on DQMC calculation?

Best Wishes

carstenbauer commented 4 years ago

Hi @liuzhaochen,

I'm happy to hear that you find the code useful!

I wonder if it is possible to use your method in PQMC?

Certainly! The meaning of the slice matrices B is different in PQMC but you need to perform numerical stabilization as well.

And I noticed you just submitted a paper on arXiv about monte carlo calculation. Did you perform the calculation with julia? How's the performance of julia on DQMC calculation?

Yes, 90% of the computations have been performed in Julia - an extensive effort taking up millions of CPU hours (an O(3) quantum critical metal is a super hard problem). The performance of julia was great. You certainly have to optimize your code, but then you achieve similar performance as with Fortran or C++ (I compared to both).

I will publish the actual code that I used for these simulations later this years (probably in summer). You can find a simplified version in MonteCarlo.jl (in particular you should check out ffreyer's fork/branches.

All the best, Carsten

liuzhaochen commented 4 years ago

Thanks for your reply. I have organized my code about hubbard model successfully. Looking forward for your code in the furture. Is it possible to speed up matrix operation parallelly? It seems I can only use one worker in one Markov chain.

Best Wishes

carstenbauer commented 4 years ago

You can use LinearAlgebra.BLAS.set_num_thread for threading matrix multiplications within BLAS/LAPACK. Also note that while MCMC isn't really parallelizable you can run multiple simulations with different seeds in parallel (trivial parallelization).