-
Notifications
You must be signed in to change notification settings - Fork 8
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Memory bottleneck #147
Comments
So I have no doubt that this could be done, but doing it efficiently would take a bit of care and thought. At one level, we would just do a first 'quarter-transform' of the three-index DF integrals into the cluster basis in a direct fashion. This seems feasible, but getting is working for both solids and molecules may be difficult - I guess we just start with molecules. It does of course mean generating all integrals for each cluster, rather than reusing them. This would increase the prefactor in the (leading-order) N^4 step of the algorithm for the ERI projection...but could get the memory overhead down to N^2. A longer-term option (I guess in conjunction with this) would be to start thinking about whether we can define a compact support of the cluster orbitals over the AOs, perhaps in a domain of AOs on atoms up to a certain distance away. This is obviously the first step towards a fully linear-scaling approach. |
@maxnus any thoughts...? |
What's the cluster size here? Do you have an example script?
I'm not aware that we project full system ERIs in any solver, as this would
scale N^4 and anyways require too much memory.
|
Hi @maxnus Under the hood these make a projection of the full system ERI into the cluster orbitlas, The cluster size is not really the problem: I have add troubles even to construct the DMET bath for an hydrogen ring with 402 atoms with cc-pvdz. That is only 2 cluster orbitals, but contracting the full system ERI (2010^4) seem to be the issue...? I attach my input from pyscf import gto mol = gto.Mole() mf = scf.RHF(mol).density_fit() emb = vayesta.ewf.EWF(mf, solver='CCSD', bath_options=dict(bathtype='dmet')) emb.kernel() |
Hi Edoardo, this is weird, it should not construct the full tensor when using DF. Unfortunately, I won't be able to look into it before next week. |
Quick update: following @ghb24 's suggestions I tried to reduce PYSCF_MAX_MEMORY to force |
Of these three transformation routines, only the first one should be encountered if density-fitting is used. The second is for systems without df and the third is a backup for the case that ERIs have been deleted somehow in the meantime. On an unrelated note: |
Hi Max, |
I have been trying to push Vayesta to calculate molecules with ~200 atoms with >2000 cGTO, but seem to a wall mostly due to memory issues. The BNO construction is not an issue, but the construction of cluster eri is. DF brought me a bit further, but this projection still is a bottleneck
Digging in the code and in pyscf, this seems to be done via rotation of the full eri which is of course very memory consuming. Could an 'integral-direct' approach help here?
The text was updated successfully, but these errors were encountered: