diff --git a/stochastic_triples.bib b/stochastic_triples.bib index 06d7405..da5b96d 100644 Binary files a/stochastic_triples.bib and b/stochastic_triples.bib differ diff --git a/stochastic_triples.tex b/stochastic_triples.tex index c82e07c..83a8f19 100644 --- a/stochastic_triples.tex +++ b/stochastic_triples.tex @@ -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} diff --git a/triples.org b/triples.org index 381e5df..e4773c1 100644 --- a/triples.org +++ b/triples.org @@ -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