I am new to both PySCF and GPU4pyscf. I am being able to run the single point calculations using both the GPU and CPU version on benzene and getting similar energy values. However, when I am trying to optimize the geometry, the GPU version seems to be failing. The energy seems to be decreasing without a bound. However, the CPU version is able to optimize the geometry perfectly.
CPU Version
from datetime import datetime
import numpy as np
from pyscf import gto, dft
from pyscf.geomopt.geometric_solver import optimize
mol = '''C -1.43530661 -0.38248086 0.00007236;
C -0.03390667 -0.38255097 0.00050137;
C 0.66685425 0.83106172 -0.00006381;
C -0.03378475 2.04474452 -0.00105877;
C -1.43518468 2.04481464 -0.00148574;
C -2.13594561 0.83120195 -0.00092082;
H -1.97035312 -1.30910108 0.00050287;
H 0.50104676 -1.30922473 0.00125995;
H 1.73685420 0.83100818 0.00026331;
H 0.50126177 2.97136475 -0.00149182;
H -1.97013811 2.97148840 -0.00224291;
H -3.20594556 0.83125549 -0.00124699
'''
mol_benzene = gto.M(
atom = mol,
basis = '6-31g'
)
rks_benzene = dft.RKS(mol_benzene)
rks_benzene.xc = 'wb97x_d'
start_time = datetime.now()
rks_benzene.kernel()
print(f'Total time taken for single point energy = {(datetime.now() - start_time).total_seconds()} seconds')
start_time = datetime.now()
opt_benzene = optimize(rks_benzene)
print(f'Total time taken for geometry optimization = {(datetime.now() - start_time).total_seconds()} seconds')
print(opt_benzene.tostring())
GPU Version
from datetime import datetime
import numpy as np
from pyscf import gto
from pyscf.geomopt.geometric_solver import optimize
from gpu4pyscf import dft
import warnings
warnings.filterwarnings("ignore")
mol = '''C -1.43530661 -0.38248086 0.00007236;
C -0.03390667 -0.38255097 0.00050137;
C 0.66685425 0.83106172 -0.00006381;
C -0.03378475 2.04474452 -0.00105877;
C -1.43518468 2.04481464 -0.00148574;
C -2.13594561 0.83120195 -0.00092082;
H -1.97035312 -1.30910108 0.00050287;
H 0.50104676 -1.30922473 0.00125995;
H 1.73685420 0.83100818 0.00026331;
H 0.50126177 2.97136475 -0.00149182;
H -1.97013811 2.97148840 -0.00224291;
H -3.20594556 0.83125549 -0.00124699
'''
mol_benzene = gto.M(
atom = mol,
basis = '6-31g'
)
rks_benzene = dft.RKS(mol_benzene)
rks_benzene.xc = 'wb97x_d'
rks_benzene.grids.level = 8
start_time = datetime.now()
rks_benzene.kernel()
print(f'Total time taken for single point energy = {(datetime.now() - start_time).total_seconds()} seconds')
start_time = datetime.now()
opt_benzene = optimize(rks_benzene)
print(f'Total time taken for geometry optimization = {(datetime.now() - start_time).total_seconds()} seconds')
print(opt_benzene.tostring())
I am new to both PySCF and GPU4pyscf. I am being able to run the single point calculations using both the GPU and CPU version on benzene and getting similar energy values. However, when I am trying to optimize the geometry, the GPU version seems to be failing. The energy seems to be decreasing without a bound. However, the CPU version is able to optimize the geometry perfectly.
CPU Version
GPU Version
benzene_cpu.log benzene_gpu.log