# FNO approximation using single precision

Hi All
Is it possible for example if we run FNO_CCSD using single precision it may take more wall time than FNO_CCSD using double precision if we are stretching the geometries technically fno will also reduce the cost but i am not getting the reason behind it. just in case of FNO approximation only like if we use only CCSD method single precision it takes less time than double precision.

For all the jobs that I’ve run in single precision, single precision takes less time to run in comparison with the same job in double precision. FNO can bring additional speedup for T and Lambda amplitudes; however, it does an extra MO integral transformation.

@pavel I tried the below calculation thrice but getting suprising result
INPUT
\$molecule
0 1
H
F 1 3.2153205
\$end

\$rem
basis=cc-pVDZ
job_type=SP
method=CCSD
unrestricted=FALSE
N_FROZEN_CORE=0
CC_fno_thresh=9990 99.9%

Output
CCSD calculation: CPU 0.42 s wall 0.43 s

Total ccman2 time: CPU 0.87 s wall 0.88 s

``````         Orbital Energies (a.u.) and Symmetries
``````

Alpha MOs, Restricted
– Occupied –
-26.237 -1.432 -0.553 -0.553 -0.383
1 A1 2 A1 1 B1 1 B2 3 A1
– Virtual –
-0.195 0.530 1.332 1.332 1.333 1.513 1.513 1.546
4 A1 5 A1 2 B1 2 B2 6 A1 3 B1 3 B2 7 A1
1.874 4.067 4.070 4.070 4.081 4.081
8 A1 9 A1 4 B1 4 B2 1 A2 10 A1

FOR SINGLE PRECISION:
\$molecule
0 1
H
F 1 3.2153205
\$end

\$rem
basis=cc-pVDZ
job_type=SP
method=CCSD
unrestricted=FALSE
N_FROZEN_CORE=0
CC_single_prec=1
CC_fno_thresh=9990 99.9%

OUTPUT

CCSD calculation: CPU 0.49 s wall 0.50 s

Total ccman2 time: CPU 0.94 s wall 0.95 s

``````         Orbital Energies (a.u.) and Symmetries
``````

Alpha MOs, Restricted
– Occupied –
-26.237 -1.432 -0.553 -0.553 -0.383
1 A1 2 A1 1 B1 1 B2 3 A1
– Virtual –
-0.195 0.530 1.332 1.332 1.333 1.513 1.513 1.546
4 A1 5 A1 2 B1 2 B2 6 A1 3 B1 3 B2 7 A1
1.874 4.067 4.070 4.070 4.081 4.081
8 A1 9 A1 4 B1 4 B2 1 A2 10 A1

Beta MOs, Restricted

The single precision job does more memory allocations + conversions, adding a little extra time, which can become dominant for such tiny jobs. The real benefit of single precision is clear for jobs that spent most of time in tensor contractions.

Can we say that fno will reduces the virtual orbitals but the loss of precision could potentially affects the convergence of the ccsd iterations which might slow down the overall computation and also in my one of the calculation i was observing that in single precision there is 21 ccsd iterations and in double precision there is 20 ccsd iterations.

Ah, yes, too tight thresholds in single precision lead to non-converging iterations due to numerical noise. A rule of thumb: single precision gives approximately 7 decimals, so for a correlation energy of 1 a.u. the tightest energy threshold should be around 10^{-7}. In practice, 10^{-5} a.u. threshold by energy and 10^{-4} threshold by amplitudes work well in most cases even for large jobs.

But in the tiny example above the difference in the number of iterations is very small and the timings are likely dominated by other events, such as memory allocations, data movements, etc.

Thankyou for the suggestions