<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN"> <!--Converted with LaTeX2HTML 2008 (1.71) original version by: Nikos Drakos, CBLU, University of Leeds * revised and updated by: Marcus Hennecke, Ross Moore, Herb Swan * with significant contributions from: Jens Lippmann, Marek Rouchal, Martin Wilck and others --> <HTML> <HEAD> <TITLE>Programming model</TITLE> <META NAME="description" CONTENT="Programming model"> <META NAME="keywords" CONTENT="userhtml"> <META NAME="resource-type" CONTENT="document"> <META NAME="distribution" CONTENT="global"> <META NAME="Generator" CONTENT="LaTeX2HTML v2008"> <META HTTP-EQUIV="Content-Style-Type" CONTENT="text/css"> <LINK REL="STYLESHEET" HREF="userhtml.css"> <LINK REL="previous" HREF="node6.html"> <LINK REL="up" HREF="node3.html"> <LINK REL="next" HREF="node9.html"> </HEAD> <BODY > <!--Navigation Panel--> <A NAME="tex2html277" HREF="node9.html"> <IMG WIDTH="37" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="next" SRC="next.png"></A> <A NAME="tex2html273" HREF="node3.html"> <IMG WIDTH="26" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="up" SRC="up.png"></A> <A NAME="tex2html269" HREF="node7.html"> <IMG WIDTH="63" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="previous" SRC="prev.png"></A> <A NAME="tex2html275" HREF="node1.html"> <IMG WIDTH="65" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="contents" SRC="contents.png"></A> <BR> <B> Next:</B> <A NAME="tex2html278" HREF="node9.html">Data Structures and Classes</A> <B> Up:</B> <A NAME="tex2html274" HREF="node3.html">General overview</A> <B> Previous:</B> <A NAME="tex2html270" HREF="node7.html">User-defined index mappings</A> <B> <A NAME="tex2html276" HREF="node1.html">Contents</A></B> <BR> <BR> <!--End of Navigation Panel--> <H2><A NAME="SECTION00034000000000000000"> Programming model</A> </H2> <P> The PSBLAS librarary is based on the Single Program Multiple Data (SPMD) programming model: each process participating in the computation performs the same actions on a chunk of data. Parallelism is thus data-driven. <P> Because of this structure, many subroutines coordinate their action across the various processes, thus providing an implicit synchronization point, and therefore <I>must</I> be called simultaneously by all processes participating in the computation. This is certainly true for the data allocation and assembly routines, for all the computational routines and for some of the tools routines. <P> However there are many cases where no synchronization, and indeed no communication among processes, is implied; for instance, all the routines in sec. <A HREF="node9.html#sec:datastruct">3</A> are only acting on the local data structures, and thus may be called independently. The most important case is that of the coefficient insertion routines: since the number of coefficients in the sparse and dense matrices varies among the processors, and since the user is free to choose an arbitrary order in builiding the matrix entries, these routines cannot imply a synchronization. <P> Throughout this user's guide each subroutine will be clearly indicated as: <DL> <DT><STRONG>Synchronous:</STRONG></DT> <DD>must be called simultaneously by all the processes in the relevant communication context; </DD> <DT><STRONG>Asynchronous:</STRONG></DT> <DD>may be called in a totally independent manner. </DD> </DL> <P> <HR> <!--Navigation Panel--> <A NAME="tex2html277" HREF="node9.html"> <IMG WIDTH="37" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="next" SRC="next.png"></A> <A NAME="tex2html273" HREF="node3.html"> <IMG WIDTH="26" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="up" SRC="up.png"></A> <A NAME="tex2html269" HREF="node7.html"> <IMG WIDTH="63" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="previous" SRC="prev.png"></A> <A NAME="tex2html275" HREF="node1.html"> <IMG WIDTH="65" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="contents" SRC="contents.png"></A> <BR> <B> Next:</B> <A NAME="tex2html278" HREF="node9.html">Data Structures and Classes</A> <B> Up:</B> <A NAME="tex2html274" HREF="node3.html">General overview</A> <B> Previous:</B> <A NAME="tex2html270" HREF="node7.html">User-defined index mappings</A> <B> <A NAME="tex2html276" HREF="node1.html">Contents</A></B> <!--End of Navigation Panel--> </BODY> </HTML>