Files
MeanField_SERiF/docs/xml/namespaceserif_1_1utils_1_1parallel.xml

91 lines
5.3 KiB
XML
Raw Normal View History

<?xml version='1.0' encoding='UTF-8' standalone='no'?>
<doxygen xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="compound.xsd" version="1.13.2" xml:lang="en-US">
<compounddef id="namespaceserif_1_1utils_1_1parallel" kind="namespace" language="C++">
<compoundname>serif::utils::parallel</compoundname>
<innernamespace refid="namespaceserif_1_1utils_1_1parallel_1_1detail">serif::utils::parallel::detail</innernamespace>
<sectiondef kind="func">
<memberdef kind="function" id="namespaceserif_1_1utils_1_1parallel_1a845c655da35a46d0be87880f0e4fa2d9" prot="public" static="no" nodiscard="yes" const="no" explicit="no" inline="no" noexcept="yes" virt="non-virtual">
<type>int</type>
<definition>int serif::utils::parallel::worker_count</definition>
<argsstring>() noexcept</argsstring>
<name>worker_count</name>
<qualifiedname>serif::utils::parallel::worker_count</qualifiedname>
<briefdescription>
<para>Workers an element loop may use: OpenMP&apos;s thread limit (OMP_NUM_THREADS), or 1 without OpenMP or inside an enclosing parallel region. </para>
</briefdescription>
<detaileddescription>
</detaileddescription>
<inbodydescription>
</inbodydescription>
<location file="src/lib/serif/backend/mfem/shared/parallel.cpp" line="12" column="9" bodyfile="src/lib/serif/backend/mfem/shared/parallel.cpp" bodystart="12" bodyend="18" declfile="src/include/serif/backend/mfem/shared/parallel.hpp" declline="16" declcolumn="10"/>
</memberdef>
<memberdef kind="function" id="namespaceserif_1_1utils_1_1parallel_1a453320d288c9e42300bdc59ee8dccd2d" prot="public" static="no" const="no" explicit="no" inline="no" virt="non-virtual">
<templateparamlist>
<param>
<type>typename BodyT</type>
</param>
</templateparamlist>
<type>void</type>
<definition>void serif::utils::parallel::for_each_index</definition>
<argsstring>(const int count, BodyT &amp;&amp;body)</argsstring>
<name>for_each_index</name>
<qualifiedname>serif::utils::parallel::for_each_index</qualifiedname>
<param>
<type>const int</type>
<declname>count</declname>
</param>
<param>
<type>BodyT &amp;&amp;</type>
<declname>body</declname>
</param>
<briefdescription>
<para>Call body(index, worker) once for every index in [0, count), possibly concurrently. </para>
</briefdescription>
<detaileddescription>
<para><simplesect kind="note"><para>Results do not depend on the thread count when each call writes only index-owned results and scratch owned by its worker (0 &lt;= worker &lt; <ref refid="namespaceserif_1_1utils_1_1parallel_1a845c655da35a46d0be87880f0e4fa2d9" kindref="member">worker_count()</ref>). Every index runs; the exception of the lowest throwing index is then rethrown, which is the one a serial loop would have raised. </para>
</simplesect>
</para>
</detaileddescription>
<inbodydescription>
</inbodydescription>
<location file="src/include/serif/backend/mfem/shared/parallel.hpp" line="32" column="10" bodyfile="src/include/serif/backend/mfem/shared/parallel.hpp" bodystart="32" bodyend="49"/>
</memberdef>
<memberdef kind="function" id="namespaceserif_1_1utils_1_1parallel_1a8e0e78d02ab6c49ae588644e579bed79" prot="public" static="no" const="no" explicit="no" inline="no" virt="non-virtual">
<type>void</type>
<definition>void serif::utils::parallel::element_transformation</definition>
<argsstring>(const ::mfem::Mesh &amp;mesh, int element, ::mfem::IsoparametricTransformation &amp;transformation)</argsstring>
<name>element_transformation</name>
<qualifiedname>serif::utils::parallel::element_transformation</qualifiedname>
<param>
<type>const ::mfem::Mesh &amp;</type>
<declname>mesh</declname>
</param>
<param>
<type>int</type>
<declname>element</declname>
</param>
<param>
<type>::mfem::IsoparametricTransformation &amp;</type>
<declname>transformation</declname>
</param>
<briefdescription>
<para>Mesh::GetElementTransformation(element, transformation), safe in concurrent element loops. </para>
</briefdescription>
<detaileddescription>
<para><simplesect kind="note"><para>MFEM&apos;s version gathers curved-mesh nodes through FiniteElementSpace::GetElementVDofs(int, Array&amp;), which writes the space&apos;s shared mutable DofTransformation. This copy performs the same steps with a local DofTransformation, so the transformation and every value derived from it are identical. </para>
</simplesect>
</para>
</detaileddescription>
<inbodydescription>
</inbodydescription>
<location file="src/lib/serif/backend/mfem/shared/parallel.cpp" line="36" column="10" bodyfile="src/lib/serif/backend/mfem/shared/parallel.cpp" bodystart="36" bodyend="63" declfile="src/include/serif/backend/mfem/shared/parallel.hpp" declline="57" declcolumn="10"/>
</memberdef>
</sectiondef>
<briefdescription>
</briefdescription>
<detaileddescription>
</detaileddescription>
<location file="src/include/serif/backend/mfem/shared/parallel.hpp" line="11" column="1"/>
</compounddef>
</doxygen>