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 %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} \section{Semi-Stochastic Algorithm}
\label{sec: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 %c. Discussion of the algorithm's advantages and potential trade-offs
%d. Detailed pseudocode or algorithmic steps, if applicable %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} \section{Implementation Details}

View File

@ -2,7 +2,7 @@
* Stochastic formulation * 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} + 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} \epsilon_a - \epsilon_b - \epsilon_c}
\] \]
where the indices $i,j,k$ run over the $N_o$ occupied orbitals, and
If $E_{(T)}$ is computed as 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) 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 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 computing the statistical uniformly samples $E_{ijk}^{abc}$ and using the statistical average as
average.
\[
E_{(T)} = N \times \langle E_{ijk}^{abc} \rangle
\]
The stochastic calculation is unbiased, but the rate of convergence of The stochastic calculation is unbiased, but the rate of convergence of
the statistical error is be governed by the variance of the 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}} 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}} - \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}
\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 All the buckets don't have the same size: the number of triplets per