References DGEMM

This commit is contained in:
Anthony Scemama 2023-05-18 21:00:09 +02:00
parent 4a7f2e462d
commit d62a0e45b4
3 changed files with 38 additions and 8 deletions

Binary file not shown.

View File

@ -130,6 +130,26 @@ In the following sections of this paper, we will provide a brief introduction to
%c. Challenges and limitations of traditional approaches
The perturbative triples correction,
\begin{equation}
E_{(T)} = \sum_{ijkabc} E_{ijk}^{abc}
\end{equation}
is a sum of $N=N_o^3 \times N_v^3$ terms,
\begin{equation}
E_{ijk}^{abc} = \frac{(4 W_{ijk}^{abc} +
W_{ijk}^{bca} + W_{ijk}^{cab})
(V_{ijk}^{abc} - V_{ijk}^{cba})}{\epsilon_i + \epsilon_j + \epsilon_k -
\epsilon_a - \epsilon_b - \epsilon_c}
\end{equation}
which depend on the canonical orbital energies $\epsilon$, and the tensors $W$ and $V$.
The indices $i,j,k$ and $a,b,c$ denote respectively occupied and virtual orbitals.
The bottleneck is the computation of $W$, which requires $\order{N_o^3 \times
N_v^4}$ operations. However, most of the operations involved in the computation of $W$
can be recast into matrix multiplications, which are among the most efficient
operations than can be executed on modern CPUs and
accelerators.\cite{ma_2011,haidar_2015,dinapoli_2014,springer_2018}
%=================================================================%
\section{Semi-Stochastic Algorithm}
\label{sec:algorithm}
@ -145,6 +165,12 @@ In the following sections of this paper, we will provide a brief introduction to
%c. Discussion of the algorithm's advantages and potential trade-offs
%d. Detailed pseudocode or algorithmic steps, if applicable
\subsection{Stochastic formulation}
\subsection{Test code}
\label{subsec:test_code}
% Include the test code here, if applicable.
%=================================================================%
\section{Implementation Details}

View File

@ -2,7 +2,7 @@
* Stochastic formulation
The perturbative correction is expressed as:
The perturbative correction reads:
\[
E_{(T)} = \sum_{ijkabc} E_{ijk}^{abc} = \sum_{ijkabc} \frac{(4 W_{ijk}^{abc} +
@ -12,14 +12,19 @@ E_{(T)} = \sum_{ijkabc} E_{ijk}^{abc} = \sum_{ijkabc} \frac{(4 W_{ijk}^{abc} +
\epsilon_a - \epsilon_b - \epsilon_c}
\]
If $E_{(T)}$ is computed as
where the indices $i,j,k$ run over the $N_o$ occupied orbitals, and
the indices $a,b,c$ run over the $N_v$ virtual orbitals.
If $E_{(T)}$ is re-expressed as
\[
E_{(T)} = \sum_{ijkabc} \frac{1}{N} \left( E_{ijk}^{abc} \times N \right)
\]
where $N$ is the total number of terms, it can be computed by drawing
uniformly samples $E_{ijk}^{abc}$ and computing the statistical
average.
where $N=N_o^3 N_v^3$ is the total number of terms, it can be computed by drawing
uniformly samples $E_{ijk}^{abc}$ and using the statistical average as
\[
E_{(T)} = N \times \langle E_{ijk}^{abc} \rangle
\]
The stochastic calculation is unbiased, but the rate of convergence of
the statistical error is be governed by the variance of the
@ -115,8 +120,7 @@ $E_B$ stochastically and we can separate the buckets into stochastic
\[
E_{(T)} = \sum_{B \in \mathcal{D}} E_B + \frac{1}{|\mathcal{S}|} \sum_{B \in \mathcal{S}}
\left \langle E^B_{abc} \times \frac{\epsilon_{\text{occ}} -
\epsilon_a - \epsilon_b - \epsilon_c}{\mathcal{N}} \right \rangle_{P(a,b,c), (a,b,c) \in B}
\left \langle E^B_{abc} \times \frac{- \epsilon_a - \epsilon_b - \epsilon_c}{\mathcal{N}} \right \rangle_{P(a,b,c), (a,b,c) \in B}
\]
All the buckets don't have the same size: the number of triplets per