<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"> <!--Converted with LaTeX2HTML 2018 (Released Feb 1, 2018) --> <HTML> <HEAD> <TITLE>Basic Nomenclature</TITLE> <META NAME="description" CONTENT="Basic Nomenclature"> <META NAME="keywords" CONTENT="userhtml"> <META NAME="resource-type" CONTENT="document"> <META NAME="distribution" CONTENT="global"> <META NAME="Generator" CONTENT="LaTeX2HTML v2018"> <META HTTP-EQUIV="Content-Style-Type" CONTENT="text/css"> <LINK REL="STYLESHEET" HREF="userhtml.css"> <LINK REL="next" HREF="node5.html"> <LINK REL="previous" HREF="node3.html"> <LINK REL="up" HREF="node3.html"> <LINK REL="next" HREF="node5.html"> </HEAD> <BODY > <DIV CLASS="navigation"><!--Navigation Panel--> <A NAME="tex2html242" HREF="node5.html"> <IMG WIDTH="37" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="next" SRC="next.png"></A> <A NAME="tex2html238" HREF="node3.html"> <IMG WIDTH="26" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="up" SRC="up.png"></A> <A NAME="tex2html232" HREF="node3.html"> <IMG WIDTH="63" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="previous" SRC="prev.png"></A> <A NAME="tex2html240" HREF="node1.html"> <IMG WIDTH="65" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="contents" SRC="contents.png"></A> <BR> <B> Next:</B> <A NAME="tex2html243" HREF="node5.html">Library contents</A> <B> Up:</B> <A NAME="tex2html239" HREF="node3.html">General overview</A> <B> Previous:</B> <A NAME="tex2html233" HREF="node3.html">General overview</A> <B> <A NAME="tex2html241" HREF="node1.html">Contents</A></B> <BR> <BR></DIV> <!--End of Navigation Panel--> <H2><A NAME="SECTION00031000000000000000"> Basic Nomenclature</A> </H2> <P> Our computational model implies that the data allocation on the parallel distributed memory machine is guided by the structure of the physical model, and specifically by the discretization mesh of the PDE. <P> Each point of the discretization mesh will have (at least) one associated equation/variable, and therefore one index. We say that point <SPAN CLASS="MATH"><IMG WIDTH="9" HEIGHT="17" ALIGN="BOTTOM" BORDER="0" SRC="img4.png" ALT="$i$"></SPAN> <EM>depends</EM> on point <SPAN CLASS="MATH"><IMG WIDTH="12" HEIGHT="29" ALIGN="MIDDLE" BORDER="0" SRC="img5.png" ALT="$j$"></SPAN> if the equation for a variable associated with <SPAN CLASS="MATH"><IMG WIDTH="9" HEIGHT="17" ALIGN="BOTTOM" BORDER="0" SRC="img4.png" ALT="$i$"></SPAN> contains a term in <SPAN CLASS="MATH"><IMG WIDTH="12" HEIGHT="29" ALIGN="MIDDLE" BORDER="0" SRC="img5.png" ALT="$j$"></SPAN>, or equivalently if <SPAN CLASS="MATH"><IMG WIDTH="52" HEIGHT="30" ALIGN="MIDDLE" BORDER="0" SRC="img6.png" ALT="$a_{ij} \ne0$"></SPAN>. After the partition of the discretization mesh into <EM>sub-domains</EM> assigned to the parallel processes, we classify the points of a given sub-domain as following. <DL> <DT><STRONG>Internal.</STRONG></DT> <DD>An internal point of a given domain <EM>depends</EM> only on points of the same domain. If all points of a domain are assigned to one process, then a computational step (e.g., a matrix-vector product) of the equations associated with the internal points requires no data items from other domains and no communications. <P> </DD> <DT><STRONG>Boundary.</STRONG></DT> <DD>A point of a given domain is a boundary point if it <EM>depends</EM> on points belonging to other domains. <P> </DD> <DT><STRONG>Halo.</STRONG></DT> <DD>A halo point for a given domain is a point belonging to another domain such that there is a boundary point which <EM>depends</EM> on it. Whenever performing a computational step, such as a matrix-vector product, the values associated with halo points are requested from other domains. A boundary point of a given domain is usually a halo point for some other domain<A NAME="tex2html3" HREF="footnode.html#foot210"><SUP><SPAN CLASS="arabic">2</SPAN></SUP></A>; therefore the cardinality of the boundary points set denotes the amount of data sent to other domains. </DD> <DT><STRONG>Overlap.</STRONG></DT> <DD>An overlap point is a boundary point assigned to multiple domains. Any operation that involves an overlap point has to be replicated for each assignment. </DD> </DL> Overlap points do not usually exist in the basic data distributions; however they are a feature of Domain Decomposition Schwarz preconditioners which are the subject of related research work [<A HREF="node134.html#2007c">4</A>,<A HREF="node134.html#2007d">3</A>]. <P> We denote the sets of internal, boundary and halo points for a given subdomain by <SPAN CLASS="MATH"><IMG WIDTH="14" HEIGHT="14" ALIGN="BOTTOM" BORDER="0" SRC="img7.png" ALT="$\cal I$"></SPAN>, <SPAN CLASS="MATH"><IMG WIDTH="15" HEIGHT="15" ALIGN="BOTTOM" BORDER="0" SRC="img8.png" ALT="$\cal B$"></SPAN> and <SPAN CLASS="MATH"><IMG WIDTH="18" HEIGHT="15" ALIGN="BOTTOM" BORDER="0" SRC="img9.png" ALT="$\cal H$"></SPAN>. Each subdomain is assigned to one process; each process usually owns one subdomain, although the user may choose to assign more than one subdomain to a process. If each process <SPAN CLASS="MATH"><IMG WIDTH="9" HEIGHT="17" ALIGN="BOTTOM" BORDER="0" SRC="img4.png" ALT="$i$"></SPAN> owns one subdomain, the number of rows in the local sparse matrix is <!-- MATH $|{\cal I}_i| + |{\cal B}_i|$ --> <SPAN CLASS="MATH"><IMG WIDTH="70" HEIGHT="32" ALIGN="MIDDLE" BORDER="0" SRC="img10.png" ALT="$\vert{\cal I}_i\vert + \vert{\cal B}_i\vert$"></SPAN>, and the number of local columns (i.e. those for which there exists at least one non-zero entry in the local rows) is <!-- MATH $|{\cal I}_i| + |{\cal B}_i| +|{\cal H}_i|$ --> <SPAN CLASS="MATH"><IMG WIDTH="118" HEIGHT="32" ALIGN="MIDDLE" BORDER="0" SRC="img11.png" ALT="$\vert{\cal I}_i\vert + \vert{\cal B}_i\vert +\vert{\cal H}_i\vert$"></SPAN>. <P> <DIV ALIGN="CENTER"><A NAME="fig:points"></A><A NAME="274"></A> <TABLE> <CAPTION ALIGN="BOTTOM"><STRONG>Figure 2:</STRONG> Point classfication.</CAPTION> <TR><TD> <DIV ALIGN="CENTER"> <IMG WIDTH="318" HEIGHT="285" ALIGN="BOTTOM" BORDER="0" SRC="img13.png" ALT="\includegraphics[scale=0.65]{figures/points.eps}"> <!-- MATH $\rotatebox{-90}{\includegraphics[scale=0.65]{figures/points}}$ --> <IMG WIDTH="131" HEIGHT="2" ALIGN="BOTTOM" BORDER="0" SRC="img12.png" ALT="\rotatebox{-90}{\includegraphics[scale=0.65]{figures/points}}"> </DIV></TD></TR> </TABLE> </DIV> <P> This classification of mesh points guides the naming scheme that we adopted in the library internals and in the data structures. We explicitly note that “Halo” points are also often called “ghost” points in the literature. <P> <DIV CLASS="navigation"><HR> <!--Navigation Panel--> <A NAME="tex2html242" HREF="node5.html"> <IMG WIDTH="37" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="next" SRC="next.png"></A> <A NAME="tex2html238" HREF="node3.html"> <IMG WIDTH="26" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="up" SRC="up.png"></A> <A NAME="tex2html232" HREF="node3.html"> <IMG WIDTH="63" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="previous" SRC="prev.png"></A> <A NAME="tex2html240" HREF="node1.html"> <IMG WIDTH="65" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="contents" SRC="contents.png"></A> <BR> <B> Next:</B> <A NAME="tex2html243" HREF="node5.html">Library contents</A> <B> Up:</B> <A NAME="tex2html239" HREF="node3.html">General overview</A> <B> Previous:</B> <A NAME="tex2html233" HREF="node3.html">General overview</A> <B> <A NAME="tex2html241" HREF="node1.html">Contents</A></B> </DIV> <!--End of Navigation Panel--> </BODY> </HTML>