Files
MeanField_SERiF/docs/latex/namespaceserif_1_1utils_1_1parallel.tex

57 lines
4.7 KiB
TeX
Raw Normal View History

\doxysection{serif\+::utils\+::parallel Namespace Reference}
\hypertarget{namespaceserif_1_1utils_1_1parallel}{}\label{namespaceserif_1_1utils_1_1parallel}\index{serif::utils::parallel@{serif::utils::parallel}}
\doxysubsubsection*{Namespaces}
\begin{DoxyCompactItemize}
\item
namespace \mbox{\hyperlink{namespaceserif_1_1utils_1_1parallel_1_1detail}{detail}}
\end{DoxyCompactItemize}
\doxysubsubsection*{Functions}
\begin{DoxyCompactItemize}
\item
int \mbox{\hyperlink{namespaceserif_1_1utils_1_1parallel_a845c655da35a46d0be87880f0e4fa2d9}{worker\+\_\+count}} () noexcept
\begin{DoxyCompactList}\small\item\em Workers an element loop may use\+: Open\+MP\textquotesingle{}s thread limit (OMP\+\_\+\+NUM\+\_\+\+THREADS), or 1 without Open\+MP or inside an enclosing parallel region. \end{DoxyCompactList}\item
{\footnotesize template$<$typename BodyT$>$ }\\void \mbox{\hyperlink{namespaceserif_1_1utils_1_1parallel_a453320d288c9e42300bdc59ee8dccd2d}{for\+\_\+each\+\_\+index}} (const int count, BodyT \&\&body)
\begin{DoxyCompactList}\small\item\em Call body(index, worker) once for every index in \mbox{[}0, count), possibly concurrently. \end{DoxyCompactList}\item
void \mbox{\hyperlink{namespaceserif_1_1utils_1_1parallel_a8e0e78d02ab6c49ae588644e579bed79}{element\+\_\+transformation}} (const \+::mfem\+::\+Mesh \&mesh, int element, \+::mfem\+::\+Isoparametric\+Transformation \&transformation)
\begin{DoxyCompactList}\small\item\em Mesh\+::\+Get\+Element\+Transformation(element, transformation), safe in concurrent element loops. \end{DoxyCompactList}\end{DoxyCompactItemize}
\doxysubsection{Function Documentation}
\Hypertarget{namespaceserif_1_1utils_1_1parallel_a8e0e78d02ab6c49ae588644e579bed79}\index{serif::utils::parallel@{serif::utils::parallel}!element\_transformation@{element\_transformation}}
\index{element\_transformation@{element\_transformation}!serif::utils::parallel@{serif::utils::parallel}}
\doxysubsubsection{\texorpdfstring{element\_transformation()}{element\_transformation()}}
{\footnotesize\ttfamily \label{namespaceserif_1_1utils_1_1parallel_a8e0e78d02ab6c49ae588644e579bed79}
void serif\+::utils\+::parallel\+::element\+\_\+transformation (\begin{DoxyParamCaption}\item[{const \+::mfem\+::\+Mesh \&}]{mesh}{, }\item[{int}]{element}{, }\item[{\+::mfem\+::\+Isoparametric\+Transformation \&}]{transformation}{}\end{DoxyParamCaption})}
Mesh\+::\+Get\+Element\+Transformation(element, transformation), safe in concurrent element loops.
\begin{DoxyNote}{Note}
MFEM\textquotesingle{}s version gathers curved-\/mesh nodes through Finite\+Element\+Space\+::\+Get\+Element\+VDofs(int, Array\&), which writes the space\textquotesingle{}s shared mutable Dof\+Transformation. This copy performs the same steps with a local Dof\+Transformation, so the transformation and every value derived from it are identical.
\end{DoxyNote}
\Hypertarget{namespaceserif_1_1utils_1_1parallel_a453320d288c9e42300bdc59ee8dccd2d}\index{serif::utils::parallel@{serif::utils::parallel}!for\_each\_index@{for\_each\_index}}
\index{for\_each\_index@{for\_each\_index}!serif::utils::parallel@{serif::utils::parallel}}
\doxysubsubsection{\texorpdfstring{for\_each\_index()}{for\_each\_index()}}
{\footnotesize\ttfamily \label{namespaceserif_1_1utils_1_1parallel_a453320d288c9e42300bdc59ee8dccd2d}
template$<$typename BodyT$>$ \\
void serif\+::utils\+::parallel\+::for\+\_\+each\+\_\+index (\begin{DoxyParamCaption}\item[{const int}]{count}{, }\item[{BodyT \&\&}]{body}{}\end{DoxyParamCaption})}
Call body(index, worker) once for every index in \mbox{[}0, count), possibly concurrently.
\begin{DoxyNote}{Note}
Results do not depend on the thread count when each call writes only index-\/owned results and scratch owned by its worker (0 \texorpdfstring{$<$}{<}= worker \texorpdfstring{$<$}{<} \doxylink{namespaceserif_1_1utils_1_1parallel_a845c655da35a46d0be87880f0e4fa2d9}{worker\+\_\+count()}). Every index runs; the exception of the lowest throwing index is then rethrown, which is the one a serial loop would have raised.
\end{DoxyNote}
\Hypertarget{namespaceserif_1_1utils_1_1parallel_a845c655da35a46d0be87880f0e4fa2d9}\index{serif::utils::parallel@{serif::utils::parallel}!worker\_count@{worker\_count}}
\index{worker\_count@{worker\_count}!serif::utils::parallel@{serif::utils::parallel}}
\doxysubsubsection{\texorpdfstring{worker\_count()}{worker\_count()}}
{\footnotesize\ttfamily \label{namespaceserif_1_1utils_1_1parallel_a845c655da35a46d0be87880f0e4fa2d9}
int serif\+::utils\+::parallel\+::worker\+\_\+count (\begin{DoxyParamCaption}{}{}\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [nodiscard]}, {\ttfamily [noexcept]}}
Workers an element loop may use\+: Open\+MP\textquotesingle{}s thread limit (OMP\+\_\+\+NUM\+\_\+\+THREADS), or 1 without Open\+MP or inside an enclosing parallel region.