You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
I believe most of the cases of post-processing (e.g. QTAIM, Hirshfeld, electrostatics) doesn't require double precision (7 versus 15-16 decimal places) the way that Quantum chemistry codes require for the computation of the energy.
This would provide much greater speed-ups due to the less register usage per thread (max 255 32-bit registers), and higher FLOPS of 32- bit, e.g. TITAN V has 14.9 TFLOPS (FP32) versus 7.450 TFLOPS (FP64). I'll guess for the largest peptide (2390 basis-funcs, 9 amino-acids) this would bring atleast >2x speed-ups.
It would be tedious to implement but not hard at all, as you would use templates template<typename T> and use the correct function func<float>, func<double> according to the passed NumPy array in pymolecule.cu. It may be very difficult using Eigen to expose different functions, see https://github.com/pybind/pybind11/issues/3085 recommends using lambda functions or see https://github.com/pybind/pybind11/issues/1324.
Also see the paper
"P. Pokhilko, E. Epifanovsky, and A. I. Krylov, “Double precision is not needed
for many-body calculations: Emergent conventional wisdom,” J. Chem. Theory
Comput. 14, 4088–4096 (2018)"
The text was updated successfully, but these errors were encountered:
I believe most of the cases of post-processing (e.g. QTAIM, Hirshfeld, electrostatics) doesn't require double precision (7 versus 15-16 decimal places) the way that Quantum chemistry codes require for the computation of the energy.
This would provide much greater speed-ups due to the less register usage per thread (max 255 32-bit registers), and higher FLOPS of 32- bit, e.g. TITAN V has 14.9 TFLOPS (FP32) versus 7.450 TFLOPS (FP64). I'll guess for the largest peptide (2390 basis-funcs, 9 amino-acids) this would bring atleast >2x speed-ups.
It would be tedious to implement but not hard at all, as you would use templates
template<typename T>
and use the correct functionfunc<float>, func<double>
according to the passed NumPy array inpymolecule.cu
. It may be very difficult using Eigen to expose different functions, seehttps://github.com/pybind/pybind11/issues/3085
recommends using lambda functions or seehttps://github.com/pybind/pybind11/issues/1324
.Also see the paper
"P. Pokhilko, E. Epifanovsky, and A. I. Krylov, “Double precision is not needed
for many-body calculations: Emergent conventional wisdom,” J. Chem. Theory
Comput. 14, 4088–4096 (2018)"
The text was updated successfully, but these errors were encountered: