--- lam-7.1.2.orig/configure +++ lam-7.1.2/configure @@ -4460,7 +4460,7 @@ extern "C" { void exit(int); #endif -int main(int argc, char* argv) +int main(int argc, char** argv) { FILE *f=fopen("conftestval", "w"); #ifndef __STDC__ @@ -7894,7 +7894,7 @@ cat > conftest.cc < -int main(int argc, char* argv) { +int main(int argc, char** argv) { int *baz; unsigned int foo = 3; baz = new(std::nothrow) int; @@ -8006,7 +8006,7 @@ } int -main(int argc, char *argv) +main(int argc, char **argv) { foo var1(6); foo< foo > var2(var1); @@ -8680,7 +8680,7 @@ #include #include -int main(int argc, char* argv) { +int main(int argc, char** argv) { bool foo = (bool) 0; printf("so foo is used and the compiler wont complain: %d", (int) foo); return 0; @@ -8754,7 +8754,7 @@ #include #include -int main(int argc, char* argv) { +int main(int argc, char** argv) { int foo; foo = (int) true; foo = (int) false; @@ -22736,7 +22736,7 @@ #include #include int -main(int argc, char* argv) +main(int argc, char** argv) { int fd = 0; struct rlimit rlp; @@ -22823,7 +22823,7 @@ #include #endif int -main(int argc, char* argv) +main(int argc, char** argv) { int ret; fd_set fds; @@ -42465,7 +42465,7 @@ EOF cat > conftest.c < /dev/null 2>&1 --- lam-7.1.2.orig/romio/adio/ad_ufs/ad_ufs_wait.c +++ lam-7.1.2/romio/adio/ad_ufs/ad_ufs_wait.c @@ -107,7 +107,7 @@ /* DEC, SGI IRIX 5 and 6 */ if ((*request)->queued) { do { - err = aio_suspend((const aiocb_t **) &((*request)->handle), 1, 0); + err = aio_suspend((const struct aiocb **) &((*request)->handle), 1, 0); } while ((err == -1) && (errno == EINTR)); if (err != -1) { --- lam-7.1.2.orig/romio/adio/ad_nfs/ad_nfs_wait.c +++ lam-7.1.2/romio/adio/ad_nfs/ad_nfs_wait.c @@ -106,7 +106,7 @@ /* DEC, SGI IRIX 5 and 6 */ if ((*request)->queued) { do { - err = aio_suspend((const aiocb_t **) &((*request)->handle), 1, 0); + err = aio_suspend((const struct aiocb **) &((*request)->handle), 1, 0); } while ((err == -1) && (errno == EINTR)); if (err != -1) { --- lam-7.1.2.orig/romio/util/tarch +++ lam-7.1.2/romio/util/tarch @@ -94,6 +94,7 @@ next) FARCH=NeXT ; break ;; KSR1|KSR2) FARCH=ksr ; break ;; FreeBSD) FARCH=freebsd ; break ;; + GNU/kFreeBSD) FARCH=freebsd ; break ;; OpenBSD) FARCH=openbsd ; break ;; NetBSD) FARCH=netbsd ; break ;; i386) GARCH=ipsc2 ;; --- lam-7.1.2.orig/share/memory/Makefile.am +++ lam-7.1.2/share/memory/Makefile.am @@ -14,7 +14,7 @@ include $(top_srcdir)/config/Makefile.options -SUBDIRS = ptmalloc ptmalloc2 darwin7 +SUBDIRS = ptmalloc ptmalloc2 #darwin7 noinst_LTLIBRARIES = libmemory.la libmemory_la_SOURCES = memory_hook.c --- lam-7.1.2.orig/share/memory/Makefile.in +++ lam-7.1.2/share/memory/Makefile.in @@ -363,7 +363,7 @@ sysconfdir = @sysconfdir@ target_alias = @target_alias@ AUTOMAKE_OPTIONS = foreign dist-bzip2 -SUBDIRS = ptmalloc ptmalloc2 darwin7 +SUBDIRS = ptmalloc ptmalloc2 #darwin7 noinst_LTLIBRARIES = libmemory.la libmemory_la_SOURCES = memory_hook.c @LAM_WANT_DARWIN7MALLOC_TRUE@libmemory_la_LIBADD = \ --- lam-7.1.2.orig/share/libltdl/ltdl.c +++ lam-7.1.2/share/libltdl/ltdl.c @@ -2183,7 +2183,8 @@ static int try_dlopen LT_PARAMS((lt_dlhandle *handle, const char *filename)); static int tryall_dlopen LT_PARAMS((lt_dlhandle *handle, - const char *filename)); + const char *filename, + const char * useloader)); static int unload_deplibs LT_PARAMS((lt_dlhandle handle)); static int lt_argz_insert LT_PARAMS((char **pargz, size_t *pargz_len, @@ -2369,9 +2370,10 @@ } static int -tryall_dlopen (handle, filename) +tryall_dlopen (handle, filename, useloader) lt_dlhandle *handle; const char *filename; + const char *useloader; { lt_dlhandle cur; lt_dlloader *loader; @@ -2438,6 +2440,11 @@ while (loader) { + if (useloader && strcmp(loader->loader_name, useloader)) + { + loader = loader->next; + continue; + } lt_user_data data = loader->dlloader_data; cur->module = loader->module_open (data, filename); @@ -2507,7 +2514,7 @@ error += tryall_dlopen_module (handle, (const char *) 0, prefix, filename); } - else if (tryall_dlopen (handle, filename) != 0) + else if (tryall_dlopen (handle, filename, NULL) != 0) { ++error; } @@ -2528,7 +2535,7 @@ /* Try to open the old library first; if it was dlpreopened, we want the preopened version of it, even if a dlopenable module is available. */ - if (old_name && tryall_dlopen (handle, old_name) == 0) + if (old_name && tryall_dlopen (handle, old_name, "dlpreload") == 0) { return 0; } @@ -2792,7 +2799,7 @@ /* Try to dlopen the file, but do not continue searching in any case. */ - if (tryall_dlopen (handle, filename) != 0) + if (tryall_dlopen (handle, filename,NULL) != 0) *handle = 0; return 1; @@ -3081,7 +3088,7 @@ /* lt_dlclose()ing yourself is very bad! Disallow it. */ LT_DLSET_FLAG (*phandle, LT_DLRESIDENT_FLAG); - if (tryall_dlopen (&newhandle, 0) != 0) + if (tryall_dlopen (&newhandle, 0, NULL) != 0) { LT_DLFREE (*phandle); return 1; @@ -3203,7 +3210,7 @@ } #endif } - if (!file) + else { file = fopen (filename, LT_READTEXT_MODE); } @@ -3387,7 +3394,7 @@ #endif ))) { - if (tryall_dlopen (&newhandle, filename) != 0) + if (tryall_dlopen (&newhandle, filename, NULL) != 0) { newhandle = NULL; } --- lam-7.1.2.orig/debian/lam.updatelist +++ lam-7.1.2/debian/lam.updatelist @@ -0,0 +1,27 @@ +#!/bin/bash + +set -e + +IN=/etc/update-cluster/cluster.xml +OUT=/etc/lam/lam-bhost.def +EX=/usr/bin/update-cluster + +if ! [ -e $IN ] ; then + echo $IN does not exist + exit 1 +fi + +if ! [ -e $OUT ] ; then + echo $OUT does not exist + exit 1 +fi + +if ! [ -x $EX ] ; then + echo $EX does not exist as executable + exit 1 +fi + +$EX hostname <$IN >$OUT + +exit 0 + --- lam-7.1.2.orig/debian/compat +++ lam-7.1.2/debian/compat @@ -0,0 +1 @@ +4 --- lam-7.1.2.orig/debian/shlibs.local +++ lam-7.1.2/debian/shlibs.local @@ -0,0 +1,3 @@ +liblam 4 liblam4 +liblam++ 4 liblam4 +liblamio 4 liblam4 --- lam-7.1.2.orig/debian/lam-runtime.config +++ lam-7.1.2/debian/lam-runtime.config @@ -0,0 +1,12 @@ +#!/bin/sh + +#set -x + +. /usr/share/debconf/confmodule + +#db_input medium lam-runtime/lam3 +db_input medium lam-runtime/lam4 + +db_go + + --- lam-7.1.2.orig/debian/lam4-dev.preinst +++ lam-7.1.2/debian/lam4-dev.preinst @@ -0,0 +1,56 @@ +#! /bin/sh +# preinst script for #PACKAGE# +# +# see: dh_installdeb(1) + +set -e + +# summary of how this script can be called: +# * `install' +# * `install' +# * `upgrade' +# * `abort-upgrade' + +case "$1" in + install|upgrade) +# if [ "$1" = "upgrade" ] +# then +# start-stop-daemon --stop --quiet --oknodo \ +# --pidfile /var/run/#PACKAGE#.pid \ +# --exec /usr/sbin/#PACKAGE# 2>/dev/null || true +# fi + + if [ "$1" = "install" ] ; then + if [ -L /usr/lib/lam/lib ] ; then + rm /usr/lib/lam/lib; + mkdir /usr/lib/lam/lib; + fi + if [ -L /usr/include/lam/mpi2c++ ] ; then + rm /usr/include/lam/mpi2c++; + mkdir /usr/include/lam/mpi2c++; + fi + fi + + dpkg --assert-multi-conrep 2>/dev/null || { + echo "You must first upgrade dpkg to version >= 1.6.8!"; exit 1; + } + + ;; + + abort-upgrade) + ;; + + *) + echo "preinst called with unknown argument \`$1'" >&2 + exit 0 + ;; +esac + +# dh_installdeb will replace this with shell code automatically +# generated by other debhelper scripts. + +#DEBHELPER# + +exit 0 + + --- lam-7.1.2.orig/debian/lam4-dev.examples +++ lam-7.1.2/debian/lam4-dev.examples @@ -0,0 +1,5 @@ +debian/examples/configure.in +debian/examples/romio.test +debian/examples/main +debian/examples/config.status +debian/examples/config --- lam-7.1.2.orig/debian/lam-runtime.doc-base.user-guide +++ lam-7.1.2/debian/lam-runtime.doc-base.user-guide @@ -0,0 +1,11 @@ +Document: lam-user-guide +Title: Debian LAM Manual - user guide +Author: LAM team, llamas@mpi.nd.edu. +Abstract: This manual documents the LAM + Message Passing Interface (MPI) system + for parallel computing. +Section: Apps/Programming + +Format: PDF +Index: /usr/share/doc/lam-runtime/user.pdf.gz +Files: /usr/share/doc/lam-runtime/user.pdf.gz --- lam-7.1.2.orig/debian/mar +++ lam-7.1.2/debian/mar @@ -0,0 +1,4 @@ +#!/bin/bash + +cd $(basename $1) && ar x $1 + --- lam-7.1.2.orig/debian/lam-runtime.files +++ lam-7.1.2/debian/lam-runtime.files @@ -0,0 +1,47 @@ +etc/lam +usr/bin/lamclean +usr/bin/lamexec +usr/bin/lamgrow +usr/bin/laminfo +usr/bin/lamshrink +usr/bin/lamtrace +usr/bin/mpimsg +usr/bin/mpiexec.lam +usr/bin/mpirun.lam +usr/bin/mpitask +usr/bin/lamd +usr/bin/tping +usr/bin/hboot +usr/bin/lamboot +usr/bin/lamhalt +usr/bin/lamnodes +usr/bin/recon +usr/bin/tkill +usr/bin/lamwipe +usr/share/man/man1/hboot.1 +usr/share/man/man1/lamd.1 +usr/share/man/man1/lamhalt.1 +usr/share/man/man1/laminfo.1 +usr/share/man/man1/lamnodes.1 +usr/share/man/man1/lamboot.1 +usr/share/man/man1/lamclean.1 +usr/share/man/man1/lamexec.1 +usr/share/man/man1/lamgrow.1 +usr/share/man/man1/lamshrink.1 +usr/share/man/man1/lamtrace.1 +usr/share/man/man1/lamwipe.1 +usr/share/man/man1/mpimsg.1 +usr/share/man/man1/mpirun.lam.1 +usr/share/man/man1/mpiexec.lam.1 +usr/share/man/man1/mpitask.1 +usr/share/man/man1/recon.1 +usr/share/man/man1/tkill.1 +usr/share/man/man1/tping.1 +usr/share/man/man7/lamssi_boot.7 +usr/share/man/man7/lamssi.7 +usr/share/man/man7/lamssi_coll.7 +usr/share/man/man7/lamssi_cr.7 +usr/share/man/man7/lamssi_rpi.7 +usr/lib/lam/bin +usr/lib/lam/etc +usr/lib/update-cluster/lam.updatelist --- lam-7.1.2.orig/debian/shared_compile.patch +++ lam-7.1.2/debian/shared_compile.patch @@ -0,0 +1,27 @@ +Index: rpi_tcp.c +=================================================================== +RCS file: /afs/nd.edu/user1/lsc/CVSROOT/lam/trillium/share/rpi/tcp/rpi_tcp.c,v +retrieving revision 1.5 +retrieving revision 1.6 +diff -r1.5 -r1.6 +7c7 +< * $Id: rpi_tcp.c,v 1.5 2001/02/13 00:41:43 arodrig6 Exp $ +--- +> * $Id: rpi_tcp.c,v 1.6 2001/04/16 12:28:54 jsquyres Exp $ +12a13,25 +> +> #if !LAM_RPI_TCP +> +> /* If we're not compiling the TCP RPI (e.g., it's one of the others +> that is only linking in this RPI so that it can be used for +> off-node communication), then effectively ignore this module. */ +> +> int lam_rpi_tcp_c_bogus_module = 1; +> +> #else +> +> /* Otherwise, compile in the whole module. */ +> +1198a1212,1213 +> +> #endif /* LAM_RPI_TCP */ --- lam-7.1.2.orig/debian/lam4-dev.postinst +++ lam-7.1.2/debian/lam4-dev.postinst @@ -0,0 +1,23 @@ +#!/bin/sh + +set -e + +update-alternatives --install /usr/include/mpi mpi /usr/include/lam 30 \ + --slave /usr/lib/libmpi.so libmpi.so /usr/lib/liblam.so \ + --slave /usr/lib/libmpio.so libmpio.so /usr/lib/liblamio.so \ + --slave /usr/lib/libmpi++.so libmpi++.so /usr/lib/liblam++.so \ + --slave /usr/lib/libmpi.a libmpi.a /usr/lib/liblam.a \ + --slave /usr/lib/libmpio.a libmpio.a /usr/lib/liblamio.a \ + --slave /usr/lib/libmpi++.a libmpi++.a /usr/lib/liblam++.a \ + --slave /usr/bin/mpicc mpicc /usr/bin/mpicc.lam \ + --slave /usr/share/man/man1/mpicc.1.gz mpicc.1.gz /usr/share/man/man1/mpicc.lam.1.gz \ + --slave /usr/bin/mpif77 mpif77 /usr/bin/mpif77.lam \ + --slave /usr/share/man/man1/mpif77.1.gz mpif77.1.gz /usr/share/man/man1/mpif77.lam.1.gz \ + --slave /usr/bin/mpiCC mpiCC /usr/bin/mpic++.lam \ + --slave /usr/share/man/man1/mpiCC.1.gz mpiCC.1.gz /usr/share/man/man1/mpiCC.lam.1.gz \ + --slave /usr/bin/mpic++ mpic++ /usr/bin/mpic++.lam \ + --slave /usr/share/man/man1/mpic++.1.gz mpic++.1.gz /usr/share/man/man1/mpic++.lam.1.gz + +#DEBHELPER# + +exit 0 --- lam-7.1.2.orig/debian/rules +++ lam-7.1.2/debian/rules @@ -0,0 +1,521 @@ +#!/usr/bin/make -f +# Made with the aid of dh_make, by Craig Small +# Sample debian/rules that uses debhelper. GNU copyright 1997 by Joey Hess. +# This version is for a hypothetical package that builds an +# architecture-dependant package, as well as an architecture-independant +# package. + +SO=4 +MIN=0 +VER=$(SO).$(MIN) + +CC=cc +package=lam + +version=$(shell expr `pwd` : '.*-\([0-9.]*\)') +version_major=$(shell expr `pwd` : '.*-\([0-9]*\).[0-9.]*') + +# Uncomment this to turn on verbose mode. +#export DH_VERBOSE=1 +#export DH_COMPAT=2 + +TDIR:=$(shell pwd) + +MEXT=tmp +MDIR:=debian/$(MEXT) +LAMV:=usr/lib/lam +LAMD:=$(MDIR)/$(LAMV) +OLDIR=$(LAMD)/lib +OBDIR=$(LAMD)/bin +SHLDIR=$(subst $(MEXT),shared,$(OLDIR)) +SHBDIR=$(subst $(MEXT),shared,$(OBDIR)) +SHIDIR:=$(SHBDIR)/../include +STLDIR=$(subst $(MEXT),static,$(OLDIR)) +STBDIR=$(subst $(MEXT),static,$(OBDIR)) +LDIR:=$(MDIR)/usr/lib +BDIR:=$(MDIR)/usr/bin +WDIR:=tools/wrappers +MPROX:=$(MDIR)/usr/share/man/man3/MPI_Wtime.3 +MSRC:=debian/static/$(LAMV)/man/man3/MPI_Wtime.3 +mans:=lamhalt lamnodes +MMDIR:=debian/$(MEXT)/usr/share/man/man1 +MMAN:=$(addprefix $(MMDIR)/,$(addsuffix .1,$(mans))) +SUB:=$(shell find * -name config.sub |grep -v debian) +GUESS:=$(shell find * -name config.guess |grep -v debian) +#CONFIGURE:=$(shell find * -name configure) +DSUB:=$(addprefix debian/conf/,$(SUB)) +DGUESS:=$(addprefix debian/conf/,$(GUESS)) + +export DEB_HOST_GNU_TYPE ?= $(shell dpkg-architecture -qDEB_HOST_GNU_TYPE) +export DEB_BUILD_GNU_TYPE ?= $(shell dpkg-architecture -qDEB_BUILD_GNU_TYPE) +export DEB_HOST_GNU_SYSTEM ?= $(shell dpkg-architecture -qDEB_HOST_GNU_SYSTEM) + +ARCHT:=$(shell echo $(DEB_HOST_GNU_TYPE) | cut -f1 -d-) +OPTFLAGS:= +ifeq ($(ARCHT),m68k) +OPTFLAGS:=-O2 +endif + +dlibs:= lam lamf77mpi lammpi++ mpi lammpio +stlibs:=$(addprefix $(STLDIR)/lib,$(addsuffix .a,$(dlibs))) +shlibs:=$(addprefix $(SHLDIR)/lib,$(addsuffix .a,$(dlibs))) + +tlibs:=lam lamio lam++ +libs: $(addprefix $(LDIR)/lib,$(addsuffix .so,$(tlibs)) $(addsuffix .a,$(tlibs))) + +dbins:=lamclean lamexec lamgrow lamshrink lamtrace mpimsg mpirun mpiexec mpitask lamd tping \ + hboot lamboot laminfo lamhalt lamnodes recon tkill lamwipe mpicc mpif77 mpic++ +nbins:=lamclean lamexec lamgrow lamshrink lamtrace mpimsg mpirun.lam mpiexec.lam mpitask lamd tping \ + hboot lamboot laminfo lamhalt lamnodes recon tkill lamwipe mpicc.lam\ + mpif77.lam mpic++.lam + +tbins:=$(addprefix $(BDIR)/,$(nbins)) +shbins:=$(addprefix $(SHBDIR)/,$(dbins))) +bins: $(tbins) + +$(DSUB): + mkdir -p $(@D) + cp $(subst debian/conf/,,$@) $@ + +$(SUB): $(DSUB) + chmod +w $@ + cp /usr/share/misc/config.sub $@ + +$(DGUESS): + mkdir -p $(@D) + cp $(subst debian/conf/,,$@) $@ + +$(GUESS): $(DGUESS) + chmod +w $@ + cp /usr/share/misc/config.guess $@ + +#$(CONFIGURE): FORCE +# ! [ -r $(@D)/configure.in ] || touch $(@D)/configure.in +# sleep 2 +# ! [ -r $(@D)/aclocal.m4 ] || touch $(@D)/aclocal.m4 +# sleep 2 +# touch $@ + +FORCE: + +$(stlibs): $(SUB) $(GUESS) #$(CONFIGURE) + + -$(MAKE) clean + + CC="gcc" CXX="g++" F77="gfortran" FC="gfortran" \ + CFLAGS="$(OPTFLAGS)" CXXFLAGS="$(OPTFLAGS)" FFLAGS="$(OPTFLAGS)" \ + ./configure --prefix=/$(LAMV) \ + --build=$(DEB_BUILD_GNU_TYPE) \ + --host=$(DEB_HOST_GNU_TYPE) \ + --with-rsh=/usr/bin/rsh \ + --with-rpi=sysv + + awk '/LAM_HAVE_OPENPTY/ {gsub("1","0")} /LAM_HAVE_SYSV_PTYS/ {gsub("1","0")} {print}' \ + share/include/lam_config.h >tmp && mv tmp share/include/lam_config.h + + $(MAKE) + + $(MAKE) install DESTDIR=$(subst $(LAMV)/lib,,$(TDIR)/$(@D)) + + +$(MSRC) $(SHIDIR)/mpi.h $(shbins) $(shlibs): $(SUB) $(GUESS) #$(CONFIGURE) + + -$(MAKE) clean + + CC="gcc" CXX="g++" F77="gfortran" FC="gfortran" \ + CFLAGS="$(OPTFLAGS) -fPIC" CXXFLAGS="$(OPTFLAGS) -fPIC" FFLAGS="$(OPTFLAGS) -fPIC" \ + ./configure --prefix=/$(LAMV) \ + --build=$(DEB_BUILD_GNU_TYPE) \ + --host=$(DEB_HOST_GNU_TYPE) \ + --with-rsh=/usr/bin/rsh \ + --with-trillium \ + --with-rpi=sysv + + awk '/LAM_HAVE_OPENPTY/ {gsub("1","0")} /LAM_HAVE_SYSV_PTYS/ {gsub("1","0")} {print}' \ + share/include/lam_config.h >tmp && mv tmp share/include/lam_config.h + + $(MAKE) + + $(MAKE) install DESTDIR=$(subst $(LAMV)/bin,,$(subst $(LAMV)/lib,,$(TDIR)/$(@D))) + + +ERM:=pmpil_trace_f.o pdupfn_f.o mpietc.o + + + +$(LDIR)/liblam.so.$(VER): $(addprefix $(SHLDIR)/,liblamf77mpi.a libmpi.a liblam.a ) + mkdir tmp + chmod +x debian/mar + cd tmp && mkdir $(^F) && echo $(addprefix ../../,$^) | xargs -t -n 1 ../debian/mar + rm -f $(addprefix tmp/libmpi.a/,$(ERM)) + mkdir -p $(@D) + $(CC) -shared -Wl,-soname=$(@F:.$(VER)=.$(SO)) -o $@ tmp/*/*.o -lpthread -lutil -ldl + rm -rf tmp + +$(LDIR)/libplam.so.$(VER): $(addprefix $(SHLDIR)/,liblamf77mpi.a liblam.a ) + mkdir tmp + cd tmp && echo $(addprefix ../,$^) | xargs -t -n 1 ar x && rm -f $(ERM) + mkdir -p $(@D) + $(CC) -shared -Wl,-soname=$(@F:.$(VER)=.$(SO)) -o $@ tmp/*.o -lutil + rm -rf tmp + +$(LDIR)/liblamio.so.$(VER): $(SHLDIR)/liblammpio.a $(LDIR)/liblam.so + mkdir tmp + cd tmp && echo $(addprefix ../,$<) | xargs -t -n 1 ar x && rm -f $(ERM) + mkdir -p $(@D) +ifeq ($(DEB_HOST_GNU_SYSTEM),kfreebsd-gnu) +# aio is enable by default on GNU/kFreeBSD, because of UFS support + $(CC) -shared -Wl,-soname=$(@F:.$(VER)=.$(SO)) -o $@ tmp/*.o -L$(LDIR) -llam -lutil -lrt +else + $(CC) -shared -Wl,-soname=$(@F:.$(VER)=.$(SO)) -o $@ tmp/*.o -L$(LDIR) -llam -lutil +endif + rm -rf tmp + +$(LDIR)/liblam++.so.$(VER): $(SHLDIR)/liblammpi++.a $(LDIR)/liblam.so + mkdir tmp + cd tmp && echo $(addprefix ../,$<) | xargs -t -n 1 ar x && rm -f $(ERM) + mkdir -p $(@D) + g++ -shared -Wl,-soname=$(@F:.$(VER)=.$(SO)) -o $@ tmp/*.o -L$(LDIR) -llam -lutil + rm -rf tmp + +lib%.so.$(SO): lib%.so.$(VER) + ln -snf $($@ + chmod 0755 $@ + +$(BDIR)/hcp: $(SHBDIR)/hcp + mkdir -p $(@D) + install -m 755 $< $@ + +$(MPROX): $(MSRC) + mkdir -p $$(dirname $$(dirname $(@D))) + rm -rf $$(dirname $(@D)) + cp -af $$(dirname $(tmp && \ + mv tmp $(@D)/../man1/lamd.1 + for i in $$(find $$(dirname $(@D)) -type f) ; do \ + ( cat $$i | sed -e 's,\([^A-Z_a-z]\)wipe\([^A-Z_a-z]\),\1lamwipe\2,1' \ + -e 's,^wipe\([^A-Z_a-z]\),lamwipe\1,1' \ + -e 's,\([^A-Z_a-z]\)wipe$$,\1lamwipe,1' \ + -e 's,^wipe$$,lamwipe,1' > tmp && \ + ( ( diff -u $$i tmp && rm -f tmp ) || ( echo Modifiying $$i && mv tmp $$i ))) || exit -1;\ + done + +llibs:=lam mpi lamf77mpi +sollinks:=$(addprefix $(LAMD)/lib/lib,$(addsuffix .so,$(llibs))) +allinks:=$(addprefix $(LAMD)/lib/lib,$(addsuffix .a,$(llibs))) +lamlinks: $(addprefix $(LAMD)/lib/lib,$(addsuffix .so,$(dlibs)) $(addsuffix .a,$(dlibs))) + +$(sollinks): $(MDIR)/usr/lib/liblam.so + mkdir -p $(@D) + rm -rf $(@) + ln -snf ../../$(tmp && \ + mv tmp $(@D)/examples/romio/Makefile.am + mv $(@D)/examples $(@D)/main +# cp -a mpi2c++/contrib $(@D) +# for i in $(@D)/contrib/test_suite/Makefile \ +# $(@D)/contrib/examples/Makefile ; do \ +# touch $$i.am ; touch $$i.in ; touch $$i ; done +# mv $(@D)/contrib $(@D)/c++ + cp -a romio/test $(@D)/romio.test + rm -f debian/examples/romio.test/mpif.h + awk '{gsub("'$(TDIR)'","");gsub("/tools/hcc/","");gsub("/tools/hf77/","");\ + gsub("/share/include","/usr/lib/lam/include");\ + gsub("[^ ]*liblammpio.a","-llammpio");\ + gsub("[^ ]*libmpi.la","-lmpi");\ + gsub("-lam-building","");print}' $(@D)/romio.test/Makefile >tmp && \ + mv tmp $(@D)/romio.test/Makefile + ( awk '/^chmod/ {$$0="# " $$0} {print}' $< > $@ && \ + touch -r $< $@ ) || ( rm -f $@ && false ) + + +$(MDIR)/usr/lib/update-cluster/lam.updatelist: debian/lam.updatelist + mkdir -p $(@D) + install -m 755 $< $@ + +foo: + head -1l debian/changelog | cut -f2 -d\ | tr -d '()' | cut -f1 -d- + + +$(MMAN): $(MMDIR)/%.1 : $(SHBDIR)/% $(LDIR)/liblam.so + mkdir -p $(@D) + chmod +x debian/mm + LD_LIBRARY_PATH=$(LDIR) \ + VERSION=$$(head -1l debian/changelog | cut -f2 -d\ | tr -d '()' | cut -f1 -d-)\ + PNAME=$* MPATH=$($@ + +#$(MDIR)/usr/include/lam/mpi++.h +install: libs bins $(MPROX) links $(MDIR)/usr/include/lam/mpi.h \ + debian/examples/config.status lamlinks \ + $(MDIR)/usr/lib/update-cluster/lam.updatelist $(MMAN) + + rm -rf $(MDIR)/usr/lib/lam/bin/.libs + dh_movefiles + +build: $(stlibs) $(shlibs) + +clean: + dh_testdir + dh_testroot + rm -rf debian/examples + rm -f install-stamp + + -rm -rf debian/static debian/shared + rm -f romio/lib/LINUX/libmpio.a romio/lib/liblammpio.a \ + romio/test/error romio/test/status + -cd romio && $(MAKE) clean + find . -name "*.lo" -exec rm -f {} \; + rm -f romio/util/lam-configure-values share/rpi/usysv/Makefile + -$(MAKE) clean + rm -f share/rpi/myri/Makefile + rm -f share/rpi/sysv/Makefile + rm -f share/rpi/shmem/Makefile + rm -f share/rpi/via/Makefile + -cd debian/conf/ && find * -type f -exec mv {} ../../{} \; + rm -rf debian/conf + rm -f config/Makefile + for i in config.status config.cache config.log Makefile myapp patchlevel.h lam_config.h stamp-h1 stamp-h liblamrpishmem.la liblamrpisysv.la mpi2c++_config.h balky mini-balky hcp ; do \ + find -name $$i -exec rm -f {} \; ; \ + done + rm -f ./romio/test/mpif.h romio/util/romioinstall romio/include/mpio.h romio/include/mpiof.h romio/test/misc.c romio/test/large_file.c romio/test/runtests romio/test/fmisc.f romio/test/fcoll_test.f romio/test/pfcoll_test.f romio/test/fperf.f + for i in $$(find -name .deps -type d); do rm -rf $$i; done + rm -f config/lam-shell-setup.sh config/lam-shell-setup.csh config/lam_module.tcl + find -name libtool -exec rm -f {} \; + find -name "*-config.h" -exec rm -f {} \; + find -name "*-modules.h" -exec rm -f {} \; + rm -f romio/adio/include/romioconf.h \ + romio/config.command \ + share/ssi/rpi/base/lam-ssi-rpi-modules.h.struct \ + share/ssi/rpi/base/lam-ssi-rpi-modules.h.extern conftest_ssi_list.29858 \ + confdefs.h share/include/lam_build_info.h ./share/include/mpif.h + + find -type l -exec rm {} \; + find -name .lam_configure_results_cache -exec rm {} \; + rm -f share/libltdl/config.h + + dh_clean + +binary-arch: build install + dh_testdir -a + dh_testroot -a + dh_installdocs -a + dh_installexamples -a + dh_installchangelogs -a + dh_link -a + dh_strip -a + dh_compress -a + dh_fixperms -a + dh_installdeb -a + dh_shlibdeps -a -l `pwd`/debian/liblam$(SO)/usr/lib/ + cat debian/liblam$(SO).substvars | sed "s, *lam$(SO)[^,]*,,1" > tmp && mv tmp debian/lam$(SO).substvars + dh_gencontrol -a + dh_makeshlibs -a + dh_md5sums -a + dh_builddeb -a + +binary-indep: build install + dh_testdir -i + dh_testroot -i + dh_installdocs -i + dh_installchangelogs -i + dh_link -i + dh_strip -i + dh_compress -i + dh_fixperms -i + dh_installdeb -i + dh_shlibdeps -i -l `pwd`/debian/liblam$(SO)/usr/lib/ + dh_gencontrol -i + dh_makeshlibs -i + dh_md5sums -i + dh_builddeb -i + +source diff: + @echo >&2 'source and diff are obsolete - use dpkg-source -b'; false + +binary: binary-arch binary-indep +.PHONY: build clean binary-indep binary-arch binary +.PRECIOUS: $(addprefix $(LDIR)/lib,$(addsuffix .so.$(SO),$(tlibs))) --- lam-7.1.2.orig/debian/lam4-dev.links +++ lam-7.1.2/debian/lam4-dev.links @@ -0,0 +1,3 @@ +usr/bin/mpicc usr/bin/hcc +usr/bin/mpif77 usr/bin/hf77 +usr/bin/mpiCC usr/bin/hcp --- lam-7.1.2.orig/debian/liblam4.files +++ lam-7.1.2/debian/liblam4.files @@ -0,0 +1 @@ +usr/lib/*.so.* --- lam-7.1.2.orig/debian/lam-runtime.postinst +++ lam-7.1.2/debian/lam-runtime.postinst @@ -0,0 +1,13 @@ +#!/bin/sh + +set -e + +. /usr/share/debconf/confmodule + +update-alternatives --install /usr/bin/mpirun mpirun /usr/bin/mpirun.lam 30 \ + --slave /usr/share/man/man1/mpirun.1.gz mpirun.1.gz /usr/share/man/man1/mpirun.lam.1.gz \ + --slave /usr/bin/mpiexec mpiexec /usr/bin/mpiexec.lam \ + --slave /usr/share/man/man1/mpiexec.1.gz mpiexec.1.gz /usr/share/man/man1/mpiexec.lam.1.gz +#DEBHELPER# + +exit 0 --- lam-7.1.2.orig/debian/lam-runtime.doc-base.main +++ lam-7.1.2/debian/lam-runtime.doc-base.main @@ -0,0 +1,11 @@ +Document: lam +Title: Debian LAM Manual +Author: LAM team, llamas@mpi.nd.edu. +Abstract: This manual documents the LAM + Message Passing Interface (MPI) system + for parallel computing. +Section: Apps/Programming + +Format: HTML +Index: /usr/share/doc/lam-runtime/release.html +Files: /usr/share/doc/lam-runtime/release.html --- lam-7.1.2.orig/debian/lam61.nol.doc.ps +++ lam-7.1.2/debian/lam61.nol.doc.ps @@ -0,0 +1,21688 @@ +%!PS-Adobe-3.0 +%%BoundingBox: (atend) +%%Pages: (atend) +%%PageOrder: (atend) +%%DocumentFonts: (atend) +%%DocumentNeedsFonts: (atend) +%%DocumentSuppliedFonts: (atend) +%%Creator: Frame 5.5 +%%DocumentData: Clean7Bit +%%EndComments +%%BeginProlog +% +% Frame ps_prolog 5.5, for use with Adobe Unix Frame 5.5 products +% +% This ps_prolog file is Copyright (c) 1986-1996 Adobe Systems, Incoporated. +% All rights reserved. This ps_prolog file may be freely copied and +% distributed in conjunction with documents created using FrameMaker, +% FrameMaker+SGML, FrameReader, and FrameViewer as long as this +% copyright notice is preserved. +/FMDocSave save def +% +% FrameMaker users specify the proper paper size for each print job in the +% "Print" dialog's "Printer Paper Size" "Width" and "Height~ fields. If the +% printer that the PS file is sent to does not support the requested paper +% size, or if there is no paper tray of the proper size currently installed, +% then the job will not be printed. The following flag, if set to true, will +% cause the job to print on the default paper in such cases. +/FMAllowPaperSizeMismatch false def +% +% Frame products normally print colors as their true color on a color printer +% or as shades of gray, based on luminance, on a black-and white printer. The +% following flag, if set to true, forces all non-white colors to print as pure +% black. This has no effect on bitmap images. +/FMPrintAllColorsAsBlack false def +% +% Frame products can either set their own line screens or use a printer's +% default settings. Three flags below control this separately for no +% separations, spot separations and process separations. If a flag +% is true, then the default printer settings will not be changed. If it is +% false, Frame products will use their own settings from a table based on +% the printer's resolution. +/FMUseDefaultNoSeparationScreen true def +/FMUseDefaultSpotSeparationScreen true def +/FMUseDefaultProcessSeparationScreen false def +% +% For any given PostScript printer resolution, Frame products have two sets of +% screen angles and frequencies for printing process separations, which are +% recomended by Adobe. The following variable chooses the higher frequencies +% when set to true or the lower frequencies when set to false. This is only +% effective if the appropriate FMUseDefault...SeparationScreen flag is false. +/FMUseHighFrequencyScreens true def +% +% The following is a set of predefined optimal frequencies and angles for various +% common dpi settings. This is taken from "Advances in Color Separation Using +% PostScript Software Technology," from Adobe Systems (3/13/89 P.N. LPS 0043) +% and corrolated with information which is in various PPD (4.0) files. +% +% The "dpiranges" figure is the minimum dots per inch device resolution which +% can support this setting. The "low" and "high" values are controlled by the +% setting of the FMUseHighFrequencyScreens flag above. The "TDot" flags control +% the use of the "Yellow Triple Dot" feature whereby the frequency id divided by +% three, but the dot function is "trippled" giving a block of 3x3 dots per cell. +% +% PatFreq is a compromise pattern frequency for ps Level 2 printers which is close +% to the ideal WYSIWYG pattern frequency of 9 repetitions/inch but does not beat +% (too badly) against the screen frequencies of any separations for that DPI. +/dpiranges [ 2540 2400 1693 1270 1200 635 600 0 ] def +/CMLowFreqs [ 100.402 94.8683 89.2289 100.402 94.8683 66.9349 63.2456 47.4342 ] def +/YLowFreqs [ 95.25 90.0 84.65 95.25 90.0 70.5556 66.6667 50.0 ] def +/KLowFreqs [ 89.8026 84.8528 79.8088 89.8026 84.8528 74.8355 70.7107 53.033 ] def +/CLowAngles [ 71.5651 71.5651 71.5651 71.5651 71.5651 71.5651 71.5651 71.5651 ] def +/MLowAngles [ 18.4349 18.4349 18.4349 18.4349 18.4349 18.4349 18.4349 18.4349 ] def +/YLowTDot [ true true false true true false false false ] def +/CMHighFreqs [ 133.87 126.491 133.843 108.503 102.523 100.402 94.8683 63.2456 ] def +/YHighFreqs [ 127.0 120.0 126.975 115.455 109.091 95.25 90.0 60.0 ] def +/KHighFreqs [ 119.737 113.137 119.713 128.289 121.218 89.8026 84.8528 63.6395 ] def +/CHighAngles [ 71.5651 71.5651 71.5651 70.0169 70.0169 71.5651 71.5651 71.5651 ] def +/MHighAngles [ 18.4349 18.4349 18.4349 19.9831 19.9831 18.4349 18.4349 18.4349 ] def +/YHighTDot [ false false true false false true true false ] def +/PatFreq [ 10.5833 10.0 9.4055 10.5833 10.0 10.5833 10.0 9.375 ] def +% +% PostScript Level 2 printers contain an "Accurate Screens" feature which can +% improve process separation rendering at the expense of compute time. This +% flag is ignored by PostScript Level 1 printers. +/FMUseAcccurateScreens true def +% +% The following PostScript procedure defines the spot function that Frame +% products will use for process separations. You may un-comment-out one of +% the alternative functions below, or use your own. +% +% Dot function +/FMSpotFunction {abs exch abs 2 copy add 1 gt + {1 sub dup mul exch 1 sub dup mul add 1 sub } + {dup mul exch dup mul add 1 exch sub }ifelse } def +% +% Line function +% /FMSpotFunction { pop } def +% +% Elipse function +% /FMSpotFunction { dup 5 mul 8 div mul exch dup mul exch add +% sqrt 1 exch sub } def +% +% +/FMversion (5.5) def +/fMLevel1 /languagelevel where {pop languagelevel} {1} ifelse 2 lt def +/FMPColor + fMLevel1 { + false + /colorimage where {pop pop true} if + } { + true + } ifelse +def +/FrameDict 400 dict def +systemdict /errordict known not {/errordict 10 dict def + errordict /rangecheck {stop} put} if +% The readline in PS 23.0 doesn't recognize cr's as nl's on AppleTalk +FrameDict /tmprangecheck errordict /rangecheck get put +errordict /rangecheck {FrameDict /bug true put} put +FrameDict /bug false put +mark +% Some PS machines read past the CR, so keep the following 3 lines together! +currentfile 5 string readline +00 +0000000000 +cleartomark +errordict /rangecheck FrameDict /tmprangecheck get put +FrameDict /bug get { + /readline { + /gstring exch def + /gfile exch def + /gindex 0 def + { + gfile read pop + dup 10 eq {exit} if + dup 13 eq {exit} if + gstring exch gindex exch put + /gindex gindex 1 add def + } loop + pop + gstring 0 gindex getinterval true + } bind def + } if +/FMshowpage /showpage load def +/FMquit /quit load def +/FMFAILURE { + 2 copy exch = = flush + FMshowpage + /Helvetica findfont 12 scalefont setfont + 72 200 moveto show + 72 220 moveto show + FMshowpage + FMquit + } def +/FMVERSION { + FMversion ne { + (Adobe Frame product version does not match ps_prolog! Check installation;) + (also check ~/fminit and ./fminit for old versions) FMFAILURE + } if + } def +/fmConcatProcs + { + /proc2 exch cvlit def/proc1 exch cvlit def/newproc proc1 length proc2 length add array def + newproc 0 proc1 putinterval newproc proc1 length proc2 putinterval newproc cvx +}def +FrameDict begin [ + /ALDsave + /FMdicttop + /FMoptop + /FMpointsize + /FMsetsize + /FMsaveobject + /b + /bitmapsave + /blut + /bpside + /bs + /bstring + /bwidth + /c + /cf + /cs + /cynu + /depth + /edown + /fh + /fillvals + /fw + /fx + /fy + /g + /gfile + /gindex + /grnt + /gryt + /gstring + /height + /hh + /i + /im + /indx + /is + /k + /kk + /landscape + /lb + /len + /llx + /lly + /m + /magu + /manualfeed + /n + /offbits + /onbits + /organgle + /orgbangle + /orgbfreq + /orgbproc + /orgbxfer + /orgfreq + /orggangle + /orggfreq + /orggproc + /orggxfer + /orghalftone + /orgmatrix + /orgproc + /orgrangle + /orgrfreq + /orgrproc + /orgrxfer + /orgxfer + /pagesave + /paperheight + /papersizedict + /paperwidth + /pos + /pwid + /r + /rad + /redt + /sl + /str + /tran + /u + /urx + /ury + /val + /width + /width + /ws + /ww + /x + /x1 + /x2 + /xindex + /xpoint + /xscale + /xx + /y + /y1 + /y2 + /yelu + /yindex + /ypoint + /yscale + /yy + /tintGray +] { 0 def } forall +/FmBD {bind def} bind def +systemdict /pdfmark known systemdict /currentdistillerparams known and { + /fMAcrobat true def + + /FmPD /pdfmark load def + + + /FmPT /show load def + + + currentdistillerparams /CoreDistVersion get 2000 ge { + + + /FmPD2 /pdfmark load def + + + + + + /FmPA { mark exch /Dest exch 5 3 roll + /View [ /XYZ null 6 -2 roll FmDC exch pop null] /DEST FmPD + }FmBD + } { + + /FmPD2 /cleartomark load def + /FmPA {pop pop pop}FmBD + } ifelse +} { + + /fMAcrobat false def + /FmPD /cleartomark load def + /FmPD2 /cleartomark load def + /FmPT /pop load def + /FmPA {pop pop pop}FmBD +} ifelse +/FmDC { + transform fMDefaultMatrix defaultmatrix itransform cvi exch cvi exch +}FmBD +/FmBx { + dup 3 index lt {3 1 roll exch} if + 1 index 4 index lt {4 -1 roll 3 1 roll exch 4 1 roll} if +}FmBD +/FMnone 0 def +/FMcyan 1 def +/FMmagenta 2 def +/FMyellow 3 def +/FMblack 4 def +/FMcustom 5 def +/fMNegative false def +/FrameSepIs FMnone def +/FrameSepBlack 0 def +/FrameSepYellow 0 def +/FrameSepMagenta 0 def +/FrameSepCyan 0 def +/FrameSepRed 1 def +/FrameSepGreen 1 def +/FrameSepBlue 1 def +/FrameCurGray 1 def +/FrameCurPat null def +/FrameCurColors [ 0 0 0 1 0 0 0 1] def +/FrameColorEpsilon .001 def +/eqepsilon { + sub dup 0 lt {neg} if + FrameColorEpsilon le +} bind def +/FrameCmpColorsCMYK { + 2 copy 0 get exch 0 get eqepsilon { + 2 copy 1 get exch 1 get eqepsilon { + 2 copy 2 get exch 2 get eqepsilon { + 3 get exch 3 get eqepsilon + } {pop pop false} ifelse + }{pop pop false} ifelse + } {pop pop false} ifelse +} bind def +/FrameCmpColorsRGB { + 2 copy 4 get exch 0 get eqepsilon { + 2 copy 5 get exch 1 get eqepsilon { + 6 get exch 2 get eqepsilon + }{pop pop false} ifelse + } {pop pop false} ifelse +} bind def +/RGBtoCMYK { + 1 exch sub + 3 1 roll + 1 exch sub + 3 1 roll + 1 exch sub + 3 1 roll + 3 copy + 2 copy + le { pop } { exch pop } ifelse + 2 copy + le { pop } { exch pop } ifelse + dup dup dup + 6 1 roll + 4 1 roll + 7 1 roll + sub + 6 1 roll + sub + 5 1 roll + sub + 4 1 roll +} bind def +/CMYKtoRGB { + dup dup 4 -1 roll add + 5 1 roll 3 -1 roll add + 4 1 roll add + 1 exch sub dup 0 lt {pop 0} if 3 1 roll + 1 exch sub dup 0 lt {pop 0} if exch + 1 exch sub dup 0 lt {pop 0} if exch +} bind def +/FrameSepInit { + 1.0 RealSetgray +} bind def +/FrameSetSepColor { + /FrameSepBlue exch def + /FrameSepGreen exch def + /FrameSepRed exch def + /FrameSepBlack exch def + /FrameSepYellow exch def + /FrameSepMagenta exch def + /FrameSepCyan exch def + /FrameSepIs FMcustom def + setCurrentScreen +} bind def +/FrameSetCyan { + /FrameSepBlue 1.0 def + /FrameSepGreen 1.0 def + /FrameSepRed 0.0 def + /FrameSepBlack 0.0 def + /FrameSepYellow 0.0 def + /FrameSepMagenta 0.0 def + /FrameSepCyan 1.0 def + /FrameSepIs FMcyan def + setCurrentScreen +} bind def + +/FrameSetMagenta { + /FrameSepBlue 1.0 def + /FrameSepGreen 0.0 def + /FrameSepRed 1.0 def + /FrameSepBlack 0.0 def + /FrameSepYellow 0.0 def + /FrameSepMagenta 1.0 def + /FrameSepCyan 0.0 def + /FrameSepIs FMmagenta def + setCurrentScreen +} bind def + +/FrameSetYellow { + /FrameSepBlue 0.0 def + /FrameSepGreen 1.0 def + /FrameSepRed 1.0 def + /FrameSepBlack 0.0 def + /FrameSepYellow 1.0 def + /FrameSepMagenta 0.0 def + /FrameSepCyan 0.0 def + /FrameSepIs FMyellow def + setCurrentScreen +} bind def + +/FrameSetBlack { + /FrameSepBlue 0.0 def + /FrameSepGreen 0.0 def + /FrameSepRed 0.0 def + /FrameSepBlack 1.0 def + /FrameSepYellow 0.0 def + /FrameSepMagenta 0.0 def + /FrameSepCyan 0.0 def + /FrameSepIs FMblack def + setCurrentScreen +} bind def + +/FrameNoSep { + /FrameSepIs FMnone def + setCurrentScreen +} bind def +/FrameSetSepColors { + FrameDict begin + [ exch 1 add 1 roll ] + /FrameSepColors + exch def end + } bind def +/FrameColorInSepListCMYK { + FrameSepColors { + exch dup 3 -1 roll + FrameCmpColorsCMYK + { pop true exit } if + } forall + dup true ne {pop false} if + } bind def +/FrameColorInSepListRGB { + FrameSepColors { + exch dup 3 -1 roll + FrameCmpColorsRGB + { pop true exit } if + } forall + dup true ne {pop false} if + } bind def +/RealSetgray /setgray load def +/RealSetrgbcolor /setrgbcolor load def +/RealSethsbcolor /sethsbcolor load def +end +/setgray { + FrameDict begin + FrameSepIs FMnone eq + { RealSetgray } + { + FrameSepIs FMblack eq + { RealSetgray } + { FrameSepIs FMcustom eq + FrameSepRed 0 eq and + FrameSepGreen 0 eq and + FrameSepBlue 0 eq and { + RealSetgray + } { + 1 RealSetgray pop + } ifelse + } ifelse + } ifelse + end +} bind def +/setrgbcolor { + FrameDict begin + FrameSepIs FMnone eq + { RealSetrgbcolor } + { + 3 copy [ 4 1 roll ] + FrameColorInSepListRGB + { + FrameSepBlue eq exch + FrameSepGreen eq and exch + FrameSepRed eq and + { 0 } { 1 } ifelse + } + { + FMPColor { + RealSetrgbcolor + currentcmykcolor + } { + RGBtoCMYK + } ifelse + FrameSepIs FMblack eq + {1.0 exch sub 4 1 roll pop pop pop} { + FrameSepIs FMyellow eq + {pop 1.0 exch sub 3 1 roll pop pop} { + FrameSepIs FMmagenta eq + {pop pop 1.0 exch sub exch pop } { + FrameSepIs FMcyan eq + {pop pop pop 1.0 exch sub } + {pop pop pop pop 1} ifelse } ifelse } ifelse } ifelse + } ifelse + RealSetgray + } + ifelse + end +} bind def +/sethsbcolor { + FrameDict begin + FrameSepIs FMnone eq + { RealSethsbcolor } + { + RealSethsbcolor + currentrgbcolor + setrgbcolor + } + ifelse + end +} bind def +FrameDict begin +/setcmykcolor where { + pop /RealSetcmykcolor /setcmykcolor load def +} { + /RealSetcmykcolor { + 4 1 roll + 3 { 3 index add 0 max 1 min 1 exch sub 3 1 roll} repeat + RealSetrgbcolor pop + } bind def +} ifelse +userdict /setcmykcolor { + FrameDict begin + FrameSepIs FMnone eq + { RealSetcmykcolor } + { + 4 copy [ 5 1 roll ] + FrameColorInSepListCMYK + { + FrameSepBlack eq exch + FrameSepYellow eq and exch + FrameSepMagenta eq and exch + FrameSepCyan eq and + { 0 } { 1 } ifelse + } + { + FrameSepIs FMblack eq + {1.0 exch sub 4 1 roll pop pop pop} { + FrameSepIs FMyellow eq + {pop 1.0 exch sub 3 1 roll pop pop} { + FrameSepIs FMmagenta eq + {pop pop 1.0 exch sub exch pop } { + FrameSepIs FMcyan eq + {pop pop pop 1.0 exch sub } + {pop pop pop pop 1} ifelse } ifelse } ifelse } ifelse + } ifelse + RealSetgray + } + ifelse + end + } bind put +fMLevel1 { + + + + /patScreenDict 7 dict dup begin + <0f1e3c78f0e1c387> [ 45 { pop } {exch pop} .5 2 sqrt] FmBD + <0f87c3e1f0783c1e> [ 135 { pop } {exch pop} .5 2 sqrt] FmBD + [ 0 { pop } dup .5 2 ] FmBD + [ 90 { pop } dup .5 2 ] FmBD + <8142241818244281> [ 45 { 2 copy lt {exch} if pop} dup .75 2 sqrt] FmBD + <03060c183060c081> [ 45 { pop } {exch pop} .875 2 sqrt] FmBD + <8040201008040201> [ 135 { pop } {exch pop} .875 2 sqrt] FmBD + end def +} { + + /patProcDict 5 dict dup begin + <0f1e3c78f0e1c387> { 3 setlinewidth -1 -1 moveto 9 9 lineto stroke + 4 -4 moveto 12 4 lineto stroke + -4 4 moveto 4 12 lineto stroke} bind def + <0f87c3e1f0783c1e> { 3 setlinewidth -1 9 moveto 9 -1 lineto stroke + -4 4 moveto 4 -4 lineto stroke + 4 12 moveto 12 4 lineto stroke} bind def + <8142241818244281> { 1 setlinewidth -1 9 moveto 9 -1 lineto stroke + -1 -1 moveto 9 9 lineto stroke } bind def + <03060c183060c081> { 1 setlinewidth -1 -1 moveto 9 9 lineto stroke + 4 -4 moveto 12 4 lineto stroke + -4 4 moveto 4 12 lineto stroke} bind def + <8040201008040201> { 1 setlinewidth -1 9 moveto 9 -1 lineto stroke + -4 4 moveto 4 -4 lineto stroke + 4 12 moveto 12 4 lineto stroke} bind def + end def + /patDict 15 dict dup begin + /PatternType 1 def + /PaintType 2 def + /TilingType 3 def + /BBox [ 0 0 8 8 ] def + /XStep 8 def + /YStep 8 def + /PaintProc { + begin + patProcDict bstring known { + patProcDict bstring get exec + } { + 8 8 true [1 0 0 -1 0 8] bstring imagemask + } ifelse + end + } bind def + end def +} ifelse +/tintCMYK { + 1 tintGray sub FrameCurColors 0 4 getinterval aload pop + 4 index mul 5 1 roll + 3 index mul 5 1 roll + 2 index mul 5 1 roll + mul 4 1 roll +}bind def +/tintRGB { + 1 tintGray sub FrameCurColors 4 3 getinterval aload pop + 1 exch sub 3 index mul 1 exch sub 4 1 roll + 1 exch sub 2 index mul 1 exch sub 4 1 roll + 1 exch sub mul 1 exch sub 3 1 roll +}bind def +/combineColor { + /tintGray 1 1 FrameCurGray sub FrameCurColors 7 get mul sub def + FrameSepIs FMnone eq + { + graymode fMLevel1 or not { + + [/Pattern [/DeviceCMYK]] setcolorspace + tintCMYK FrameCurPat setcolor + } { + FrameCurColors 3 get 1.0 ge { + tintGray RealSetgray + } { + fMAcrobat not FMPColor graymode and and { + tintCMYK + RealSetcmykcolor + } { + tintRGB + RealSetrgbcolor + } ifelse + } ifelse + } ifelse + } { + FrameCurColors 0 4 getinterval aload + FrameColorInSepListCMYK { + FrameSepBlack eq exch + FrameSepYellow eq and exch + FrameSepMagenta eq and exch + FrameSepCyan eq and + FrameSepIs FMcustom eq and + { tintGray } { 1 } ifelse + } { + FrameSepIs FMblack eq + {tintGray 1.0 exch sub mul 1.0 exch sub 4 1 roll pop pop pop} { + FrameSepIs FMyellow eq + {pop tintGray 1.0 exch sub mul 1.0 exch sub 3 1 roll pop pop} { + FrameSepIs FMmagenta eq + {pop pop tintGray 1.0 exch sub mul 1.0 exch sub exch pop } { + FrameSepIs FMcyan eq + {pop pop pop tintGray 1.0 exch sub mul 1.0 exch sub } + {pop pop pop pop 1} ifelse } ifelse } ifelse } ifelse + } ifelse + graymode fMLevel1 or not { + + [/Pattern [/DeviceGray]] setcolorspace + FrameCurPat setcolor + } { + graymode not fMLevel1 and { + + dup 1 lt {pop FrameCurGray} if + } if + RealSetgray + } ifelse + } ifelse +} bind def +/savematrix { + orgmatrix currentmatrix pop + } bind def +/restorematrix { + orgmatrix setmatrix + } bind def +/fMDefaultMatrix matrix def +/fMatrix2 matrix def +/dpi 72 0 fMDefaultMatrix defaultmatrix dtransform + dup mul exch dup mul add sqrt def + +/freq dpi dup 72 div round dup 0 eq {pop 1} if 8 mul div def +/sangle 1 0 fMDefaultMatrix defaultmatrix dtransform exch atan def + sangle fMatrix2 rotate + fMDefaultMatrix defaultmatrix fMatrix2 concatmatrix + dup 0 get /sflipx exch def + 3 get /sflipy exch def +/screenIndex { + 0 1 dpiranges length 1 sub { dup dpiranges exch get 1 sub dpi le {exit} {pop} ifelse } for +} bind def +/getCyanScreen { + FMUseHighFrequencyScreens { CHighAngles CMHighFreqs} {CLowAngles CMLowFreqs} ifelse + screenIndex dup 3 1 roll get 3 1 roll get /FMSpotFunction load +} bind def +/getMagentaScreen { + FMUseHighFrequencyScreens { MHighAngles CMHighFreqs } {MLowAngles CMLowFreqs} ifelse + screenIndex dup 3 1 roll get 3 1 roll get /FMSpotFunction load +} bind def +/getYellowScreen { + FMUseHighFrequencyScreens { YHighTDot YHighFreqs} { YLowTDot YLowFreqs } ifelse + screenIndex dup 3 1 roll get 3 1 roll get { 3 div + {2 { 1 add 2 div 3 mul dup floor sub 2 mul 1 sub exch} repeat + FMSpotFunction } } {/FMSpotFunction load } ifelse + 0.0 exch +} bind def +/getBlackScreen { + FMUseHighFrequencyScreens { KHighFreqs } { KLowFreqs } ifelse + screenIndex get 45.0 /FMSpotFunction load +} bind def +/getSpotScreen { + getBlackScreen +} bind def +/getCompositeScreen { + getBlackScreen +} bind def +/FMSetScreen + fMLevel1 { /setscreen load + }{ { + 8 dict begin + /HalftoneType 1 def + /SpotFunction exch def + /Angle exch def + /Frequency exch def + /AccurateScreens FMUseAcccurateScreens def + currentdict end sethalftone + } bind } ifelse +def +/setDefaultScreen { + fMLevel1 { + FMPColor { + orgrxfer cvx orggxfer cvx orgbxfer cvx orgxfer cvx setcolortransfer + } + { + orgxfer cvx settransfer + } ifelse + orgfreq organgle orgproc cvx setscreen + } { + orghalftone sethalftone + }ifelse +} bind def +/setCurrentScreen { + FrameSepIs FMnone eq { + FMUseDefaultNoSeparationScreen { + setDefaultScreen + } { + getCompositeScreen FMSetScreen + } ifelse + } { + FrameSepIs FMcustom eq { + FMUseDefaultSpotSeparationScreen { + setDefaultScreen + } { + getSpotScreen FMSetScreen + } ifelse + } { + FMUseDefaultProcessSeparationScreen { + setDefaultScreen + } { + FrameSepIs FMcyan eq { + getCyanScreen FMSetScreen + } { + FrameSepIs FMmagenta eq { + getMagentaScreen FMSetScreen + } { + FrameSepIs FMyellow eq { + getYellowScreen FMSetScreen + } { + getBlackScreen FMSetScreen + } ifelse + } ifelse + } ifelse + } ifelse + } ifelse + } ifelse +} bind def +end + +/FMDOCUMENT { + array /FMfonts exch def + dup 1 gt {/#copies exch def} {pop} ifelse + FrameDict begin + 0 ne /manualfeed exch def + /paperheight exch def + /paperwidth exch def + 0 ne /fMNegative exch def + 0 ne /edown exch def + /yscale exch def + /xscale exch def + fMLevel1 { + manualfeed {setmanualfeed} if + /FMdicttop countdictstack 1 add def + /FMoptop count def + setpapername + manualfeed {true} {papersize} ifelse + {manualpapersize} {false} ifelse + {desperatepapersize} {false} ifelse + {papersizefailure} if + count -1 FMoptop {pop pop} for + countdictstack -1 FMdicttop {pop end} for + } + {2 dict + dup /PageSize [paperwidth paperheight] put + manualfeed {dup /ManualFeed manualfeed put} if + {setpagedevice} stopped {papersizefailure} if + } + ifelse + + fMLevel1 not { + /orghalftone currenthalftone def + }if + + FMPColor { + currentcolorscreen + cvlit /orgproc exch def + /organgle exch def + /orgfreq exch def + cvlit /orgbproc exch def + /orgbangle exch def + /orgbfreq exch def + cvlit /orggproc exch def + /orggangle exch def + /orggfreq exch def + cvlit /orgrproc exch def + /orgrangle exch def + /orgrfreq exch def + currentcolortransfer + fMNegative { + 1 1 4 { + pop { 1 exch sub } fmConcatProcs 4 1 roll + } for + 4 copy + setcolortransfer + } if + cvlit /orgxfer exch def + cvlit /orgbxfer exch def + cvlit /orggxfer exch def + cvlit /orgrxfer exch def + } { + currentscreen + cvlit /orgproc exch def + /organgle exch def + /orgfreq exch def + + currenttransfer + fMNegative { + { 1 exch sub } fmConcatProcs + dup settransfer + } if + cvlit /orgxfer exch def + } ifelse + end +} def +/FMENDDOCUMENT { + FMDocSave restore +} def +/FMBEGINPAGE { + FrameDict begin + /pagesave save def + 3.86 setmiterlimit + 0 0 moveto paperwidth 0 lineto paperwidth paperheight lineto + 0 paperheight lineto 0 0 lineto 1 setgray fill + /landscape exch 0 ne def + landscape { + 90 rotate 0 exch dup /pwid exch def neg translate pop + }{ + pop /pwid exch def + } ifelse + edown { [-1 0 0 1 pwid 0] concat } if + xscale yscale scale + /orgmatrix matrix def + gsave +} def +/FMENDPAGE { + grestore + pagesave restore + end + showpage + } def +/FMFONTDEFINE { + FrameDict begin + findfont + ReEncode + 1 index exch + definefont + FMfonts 3 1 roll + put + end + } def +/FMFILLS { + FrameDict begin dup + array /fillvals exch def + dict /patCache exch def + end + } def +/FMFILL { + FrameDict begin + fillvals 3 1 roll put + end + } def +/FMNORMALIZEGRAPHICS { + newpath + 1 setlinewidth + 0 setlinecap + 0 0 0 sethsbcolor + 0 setgray + } bind def +/FMBEGINEPSF { + end + /FMEPSF save def + /showpage {} def + FMNORMALIZEGRAPHICS + [/fy /fx /fh /fw /ury /urx /lly /llx] {exch def} forall + fx fw 2 div add fy fh 2 div add translate + rotate + fw 2 div neg fh 2 div neg translate + fw urx llx sub div fh ury lly sub div scale + llx neg lly neg translate + /FMdicttop countdictstack 1 add def + /FMoptop count def + } bind def +/FMENDEPSF { + count -1 FMoptop {pop pop} for + countdictstack -1 FMdicttop {pop end} for + FMEPSF restore + FrameDict begin + } bind def +FrameDict begin +/setmanualfeed { +%%BeginFeature: *ManualFeed True + statusdict /manualfeed true put +%%EndFeature + } bind def +/max {2 copy lt {exch} if pop} bind def +/min {2 copy gt {exch} if pop} bind def +/inch {72 mul} def +/pagedimen { + paperheight sub abs 16 lt exch + paperwidth sub abs 16 lt and + {/papername exch def} {pop} ifelse + } bind def +/setpapername { + /papersizedict 14 dict def + papersizedict begin + /papername /unknown def + /Letter 8.5 inch 11.0 inch pagedimen + /LetterSmall 7.68 inch 10.16 inch pagedimen + /Tabloid 11.0 inch 17.0 inch pagedimen + /Ledger 17.0 inch 11.0 inch pagedimen + /Legal 8.5 inch 14.0 inch pagedimen + /Statement 5.5 inch 8.5 inch pagedimen + /Executive 7.5 inch 10.0 inch pagedimen + /A3 11.69 inch 16.5 inch pagedimen + /A4 8.26 inch 11.69 inch pagedimen + /A4Small 7.47 inch 10.85 inch pagedimen + /B4 10.125 inch 14.33 inch pagedimen + /B5 7.16 inch 10.125 inch pagedimen + end + } bind def +/papersize { + papersizedict begin + /Letter {lettertray letter} def + /LetterSmall {lettertray lettersmall} def + /Tabloid {11x17tray 11x17} def + /Ledger {ledgertray ledger} def + /Legal {legaltray legal} def + /Statement {statementtray statement} def + /Executive {executivetray executive} def + /A3 {a3tray a3} def + /A4 {a4tray a4} def + /A4Small {a4tray a4small} def + /B4 {b4tray b4} def + /B5 {b5tray b5} def + /unknown {unknown} def + papersizedict dup papername known {papername} {/unknown} ifelse get + end + statusdict begin stopped end + } bind def +/manualpapersize { + papersizedict begin + /Letter {letter} def + /LetterSmall {lettersmall} def + /Tabloid {11x17} def + /Ledger {ledger} def + /Legal {legal} def + /Statement {statement} def + /Executive {executive} def + /A3 {a3} def + /A4 {a4} def + /A4Small {a4small} def + /B4 {b4} def + /B5 {b5} def + /unknown {unknown} def + papersizedict dup papername known {papername} {/unknown} ifelse get + end + stopped + } bind def +/desperatepapersize { + + mark + statusdict begin + /setpageparams where { + pop + paperwidth paperheight 0 1 + {setpageparams} stopped + } { + true + } ifelse + + { + + /setpagedevice where { + pop + 1 dict dup begin + /PageSize [ paperwidth paperheight ] def + end + {setpagedevice} stopped + } { + true + } ifelse + } { + false + } ifelse + end + {cleartomark true}{cleartomark false}ifelse +} bind def +/papersizefailure { + FMAllowPaperSizeMismatch not + { +(The requested paper size is not available in any currently-installed tray) +(Edit the PS file to "FMAllowPaperSizeMismatch true" to use default tray) + FMFAILURE } if + } def +/DiacriticEncoding [ +/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef +/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef +/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef +/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef +/.notdef /.notdef /.notdef /.notdef /space /exclam /quotedbl +/numbersign /dollar /percent /ampersand /quotesingle /parenleft +/parenright /asterisk /plus /comma /hyphen /period /slash /zero /one +/two /three /four /five /six /seven /eight /nine /colon /semicolon +/less /equal /greater /question /at /A /B /C /D /E /F /G /H /I /J /K +/L /M /N /O /P /Q /R /S /T /U /V /W /X /Y /Z /bracketleft /backslash +/bracketright /asciicircum /underscore /grave /a /b /c /d /e /f /g /h +/i /j /k /l /m /n /o /p /q /r /s /t /u /v /w /x /y /z /braceleft /bar +/braceright /asciitilde /.notdef /Adieresis /Aring /Ccedilla /Eacute +/Ntilde /Odieresis /Udieresis /aacute /agrave /acircumflex /adieresis +/atilde /aring /ccedilla /eacute /egrave /ecircumflex /edieresis +/iacute /igrave /icircumflex /idieresis /ntilde /oacute /ograve +/ocircumflex /odieresis /otilde /uacute /ugrave /ucircumflex +/udieresis /dagger /.notdef /cent /sterling /section /bullet +/paragraph /germandbls /registered /copyright /trademark /acute +/dieresis /.notdef /AE /Oslash /.notdef /.notdef /.notdef /.notdef +/yen /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef +/ordfeminine /ordmasculine /.notdef /ae /oslash /questiondown +/exclamdown /logicalnot /.notdef /florin /.notdef /.notdef +/guillemotleft /guillemotright /ellipsis /.notdef /Agrave /Atilde +/Otilde /OE /oe /endash /emdash /quotedblleft /quotedblright +/quoteleft /quoteright /.notdef /.notdef /ydieresis /Ydieresis +/fraction /currency /guilsinglleft /guilsinglright /fi /fl /daggerdbl +/periodcentered /quotesinglbase /quotedblbase /perthousand +/Acircumflex /Ecircumflex /Aacute /Edieresis /Egrave /Iacute +/Icircumflex /Idieresis /Igrave /Oacute /Ocircumflex /.notdef /Ograve +/Uacute /Ucircumflex /Ugrave /dotlessi /circumflex /tilde /macron +/breve /dotaccent /ring /cedilla /hungarumlaut /ogonek /caron +] def +/ReEncode { + dup + length + dict begin + { + 1 index /FID ne + {def} + {pop pop} ifelse + } forall + 0 eq {/Encoding DiacriticEncoding def} if + currentdict + end + } bind def +FMPColor + + { + /BEGINBITMAPCOLOR { + BITMAPCOLOR} def + /BEGINBITMAPCOLORc { + BITMAPCOLORc} def + /BEGINBITMAPTRUECOLOR { + BITMAPTRUECOLOR } def + /BEGINBITMAPTRUECOLORc { + BITMAPTRUECOLORc } def + /BEGINBITMAPCMYK { + BITMAPCMYK } def + /BEGINBITMAPCMYKc { + BITMAPCMYKc } def + } + + { + /BEGINBITMAPCOLOR { + BITMAPGRAY} def + /BEGINBITMAPCOLORc { + BITMAPGRAYc} def + /BEGINBITMAPTRUECOLOR { + BITMAPTRUEGRAY } def + /BEGINBITMAPTRUECOLORc { + BITMAPTRUEGRAYc } def + /BEGINBITMAPCMYK { + BITMAPCMYKGRAY } def + /BEGINBITMAPCMYKc { + BITMAPCMYKGRAYc } def + } +ifelse +/K { + FMPrintAllColorsAsBlack { + 8 1 roll + dup 1 eq 2 index 1 eq and 3 index 1 eq and not + {7 {pop} repeat 0 0 0 1 0 0 0} if + 8 -1 roll + } if + FrameCurColors astore + pop combineColor +} bind def +/graymode true def +fMLevel1 { + /fmGetFlip { + fMatrix2 exch get mul 0 lt { -1 } { 1 } ifelse + } FmBD +} if +/setPatternMode { + fMLevel1 { + 2 index patScreenDict exch known { + pop pop + patScreenDict exch get aload pop + freq + mul + 5 2 roll + fMatrix2 currentmatrix 1 get 0 ne { + 3 -1 roll 90 add 3 1 roll + sflipx 1 fmGetFlip sflipy 2 fmGetFlip neg mul + } { + sflipx 0 fmGetFlip sflipy 3 fmGetFlip mul + } ifelse + 0 lt {exch pop} {pop} ifelse + fMNegative { + {neg} fmConcatProcs + } if + bind + + + + systemdict /setscreen get exec + /FrameCurGray exch def + } { + /bwidth exch def + /bpside exch def + /bstring exch def + /onbits 0 def /offbits 0 def + freq sangle landscape {90 add} if + {/ypoint exch def + /xpoint exch def + /xindex xpoint 1 add 2 div bpside mul cvi def + /yindex ypoint 1 add 2 div bpside mul cvi def + bstring yindex bwidth mul xindex 8 idiv add get + 1 7 xindex 8 mod sub bitshift and 0 ne fMNegative {not} if + {/onbits onbits 1 add def 1} + {/offbits offbits 1 add def 0} + ifelse + } + setscreen + offbits offbits onbits add dup 0 ne {div} {pop pop .5} ifelse fMNegative {1.0 exch sub} if + /FrameCurGray exch def + } ifelse + } { + pop pop + dup patCache exch known { + patCache exch get + } { + dup + patDict /bstring 3 -1 roll put + patDict + 9 PatFreq screenIndex get div dup matrix scale + makepattern + dup + patCache 4 -1 roll 3 -1 roll put + } ifelse + /FrameCurGray 0 def + /FrameCurPat exch def + } ifelse + /graymode false def + combineColor +} bind def +/setGrayScaleMode { + graymode not { + /graymode true def + fMLevel1 { + setCurrentScreen + } if + } if + /FrameCurGray exch def + combineColor +} bind def +/normalize { + transform round exch round exch itransform + } bind def +/dnormalize { + dtransform round exch round exch idtransform + } bind def +/lnormalize { + 0 dtransform exch cvi 2 idiv 2 mul 1 add exch idtransform pop + } bind def +/H { + lnormalize setlinewidth + } bind def +/Z { + setlinecap + } bind def + +/PFill { + graymode fMLevel1 or not { + gsave 1 setgray eofill grestore + } if +} bind def +/PStroke { + graymode fMLevel1 or not { + gsave 1 setgray stroke grestore + } if + stroke +} bind def +/X { + fillvals exch get + dup type /stringtype eq + {8 1 setPatternMode} + {setGrayScaleMode} + ifelse + } bind def +/V { + PFill gsave eofill grestore + } bind def +/Vclip { + clip + } bind def +/Vstrk { + currentlinewidth exch setlinewidth PStroke setlinewidth + } bind def +/N { + PStroke + } bind def +/Nclip { + strokepath clip newpath + } bind def +/Nstrk { + currentlinewidth exch setlinewidth PStroke setlinewidth + } bind def +/M {newpath moveto} bind def +/E {lineto} bind def +/D {curveto} bind def +/O {closepath} bind def +/L { + /n exch def + newpath + normalize + moveto + 2 1 n {pop normalize lineto} for + } bind def +/Y { + L + closepath + } bind def +/R { + /y2 exch def + /x2 exch def + /y1 exch def + /x1 exch def + x1 y1 + x2 y1 + x2 y2 + x1 y2 + 4 Y + } bind def +/rarc + {rad + arcto + } bind def +/RR { + /rad exch def + normalize + /y2 exch def + /x2 exch def + normalize + /y1 exch def + /x1 exch def + mark + newpath + { + x1 y1 rad add moveto + x1 y2 x2 y2 rarc + x2 y2 x2 y1 rarc + x2 y1 x1 y1 rarc + x1 y1 x1 y2 rarc + closepath + } stopped {x1 y1 x2 y2 R} if + cleartomark + } bind def +/RRR { + /rad exch def + normalize /y4 exch def /x4 exch def + normalize /y3 exch def /x3 exch def + normalize /y2 exch def /x2 exch def + normalize /y1 exch def /x1 exch def + newpath + normalize moveto + mark + { + x2 y2 x3 y3 rarc + x3 y3 x4 y4 rarc + x4 y4 x1 y1 rarc + x1 y1 x2 y2 rarc + closepath + } stopped + {x1 y1 x2 y2 x3 y3 x4 y4 newpath moveto lineto lineto lineto closepath} if + cleartomark + } bind def +/C { + grestore + gsave + R + clip + setCurrentScreen +} bind def +/CP { + grestore + gsave + Y + clip + setCurrentScreen +} bind def +/F { + FMfonts exch get + [FMsetsize 0 0 FMpointsize 0 0] makefont + setfont + } bind def +/Q { + /FMpointsize exch def + /FMsetsize FMpointsize def + F + } bind def +/QQ { + /FMsetsize exch def + /FMpointsize exch def + F + } bind def +/T { + moveto show + } bind def +/RF { + rotate + 0 ne {-1 1 scale} if + } bind def +/TF { + gsave + moveto + RF + show + grestore + } bind def +/P { + moveto + 0 32 3 2 roll widthshow + } bind def +/PF { + gsave + moveto + RF + 0 32 3 2 roll widthshow + grestore + } bind def +/S { + moveto + 0 exch ashow + } bind def +/SF { + gsave + moveto + RF + 0 exch ashow + grestore + } bind def +/B { + moveto + 0 32 4 2 roll 0 exch awidthshow + } bind def +/BF { + gsave + moveto + RF + 0 32 4 2 roll 0 exch awidthshow + grestore + } bind def +/G { + gsave + newpath + normalize translate 0.0 0.0 moveto + dnormalize scale + 0.0 0.0 1.0 5 3 roll arc + closepath + PFill fill + grestore + } bind def +/Gstrk { + savematrix + newpath + 2 index 2 div add exch 3 index 2 div sub exch + normalize 2 index 2 div sub exch 3 index 2 div add exch + translate + scale + 0.0 0.0 1.0 5 3 roll arc + restorematrix + currentlinewidth exch setlinewidth PStroke setlinewidth + } bind def +/Gclip { + newpath + savematrix + normalize translate 0.0 0.0 moveto + dnormalize scale + 0.0 0.0 1.0 5 3 roll arc + closepath + clip newpath + restorematrix + } bind def +/GG { + gsave + newpath + normalize translate 0.0 0.0 moveto + rotate + dnormalize scale + 0.0 0.0 1.0 5 3 roll arc + closepath + PFill + fill + grestore + } bind def +/GGclip { + savematrix + newpath + normalize translate 0.0 0.0 moveto + rotate + dnormalize scale + 0.0 0.0 1.0 5 3 roll arc + closepath + clip newpath + restorematrix + } bind def +/GGstrk { + savematrix + newpath + normalize translate 0.0 0.0 moveto + rotate + dnormalize scale + 0.0 0.0 1.0 5 3 roll arc + closepath + restorematrix + currentlinewidth exch setlinewidth PStroke setlinewidth + } bind def +/A { + gsave + savematrix + newpath + 2 index 2 div add exch 3 index 2 div sub exch + normalize 2 index 2 div sub exch 3 index 2 div add exch + translate + scale + 2 copy 0.0 0.0 1.0 5 3 roll arc + round cvi 360 mod exch round cvi 360 mod eq {closepath} if + restorematrix + PStroke + grestore + } bind def +/Aclip { + newpath + savematrix + normalize translate 0.0 0.0 moveto + dnormalize scale + 0.0 0.0 1.0 5 3 roll arc + closepath + strokepath clip newpath + restorematrix +} bind def +/Astrk { + Gstrk +} bind def +/AA { + gsave + savematrix + newpath + + 3 index 2 div add exch 4 index 2 div sub exch + + normalize 3 index 2 div sub exch 4 index 2 div add exch + translate + rotate + scale + 0.0 0.0 1.0 5 3 roll arc + restorematrix + PStroke + grestore + } bind def +/AAclip { + savematrix + newpath + normalize translate 0.0 0.0 moveto + rotate + dnormalize scale + 0.0 0.0 1.0 5 3 roll arc + closepath + strokepath clip newpath + restorematrix +} bind def +/AAstrk { + GGstrk +} bind def +/BEGINPRINTCODE { + /FMdicttop countdictstack 1 add def + /FMoptop count 7 sub def + /FMsaveobject save def + userdict begin + /showpage {} def + FMNORMALIZEGRAPHICS + 3 index neg 3 index neg translate + } bind def +/ENDPRINTCODE { + count -1 FMoptop {pop pop} for + countdictstack -1 FMdicttop {pop end} for + FMsaveobject restore + } bind def +/gn { + 0 + { 46 mul + cf read pop + 32 sub + dup 46 lt {exit} if + 46 sub add + } loop + add + } bind def +/cfs { + /str sl string def + 0 1 sl 1 sub {str exch val put} for + str def + } bind def +/ic [ + 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0223 + 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0223 + 0 + {0 hx} {1 hx} {2 hx} {3 hx} {4 hx} {5 hx} {6 hx} {7 hx} {8 hx} {9 hx} + {10 hx} {11 hx} {12 hx} {13 hx} {14 hx} {15 hx} {16 hx} {17 hx} {18 hx} + {19 hx} {gn hx} {0} {1} {2} {3} {4} {5} {6} {7} {8} {9} {10} {11} {12} + {13} {14} {15} {16} {17} {18} {19} {gn} {0 wh} {1 wh} {2 wh} {3 wh} + {4 wh} {5 wh} {6 wh} {7 wh} {8 wh} {9 wh} {10 wh} {11 wh} {12 wh} + {13 wh} {14 wh} {gn wh} {0 bl} {1 bl} {2 bl} {3 bl} {4 bl} {5 bl} {6 bl} + {7 bl} {8 bl} {9 bl} {10 bl} {11 bl} {12 bl} {13 bl} {14 bl} {gn bl} + {0 fl} {1 fl} {2 fl} {3 fl} {4 fl} {5 fl} {6 fl} {7 fl} {8 fl} {9 fl} + {10 fl} {11 fl} {12 fl} {13 fl} {14 fl} {gn fl} + ] def +/ms { + /sl exch def + /val 255 def + /ws cfs + /im cfs + /val 0 def + /bs cfs + /cs cfs + } bind def +400 ms +/ip { + is + 0 + cf cs readline pop + { ic exch get exec + add + } forall + pop + + } bind def +/rip { + + + bis ris copy pop + is + 0 + cf cs readline pop + { ic exch get exec + add + } forall + pop pop + ris gis copy pop + dup is exch + + cf cs readline pop + { ic exch get exec + add + } forall + pop pop + gis bis copy pop + dup add is exch + + cf cs readline pop + { ic exch get exec + add + } forall + pop + + } bind def +/rip4 { + + + kis cis copy pop + is + 0 + cf cs readline pop + { ic exch get exec + add + } forall + pop pop + cis mis copy pop + dup is exch + + cf cs readline pop + { ic exch get exec + add + } forall + pop pop + mis yis copy pop + dup dup add is exch + + cf cs readline pop + { ic exch get exec + add + } forall + pop pop + yis kis copy pop + 3 mul is exch + + cf cs readline pop + { ic exch get exec + add + } forall + pop + + } bind def +/wh { + /len exch def + /pos exch def + ws 0 len getinterval im pos len getinterval copy pop + pos len + } bind def +/bl { + /len exch def + /pos exch def + bs 0 len getinterval im pos len getinterval copy pop + pos len + } bind def +/s1 1 string def +/fl { + /len exch def + /pos exch def + /val cf s1 readhexstring pop 0 get def + pos 1 pos len add 1 sub {im exch val put} for + pos len + } bind def +/hx { + 3 copy getinterval + cf exch readhexstring pop pop + } bind def +/wbytes { + dup dup + 8 gt { pop 8 idiv mul } + { 8 eq {pop} {1 eq {7 add 8 idiv} {3 add 4 idiv} ifelse} ifelse } ifelse + } bind def +/BEGINBITMAPBWc { + 1 {} COMMONBITMAPc + } bind def +/BEGINBITMAPGRAYc { + 8 {} COMMONBITMAPc + } bind def +/BEGINBITMAP2BITc { + 2 {} COMMONBITMAPc + } bind def +/COMMONBITMAPc { + + /cvtProc exch def + /depth exch def + gsave + + 3 index 2 div add exch + 4 index 2 div add exch + translate + rotate + 1 index 2 div neg + 1 index 2 div neg + translate + scale + /height exch def /width exch def + /lb width depth wbytes def + sl lb lt {lb ms} if + /bitmapsave save def + cvtProc + /is im 0 lb getinterval def + ws 0 lb getinterval is copy pop + /cf currentfile def + width height depth [width 0 0 height neg 0 height] + {ip} image + bitmapsave restore + grestore + } bind def +/BEGINBITMAPBW { + 1 {} COMMONBITMAP + } bind def +/BEGINBITMAPGRAY { + 8 {} COMMONBITMAP + } bind def +/BEGINBITMAP2BIT { + 2 {} COMMONBITMAP + } bind def +/COMMONBITMAP { + /cvtProc exch def + /depth exch def + gsave + + 3 index 2 div add exch + 4 index 2 div add exch + translate + rotate + 1 index 2 div neg + 1 index 2 div neg + translate + scale + /height exch def /width exch def + /bitmapsave save def + cvtProc + /is width depth wbytes string def + /cf currentfile def + width height depth [width 0 0 height neg 0 height] + {cf is readhexstring pop} image + bitmapsave restore + grestore + } bind def +/ngrayt 256 array def +/nredt 256 array def +/nbluet 256 array def +/ngreent 256 array def +fMLevel1 { +/colorsetup { + currentcolortransfer + /gryt exch def + /blut exch def + /grnt exch def + /redt exch def + 0 1 255 { + /indx exch def + /cynu 1 red indx get 255 div sub def + /magu 1 green indx get 255 div sub def + /yelu 1 blue indx get 255 div sub def + /kk cynu magu min yelu min def + /u kk currentundercolorremoval exec def +% /u 0 def + nredt indx 1 0 cynu u sub max sub redt exec put + ngreent indx 1 0 magu u sub max sub grnt exec put + nbluet indx 1 0 yelu u sub max sub blut exec put + ngrayt indx 1 kk currentblackgeneration exec sub gryt exec put + } for + {255 mul cvi nredt exch get} + {255 mul cvi ngreent exch get} + {255 mul cvi nbluet exch get} + {255 mul cvi ngrayt exch get} + setcolortransfer + {pop 0} setundercolorremoval + {} setblackgeneration + } bind def +} +{ +/colorSetup2 { + [ /Indexed /DeviceRGB 255 + {dup red exch get 255 div + exch dup green exch get 255 div + exch blue exch get 255 div} + ] setcolorspace +} bind def +} ifelse +/fakecolorsetup { + /tran 256 string def + 0 1 255 {/indx exch def + tran indx + red indx get 77 mul + green indx get 151 mul + blue indx get 28 mul + add add 256 idiv put} for + currenttransfer + {255 mul cvi tran exch get 255.0 div} + exch fmConcatProcs settransfer +} bind def +/BITMAPCOLOR { + /depth 8 def + gsave + + 3 index 2 div add exch + 4 index 2 div add exch + translate + rotate + 1 index 2 div neg + 1 index 2 div neg + translate + scale + /height exch def /width exch def + /bitmapsave save def + fMLevel1 { + colorsetup + /is width depth wbytes string def + /cf currentfile def + width height depth [width 0 0 height neg 0 height] + {cf is readhexstring pop} {is} {is} true 3 colorimage + } { + colorSetup2 + /is width depth wbytes string def + /cf currentfile def + 7 dict dup begin + /ImageType 1 def + /Width width def + /Height height def + /ImageMatrix [width 0 0 height neg 0 height] def + /DataSource {cf is readhexstring pop} bind def + /BitsPerComponent depth def + /Decode [0 255] def + end image + } ifelse + bitmapsave restore + grestore + } bind def +/BITMAPCOLORc { + /depth 8 def + gsave + + 3 index 2 div add exch + 4 index 2 div add exch + translate + rotate + 1 index 2 div neg + 1 index 2 div neg + translate + scale + /height exch def /width exch def + /lb width depth wbytes def + sl lb lt {lb ms} if + /bitmapsave save def + fMLevel1 { + colorsetup + /is im 0 lb getinterval def + ws 0 lb getinterval is copy pop + /cf currentfile def + width height depth [width 0 0 height neg 0 height] + {ip} {is} {is} true 3 colorimage + } { + colorSetup2 + /is im 0 lb getinterval def + ws 0 lb getinterval is copy pop + /cf currentfile def + 7 dict dup begin + /ImageType 1 def + /Width width def + /Height height def + /ImageMatrix [width 0 0 height neg 0 height] def + /DataSource {ip} bind def + /BitsPerComponent depth def + /Decode [0 255] def + end image + } ifelse + bitmapsave restore + grestore + } bind def +/BITMAPTRUECOLORc { + /depth 24 def + gsave + + 3 index 2 div add exch + 4 index 2 div add exch + translate + rotate + 1 index 2 div neg + 1 index 2 div neg + translate + scale + /height exch def /width exch def + /lb width depth wbytes def + sl lb lt {lb ms} if + /bitmapsave save def + + /is im 0 lb getinterval def + /ris im 0 width getinterval def + /gis im width width getinterval def + /bis im width 2 mul width getinterval def + + ws 0 lb getinterval is copy pop + /cf currentfile def + width height 8 [width 0 0 height neg 0 height] + {width rip pop ris} {gis} {bis} true 3 colorimage + bitmapsave restore + grestore + } bind def +/BITMAPCMYKc { + /depth 32 def + gsave + + 3 index 2 div add exch + 4 index 2 div add exch + translate + rotate + 1 index 2 div neg + 1 index 2 div neg + translate + scale + /height exch def /width exch def + /lb width depth wbytes def + sl lb lt {lb ms} if + /bitmapsave save def + + /is im 0 lb getinterval def + /cis im 0 width getinterval def + /mis im width width getinterval def + /yis im width 2 mul width getinterval def + /kis im width 3 mul width getinterval def + + ws 0 lb getinterval is copy pop + /cf currentfile def + width height 8 [width 0 0 height neg 0 height] + {width rip4 pop cis} {mis} {yis} {kis} true 4 colorimage + bitmapsave restore + grestore + } bind def +/BITMAPTRUECOLOR { + gsave + + 3 index 2 div add exch + 4 index 2 div add exch + translate + rotate + 1 index 2 div neg + 1 index 2 div neg + translate + scale + /height exch def /width exch def + /bitmapsave save def + /is width string def + /gis width string def + /bis width string def + /cf currentfile def + width height 8 [width 0 0 height neg 0 height] + { cf is readhexstring pop } + { cf gis readhexstring pop } + { cf bis readhexstring pop } + true 3 colorimage + bitmapsave restore + grestore + } bind def +/BITMAPCMYK { + gsave + + 3 index 2 div add exch + 4 index 2 div add exch + translate + rotate + 1 index 2 div neg + 1 index 2 div neg + translate + scale + /height exch def /width exch def + /bitmapsave save def + /is width string def + /mis width string def + /yis width string def + /kis width string def + /cf currentfile def + width height 8 [width 0 0 height neg 0 height] + { cf is readhexstring pop } + { cf mis readhexstring pop } + { cf yis readhexstring pop } + { cf kis readhexstring pop } + true 4 colorimage + bitmapsave restore + grestore + } bind def +/BITMAPTRUEGRAYc { + /depth 24 def + gsave + + 3 index 2 div add exch + 4 index 2 div add exch + translate + rotate + 1 index 2 div neg + 1 index 2 div neg + translate + scale + /height exch def /width exch def + /lb width depth wbytes def + sl lb lt {lb ms} if + /bitmapsave save def + + /is im 0 lb getinterval def + /ris im 0 width getinterval def + /gis im width width getinterval def + /bis im width 2 mul width getinterval def + ws 0 lb getinterval is copy pop + /cf currentfile def + width height 8 [width 0 0 height neg 0 height] + {width rip pop ris gis bis width gray} image + bitmapsave restore + grestore + } bind def +/BITMAPCMYKGRAYc { + /depth 32 def + gsave + + 3 index 2 div add exch + 4 index 2 div add exch + translate + rotate + 1 index 2 div neg + 1 index 2 div neg + translate + scale + /height exch def /width exch def + /lb width depth wbytes def + sl lb lt {lb ms} if + /bitmapsave save def + + /is im 0 lb getinterval def + /cis im 0 width getinterval def + /mis im width width getinterval def + /yis im width 2 mul width getinterval def + /kis im width 3 mul width getinterval def + ws 0 lb getinterval is copy pop + /cf currentfile def + width height 8 [width 0 0 height neg 0 height] + {width rip pop cis mis yis kis width cgray} image + bitmapsave restore + grestore + } bind def +/cgray { + /ww exch def + /k exch def + /y exch def + /m exch def + /c exch def + 0 1 ww 1 sub { /i exch def c i get m i get y i get k i get CMYKtoRGB + .144 mul 3 1 roll .587 mul 3 1 roll .299 mul add add + c i 3 -1 roll floor cvi put } for + c + } bind def +/gray { + /ww exch def + /b exch def + /g exch def + /r exch def + 0 1 ww 1 sub { /i exch def r i get .299 mul g i get .587 mul + b i get .114 mul add add r i 3 -1 roll floor cvi put } for + r + } bind def +/BITMAPTRUEGRAY { + gsave + + 3 index 2 div add exch + 4 index 2 div add exch + translate + rotate + 1 index 2 div neg + 1 index 2 div neg + translate + scale + /height exch def /width exch def + /bitmapsave save def + /is width string def + /gis width string def + /bis width string def + /cf currentfile def + width height 8 [width 0 0 height neg 0 height] + { cf is readhexstring pop + cf gis readhexstring pop + cf bis readhexstring pop width gray} image + bitmapsave restore + grestore + } bind def +/BITMAPCMYKGRAY { + gsave + + 3 index 2 div add exch + 4 index 2 div add exch + translate + rotate + 1 index 2 div neg + 1 index 2 div neg + translate + scale + /height exch def /width exch def + /bitmapsave save def + /is width string def + /yis width string def + /mis width string def + /kis width string def + /cf currentfile def + width height 8 [width 0 0 height neg 0 height] + { cf is readhexstring pop + cf mis readhexstring pop + cf yis readhexstring pop + cf kis readhexstring pop width cgray} image + bitmapsave restore + grestore + } bind def +/BITMAPGRAY { + 8 {fakecolorsetup} COMMONBITMAP + } bind def +/BITMAPGRAYc { + 8 {fakecolorsetup} COMMONBITMAPc + } bind def +/ENDBITMAP { + } bind def +end + /ALDmatrix matrix def ALDmatrix currentmatrix pop +/StartALD { + /ALDsave save def + savematrix + ALDmatrix setmatrix + } bind def +/InALD { + restorematrix + } bind def +/DoneALD { + ALDsave restore + } bind def +/I { setdash } bind def +/J { [] 0 setdash } bind def +%%EndProlog +%%BeginSetup +(5.5) FMVERSION +1 1 0 0 612 792 0 1 15 FMDOCUMENT +%%IncludeFont: Times-Roman +0 0 /Times-Roman FMFONTDEFINE +%%IncludeFont: Helvetica-Bold +1 0 /Helvetica-Bold FMFONTDEFINE +%%IncludeFont: Times-Italic +2 0 /Times-Italic FMFONTDEFINE +%%IncludeFont: Courier +3 0 /Courier FMFONTDEFINE +%%IncludeFont: Times-Bold +4 0 /Times-Bold FMFONTDEFINE +%%IncludeFont: Helvetica +5 0 /Helvetica FMFONTDEFINE +%%IncludeFont: Courier-Bold +6 0 /Courier-Bold FMFONTDEFINE +32 FMFILLS +0 0 FMFILL +1 0.1 FMFILL +2 0.3 FMFILL +3 0.5 FMFILL +4 0.7 FMFILL +5 0.9 FMFILL +6 0.97 FMFILL +7 1 FMFILL +8 <0f1e3c78f0e1c387> FMFILL +9 <0f87c3e1f0783c1e> FMFILL +10 FMFILL +11 FMFILL +12 <8142241818244281> FMFILL +13 <03060c183060c081> FMFILL +14 <8040201008040201> FMFILL +16 1 FMFILL +17 0.9 FMFILL +18 0.7 FMFILL +19 0.5 FMFILL +20 0.3 FMFILL +21 0.1 FMFILL +22 0.03 FMFILL +23 0 FMFILL +24 FMFILL +25 FMFILL +26 <3333333333333333> FMFILL +27 <0000ffff0000ffff> FMFILL +28 <7ebddbe7e7dbbd7e> FMFILL +29 FMFILL +30 <7fbfdfeff7fbfdfe> FMFILL +%%EndSetup +%%Page: "1" 1 +%%BeginPaperSize: Letter +%%EndPaperSize +612 792 0 FMBEGINPAGE +0 FrameSetSepColors +FrameNoSep +0 0 0 1 0 0 0 1 K +J +180 738 540 738 2 L +7 X +V +1 H +2 Z +0 X +N +180 90 540 126 R +7 X +V +0 12 Q +0 X +(Ohio Supercomputer Center) 180 118 T +180 262/G183341 FmPA +(The Ohio State University) 180 96 T +180 240/G183344 FmPA +180 54 540 54 2 L +7 X +V +0.5 H +0 X +N +180 32.69 540 42.7 R +7 X +V +1 F +0 X +(Ohio LAM 6.1) 180 34.7 T +(November 11, 1996) 431.28 34.7 T +180 179/G183337 FmPA +180 216 540 513 R +7 X +V +0 F +0 X +(LAM is a parallel processing en) 180 505 T +(vironment and de) 333.16 505 T +(v) 416.84 505 T +(elopment system for a) 422.66 505 T +180 649/G183329 FmPA +(netw) 180 491 T +(ork of independent computers. It features the) 203.21 491 T +2 F +(Messa) 421.82 491 T +(g) 452.36 491 T +(e-P) 458.24 491 T +(assing) 473.94 491 T +(Interface) 180 477 T +(\050MPI\051) 225.95 477 T +0 F +(programming) 257.9 477 T +(standard,) 325.86 477 T +(supported) 372.14 477 T +(by) 422.1 477 T +(e) 436.73 477 T +(xtensi) 441.88 477 T +(v) 470.25 477 T +(e) 476.07 477 T +(monitoring) 484.03 477 T +(and deb) 180 463 T +(ugging tools.) 217.42 463 T +1 F +(LAM / MPI Key Features:) 180 441 T +180 585/G95258 FmPA +0 F +(\245) 198 421 T +(full implementation of the MPI standard) 216 421 T +180 565/G95263 FmPA +(\245) 198 401 T +(e) 216 401 T +(xtensi) 221.15 401 T +(v) 249.52 401 T +(e monitoring and deb) 255.34 401 T +(ugging tools,) 357.42 401 T +180 545/G95264 FmPA +(runtime and post-mortem) 216 387 T +(\245) 198 367 T +(heterogeneous computer netw) 216 367 T +(orks) 359.84 367 T +180 511/G95265 FmPA +(\245) 198 347 T +(add and delete nodes) 216 347 T +180 491/G95266 FmPA +(\245) 198 327 T +(node f) 216 327 T +(ault detection and reco) 246.2 327 T +(v) 355 327 T +(ery) 360.82 327 T +180 471/G95267 FmPA +(\245) 198 307 T +(MPI e) 216 307 T +(xtensions and LAM programming supplements) 245.48 307 T +180 451/G95268 FmPA +(\245) 198 287 T +(direct communication between application processes) 216 287 T +180 431/G95269 FmPA +(\245) 198 267 T +(rob) 216 267 T +(ust MPI resource management) 231.76 267 T +180 411/G95270 FmPA +(\245) 198 247 T +(MPI-2 dynamic processes) 216 247 T +180 391/G97025 FmPA +(\245) 198 227 T +(multi-protocol communication \050shared memory and netw) 216 227 T +(ork\051) 490.85 227 T +180 371/G97026 FmPA +1 24 Q +(MPI Primer /) 180 687.02 T +(Developing With LAM) 180 662.98 T +[/Creator(FrameMaker xm5.5.3L15a)/DOCINFO FmPD2 +[/CropBox[0 0 FmDC 612 792 FmDC FmBx]/PAGE FmPD +[/Dest/P.1/DEST FmPD2 +[/Dest/F/DEST FmPD2 +FMENDPAGE +%%EndPage: "1" 1 +%%Page: "2" 2 +612 792 0 FMBEGINPAGE +0 FrameSetSepColors +FrameNoSep +0 0 0 1 0 0 0 1 K +180 745.99 540 756 R +7 X +V +1 12 Q +0 X +(2) 180 748 T +180 892/G183331 FmPA +180 32.69 540 42.7 R +7 X +V +0 X +( MPI Primer / Developing with LAM) 180 34.7 T +180 179/G183335 FmPA +180 738 540 738 2 L +7 X +V +1 H +2 Z +0 X +N +540 54 180 54 2 L +7 X +V +0 X +N +180 72 540 630 R +7 X +V +0 F +0 X +(This document is or) 180 622 T +(g) 275.45 622 T +(anized into four major chapters. It be) 281.39 622 T +(gins with a tuto-) 458.83 622 T +180 766/G183336 FmPA +(rial co) 180 608 T +(v) 210.14 608 T +(ering the simpler techniques of programming and operation. Ne) 215.96 608 T +(w) 521.28 608 T +(users should start with the tutorial. The second chapter is an MPI program-) 180 594 T +(ming primer emphasizing the commonly used routines. Non-standard) 180 580 T +(e) 180 566 T +(xtensions) 185.15 566 T +(to) 232.97 566 T +(MPI) 244.79 566 T +(and) 268.61 566 T +(additional) 288.43 566 T +(programming) 338.92 566 T +(capabilities) 406.73 566 T +(unique) 463.88 566 T +(to) 499.03 566 T +(LAM) 510.85 566 T +(are separated into a third chapter) 180 552 T +(. The last chapter is an operational refer-) 336.29 552 T +(ence.) 180 538 T +(It) 207.07 538 T +(describes) 216.49 538 T +(ho) 263.23 538 T +(w) 274.93 538 T +(to) 285.68 538 T +(con\336gure) 297.11 538 T +(and) 344.52 538 T +(start) 363.94 538 T +(a) 386.69 538 T +(LAM) 394.1 538 T +(multicomputer) 422.86 538 T +(,) 493.04 538 T +(and) 498.13 538 T +(ho) 517.55 538 T +(w) 529.25 538 T +(to monitor processes and messages.) 180 524 T +(This document is user oriented. It does not gi) 180 502 T +(v) 396.68 502 T +(e much insight into ho) 402.5 502 T +(w the) 509.54 502 T +180 646/G187062 FmPA +(system is implemented. It does not detail e) 180 488 T +(v) 384.36 488 T +(ery option and capability of) 390.18 488 T +(e) 180 474 T +(v) 185.03 474 T +(ery) 190.85 474 T +(command) 208.78 474 T +(and) 258.72 474 T +(routine.) 278.65 474 T +(An) 318.26 474 T +(e) 335.53 474 T +(xtensi) 340.68 474 T +(v) 369.05 474 T +(e) 374.87 474 T +(set) 382.8 474 T +(of) 398.74 474 T +(manual) 411.35 474 T +(pages) 449.29 474 T +(co) 479.22 474 T +(v) 490.37 474 T +(er) 496.19 474 T +(all) 508.12 474 T +(the) 522.73 474 T +(commands) 180 460 T +(and) 234.45 460 T +(internal) 254.22 460 T +(routines) 293.33 460 T +(in) 334.44 460 T +(great) 346.23 460 T +(detail) 372.67 460 T +(and) 401.78 460 T +(are) 421.56 460 T +(meant) 438.66 460 T +(to) 470.43 460 T +(supplement) 482.22 460 T +(this document.) 180 446 T +(The reader will note a hea) 180 424 T +(vy bias to) 304.72 424 T +(w) 351.08 424 T +(ards the C programming language,) 359.63 424 T +180 568/G95296 FmPA +(especially) 180 410 T +(in) 230.12 410 T +(the) 241.59 410 T +(code) 258.39 410 T +(samples.) 283.18 410 T +(There) 326.98 410 T +(is) 357.1 410 T +(no) 367.23 410 T +(F) 381.37 410 T +(ortran) 387.86 410 T +(v) 418.65 410 T +(ersion) 424.47 410 T +(of) 455.93 410 T +(this) 468.06 410 T +(document.) 487.54 410 T +(The) 180 396 T +(te) 201.1 396 T +(xt) 209.59 396 T +(attempts) 221.37 396 T +(to) 264.48 396 T +(be) 276.26 396 T +(language) 290.04 396 T +(insensiti) 335.8 396 T +(v) 375.51 396 T +(e) 381.33 396 T +(and) 389.1 396 T +(the) 408.87 396 T +(appendices) 425.98 396 T +(contain) 481.74 396 T +(F) 519.52 396 T +(or-) 526.01 396 T +(tran code samples and routine prototypes.) 180 382 T +(W) 180 360 T +(e ha) 190.37 360 T +(v) 209.78 360 T +(e k) 215.6 360 T +(ept the font and syntax con) 229.81 360 T +(v) 358.98 360 T +(entions to a minimum.) 364.8 360 T +180 504/G187063 FmPA +3 F +(code) 180 338 T +0 F +(This font is used for things you type on the k) 270 338 T +(e) 485.21 338 T +(yboard or) 490.36 338 T +180 482/G187064 FmPA +(see) 270 324 T +(printed) 288.16 324 T +(on) 324.99 324 T +(the) 339.83 324 T +(screen.) 357.32 324 T +(W) 393.81 324 T +(e) 404.17 324 T +(use) 412.34 324 T +(it) 431.17 324 T +(in) 440.68 324 T +(code) 452.85 324 T +(sections) 478.34 324 T +(and) 519.84 324 T +(tables b) 270 310 T +(ut not in the main te) 306.76 310 T +(xt.) 402.91 310 T +() 180 294 T +(This is a symbol used to abstract something you w) 270 294 T +(ould) 512.21 294 T +180 438/G187065 FmPA +(type. W) 270 280 T +(e use this con) 307.03 280 T +(v) 371.54 280 T +(ention in commands.) 377.36 280 T +2 F +(Section) 180 264 T +0 F +(Italics are used to cross reference another section in the) 270 264 T +180 408/G183250 FmPA +(document or another document. Italics are also used to) 270 250 T +(distinguish LAM commands.) 270 236 T +63 567 180 630 C +0 0 0 1 0 0 0 1 K +63 567 180 630 R +7 X +V +72 576 162 630 R +V +4 14 Q +0 X +(Ho) 93.71 620.67 T +(w to Use) 111.46 620.67 T +72 765/G183342 FmPA +(This) 135.54 604.67 T +(Document) 100.57 588.67 T +0 0 612 792 C +0 0 0 1 0 0 0 1 K +[/CropBox[0 0 FmDC 612 792 FmDC FmBx]/PAGE FmPD +[/Dest/P.2/DEST FmPD2 +[/Title(A)/Rect[171 63 549 639]/ARTICLE FmPD2 +FMENDPAGE +%%EndPage: "2" 2 +%%Page: "3" 3 +612 792 0 FMBEGINPAGE +0 FrameSetSepColors +FrameNoSep +0 0 0 1 0 0 0 1 K +180 745.99 540 756 R +7 X +V +1 12 Q +0 X +(3) 533.33 748 T +180 892/G183334 FmPA +180 32.69 540 42.7 R +7 X +V +0 X +( MPI Primer / Developing with LAM) 180 34.7 T +180 179/G183333 FmPA +180 738 540 738 2 L +7 X +V +1 H +2 Z +0 X +N +540 54 180 54 2 L +7 X +V +0 X +N +180 72 540 630 R +7 X +V +0 F +0 X +(How to Use This Document 2) 180 622 T +180 766/G95303 FmPA +(LAM Architecture 7) 180 604 T +180 748/G95304 FmPA +(Debugging 7) 198 586 T +180 730/G95305 FmPA +(MPI Implementation 8) 198 572 T +180 716/G95306 FmPA +(How to Get LAM 8) 198 558 T +180 702/G95852 FmPA +1 14 Q +(LAM / MPI Tutorial Introduction) 180 530.67 T +180 675/G95307 FmPA +0 12 Q +(Programming Tutorial 9) 180 504 T +180 648/G95308 FmPA +(The World of MPI 10) 198 486 T +180 630/G95309 FmPA +(Enter and Exit MPI 10) 198 472 T +180 616/G95310 FmPA +(Who Am I; Who Are They? 10) 198 458 T +180 602/G95311 FmPA +(Sending Messages 11) 198 444 T +180 588/G95312 FmPA +(Receiving Messages 11) 198 430 T +180 574/G95313 FmPA +(Master / Slave Example 12) 198 416 T +180 560/G95314 FmPA +(Operation Tutorial 15) 180 398 T +180 542/G95315 FmPA +(Compilation 15) 198 380 T +180 524/G95316 FmPA +(Starting LAM 15) 198 366 T +180 510/G95317 FmPA +(Executing Programs 16) 198 352 T +180 496/G95318 FmPA +(Monitoring 17) 198 338 T +180 482/G95319 FmPA +(Terminating the Session 18) 198 324 T +180 468/G95320 FmPA +1 14 Q +(MPI Programming Primer) 180 296.67 T +180 441/G95321 FmPA +0 12 Q +(Basic Concepts 19) 180 270 T +180 414/G95322 FmPA +(Initialization 21) 180 252 T +180 396/G95323 FmPA +(Basic Parallel Information 21) 198 234 T +180 378/G95324 FmPA +( Blocking Point-to-Point 22) 180 216 T +180 360/G95325 FmPA +(Send Modes 22) 198 198 T +180 342/G95326 FmPA +(Standard Send 22) 198 184 T +180 328/G95327 FmPA +(Receive 23) 198 170 T +180 314/G95328 FmPA +(Status Object 23) 198 156 T +180 300/G95329 FmPA +(Message Lengths 23) 198 142 T +180 286/G95330 FmPA +(Probe 24) 198 128 T +180 272/G95331 FmPA +(Nonblocking Point-to-Point 25) 180 110 T +180 254/G95332 FmPA +(Request Completion 26) 198 92 T +180 236/G95333 FmPA +(Probe 26) 198 78 T +180 222/G95334 FmPA +63 585 180 630 C +0 0 0 1 0 0 0 1 K +63 585 180 630 R +7 X +V +72 594 162 630 R +V +4 14 Q +0 X +(T) 113.9 620.67 T +(able of) 121.95 620.67 T +72 765/G183251 FmPA +(Contents) 108.34 604.67 T +0 0 612 792 C +0 0 0 1 0 0 0 1 K +[/CropBox[0 0 FmDC 612 792 FmDC FmBx]/PAGE FmPD +[/Dest/P.3/DEST FmPD2 +[/Title(A)/Rect[171 63 549 639]/ARTICLE FmPD2 +FMENDPAGE +%%EndPage: "3" 3 +%%Page: "4" 4 +612 792 0 FMBEGINPAGE +0 FrameSetSepColors +FrameNoSep +0 0 0 1 0 0 0 1 K +180 745.99 540 756 R +7 X +V +1 12 Q +0 X +(4) 180 748 T +180 32.69 540 42.7 R +7 X +V +0 X +( MPI Primer / Developing with LAM) 180 34.7 T +180 738 540 738 2 L +7 X +V +1 H +2 Z +0 X +N +540 54 180 54 2 L +7 X +V +0 X +N +180 72 540 630 R +7 X +V +0 F +0 X +(Message Datatypes 27) 180 622 T +180 766/G95335 FmPA +(Derived Datatypes 28) 198 604 T +180 748/G95336 FmPA +(Strided Vector Datatype 28) 198 590 T +180 734/G95337 FmPA +(Structure Datatype 29) 198 576 T +180 720/G95338 FmPA +(Packed Datatype 31) 198 562 T +180 706/G95339 FmPA +(Collective Message-Passing 34) 180 544 T +180 688/G95340 FmPA +(Broadcast 34) 198 526 T +180 670/G95341 FmPA +(Scatter 34) 198 512 T +180 656/G95342 FmPA +(Gather 35) 198 498 T +180 642/G95343 FmPA +(Reduce 35) 198 484 T +180 628/G95344 FmPA +(Creating Communicators 38) 180 466 T +180 610/G97404 FmPA +(Inter-communicators 40) 198 448 T +180 592/G97405 FmPA +(Fault Tolerance 40) 198 434 T +180 578/G97406 FmPA +(Process Topologies 41) 180 416 T +180 560/G97407 FmPA +(Process Creation 44) 180 398 T +180 542/G97408 FmPA +(Portable Resource Specification 45) 198 380 T +180 524/G97409 FmPA +(Miscellaneous MPI Features 46) 180 362 T +180 506/G97410 FmPA +(Error Handling 46) 198 344 T +180 488/G97411 FmPA +(Attribute Caching 47) 198 330 T +180 474/G97476 FmPA +(Timing 48) 198 316 T +180 460/G97412 FmPA +1 14 Q +(LAM / MPI Extensions) 180 288.67 T +180 433/G97413 FmPA +0 12 Q +(Remote File Access 50) 180 262 T +180 406/G97414 FmPA +(Portability and Standard I/O 51) 198 244 T +180 388/G97415 FmPA +(Collective I/O 52) 180 226 T +180 370/G97416 FmPA +(Cubix Example 54) 198 208 T +180 352/G97417 FmPA +(Signal Handling 55) 180 190 T +180 334/G97418 FmPA +(Signal Delivery 55) 198 172 T +180 316/G97419 FmPA +(Debugging and Tracing 56) 180 154 T +180 298/G97420 FmPA +1 14 Q +(LAM Command Reference) 180 126.67 T +180 271/G97421 FmPA +0 12 Q +(Getting Started 57) 180 100 T +180 244/G97422 FmPA +(Setting Up the UNIX Environment 57) 198 82 T +180 226/G97423 FmPA +[/CropBox[0 0 FmDC 612 792 FmDC FmBx]/PAGE FmPD +[/Dest/P.4/DEST FmPD2 +[/Title(A)/Rect[171 63 549 639]/ARTICLE FmPD2 +FMENDPAGE +%%EndPage: "4" 4 +%%Page: "5" 5 +612 792 0 FMBEGINPAGE +0 FrameSetSepColors +FrameNoSep +0 0 0 1 0 0 0 1 K +180 745.99 540 756 R +7 X +V +1 12 Q +0 X +(5) 533.33 748 T +180 32.69 540 42.7 R +7 X +V +0 X +( MPI Primer / Developing with LAM) 180 34.7 T +180 738 540 738 2 L +7 X +V +1 H +2 Z +0 X +N +540 54 180 54 2 L +7 X +V +0 X +N +180 63 540 630 R +7 X +V +0 F +0 X +(Node Mnemonics 57) 198 622 T +180 766/G97424 FmPA +(Process Identification 58) 198 608 T +180 752/G97425 FmPA +(On-line Help 58) 198 594 T +180 738/G97426 FmPA +(Compiling MPI Programs 60) 180 576 T +180 720/G97427 FmPA +(Starting LAM 61) 180 558 T +180 702/G97428 FmPA +(recon 61) 198 540 T +180 684/G97429 FmPA +(lamboot 61) 198 526 T +180 670/G97430 FmPA +(Fault Tolerance 61) 198 512 T +180 656/G97431 FmPA +(tping 62) 198 498 T +180 642/G97432 FmPA +(wipe 62) 198 484 T +180 628/G97433 FmPA +(Executing MPI Programs 63) 180 466 T +180 610/G97434 FmPA +(mpirun 63) 198 448 T +180 592/G97435 FmPA +(Application Schema 63) 198 434 T +180 578/G97436 FmPA +(Locating Executable Files 64) 198 420 T +180 564/G97437 FmPA +(Direct Communication 64) 198 406 T +180 550/G97438 FmPA +(Guaranteed Envelope Resources 64) 198 392 T +180 536/G97439 FmPA +(Trace Collection 65) 198 378 T +180 522/G97440 FmPA +(lamclean 65) 198 364 T +180 508/G97441 FmPA +(Process Monitoring and Control 66) 180 346 T +180 490/G97442 FmPA +(mpitask 66) 198 328 T +180 472/G97443 FmPA +(GPS Identification 68) 198 314 T +180 458/G97444 FmPA +(Communicator Monitoring 69) 198 300 T +180 444/G97445 FmPA +(Datatype Monitoring 69) 198 286 T +180 430/G97446 FmPA +(doom 70) 198 272 T +180 416/G97447 FmPA +(Message Monitoring and Control 71) 180 254 T +180 398/G97448 FmPA +(mpimsg 71) 198 236 T +180 380/G97449 FmPA +(Message Contents 72) 198 222 T +180 366/G97450 FmPA +(bfctl 72) 198 208 T +180 352/G97451 FmPA +(Collecting Trace Data 73) 180 190 T +180 334/G97452 FmPA +(lamtrace 73) 198 172 T +180 316/G97453 FmPA +(Adding and Deleting LAM Nodes 74) 180 154 T +180 298/G97454 FmPA +(lamgrow 74) 198 136 T +180 280/G97455 FmPA +(lamshrink 74) 198 122 T +180 266/G97456 FmPA +(File Monitoring and Control 75) 180 104 T +180 248/G97457 FmPA +(fstate 75) 198 86 T +180 230/G97458 FmPA +(fctl 75) 198 72 T +180 216/G97459 FmPA +[/CropBox[0 0 FmDC 612 792 FmDC FmBx]/PAGE FmPD +[/Dest/P.5/DEST FmPD2 +[/Title(A)/Rect[171 54 549 639]/ARTICLE FmPD2 +FMENDPAGE +%%EndPage: "5" 5 +%%Page: "6" 6 +612 792 0 FMBEGINPAGE +0 FrameSetSepColors +FrameNoSep +0 0 0 1 0 0 0 1 K +180 745.99 540 756 R +7 X +V +1 12 Q +0 X +(6) 180 748 T +180 32.69 540 42.7 R +7 X +V +0 X +( MPI Primer / Developing with LAM) 180 34.7 T +180 738 540 738 2 L +7 X +V +1 H +2 Z +0 X +N +540 54 180 54 2 L +7 X +V +0 X +N +180 72 540 630 R +7 X +V +0 F +0 X +(Writing a LAM Boot Schema 76) 180 622 T +180 766/G97460 FmPA +(Host File Syntax 76) 198 604 T +180 748/G97461 FmPA +(Low Level LAM Start-up 77) 180 586 T +180 730/G97462 FmPA +(Process Schema 77) 198 568 T +180 712/G97463 FmPA +(hboot 77) 198 554 T +180 698/G97464 FmPA +(Appendix A: Fortran Bindings 79) 180 536 T +180 680/G97465 FmPA +(Appendix B: Fortran Example Program 85) 180 518 T +180 662/G95407 FmPA +[/CropBox[0 0 FmDC 612 792 FmDC FmBx]/PAGE FmPD +[/Dest/P.6/DEST FmPD2 +[/Title(A)/Rect[171 63 549 639]/ARTICLE FmPD2 +FMENDPAGE +%%EndPage: "6" 6 +%%Page: "7" 7 +612 792 0 FMBEGINPAGE +0 FrameSetSepColors +FrameNoSep +0 0 0 1 0 0 0 1 K +180 745.99 540 756 R +7 X +V +1 12 Q +0 X +(7) 533.33 748 T +180 32.69 540 42.7 R +7 X +V +0 X +( MPI Primer / Developing with LAM) 180 34.7 T +180 738 540 738 2 L +7 X +V +1 H +2 Z +0 X +N +540 54 180 54 2 L +7 X +V +0 X +N +180 72 540 630 R +7 X +V +0 F +0 X +(LAM runs on each computer as a single daemon \050serv) 180 622 T +(er\051 uniquely struc-) 439.43 622 T +180 766/G187828 FmPA +(tured) 180 608 T +(as) 206.73 608 T +(a) 218.79 608 T +(nano-k) 226.19 608 T +(ernel) 259.39 608 T +(and) 285.45 608 T +(hand-threaded) 304.85 608 T +(virtual) 375.56 608 T +(processes.) 408.96 608 T +(The) 460.01 608 T +(nano-k) 480.74 608 T +(ernel) 513.94 608 T +(component) 180 594 T +(pro) 235.49 594 T +(vides) 251.31 594 T +(a) 278.81 594 T +(simple) 286.3 594 T +(message-passing,) 320.47 594 T +(rendez-v) 406.29 594 T +(ous) 448.02 594 T +(service) 466.86 594 T +(to) 503.01 594 T +(local) 514.51 594 T +(processes. Some of the in-daemon processes form a netw) 180 580 T +(ork communica-) 454.15 580 T +(tion) 180 566 T +(subsystem,) 201.25 566 T +(which) 256.84 566 T +(transfers) 288.74 566 T +(messages) 332.64 566 T +(to) 380.54 566 T +(and) 392.46 566 T +(from) 412.37 566 T +(other) 438.28 566 T +(LAM) 465.52 566 T +(daemons) 494.76 566 T +(on) 180 552 T +(other) 194.6 552 T +(machines.) 221.86 552 T +(The) 272.78 552 T +(netw) 294.04 552 T +(ork) 317.25 552 T +(subsystem) 335.84 552 T +(adds) 388.45 552 T +(features) 413.04 552 T +(such) 453.62 552 T +(as) 478.22 552 T +(pack) 490.81 552 T +(etiza-) 513.35 552 T +(tion and b) 180 538 T +(uf) 227.76 538 T +(fering to the base synchronization. Other in-daemon processes) 237.46 538 T +(are serv) 180 524 T +(ers for remote capabilities, such as program e) 217.46 524 T +(x) 435.23 524 T +(ecution and parallel) 441.05 524 T +(\336le) 180 510 T +(access.) 197.82 510 T +(The) 233.96 510 T +(layering) 255.1 510 T +(is) 296.92 510 T +(quite) 307.41 510 T +(distinct:) 333.89 510 T +(the) 375.06 510 T +(nano-k) 392.21 510 T +(ernel) 425.41 510 T +(has) 451.89 510 T +(no) 470.37 510 T +(connection) 484.86 510 T +(with the netw) 180 496 T +(ork subsystem, which has no connection with the serv) 245.21 496 T +(ers.) 504 496 T +(Users can con\336gure in or out services as necessary) 180 482 T +(.) 422.48 482 T +(The) 180 460 T +(unique) 201.01 460 T +(softw) 236.02 460 T +(are) 262.57 460 T +(engineering) 279.57 460 T +(of) 338.57 460 T +(LAM) 350.91 460 T +(is) 379.93 460 T +(transparent) 390.28 460 T +(to) 445.94 460 T +(users) 457.63 460 T +(and) 484.64 460 T +(system) 504.32 460 T +180 604/G95589 FmPA +(administrators, who only see a con) 180 446 T +(v) 346.16 446 T +(entional daemon. System de) 351.98 446 T +(v) 487.01 446 T +(elopers) 492.83 446 T +(can de-cluster the daemon into a daemon containing only the nano-k) 180 432 T +(ernel) 508.49 432 T +(and se) 180 418 T +(v) 210.02 418 T +(eral full client processes. This de) 215.84 418 T +(v) 373.51 418 T +(elopers\325 mode is still transparent) 379.33 418 T +(to) 180 404 T +(users) 192.31 404 T +(b) 219.95 404 T +(ut) 225.71 404 T +(e) 238.02 404 T +(xposes) 243.16 404 T +(LAM\325) 278.8 404 T +(s) 308.8 404 T +(highly) 316.45 404 T +(modular) 350.09 404 T +(components) 393.06 404 T +(to) 454.03 404 T +(simpli\336ed) 466.35 404 T +(indi-) 517.33 404 T +(vidual) 180 390 T +(deb) 212.58 390 T +(ugging.) 229.67 390 T +(It) 268.58 390 T +(also) 278.5 390 T +(re) 300.41 390 T +(v) 309.43 390 T +(eals) 315.25 390 T +(LAM\325) 336.49 390 T +(s) 366.49 390 T +(e) 373.74 390 T +(v) 378.77 390 T +(olution) 384.53 390 T +(from) 421.12 390 T +(T) 447.02 390 T +(rollius,) 453.94 390 T +(which) 490.19 390 T +(ran) 522.1 390 T +(nati) 180 376 T +(v) 197.7 376 T +(ely on scalable multicomputers and joined them to a host netw) 203.52 376 T +(ork) 503.38 376 T +(through a uniform programming interf) 180 362 T +(ace.) 364.52 362 T +(The) 180 186 T +(netw) 201.2 186 T +(ork) 224.41 186 T +(layer) 242.94 186 T +(in) 269.47 186 T +(LAM) 281.34 186 T +(is) 310.54 186 T +(a) 321.09 186 T +(documented,) 328.95 186 T +(primiti) 393.15 186 T +(v) 425.52 186 T +(e) 431.34 186 T +(and) 439.21 186 T +(abstract) 459.08 186 T +(layer) 498.93 186 T +(on) 525.46 186 T +180 330/G95591 FmPA +(which to implement a more po) 180 172 T +(werful communication standard lik) 326.69 172 T +(e MPI) 494.88 172 T +(\050PVM has also been implemented\051.) 180 158 T +(A) 180 136 T +(most) 190.97 136 T +(important) 216.62 136 T +(feature) 265.6 136 T +(of) 301.22 136 T +(LAM) 313.52 136 T +(is) 342.49 136 T +(hands-on) 352.8 136 T +(control) 399.1 136 T +(of) 435.41 136 T +(the) 447.71 136 T +(multicomputer) 464.68 136 T +(.) 534.69 136 T +180 280/G95593 FmPA +(There is v) 180 122 T +(ery little that cannot be seen or changed at runtime. Programs) 227.81 122 T +(residing) 180 108 T +(an) 221.01 108 T +(ywhere) 232.16 108 T +(can) 269.83 108 T +(be) 288.83 108 T +(e) 302.51 108 T +(x) 307.65 108 T +(ecuted) 313.47 108 T +(an) 347.14 108 T +(ywhere,) 358.29 108 T +(stopped,) 398.95 108 T +(resumed,) 441.64 108 T +(killed,) 487.64 108 T +(and) 520.32 108 T +(w) 180 94 T +(atched the whole time. Messages can be vie) 188.54 94 T +(wed an) 398.2 94 T +(ywhere on the multi-) 432.34 94 T +(computer and b) 180 80 T +(uf) 254.41 80 T +(fer constraints tuned as e) 264.11 80 T +(xperience with the application) 383.23 80 T +63 584.99 180 629.99 C +0 0 0 1 0 0 0 1 K +63 584.99 180 629.99 R +7 X +V +72 593.99 162 629.99 R +V +4 14 Q +0 X +(LAM) 129.34 620.66 T +72 765/G187827 FmPA +(Ar) 86.32 604.66 T +(chitectur) 102.39 604.66 T +(e) 155.78 604.66 T +0 0 612 792 C +0 0 0 1 0 0 0 1 K +155.99 204 564.01 358 C +0 0 0 1 0 0 0 1 K +245.99 313 263.99 331 272.99 331 254.99 313 4 Y +3 X +V +0.5 H +2 Z +N +254.99 304 272.99 322 281.99 322 263.99 304 4 Y +V +N +263.99 295 281.99 313 290.99 313 272.99 295 4 Y +V +N +272.99 286 290.99 304 299.99 304 281.99 286 4 Y +V +N +281.99 277 299.99 295 308.99 295 290.99 277 4 Y +V +N +290.99 268 308.99 286 317.99 286 299.99 268 4 Y +V +N +299.99 259 317.99 277 326.99 277 308.99 259 4 Y +V +N +308.99 250 326.99 268 335.99 268 317.99 250 4 Y +V +N +254.99 313 272.99 331 272.99 322 254.99 304 4 Y +1 X +V +N +263.99 304 281.99 322 281.99 313 263.99 295 4 Y +V +N +272.99 295 290.99 313 290.99 304 272.99 286 4 Y +V +N +281.99 286 299.99 304 299.99 295 281.99 277 4 Y +V +N +299.99 268 317.99 286 317.99 277 299.99 259 4 Y +V +N +308.99 259 326.99 277 326.99 268 308.99 250 4 Y +V +N +317.99 250 335.99 268 335.99 259 317.99 241 4 Y +V +N +290.99 277 308.99 295 308.99 286 290.99 268 4 Y +V +N +245.99 313 254.99 313 254.99 304 263.99 304 263.99 295 272.99 295 272.99 286 + 281.99 286 281.99 277 290.99 277 290.99 268 299.99 268 299.99 259 308.99 259 308.99 250 + 317.99 250 317.99 241 290.99 241 290.99 250 281.99 250 281.99 259 272.99 259 272.99 268 + 263.99 268 263.99 277 254.99 277 254.99 286 245.99 286 28 Y +7 X +V +1 H +0 X +N +263.99 331 272.99 331 272.99 322 281.99 322 281.99 313 290.99 313 290.99 304 + 299.99 304 299.99 295 308.99 295 308.99 286 317.99 286 317.99 277 326.99 277 326.99 268 + 335.99 268 335.99 259 17 L +0.5 H +N +5 10 Q +(local msgs, client mgmt) 353.99 252.19 T +(network msgs) 335.99 279.19 T +(MPI, client / server) 317.99 305.71 T +(cmds, apps, GUIs) 290.99 332.71 T +5 12 Q +(Figure 1: LAM\325) 276.05 217.98 T +(s La) 353.48 217.98 T +(y) 375.8 217.98 T +(ered Design) 381.56 217.98 T +0 0 612 792 C +0 0 0 1 0 0 0 1 K +63 111 180 143.99 C +0 0 0 1 0 0 0 1 K +63 111 180 143.99 R +7 X +V +72 116.99 162 143.99 R +V +4 12 Q +0 X +(Deb) 106.9 135.99 T +(ugging) 127.32 135.99 T +72 280/G95640 FmPA +0 0 612 792 C +0 0 0 1 0 0 0 1 K +[/CropBox[0 0 FmDC 612 792 FmDC FmBx]/PAGE FmPD +[/Dest/P.7/DEST FmPD2 +[/Title(A)/Rect[171 63 549 639]/ARTICLE FmPD2 +FMENDPAGE +%%EndPage: "7" 7 +%%Page: "8" 8 +612 792 0 FMBEGINPAGE +0 FrameSetSepColors +FrameNoSep +0 0 0 1 0 0 0 1 K +180 745.99 540 756 R +7 X +V +1 12 Q +0 X +(8) 180 748 T +180 32.69 540 42.7 R +7 X +V +0 X +( MPI Primer / Developing with LAM) 180 34.7 T +180 738 540 738 2 L +7 X +V +1 H +2 Z +0 X +N +540 54 180 54 2 L +7 X +V +0 X +N +180 72 540 630 R +7 X +V +0 F +0 X +(dictates.) 180 622 T +(If) 222.15 622 T +(the) 232.64 622 T +(synchronization) 249.8 622 T +(of) 328.95 622 T +(a) 341.44 622 T +(process) 349.26 622 T +(and) 387.74 622 T +(a) 407.57 622 T +(message) 415.39 622 T +(can) 458.54 622 T +(be) 477.69 622 T +(easily) 491.51 622 T +(dis-) 522 622 T +(played, mismatches resulting in b) 180 608 T +(ugs can easily be found. These and other) 340.75 608 T +(services) 180 594 T +(are) 221.04 594 T +(a) 238.07 594 T +(v) 243.16 594 T +(ailable) 248.86 594 T +(both) 283.24 594 T +(as) 306.96 594 T +(a) 319.34 594 T +(programming) 327.05 594 T +(library) 394.76 594 T +(and) 429.14 594 T +(as) 448.85 594 T +(utility) 461.23 594 T +(programs) 492.29 594 T +(run from an) 180 580 T +(y shell.) 236.47 580 T +(MPI) 180 558 T +(synchronization) 203.62 558 T +(boils) 282.57 558 T +(do) 308.2 558 T +(wn) 319.89 558 T +(to) 336.85 558 T +(four) 348.47 558 T +(v) 370.75 558 T +(ariables:) 376.45 558 T +(conte) 419.39 558 T +(xt,) 445.2 558 T +(tag,) 459.83 558 T +(source) 479.78 558 T +(rank,) 513.39 558 T +180 702/G95595 FmPA +(and) 180 544 T +(destination) 199.97 544 T +(rank.) 255.28 544 T +(These) 282.24 544 T +(are) 313.54 544 T +(mapped) 330.83 544 T +(to) 371.46 544 T +(LAM\325) 383.44 544 T +(s) 413.44 544 T +(abstract) 420.74 544 T +(synchronization) 460.7 544 T +(at the netw) 180 530 T +(ork layer) 232.54 530 T +(. MPI deb) 274.86 530 T +(ugging tools interpret the LAM information) 322.28 530 T +(with the kno) 180 516 T +(wledge of the LAM / MPI mapping and present detailed infor-) 239.7 516 T +(mation to MPI programmers.) 180 502 T +(A signi\336cant portion of the MPI speci\336cation can be and is implemented) 180 480 T +180 624/G95596 FmPA +(within the runtime system and independent of the underlying en) 180 466 T +(vironment.) 486.49 466 T +(As with all MPI implementations, LAM must synchronize the launch of) 180 444 T +180 588/G95597 FmPA +(MPI) 180 430 T +(applications) 204.21 430 T +(so) 265.09 430 T +(that) 278.63 430 T +(all) 299.51 430 T +(processes) 314.39 430 T +(locate) 363.25 430 T +(each) 394.79 430 T +(other) 419.65 430 T +(before) 447.19 430 T +(user) 480.71 430 T +(code) 503.58 430 T +(is) 529.12 430 T +(entered. The) 180 416 T +2 F +(mpirun) 242.98 416 T +0 F +( command achie) 277.64 416 T +(v) 355.99 416 T +(es this after \336nding and loading the) 361.81 416 T +(program\050s\051 which constitute the application. A simple SPMD application) 180 402 T +(can) 180 388 T +(be) 199.23 388 T +(speci\336ed) 213.13 388 T +(on) 258.37 388 T +(the) 272.94 388 T +(mpirun) 290.18 388 T +(command) 327.43 388 T +(line) 377.33 388 T +(while) 397.9 388 T +(a) 427.14 388 T +(more) 435.05 388 T +(comple) 462.28 388 T +(x) 497.43 388 T +(con\336g-) 506 388 T +(uration is described in a separate \336le, called an application schema.) 180 374 T +(MPI programs de) 180 352 T +(v) 263.69 352 T +(eloped on LAM can be mo) 269.51 352 T +(v) 398.3 352 T +(ed without source code) 404.12 352 T +180 496/G95598 FmPA +(changes to an) 180 338 T +(y other platform that supports MPI.) 245.14 338 T +(LAM installs an) 180 316 T +(ywhere and uses the shell\325) 257.82 316 T +(s search path at all times to \336nd) 383.8 316 T +180 460/G95600 FmPA +(LAM) 180 302 T +(and) 209.1 302 T +(application) 228.85 302 T +(e) 284.61 302 T +(x) 289.76 302 T +(ecutables.) 295.58 302 T +(A) 345.66 302 T +(multicomputer) 356.76 302 T +(is) 429.86 302 T +(speci\336ed) 440.29 302 T +(as) 485.38 302 T +(a) 497.81 302 T +(simple) 505.57 302 T +(list of machine names in a \336le, which LAM uses to v) 180 288 T +(erify access, start the) 433.8 288 T +(en) 180 274 T +(vironment, and remo) 190.85 274 T +(v) 290.99 274 T +(e it.) 296.81 274 T +(LAM is freely a) 180 252 T +(v) 256.74 252 T +(ailable under a GNU license via anon) 262.44 252 T +(ymous ftp from) 442.21 252 T +180 396/G95602 FmPA +(ftp.osc.edu.) 180 238 T +63 533 180 565.99 C +0 0 0 1 0 0 0 1 K +63 533 180 565.99 R +7 X +V +72 538.99 162 565.99 R +V +4 12 Q +0 X +(MPI) 138.67 557.99 T +72 702/G95653 FmPA +(Implementation) 80 543.99 T +0 0 612 792 C +63 227 180 259.99 C +0 0 0 1 0 0 0 1 K +63 227 180 259.99 R +7 X +V +72 232.99 162 259.99 R +V +4 12 Q +0 X +(Ho) 72.47 251.99 T +(w to Get LAM) 87.68 251.99 T +72 396/G95685 FmPA +0 0 612 792 C +0 0 0 1 0 0 0 1 K +[/CropBox[0 0 FmDC 612 792 FmDC FmBx]/PAGE FmPD +[/Dest/P.8/DEST FmPD2 +[/Title(A)/Rect[171 63 549 639]/ARTICLE FmPD2 +FMENDPAGE +%%EndPage: "8" 8 +%%Page: "9" 9 +612 792 0 FMBEGINPAGE +0 FrameSetSepColors +FrameNoSep +0 0 0 1 0 0 0 1 K +180 745.99 540 756 R +7 X +V +1 12 Q +0 X +(9) 533.33 748 T +180 32.69 540 42.7 R +7 X +V +0 X +( MPI Primer / Developing with LAM) 180 34.7 T +180 738 540 738 2 L +7 X +V +1 H +2 Z +0 X +N +540 54 180 54 2 L +7 X +V +0 X +N +180 72 540 630 R +7 X +V +1 18 Q +0 X +(LAM / MPI T) 180 618 T +(utorial Intr) 280.39 618 T +(oduction) 369.04 618 T +180 762/G95422 FmPA +180 437.98 540 450 C +0 0 0 1 0 0 0 1 K +180 437.98 540 450 R +7 X +V +180 448.99 648 448.99 2 L +V +1 H +2 Z +0 X +N +180 445.97 648 445.97 2 L +7 X +V +0 X +N +0 0 612 792 C +0 0 0 1 0 0 0 1 K +0 12 Q +0 X +(The) 180 429.98 T +(e) 201.13 429.98 T +(xample) 206.28 429.98 T +(programs) 244.08 429.98 T +(in) 291.88 429.98 T +(this) 303.69 429.98 T +(section) 323.5 429.98 T +(illustrate) 359.97 429.98 T +(common) 404.44 429.98 T +(operations) 448.92 429.98 T +(in) 501.38 429.98 T +(MPI.) 513.19 429.98 T +180 574/G95423 FmPA +(Y) 180 415.98 T +(ou will also see ho) 187.34 415.98 T +(w to run and deb) 276.37 415.98 T +(ug a program with LAM.) 356.78 415.98 T +(F) 180 393.98 T +(or basic applications, MPI is as easy to use as an) 186.49 393.98 T +(y other message-passing) 419.28 393.98 T +180 538/G93073 FmPA +(library) 180 379.98 T +(.) 211.21 379.98 T +(The) 216.45 379.98 T +(\336rst) 237.35 379.98 T +(program) 258.27 379.98 T +(is) 301.17 379.98 T +(designed) 311.41 379.98 T +(to) 356.31 379.98 T +(run) 367.89 379.98 T +(with) 386.13 379.98 T +(e) 409.7 379.98 T +(xactly) 414.85 379.98 T +(tw) 446.42 379.98 T +(o) 458.3 379.98 T +(processes.) 466.54 379.98 T +(One) 517.77 379.98 T +(process) 180 365.98 T +(sends) 218.84 365.98 T +(a) 248.35 365.98 T +(message) 256.53 365.98 T +(to) 300.04 365.98 T +(the) 312.23 365.98 T +(other) 329.74 365.98 T +(and) 357.26 365.98 T +(then) 377.43 365.98 T +(both) 400.95 365.98 T +(terminate.) 425.14 365.98 T +(Enter) 476.31 365.98 T +(the) 505.16 365.98 T +(fol-) 522.67 365.98 T +(lo) 180 351.98 T +(wing) 189.04 351.98 T +(code) 216.03 351.98 T +(in) 241.67 351.98 T +(tri) 254 351.98 T +(vial.c) 264.37 351.98 T +(or) 293.69 351.98 T +(obtain) 306.67 351.98 T +(the) 339.67 351.98 T +(source) 357.32 351.98 T +(from) 391.63 351.98 T +(the) 417.95 351.98 T +(LAM) 435.61 351.98 T +(source) 465.26 351.98 T +(distrib) 499.57 351.98 T +(u-) 530 351.98 T +(tion \050e) 180 337.98 T +(xamples/tri) 210.82 337.98 T +(vial/tri) 264.52 337.98 T +(vial.c\051.) 296.22 337.98 T +3 10 Q +(/*) 180 317.31 T +180 461/G93114 FmPA +( * Transmit a message in a two process system.) 180 306.31 T +( */) 180 295.31 T +(#include ) 180 282.31 T +180 426/G93115 FmPA +(#define BUFSIZE) 180 269.31 T +(64) 324 269.31 T +180 413/G93366 FmPA +(int) 180 256.31 T +(buf[64];) 324 256.31 T +180 400/G93367 FmPA +(int) 180 243.31 T +180 387/G93117 FmPA +(main\050argc, argv\051) 180 232.31 T +(int) 180 219.31 T +(argc;) 324 219.31 T +180 363/G93131 FmPA +(char) 180 208.31 T +(*argv[];) 324 208.31 T +({) 180 195.31 T +180 339/G93132 FmPA +(int) 216 182.31 T +(size, rank;) 324 182.31 T +180 326/G93118 FmPA +(MPI_Status) 216 171.31 T +(status;) 324 171.31 T +(/*) 180 158.31 T +180 302/G93119 FmPA +( * Initialize MPI.) 180 147.31 T +( */) 180 136.31 T +(MPI_Init\050&argc, &argv\051;) 216 125.31 T +(/*) 180 112.31 T +180 256/G93148 FmPA +( * Error check the number of processes.) 180 101.31 T +( * Determine my rank in the world group.) 180 90.31 T +63 362.01 180 401.97 C +0 0 0 1 0 0 0 1 K +63 362.01 180 401.97 R +7 X +V +72 365.97 162 401.97 R +V +4 14 Q +0 X +(Pr) 78.27 392.64 T +(ogramming) 92.78 392.64 T +72 537/G92814 FmPA +(T) 113.5 376.64 T +(utorial) 121.55 376.64 T +0 0 612 792 C +0 0 0 1 0 0 0 1 K +[/CropBox[0 0 FmDC 612 792 FmDC FmBx]/PAGE FmPD +[/Dest/P.9/DEST FmPD2 +[/Title(A)/Rect[171 63 549 639]/ARTICLE FmPD2 +FMENDPAGE +%%EndPage: "9" 9 +%%Page: "10" 10 +612 792 0 FMBEGINPAGE +0 FrameSetSepColors +FrameNoSep +0 0 0 1 0 0 0 1 K +180 745.99 540 756 R +7 X +V +1 12 Q +0 X +(10) 180 748 T +180 32.69 540 42.7 R +7 X +V +0 X +( MPI Primer / Developing with LAM) 180 34.7 T +180 738 540 738 2 L +7 X +V +1 H +2 Z +0 X +N +540 54 180 54 2 L +7 X +V +0 X +N +180 72 540 630 R +7 X +V +3 10 Q +0 X +( * The sender will be rank 0 and the receiver, rank 1.) 180 623.33 T +( */) 180 612.33 T +(MPI_Comm_size\050MPI_COMM_WORLD, &size\051;) 216 601.33 T +(if \0502 != size\051 {) 216 588.33 T +180 732/G93121 FmPA +(MPI_Finalize\050\051;) 252 577.33 T +(return\0501\051;) 252 566.33 T +(}) 216 555.33 T +(MPI_Comm_rank\050MPI_COMM_WORLD, &rank\051;) 216 542.33 T +180 686/G93122 FmPA +(/*) 180 529.33 T +180 673/G93123 FmPA +( * As rank 0, send a message to rank 1.) 180 518.33 T +( */) 180 507.33 T +(if \0500 == rank\051 {) 216 496.33 T +(MPI_Send\050buf, sizeof\050buf\051, MPI_INT, 1, 11,) 252 485.33 T +(MPI_COMM_WORLD\051;) 324 474.33 T +(}) 216 463.33 T +(/*) 180 450.33 T +180 594/G93124 FmPA +( * As rank 1, receive a message from rank 0.) 180 439.33 T +( */) 180 428.33 T +(else {) 216 417.33 T +(MPI_Recv\050buf, sizeof\050buf\051, MPI_INT, 0, 11,) 252 406.33 T +(MPI_COMM_WORLD, &status\051;) 324 395.33 T +(}) 216 384.33 T +(MPI_Finalize\050\051;) 216 371.33 T +180 515/G93125 FmPA +(return\0500\051;) 216 360.33 T +(}) 180 349.33 T +0 12 Q +(Note that the program uses standard C program structure, statements, v) 180 329 T +(ari-) 520.98 329 T +180 473/G93126 FmPA +(able declarations and types, and functions.) 180 315 T +(Processes are represented by a unique \322rank\323 \050inte) 180 293 T +(ger\051 and ranks are num-) 421.4 293 T +180 437/G93152 FmPA +(bered 0, 1, 2, ..., N-1. MPI_COMM_W) 180 279 T +(ORLD means \322all the processes in) 367.86 279 T +(the MPI application.) 180 265 T +(\323 It is called a communicator and it pro) 277.49 265 T +(vides all infor-) 465.28 265 T +(mation necessary to do message-passing. Portable libraries do more with) 180 251 T +(communicators to pro) 180 237 T +(vide synchronization protection that most other mes-) 285.14 237 T +(sage-passing systems cannot handle.) 180 223 T +(As with other systems, tw) 180 201 T +(o routines are pro) 304.21 201 T +(vided to initialize and cleanup) 388.34 201 T +180 345/G93157 FmPA +(an MPI process:) 180 187 T +3 F +(MPI_Init\050int *argc, char ***argv\051;) 180 165 T +180 309/G93158 FmPA +(MPI_Finalize\050void\051;) 180 147 T +180 291/G93159 FmPA +0 F +(T) 180 125 T +(ypically) 186.37 125 T +(, a process in a parallel application needs to kno) 224.26 125 T +(w who it is \050its) 453.91 125 T +180 269/G93164 FmPA +(rank\051) 180 111 T +(and) 208.04 111 T +(ho) 228.08 111 T +(w) 239.78 111 T +(man) 251.16 111 T +(y) 271.64 111 T +(other) 280.36 111 T +(processes) 307.73 111 T +(e) 356.43 111 T +(xist.) 361.58 111 T +(A) 384.64 111 T +(process) 396.02 111 T +(\336nds) 434.72 111 T +(out) 460.77 111 T +(its) 478.83 111 T +(o) 492.88 111 T +(wn) 498.58 111 T +(rank) 515.96 111 T +(by calling MPI_Comm_rank\050\051.) 180 97 T +63 244.98 180 300.99 C +0 0 0 1 0 0 0 1 K +63 244.98 180 300.99 R +7 X +V +72 255.99 162 300.99 R +V +4 12 Q +0 X +(The W) 93.56 292.99 T +(orld of) 127.67 292.99 T +72 437/G93192 FmPA +(MPI) 138.67 278.99 T +0 0 612 792 C +63 152.98 180 208.99 C +0 0 0 1 0 0 0 1 K +63 152.98 180 208.99 R +7 X +V +72 163.99 162 208.99 R +V +4 12 Q +0 X +(Enter and Exit) 85.99 200.99 T +72 345/G93156 FmPA +(MPI) 138.67 186.99 T +0 0 612 792 C +63 76.98 180 132.99 C +0 0 0 1 0 0 0 1 K +63 76.98 180 132.99 R +7 X +V +72 87.99 162 132.99 R +V +4 12 Q +0 X +(Who Am I; Who) 76.33 124.99 T +72 269/G93163 FmPA +(Ar) 107.89 110.99 T +(e They?) 121.67 110.99 T +0 0 612 792 C +0 0 0 1 0 0 0 1 K +[/CropBox[0 0 FmDC 612 792 FmDC FmBx]/PAGE FmPD +[/Dest/P.10/DEST FmPD2 +[/Title(A)/Rect[171 63 549 639]/ARTICLE FmPD2 +FMENDPAGE +%%EndPage: "10" 10 +%%Page: "11" 11 +612 792 0 FMBEGINPAGE +0 FrameSetSepColors +FrameNoSep +0 0 0 1 0 0 0 1 K +180 745.99 540 756 R +7 X +V +1 12 Q +0 X +(11) 526.66 748 T +180 32.69 540 42.7 R +7 X +V +0 X +( MPI Primer / Developing with LAM) 180 34.7 T +180 738 540 738 2 L +7 X +V +1 H +2 Z +0 X +N +540 54 180 54 2 L +7 X +V +0 X +N +180 72 540 630 R +7 X +V +3 F +0 X +(MPI_Comm_rank\050MPI_Comm comm, int *rank\051;) 180 622 T +180 766/G93166 FmPA +0 F +(The total number of processes is returned by MPI_Comm_size\050\051.) 180 600 T +180 744/G93167 FmPA +3 F +(MPI_Comm_size\050MPI_Comm comm, int *size\051;) 180 578 T +180 722/G93169 FmPA +0 F +(A) 180 556 T +(message) 191.35 556 T +(is) 234.68 556 T +(an) 245.37 556 T +(array) 259.38 556 T +(of) 286.7 556 T +(elements) 299.38 556 T +(of) 344.72 556 T +(a) 357.4 556 T +(gi) 365.41 556 T +(v) 374.44 556 T +(en) 380.26 556 T +(datatype.) 394.27 556 T +(MPI) 440.61 556 T +(supports) 464.62 556 T +(all) 507.97 556 T +(the) 522.66 556 T +180 700/G93174 FmPA +(basic datatypes and allo) 180 542 T +(ws a more elaborate application to construct ne) 294.01 542 T +(w) 520 542 T +(datatypes at runtime.) 180 528 T +(A) 180 506 T +(message) 191.09 506 T +(is) 234.17 506 T +(sent) 244.6 506 T +(to) 266.36 506 T +(a) 278.12 506 T +(speci\336c) 285.87 506 T +(process) 324.96 506 T +(and) 363.37 506 T +(is) 383.13 506 T +(mark) 393.56 506 T +(ed) 418.1 506 T +(by) 431.85 506 T +(a) 446.27 506 T +(tag) 454.03 506 T +(\050inte) 471.12 506 T +(ger\051) 492.93 506 T +(spec-) 514.68 506 T +180 650/G93175 FmPA +(i\336ed by the user) 180 492 T +(. T) 256.33 492 T +(ags are used to distinguish between dif) 268.7 492 T +(ferent message) 454.38 492 T +(types) 180 478 T +(a) 207.74 478 T +(process) 215.47 478 T +(might) 253.86 478 T +(send/recei) 284.27 478 T +(v) 332.62 478 T +(e.) 338.44 478 T +(In) 349.17 478 T +(the) 361.57 478 T +(e) 378.64 478 T +(xample) 383.78 478 T +(program) 421.51 478 T +(abo) 464.57 478 T +(v) 481.72 478 T +(e,) 487.54 478 T +(the) 498.27 478 T +(addi-) 515.34 478 T +(tional) 180 464 T +(synchronization) 209.81 464 T +(of) 288.93 464 T +(fered) 298.63 464 T +(by) 325.74 464 T +(the) 340.21 464 T +(tag) 357.35 464 T +(is) 374.48 464 T +(unnecessary) 384.95 464 T +(.) 442.82 464 T +(Therefore,) 448.29 464 T +(an) 501.06 464 T +(y) 512.21 464 T +(ran-) 520.68 464 T +(dom v) 180 450 T +(alue is used that matches on both sides.) 210.04 450 T +3 F +(MPI_Send\050void *buf, int count, MPI_Datatype) 180 428 T +180 572/G93176 FmPA +(dtype, int dest, int tag, MPI_Comm comm\051;) 216 414 T +0 F +(A recei) 180 392 T +(ving process speci\336es the tag and the rank of the sending process.) 214.68 392 T +180 536/G93181 FmPA +(MPI_ANY_T) 180 378 T +(A) 245.54 378 T +(G and MPI_ANY_SOURCE may be used to recei) 253.73 378 T +(v) 493.73 378 T +(e a mes-) 499.55 378 T +(sage of an) 180 364 T +(y tag and from an) 228.47 364 T +(y sending process.) 312.94 364 T +3 F +(MPI_Recv\050void *buf, int count, MPI_Datatype) 180 342 T +180 486/G93182 FmPA +(dtype, int source, int tag, MPI_Comm comm,) 216 328 T +(MPI_Status *status\051;) 216 314 T +0 F +(Information about the recei) 180 292 T +(v) 310.67 292 T +(ed message is returned in a status v) 316.49 292 T +(ariable. If) 485.16 292 T +180 436/G93183 FmPA +(wildcards are used, the recei) 180 278 T +(v) 315.98 278 T +(ed message tag is status.MPI_T) 321.8 278 T +(A) 472.34 278 T +(G and the) 480.53 278 T +(rank of the sending process is status.MPI_SOURCE.) 180 264 T +(Another routine, not used in the e) 180 242 T +(xample program, returns the number of) 340.8 242 T +180 386/G93184 FmPA +(datatype) 180 228 T +(elements) 222.83 228 T +(recei) 267.66 228 T +(v) 290.67 228 T +(ed.) 296.49 228 T +(It) 312.99 228 T +(is) 322.5 228 T +(used) 332.67 228 T +(when) 356.84 228 T +(the) 385 228 T +(number) 401.84 228 T +(of) 440.67 228 T +(elements) 452.83 228 T +(recei) 497.67 228 T +(v) 520.68 228 T +(ed) 526.5 228 T +(might) 180 214 T +(be) 210.27 214 T +(smaller) 223.87 214 T +(than) 261.46 214 T +(number) 284.39 214 T +(speci\336ed) 323.32 214 T +(to) 368.24 214 T +(MPI_Recv\050\051.) 379.84 214 T +(It) 445.1 214 T +(is) 454.69 214 T +(an) 464.96 214 T +(error) 478.55 214 T +(to) 504.14 214 T +(send) 515.74 214 T +(more elements than the recei) 180 200 T +(ving process will accept.) 317.66 200 T +3 F +(MPI_Get_count\050MPI_Status, &status,) 180 178 T +180 322/G93185 FmPA +(MPI_Datatype dtype, int *nelements\051;) 216 164 T +63 507.98 180 563.99 C +0 0 0 1 0 0 0 1 K +63 507.98 180 563.99 R +7 X +V +72 518.99 162 563.99 R +V +4 12 Q +0 X +(Sending) 120.65 555.99 T +72 700/G93173 FmPA +(Messages) 114.01 541.99 T +0 0 612 792 C +63 343.98 180 399.99 C +0 0 0 1 0 0 0 1 K +63 343.98 180 399.99 R +7 X +V +72 354.99 162 399.99 R +V +4 12 Q +0 X +(Recei) 112.13 391.99 T +(ving) 139.99 391.99 T +72 536/G93180 FmPA +(Messages) 114.01 377.99 T +0 0 612 792 C +0 0 0 1 0 0 0 1 K +[/CropBox[0 0 FmDC 612 792 FmDC FmBx]/PAGE FmPD +[/Dest/P.11/DEST FmPD2 +[/Title(A)/Rect[171 63 549 639]/ARTICLE FmPD2 +FMENDPAGE +%%EndPage: "11" 11 +%%Page: "12" 12 +612 792 0 FMBEGINPAGE +0 FrameSetSepColors +FrameNoSep +0 0 0 1 0 0 0 1 K +180 745.99 540 756 R +7 X +V +1 12 Q +0 X +(12) 180 748 T +180 32.69 540 42.7 R +7 X +V +0 X +( MPI Primer / Developing with LAM) 180 34.7 T +180 738 540 738 2 L +7 X +V +1 H +2 Z +0 X +N +540 54 180 54 2 L +7 X +V +0 X +N +180 72 540 630 R +7 X +V +0 F +0 X +(The) 180 622 T +(follo) 201.66 622 T +(wing) 224.03 622 T +(e) 251.03 622 T +(xample) 256.17 622 T +(program) 294.5 622 T +(is) 338.15 622 T +(a) 349.16 622 T +(communication) 357.48 622 T +(sk) 435.15 622 T +(eleton) 445.7 622 T +(for) 478.02 622 T +(a) 495.01 622 T +(dynam-) 503.34 622 T +180 766/G93239 FmPA +(ically load balanced master/sla) 180 608 T +(v) 327.4 608 T +(e application. The source can be obtained) 333.22 608 T +(from) 180 594 T +(the) 205.68 594 T +(LAM) 222.69 594 T +(source) 251.7 594 T +(distrib) 285.37 594 T +(ution) 315.8 594 T +(\050e) 342.82 594 T +(xamples/tri) 351.96 594 T +(vial/ezstart.c\051.) 405.66 594 T +(The) 475.99 594 T +(program) 497 594 T +(is) 180 580 T +(designed) 190.93 580 T +(to) 236.51 580 T +(w) 248.77 580 T +(ork) 257.32 580 T +(with) 276.24 580 T +(a) 300.5 580 T +(minimum) 308.75 580 T +(of) 358.36 580 T +(tw) 371.28 580 T +(o) 383.16 580 T +(processes:) 392.08 580 T +(one) 444.33 580 T +(master) 464.58 580 T +(and) 499.49 580 T +(one) 519.75 580 T +(sla) 180 566 T +(v) 193.09 566 T +(e.) 198.91 566 T +3 10 Q +(#include ) 180 545.33 T +180 689/G92874 FmPA +(#define WORKTAG) 180 532.33 T +(1) 324 532.33 T +180 676/G92875 FmPA +(#define DIETAG) 180 521.33 T +(2) 324 521.33 T +(#define NUM_WORK_REQS) 180 510.33 T +(200) 324 510.33 T +(static void) 180 497.33 T +(master\050\051;) 324 497.33 T +180 641/G93059 FmPA +(static void) 180 486.33 T +(slave\050\051;) 324 486.33 T +(/*) 180 473.33 T +180 617/G92876 FmPA +( *) 180 462.33 T +6 F +(main) 198 462.33 T +3 F +( * This program is really MIMD, but is written SPMD for) 180 451.33 T +( * simplicity in launching the application.) 180 440.33 T +( */) 180 429.33 T +(int) 180 418.33 T +(main\050argc, argv\051) 180 407.33 T +(int) 180 394.33 T +(argc;) 324 394.33 T +180 538/G93060 FmPA +(char) 180 383.33 T +(*argv[];) 324 383.33 T +({) 180 370.33 T +180 514/G92878 FmPA +(int) 216 359.33 T +(myrank;) 324 359.33 T +(MPI_Init\050&argc, &argv\051;) 216 346.33 T +180 490/G92879 FmPA +(MPI_Comm_rank\050MPI_COMM_WORLD,) 216 335.33 T +(/* group of everybody */) 396 335.33 T +(&myrank\051;) 252 324.33 T +(/* 0 thru N-1 */) 396 324.33 T +(if \050myrank == 0\051 {) 216 311.33 T +180 455/G92880 FmPA +(master\050\051;) 252 300.33 T +(} else {) 216 289.33 T +(slave\050\051;) 252 278.33 T +(}) 216 267.33 T +(MPI_Finalize\050\051;) 216 254.33 T +180 398/G92881 FmPA +(return\0500\051;) 216 243.33 T +(}) 180 232.33 T +(/*) 180 219.33 T +180 363/G92882 FmPA +( *) 180 208.33 T +6 F +(master) 198 208.33 T +3 F +( * The master process sends work requests to the slaves) 180 197.33 T +( * and collects results.) 180 186.33 T +( */) 180 175.33 T +(static void) 180 164.33 T +(master\050\051) 180 153.33 T +({) 180 140.33 T +180 284/G92883 FmPA +(int) 216 129.33 T +(ntasks, rank, work;) 324 129.33 T +(double) 216 118.33 T +(result;) 324 118.33 T +(MPI_Status) 216 107.33 T +(status;) 324 107.33 T +(MPI_Comm_size\050MPI_COMM_WORLD,) 216 94.33 T +180 238/G92884 FmPA +(&ntasks\051;) 252 83.33 T +(/* #processes in app */) 396 83.33 T +63 573.98 180 629.99 C +0 0 0 1 0 0 0 1 K +63 573.98 180 629.99 R +7 X +V +72 584.99 162 629.99 R +V +4 12 Q +0 X +(Master / Sla) 89.1 621.99 T +(v) 150.79 621.99 T +(e) 156.67 621.99 T +72 766/G93248 FmPA +(Example) 116.66 607.99 T +0 0 612 792 C +0 0 0 1 0 0 0 1 K +[/CropBox[0 0 FmDC 612 792 FmDC FmBx]/PAGE FmPD +[/Dest/P.12/DEST FmPD2 +[/Title(A)/Rect[171 63 549 639]/ARTICLE FmPD2 +FMENDPAGE +%%EndPage: "12" 12 +%%Page: "13" 13 +612 792 0 FMBEGINPAGE +0 FrameSetSepColors +FrameNoSep +0 0 0 1 0 0 0 1 K +180 745.99 540 756 R +7 X +V +1 12 Q +0 X +(13) 526.66 748 T +180 32.69 540 42.7 R +7 X +V +0 X +( MPI Primer / Developing with LAM) 180 34.7 T +180 738 540 738 2 L +7 X +V +1 H +2 Z +0 X +N +540 54 180 54 2 L +7 X +V +0 X +N +180 72 540 630 R +7 X +V +3 10 Q +0 X +(/*) 180 623.33 T +180 767/G93283 FmPA +( * Seed the slaves.) 180 612.33 T +( */) 180 601.33 T +(work = NUM_WORK_REQS;) 216 590.33 T +(/* simulated work */) 396 590.33 T +(for \050rank = 1; rank < ntasks; ++rank\051 {) 216 577.33 T +180 721/G92926 FmPA +(MPI_Send\050&work,) 252 564.33 T +(/* message buffer */) 396 564.33 T +180 708/G93287 FmPA +(1,) 288 553.33 T +(/* one data item */) 396 553.33 T +(MPI_INT,) 288 542.33 T +(/* of this type */) 396 542.33 T +(rank,) 288 531.33 T +(/* to this rank */) 396 531.33 T +(WORKTAG,) 288 520.33 T +(/* a work message */) 396 520.33 T +(MPI_COMM_WORLD\051;) 288 509.33 T +(/* always use this */) 396 509.33 T +(work--;) 252 496.33 T +180 640/G93292 FmPA +(}) 216 485.33 T +(/*) 180 472.33 T +180 616/G92929 FmPA +( * Receive a result from any slave and dispatch a new work) 180 461.33 T +( * request until work requests have been exhausted.) 180 450.33 T +( */) 180 439.33 T +(while \050work > 0\051 {) 216 426.33 T +180 570/G92887 FmPA +(MPI_Recv\050&result,) 252 413.33 T +(/* message buffer */) 396 413.33 T +180 557/G92888 FmPA +(1,) 288 402.33 T +(/* one data item */) 396 402.33 T +(MPI_DOUBLE,) 288 391.33 T +(/* of this type */) 396 391.33 T +(MPI_ANY_SOURCE,) 288 380.33 T +(/* from anybody */) 396 380.33 T +(MPI_ANY_TAG,) 288 369.33 T +(/* any message */) 396 369.33 T +(MPI_COMM_WORLD,) 288 358.33 T +(/* communicator */) 396 358.33 T +(&status\051;) 288 347.33 T +(/* recv\325d msg info */) 396 347.33 T +(MPI_Send\050&work, 1, MPI_INT, status.MPI_SOURCE,) 252 334.33 T +180 478/G92889 FmPA +(WORKTAG, MPI_COMM_WORLD\051;) 288 323.33 T +(work--;) 252 310.33 T +(/* simulated work */) 396 310.33 T +180 454/G92890 FmPA +(}) 216 299.33 T +(/*) 180 286.33 T +180 430/G92948 FmPA +( * Receive results for outstanding work requests.) 180 275.33 T +( */) 180 264.33 T +(for \050rank = 1; rank < ntasks; ++rank\051 {) 216 253.33 T +(MPI_Recv\050&result, 1, MPI_DOUBLE, MPI_ANY_SOURCE,) 252 242.33 T +(MPI_ANY_TAG, MPI_COMM_WORLD, &status\051;) 288 231.33 T +(}) 216 220.33 T +(/*) 180 207.33 T +180 351/G92949 FmPA +( * Tell all the slaves to exit.) 180 196.33 T +( */) 180 185.33 T +(for \050rank = 1; rank < ntasks; ++rank\051 {) 216 174.33 T +(MPI_Send\0500, 0, MPI_INT, rank, DIETAG,) 252 163.33 T +(MPI_COMM_WORLD\051;) 288 152.33 T +(}) 216 141.33 T +(}) 180 130.33 T +[/CropBox[0 0 FmDC 612 792 FmDC FmBx]/PAGE FmPD +[/Dest/P.13/DEST FmPD2 +[/Title(A)/Rect[171 63 549 639]/ARTICLE FmPD2 +FMENDPAGE +%%EndPage: "13" 13 +%%Page: "14" 14 +612 792 0 FMBEGINPAGE +0 FrameSetSepColors +FrameNoSep +0 0 0 1 0 0 0 1 K +180 745.99 540 756 R +7 X +V +1 12 Q +0 X +(14) 180 748 T +180 32.69 540 42.7 R +7 X +V +0 X +( MPI Primer / Developing with LAM) 180 34.7 T +180 738 540 738 2 L +7 X +V +1 H +2 Z +0 X +N +540 54 180 54 2 L +7 X +V +0 X +N +180 72 540 630 R +7 X +V +3 10 Q +0 X +(/*) 180 623.33 T +180 767/G92891 FmPA +( *) 180 612.33 T +6 F +(slave) 198 612.33 T +3 F +( * Each slave process accepts work requests and returns) 180 599.33 T +180 743/G93055 FmPA +( * results until a special termination request is received.) 180 588.33 T +( */) 180 577.33 T +(static void) 180 566.33 T +(slave\050\051) 180 555.33 T +({) 180 542.33 T +180 686/G92892 FmPA +(double) 216 531.33 T +(result;) 324 531.33 T +(int) 216 520.33 T +(work;) 324 520.33 T +(MPI_Status) 216 509.33 T +(status;) 324 509.33 T +(for \050;;\051 {) 216 496.33 T +180 640/G92893 FmPA +(MPI_Recv\050&work, 1, MPI_INT, 0, MPI_ANY_TAG,) 252 485.33 T +(MPI_COMM_WORLD, &status\051;) 288 474.33 T +(/*) 180 461.33 T +180 605/G92950 FmPA +( * Check the tag of the received message.) 180 450.33 T +( */) 180 439.33 T +(if \050status.MPI_TAG == DIETAG\051 {) 252 428.33 T +(return;) 288 417.33 T +(}) 252 406.33 T +(sleep\0502\051;) 252 393.33 T +180 537/G92894 FmPA +(result = 6.0;) 252 382.33 T +(/* simulated result */) 396 382.33 T +(MPI_Send\050&result, 1, MPI_DOUBLE, 0, 0,) 252 369.33 T +180 513/G92895 FmPA +(MPI_COMM_WORLD\051;) 288 358.33 T +(}) 216 347.33 T +(}) 180 336.33 T +0 12 Q +(The) 180 316 T +(w) 201.04 316 T +(orkings) 209.58 316 T +(of) 247.96 316 T +(ranks,) 260.33 316 T +(tags) 291.7 316 T +(and) 313.41 316 T +(message) 333.11 316 T +(lengths) 376.15 316 T +(should) 413.19 316 T +(be) 447.57 316 T +(mastered) 461.28 316 T +(before) 506.98 316 T +180 460/G187217 FmPA +(constructing serious MPI applications.) 180 302 T +[/CropBox[0 0 FmDC 612 792 FmDC FmBx]/PAGE FmPD +[/Dest/P.14/DEST FmPD2 +[/Title(A)/Rect[171 63 549 639]/ARTICLE FmPD2 +FMENDPAGE +%%EndPage: "14" 14 +%%Page: "15" 15 +612 792 0 FMBEGINPAGE +0 FrameSetSepColors +FrameNoSep +0 0 0 1 0 0 0 1 K +180 745.99 540 756 R +7 X +V +1 12 Q +0 X +(15) 526.66 748 T +180 32.69 540 42.7 R +7 X +V +0 X +( MPI Primer / Developing with LAM) 180 34.7 T +180 738 540 738 2 L +7 X +V +1 H +2 Z +0 X +N +540 54 180 54 2 L +7 X +V +0 X +N +180 72 540 630 R +7 X +V +0 F +0 X +(Before) 180 622 T +(running) 215.34 622 T +(LAM) 255.35 622 T +(you) 284.7 622 T +(must) 305.38 622 T +(establish) 331.4 622 T +(certain) 376.09 622 T +(en) 411.42 622 T +(vironment) 422.27 622 T +(v) 474.29 622 T +(ariables) 479.99 622 T +(and) 519.99 622 T +180 766/G187218 FmPA +(search paths for your shell. Add the follo) 180 608 T +(wing commands or equi) 376.33 608 T +(v) 491.69 608 T +(alent to) 497.39 608 T +(your) 180 594 T +(shell) 204.98 594 T +(start-up) 230.62 594 T +(\336le) 270.26 594 T +(\050.cshrc,) 288.57 594 T +(assuming) 326.87 594 T +(C) 375.18 594 T +(shell\051.) 386.17 594 T +(Do) 418.81 594 T +(not) 436.45 594 T +(add) 454.77 594 T +(these) 475.07 594 T +(to) 502.71 594 T +(your) 515.03 594 T +2 F +(.) 180 580 T +0 F +(login as the) 183 580 T +(y w) 238.15 580 T +(ould not be ef) 255.7 580 T +(fecti) 321.72 580 T +(v) 342.74 580 T +(e on remote machines when) 348.56 580 T +2 F +(r) 485.53 580 T +(sh) 490.08 580 T +0 F +( is used) 500.75 580 T +(to start LAM.) 180 566 T +3 F +(setenv LAMHOME) 180 544 T +0 F +() 288 544 T +180 688/G187219 FmPA +3 F +(set path = \050$path $LAMHOME/bin\051) 180 526 T +180 670/G93090 FmPA +0 F +(The) 180 504 T +(local) 200.78 504 T +(system) 226.23 504 T +(administrator) 261.69 504 T +(,) 325.21 504 T +(or) 330.33 504 T +(the) 342.45 504 T +(person) 359.24 504 T +(who) 393.35 504 T +(installed) 416.14 504 T +(LAM,) 458.93 504 T +(will) 490.72 504 T +(kno) 511.51 504 T +(w) 529.21 504 T +180 648/G187220 FmPA +(the location of the LAM installation directory) 180 490 T +(. After editing the shell start-) 398.53 490 T +(up) 180 476 T +(\336le,) 194.72 476 T +(in) 215.78 476 T +(v) 224.64 476 T +(ok) 230.4 476 T +(e) 242.28 476 T +(it) 250.33 476 T +(to) 259.73 476 T +(establish) 271.79 476 T +(the) 316.51 476 T +(ne) 333.9 476 T +(w) 344.93 476 T +(v) 356.32 476 T +(alues.) 362.02 476 T +(This) 392.4 476 T +(is) 416.46 476 T +(not) 427.19 476 T +(necessary) 445.25 476 T +(on) 494.62 476 T +(subse-) 509.34 476 T +(quent logins to the UNIX system.) 180 462 T +3 F +(% source) 180 440 T +(.cshrc) 240.6 440 T +180 584/G187221 FmPA +0 F +(Man) 180 418 T +(y) 201.82 418 T +(LAM) 210.54 418 T +(commands) 239.92 418 T +(require) 294.64 418 T +(one) 331.34 418 T +(or) 351.39 418 T +(more) 364.1 418 T +(nodeids.) 391.48 418 T +(Nodeids) 434.53 418 T +(are) 477.25 418 T +(speci\336ed) 494.62 418 T +180 562/G187222 FmPA +(on the command line as n, where is a list of comma separated) 180 404 T +(nodeids or nodeid ranges.) 180 390 T +3 F +(n1) 180 368 T +180 512/G187223 FmPA +(n1,3,5-10) 180 350 T +180 494/G93091 FmPA +0 F +(The) 180 328 T +(mnemonic) 201.43 328 T +(\324h\325) 254.86 328 T +(refers) 271.62 328 T +(to) 301.7 328 T +(the) 313.8 328 T +(local) 331.23 328 T +(node) 357.33 328 T +(where) 383.43 328 T +(the) 415.51 328 T +(command) 432.94 328 T +(is) 483.04 328 T +(typed) 493.81 328 T +(\050as) 523.24 328 T +180 472/G187224 FmPA +(in \324here\325\051.) 180 314 T +(An) 180 292 T +(y) 194.48 292 T +(nati) 202.75 292 T +(v) 220.45 292 T +(e) 226.27 292 T +(C) 233.85 292 T +(compiler) 244.12 292 T +(is) 289.04 292 T +(used) 299.31 292 T +(to) 323.57 292 T +(translate) 335.16 292 T +(LAM) 378.08 292 T +(programs) 407.01 292 T +(for) 454.59 292 T +(e) 470.85 292 T +(x) 475.99 292 T +(ecution.) 481.81 292 T +(All) 522.4 292 T +180 436/G187225 FmPA +(LAM runtime routines are found in a fe) 180 278 T +(w libraries. LAM pro) 370 278 T +(vides a wrap-) 472.46 278 T +(ping command called) 180 264 T +2 F +(hcc) 286.32 264 T +0 F +( which in) 302.98 264 T +(v) 347.16 264 T +(ok) 352.92 264 T +(es cc with the proper header and) 364.8 264 T +(library directories, and is used e) 180 250 T +(xactly lik) 333.12 250 T +(e the nati) 378 250 T +(v) 421.69 250 T +(e cc.) 427.51 250 T +3 F +(% hcc -o trivial trivial.c -lmpi) 180 228 T +180 372/G187226 FmPA +0 F +(The) 180 206 T +(major) 200.78 206 T +(,) 228.3 206 T +(internal) 233.42 206 T +(LAM) 272.2 206 T +(libraries) 300.98 206 T +(are) 342.43 206 T +(automatically) 359.2 206 T +(link) 426.65 206 T +(ed.) 445.2 206 T +(The) 461.65 206 T +(MPI) 482.43 206 T +(library) 505.89 206 T +180 350/G187227 FmPA +(is) 180 192 T +(e) 190.7 192 T +(xplicitly) 195.85 192 T +(link) 238.55 192 T +(ed.) 257.1 192 T +(Since) 274.12 192 T +(LAM) 303.48 192 T +(supports) 332.84 192 T +(heterogeneous) 376.2 192 T +(computing,) 448.21 192 T +(it) 505.24 192 T +(is) 514.61 192 T +(up) 525.3 192 T +(to) 180 178 T +(the) 191.94 178 T +(user) 209.21 178 T +(to) 231.81 178 T +(compile) 243.75 178 T +(the) 285.02 178 T +(source) 302.29 178 T +(code) 336.22 178 T +(for) 361.48 178 T +(each) 378.08 178 T +(of) 402.67 178 T +(the) 415.27 178 T +(v) 432.54 178 T +(arious) 438.24 178 T +(CPUs) 470.18 178 T +(on) 500.79 178 T +(their) 515.4 178 T +(respecti) 180 164 T +(v) 217.02 164 T +(e machines. After correcting an) 222.84 164 T +(y errors reported by the compiler) 373.61 164 T +(,) 531.42 164 T +(proceed to starting the LAM session.) 180 150 T +(Before) 180 128 T +(starting) 215.02 128 T +(LAM,) 253.38 128 T +(the) 285.41 128 T +(user) 302.44 128 T +(speci\336es) 324.8 128 T +(the) 368.49 128 T +(machines) 385.52 128 T +(that) 433.21 128 T +(will) 453.57 128 T +(form) 474.61 128 T +(the) 500.3 128 T +(mul-) 517.33 128 T +180 272/G187228 FmPA +(ticomputer) 180 114 T +(. Create a host \336le listing the machine names, one on each line.) 231.34 114 T +(An e) 180 100 T +(xample \336le is gi) 202.81 100 T +(v) 279.52 100 T +(en belo) 285.34 100 T +(w for the machines \322ohio\323 and \322osc\323. Lines) 320.03 100 T +(starting with the # character are treated as comment lines.) 180 86 T +63 573.98 180 629.99 C +0 0 0 1 0 0 0 1 K +63 573.98 180 629.99 R +7 X +V +72 584.99 162 629.99 R +V +4 14 Q +0 X +(Operation) 100.55 620.66 T +72 765/G183256 FmPA +(T) 113.5 604.66 T +(utorial) 121.55 604.66 T +0 0 612 792 C +54 270.98 180 299.99 C +0 0 0 1 0 0 0 1 K +54 270.98 180 299.99 R +7 X +V +63 281.99 162 299.99 R +V +4 12 Q +0 X +(Compilation) 97.99 291.99 T +63 436/G183257 FmPA +0 0 612 792 C +63 105.03 180 136.06 C +0 0 0 1 0 0 0 1 K +63 105.03 180 136.06 R +7 X +V +72 118.06 162 136.06 R +V +4 12 Q +0 X +(Starting LAM) 89 128.06 T +72 272/G183258 FmPA +0 0 612 792 C +0 0 0 1 0 0 0 1 K +[/CropBox[0 0 FmDC 612 792 FmDC FmBx]/PAGE FmPD +[/Dest/P.15/DEST FmPD2 +[/Title(A)/Rect[171 63 549 639]/ARTICLE FmPD2 +FMENDPAGE +%%EndPage: "15" 15 +%%Page: "16" 16 +612 792 0 FMBEGINPAGE +0 FrameSetSepColors +FrameNoSep +0 0 0 1 0 0 0 1 K +180 745.99 540 756 R +7 X +V +1 12 Q +0 X +(16) 180 748 T +180 32.69 540 42.7 R +7 X +V +0 X +( MPI Primer / Developing with LAM) 180 34.7 T +180 738 540 738 2 L +7 X +V +1 H +2 Z +0 X +N +540 54 180 54 2 L +7 X +V +0 X +N +180 72 540 630 R +7 X +V +3 F +0 X +(# a 2-node LAM) 180 622 T +180 766/G187229 FmPA +(ohio) 180 608 T +(osc) 180 594 T +0 F +(The \336rst machine in the host \336le will be assigned nodeid 0, the second) 180 572 T +180 716/G187230 FmPA +(nodeid) 180 558 T +(1,) 215.39 558 T +(etc.) 227.12 558 T +(No) 246.84 558 T +(w) 261.2 558 T +(v) 272.6 558 T +(erify) 278.42 558 T +(that) 303.8 558 T +(the) 324.53 558 T +(multicomputer) 341.92 558 T +(is) 415.32 558 T +(ready) 426.05 558 T +(to) 455.43 558 T +(run) 467.49 558 T +(LAM.) 486.22 558 T +(The) 518.61 558 T +2 F +(r) 180 544 T +(econ) 184.22 544 T +0 F +( tool checks if the user has access pri) 206.88 544 T +(vile) 383.87 544 T +(ges on each machine in the) 401.69 544 T +(multicomputer and if LAM is installed and accessible.) 180 530 T +3 F +(% recon -v) 180 508 T +0 F +() 259.2 508 T +180 652/G187231 FmPA +(If recon does not report a problem, proceed to start the LAM session with) 180 486 T +180 630/G187232 FmPA +(the) 180 472 T +2 F +(lamboot) 197.66 472 T +0 F +( tool.) 237 472 T +3 F +(% lamboot -v) 180 450 T +0 F +() 273.6 450 T +180 594/G187233 FmPA +(The) 180 428 T +(-v) 201.55 428 T +(\050v) 214.44 428 T +(erbose\051) 224.25 428 T +(option) 262.46 428 T +(causes) 296.02 428 T +(lamboot) 330.23 428 T +(to) 372.46 428 T +(report) 384.69 428 T +(on) 416.24 428 T +(the) 431.13 428 T +(start-up) 448.68 428 T +(process) 488.23 428 T +(as) 527.11 428 T +180 572/G187234 FmPA +(it progresses. Y) 180 414 T +(ou should return to the your o) 253.67 414 T +(wn shell\325) 396.02 414 T +(s prompt. LAM pre-) 439.69 414 T +(sents no special shell or interf) 180 400 T +(ace en) 322.86 400 T +(vironment.) 352.69 400 T +(Ev) 180 378 T +(en) 193.15 378 T +(if) 207.13 378 T +(all) 217.11 378 T +(seems) 231.75 378 T +(well) 263.73 378 T +(after) 287.04 378 T +(start-up,) 311.67 378 T +(v) 353.98 378 T +(erify) 359.8 378 T +(communication) 385.1 378 T +(with) 462.41 378 T +(each) 486.39 378 T +(node.) 511.02 378 T +180 522/G187235 FmPA +2 F +(tping) 180 364 T +0 F +( is a simple con\336dence b) 204.67 364 T +(uilding command for this purpose.) 322.75 364 T +3 F +(% tping n0) 180 342 T +180 486/G187236 FmPA +0 F +(Repeat this command for all nodes or ping all the nodes at once with the) 180 320 T +180 464/G187237 FmPA +(broadcast) 180 306 T +(mnemonic,) 228.84 306 T +(N.) 285.36 306 T +(tping) 299.87 306 T +(responds) 327.4 306 T +(by) 372.91 306 T +(sending) 387.77 306 T +(a) 427.95 306 T +(message) 436.14 306 T +(between) 479.64 306 T +(the) 522.48 306 T +(local) 180 292 T +(node) 205.54 292 T +(\050where) 231.09 292 T +(the) 266.61 292 T +(user) 283.49 292 T +(in) 305.7 292 T +(v) 314.55 292 T +(ok) 320.32 292 T +(ed) 332.2 292 T +(tping\051) 345.74 292 T +(and) 376.62 292 T +(the) 396.16 292 T +(speci\336ed) 413.04 292 T +(node.) 457.92 292 T +(Successful) 486.46 292 T +(e) 180 278 T +(x) 185.15 278 T +(ecution of tping pro) 190.97 278 T +(v) 285.78 278 T +(es that the tar) 291.6 278 T +(get node, nodes along the route from) 355.7 278 T +(the) 180 264 T +(local) 196.76 264 T +(node) 222.19 264 T +(to) 247.61 264 T +(the) 259.05 264 T +(tar) 275.81 264 T +(get) 288.25 264 T +(node,) 305.01 264 T +(and) 333.44 264 T +(the) 352.86 264 T +(communication) 369.62 264 T +(links) 446.38 264 T +(between) 471.82 264 T +(them) 513.9 264 T +(are w) 180 250 T +(orking properly) 206.2 250 T +(. If tping f) 280.4 250 T +(ails, press Control-Z, terminate the session) 328.94 250 T +(with) 180 236 T +(the) 204.21 236 T +2 F +(wipe) 221.74 236 T +0 F +(tool) 247.28 236 T +(and) 268.82 236 T +(then) 289.02 236 T +(restart) 312.56 236 T +(the) 345.42 236 T +(system.) 362.95 236 T +(See) 402.16 236 T +2 F +(T) 422.36 236 T +(erminating) 427.93 236 T +(the) 483.46 236 T +(Session) 501 236 T +0 F +(.) 537 236 T +(T) 180 214 T +(o) 186.37 214 T +(e) 194.73 214 T +(x) 199.87 214 T +(ecute) 205.69 214 T +(a) 233.37 214 T +(program,) 241.05 214 T +(use) 287.06 214 T +(the) 305.4 214 T +2 F +(mpirun) 322.42 214 T +0 F +(command.) 359.44 214 T +(The) 412.12 214 T +(\336rst) 433.14 214 T +(e) 454.16 214 T +(xample) 459.31 214 T +(program) 496.99 214 T +180 358/G187238 FmPA +(is) 180 200 T +(designed) 190.78 200 T +(to) 236.21 200 T +(run) 248.33 200 T +(with) 267.1 200 T +(tw) 291.21 200 T +(o) 303.09 200 T +(processes.) 311.86 200 T +(The) 363.62 200 T +(-c) 385.06 200 T +(<#>) 397.16 200 T +(option) 419.47 200 T +(runs) 452.92 200 T +(copies) 476.35 200 T +(of) 509.79 200 T +(the) 522.56 200 T +(gi) 180 186 T +(v) 189.04 186 T +(en program on nodes selected in a round-robin manner) 194.86 186 T +(.) 456.8 186 T +3 F +(% mpirun -v -c 2 trivial) 180 164 T +180 308/G187239 FmPA +0 F +(The) 180 142 T +(e) 201.27 142 T +(xample) 206.42 142 T +(in) 244.36 142 T +(v) 253.21 142 T +(ocation) 258.97 142 T +(abo) 296.91 142 T +(v) 314.06 142 T +(e) 319.88 142 T +(assumes) 327.82 142 T +(that) 370.42 142 T +(the) 391.03 142 T +(program) 408.31 142 T +(is) 451.57 142 T +(locatable) 462.19 142 T +(on) 508.12 142 T +(the) 522.73 142 T +180 286/G187240 FmPA +(machine on which it will run. mpirun can also transfer the program to the) 180 128 T +(tar) 180 114 T +(get) 192.44 114 T +(node) 209.34 114 T +(before) 234.9 114 T +(running) 267.79 114 T +(it.) 307.35 114 T +(Assuming) 319.26 114 T +(your) 370.17 114 T +(multicomputer) 394.39 114 T +(for) 467.3 114 T +(this) 483.52 114 T +(tutorial) 503.1 114 T +(is homogeneous, you can use the -s h option to run both processes.) 180 100 T +3 F +(% mpirun -v -c 2 -s h trivial) 180 78 T +180 222/G93374 FmPA +63 179.01 180 221.99 C +0 0 0 1 0 0 0 1 K +63 179.01 180 221.99 R +7 X +V +72 185.99 162 221.99 R +V +4 12 Q +0 X +(Executing) 110.66 213.99 T +72 358/G183259 FmPA +(Pr) 111.56 199.99 T +(ograms) 124.01 199.99 T +0 0 612 792 C +0 0 0 1 0 0 0 1 K +[/CropBox[0 0 FmDC 612 792 FmDC FmBx]/PAGE FmPD +[/Dest/P.16/DEST FmPD2 +[/Title(A)/Rect[171 63 549 639]/ARTICLE FmPD2 +FMENDPAGE +%%EndPage: "16" 16 +%%Page: "17" 17 +612 792 0 FMBEGINPAGE +0 FrameSetSepColors +FrameNoSep +0 0 0 1 0 0 0 1 K +180 745.99 540 756 R +7 X +V +1 12 Q +0 X +(17) 526.66 748 T +180 32.69 540 42.7 R +7 X +V +0 X +( MPI Primer / Developing with LAM) 180 34.7 T +180 738 540 738 2 L +7 X +V +1 H +2 Z +0 X +N +540 54 180 54 2 L +7 X +V +0 X +N +180 72 540 630 R +7 X +V +0 F +0 X +(If) 180 622 T +(the) 190.87 622 T +(processes) 208.41 622 T +(e) 257.27 622 T +(x) 262.42 622 T +(ecuted) 268.24 622 T +(correctly) 302.43 622 T +(,) 344.3 622 T +(the) 350.18 622 T +(y) 364.66 622 T +(will) 373.54 622 T +(terminate) 395.08 622 T +(and) 443.28 622 T +(lea) 463.49 622 T +(v) 477.24 622 T +(e) 483.06 622 T +(no) 491.26 622 T +(traces.) 506.14 622 T +180 766/G93375 FmPA +(If) 180 608 T +(you) 190.62 608 T +(w) 211.24 608 T +(ant) 219.78 608 T +(more) 237.07 608 T +(feedback,) 264.35 608 T +(try) 313.28 608 T +(using) 329.23 608 T +(tprintf\050\051) 357.86 608 T +(functions) 398.48 608 T +(within) 445.76 608 T +(the) 479.06 608 T +(program.) 496.34 608 T +(The) 180 586 T +(\336rst) 201.63 586 T +(e) 223.27 586 T +(xample) 228.42 586 T +(program) 266.72 586 T +(runs) 310.34 586 T +(too) 333.98 586 T +(quickly) 352.28 586 T +(to) 391.25 586 T +(be) 403.56 586 T +(monitored.) 417.86 586 T +(T) 473.16 586 T +(ry) 480.07 586 T +(changing) 493.04 586 T +180 730/G187243 FmPA +(the tag in the call to MPI_Recv\050\051 to 12 \050from 11\051. Recompile the program) 180 572 T +(and rerun it as before. No) 180 558 T +(w the recei) 302.33 558 T +(ving process cannot synchronize with) 354.67 558 T +(the) 180 544 T +(message) 196.98 544 T +(from) 239.95 544 T +(the) 265.6 544 T +(send) 282.58 544 T +(process) 306.89 544 T +(because) 345.19 544 T +(the) 385.49 544 T +(tags) 402.47 544 T +(are) 424.12 544 T +(unequal.) 441.08 544 T +(Look) 484.39 544 T +(at) 512.04 544 T +(the) 523.02 544 T +(status of all MPI processes with the) 180 530 T +2 F +(mpitask) 353.65 530 T +0 F +( command.) 390.98 530 T +(Y) 180 432 T +(ou) 187.34 432 T +(will) 201.66 432 T +(notice) 222.65 432 T +(that) 254.3 432 T +(the) 274.62 432 T +(recei) 291.6 432 T +(ving) 314.62 432 T +(process) 338.27 432 T +(is) 376.58 432 T +(block) 386.9 432 T +(ed) 413.44 432 T +(in) 427.09 432 T +(a) 438.75 432 T +(call) 446.39 432 T +(to) 466.04 432 T +(MPI_Recv\050\051) 477.69 432 T +180 576/G187245 FmPA +(- a synchronizing message has not been recei) 180 418 T +(v) 395.98 418 T +(ed. From the code we kno) 401.8 418 T +(w) 526.14 418 T +(this) 180 404 T +(is) 200.07 404 T +(process) 210.81 404 T +(rank) 249.54 404 T +(1) 273.59 404 T +(in) 282.33 404 T +(the) 294.4 404 T +(MPI) 311.8 404 T +(application,) 335.87 404 T +(which) 394.93 404 T +(is) 426.99 404 T +(con\336rmed) 437.73 404 T +(in) 489.12 404 T +(the) 501.2 404 T +(\336rst) 518.59 404 T +(column,) 180 390 T +(the) 221.77 390 T +(MPI) 239.2 390 T +(task) 263.31 390 T +(identi\336cation.) 285.41 390 T +(The) 354.52 390 T +(\336rst) 375.95 390 T +(number) 397.39 390 T +(is) 436.82 390 T +(the) 447.6 390 T +(rank) 465.03 390 T +(within) 489.12 390 T +(the) 522.57 390 T +(w) 180 376 T +(orld) 188.54 376 T +(group.) 210.14 376 T +(The) 243.4 376 T +(second) 264.32 376 T +(number) 299.91 376 T +(is) 338.84 376 T +(the) 349.1 376 T +(rank) 366.03 376 T +(within) 389.62 376 T +(the) 422.56 376 T +(communicator) 439.48 376 T +(being) 511.07 376 T +(used by MPI_Recv\050\051, in this case \050and in man) 180 362 T +(y applications with simple) 399.46 362 T +(communication) 180 348 T +(structure\051) 257.32 348 T +(also) 305.95 348 T +(the) 327.94 348 T +(w) 345.26 348 T +(orld) 353.8 348 T +(group.) 375.79 348 T +(The) 409.43 348 T +(speci\336ed) 430.75 348 T +(source) 476.06 348 T +(of) 510.03 348 T +(the) 522.68 348 T +(message) 180 334 T +(is) 223.28 334 T +(lik) 233.9 334 T +(e) 246.45 334 T +(wise) 251.48 334 T +(identi\336ed.) 276.1 334 T +(The) 327.06 334 T +(synchronization) 348.34 334 T +(tag) 427.61 334 T +(is) 444.9 334 T +(12) 455.52 334 T +(and) 470.14 334 T +(the) 490.09 334 T +(length) 507.38 334 T +(of the recei) 180 320 T +(v) 233.68 320 T +(e b) 239.5 320 T +(uf) 253.58 320 T +(fer is 64 elements of type MPI_INT) 263.28 320 T +(.) 434.36 320 T +(The) 180 298 T +(message) 201.03 298 T +(w) 244.05 298 T +(as) 252.59 298 T +(transferred) 264.95 298 T +(from) 319.29 298 T +(the) 344.98 298 T +(sending) 362.02 298 T +(process) 401.71 298 T +(to) 440.07 298 T +(a) 451.77 298 T +(system) 459.46 298 T +(b) 495.16 298 T +(uf) 500.92 298 T +(fer) 510.62 298 T +(en) 526.31 298 T +180 442/G187246 FmPA +(route) 180 284 T +(to) 207.51 284 T +(process) 219.69 284 T +(rank) 258.53 284 T +(1.) 282.7 284 T +(MPI_Send\050\051) 294.55 284 T +(w) 356.72 284 T +(as) 365.26 284 T +(able) 378.11 284 T +(to) 400.95 284 T +(return) 413.13 284 T +(and) 444.63 284 T +(the) 464.81 284 T +(process) 482.32 284 T +(has) 521.16 284 T +(called) 180 270 T +(MPI_Finalize\050\051.) 211.2 270 T +(System) 290.73 270 T +(b) 328.61 270 T +(uf) 334.37 270 T +(fers,) 344.06 270 T +(which) 367.59 270 T +(can) 399.46 270 T +(be) 418.65 270 T +(thought) 432.52 270 T +(of) 471.73 270 T +(as) 484.27 270 T +(message) 496.8 270 T +(queues) 180 256 T +(for) 216.26 256 T +(each) 233.18 256 T +(MPI) 258.1 256 T +(process,) 282.36 256 T +(can) 324.29 256 T +(be) 343.87 256 T +(e) 358.14 256 T +(xamined) 363.28 256 T +(with) 407.54 256 T +(the) 431.81 256 T +2 F +(mpimsg) 449.41 256 T +0 F +(command.) 489.67 256 T +(The message sho) 180 171 T +(ws that it originated from process rank 0 using) 261.68 171 T +180 315/G187248 FmPA +(MPI_COMM_W) 180 157 T +(ORLD and that it is w) 262.55 157 T +(aiting in the message queue of pro-) 368.76 157 T +(cess rank 1, the destination. The tag is 11 and the message contains 64 ele-) 180 143 T +(ments of type MPI_INT) 180 129 T +(. This information corresponds to the ar) 294.77 129 T +(guments) 484.86 129 T +(gi) 180 115 T +(v) 189.04 115 T +(en to MPI_Send\050\051. Since the application is f) 194.86 115 T +(aulty and will ne) 405.38 115 T +(v) 485.41 115 T +(er com-) 491.23 115 T +(plete, we will kill it with the) 180 101 T +2 F +(lamclean) 318.67 101 T +0 F +( command.) 362.66 101 T +3 F +(% lamclean -v) 180 79 T +180 223/G187249 FmPA +63 568 180 593.99 C +0 0 0 1 0 0 0 1 K +63 568 180 593.99 R +7 X +V +72 575.99 162 593.99 R +V +4 12 Q +0 X +(Monitoring) 103.33 585.99 T +72 730/G183260 FmPA +0 0 612 792 C +0 0 0 1 0 0 0 1 K +162 450 558 526 C +0 0 0 1 0 0 0 1 K +162 454 558 508 R +7 X +V +3 10 Q +0 X +(% mpitask) 162 501.33 T +162 645/G93360 FmPA +(TASK \050G/L\051) 162 488.33 T +(FUNCTION) 252 488.33 T +(PEER|ROOT) 324 488.33 T +(TAG) 396 488.33 T +(COMM) 432 488.33 T +(COUNT) 468 488.33 T +(DATATYPE) 504 488.33 T +162 632/G93376 FmPA +(0/0 trivial) 162 475.33 T +(Finalize) 252 475.33 T +162 619/G93373 FmPA +(1/1 trivial) 162 464.33 T +(Recv) 252 464.33 T +(0/0) 324 464.33 T +(12) 396 464.33 T +(WORLD) 432 464.33 T +(64) 468 464.33 T +(INT) 504 464.33 T +0 0 612 792 C +162 189 558 252 C +0 0 0 1 0 0 0 1 K +162 198 558 243 R +7 X +V +3 10 Q +0 X +(% mpimsg) 162 236.33 T +162 380/G93390 FmPA +(SRC \050G/L\051) 162 223.33 T +(DEST \050G/L\051) 234 223.33 T +(TAG) 306 223.33 T +(COMM) 342 223.33 T +(COUNT) 378 223.33 T +(DATATYPE) 432 223.33 T +(MSG) 504 223.33 T +162 367/G93394 FmPA +(0/0) 162 210.33 T +(1/1) 234 210.33 T +(11) 306 210.33 T +(WORLD) 342 210.33 T +(64) 378 210.33 T +(INT) 432 210.33 T +(n1,#0) 504 210.33 T +162 354/G93398 FmPA +0 0 612 792 C +0 0 0 1 0 0 0 1 K +[/CropBox[0 0 FmDC 612 792 FmDC FmBx]/PAGE FmPD +[/Dest/P.17/DEST FmPD2 +[/Title(A)/Rect[171 63 549 639]/ARTICLE FmPD2 +FMENDPAGE +%%EndPage: "17" 17 +%%Page: "18" 18 +612 792 0 FMBEGINPAGE +0 FrameSetSepColors +FrameNoSep +0 0 0 1 0 0 0 1 K +180 745.99 540 756 R +7 X +V +1 12 Q +0 X +(18) 180 748 T +180 32.69 540 42.7 R +7 X +V +0 X +( MPI Primer / Developing with LAM) 180 34.7 T +180 738 540 738 2 L +7 X +V +1 H +2 Z +0 X +N +540 54 180 54 2 L +7 X +V +0 X +N +180 72 540 630 R +7 X +V +0 F +0 X +(The) 180 622 T +(LAM) 200.83 622 T +(session) 229.67 622 T +(should) 266.51 622 T +(be) 300.68 622 T +(in) 314.18 622 T +(the) 325.69 622 T +(same) 342.53 622 T +(state) 369.36 622 T +(as) 393.53 622 T +(after) 405.7 622 T +(in) 429.85 622 T +(v) 438.71 622 T +(oking) 444.47 622 T +(lamboot.) 473.98 622 T +(Y) 518.48 622 T +(ou) 525.83 622 T +180 766/G187250 FmPA +(can) 180 608 T +(also) 199.27 608 T +(terminate) 221.22 608 T +(the) 269.17 608 T +(session) 286.45 608 T +(and) 323.73 608 T +(restart) 343.68 608 T +(it) 376.28 608 T +(with) 385.57 608 T +(lamboot,) 409.53 608 T +(b) 454.48 608 T +(ut) 460.24 608 T +(this) 472.19 608 T +(is) 492.15 608 T +(a) 502.77 608 T +(much) 510.72 608 T +(slo) 180 594 T +(wer operation. Y) 193.7 594 T +(ou can no) 273.36 594 T +(w correct the program, recompile and rerun.) 319.72 594 T +(T) 180 572 T +(o terminate LAM, use the) 186.37 572 T +2 F +(wipe) 313.02 572 T +0 F +( tool. The host \336le ar) 335.69 572 T +(gument must be the) 435.47 572 T +180 716/G187253 FmPA +(same as the one gi) 180 558 T +(v) 267.68 558 T +(en to lamboot.) 273.5 558 T +3 F +(% wipe -v ) 180 536 T +180 680/G187254 FmPA +63 537.01 180 579.99 C +0 0 0 1 0 0 0 1 K +63 537.01 180 579.99 R +7 X +V +72 543.99 162 579.99 R +V +4 12 Q +0 X +(T) 79.44 571.99 T +(erminating the) 86.34 571.99 T +72 716/G183261 FmPA +(Session) 124.66 557.99 T +0 0 612 792 C +0 0 0 1 0 0 0 1 K +[/CropBox[0 0 FmDC 612 792 FmDC FmBx]/PAGE FmPD +[/Dest/P.18/DEST FmPD2 +[/Title(A)/Rect[171 63 549 639]/ARTICLE FmPD2 +FMENDPAGE +%%EndPage: "18" 18 +%%Page: "19" 19 +612 792 0 FMBEGINPAGE +0 FrameSetSepColors +FrameNoSep +0 0 0 1 0 0 0 1 K +180 745.99 540 756 R +7 X +V +1 12 Q +0 X +(19) 526.66 748 T +180 32.69 540 42.7 R +7 X +V +0 X +( MPI Primer / Developing with LAM) 180 34.7 T +180 738 540 738 2 L +7 X +V +1 H +2 Z +0 X +N +540 54 180 54 2 L +7 X +V +0 X +N +180 72 540 630 R +7 X +V +1 18 Q +0 X +(MPI Pr) 180 618 T +(ogramming Primer) 235.66 618 T +180 762/G187255 FmPA +180 437.98 540 450 C +0 0 0 1 0 0 0 1 K +180 437.98 540 450 R +7 X +V +180 448.99 648 448.99 2 L +V +1 H +2 Z +0 X +N +180 445.97 648 445.97 2 L +7 X +V +0 X +N +0 0 612 792 C +0 0 0 1 0 0 0 1 K +0 12 Q +0 X +(Through) 180 429.98 T +(Message) 224.2 429.98 T +(P) 269.05 429.98 T +(assing) 275.54 429.98 T +(Interf) 308.41 429.98 T +(ace) 334.94 429.98 T +(\050MPI\051) 353.79 429.98 T +(an) 385.99 429.98 T +(application) 400.18 429.98 T +(vie) 456.38 429.98 T +(ws) 470.74 429.98 T +(its) 486.94 429.98 T +(parallel) 501.14 429.98 T +180 574/G187256 FmPA +(en) 180 415.98 T +(vironment) 190.85 415.98 T +(as) 242.81 415.98 T +(a) 255.44 415.98 T +(static) 263.4 415.98 T +(group) 291.37 415.98 T +(of) 322 415.98 T +(processes.) 334.63 415.98 T +(An) 386.24 415.98 T +(MPI) 403.54 415.98 T +(process) 427.51 415.98 T +(is) 466.13 415.98 T +(born) 476.77 415.98 T +(into) 501.4 415.98 T +(the) 522.7 415.98 T +(w) 180 401.98 T +(orld with zero or more siblings. This initial collection of processes is) 188.54 401.98 T +(called) 180 387.98 T +(the) 211.4 387.98 T +(w) 228.8 387.98 T +(orld) 237.34 387.98 T +(group.) 259.41 387.98 T +(A) 293.15 387.98 T +(unique) 304.55 387.98 T +(number) 339.95 387.98 T +(,) 376.13 387.98 T +(called) 381.87 387.98 T +(a) 413.26 387.98 T +(rank,) 421.33 387.98 T +(is) 448.39 387.98 T +(assigned) 459.14 387.98 T +(to) 503.2 387.98 T +(each) 515.28 387.98 T +(member) 180 373.98 T +(process) 221.66 373.98 T +(from) 259.99 373.98 T +(the) 285.66 373.98 T +(sequence) 302.66 373.98 T +(0) 348.98 373.98 T +(through) 357.32 373.98 T +(N-1,) 396.99 373.98 T +(where) 420.99 373.98 T +(N) 452.64 373.98 T +(is) 463.65 373.98 T +(the) 473.99 373.98 T +(total) 490.99 373.98 T +(num-) 514.67 373.98 T +(ber) 180 359.98 T +(of) 198.22 359.98 T +(processes) 211.12 359.98 T +(in) 260 359.98 T +(the) 272.24 359.98 T +(w) 289.8 359.98 T +(orld) 298.35 359.98 T +(group.) 320.58 359.98 T +(A) 354.48 359.98 T +(member) 366.04 359.98 T +(can) 408.26 359.98 T +(query) 427.82 359.98 T +(its) 458.04 359.98 T +(o) 472.28 359.98 T +(wn) 477.98 359.98 T +(rank) 495.55 359.98 T +(and) 519.77 359.98 T +(the) 180 345.98 T +(size) 197.18 345.98 T +(of) 218.35 345.98 T +(the) 230.86 345.98 T +(w) 248.04 345.98 T +(orld) 256.58 345.98 T +(group.) 278.43 345.98 T +(Processes) 311.93 345.98 T +(may) 361.1 345.98 T +(all) 384.28 345.98 T +(be) 398.79 345.98 T +(running) 412.64 345.98 T +(the) 452.48 345.98 T +(same) 469.66 345.98 T +(program) 496.83 345.98 T +(\050SPMD\051 or dif) 180 331.98 T +(ferent programs \050MIMD\051. The w) 249.7 331.98 T +(orld group processes may) 407.2 331.98 T +(subdi) 180 317.98 T +(vide,) 205.7 317.98 T +(creating) 231.87 317.98 T +(additional) 273.01 317.98 T +(subgroups) 323.51 317.98 T +(with) 375.34 317.98 T +(a) 399.17 317.98 T +(potentially) 407 317.98 T +(dif) 460.83 317.98 T +(ferent) 473.86 317.98 T +(rank) 504.35 317.98 T +(in) 528.17 317.98 T +(each group.) 180 303.98 T +(A) 180 281.98 T +(process) 191.22 281.98 T +(sends) 229.76 281.98 T +(a) 258.97 281.98 T +(message) 266.85 281.98 T +(to) 310.06 281.98 T +(a) 321.95 281.98 T +(destination) 329.83 281.98 T +(rank) 385.05 281.98 T +(in) 408.93 281.98 T +(the) 420.82 281.98 T +(desired) 438.03 281.98 T +(group.) 475.24 281.98 T +(A) 508.79 281.98 T +(pro-) 520.01 281.98 T +180 426/G89448 FmPA +(cess) 180 267.98 T +(may) 202.82 267.98 T +(or) 226.31 267.98 T +(may) 239.13 267.98 T +(not) 262.62 267.98 T +(specify) 280.78 267.98 T +(a) 318.26 267.98 T +(source) 326.42 267.98 T +(rank) 360.56 267.98 T +(when) 384.71 267.98 T +(recei) 413.53 267.98 T +(ving) 436.54 267.98 T +(a) 460.7 267.98 T +(message.) 468.86 267.98 T +(Mes-) 515.34 267.98 T +(sages are further \336ltered by an arbitrary) 180 253.98 T +(, user speci\336ed, synchronization) 369.16 253.98 T +(inte) 180 239.98 T +(ger called a tag, which the recei) 197.82 239.98 T +(v) 349.8 239.98 T +(er may also ignore.) 355.62 239.98 T +(An) 180 217.98 T +(important) 196.74 217.98 T +(feature) 245.47 217.98 T +(of) 280.86 217.98 T +(MPI) 292.92 217.98 T +(is) 316.33 217.98 T +(the) 326.41 217.98 T +(ability) 343.14 217.98 T +(to) 375.88 217.98 T +(guarantee) 387.29 217.98 T +(independent) 436.01 217.98 T +(softw) 496.73 217.98 T +(are) 523.28 217.98 T +180 362/G89472 FmPA +(de) 180 203.98 T +(v) 191.03 203.98 T +(elopers that their choice of tag in a particular library will not con\337ict) 196.85 203.98 T +(with the choice of tag by some other independent de) 180 189.98 T +(v) 430.66 189.98 T +(eloper or by the end) 436.48 189.98 T +(user) 180 175.98 T +(of) 202.57 175.98 T +(the) 215.14 175.98 T +(library) 232.37 175.98 T +(.) 263.59 175.98 T +(A) 269.16 175.98 T +(further) 280.4 175.98 T +(synchronization) 315.62 175.98 T +(inte) 394.85 175.98 T +(ger) 412.67 175.98 T +(called) 430.57 175.98 T +(a) 461.8 175.98 T +(conte) 469.7 175.98 T +(xt) 495.52 175.98 T +(is) 507.43 175.98 T +(allo-) 518 175.98 T +(cated) 180 161.98 T +(by) 207.62 161.98 T +(MPI) 221.92 161.98 T +(and) 245.55 161.98 T +(is) 265.18 161.98 T +(automatically) 275.48 161.98 T +(attached) 343.11 161.98 T +(to) 385.39 161.98 T +(e) 397.02 161.98 T +(v) 402.05 161.98 T +(ery) 407.87 161.98 T +(message.) 425.49 161.98 T +(Thus,) 471.45 161.98 T +(the) 500.75 161.98 T +(four) 517.71 161.98 T +(main) 180 147.98 T +(synchronization) 206.37 147.98 T +(v) 285.39 147.98 T +(ariables) 291.09 147.98 T +(in) 330.77 147.98 T +(MPI) 342.48 147.98 T +(are) 366.18 147.98 T +(the) 383.2 147.98 T +(source) 400.23 147.98 T +(and) 433.91 147.98 T +(destination) 453.61 147.98 T +(ranks,) 508.64 147.98 T +(the tag and the conte) 180 133.98 T +(xt.) 279.13 133.98 T +(A) 180 111.98 T +(communicator) 191.4 111.98 T +(is) 263.45 111.98 T +(an) 274.19 111.98 T +(opaque) 288.25 111.98 T +(MPI) 325.63 111.98 T +(data) 349.7 111.98 T +(structure) 372.42 111.98 T +(that) 417.14 111.98 T +(contains) 437.88 111.98 T +(information) 480.6 111.98 T +180 256/G89471 FmPA +(on) 180 97.98 T +(one) 194.26 97.98 T +(group) 213.86 97.98 T +(and) 244.12 97.98 T +(that) 263.71 97.98 T +(contains) 283.98 97.98 T +(one) 326.24 97.98 T +(conte) 345.83 97.98 T +(xt.) 371.64 97.98 T +(A) 386.25 97.98 T +(communicator) 397.17 97.98 T +(is) 468.76 97.98 T +(an) 479.03 97.98 T +(ar) 492.63 97.98 T +(gument) 501.73 97.98 T +63 381.95 180 437.97 C +0 0 0 1 0 0 0 1 K +63 381.95 180 437.97 R +7 X +V +72 392.97 162 437.97 R +V +4 14 Q +0 X +(Basic) 72 428.64 T +(Concepts) 106.78 428.64 T +72 573/G183314 FmPA +0 0 612 792 C +0 0 0 1 0 0 0 1 K +[/CropBox[0 0 FmDC 612 792 FmDC FmBx]/PAGE FmPD +[/Dest/P.19/DEST FmPD2 +[/Title(A)/Rect[171 63 549 639]/ARTICLE FmPD2 +FMENDPAGE +%%EndPage: "19" 19 +%%Page: "20" 20 +612 792 0 FMBEGINPAGE +0 FrameSetSepColors +FrameNoSep +0 0 0 1 0 0 0 1 K +180 745.99 540 756 R +7 X +V +1 12 Q +0 X +(20) 180 748 T +180 32.69 540 42.7 R +7 X +V +0 X +( MPI Primer / Developing with LAM) 180 34.7 T +180 738 540 738 2 L +7 X +V +1 H +2 Z +0 X +N +540 54 180 54 2 L +7 X +V +0 X +N +180 72 540 630 R +7 X +V +0 F +0 X +(to) 180 622 T +(all) 191.65 622 T +(MPI) 205.96 622 T +(communication) 229.6 622 T +(routines.) 306.58 622 T +(After) 350.55 622 T +(a) 378.18 622 T +(process) 385.82 622 T +(is) 424.12 622 T +(created) 434.43 622 T +(and) 471.38 622 T +(initializes) 491.02 622 T +(MPI, three prede\336ned communicators are a) 180 608 T +(v) 387.71 608 T +(ailable.) 393.41 608 T +(MPI_COMM_W) 180 586 T +(ORLD) 262.55 586 T +(the w) 324 586 T +(orld group) 350.21 586 T +180 730/G89476 FmPA +(MPI_COMM_SELF) 180 570 T +(group with one member) 324 570 T +(, myself) 438.5 570 T +180 714/G89477 FmPA +(MPI_COMM_P) 180 554 T +(ARENT) 256.91 554 T +(an intercommunicator between tw) 324 554 T +(o groups:) 487.51 554 T +180 698/G97242 FmPA +(my w) 324 540 T +(orld group and my parent group \050See) 350.88 540 T +2 F +(Dynamic Pr) 324 526 T +(ocesses) 381.78 526 T +0 F +(.\051) 417.77 526 T +(Man) 180 504 T +(y applications require no other communicators be) 201.82 504 T +(yond the w) 439.6 504 T +(orld com-) 492.8 504 T +180 648/G89470 FmPA +(municator) 180 490 T +(.) 228 490 T +(If) 233.29 490 T +(ne) 243.56 490 T +(w) 254.59 490 T +(subgroups) 265.54 490 T +(or) 317.15 490 T +(ne) 329.44 490 T +(w) 340.46 490 T +(conte) 351.41 490 T +(xts) 377.23 490 T +(are) 393.51 490 T +(needed,) 410.45 490 T +(additional) 449.72 490 T +(commu-) 500 490 T +(nicators must be created.) 180 476 T +(MPI constants, templates and prototypes are in the MPI header \336le, mpi.h.) 180 454 T +180 598/G89491 FmPA +3 F +(#include ) 180 432 T +180 576/G89494 FmPA +[/CropBox[0 0 FmDC 612 792 FmDC FmBx]/PAGE FmPD +[/Dest/P.20/DEST FmPD2 +[/Title(A)/Rect[171 63 549 639]/ARTICLE FmPD2 +FMENDPAGE +%%EndPage: "20" 20 +%%Page: "21" 21 +612 792 0 FMBEGINPAGE +0 FrameSetSepColors +FrameNoSep +0 0 0 1 0 0 0 1 K +180 745.99 540 756 R +7 X +V +1 12 Q +0 X +(21) 526.66 748 T +180 32.69 540 42.7 R +7 X +V +0 X +( MPI Primer / Developing with LAM) 180 34.7 T +180 738 540 738 2 L +7 X +V +1 H +2 Z +0 X +N +540 54 180 54 2 L +7 X +V +0 X +N +180 72 540 630 R +7 X +V +3 F +0 X +(MPI_Init) 180 622 T +0 F +(Initialize MPI state.) 324 622 T +180 766/G89351 FmPA +3 F +(MPI_Finalize) 180 608 T +0 F +(Clean up MPI state.) 324 608 T +3 F +(MPI_Abort) 180 594 T +0 F +(Abnormally terminate.) 324 594 T +3 F +(MPI_Comm_size) 180 580 T +0 F +(Get group process count.) 324 580 T +3 F +(MPI_Comm_rank) 180 566 T +0 F +(Get my rank within process group.) 324 566 T +3 10 Q +(MPI_Initialized) 180 537.33 T +0 F +(Has MPI been initialized?) 324 537.33 T +180 681/G92687 FmPA +180 508.99 540 519 C +0 0 0 1 0 0 0 1 K +180 508.99 540 519 R +7 X +V +180 517.99 649.01 517.99 2 L +V +1 H +2 Z +0 X +N +0 0 612 792 C +0 0 0 1 0 0 0 1 K +0 12 Q +0 X +(The \336rst MPI routine called by a program must be MPI_Init\050\051. The com-) 180 500.99 T +180 645/G187260 FmPA +(mand line ar) 180 486.99 T +(guments are passed to MPI_Init\050\051.) 239.77 486.99 T +3 F +(MPI_Init\050int *argc, char **argv[]\051;) 180 464.99 T +180 609/G89499 FmPA +0 F +(A process ceases MPI operations with MPI_Finalize\050\051.) 180 442.99 T +180 587/G89500 FmPA +3 F +(MPI_Finalize\050void\051;) 180 420.99 T +180 565/G89503 FmPA +0 F +(In) 180 398.99 T +(response) 192.39 398.99 T +(to) 236.76 398.99 T +(an) 248.49 398.99 T +(error) 262.21 398.99 T +(condition,) 287.92 398.99 T +(a) 338.64 398.99 T +(process) 346.36 398.99 T +(can) 384.74 398.99 T +(terminate) 403.79 398.99 T +(itself) 451.5 398.99 T +(and) 477.89 398.99 T +(all) 497.61 398.99 T +(mem-) 512 398.99 T +180 543/G93726 FmPA +(bers) 180 384.99 T +(of) 202.43 384.99 T +(a) 214.87 384.99 T +(communicator) 222.63 384.99 T +(with) 294.39 384.99 T +(MPI_Abort\050\051.) 318.17 384.99 T +(The) 386.93 384.99 T +(implementation) 408.03 384.99 T +(may) 485.8 384.99 T +(report) 508.9 384.99 T +(the) 180 370.99 T +(error) 197.35 370.99 T +(code) 223.36 370.99 T +(ar) 248.7 370.99 T +(gument) 257.81 370.99 T +(to) 296.5 370.99 T +(the) 308.52 370.99 T +(user) 325.88 370.99 T +(in) 348.56 370.99 T +(a) 360.58 370.99 T +(manner) 368.6 370.99 T +(consistent) 407.28 370.99 T +(with) 457.97 370.99 T +(the) 481.99 370.99 T +(underly-) 499.34 370.99 T +(ing operation system.) 180 356.99 T +3 F +(MPI_Abort \050MPI_Comm comm, int errcode\051;) 180 334.99 T +180 479/G93727 FmPA +0 F +(T) 180 312.99 T +(w) 186.37 312.99 T +(o) 194.92 312.99 T +(numbers) 203.79 312.99 T +(that) 247.99 312.99 T +(are) 268.86 312.99 T +(v) 286.38 312.99 T +(ery) 292.2 312.99 T +(useful) 310.39 312.99 T +(to) 342.59 312.99 T +(most) 354.8 312.99 T +(parallel) 381.01 312.99 T +(applications) 419.87 312.99 T +(are) 480.73 312.99 T +(the) 498.26 312.99 T +(total) 515.79 312.99 T +180 457/G89490 FmPA +(number of parallel processes and self process identi\336cation. This informa-) 180 298.99 T +(tion is learned from the MPI_COMM_W) 180 284.99 T +(ORLD communicator using the) 377.53 284.99 T +(routines MPI_Comm_size\050\051 and MPI_Comm_rank\050\051.) 180 270.99 T +3 F +(MPI_Comm_size \050MPI_Comm comm, int *size\051;) 180 248.99 T +180 393/G89581 FmPA +(MPI_Comm_rank \050MPI_Comm comm, int *rank\051;) 180 230.99 T +180 375/G89969 FmPA +0 F +(Of course, an) 180 208.99 T +(y communicator may be used, b) 244.13 208.99 T +(ut the w) 397.2 208.99 T +(orld information is) 435.74 208.99 T +180 353/G188560 FmPA +(usually k) 180 194.99 T +(e) 223.55 194.99 T +(y to decomposing data across the entire parallel application.) 228.7 194.99 T +63 531 180 629.99 C +0 0 0 1 0 0 0 1 K +63 531 180 629.99 R +7 X +V +72 530.99 162 629.99 R +3 X +V +0.5 H +0 Z +N +0 0 612 792 C +63 474 180 509.06 C +0 0 0 1 0 0 0 1 K +63 474 180 509.06 R +7 X +V +72 482.06 162 509.06 R +V +4 14 Q +0 X +(Initialization) 84.99 499.72 T +72 644/G183265 FmPA +0 0 612 792 C +63 276 180 320.98 C +0 0 0 1 0 0 0 1 K +63 276 180 320.98 R +7 X +V +72 284.98 162 320.98 R +V +4 12 Q +0 X +(Basic P) 91.79 312.98 T +(arallel) 129.34 312.98 T +72 457/G183266 FmPA +(Inf) 99.64 298.98 T +(ormation) 114.67 298.98 T +0 0 612 792 C +0 0 0 1 0 0 0 1 K +[/CropBox[0 0 FmDC 612 792 FmDC FmBx]/PAGE FmPD +[/Dest/P.21/DEST FmPD2 +[/Title(A)/Rect[171 63 549 639]/ARTICLE FmPD2 +FMENDPAGE +%%EndPage: "21" 21 +%%Page: "22" 22 +612 792 0 FMBEGINPAGE +0 FrameSetSepColors +FrameNoSep +0 0 0 1 0 0 0 1 K +180 745.99 540 756 R +7 X +V +1 12 Q +0 X +(22) 180 748 T +180 32.69 540 42.7 R +7 X +V +0 X +( MPI Primer / Developing with LAM) 180 34.7 T +180 738 540 738 2 L +7 X +V +1 H +2 Z +0 X +N +540 54 180 54 2 L +7 X +V +0 X +N +180 72 540 630 R +7 X +V +3 F +0 X +(MPI_Send) 180 622 T +0 F +(Send a message in standard mode.) 342 622 T +180 766/G187271 FmPA +3 F +(MPI_Recv) 180 608 T +0 F +(Recei) 342 608 T +(v) 369.02 608 T +(e a message.) 374.84 608 T +3 F +(MPI_Get_count) 180 594 T +0 F +(Count the elements recei) 342 594 T +(v) 460.68 594 T +(ed.) 466.5 594 T +3 F +(MPI_Probe) 180 580 T +0 F +(W) 342 580 T +(ait for message arri) 352.37 580 T +(v) 444.37 580 T +(al.) 450.07 580 T +3 10 Q +(MPI_Bsend) 180 551.33 T +0 F +(Send a message in b) 342 551.33 T +(uf) 422.9 551.33 T +(fered mode.) 430.98 551.33 T +180 695/G89508 FmPA +3 F +(MPI_Ssend) 180 539.33 T +0 F +(Send a message in synchronous mode.) 342 539.33 T +3 F +(MPI_Rsend) 180 527.33 T +0 F +(Send a message in ready mode.) 342 527.33 T +3 F +(MPI_Buffer_attach) 180 515.33 T +0 F +(Attach a b) 342 515.33 T +(uf) 382.9 515.33 T +(fer for b) 390.98 515.33 T +(uf) 423.54 515.33 T +(fered sends.) 431.62 515.33 T +3 F +(MPI_Buffer_detach) 180 503.33 T +0 F +(Detach the current b) 342 503.33 T +(uf) 423.16 503.33 T +(fer) 431.24 503.33 T +(.) 441.79 503.33 T +3 F +(MPI_Sendrecv) 180 491.33 T +0 F +(Send in standard mode, then recei) 342 491.33 T +(v) 477.28 491.33 T +(e.) 482.13 491.33 T +3 F +(MPI_Sendrecv_replace) 180 479.33 T +0 F +(Send and recei) 342 479.33 T +(v) 400.62 479.33 T +(e from/to one area.) 405.47 479.33 T +3 F +(MPI_Get_elements) 180 467.33 T +0 F +(Count the basic elements recei) 342 467.33 T +(v) 463.95 467.33 T +(ed.) 468.8 467.33 T +180 438.99 540 449 C +0 0 0 1 0 0 0 1 K +180 438.99 540 449 R +7 X +V +180 447.99 649.01 447.99 2 L +V +1 H +2 Z +0 X +N +0 0 612 792 C +0 0 0 1 0 0 0 1 K +0 12 Q +0 X +(This) 180 430.99 T +(section) 203.8 430.99 T +(focuses) 240.26 430.99 T +(on) 278.7 430.99 T +(blocking,) 293.17 430.99 T +(point-to-point,) 340.63 430.99 T +(message-passing) 412.76 430.99 T +(routines.) 495.87 430.99 T +180 575/G187272 FmPA +(The) 180 416.99 T +(term) 201.23 416.99 T +(\322blocking\323) 225.8 416.99 T +(in) 281.03 416.99 T +(MPI) 292.94 416.99 T +(means) 316.85 416.99 T +(that) 350.09 416.99 T +(the) 370.66 416.99 T +(routine) 387.9 416.99 T +(does) 424.47 416.99 T +(not) 449.04 416.99 T +(return) 466.95 416.99 T +(until) 498.18 416.99 T +(the) 522.76 416.99 T +(associated data b) 180 402.99 T +(uf) 261.07 402.99 T +(fer may be reused. A point-to-point message is sent by) 270.77 402.99 T +(one process and recei) 180 388.99 T +(v) 282.66 388.99 T +(ed by one process.) 288.48 388.99 T +(The) 180 366.99 T +(issues) 201.38 366.99 T +(of) 232.76 366.99 T +(\337o) 245.47 366.99 T +(w) 257.85 366.99 T +(control) 269.23 366.99 T +(and) 305.94 366.99 T +(b) 325.98 366.99 T +(uf) 331.74 366.99 T +(fering) 341.44 366.99 T +(present) 372.81 366.99 T +(dif) 410.18 366.99 T +(ferent) 423.21 366.99 T +(choices) 453.92 366.99 T +(in) 492.62 366.99 T +(design-) 504.67 366.99 T +180 511/G89589 FmPA +(ing message-passing primiti) 180 352.99 T +(v) 314.36 352.99 T +(es. MPI does not impose a single choice b) 320.18 352.99 T +(ut) 521.59 352.99 T +(instead) 180 338.99 T +(of) 216.77 338.99 T +(fers) 226.46 338.99 T +(four) 247.22 338.99 T +(transmission) 269.99 338.99 T +(modes) 333.43 338.99 T +(that) 367.54 338.99 T +(co) 388.31 338.99 T +(v) 399.46 338.99 T +(er) 405.28 338.99 T +(the) 417.37 338.99 T +(synchronization,) 434.81 338.99 T +(data) 517.24 338.99 T +(transfer) 180 324.99 T +(and) 219.54 324.99 T +(performance) 239.75 324.99 T +(needs) 303.27 324.99 T +(of) 333.48 324.99 T +(most) 346.36 324.99 T +(applications.) 372.59 324.99 T +(The) 436.47 324.99 T +(mode) 458.02 324.99 T +(is) 487.57 324.99 T +(selected) 498.46 324.99 T +(by the sender through four dif) 180 310.99 T +(ferent send routines, all with identical ar) 323.34 310.99 T +(gu-) 516.76 310.99 T +(ment lists. There is only one recei) 180 296.99 T +(v) 342.01 296.99 T +(e routine. The four send modes are:) 347.83 296.99 T +(standard) 180 274.99 T +(The) 270 274.99 T +(send) 291.24 274.99 T +(completes) 315.83 274.99 T +(when) 367.07 274.99 T +(the) 395.65 274.99 T +(system) 412.9 274.99 T +(can) 448.82 274.99 T +(b) 468.06 274.99 T +(uf) 473.82 274.99 T +(fer) 483.52 274.99 T +(the) 499.42 274.99 T +(mes-) 516.67 274.99 T +180 419/G89590 FmPA +(sage) 270 260.99 T +(\050it) 294 260.99 T +(is) 307.34 260.99 T +(not) 318.02 260.99 T +(oblig) 336.02 260.99 T +(ated) 360.64 260.99 T +(to) 383.3 260.99 T +(do) 395.31 260.99 T +(so\051) 409.98 260.99 T +(or) 427.32 260.99 T +(when) 439.99 260.99 T +(the) 468.66 260.99 T +(message) 485.99 260.99 T +(is) 529.32 260.99 T +(recei) 270 246.99 T +(v) 293.02 246.99 T +(ed.) 298.84 246.99 T +(b) 180 230.99 T +(uf) 185.76 230.99 T +(fered) 195.46 230.99 T +(The send completes when the message is b) 270 230.99 T +(uf) 475.39 230.99 T +(fered in) 485.09 230.99 T +180 375/G89591 FmPA +(application supplied space, or when the message is) 270 216.99 T +(recei) 270 202.99 T +(v) 293.02 202.99 T +(ed.) 298.84 202.99 T +(synchronous) 180 186.99 T +(The send completes when the message is recei) 270 186.99 T +(v) 492.65 186.99 T +(ed.) 498.47 186.99 T +180 331/G89592 FmPA +(ready) 180 170.99 T +(The send must not be started unless a matching recei) 270 170.99 T +(v) 522.66 170.99 T +(e) 528.48 170.99 T +180 315/G89593 FmPA +(has been started. The send completes immediately) 270 156.99 T +(.) 510.18 156.99 T +(Standard) 180 134.99 T +(mode) 224.95 134.99 T +(serv) 253.91 134.99 T +(es) 273.72 134.99 T +(the) 286.01 134.99 T +(needs) 302.97 134.99 T +(of) 332.59 134.99 T +(most) 344.88 134.99 T +(applications.) 370.52 134.99 T +(A) 433.8 134.99 T +(standard) 444.76 134.99 T +(mode) 487.71 134.99 T +(mes-) 516.67 134.99 T +180 279/G89980 FmPA +(sage is sent with MPI_Send\050\051.) 180 120.99 T +3 F +(MPI_Send \050void *buf, int count, MPI_Datatype) 180 98.99 T +180 243/G89981 FmPA +(dtype, int dest, int tag, MPI_Comm comm\051;) 216 84.99 T +63 459 180 629.99 C +0 0 0 1 0 0 0 1 K +63 459 180 629.99 R +7 X +V +72 458.99 162 629.99 R +3 X +V +0.5 H +0 Z +N +0 0 612 792 C +63 397 180 439.06 C +0 0 0 1 0 0 0 1 K +63 397 180 439.06 R +7 X +V +72 403.06 162 439.06 R +V +4 14 Q +0 X +( Blocking) 105.59 429.72 T +72 574/G183267 FmPA +(P) 77.79 413.72 T +(oint-to-P) 86.06 413.72 T +(oint) 138.66 413.72 T +0 0 612 792 C +63 347.98 180 374.98 C +0 0 0 1 0 0 0 1 K +63 347.98 180 374.98 R +7 X +V +72 356.98 162 374.98 R +V +4 12 Q +0 X +(Send Modes) 99.66 366.98 T +72 511/G89648 FmPA +0 0 612 792 C +63 115.98 180 142.98 C +0 0 0 1 0 0 0 1 K +63 115.98 180 142.98 R +7 X +V +72 124.98 162 142.98 R +V +4 12 Q +0 X +(Standard Send) 85.64 134.98 T +72 279/G89979 FmPA +0 0 612 792 C +0 0 0 1 0 0 0 1 K +[/CropBox[0 0 FmDC 612 792 FmDC FmBx]/PAGE FmPD +[/Dest/P.22/DEST FmPD2 +[/Title(A)/Rect[171 63 549 639]/ARTICLE FmPD2 +FMENDPAGE +%%EndPage: "22" 22 +%%Page: "23" 23 +612 792 0 FMBEGINPAGE +0 FrameSetSepColors +FrameNoSep +0 0 0 1 0 0 0 1 K +180 745.99 540 756 R +7 X +V +1 12 Q +0 X +(23) 526.66 748 T +180 32.69 540 42.7 R +7 X +V +0 X +( MPI Primer / Developing with LAM) 180 34.7 T +180 738 540 738 2 L +7 X +V +1 H +2 Z +0 X +N +540 54 180 54 2 L +7 X +V +0 X +N +180 72 540 630 R +7 X +V +0 F +0 X +(An MPI message is not merely a ra) 180 622 T +(w byte array) 348.79 622 T +(. It is a count of typed ele-) 407.99 622 T +180 766/G89982 FmPA +(ments.) 180 608 T +(The) 214.49 608 T +(element) 235.96 608 T +(type) 276.77 608 T +(may) 300.25 608 T +(be) 323.73 608 T +(a) 337.88 608 T +(simple) 346.02 608 T +(ra) 380.84 608 T +(w) 389.98 608 T +(byte) 401.46 608 T +(or) 424.95 608 T +(a) 437.76 608 T +(comple) 445.9 608 T +(x) 481.05 608 T +(data) 489.87 608 T +(struc-) 512.68 608 T +(ture. See) 180 594 T +2 F +(Messa) 224.99 594 T +(g) 255.53 594 T +(e Datatypes) 261.41 594 T +0 F +(.) 318.4 594 T +(The four MPI synchronization v) 180 572 T +(ariables are indicated by the MPI_Send\050\051) 334.34 572 T +180 716/G89606 FmPA +(parameters. The source rank is the caller\325) 180 558 T +(s. The destination rank and mes-) 377.6 558 T +(sage) 180 544 T +(tag) 203.9 544 T +(are) 221.14 544 T +(e) 238.37 544 T +(xplicitly) 243.51 544 T +(gi) 286.1 544 T +(v) 295.13 544 T +(en.) 300.95 544 T +(The) 317.86 544 T +(conte) 339.09 544 T +(xt) 364.9 544 T +(is) 376.81 544 T +(a) 387.39 544 T +(property) 395.3 544 T +(of) 438.53 544 T +(the) 451.1 544 T +(communicator) 468.34 544 T +(.) 537 544 T +(As a blocking routine, the b) 180 522 T +(uf) 313.08 522 T +(fer can be o) 322.78 522 T +(v) 378.9 522 T +(erwritten when MPI_Send\050\051) 384.72 522 T +180 666/G89612 FmPA +(returns.) 180 508 T +(Although) 218.72 508 T +(most) 266.44 508 T +(systems) 292.17 508 T +(will) 332.57 508 T +(b) 353.63 508 T +(uf) 359.39 508 T +(fer) 369.09 508 T +(some) 384.8 508 T +(number) 412.52 508 T +(of) 451.58 508 T +(messages,) 463.96 508 T +(espe-) 514.68 508 T +(cially) 180 494 T +(short) 209.14 494 T +(messages,) 235.61 494 T +(without) 286.41 494 T +(an) 325.56 494 T +(y) 336.7 494 T +(recei) 345.18 494 T +(v) 368.2 494 T +(er) 374.02 494 T +(,) 382.86 494 T +(a) 388.33 494 T +(programmer) 396.14 494 T +(cannot) 457.92 494 T +(rely) 492.39 494 T +(upon) 513.53 494 T +(MPI_Send\050\051 to b) 180 480 T +(uf) 260.42 480 T +(fer e) 270.12 480 T +(v) 291.47 480 T +(en one message. Expect that the routine will not) 297.29 480 T +(return until there is a matching recei) 180 466 T +(v) 353.66 466 T +(er) 359.48 466 T +(.) 368.15 466 T +(A message in an) 180 444 T +(y mode is recei) 258.8 444 T +(v) 331.49 444 T +(ed with MPI_Recv\050\051.) 337.31 444 T +180 588/G89692 FmPA +3 F +(MPI_Recv \050void *buf, int count, MPI_Datatype) 180 422 T +180 566/G89622 FmPA +(dtype, int source, int tag, MPI_Comm comm,) 216 408 T +(MPI_Status *status\051;) 216 394 T +0 F +(Ag) 180 372 T +(ain) 194.6 372 T +(the) 211.75 372 T +(four) 228.89 372 T +(synchronization) 251.36 372 T +(v) 330.49 372 T +(ariables) 336.19 372 T +(are) 375.99 372 T +(indicated,) 393.12 372 T +(with) 442.59 372 T +(source) 466.4 372 T +(and) 500.2 372 T +(des-) 520.01 372 T +180 516/G89620 FmPA +(tination sw) 180 358 T +(apping places. The source rank and the tag can be ignored with) 232.88 358 T +(the) 180 344 T +(special) 196.7 344 T +(v) 232.05 344 T +(alues) 237.75 344 T +(MPI_ANY_SOURCE) 264.44 344 T +(and) 373.14 344 T +(MPI_ANY_T) 392.5 344 T +(A) 458.04 344 T +(G.) 466.23 344 T +(If) 479.92 344 T +(both) 489.94 344 T +(these) 513.31 344 T +(wildcards are used, the ne) 180 330 T +(xt message for the gi) 304.12 330 T +(v) 403.8 330 T +(en communicator is) 409.62 330 T +(recei) 180 316 T +(v) 203.02 316 T +(ed.) 208.84 316 T +(An) 180 294 T +(ar) 197.16 294 T +(gument) 206.26 294 T +(not) 244.76 294 T +(present) 262.59 294 T +(in) 299.74 294 T +(MPI_Send\050\051) 311.57 294 T +(is) 373.39 294 T +(the) 383.88 294 T +(status) 401.04 294 T +(object) 430.87 294 T +(pointer) 462.69 294 T +(.) 496.03 294 T +(The) 501.52 294 T +(sta-) 522.67 294 T +180 438/G89629 FmPA +(tus) 180 280 T +(object) 196.65 280 T +(is) 228.62 280 T +(\336lled) 239.26 280 T +(with) 266.58 280 T +(useful) 290.55 280 T +(information) 322.52 280 T +(when) 381.83 280 T +(MPI_Recv\050\051) 410.46 280 T +(returns.) 473.09 280 T +(If) 512.06 280 T +(the) 522.69 280 T +(source) 180 266 T +(and/or) 214.19 266 T +(tag) 247.73 266 T +(wildcards) 265.26 266 T +(were) 314.79 266 T +(used,) 340.98 266 T +(the) 368.85 266 T +(actual) 386.38 266 T +(recei) 417.91 266 T +(v) 440.93 266 T +(ed) 446.75 266 T +(source) 460.95 266 T +(rank) 495.14 266 T +(and/) 519.34 266 T +(or message tag are accessible directly from the status object.) 180 252 T +3 F +(status.MPI_SOURCE) 180 230 T +0 F +(the sender\325) 324 230 T +(s rank) 376.32 230 T +180 374/G89633 FmPA +3 F +(status.MPI_TAG) 180 214 T +0 F +(the tag gi) 324 214 T +(v) 368.36 214 T +(en by the sender) 374.18 214 T +180 358/G89634 FmPA +(It is erroneous for an MPI program to recei) 180 192 T +(v) 386.32 192 T +(e a message longer than the) 392.14 192 T +180 336/G89635 FmPA +(speci\336ed recei) 180 178 T +(v) 248.68 178 T +(e b) 254.5 178 T +(uf) 268.58 178 T +(fer) 278.28 178 T +(. The message might be truncated or an error condi-) 290.94 178 T +(tion) 180 164 T +(might) 200.83 164 T +(be) 231 164 T +(raised) 244.48 164 T +(or) 275.3 164 T +(both.) 287.45 164 T +(It) 313.95 164 T +(is) 323.44 164 T +(completely) 333.6 164 T +(acceptable) 389.08 164 T +(to) 441.88 164 T +(recei) 453.38 164 T +(v) 476.39 164 T +(e) 482.21 164 T +(a) 489.7 164 T +(message) 497.18 164 T +(shorter than the speci\336ed recei) 180 150 T +(v) 326.33 150 T +(e b) 332.15 150 T +(uf) 346.24 150 T +(fer) 355.93 150 T +(. If a short message may arri) 368.59 150 T +(v) 504.59 150 T +(e, the) 510.41 150 T +(application can query the actual length of the message with) 180 136 T +(MPI_Get_count\050\051.) 180 122 T +3 F +(MPI_Get_count \050MPI_Status *status,) 180 100 T +180 244/G89642 FmPA +(MPI_Datatype dtype, int *count\051;) 216 86 T +63 423.01 180 450.01 C +0 0 0 1 0 0 0 1 K +63 423.01 180 450.01 R +7 X +V +72 432.01 162 450.01 R +V +4 12 Q +0 X +(Recei) 122.93 442.01 T +(v) 150.79 442.01 T +(e) 156.67 442.01 T +72 586/G89697 FmPA +0 0 612 792 C +63 274.99 180 301.99 C +0 0 0 1 0 0 0 1 K +63 274.99 180 301.99 R +7 X +V +72 283.99 162 301.99 R +V +4 12 Q +0 X +(Status Object) 92.34 293.99 T +72 438/G89675 FmPA +0 0 612 792 C +63 172.99 180 199.99 C +0 0 0 1 0 0 0 1 K +63 172.99 180 199.99 R +7 X +V +72 181.99 162 199.99 R +V +4 12 Q +0 X +(Message Lengths) 74.34 191.99 T +72 336/G89683 FmPA +0 0 612 792 C +0 0 0 1 0 0 0 1 K +[/CropBox[0 0 FmDC 612 792 FmDC FmBx]/PAGE FmPD +[/Dest/P.23/DEST FmPD2 +[/Title(A)/Rect[171 63 549 639]/ARTICLE FmPD2 +FMENDPAGE +%%EndPage: "23" 23 +%%Page: "24" 24 +612 792 0 FMBEGINPAGE +0 FrameSetSepColors +FrameNoSep +0 0 0 1 0 0 0 1 K +180 745.99 540 756 R +7 X +V +1 12 Q +0 X +(24) 180 748 T +180 32.69 540 42.7 R +7 X +V +0 X +( MPI Primer / Developing with LAM) 180 34.7 T +180 738 540 738 2 L +7 X +V +1 H +2 Z +0 X +N +540 54 180 54 2 L +7 X +V +0 X +N +180 72 540 630 R +7 X +V +0 F +0 X +(The) 180 622 T +(status) 201.32 622 T +(object) 231.31 622 T +(and) 263.3 622 T +(MPI) 283.29 622 T +(datatype) 307.28 622 T +(are) 350.6 622 T +(those) 367.91 622 T +(pro) 395.9 622 T +(vided) 411.72 622 T +(to) 441.04 622 T +(MPI_Recv\050\051.) 453.03 622 T +(The) 518.68 622 T +180 766/G89643 FmPA +(count) 180 608 T +(returned) 208.92 608 T +(is) 251.17 608 T +(the) 261.43 608 T +(number) 278.36 608 T +(of) 317.27 608 T +(elements) 329.53 608 T +(recei) 374.45 608 T +(v) 397.47 608 T +(ed) 403.29 608 T +(of) 416.87 608 T +(the) 429.13 608 T +(gi) 446.05 608 T +(v) 455.09 608 T +(en) 460.91 608 T +(datatype.) 474.5 608 T +(See) 520.41 608 T +2 F +(Messa) 180 594 T +(g) 210.54 594 T +(e Datatypes) 216.42 594 T +0 F +(.) 273.41 594 T +(Sometimes it is impractical to pre-allocate a recei) 180 572 T +(v) 417.32 572 T +(e b) 423.14 572 T +(uf) 437.23 572 T +(fer) 446.93 572 T +(. MPI_Probe\050\051) 459.59 572 T +180 716/G187285 FmPA +(synchronizes a message and returns information about it without actually) 180 558 T +(recei) 180 544 T +(ving it. Only synchronization v) 203.02 544 T +(ariables and the status object are pro-) 352.38 544 T +(vided as ar) 180 530 T +(guments. MPI_Probe\050\051 does not return until a message is syn-) 231.77 530 T +(chronized.) 180 516 T +3 F +(MPI_Probe \050in source, int tag, MPI_Comm comm,) 180 494 T +180 638/G89723 FmPA +(MPI_Status *status\051;) 216 480 T +0 F +(After a suitable message b) 180 458 T +(uf) 306.4 458 T +(fer has been prepared, the same message) 316.09 458 T +180 602/G89727 FmPA +(reported by MPI_Probe\050\051 can be recei) 180 444 T +(v) 361.31 444 T +(ed with MPI_Recv\050\051.) 367.13 444 T +63 530 180 579.99 C +0 0 0 1 0 0 0 1 K +63 530 180 579.99 R +7 X +V +72 534.99 162 579.99 R +V +4 12 Q +0 X +(Pr) 131.56 571.99 T +(obe) 144 571.99 T +72 716/G89374 FmPA +0 0 612 792 C +0 0 0 1 0 0 0 1 K +[/CropBox[0 0 FmDC 612 792 FmDC FmBx]/PAGE FmPD +[/Dest/P.24/DEST FmPD2 +[/Title(A)/Rect[171 63 549 639]/ARTICLE FmPD2 +FMENDPAGE +%%EndPage: "24" 24 +%%Page: "25" 25 +612 792 0 FMBEGINPAGE +0 FrameSetSepColors +FrameNoSep +0 0 0 1 0 0 0 1 K +180 745.99 540 756 R +7 X +V +1 12 Q +0 X +(25) 526.66 748 T +180 32.69 540 42.7 R +7 X +V +0 X +( MPI Primer / Developing with LAM) 180 34.7 T +180 738 540 738 2 L +7 X +V +1 H +2 Z +0 X +N +540 54 180 54 2 L +7 X +V +0 X +N +180 72 540 630 R +7 X +V +3 F +0 X +(MPI_Isend) 180 622 T +0 F +(Be) 324 622 T +(gin to send a standard message.) 337.15 622 T +180 766/G187289 FmPA +3 F +(MPI_Irecv) 180 608 T +0 F +(Be) 324 608 T +(gin to recei) 337.15 608 T +(v) 390.84 608 T +(e a message.) 396.66 608 T +3 F +(MPI_Wait) 180 594 T +0 F +(Complete a pending request.) 324 594 T +3 F +(MPI_Test) 180 580 T +0 F +(Check or complete a pending request.) 324 580 T +3 F +(MPI_Iprobe) 180 566 T +0 F +(Check message arri) 324 566 T +(v) 417.67 566 T +(al.) 423.37 566 T +3 10 Q +(MPI_Ibsend) 180 537.33 T +0 F +(Be) 324 537.33 T +(gin to send a b) 334.96 537.33 T +(uf) 393.09 537.33 T +(fered message.) 401.17 537.33 T +180 681/G89811 FmPA +3 F +(MPI_Issend) 180 525.33 T +0 F +(Be) 324 525.33 T +(gin to send a synchronous message.) 334.96 525.33 T +3 F +(MPI_Irsend) 180 513.33 T +0 F +(Be) 324 513.33 T +(gin to send a ready message.) 334.96 513.33 T +3 F +(MPI_Request_free) 180 501.33 T +0 F +(Free a pending request.) 324 501.33 T +3 F +(MPI_Waitany) 180 489.33 T +0 F +(Complete an) 324 489.33 T +(y one request.) 374.68 489.33 T +3 F +(MPI_Testany) 180 477.33 T +0 F +(Check or complete an) 324 477.33 T +(y one request.) 411.33 477.33 T +3 F +(MPI_Waitall) 180 465.33 T +0 F +(Complete all requests.) 324 465.33 T +3 F +(MPI_Testall) 180 453.33 T +0 F +(Check or complete all requests.) 324 453.33 T +3 F +(MPI_Waitsome) 180 441.33 T +0 F +(Complete one or more requests.) 324 441.33 T +3 F +(MPI_Testsome) 180 429.33 T +0 F +(Check or complete one or more requests.) 324 429.33 T +3 F +(MPI_Cancel) 180 417.33 T +0 F +(Cancel a pending request.) 324 417.33 T +3 F +(MPI_Test_cancelled) 180 405.33 T +0 F +(Check if a pending request w) 324 405.33 T +(as cancelled.) 440.82 405.33 T +180 376.99 540 387 C +0 0 0 1 0 0 0 1 K +180 376.99 540 387 R +7 X +V +180 385.99 649.01 385.99 2 L +V +1 H +2 Z +0 X +N +0 0 612 792 C +0 0 0 1 0 0 0 1 K +0 12 Q +0 X +(The) 180 368.99 T +(term) 201.15 368.99 T +(\322nonblocking\323) 225.63 368.99 T +(in) 298.78 368.99 T +(MPI) 310.6 368.99 T +(means) 334.43 368.99 T +(that) 367.57 368.99 T +(the) 388.06 368.99 T +(routine) 405.21 368.99 T +(returns) 441.7 368.99 T +(immediately) 477.51 368.99 T +180 513/G89816 FmPA +(and may only ha) 180 354.99 T +(v) 259.42 354.99 T +(e started the message transfer operation, not necessarily) 265.24 354.99 T +(completed) 180 340.99 T +(it.) 232.68 340.99 T +(The) 245.05 340.99 T +(application) 266.4 340.99 T +(may) 322.42 340.99 T +(not) 345.77 340.99 T +(safely) 363.8 340.99 T +(reuse) 395.14 340.99 T +(the) 423.16 340.99 T +(message) 440.51 340.99 T +(b) 483.86 340.99 T +(uf) 489.62 340.99 T +(fer) 499.31 340.99 T +(after) 515.33 340.99 T +(a nonblocking routine returns. The four blocking send routines and one) 180 326.99 T +(blocking recei) 180 312.99 T +(v) 248.02 312.99 T +(e routine all ha) 253.84 312.99 T +(v) 325.25 312.99 T +(e nonblocking counterparts. The nonblock-) 331.07 312.99 T +(ing) 180 298.99 T +(routines) 197.85 298.99 T +(ha) 239.03 298.99 T +(v) 250.12 298.99 T +(e) 255.94 298.99 T +(an) 263.78 298.99 T +(e) 277.63 298.99 T +(xtra) 282.77 298.99 T +(output) 303.95 298.99 T +(ar) 337.14 298.99 T +(gument) 346.25 298.99 T +(-) 384.76 298.99 T +(a) 391.27 298.99 T +(request) 399.12 298.99 T +(object.) 436.29 298.99 T +(The) 471.13 298.99 T +(request) 492.31 298.99 T +(is) 529.48 298.99 T +(later) 180 284.99 T +(passed) 204.07 284.99 T +(to) 238.8 284.99 T +(one) 250.88 284.99 T +(of) 270.95 284.99 T +(a) 283.69 284.99 T +(suite) 291.76 284.99 T +(of) 317.17 284.99 T +(completion) 329.91 284.99 T +(routines.) 386.65 284.99 T +(Once) 431.06 284.99 T +(an) 459.12 284.99 T +(operation) 473.19 284.99 T +(has) 521.26 284.99 T +(completed, its message b) 180 270.99 T +(uf) 299.75 270.99 T +(fer can be reused.) 309.44 270.99 T +(The) 180 248.99 T +(intent) 201.5 248.99 T +(of) 231.67 248.99 T +(nonblocking) 244.51 248.99 T +(message-passing) 307.34 248.99 T +(is) 390.83 248.99 T +(to) 401.68 248.99 T +(start) 413.85 248.99 T +(a) 437.35 248.99 T +(message) 445.52 248.99 T +(transfer) 489.01 248.99 T +(at) 528.5 248.99 T +180 393/G89822 FmPA +(the) 180 234.99 T +(earliest) 197.54 234.99 T +(possible) 235.07 234.99 T +(moment,) 277.29 234.99 T +(continue) 322.5 234.99 T +(immediately) 366.7 234.99 T +(with) 429.58 234.99 T +(important) 453.8 234.99 T +(compu-) 503.34 234.99 T +(tation,) 180 220.99 T +(and) 212.78 220.99 T +(then) 232.55 220.99 T +(insist) 255.66 220.99 T +(upon) 283.45 220.99 T +(completion) 309.9 220.99 T +(at) 366.34 220.99 T +(the) 377.45 220.99 T +(latest) 394.56 220.99 T +(possible) 422.34 220.99 T +(moment.) 464.12 220.99 T +(When) 508.9 220.99 T +(the earliest and latest moment are the same, nonblocking routines are not) 180 206.99 T +(useful. Otherwise, a non-blocking operation on certain hardw) 180 192.99 T +(are could) 474.82 192.99 T +(o) 180 178.99 T +(v) 185.82 178.99 T +(erlap communication and computation, thus impro) 191.64 178.99 T +(ving performance.) 434.11 178.99 T +(MPI_Isend\050\051 be) 180 156.99 T +(gins a standard nonblocking message send.) 255.47 156.99 T +180 301/G89843 FmPA +3 F +(MPI_Isend \050void *buf, int count, MPI_Datatype) 180 134.99 T +180 279/G89846 FmPA +(dtype, int dest, int tag, MPI_Comm comm,) 216 120.99 T +(MPI_Request *req\051;) 216 106.99 T +63 396 180 629.99 C +0 0 0 1 0 0 0 1 K +63 396 180 629.99 R +7 X +V +72 395.99 162 629.99 R +3 X +V +0.5 H +0 Z +N +0 0 612 792 C +63 311.03 180 377.06 C +0 0 0 1 0 0 0 1 K +63 311.03 180 377.06 R +7 X +V +72 323.06 162 377.06 R +V +4 14 Q +0 X +(Nonblocking) 85.76 367.72 T +72 512/G89815 FmPA +(P) 77.79 351.72 T +(oint-to-P) 86.06 351.72 T +(oint) 138.66 351.72 T +0 0 612 792 C +0 0 0 1 0 0 0 1 K +[/CropBox[0 0 FmDC 612 792 FmDC FmBx]/PAGE FmPD +[/Dest/P.25/DEST FmPD2 +[/Title(A)/Rect[171 63 549 639]/ARTICLE FmPD2 +FMENDPAGE +%%EndPage: "25" 25 +%%Page: "26" 26 +612 792 0 FMBEGINPAGE +0 FrameSetSepColors +FrameNoSep +0 0 0 1 0 0 0 1 K +180 745.99 540 756 R +7 X +V +1 12 Q +0 X +(26) 180 748 T +180 32.69 540 42.7 R +7 X +V +0 X +( MPI Primer / Developing with LAM) 180 34.7 T +180 738 540 738 2 L +7 X +V +1 H +2 Z +0 X +N +540 54 180 54 2 L +7 X +V +0 X +N +180 72 540 630 R +7 X +V +0 F +0 X +(Lik) 180 622 T +(e) 196.55 622 T +(wise, MPI_Irecv\050\051 be) 201.58 622 T +(gins a nonblocking message recei) 303.7 622 T +(v) 464.7 622 T +(e.) 470.52 622 T +180 766/G89844 FmPA +3 F +(MPI_Irecv \050void *buf, int count, MPI_Datatype) 180 600 T +180 744/G89851 FmPA +(dtype, int source, int tag, MPI_Comm comm,) 216 586 T +(MPI_Request *req\051;) 216 572 T +0 F +(Both routines accept ar) 180 550 T +(guments with the same meaning as their blocking) 290.76 550 T +180 694/G89849 FmPA +(counterparts.) 180 536 T +(When) 245.09 536 T +(the) 276.52 536 T +(application) 293.95 536 T +(wishes) 350.05 536 T +(to) 385.49 536 T +(complete) 397.6 536 T +(a) 444.36 536 T +(nonblocking) 452.46 536 T +(send) 515.23 536 T +(or recei) 180 522 T +(v) 216.01 522 T +(e, a completion routine is called with the corresponding request.) 221.83 522 T +(The) 180 508 T +(T) 201.56 508 T +(est\050\051) 208.06 508 T +(routine) 232.28 508 T +(is) 269.18 508 T +(nonblocking) 280.09 508 T +(and) 343 508 T +(the) 363.23 508 T +(W) 380.8 508 T +(ait\050\051) 391.16 508 T +(routine) 414.06 508 T +(is) 450.96 508 T +(blocking.) 461.87 508 T +(Other) 509.77 508 T +(completion routines operate on multiple requests.) 180 494 T +3 F +(MPI_Test \050MPI_Request *req, int *flag,) 180 472 T +180 616/G89863 FmPA +(MPI_Status *status\051;) 216 458 T +(MPI_Wait \050MPI_Request *req, MPI_Status *status\051;) 180 440 T +180 584/G89864 FmPA +0 F +(MPI_T) 180 418 T +(est\050\051) 213.83 418 T +(returns) 237.8 418 T +(a) 273.77 418 T +(\337ag) 281.75 418 T +(in) 302.4 418 T +(an) 314.39 418 T +(output) 328.36 418 T +(ar) 361.68 418 T +(gument) 370.79 418 T +(that) 409.44 418 T +(indicates) 430.09 418 T +(if) 475.4 418 T +(the) 485.38 418 T +(request) 502.69 418 T +180 562/G89865 FmPA +(completed. If true, the status object ar) 180 404 T +(gument is \336lled with information. If) 361.08 404 T +(the request w) 180 390 T +(as a recei) 243.86 390 T +(v) 288.2 390 T +(e operation, the status object is \336lled as in) 294.02 390 T +(MPI_Recv\050\051. Since MPI_W) 180 376 T +(ait\050\051 blocks until completion, the status object) 313.36 376 T +(ar) 180 362 T +(gument is al) 189.11 362 T +(w) 247.66 362 T +(ays \336lled.) 256.2 362 T +(MPI_Iprobe\050\051 is the nonblocking counterpart of MPI_Probe\050\051, b) 180 340 T +(ut it does) 487.04 340 T +180 484/G89872 FmPA +(not) 180 326 T +(return) 198.13 326 T +(a) 229.58 326 T +(request) 237.7 326 T +(object) 275.15 326 T +(since) 307.27 326 T +(it) 334.72 326 T +(does) 344.18 326 T +(not) 368.97 326 T +(be) 387.1 326 T +(gin) 398.25 326 T +(an) 416.38 326 T +(y) 427.53 326 T +(message) 436.32 326 T +(transfer) 479.77 326 T +(that) 519.21 326 T +(w) 180 312 T +(ould need to complete. It sets the \337ag ar) 188.54 312 T +(gument which indicates the pres-) 379.97 312 T +(ence of a matching message \050for a subsequent recei) 180 298 T +(v) 426.29 298 T +(e\051.) 432.11 298 T +3 F +(MPI_Iprobe \050int source, int tag, MPI_Comm comm,) 180 276 T +180 420/G89868 FmPA +(int *flag, MPI_Status *status\051;) 216 262 T +0 F +(Programmers should not consider the nonblocking routines as simply f) 180 240 T +(ast) 519.53 240 T +180 384/G89817 FmPA +(v) 180 226 T +(ersions) 185.82 226 T +(of) 222.45 226 T +(the) 235.08 226 T +(blocking) 252.38 226 T +(calls) 297.01 226 T +(and) 321.64 226 T +(therefore) 341.6 226 T +(the) 387.55 226 T +(preferred) 404.84 226 T +(choice) 451.45 226 T +(in) 485.4 226 T +(all) 497.37 226 T +(appli-) 512 226 T +(cations.) 180 212 T +(Some) 219.54 212 T +(implementations) 249.42 212 T +(cannot) 331.97 212 T +(tak) 366.51 212 T +(e) 381.05 212 T +(adv) 388.93 212 T +(antage) 405.95 212 T +(of) 439.82 212 T +(the) 452.36 212 T +(opportunity) 469.57 212 T +(to) 528.12 212 T +(optimize performance of) 180 198 T +(fered by the nonblocking routines. In order to pre-) 298.33 198 T +(serv) 180 184 T +(e the semantics of the message-passing interf) 199.81 184 T +(ace, some implementa-) 416.32 184 T +(tions) 180 170 T +(may) 206.19 170 T +(e) 229.7 170 T +(v) 234.73 170 T +(en) 240.55 170 T +(be) 254.73 170 T +(slo) 268.9 170 T +(wer) 282.61 170 T +(with) 303.44 170 T +(nonblocking) 327.63 170 T +(transfers.) 390.48 170 T +(Programmers) 437.64 170 T +(should) 505.15 170 T +(ha) 180 156 T +(v) 191.09 156 T +(e a clear and substantial computation o) 196.91 156 T +(v) 383.36 156 T +(erlap before considering non-) 389.18 156 T +(blocking routines.) 180 142 T +63 508 180 557.99 C +0 0 0 1 0 0 0 1 K +63 508 180 557.99 R +7 X +V +72 512.99 162 557.99 R +V +4 12 Q +0 X +(Request) 120.67 549.99 T +72 694/G89892 FmPA +(Completion) 102 535.99 T +0 0 612 792 C +63 298 180 347.99 C +0 0 0 1 0 0 0 1 K +63 298 180 347.99 R +7 X +V +72 302.99 162 347.99 R +V +4 12 Q +0 X +(Pr) 131.56 339.99 T +(obe) 144 339.99 T +72 484/G89884 FmPA +0 0 612 792 C +0 0 0 1 0 0 0 1 K +[/CropBox[0 0 FmDC 612 792 FmDC FmBx]/PAGE FmPD +[/Dest/P.26/DEST FmPD2 +[/Title(A)/Rect[171 63 549 639]/ARTICLE FmPD2 +FMENDPAGE +%%EndPage: "26" 26 +%%Page: "27" 27 +612 792 0 FMBEGINPAGE +0 FrameSetSepColors +FrameNoSep +0 0 0 1 0 0 0 1 K +180 745.99 540 756 R +7 X +V +1 12 Q +0 X +(27) 526.66 748 T +180 32.69 540 42.7 R +7 X +V +0 X +( MPI Primer / Developing with LAM) 180 34.7 T +180 738 540 738 2 L +7 X +V +1 H +2 Z +0 X +N +540 54 180 54 2 L +7 X +V +0 X +N +180 72 540 630 R +7 X +V +3 F +0 X +(MPI_Type_vector) 180 622 T +0 F +(Create a strided homogeneous v) 324 622 T +(ector) 477.79 622 T +(.) 501.12 622 T +180 766/G183280 FmPA +3 F +(MPI_Type_struct) 180 608 T +0 F +(Create a heterogeneous structure.) 324 608 T +3 F +(MPI_Address) 180 594 T +0 F +(Get absolute address of memory location.) 324 594 T +3 F +(MPI_Type_commit) 180 580 T +0 F +(Use datatype in message transfers.) 324 580 T +3 F +(MPI_Pack) 180 566 T +0 F +(P) 324 566 T +(ack element into contiguous b) 330.49 566 T +(uf) 474.24 566 T +(fer) 483.94 566 T +(.) 496.6 566 T +3 F +(MPI_Unpack) 180 552 T +0 F +(Unpack element from contiguous b) 324 552 T +(uf) 493.07 552 T +(fer) 502.76 552 T +(.) 515.42 552 T +3 F +(MPI_Pack_size) 180 538 T +0 F +(Get packing b) 324 538 T +(uf) 391.08 538 T +(fer size requirement.) 400.78 538 T +3 10 Q +(MPI_Type_continuous) 180 509.33 T +0 F +(Create contiguous homogeneous array) 324 509.33 T +(.) 476.93 509.33 T +180 653/G187069 FmPA +3 F +(MPI_Type_hvector) 180 497.33 T +0 F +(Create v) 324 497.33 T +(ector with byte displacement.) 357.45 497.33 T +3 F +(MPI_Type_indexed) 180 485.33 T +0 F +(Create a homogeneous structure.) 324 485.33 T +3 F +(MPI_Type_hindexed) 180 473.33 T +0 F +(Create an inde) 324 473.33 T +(x with byte displacements.) 381.61 473.33 T +3 F +(MPI_Type_extent) 180 461.33 T +0 F +(Get range of space occupied by a datatype.) 324 461.33 T +3 F +(MPI_Type_size) 180 449.33 T +0 F +(Get amount of space occupied by a datatype.) 324 449.33 T +3 F +(MPI_Type_lb) 180 437.33 T +0 F +(Get displacement of datatype\325) 324 437.33 T +(s lo) 443.7 437.33 T +(wer bound.) 457.62 437.33 T +3 F +(MPI_Type_ub) 180 425.33 T +0 F +(Get displacement of datatype\325) 324 425.33 T +(s upper bound.) 443.7 425.33 T +3 F +(MPI_Type_free) 180 413.33 T +0 F +(Free a datatype.) 324 413.33 T +180 384.99 540 395 C +0 0 0 1 0 0 0 1 K +180 384.99 540 395 R +7 X +V +180 393.99 649.01 393.99 2 L +V +1 H +2 Z +0 X +N +0 0 612 792 C +0 0 0 1 0 0 0 1 K +0 12 Q +0 X +(Heterogeneous) 180 376.99 T +(computing) 254.52 376.99 T +(requires) 308.39 376.99 T +(that) 349.59 376.99 T +(message) 370.13 376.99 T +(data) 413.33 376.99 T +(be) 435.86 376.99 T +(typed) 449.73 376.99 T +(or) 478.94 376.99 T +(described) 491.47 376.99 T +180 521/G187074 FmPA +(someho) 180 362.99 T +(w so that its machine representation can be con) 217.03 362.99 T +(v) 443.17 362.99 T +(erted as necessary) 448.99 362.99 T +(between computer architectures. MPI can thoroughly describe message) 180 348.99 T +(datatypes, from the simple primiti) 180 334.99 T +(v) 342.7 334.99 T +(e machine types to comple) 348.52 334.99 T +(x structures,) 476.32 334.99 T +(arrays and indices.) 180 320.99 T +(The message-passing routines all accept a datatype ar) 180 298.99 T +(gument, whose C) 436.72 298.99 T +180 443/G89972 FmPA +(typedef) 180 284.99 T +(is) 218.33 284.99 T +(MPI_Datatype.) 228.68 284.99 T +(F) 304.67 284.99 T +(or) 311.17 284.99 T +(e) 323.51 284.99 T +(xample,) 328.65 284.99 T +(recall) 369.32 284.99 T +(MPI_Send\050\051.) 398.32 284.99 T +(Message) 462.99 284.99 T +(data) 507.32 284.99 T +(is) 529.65 284.99 T +(speci\336ed as a number of elements of a gi) 180 270.99 T +(v) 375.66 270.99 T +(en type.) 381.48 270.99 T +(Se) 180 248.99 T +(v) 191.7 248.99 T +(eral MPI_Datatype v) 197.52 248.99 T +(alues, co) 297.86 248.99 T +(v) 339.67 248.99 T +(ering the basic data units on most com-) 345.49 248.99 T +180 393/G89973 FmPA +(puter architectures, are prede\336ned:) 180 234.99 T +3 F +(MPI_CHAR) 180 212.99 T +0 F +(signed char) 360 212.99 T +180 357/G89989 FmPA +3 F +(MPI_SHORT) 180 196.99 T +0 F +(signed short) 360 196.99 T +180 341/G89990 FmPA +3 F +(MPI_INT) 180 180.99 T +0 F +(signed int) 360 180.99 T +180 325/G89991 FmPA +3 F +(MPI_LONG) 180 164.99 T +0 F +(signed long) 360 164.99 T +180 309/G89992 FmPA +3 F +(MPI_UNSIGNED_CHAR) 180 148.99 T +0 F +(unsigned char) 360 148.99 T +180 293/G89993 FmPA +3 F +(MPI_UNSIGNED_SHORT) 180 132.99 T +0 F +(unsigned short) 360 132.99 T +180 277/G89994 FmPA +3 F +(MPI_UNSIGNED) 180 116.99 T +0 F +(unsigned int) 360 116.99 T +180 261/G89995 FmPA +3 F +(MPI_UNSIGNED_LONG) 180 100.99 T +0 F +(unsigned long) 360 100.99 T +180 245/G89996 FmPA +3 F +(MPI_FLOAT) 180 84.99 T +0 F +(\337oat) 360 84.99 T +180 229/G89997 FmPA +63 405 180 629.99 C +0 0 0 1 0 0 0 1 K +63 405 180 629.99 R +7 X +V +72 404.99 162 629.99 R +3 X +V +0.5 H +0 Z +N +0 0 612 792 C +63 322.99 180 384.98 C +0 0 0 1 0 0 0 1 K +63 322.99 180 384.98 R +7 X +V +72 330.98 162 384.98 R +V +4 14 Q +0 X +(Message) 111.46 375.65 T +72 520/G187070 FmPA +(Datatypes) 102.12 359.65 T +0 0 612 792 C +0 0 0 1 0 0 0 1 K +[/CropBox[0 0 FmDC 612 792 FmDC FmBx]/PAGE FmPD +[/Dest/P.27/DEST FmPD2 +[/Title(A)/Rect[171 63 549 639]/ARTICLE FmPD2 +FMENDPAGE +%%EndPage: "27" 27 +%%Page: "28" 28 +612 792 0 FMBEGINPAGE +0 FrameSetSepColors +FrameNoSep +0 0 0 1 0 0 0 1 K +180 745.99 540 756 R +7 X +V +1 12 Q +0 X +(28) 180 748 T +180 32.69 540 42.7 R +7 X +V +0 X +( MPI Primer / Developing with LAM) 180 34.7 T +180 738 540 738 2 L +7 X +V +1 H +2 Z +0 X +N +540 54 180 54 2 L +7 X +V +0 X +N +180 72 540 630 R +7 X +V +3 F +0 X +(MPI_DOUBLE) 180 622 T +0 F +(double) 360 622 T +180 766/G89998 FmPA +3 F +(MPI_LONG_DOUBLE) 180 606 T +0 F +(long double) 360 606 T +180 750/G89999 FmPA +3 F +(MPI_BYTE) 180 590 T +0 F +(a ra) 360 590 T +(w byte) 377.47 590 T +180 734/G90000 FmPA +(The number of bytes occupied by these basic datatypes follo) 180 568 T +(ws the corre-) 469.98 568 T +180 712/G187384 FmPA +(sponding C de\336nition. Thus, MPI_INT could occup) 180 554 T +(y four bytes on one) 428.54 554 T +(machine and eight bytes on another machine. A message count of one) 180 540 T +(MPI_INT speci\336ed by both sender and recei) 180 526 T +(v) 392.99 526 T +(er w) 398.81 526 T +(ould, in one direction,) 419.68 526 T +(require padding and al) 180 512 T +(w) 287.52 512 T +(ays be correct. In the re) 296.06 512 T +(v) 408.38 512 T +(erse direction, the inte) 414.2 512 T +(ger) 520.67 512 T +(may) 180 498 T +(not) 203.45 498 T +(be) 221.57 498 T +(representable) 235.68 498 T +(in) 302.44 498 T +(the) 314.56 498 T +(lesser) 332 498 T +(number) 362.11 498 T +(of) 401.56 498 T +(bytes) 414.34 498 T +(and) 442.45 498 T +(the) 462.56 498 T +(communica-) 480.01 498 T +(tion will f) 180 484 T +(ail.) 227.22 484 T +(Deri) 180 462 T +(v) 201.02 462 T +(ed datatypes are b) 206.84 462 T +(uilt by combining basic datatypes, or pre) 292.91 462 T +(viously) 488.26 462 T +180 606/G90003 FmPA +(b) 180 448 T +(uilt deri) 185.76 448 T +(v) 223.13 448 T +(ed datatypes. A deri) 228.95 448 T +(v) 324.62 448 T +(ed datatype describes a memory layout) 330.44 448 T +(which) 180 434 T +(consists) 211.85 434 T +(of) 252.37 434 T +(multiple) 264.89 434 T +(arrays) 307.42 434 T +(of) 339.26 434 T +(elements.) 351.77 434 T +(A) 399.95 434 T +(generalization) 411.14 434 T +(of) 481.64 434 T +(this) 494.16 434 T +(capa-) 514.02 434 T +(bility) 180 420 T +(is) 207.96 420 T +(that) 218.58 420 T +(the) 239.19 420 T +(four) 256.47 420 T +(v) 279.08 420 T +(arieties) 284.78 420 T +(of) 322.05 420 T +(constructor) 334.66 420 T +(routines) 391.26 420 T +(of) 432.54 420 T +(fer) 442.24 420 T +(more) 458.17 420 T +(or) 485.45 420 T +(less) 498.06 420 T +(con-) 518.68 420 T +(trol o) 180 406 T +(v) 205.49 406 T +(er array length, array element datatype and array displacement.) 211.31 406 T +(contiguous) 180 384 T +(one array length, no displacement, one datatype) 270 384 T +180 528/G90021 FmPA +(v) 180 368 T +(ector) 185.82 368 T +(one array length, one displacement, one datatype) 270 368 T +180 512/G90044 FmPA +(inde) 180 352 T +(x) 200.48 352 T +(ed) 206.3 352 T +(multiple array lengths, multiple displacements, one) 270 352 T +180 496/G90022 FmPA +(datatype) 270 338 T +(structure) 180 322 T +(multiple e) 270 322 T +(v) 318.04 322 T +(erything) 323.86 322 T +180 466/G90031 FmPA +(Consider a tw) 180 300 T +(o dimensional matrix with R ro) 246.54 300 T +(ws and C columns stored in) 396.58 300 T +180 444/G90032 FmPA +(ro) 180 286 T +(w) 189.7 286 T +(major) 200.51 286 T +(order) 230.66 286 T +(.) 255.32 286 T +(The) 260.48 286 T +(application) 281.29 286 T +(wishes) 336.77 286 T +(to) 371.59 286 T +(communicate) 383.08 286 T +(one) 449.89 286 T +(entire) 469.37 286 T +(column.) 498.85 286 T +(A v) 180 272 T +(ector deri) 197.48 272 T +(v) 242.83 272 T +(ed datatype \336ts the requirement.) 248.65 272 T +3 F +(MPI_Type_Vector \050int count, int blocklength,) 180 250 T +180 394/G90040 FmPA +(int stride, MPI_Datatype oldtype,) 216 236 T +(MPI_Datatype *newtype\051;) 216 222 T +0 F +(Assuming) 180 200 T +(the) 230.96 200 T +(matrix) 247.92 200 T +(elements) 281.54 200 T +(are) 326.49 200 T +(of) 343.43 200 T +(MPI_INT) 355.72 200 T +(,) 402.16 200 T +(the) 407.45 200 T +(ar) 424.41 200 T +(guments) 433.52 200 T +(for) 476.48 200 T +(the) 492.76 200 T +(stated) 509.71 200 T +180 344/G90043 FmPA +(requirement w) 180 186 T +(ould be:) 249.53 186 T +3 10 Q +(int) 180 165.33 T +(R, C;) 324 165.33 T +180 309/G90042 FmPA +(MPI_Datatype) 180 154.33 T +(newtype;) 324 154.33 T +(MPI_Type_vector\050R, 1, C, MPI_INT, &newtype\051;) 180 141.33 T +180 285/G90041 FmPA +(MPI_Type_commit\050&newtype\051;) 180 130.33 T +0 12 Q +(The count of blocks \050arrays\051 is the number of elements in a column \050R\051.) 180 110 T +180 254/G90051 FmPA +(Each block contains just one element and the elements are strided \050dis-) 180 96 T +(placed\051 from each other by the number of elements in a ro) 180 82 T +(w \050C\051.) 458.63 82 T +0 9.6 Q +(1) 489.29 86.8 T +63 420 180 469.99 C +0 0 0 1 0 0 0 1 K +63 420 180 469.99 R +7 X +V +72 424.99 162 469.99 R +V +4 12 Q +0 X +(Deri) 121.58 461.99 T +(v) 144.12 461.99 T +(ed) 150 461.99 T +72 606/G90685 FmPA +(Datatypes) 110.68 447.99 T +0 0 612 792 C +63 258 180 307.99 C +0 0 0 1 0 0 0 1 K +63 258 180 307.99 R +7 X +V +72 262.99 162 307.99 R +V +4 12 Q +0 X +(Strided V) 87.55 299.99 T +(ector) 136.02 299.99 T +72 444/G90677 FmPA +(Datatype) 115.34 285.99 T +0 0 612 792 C +0 0 0 1 0 0 0 1 K +[/CropBox[0 0 FmDC 612 792 FmDC FmBx]/PAGE FmPD +[/Dest/P.28/DEST FmPD2 +[/Title(A)/Rect[171 63 549 639]/ARTICLE FmPD2 +FMENDPAGE +%%EndPage: "28" 28 +%%Page: "29" 29 +612 792 0 FMBEGINPAGE +0 FrameSetSepColors +FrameNoSep +0 0 0 1 0 0 0 1 K +180 745.99 540 756 R +7 X +V +1 12 Q +0 X +(29) 526.66 748 T +180 32.69 540 42.7 R +7 X +V +0 X +( MPI Primer / Developing with LAM) 180 34.7 T +180 738 540 738 2 L +7 X +V +1 H +2 Z +0 X +N +540 54 180 54 2 L +7 X +V +0 X +N +180 72 540 630 R +7 X +V +0 F +0 X +(An arbitrary record whose template is a C structure is a common message) 180 474.03 T +180 618/G90053 FmPA +(form. The most \337e) 180 460.03 T +(xible MPI deri) 269.15 460.03 T +(v) 338.84 460.03 T +(ed datatype, the structure, is required to) 344.66 460.03 T +(describe the memory layout.) 180 446.03 T +3 F +(MPI_Type_struct \050int count, int blocklengths[],) 180 424.03 T +180 568/G90262 FmPA +(MPI_Aint displacements[], MPI_Datatype) 216 410.03 T +(dtypes[], MPI_Datatype *newtype\051;) 216 396.03 T +0 F +(In) 180 374.03 T +(the) 192.46 374.03 T +(follo) 209.59 374.03 T +(wing) 231.96 374.03 T +(code) 258.42 374.03 T +(fragment,) 283.54 374.03 T +(a) 332.33 374.03 T +(C) 340.12 374.03 T +(struct) 350.59 374.03 T +(of) 379.71 374.03 T +(di) 392.17 374.03 T +(v) 401.21 374.03 T +(erse) 407.03 374.03 T +(\336elds) 428.82 374.03 T +(is) 457.28 374.03 T +(described) 467.75 374.03 T +(with) 516.2 374.03 T +180 518/G90266 FmPA +(MPI_T) 180 360.03 T +(ype_struct\050\051 in the safest, most portable manner) 213.71 360.03 T +(.) 442.01 360.03 T +3 10 Q +(/*) 180 339.36 T +180 483/G90346 FmPA +( * non-trivial structure) 180 328.36 T +( */) 180 317.36 T +(struct cell {) 180 304.36 T +180 448/G90349 FmPA +(double) 216 293.36 T +(energy;) 324 293.36 T +(char) 216 282.36 T +(flags;) 324 282.36 T +(float) 216 271.36 T +(coord[3];) 324 271.36 T +(};) 180 260.36 T +(/*) 180 247.36 T +180 391/G90355 FmPA +( * We want to be able to send arrays of this datatype.) 180 236.36 T +( */) 180 225.37 T +(struct cell) 180 214.37 T +(cloud[2];) 324 214.37 T +(/*) 180 201.37 T +180 345/G90360 FmPA +( * new datatype for cell struct) 180 190.37 T +( */) 180 179.37 T +(MPI_Datatype) 180 168.37 T +(celltype;) 324 168.37 T +180 142 540 156.98 C +0 0 0 1 0 0 0 1 K +180 142 540 156.98 R +7 X +V +189 154.96 333 154.96 2 L +V +0.5 H +2 Z +0 X +N +0 0 612 792 C +0 0 0 1 0 0 0 1 K +0 12 Q +0 X +(1.) 198 134 T +(Note) 210 134 T +(that) 236.32 134 T +(this) 257.32 134 T +(datatype) 277.66 134 T +(is) 321.31 134 T +(not) 332.31 134 T +(suf) 350.64 134 T +(\336cient) 365.01 134 T +(to) 398 134 T +(send) 410.34 134 T +(multiple) 435.33 134 T +(columns) 478.33 134 T +180 278/G90708 FmPA +(from the matrix, since it does not presume the \336nal displacement) 198 120 T +(between) 198 106 T +(the) 240.81 106 T +(last) 258.3 106 T +(element) 277.79 106 T +(of) 318.6 106 T +(the) 331.42 106 T +(\336rst) 348.91 106 T +(column) 370.41 106 T +(and) 409.23 106 T +(the) 429.38 106 T +(\336rst) 446.87 106 T +(element) 468.36 106 T +(of) 509.18 106 T +(the second column. One solution is to use MPI_T) 198 92 T +(ype_struct\050\051 and) 434.7 92 T +(MPI_UB. See) 198 78 T +2 F +(Structur) 268.33 78 T +(e Datatype) 307.22 78 T +0 F +(.) 359.54 78 T +180 490.03 540 630 C +0 0 0 1 0 0 0 1 K +415.64 551.31 451.64 587.31 R +3 X +V +0.5 H +2 Z +0 X +N +325.64 551.31 361.64 587.31 R +3 X +V +0 X +N +235.64 551.31 271.64 587.31 R +3 X +V +0 X +N +217.64 551.31 505.64 587.31 R +N +217.64 587.31 190.64 587.31 2 L +N +190.64 587.31 M + 187.36 570.79 208.93 561.37 217.64 551.31 D +N +253.64 587.31 253.64 551.31 2 L +N +235.64 587.31 235.64 551.31 2 L +N +271.64 587.31 271.64 551.31 2 L +N +307.64 587.31 307.64 551.31 2 L +N +289.64 587.31 289.64 551.31 2 L +N +325.64 587.31 325.64 551.31 2 L +N +361.64 587.31 361.64 551.31 2 L +N +343.64 587.31 343.64 551.31 2 L +N +379.64 587.31 379.64 551.31 2 L +N +415.64 587.31 415.64 551.31 2 L +N +397.64 587.31 397.64 551.31 2 L +N +433.64 587.31 433.64 551.31 2 L +N +469.64 587.31 469.64 551.31 2 L +N +451.64 587.31 451.64 551.31 2 L +N +487.64 587.31 487.64 551.31 2 L +N +505.64 551.31 532.64 551.31 2 L +N +532.31 551.31 M + 535.6 567.84 514.03 577.26 505.31 587.31 D +N +235.64 596.31 235.64 605.31 2 L +N +235.64 605.31 271.64 605.31 2 L +N +271.64 601.01 273.78 601.01 271.64 597.31 269.51 601.01 4 Y +1 H +0 Z +N +271.64 601.01 273.78 601.01 271.64 597.31 269.51 601.01 4 Y +V +271.64 605.31 271.64 601.51 2 L +0.5 H +2 Z +N +5 10 Q +(b) 212.8 609.02 T +(lklen \050#elements\051) 218.16 609.02 T +235.64 542.31 235.64 533.31 2 L +N +235.64 533.31 325.64 533.31 2 L +N +325.64 537.62 323.51 537.62 325.64 541.31 327.78 537.62 4 Y +1 H +0 Z +N +325.64 537.62 323.51 537.62 325.64 541.31 327.78 537.62 4 Y +V +325.64 533.31 325.64 537.12 2 L +0.5 H +2 Z +N +(displacement \050#elements\051) 223.4 522.5 T +5 12 Q +(Figure 2: Str) 272.93 506.31 T +(ided V) 339.14 506.31 T +(ector Datatype) 372.2 506.31 T +0 0 612 792 C +0 0 0 1 0 0 0 1 K +63 432.03 180 482.02 C +0 0 0 1 0 0 0 1 K +63 432.03 180 482.02 R +7 X +V +72 437.02 162 482.02 R +V +4 12 Q +0 X +(Structur) 112.9 474.02 T +(e) 156.67 474.02 T +72 618/G90440 FmPA +(Datatype) 115.34 460.02 T +0 0 612 792 C +0 0 0 1 0 0 0 1 K +[/CropBox[0 0 FmDC 612 792 FmDC FmBx]/PAGE FmPD +[/Dest/P.29/DEST FmPD2 +[/Title(A)/Rect[171 63 549 639]/ARTICLE FmPD2 +FMENDPAGE +%%EndPage: "29" 29 +%%Page: "30" 30 +612 792 0 FMBEGINPAGE +0 FrameSetSepColors +FrameNoSep +0 0 0 1 0 0 0 1 K +180 745.99 540 756 R +7 X +V +1 12 Q +0 X +(30) 180 748 T +180 32.69 540 42.7 R +7 X +V +0 X +( MPI Primer / Developing with LAM) 180 34.7 T +180 738 540 738 2 L +7 X +V +1 H +2 Z +0 X +N +540 54 180 54 2 L +7 X +V +0 X +N +180 63 540 630 R +7 X +V +3 10 Q +0 X +(int) 180 623.33 T +(blocklengths[4] = {1, 1, 3, 1};) 324 623.33 T +180 767/G90365 FmPA +(MPI_Aint) 180 612.33 T +(base;) 324 612.33 T +(MPI_Aint) 180 601.33 T +(displacements[4];) 324 601.33 T +(MPI_Datatype) 180 590.33 T +(types[4] = {MPI_DOUBLE, MPI_CHAR,) 324 590.33 T +(MPI_FLOAT, MPI_UB};) 360 579.33 T +(MPI_Address\050&cloud[0].energy, &displacement[0]\051;) 180 566.33 T +180 710/G90369 FmPA +(MPI_Address\050&cloud[0].flags, &displacement[1]\051;) 180 555.33 T +(MPI_Address\050&cloud[0].coord, &displacement[2]\051;) 180 544.33 T +(MPI_Address\050&cloud[1].energy, &displacement[3]\051;) 180 533.33 T +(base = displacement[0];) 180 520.33 T +180 664/G90374 FmPA +(for \050i = 0; i < 4; ++i\051 displacement[i] -= base;) 180 507.33 T +180 651/G90376 FmPA +(MPI_Type_struct\0504, blocklengths, displacements, types,) 180 494.33 T +180 638/G90378 FmPA +(&celltype\051;) 252 483.33 T +(MPI_Type_commit\050&celltype\051;) 180 472.33 T +0 12 Q +(The) 180 452 T +(displacements) 201.19 452 T +(in) 271.71 452 T +(a) 283.58 452 T +(structure) 291.44 452 T +(datatype) 335.96 452 T +(are) 379.15 452 T +(byte) 396.33 452 T +(of) 419.52 452 T +(fsets) 429.22 452 T +(from) 453.75 452 T +(the) 479.61 452 T +(\336rst) 496.8 452 T +(stor-) 518 452 T +180 596/G90267 FmPA +(age location of the C structure. W) 180 438 T +(ithout guessing the compiler\325) 341.82 438 T +(s polic) 481.49 438 T +(y for) 512.98 438 T +(packing and alignment in a C structure, the MPI_Address\050\051 routine and) 180 424 T +(some pointer arithmetic are the best w) 180 410 T +(ay to get the precise v) 363.18 410 T +(alues.) 467.86 410 T +(MPI_Address\050\051) 180 396 T +(simply) 256.76 396 T +(returns) 291.54 396 T +(the) 326.97 396 T +(absolute) 343.74 396 T +(address) 385.84 396 T +(of) 423.93 396 T +(a) 436.03 396 T +(location) 443.47 396 T +(in) 484.24 396 T +(memory) 495.68 396 T +(.) 534.89 396 T +(The displacement of the \336rst element within the structure is zero.) 180 382 T +(When) 180 205 T +(transferring) 211.37 205 T +(arrays) 270.07 205 T +(of) 302.1 205 T +(a) 314.81 205 T +(gi) 322.86 205 T +(v) 331.89 205 T +(en) 337.71 205 T +(datatype) 351.76 205 T +(\050by) 395.13 205 T +(specifying) 413.84 205 T +(a) 466.55 205 T +(count) 474.59 205 T +(greater) 503.97 205 T +180 349/G90446 FmPA +(than 1 in MPI_Send\050\051, for e) 180 191 T +(xample\051, MPI assumes that the array elements) 312.47 191 T +(are) 180 177 T +(stored) 197.08 177 T +(contiguously) 228.83 177 T +(.) 290.05 177 T +(If) 295.48 177 T +(necessary) 305.9 177 T +(,) 351.76 177 T +(a) 357.19 177 T +(g) 364.94 177 T +(ap) 370.88 177 T +(can) 384.64 177 T +(be) 403.72 177 T +(speci\336ed) 417.47 177 T +(at) 462.56 177 T +(the) 473.64 177 T +(end) 490.73 177 T +(of) 510.49 177 T +(the) 522.91 177 T +(deri) 180 163 T +(v) 198.36 163 T +(ed datatype memory layout by adding an arti\336cial element of type) 204.18 163 T +(MPI_UB, to the datatype description and gi) 180 149 T +(ving it a displacement that) 389.35 149 T +(e) 180 135 T +(xtends to the \336rst byte of the second element in an array) 185.15 135 T +(.) 453.32 135 T +(MPI_T) 180 113 T +(ype_Commit\050\051 separates the datatypes that will be used to transfer) 213.71 113 T +180 257/G90503 FmPA +(messages) 180 99 T +(from) 227.72 99 T +(the) 253.45 99 T +(intermediate) 270.51 99 T +(ones) 332.89 99 T +(that) 357.29 99 T +(are) 377.68 99 T +(scaf) 394.73 99 T +(folded) 413.75 99 T +(on) 446.81 99 T +(the) 461.21 99 T +(w) 478.27 99 T +(ay) 486.81 99 T +(to) 500.54 99 T +(some) 512.27 99 T +(v) 180 85 T +(ery complicated datatype. A deri) 185.82 85 T +(v) 342.48 85 T +(ed datatype must be committed before) 348.3 85 T +(being used in communication.) 180 71 T +180 223 540 378 C +0 0 0 1 0 0 0 1 K +379.64 294.19 415.64 330.19 R +12 X +V +0.5 H +2 Z +0 X +N +343.64 294.19 379.64 330.19 R +12 X +V +0 X +N +307.64 294.19 343.64 330.19 R +9 X +V +0 X +N +235.64 294.19 289.64 330.19 R +3 X +V +0 X +N +217.64 294.19 505.64 330.19 R +N +217.64 330.19 190.64 330.19 2 L +N +190.64 330.19 M + 187.36 313.67 208.93 304.24 217.64 294.19 D +N +253.64 330.19 253.64 294.19 2 L +N +235.64 330.19 235.64 294.19 2 L +N +271.64 330.19 271.64 294.19 2 L +N +307.64 330.19 307.64 294.19 2 L +N +289.64 330.19 289.64 294.19 2 L +N +343.64 330.19 343.64 294.19 2 L +N +379.64 330.19 379.64 294.19 2 L +N +415.64 330.19 415.64 294.19 2 L +N +433.64 330.19 433.64 294.19 2 L +N +469.64 330.19 469.64 294.19 2 L +N +451.64 330.19 451.64 294.19 2 L +N +487.64 330.19 487.64 294.19 2 L +N +505.64 294.19 532.64 294.19 2 L +N +532.31 294.19 M + 535.6 310.71 514.03 320.13 505.31 330.19 D +N +307.64 348.19 415.64 348.19 2 L +N +5 10 Q +(b) 302.8 352.9 T +(lklen \050#elements\051) 308.16 352.9 T +(displacement \050#b) 294.74 265.38 T +(ytes\051) 370.68 265.38 T +5 12 Q +(Figure 3: Str) 303.95 248.44 T +(uct Datatype) 370.15 248.44 T +415.64 343.88 417.78 343.88 415.64 340.19 413.51 343.88 4 Y +1 H +0 Z +N +415.64 343.88 417.78 343.88 415.64 340.19 413.51 343.88 4 Y +V +415.64 348.19 415.64 344.38 2 L +0.5 H +2 Z +N +235.64 339.19 235.64 348.19 2 L +N +235.64 348.19 289.64 348.19 2 L +N +289.64 343.88 291.78 343.88 289.64 340.19 287.51 343.88 4 Y +1 H +0 Z +N +289.64 343.88 291.78 343.88 289.64 340.19 287.51 343.88 4 Y +V +289.64 348.19 289.64 344.38 2 L +0.5 H +2 Z +N +235.64 280.49 233.51 280.49 235.64 284.19 237.78 280.49 4 Y +1 H +0 Z +N +235.64 280.49 233.51 280.49 235.64 284.19 237.78 280.49 4 Y +V +235.64 279.99 235.64 276.19 2 L +0.5 H +2 Z +N +235.64 276.19 451.64 276.19 2 L +N +307.64 280.49 305.51 280.49 307.64 284.19 309.78 280.49 4 Y +1 H +0 Z +N +307.64 280.49 305.51 280.49 307.64 284.19 309.78 280.49 4 Y +V +307.64 276.19 307.64 279.99 2 L +0.5 H +2 Z +N +343.64 280.49 341.51 280.49 343.64 284.19 345.78 280.49 4 Y +1 H +0 Z +N +343.64 280.49 341.51 280.49 343.64 284.19 345.78 280.49 4 Y +V +343.64 276.19 343.64 279.99 2 L +0.5 H +2 Z +N +451.64 330.19 451.64 294.19 2 L +3 H +N +451.64 280.49 449.51 280.49 451.64 284.19 453.78 280.49 4 Y +1 H +0 Z +N +451.64 280.49 449.51 280.49 451.64 284.19 453.78 280.49 4 Y +V +451.64 276.19 451.64 279.99 2 L +0.5 H +2 Z +N +451.64 343.88 453.78 343.88 451.64 340.19 449.51 343.88 4 Y +1 H +0 Z +N +451.64 343.88 453.78 343.88 451.64 340.19 449.51 343.88 4 Y +V +451.64 348.19 451.64 344.38 2 L +0.5 H +2 Z +N +343.64 343.88 345.78 343.88 343.64 340.19 341.51 343.88 4 Y +1 H +0 Z +N +343.64 343.88 345.78 343.88 343.64 340.19 341.51 343.88 4 Y +V +343.64 348.19 343.64 344.38 2 L +0.5 H +2 Z +N +307.64 348.19 307.64 339.19 2 L +N +0 0 612 792 C +0 0 0 1 0 0 0 1 K +[/CropBox[0 0 FmDC 612 792 FmDC FmBx]/PAGE FmPD +[/Dest/P.30/DEST FmPD2 +[/Title(A)/Rect[171 54 549 639]/ARTICLE FmPD2 +FMENDPAGE +%%EndPage: "30" 30 +%%Page: "31" 31 +612 792 0 FMBEGINPAGE +0 FrameSetSepColors +FrameNoSep +0 0 0 1 0 0 0 1 K +180 745.99 540 756 R +7 X +V +1 12 Q +0 X +(31) 526.66 748 T +180 32.69 540 42.7 R +7 X +V +0 X +( MPI Primer / Developing with LAM) 180 34.7 T +180 738 540 738 2 L +7 X +V +1 H +2 Z +0 X +N +540 54 180 54 2 L +7 X +V +0 X +N +180 72 540 630 R +7 X +V +0 F +0 X +(The) 180 622 T +(description) 200.8 622 T +(of) 256.26 622 T +(a) 268.4 622 T +(deri) 275.86 622 T +(v) 294.22 622 T +(ed) 300.04 622 T +(datatype) 313.51 622 T +(is) 356.3 622 T +(\336x) 366.44 622 T +(ed) 378.94 622 T +(after) 392.4 622 T +(creation) 416.52 622 T +(at) 457.31 622 T +(runtime.) 468.11 622 T +(If) 510.58 622 T +(an) 520.71 622 T +(y) 531.86 622 T +180 766/G90268 FmPA +(slight) 180 608 T +(detail) 209.53 608 T +(changes,) 239.04 608 T +(such) 283.54 608 T +(as) 308.39 608 T +(the) 321.24 608 T +(blocklength) 338.75 608 T +(of) 398.27 608 T +(a) 411.11 608 T +(particular) 419.29 608 T +(\336eld) 468.12 608 T +(in) 492.31 608 T +(a) 504.5 608 T +(struc-) 512.68 608 T +(ture,) 180 594 T +(a) 204.51 594 T +(ne) 212.68 594 T +(w) 223.71 594 T +(datatype) 235.23 594 T +(is) 278.73 594 T +(required.) 289.58 594 T +(In) 335.41 594 T +(addition) 348.26 594 T +(to) 390.44 594 T +(the) 402.63 594 T +(tedium) 420.14 594 T +(of) 456.32 594 T +(creating) 469.17 594 T +(man) 510.67 594 T +(y) 531.15 594 T +(deri) 180 580 T +(v) 198.36 580 T +(ed datatypes, a recei) 204.18 580 T +(v) 301.18 580 T +(er may not kno) 307 580 T +(w in adv) 379.02 580 T +(ance which of a nearly) 420.05 580 T +(identical suite of datatypes will arri) 180 566 T +(v) 349.34 566 T +(e in the ne) 355.16 566 T +(xt message. MPI\325) 404.64 566 T +(s solution) 488.3 566 T +(is packing and unpacking routines that incrementally assemble and disas-) 180 552 T +(semble a contiguous message b) 180 538 T +(uf) 330.41 538 T +(fer) 340.1 538 T +(. The pack) 352.76 538 T +(ed message has the special) 402.96 538 T +(MPI datatype, MPI_P) 180 524 T +(A) 283.9 524 T +(CKED, and is transferred with a count equal to its) 292.08 524 T +(length in bytes.) 180 510 T +3 F +(MPI_Pack_size \050int incount, MPI_Datatype dtype,) 180 488 T +180 632/G90590 FmPA +(MPI_Comm comm, int *size\051;) 216 474 T +0 F +(MPI_P) 180 452 T +(ack_size\050\051) 213.83 452 T +(returns) 266.1 452 T +(the) 302.38 452 T +(pack) 320.01 452 T +(ed) 342.55 452 T +(message) 356.83 452 T +(b) 400.45 452 T +(uf) 406.21 452 T +(fer) 415.91 452 T +(size) 432.19 452 T +(requirement) 453.81 452 T +(for) 514.76 452 T +(a) 531.71 452 T +180 596/G90719 FmPA +(gi) 180 438 T +(v) 189.04 438 T +(en datatype. This may be greater than one w) 194.86 438 T +(ould e) 407.02 438 T +(xpect from the type) 436.5 438 T +(description due to hidden, implementation dependent packing o) 180 424 T +(v) 485.12 424 T +(erhead.) 490.94 424 T +3 F +(MPI_Pack \050void *inbuf, int incount, MPI_Datatype) 180 402 T +180 546/G90594 FmPA +(dtype, void *outbuf, int outsize,) 216 388 T +(int *position, MPI_Comm comm\051;) 216 374 T +0 F +(Contiguous) 180 144 T +(blocks) 237.97 144 T +(of) 271.93 144 T +(homogeneous) 284.55 144 T +(elements) 353.83 144 T +(are) 399.12 144 T +(pack) 416.39 144 T +(ed) 438.93 144 T +(one) 452.88 144 T +(at) 472.84 144 T +(a) 484.12 144 T +(time) 492.08 144 T +(with) 516.04 144 T +180 288/G90722 FmPA +(MPI_P) 180 130 T +(ack\050\051. After each call, the current location in the pack) 213.83 130 T +(ed message) 469.96 130 T +(b) 180 116 T +(uf) 185.76 116 T +(fer) 195.46 116 T +(is) 211.38 116 T +(updated.) 221.99 116 T +(The) 265.59 116 T +(\322in\323) 286.86 116 T +(data) 309.46 116 T +(are) 332.05 116 T +(the) 349.31 116 T +(elements) 366.58 116 T +(to) 411.85 116 T +(be) 423.79 116 T +(pack) 437.73 116 T +(ed) 460.26 116 T +(and) 474.2 116 T +(the) 494.13 116 T +(\322out\323) 511.4 116 T +(data) 180 102 T +(is) 202.76 102 T +(the) 213.53 102 T +(pack) 230.96 102 T +(ed) 253.49 102 T +(message) 267.59 102 T +(b) 311.01 102 T +(uf) 316.77 102 T +(fer) 326.47 102 T +(.) 339.13 102 T +(The) 344.89 102 T +(outsize) 366.32 102 T +(is) 403.08 102 T +(al) 413.85 102 T +(w) 422.4 102 T +(ays) 430.94 102 T +(the) 449.7 102 T +(maximum) 467.14 102 T +(size) 518.57 102 T +(of the pack) 180 88 T +(ed message b) 233.2 88 T +(uf) 296.94 88 T +(fer) 306.64 88 T +(, to guard ag) 319.48 88 T +(ainst o) 379.4 88 T +(v) 410.89 88 T +(er\337o) 416.71 88 T +(w) 438.41 88 T +(.) 446.29 88 T +63 580 180 629.99 C +0 0 0 1 0 0 0 1 K +63 580 180 629.99 R +7 X +V +72 584.99 162 629.99 R +V +4 12 Q +0 X +(P) 75.25 621.99 T +(ack) 82.46 621.99 T +(ed Datatype) 100.34 621.99 T +72 766/G90553 FmPA +0 0 612 792 C +0 0 0 1 0 0 0 1 K +180 162 540 370 C +0 0 0 1 0 0 0 1 K +261.98 293.26 333.98 329.26 R +3 X +V +0.5 H +2 Z +0 X +N +243.98 293.26 351.98 329.26 R +N +243.98 329.26 216.98 329.26 2 L +N +216.98 329.26 M + 213.69 312.74 235.26 303.32 243.98 293.26 D +N +279.98 329.26 279.98 293.26 2 L +N +261.98 329.26 261.98 293.26 2 L +N +297.98 329.26 297.98 293.26 2 L +N +333.98 329.26 333.98 293.26 2 L +N +352.31 293.26 379.31 293.26 2 L +N +378.98 293.26 M + 382.26 309.78 360.69 319.2 351.98 329.26 D +N +5 12 Q +(Figure 4: P) 290.28 175.89 T +(ac) 348.49 175.89 T +(k) 360.92 175.89 T +(ed Datatype) 366.68 175.89 T +217.64 221.26 505.64 257.26 R +N +217.64 257.26 190.64 257.26 2 L +N +190.64 257.26 M + 187.36 240.74 208.93 231.32 217.64 221.26 D +N +505.64 221.26 532.64 221.26 2 L +N +532.31 221.26 M + 535.6 237.78 514.03 247.2 505.31 257.26 D +N +315.98 329.26 315.98 293.26 2 L +N +235.31 257.26 235.31 221.26 2 L +N +253.31 257.26 253.31 221.26 2 L +N +271.31 257.26 271.31 221.26 2 L +N +0 F +(?) 223.65 235.17 T +(?) 241.65 235.17 T +(?) 259.65 235.17 T +289.31 257.26 289.31 221.26 2 L +N +307.31 257.26 307.31 221.26 2 L +N +325.31 257.26 325.31 221.26 2 L +N +(?) 277.65 235.17 T +(?) 295.65 235.17 T +(?) 313.65 235.17 T +343.31 257.26 343.31 221.26 2 L +N +361.31 257.26 361.31 221.26 2 L +N +379.31 257.26 379.31 221.26 2 L +N +(?) 331.65 235.17 T +(?) 349.65 235.17 T +(?) 367.65 235.17 T +397.31 257.26 397.31 221.26 2 L +N +415.31 257.26 415.31 221.26 2 L +N +433.31 257.26 433.31 221.26 2 L +N +(?) 385.65 235.17 T +(?) 403.65 235.17 T +(?) 421.65 235.17 T +451.31 257.26 451.31 221.26 2 L +N +469.31 257.26 469.31 221.26 2 L +N +487.31 257.26 487.31 221.26 2 L +N +(?) 439.65 235.17 T +(?) 457.65 235.17 T +(?) 475.65 235.17 T +(?) 493.65 235.17 T +217.31 212.26 217.31 203.26 2 L +N +217.31 203.26 505.31 203.26 2 L +N +505.31 207.56 503.18 207.56 505.31 211.26 507.44 207.56 4 Y +1 H +0 Z +N +505.31 207.56 503.18 207.56 505.31 211.26 507.44 207.56 4 Y +V +505.31 203.26 505.31 207.06 2 L +0.5 H +2 Z +N +90 450 1.5 1.5 270 307.31 275.35 GG +307.31 274.85 311.69 274.85 307.31 267.26 302.93 274.85 4 Y +1 H +0 Z +N +307.31 274.85 311.69 274.85 307.31 267.26 302.93 274.85 4 Y +V +307.31 284.26 307.31 275.35 2 L +3 H +2 Z +N +5 10 Q +(outcount \050#b) 322.68 192.97 T +(ytes\051) 378.07 192.97 T +(incount \050#elements\051) 253.74 351.45 T +(position) 316.31 277.45 T +261.64 338.26 261.64 347.26 2 L +0.5 H +N +261.64 347.26 333.64 347.26 2 L +N +333.64 342.96 335.77 342.96 333.64 339.26 331.51 342.96 4 Y +1 H +0 Z +N +333.64 342.96 335.77 342.96 333.64 339.26 331.51 342.96 4 Y +V +333.64 347.26 333.64 343.46 2 L +0.5 H +2 Z +N +0 0 612 792 C +0 0 0 1 0 0 0 1 K +[/CropBox[0 0 FmDC 612 792 FmDC FmBx]/PAGE FmPD +[/Dest/P.31/DEST FmPD2 +[/Title(A)/Rect[171 63 549 639]/ARTICLE FmPD2 +FMENDPAGE +%%EndPage: "31" 31 +%%Page: "32" 32 +612 792 0 FMBEGINPAGE +0 FrameSetSepColors +FrameNoSep +0 0 0 1 0 0 0 1 K +180 745.99 540 756 R +7 X +V +1 12 Q +0 X +(32) 180 748 T +180 32.69 540 42.7 R +7 X +V +0 X +( MPI Primer / Developing with LAM) 180 34.7 T +180 738 540 738 2 L +7 X +V +1 H +2 Z +0 X +N +540 54 180 54 2 L +7 X +V +0 X +N +180 72 540 630 R +7 X +V +3 F +0 X +(MPI_Unpack \050void *inbuf, int insize,) 180 622 T +180 766/G90881 FmPA +(int *position, void *outbuf, int outcount,) 216 608 T +(MPI_Datatype datatype, MPI_Comm comm\051;) 216 594 T +0 F +(MPI_Unpack\050\051 is the natural re) 180 572 T +(v) 329.66 572 T +(erse of MPI_P) 335.48 572 T +(ack\050\051 where the \322in\323 data is) 404.63 572 T +180 716/G91241 FmPA +(the pack) 180 558 T +(ed message b) 220.2 558 T +(uf) 283.94 558 T +(fer and the \322out\323 data are the elements to be) 293.64 558 T +(unpack) 180 544 T +(ed.) 214.54 544 T +(Consider) 180 522 T +(a) 225.78 522 T +(netw) 233.56 522 T +(orking) 256.76 522 T +(application) 290.54 522 T +(that) 346.32 522 T +(is) 366.77 522 T +(transferring) 377.22 522 T +(a) 435.65 522 T +(v) 443.42 522 T +(ariable) 449.12 522 T +(length) 484.22 522 T +(mes-) 516.67 522 T +180 666/G90524 FmPA +(sage consisting of a count, se) 180 508 T +(v) 319.68 508 T +(eral \050count\051 Internet addresses as four byte) 325.5 508 T +(character arrays and an equal number of port numbers as shorts.) 180 494 T +3 10 Q +(#define MAXN) 180 473.33 T +(100) 324 473.33 T +180 617/G90572 FmPA +(unsigned char) 180 460.33 T +(addrs[MAXN][4];) 324 460.33 T +180 604/G90573 FmPA +(short) 180 449.33 T +(ports[MAXN];) 324 449.33 T +0 12 Q +(In the follo) 180 429 T +(wing code fragment, a message is pack) 233.03 429 T +(ed and sent based on a) 420.53 429 T +180 573/G90577 FmPA +(gi) 180 415 T +(v) 189.04 415 T +(en count.) 194.86 415 T +3 10 Q +(unsigned int) 180 394.33 T +(membersize, maxsize;) 324 394.33 T +180 538/G90528 FmPA +(int) 180 383.33 T +(position;) 324 383.33 T +(int) 180 372.33 T +(nhosts;) 324 372.33 T +(int) 180 361.33 T +(dest, tag;) 324 361.33 T +(char) 180 350.33 T +(*buffer;) 324 350.33 T +(/*) 180 337.33 T +180 481/G90588 FmPA +( * Do this once.) 180 326.33 T +( */) 180 315.33 T +(MPI_Pack_size\0501, MPI_INT, MPI_COMM_WORLD, &membersize\051;) 180 304.33 T +(maxsize = membersize;) 180 293.33 T +(MPI_Pack_size\050MAXN * 4, MPI_UNSIGNED_CHAR, MPI_COMM_WORLD,) 180 282.33 T +(&membersize\051;) 252 271.33 T +(maxsize += membersize;) 180 260.33 T +(MPI_Pack_size\050MAXN, MPI_SHORT, MPI_COMM_WORLD, &membersize\051;) 180 249.33 T +(maxsize += membersize;) 180 238.33 T +(buffer = malloc\050maxsize\051;) 180 227.33 T +(/*) 180 214.33 T +180 358/G90600 FmPA +( * Do this for every new message.) 180 203.33 T +( */) 180 192.33 T +(nhosts = /* some number less than MAXN */ 50;) 180 181.33 T +(position = 0;) 180 170.33 T +(MPI_Pack\050nhosts, 1, MPI_INT, buffer, maxsize, &position,) 180 159.33 T +(MPI_COMM_WORLD\051;) 252 148.33 T +(MPI_Pack\050addrs, nhosts * 4, MPI_UNSIGNED_CHAR, buffer,) 180 137.33 T +(maxsize, &position, MPI_COMM_WORLD\051;) 252 126.33 T +(MPI_Pack\050ports, nhosts, MPI_SHORT, buffer, maxsize,) 180 115.33 T +(&position, MPI_COMM_WORLD\051;) 252 104.33 T +(MPI_Send\050buffer, position, MPI_PACKED, dest, tag,) 180 91.33 T +180 235/G90612 FmPA +(MPI_COMM_WORLD\051;) 252 80.33 T +[/CropBox[0 0 FmDC 612 792 FmDC FmBx]/PAGE FmPD +[/Dest/P.32/DEST FmPD2 +[/Title(A)/Rect[171 63 549 639]/ARTICLE FmPD2 +FMENDPAGE +%%EndPage: "32" 32 +%%Page: "33" 33 +612 792 0 FMBEGINPAGE +0 FrameSetSepColors +FrameNoSep +0 0 0 1 0 0 0 1 K +180 745.99 540 756 R +7 X +V +1 12 Q +0 X +(33) 526.66 748 T +180 32.69 540 42.7 R +7 X +V +0 X +( MPI Primer / Developing with LAM) 180 34.7 T +180 738 540 738 2 L +7 X +V +1 H +2 Z +0 X +N +540 54 180 54 2 L +7 X +V +0 X +N +180 72 540 630 R +7 X +V +0 F +0 X +(A b) 180 622 T +(uf) 197.42 622 T +(fer is allocated once to contain the maximum size of a pack) 207.12 622 T +(ed mes-) 491.94 622 T +180 766/G90616 FmPA +(sage.) 180 608 T +(In) 207.27 608 T +(the) 220.21 608 T +(follo) 237.82 608 T +(wing) 260.18 608 T +(code) 287.13 608 T +(fragment,) 312.73 608 T +(a) 361.99 608 T +(message) 370.26 608 T +(is) 413.86 608 T +(recei) 424.81 608 T +(v) 447.83 608 T +(ed) 453.65 608 T +(and) 467.92 608 T +(unpack) 488.19 608 T +(ed,) 522.73 608 T +(based on a count pack) 180 594 T +(ed into the be) 285.85 594 T +(ginning of the message.) 350.66 594 T +3 10 Q +(int) 180 573.33 T +(src;) 324 573.33 T +180 717/G90535 FmPA +(int) 180 562.33 T +(msgsize;) 324 562.33 T +(MPI_Status) 180 551.33 T +(status;) 324 551.33 T +(MPI_Recv\050buffer, maxsize, MPI_PACKED, src, tag,) 180 538.33 T +180 682/G90536 FmPA +(MPI_COMM_WORLD, &status\051;) 252 527.33 T +(position = 0;) 180 514.33 T +180 658/G90537 FmPA +(MPI_Get_count\050&status, MPI_PACKED, &msgsize\051;) 180 503.33 T +(MPI_Unpack\050buffer, msgsize, &position, &nhosts, 1, MPI_INT,) 180 490.33 T +180 634/G90639 FmPA +(MPI_COMM_WORLD\051;) 252 479.33 T +(MPI_Unpack\050buffer, msgsize, &position, addrs, nhosts * 4,) 180 468.33 T +(MPI_UNSIGNED_CHAR, MPI_COMM_WORLD\051;) 252 457.33 T +(MPI_Unpack\050buffer, msgsize, &position, ports, nhosts,) 180 446.33 T +(MPI_SHORT, MPI_COMM_WORLD\051;) 252 435.33 T +[/CropBox[0 0 FmDC 612 792 FmDC FmBx]/PAGE FmPD +[/Dest/P.33/DEST FmPD2 +[/Title(A)/Rect[171 63 549 639]/ARTICLE FmPD2 +FMENDPAGE +%%EndPage: "33" 33 +%%Page: "34" 34 +612 792 0 FMBEGINPAGE +0 FrameSetSepColors +FrameNoSep +0 0 0 1 0 0 0 1 K +180 745.99 540 756 R +7 X +V +1 12 Q +0 X +(34) 180 748 T +180 32.69 540 42.7 R +7 X +V +0 X +( MPI Primer / Developing with LAM) 180 34.7 T +180 738 540 738 2 L +7 X +V +1 H +2 Z +0 X +N +540 54 180 54 2 L +7 X +V +0 X +N +180 72 540 630 R +7 X +V +3 F +0 X +(MPI_Bcast) 180 622 T +0 F +(Send one message to all group members.) 324 622 T +180 766/G91286 FmPA +3 F +(MPI_Gather) 180 608 T +0 F +(Recei) 324 608 T +(v) 351.02 608 T +(e and concatenate from all members.) 356.84 608 T +3 F +(MPI_Scatter) 180 594 T +0 F +(Separate and distrib) 324 594 T +(ute data to all members.) 419.08 594 T +3 F +(MPI_Reduce) 180 580 T +0 F +(Combine messages from all members.) 324 580 T +3 10 Q +(MPI_Barrier) 180 551.33 T +0 F +(W) 324 551.33 T +(ait until all group members reach this point.) 332.64 551.33 T +180 695/G91305 FmPA +3 F +(MPI_Gatherv) 180 539.33 T +0 F +(V) 324 539.33 T +(ary counts and b) 330.11 539.33 T +(uf) 395.73 539.33 T +(fer displacements.) 403.81 539.33 T +3 F +(MPI_Scatterv) 180 527.33 T +0 F +(V) 324 527.33 T +(ary counts and b) 330.11 527.33 T +(uf) 395.73 527.33 T +(fer displacements.) 403.81 527.33 T +3 F +(MPI_Allgather) 180 515.33 T +0 F +(Gather and then broadcast.) 324 515.33 T +3 F +(MPI_Allgatherv) 180 503.33 T +0 F +(V) 324 503.33 T +(ariably g) 330.11 503.33 T +(ather and then broadcast.) 365.33 503.33 T +3 F +(MPI_Alltoall) 180 491.33 T +0 F +(Gather and then scatter) 324 491.33 T +(.) 415.92 491.33 T +3 F +(MPI_Alltoallv) 180 479.33 T +0 F +(V) 324 479.33 T +(ariably g) 330.11 479.33 T +(ather and then scatter) 365.33 479.33 T +(.) 450.03 479.33 T +3 F +(MPI_Op_create) 180 467.33 T +0 F +(Create reduction operation.) 324 467.33 T +3 F +(MPI_Allreduce) 180 455.33 T +0 F +(Reduce and then broadcast.) 324 455.33 T +3 F +(MPI_Reduce_scatter) 180 443.33 T +0 F +(Reduce and then scatter) 324 443.33 T +(.) 418.7 443.33 T +3 F +(MPI_Scan) 180 431.33 T +0 F +(Perform a pre\336x reduction.) 324 431.33 T +180 402.99 540 413 C +0 0 0 1 0 0 0 1 K +180 402.99 540 413 R +7 X +V +180 411.99 649.01 411.99 2 L +V +1 H +2 Z +0 X +N +0 0 612 792 C +0 0 0 1 0 0 0 1 K +0 12 Q +0 X +(Collecti) 180 394.99 T +(v) 217.7 394.99 T +(e operations consist of man) 223.52 394.99 T +(y point-to-point messages which hap-) 354.66 394.99 T +180 539/G91315 FmPA +(pen) 180 380.99 T +(more) 200.22 380.99 T +(or) 227.78 380.99 T +(less) 240.67 380.99 T +(concurrently) 261.56 380.99 T +(\050depending) 325.11 380.99 T +(on) 381.99 380.99 T +(the) 396.89 380.99 T +(operation) 414.44 380.99 T +(and) 462.66 380.99 T +(the) 482.89 380.99 T +(internal) 500.45 380.99 T +(algorithm\051 and in) 180 366.99 T +(v) 262.85 366.99 T +(olv) 268.61 366.99 T +(e all processes in a gi) 283.76 366.99 T +(v) 385.78 366.99 T +(en communicator) 391.6 366.99 T +(. Ev) 474.59 366.99 T +(ery pro-) 493.74 366.99 T +(cess) 180 352.99 T +(must) 202.88 352.99 T +(call) 229.11 352.99 T +(the) 249.33 352.99 T +(same) 266.88 352.99 T +(MPI) 294.43 352.99 T +(collecti) 318.66 352.99 T +(v) 353.69 352.99 T +(e) 359.51 352.99 T +(routine.) 367.73 352.99 T +(Most) 407.61 352.99 T +(of) 435.17 352.99 T +(the) 448.06 352.99 T +(collecti) 465.61 352.99 T +(v) 500.64 352.99 T +(e) 506.46 352.99 T +(oper-) 514.68 352.99 T +(ations are v) 180 338.99 T +(ariations and/or combinations of four primiti) 235.02 338.99 T +(v) 449.04 338.99 T +(es: broadcast,) 454.86 338.99 T +(g) 180 324.99 T +(ather) 185.94 324.99 T +(, scatter and reduce.) 209.45 324.99 T +3 F +(MPI_Bcast \050void *buf, int count, MPI_Datatype) 180 302.99 T +180 447/G91338 FmPA +(dtype, int root, MPI_Comm comm\051;) 216 288.99 T +0 F +(In the broadcast operation, all processes specify the same root process,) 180 266.99 T +180 411/G91606 FmPA +(whose b) 180 252.99 T +(uf) 219.42 252.99 T +(fer contents will be sent. Processes other than the root specify) 229.12 252.99 T +(recei) 180 238.99 T +(v) 203.02 238.99 T +(e) 208.84 238.99 T +(b) 216.41 238.99 T +(uf) 222.17 238.99 T +(fers.) 231.87 238.99 T +(After) 255.11 238.99 T +(the) 282.68 238.99 T +(operation,) 299.59 238.99 T +(all) 350.17 238.99 T +(b) 364.42 238.99 T +(uf) 370.18 238.99 T +(fers) 379.87 238.99 T +(contain) 400.11 238.99 T +(the) 437.69 238.99 T +(message) 454.6 238.99 T +(from) 497.51 238.99 T +(the) 523.09 238.99 T +(root process.) 180 224.99 T +3 F +(MPI_Scatter \050void *sendbuf, int sendcount,) 180 202.99 T +180 347/G91618 FmPA +(MPI_Datatype sendtype, void *recvbuf,) 216 188.99 T +(int recvcount, MPI_Datatype recvtype,) 216 174.99 T +(int root, MPI_Comm comm\051;) 216 160.99 T +0 F +(MPI_Scatter\050\051 is also a one-to-man) 180 138.99 T +(y collecti) 348.46 138.99 T +(v) 392.48 138.99 T +(e operation. All processes) 398.3 138.99 T +180 283/G91619 FmPA +(specify the same recei) 180 124.99 T +(v) 286 124.99 T +(e count. The send ar) 291.82 124.99 T +(guments are only signi\336cant to) 388.57 124.99 T +(the) 180 110.99 T +(root) 197.46 110.99 T +(process,) 219.6 110.99 T +(whose) 261.39 110.99 T +(b) 294.85 110.99 T +(uf) 300.61 110.99 T +(fer) 310.3 110.99 T +(actually) 326.42 110.99 T +(contains) 367.22 110.99 T +(sendcount) 410.02 110.99 T +(*) 461.48 110.99 T +(N) 470.28 110.99 T +(elements) 481.74 110.99 T +(of) 527.2 110.99 T +(the) 180 96.99 T +(gi) 197.13 96.99 T +(v) 206.16 96.99 T +(en) 211.98 96.99 T +(datatype,) 225.77 96.99 T +(where) 271.89 96.99 T +(N) 303.67 96.99 T +(is) 314.8 96.99 T +(the) 325.27 96.99 T +(number) 342.4 96.99 T +(of) 381.52 96.99 T +(processes) 393.98 96.99 T +(in) 442.43 96.99 T +(the) 454.23 96.99 T +(gi) 471.36 96.99 T +(v) 480.39 96.99 T +(en) 486.21 96.99 T +(commu-) 500 96.99 T +(nicator) 180 82.99 T +(. The send b) 212.66 82.99 T +(uf) 271.08 82.99 T +(fer will be di) 280.78 82.99 T +(vided equally and dispersed to all pro-) 342.13 82.99 T +63 432 180 629.99 C +0 0 0 1 0 0 0 1 K +63 432 180 629.99 R +7 X +V +72 431.99 162 629.99 R +3 X +V +0.5 H +0 Z +N +0 0 612 792 C +63 340.99 180 402.98 C +0 0 0 1 0 0 0 1 K +63 340.99 180 402.98 R +7 X +V +72 348.98 162 402.98 R +V +4 14 Q +0 X +(Collecti) 103.19 393.65 T +(v) 148.92 393.65 T +(e) 155.78 393.65 T +72 538/G91321 FmPA +(Message-) 106.8 377.65 T +(P) 117.02 361.65 T +(assing) 125.43 361.65 T +0 0 612 792 C +63 260.99 180 310.98 C +0 0 0 1 0 0 0 1 K +63 260.99 180 310.98 R +7 X +V +72 265.98 162 310.98 R +V +4 12 Q +0 X +(Br) 110.22 302.98 T +(oadcast) 123.34 302.98 T +72 447/G91902 FmPA +0 0 612 792 C +63 160.99 180 210.98 C +0 0 0 1 0 0 0 1 K +63 160.99 180 210.98 R +7 X +V +72 165.98 162 210.98 R +V +4 12 Q +0 X +(Scatter) 125.35 202.98 T +72 347/G91929 FmPA +0 0 612 792 C +0 0 0 1 0 0 0 1 K +[/CropBox[0 0 FmDC 612 792 FmDC FmBx]/PAGE FmPD +[/Dest/P.34/DEST FmPD2 +[/Title(A)/Rect[171 63 549 639]/ARTICLE FmPD2 +FMENDPAGE +%%EndPage: "34" 34 +%%Page: "35" 35 +612 792 0 FMBEGINPAGE +0 FrameSetSepColors +FrameNoSep +0 0 0 1 0 0 0 1 K +180 745.99 540 756 R +7 X +V +1 12 Q +0 X +(35) 526.66 748 T +180 32.69 540 42.7 R +7 X +V +0 X +( MPI Primer / Developing with LAM) 180 34.7 T +180 738 540 738 2 L +7 X +V +1 H +2 Z +0 X +N +540 54 180 54 2 L +7 X +V +0 X +N +180 72 540 630 R +7 X +V +0 F +0 X +(cesses \050including itself\051. After the operation, the root has sent sendcount) 180 325 T +(elements) 180 311 T +(to) 225.65 311 T +(each) 237.98 311 T +(process) 262.95 311 T +(in) 301.93 311 T +(increasing) 314.26 311 T +(rank) 366.57 311 T +(order) 390.89 311 T +(.) 415.55 311 T +(Rank) 421.54 311 T +(0) 449.86 311 T +(recei) 458.86 311 T +(v) 481.87 311 T +(es) 487.69 311 T +(the) 500.68 311 T +(\336rst) 518.34 311 T +(sendcount elements from the send b) 180 297 T +(uf) 352.07 297 T +(fer) 361.76 297 T +(. Rank 1 recei) 374.42 297 T +(v) 440.77 297 T +(es the second send-) 446.59 297 T +(count elements from the send b) 180 283 T +(uf) 330.07 283 T +(fer) 339.77 283 T +(, and so on.) 352.61 283 T +3 F +(MPI_Gather \050void *sendbuf, int sendcount,) 180 261 T +180 405/G91874 FmPA +(MPI_Datatype sendtype, void *recvbuf,) 216 247 T +(int recvcount, MPI_Datatype recvtype,) 216 233 T +(int root, MPI_Comm comm\051;) 216 219 T +0 F +(MPI_Gather\050\051 is a man) 180 197 T +(y-to-one collecti) 290.8 197 T +(v) 369.48 197 T +(e operation and is a complete) 375.3 197 T +180 341/G91875 FmPA +(re) 180 183 T +(v) 189.02 183 T +(erse of the description of MPI_Scatter\050\051.) 194.84 183 T +3 F +(MPI_Reduce \050void *sendbuf, void *recvbuf,) 180 161 T +180 305/G91879 FmPA +(int count, MPI_Datatype dtype, MPI_Op op,) 216 147 T +(int root, MPI_Comm comm\051;) 216 133 T +0 F +(MPI_Reduce\050\051 is also a man) 180 111 T +(y-to-one collecti) 316.46 111 T +(v) 395.15 111 T +(e operation. All processes) 400.97 111 T +180 255/G91880 FmPA +(specify) 180 97 T +(the) 217.21 97 T +(same) 234.43 97 T +(count) 261.64 97 T +(and) 290.86 97 T +(reduction) 310.73 97 T +(operation.) 358.61 97 T +(After) 409.49 97 T +(the) 437.36 97 T +(reduction,) 454.58 97 T +(all) 505.45 97 T +(pro-) 520.01 97 T +(cesses ha) 180 83 T +(v) 224.08 83 T +(e sent count elements from their send b) 229.9 83 T +(uf) 417.96 83 T +(fer to the root process.) 427.66 83 T +180 72 540 630 C +0 0 0 1 0 0 0 1 K +180 333 540 630 C +0 0 0 1 0 0 0 1 K +5 12 Q +0 X +(Figure 5: Pr) 272.33 352.13 T +(imitiv) 335.2 352.13 T +(e Collectiv) 362.23 352.13 T +(e Oper) 417.27 352.13 T +(ations) 453.83 352.13 T +423.39 520.5 441.39 538.5 R +3 X +V +0.5 H +2 Z +0 X +N +441.39 520.5 459.39 538.5 R +N +423.39 502.5 441.39 520.5 R +5 X +V +0 X +N +441.39 502.5 459.39 520.5 R +N +423.39 484.5 441.39 502.5 R +12 X +V +0 X +N +423.39 466.5 441.39 484.5 R +9 X +V +0 X +N +441.39 484.5 459.39 502.5 R +N +441.39 466.5 459.39 484.5 R +N +459.39 520.5 477.39 538.5 R +N +459.39 502.5 477.39 520.5 R +N +459.39 484.5 477.39 502.5 R +N +459.39 466.5 477.39 484.5 R +N +477.39 520.5 495.39 538.5 R +N +477.39 502.5 495.39 520.5 R +N +477.39 484.5 495.39 502.5 R +N +477.39 466.5 495.39 484.5 R +N +261.39 429.5 279.39 447.5 R +3 X +V +0 X +N +279.39 429.5 297.39 447.5 R +N +261.39 411.5 279.39 429.5 R +5 X +V +0 X +N +279.39 411.5 297.39 429.5 R +N +261.39 393.5 279.39 411.5 R +12 X +V +0 X +N +261.39 375.5 279.39 393.5 R +9 X +V +0 X +N +279.39 393.5 297.39 411.5 R +N +279.39 375.5 297.39 393.5 R +N +297.39 429.5 315.39 447.5 R +N +297.39 411.5 315.39 429.5 R +N +297.39 393.5 315.39 411.5 R +N +297.39 375.5 315.39 393.5 R +N +315.39 429.5 333.39 447.5 R +N +315.39 411.5 333.39 429.5 R +N +315.39 393.5 333.39 411.5 R +N +315.39 375.5 333.39 393.5 R +N +423.39 429.5 441.39 447.5 R +N +441.39 429.5 459.39 447.5 R +N +423.39 411.5 441.39 429.5 R +N +441.39 411.5 459.39 429.5 R +N +423.39 393.5 441.39 411.5 R +N +423.39 375.5 441.39 393.5 R +N +441.39 393.5 459.39 411.5 R +N +441.39 375.5 459.39 393.5 R +N +459.39 429.5 477.39 447.5 R +N +459.39 411.5 477.39 429.5 R +N +459.39 393.5 477.39 411.5 R +N +459.39 375.5 477.39 393.5 R +N +477.39 429.5 495.39 447.5 R +N +477.39 411.5 495.39 429.5 R +N +477.39 393.5 495.39 411.5 R +N +477.39 375.5 495.39 393.5 R +N +261.39 609.5 279.39 627.5 R +3 X +V +0 X +N +279.39 609.5 297.39 627.5 R +N +261.39 591.5 279.39 609.5 R +N +279.39 591.5 297.39 609.5 R +N +261.39 573.5 279.39 591.5 R +N +261.39 555.5 279.39 573.5 R +N +279.39 573.5 297.39 591.5 R +N +279.39 555.5 297.39 573.5 R +N +297.39 609.5 315.39 627.5 R +N +297.39 591.5 315.39 609.5 R +N +297.39 573.5 315.39 591.5 R +N +297.39 555.5 315.39 573.5 R +N +315.39 609.5 333.39 627.5 R +N +315.39 591.5 333.39 609.5 R +N +315.39 573.5 333.39 591.5 R +N +315.39 555.5 333.39 573.5 R +N +423.39 609.5 441.39 627.5 R +3 X +V +0 X +N +441.39 609.5 459.39 627.5 R +N +423.39 591.5 441.39 609.5 R +3 X +V +0 X +N +441.39 591.5 459.39 609.5 R +N +423.39 573.5 441.39 591.5 R +3 X +V +0 X +N +423.39 555.5 441.39 573.5 R +3 X +V +0 X +N +441.39 573.5 459.39 591.5 R +N +441.39 555.5 459.39 573.5 R +N +459.39 609.5 477.39 627.5 R +N +459.39 591.5 477.39 609.5 R +N +459.39 573.5 477.39 591.5 R +N +459.39 555.5 477.39 573.5 R +N +477.39 609.5 495.39 627.5 R +N +477.39 591.5 495.39 609.5 R +N +477.39 573.5 495.39 591.5 R +N +477.39 555.5 495.39 573.5 R +N +423.39 438.5 432.39 447.5 R +3 X +V +0 X +N +432.39 438.5 441.39 447.5 R +5 X +V +0 X +N +423.39 429.5 432.39 438.5 R +12 X +V +0 X +N +432.39 429.5 441.39 438.5 R +9 X +V +0 X +N +(Broadcast) 351.37 603.13 T +(Gather) 360.39 487.13 T +(Scatter) 358.38 523.13 T +(Reduce) 355.04 423.13 T +5 10 Q +(r) 224.6 614.86 T +(ank 0) 227.84 614.86 T +(r) 224.6 596.86 T +(ank 1) 227.84 596.86 T +(r) 224.6 578.86 T +(ank 2) 227.84 578.86 T +(r) 224.6 560.86 T +(ank 3) 227.84 560.86 T +90 450 1.5 1.5 387.3 591.5 G +387.8 591.5 387.8 595.89 395.39 591.5 387.8 587.12 4 Y +1 H +0 Z +N +387.8 591.5 387.8 595.89 395.39 591.5 387.8 587.12 4 Y +V +360.39 591.5 387.3 591.5 2 L +3 H +2 Z +N +90 450 1.5 1.5 387.3 511.5 G +387.8 511.5 387.8 515.89 395.39 511.5 387.8 507.12 4 Y +1 H +0 Z +N +387.8 511.5 387.8 515.89 395.39 511.5 387.8 507.12 4 Y +V +360.39 511.5 387.3 511.5 2 L +3 H +2 Z +N +90 450 1.5 1.5 180 369.49 475.5 GG +368.99 475.5 368.99 471.12 361.39 475.5 368.99 479.89 4 Y +1 H +0 Z +N +368.99 475.5 368.99 471.12 361.39 475.5 368.99 479.89 4 Y +V +396.39 475.5 369.49 475.5 2 L +3 H +2 Z +N +261.39 520.25 279.39 538.5 R +3 X +V +0.5 H +0 X +N +279.39 520.25 297.39 538.5 R +5 X +V +0 X +N +261.39 502 279.39 520.25 R +N +279.39 502 297.39 520.25 R +N +261.39 483.75 279.39 502 R +N +261.39 465.5 279.39 483.75 R +N +279.39 483.75 297.39 502 R +N +279.39 465.5 297.39 483.75 R +N +297.39 520.25 315.39 538.5 R +12 X +V +0 X +N +297.39 502 315.39 520.25 R +N +297.39 483.75 315.39 502 R +N +297.39 465.5 315.39 483.75 R +N +315.39 520.25 333.39 538.5 R +9 X +V +0 X +N +315.39 502 333.39 520.25 R +N +315.39 483.75 333.39 502 R +N +315.39 465.5 333.39 483.75 R +N +90 450 1.5 1.5 387.3 411.5 G +387.8 411.5 387.8 415.89 395.39 411.5 387.8 407.12 4 Y +1 H +0 Z +N +387.8 411.5 387.8 415.89 395.39 411.5 387.8 407.12 4 Y +V +360.39 411.5 387.3 411.5 2 L +3 H +2 Z +N +180 72 540 630 C +0 0 612 792 C +0 0 0 1 0 0 0 1 K +63 219 180 268.99 C +0 0 0 1 0 0 0 1 K +63 219 180 268.99 R +7 X +V +72 223.99 162 268.99 R +V +4 12 Q +0 X +(Gather) 125.34 260.99 T +72 405/G91913 FmPA +0 0 612 792 C +63 119 180 168.99 C +0 0 0 1 0 0 0 1 K +63 119 180 168.99 R +7 X +V +72 123.99 162 168.99 R +V +4 12 Q +0 X +(Reduce) 124.01 160.99 T +72 305/G91921 FmPA +0 0 612 792 C +0 0 0 1 0 0 0 1 K +[/CropBox[0 0 FmDC 612 792 FmDC FmBx]/PAGE FmPD +[/Dest/P.35/DEST FmPD2 +[/Title(A)/Rect[171 63 549 639]/ARTICLE FmPD2 +FMENDPAGE +%%EndPage: "35" 35 +%%Page: "36" 36 +612 792 0 FMBEGINPAGE +0 FrameSetSepColors +FrameNoSep +0 0 0 1 0 0 0 1 K +180 745.99 540 756 R +7 X +V +1 12 Q +0 X +(36) 180 748 T +180 32.69 540 42.7 R +7 X +V +0 X +( MPI Primer / Developing with LAM) 180 34.7 T +180 738 540 738 2 L +7 X +V +1 H +2 Z +0 X +N +540 54 180 54 2 L +7 X +V +0 X +N +180 72 540 630 R +7 X +V +0 F +0 X +(Elements) 180 622 T +(from) 227.2 622 T +(corresponding) 253.07 622 T +(send) 324.26 622 T +(b) 348.8 622 T +(uf) 354.56 622 T +(fer) 364.26 622 T +(locations) 380.12 622 T +(are) 425.99 622 T +(combined) 443.18 622 T +(pair) 493.05 622 T +(-wise) 511.47 622 T +(to) 180 608 T +(yield) 192.12 608 T +(a) 218.91 608 T +(single) 227.02 608 T +(corresponding) 258.47 608 T +(element) 329.91 608 T +(in) 370.69 608 T +(the) 382.81 608 T +(root) 400.26 608 T +(process\325) 422.37 608 T +(s) 461.7 608 T +(recei) 469.15 608 T +(v) 492.17 608 T +(e) 497.99 608 T +(b) 506.1 608 T +(uf) 511.86 608 T +(fer) 521.55 608 T +(.) 534.22 608 T +(The full reduction e) 180 594 T +(xpression o) 274.8 594 T +(v) 329.62 594 T +(er all processes is al) 335.44 594 T +(w) 431.29 594 T +(ays associati) 439.84 594 T +(v) 499.86 594 T +(e and) 505.68 594 T +(may) 180 580 T +(or) 203.48 580 T +(may) 216.3 580 T +(not) 239.78 580 T +(be) 257.93 580 T +(commutati) 272.08 580 T +(v) 323.12 580 T +(e.) 328.94 580 T +(Application) 340.08 580 T +(speci\336c) 399.57 580 T +(reduction) 439.05 580 T +(operations) 487.19 580 T +(can) 180 566 T +(be) 199.57 566 T +(de\336ned) 213.81 566 T +(at) 252.06 566 T +(runtime.) 263.64 566 T +(MPI) 306.88 566 T +(pro) 331.13 566 T +(vides) 346.95 566 T +(se) 375.2 566 T +(v) 384.89 566 T +(eral) 390.71 566 T +(pre-de\336ned) 411.61 566 T +(operations,) 469.18 566 T +(all) 525.09 566 T +(of which are commutati) 180 552 T +(v) 294.01 552 T +(e. The) 299.83 552 T +(y can be used only with sensible MPI pre-) 329.64 552 T +(de\336ned datatypes.) 180 538 T +3 F +(MPI_MAX) 180 516 T +0 F +(maximum) 270 516 T +180 660/G91884 FmPA +3 F +(MPI_MIN) 180 500 T +0 F +(minimum) 270 500 T +180 644/G91885 FmPA +3 F +(MPI_SUM) 180 484 T +0 F +(sum) 270 484 T +180 628/G91886 FmPA +3 F +(MPI_PROD) 180 468 T +0 F +(product) 270 468 T +180 612/G91887 FmPA +3 F +(MPI_LAND) 180 452 T +0 F +(logical and) 270 452 T +180 596/G91888 FmPA +3 F +(MPI_BAND) 180 436 T +0 F +(bitwise and) 270 436 T +180 580/G91889 FmPA +3 F +(MPI_LOR) 180 420 T +0 F +(logical or) 270 420 T +180 564/G91890 FmPA +3 F +(MPI_BOR) 180 404 T +0 F +(bitwise or) 270 404 T +180 548/G91891 FmPA +3 F +(MPI_LXOR) 180 388 T +0 F +(logical e) 270 388 T +(xclusi) 310.81 388 T +(v) 339.18 388 T +(e or) 345 388 T +180 532/G91892 FmPA +3 F +(MPI_BXOR) 180 372 T +0 F +(bitwise e) 270 372 T +(xclusi) 312.82 372 T +(v) 341.18 372 T +(e or) 347 372 T +180 516/G91893 FmPA +(The follo) 180 350 T +(wing code fragment illustrates the primiti) 224.03 350 T +(v) 422.71 350 T +(e collecti) 428.53 350 T +(v) 471.89 350 T +(e operations) 477.71 350 T +180 494/G91897 FmPA +(together in the conte) 180 336 T +(xt of a statically partitioned re) 278.14 336 T +(gular data domain \050e.g.,) 422.27 336 T +(1-D) 180 322 T +(array\051.) 201.63 322 T +(The) 236.25 322 T +(global) 257.89 322 T +(domain) 290.86 322 T +(information) 329.84 322 T +(is) 389.48 322 T +(initially) 400.46 322 T +(obtained) 440.78 322 T +(by) 485.08 322 T +(the) 500.05 322 T +(root) 517.69 322 T +(process \050e.g., rank 0\051 and is broadcast to all other processes. The initial) 180 308 T +(dataset) 180 294 T +(is) 215.57 294 T +(also) 225.83 294 T +(obtained) 247.41 294 T +(by) 290.98 294 T +(the) 305.23 294 T +(root) 322.14 294 T +(and) 343.73 294 T +(is) 363.3 294 T +(scattered) 373.55 294 T +(to) 418.45 294 T +(all) 430.04 294 T +(processes.) 444.29 294 T +(After) 495.52 294 T +(the) 523.09 294 T +(computation phase, a global maximum is returned to the root process fol-) 180 280 T +(lo) 180 266 T +(wed by the ne) 189.04 266 T +(w dataset itself.) 255.72 266 T +3 10 Q +(/*) 180 245.33 T +180 389/G91942 FmPA +( * parallel programming with a single control process) 180 234.33 T +( */) 180 223.33 T +(int) 216 210.33 T +(root;) 324 210.33 T +180 354/G93756 FmPA +(int) 216 199.33 T +(rank, size;) 324 199.33 T +(int) 216 188.33 T +(i;) 324 188.33 T +(int) 216 175.33 T +(full_domain_length;) 324 175.33 T +180 319/G91994 FmPA +(int) 216 164.33 T +(sub_domain_length;) 324 164.33 T +(double) 216 151.33 T +(*full_domain, *sub_domain;) 324 151.33 T +180 295/G91996 FmPA +(double) 216 140.33 T +(local_max, global_max;) 324 140.33 T +(root = 0;) 216 127.33 T +180 271/G91993 FmPA +(MPI_Comm_size\050MPI_COMM_WORLD, &size\051;) 216 116.33 T +(MPI_Comm_rank\050MPI_COMM_WORLD, &rank\051;) 216 105.33 T +[/CropBox[0 0 FmDC 612 792 FmDC FmBx]/PAGE FmPD +[/Dest/P.36/DEST FmPD2 +[/Title(A)/Rect[171 63 549 639]/ARTICLE FmPD2 +FMENDPAGE +%%EndPage: "36" 36 +%%Page: "37" 37 +612 792 0 FMBEGINPAGE +0 FrameSetSepColors +FrameNoSep +0 0 0 1 0 0 0 1 K +180 745.99 540 756 R +7 X +V +1 12 Q +0 X +(37) 526.66 748 T +180 32.69 540 42.7 R +7 X +V +0 X +( MPI Primer / Developing with LAM) 180 34.7 T +180 738 540 738 2 L +7 X +V +1 H +2 Z +0 X +N +540 54 180 54 2 L +7 X +V +0 X +N +180 72 540 630 R +7 X +V +3 10 Q +0 X +(/*) 180 623.33 T +180 767/G91981 FmPA +( * Root obtains full domain and broadcasts its length.) 180 612.33 T +( */) 180 601.33 T +(if \050rank == root\051 {) 216 590.33 T +(get_full_domain\050&full_domain,) 252 579.33 T +(&full_domain_length\051;) 288 568.33 T +(}) 216 557.33 T +(MPI_Bcast\050&full_domain_length, 1 MPI_INT, root,) 216 544.33 T +180 688/G96056 FmPA +(MPI_COMM_WORLD\051;) 252 533.33 T +(/*) 180 520.33 T +180 664/G96060 FmPA +( * Distribute the initial dataset.) 180 509.33 T +( */) 180 498.33 T +(sub_domain_length = full_domain_length / size;) 216 487.33 T +(sub_domain = \050double *\051 malloc\050sub_domain_length *) 216 476.33 T +(sizeof\050double\051\051;) 252 465.33 T +(MPI_Scatter\050full_domain, sub_domain_length,) 216 452.33 T +180 596/G91953 FmPA +(MPI_DOUBLE, sub_domain, sub_domain_length,) 252 441.33 T +(MPI_DOUBLE, root, MPI_COMM_WORLD\051;) 252 430.33 T +(/*) 180 417.33 T +180 561/G91964 FmPA +( * Compute the new dataset.) 180 406.33 T +( */) 180 395.33 T +(compute\050sub_domain, sub_domain_length, &local_max\051;) 216 384.33 T +(/*) 180 371.33 T +180 515/G91990 FmPA +( * Reduce the local maxima to one global maximum) 180 360.33 T +( * at the root.) 180 349.33 T +( */) 180 338.33 T +(MPI_Reduce\050&local_max, &global_max, 1, MPI_DOUBLE,) 216 327.33 T +(MPI_MAX, root, MPI_COMM_WORLD\051;) 252 316.33 T +(/*) 180 303.33 T +180 447/G91991 FmPA +( * Collect the new dataset.) 180 290.33 T +180 434/G91992 FmPA +( */) 180 279.33 T +(MPI_Gather\050sub_domain, sub_domain_length, MPI_DOUBLE,) 216 268.33 T +(full_domain, sub_domain_length, MPI_DOUBLE,) 252 257.33 T +(root, MPI_COMM_WORLD\051;) 252 246.33 T +[/CropBox[0 0 FmDC 612 792 FmDC FmBx]/PAGE FmPD +[/Dest/P.37/DEST FmPD2 +[/Title(A)/Rect[171 63 549 639]/ARTICLE FmPD2 +FMENDPAGE +%%EndPage: "37" 37 +%%Page: "38" 38 +612 792 0 FMBEGINPAGE +0 FrameSetSepColors +FrameNoSep +0 0 0 1 0 0 0 1 K +180 745.99 540 756 R +7 X +V +1 12 Q +0 X +(38) 180 748 T +180 32.69 540 42.7 R +7 X +V +0 X +( MPI Primer / Developing with LAM) 180 34.7 T +180 738 540 738 2 L +7 X +V +1 H +2 Z +0 X +N +540 54 180 54 2 L +7 X +V +0 X +N +180 72 540 630 R +7 X +V +3 F +0 X +(MPI_Comm_dup) 180 622 T +0 F +(Duplicate communicator with ne) 324 622 T +(w conte) 481.34 622 T +(xt.) 518.82 622 T +180 766/G92012 FmPA +3 F +(MPI_Comm_split) 180 608 T +0 F +(Split into cate) 324 608 T +(gorized sub-groups.) 390.49 608 T +3 F +(MPI_Comm_free) 180 594 T +0 F +(Release a communicator) 324 594 T +(.) 441.31 594 T +3 F +(MPI_Comm_remote_size) 180 580 T +0 F +(Count intercomm. remote group members.) 324 566 T +3 F +(MPI_Intercomm_merge) 180 552 T +0 F +(Create an intracomm. from an intercomm.) 324 552 T +3 10 Q +(MPI_Comm_compare) 180 523.33 T +0 F +(Compare tw) 324 523.33 T +(o communicators.) 373.06 523.33 T +180 667/G92013 FmPA +3 F +(MPI_Comm_create) 180 511.33 T +0 F +(Create a communicator with a gi) 324 511.33 T +(v) 454.56 511.33 T +(en group.) 459.41 511.33 T +3 F +(MPI_Comm_test_inter) 180 499.33 T +0 F +(T) 324 499.33 T +(est for intracommunicator or intercommunicator) 329.41 499.33 T +(.) 522.16 499.33 T +3 F +(MPI_Intercomm_create) 180 487.33 T +0 F +(Create an intercommunicator) 324 487.33 T +(.) 440.09 487.33 T +3 F +(MPI_Group_size) 180 462.33 T +0 F +(Get number of processes in group.) 324 462.33 T +180 606/G92037 FmPA +3 F +(MPI_Group_rank) 180 450.33 T +0 F +(Get rank of calling process.) 324 450.33 T +3 F +(MPI_Group_translate_ranks) 180 438.33 T +0 F +(Processes in group A ha) 324 426.33 T +(v) 420.45 426.33 T +(e what ranks in B?) 425.3 426.33 T +3 F +(MPI_Group_compare) 180 414.33 T +0 F +(Compare membership of tw) 324 414.33 T +(o groups.) 435.83 414.33 T +3 F +(MPI_Comm_group) 180 402.33 T +0 F +(Get group from communicator) 324 402.33 T +(.) 445.93 402.33 T +3 F +(MPI_Group_union) 180 390.33 T +0 F +(Create group with all members of 2 others.) 324 390.33 T +3 F +(MPI_Group_intersection) 180 378.33 T +0 F +(Create with common members of 2 others.) 324 378.33 T +3 F +(MPI_Group_difference) 180 366.33 T +0 F +(Create with the complement of intersection.) 324 366.33 T +3 F +(MPI_Group_incl) 180 354.33 T +0 F +(Create with speci\336c members of old group.) 324 354.33 T +3 F +(MPI_Group_excl) 180 342.33 T +0 F +(Create with the complement of incl.) 324 342.33 T +3 F +(MPI_Group_range_incl) 180 330.33 T +0 F +(Create with ranges of old group members.) 324 330.33 T +3 F +(MPI_Group_range_excl) 180 318.33 T +0 F +(Create with the complement of range_incl.) 324 318.33 T +3 F +(MPI_Group_free) 180 306.33 T +0 F +(Release a group object.) 324 306.33 T +180 277.99 540 288 C +0 0 0 1 0 0 0 1 K +180 277.99 540 288 R +7 X +V +180 286.99 649.01 286.99 2 L +V +1 H +2 Z +0 X +N +0 0 612 792 C +0 0 0 1 0 0 0 1 K +0 12 Q +0 X +(A) 180 269.99 T +(communicator) 191.36 269.99 T +(could) 263.39 269.99 T +(be) 292.75 269.99 T +(described) 306.78 269.99 T +(simply) 355.46 269.99 T +(as) 390.84 269.99 T +(a) 403.54 269.99 T +(process) 411.56 269.99 T +(group.) 450.25 269.99 T +(Its) 483.95 269.99 T +(creation) 498.65 269.99 T +180 414/G92014 FmPA +(is) 180 255.99 T +(synchronized) 190.37 255.99 T +(and) 256.71 255.99 T +(its) 276.4 255.99 T +(membership) 290.1 255.99 T +(is) 351.79 255.99 T +(static.) 362.15 255.99 T +(There) 392.84 255.99 T +(is) 423.19 255.99 T +(no) 433.55 255.99 T +(period) 447.91 255.99 T +(in) 480.93 255.99 T +(user) 492.63 255.99 T +(code) 514.98 255.99 T +(where) 180 241.99 T +(a) 211.76 241.99 T +(communicator) 219.52 241.99 T +(is) 291.29 241.99 T +(created) 301.73 241.99 T +(b) 338.82 241.99 T +(ut) 344.58 241.99 T +(not) 356.36 241.99 T +(all) 374.13 241.99 T +(its) 388.57 241.99 T +(members) 402.35 241.99 T +(ha) 448.79 241.99 T +(v) 459.87 241.99 T +(e) 465.69 241.99 T +(joined.) 473.46 241.99 T +(These) 508.9 241.99 T +(qualities mak) 180 227.99 T +(e communicators a solid parallel programming foundation.) 244.21 227.99 T +(Three communicators are pref) 180 213.99 T +(abricated before the user code is \336rst called:) 324.83 213.99 T +(MPI_COMM_W) 180 199.99 T +(ORLD, MPI_COMM_SELF and) 262.55 199.99 T +(MPI_COMM_P) 180 185.99 T +(ARENT) 256.91 185.99 T +(. See) 296.02 185.99 T +2 F +(Basic Concepts) 322.34 185.99 T +0 F +(.) 396.67 185.99 T +(Communicators) 180 155.99 T +(carry) 259.36 155.99 T +(a) 286.7 155.99 T +(hidden) 294.72 155.99 T +(synchronization) 330.07 155.99 T +(v) 409.42 155.99 T +(ariable) 415.12 155.99 T +(called) 450.46 155.99 T +(the) 481.81 155.99 T +(conte) 499.16 155.99 T +(xt.) 524.97 155.99 T +180 300/G92015 FmPA +(If) 180 141.99 T +(tw) 190.28 141.99 T +(o) 202.16 141.99 T +(processes) 210.45 141.99 T +(agree) 258.73 141.99 T +(on) 287 141.99 T +(source) 301.29 141.99 T +(rank,) 334.9 141.99 T +(destination) 361.52 141.99 T +(rank) 416.48 141.99 T +(and) 440.09 141.99 T +(message) 459.71 141.99 T +(tag,) 502.66 141.99 T +(b) 522.61 141.99 T +(ut) 528.37 141.99 T +(use) 180 127.99 T +(dif) 198.89 127.99 T +(ferent) 211.92 127.99 T +(communicators,) 242.8 127.99 T +(the) 322.69 127.99 T +(y) 337.18 127.99 T +(will) 346.07 127.99 T +(not) 367.64 127.99 T +(synchronize.) 385.87 127.99 T +(The) 449.75 127.99 T +(e) 471.31 127.99 T +(xtra) 476.46 127.99 T +(synchro-) 498.01 127.99 T +(nization means that the global softw) 180 113.99 T +(are industry does not ha) 353.53 113.99 T +(v) 467.94 113.99 T +(e to di) 473.76 113.99 T +(vide,) 503.46 113.99 T +(allocate or reserv) 180 99.99 T +(e tag v) 262.45 99.99 T +(alues. When writing a library or a module of an) 294.14 99.99 T +(application,) 180 85.99 T +(it) 239.18 85.99 T +(is) 248.7 85.99 T +(a) 259.55 85.99 T +(good) 267.73 85.99 T +(idea) 294.58 85.99 T +(to) 317.42 85.99 T +(create) 329.61 85.99 T +(ne) 361.1 85.99 T +(w) 372.13 85.99 T +(communicators,) 383.64 85.99 T +(and) 463.48 85.99 T +(hence) 483.66 85.99 T +(a) 514.49 85.99 T +(pri-) 522.67 85.99 T +63 306 180 629.99 C +0 0 0 1 0 0 0 1 K +63 306 180 629.99 R +7 X +V +72 305.99 162 629.99 R +3 X +V +0.5 H +0 Z +N +0 0 612 792 C +54 215.99 180 277.98 C +0 0 0 1 0 0 0 1 K +54 215.99 180 277.98 R +7 X +V +63 223.98 162 277.98 R +V +4 14 Q +0 X +(Cr) 109.37 268.65 T +(eating) 125.45 268.65 T +63 413/G92027 FmPA +(Communicators) 65.57 252.65 T +0 0 612 792 C +0 0 0 1 0 0 0 1 K +[/CropBox[0 0 FmDC 612 792 FmDC FmBx]/PAGE FmPD +[/Dest/P.38/DEST FmPD2 +[/Title(A)/Rect[171 63 549 639]/ARTICLE FmPD2 +FMENDPAGE +%%EndPage: "38" 38 +%%Page: "39" 39 +612 792 0 FMBEGINPAGE +0 FrameSetSepColors +FrameNoSep +0 0 0 1 0 0 0 1 K +180 745.99 540 756 R +7 X +V +1 12 Q +0 X +(39) 526.66 748 T +180 32.69 540 42.7 R +7 X +V +0 X +( MPI Primer / Developing with LAM) 180 34.7 T +180 738 540 738 2 L +7 X +V +1 H +2 Z +0 X +N +540 54 180 54 2 L +7 X +V +0 X +N +180 72 540 630 R +7 X +V +0 F +0 X +(v) 180 622 T +(ate synchronization space. The simplest MPI routine for this purpose is) 185.7 622 T +(MPI_Comm_dup\050\051,) 180 608 T +(which) 277.62 608 T +(duplicates) 309.57 608 T +(e) 360.85 608 T +(v) 365.88 608 T +(erything) 371.7 608 T +(in) 414.31 608 T +(a) 426.27 608 T +(communicator) 434.22 608 T +(,) 503.06 608 T +(partic-) 508.68 608 T +(ularly the group membership, and allocates a ne) 180 594 T +(w conte) 409.66 594 T +(xt.) 447.13 594 T +3 F +(MPI_Comm_dup \050MPI_comm comm, MPI_comm *newcomm\051;) 180 564 T +180 708/G92056 FmPA +0 F +(Applications may wish to split into man) 180 542 T +(y subgroups, sometimes for data) 371.83 542 T +180 686/G92057 FmPA +(parallel con) 180 528 T +(v) 235.84 528 T +(enience \050i.e. a ro) 241.66 528 T +(w of a matrix\051, sometimes for functional) 320.99 528 T +(grouping \050i.e. multiple distinct programs in a data\337o) 180 514 T +(w architecture\051. The) 430.69 514 T +(group membership can be e) 180 500 T +(xtracted from the communicator and manipu-) 312.46 500 T +(lated) 180 486 T +(by) 206.08 486 T +(an) 220.83 486 T +(entire) 234.91 486 T +(suite) 264.99 486 T +(of) 290.41 486 T +(MPI) 303.15 486 T +(routines.) 327.24 486 T +(The) 371.66 486 T +(ne) 393.07 486 T +(w) 404.1 486 T +(group) 415.51 486 T +(can) 446.26 486 T +(then) 465.67 486 T +(be) 489.08 486 T +(used) 503.16 486 T +(to) 527.91 486 T +(create a ne) 180 472 T +(w communicator) 231 472 T +(. MPI also pro) 311.33 472 T +(vides a po) 379.81 472 T +(werful routine,) 428.17 472 T +(MPI_Comm_split\050\051, that starts with a communicator and results in one or) 180 458 T +(more ne) 180 444 T +(w communicators. It combines group splitting with communicator) 218.69 444 T +(creation and is suf) 180 430 T +(\336cient for man) 267.35 430 T +(y common application requirements.) 337.82 430 T +3 F +(MPI_Comm_split \050MPI_comm comm, int color,) 180 400 T +180 544/G92103 FmPA +(int key, MPI_Comm *newcomm\051;) 216 386 T +0 F +(The color and k) 180 364 T +(e) 255.53 364 T +(y ar) 260.68 364 T +(guments guide the group splitting. There will be one) 278.78 364 T +180 508/G92104 FmPA +(ne) 180 350 T +(w communicator for each v) 191.03 350 T +(alue of color) 322.69 350 T +(. Processes pro) 382.68 350 T +(viding the same) 454.15 350 T +(v) 180 336 T +(alue for color will be grouped in the same communicator) 185.7 336 T +(. Their ranks in) 457.99 336 T +(the ne) 180 322 T +(w communicator are determined by sorting the k) 208.69 322 T +(e) 442.2 322 T +(y ar) 447.35 322 T +(guments. The) 465.46 322 T +(lo) 180 308 T +(west v) 189.04 308 T +(alue of k) 219.73 308 T +(e) 261.6 308 T +(y will become rank 0. T) 266.75 308 T +(ies are brok) 380.98 308 T +(en by rank in the old) 436.84 308 T +(communicator) 180 294 T +(. T) 248.66 294 T +(o preserv) 261.04 294 T +(e relati) 305.17 294 T +(v) 337.86 294 T +(e order from the old communicator) 343.68 294 T +(, sim-) 511.5 294 T +(ply use the same k) 180 280 T +(e) 268.54 280 T +(y e) 273.68 280 T +(v) 287.71 280 T +(erywhere.) 293.53 280 T +(A communicator is released by MPI_Comm_free\050\051. Underlying system) 180 132 T +180 276/G97365 FmPA +(resources may be conserv) 180 118 T +(ed by releasing unw) 303.44 118 T +(anted communicators.) 399.64 118 T +3 F +(MPI_Comm_free \050MPI_Comm *comm\051;) 180 88 T +180 232/G97366 FmPA +180 72 540 630 C +0 0 0 1 0 0 0 1 K +180 158 540 276 C +0 0 0 1 0 0 0 1 K +252 242.81 270 260.81 R +3 X +V +0.5 H +2 Z +0 X +N +270 242.81 288 260.81 R +12 X +V +0 X +N +288 242.81 306 260.81 R +12 X +V +0 X +N +306 242.81 324 260.81 R +12 X +V +0 X +N +324 242.81 342 260.81 R +3 X +V +0 X +N +342 242.81 360 260.81 R +9 X +V +0 X +N +360 242.81 378 260.81 R +3 X +V +0 X +N +378 242.81 396 260.81 R +3 X +V +0 X +N +396 242.81 414 260.81 R +12 X +V +0 X +N +414 242.81 432 260.81 R +9 X +V +0 X +N +432 242.81 450 260.81 R +3 X +V +0 X +N +450 242.81 468 260.81 R +12 X +V +0 X +N +234 188.81 252 206.81 R +3 X +V +0 X +N +252 188.81 270 206.81 R +3 X +V +0 X +N +270 188.81 288 206.81 R +3 X +V +0 X +N +288 188.81 306 206.81 R +3 X +V +0 X +N +306 188.81 324 206.81 R +3 X +V +0 X +N +342 188.81 360 206.81 R +12 X +V +0 X +N +360 188.81 378 206.81 R +12 X +V +0 X +N +378 188.81 396 206.81 R +12 X +V +0 X +N +396 188.81 414 206.81 R +12 X +V +0 X +N +414 188.81 432 206.81 R +12 X +V +0 X +N +450 188.81 468 206.81 R +9 X +V +0 X +N +468 188.81 486 206.81 R +9 X +V +0 X +N +5 12 Q +(Figure 6: Comm) 282.31 167.81 T +(unicator Split) 368.21 167.81 T +90 450 1.5 1.5 270 360 224.91 GG +360 224.41 364.38 224.41 360 216.81 355.62 224.41 4 Y +1 H +0 Z +N +360 224.41 364.38 224.41 360 216.81 355.62 224.41 4 Y +V +360 233.81 360 224.91 2 L +3 H +2 Z +N +90 450 1.5 1.5 270 252 224.91 GG +252 224.41 256.38 224.41 252 216.81 247.62 224.41 4 Y +1 H +0 Z +N +252 224.41 256.38 224.41 252 216.81 247.62 224.41 4 Y +V +252 233.81 252 224.91 2 L +3 H +2 Z +N +90 450 1.5 1.5 270 468 224.91 GG +468 224.41 472.38 224.41 468 216.81 463.62 224.41 4 Y +1 H +0 Z +N +468 224.41 472.38 224.41 468 216.81 463.62 224.41 4 Y +V +468 233.81 468 224.91 2 L +3 H +2 Z +N +180 72 540 630 C +0 0 612 792 C +0 0 0 1 0 0 0 1 K +[/CropBox[0 0 FmDC 612 792 FmDC FmBx]/PAGE FmPD +[/Dest/P.39/DEST FmPD2 +[/Title(A)/Rect[171 63 549 639]/ARTICLE FmPD2 +FMENDPAGE +%%EndPage: "39" 39 +%%Page: "40" 40 +612 792 0 FMBEGINPAGE +0 FrameSetSepColors +FrameNoSep +0 0 0 1 0 0 0 1 K +180 745.99 540 756 R +7 X +V +1 12 Q +0 X +(40) 180 748 T +180 32.69 540 42.7 R +7 X +V +0 X +( MPI Primer / Developing with LAM) 180 34.7 T +180 738 540 738 2 L +7 X +V +1 H +2 Z +0 X +N +540 54 180 54 2 L +7 X +V +0 X +N +180 63 540 630 R +7 X +V +0 F +0 X +(An) 180 622 T +(intercommunicator) 197.01 622 T +(contains) 290.67 622 T +(tw) 333.02 622 T +(o) 344.9 622 T +(groups:) 353.24 622 T +(a) 391.59 622 T +(local) 399.26 622 T +(group) 424.93 622 T +(in) 455.27 622 T +(which) 466.96 622 T +(the) 498.63 622 T +(o) 515.64 622 T +(wn-) 521.34 622 T +180 766/G97256 FmPA +(ing process is a member and a remote group of separate processes. The) 180 608 T +(remote) 180 594 T +(process) 216 594 T +(group) 254.66 594 T +(has) 285.33 594 T +(the) 303.99 594 T +(mirror) 321.33 594 T +(image) 354.66 594 T +(intercommunicator) 386.67 594 T +(-) 480.66 594 T +(the) 487.33 594 T +(groups) 504.66 594 T +(are \337ipped. Spa) 180 580 T +(wning ne) 254.81 580 T +(w processes creates an intercommunicator) 298.84 580 T +(. See) 500.78 580 T +2 F +(Dynamic Pr) 180 566 T +(ocesses) 237.78 566 T +0 F +(. MPI_Intercomm_mer) 273.77 566 T +(ge\050\051 creates an intracommunica-) 384.2 566 T +(tor) 180 552 T +(\050the) 195.47 552 T +(common) 216.28 552 T +(form) 260.42 552 T +(with) 285.89 552 T +(a) 309.37 552 T +(single) 316.84 552 T +(group\051) 347.65 552 T +(from) 381.78 552 T +(an) 407.25 552 T +(intercommunicator) 420.72 552 T +(.) 511.38 552 T +(This) 516.52 552 T +(is often done to permit collecti) 180 538 T +(v) 326.69 538 T +(e operations, which can only be done on) 332.51 538 T +(intracommunicators.) 180 524 T +3 F +(MPI_Intercomm_merge \050MPI_Comm intercomm,) 180 494 T +180 638/G97287 FmPA +(int high, MPI_Comm *newintracomm\051;) 216 480 T +0 F +(The) 180 458 T +(ne) 201.59 458 T +(w) 212.62 458 T +(intracommunicator) 224.21 458 T +(group) 318.46 458 T +(contains) 349.38 458 T +(the) 392.3 458 T +(union) 409.9 458 T +(of) 440.16 458 T +(the) 453.08 458 T +(tw) 470.68 458 T +(o) 482.56 458 T +(groups) 491.48 458 T +(of) 527.08 458 T +180 602/G97304 FmPA +(the intercommunicator) 180 444 T +(. The operation is collecti) 288.32 444 T +(v) 410.34 444 T +(e o) 416.16 444 T +(v) 430.31 444 T +(er both groups. Rank) 436.13 444 T +(ordering within the tw) 180 430 T +(o founding groups is maintained. Ordering between) 286.87 430 T +(the tw) 180 416 T +(o founding groups is controlled by the high parameter) 209.54 416 T +(, a boolean) 467.7 416 T +(v) 180 402 T +(alue. The intercommunicator group that sets this parameter true will) 185.7 402 T +(occup) 180 388 T +(y the higher ranks in the intracommunicator) 208.54 388 T +(.) 418.51 388 T +(The number of members in the remote group of an intercommunicator is) 180 366 T +180 510/G97288 FmPA +(obtained by MPI_Comm_remote_size\050\051.) 180 352 T +3 F +(MPI_Comm_remote_size \050MPI_Comm comm, int *size\051;) 180 322 T +180 466/G97316 FmPA +0 F +(Some MPI implementations may in) 180 300 T +(v) 350.2 300 T +(alidate a communicator if a member) 355.9 300 T +180 444/G97322 FmPA +(process dies. The MPI library may raise an error condition on an) 180 286 T +(y attempt) 489.76 286 T +(to) 180 272 T +(use) 192.29 272 T +(a) 211.24 272 T +(dead) 219.52 272 T +(communicator) 245.13 272 T +(,) 313.97 272 T +(including) 319.93 272 T +(requests) 368.21 272 T +(in) 410.49 272 T +(progress) 422.78 272 T +(whose) 466.39 272 T +(commu-) 500 272 T +(nicator) 180 258 T +(suddenly) 216.18 258 T +(becomes) 262.37 258 T +(in) 307.21 258 T +(v) 316.07 258 T +(alid.) 321.77 258 T +(These) 345.62 258 T +(f) 377.14 258 T +(aults) 381.01 258 T +(w) 406.54 258 T +(ould) 415.08 258 T +(then) 439.27 258 T +(be) 462.79 258 T +(detectable) 476.98 258 T +(at) 528.48 258 T +(the application le) 180 244 T +(v) 262.36 244 T +(el by setting a communicator\325) 268.18 244 T +(s error handler to) 410.83 244 T +(MPI_ERR) 180 230 T +(ORS_RETURN \050See) 230.2 230 T +2 F +(Miscellaneous MPI F) 334.86 230 T +(eatur) 437.94 230 T +(es) 462.83 230 T +0 F +(\051.) 472.82 230 T +(A crude b) 180 208 T +(ut portable f) 227.08 208 T +(ault tolerant master/sla) 285.61 208 T +(v) 394.69 208 T +(e application can be con-) 400.51 208 T +180 352/G97323 FmPA +(structed by using the follo) 180 194 T +(wing strate) 305.03 194 T +(gy:) 357.84 194 T +(\245) 198 172 T +(Spa) 216 172 T +(wn processes in groups of one.) 233.82 172 T +180 316/G97324 FmPA +(\245) 198 152 T +(Set the error handler for the parent / child intercommunicators to) 216 152 T +180 296/G97325 FmPA +(MPI_ERR) 216 138 T +(ORS_RETURN.) 266.2 138 T +(\245) 198 118 T +(If a communication with a child returns an error) 216 118 T +(, assume it is dead) 446.14 118 T +180 262/G97326 FmPA +(and free the intercommunicator) 216 104 T +(.) 366.3 104 T +(\245) 198 84 T +(Spa) 216 84 T +(wn another process, if desired, to replace the dead process. See) 233.82 84 T +180 228/G97327 FmPA +2 F +(Dynamic Pr) 216 70 T +(ocesses) 273.78 70 T +0 F +(.) 309.77 70 T +63 579 180 629.99 C +0 0 0 1 0 0 0 1 K +63 579 180 629.99 R +7 X +V +72 593.99 162 629.99 R +V +4 12 Q +0 X +(Inter) 132.46 621.99 T +(-) 158 621.99 T +72 766/G97298 FmPA +(communicators) 82.68 607.99 T +0 0 612 792 C +63 273.01 180 307.99 C +0 0 0 1 0 0 0 1 K +63 273.01 180 307.99 R +7 X +V +72 280.99 162 307.99 R +V +4 12 Q +0 X +(F) 81.74 299.99 T +(ault T) 88.78 299.99 T +(olerance) 118.68 299.99 T +72 444/G97321 FmPA +0 0 612 792 C +0 0 0 1 0 0 0 1 K +[/CropBox[0 0 FmDC 612 792 FmDC FmBx]/PAGE FmPD +[/Dest/P.40/DEST FmPD2 +[/Title(A)/Rect[171 54 549 639]/ARTICLE FmPD2 +FMENDPAGE +%%EndPage: "40" 40 +%%Page: "41" 41 +612 792 0 FMBEGINPAGE +0 FrameSetSepColors +FrameNoSep +0 0 0 1 0 0 0 1 K +180 745.99 540 756 R +7 X +V +1 12 Q +0 X +(41) 526.66 748 T +180 32.69 540 42.7 R +7 X +V +0 X +( MPI Primer / Developing with LAM) 180 34.7 T +180 738 540 738 2 L +7 X +V +1 H +2 Z +0 X +N +540 54 180 54 2 L +7 X +V +0 X +N +180 63 540 630 R +7 X +V +3 F +0 X +(MPI_Cart_create) 180 622 T +0 F +(Create cartesian topology communicator) 324 622 T +(.) 518.3 622 T +180 766/G97292 FmPA +3 F +(MPI_Dims_create) 180 608 T +0 F +(Suggest balanced dimension ranges.) 324 608 T +3 F +(MPI_Cart_rank) 180 594 T +0 F +(Get rank from cartesian coordinates.) 324 594 T +3 F +(MPI_Cart_coords) 180 580 T +0 F +(Get cartesian coordinates from rank.) 324 580 T +3 F +(MPI_Cart_shift) 180 566 T +0 F +(Determine ranks for cartesian shift.) 324 566 T +3 10 Q +(MPI_Cart_sub) 180 537.33 T +0 F +(Split into lo) 324 537.33 T +(wer dimensional sub-grids.) 370.99 537.33 T +180 681/G92228 FmPA +3 F +(MPI_Graph_create) 180 525.33 T +0 F +(Create arbitrary topology communicator) 324 525.33 T +(.) 484.81 525.33 T +3 F +(MPI_Topo_test) 180 513.33 T +0 F +(Get type of communicator topology) 324 513.33 T +(.) 466.67 513.33 T +3 F +(MPI_Graphdims_get) 180 501.33 T +0 F +(Get number of edges and nodes.) 324 501.33 T +3 F +(MPI_Graph_get) 180 489.33 T +0 F +(Get edges and nodes.) 324 489.33 T +3 F +(MPI_Cartdim_get) 180 477.33 T +0 F +(Get number of dimensions.) 324 477.33 T +3 F +(MPI_Cart_get) 180 465.33 T +0 F +(Get dimensions, periodicity and local coordinates.) 324 465.33 T +3 F +(MPI_Graph_neighbors_count) 180 453.33 T +0 F +(Get number of neighbors in a graph topology) 324 441.33 T +(.) 504.16 441.33 T +3 F +(MPI_Graph_neighbors) 180 429.33 T +0 F +(Get neighbor ranks in a graph topology) 324 429.33 T +(.) 480.55 429.33 T +3 F +(MPI_Cart_map) 180 417.33 T +0 F +(Suggest ne) 324 417.33 T +(w ranks in an optimal cartesian mapping.) 367.36 417.33 T +3 F +(MPI_Graph_map) 180 405.33 T +0 F +(Suggest ne) 324 405.33 T +(w ranks in an optimal graph mapping.) 367.36 405.33 T +180 376.99 540 387 C +0 0 0 1 0 0 0 1 K +180 376.99 540 387 R +7 X +V +180 385.99 649.01 385.99 2 L +V +1 H +2 Z +0 X +N +0 0 612 792 C +0 0 0 1 0 0 0 1 K +0 12 Q +0 X +(MPI) 180 368.99 T +(is) 203.95 368.99 T +(a) 214.56 368.99 T +(process) 222.5 368.99 T +(oriented) 261.1 368.99 T +(programming) 303.03 368.99 T +(model) 370.97 368.99 T +(that) 403.58 368.99 T +(is) 424.19 368.99 T +(independent) 434.81 368.99 T +(of) 496.07 368.99 T +(under-) 508.68 368.99 T +180 513/G92229 FmPA +(lying nodes in a parallel computer) 180 354.99 T +(. Ne) 342.98 354.99 T +(v) 362.68 354.99 T +(ertheless, to enhance performance,) 368.5 354.99 T +(the data mo) 180 340.99 T +(v) 235.81 340.99 T +(ement patterns in a parallel application should match, as) 241.63 340.99 T +(closely) 180 326.99 T +(as) 216.34 326.99 T +(possible,) 228.68 326.99 T +(the) 273.37 326.99 T +(communication) 290.38 326.99 T +(topology) 367.39 326.99 T +(of) 412.4 326.99 T +(the) 424.75 326.99 T +(hardw) 441.76 326.99 T +(are.) 471.62 326.99 T +(Since) 491.62 326.99 T +(it) 520.63 326.99 T +(is) 529.65 326.99 T +(dif) 180 312.99 T +(\336cult for compilers and message-passing systems to guess at an applica-) 193.03 312.99 T +(tion\325) 180 298.99 T +(s) 202.01 298.99 T +(data) 209.42 298.99 T +(mo) 232.15 298.99 T +(v) 247.31 298.99 T +(ement,) 253.13 298.99 T +(MPI) 288.2 298.99 T +(allo) 312.28 298.99 T +(ws) 329.98 298.99 T +(the) 346.06 298.99 T +(application) 363.46 298.99 T +(to) 419.54 298.99 T +(supply) 431.61 298.99 T +(a) 466.36 298.99 T +(topology) 474.43 298.99 T +(to) 519.85 298.99 T +(a) 531.93 298.99 T +(communicator) 180 284.99 T +(,) 248.84 284.99 T +(in) 254.71 284.99 T +(the) 266.91 284.99 T +(hope) 284.43 284.99 T +(that) 310.63 284.99 T +(the) 331.49 284.99 T +(MPI) 349.02 284.99 T +(implementation) 373.22 284.99 T +(will) 451.42 284.99 T +(use) 472.95 284.99 T +(that) 491.81 284.99 T +(infor-) 512.68 284.99 T +(mation to identify processes in an optimal manner) 180 270.99 T +(.) 419.65 270.99 T +(F) 180 248.99 T +(or e) 186.49 248.99 T +(xample, if the application is dominated by Cartesian communication) 204.64 248.99 T +180 393/G92244 FmPA +(and the parallel computer has a cartesian topology) 180 234.99 T +(, it is preferable to align) 420.17 234.99 T +(the distrib) 180 220.99 T +(ution of data with the machine, and not blindly place an) 228.1 220.99 T +(y data) 495.55 220.99 T +(coordinate at an) 180 206.99 T +(y node coordinate.) 256.46 206.99 T +(MPI) 180 184.99 T +(pro) 204.03 184.99 T +(vides) 219.85 184.99 T +(tw) 247.87 184.99 T +(o) 259.75 184.99 T +(types) 268.45 184.99 T +(of) 296.47 184.99 T +(topologies,) 309.16 184.99 T +(the) 364.86 184.99 T +(ubiquitous) 382.22 184.99 T +(cartesian) 435.59 184.99 T +(grid,) 480.93 184.99 T +(and) 505.96 184.99 T +(an) 525.98 184.99 T +180 329/G92230 FmPA +(arbitrary) 180 170.99 T +(graph.) 223.65 170.99 T +(T) 256.31 170.99 T +(opology) 262.68 170.99 T +(information) 304.36 170.99 T +(is) 363.36 170.99 T +(attached) 373.7 170.99 T +(to) 416.02 170.99 T +(a) 427.69 170.99 T +(communicator) 435.36 170.99 T +(by) 507.02 170.99 T +(cre-) 521.35 170.99 T +(ating a ne) 180 156.99 T +(w communicator) 226.36 156.99 T +(. MPI_Cart_create\050\051 does this for the cartesian) 306.68 156.99 T +(topology) 180 142.99 T +(.) 221.89 142.99 T +3 F +(MPI_Cart_create \050MPI_Comm oldcomm, int ndims,) 180 120.99 T +180 265/G92248 FmPA +(int *dims, int *periods, int reorder,) 216 106.99 T +(MPI_Comm *newcomm\051;) 216 92.99 T +63 405 180 629.99 C +0 0 0 1 0 0 0 1 K +63 405 180 629.99 R +7 X +V +72 404.99 162 629.99 R +3 X +V +0.5 H +0 Z +N +0 0 612 792 C +63 314.99 180 376.98 C +0 0 0 1 0 0 0 1 K +63 314.99 180 376.98 R +7 X +V +72 322.98 162 376.98 R +V +4 14 Q +0 X +(Pr) 117.16 367.65 T +(ocess) 131.68 367.65 T +72 512/G92254 FmPA +(T) 98.72 351.65 T +(opologies) 106.77 351.65 T +0 0 612 792 C +0 0 0 1 0 0 0 1 K +[/CropBox[0 0 FmDC 612 792 FmDC FmBx]/PAGE FmPD +[/Dest/P.41/DEST FmPD2 +[/Title(A)/Rect[171 54 549 639]/ARTICLE FmPD2 +FMENDPAGE +%%EndPage: "41" 41 +%%Page: "42" 42 +612 792 0 FMBEGINPAGE +0 FrameSetSepColors +FrameNoSep +0 0 0 1 0 0 0 1 K +180 745.99 540 756 R +7 X +V +1 12 Q +0 X +(42) 180 748 T +180 32.69 540 42.7 R +7 X +V +0 X +( MPI Primer / Developing with LAM) 180 34.7 T +180 738 540 738 2 L +7 X +V +1 H +2 Z +0 X +N +540 54 180 54 2 L +7 X +V +0 X +N +180 63 540 630 R +7 X +V +0 F +0 X +(The essential information for a cartesian topology is the number of dimen-) 180 622 T +180 766/G92249 FmPA +(sions, the length of each dimension and a periodicity \337ag \050does the dimen-) 180 608 T +(sion) 180 594 T +(wrap) 202.82 594 T +(around?\051) 229.63 594 T +(for) 275.09 594 T +(each) 291.9 594 T +(dimension.) 316.71 594 T +(The) 372.53 594 T +(reorder) 394.01 594 T +(ar) 431.47 594 T +(gument) 440.58 594 T +(is) 479.39 594 T +(a) 490.22 594 T +(\337ag) 498.36 594 T +(that) 519.18 594 T +(indicates) 180 580 T +(if) 224.78 580 T +(the) 234.24 580 T +(application) 251.03 580 T +(will) 306.48 580 T +(allo) 327.28 580 T +(w) 344.98 580 T +(a) 355.76 580 T +(dif) 363.22 580 T +(ferent) 376.25 580 T +(ranking) 406.36 580 T +(in) 445.14 580 T +(the) 456.6 580 T +(ne) 473.39 580 T +(w) 484.42 580 T +(topology) 495.2 580 T +(communicator) 180 566 T +(. Reordering may mak) 248.66 566 T +(e coordinate calculation easier for the) 355.86 566 T +(MPI implementation.) 180 552 T +(W) 180 530 T +(ith a topology enhanced communicator) 190.85 530 T +(, the application will use coordi-) 377.68 530 T +180 674/G92267 FmPA +(nates to decide source and destination ranks. Since MPI communication) 180 516 T +(routines still use ranks, the coordinates must be translated into a rank and) 180 502 T +(vice v) 180 488 T +(ersa. MPI eases this translation with MPI_Cart_rank\050\051 and) 208.81 488 T +(MPI_Cart_coords\050\051.) 180 474 T +3 F +(MPI_Cart_rank \050MPI_comm comm, int *coords,) 180 452 T +180 596/G92275 FmPA +(int *rank\051;) 216 438 T +(MPI_Cart_coords \050MPI_Comm comm, int rank,) 180 420 T +180 564/G92276 FmPA +(int maxdims, int *coords\051;) 216 406 T +0 F +(T) 180 384 T +(o further assist process identi\336cation in cartesian topology applications,) 186.37 384 T +180 528/G92277 FmPA +(MPI_Cart_shift\050\051 returns the ranks corresponding to common neighbourly) 180 370 T +(shift communication. The direction \050dimension\051 and relati) 180 356 T +(v) 458 356 T +(e distance are) 463.82 356 T +(input) 180 342 T +(ar) 206.88 342 T +(guments) 215.99 342 T +(and) 258.87 342 T +(tw) 278.41 342 T +(o) 290.29 342 T +(ranks) 298.5 342 T +(are) 326.7 342 T +(output) 343.56 342 T +(ar) 376.45 342 T +(guments,) 385.55 342 T +(one) 431.43 342 T +(on) 450.97 342 T +(each) 465.18 342 T +(side) 489.38 342 T +(of) 510.92 342 T +(the) 523.12 342 T +(calling process along the gi) 180 328 T +(v) 311.02 328 T +(en direction. Depending on the periodicity of) 316.84 328 T +(the) 180 314 T +(cartesian) 197.21 314 T +(topology) 242.4 314 T +(associated) 287.62 314 T +(with) 339.49 314 T +(the) 363.37 314 T +(gi) 380.58 314 T +(v) 389.62 314 T +(en) 395.44 314 T +(communicator) 409.31 314 T +(,) 478.15 314 T +(one) 483.7 314 T +(or) 503.58 314 T +(both) 516.12 314 T +(ranks) 180 300 T +(may) 208.26 300 T +(be) 231.18 300 T +(returned) 244.78 300 T +(as) 287.02 300 T +(MPI_PR) 299.28 300 T +(OC_NULL,) 340.82 300 T +(indicating) 400.74 300 T +(a) 451 300 T +(shift) 458.6 300 T +(of) 482.2 300 T +(f) 491.89 300 T +(the) 498.15 300 T +(edge) 515.08 300 T +(of the grid.) 180 286 T +3 F +(MPI_Cart_shift \050MPI_Comm comm, int direction,) 180 264 T +180 408/G92280 FmPA +(int distance, int *rank_source,) 216 250 T +(*int rank_dest\051;) 216 236 T +0 F +(Consider) 180 214 T +(a) 226.16 214 T +(tw) 234.31 214 T +(o) 246.19 214 T +(dimensional) 255.02 214 T +(cartesian) 316.51 214 T +(dataset.) 361.99 214 T +(The) 401.14 214 T +(follo) 422.62 214 T +(wing) 444.99 214 T +(code) 471.82 214 T +(sk) 497.3 214 T +(eleton) 507.85 214 T +180 358/G92286 FmPA +(establishes) 180 200 T +(a) 234.85 200 T +(corresponding) 243.04 200 T +(process) 314.55 200 T +(topology) 353.4 200 T +(for) 398.93 200 T +(an) 415.78 200 T +(y) 426.93 200 T +(number) 435.79 200 T +(of) 475.3 200 T +(processes,) 488.16 200 T +(and then creates a ne) 180 186 T +(w communicator for collecti) 279.66 186 T +(v) 415.67 186 T +(e operations on the \336rst) 421.49 186 T +(column of processes. Finally) 180 172 T +(, it obtains the ranks which hold the pre) 317.21 172 T +(vious) 506.56 172 T +(and ne) 180 158 T +(xt ro) 211.48 158 T +(ws, which w) 233.51 158 T +(ould lead to data e) 293.71 158 T +(xchange.) 381.52 158 T +3 10 Q +(int) 216 137.33 T +(mycoords[2];) 324 137.33 T +180 281/G92290 FmPA +(int) 216 126.33 T +(dims[2];) 324 126.33 T +(int) 216 115.33 T +(periods[2] = {1, 0};) 324 115.33 T +(int) 216 104.33 T +(rank_prev, rank_next;) 324 104.33 T +(int) 216 93.33 T +(size;) 324 93.33 T +(MPI_Comm) 216 80.33 T +(comm_cart;) 324 80.33 T +180 224/G92295 FmPA +(MPI_Comm) 216 69.33 T +(comm_col1;) 324 69.33 T +[/CropBox[0 0 FmDC 612 792 FmDC FmBx]/PAGE FmPD +[/Dest/P.42/DEST FmPD2 +[/Title(A)/Rect[171 54 549 639]/ARTICLE FmPD2 +FMENDPAGE +%%EndPage: "42" 42 +%%Page: "43" 43 +612 792 0 FMBEGINPAGE +0 FrameSetSepColors +FrameNoSep +0 0 0 1 0 0 0 1 K +180 745.99 540 756 R +7 X +V +1 12 Q +0 X +(43) 526.66 748 T +180 32.69 540 42.7 R +7 X +V +0 X +( MPI Primer / Developing with LAM) 180 34.7 T +180 738 540 738 2 L +7 X +V +1 H +2 Z +0 X +N +540 54 180 54 2 L +7 X +V +0 X +N +180 72 540 630 R +7 X +V +3 10 Q +0 X +(/*) 180 623.33 T +180 767/G92294 FmPA +( * Create communicator with 2D grid topology.) 180 612.33 T +( */) 180 601.33 T +(MPI_Comm_size\050MPI_COMM_WORLD, &size\051;) 216 590.33 T +(MPI_Dims_create\050size, 2, dims\051;) 216 579.33 T +(MPI_Cart_create\050MPI_COMM_WORLD, 2, dims, periods, 1,) 216 568.33 T +(&comm_cart\051;) 252 557.33 T +(/*) 180 544.33 T +180 688/G92302 FmPA +( * Get local coordinates.) 180 533.33 T +( */) 180 522.33 T +(MPI_Comm_rank\050comm_cart, &rank\051;) 216 511.33 T +(MPI_Cart_coords\050comm_cart, rank, 2, mycoords\051;) 216 500.33 T +(/*) 180 487.33 T +180 631/G92303 FmPA +( * Build new communicator on first column.) 180 476.33 T +( */) 180 465.33 T +(if \050mycoords[1] == 0\051 {) 216 454.33 T +(MPI_Comm_split\050comm_cart, 0, mycoords[0],) 252 443.33 T +(&comm_col1\051;) 288 432.33 T +(} else {) 216 421.33 T +(MPI_Comm_split\050comm_cart, MPI_UNDEFINED, 0,) 252 408.33 T +180 552/G92304 FmPA +(&comm_col1\051;) 288 397.33 T +(}) 180 386.33 T +(/*) 180 373.33 T +180 517/G92308 FmPA +( * Get the ranks of the next and previous rows, same column.) 180 362.33 T +( */) 180 351.33 T +(MPI_Cart_shift\050comm_cart, 0, 1, &rank_prev,) 216 340.33 T +(&rank_next\051;) 252 329.33 T +0 12 Q +(MPI_Dims_create\050\051 suggests the most balanced \050\322square\323\051 dimension) 180 309 T +180 453/G92319 FmPA +(ranges for a gi) 180 295 T +(v) 248.68 295 T +(en number of nodes and dimensions.) 254.5 295 T +(A) 180 273 T +(good) 191.17 273 T +(reason) 217.68 273 T +(for) 251.51 273 T +(b) 268.01 273 T +(uilding) 273.77 273 T +(a) 310.29 273 T +(communicator) 318.13 273 T +(o) 389.96 273 T +(v) 395.78 273 T +(er) 401.6 273 T +(a) 413.44 273 T +(subset) 421.27 273 T +(of) 453.78 273 T +(the) 466.29 273 T +(grid,) 483.46 273 T +(in) 508.3 273 T +(this) 520.15 273 T +180 417/G92321 FmPA +(case) 180 259 T +(the) 203.22 259 T +(\336rst) 220.45 259 T +(column) 241.69 259 T +(in) 280.26 259 T +(a) 292.17 259 T +(mesh,) 300.07 259 T +(is) 330.96 259 T +(to) 341.54 259 T +(enable) 353.44 259 T +(the) 387.33 259 T +(use) 404.56 259 T +(of) 423.13 259 T +(collecti) 435.69 259 T +(v) 470.72 259 T +(e) 476.54 259 T +(operations.) 484.44 259 T +(See) 180 245 T +2 F +(Collective Messa) 200.33 245 T +(g) 282.53 245 T +(e-P) 288.41 245 T +(assing) 304.1 245 T +0 F +(.) 334.78 245 T +180 72 540 630 C +0 0 0 1 0 0 0 1 K +180 72 540 241 C +0 0 0 1 0 0 0 1 K +341.03 196.07 359.03 214.07 R +7 X +V +1 H +2 Z +0 X +N +5 12 Q +(Figure 7: 2D Car) 273.97 80.56 T +(tesian T) 363.14 80.56 T +(opology) 404.38 80.56 T +323.03 196.07 323.03 187.07 2 L +7 X +V +0.5 H +0 X +N +323.03 169.07 323.03 160.07 2 L +7 X +V +0 X +N +323.03 142.07 323.03 133.07 2 L +7 X +V +0 X +N +350.03 196.07 350.03 187.07 2 L +7 X +V +0 X +N +350.03 169.07 350.03 160.07 2 L +7 X +V +0 X +N +350.03 142.07 350.03 133.07 2 L +7 X +V +0 X +N +377.03 196.07 377.03 187.07 2 L +7 X +V +0 X +N +377.03 169.07 377.03 160.07 2 L +7 X +V +0 X +N +377.03 142.07 377.03 133.07 2 L +7 X +V +0 X +N +404.03 196.07 404.03 187.07 2 L +7 X +V +0 X +N +404.03 169.07 404.03 160.07 2 L +7 X +V +0 X +N +404.03 142.07 404.03 133.07 2 L +7 X +V +0 X +N +332.03 205.07 341.03 205.07 2 L +7 X +V +0 X +N +359.03 205.07 368.03 205.07 2 L +7 X +V +0 X +N +386.03 205.07 395.03 205.07 2 L +7 X +V +0 X +N +332.03 178.07 341.03 178.07 2 L +7 X +V +0 X +N +332.03 151.07 341.03 151.07 2 L +7 X +V +0 X +N +332.03 124.07 341.03 124.07 2 L +7 X +V +0 X +N +359.03 178.07 368.03 178.07 2 L +7 X +V +0 X +N +359.03 151.07 368.03 151.07 2 L +7 X +V +0 X +N +359.03 124.07 368.03 124.07 2 L +7 X +V +0 X +N +386.03 124.07 395.03 124.07 2 L +7 X +V +0 X +N +386.03 151.07 395.03 151.07 2 L +7 X +V +0 X +N +386.03 178.07 395.03 178.07 2 L +7 X +V +0 X +N +323.03 214.07 323.03 223.07 2 L +4 X +V +1 H +0 X +N +323.03 223.07 305.03 223.07 2 L +4 X +V +1 X +N +305.03 223.07 305.03 106.07 2 L +4 X +V +1 X +N +305.03 106.07 323.03 106.07 2 L +4 X +V +1 X +N +323.03 106.07 323.03 115.07 2 L +4 X +V +0 X +N +350.03 214.07 350.03 232.07 2 L +N +350.03 115.07 350.03 97.07 2 L +N +377.03 214.07 377.03 232.07 2 L +N +377.03 115.07 377.03 97.07 2 L +N +404.03 214.07 404.03 223.07 2 L +N +404.03 115.07 404.03 106.07 2 L +N +404.03 223.07 422.03 223.07 2 L +1 X +N +422.03 223.07 422.03 106.07 2 L +N +422.03 106.07 404.03 106.07 2 L +N +350.03 232.07 296.03 232.07 2 L +N +377.03 232.07 431.03 232.07 2 L +N +431.03 232.07 431.03 97.07 2 L +N +431.03 97.07 377.03 97.07 2 L +N +350.03 97.07 296.03 97.07 2 L +N +296.03 232.07 296.03 97.07 2 L +N +5 10 Q +0 X +(0,1) 343.08 201.43 T +314.03 196.07 332.03 214.07 R +7 X +V +0 X +N +(0,0) 316.08 201.43 T +368.03 196.07 386.03 214.07 R +7 X +V +0 X +N +(0,2) 370.08 201.43 T +395.03 196.07 413.03 214.07 R +7 X +V +0 X +N +(0,3) 397.08 201.43 T +341.03 169.07 359.03 187.07 R +7 X +V +0 X +N +(1,1) 343.08 174.43 T +314.03 169.07 332.03 187.07 R +7 X +V +0 X +N +(1,0) 316.08 174.43 T +368.03 169.07 386.03 187.07 R +7 X +V +0 X +N +(1,2) 370.08 174.43 T +395.03 169.07 413.03 187.07 R +7 X +V +0 X +N +(1,3) 397.08 174.43 T +341.03 142.07 359.03 160.07 R +7 X +V +0 X +N +(2,1) 343.08 147.43 T +314.03 142.07 332.03 160.07 R +7 X +V +0 X +N +(2,1) 316.08 147.43 T +368.03 142.07 386.03 160.07 R +7 X +V +0 X +N +(2,2) 370.08 147.43 T +395.03 142.07 413.03 160.07 R +7 X +V +0 X +N +(2,3) 397.08 147.43 T +341.03 115.07 359.03 133.07 R +7 X +V +0 X +N +(3,1) 343.08 120.43 T +314.03 115.07 332.03 133.07 R +7 X +V +0 X +N +(3,0) 316.08 120.43 T +368.03 115.07 386.03 133.07 R +7 X +V +0 X +N +(3,2) 370.08 120.43 T +395.03 115.07 413.03 133.07 R +7 X +V +0 X +N +(3,3) 397.08 120.43 T +180 72 540 630 C +0 0 612 792 C +0 0 0 1 0 0 0 1 K +[/CropBox[0 0 FmDC 612 792 FmDC FmBx]/PAGE FmPD +[/Dest/P.43/DEST FmPD2 +[/Title(A)/Rect[171 63 549 639]/ARTICLE FmPD2 +FMENDPAGE +%%EndPage: "43" 43 +%%Page: "44" 44 +612 792 0 FMBEGINPAGE +0 FrameSetSepColors +FrameNoSep +0 0 0 1 0 0 0 1 K +180 745.99 540 756 R +7 X +V +1 12 Q +0 X +(44) 180 748 T +180 32.69 540 42.7 R +7 X +V +0 X +( MPI Primer / Developing with LAM) 180 34.7 T +180 738 540 738 2 L +7 X +V +1 H +2 Z +0 X +N +540 54 180 54 2 L +7 X +V +0 X +N +180 72 540 630 R +7 X +V +3 F +0 X +(MPI_Spawn) 180 622 T +0 F +(Start copies of one program.) 342 622 T +180 766/G97066 FmPA +3 10 Q +(MPI_Spawn_multiple) 180 593.33 T +0 F +(Start multiple programs.) 342 593.33 T +180 737/G97068 FmPA +3 F +(MPI_Port_open) 180 581.33 T +0 F +(Obtain a connection point for a serv) 342 581.33 T +(er) 485.71 581.33 T +(.) 492.93 581.33 T +3 F +(MPI_Port_close) 180 569.33 T +0 F +(Release a connection point.) 342 569.33 T +3 F +(MPI_Accept) 180 557.33 T +0 F +(Accept a connection from a client.) 342 557.33 T +3 F +(MPI_Connect) 180 545.33 T +0 F +(Mak) 342 545.33 T +(e a connection to a serv) 360.23 545.33 T +(er) 454.22 545.33 T +(.) 461.44 545.33 T +3 F +(MPI_Name_publish) 180 533.33 T +0 F +(Publish a connection point under a service name.) 342 533.33 T +3 F +(MPI_Name_unpublish) 180 521.33 T +0 F +(Stop publishing a connection point.) 342 521.33 T +3 F +(MPI_Name_get) 180 509.33 T +0 F +(Get connection point from service name.) 342 509.33 T +3 F +(MPI_Info_create) 180 484.33 T +0 F +(Create a ne) 342 484.33 T +(w info object.) 386.73 484.33 T +180 628/G97121 FmPA +3 F +(MPI_Info_set) 180 472.33 T +0 F +(Store a k) 342 472.33 T +(e) 377.45 472.33 T +(y/v) 381.74 472.33 T +(alue pair to an info object.) 394.27 472.33 T +3 F +(MPI_Info_get) 180 460.33 T +0 F +(Read the v) 342 460.33 T +(alue associated with a stored k) 384.52 460.33 T +(e) 506.34 460.33 T +(y) 510.63 460.33 T +(.) 514.98 460.33 T +3 F +(MPI_Info_get_valuelen) 180 448.33 T +0 F +(Get the length of a k) 342 448.33 T +(e) 423.83 448.33 T +(y v) 428.12 448.33 T +(alue.) 440.37 448.33 T +3 F +(MPI_Info_get_nkeys) 180 436.33 T +0 F +(Get number of k) 342 436.33 T +(e) 407.72 436.33 T +(ys stored with an info object.) 412.01 436.33 T +3 F +(MPI_Info_get_nthkey) 180 424.33 T +0 F +(Get the k) 342 424.33 T +(e) 378.56 424.33 T +(y name in a sequence position.) 382.85 424.33 T +3 F +(MPI_Info_dup) 180 412.33 T +0 F +(Duplicate an info object.) 342 412.33 T +3 F +(MPI_Info_free) 180 400.33 T +0 F +(Destro) 342 400.33 T +(y an info object.) 368.56 400.33 T +3 F +(MPI_Info_delete) 180 388.33 T +0 F +(Remo) 342 388.33 T +(v) 365.74 388.33 T +(e a k) 370.59 388.33 T +(e) 389.37 388.33 T +(y/v) 393.66 388.33 T +(alue pair from an info object.) 406.19 388.33 T +180 359.99 540 370 C +0 0 0 1 0 0 0 1 K +180 359.99 540 370 R +7 X +V +180 368.99 649.01 368.99 2 L +V +1 H +2 Z +0 X +N +0 0 612 792 C +0 0 0 1 0 0 0 1 K +0 12 Q +0 X +(Due) 180 351.99 T +(to) 202.31 351.99 T +(the) 213.96 351.99 T +(static) 230.94 351.99 T +(nature) 258.58 351.99 T +(of) 290.89 351.99 T +(process) 303.2 351.99 T +(groups) 341.5 351.99 T +(in) 376.48 351.99 T +(MPI) 388.13 351.99 T +(\050a) 411.78 351.99 T +(virtue\051,) 423.42 351.99 T +(process) 460.73 351.99 T +(creation) 499.03 351.99 T +180 496/G97137 FmPA +(must be done carefully) 180 337.99 T +(. Process creation is a collecti) 288.86 337.99 T +(v) 430.54 337.99 T +(e operation o) 436.36 337.99 T +(v) 498.83 337.99 T +(er a) 504.65 337.99 T +(gi) 180 323.99 T +(v) 189.04 323.99 T +(en communicator) 194.86 323.99 T +(. A group of processes are created by one call to) 277.85 323.99 T +(MPI_Spa) 180 309.99 T +(wn\050\051. The child processes start up, initialize and communicate in) 225.16 309.99 T +(the) 180 295.99 T +(traditional) 197.66 295.99 T +(MPI) 249.99 295.99 T +(w) 274.32 295.99 T +(ay) 282.86 295.99 T +(.) 293.41 295.99 T +(The) 299.41 295.99 T +(y) 317.89 295.99 T +(must) 326.88 295.99 T +(be) 353.22 295.99 T +(gin) 364.37 295.99 T +(by) 382.7 295.99 T +(calling) 397.7 295.99 T +(MPI_Init\050\051.) 433.36 295.99 T +(The) 491.35 295.99 T +(child) 513 295.99 T +(group) 180 281.99 T +(has) 210.77 281.99 T +(its) 229.55 281.99 T +(o) 243.66 281.99 T +(wn) 249.36 281.99 T +(MPI_COMM_W) 266.81 281.99 T +(ORLD) 349.35 281.99 T +(which) 384.8 281.99 T +(is) 416.9 281.99 T +(distinct) 427.68 281.99 T +(from) 465.8 281.99 T +(the) 491.9 281.99 T +(w) 509.35 281.99 T +(orld) 517.89 281.99 T +(communicator of the parent group.) 180 267.99 T +3 F +(MPI_Spawn \050char program[], char *argv[], int) 180 245.99 T +180 390/G97138 FmPA +(maxprocs, MPI_Info info, int root, MPI_Comm,) 216 231.99 T +(parents, MPI_Comm *children, int errs[]\051;) 216 217.99 T +0 F +(Ho) 180 195.99 T +(w do the parents communicate with their children? The natural mecha-) 194.36 195.99 T +180 340/G97139 FmPA +(nism) 180 181.99 T +(for) 205.99 181.99 T +(communication) 222.63 181.99 T +(between) 299.94 181.99 T +(tw) 342.57 181.99 T +(o) 354.45 181.99 T +(groups) 363.1 181.99 T +(is) 398.41 181.99 T +(the) 409.07 181.99 T +(intercommunicator) 426.38 181.99 T +(.) 517.04 181.99 T +(An) 522.69 181.99 T +(intercommunicator) 180 167.99 T +(whose) 273.86 167.99 T +(remote) 307.06 167.99 T +(group) 342.92 167.99 T +(contains) 373.46 167.99 T +(the) 415.99 167.99 T +(children) 433.2 167.99 T +(is) 475.06 167.99 T +(returned) 485.6 167.99 T +(to) 528.12 167.99 T +(the parents in the second communicator ar) 180 153.99 T +(gument of MPI_Spa) 383.08 153.99 T +(wn\050\051. The) 480.23 153.99 T +(children) 180 139.99 T +(get) 221.61 139.99 T +(the) 238.57 139.99 T +(mirror) 255.52 139.99 T +(communicator) 288.47 139.99 T +(,) 357.31 139.99 T +(whose) 362.6 139.99 T +(remote) 395.55 139.99 T +(group) 431.16 139.99 T +(contains) 461.44 139.99 T +(the) 503.73 139.99 T +(par-) 520.68 139.99 T +(ents, as the pre-de\336ned communicator MPI_COMM_P) 180 125.99 T +(ARENT) 442.87 125.99 T +(. In the) 481.98 125.99 T +(application\325) 180 111.99 T +(s) 236.66 111.99 T +(original) 244.04 111.99 T +(process) 284.08 111.99 T +(w) 322.78 111.99 T +(orld) 331.32 111.99 T +(that) 353.36 111.99 T +(has) 374.07 111.99 T +(no) 392.78 111.99 T +(parent,) 407.49 111.99 T +(the) 443.18 111.99 T +(remote) 460.56 111.99 T +(group) 496.59 111.99 T +(of) 527.29 111.99 T +(MPI_COMM_P) 180 97.99 T +(ARENT is of size 0. See) 256.91 97.99 T +2 F +(Cr) 377.89 97.99 T +(eating Communicator) 390.12 97.99 T +(s) 495 97.99 T +0 F +(.) 499.67 97.99 T +63 387 180 629.99 C +0 0 0 1 0 0 0 1 K +63 387 180 629.99 R +7 X +V +72 386.99 162 629.99 R +3 X +V +0.5 H +0 Z +N +0 0 612 792 C +63 297.99 180 359.98 C +0 0 0 1 0 0 0 1 K +63 297.99 180 359.98 R +7 X +V +72 305.98 162 359.98 R +V +4 14 Q +0 X +(Pr) 117.16 350.65 T +(ocess) 131.68 350.65 T +72 495/G97127 FmPA +(Cr) 109.37 334.65 T +(eation) 125.45 334.65 T +0 0 612 792 C +0 0 0 1 0 0 0 1 K +[/CropBox[0 0 FmDC 612 792 FmDC FmBx]/PAGE FmPD +[/Dest/P.44/DEST FmPD2 +[/Title(A)/Rect[171 63 549 639]/ARTICLE FmPD2 +FMENDPAGE +%%EndPage: "44" 44 +%%Page: "45" 45 +612 792 0 FMBEGINPAGE +0 FrameSetSepColors +FrameNoSep +0 0 0 1 0 0 0 1 K +180 745.99 540 756 R +7 X +V +1 12 Q +0 X +(45) 526.66 748 T +180 32.69 540 42.7 R +7 X +V +0 X +( MPI Primer / Developing with LAM) 180 34.7 T +180 738 540 738 2 L +7 X +V +1 H +2 Z +0 X +N +540 54 180 54 2 L +7 X +V +0 X +N +180 72 540 630 R +7 X +V +0 F +0 X +(The) 180 622 T +(maxprocs) 201.33 622 T +(parameter) 250.66 622 T +(is) 301.31 622 T +(the) 311.98 622 T +(number) 329.32 622 T +(of) 368.65 622 T +(copies) 381.32 622 T +(of) 414.65 622 T +(the) 427.32 622 T +(single) 444.66 622 T +(program) 476 622 T +(that) 519.33 622 T +180 766/G97128 FmPA +(will be created. Each process will be passed command line ar) 180 608 T +(guments con-) 474.05 608 T +(sisting) 180 594 T +(of) 213.71 594 T +(the) 226.07 594 T +(program) 243.11 594 T +(name) 286.13 594 T +(follo) 314.49 594 T +(wed) 336.86 594 T +(by) 359.22 594 T +(the) 373.59 594 T +(ar) 390.62 594 T +(guments) 399.73 594 T +(speci\336ed) 442.76 594 T +(in) 487.79 594 T +(the) 499.49 594 T +(ar) 516.52 594 T +(gv) 525.63 594 T +(parameter) 180 580 T +(.) 227.32 580 T +(\050The) 232.89 580 T +(ar) 258.12 580 T +(gv) 267.23 580 T +(parameter) 281.8 580 T +(should) 332.35 580 T +(not) 366.93 580 T +(contain) 384.84 580 T +(the) 422.74 580 T +(program) 439.98 580 T +(name.\051) 483.2 580 T +(The) 518.77 580 T +(program) 180 566 T +(name,) 223.1 566 T +(maxprocs) 254.53 566 T +(and) 303.63 566 T +(ar) 323.4 566 T +(gv) 332.5 566 T +(are) 346.95 566 T +(only) 364.04 566 T +(signi\336cant) 387.82 566 T +(in) 440.26 566 T +(the) 452.04 566 T +(parent) 469.14 566 T +(process) 501.57 566 T +(whose) 180 552 T +(rank) 213.11 552 T +(is) 236.88 552 T +(gi) 247.34 552 T +(v) 256.37 552 T +(en) 262.19 552 T +(by) 275.97 552 T +(the) 290.42 552 T +(root) 307.54 552 T +(parameter) 329.32 552 T +(.) 376.63 552 T +(The) 382.08 552 T +(result) 403.19 552 T +(of) 432.31 552 T +(each) 444.75 552 T +(indi) 469.19 552 T +(vidual) 487.56 552 T +(pro-) 520.01 552 T +(cess spa) 180 538 T +(wn is returned through the errs parameter) 218.81 538 T +(, an array of MPI error) 416.94 538 T +(codes.) 180 524 T +(Ne) 180 502 T +(w) 193.69 502 T +(processes) 204.79 502 T +(require) 253.21 502 T +(resources,) 289.63 502 T +(be) 340.38 502 T +(ginning) 351.52 502 T +(with) 390.63 502 T +(a) 414.4 502 T +(processor) 422.16 502 T +(.) 467.49 502 T +(The) 472.92 502 T +(speci\336ca-) 494.02 502 T +180 646/G97211 FmPA +(tion of resources is a natural area where the MPI abstraction succumbs to) 180 488 T +(the underlying operating system and all its domestic customs and con) 180 474 T +(v) 512.83 474 T +(en-) 518.65 474 T +(tions. It is thus dif) 180 460 T +(\336cult if not impossible for an MPI application to mak) 266.71 460 T +(e a) 522.92 460 T +(detailed resource speci\336cation and remain portable. The info parameter to) 180 446 T +(MPI_Spa) 180 432 T +(wn is an opportunity for the programmer to choose control o) 225.16 432 T +(v) 515.6 432 T +(er) 521.42 432 T +(portability) 180 418 T +(.) 229.22 418 T +(MPI) 234.33 418 T +(implementations) 257.77 418 T +(are) 339.87 418 T +(not) 356.63 418 T +(required) 374.06 418 T +(to) 416.15 418 T +(interpret) 427.59 418 T +(this) 470.35 418 T +(ar) 489.79 418 T +(gument.) 498.9 418 T +(Thus the only portable v) 180 404 T +(alue for the info parameter is MPI_INFO_NULL.) 297.02 404 T +(Consult each MPI implementation\325) 180 382 T +(s documentation for \050non-portable\051 fea-) 348.34 382 T +180 526/G97219 FmPA +(tures within the info parameter and for the def) 180 368 T +(ault beha) 401.16 368 T +(viour with) 444.58 368 T +(MPI_INFO_NULL.) 180 354 T +(A common and f) 180 332 T +(airly abstract resource requirement is simply to \336ll the) 260.87 332 T +180 476/G97396 FmPA +(a) 180 318 T +(v) 185.09 318 T +(ailable processors with processes. MPI mak) 190.79 318 T +(es an attempt, with no guar-) 400.63 318 T +(antees of accurac) 180 304 T +(y) 262.44 304 T +(, to supply that information through a pre-de\336ned) 267.66 304 T +(attrib) 180 290 T +(ute called MPI_UNIVERSE_SIZE, which is cached on) 205.09 290 T +(MPI_COMM_W) 180 276 T +(ORLD.) 262.55 276 T +(In) 300.24 276 T +(typical) 312.27 276 T +(usage,) 346.96 276 T +(the) 379.32 276 T +(application) 396.01 276 T +(w) 451.37 276 T +(ould) 459.92 276 T +(subtract) 483.28 276 T +(the) 523.3 276 T +(v) 180 262 T +(alue associated with MPI_UNIVERSE_SIZE from the current number of) 185.7 262 T +(processes, often the size of MPI_COMM_W) 180 248 T +(ORLD. The dif) 394.51 248 T +(ference is the) 467.87 248 T +(recommended v) 180 234 T +(alue for the maxprocs parameter of MPI_Spa) 256.68 234 T +(wn\050\051. See) 473.11 234 T +2 F +(Miscellaneous MPI F) 180 220 T +(eatur) 283.08 220 T +(es) 307.97 220 T +0 F +( on ho) 317.96 220 T +(w to retrie) 347.66 220 T +(v) 396.68 220 T +(e the v) 402.5 220 T +(alue for) 434.2 220 T +(MPI_UNIVERSE_SIZE.) 180 206 T +63 459 180 509.99 C +0 0 0 1 0 0 0 1 K +63 459 180 509.99 R +7 X +V +72 473.99 162 509.99 R +V +4 12 Q +0 X +(P) 118.25 501.99 T +(ortable) 125.34 501.99 T +72 646/G97203 FmPA +(Resour) 114.9 487.99 T +(ce) 151.34 487.99 T +(Speci\336cation) 96.66 473.99 T +0 0 612 792 C +0 0 0 1 0 0 0 1 K +[/CropBox[0 0 FmDC 612 792 FmDC FmBx]/PAGE FmPD +[/Dest/P.45/DEST FmPD2 +[/Title(A)/Rect[171 63 549 639]/ARTICLE FmPD2 +FMENDPAGE +%%EndPage: "45" 45 +%%Page: "46" 46 +612 792 0 FMBEGINPAGE +0 FrameSetSepColors +FrameNoSep +0 0 0 1 0 0 0 1 K +180 745.99 540 756 R +7 X +V +1 12 Q +0 X +(46) 180 748 T +180 32.69 540 42.7 R +7 X +V +0 X +( MPI Primer / Developing with LAM) 180 34.7 T +180 738 540 738 2 L +7 X +V +1 H +2 Z +0 X +N +540 54 180 54 2 L +7 X +V +0 X +N +180 72 540 630 R +7 X +V +3 F +0 X +(MPI_Errhandler_create) 180 622 T +0 F +(Create custom error handler) 342 622 T +(.) 475.63 622 T +180 766/G97133 FmPA +3 F +(MPI_Errhandler_set) 180 608 T +0 F +(Set error handler for communicator) 342 608 T +(.) 511.3 608 T +3 F +(MPI_Error_string) 180 594 T +0 F +(Get description of error code.) 342 594 T +3 F +(MPI_Error_class) 180 580 T +0 F +(Get class of error code.) 342 580 T +3 F +(MPI_Abort) 180 566 T +0 F +(Abnormally terminate application.) 342 566 T +3 F +(MPI_Attr_get) 180 552 T +0 F +(Get cached attrib) 342 552 T +(ute v) 423.73 552 T +(alue.) 447.1 552 T +3 F +(MPI_Wtime) 180 538 T +0 F +(Get w) 342 538 T +(all clock time.) 370.87 538 T +3 10 Q +(MPI_Errhandler_get) 180 509.33 T +0 F +(Get error handler from communicator) 342 509.33 T +(.) 492.52 509.33 T +180 653/G92686 FmPA +3 F +(MPI_Errhandler_free) 180 497.33 T +0 F +(Release custom error handler) 342 497.33 T +(.) 458.36 497.33 T +3 F +(MPI_Get_processor_name) 180 485.33 T +0 F +(Get the caller\325) 342 485.33 T +(s processor name.) 398.65 485.33 T +3 F +(MPI_Wtick) 180 473.33 T +0 F +(Get w) 342 473.33 T +(all clock timer resolution.) 366.06 473.33 T +3 F +(MPI_Get_version) 180 461.33 T +0 F +(Get the MPI v) 342 461.33 T +(ersion numbers.) 398.79 461.33 T +3 F +(MPI_Keyval_create) 180 436.33 T +0 F +(Create a ne) 342 436.33 T +(w attrib) 386.73 436.33 T +(ute k) 417.36 436.33 T +(e) 436.98 436.33 T +(y) 441.27 436.33 T +(.) 445.62 436.33 T +180 580/G92688 FmPA +3 F +(MPI_Keyval_free) 180 424.33 T +0 F +(Release an attrib) 342 424.33 T +(ute k) 408.45 424.33 T +(e) 428.07 424.33 T +(y) 432.36 424.33 T +(.) 436.71 424.33 T +3 F +(MPI_Attr_put) 180 412.33 T +0 F +(Cache an attrib) 342 412.33 T +(ute in a communicator) 402.34 412.33 T +(.) 491.5 412.33 T +3 F +(MPI_Attr_delete) 180 400.33 T +0 F +(Remo) 342 400.33 T +(v) 365.74 400.33 T +(e cached attrib) 370.59 400.33 T +(ute.) 428.7 400.33 T +180 371.99 540 382 C +0 0 0 1 0 0 0 1 K +180 371.99 540 382 R +7 X +V +180 380.99 649.01 380.99 2 L +V +1 H +2 Z +0 X +N +0 0 612 792 C +0 0 0 1 0 0 0 1 K +0 12 Q +0 X +(An error handler is a softw) 180 363.99 T +(are routine which is called when a error occurs) 308.84 363.99 T +180 508/G92689 FmPA +(during) 180 349.99 T +(some) 214.1 349.99 T +(MPI) 242.21 349.99 T +(operation.) 266.32 349.99 T +(One) 317.41 349.99 T +(handler) 340.18 349.99 T +(is) 378.94 349.99 T +(associated) 389.71 349.99 T +(with) 441.8 349.99 T +(each) 465.91 349.99 T +(communi-) 490.67 349.99 T +(cator) 180 335.99 T +(and) 206.23 335.99 T +(is) 225.8 335.99 T +(inherited) 236.04 335.99 T +(by) 280.94 335.99 T +(created) 295.18 335.99 T +(communicators) 332.07 335.99 T +(which) 408.3 335.99 T +(deri) 439.87 335.99 T +(v) 458.23 335.99 T +(e) 464.05 335.99 T +(from) 471.62 335.99 T +(it.) 497.19 335.99 T +(When) 509.1 335.99 T +(an) 180 321.99 T +(error) 194.23 321.99 T +(occurs) 220.46 321.99 T +(in) 254.68 321.99 T +(an) 266.92 321.99 T +(MPI) 281.16 321.99 T +(routine) 305.4 321.99 T +(that) 342.3 321.99 T +(uses) 363.21 321.99 T +(a) 386.78 321.99 T +(communicator) 395.01 321.99 T +(,) 463.86 321.99 T +(that) 469.76 321.99 T +(communi-) 490.67 321.99 T +(cator\325) 180 307.99 T +(s error handler is called. An application\325) 207.32 307.99 T +(s initial communicator) 400.28 307.99 T +(,) 507.8 307.99 T +(MPI_COMM_W) 180 293.99 T +(ORLD, gets a def) 262.55 293.99 T +(ault b) 347.08 293.99 T +(uilt-in handler) 373.84 293.99 T +(,) 441.68 293.99 T +(MPI_ERR) 180 279.99 T +(ORS_ARE_F) 230.2 279.99 T +(A) 295.32 279.99 T +(T) 302.65 279.99 T +(AL, which aborts all tasks in the communicator) 308.87 279.99 T +(.) 536.18 279.99 T +(An application may supply an error handler by \336rst creating an MPI error) 180 257.99 T +180 402/G92690 FmPA +(handler object from a user routine.) 180 243.99 T +3 F +(MPI_Errhandler_create \050void \050*function\051\050\051,) 180 221.99 T +180 366/G92758 FmPA +(MPI_Errhandler *errhandler\051;) 216 207.99 T +0 F +(Error) 180 185.99 T +(handler) 208.31 185.99 T +(routines) 247.29 185.99 T +(ha) 288.95 185.99 T +(v) 300.04 185.99 T +(e) 305.86 185.99 T +(tw) 314.18 185.99 T +(o) 326.06 185.99 T +(pre-de\336ned) 335.05 185.99 T +(parameters) 392.69 185.99 T +(follo) 448.32 185.99 T +(wed) 470.69 185.99 T +(by) 493.68 185.99 T +(imple-) 508.67 185.99 T +180 330/G92759 FmPA +(mentation) 180 171.99 T +(dependent) 230.15 171.99 T +(parameters) 281.63 171.99 T +(using) 336.43 171.99 T +(the) 364.59 171.99 T +(ANSI) 381.4 171.99 T +(C) 411.56 171.99 T +() 451.6 171.99 T +(mechanism.) 480.18 171.99 T +(The) 180 157.99 T +(\336rst) 200.77 157.99 T +(parameter) 221.55 157.99 T +(is) 271.63 157.99 T +(the) 281.74 157.99 T +(handler\325) 298.52 157.99 T +(s) 337.84 157.99 T +(communicator) 344.62 157.99 T +(and) 416.05 157.99 T +(the) 435.49 157.99 T +(second) 452.26 157.99 T +(is) 487.69 157.99 T +(the) 497.8 157.99 T +(error) 514.58 157.99 T +(code describing the problem.) 180 143.99 T +3 F +(void function \050MPI_Comm *comm, int *code, ...\051;) 180 121.99 T +180 266/G92768 FmPA +0 F +(The error handler object is then associated with a communicator by) 180 99.99 T +180 244/G92779 FmPA +(MPI_Errhandler_set\050\051.) 180 85.99 T +63 396 180 629.99 C +0 0 0 1 0 0 0 1 K +63 396 180 629.99 R +7 X +V +72 395.99 162 629.99 R +3 X +V +0.5 H +0 Z +N +0 0 612 792 C +63 309.99 180 371.98 C +0 0 0 1 0 0 0 1 K +63 309.99 180 371.98 R +7 X +V +72 317.98 162 371.98 R +V +4 14 Q +0 X +(Miscellaneous) 78 362.65 T +72 507/G92705 FmPA +(MPI F) 79.79 346.65 T +(eatur) 118.71 346.65 T +(es) 150.34 346.65 T +4 12 Q +(Err) 81.2 323.98 T +(or Handling) 99.65 323.98 T +72 468/G93716 FmPA +0 0 612 792 C +0 0 0 1 0 0 0 1 K +[/CropBox[0 0 FmDC 612 792 FmDC FmBx]/PAGE FmPD +[/Dest/P.46/DEST FmPD2 +[/Title(A)/Rect[171 63 549 639]/ARTICLE FmPD2 +FMENDPAGE +%%EndPage: "46" 46 +%%Page: "47" 47 +612 792 0 FMBEGINPAGE +0 FrameSetSepColors +FrameNoSep +0 0 0 1 0 0 0 1 K +180 745.99 540 756 R +7 X +V +1 12 Q +0 X +(47) 526.66 748 T +180 32.69 540 42.7 R +7 X +V +0 X +( MPI Primer / Developing with LAM) 180 34.7 T +180 738 540 738 2 L +7 X +V +1 H +2 Z +0 X +N +540 54 180 54 2 L +7 X +V +0 X +N +180 72 540 630 R +7 X +V +3 F +0 X +(MPI_Errhandler_set \050MPI_Comm comm,) 180 622 T +180 766/G92780 FmPA +(MPI_Errhandler errhandler\051;) 216 608 T +0 F +(A second b) 180 586 T +(uilt-in error handler is MPI_ERR) 233.75 586 T +(ORS_RETURN, which does) 392.59 586 T +180 730/G92781 FmPA +(nothing and allo) 180 572 T +(ws the error code to be returned by the of) 257.7 572 T +(fending MPI rou-) 455.68 572 T +(tine) 180 558 T +(where) 200.97 558 T +(it) 233.25 558 T +(can) 242.89 558 T +(be) 262.51 558 T +(tested) 276.8 558 T +(and) 307.77 558 T +(acted) 328.06 558 T +(upon.) 356.35 558 T +(In) 386.31 558 T +(C) 399.27 558 T +(the) 410.24 558 T +(error) 427.87 558 T +(code) 454.15 558 T +(is) 479.78 558 T +(the) 490.75 558 T +(return) 508.38 558 T +(v) 180 544 T +(alue of the MPI function. In F) 185.7 544 T +(ortran the error code is returned through an) 329.17 544 T +(error parameter to the MPI subroutine.) 180 530 T +3 F +(MPI_Error_string \050int code, char *errstring,) 180 508 T +180 652/G93718 FmPA +(int *resultlen\051;) 216 494 T +0 F +(Error codes are con) 180 472 T +(v) 273.14 472 T +(erted into descripti) 278.96 472 T +(v) 368.65 472 T +(e strings by MPI_Error_string\050\051.) 374.47 472 T +180 616/G93717 FmPA +(The user pro) 180 458 T +(vides space for the string that is a minimum of) 240.47 458 T +(MPI_MAX_ERR) 180 444 T +(OR_STRING characters in length. The actual length of) 264.19 444 T +(the returned string is returned through the resultlen ar) 180 430 T +(gument.) 436.4 430 T +(MPI) 180 408 T +(de\336nes) 203.91 408 T +(a) 240.49 408 T +(list) 248.4 408 T +(of) 265.65 408 T +(standard) 278.22 408 T +(error) 321.46 408 T +(codes) 347.35 408 T +(\050also) 377.25 408 T +(called) 403.16 408 T +(error) 434.39 408 T +(classes\051) 460.29 408 T +(that) 500.19 408 T +(can) 520.77 408 T +180 552/G93722 FmPA +(be e) 180 394 T +(xamined and acted upon by portable applications. All additional error) 199.48 394 T +(codes,) 180 380 T +(speci\336c) 212.84 380 T +(to) 252.02 380 T +(the) 263.87 380 T +(implementation,) 281.05 380 T +(can) 361.91 380 T +(be) 381.08 380 T +(mapped) 394.92 380 T +(to) 435.43 380 T +(one) 447.29 380 T +(of) 467.13 380 T +(the) 479.64 380 T +(standard) 496.83 380 T +(error codes. The idea is that additional error codes are v) 180 366 T +(ariations on one of) 447.29 366 T +(the) 180 352 T +(standard) 197.47 352 T +(codes,) 240.94 352 T +(or) 274.07 352 T +(members) 286.88 352 T +(of) 333.68 352 T +(the) 346.48 352 T +(same) 363.95 352 T +(error) 391.42 352 T +(class.) 417.55 352 T +(T) 446.68 352 T +(w) 453.06 352 T +(o) 461.6 352 T +(standard) 470.41 352 T +(error) 513.88 352 T +(codes catch an) 180 338 T +(y additional error code that does not \336t this intent:) 249.79 338 T +(MPI_ERR_O) 180 324 T +(THER \050doesn\325) 244.86 324 T +(t \336t b) 314.96 324 T +(ut con) 340.07 324 T +(v) 369.25 324 T +(ert to string and learn something\051) 375.07 324 T +(and) 180 310 T +(MPI_ERR_UNKNO) 199.68 310 T +(WN) 299.26 310 T +(\050no) 321.6 310 T +(clue\051.) 339.95 310 T +(Ag) 369.28 310 T +(ain,) 383.89 310 T +(the) 403.9 310 T +(goal) 420.92 310 T +(of) 443.93 310 T +(this) 456.28 310 T +(design) 475.97 310 T +(is) 509.65 310 T +(por-) 520.01 310 T +(table, intelligent applications.) 180 296 T +(The mapping of error code to standard error code \050class\051 is done by) 180 274 T +180 418/G93723 FmPA +(MPI_Error_class\050\051.) 180 260 T +3 F +(MPI_Error_class \050int code, int class\051;) 180 238 T +180 382/G93724 FmPA +0 F +(MPI) 180 216 T +(pro) 203.89 216 T +(vides) 219.71 216 T +(a) 247.6 216 T +(mechanism) 255.48 216 T +(for) 312.7 216 T +(storing) 329.24 216 T +(arbitrary) 365.14 216 T +(information) 409.01 216 T +(with) 468.23 216 T +(a) 492.12 216 T +(commu-) 500 216 T +180 360/G97371 FmPA +(nicator) 180 202 T +(.) 212.66 202 T +(A) 218.24 202 T +(re) 229.49 202 T +(gistered) 238.63 202 T +(k) 279.21 202 T +(e) 285.09 202 T +(y) 290.23 202 T +(is) 298.82 202 T +(associated) 309.4 202 T +(with) 361.3 202 T +(each) 385.22 202 T +(piece) 409.78 202 T +(of) 437.68 202 T +(information) 450.26 202 T +(and) 509.51 202 T +(is) 529.41 202 T +(used,) 180 188 T +(lik) 207.44 188 T +(e) 219.99 188 T +(a) 227.76 188 T +(database) 235.52 188 T +(record,) 279.28 188 T +(for) 315.37 188 T +(storage) 331.8 188 T +(and) 368.9 188 T +(retrie) 388.66 188 T +(v) 413.68 188 T +(al.) 419.38 188 T +(Se) 433.49 188 T +(v) 445.19 188 T +(eral) 451.01 188 T +(k) 471.44 188 T +(e) 477.32 188 T +(ys) 482.46 188 T +(and) 495.57 188 T +(asso-) 515.34 188 T +(ciated) 180 174 T +(v) 211.34 174 T +(alues) 217.04 174 T +(are) 244.38 174 T +(pre-de\336ned) 261.72 174 T +(by) 319.05 174 T +(MPI) 333.73 174 T +(and) 357.75 174 T +(stored) 377.76 174 T +(in) 409.77 174 T +(MPI_COMM_W) 421.79 174 T +(ORLD.) 504.34 174 T +3 F +(MPI_TAG_UB) 180 152 T +0 F +(maximum message tag v) 324 152 T +(alue) 442.69 152 T +180 296/G97372 FmPA +3 F +(MPI_HOST) 180 136 T +0 F +(process rank on user\325) 324 136 T +(s local processor) 425.64 136 T +180 280/G97373 FmPA +3 F +(MPI_IO) 180 120 T +0 F +(process rank that can fully accomplish I/O) 324 120 T +180 264/G97374 FmPA +3 F +(MPI_WTIME_IS_GLOBAL) 180 104 T +0 F +(Are clocks synchronized?) 324 104 T +180 248/G97381 FmPA +3 F +(MPI_UNIVERSE_SIZE) 180 88 T +0 F +(#processes to \336ll machine) 324 88 T +180 232/G97382 FmPA +63 193 180 223.99 C +0 0 0 1 0 0 0 1 K +63 193 180 223.99 R +7 X +V +72 196.99 162 223.99 R +V +4 12 Q +0 X +(Attrib) 114.25 215.99 T +(ute) 146 215.99 T +72 360/G97472 FmPA +(Caching) 119.33 201.99 T +0 0 612 792 C +0 0 0 1 0 0 0 1 K +[/CropBox[0 0 FmDC 612 792 FmDC FmBx]/PAGE FmPD +[/Dest/P.47/DEST FmPD2 +[/Title(A)/Rect[171 63 549 639]/ARTICLE FmPD2 +FMENDPAGE +%%EndPage: "47" 47 +%%Page: "48" 48 +612 792 0 FMBEGINPAGE +0 FrameSetSepColors +FrameNoSep +0 0 0 1 0 0 0 1 K +180 745.99 540 756 R +7 X +V +1 12 Q +0 X +(48) 180 748 T +180 32.69 540 42.7 R +7 X +V +0 X +( MPI Primer / Developing with LAM) 180 34.7 T +180 738 540 738 2 L +7 X +V +1 H +2 Z +0 X +N +540 54 180 54 2 L +7 X +V +0 X +N +180 72 540 630 R +7 X +V +0 F +0 X +(All cached information is retrie) 180 622 T +(v) 330.34 622 T +(ed by calling MPI_Attr_get\050\051 and specify-) 336.16 622 T +180 766/G97386 FmPA +(ing the desired k) 180 608 T +(e) 259.54 608 T +(y) 264.68 608 T +(.) 269.9 608 T +3 F +(MPI_Attr_get \050MPI_Comm comm, int keyval,) 180 586 T +180 730/G97387 FmPA +(void *attr_val, int *flag\051;) 216 572 T +0 F +(The) 180 550 T +(\337ag) 200.82 550 T +(parameter) 220.98 550 T +(is) 271.11 550 T +(set) 281.27 550 T +(to) 296.76 550 T +(true) 308.26 550 T +(by) 329.08 550 T +(MPI_Attr_get\050\051) 343.23 550 T +(if) 420.72 550 T +(a) 430.21 550 T +(v) 437.69 550 T +(alue) 443.39 550 T +(has) 465.55 550 T +(been) 483.7 550 T +(stored) 508.51 550 T +180 694/G97388 FmPA +(the speci\336ed k) 180 536 T +(e) 249.2 536 T +(y) 254.35 536 T +(, as will be the case for all the pre-de\336ned k) 259.57 536 T +(e) 469.07 536 T +(ys.) 474.22 536 T +(Performance measurement is assisted by MPI_Wtime\050\051 which returns an) 180 514 T +180 658/G93725 FmPA +(elapsed w) 180 500 T +(all clock time from some \336x) 227.53 500 T +(ed point in the past.) 363.01 500 T +3 F +(double MPI_Wtime \050void\051;) 180 478 T +180 622/G93728 FmPA +63 491 180 521.99 C +0 0 0 1 0 0 0 1 K +63 491 180 521.99 R +7 X +V +72 494.99 162 521.99 R +V +4 12 Q +0 X +(T) 124.87 513.99 T +(iming) 132.66 513.99 T +72 658/G93733 FmPA +0 0 612 792 C +0 0 0 1 0 0 0 1 K +[/CropBox[0 0 FmDC 612 792 FmDC FmBx]/PAGE FmPD +[/Dest/P.48/DEST FmPD2 +[/Title(A)/Rect[171 63 549 639]/ARTICLE FmPD2 +FMENDPAGE +%%EndPage: "48" 48 +%%Page: "49" 49 +612 792 0 FMBEGINPAGE +0 FrameSetSepColors +FrameNoSep +0 0 0 1 0 0 0 1 K +180 745.99 540 756 R +7 X +V +1 12 Q +0 X +(49) 526.66 748 T +180 32.69 540 42.7 R +7 X +V +0 X +( MPI Primer / Developing with LAM) 180 34.7 T +180 738 540 738 2 L +7 X +V +1 H +2 Z +0 X +N +540 54 180 54 2 L +7 X +V +0 X +N +180 72 540 630 R +7 X +V +1 18 Q +0 X +(LAM / MPI Extensions) 180 618 T +180 762/G93490 FmPA +180 437.98 540 450 C +0 0 0 1 0 0 0 1 K +180 437.98 540 450 R +7 X +V +180 448.99 648 448.99 2 L +V +1 H +2 Z +0 X +N +180 445.97 648 445.97 2 L +7 X +V +0 X +N +0 0 612 792 C +0 0 0 1 0 0 0 1 K +0 12 Q +0 X +(LAM) 180 429.98 T +(includes) 208.8 429.98 T +(se) 250.94 429.98 T +(v) 260.63 429.98 T +(eral) 266.45 429.98 T +(functions) 286.58 429.98 T +(be) 333.38 429.98 T +(yond) 344.53 429.98 T +(the) 370.67 429.98 T +(MPI) 387.47 429.98 T +(standard) 410.95 429.98 T +(that) 453.74 429.98 T +(programmers) 473.88 429.98 T +180 574/G93498 FmPA +(may \336nd useful during the de) 180 415.98 T +(v) 320.69 415.98 T +(elopment phase of a softw) 326.51 415.98 T +(are application.) 452.36 415.98 T +(The) 180 401.98 T +(y) 198.48 401.98 T +(can) 206.7 401.98 T +(be) 225.57 401.98 T +(used) 239.12 401.98 T +(in) 263.33 401.98 T +(the) 274.89 401.98 T +(\336nal) 291.77 401.98 T +(product,) 315.32 401.98 T +(though) 357.2 401.98 T +(portability) 392.76 401.98 T +(w) 444.98 401.98 T +(ould) 453.52 401.98 T +(ob) 477.08 401.98 T +(viously) 488.89 401.98 T +(be) 526.45 401.98 T +(compromised.) 180 387.98 T +(One) 250.6 387.98 T +(of) 272.86 387.98 T +(the) 285.13 387.98 T +(e) 302.06 387.98 T +(xtensions) 307.21 387.98 T +(is) 354.81 387.98 T +(actually) 365.09 387.98 T +(an) 405.35 387.98 T +(MPI) 418.95 387.98 T +(portable) 442.55 387.98 T +(library) 484.15 387.98 T +(\050see) 518.41 387.98 T +2 F +(Collective I/O) 180 373.98 T +0 F +(\051 which can operate with other MPI implementations. This) 247.66 373.98 T +(library) 180 359.98 T +(is) 214.87 359.98 T +(a) 225.74 359.98 T +(distinct) 233.95 359.98 T +(product) 272.16 359.98 T +(from) 311.7 359.98 T +(LAM) 337.9 359.98 T +(and) 367.44 359.98 T +(must) 387.64 359.98 T +(be) 413.85 359.98 T +(obtained) 428.06 359.98 T +(and) 472.26 359.98 T +(compiled) 492.46 359.98 T +(separately) 180 345.98 T +(. The other e) 227.87 345.98 T +(xtensions are all intrinsic to LAM.) 288.34 345.98 T +(Some) 180 323.98 T +(of) 209.68 323.98 T +(the) 222.03 323.98 T +(e) 239.04 323.98 T +(xtended) 244.18 323.98 T +(routines) 284.52 323.98 T +(that) 325.54 323.98 T +(inte) 345.88 323.98 T +(grate) 363.7 323.98 T +(naturally) 390.04 323.98 T +(with) 435.04 323.98 T +(MPI) 458.73 323.98 T +(ha) 482.41 323.98 T +(v) 493.5 323.98 T +(e) 499.32 323.98 T +(names) 506.99 323.98 T +180 468/G93499 FmPA +(that) 180 309.98 T +(be) 200.38 309.98 T +(gin) 211.53 309.98 T +(with) 229.24 309.98 T +(MPIL_.) 252.95 309.98 T +(Similar) 293 309.98 T +(functionality) 330.72 309.98 T +(will,) 394.43 309.98 T +(in) 418.48 309.98 T +(certain) 430.19 309.98 T +(cases,) 465.22 309.98 T +(be) 495.92 309.98 T +(found) 509.63 309.98 T +(in) 180 295.98 T +(later) 191.51 295.98 T +(v) 215 295.98 T +(ersions) 220.82 295.98 T +(of) 256.99 295.98 T +(the) 269.16 295.98 T +(MPI) 286 295.98 T +(standard.) 309.5 295.98 T +(Other) 355.33 295.98 T +(routines,) 384.83 295.98 T +(which) 428.66 295.98 T +(are) 460.16 295.98 T +(distinct) 476.99 295.98 T +(from) 514.5 295.98 T +(MPI concepts and objects, be) 180 281.98 T +(gin with lam_.) 320.8 281.98 T +[/CropBox[0 0 FmDC 612 792 FmDC FmBx]/PAGE FmPD +[/Dest/P.49/DEST FmPD2 +[/Title(A)/Rect[171 63 549 639]/ARTICLE FmPD2 +FMENDPAGE +%%EndPage: "49" 49 +%%Page: "50" 50 +612 792 0 FMBEGINPAGE +0 FrameSetSepColors +FrameNoSep +0 0 0 1 0 0 0 1 K +180 745.99 540 756 R +7 X +V +1 12 Q +0 X +(50) 180 748 T +180 32.69 540 42.7 R +7 X +V +0 X +( MPI Primer / Developing with LAM) 180 34.7 T +180 738 540 738 2 L +7 X +V +1 H +2 Z +0 X +N +540 54 180 54 2 L +7 X +V +0 X +N +180 63 540 630 R +7 X +V +3 F +0 X +(lam_rfopen) 180 622 T +0 F +(Open a \336le.) 324 622 T +180 766/G187108 FmPA +3 F +(lam_rfclose) 180 608 T +0 F +(Close a \336le.) 324 608 T +3 F +(lam_rfread) 180 594 T +0 F +(Read from a \336le.) 324 594 T +3 F +(lam_rfwrite) 180 580 T +0 F +(Write to a \336le.) 324 580 T +3 F +(lam_rflseek) 180 566 T +0 F +(Change position in a \336le.) 324 566 T +3 F +(lam_rfaccess) 180 552 T +0 F +(Check permissions of a \336le.) 324 552 T +3 F +(lam_rfmkdir) 180 538 T +0 F +(Create directory) 324 538 T +(.) 400.86 538 T +3 F +(lam_rfchdir) 180 524 T +0 F +(Change w) 324 524 T +(orking directory) 372.2 524 T +(.) 449.08 524 T +3 F +(lam_rffstat) 180 510 T +0 F +(Get status on \336le descriptor) 324 510 T +(.) 455.33 510 T +3 F +(lam_rfstat) 180 496 T +0 F +(Get status on named \336le.) 324 496 T +3 F +(lam_rfdup) 180 482 T +0 F +(Duplicate \336le descriptor) 324 482 T +(.) 439.32 482 T +3 F +(lam_rfdup2) 180 468 T +0 F +(Duplicate & place \336le descriptor) 324 468 T +(.) 479.98 468 T +3 F +(lam_rfsystem) 180 454 T +0 F +(Issue a shell command.) 324 454 T +3 F +(lam_rfrmdir) 180 440 T +0 F +(Remo) 324 440 T +(v) 352.49 440 T +(e a directory) 358.31 440 T +(.) 417.5 440 T +3 F +(lam_rfunlink) 180 426 T +0 F +(Remo) 324 426 T +(v) 352.49 426 T +(e a \336le.) 358.31 426 T +3 F +(lam_rfgetwd) 180 412 T +0 F +(Get w) 324 412 T +(orking directory) 352.87 412 T +(.) 429.74 412 T +3 F +(lam_rfftruncate) 180 398 T +0 F +(Set length of \336le descriptor) 324 398 T +(.) 454 398 T +3 F +(lam_rftruncate) 180 384 T +0 F +(Set length of named \336le.) 324 384 T +180 351.99 540 362 C +0 0 0 1 0 0 0 1 K +180 351.99 540 362 R +7 X +V +180 360.99 649.01 360.99 2 L +V +1 H +2 Z +0 X +N +0 0 612 792 C +0 0 0 1 0 0 0 1 K +0 12 Q +0 X +(A node\325) 180 343.99 T +(s \336le system can be accessed via remote \336le functions ha) 218.33 343.99 T +(ving a) 490.7 343.99 T +180 488/G187406 FmPA +(POSIX-lik) 180 329.99 T +(e interf) 231.22 329.99 T +(ace. LAM does not pro) 265.42 329.99 T +(vide a \336le system, only remote) 376.21 329.99 T +(access to a \336le system from an) 180 315.99 T +(y node.) 326.46 315.99 T +(File pathnames refer to \336les on the origin node by def) 180 293.99 T +(ault. Ho) 437.84 293.99 T +(we) 476.21 293.99 T +(v) 489.9 293.99 T +(er) 495.72 293.99 T +(, a spe-) 504.56 293.99 T +180 438/G187407 FmPA +(ci\336c nodeid can be attached to a pathname with the follo) 180 279.99 T +(wing syntax:) 450.98 279.99 T +3 F +(nodeid:path) 180 257.99 T +180 402/G187408 FmPA +0 F +(Each LAM process may ha) 180 235.99 T +(v) 310.39 235.99 T +(e a limited number of simultaneously open) 316.21 235.99 T +180 380/G187409 FmPA +(LAM \336le descriptors. All LAM \336le functions in) 180 221.99 T +(v) 409.51 221.99 T +(olv) 415.27 221.99 T +(e message-passing) 430.43 221.99 T +(using the same links, b) 180 207.99 T +(uf) 289.43 207.99 T +(fers and other resources as an application.) 299.12 207.99 T +(LAM prohibits opening of slo) 180 185.99 T +(w de) 323.7 185.99 T +(vices \050such as terminals\051 for input.) 346.39 185.99 T +180 330/G187410 FmPA +(Some LAM speci\336c features of remote \336le access are controlled by addi-) 180 163.99 T +180 308/G187411 FmPA +(tional) 180 149.99 T +(\337ags) 209.43 149.99 T +(in) 234.2 149.99 T +(the) 245.63 149.99 T +(\337ags) 262.4 149.99 T +(ar) 287.16 149.99 T +(gument) 296.27 149.99 T +(of) 334.37 149.99 T +(the) 346.46 149.99 T +(lam_rfopen\050\051) 363.23 149.99 T +(routine.) 428.64 149.99 T +(These) 467.73 149.99 T +(\337ags) 498.48 149.99 T +(are) 523.25 149.99 T +(listed belo) 180 135.99 T +(w) 229.37 135.99 T +(.) 237.25 135.99 T +3 F +(LAM_O_LOCK) 180 113.99 T +0 F +(Lock) 270 113.99 T +(the) 297.15 113.99 T +(\336le) 314.3 113.99 T +(descriptor) 332.13 113.99 T +(into) 382.6 113.99 T +(the) 403.76 113.99 T +(remote) 420.92 113.99 T +(\336le) 456.73 113.99 T +(serv) 474.55 113.99 T +(er\325) 494.37 113.99 T +(s) 507.03 113.99 T +(open) 514.18 113.99 T +180 258/G187412 FmPA +(descriptor cache. See the manual page lam_rfposix\050\051.) 270 99.99 T +63 378 180 629.99 C +0 0 0 1 0 0 0 1 K +63 378 180 629.99 R +7 X +V +72 377.99 162 629.99 R +3 X +V +0.5 H +0 Z +N +0 0 612 792 C +63 315 180 351.98 C +0 0 0 1 0 0 0 1 K +63 315 180 351.98 R +7 X +V +72 315.98 162 351.98 R +V +4 14 Q +0 X +(Remote File) 90.08 342.65 T +72 487/G183282 FmPA +(Access) 122.35 326.65 T +0 0 612 792 C +0 0 0 1 0 0 0 1 K +[/CropBox[0 0 FmDC 612 792 FmDC FmBx]/PAGE FmPD +[/Dest/P.50/DEST FmPD2 +[/Title(A)/Rect[171 54 549 639]/ARTICLE FmPD2 +FMENDPAGE +%%EndPage: "50" 50 +%%Page: "51" 51 +612 792 0 FMBEGINPAGE +0 FrameSetSepColors +FrameNoSep +0 0 0 1 0 0 0 1 K +180 745.99 540 756 R +7 X +V +1 12 Q +0 X +(51) 526.66 748 T +180 32.69 540 42.7 R +7 X +V +0 X +( MPI Primer / Developing with LAM) 180 34.7 T +180 738 540 738 2 L +7 X +V +1 H +2 Z +0 X +N +540 54 180 54 2 L +7 X +V +0 X +N +180 63 540 630 R +7 X +V +3 F +0 X +(LAM_O_REUSE) 180 622 T +0 F +(Reuse e) 270 622 T +(xisting open \336le descriptor for matching path-) 307.48 622 T +180 766/G187415 FmPA +(name and open \337ags - if found. This is useful for asyn-) 270 608 T +(chronous access to one open \336le with one \336le pointer) 270 594 T +(.) 524.3 594 T +3 F +(LAM_O_1WAY) 180 578 T +0 F +(Write) 270 578 T +(to) 299.74 578 T +(the) 311.49 578 T +(\336le) 328.57 578 T +(without) 346.32 578 T +(w) 385.4 578 T +(aiting) 393.95 578 T +(for) 423.7 578 T +(completion) 440.11 578 T +(or) 496.52 578 T +(return) 508.93 578 T +180 722/G187416 FmPA +(code. This greatly increases write performance b) 270 564 T +(ut) 503.35 564 T +(should only be used on a deb) 270 550 T +(ugged application.) 409.08 550 T +(LAM does not con\337ict with the nati) 180 528 T +(v) 351.7 528 T +(e operating system\325) 357.52 528 T +(s \336le interf) 450.84 528 T +(ace.) 502.72 528 T +180 672/G187417 FmPA +(Thus,) 180 514 T +(open\050\051) 209.46 514 T +(is) 243.24 514 T +(a) 253.7 514 T +(direct) 261.49 514 T +(UNIX) 291.27 514 T +(routine) 323.72 514 T +(\050LAM) 360.17 514 T +(is) 393.29 514 T +(unin) 403.76 514 T +(v) 424.61 514 T +(olv) 430.37 514 T +(ed\051) 445.53 514 T +(and) 463.31 514 T +(operates) 483.1 514 T +(on) 525.54 514 T +(the \336le system of the node on which it is in) 180 500 T +(v) 386.18 500 T +(ok) 391.94 500 T +(ed. On remote nodes, a pro-) 403.82 500 T +(cess\325) 180 486 T +(s) 203.33 486 T +(pre-opened) 210.39 486 T +(UNIX) 266.76 486 T +(standard) 299.14 486 T +(output) 342.2 486 T +(\050UNIX) 375.26 486 T +(\336le) 411.64 486 T +(handle) 429.37 486 T +(1) 463.76 486 T +(or) 472.15 486 T +(stdout\051) 484.55 486 T +(and) 520.28 486 T +(UNIX) 180 472 T +(standard) 212.97 472 T +(error) 256.61 472 T +(\050UNIX) 282.91 472 T +(\336le) 319.88 472 T +(handle) 338.2 472 T +(2) 373.17 472 T +(or) 382.15 472 T +(stderr\051) 395.14 472 T +(are) 429.44 472 T +(redirected) 447.07 472 T +(to) 498.03 472 T +(LAM) 510.35 472 T +(as there is no remote terminal. LAM uses the remote \336le access f) 180 458 T +(acility to) 491.48 458 T +(mo) 180 444 T +(v) 195.16 444 T +(e) 200.98 444 T +(data) 209.15 444 T +(from) 231.99 444 T +(these) 258.17 444 T +(tw) 285.68 444 T +(o) 297.56 444 T +(sources) 306.4 444 T +(to) 345.24 444 T +(the) 357.43 444 T +(node) 374.94 444 T +(and) 401.11 444 T +(terminal) 421.29 444 T +(from) 464.14 444 T +(which) 490.31 444 T +(the) 522.49 444 T +(application w) 180 430 T +(as launched - the user\325) 244.87 430 T +(s local node. It is not possible to read) 352.18 430 T +(from UNIX standard input \050UNIX \336le handle 0, or stdin\051 on remote nodes.) 180 416 T +(Processes on the local node also ha) 180 394 T +(v) 348.4 394 T +(e access to UNIX standard output and) 354.22 394 T +180 538/G97054 FmPA +(error) 180 380 T +(. Unlik) 202.66 380 T +(e remote processes, local processes can read from UNIX stan-) 235.87 380 T +(dard input.) 180 366 T +(The) 180 344 T +(UNIX) 201 344 T +(standard) 233.33 344 T +(I/O) 276.32 344 T +(terminations) 294.66 344 T +(may) 356.99 344 T +(be) 380 344 T +(redirected) 393.67 344 T +(by) 443.98 344 T +(using) 458.32 344 T +(the) 486.66 344 T +(normal) 503.67 344 T +180 488/G97055 FmPA +(shell redirections with) 180 330 T +2 F +(mpirun) 289.66 330 T +0 F +(. See) 324.32 330 T +2 F +(Executing MPI Pr) 350.65 330 T +(o) 437.42 330 T +(gr) 443.3 330 T +(ams) 453.79 330 T +0 F +(.) 473.12 330 T +3 F +(% mpirun my_app > log) 180 308 T +180 452/G97056 FmPA +63 472.99 180 535.99 C +0 0 0 1 0 0 0 1 K +63 472.99 180 535.99 R +7 X +V +72 481.99 162 535.99 R +V +4 12 Q +0 X +(P) 84.56 527.99 T +(ortability and) 91.66 527.99 T +72 672/G183270 FmPA +(Standard I/O) 93.65 513.99 T +0 0 612 792 C +0 0 0 1 0 0 0 1 K +[/CropBox[0 0 FmDC 612 792 FmDC FmBx]/PAGE FmPD +[/Dest/P.51/DEST FmPD2 +[/Title(A)/Rect[171 54 549 639]/ARTICLE FmPD2 +FMENDPAGE +%%EndPage: "51" 51 +%%Page: "52" 52 +612 792 0 FMBEGINPAGE +0 FrameSetSepColors +FrameNoSep +0 0 0 1 0 0 0 1 K +180 745.99 540 756 R +7 X +V +1 12 Q +0 X +(52) 180 748 T +180 32.69 540 42.7 R +7 X +V +0 X +( MPI Primer / Developing with LAM) 180 34.7 T +180 738 540 738 2 L +7 X +V +1 H +2 Z +0 X +N +540 54 180 54 2 L +7 X +V +0 X +N +180 72 540 630 R +7 X +V +3 F +0 X +(CBX_Open) 180 622 T +0 F +(Open a \336le for MPI Cubix access.) 324 622 T +180 766/G91285 FmPA +3 F +(CBX_Close) 180 608 T +0 F +(Close an MPI Cubix \336le.) 324 608 T +3 F +(CBX_Read) 180 594 T +0 F +(Read in either single or multiple mode.) 324 594 T +3 F +(CBX_Write) 180 580 T +0 F +(Write in either single or multiple mode.) 324 580 T +3 F +(CBX_Lseek) 180 566 T +0 F +(Seek in either single or multiple mode.) 324 566 T +3 F +(CBX_Order) 180 552 T +0 F +(Change the order of multiple access.) 324 552 T +3 F +(CBX_Singl) 180 538 T +0 F +(Switch \336le access to single mode.) 324 538 T +3 F +(CBX_Multi) 180 524 T +0 F +(Switch \336le access to multiple mode.) 324 524 T +3 F +(CBX_Is_singl) 180 510 T +0 F +(Is the \336le in single mode?) 324 510 T +3 F +(CBX_Is_multi) 180 496 T +0 F +(Is the \336le in multiple mode?) 324 496 T +180 463.99 540 474 C +0 0 0 1 0 0 0 1 K +180 463.99 540 474 R +7 X +V +180 472.99 649.01 472.99 2 L +V +1 H +2 Z +0 X +N +0 0 612 792 C +0 0 0 1 0 0 0 1 K +0 12 Q +0 X +(MPI) 180 455.99 T +(Cubix) 203.58 455.99 T +(a) 235.16 455.99 T +(loosely) 242.72 455.99 T +(synchronous,) 279.63 455.99 T +(collecti) 345.53 455.99 T +(v) 380.56 455.99 T +(e) 386.38 455.99 T +(I/O) 393.95 455.99 T +(library) 412.18 455.99 T +(based) 446.42 455.99 T +(on) 475.98 455.99 T +(a) 490.22 455.99 T +(research) 497.79 455.99 T +180 600/G187421 FmPA +(de) 180 441.99 T +(v) 191.03 441.99 T +(elopment of the same name at the California Institute of T) 196.85 441.99 T +(echnology) 474.64 441.99 T +(.) 523.85 441.99 T +(This Cubix is inte) 180 427.99 T +(grated with the concepts of MPI communicators and) 265.5 427.99 T +(datatypes.) 180 413.99 T +(The) 230.41 413.99 T +(members) 251.16 413.99 T +(of) 297.24 413.99 T +(a) 309.32 413.99 T +(communicator) 316.74 413.99 T +(group) 388.15 413.99 T +(participate) 418.24 413.99 T +(collecti) 470.98 413.99 T +(v) 506 413.99 T +(ely) 511.82 413.99 T +(in) 528.58 413.99 T +(the I/O operation. Data is transferred as a count of elements of a gi) 180 399.99 T +(v) 499.62 399.99 T +(en) 505.44 399.99 T +(datatype, just as in MPI message-passing.) 180 385.99 T +(All) 180 363.99 T +(\336le) 197.82 363.99 T +(access) 215.65 363.99 T +(routines) 248.78 363.99 T +(e) 289.94 363.99 T +(v) 294.96 363.99 T +(entually) 300.78 363.99 T +(translate) 341.94 363.99 T +(to) 385.08 363.99 T +(POSIX) 396.9 363.99 T +(operations) 434.06 363.99 T +(on) 486.54 363.99 T +(a) 501.03 363.99 T +(single) 508.84 363.99 T +180 508/G93599 FmPA +(\336le.) 180 349.99 T +(Only) 200.71 349.99 T +(one) 227.09 349.99 T +(process) 246.8 349.99 T +(in) 285.17 349.99 T +(the) 296.88 349.99 T +(communicator) 313.93 349.99 T +(group) 385.63 349.99 T +(in) 416 349.99 T +(v) 424.86 349.99 T +(ok) 430.62 349.99 T +(es) 442.5 349.99 T +(the) 454.88 349.99 T +(actual) 471.92 349.99 T +(POSIX) 502.95 349.99 T +(operation.) 180 335.99 T +(The) 231.21 335.99 T +(POSIX) 252.75 335.99 T +(\336le) 290.3 335.99 T +(operation) 308.52 335.99 T +(bindings) 356.73 335.99 T +(are) 400.95 335.99 T +(also) 418.49 335.99 T +(re\337ected) 440.7 335.99 T +(in) 484.9 335.99 T +(the) 497.12 335.99 T +(bind-) 514.67 335.99 T +(ings of the MPI Cubix routines, tempered with MPI objects.) 180 321.99 T +(There) 180 299.99 T +(are) 210.77 299.99 T +(tw) 228.21 299.99 T +(o) 240.09 299.99 T +(dif) 248.88 299.99 T +(ferent) 261.91 299.99 T +(MPI) 292.68 299.99 T +(Cubix) 316.8 299.99 T +(access) 348.93 299.99 T +(methods) 382.36 299.99 T +(that) 425.82 299.99 T +(solv) 446.61 299.99 T +(e) 466.43 299.99 T +(tw) 474.55 299.99 T +(o) 486.43 299.99 T +(common) 495.21 299.99 T +180 444/G93598 FmPA +(\336le read/write problems in data parallel programming.) 180 285.99 T +(single) 180 263.99 T +(All) 270 263.99 T +(processes) 287.64 263.99 T +(e) 335.93 263.99 T +(x) 341.08 263.99 T +(ecute) 346.9 263.99 T +(the) 374.53 263.99 T +(same) 391.5 263.99 T +(\336le) 418.47 263.99 T +(routine) 436.11 263.99 T +(with) 472.42 263.99 T +(the) 496.06 263.99 T +(same) 513.03 263.99 T +180 408/G187422 FmPA +(amount of identical data. The data from only one \050arbi-) 270 249.99 T +(trary\051 process is transferred. This is useful when all pro-) 270 235.99 T +(cesses) 270 221.99 T +(w) 302.97 221.99 T +(ant) 311.52 221.99 T +(to) 329.17 221.99 T +(read) 341.49 221.99 T +(a) 365.13 221.99 T +(global) 373.44 221.99 T +(v) 406.43 221.99 T +(alue) 412.13 221.99 T +(from) 435.11 221.99 T +(a) 461.42 221.99 T +(\336le,) 469.73 221.99 T +(or) 491.06 221.99 T +(write) 504.04 221.99 T +(a) 531.68 221.99 T +(global v) 270 207.99 T +(alue to a \336le. It is especially con) 308.7 207.99 T +(v) 462.86 207.99 T +(enient during) 468.68 207.99 T +(output) 270 193.99 T +(to) 302.77 193.99 T +(a) 314.2 193.99 T +(terminal.) 321.62 193.99 T +(All) 366.71 193.99 T +(nodes) 384.14 193.99 T +(print) 414.23 193.99 T +(an) 438.99 193.99 T +(error) 452.42 193.99 T +(message) 477.83 193.99 T +(and) 520.58 193.99 T +(it appears once on the terminal.) 270 179.99 T +(multiple) 180 163.99 T +(All) 270 163.99 T +(processes) 287.71 163.99 T +(e) 336.07 163.99 T +(x) 341.22 163.99 T +(ecute) 347.04 163.99 T +(the) 374.74 163.99 T +(same) 391.78 163.99 T +(\336le) 418.81 163.99 T +(routine) 436.52 163.99 T +(with) 472.9 163.99 T +(dif) 496.61 163.99 T +(ferent) 509.64 163.99 T +180 308/G187423 FmPA +(amounts of dif) 270 149.99 T +(ferent data. All the data from all the pro-) 339.7 149.99 T +(cesses is transferred, b) 270 135.99 T +(ut the order of transfer is strictly) 377.72 135.99 T +(controlled. By def) 270 121.99 T +(ault, process rank 0 will transfer \336rst) 356.87 121.99 T +(and the sequence continues until the highest rank trans-) 270 107.99 T +(fers last. This is useful in decomposing a data structure) 270 93.99 T +(during) 270 79.99 T +(read) 304 79.99 T +(so) 327.32 79.99 T +(that) 340.66 79.99 T +(the) 361.33 79.99 T +(right) 378.66 79.99 T +(nodes) 404 79.99 T +(get) 434.66 79.99 T +(the) 452 79.99 T +(right) 469.33 79.99 T +(subset) 494.67 79.99 T +(of) 527.34 79.99 T +63 495 180 629.99 C +0 0 0 1 0 0 0 1 K +63 495 180 629.99 R +7 X +V +72 494.99 162 629.99 R +3 X +V +0.5 H +0 Z +N +0 0 612 792 C +63 427.98 180 463.98 C +0 0 0 1 0 0 0 1 K +63 427.98 180 463.98 R +7 X +V +72 436.98 162 463.98 R +V +4 14 Q +0 X +(Collecti) 79.46 454.65 T +(v) 125.19 454.65 T +(e I/O) 132.05 454.65 T +72 599/G183283 FmPA +0 0 612 792 C +0 0 0 1 0 0 0 1 K +[/CropBox[0 0 FmDC 612 792 FmDC FmBx]/PAGE FmPD +[/Dest/P.52/DEST FmPD2 +[/Title(A)/Rect[171 63 549 639]/ARTICLE FmPD2 +FMENDPAGE +%%EndPage: "52" 52 +%%Page: "53" 53 +612 792 0 FMBEGINPAGE +0 FrameSetSepColors +FrameNoSep +0 0 0 1 0 0 0 1 K +180 745.99 540 756 R +7 X +V +1 12 Q +0 X +(53) 526.66 748 T +180 32.69 540 42.7 R +7 X +V +0 X +( MPI Primer / Developing with LAM) 180 34.7 T +180 738 540 738 2 L +7 X +V +1 H +2 Z +0 X +N +540 54 180 54 2 L +7 X +V +0 X +N +180 72 540 630 R +7 X +V +0 F +0 X +(data) 270 622 T +(and) 292.73 622 T +(in) 312.8 622 T +(recomposing) 324.87 622 T +(a) 389.6 622 T +(data) 397.67 622 T +(structure) 420.4 622 T +(during) 465.12 622 T +(write) 499.2 622 T +(so) 526.59 622 T +(that the data structure is not jumbled.) 270 608 T +(W) 180 586 T +(ithout) 190.85 586 T +(Cubix) 221.36 586 T +(\336le) 253.2 586 T +(access,) 271.04 586 T +(an) 307.19 586 T +(application) 321.02 586 T +(often) 376.85 586 T +(needs) 404.01 586 T +(a) 433.84 586 T +(controlling) 441.67 586 T +(program) 496.84 586 T +180 730/G187424 FmPA +(to) 180 572 T +(manage) 191.62 572 T +(the) 231.23 572 T +(parallel) 248.18 572 T +(processes) 286.46 572 T +(and) 334.73 572 T +(\336lter) 354.34 572 T +(I/O.) 379.3 572 T +(Cubix) 400.58 572 T +(can) 432.21 572 T +(eliminate) 451.15 572 T +(the) 498.11 572 T +(need) 515.06 572 T +(for a control program. W) 180 558 T +(ithout synchronization, a message written by N) 299.82 558 T +(nodes) 180 544 T +(appears) 210.2 544 T +(N) 249.04 544 T +(times) 259.91 544 T +(on) 288.11 544 T +(the) 302.31 544 T +(terminal.) 319.18 544 T +(A) 364.37 544 T +(decomposed) 375.24 544 T +(data) 437.42 544 T +(structure) 459.62 544 T +(written) 503.8 544 T +(to a \336le appears in a random order) 180 530 T +(.) 343.63 530 T +(MPI Cubix \336le descriptors are distinct from LAM remote \336le descriptors) 180 508 T +180 652/G93597 FmPA +(and the \336le descriptors of the nati) 180 494 T +(v) 340.34 494 T +(e operating system. An MPI Cubix \336le) 346.16 494 T +(descriptor is returned from CBX_Open\050\051. The access method is chosen by) 180 480 T +(one) 180 466 T +(of) 199.58 466 T +(the) 211.83 466 T +(special) 228.75 466 T +(\337ags,) 264.33 466 T +(CBX_O_SINGL) 292.25 466 T +(or) 375.17 466 T +(CBX_O_MUL) 387.42 466 T +(TI.) 458.31 466 T +(The) 474.89 466 T +(o) 495.81 466 T +(wner) 501.51 466 T +(of) 527.75 466 T +(the) 180 452 T +(\336le,) 197.36 452 T +(the) 218.4 452 T +(one) 235.76 452 T +(process) 255.79 452 T +(that) 294.48 452 T +(will) 315.17 452 T +(operate) 336.55 452 T +(on) 374.56 452 T +(it) 389.26 452 T +(at) 398.63 452 T +(the) 410 452 T +(POSIX) 427.36 452 T +(le) 464.73 452 T +(v) 473.09 452 T +(el,) 478.91 452 T +(is) 493.27 452 T +(chosen) 503.98 452 T +(in another ar) 180 438 T +(gument to CBX_Open\050\051.) 240.43 438 T +3 F +(#include ) 180 416 T +180 560/G93603 FmPA +(#include ) 180 402 T +(int CBX_Open \050const char *name, int flags,) 180 384 T +180 528/G93605 FmPA +(int mode, int owner, MPI_Comm comm\051;) 216 370 T +(int CBX_Close \050int fd\051;) 180 356 T +0 F +(The) 180 334 T +(access) 200.8 334 T +(method) 233.58 334 T +(being) 271.72 334 T +(used) 300.52 334 T +(on) 324.66 334 T +(an) 338.79 334 T +(open) 352.26 334 T +(MPI) 377.72 334 T +(Cubix) 401.2 334 T +(\336le) 432.68 334 T +(can) 450.15 334 T +(be) 468.94 334 T +(queried) 482.41 334 T +(and) 520.53 334 T +180 478/G187425 FmPA +(changed at an) 180 320 T +(y time. The change routines are collecti) 245.8 320 T +(v) 435.12 320 T +(e. The inquiry rou-) 440.94 320 T +(tines are not.) 180 306 T +3 F +(int CBX_Multi \050int fd\051;) 180 284 T +180 428/G93608 FmPA +(int CBX_Singl \050int fd\051;) 180 270 T +(int CBX_Is_multi \050int fd\051;) 180 256 T +(int CBX_Is_singl \050int fd\051;) 180 242 T +0 F +(CBX_Read\050\051 and CBX_Write\050\051 transfer data from and to an open MPI) 180 220 T +180 364/G93607 FmPA +(Cubix) 180 206 T +(\336le.) 211.79 206 T +(An) 232.57 206 T +(MPI) 249.68 206 T +(datatype) 273.46 206 T +(is) 316.56 206 T +(among) 327.01 206 T +(the) 362.12 206 T +(ar) 379.23 206 T +(guments.) 388.34 206 T +(The) 434.46 206 T +(length) 455.56 206 T +(of) 488.01 206 T +(the) 500.45 206 T +(data) 517.56 206 T +(b) 180 192 T +(uf) 185.76 192 T +(fer) 195.46 192 T +(is) 211.59 192 T +(a) 222.41 192 T +(count) 230.55 192 T +(of) 260.03 192 T +(elements) 272.84 192 T +(of) 318.32 192 T +(the) 331.13 192 T +(gi) 348.61 192 T +(v) 357.64 192 T +(en) 363.46 192 T +(datatype.) 377.61 192 T +(Only) 424.08 192 T +(contiguous) 450.89 192 T +(data) 506.37 192 T +(is) 529.18 192 T +(transferred. If the MPI datatype contains holes, the) 180 178 T +(y are also transferred.) 423.43 178 T +3 F +(int CBX_Read \050int fd, void *buffer, int count,) 180 156 T +180 300/G93636 FmPA +(MPI_Datatype dtype\051;) 216 142 T +(int CBX_Write \050int fd, void *buffer, int count,) 180 128 T +(MPI_Datatype dtype\051;) 216 114 T +[/CropBox[0 0 FmDC 612 792 FmDC FmBx]/PAGE FmPD +[/Dest/P.53/DEST FmPD2 +[/Title(A)/Rect[171 63 549 639]/ARTICLE FmPD2 +FMENDPAGE +%%EndPage: "53" 53 +%%Page: "54" 54 +612 792 0 FMBEGINPAGE +0 FrameSetSepColors +FrameNoSep +0 0 0 1 0 0 0 1 K +180 745.99 540 756 R +7 X +V +1 12 Q +0 X +(54) 180 748 T +180 32.69 540 42.7 R +7 X +V +0 X +( MPI Primer / Developing with LAM) 180 34.7 T +180 738 540 738 2 L +7 X +V +1 H +2 Z +0 X +N +540 54 180 54 2 L +7 X +V +0 X +N +180 63 540 630 R +7 X +V +0 F +0 X +(The) 180 622 T +(CBX_Order\050\051) 201.04 622 T +(routine) 270.08 622 T +(changes) 306.46 622 T +(the) 347.49 622 T +(def) 364.54 622 T +(ault) 379.75 622 T +(order) 400.13 622 T +(of) 427.84 622 T +(process) 440.22 622 T +(data) 478.59 622 T +(transfer) 500.97 622 T +180 766/G93635 FmPA +(in the MPI Cubix multiple method. Each process speci\336es a unique) 180 608 T +(sequence number from 0 to N-1, where N is the size of the communicator) 180 594 T +(.) 532.6 594 T +3 F +(int CBX_Order \050int fd, int newrank\051;) 180 572 T +180 716/G187426 FmPA +3 10 Q +(/*) 180 555.33 T +180 699/G187432 FmPA +( * Read and decompose a 1-D array of reals) 180 544.33 T +( * across a 1-D array of processes.) 180 533.33 T +( * First read array size in singl then array in multi.) 180 522.33 T +( * Assume the array length decomposes evenly.) 180 511.33 T +( */) 180 500.33 T +(static float) 180 487.33 T +(*data;) 324 487.33 T +180 631/G187433 FmPA +(main\050argc, argv\051) 180 474.33 T +180 618/G187434 FmPA +(int) 180 461.33 T +(argc;) 324 461.33 T +180 605/G93642 FmPA +(char) 180 450.33 T +(*argv[];) 324 450.33 T +({) 180 437.33 T +180 581/G93646 FmPA +(int) 216 426.33 T +(fd;) 324 426.33 T +(int) 216 415.33 T +(glob_len, local_len;) 324 415.33 T +(int) 216 404.33 T +(nread;) 324 404.33 T +(int) 216 393.33 T +(size;) 324 393.33 T +(MPI_Init\050&argc, &argv\051;) 216 380.33 T +180 524/G93641 FmPA +(/*) 180 367.33 T +180 511/G187435 FmPA +( * Open the file first with Cubix single method.) 180 356.33 T +( * The file will be owned by process rank 0.) 180 345.33 T +( * This is not an error handling tutorial.) 180 334.33 T +( */) 180 323.33 T +(fd = CBX_Open\050\322data\323, O_RDONLY | CBX_O_SINGL, 0, 0,) 216 312.33 T +(MPI_COMM_WORLD\051;) 252 301.33 T +(/*) 180 288.33 T +180 432/G187436 FmPA +( * Read the global \050total\051 length of the array.) 180 277.33 T +( */) 180 266.33 T +(CBX_Read\050fd, &glob_len, 1, MPI_INT\051;) 216 255.33 T +(/*) 180 242.33 T +180 386/G187437 FmPA +( * Switch to Cubix multiple method.) 180 231.33 T +( */) 180 220.33 T +(CBX_Multi\050fd\051;) 216 209.33 T +(/*) 180 196.33 T +180 340/G187438 FmPA +( * Calculate the local length, allocate enough) 180 185.33 T +( * space and read the local subset of the data.) 180 174.33 T +( */) 180 163.33 T +(MPI_Comm_size\050MPI_COMM_WORLD, &size\051;) 216 152.33 T +(local_len = glob_len / size;) 216 141.33 T +(data = \050float *\051 malloc\050local_len * sizeof\050float\051\051;) 216 130.33 T +(CBX_Read\050fd, data, local_len, MPI_FLOAT\051;) 216 117.33 T +180 261/G187439 FmPA +(CBX_Close\050fd\051;) 216 104.33 T +180 248/G187441 FmPA +(MPI_Finalize\050\051;) 216 93.33 T +(}) 180 82.33 T +63 536.33 180 563.33 C +0 0 0 1 0 0 0 1 K +63 536.33 180 563.33 R +7 X +V +72 545.33 162 563.33 R +V +4 12 Q +0 X +(Cubix Example) 82.32 555.33 T +72 699/G183284 FmPA +0 0 612 792 C +0 0 0 1 0 0 0 1 K +[/CropBox[0 0 FmDC 612 792 FmDC FmBx]/PAGE FmPD +[/Dest/P.54/DEST FmPD2 +[/Title(A)/Rect[171 54 549 639]/ARTICLE FmPD2 +FMENDPAGE +%%EndPage: "54" 54 +%%Page: "55" 55 +612 792 0 FMBEGINPAGE +0 FrameSetSepColors +FrameNoSep +0 0 0 1 0 0 0 1 K +180 745.99 540 756 R +7 X +V +1 12 Q +0 X +(55) 526.66 748 T +180 32.69 540 42.7 R +7 X +V +0 X +( MPI Primer / Developing with LAM) 180 34.7 T +180 738 540 738 2 L +7 X +V +1 H +2 Z +0 X +N +540 54 180 54 2 L +7 X +V +0 X +N +180 72 540 630 R +7 X +V +3 F +0 X +(lam_ksignal) 180 622 T +0 F +(Install a signal handler) 342 622 T +(.) 450.32 622 T +180 766/G93860 FmPA +3 F +(lam_ksigblock) 180 608 T +0 F +(Block selected signals.) 342 608 T +3 F +(lam_ksigsetmask) 180 594 T +0 F +(Set entire blocking mask.) 342 594 T +3 F +(lam_ksigretry) 180 580 T +0 F +(Retry request after selected signals.) 342 580 T +3 F +(lam_ksigsetretry) 180 566 T +0 F +(Set entire retry mask.) 342 566 T +3 F +(lam_ksigmask) 180 552 T +0 F +(Create signal mask.) 342 552 T +3 F +(MPIL_Signal) 180 522 T +0 F +(Deli) 342 522 T +(v) 362.36 522 T +(er a signal to a process.) 368.18 522 T +180 666/G93669 FmPA +180 489.99 540 500 C +0 0 0 1 0 0 0 1 K +180 489.99 540 500 R +7 X +V +180 498.99 649.01 498.99 2 L +V +1 H +2 Z +0 X +N +0 0 612 792 C +0 0 0 1 0 0 0 1 K +0 12 Q +0 X +(LAM pro) 180 481.99 T +(vides a UNIX-lik) 225.48 481.99 T +(e signal package. The signals are dif) 308.68 481.99 T +(ferent and) 482.66 481.99 T +180 626/G187470 FmPA +(their usage does not con\337ict with the underlying operating system.) 180 467.99 T +(Some signals are used internally by the system. Some ha) 180 445.99 T +(v) 451.74 445.99 T +(e useful def) 457.56 445.99 T +(ault) 513.42 445.99 T +180 590/G187471 FmPA +(options) 180 431.99 T +(and) 218.18 431.99 T +(others) 238.34 431.99 T +(are) 270.5 431.99 T +(completely) 287.99 431.99 T +(left) 344.15 431.99 T +(to) 362.98 431.99 T +(the) 375.16 431.99 T +(user) 392.65 431.99 T +(.) 411.99 431.99 T +(The) 417.82 431.99 T +(most) 439.32 431.99 T +(useful) 465.49 431.99 T +(signal) 497.66 431.99 T +(is) 529.16 431.99 T +(the one that obliges a process to terminate itself. Signals are de\336ned in) 180 417.99 T +(.) 180 403.99 T +3 F +(LAM_SIGTRACE) 180 381.99 T +0 F +(unload trace data) 306 381.99 T +180 526/G187472 FmPA +3 F +(LAM_SIGUDIE) 180 365.99 T +0 F +(terminate) 306 365.99 T +180 510/G93875 FmPA +3 F +(LAM_SIGARREST) 180 349.99 T +0 F +(suspend e) 306 349.99 T +(x) 352.81 349.99 T +(ecution) 358.63 349.99 T +180 494/G187473 FmPA +3 F +(LAM_SIGRELEASE) 180 333.99 T +0 F +(resume e) 306 333.99 T +(x) 348.8 333.99 T +(ecution) 354.62 333.99 T +180 478/G187474 FmPA +3 F +(LAM_SIGA) 180 317.99 T +0 F +(user de\336ned \050def) 306 317.99 T +(ault ignored\051) 386.52 317.99 T +180 462/G187475 FmPA +3 F +(LAM_SIGB) 180 301.99 T +0 F +(user de\336ned \050def) 306 301.99 T +(ault ignored\051) 386.52 301.99 T +180 446/G187476 FmPA +3 F +(LAM_SIGFUSE) 180 285.99 T +0 F +(node about to die) 306 285.99 T +180 430/G93876 FmPA +3 F +(LAM_SIGSHRINK) 180 269.99 T +0 F +(another node has died) 306 269.99 T +180 414/G93877 FmPA +(The) 180 247.99 T +(lam_ksignal\050\051,) 201.17 247.99 T +(lam_ksigblock\050\051) 273.34 247.99 T +(and) 354.5 247.99 T +(lam_ksigsetmask\050\051) 374.34 247.99 T +(functions) 467.51 247.99 T +(oper-) 514.68 247.99 T +180 392/G187477 FmPA +(ate identically to their UNIX counterparts. A LAM or MPI routine inter-) 180 233.99 T +(rupted by a signal before completion is automatically retried. W) 180 219.99 T +(ith the) 486.8 219.99 T +(lam_ksigretry\050\051 and lam_ksigsetretry\050\051 functions, which operate similarly) 180 205.99 T +(to) 180 191.99 T +(lam_ksigblock\050\051) 191.45 191.99 T +(and) 272.21 191.99 T +(lam_ksigsetmask\050\051) 291.65 191.99 T +(respecti) 384.42 191.99 T +(v) 421.44 191.99 T +(ely) 427.26 191.99 T +(,) 441.14 191.99 T +(the) 446.25 191.99 T +(user) 463.03 191.99 T +(can) 485.13 191.99 T +(disable) 503.89 191.99 T +(automatic system call retry and recei) 180 177.99 T +(v) 355.99 177.99 T +(e an error code instead.) 361.81 177.99 T +(MPIL_Signal\050\051) 180 155.99 T +(deli) 256.29 155.99 T +(v) 273.99 155.99 T +(ers) 279.81 155.99 T +(a) 296.76 155.99 T +(signal) 305.04 155.99 T +(to) 336.67 155.99 T +(a) 348.96 155.99 T +(process) 357.24 155.99 T +(identi\336ed) 396.19 155.99 T +(by) 444.48 155.99 T +(a) 459.43 155.99 T +(communicator) 467.72 155.99 T +180 300/G93901 FmPA +(and) 180 141.99 T +(a) 199.69 141.99 T +(rank.) 207.39 141.99 T +(The) 234.08 141.99 T +(signal) 255.1 141.99 T +(number) 286.14 141.99 T +(ar) 325.16 141.99 T +(gument) 334.27 141.99 T +(is) 372.64 141.99 T +(tak) 383.01 141.99 T +(en) 397.55 141.99 T +(from) 411.24 141.99 T +(the) 436.94 141.99 T +(list) 453.97 141.99 T +(de\336ned) 471.01 141.99 T +(abo) 508.7 141.99 T +(v) 525.85 141.99 T +(e.) 531.67 141.99 T +3 F +(MPIL_Signal \050MPI_Comm comm, int rank, int signo\051;) 180 119.99 T +180 264/G93906 FmPA +63 513 180 629.99 C +0 0 0 1 0 0 0 1 K +63 513 180 629.99 R +7 X +V +72 512.99 162 629.99 R +3 X +V +0.5 H +0 Z +N +0 0 612 792 C +63 429 180 489.98 C +0 0 0 1 0 0 0 1 K +63 429 180 489.98 R +7 X +V +72 435.98 162 489.98 R +V +4 14 Q +0 X +(Signal) 124.65 480.65 T +72 625/G183305 FmPA +(Handling) 105.97 464.65 T +0 0 612 792 C +63 129 180 163.98 C +0 0 0 1 0 0 0 1 K +63 129 180 163.98 R +7 X +V +72 136.98 162 163.98 R +V +4 12 Q +0 X +(Signal Deli) 83.9 155.98 T +(v) 139.46 155.98 T +(ery) 145.34 155.98 T +72 300/G93911 FmPA +0 0 612 792 C +0 0 0 1 0 0 0 1 K +[/CropBox[0 0 FmDC 612 792 FmDC FmBx]/PAGE FmPD +[/Dest/P.55/DEST FmPD2 +[/Title(A)/Rect[171 63 549 639]/ARTICLE FmPD2 +FMENDPAGE +%%EndPage: "55" 55 +%%Page: "56" 56 +612 792 0 FMBEGINPAGE +0 FrameSetSepColors +FrameNoSep +0 0 0 1 0 0 0 1 K +180 745.99 540 756 R +7 X +V +1 12 Q +0 X +(56) 180 748 T +180 32.69 540 42.7 R +7 X +V +0 X +( MPI Primer / Developing with LAM) 180 34.7 T +180 738 540 738 2 L +7 X +V +1 H +2 Z +0 X +N +540 54 180 54 2 L +7 X +V +0 X +N +180 63 540 630 R +7 X +V +3 F +0 X +(MPIL_Comm_id) 180 622 T +0 F +(Get communicator identi\336er) 324 622 T +(.) 459.32 622 T +180 766/G187667 FmPA +3 F +(MPIL_Comm_gps) 180 608 T +0 F +(Get LAM coordinates for an MPI process.) 324 608 T +3 F +(MPIL_Type_id) 180 594 T +0 F +(Get datatype identi\336er) 324 594 T +(.) 430.66 594 T +3 F +(MPIL_Trace_on) 180 564 T +0 F +(Enable trace collection.) 324 564 T +180 708/G93959 FmPA +3 F +(MPIL_Trace_off) 180 550 T +0 F +(Disable trace collection.) 324 550 T +180 517.99 540 528 C +0 0 0 1 0 0 0 1 K +180 517.99 540 528 R +7 X +V +180 526.99 649.01 526.99 2 L +V +1 H +2 Z +0 X +N +0 0 612 792 C +0 0 0 1 0 0 0 1 K +0 12 Q +0 X +(LAM places great emphasis on deb) 180 509.99 T +(ugging through e) 349.39 509.99 T +(xtensi) 431.21 509.99 T +(v) 459.58 509.99 T +(e monitoring) 465.4 509.99 T +180 654/G187669 FmPA +(capabilities.) 180 495.99 T +(Opaque) 239.98 495.99 T +(objects) 279.62 495.99 T +(in) 315.93 495.99 T +(MPI) 327.59 495.99 T +(mak) 351.24 495.99 T +(e) 371.79 495.99 T +(it) 379.43 495.99 T +(dif) 388.42 495.99 T +(\336cult) 401.45 495.99 T +(for) 428.45 495.99 T +(the) 444.76 495.99 T +(user) 461.74 495.99 T +(to) 484.05 495.99 T +(cross) 495.7 495.99 T +(ref-) 522.68 495.99 T +(erence) 180 481.99 T +(the) 214.27 481.99 T +(information) 231.9 481.99 T +(presented) 291.52 481.99 T +(by) 340.47 481.99 T +(LAM) 355.43 481.99 T +(deb) 385.06 481.99 T +(ugging) 402.15 481.99 T +(tools) 438.45 481.99 T +(with) 464.75 481.99 T +(the) 489.05 481.99 T +(v) 506.68 481.99 T +(alues) 512.38 481.99 T +(within) 180 467.99 T +(a) 213.41 467.99 T +(running) 221.47 467.99 T +(process.) 261.54 467.99 T +(If) 303.27 467.99 T +2 F +(mpitask) 314 467.99 T +0 F +(\050See) 354.07 467.99 T +2 F +(Pr) 378.13 467.99 T +(ocess) 389.59 467.99 T +(Monitoring) 418.32 467.99 T +(and) 475.73 467.99 T +(Contr) 496.46 467.99 T +(ol) 523.93 467.99 T +0 F +(\051) 533.27 467.99 T +(sho) 180 453.99 T +(ws) 196.37 453.99 T +(a) 211.97 453.99 T +(process) 219.57 453.99 T +(block) 257.83 453.99 T +(ed) 284.38 453.99 T +(on) 297.98 453.99 T +(a) 312.25 453.99 T +(communicator) 319.85 453.99 T +(,) 388.7 453.99 T +(it) 393.97 453.99 T +(prints) 402.92 453.99 T +(an) 432.52 453.99 T +(identifying) 446.13 453.99 T +(number) 501.07 453.99 T +(for) 180 439.99 T +(that) 196.52 439.99 T +(communicator) 217.04 439.99 T +(.) 285.71 439.99 T +(The) 291.23 439.99 T +(number) 312.42 439.99 T +(is) 351.61 439.99 T +(not) 362.14 439.99 T +(de\336ned) 380 439.99 T +(by) 417.85 439.99 T +(the) 432.38 439.99 T +(MPI) 449.57 439.99 T +(standard.) 473.43 439.99 T +(It) 519.61 439.99 T +(is) 529.47 439.99 T +(implementation dependent information internal to the opaque communica-) 180 425.99 T +(tor which the program cannot access using the standard API.) 180 411.99 T +(MPIL_Comm_id\050\051 and MPIL_T) 180 389.99 T +(ype_id\050\051 return the internal identi\336ers for) 335.04 389.99 T +180 534/G93938 FmPA +(communicators and datatypes, respecti) 180 375.99 T +(v) 365.66 375.99 T +(ely) 371.48 375.99 T +(.) 385.37 375.99 T +3 F +(MPIL_Comm_id \050MPI_Comm comm, int *id\051;) 180 353.99 T +180 498/G93939 FmPA +(MPIL_Type_id \050MPI_Comm comm, int *id\051;) 180 339.99 T +0 F +(LAM / MPI e) 180 317.99 T +(xtensions be) 245.48 317.99 T +(ginning with the lam_ pre\336x are LAM-centric.) 304.97 317.99 T +180 462/G93943 FmPA +(The) 180 303.99 T +(y) 198.48 303.99 T +(operate) 206.59 303.99 T +(on) 244.02 303.99 T +(LAM) 258.13 303.99 T +(node) 286.91 303.99 T +(and) 312.35 303.99 T +(process) 331.79 303.99 T +(identi\336ers,) 369.89 303.99 T +(not) 423 303.99 T +(MPI) 440.45 303.99 T +(communicators) 463.9 303.99 T +(and ranks. MPIL_Comm_gps\050\051 obtains the LAM coordinates from MPI) 180 289.99 T +(information.) 180 275.99 T +3 F +(MPIL_Comm_gps \050MPI_Comm comm, int rank, int *nid,) 180 253.99 T +180 398/G93944 FmPA +(int *pid\051;) 216 239.99 T +0 F +(Ex) 180 217.99 T +(ecution trace collection for performance visualization and deb) 193.15 217.99 T +(ugging) 490.5 217.99 T +180 362/G187672 FmPA +(purposes is enabled by) 180 203.99 T +2 F +(mpirun) 291.98 203.99 T +0 F +(. See) 326.65 203.99 T +2 F +(Executing MPI Pr) 352.98 203.99 T +(o) 439.75 203.99 T +(gr) 445.63 203.99 T +(ams) 456.12 203.99 T +0 F +(. T) 475.45 203.99 T +(o a) 487.82 203.99 T +(v) 501.91 203.99 T +(oid) 507.67 203.99 T +(information o) 180 189.99 T +(v) 245.48 189.99 T +(erload and huge trace \336les, a trace enabled application can) 251.3 189.99 T +(toggle) 180 175.99 T +(on) 212.17 175.99 T +(and) 226.34 175.99 T +(of) 245.83 175.99 T +(f) 255.53 175.99 T +(actual) 261.69 175.99 T +(trace) 292.52 175.99 T +(collection) 318 175.99 T +(so) 367.5 175.99 T +(that) 380.34 175.99 T +(only) 400.51 175.99 T +(interesting) 424.01 175.99 T +(phases) 476.84 175.99 T +(of) 511 175.99 T +(the) 523.17 175.99 T +(computation are monitored.) 180 161.99 T +3 F +(MPIL_Trace_On \050void\051;) 180 139.99 T +180 284/G93949 FmPA +(MPIL_Trace_Off \050void\051;) 180 125.99 T +63 549 180 629.99 C +0 0 0 1 0 0 0 1 K +63 549 180 629.99 R +7 X +V +72 548.99 162 629.99 R +3 X +V +0.5 H +0 Z +N +0 0 612 792 C +63 470.03 180 518.06 C +0 0 0 1 0 0 0 1 K +63 470.03 180 518.06 R +7 X +V +72 482.06 162 518.06 R +V +4 14 Q +0 X +(Deb) 72 508.72 T +(ugging) 95.83 508.72 T +(and) 139.43 508.72 T +72 653/G187670 FmPA +(T) 115.59 492.72 T +(racing) 123.89 492.72 T +0 0 612 792 C +0 0 0 1 0 0 0 1 K +[/CropBox[0 0 FmDC 612 792 FmDC FmBx]/PAGE FmPD +[/Dest/P.56/DEST FmPD2 +[/Title(A)/Rect[171 54 549 639]/ARTICLE FmPD2 +FMENDPAGE +%%EndPage: "56" 56 +%%Page: "57" 57 +612 792 0 FMBEGINPAGE +0 FrameSetSepColors +FrameNoSep +0 0 0 1 0 0 0 1 K +180 745.99 540 756 R +7 X +V +1 12 Q +0 X +(57) 526.66 748 T +180 32.69 540 42.7 R +7 X +V +0 X +( MPI Primer / Developing with LAM) 180 34.7 T +180 738 540 738 2 L +7 X +V +1 H +2 Z +0 X +N +540 54 180 54 2 L +7 X +V +0 X +N +180 72 540 630 R +7 X +V +1 18 Q +0 X +(LAM Command Ref) 180 618 T +(erence) 345.82 618 T +180 762/G187540 FmPA +180 437.98 540 450 C +0 0 0 1 0 0 0 1 K +180 437.98 540 450 R +7 X +V +180 448.99 648 448.99 2 L +V +1 H +2 Z +0 X +N +180 445.97 648 445.97 2 L +7 X +V +0 X +N +0 0 612 792 C +0 0 0 1 0 0 0 1 K +0 12 Q +0 X +(Before) 180 429.98 T +(running) 215.34 429.98 T +(LAM) 255.35 429.98 T +(you) 284.7 429.98 T +(must) 305.38 429.98 T +(establish) 331.4 429.98 T +(certain) 376.09 429.98 T +(en) 411.42 429.98 T +(vironment) 422.27 429.98 T +(v) 474.29 429.98 T +(ariables) 479.99 429.98 T +(and) 519.99 429.98 T +180 574/G187541 FmPA +(search) 180 415.98 T +(paths) 213.6 415.98 T +(for) 241.89 415.98 T +(your) 258.83 415.98 T +(shell) 283.78 415.98 T +(on) 309.4 415.98 T +(each) 324.35 415.98 T +(machine) 349.29 415.98 T +(in) 392.9 415.98 T +(the) 405.19 415.98 T +(multicomputer) 422.8 415.98 T +(.) 492.81 415.98 T +(Add) 498.77 415.98 T +(the) 522.38 415.98 T +(follo) 180 401.98 T +(wing) 202.37 401.98 T +(commands) 229.06 401.98 T +(or) 283.75 401.98 T +(equi) 296.44 401.98 T +(v) 316.81 401.98 T +(alent) 322.51 401.98 T +(to) 348.53 401.98 T +(your) 360.56 401.98 T +(shell) 385.25 401.98 T +(start-up) 410.61 401.98 T +(\336le) 449.96 401.98 T +(\050.cshrc,) 467.99 401.98 T +(assum-) 506 401.98 T +(ing) 180 387.98 T +(C) 198.32 387.98 T +(shell\051.) 209.31 387.98 T +(Do) 241.96 387.98 T +(not) 259.61 387.98 T +(add) 277.94 387.98 T +(these) 298.25 387.98 T +(to) 325.9 387.98 T +(your) 338.22 387.98 T +(.login) 363.2 387.98 T +(as) 393.86 387.98 T +(the) 406.84 387.98 T +(y) 421.33 387.98 T +(w) 430.31 387.98 T +(ould) 438.86 387.98 T +(not) 463.18 387.98 T +(be) 481.5 387.98 T +(ef) 495.82 387.98 T +(fecti) 504.84 387.98 T +(v) 525.86 387.98 T +(e) 531.68 387.98 T +(on remote machines when) 180 373.98 T +2 F +(r) 308.64 373.98 T +(sh) 313.19 373.98 T +0 F +( is used to start LAM.) 323.86 373.98 T +3 F +(setenv LAMHOME) 180 351.98 T +0 F +() 288 351.98 T +180 496/G187542 FmPA +3 F +(set path = \050$path $LAMHOME/bin\051) 180 333.98 T +180 478/G89923 FmPA +0 F +(The) 180 311.98 T +(local) 200.78 311.98 T +(system) 226.23 311.98 T +(administrator) 261.69 311.98 T +(,) 325.21 311.98 T +(or) 330.33 311.98 T +(the) 342.45 311.98 T +(person) 359.24 311.98 T +(who) 393.35 311.98 T +(installed) 416.14 311.98 T +(LAM,) 458.93 311.98 T +(will) 490.72 311.98 T +(kno) 511.51 311.98 T +(w) 529.21 311.98 T +180 456/G187543 FmPA +(the location of the LAM installation directory) 180 297.98 T +(. After editing the shell start-) 398.53 297.98 T +(up) 180 283.98 T +(\336le,) 194.72 283.98 T +(in) 215.78 283.98 T +(v) 224.64 283.98 T +(ok) 230.4 283.98 T +(e) 242.28 283.98 T +(it) 250.33 283.98 T +(to) 259.73 283.98 T +(establish) 271.79 283.98 T +(the) 316.51 283.98 T +(ne) 333.9 283.98 T +(w) 344.93 283.98 T +(v) 356.32 283.98 T +(alues.) 362.02 283.98 T +(This) 392.4 283.98 T +(is) 416.46 283.98 T +(not) 427.19 283.98 T +(necessary) 445.25 283.98 T +(on) 494.62 283.98 T +(subse-) 509.34 283.98 T +(quent logins to the UNIX system.) 180 269.98 T +3 F +(% source) 180 247.98 T +(.cshrc) 240.6 247.98 T +180 392/G187544 FmPA +0 F +(Each remote machine in the multicomputer must be reachable with the) 180 225.98 T +180 370/G187545 FmPA +(UNIX rsh command. rsh does not prompt for passw) 180 211.98 T +(ords and relies on spe-) 428.84 211.98 T +(cial \336les on the remote machine \050/etc/hosts.equi) 180 197.98 T +(v and ~/.rhosts\051 to g) 408.67 197.98 T +(ain) 504.77 197.98 T +(access. One of these \336les must be prepared to admit the selected user) 180 183.98 T +(account) 180 169.98 T +(for) 219.9 169.98 T +(the) 236.46 169.98 T +(remote) 253.7 169.98 T +(machine.) 289.6 169.98 T +(See) 335.83 169.98 T +(the) 355.74 169.98 T +(UNIX) 372.98 169.98 T +(manual) 405.54 169.98 T +(page) 443.45 169.98 T +(for) 468.68 169.98 T +(rsh) 485.24 169.98 T +(on) 502.48 169.98 T +(ho) 517.06 169.98 T +(w) 528.76 169.98 T +(to prepare these \336les.) 180 155.98 T +(Man) 180 133.98 T +(y) 201.82 133.98 T +(LAM) 210.54 133.98 T +(commands) 239.92 133.98 T +(require) 294.64 133.98 T +(one) 331.34 133.98 T +(or) 351.39 133.98 T +(more) 364.1 133.98 T +(nodeids.) 391.48 133.98 T +(Nodeids) 434.53 133.98 T +(are) 477.25 133.98 T +(speci\336ed) 494.62 133.98 T +180 278/G187546 FmPA +(on the command line as n, where is a list of comma separated) 180 119.98 T +(nodeids or nodeid ranges.) 180 105.98 T +63 350.99 180 437.97 C +0 0 0 1 0 0 0 1 K +63 350.99 180 437.97 R +7 X +V +72 356.97 162 437.97 R +V +4 14 Q +0 X +(Getting) 116.89 428.64 T +72 573/G183285 FmPA +(Started) 117.68 412.64 T +4 12 Q +(Setting Up the) 88.67 389.97 T +72 534/G187891 FmPA +(UNIX) 131.34 375.97 T +(En) 94.69 361.97 T +(vir) 108.89 361.97 T +(onment) 123.34 361.97 T +0 0 612 792 C +63 114.97 180 141.97 C +0 0 0 1 0 0 0 1 K +63 114.97 180 141.97 R +7 X +V +72 123.97 162 141.97 R +V +4 12 Q +0 X +(Node Mnemonics) 73.01 133.97 T +72 278/G183307 FmPA +0 0 612 792 C +0 0 0 1 0 0 0 1 K +[/CropBox[0 0 FmDC 612 792 FmDC FmBx]/PAGE FmPD +[/Dest/P.57/DEST FmPD2 +[/Title(A)/Rect[171 63 549 639]/ARTICLE FmPD2 +FMENDPAGE +%%EndPage: "57" 57 +%%Page: "58" 58 +612 792 0 FMBEGINPAGE +0 FrameSetSepColors +FrameNoSep +0 0 0 1 0 0 0 1 K +180 745.99 540 756 R +7 X +V +1 12 Q +0 X +(58) 180 748 T +180 32.69 540 42.7 R +7 X +V +0 X +( MPI Primer / Developing with LAM) 180 34.7 T +180 738 540 738 2 L +7 X +V +1 H +2 Z +0 X +N +540 54 180 54 2 L +7 X +V +0 X +N +180 72 540 630 R +7 X +V +3 F +0 X +(n1) 180 622 T +180 766/G187547 FmPA +(n1,3,5-10) 180 608 T +0 F +(In) 180 586 T +(addition) 192.41 586 T +(to) 234.16 586 T +(e) 245.9 586 T +(xplicit) 251.05 586 T +(node) 284.14 586 T +(identi\336cation,) 309.88 586 T +(LAM) 378.62 586 T +(has) 407.7 586 T +(special) 426.11 586 T +(mnemonics) 461.84 586 T +(that) 519.59 586 T +180 730/G187548 FmPA +(refer to special nodes or a group of nodes.) 180 572 T +3 F +(h) 180 550 T +0 F +(the local node where the command is typed \050as in \324here\325\051) 216 550 T +180 694/G94008 FmPA +3 F +(o) 180 534 T +0 F +(the) 216 534 T +(origin) 233.48 534 T +(node) 264.96 534 T +(where) 291.11 534 T +(LAM) 323.24 534 T +(w) 352.72 534 T +(as) 361.27 534 T +(started) 374.08 534 T +(with) 408.89 534 T +(the) 433.04 534 T +2 F +(lamboot) 450.52 534 T +0 F +(command) 492.67 534 T +180 678/G94009 FmPA +3 F +(N) 180 518 T +0 F +(all nodes) 216 518 T +180 662/G94010 FmPA +3 F +(C) 180 502 T +0 F +(all nodes intended for application computing) 216 502 T +180 646/G94011 FmPA +(Nodeids are established in the LAM multicomputer plan, called a boot) 180 480 T +180 624/G187553 FmPA +(schema \050see) 180 466 T +2 F +(Writing a LAM Boot Sc) 241.31 466 T +(hema) 353.8 466 T +0 F +(\051. LAM nodeids are al) 379.79 466 T +(w) 485.98 466 T +(ays num-) 494.52 466 T +(bered) 180 452 T +(consecuti) 209.1 452 T +(v) 254.12 452 T +(ely) 259.94 452 T +(be) 277.05 452 T +(ginning) 288.2 452 T +(at) 327.32 452 T +(0) 338.43 452 T +(when) 346.88 452 T +(the) 375.32 452 T +(system) 392.43 452 T +(is) 428.21 452 T +(\336rst) 438.66 452 T +(started) 459.78 452 T +(with) 494.22 452 T +(lam-) 518 452 T +(boot.) 180 438 T +(Thus) 207.07 438 T +(the) 233.81 438 T +(number) 251.21 438 T +(of) 290.6 438 T +(nodes) 303.33 438 T +(in) 334.06 438 T +(the) 346.13 438 T +(boot) 363.53 438 T +(schema) 387.61 438 T +(de\336nes) 426.33 438 T +(the) 463.06 438 T +(initial) 480.46 438 T +(set) 511.2 438 T +(of) 527.27 438 T +(nodeids. If nodes are added or subtracted, the contiguous property of) 180 424 T +(nodeids can end. See) 180 410 T +2 F +(Adding and Deleting LAM Nodes) 283.64 410 T +0 F +(.) 443.64 410 T +(LAM) 180 388 T +(processes) 208.84 388 T +(can) 257 388 T +(be) 275.84 388 T +(speci\336ed) 289.34 388 T +(in) 334.18 388 T +(tw) 345.69 388 T +(o) 357.57 388 T +(w) 365.75 388 T +(ays:) 374.3 388 T +(by) 395.8 388 T +(process) 409.98 388 T +(identi\336er) 448.15 388 T +(\050from) 493.66 388 T +(the) 523.16 388 T +180 532/G187554 FmPA +(underlying) 180 374 T +(operating) 234.71 374 T +(system\051) 282.76 374 T +(or) 322.81 374 T +(by) 335.52 374 T +(LAM) 350.24 374 T +(process) 379.62 374 T +(inde) 418.33 374 T +(x.) 438.81 374 T +(PIDs) 450.53 374 T +(are) 477.25 374 T +(speci\336ed) 494.62 374 T +(on the command line as p, where is a list of comma separated) 180 360 T +(PIDs or PID ranges.) 180 346 T +3 F +(p5158) 180 324 T +180 468/G187555 FmPA +(p5158,5160,5200-5210) 180 310 T +0 F +(Process indices are speci\336ed on the command line as i, where ) 180 288 T +180 432/G187556 FmPA +(is a list of comma separated indices or inde) 180 274 T +(x ranges.) 387.12 274 T +3 F +(i8) 180 252 T +180 396/G94057 FmPA +(i8-12,14) 180 238 T +0 F +(MPI processes are normally labelled by the LAM / MPI status reporting) 180 216 T +180 360/G94044 FmPA +(commands,) 180 202 T +2 F +(mpitask) 238 202 T +0 F +( and) 275.33 202 T +2 F +(mpimsg) 298.66 202 T +0 F +(, with their global rank in the) 335.99 202 T +(MPI_COMM_W) 180 188 T +(ORLD communicator) 262.55 188 T +(. W) 366.88 188 T +(ith the possibility of multiple) 383.72 188 T +(concurrent) 180 174 T +(applications,) 233.76 174 T +(spa) 297.2 174 T +(wned) 313.02 174 T +(processes,) 341.46 174 T +(and) 392.89 174 T +(the) 412.67 174 T +(need) 429.78 174 T +(to) 454.88 174 T +(use) 466.67 174 T +(LAM) 485.11 174 T +(node) 514.22 174 T +(/) 180 160 T +(process) 185.9 160 T +(identi\336cation) 224.44 160 T +(with) 290.34 160 T +(LAM) 314.24 160 T +(process) 343.46 160 T +(control) 382.01 160 T +(commands,) 418.56 160 T +(a) 476.12 160 T +(supplemen-) 484.01 160 T +(tary labelling scheme is a) 180 146 T +(v) 301.74 146 T +(ailable. It is kno) 307.44 146 T +(wn as the GPS, for Global Posi-) 384.47 146 T +(tioning) 180 132 T +(System,) 216.28 132 T +(because) 256.9 132 T +(it) 297.15 132 T +(absolutely) 306.1 132 T +(distinguishes) 357.7 132 T +(a) 422.65 132 T +(process) 430.26 132 T +(from) 468.52 132 T +(all) 494.12 132 T +(others) 508.4 132 T +(in a LAM system. The GPS contains the process inde) 180 118 T +(x and nodeid.) 436.46 118 T +(T) 180 96 T +(o) 186.37 96 T +(print) 195.2 96 T +(a) 220.68 96 T +(brief) 228.84 96 T +(summary) 254.31 96 T +(of) 301.8 96 T +(the) 314.62 96 T +(syntax) 332.11 96 T +(and) 366.26 96 T +(options) 386.41 96 T +(of) 424.57 96 T +(an) 437.39 96 T +(y) 448.54 96 T +(LAM) 457.36 96 T +(command,) 486.85 96 T +180 240/G187558 FmPA +(e) 180 82 T +(x) 185.15 82 T +(ecute the command with the -h option.) 190.97 82 T +63 351 180 395.99 C +0 0 0 1 0 0 0 1 K +63 351 180 395.99 R +7 X +V +72 350.99 162 395.99 R +V +4 12 Q +0 X +(Pr) 123.56 387.99 T +(ocess) 136.01 387.99 T +72 532/G183321 FmPA +(Identi\336cation) 93.32 373.99 T +0 0 612 792 C +63 76.99 180 103.99 C +0 0 0 1 0 0 0 1 K +63 76.99 180 103.99 R +7 X +V +72 85.99 162 103.99 R +V +4 12 Q +0 X +(On-line Help) 95.65 95.99 T +72 240/G183310 FmPA +0 0 612 792 C +0 0 0 1 0 0 0 1 K +[/CropBox[0 0 FmDC 612 792 FmDC FmBx]/PAGE FmPD +[/Dest/P.58/DEST FmPD2 +[/Title(A)/Rect[171 63 549 639]/ARTICLE FmPD2 +FMENDPAGE +%%EndPage: "58" 58 +%%Page: "59" 59 +612 792 0 FMBEGINPAGE +0 FrameSetSepColors +FrameNoSep +0 0 0 1 0 0 0 1 K +180 745.99 540 756 R +7 X +V +1 12 Q +0 X +(59) 526.66 748 T +180 32.69 540 42.7 R +7 X +V +0 X +( MPI Primer / Developing with LAM) 180 34.7 T +180 738 540 738 2 L +7 X +V +1 H +2 Z +0 X +N +540 54 180 54 2 L +7 X +V +0 X +N +180 63 540 630 R +7 X +V +3 F +0 X +(% recon -h) 180 622 T +180 766/G187559 FmPA +0 F +(Detailed) 180 600 T +(information) 223.18 600 T +(on) 282.37 600 T +(each) 296.89 600 T +(command) 321.4 600 T +(\050and) 371.25 600 T +(most) 395.1 600 T +(programming) 420.96 600 T +(functions\051) 488.82 600 T +180 744/G187560 FmPA +(is a) 180 586 T +(v) 196.09 586 T +(ailable from on-line manual pages. The) 201.79 586 T +(y are an important supplemen-) 390.24 586 T +(tary reference to this document.) 180 572 T +3 F +(% man recon) 180 550 T +180 694/G187561 FmPA +[/CropBox[0 0 FmDC 612 792 FmDC FmBx]/PAGE FmPD +[/Dest/P.59/DEST FmPD2 +[/Title(A)/Rect[171 54 549 639]/ARTICLE FmPD2 +FMENDPAGE +%%EndPage: "59" 59 +%%Page: "60" 60 +612 792 0 FMBEGINPAGE +0 FrameSetSepColors +FrameNoSep +0 0 0 1 0 0 0 1 K +180 745.99 540 756 R +7 X +V +1 12 Q +0 X +(60) 180 748 T +180 32.69 540 42.7 R +7 X +V +0 X +( MPI Primer / Developing with LAM) 180 34.7 T +180 738 540 738 2 L +7 X +V +1 H +2 Z +0 X +N +540 54 180 54 2 L +7 X +V +0 X +N +180 72 540 630 R +7 X +V +3 F +0 X +(hcc) 180 622 T +0 F +(wrapper for local C compiler) 324 622 T +180 766/G187562 FmPA +3 F +(hcp) 180 608 T +0 F +(wrapper for local C++ compiler) 324 608 T +3 F +(hf77) 180 594 T +0 F +(wrapper for local F) 324 594 T +(ortran compiler) 416.12 594 T +180 561.99 540 572 C +0 0 0 1 0 0 0 1 K +180 561.99 540 572 R +7 X +V +180 570.99 649.01 570.99 2 L +V +1 H +2 Z +0 X +N +0 0 612 792 C +0 0 0 1 0 0 0 1 K +0 12 Q +0 X +(Objects) 180 553.99 T +(and) 219.42 553.99 T +(binaries) 239.51 553.99 T +(are) 280.26 553.99 T +(b) 297.67 553.99 T +(uilt) 303.43 553.99 T +(with) 322.2 553.99 T +(the) 346.29 553.99 T +(nati) 363.71 553.99 T +(v) 381.41 553.99 T +(e) 387.23 553.99 T +(compiler) 395.32 553.99 T +(and) 440.74 553.99 T +(link) 460.83 553.99 T +(er) 479.38 553.99 T +(a) 491.46 553.99 T +(v) 496.55 553.99 T +(ailable,) 502.25 553.99 T +180 698/G187563 FmPA +(hopefully) 180 539.99 T +(,) 225.22 539.99 T +(on) 230.54 539.99 T +(all) 244.86 539.99 T +(of) 259.19 539.99 T +(the) 271.51 539.99 T +(LAM) 288.5 539.99 T +(nodes,) 317.48 539.99 T +(or) 350.8 539.99 T +(at) 363.12 539.99 T +(least) 374.11 539.99 T +(on) 398.43 539.99 T +(one) 412.76 539.99 T +(machine) 432.41 539.99 T +(of) 475.39 539.99 T +(each) 487.71 539.99 T +(archi-) 512.02 539.99 T +(tecture) 180 525.99 T +(and) 214.93 525.99 T +(operating) 234.54 525.99 T +(system) 282.14 525.99 T +(type.) 317.76 525.99 T +(The) 343.7 525.99 T +2 F +(hcc) 364.64 525.99 T +0 F +(tool) 383.57 525.99 T +(is) 404.52 525.99 T +(a) 414.81 525.99 T +(wrapper) 422.42 525.99 T +(that) 464.01 525.99 T +(in) 484.29 525.99 T +(v) 493.14 525.99 T +(ok) 498.9 525.99 T +(es) 510.78 525.99 T +(the) 523.06 525.99 T +(nati) 180 511.99 T +(v) 197.7 511.99 T +(e) 203.52 511.99 T +(C) 211.36 511.99 T +(compiler) 221.88 511.99 T +(dri) 267.06 511.99 T +(v) 280.09 511.99 T +(er) 285.91 511.99 T +(\050e.g.) 297.75 511.99 T +(cc\051) 321.59 511.99 T +(and) 338.76 511.99 T +(pro) 358.6 511.99 T +(vides) 374.42 511.99 T +(the) 402.27 511.99 T +(paths) 419.45 511.99 T +(to) 447.29 511.99 T +(the) 459.14 511.99 T +(LAM) 476.33 511.99 T +(header) 505.5 511.99 T +(\336les) 180 497.99 T +(and) 202.7 497.99 T +(libraries) 222.72 497.99 T +(and) 264.74 497.99 T +(implicitly) 284.76 497.99 T +(links) 334.13 497.99 T +(all) 360.17 497.99 T +(LAM) 374.86 497.99 T +(libraries.) 404.22 497.99 T +(The) 449.23 497.99 T +(MPI) 470.59 497.99 T +(library) 494.62 497.99 T +(is) 529.3 497.99 T +(link) 180 483.99 T +(ed e) 198.55 483.99 T +(xplicitly) 218.03 483.99 T +(. All options presented to hcc are passed through to the) 257.26 483.99 T +(nati) 180 469.99 T +(v) 197.7 469.99 T +(e compiler dri) 203.52 469.99 T +(v) 270.54 469.99 T +(er) 276.36 469.99 T +(.) 285.02 469.99 T +3 F +(% hcc -o appl appl.c -lmpi) 180 447.99 T +180 592/G187564 FmPA +(% hcp -o appl appl.c -lmpi) 180 433.99 T +0 F +(By def) 180 411.99 T +(ault, hcc uses the compiler dri) 212.21 411.99 T +(v) 355.88 411.99 T +(er that w) 361.7 411.99 T +(as used to b) 403.57 411.99 T +(uild LAM and) 459.66 411.99 T +180 556/G187565 FmPA +(speci\336ed) 180 397.99 T +(in) 225.22 397.99 T +(the) 237.11 397.99 T +(LAM) 254.33 397.99 T +(con\336guration) 283.56 397.99 T +(\336le.) 350.11 397.99 T +(A) 371 397.99 T +(dif) 382.23 397.99 T +(ferent) 395.26 397.99 T +(C) 425.8 397.99 T +(compiler) 436.36 397.99 T +(can) 481.58 397.99 T +(be) 500.79 397.99 T +(spec-) 514.68 397.99 T +(i\336ed in the LAMHCC en) 180 383.99 T +(vironment v) 299.52 383.99 T +(ariable.) 357.55 383.99 T +(In) 180 361.99 T +(case) 192.32 361.99 T +(the) 215.3 361.99 T +(C) 232.29 361.99 T +(and) 242.61 361.99 T +(C++) 262.27 361.99 T +(compilers) 286.13 361.99 T +(are) 335.78 361.99 T +(dif) 352.76 361.99 T +(ferent,) 365.79 361.99 T +(a) 399.1 361.99 T +(separate) 406.75 361.99 T +2 F +(hcp) 448.39 361.99 T +0 F +(wrapper) 468.04 361.99 T +(is) 509.68 361.99 T +(pro-) 520.01 361.99 T +180 506/G94075 FmPA +(vided for C++.) 180 347.99 T +(Unlik) 180 325.99 T +(e) 207.22 325.99 T +(the) 215.54 325.99 T +(C) 233.2 325.99 T +(and) 244.2 325.99 T +(C++) 264.53 325.99 T +(wrappers,) 289.07 325.99 T +(the) 339.04 325.99 T +(F) 356.7 325.99 T +(ortran) 363.2 325.99 T +(wrapper) 394.85 325.99 T +(,) 433.68 325.99 T +2 F +(hf77) 439.68 325.99 T +0 F +(,) 461.02 325.99 T +(does) 467.01 325.99 T +(not) 492.01 325.99 T +(insert) 510.34 325.99 T +180 470/G94076 FmPA +(an) 180 311.99 T +(option) 194.05 311.99 T +(to) 227.44 311.99 T +(search) 239.49 311.99 T +(LAM\325) 272.86 311.99 T +(s) 302.86 311.99 T +(header) 310.25 311.99 T +(\336le) 344.95 311.99 T +(directory) 363 311.99 T +(.) 405.54 311.99 T +(This) 411.26 311.99 T +(is) 435.32 311.99 T +(because) 446.04 311.99 T +(not) 486.74 311.99 T +(all) 504.8 311.99 T +(F) 519.52 311.99 T +(or-) 526.01 311.99 T +(tran) 180 297.99 T +(compiler) 201.63 297.99 T +(dri) 247.26 297.99 T +(v) 260.3 297.99 T +(ers) 266.12 297.99 T +(support) 283.08 297.99 T +(that) 322.05 297.99 T +(option) 343.03 297.99 T +(and) 376.67 297.99 T +(the) 396.97 297.99 T +(F) 414.61 297.99 T +(ortran) 421.1 297.99 T +(include) 452.73 297.99 T +(statement) 491.03 297.99 T +(may be required instead to bring in the MPI header \336le, mpif.h. Note that) 180 283.99 T +(mpif.h is a F) 180 269.99 T +(ortran source \336le, b) 240.49 269.99 T +(ut all other LAM header \336les intended for) 333.56 269.99 T +(F) 180 255.99 T +(ortran use contain C preprocessor code. The C preprocessor may need to) 186.49 255.99 T +(be run e) 180 241.99 T +(xplicitly if the F) 218.47 241.99 T +(ortran dri) 295.97 241.99 T +(v) 340.66 241.99 T +(er does not do so automatically) 346.48 241.99 T +(.) 495.35 241.99 T +(Care should be tak) 180 219.99 T +(en not to confuse object \336les and binaries produced on) 269.53 219.99 T +180 364/G187566 FmPA +(heterogeneous nodes in the multicomputer) 180 205.99 T +(. In such situations, it can be a) 383.32 205.99 T +(good) 180 191.99 T +(idea) 206.55 191.99 T +(to) 229.1 191.99 T +(append) 240.99 191.99 T +(the) 278.2 191.99 T +(machine) 295.42 191.99 T +(or) 338.63 191.99 T +(CPU) 351.18 191.99 T +(name) 377.07 191.99 T +(to) 405.62 191.99 T +(the) 417.51 191.99 T +(object) 434.73 191.99 T +(and) 466.61 191.99 T +(e) 486.49 191.99 T +(x) 491.64 191.99 T +(ecutable) 497.46 191.99 T +(\336le names in order to distinguish between them.) 180 177.99 T +3 F +({sparc}% hcc -o appl.sparc appl.c) 180 155.99 T +180 300/G187567 FmPA +({sgi}% hcc -o appl.sgi appl.c) 180 137.99 T +180 282/G187568 FmPA +63 585 180 629.99 C +0 0 0 1 0 0 0 1 K +63 585 180 629.99 R +7 X +V +72 584.99 162 629.99 R +3 X +V +0.5 H +0 Z +N +0 0 612 792 C +63 521.02 180 561.98 C +0 0 0 1 0 0 0 1 K +63 521.02 180 561.98 R +7 X +V +72 525.98 162 561.98 R +V +4 14 Q +0 X +(Compiling) 98.99 552.65 T +72 697/G183315 FmPA +(MPI Pr) 72.44 536.65 T +(ograms) 117.68 536.65 T +0 0 612 792 C +0 0 0 1 0 0 0 1 K +[/CropBox[0 0 FmDC 612 792 FmDC FmBx]/PAGE FmPD +[/Dest/P.60/DEST FmPD2 +[/Title(A)/Rect[171 63 549 639]/ARTICLE FmPD2 +FMENDPAGE +%%EndPage: "60" 60 +%%Page: "61" 61 +612 792 0 FMBEGINPAGE +0 FrameSetSepColors +FrameNoSep +0 0 0 1 0 0 0 1 K +180 745.99 540 756 R +7 X +V +1 12 Q +0 X +(61) 526.66 748 T +180 32.69 540 42.7 R +7 X +V +0 X +( MPI Primer / Developing with LAM) 180 34.7 T +180 738 540 738 2 L +7 X +V +1 H +2 Z +0 X +N +540 54 180 54 2 L +7 X +V +0 X +N +180 63 540 630 R +7 X +V +3 F +0 X +(recon) 180 622 T +0 F +(V) 324 622 T +(erify multicomputer is ready to run LAM.) 331.33 622 T +180 766/G187569 FmPA +3 F +(lamboot) 180 608 T +0 F +(Start a LAM multicomputer session.) 324 608 T +3 F +(tping) 180 594 T +0 F +(Check communication to gi) 324 594 T +(v) 456.7 594 T +(en node.) 462.52 594 T +3 F +(wipe) 180 580 T +0 F +(T) 324 580 T +(erminate a LAM session.) 330.49 580 T +180 547.99 540 558 C +0 0 0 1 0 0 0 1 K +180 547.99 540 558 R +7 X +V +180 556.99 649.01 556.99 2 L +V +1 H +2 Z +0 X +N +0 0 612 792 C +0 0 0 1 0 0 0 1 K +0 12 Q +0 X +(The topology of a multicomputer running LAM is a totally connected) 180 539.99 T +180 684/G187570 FmPA +(graph. Thus it is only necessary for the user to specify the machines to be) 180 525.99 T +(included in the multicomputer in order to start LAM. The boot schema) 180 511.99 T +(\050ASCII \336le\051 serv) 180 497.99 T +(es this purpose. See) 260.47 497.99 T +2 F +(Writing a LAM Boot Sc) 358.13 497.99 T +(hema) 470.62 497.99 T +0 F +(.) 496.61 497.99 T +(The) 180 475.99 T +2 F +(r) 201.17 475.99 T +(econ) 205.4 475.99 T +0 F +(tool) 230.57 475.99 T +(v) 251.75 475.99 T +(eri\336es) 257.57 475.99 T +(that) 289.41 475.99 T +(LAM) 309.92 475.99 T +(can) 339.1 475.99 T +(be) 358.27 475.99 T +(started) 372.11 475.99 T +(on) 406.61 475.99 T +(each) 421.13 475.99 T +(intended) 445.62 475.99 T +(node.) 489.46 475.99 T +(Se) 518.3 475.99 T +(v-) 530 475.99 T +180 620/G187571 FmPA +(eral conditions must e) 180 461.99 T +(xist before a machine can remotely run the softw) 285.48 461.99 T +(are.) 519.97 461.99 T +(\245) 198 439.99 T +(The machine address must be reachable via the netw) 216 439.99 T +(ork.) 468.48 439.99 T +180 584/G187572 FmPA +(\245) 198 419.99 T +(The) 216 419.99 T +(user) 237.44 419.99 T +(must) 260.2 419.99 T +(be) 286.32 419.99 T +(able) 300.42 419.99 T +(to) 323.19 419.99 T +(remotely) 335.3 419.99 T +(e) 380.74 419.99 T +(x) 385.89 419.99 T +(ecute) 391.71 419.99 T +(on) 419.8 419.99 T +(the) 434.58 419.99 T +(machine) 452.02 419.99 T +(with) 495.45 419.99 T +(rsh.) 519.56 419.99 T +180 564/G187573 FmPA +(Remote) 216 405.99 T +(host) 256.16 405.99 T +(permission) 279 405.99 T +(must) 334.5 405.99 T +(be) 360.67 405.99 T +(pro) 374.83 405.99 T +(vided) 390.65 405.99 T +(in) 420.14 405.99 T +(either) 432.31 405.99 T +(/etc/hosts.equi) 462.47 405.99 T +(v) 531.17 405.99 T +(or the remote user\325) 216 391.99 T +(s .rhosts \336le.) 306.31 391.99 T +(\245) 198 371.99 T +(The) 216 371.99 T +(remote) 236.75 371.99 T +(user\325) 272.16 371.99 T +(s) 295.49 371.99 T +(shell) 302.24 371.99 T +(must) 327 371.99 T +(ha) 352.43 371.99 T +(v) 363.52 371.99 T +(e) 369.34 371.99 T +(a) 376.75 371.99 T +(search) 384.17 371.99 T +(path) 416.9 371.99 T +(that) 439.66 371.99 T +(will) 459.74 371.99 T +(locate) 480.5 371.99 T +(LAM) 511.25 371.99 T +180 516/G187574 FmPA +(e) 216 357.99 T +(x) 221.15 357.99 T +(ecutables.) 226.97 357.99 T +(\245) 198 337.99 T +(The remote shell\325) 216 337.99 T +(s start-up \336le must not print an) 299.99 337.99 T +(ything to standard) 447.14 337.99 T +180 482/G94095 FmPA +(error when in) 216 323.99 T +(v) 280.16 323.99 T +(ok) 285.92 323.99 T +(ed non-interacti) 297.8 323.99 T +(v) 373.15 323.99 T +(ely) 378.97 323.99 T +(.) 392.86 323.99 T +(The) 180 301.99 T +2 F +(lamboot) 200.99 301.99 T +0 F +(tool) 242.66 301.99 T +(starts) 263.67 301.99 T +(a) 291.33 301.99 T +(LAM) 298.99 301.99 T +(session) 327.98 301.99 T +(for) 364.99 301.99 T +(the) 381.31 301.99 T +(indi) 398.31 301.99 T +(vidual) 416.68 301.99 T +(user) 449.01 301.99 T +(.) 468.34 301.99 T +(The) 473.67 301.99 T +(-v) 494.67 301.99 T +(option) 506.99 301.99 T +180 446/G187575 FmPA +(prints) 180 287.99 T +(a) 209.52 287.99 T +(message) 217.03 287.99 T +(before) 259.88 287.99 T +(each) 292.71 287.99 T +(start-up) 316.88 287.99 T +(step) 355.72 287.99 T +(is) 377.24 287.99 T +(attempted.) 387.43 287.99 T +(The) 439.94 287.99 T +(boot) 460.79 287.99 T +(schema) 484.31 287.99 T +(\336le) 522.48 287.99 T +(is the primary ar) 180 273.99 T +(gument to lamboot.) 258.77 273.99 T +3 F +(% lamboot -v) 180 251.99 T +0 F +() 273.6 251.99 T +180 396/G187576 FmPA +3 F +(-x) 180 233.99 T +0 F +(Enable f) 270 233.99 T +(ault detection and reco) 310.2 233.99 T +(v) 418.99 233.99 T +(ery) 424.81 233.99 T +(. Exchange periodic) 439.36 233.99 T +180 378/G94312 FmPA +(\322heartbeat\323 messages between all nodes.) 270 219.99 T +(LAM considers a node to be dead after repeated retransmissions of a mes-) 180 197.99 T +180 342/G94303 FmPA +(sage) 180 183.99 T +(pack) 204.24 183.99 T +(et) 226.78 183.99 T +(go) 238.36 183.99 T +(unackno) 253.27 183.99 T +(wledged.) 293.63 183.99 T +(By) 340.2 183.99 T +(def) 357.12 183.99 T +(ault,) 372.32 183.99 T +(no) 396.24 183.99 T +(action) 411.16 183.99 T +(is) 443.4 183.99 T +(tak) 454.32 183.99 T +(en) 468.86 183.99 T +(and) 483.11 183.99 T +(retrans-) 503.35 183.99 T +(missions) 180 169.99 T +(continue) 224.25 169.99 T +(inde\336nitely) 267.81 169.99 T +(.) 321.7 169.99 T +(W) 326.93 169.99 T +(ith) 337.78 169.99 T +(the) 352.69 169.99 T +(-x) 369.59 169.99 T +(option) 381.82 169.99 T +(to) 414.72 169.99 T +(lamboot,) 426.29 169.99 T +(LAM) 470.86 169.99 T +(initiates) 499.76 169.99 T +(a procedure to remo) 180 155.99 T +(v) 276.12 155.99 T +(e the dead node from the multicomputer) 281.94 155.99 T +(. The dead) 473.92 155.99 T +(nodeid becomes in) 180 141.99 T +(v) 269.51 141.99 T +(alid. All other nodeids remain unchanged - holes may) 275.21 141.99 T +(de) 180 127.99 T +(v) 191.03 127.99 T +(elop) 196.85 127.99 T +(in) 220.08 127.99 T +(the) 231.98 127.99 T +(nodeid) 249.21 127.99 T +(list.) 284.45 127.99 T +(Finally) 304.69 127.99 T +(,) 337.92 127.99 T +(a) 343.48 127.99 T +(signal) 351.38 127.99 T +(is) 382.61 127.99 T +(set) 393.18 127.99 T +(to) 409.08 127.99 T +(all) 420.99 127.99 T +(application) 435.55 127.99 T +(processes) 491.45 127.99 T +(on) 180 113.99 T +(all) 194.83 113.99 T +(nodes,) 209.67 113.99 T +(notifying) 243.5 113.99 T +(them) 290.33 113.99 T +(of) 317.17 113.99 T +(the) 330 113.99 T +(f) 347.5 113.99 T +(ailure.) 351.37 113.99 T +(The) 384.53 113.99 T +(runtime) 406.02 113.99 T +(system) 446.19 113.99 T +(of) 482.36 113.99 T +(each) 495.19 113.99 T +(pro-) 520.01 113.99 T +(cess) 180 99.99 T +(must,) 202.6 99.99 T +(at) 231.55 99.99 T +(a) 242.82 99.99 T +(minimum,) 250.75 99.99 T +(\337ush) 303.04 99.99 T +(a) 328.99 99.99 T +(cached) 336.92 99.99 T +(table) 372.84 99.99 T +(of) 398.77 99.99 T +(nodeids,) 411.38 99.99 T +(so) 454.32 99.99 T +(that) 467.59 99.99 T +(it) 488.2 99.99 T +(can) 497.48 99.99 T +(read) 516.74 99.99 T +(updated information from the LAM daemon. Users can trap this signal) 180 85.99 T +63 576 180 629.99 C +0 0 0 1 0 0 0 1 K +63 576 180 629.99 R +7 X +V +72 575.99 162 629.99 R +3 X +V +0.5 H +0 Z +N +0 0 612 792 C +63 504 180 547.98 C +0 0 0 1 0 0 0 1 K +63 504 180 547.98 R +7 X +V +72 511.98 162 547.98 R +V +4 14 Q +0 X +(Starting LAM) 76.84 538.65 T +72 683/G183316 FmPA +4 12 Q +(r) 133.56 515.98 T +(econ) 138.67 515.98 T +72 660/G94099 FmPA +0 0 612 792 C +63 282.98 180 309.98 C +0 0 0 1 0 0 0 1 K +63 282.98 180 309.98 R +7 X +V +72 291.98 162 309.98 R +V +4 12 Q +0 X +(lamboot) 120 301.98 T +72 446/G183262 FmPA +0 0 612 792 C +63 208 180 241.98 C +0 0 0 1 0 0 0 1 K +63 208 180 241.98 R +7 X +V +72 205.98 162 241.98 R +V +4 12 Q +0 X +(F) 81.74 233.98 T +(ault T) 88.78 233.98 T +(olerance) 118.68 233.98 T +72 378/G94311 FmPA +0 0 612 792 C +0 0 0 1 0 0 0 1 K +[/CropBox[0 0 FmDC 612 792 FmDC FmBx]/PAGE FmPD +[/Dest/P.61/DEST FmPD2 +[/Title(A)/Rect[171 54 549 639]/ARTICLE FmPD2 +FMENDPAGE +%%EndPage: "61" 61 +%%Page: "62" 62 +612 792 0 FMBEGINPAGE +0 FrameSetSepColors +FrameNoSep +0 0 0 1 0 0 0 1 K +180 745.99 540 756 R +7 X +V +1 12 Q +0 X +(62) 180 748 T +180 32.69 540 42.7 R +7 X +V +0 X +( MPI Primer / Developing with LAM) 180 34.7 T +180 738 540 738 2 L +7 X +V +1 H +2 Z +0 X +N +540 54 180 54 2 L +7 X +V +0 X +N +180 72 540 630 R +7 X +V +0 F +0 X +(\050LAM_SIGSHRINK\051 and tak) 180 622 T +(e further action particular to the application.) 322.52 622 T +(See) 180 608 T +2 F +(Signal Handling) 200.33 608 T +0 F +(.) 279.34 608 T +(Hands-on control and monitoring are a hallmark of LAM. The simplest) 180 586 T +180 730/G187577 FmPA +(command,) 180 572 T +2 F +(tping) 232.45 572 T +0 F +(,) 257.12 572 T +(is) 262.23 572 T +(a) 272.36 572 T +(con\336dence) 279.8 572 T +(b) 333.9 572 T +(uilding) 339.66 572 T +(v) 375.79 572 T +(alidity) 381.49 572 T +(check) 414.27 572 T +(that) 444.38 572 T +(be) 464.49 572 T +(gins) 475.64 572 T +(to) 497.76 572 T +(dispel) 509.21 572 T +(the black box nature of parallel en) 180 558 T +(vironments. tping echoes a message to a) 343.48 558 T +(destination node, or a multicast destination. It is time to restart the session) 180 544 T +(if this command hangs.) 180 530 T +3 F +(% tping n0) 180 508 T +180 652/G187578 FmPA +(% tping N) 180 494 T +0 F +(T) 180 472 T +(o) 186.37 472 T +(terminate) 195.37 472 T +(a) 243.69 472 T +(LAM) 252.02 472 T +(session,) 281.68 472 T +(use) 322.35 472 T +(the) 341.34 472 T +2 F +(wipe) 359 472 T +0 F +(tool.) 384.67 472 T +(T) 409.34 472 T +(o) 415.71 472 T +(restart) 424.71 472 T +(LAM) 457.7 472 T +(after) 487.36 472 T +(a) 512.34 472 T +(sys-) 520.67 472 T +180 616/G187579 FmPA +(tem f) 180 458 T +(ailure, e) 204.88 458 T +(x) 243.35 458 T +(ecute wipe follo) 249.17 458 T +(wed by lamboot.) 326.18 458 T +3 F +(% wipe -v) 180 436 T +0 F +() 252 436 T +180 580/G93684 FmPA +63 566.99 180 593.99 C +0 0 0 1 0 0 0 1 K +63 566.99 180 593.99 R +7 X +V +72 575.99 162 593.99 R +V +4 12 Q +0 X +(tping) 135.32 585.99 T +72 730/G183312 FmPA +0 0 612 792 C +63 452.99 180 479.99 C +0 0 0 1 0 0 0 1 K +63 452.99 180 479.99 R +7 X +V +72 461.99 162 479.99 R +V +4 12 Q +0 X +(wipe) 138 471.99 T +72 616/G183423 FmPA +0 0 612 792 C +0 0 0 1 0 0 0 1 K +[/CropBox[0 0 FmDC 612 792 FmDC FmBx]/PAGE FmPD +[/Dest/P.62/DEST FmPD2 +[/Title(A)/Rect[171 63 549 639]/ARTICLE FmPD2 +FMENDPAGE +%%EndPage: "62" 62 +%%Page: "63" 63 +612 792 0 FMBEGINPAGE +0 FrameSetSepColors +FrameNoSep +0 0 0 1 0 0 0 1 K +180 745.99 540 756 R +7 X +V +1 12 Q +0 X +(63) 526.66 748 T +180 32.69 540 42.7 R +7 X +V +0 X +( MPI Primer / Developing with LAM) 180 34.7 T +180 738 540 738 2 L +7 X +V +1 H +2 Z +0 X +N +540 54 180 54 2 L +7 X +V +0 X +N +180 72 540 630 R +7 X +V +3 F +0 X +(mpirun) 180 622 T +0 F +(Run an MPI application.) 324 622 T +180 766/G93688 FmPA +3 F +(lamclean) 180 608 T +0 F +(T) 324 608 T +(erminate and clean up all LAM processes.) 330.49 608 T +180 575.99 540 586 C +0 0 0 1 0 0 0 1 K +180 575.99 540 586 R +7 X +V +180 584.99 649.01 584.99 2 L +V +1 H +2 Z +0 X +N +0 0 612 792 C +0 0 0 1 0 0 0 1 K +0 12 Q +0 X +(An) 180 567.99 T +(MPI) 196.95 567.99 T +(application) 220.57 567.99 T +(is) 276.18 567.99 T +(started) 286.47 567.99 T +(with) 320.75 567.99 T +(one) 344.37 567.99 T +(in) 363.98 567.99 T +(v) 372.84 567.99 T +(ocation) 378.6 567.99 T +(of) 416.21 567.99 T +2 F +(mpirun) 428.49 567.99 T +0 F +(.) 463.16 567.99 T +(The) 468.45 567.99 T +(programs,) 489.39 567.99 T +180 712/G93694 FmPA +(number of processes and computing resources are speci\336ed in an applica-) 180 553.99 T +(tion) 180 539.99 T +(schema,) 201.58 539.99 T +(a) 243.48 539.99 T +(separate) 251.72 539.99 T +(\336le) 293.94 539.99 T +(whose) 312.19 539.99 T +(name) 345.76 539.99 T +(is) 374.66 539.99 T +(gi) 385.58 539.99 T +(v) 394.61 539.99 T +(en) 400.43 539.99 T +(to) 414.67 539.99 T +(mpirun.) 426.92 539.99 T +(Simple) 467.49 539.99 T +(SPMD) 504.41 539.99 T +(applications can be started from the mpirun command line. MPI processes) 180 525.99 T +(locate each other through the abstract concepts of communicator and pro-) 180 511.99 T +(cess rank. It is mpirun that pro) 180 497.99 T +(vides the hard information on nodeids and) 326.14 497.99 T +(process) 180 483.99 T +(IDs) 218.38 483.99 T +(to) 238.1 483.99 T +(b) 249.82 483.99 T +(uild) 255.58 483.99 T +(the) 276.64 483.99 T +(pre-de\336ned) 293.7 483.99 T +(MPI_COMM_W) 350.73 483.99 T +(ORLD) 433.28 483.99 T +(communicator) 468.34 483.99 T +(.) 537 483.99 T +(% mpirun -v my_app_schema) 180 461.99 T +180 606/G94109 FmPA +(An application schema contains one line for e) 180 439.99 T +(v) 399.32 439.99 T +(ery dif) 405.14 439.99 T +(ferent program that) 436.5 439.99 T +180 584/G94110 FmPA +(constitutes) 180 425.99 T +(the) 233.63 425.99 T +(application.) 250.58 425.99 T +(F) 309.2 425.99 T +(or) 315.69 425.99 T +(each) 327.98 425.99 T +(program,) 352.25 425.99 T +(three) 398.2 425.99 T +(important) 424.48 425.99 T +(directions) 473.44 425.99 T +(are) 523.06 425.99 T +(gi) 180 411.99 T +(v) 189.04 411.99 T +(en, using options that duplicate the syntax of the mpirun command line:) 194.86 411.99 T +(-s ) 180 389.99 T +(the) 270 389.99 T +(node) 287.51 389.99 T +(in) 313.67 389.99 T +(whose) 325.85 389.99 T +(\336le) 359.35 389.99 T +(space) 377.53 389.99 T +(the) 407.03 389.99 T +(e) 424.53 389.99 T +(x) 429.68 389.99 T +(ecutable) 435.5 389.99 T +(program) 478.33 389.99 T +(\336le) 521.82 389.99 T +180 534/G94117 FmPA +(can be found - W) 270 375.99 T +(ithout this option, LAM is directed to) 352.82 375.99 T +(look) 270 361.99 T +(for) 294.06 361.99 T +(programs) 310.77 361.99 T +(on) 358.82 361.99 T +(the) 373.54 361.99 T +(same) 390.93 361.99 T +(node) 418.31 361.99 T +(where) 444.36 361.99 T +(the) 476.4 361.99 T +(y) 490.89 361.99 T +(will) 499.61 361.99 T +(run.) 521 361.99 T +() 180 345.99 T +(the nodes on which the program will run - W) 270 345.99 T +(ithout this) 485.82 345.99 T +180 490/G94121 FmPA +(option, LAM will use all the nodes.) 270 331.99 T +(-c <#>) 180 315.99 T +(the) 270 315.99 T +(number) 287.25 315.99 T +(of) 326.5 315.99 T +(processes) 339.08 315.99 T +(to) 387.66 315.99 T +(create) 399.58 315.99 T +(across) 430.81 315.99 T +(the) 463.39 315.99 T +(gi) 480.64 315.99 T +(v) 489.68 315.99 T +(en) 495.5 315.99 T +(nodes) 509.42 315.99 T +180 460/G94122 FmPA +(- W) 270 301.99 T +(ithout this option, LAM will create one process on) 287.84 301.99 T +(each of the gi) 270 287.99 T +(v) 334.68 287.99 T +(en nodes.) 340.5 287.99 T +(These) 180 265.99 T +(same) 211.17 265.99 T +(options) 238.35 265.99 T +(are) 276.2 265.99 T +(used) 293.37 265.99 T +(on) 317.89 265.99 T +(the) 332.4 265.99 T +(mpirun) 349.58 265.99 T +(command) 386.77 265.99 T +(line) 436.61 265.99 T +(if) 457.13 265.99 T +(the) 466.98 265.99 T +(application) 484.16 265.99 T +180 410/G94142 FmPA +(consists) 180 251.99 T +(of) 220.65 251.99 T +(only) 233.29 251.99 T +(one) 257.28 251.99 T +(program.) 277.26 251.99 T +(The) 323.56 251.99 T +(presence) 344.87 251.99 T +(of) 389.49 251.99 T +(one) 402.13 251.99 T +(or) 422.11 251.99 T +(more) 434.75 251.99 T +(of) 462.06 251.99 T +(these) 474.7 251.99 T +(options) 502.01 251.99 T +(tells mpirun that the \336lename is an e) 180 237.99 T +(x) 354.14 237.99 T +(ecutable program. Otherwise the \336le-) 359.96 237.99 T +(name is assumed to be an application schema and is parsed accordingly) 180 223.99 T +(.) 522.16 223.99 T +3 F +(#) 180 201.99 T +180 346/G94143 FmPA +(# sample application schema) 180 187.99 T +(#) 180 173.99 T +(master h) 180 159.99 T +(slave N -s h) 180 145.99 T +0 F +(The abo) 180 123.99 T +(v) 218.81 123.99 T +(e e) 224.63 123.99 T +(xample runs the \324master\325 on the local node \050the same node) 238.1 123.99 T +180 268/G94156 FmPA +(where mpirun is in) 180 109.99 T +(v) 269.84 109.99 T +(ok) 275.6 109.99 T +(ed\051 and \324sla) 287.48 109.99 T +(v) 343.22 109.99 T +(e\325 on all the nodes, after taking the) 349.04 109.99 T +(\324sla) 180 95.99 T +(v) 197.09 95.99 T +(e\325) 202.91 95.99 T +(e) 215.12 95.99 T +(x) 220.27 95.99 T +(ecutable) 226.09 95.99 T +(\336le) 268.97 95.99 T +(from) 287.2 95.99 T +(the) 313.42 95.99 T +(local) 330.98 95.99 T +(node) 357.2 95.99 T +(and) 383.42 95.99 T +(shipping) 403.64 95.99 T +(it) 447.87 95.99 T +(to) 457.44 95.99 T +(all) 469.67 95.99 T +(nodes.) 484.56 95.99 T +(The) 518.45 95.99 T +63 602.99 180 629.99 C +0 0 0 1 0 0 0 1 K +63 602.99 180 629.99 R +7 X +V +72 602.99 162 629.99 R +3 X +V +0.5 H +0 Z +N +0 0 612 792 C +63 517.02 180 575.98 C +0 0 0 1 0 0 0 1 K +63 517.02 180 575.98 R +7 X +V +72 521.98 162 575.98 R +V +4 14 Q +0 X +(Executing) 72 566.65 T +(MPI) 134.78 566.65 T +72 711/G93692 FmPA +(Pr) 103.16 550.65 T +(ograms) 117.68 550.65 T +4 12 Q +(mpirun) 123.32 527.98 T +72 672/G93693 FmPA +0 0 612 792 C +63 414 180 447.98 C +0 0 0 1 0 0 0 1 K +63 414 180 447.98 R +7 X +V +72 411.98 162 447.98 R +V +4 12 Q +0 X +(A) 102.29 439.98 T +(pplication) 110.65 439.98 T +72 584/G94136 FmPA +(Schema) 122 425.98 T +0 0 612 792 C +0 0 0 1 0 0 0 1 K +[/CropBox[0 0 FmDC 612 792 FmDC FmBx]/PAGE FmPD +[/Dest/P.63/DEST FmPD2 +[/Title(A)/Rect[171 63 549 639]/ARTICLE FmPD2 +FMENDPAGE +%%EndPage: "63" 63 +%%Page: "64" 64 +612 792 0 FMBEGINPAGE +0 FrameSetSepColors +FrameNoSep +0 0 0 1 0 0 0 1 K +180 745.99 540 756 R +7 X +V +1 12 Q +0 X +(64) 180 748 T +180 32.69 540 42.7 R +7 X +V +0 X +( MPI Primer / Developing with LAM) 180 34.7 T +180 738 540 738 2 L +7 X +V +1 H +2 Z +0 X +N +540 54 180 54 2 L +7 X +V +0 X +N +180 72 540 630 R +7 X +V +0 F +0 X +(shipped program is stored in the /tmp directory and deleted when the pro-) 180 622 T +(cess dies.) 180 608 T +(LAM searches for e) 180 586 T +(x) 275.45 586 T +(ecutables \336les on the source node, as modi\336ed by the) 281.27 586 T +180 730/G94164 FmPA +(-s) 180 572 T +(option,) 191.63 572 T +(by) 228.27 572 T +(using) 243.24 572 T +(the) 272.22 572 T +(list) 289.85 572 T +(of) 307.5 572 T +(directories) 320.46 572 T +(de\336ned) 374.08 572 T +(by) 412.38 572 T +(the) 427.35 572 T +(P) 444.98 572 T +(A) 450.55 572 T +(TH) 457.88 572 T +(en) 476.85 572 T +(vironment) 487.7 572 T +(v) 180 558 T +(ariable. The treatment of a \324.) 185.7 558 T +(\325 path is special. On the local node in) 321.82 558 T +(v) 499.64 558 T +(oking) 505.4 558 T +(mpirun, \324.) 180 544 T +(\325 is the w) 226.82 544 T +(orking directory of mpirun. On remote nodes, it is the) 271.03 544 T +(user\325) 180 530 T +(s home directory) 203.33 530 T +(.) 283.2 530 T +(Other mpirun options enable po) 180 508 T +(werful functionality within LAM\325) 332.35 508 T +(s MPI) 494.68 508 T +180 652/G94201 FmPA +(library) 180 494 T +(.) 211.21 494 T +3 F +(-c2c) 180 472 T +0 F +(Bypass the LAM daemon for MPI communication. Use) 270 472 T +180 616/G94209 FmPA +(an optimal protocol to directly connect MPI processes.) 270 458 T +(The) 180 436 T +(\322client) 201.31 436 T +(to) 235.95 436 T +(client\323) 247.93 436 T +(feature) 282.57 436 T +(of) 318.54 436 T +(the) 331.18 436 T +(MPI) 348.49 436 T +(library) 372.48 436 T +(deri) 407.12 436 T +(v) 425.48 436 T +(es) 431.3 436 T +(the) 443.94 436 T +(most) 461.25 436 T +(speed) 487.24 436 T +0 9.6 Q +(1) 514.57 440.8 T +0 12 Q +(out) 522.02 436 T +180 580/G94210 FmPA +(of the underlying hardw) 180 422 T +(are at the e) 295.52 422 T +(xpense of monitoring and control. Mes-) 347.65 422 T +(sages that ha) 180 408 T +(v) 241.08 408 T +(e been deli) 246.9 408 T +(v) 298.58 408 T +(ered b) 304.4 408 T +(ut not recei) 333.82 408 T +(v) 387.5 408 T +(ed are b) 393.32 408 T +(uf) 431.06 408 T +(fered with the) 440.76 408 T +(recei) 180 394 T +(v) 203.02 394 T +(er) 208.84 394 T +(. It is intended that applications w) 217.5 394 T +(ould be deb) 379.7 394 T +(ugged \336rst with the) 435.46 394 T +(daemon and then run in production using direct communication) 180 380 T +0 9.6 Q +(2) 485.3 384.8 T +0 12 Q +(.) 490.1 380 T +3 F +(-nger) 180 358 T +0 F +(Disable GER protocol that protects message en) 270 358 T +(v) 496.15 358 T +(elope) 501.97 358 T +180 502/G94202 FmPA +(queues. Do not detect and report resource o) 270 344 T +(v) 478.43 344 T +(er\337o) 484.25 344 T +(w) 505.94 344 T +(errors.) 270 330 T +(The \322Guaranteed En) 180 308 T +(v) 278.15 308 T +(elope Resources\323 protocol pro) 283.97 308 T +(vides the most rob) 429.42 308 T +(ust) 517.51 308 T +180 452/G94226 FmPA +(MPI) 180 294 T +(message) 204.19 294 T +(deli) 247.71 294 T +(v) 265.41 294 T +(ery) 271.23 294 T +(system.) 289.41 294 T +(It) 328.6 294 T +(protects) 338.79 294 T +(communication) 379.64 294 T +(between) 457.16 294 T +(an) 500 294 T +(y) 511.15 294 T +(pro-) 520.01 294 T +(cess pair from interference from a third process. It pre) 180 280 T +(v) 438.95 280 T +(ents the posting of) 444.77 280 T +(send) 180 266 T +(operations) 204.88 266 T +(that) 257.76 266 T +(may) 278.64 266 T +(not) 302.19 266 T +(be) 320.4 266 T +(deli) 334.62 266 T +(v) 352.32 266 T +(ered) 358.14 266 T +(to) 381.67 266 T +(the) 393.89 266 T +(recei) 411.44 266 T +(v) 434.45 266 T +(er) 440.27 266 T +(due) 452.48 266 T +(to) 472.69 266 T +(lack) 484.91 266 T +(of) 507.79 266 T +(sys-) 520.67 266 T +(tem resources \050en) 180 252 T +(v) 264.16 252 T +(elope resources\051 and thus fully respects the spirit of) 269.98 252 T +(MPI\325) 180 238 T +(s guarantee of message progress, which in turn reduces confusion in) 204.67 238 T +(deb) 180 224 T +(ugging ill-beha) 197.09 224 T +(v) 269.84 224 T +(ed applications.) 275.66 224 T +(In addition to protecting process-pair en) 180 202 T +(v) 371.82 202 T +(elope queues, GER publishes the) 377.64 202 T +180 346/G94260 FmPA +(size) 180 188 T +(of) 201.17 188 T +(the) 213.68 188 T +(queue) 230.85 188 T +(so) 262.01 188 T +(that) 275.19 188 T +(programmers) 295.7 188 T +(can) 362.2 188 T +(kno) 381.36 188 T +(w) 399.06 188 T +(ho) 410.23 188 T +(w) 421.93 188 T +(f) 433.11 188 T +(ar) 436.98 188 T +(the) 448.82 188 T +(y) 463.3 188 T +(can) 471.81 188 T +(stress) 490.98 188 T +(this) 520.15 188 T +(resource before deadlocking or f) 180 174 T +(ailing. GER \336lls a serious portability hole) 335.82 174 T +(in) 180 160 T +(MPI) 191.84 160 T +(-) 215.67 160 T +(kno) 222.17 160 T +(wing) 239.87 160 T +(the) 266.37 160 T +(resource) 283.54 160 T +(limitations) 326.68 160 T +(directly) 380.53 160 T +(associated) 419.69 160 T +(with) 471.51 160 T +(message-) 495.35 160 T +(passing. The minimum GER \336gure for LAM is con\336gured when LAM is) 180 146 T +180 120 540 134.98 C +0 0 0 1 0 0 0 1 K +180 120 540 134.98 R +7 X +V +189 132.96 333 132.96 2 L +V +0.5 H +2 Z +0 X +N +0 0 612 792 C +0 0 0 1 0 0 0 1 K +0 10 Q +0 X +(1. The speed is constrained by the quality of the c2c module within the MPI) 198 113.33 T +180 257/G94212 FmPA +(library) 198 101.33 T +(. Ev) 224.01 101.33 T +(ery machine can bene\336t from a customized solution.) 239.97 101.33 T +(2.) 198 89.33 T +(Limits) 207.91 89.33 T +(on) 236.45 89.33 T +(underlying) 248.86 89.33 T +(system) 294.6 89.33 T +(resources) 324.8 89.33 T +(\050lik) 364.97 89.33 T +(e) 378.76 89.33 T +(\336le) 385.61 89.33 T +(descriptors) 400.81 89.33 T +(for) 447.1 89.33 T +(a) 461.17 89.33 T +(sock) 468.03 89.33 T +(et) 486.26 89.33 T +(imple-) 495.89 89.33 T +180 233/G94221 FmPA +(mentation\051 may constrain the scalability of applications using -c2c.) 198 77.33 T +63 560.01 180 593.99 C +0 0 0 1 0 0 0 1 K +63 560.01 180 593.99 R +7 X +V +72 557.99 162 593.99 R +V +4 12 Q +0 X +(Locating) 116.66 585.99 T +72 730/G94182 FmPA +(Executable Files) 78.34 571.99 T +0 0 612 792 C +63 446.01 180 479.99 C +0 0 0 1 0 0 0 1 K +63 446.01 180 479.99 R +7 X +V +72 443.99 162 479.99 R +V +4 12 Q +0 X +(Dir) 130.24 471.99 T +(ect) 147.35 471.99 T +72 616/G94231 FmPA +(Communication) 79.33 457.99 T +0 0 612 792 C +63 319 180 365.99 C +0 0 0 1 0 0 0 1 K +63 319 180 365.99 R +7 X +V +72 320.99 162 365.99 R +V +4 12 Q +0 X +(Guaranteed) 100.67 357.99 T +72 502/G94242 FmPA +(En) 115.26 343.99 T +(v) 129.46 343.99 T +(elope) 135.34 343.99 T +(Resour) 110.23 329.99 T +(ces) 146.68 329.99 T +0 0 612 792 C +0 0 0 1 0 0 0 1 K +[/CropBox[0 0 FmDC 612 792 FmDC FmBx]/PAGE FmPD +[/Dest/P.64/DEST FmPD2 +[/Title(A)/Rect[171 63 549 639]/ARTICLE FmPD2 +FMENDPAGE +%%EndPage: "64" 64 +%%Page: "65" 65 +612 792 0 FMBEGINPAGE +0 FrameSetSepColors +FrameNoSep +0 0 0 1 0 0 0 1 K +180 745.99 540 756 R +7 X +V +1 12 Q +0 X +(65) 526.66 748 T +180 32.69 540 42.7 R +7 X +V +0 X +( MPI Primer / Developing with LAM) 180 34.7 T +180 738 540 738 2 L +7 X +V +1 H +2 Z +0 X +N +540 54 180 54 2 L +7 X +V +0 X +N +180 72 540 630 R +7 X +V +0 F +0 X +(installed. See the manual page on MPI as well as the paper) 180 622 T +(,) 461.47 622 T +2 F +(Rob) 467.47 622 T +(ust MPI) 486.56 622 T +(Messa) 180 608 T +(g) 210.54 608 T +(e Delivery Thr) 216.42 608 T +(ough Guar) 285.86 608 T +(anteed Resour) 338.02 608 T +(ces) 406.56 608 T +0 F +( for a more detailed dis-) 421.88 608 T +(cussion.) 180 594 T +3 F +(-ton, -toff) 180 572 T +0 F +(Enable) 270 572 T +(trace) 306.16 572 T +(collection.) 332.3 572 T +(T) 385.46 572 T +(race) 392.38 572 T +(collection) 415.19 572 T +(be) 465.35 572 T +(gins) 476.5 572 T +(immedi-) 499.33 572 T +180 716/G94203 FmPA +(ately after MPI_Init\050\051 with -ton, b) 270 558 T +(ut is deferred until) 431.74 558 T +(MPIL_T) 270 544 T +(race_on\050\051 with -tof) 311.58 544 T +(f.) 401.92 544 T +(The MPI library can generate e) 180 522 T +(x) 329.44 522 T +(ecution traces detailing message-passing) 335.26 522 T +180 666/G94265 FmPA +(acti) 180 508 T +(vity) 197.03 508 T +(. The data can be used for performance tuning or adv) 214.92 508 T +(anced deb) 468.88 508 T +(ug-) 516.95 508 T +(ging. Actual trace generation is controlled by tw) 180 494 T +(o switches, both of which) 411.84 494 T +(must) 180 480 T +(be) 205.83 480 T +(in) 219.65 480 T +(the) 231.47 480 T +(on) 248.63 480 T +(position) 263.12 480 T +(to) 304.28 480 T +(enable) 316.11 480 T +(trace) 349.92 480 T +(generation.) 375.72 480 T +(Both) 431.86 480 T +(the) 457.69 480 T +(-ton) 474.85 480 T +(and) 496.67 480 T +(-tof) 516.49 480 T +(f) 533.51 480 T +(options turn the \336rst switch on for the entire run of the application. W) 180 466 T +(ith) 514.15 466 T +(-ton, the second switch be) 180 452 T +(gins in the on position after the application calls) 304.8 452 T +(MPI_Init\050\051. W) 180 438 T +(ith -tof) 248.84 438 T +(f, the second switch be) 281.54 438 T +(gins in the of) 391.01 438 T +(f position and no) 453.71 438 T +(traces are generated.) 180 424 T +(The second switch is toggled with runtime functions. See) 180 402 T +2 F +(Deb) 457.98 402 T +(ug) 477.73 402 T +(ging and) 489.61 402 T +180 546/G94299 FmPA +(T) 180 388 T +(r) 186.01 388 T +(acing) 190.5 388 T +0 F +(. The purpose of be) 217.16 388 T +(ginning with the second switch of) 309.96 388 T +(f is to limit) 471.98 388 T +(tracing to interesting phases of the computation. The purpose of the \336rst) 180 374 T +(switch is to allo) 180 360 T +(w an application to be traced without recompilation and to) 255.37 360 T +(allo) 180 346 T +(w) 197.7 346 T +(an) 209 346 T +(application) 222.96 346 T +(littered) 278.93 346 T +(with) 315.56 346 T +(trace) 339.54 346 T +(toggling) 365.49 346 T +(functions) 408.13 346 T +(to) 455.43 346 T +(disable) 467.41 346 T +(tracing) 504.04 346 T +(altogether and incur minimal o) 180 332 T +(v) 327.8 332 T +(erhead.) 333.62 332 T +(See) 180 310 T +2 F +(Collecting T) 200.33 310 T +(r) 259.34 310 T +(ace Data) 263.83 310 T +0 F +( for ho) 307.49 310 T +(w to assemble a single trace \336le after run-) 339.18 310 T +180 454/G94298 FmPA +(ning a trace enabled application.) 180 296 T +(An application that goes a) 180 274 T +(wry may lea) 305.14 274 T +(v) 364.21 274 T +(e man) 370.03 274 T +(y processes running or) 398.84 274 T +180 418/G94268 FmPA +(block) 180 260 T +(ed, man) 206.54 260 T +(y messages unconsumed, and man) 244.36 260 T +(y resources allocated) 409.15 260 T +(throughout) 180 246 T +(the) 235.1 246 T +(multicomputer) 252.18 246 T +(.) 322.19 246 T +(Although) 327.62 246 T +(there) 375.38 246 T +(are) 401.8 246 T +(user) 418.88 246 T +(interf) 441.3 246 T +(ace) 467.17 246 T +(commands) 485.58 246 T +(to remo) 180 232 T +(v) 216.82 232 T +(e a user presence from e) 222.64 232 T +(v) 338.62 232 T +(ery indi) 344.44 232 T +(vidual subsystem, taking care to) 381.13 232 T +(in) 180 218 T +(v) 188.86 218 T +(ok) 194.62 218 T +(e them all can become tedious. The) 206.5 218 T +2 F +(lamclean) 379.13 218 T +0 F +( command can be used) 423.12 218 T +(when no user presence \050processes, message, allocations, re) 180 204 T +(gistrations\051 is) 461.74 204 T +(desired) 180 190 T +(on) 217.58 190 T +(the) 232.51 190 T +(multicomputer) 250.1 190 T +(.) 320.11 190 T +(The) 326.03 190 T +(user) 347.62 190 T +(essentially) 370.54 190 T +(w) 424.12 190 T +(ants) 432.67 190 T +(to) 454.93 190 T +(start) 467.19 190 T +(o) 490.78 190 T +(v) 496.6 190 T +(er) 502.42 190 T +(with-) 514.67 190 T +(out the longer delay of restarting the LAM session.) 180 176 T +3 F +(% lamclean) 180 154 T +180 298/G94269 FmPA +0 F +(lamclean cannot be used when some or all nodes are not reachable due to) 180 132 T +180 276/G94266 FmPA +(catastrophic f) 180 118 T +(ailure or complete b) 244.86 118 T +(uf) 340.93 118 T +(fer o) 350.63 118 T +(v) 372.77 118 T +(er\337o) 378.59 118 T +(w that causes link jamming.) 400.28 118 T +(If) 180 104 T +(lamclean) 190.73 104 T +(f) 236.79 104 T +(ails) 240.66 104 T +(to) 260.07 104 T +(return,) 272.14 104 T +(it) 306.54 104 T +(is) 315.95 104 T +(time) 326.69 104 T +(to) 350.76 104 T +(use) 362.83 104 T +(the) 381.57 104 T +2 F +(wipe) 398.97 104 T +0 F +(tool.) 424.37 104 T +(See) 448.78 104 T +2 F +(Starting) 468.85 104 T +(LAM) 510.26 104 T +0 F +(.) 534.26 104 T +(It) 180 90 T +(may) 189.59 90 T +(be) 212.51 90 T +(reassuring) 226.09 90 T +(to) 277.66 90 T +(use) 289.25 90 T +(the) 307.5 90 T +2 F +(mpitask) 324.42 90 T +0 F +(and) 364.01 90 T +2 F +(mpimsg) 383.59 90 T +0 F +(commands) 423.17 90 T +(to) 477.42 90 T +(v) 489.02 90 T +(erify) 494.83 90 T +(that) 519.75 90 T +(lamclean did the job) 180 76 T +(.) 277.18 76 T +63 546.01 180 579.99 C +0 0 0 1 0 0 0 1 K +63 546.01 180 579.99 R +7 X +V +72 543.99 162 579.99 R +V +4 12 Q +0 X +(T) 77.9 571.99 T +(race Collection) 85.02 571.99 T +72 716/G94250 FmPA +0 0 612 792 C +63 248.01 180 281.99 C +0 0 0 1 0 0 0 1 K +63 248.01 180 281.99 R +7 X +V +72 245.99 162 281.99 R +V +4 12 Q +0 X +(lamclean) 116 273.99 T +72 418/G94277 FmPA +0 0 612 792 C +0 0 0 1 0 0 0 1 K +[/CropBox[0 0 FmDC 612 792 FmDC FmBx]/PAGE FmPD +[/Dest/P.65/DEST FmPD2 +[/Title(A)/Rect[171 63 549 639]/ARTICLE FmPD2 +FMENDPAGE +%%EndPage: "65" 65 +%%Page: "66" 66 +612 792 0 FMBEGINPAGE +0 FrameSetSepColors +FrameNoSep +0 0 0 1 0 0 0 1 K +180 745.99 540 756 R +7 X +V +1 12 Q +0 X +(66) 180 748 T +180 32.69 540 42.7 R +7 X +V +0 X +( MPI Primer / Developing with LAM) 180 34.7 T +180 738 540 738 2 L +7 X +V +1 H +2 Z +0 X +N +540 54 180 54 2 L +7 X +V +0 X +N +180 72 540 630 R +7 X +V +3 F +0 X +(mpitask) 180 622 T +0 F +(Print status of MPI processes.) 342 622 T +180 766/G94173 FmPA +3 F +(doom) 180 608 T +0 F +(Send a signal to a process.) 342 608 T +180 575.99 540 586 C +0 0 0 1 0 0 0 1 K +180 575.99 540 586 R +7 X +V +180 584.99 649.01 584.99 2 L +V +1 H +2 Z +0 X +N +0 0 612 792 C +0 0 0 1 0 0 0 1 K +0 12 Q +0 X +(Monitoring a process\325) 180 567.99 T +(s e) 285.32 567.99 T +(x) 298.14 567.99 T +(ecution state is a major aid in deb) 303.96 567.99 T +(ugging multi-) 464.7 567.99 T +180 712/G187590 FmPA +(computer applications. This feature helps deb) 180 553.99 T +(ug process synchronization) 398.39 553.99 T +(and data transfer) 180 539.99 T +(, the added dimension of parallel programming. The) 259.49 539.99 T +2 F +(mpi-) 512.78 539.99 T +(task) 180 525.99 T +0 F +(command) 201.76 525.99 T +(prints) 251.52 525.99 T +(information) 281.28 525.99 T +(on) 340.38 525.99 T +(MPI) 354.81 525.99 T +(processes.) 378.57 525.99 T +(W) 429.99 525.99 T +(ith) 440.83 525.99 T +(no) 455.93 525.99 T +(ar) 470.36 525.99 T +(guments,) 479.47 525.99 T +(all) 525.57 525.99 T +(MPI processes on all nodes are reported. The report can be constrained by) 180 511.99 T +(specifying nodes and LAM processes.) 180 497.99 T +(Consider) 180 475.99 T +(the) 225.47 475.99 T +(follo) 242.27 475.99 T +(wing) 264.64 475.99 T +(e) 290.78 475.99 T +(xample) 295.93 475.99 T +(code,) 333.39 475.99 T +(whose) 361.19 475.99 T +(only) 393.98 475.99 T +(purpose) 417.46 475.99 T +(is) 457.59 475.99 T +(to) 467.73 475.99 T +(demonstrate) 479.21 475.99 T +180 620/G94380 FmPA +(LAM\325) 180 461.99 T +(s monitoring capabilities:) 210 461.99 T +3 10 Q +(/*) 180 441.33 T +180 585/G94385 FmPA +( * Create an interesting report for mpitask and mpimsg.) 180 430.33 T +( */) 180 419.33 T +(#include ) 180 408.33 T +(#define ROWS) 180 395.33 T +(10) 324 395.33 T +180 539/G94387 FmPA +(#define COLS) 180 384.33 T +(20) 324 384.33 T +(struct cell {) 180 371.33 T +180 515/G94388 FmPA +(int) 216 360.33 T +(code;) 324 360.33 T +(double) 216 349.33 T +(coords[3];) 324 349.33 T +(};) 180 338.33 T +(static struct cell) 180 325.33 T +(mat[ROWS][COLS];) 324 325.33 T +180 469/G94389 FmPA +(static int) 180 314.33 T +(blocklengths[3] = {1, 3, 1};) 324 314.33 T +(static MPI_Datatype) 180 303.33 T +(types[3] =) 324 303.33 T +({MPI_INT, MPI_DOUBLE, MPI_UB};) 252 292.33 T +(main\050argc, argv\051) 180 279.33 T +180 423/G94391 FmPA +(int) 180 266.33 T +(argc;) 324 266.33 T +180 410/G94392 FmPA +(char) 180 255.33 T +(*argv[];) 324 255.33 T +({) 180 242.33 T +180 386/G94393 FmPA +(int) 216 231.33 T +(rank, size;) 324 231.33 T +(MPI_Comm) 216 220.33 T +(newcomm;) 324 220.33 T +(MPI_Datatype) 216 209.33 T +(dt_cell, dt_mat;) 324 209.33 T +(MPI_Status) 216 198.33 T +(status;) 324 198.33 T +(MPI_Aint) 216 185.33 T +(base;) 324 185.33 T +180 329/G94394 FmPA +(MPI_Aint) 216 174.33 T +(displacements[3];) 324 174.33 T +(int) 216 163.33 T +(i, j;) 324 163.33 T +(/*) 180 150.33 T +180 294/G94395 FmPA +( * Initialize the matrix.) 180 139.33 T +( */) 180 128.33 T +(for \050i = 0; i < ROWS; ++i\051 {) 216 117.33 T +(for \050j = 0; j < COLS; ++j\051 {) 252 104.33 T +180 248/G94412 FmPA +(mat[i][j].code = i;) 288 93.33 T +(mat[i][j].coords[0] = \050double\051 i;) 288 82.33 T +63 603 180 629.99 C +0 0 0 1 0 0 0 1 K +63 603 180 629.99 R +7 X +V +72 602.99 162 629.99 R +3 X +V +0.5 H +0 Z +N +0 0 612 792 C +63 494.98 180 575.98 C +0 0 0 1 0 0 0 1 K +63 494.98 180 575.98 R +7 X +V +72 503.98 162 575.98 R +V +4 14 Q +0 X +(Pr) 117.16 566.65 T +(ocess) 131.68 566.65 T +72 711/G183320 FmPA +(Monitoring) 93.55 550.65 T +(and Contr) 89.52 534.65 T +(ol) 151.11 534.65 T +4 12 Q +(mpitask) 120.66 511.98 T +72 656/G187900 FmPA +0 0 612 792 C +0 0 0 1 0 0 0 1 K +[/CropBox[0 0 FmDC 612 792 FmDC FmBx]/PAGE FmPD +[/Dest/P.66/DEST FmPD2 +[/Title(A)/Rect[171 63 549 639]/ARTICLE FmPD2 +FMENDPAGE +%%EndPage: "66" 66 +%%Page: "67" 67 +612 792 0 FMBEGINPAGE +0 FrameSetSepColors +FrameNoSep +0 0 0 1 0 0 0 1 K +180 745.99 540 756 R +7 X +V +1 12 Q +0 X +(67) 526.66 748 T +180 32.69 540 42.7 R +7 X +V +0 X +( MPI Primer / Developing with LAM) 180 34.7 T +180 738 540 738 2 L +7 X +V +1 H +2 Z +0 X +N +540 54 180 54 2 L +7 X +V +0 X +N +180 72 540 630 R +7 X +V +3 10 Q +0 X +(mat[i][j].coords[1] = \050double\051 j;) 288 623.33 T +(mat[i][j].coords[2] = \050double\051 i * j) 288 612.33 T +(}) 252 601.33 T +(}) 216 590.33 T +(MPI_Init\050&argc, &argv\051;) 216 577.33 T +180 721/G94417 FmPA +(/*) 180 564.33 T +180 708/G94397 FmPA +( * Create communicators for sub-groups.) 180 553.33 T +( */) 180 542.33 T +(MPI_Comm_rank\050MPI_COMM_WORLD, &rank\051;) 216 531.33 T +(MPI_Comm_split\050MPI_COMM_WORLD, rank % 3, 0, &newcomm\051;) 216 520.33 T +(/*) 180 507.33 T +180 651/G94398 FmPA +( * Build derived datatype for 2 columns of matrix.) 180 496.33 T +( */) 180 485.33 T +(MPI_Address\050&mat[0][0].code, &displacements[0]\051;) 216 474.33 T +(MPI_Address\050mat[0][0].coords, &displacements[1]\051;) 216 463.33 T +(MPI_Address\050&mat[0][1].code, &displacements[2]\051;) 216 452.33 T +(base = displacements[0];) 216 441.33 T +(for \050i = 0; i < 3; ++i\051 displacements[i] -= base;) 216 428.33 T +180 572/G94418 FmPA +(MPI_Type_struct\0503, blocklengths, displacements,) 216 415.33 T +180 559/G94399 FmPA +(types, &dt_cell\051;) 288 404.33 T +(MPI_Type_vector\050ROWS, 2, COLS, dt_cell, &dt_mat\051;) 216 393.33 T +(MPI_Type_commit\050&dt_mat\051;) 216 382.33 T +(/*) 180 369.33 T +180 513/G94400 FmPA +( * Perform a send and a receive that won\325t be satisfied.) 180 358.33 T +( */) 180 347.33 T +(MPI_Comm_size\050newcomm, &size\051;) 216 336.33 T +(MPI_Comm_rank\050newcomm, &rank\051;) 216 325.33 T +(MPI_Send\050&mat[0][0], 1, dt_mat, \050rank + 1\051 % size,) 216 312.33 T +180 456/G94401 FmPA +(0, newcomm\051;) 288 301.33 T +(MPI_Recv\050&mat[0][0], 1, dt_mat, \050rank + 1\051 % size,) 216 290.33 T +(MPI_ANY_TAG, newcomm, &status\051;) 288 279.33 T +(MPI_Finalize\050\051;) 216 266.33 T +180 410/G94402 FmPA +(return\0500\051;) 216 255.33 T +(}) 180 244.33 T +0 12 Q +(Let) 180 224 T +(the) 198.27 224 T +(program) 215.21 224 T +(be) 258.14 224 T +(run) 271.74 224 T +(with) 290.01 224 T +(a) 313.62 224 T +(suf) 321.22 224 T +(\336cient) 335.58 224 T +(number) 367.86 224 T +(of) 406.79 224 T +(processes.) 419.06 224 T +(Then) 470.32 224 T +(e) 497.25 224 T +(xamine) 502.4 224 T +180 368/G94425 FmPA +(the state of the application processes with mpitask.) 180 210 T +3 F +(% mpirun -v -c 10 demo) 180 188 T +180 332/G187598 FmPA +0 F +(In) 180 166 T +(its) 192.79 166 T +(def) 206.93 166 T +(ault) 222.13 166 T +(display) 242.93 166 T +(mode,) 280.4 166 T +(mpitask) 312.86 166 T +(prints) 353.66 166 T +(information) 383.79 166 T +(under) 443.25 166 T +(the) 473.37 166 T +(follo) 490.83 166 T +(wing) 513.2 166 T +180 310/G187599 FmPA +(headings.) 180 152 T +3 F +(TASK \050G/L\051) 180 130 T +0 F +(an identi\336cation of the process - An MPI process is nor-) 270 130 T +180 274/G94480 FmPA +(mally identi\336ed by its rank in MPI_COMM_W) 270 116 T +(ORLD,) 497.22 116 T +(also) 270 102 T +(referred) 291.87 102 T +(to) 332.37 102 T +(as) 344.24 102 T +(the) 356.77 102 T +(\322global\323) 373.97 102 T +(\050G\051) 417.16 102 T +(rank.) 436.35 102 T +(If) 463.21 102 T +(the) 473.74 102 T +(process) 490.94 102 T +(is) 529.46 102 T +(block) 270 88 T +(ed on a communicator) 296.54 88 T +(, a \324/\325 follo) 403.04 88 T +(wed by its rank) 454.07 88 T +[/CropBox[0 0 FmDC 612 792 FmDC FmBx]/PAGE FmPD +[/Dest/P.67/DEST FmPD2 +[/Title(A)/Rect[171 63 549 639]/ARTICLE FmPD2 +FMENDPAGE +%%EndPage: "67" 67 +%%Page: "68" 68 +612 792 0 FMBEGINPAGE +0 FrameSetSepColors +FrameNoSep +0 0 0 1 0 0 0 1 K +180 745.99 540 756 R +7 X +V +1 12 Q +0 X +(68) 180 748 T +180 32.69 540 42.7 R +7 X +V +0 X +( MPI Primer / Developing with LAM) 180 34.7 T +180 738 540 738 2 L +7 X +V +1 H +2 Z +0 X +N +540 54 180 54 2 L +7 X +V +0 X +N +180 72 540 630 R +7 X +V +0 F +0 X +(within that communicator is appended. This is also) 270 460 T +(referred to as the \322local\323 \050L\051 rank. The name of the pro-) 270 446 T +(gram is also printed.) 270 432 T +3 F +(FUNCTION) 180 416 T +0 F +(the MPI routine currently being e) 270 416 T +(x) 430.13 416 T +(ecuted) 435.95 416 T +180 560/G94495 FmPA +3 F +(PEER|ROOT) 180 400 T +0 F +(the source or destination process of a communication) 270 400 T +180 544/G94496 FmPA +(operation, if one is speci\336ed under FUNCTION, or the) 270 386 T +(root process of certain collecti) 270 372 T +(v) 415 372 T +(e operations) 420.82 372 T +3 F +(TAG) 180 356 T +0 F +(the message tag of a point-to-point communication) 270 356 T +180 500/G94500 FmPA +3 F +(COMM) 180 340 T +0 F +(the communicator ID being used - See) 270 340 T +2 F +(Deb) 457.63 340 T +(ug) 477.38 340 T +(ging and) 489.26 340 T +180 484/G94501 FmPA +(T) 270 326 T +(r) 276.01 326 T +(acing) 280.5 326 T +0 F +(for) 310.04 326 T +(ho) 326.9 326 T +(w) 338.6 326 T +(to) 350.14 326 T +(cross-reference) 362.35 326 T +(this) 438.51 326 T +(number) 458.72 326 T +(with) 498.25 326 T +(the) 522.46 326 T +(program\325) 270 312 T +(s data.) 313.99 312 T +3 F +(COUNT) 180 296 T +0 F +(the number of elements being transferred) 270 296 T +180 440/G94502 FmPA +3 F +(DATATYPE) 180 280 T +0 F +(the datatype ID of each element being transferred) 270 280 T +180 424/G94503 FmPA +(Depending) 180 258 T +(on) 235.61 258 T +(the) 250.56 258 T +(MPI) 268.17 258 T +(routine,) 292.46 258 T +(some) 332.41 258 T +(\336elds) 360.69 258 T +(may) 389.64 258 T +(not) 413.26 258 T +(be) 431.55 258 T +(applicable) 445.83 258 T +(and) 498.1 258 T +(will) 518.38 258 T +180 402/G94504 FmPA +(be) 180 244 T +(left) 194.25 244 T +(blank.) 213.16 244 T +(If) 245.74 244 T +(a) 256.65 244 T +(process) 264.9 244 T +(is) 303.8 244 T +(not) 314.72 244 T +(currently) 332.98 244 T +(e) 379.21 244 T +(x) 384.36 244 T +(ecuting) 390.18 244 T +(an) 428.43 244 T +(MPI) 442.67 244 T +(routine,) 466.93 244 T +(one) 506.84 244 T +(of) 527.09 244 T +(the follo) 180 230 T +(wing e) 220.03 230 T +(x) 252.18 230 T +(ecution states may be reported:) 258 230 T +3 F +() 180 208 T +0 F +(free to run on the underlying OS) 270 208 T +180 352/G94517 FmPA +3 F +() 180 192 T +0 F +(block) 270 192 T +(ed on lam_kpause\050\051) 296.54 192 T +180 336/G94518 FmPA +3 F +() 180 176 T +0 F +(stopped by the LAM signal, LAM_SIGARREST) 270 176 T +180 320/G94519 FmPA +3 F +() 180 160 T +0 F +(block) 270 160 T +(ed in a LAM routine - In general this should be a) 296.54 160 T +180 304/G94520 FmPA +(transitory state.) 270 146 T +(W) 180 124 T +(ith spa) 190.85 124 T +(wned processes and e) 222.34 124 T +(v) 325.67 124 T +(en multiple MPI applications running con-) 331.49 124 T +180 268/G94521 FmPA +(currently) 180 110 T +(under) 225.9 110 T +(the) 255.81 110 T +(same) 273.05 110 T +(LAM) 300.3 110 T +(session,) 329.54 110 T +(MPI_COMM_W) 369.79 110 T +(ORLD) 452.34 110 T +(rank) 487.59 110 T +(is) 511.49 110 T +(not) 522.08 110 T +(al) 180 96 T +(w) 188.54 96 T +(ays) 197.09 96 T +(an) 215.51 96 T +(unambiguous) 229.25 96 T +(identi\336cation) 296.34 96 T +(of) 362.1 96 T +(an) 374.52 96 T +(MPI) 388.26 96 T +(process.) 412.02 96 T +(LAM) 453.43 96 T +(has) 482.51 96 T +(an) 500.93 96 T +(alter-) 514.68 96 T +(nati) 180 82 T +(v) 197.7 82 T +(e to the global rank, called the GPS \050for Global Positioning System\051.) 203.52 82 T +162 468 558 630 C +0 0 0 1 0 0 0 1 K +162 477 558 612 R +7 X +V +3 10 Q +0 X +(% mpitask) 162 605.33 T +162 749/G94346 FmPA +(TASK \050G/L\051) 162 592.33 T +(FUNCTION) 252 592.33 T +(PEER|ROOT) 324 592.33 T +(TAG) 396 592.33 T +(COMM) 432 592.33 T +(COUNT) 468 592.33 T +(DATATYPE) 504 592.33 T +162 736/G94516 FmPA +(0/0 demo) 162 579.33 T +(Recv) 252 579.33 T +(3/1) 324 579.33 T +(ANY) 396 579.33 T +(<2>) 432 579.33 T +(1) 468 579.33 T +(<30>) 504 579.33 T +162 723/G94347 FmPA +(2/0 demo) 162 568.33 T +(Recv) 252 568.33 T +(5/1) 324 568.33 T +(ANY) 396 568.33 T +(<2>) 432 568.33 T +(1) 468 568.33 T +(<30>) 504 568.33 T +(4/1 demo) 162 557.33 T +(Recv) 252 557.33 T +(7/2) 324 557.33 T +(ANY) 396 557.33 T +(<2>) 432 557.33 T +(1) 468 557.33 T +(<30>) 504 557.33 T +(6/2 demo) 162 546.33 T +(Recv) 252 546.33 T +(9/3) 324 546.33 T +(ANY) 396 546.33 T +(<2>) 432 546.33 T +(1) 468 546.33 T +(<30>) 504 546.33 T +(8/2 demo) 162 535.33 T +(Recv) 252 535.33 T +(2/0) 324 535.33 T +(ANY) 396 535.33 T +(<2>) 432 535.33 T +(1) 468 535.33 T +(<30>) 504 535.33 T +(1/0 demo) 162 524.33 T +(Recv) 252 524.33 T +(4/1) 324 524.33 T +(ANY) 396 524.33 T +(<2>) 432 524.33 T +(1) 468 524.33 T +(<30>) 504 524.33 T +(3/1 demo) 162 513.33 T +(Recv) 252 513.33 T +(6/2) 324 513.33 T +(ANY) 396 513.33 T +(<2>) 432 513.33 T +(1) 468 513.33 T +(<30>) 504 513.33 T +(5/1 demo) 162 502.33 T +(Recv) 252 502.33 T +(8/2) 324 502.33 T +(ANY) 396 502.33 T +(<2>) 432 502.33 T +(1) 468 502.33 T +(<30>) 504 502.33 T +(7/2 demo) 162 491.33 T +(Recv) 252 491.33 T +(1/0) 324 491.33 T +(ANY) 396 491.33 T +(<2>) 432 491.33 T +(1) 468 491.33 T +(<30>) 504 491.33 T +(9/3 demo) 162 480.33 T +(Recv) 252 480.33 T +(0/0) 324 480.33 T +(ANY) 396 480.33 T +(<2>) 432 480.33 T +(1) 468 480.33 T +(<30>) 504 480.33 T +0 0 612 792 C +0 0 0 1 0 0 0 1 K +63 98.01 180 131.99 C +0 0 0 1 0 0 0 1 K +63 98.01 180 131.99 R +7 X +V +72 95.99 162 131.99 R +V +4 12 Q +0 X +(GPS) 138.66 123.99 T +72 268/G94609 FmPA +(Identi\336cation) 93.32 109.99 T +0 0 612 792 C +0 0 0 1 0 0 0 1 K +[/CropBox[0 0 FmDC 612 792 FmDC FmBx]/PAGE FmPD +[/Dest/P.68/DEST FmPD2 +[/Title(A)/Rect[171 63 549 639]/ARTICLE FmPD2 +FMENDPAGE +%%EndPage: "68" 68 +%%Page: "69" 69 +612 792 0 FMBEGINPAGE +0 FrameSetSepColors +FrameNoSep +0 0 0 1 0 0 0 1 K +180 745.99 540 756 R +7 X +V +1 12 Q +0 X +(69) 526.66 748 T +180 32.69 540 42.7 R +7 X +V +0 X +( MPI Primer / Developing with LAM) 180 34.7 T +180 738 540 738 2 L +7 X +V +1 H +2 Z +0 X +N +540 54 180 54 2 L +7 X +V +0 X +N +180 72 540 630 R +7 X +V +3 F +0 X +(-gps) 180 622 T +0 F +(Identify MPI processes with the GPS instead of the glo-) 270 622 T +180 766/G94525 FmPA +(bal rank, the rank within MPI_COMM_W) 270 608 T +(ORLD.) 473.2 608 T +(The GPS is comprised of the nodeid on which the process is running, and) 180 586 T +180 730/G94526 FmPA +(the LAM process inde) 180 572 T +(x within that node.) 286.8 572 T +0 9.6 Q +(1) 376.8 576.8 T +0 12 Q +(The) 180 486 T +(MPI) 200.98 486 T +(communicator) 224.63 486 T +(and) 296.28 486 T +(datatype) 315.92 486 T +(are) 358.9 486 T +(tw) 375.87 486 T +(o) 387.75 486 T +(opaque) 396.07 486 T +(objects) 433.04 486 T +(that) 469.36 486 T +(are) 489.68 486 T +(sho) 506.65 486 T +(wn) 523.02 486 T +180 630/G94545 FmPA +(as) 180 472 T +(unf) 192.9 472 T +(amiliar) 208.78 472 T +(identi\336ers) 245.68 472 T +(in) 296.59 472 T +(the) 308.83 472 T +(format,) 326.4 472 T +(<#>.) 364.3 472 T +(Extended) 389.74 472 T +(library) 437.97 472 T +(functions) 472.87 472 T +(can) 520.44 472 T +(report) 180 458 T +(the) 211.3 458 T +(same) 228.6 458 T +(v) 255.9 458 T +(alues) 261.6 458 T +(from) 288.9 458 T +(within) 314.87 458 T +(the) 348.18 458 T +(running) 365.48 458 T +(application.) 405.46 458 T +(See) 464.42 458 T +2 F +(Deb) 484.39 458 T +(ug) 504.14 458 T +(ging) 516.02 458 T +(and) 180 444 T +(T) 200.59 444 T +(r) 206.6 444 T +(acing) 211.09 444 T +0 F +(.) 237.75 444 T +(Information) 243.34 444 T +(from) 303.25 444 T +(within) 329.17 444 T +(communicators) 362.43 444 T +(and) 439.01 444 T +(datatypes) 458.93 444 T +(can) 506.84 444 T +(be) 526.08 444 T +(reported by mpitask.) 180 430 T +3 F +(-c) 180 408 T +0 F +(Instead of the def) 270 408 T +(ault report, print communicator infor-) 353.52 408 T +180 552/G94549 FmPA +(mation on all selected processes.) 270 394 T +(The) 180 372 T +(communicator) 201.18 372 T +(report) 273.03 372 T +(contains) 304.2 372 T +(an) 346.72 372 T +(identi\336cation) 360.57 372 T +(of) 426.43 372 T +(the) 438.94 372 T +(process,) 456.13 372 T +(as) 497.64 372 T +(under) 510.15 372 T +180 516/G94550 FmPA +(the) 180 358 T +(T) 197.45 358 T +(ASK) 203.66 358 T +(heading) 230.45 358 T +(in) 271.22 358 T +(the) 283.34 358 T +(def) 300.79 358 T +(ault) 315.99 358 T +(report.) 336.77 358 T +(It) 371.21 358 T +(also) 381.33 358 T +(contains) 403.44 358 T +(the) 446.22 358 T +(size) 463.67 358 T +(of) 485.11 358 T +(the) 497.89 358 T +(com-) 515.34 358 T +(municator and the global ranks \050or GPS, with the -gps option\051 of all pro-) 180 344 T +(cesses) 180 330 T +(in) 212.73 330 T +(the) 224.8 330 T +(communicator\325) 242.2 330 T +(s) 314.86 330 T +(process) 322.26 330 T +(group.) 360.99 330 T +(If) 394.72 330 T +(it) 405.45 330 T +(is) 414.86 330 T +(an) 425.6 330 T +(inter) 439.67 330 T +(-communicator) 461.42 330 T +(,) 534.26 330 T +(members of both groups are reported.) 180 316 T +3 F +(-d) 180 207 T +0 F +(Instead of the def) 270 207 T +(ault report, print datatype information) 353.52 207 T +180 351/G94546 FmPA +(on all selected processes.) 270 193 T +(The datatype report contains an identi\336cation of the process, as under the) 180 171 T +180 315/G94571 FmPA +(T) 180 157 T +(ASK heading in the def) 186.22 157 T +(ault report. It also contains a rendering of the) 299.41 157 T +(datatype\325) 180 143 T +(s) 223.99 143 T +(type) 230.87 143 T +(map,) 253.74 143 T +(which) 279.61 143 T +(is) 311.15 143 T +(not) 321.36 143 T +(easy) 338.91 143 T +(to) 362.44 143 T +(depict) 373.99 143 T +(with) 405.52 143 T +(only) 429.07 143 T +(ASCII) 452.61 143 T +(characters.) 486.15 143 T +(The) 180 129 T +(format) 201.23 129 T +(is) 235.78 129 T +(hierarchical,) 246.35 129 T +(with) 308.56 129 T +(indentation) 332.46 129 T +(representing) 389.03 129 T +(a) 450.91 129 T +(le) 458.8 129 T +(v) 467.17 129 T +(el) 472.99 129 T +(of) 484.22 129 T +(datatype) 496.78 129 T +(deri) 180 115 T +(v) 198.36 115 T +(ation. Basic datatypes are written as the) 204.06 115 T +(y are coded. F) 394.18 115 T +(or deri) 461.98 115 T +(v) 493.33 115 T +(ed) 499.15 115 T +180 96 540 110.98 C +0 0 0 1 0 0 0 1 K +180 96 540 110.98 R +7 X +V +189 108.96 333 108.96 2 L +V +0.5 H +2 Z +0 X +N +0 0 612 792 C +0 0 0 1 0 0 0 1 K +0 10 Q +0 X +(1. Application process indices do not start at 0 or 1 because LAM system pro-) 198 89.33 T +180 233/G94538 FmPA +(cesses occup) 198 77.33 T +(y the \336rst se) 249.27 77.33 T +(v) 297.63 77.33 T +(eral positions.) 302.48 77.33 T +162 504 558 568 C +0 0 0 1 0 0 0 1 K +162 514 558 550 R +7 X +V +3 10 Q +0 X +(% mpitask -gps n0 i8) 162 543.33 T +162 687/G94531 FmPA +(TASK \050GPS/L\051) 162 530.33 T +(FUNCTION) 252 530.33 T +(PEER|ROOT) 324 530.33 T +(TAG) 396 530.33 T +(COMM) 432 530.33 T +(COUNT) 468 530.33 T +(DATATYPE) 504 530.33 T +162 674/G94532 FmPA +(n0,i8/0 demo) 162 517.33 T +(Recv) 252 517.33 T +(n1,i9/1) 324 517.33 T +(ANY) 396 517.33 T +(<2>) 432 517.33 T +(1) 468 517.33 T +(<30>) 504 517.33 T +162 661/G94533 FmPA +0 0 612 792 C +0 0 0 1 0 0 0 1 K +63 382.01 180 415.99 C +0 0 0 1 0 0 0 1 K +63 382.01 180 415.99 R +7 X +V +72 379.99 162 415.99 R +V +4 12 Q +0 X +(Communicator) 84.01 407.99 T +72 552/G94619 FmPA +(Monitoring) 103.33 393.99 T +0 0 612 792 C +0 0 0 1 0 0 0 1 K +162 225 558 312 C +0 0 0 1 0 0 0 1 K +162 231 558 294 R +7 X +V +3 10 Q +0 X +(% mpitask -c n0 i8) 162 287.33 T +162 431/G94558 FmPA +(TASK \050G/L\051:) 162 274.33 T +(0/0 demo) 252 274.33 T +162 418/G94559 FmPA +(INTRACOMM:) 162 263.33 T +(<2>) 252 263.33 T +(SIZE:) 162 252.33 T +(4) 252 252.33 T +(GROUP:) 162 241.33 T +(0 3 6 9) 252 241.33 T +0 0 612 792 C +0 0 0 1 0 0 0 1 K +63 181.01 180 214.99 C +0 0 0 1 0 0 0 1 K +63 181.01 180 214.99 R +7 X +V +72 178.99 162 214.99 R +V +4 12 Q +0 X +(Datatype) 115.34 206.99 T +72 351/G94629 FmPA +(Monitoring) 103.33 192.99 T +0 0 612 792 C +0 0 0 1 0 0 0 1 K +[/CropBox[0 0 FmDC 612 792 FmDC FmBx]/PAGE FmPD +[/Dest/P.69/DEST FmPD2 +[/Title(A)/Rect[171 63 549 639]/ARTICLE FmPD2 +FMENDPAGE +%%EndPage: "69" 69 +%%Page: "70" 70 +612 792 0 FMBEGINPAGE +0 FrameSetSepColors +FrameNoSep +0 0 0 1 0 0 0 1 K +180 745.99 540 756 R +7 X +V +1 12 Q +0 X +(70) 180 748 T +180 32.69 540 42.7 R +7 X +V +0 X +( MPI Primer / Developing with LAM) 180 34.7 T +180 738 540 738 2 L +7 X +V +1 H +2 Z +0 X +N +540 54 180 54 2 L +7 X +V +0 X +N +180 72 540 630 R +7 X +V +0 F +0 X +(datatypes,) 180 622 T +(the) 230.66 622 T +(constructor) 247.66 622 T +(type) 303.98 622 T +(is) 326.98 622 T +(sho) 337.31 622 T +(wn) 353.68 622 T +(along) 370.68 622 T +(with) 399.68 622 T +(information) 423.35 622 T +(on) 482.35 622 T +(displace-) 496.68 622 T +(ments, blocklengths and block counts. Compare the sample code with the) 180 608 T +(output of mpitask -d.) 180 594 T +(The number of MPI processes reported by mpitask can be constrained by) 180 468 T +180 612/G94570 FmPA +(specifying nodeids and/or process indices on the mpitask command line.) 180 454 T +(Choosing the right nodeids and process indices is ob) 180 440 T +(viously f) 431.81 440 T +(acilitated by) 474.02 440 T +(the) 180 426 T +(GPS) 197.43 426 T +(reporting.) 222.2 426 T +(Selecting) 271.95 426 T +(a) 319.38 426 T +(single) 327.47 426 T +(process) 358.9 426 T +(is) 397.65 426 T +(particularly) 408.41 426 T +(useful) 466.49 426 T +(for) 498.59 426 T +(com-) 515.34 426 T +(municator) 180 412 T +(and) 231.43 412 T +(datatype) 251.53 412 T +(reporting,) 294.95 412 T +(when) 344.72 412 T +(man) 373.48 412 T +(y) 393.96 412 T +(or) 402.73 412 T +(all) 415.5 412 T +(of) 430.27 412 T +(the) 443.03 412 T +(processes) 460.47 412 T +(might) 509.22 412 T +(ha) 180 398 T +(v) 191.09 398 T +(e the same communicator or datatype to report.) 196.91 398 T +(Doom is the command le) 180 376 T +(v) 300.36 376 T +(el interf) 306.18 376 T +(ace to signal deli) 343.72 376 T +(v) 424.4 376 T +(ery) 430.22 376 T +(. Node\050s\051 must be) 444.77 376 T +180 520/G94485 FmPA +(speci\336ed) 180 362 T +(on) 225.22 362 T +(the) 239.78 362 T +(command) 257.01 362 T +(line.) 306.9 362 T +(If) 330.46 362 T +(no) 341.01 362 T +(processes) 355.57 362 T +(are) 404.12 362 T +(speci\336ed,) 421.33 362 T +(all) 469.55 362 T +(application) 484.11 362 T +(processes) 180 348 T +(on) 228.81 348 T +(the) 243.63 348 T +(selected) 261.11 348 T +(nodes) 302.59 348 T +(are) 333.41 348 T +(signalled.) 350.88 348 T +(W) 400.03 348 T +(ith) 410.88 348 T +(no) 426.38 348 T +(other) 441.2 348 T +(options,) 468.68 348 T +(doom) 509.84 348 T +(sends) 180 334 T +(a) 209.65 334 T +(LAM_SIGUDIE) 217.96 334 T +(signal.) 301.59 334 T +(Unfortunately) 336.24 334 T +(,) 402.78 334 T +(the) 408.77 334 T +(user) 426.41 334 T +(cannot) 449.39 334 T +(specify) 484.36 334 T +(sig-) 522 334 T +(nal mnemonics and must gi) 180 320 T +(v) 311.7 320 T +(e the actual signal number instead. These are) 317.52 320 T +(listed belo) 180 306 T +(w) 229.37 306 T +(.) 237.25 306 T +3 F +(-1) 180 284 T +0 F +(\050LAM_SIGTRA) 270 284 T +(CE\051 unload trace data) 349.51 284 T +180 428/G187618 FmPA +3 F +(-4) 180 268 T +0 F +(\050LAM_SIGUDIE\051 terminate) 270 268 T +180 412/G94359 FmPA +3 F +(-5) 180 252 T +0 F +(\050LAM_SIGARREST\051 suspend e) 270 252 T +(x) 425.81 252 T +(ecution) 431.63 252 T +180 396/G187619 FmPA +3 F +(-6) 180 236 T +0 F +(\050LAM_SIGRELEASE\051 resume e) 270 236 T +(x) 428.46 236 T +(ecution) 434.28 236 T +180 380/G187620 FmPA +3 F +(-7) 180 220 T +0 F +(\050LAM_SIGA\051 reserv) 270 220 T +(ed for user) 370.79 220 T +180 364/G187621 FmPA +3 F +(-8) 180 204 T +0 F +(\050LAM_SIGB\051 reserv) 270 204 T +(ed for user) 370.13 204 T +180 348/G187622 FmPA +3 F +(-9) 180 188 T +0 F +(\050LAM_SIGFUSE\051 node about to die) 270 188 T +180 332/G94360 FmPA +3 F +(-10) 180 172 T +0 F +(\050LAM_SIGSHRINK\051 another node has died) 270 172 T +180 316/G94361 FmPA +(F) 180 150 T +(or) 186.49 150 T +(e) 199.22 150 T +(xample,) 204.37 150 T +(to) 245.43 150 T +(suspend) 257.5 150 T +(process) 298.9 150 T +(inde) 337.62 150 T +(x) 358.11 150 T +(8) 366.84 150 T +(on) 375.58 150 T +(node) 390.31 150 T +(1,) 416.37 150 T +(use) 428.11 150 T +(the) 446.83 150 T +(follo) 464.23 150 T +(wing) 486.6 150 T +(form:) 513.34 150 T +180 294/G94365 FmPA +3 F +(% doom n1 i8 -5) 180 128 T +180 272/G94366 FmPA +0 F +(Resume the e) 180 106 T +(x) 244.48 106 T +(ecution of the same process:) 250.3 106 T +180 250/G94367 FmPA +3 F +(% doom n1 i8 -6) 180 84 T +180 228/G94368 FmPA +162 486 558 590 C +0 0 0 1 0 0 0 1 K +162 491 558 581 R +7 X +V +3 10 Q +0 X +(% mpitask -d n0 i8) 162 574.33 T +162 718/G94589 FmPA +(TASK \050G/L\051:) 162 561.33 T +(0/0 demo) 252 561.33 T +162 705/G94590 FmPA +(DATATYPE:) 162 550.33 T +(<30>) 252 550.33 T +(MPI_VECTOR \05010 x 2, 20\051) 198 537.33 T +162 681/G94598 FmPA +(MPI_STRUCT \0503\051) 234 526.33 T +(\0501, 0\051 MPI_INT) 270 515.33 T +(\0503, 8\051 MPI_DOUBLE) 270 504.33 T +(\0501, 32\051 MPI_UB) 270 493.33 T +0 0 612 792 C +0 0 0 1 0 0 0 1 K +63 356.99 180 383.99 C +0 0 0 1 0 0 0 1 K +63 356.99 180 383.99 R +7 X +V +72 365.99 162 383.99 R +V +4 12 Q +0 X +(doom) 133.33 375.99 T +72 520/G94484 FmPA +0 0 612 792 C +0 0 0 1 0 0 0 1 K +[/CropBox[0 0 FmDC 612 792 FmDC FmBx]/PAGE FmPD +[/Dest/P.70/DEST FmPD2 +[/Title(A)/Rect[171 63 549 639]/ARTICLE FmPD2 +FMENDPAGE +%%EndPage: "70" 70 +%%Page: "71" 71 +612 792 0 FMBEGINPAGE +0 FrameSetSepColors +FrameNoSep +0 0 0 1 0 0 0 1 K +180 745.99 540 756 R +7 X +V +1 12 Q +0 X +(71) 526.66 748 T +180 32.69 540 42.7 R +7 X +V +0 X +( MPI Primer / Developing with LAM) 180 34.7 T +180 738 540 738 2 L +7 X +V +1 H +2 Z +0 X +N +540 54 180 54 2 L +7 X +V +0 X +N +180 72 540 630 R +7 X +V +3 F +0 X +(mpimsg) 180 622 T +0 F +(Monitor message b) 324 622 T +(uf) 415.75 622 T +(fers.) 425.45 622 T +180 766/G187623 FmPA +3 F +(bfctl) 180 608 T +0 F +(Control message b) 324 608 T +(uf) 413.09 608 T +(fers.) 422.78 608 T +180 575.99 540 586 C +0 0 0 1 0 0 0 1 K +180 575.99 540 586 R +7 X +V +180 584.99 649.01 584.99 2 L +V +1 H +2 Z +0 X +N +0 0 612 792 C +0 0 0 1 0 0 0 1 K +0 12 Q +0 X +(A recei) 180 567.99 T +(ving process is usually deb) 214.68 567.99 T +(ugged with the) 343.76 567.99 T +2 F +(mpitask) 418.09 567.99 T +0 F +( command, b) 455.42 567.99 T +(ut a) 517.51 567.99 T +180 712/G187624 FmPA +(sending) 180 553.99 T +(process) 219.8 553.99 T +(transfers) 258.26 553.99 T +(a) 302.04 553.99 T +(message) 309.84 553.99 T +(and) 352.96 553.99 T +(returns) 372.76 553.99 T +(to) 408.55 553.99 T +(a) 420.35 553.99 T +(ready) 428.15 553.99 T +(state) 457.27 553.99 T +(quickly) 481.73 553.99 T +(due) 520.2 553.99 T +(to the presence of b) 180 539.99 T +(uf) 273.73 539.99 T +(fers. The) 283.43 539.99 T +2 F +(mpimsg) 329.08 539.99 T +0 F +( command is pro) 366.41 539.99 T +(vided to e) 446.56 539.99 T +(xamine) 493.7 539.99 T +(b) 180 525.99 T +(uf) 185.76 525.99 T +(fered messages. W) 195.46 525.99 T +(ith no ar) 285.28 525.99 T +(guments, all MPI messages on all nodes are) 325.06 525.99 T +(reported. The report can be constrained by specifying nodes and processes.) 180 511.99 T +(See) 180 489.99 T +2 F +(Pr) 200.05 489.99 T +(ocess) 211.51 489.99 T +(Monitoring) 240.22 489.99 T +(and) 297.61 489.99 T +(Contr) 318.33 489.99 T +(ol) 345.8 489.99 T +0 F +(for) 357.86 489.99 T +(an) 374.57 489.99 T +(e) 388.62 489.99 T +(xample) 393.76 489.99 T +(program) 431.81 489.99 T +(that) 475.19 489.99 T +(can) 495.91 489.99 T +(send) 515.28 489.99 T +180 634/G94652 FmPA +(messages that will not be recei) 180 475.99 T +(v) 326.68 475.99 T +(ed. These messages can be e) 332.5 475.99 T +(xamined with) 468.94 475.99 T +(mpimsg.) 180 461.99 T +(In) 180 288 T +(its) 192.73 288 T +(def) 206.81 288 T +(ault) 222.01 288 T +(display) 242.75 288 T +(mode,) 280.15 288 T +(mpimsg) 312.55 288 T +(prints) 353.96 288 T +(information) 384.04 288 T +(under) 443.44 288 T +(the) 473.5 288 T +(follo) 490.9 288 T +(wing) 513.26 288 T +180 432/G187626 FmPA +(headings.) 180 274 T +3 F +(SRC \050G/L\051) 180 252 T +0 F +(an) 270 252 T +(identi\336cation) 283.96 252 T +(of) 349.93 252 T +(the) 362.56 252 T +(sending) 379.86 252 T +(process) 419.83 252 T +(follo) 458.45 252 T +(wed) 480.82 252 T +(by) 503.44 252 T +(a) 518.08 252 T +(\324/\325) 526.04 252 T +180 396/G94729 FmPA +(and the process\325) 270 238 T +(s communicator rank \050the \322local\323 rank\051) 347.32 238 T +3 F +(DEST \050G/L\051) 180 222 T +0 F +(an identi\336cation of the recei) 270 222 T +(ving process follo) 404.34 222 T +(wed by a) 490.03 222 T +180 366/G94736 FmPA +(\324/\325 and the process\325) 270 208 T +(s communicator rank) 361.64 208 T +3 F +(TAG) 180 192 T +0 F +(the message tag) 270 192 T +180 336/G94741 FmPA +3 F +(COMM) 180 176 T +0 F +(the communicator ID) 270 176 T +180 320/G94742 FmPA +3 F +(COUNT) 180 160 T +0 F +(the number of elements in the message) 270 160 T +180 304/G94743 FmPA +3 F +(DATATYPE) 180 144 T +0 F +(the datatype ID of each element) 270 144 T +180 288/G94744 FmPA +3 F +(MSG) 180 128 T +0 F +(the message ID to use in a contents query) 270 128 T +180 272/G94745 FmPA +(The same communicator and datatype information that is obtainable from) 180 106 T +180 250/G94746 FmPA +(processes) 180 92 T +(with) 228.77 92 T +(mpitask) 252.9 92 T +(is) 293.7 92 T +(also) 304.49 92 T +(obtainable) 326.61 92 T +(from) 379.39 92 T +(messages.) 405.51 92 T +(The) 456.63 92 T +(dif) 478.08 92 T +(ference) 491.11 92 T +(is) 529.21 92 T +(that) 180 78 T +(more) 200.34 78 T +(precision) 227.34 78 T +(is) 273.67 78 T +(needed) 284.02 78 T +(to) 320.34 78 T +(specify) 332.02 78 T +(a) 369.02 78 T +(message,) 376.69 78 T +(because) 422.68 78 T +(one) 463.01 78 T +(process) 482.67 78 T +(can) 521 78 T +63 603 180 629.99 C +0 0 0 1 0 0 0 1 K +63 603 180 629.99 R +7 X +V +72 602.99 162 629.99 R +3 X +V +0.5 H +0 Z +N +0 0 612 792 C +63 494.98 180 575.98 C +0 0 0 1 0 0 0 1 K +63 494.98 180 575.98 R +7 X +V +72 503.98 162 575.98 R +V +4 14 Q +0 X +(Message) 111.46 566.65 T +72 711/G183298 FmPA +(Monitoring) 93.55 550.65 T +(and Contr) 89.52 534.65 T +(ol) 151.11 534.65 T +4 12 Q +(mpimsg) 121.33 511.98 T +72 656/G187897 FmPA +0 0 612 792 C +0 0 0 1 0 0 0 1 K +155.99 306 564.01 457.99 C +0 0 0 1 0 0 0 1 K +161.99 313.99 557.99 451.99 R +7 X +V +3 10 Q +0 X +(% mpimsg) 161.99 445.33 T +162 589/G94687 FmPA +(SRC \050G/L\051) 161.99 432.33 T +(DEST \050G/L\051) 233.99 432.33 T +(TAG) 305.99 432.33 T +(COMM) 341.99 432.33 T +(COUNT) 377.99 432.33 T +(DATATYPE) 431.99 432.33 T +(MSG) 503.99 432.33 T +162 576/G94688 FmPA +(9/3) 161.99 419.33 T +(0/0) 233.99 419.33 T +(0) 305.99 419.33 T +(<2>) 341.99 419.33 T +(1) 377.99 419.33 T +(<30>) 431.99 419.33 T +(n0,#0) 503.99 419.33 T +162 563/G94689 FmPA +(8/2) 161.99 408.33 T +(2/0) 233.99 408.33 T +(0) 305.99 408.33 T +(<2>) 341.99 408.33 T +(1) 377.99 408.33 T +(<30>) 431.99 408.33 T +(n0,#1) 503.99 408.33 T +(1/0) 161.99 397.33 T +(4/1) 233.99 397.33 T +(0) 305.99 397.33 T +(<2>) 341.99 397.33 T +(1) 377.99 397.33 T +(<30>) 431.99 397.33 T +(n0,#2) 503.99 397.33 T +(3/1) 161.99 386.33 T +(6/2) 233.99 386.33 T +(0) 305.99 386.33 T +(<2>) 341.99 386.33 T +(1) 377.99 386.33 T +(<30>) 431.99 386.33 T +(n0,#3) 503.99 386.33 T +(5/1) 161.99 375.33 T +(8/2) 233.99 375.33 T +(0) 305.99 375.33 T +(<2>) 341.99 375.33 T +(1) 377.99 375.33 T +(<30>) 431.99 375.33 T +(n0,#4) 503.99 375.33 T +(7/2) 161.99 364.33 T +(1/0) 233.99 364.33 T +(0) 305.99 364.33 T +(<2>) 341.99 364.33 T +(1) 377.99 364.33 T +(<30>) 431.99 364.33 T +(n1,#0) 503.99 364.33 T +(0/0) 161.99 353.33 T +(3/1) 233.99 353.33 T +(0) 305.99 353.33 T +(<2>) 341.99 353.33 T +(1) 377.99 353.33 T +(<30>) 431.99 353.33 T +(n1,#1) 503.99 353.33 T +(2/0) 161.99 342.33 T +(5/1) 233.99 342.33 T +(0) 305.99 342.33 T +(<2>) 341.99 342.33 T +(1) 377.99 342.33 T +(<30>) 431.99 342.33 T +(n1,#2) 503.99 342.33 T +(4/1) 161.99 331.33 T +(7/2) 233.99 331.33 T +(0) 305.99 331.33 T +(<2>) 341.99 331.33 T +(1) 377.99 331.33 T +(<30>) 431.99 331.33 T +(n1,#3) 503.99 331.33 T +(6/2) 161.99 320.33 T +(9/3) 233.99 320.33 T +(0) 305.99 320.33 T +(<2>) 341.99 320.33 T +(1) 377.99 320.33 T +(<30>) 431.99 320.33 T +(n1,#4) 503.99 320.33 T +0 0 612 792 C +0 0 0 1 0 0 0 1 K +[/CropBox[0 0 FmDC 612 792 FmDC FmBx]/PAGE FmPD +[/Dest/P.71/DEST FmPD2 +[/Title(A)/Rect[171 63 549 639]/ARTICLE FmPD2 +FMENDPAGE +%%EndPage: "71" 71 +%%Page: "72" 72 +612 792 0 FMBEGINPAGE +0 FrameSetSepColors +FrameNoSep +0 0 0 1 0 0 0 1 K +180 745.99 540 756 R +7 X +V +1 12 Q +0 X +(72) 180 748 T +180 32.69 540 42.7 R +7 X +V +0 X +( MPI Primer / Developing with LAM) 180 34.7 T +180 738 540 738 2 L +7 X +V +1 H +2 Z +0 X +N +540 54 180 54 2 L +7 X +V +0 X +N +180 63 540 630 R +7 X +V +0 F +0 X +(generate se) 180 622 T +(v) 233.34 622 T +(eral messages. Instead of process indices, mpimsg requires a) 239.16 622 T +(message number as a parameter to -c \050communicator\051 or -d \050datatype\051. In) 180 608 T +(f) 180 594 T +(act the information needed by mpimsg is that e) 183.88 594 T +(xactly printed under the) 409.01 594 T +(MSG heading in the def) 180 580 T +(ault report: nodeid and message number) 295.2 580 T +(.) 486.84 580 T +3 F +(-m <#>) 180 558 T +0 F +(Display) 270 558 T +(the) 309.71 558 T +(contents) 326.74 558 T +(of) 369.12 558 T +(the) 381.49 558 T +(speci\336ed) 398.52 558 T +(message) 443.56 558 T +(number) 486.59 558 T +(on) 525.62 558 T +180 702/G94758 FmPA +(the speci\336ed node.) 270 544 T +(An) 180 522 T +(additional) 197.64 522 T +(capability) 248.61 522 T +(unique) 298.91 522 T +(to) 334.55 522 T +(message) 346.86 522 T +(reporting) 390.48 522 T +(is) 437.45 522 T +(the) 448.43 522 T +(display) 466.06 522 T +(of) 503.7 522 T +(mes-) 516.67 522 T +180 666/G94759 FmPA +(sage) 180 508 T +(contents.) 203.83 508 T +(The) 249.32 508 T +(datatype\325) 270.49 508 T +(s) 314.48 508 T +(type) 321.65 508 T +(map) 344.81 508 T +(is) 367.98 508 T +(used) 378.49 508 T +(to) 402.98 508 T +(format) 414.82 508 T +(the) 449.32 508 T +(data.) 466.48 508 T +(Of) 491.98 508 T +(fsets) 504.34 508 T +(at) 528.83 508 T +(the) 180 494 T +(be) 197.19 494 T +(ginning) 208.34 494 T +(of) 247.54 494 T +(each) 260.07 494 T +(line) 284.58 494 T +(are) 305.11 494 T +(from) 322.3 494 T +(the) 348.15 494 T +(be) 365.35 494 T +(ginning) 376.5 494 T +(of) 415.7 494 T +(the) 428.23 494 T +(unpack) 445.42 494 T +(ed) 479.95 494 T +(message.) 493.81 494 T +(Contiguous) 180 480 T +(blocks) 237.62 480 T +(of) 271.23 480 T +(one) 283.51 480 T +(basic) 303.11 480 T +(datatype) 330.05 480 T +(are) 372.99 480 T +(printed) 389.92 480 T +(contiguously) 426.19 480 T +(,) 487.42 480 T +(with) 492.7 480 T +(ne) 516.31 480 T +(w-) 527.34 480 T +(lines forced between blocks.) 180 466 T +(The LAM daemon does not continue to allocate b) 180 292.01 T +(uf) 418.39 292.01 T +(fer space up until the) 428.09 292.01 T +180 436/G187632 FmPA +(operating) 180 278.01 T +(system) 227.5 278.01 T +(is) 263.01 278.01 T +(out) 273.2 278.01 T +(of) 290.71 278.01 T +(memory) 302.88 278.01 T +(.) 342.1 278.01 T +(There) 347.27 278.01 T +(is) 377.44 278.01 T +(a) 387.62 278.01 T +(limit) 395.12 278.01 T +(after) 419.98 278.01 T +(which) 444.14 278.01 T +(no) 475.64 278.01 T +(additional) 489.82 278.01 T +(messages) 180 264.01 T +(will) 227.63 264.01 T +(be) 248.62 264.01 T +(accepted) 262.25 264.01 T +(until) 306.54 264.01 T +(some) 330.86 264.01 T +(are) 358.5 264.01 T +(consumed.) 375.46 264.01 T +(Processes) 429.43 264.01 T +(will) 478.4 264.01 T +(block) 499.38 264.01 T +(in) 528.35 264.01 T +(send) 180 250.01 T +(operations) 204.47 250.01 T +(if) 256.94 250.01 T +(the) 266.74 250.01 T +(required) 283.88 250.01 T +(b) 326.34 250.01 T +(uf) 332.1 250.01 T +(fer) 341.79 250.01 T +(space) 357.59 250.01 T +(is) 386.71 250.01 T +(not) 397.19 250.01 T +(a) 415 250.01 T +(v) 420.09 250.01 T +(ailable.) 425.79 250.01 T +(When) 463.25 250.01 T +(using) 494.38 250.01 T +(the) 522.86 250.01 T +(def) 180 236.01 T +(ault) 195.2 236.01 T +(GER) 215.46 236.01 T +(protocol) 241.72 236.01 T +(\050See) 283.97 236.01 T +2 F +(Executing) 307.55 236.01 T +(MPI) 357.79 236.01 T +(Pr) 381.37 236.01 T +(o) 392.83 236.01 T +(gr) 398.71 236.01 T +(ams) 409.2 236.01 T +0 F +(\051,) 428.53 236.01 T +2 F +(mpirun) 437.78 236.01 T +0 F +(will) 474.71 236.01 T +(tak) 495.64 236.01 T +(e) 510.18 236.01 T +(care) 517.76 236.01 T +(of) 180 222.01 T +(adjusting) 192.26 222.01 T +(the) 238.54 222.01 T +(b) 255.47 222.01 T +(uf) 261.23 222.01 T +(fer) 270.92 222.01 T +(limit) 286.51 222.01 T +(according) 311.46 222.01 T +(to) 361.04 222.01 T +(the) 372.65 222.01 T +(guaranteed) 389.58 222.01 T +(en) 444.49 222.01 T +(v) 455.34 222.01 T +(elope) 461.16 222.01 T +(resources.) 489.42 222.01 T +(If this protocol is disabled, the user may need to tune the b) 180 208.01 T +(uf) 460.73 208.01 T +(fer limit man-) 470.42 208.01 T +(ually) 180 194.01 T +(.) 203.22 194.01 T +(The) 208.87 194.01 T +(user) 230.17 194.01 T +(can) 252.81 194.01 T +(control) 272.11 194.01 T +(the) 308.75 194.01 T +(maximum) 326.05 194.01 T +(size) 377.37 194.01 T +(a) 398.68 194.01 T +(LAM) 406.65 194.01 T +(daemon\325) 435.96 194.01 T +(s) 477.29 194.01 T +(b) 484.6 194.01 T +(uf) 490.36 194.01 T +(fer) 500.05 194.01 T +(pool) 516.02 194.01 T +(with the) 180 180.01 T +2 F +(bfctl) 222 180.01 T +0 F +( command.) 243.34 180.01 T +3 F +(-s) 180 158.01 T +0 F +(Adjust the upper limit on b) 270 158.01 T +(uf) 399.43 158.01 T +(fered messages for the) 409.13 158.01 T +180 302/G94808 FmPA +(selected nodes.) 270 144.01 T +3 F +(% bfctl N -s 0x100000) 180 126.01 T +180 270/G187633 FmPA +63 531 180 565.99 C +0 0 0 1 0 0 0 1 K +63 531 180 565.99 R +7 X +V +72 538.99 162 565.99 R +V +4 12 Q +0 X +(Message) 118.68 557.99 T +72 702/G94766 FmPA +(Contents) 116 543.99 T +0 0 612 792 C +0 0 0 1 0 0 0 1 K +155.99 310.01 564.01 462 C +0 0 0 1 0 0 0 1 K +161.99 318 557.99 456 R +7 X +V +3 10 Q +0 X +(% mpimsg -gps n0 -m 4) 161.99 449.33 T +162 593/G94776 FmPA +(MESSAGE:) 161.99 436.33 T +(n0,i12/2 #4) 233.99 436.33 T +162 580/G94777 FmPA +(00000000:) 161.99 423.33 T +(0) 233.99 423.33 T +162 567/G94788 FmPA +(00000008:) 161.99 412.33 T +(0) 233.99 412.33 T +(0) 269.99 412.33 T +(0) 305.99 412.33 T +(00000020:) 161.99 401.33 T +(0) 233.99 401.33 T +(00000028:) 161.99 390.33 T +(0) 233.99 390.33 T +(1) 269.99 390.33 T +(0) 305.99 390.33 T +(00000280:) 161.99 379.33 T +(1) 233.99 379.33 T +(00000288:) 161.99 368.33 T +(1) 233.99 368.33 T +(0) 269.99 368.33 T +(0) 305.99 368.33 T +(000002a0:) 161.99 357.33 T +(1) 233.99 357.33 T +(000002a8:) 161.99 346.33 T +(1) 233.99 346.33 T +(1) 269.99 346.33 T +(1) 305.99 346.33 T +(00000500:) 161.99 335.33 T +(2) 233.99 335.33 T +(...) 161.99 324.33 T +0 0 612 792 C +0 0 0 1 0 0 0 1 K +63 273 180 300 C +0 0 0 1 0 0 0 1 K +63 273 180 300 R +7 X +V +72 282 162 300 R +V +4 12 Q +0 X +(bfctl) 138.67 292 T +72 436/G183299 FmPA +0 0 612 792 C +0 0 0 1 0 0 0 1 K +[/CropBox[0 0 FmDC 612 792 FmDC FmBx]/PAGE FmPD +[/Dest/P.72/DEST FmPD2 +[/Title(A)/Rect[171 54 549 639]/ARTICLE FmPD2 +FMENDPAGE +%%EndPage: "72" 72 +%%Page: "73" 73 +612 792 0 FMBEGINPAGE +0 FrameSetSepColors +FrameNoSep +0 0 0 1 0 0 0 1 K +180 745.99 540 756 R +7 X +V +1 12 Q +0 X +(73) 526.66 748 T +180 32.69 540 42.7 R +7 X +V +0 X +( MPI Primer / Developing with LAM) 180 34.7 T +180 738 540 738 2 L +7 X +V +1 H +2 Z +0 X +N +540 54 180 54 2 L +7 X +V +0 X +N +180 72 540 630 R +7 X +V +3 F +0 X +(lamtrace) 180 622 T +0 F +(Collect trace data and store in a \336le.) 324 622 T +180 766/G94812 FmPA +180 589.99 540 600 C +0 0 0 1 0 0 0 1 K +180 589.99 540 600 R +7 X +V +180 598.99 649.01 598.99 2 L +V +1 H +2 Z +0 X +N +0 0 612 792 C +0 0 0 1 0 0 0 1 K +0 12 Q +0 X +(After a traced application has completed e) 180 581.99 T +(x) 382.43 581.99 T +(ecution, trace data recording) 388.25 581.99 T +180 726/G94816 FmPA +(communication) 180 567.99 T +(acti) 257.6 567.99 T +(vity) 274.63 567.99 T +(is) 296.24 567.99 T +(stored) 307.18 567.99 T +(within) 339.45 567.99 T +(the) 373.06 567.99 T +(LAM) 390.67 567.99 T +(daemon) 420.27 567.99 T +(across) 461.2 567.99 T +(all) 494.13 567.99 T +(nodes) 509.07 567.99 T +(on which the application ran. There is a limit on ho) 180 553.99 T +(w much trace data one) 425.34 553.99 T +(LAM) 180 539.99 T +(daemon) 209.03 539.99 T +(will) 249.38 539.99 T +(hold.) 270.42 539.99 T +(When) 297.12 539.99 T +(that) 328.14 539.99 T +(limit) 348.5 539.99 T +(is) 373.54 539.99 T +(reached,) 383.91 539.99 T +(the) 426.58 539.99 T +(oldest) 443.61 539.99 T +(traces) 474.64 539.99 T +(are) 504.98 539.99 T +(dis-) 522 539.99 T +(carded in f) 180 525.99 T +(a) 231.19 525.99 T +(v) 236.28 525.99 T +(our of the ne) 242.04 525.99 T +(west traces. See) 302.72 525.99 T +2 F +(Deb) 382.03 525.99 T +(ug) 401.78 525.99 T +(ging and T) 413.66 525.99 T +(r) 465.01 525.99 T +(acing) 469.5 525.99 T +0 F +( for runt-) 496.16 525.99 T +(ime routines that can limit the v) 180 511.99 T +(olume of trace data.) 332.42 511.99 T +(The) 180 489.99 T +2 F +(lamtr) 201.37 489.99 T +(ace) 227.2 489.99 T +0 F +(command) 246.56 489.99 T +(g) 296.6 489.99 T +(athers) 302.54 489.99 T +(trace) 333.91 489.99 T +(data) 359.94 489.99 T +(and) 382.64 489.99 T +(stores) 402.68 489.99 T +(it) 433.39 489.99 T +(into) 442.78 489.99 T +(a) 464.16 489.99 T +(\336le,) 472.2 489.99 T +(which) 493.25 489.99 T +(by) 525.29 489.99 T +180 634/G94817 FmPA +(con) 180 475.99 T +(v) 196.85 475.99 T +(ention has the suf) 202.67 475.99 T +(\336x .lamtr) 286.69 475.99 T +(.) 330.04 475.99 T +3 F +(% lamtrace -v -mpi) 180 453.99 T +180 598/G94845 FmPA +(-mpi) 180 435.99 T +0 F +(Search for an MPI w) 270 435.99 T +(orld trace created by the speci\336ed) 369.85 435.99 T +180 580/G94846 FmPA +(processes.) 270 421.99 T +(F) 180 399.99 T +(or the most part, lamtrace and the LAM daemon are ignorant of speci\336c) 186.49 399.99 T +180 544/G94847 FmPA +(trace) 180 385.99 T +(formats.) 206.19 385.99 T +(In) 248.73 385.99 T +(order) 261.61 385.99 T +(to) 289.8 385.99 T +(e) 302.02 385.99 T +(xtract) 307.17 385.99 T +(MPI) 337.37 385.99 T +(trace) 361.58 385.99 T +(data) 387.78 385.99 T +(for) 410.65 385.99 T +(a) 427.52 385.99 T +(particular) 435.72 385.99 T +(w) 484.58 385.99 T +(orld) 493.13 385.99 T +(com-) 515.34 385.99 T +(municator group in the presence of se) 180 371.99 T +(v) 360.32 371.99 T +(eral such groups \050due to spa) 366.14 371.99 T +(wned) 500.27 371.99 T +(processes or multiple applications\051, lamtrace understands the format of an) 180 357.99 T +(administrati) 180 343.99 T +(v) 237.04 343.99 T +(e) 242.86 343.99 T +(trace) 250.95 343.99 T +(record) 277.03 343.99 T +(produced) 310.44 343.99 T +(by) 357.86 343.99 T +(LAM\325) 372.62 343.99 T +(s) 402.62 343.99 T +(MPI) 410.06 343.99 T +(library) 434.16 343.99 T +(.) 465.37 343.99 T +(In) 471.13 343.99 T +(simple) 483.89 343.99 T +(situ-) 518.66 343.99 T +(ations with one application and no spa) 180 329.99 T +(wned processes, no node or process) 363.8 329.99 T +(focus) 180 315.99 T +(is) 208.56 315.99 T +(required.) 219.13 315.99 T +(lamtrace) 264.68 315.99 T +(searches) 308.56 315.99 T +(all) 351.77 315.99 T +(nodes) 366.34 315.99 T +(and) 396.9 315.99 T +(e) 416.8 315.99 T +(v) 421.83 315.99 T +(entually) 427.65 315.99 T +(locates) 468.88 315.99 T +(the) 504.77 315.99 T +(sol-) 522 315.99 T +(itary MPI w) 180 301.99 T +(orld trace, which is produced by process rank 0 in) 237.88 301.99 T +(MPI_COMM_W) 180 287.99 T +(ORLD. Ho) 262.55 287.99 T +(we) 315.58 287.99 T +(v) 329.27 287.99 T +(er) 335.09 287.99 T +(, if trace data from multiple w) 343.93 287.99 T +(orlds are) 487.45 287.99 T +(present,) 180 273.99 T +(node) 220.64 273.99 T +(and) 246.96 273.99 T +(possibly) 267.27 273.99 T +(process) 310.27 273.99 T +(speci\336cation) 349.24 273.99 T +(must) 412.89 273.99 T +(be) 439.22 273.99 T +(gi) 453.53 273.99 T +(v) 462.57 273.99 T +(en) 468.39 273.99 T +(on) 482.7 273.99 T +(the) 497.69 273.99 T +(com-) 515.34 273.99 T +(mand) 180 259.99 T +(line) 209.01 259.99 T +(to) 229.35 259.99 T +(get) 241.04 259.99 T +(the) 258.05 259.99 T +(data) 275.06 259.99 T +(for) 297.39 259.99 T +(the) 313.73 259.99 T +(desired) 330.74 259.99 T +(w) 367.74 259.99 T +(orld.) 376.29 259.99 T +(The) 400.96 259.99 T +(right) 421.97 259.99 T +(nodeid) 446.98 259.99 T +(and) 481.99 259.99 T +(process) 501.67 259.99 T +(inde) 180 245.99 T +(x) 200.48 245.99 T +(can) 209.09 245.99 T +(be) 228.35 245.99 T +(learned) 242.29 245.99 T +(from) 280.21 245.99 T +2 F +(mpitask) 306.14 245.99 T +0 F +(or) 346.08 245.99 T +(inferred) 358.68 245.99 T +(from) 399.27 245.99 T +(the) 425.2 245.99 T +(application) 442.47 245.99 T +(schema.) 498.41 245.99 T +(F) 180 231.99 T +(or e) 186.49 231.99 T +(xample:) 204.64 231.99 T +3 F +(% lamtrace -v -mpi n0 i8) 180 209.99 T +180 354/G94948 FmPA +0 F +(It is entirely possible to unload trace data before the application has com-) 180 187.99 T +180 332/G94949 FmPA +(pleted, with the ob) 180 173.99 T +(vious ca) 269.15 173.99 T +(v) 308.57 173.99 T +(eat that incomplete communication at the) 314.39 173.99 T +(moment of the unload will be re\337ected in the trace data.) 180 159.99 T +(T) 180 137.99 T +(race) 186.91 137.99 T +(data) 209.47 137.99 T +(remains) 232.04 137.99 T +(in) 272.6 137.99 T +(the) 284.51 137.99 T +(LAM) 301.75 137.99 T +(daemon) 330.99 137.99 T +(and) 371.56 137.99 T +(a) 391.46 137.99 T +(w) 396.61 137.99 T +(aits) 405.15 137.99 T +(an) 424.4 137.99 T +(unload) 438.3 137.99 T +(after) 473.54 137.99 T +(an) 498.1 137.99 T +(appli-) 512 137.99 T +180 282/G94950 FmPA +(cation) 180 123.99 T +(terminates.) 212.09 123.99 T +(If) 267.83 123.99 T +(not) 278.58 123.99 T +(unloaded,) 296.68 123.99 T +(it) 346.42 123.99 T +(should) 355.85 123.99 T +(be) 390.61 123.99 T +(remo) 404.7 123.99 T +(v) 429.18 123.99 T +(ed) 435 123.99 T +(before) 449.08 123.99 T +(running) 482.49 123.99 T +(the) 522.58 123.99 T +(ne) 180 109.99 T +(xt application. This is one of the actions tak) 191.15 109.99 T +(en by) 400.68 109.99 T +2 F +(lamclean) 430.01 109.99 T +0 F +(.) 474 109.99 T +63 603 180 629.99 C +0 0 0 1 0 0 0 1 K +63 603 180 629.99 R +7 X +V +72 602.99 162 629.99 R +3 X +V +0.5 H +0 Z +N +0 0 612 792 C +63 549 180 589.98 C +0 0 0 1 0 0 0 1 K +63 549 180 589.98 R +7 X +V +72 553.98 162 589.98 R +V +4 14 Q +0 X +(Collecting) 101.34 580.65 T +72 725/G94830 FmPA +(T) 95.78 564.65 T +(race Data) 104.08 564.65 T +0 0 612 792 C +63 470.98 180 497.98 C +0 0 0 1 0 0 0 1 K +63 470.98 180 497.98 R +7 X +V +72 479.98 162 497.98 R +V +4 12 Q +0 X +(lamtrace) 116.69 489.98 T +72 634/G94892 FmPA +0 0 612 792 C +0 0 0 1 0 0 0 1 K +[/CropBox[0 0 FmDC 612 792 FmDC FmBx]/PAGE FmPD +[/Dest/P.73/DEST FmPD2 +[/Title(A)/Rect[171 63 549 639]/ARTICLE FmPD2 +FMENDPAGE +%%EndPage: "73" 73 +%%Page: "74" 74 +612 792 0 FMBEGINPAGE +0 FrameSetSepColors +FrameNoSep +0 0 0 1 0 0 0 1 K +180 745.99 540 756 R +7 X +V +1 12 Q +0 X +(74) 180 748 T +180 32.69 540 42.7 R +7 X +V +0 X +( MPI Primer / Developing with LAM) 180 34.7 T +180 738 540 738 2 L +7 X +V +1 H +2 Z +0 X +N +540 54 180 54 2 L +7 X +V +0 X +N +180 72 540 630 R +7 X +V +3 F +0 X +(lamgrow) 180 622 T +0 F +(Add a node to the current LAM session.) 324 622 T +180 766/G94857 FmPA +3 F +(lamshrink) 180 608 T +0 F +(Remo) 324 608 T +(v) 352.49 608 T +(e a node.) 358.31 608 T +180 575.99 540 586 C +0 0 0 1 0 0 0 1 K +180 575.99 540 586 R +7 X +V +180 584.99 649.01 584.99 2 L +V +1 H +2 Z +0 X +N +0 0 612 792 C +0 0 0 1 0 0 0 1 K +0 12 Q +0 X +(LAM can be operated in an en) 180 567.99 T +(vironment where resource a) 325.48 567.99 T +(v) 458.86 567.99 T +(ailability is) 464.56 567.99 T +180 712/G94866 FmPA +(dynamic,) 180 553.99 T +(perhaps) 227.2 553.99 T +(under) 267.39 553.99 T +(the) 297.59 553.99 T +(control) 315.13 553.99 T +(of) 352 553.99 T +(an) 364.87 553.99 T +(e) 379.07 553.99 T +(xternal) 384.22 553.99 T +(resource) 420.42 553.99 T +(manager) 463.93 553.99 T +(.) 504.59 553.99 T +(LAM) 510.46 553.99 T +(is started and an initial set of nodes are established with) 180 539.99 T +2 F +(lamboot) 450.3 539.99 T +0 F +(. If in the) 489.64 539.99 T +(future a resource manager \050softw) 180 525.99 T +(are or human\051 decides to modify the cur-) 338.48 525.99 T +(rent set of nodes belonging to a LAM session, the changes are made with) 180 511.99 T +(tw) 180 497.99 T +(o) 191.88 497.99 T +(commands,) 200.32 497.99 T +2 F +(lamgr) 257.75 497.99 T +(ow) 285.88 497.99 T +0 F +(and) 302.32 497.99 T +2 F +(lamshrink) 322.08 497.99 T +0 F +(.) 370.08 497.99 T +(Both) 375.52 497.99 T +(commands) 401.3 497.99 T +(must) 455.73 497.99 T +(be) 481.51 497.99 T +(e) 495.27 497.99 T +(x) 500.42 497.99 T +(ecuted) 506.24 497.99 T +(from an e) 180 483.99 T +(xisting LAM node.) 225.8 483.99 T +(A) 180 461.99 T +(ne) 190.87 461.99 T +(w) 201.89 461.99 T +(machine) 212.76 461.99 T +(is) 255.61 461.99 T +(labelled) 265.82 461.99 T +(with) 306.01 461.99 T +(a) 329.55 461.99 T +(nodeid) 337.08 461.99 T +(and) 371.94 461.99 T +(added) 391.47 461.99 T +(to) 422.33 461.99 T +(the) 433.86 461.99 T +(LAM) 450.73 461.99 T +(session) 479.59 461.99 T +(with) 516.46 461.99 T +180 606/G94867 FmPA +(lamgro) 180 447.99 T +(w) 213.7 447.99 T +(. Usage is more restricti) 221.58 447.99 T +(v) 335.59 447.99 T +(e than typical LAM commands.) 341.41 447.99 T +(\245) 198 425.99 T +(The nodeid must not duplicate an e) 216 425.99 T +(xisting node.) 384.47 425.99 T +180 570/G94962 FmPA +(\245) 198 405.99 T +(Only one node can be added per in) 216 405.99 T +(v) 382.48 405.99 T +(ocation of lamgro) 388.24 405.99 T +(w) 473.26 405.99 T +(.) 481.14 405.99 T +180 550/G94963 FmPA +(\245) 198 385.99 T +(The machine name must be supplied. LAM will not choose one.) 216 385.99 T +180 530/G94964 FmPA +(\245) 198 365.99 T +(Only one cop) 216 365.99 T +(y of lamgro) 280.54 365.99 T +(w must be running throughout the LAM) 336.23 365.99 T +180 510/G94965 FmPA +(multicomputer) 216 351.99 T +(.) 286.01 351.99 T +3 F +(% lamgrow -v n8 buckeye.osc.edu) 180 331.99 T +180 476/G94983 FmPA +0 F +(If) 180 309.99 T +(a) 190.97 309.99 T +(nodeid) 199.28 309.99 T +(is) 234.92 309.99 T +(not) 245.9 309.99 T +(speci\336ed,) 264.22 309.99 T +(the) 312.86 309.99 T +(ne) 330.5 309.99 T +(xt) 341.65 309.99 T +(highest) 353.96 309.99 T +(LAM) 391.61 309.99 T +(nodeid) 421.26 309.99 T +(is) 456.9 309.99 T +(used.) 467.88 309.99 T +(W) 495.86 309.99 T +(ith) 506.7 309.99 T +(the) 522.36 309.99 T +180 454/G94966 FmPA +(po) 180 295.99 T +(wer) 191.7 295.99 T +(to) 212.48 295.99 T +(specify) 224.61 295.99 T +(a) 262.05 295.99 T +(nodeid,) 270.17 295.99 T +(lamgro) 308.63 295.99 T +(w) 342.33 295.99 T +(can) 353.78 295.99 T +(remo) 373.23 295.99 T +(v) 397.71 295.99 T +(e) 403.53 295.99 T +(the) 411.65 295.99 T +(initial) 429.1 295.99 T +(property) 459.9 295.99 T +(guaran-) 503.35 295.99 T +(teed by lamboot - that nodeids are consecuti) 180 281.99 T +(v) 391.33 281.99 T +(e starting from zero.) 397.15 281.99 T +3 F +(-x) 180 259.99 T +0 F +(Enable f) 270 259.99 T +(ault tolerant detection and reco) 310.2 259.99 T +(v) 458.65 259.99 T +(ery) 464.47 259.99 T +(. The deci-) 479.02 259.99 T +180 404/G94967 FmPA +(sion to use this option generally follo) 270 245.99 T +(ws the lamboot) 448.37 245.99 T +(in) 270 231.99 T +(v) 278.86 231.99 T +(ocation.) 284.62 231.99 T +3 F +(-c ) 180 215.99 T +0 F +(Update a boot schema by appending the ne) 270 215.99 T +(w machine) 475.99 215.99 T +180 360/G94968 FmPA +(name) 270 201.99 T +(to) 298.08 201.99 T +(the) 309.52 201.99 T +(host) 326.27 201.99 T +(list.) 348.37 201.99 T +(This) 368.14 201.99 T +(is) 391.57 201.99 T +(a) 401.67 201.99 T +(simple) 409.09 201.99 T +(con) 443.18 201.99 T +(v) 460.03 201.99 T +(enience) 465.85 201.99 T +(feature) 504.59 201.99 T +(that updates a boot schema for use by) 270 187.99 T +2 F +(wipe) 453.3 187.99 T +0 F +(.) 475.97 187.99 T +(A single node is remo) 180 165.99 T +(v) 285.14 165.99 T +(ed per in) 290.96 165.99 T +(v) 332.47 165.99 T +(ocation of lamshrink. The nodeid and the) 338.23 165.99 T +180 310/G94982 FmPA +(machine name must be supplied.) 180 151.99 T +(% lamshrink -v n8 b) 180 129.99 T +(uck) 277.75 129.99 T +(e) 294.96 129.99 T +(ye.osc.edu) 300.11 129.99 T +180 274/G94984 FmPA +3 F +(-w <#secs>) 180 107.99 T +0 F +(Signal all application processes on the doomed node) 270 107.99 T +180 252/G94985 FmPA +(\050LAM_SIGFUSE\051 and pause before continuing. See) 270 93.99 T +2 F +(Signal Handling) 270 79.99 T +0 F +(.) 349.01 79.99 T +63 603 180 629.99 C +0 0 0 1 0 0 0 1 K +63 603 180 629.99 R +7 X +V +72 602.99 162 629.99 R +3 X +V +0.5 H +0 Z +N +0 0 612 792 C +63 522 180 575.98 C +0 0 0 1 0 0 0 1 K +63 522 180 575.98 R +7 X +V +72 530.98 162 575.98 R +V +4 14 Q +0 X +(Adding and) 91.58 566.65 T +72 711/G94879 FmPA +(Deleting LAM) 76.07 550.65 T +(Nodes) 125.45 534.65 T +0 0 612 792 C +63 442.98 180 469.98 C +0 0 0 1 0 0 0 1 K +63 442.98 180 469.98 R +7 X +V +72 451.98 162 469.98 R +V +4 12 Q +0 X +(lamgr) 117.01 461.98 T +(o) 147.46 461.98 T +(w) 153.34 461.98 T +72 606/G94973 FmPA +0 0 612 792 C +63 146.98 180 173.98 C +0 0 0 1 0 0 0 1 K +63 146.98 180 173.98 R +7 X +V +72 155.98 162 173.98 R +V +4 12 Q +0 X +(lamshrink) 109.32 165.98 T +72 310/G94995 FmPA +0 0 612 792 C +0 0 0 1 0 0 0 1 K +[/CropBox[0 0 FmDC 612 792 FmDC FmBx]/PAGE FmPD +[/Dest/P.74/DEST FmPD2 +[/Title(A)/Rect[171 63 549 639]/ARTICLE FmPD2 +FMENDPAGE +%%EndPage: "74" 74 +%%Page: "75" 75 +612 792 0 FMBEGINPAGE +0 FrameSetSepColors +FrameNoSep +0 0 0 1 0 0 0 1 K +180 745.99 540 756 R +7 X +V +1 12 Q +0 X +(75) 526.66 748 T +180 32.69 540 42.7 R +7 X +V +0 X +( MPI Primer / Developing with LAM) 180 34.7 T +180 738 540 738 2 L +7 X +V +1 H +2 Z +0 X +N +540 54 180 54 2 L +7 X +V +0 X +N +180 72 540 630 R +7 X +V +3 F +0 X +(fstate) 180 622 T +0 F +(Get remote \336lesystem status.) 324 622 T +180 766/G187634 FmPA +3 F +(fctl) 180 608 T +0 F +(Control remote \336lesystem.) 324 608 T +180 575.99 540 586 C +0 0 0 1 0 0 0 1 K +180 575.99 540 586 R +7 X +V +180 584.99 649.01 584.99 2 L +V +1 H +2 Z +0 X +N +0 0 612 792 C +0 0 0 1 0 0 0 1 K +0 12 Q +0 X +(There) 180 567.99 T +(are) 210.49 567.99 T +(commands) 227.65 567.99 T +(to) 282.15 567.99 T +(monitor) 294 567.99 T +(and) 334.51 567.99 T +(control) 354.34 567.99 T +(remote) 390.85 567.99 T +(\336le) 426.68 567.99 T +(access) 444.52 567.99 T +(\050See) 477.67 567.99 T +2 F +(Remote) 501.51 567.99 T +180 712/G187635 FmPA +(F) 180 553.99 T +(ile Access) 186.79 553.99 T +0 F +(\051.) 234.44 553.99 T +2 F +(fstate) 244.44 553.99 T +0 F +( prints one line of status information for each open \336le) 270.44 553.99 T +(descriptor) 180 539.99 T +(.) 227.33 539.99 T +3 F +(FD/COUNT) 180 517.99 T +0 F +(global \336le descriptor handle \050not the client handle\051 and) 270 517.99 T +180 662/G187637 FmPA +(reference count) 270 503.99 T +3 F +(FLAGS) 180 487.99 T +0 F +(open \337ags and status \337ags \050see belo) 270 487.99 T +(w\051) 441.01 487.99 T +180 632/G187638 FmPA +3 F +(FLOW) 180 471.99 T +0 F +(total amount of I/O in bytes since opening) 270 471.99 T +180 616/G187639 FmPA +3 F +(CLIENT) 180 455.99 T +0 F +(nodeid and process ID of last client process) 270 455.99 T +180 600/G187640 FmPA +3 F +(NAME) 180 439.99 T +0 F +(\336lename) 270 439.99 T +180 584/G187641 FmPA +(The open/status \337ags are single character mnemonics.) 180 417.99 T +180 562/G187642 FmPA +3 F +(R) 180 395.99 T +0 F +(open for read) 270 395.99 T +180 540/G187643 FmPA +3 F +(W) 180 379.99 T +0 F +(open for write) 270 379.99 T +180 524/G187644 FmPA +3 F +(L) 180 363.99 T +0 F +(lock) 270 363.99 T +(ed acti) 290.54 363.99 T +(v) 321.9 363.99 T +(e) 327.72 363.99 T +180 508/G187647 FmPA +3 F +(A) 180 347.99 T +0 F +(acti) 270 347.99 T +(v) 287.03 347.99 T +(e, currently open in the underlying \336lesystem) 292.85 347.99 T +180 492/G187648 FmPA +3 F +(I) 180 331.99 T +0 F +(inacti) 270 331.99 T +(v) 296.36 331.99 T +(e, currently closed in the underlying \336lesystem) 302.18 331.99 T +180 476/G187649 FmPA +(The) 180 224 T +2 F +(fctl) 201.66 224 T +0 F +( command has tw) 217 224 T +(o features. The -s option cleans up and closes a) 301.2 224 T +180 368/G187656 FmPA +(speci\336c \336le descriptor while the -S option does the same thing for all \336le) 180 210 T +(descriptors.) 180 196 T +(W) 238.26 196 T +(ith) 249.11 196 T +(no) 264.39 196 T +(options,) 279 196 T +2 F +(fctl) 319.95 196 T +0 F +(prints) 337.9 196 T +(the) 367.84 196 T +(current) 385.11 196 T +(w) 421.71 196 T +(orking) 430.25 196 T +(directory) 464.19 196 T +(of) 510.12 196 T +(the) 522.73 196 T +(remote \336lesystem. The w) 180 182 T +(orking directory is changed by gi) 301.2 182 T +(ving a ne) 459.88 182 T +(w) 503.57 182 T +(pathname) 180 168 T +(to) 228.97 168 T +2 F +(fctl) 240.61 168 T +0 F +(.) 255.95 168 T +(In) 261.26 168 T +(the) 273.56 168 T +(current) 290.54 168 T +(release,) 326.83 168 T +(w) 365.45 168 T +(orking) 374 168 T +(directories) 407.64 168 T +(are) 460.6 168 T +(k) 477.56 168 T +(ept) 483.44 168 T +(on) 500.42 168 T +(a) 514.73 168 T +(per) 522.37 168 T +(node basis, not a per process basis.) 180 154 T +3 F +(% fctl -s 4) 180 132 T +180 276/G94905 FmPA +63 603 180 629.99 C +0 0 0 1 0 0 0 1 K +63 603 180 629.99 R +7 X +V +72 602.99 162 629.99 R +3 X +V +0.5 H +0 Z +N +0 0 612 792 C +63 493.98 180 575.98 C +0 0 0 1 0 0 0 1 K +63 493.98 180 575.98 R +7 X +V +72 503.98 162 575.98 R +V +4 14 Q +0 X +(File) 139.45 566.65 T +72 711/G183290 FmPA +(Monitoring) 93.55 550.65 T +(and Contr) 89.52 534.65 T +(ol) 151.11 534.65 T +4 12 Q +(fstate) 134.02 511.98 T +72 656/G187896 FmPA +0 0 612 792 C +0 0 0 1 0 0 0 1 K +162 242 558 327.99 C +0 0 0 1 0 0 0 1 K +162 255.99 558 318.99 R +7 X +V +3 10 Q +0 X +(% fstate N) 162 312.33 T +162 456/G96274 FmPA +(NODE) 162 299.33 T +(FD/COUNT) 234 299.33 T +(FLAGS) 288 299.33 T +(FLOW) 342 299.33 T +(CLIENT) 396 299.33 T +(NAME) 468 299.33 T +162 443/G96275 FmPA +(n0 \050o\051) 162 286.33 T +(0/0) 234 286.33 T +(R|L) 288 286.33 T +(0) 342 286.33 T +(none) 396 286.33 T +(/dev/null) 468 286.33 T +162 430/G96276 FmPA +(n0 \050o\051) 162 275.33 T +(1/0) 234 275.33 T +(W|L) 288 275.33 T +(0) 342 275.33 T +(n0/p25825) 396 275.33 T +(/dev/ttya) 468 275.33 T +(n0 \050o\051) 162 264.33 T +(2/0) 234 264.33 T +(R|W|L) 288 264.33 T +(0) 342 264.33 T +(none) 396 264.33 T +(/dev/ttya) 468 264.33 T +0 0 612 792 C +0 0 0 1 0 0 0 1 K +63 204.99 180 231.99 C +0 0 0 1 0 0 0 1 K +63 204.99 180 231.99 R +7 X +V +72 213.99 162 231.99 R +V +4 12 Q +0 X +(fctl) 145.34 223.99 T +72 368/G183297 FmPA +0 0 612 792 C +0 0 0 1 0 0 0 1 K +[/CropBox[0 0 FmDC 612 792 FmDC FmBx]/PAGE FmPD +[/Dest/P.75/DEST FmPD2 +[/Title(A)/Rect[171 63 549 639]/ARTICLE FmPD2 +FMENDPAGE +%%EndPage: "75" 75 +%%Page: "76" 76 +612 792 0 FMBEGINPAGE +0 FrameSetSepColors +FrameNoSep +0 0 0 1 0 0 0 1 K +180 745.99 540 756 R +7 X +V +1 12 Q +0 X +(76) 180 748 T +180 32.69 540 42.7 R +7 X +V +0 X +( MPI Primer / Developing with LAM) 180 34.7 T +180 738 540 738 2 L +7 X +V +1 H +2 Z +0 X +N +540 54 180 54 2 L +7 X +V +0 X +N +180 72 540 630 R +7 X +V +3 F +0 X +(bhost.my3suns) 180 622 T +0 F +(e) 324 622 T +(xample host \336le) 329.15 622 T +180 766/G187658 FmPA +180 589.99 540 600 C +0 0 0 1 0 0 0 1 K +180 589.99 540 600 R +7 X +V +180 598.99 649.01 598.99 2 L +V +1 H +2 Z +0 X +N +0 0 612 792 C +0 0 0 1 0 0 0 1 K +0 12 Q +0 X +(The) 180 581.99 T +(topology) 200.74 581.99 T +(of) 245.49 581.99 T +(a) 257.56 581.99 T +(multicomputer) 264.97 581.99 T +(is) 337.72 581.99 T +(established) 347.8 581.99 T +(in) 403.21 581.99 T +(the) 414.62 581.99 T +(boot) 431.36 581.99 T +(schema.) 454.78 581.99 T +(The) 495.85 581.99 T +(boot) 516.59 581.99 T +180 726/G187659 FmPA +(schema speci\336es the identi\336ers and types of nodes, and the ph) 180 567.99 T +(ysical) 477.56 567.99 T +(machines to be used. It may also contain the user account name on a) 180 553.99 T +(machine) 180 539.99 T +(in) 223.47 539.99 T +(case) 235.62 539.99 T +(it) 259.08 539.99 T +(is) 268.57 539.99 T +(dif) 279.38 539.99 T +(ferent) 292.41 539.99 T +(from) 323.21 539.99 T +(the) 349.35 539.99 T +(local) 366.83 539.99 T +(username.) 392.97 539.99 T +(The) 444.76 539.99 T +(boot) 466.23 539.99 T +(schema) 490.38 539.99 T +(is) 529.18 539.99 T +(used by) 180 525.99 T +2 F +(lamboot) 220 525.99 T +0 F +( when starting the LAM session and by) 259.33 525.99 T +2 F +(wipe) 450.65 525.99 T +0 F +( when termi-) 473.32 525.99 T +(nating the LAM session. See) 180 511.99 T +2 F +(Starting LAM) 321.32 511.99 T +0 F +(.) 387 511.99 T +(A v) 180 489.99 T +(ariety of boot schemata describing dif) 197.36 489.99 T +(ferent multicomputers may) 378.7 489.99 T +180 634/G187660 FmPA +(already) 180 475.99 T +(be) 218.05 475.99 T +(a) 232.11 475.99 T +(v) 237.19 475.99 T +(ailable) 242.89 475.99 T +(for) 277.62 475.99 T +(a) 294.34 475.99 T +(gi) 302.4 475.99 T +(v) 311.43 475.99 T +(en) 317.26 475.99 T +(installation.) 331.31 475.99 T +(These) 390.39 475.99 T +(\336les) 421.77 475.99 T +(are) 444.51 475.99 T +(generally) 461.89 475.99 T +(found) 509.27 475.99 T +(in) 180 461.99 T +(the) 191.5 461.99 T +(directory) 208.34 461.99 T +($LAMHOME/boot.) 253.82 461.99 T +(LAM) 351.66 461.99 T +(users) 380.49 461.99 T +(may) 407.32 461.99 T +(need) 430.15 461.99 T +(to) 454.97 461.99 T +(write) 466.48 461.99 T +(their) 493.3 461.99 T +(o) 517.47 461.99 T +(wn) 523.17 461.99 T +(boot schema since the netw) 180 447.99 T +(ork often af) 311.86 447.99 T +(fords man) 367.54 447.99 T +(y choices. This section) 415.68 447.99 T +(describes ho) 180 433.99 T +(w to write a boot schema for LAM using the host \336le syntax.) 239.35 433.99 T +(The e) 180 419.99 T +(xample multicomputer has three nodes, one of which has a dif) 206.81 419.99 T +(ferent) 504.79 419.99 T +(user account name.) 180 405.99 T +(The) 180 383.99 T +(host) 201.05 383.99 T +(file) 223.45 383.99 T +(syntax) 241.84 383.99 T +(is) 275.57 383.99 T +(an) 285.97 383.99 T +(extremely) 299.69 383.99 T +(simple) 350.07 383.99 T +(way) 384.47 383.99 T +(of) 406.85 383.99 T +(representing) 419.24 383.99 T +(the) 480.95 383.99 T +(informa-) 498.01 383.99 T +180 528/G187661 FmPA +(tion required in a LAM boot schema. The machines are listed one on each) 180 369.99 T +(line with an optional user account name \050username\051 following it. The user-) 180 355.99 T +(name) 180 341.99 T +(is) 208.47 341.99 T +(required) 218.96 341.99 T +(in) 261.43 341.99 T +(case) 273.24 341.99 T +(the) 296.38 341.99 T +(account) 313.52 341.99 T +(name) 353.33 341.99 T +(on) 381.8 341.99 T +(that) 396.28 341.99 T +(machine) 416.77 341.99 T +(is) 459.9 341.99 T +(different) 470.39 341.99 T +(from) 514.19 341.99 T +(the one on the local machine where lamboot will be invoked. If the user-) 180 327.99 T +(name is not given, the local one will be used. The nodeids are determined) 180 313.99 T +(by the order in which the machines appear in the file, starting with node 0) 180 299.99 T +(and proceeding with consecutive node numbers. A line segment following) 180 285.99 T +(a # character denotes a comment and is thus skipped.) 180 271.99 T +(In the three node example, it is assumed that the machines are named) 180 249.99 T +180 394/G187662 FmPA +(\322ohio\323,) 180 235.99 T +(\322osc\323) 217.49 235.99 T +(and) 246.64 235.99 T +(\322faraway.far.edu\323) 266.46 235.99 T +(and) 354.9 235.99 T +(numbered) 374.72 235.99 T +(0,) 425.21 235.99 T +(1,) 436.7 235.99 T +(and) 448.2 235.99 T +(2) 468.02 235.99 T +(respectively.) 476.52 235.99 T +(It) 180 221.99 T +(is) 189.71 221.99 T +(also) 200.09 221.99 T +(assumed) 221.79 221.99 T +(that) 265.5 221.99 T +(the) 285.87 221.99 T +(user) 302.91 221.99 T +(is) 325.28 221.99 T +(logged) 335.66 221.99 T +(on) 370.7 221.99 T +(to) 385.07 221.99 T +(node) 396.78 221.99 T +(0,) 422.49 221.99 T +(and) 433.86 221.99 T +(has) 453.57 221.99 T +(the) 471.94 221.99 T +(same) 488.98 221.99 T +(user-) 516.01 221.99 T +(name) 180 207.99 T +(on) 208.7 207.99 T +(node) 223.41 207.99 T +(1,) 249.45 207.99 T +(but) 261.16 207.99 T +(a) 279.2 207.99 T +(different) 287.24 207.99 T +(one) 331.27 207.99 T +(\050guest\051) 351.31 207.99 T +(on) 387.34 207.99 T +(node) 402.05 207.99 T +(2.) 428.09 207.99 T +(Since) 439.8 207.99 T +(node) 469.17 207.99 T +(1) 495.21 207.99 T +(has) 503.92 207.99 T +(the) 522.63 207.99 T +(same) 180 193.99 T +(username) 207.02 193.99 T +(as) 255.37 193.99 T +(the) 267.72 193.99 T +(local) 284.75 193.99 T +(node,) 310.44 193.99 T +(there) 339.12 193.99 T +(is) 365.47 193.99 T +(no) 375.84 193.99 T +(need) 390.2 193.99 T +(to) 415.22 193.99 T +(specify) 426.91 193.99 T +(it.) 463.93 193.99 T +(The) 475.96 193.99 T +(example) 496.98 193.99 T +(boot schema using the host file syntax is shown below.) 180 179.99 T +3 10 Q +(# a 3 node example) 180 159.33 T +180 303/G187663 FmPA +(ohio) 180 148.33 T +(osc) 180 137.33 T +(faraway.far.edu guest) 180 126.33 T +63 603 180 629.99 C +0 0 0 1 0 0 0 1 K +63 603 180 629.99 R +7 X +V +72 602.99 162 629.99 R +3 X +V +0.5 H +0 Z +N +0 0 612 792 C +63 526.98 180 589.98 C +0 0 0 1 0 0 0 1 K +63 526.98 180 589.98 R +7 X +V +72 535.98 162 589.98 R +V +4 14 Q +0 X +(Writing a) 104.05 580.65 T +72 725/G183318 FmPA +(LAM Boot) 97.84 564.65 T +(Schema) 115.34 548.65 T +0 0 612 792 C +63 349 180 391.98 C +0 0 0 1 0 0 0 1 K +63 349 180 391.98 R +7 X +V +72 355.98 162 391.98 R +V +4 12 Q +0 X +(Host File Syntax) 77.33 383.98 T +72 528/G183313 FmPA +0 0 612 792 C +0 0 0 1 0 0 0 1 K +[/CropBox[0 0 FmDC 612 792 FmDC FmBx]/PAGE FmPD +[/Dest/P.76/DEST FmPD2 +[/Title(A)/Rect[171 63 549 639]/ARTICLE FmPD2 +FMENDPAGE +%%EndPage: "76" 76 +%%Page: "77" 77 +612 792 0 FMBEGINPAGE +0 FrameSetSepColors +FrameNoSep +0 0 0 1 0 0 0 1 K +180 745.99 540 756 R +7 X +V +1 12 Q +0 X +(77) 526.66 748 T +180 32.69 540 42.7 R +7 X +V +0 X +( MPI Primer / Developing with LAM) 180 34.7 T +180 738 540 738 2 L +7 X +V +1 H +2 Z +0 X +N +540 54 180 54 2 L +7 X +V +0 X +N +180 72 540 630 R +7 X +V +3 F +0 X +(hboot) 180 622 T +0 F +(Start LAM on one node.) 324 622 T +180 766/G187680 FmPA +180 589.99 540 600 C +0 0 0 1 0 0 0 1 K +180 589.99 540 600 R +7 X +V +180 598.99 649.01 598.99 2 L +V +1 H +2 Z +0 X +N +0 0 612 792 C +0 0 0 1 0 0 0 1 K +0 12 Q +0 X +(The) 180 581.99 T +2 F +(lamboot) 201.03 581.99 T +0 F +(command) 242.74 581.99 T +(runs) 292.44 581.99 T +(a) 315.48 581.99 T +(lo) 323.18 581.99 T +(wer) 332.21 581.99 T +(le) 352.57 581.99 T +(v) 360.94 581.99 T +(el) 366.76 581.99 T +(program) 377.79 581.99 T +(that) 420.82 581.99 T +(starts) 441.2 581.99 T +(LAM) 468.9 581.99 T +(on) 497.93 581.99 T +(a) 512.31 581.99 T +(spe-) 520.01 581.99 T +180 726/G187681 FmPA +(ci\336c) 180 567.99 T +(node.) 202.89 567.99 T +(Normally) 231.44 567.99 T +(,) 276.66 567.99 T +(the) 281.88 567.99 T +(user) 298.77 567.99 T +(will) 320.99 567.99 T +(only) 341.89 567.99 T +(need) 365.45 567.99 T +(to) 390.33 567.99 T +(use) 401.89 567.99 T +(lamboot.) 420.11 567.99 T +(In) 464.67 567.99 T +(some) 476.89 567.99 T +(special) 504.45 567.99 T +(circumstances, when v) 180 553.99 T +(ariations in the normal start-up procedure not con-) 288.67 553.99 T +(trollable with lamboot options are desired, the user may wish to manually) 180 539.99 T +(start the system. By running the lo) 180 525.99 T +(w le) 344.7 525.99 T +(v) 364.73 525.99 T +(el) 370.55 525.99 T +2 F +(hboot) 382.21 525.99 T +0 F +( tool, the user can select) 409.55 525.99 T +(options that tailor the start-up to his/her needs and/or bypass some of the) 180 511.99 T +(comple) 180 497.99 T +(xities of lamboot.) 215.15 497.99 T +(The) 180 475.99 T +(hboot) 201.49 475.99 T +(tool) 231.66 475.99 T +(reads) 253.16 475.99 T +(a) 281.32 475.99 T +(per) 289.48 475.99 T +(-node) 304.56 475.99 T +(con\336guration) 334.72 475.99 T +(\336le) 401.54 475.99 T +(called) 419.71 475.99 T +(a) 451.2 475.99 T +(process) 459.36 475.99 T +(schema.) 498.18 475.99 T +180 620/G187682 FmPA +(The) 180 461.99 T +(process) 201.29 461.99 T +(schema) 239.92 461.99 T +(contains) 278.54 461.99 T +(a) 321.17 461.99 T +(list) 329.13 461.99 T +(of) 346.44 461.99 T +(programs) 359.07 461.99 T +(and) 407.03 461.99 T +(runtime) 426.99 461.99 T +(ar) 466.96 461.99 T +(guments) 476.06 461.99 T +(that) 519.37 461.99 T +(will constitute LAM on a node. The def) 180 447.99 T +(ault process schema \336lename for) 370.52 447.99 T +(hboot is) 180 433.99 T +2 F +(conf) 221.34 433.99 T +(.otb) 241.82 433.99 T +0 F +(. Lamboot in) 259.68 433.99 T +(v) 320.87 433.99 T +(ok) 326.63 433.99 T +(es hboot using the) 338.51 433.99 T +2 F +(conf) 428.51 433.99 T +(.lam) 448.99 433.99 T +0 F +( process) 469.99 433.99 T +(schema.) 180 419.99 T +(Just) 221.51 419.99 T +(as) 242.7 419.99 T +(the) 255.22 419.99 T +(user) 272.4 419.99 T +(can) 294.92 419.99 T +(create) 314.09 419.99 T +(custom) 345.26 419.99 T +(boot) 382.45 419.99 T +(schemata,) 406.3 419.99 T +(he/she) 456.48 419.99 T +(can) 489.66 419.99 T +(create) 508.83 419.99 T +(custom process schemata. The) 180 405.99 T +(y mak) 325.79 405.99 T +(e it easy to recon\336gure LAM at the) 355.33 405.99 T +(process le) 180 391.99 T +(v) 227.35 391.99 T +(el. F) 233.17 391.99 T +(or a complete description of the process schema grammar) 254.33 391.99 T +(,) 530.45 391.99 T +(see the) 180 377.99 T +2 F +(pr) 215.99 377.99 T +(ocsc) 226.12 377.99 T +(hema) 247.26 377.99 T +0 F +(manual page.) 276.25 377.99 T +(T) 180 355.99 T +(o manually start a LAM session, \336rst consult the boot schema. This \336le) 186.37 355.99 T +180 500/G187683 FmPA +(speci\336es the node identi\336ers as well as a binding between node identi\336ers) 180 341.99 T +(and) 180 327.99 T +(actual) 199.48 327.99 T +(machines.) 230.29 327.99 T +(The) 280.77 327.99 T +(e) 301.58 327.99 T +(xample) 306.73 327.99 T +(boot) 344.21 327.99 T +(schema) 367.7 327.99 T +(sho) 405.84 327.99 T +(wn) 422.21 327.99 T +(belo) 439.02 327.99 T +(w) 459.39 327.99 T +(is) 470.2 327.99 T +(written) 480.36 327.99 T +(with) 516.51 327.99 T +(the host \336le syntax and describes a 3 node multicomputer) 180 313.99 T +(.) 454.98 313.99 T +3 10 Q +(# a 3 node example) 180 293.33 T +180 437/G187685 FmPA +(ohio) 180 282.33 T +(osc) 180 271.33 T +(faraway.far.edu guest) 180 260.33 T +0 12 Q +(Each) 180 239.99 T +(node) 206.19 239.99 T +(will) 231.73 239.99 T +(be) 252.6 239.99 T +(started) 266.14 239.99 T +(using) 300.33 239.99 T +(the) 328.54 239.99 T +(hboot) 345.41 239.99 T +(tool,) 374.95 239.99 T +(gi) 398.83 239.99 T +(ving) 407.87 239.99 T +(each) 431.41 239.99 T +(node) 455.6 239.99 T +(information) 481.13 239.99 T +180 384/G187686 FmPA +(about the other nodes in the multicomputer in order to form the fully con-) 180 225.99 T +(nected LAM topology) 180 211.99 T +(. Assuming the user is logged on to machine \322ohio\323,) 285.88 211.99 T +(\336rst start LAM locally) 180 197.99 T +(.) 286.88 197.99 T +3 F +({ohio}% hboot -vc conf.lam -I \322-n0 -o0) 180 175.99 T +180 320/G187687 FmPA +( osc 1 faraway.far.edu 2\323) 252 161.99 T +0 F +(Then login to machine \322osc\323 and start LAM on it.) 180 139.99 T +180 284/G187688 FmPA +3 F +({osc}% hboot -vc conf.lam -I \322-n1 -o0) 180 117.99 T +180 262/G187689 FmPA +( ohio 0 faraway.far.edu 2\323) 252 103.99 T +63 602.99 180 629.99 C +0 0 0 1 0 0 0 1 K +63 602.99 180 629.99 R +7 X +V +72 602.99 162 629.99 R +3 X +V +0.5 H +0 Z +N +0 0 612 792 C +63 526.98 180 589.98 C +0 0 0 1 0 0 0 1 K +63 526.98 180 589.98 R +7 X +V +72 535.98 162 589.98 R +V +4 14 Q +0 X +(Lo) 99.88 580.65 T +(w Le) 116.08 580.65 T +(v) 145.03 580.65 T +(el) 151.89 580.65 T +72 725/G183325 FmPA +(LAM Start-up) 75.28 564.65 T +0 0 612 792 C +63 459 180 483.98 C +0 0 0 1 0 0 0 1 K +63 459 180 483.98 R +7 X +V +72 465.98 162 483.98 R +V +4 12 Q +0 X +(Pr) 80.57 475.98 T +(ocess Schema) 93.01 475.98 T +72 620/G183327 FmPA +0 0 612 792 C +63 223 180 247.98 C +0 0 0 1 0 0 0 1 K +63 223 180 247.98 R +7 X +V +72 229.98 162 247.98 R +V +4 12 Q +0 X +(hboot) 132.66 239.98 T +72 384/G183278 FmPA +0 0 612 792 C +0 0 0 1 0 0 0 1 K +[/CropBox[0 0 FmDC 612 792 FmDC FmBx]/PAGE FmPD +[/Dest/P.77/DEST FmPD2 +[/Title(A)/Rect[171 63 549 639]/ARTICLE FmPD2 +FMENDPAGE +%%EndPage: "77" 77 +%%Page: "78" 78 +612 792 0 FMBEGINPAGE +0 FrameSetSepColors +FrameNoSep +0 0 0 1 0 0 0 1 K +180 745.99 540 756 R +7 X +V +1 12 Q +0 X +(78) 180 748 T +180 32.69 540 42.7 R +7 X +V +0 X +( MPI Primer / Developing with LAM) 180 34.7 T +180 738 540 738 2 L +7 X +V +1 H +2 Z +0 X +N +540 54 180 54 2 L +7 X +V +0 X +N +180 72 540 630 R +7 X +V +0 F +0 X +(Then login to machine \322f) 180 622 T +(ara) 300.53 622 T +(w) 315 622 T +(ay) 323.54 622 T +(.f) 334.09 622 T +(ar) 340.97 622 T +(.edu\323 on the account \322guest\323 and start) 349.63 622 T +180 766/G187690 FmPA +(LAM on it.) 180 608 T +3 F +({faraway}% hboot -vc conf.lam -I \322-n2 -o0) 180 586 T +180 730/G187691 FmPA +( ohio.here.edu 0 osc.here.edu 1\323) 252 572 T +0 F +(Notice) 180 550 T +(that) 214.84 550 T +(in) 235.69 550 T +(this) 247.88 550 T +(last) 268.07 550 T +(case) 287.58 550 T +(the) 311.08 550 T +(full) 328.6 550 T +(machine) 348.12 550 T +(names) 391.62 550 T +(of) 425.13 550 T +(\322ohio\323) 437.98 550 T +(and) 472.82 550 T +(\322osc\323) 493 550 T +(are) 522.5 550 T +180 694/G187692 FmPA +(pro) 180 536 T +(vided) 195.82 536 T +(since) 224.65 536 T +(the) 251.48 536 T +(y) 265.96 536 T +(are) 274.13 536 T +(in) 290.95 536 T +(a) 302.45 536 T +(dif) 309.94 536 T +(ferent) 322.98 536 T +(domain) 353.13 536 T +(than) 391.3 536 T +(\322f) 414.13 536 T +(ara) 423.33 536 T +(w) 437.8 536 T +(ay\323.) 446.35 536 T +(The) 468.17 536 T +(-I) 489 536 T +(option\325) 499.16 536 T +(s) 533.16 536 T +(parameter becomes the v) 180 522 T +(alue of the $inet_topo v) 299.33 522 T +(ariable in the process) 413.02 522 T +(schema. This v) 180 508 T +(ariable is used by LAM to ascertain netw) 252.02 508 T +(ork information.) 449.53 508 T +(-o) 180 486 T +(the nodeid of the origin node - The origin node is) 270 486 T +180 630/G95055 FmPA +(assumed to be the position from where the user w) 270 472 T +(ould) 508.18 472 T +(ha) 270 458 T +(v) 281.09 458 T +(e in) 286.91 458 T +(v) 304.09 458 T +(ok) 309.85 458 T +(ed lamboot. Man) 321.73 458 T +(y LAM features use the ori-) 403.21 458 T +(gin node as a def) 270 444 T +(ault nodeid.) 351.19 444 T +(-n) 180 428 T +(the local nodeid) 270 428 T +180 572/G95056 FmPA +(Other) 180 406 T +(than) 210.31 406 T +(establishing) 233.95 406 T +(local) 294.27 406 T +(and) 320.58 406 T +(remote) 340.9 406 T +(nodeids,) 377.2 406 T +(the) 420.52 406 T +(netw) 438.17 406 T +(ork) 461.37 406 T +(information) 480.35 406 T +180 550/G95057 FmPA +(contains machine name / link number pairs for all other nodes. The link) 180 392 T +(number is equi) 180 378 T +(v) 251.03 378 T +(alent to the LAM nodeid.) 256.73 378 T +(The same procedure may be done using the rsh UNIX tool instead of log-) 180 356 T +180 500/G89932 FmPA +(ging in to each machine. In this case, use the -s option of hboot in order to) 180 342 T +(allo) 180 328 T +(w rsh to return when hboot is done.) 197.7 328 T +[/CropBox[0 0 FmDC 612 792 FmDC FmBx]/PAGE FmPD +[/Dest/P.78/DEST FmPD2 +[/Title(A)/Rect[171 63 549 639]/ARTICLE FmPD2 +FMENDPAGE +%%EndPage: "78" 78 +%%Page: "79" 79 +612 792 0 FMBEGINPAGE +0 FrameSetSepColors +FrameNoSep +0 0 0 1 0 0 0 1 K +180 745.99 540 756 R +7 X +V +1 12 Q +0 X +(79) 526.66 748 T +180 32.69 540 42.7 R +7 X +V +0 X +( MPI Primer / Developing with LAM) 180 34.7 T +180 738 540 738 2 L +7 X +V +1 H +2 Z +0 X +N +540 54 180 54 2 L +7 X +V +0 X +N +180 72 540 630 R +7 X +V +0 F +0 X +(This appendix contains F) 180 622 T +(ortran bindings for the library routines described) 300.82 622 T +180 766/G187860 FmPA +(in this document. All bindings are subroutines unless otherwise noted.) 180 608 T +(from) 180 586 T +2 F +(Initialization) 206.33 586 T +0 F +(:) 268.34 586 T +180 730/G95087 FmPA +3 F +(MPI_INIT \050ierror\051) 180 564 T +180 708/G187861 FmPA +(integer ierror) 216 550 T +(MPI_FINALIZE \050ierror\051) 180 532 T +180 676/G95073 FmPA +(MPI_ABORT \050comm, errcode, ierror\051) 180 514 T +180 658/G95079 FmPA +(integer comm, errcode) 216 500 T +(MPI_COMM_SIZE \050comm, size, ierror\051) 180 482 T +180 626/G95086 FmPA +(integer comm, size) 216 468 T +(MPI_COMM_RANK \050comm, rank, ierror\051) 180 450 T +180 594/G95088 FmPA +(integer comm, rank) 216 436 T +0 F +(from) 180 414 T +2 F +(Bloc) 206.33 414 T +(king P) 228.08 414 T +(oint-to-P) 258.12 414 T +(oint) 300.49 414 T +0 F +(:) 319.16 414 T +180 558/G95091 FmPA +3 F +(MPI_SEND \050buf, count, dtype, dest, tag, comm,) 180 392 T +180 536/G95089 FmPA +(ierror\051) 252 378 T +( buf\050*\051) 216 364 T +(integer count, dtype, dest, tag, comm) 216 350 T +(MPI_RECV \050buf, count, dtype, source, tag, comm,) 180 332 T +180 476/G95090 FmPA +(status, ierror\051) 252 318 T +( buf\050*\051) 216 304 T +(integer count, dtype, source, tag, comm) 216 290 T +(integer status\050MPI_STATUS_SIZE\051) 216 276 T +(MPI_GET_COUNT \050status, dtype, count, ierror\051) 180 258 T +180 402/G95095 FmPA +(integer status\050MPI_STATUS_SIZE\051, dtype, count) 216 244 T +(MPI_PROBE \050source, tag, comm, status, ierror\051) 180 226 T +180 370/G95096 FmPA +(integer source, tag, comm) 216 212 T +(integer status\050MPI_STATUS_SIZE\051) 216 198 T +0 F +(from) 180 176 T +2 F +(Nonbloc) 206.33 176 T +(king P) 246.76 176 T +(oint-to-P) 276.79 176 T +(oint) 319.16 176 T +0 F +(:) 337.84 176 T +180 320/G95097 FmPA +3 F +(MPI_ISEND \050buf, count, dtype, dest, tag, comm,) 180 154 T +180 298/G95098 FmPA +(request, ierror\051) 252 140 T +( buf\050*\051) 216 126 T +(integer count, dtype, dest, tag) 216 112 T +(integer comm, request) 216 98 T +63 567 180 630 C +0 0 0 1 0 0 0 1 K +63 567 180 630 R +7 X +V +72 576 162 630 R +V +4 14 Q +0 X +(A) 85.73 620.67 T +(ppendix A:) 95.49 620.67 T +72 765/G183319 FmPA +(F) 114.92 604.67 T +(ortran) 123.12 604.67 T +(Bindings) 109.08 588.67 T +0 0 612 792 C +0 0 0 1 0 0 0 1 K +[/CropBox[0 0 FmDC 612 792 FmDC FmBx]/PAGE FmPD +[/Dest/P.79/DEST FmPD2 +[/Title(A)/Rect[171 63 549 639]/ARTICLE FmPD2 +FMENDPAGE +%%EndPage: "79" 79 +%%Page: "80" 80 +612 792 0 FMBEGINPAGE +0 FrameSetSepColors +FrameNoSep +0 0 0 1 0 0 0 1 K +180 745.99 540 756 R +7 X +V +1 12 Q +0 X +(80) 180 748 T +180 32.69 540 42.7 R +7 X +V +0 X +( MPI Primer / Developing with LAM) 180 34.7 T +180 738 540 738 2 L +7 X +V +1 H +2 Z +0 X +N +540 54 180 54 2 L +7 X +V +0 X +N +180 72 540 630 R +7 X +V +3 F +0 X +(MPI_IRECV \050buf, count, dtype, source, tag, comm,) 180 622 T +180 766/G95102 FmPA +(request, ierror\051) 252 608 T +( buf\050*\051) 216 594 T +(integer count, dtype, source, tag) 216 580 T +(integer comm, request) 216 566 T +(MPI_TEST \050request, flag, status, ierror\051) 180 548 T +180 692/G95103 FmPA +(logical flag) 216 534 T +(integer request, status\050MPI_STATUS_SIZE\051) 216 520 T +(MPI_WAIT \050request, status, ierror\051) 180 502 T +180 646/G95104 FmPA +(integer request, status\050MPI_STATUS_SIZE\051) 216 488 T +(MPI_IPROBE \050source, tag, comm, flag, status,) 180 470 T +180 614/G95109 FmPA +(ierror\051) 252 456 T +(logical flag) 216 442 T +(integer source, tag, comm) 216 428 T +(integer status\050MPI_STATUS_SIZE\051) 216 414 T +0 F +(from) 180 392 T +2 F +(Messa) 206.33 392 T +(g) 236.87 392 T +(e Datatypes) 242.75 392 T +0 F +(:) 299.74 392 T +180 536/G95115 FmPA +3 F +(MPI_TYPE_VECTOR \050count, blocklength, stride,) 180 370 T +180 514/G95116 FmPA +(oldtype, newtype, ierror\051) 252 356 T +(integer count, blocklength, stride) 216 342 T +(integer oldtype, newtype) 216 328 T +(MPI_TYPE_STRUCT \050count, blocklengths,) 180 310 T +180 454/G95123 FmPA +(displacements, dtypes, newtype, ierror\051) 252 296 T +(integer count, blocklengths\050*\051) 216 282 T +(integer displacements\050*\051, dtypes\050*\051, newtype) 216 268 T +(MPI_ADDRESS \050location, address, ierror\051) 180 250 T +180 394/G95124 FmPA +( location\050*\051) 216 236 T +(integer address) 216 222 T +(MPI_TYPE_COMMIT \050dtype, ierror\051) 180 204 T +180 348/G95125 FmPA +(integer dtype) 216 190 T +(MPI_PACK_SIZE \050incount, dtype, comm size, ierror\051) 180 172 T +180 316/G95126 FmPA +(integer incount, dtype, comm, size) 216 158 T +(MPI_PACK \050inbuf, incount, dtype, outbuf, outsize,) 180 140 T +180 284/G95127 FmPA +(position, comm, ierror\051) 252 126 T +( inbuf\050*\051, outbuf\050*\051) 216 112 T +(integer incount, dtype, outsize) 216 98 T +(integer position, comm) 216 84 T +[/CropBox[0 0 FmDC 612 792 FmDC FmBx]/PAGE FmPD +[/Dest/P.80/DEST FmPD2 +[/Title(A)/Rect[171 63 549 639]/ARTICLE FmPD2 +FMENDPAGE +%%EndPage: "80" 80 +%%Page: "81" 81 +612 792 0 FMBEGINPAGE +0 FrameSetSepColors +FrameNoSep +0 0 0 1 0 0 0 1 K +180 745.99 540 756 R +7 X +V +1 12 Q +0 X +(81) 526.66 748 T +180 32.69 540 42.7 R +7 X +V +0 X +( MPI Primer / Developing with LAM) 180 34.7 T +180 738 540 738 2 L +7 X +V +1 H +2 Z +0 X +N +540 54 180 54 2 L +7 X +V +0 X +N +180 72 540 630 R +7 X +V +3 F +0 X +(MPI_UNPACK \050inbuf, insize, position, outbuf,) 180 622 T +180 766/G95128 FmPA +(outcount, dtype, comm, ierror\051) 252 608 T +( inbuf\050*\051, outbuf\050*\051) 216 594 T +(integer insize, position, outcount) 216 580 T +(integer dtype, comm) 216 566 T +0 F +(from) 180 544 T +2 F +(Collective Messa) 206.33 544 T +(g) 288.53 544 T +(e-P) 294.41 544 T +(assing) 310.1 544 T +0 F +(:) 340.78 544 T +180 688/G95129 FmPA +3 F +(MPI_BCAST \050buf, count, dtype, root, comm, ierror\051) 180 522 T +180 666/G95130 FmPA +( buf\050*\051) 216 508 T +(integer count, dtype, root, comm) 216 494 T +(MPI_SCATTER \050sendbuf, sendcount, sendtype,) 180 476 T +180 620/G95131 FmPA +(recvbuf, recvcount, recvtype, root,) 252 462 T +(comm, ierror\051) 252 448 T +( sendbuf\050*\051, recvbuf\050*\051) 216 434 T +(integer sendcount, sendtype, recvcount) 216 420 T +(integer recvtype, root, comm) 216 406 T +(MPI_GATHER \050sendbuf, sendcount, sendtype,) 180 388 T +180 532/G95134 FmPA +(recvbuf, recvcount, recvtype, root) 252 374 T +(comm, ierror\051) 252 360 T +(integer sendcount, sendtype, recvcount) 216 346 T +(integer recvtype, root, comm) 216 332 T +(MPI_REDUCE \050sendbuf, recvbuf, count, dtype, op,) 180 314 T +180 458/G95132 FmPA +(root, comm, ierror\051) 252 300 T +( sendbuf\050*\051, recvbuf\050*\051) 216 286 T +(integer count, dtype, op, root, comm) 216 272 T +0 F +(from) 180 250 T +2 F +(Cr) 206.33 250 T +(eating Communicator) 218.56 250 T +(s) 323.44 250 T +0 F +(:) 328.1 250 T +180 394/G95137 FmPA +3 F +(MPI_COMM_DUP \050comm, newcomm, ierror\051) 180 228 T +180 372/G95138 FmPA +(integer comm, newcomm) 216 214 T +(MPI_COMM_SPLIT \050comm, color, key, newcomm, ierror\051) 180 196 T +180 340/G95139 FmPA +(integer comm, color, key, newcomm) 216 182 T +(MPI_COMM_FREE \050comm, ierror\051) 180 164 T +180 308/G97397 FmPA +(integer comm) 216 150 T +(MPI_COMM_REMOTE_SIZE \050comm, size, ierror\051) 180 132 T +180 276/G97344 FmPA +(integer comm, size) 216 118 T +(MPI_INTERCOMM_MERGE \050intercomm, high, intracomm,) 180 100 T +180 244/G97345 FmPA +(ierror\051) 252 86 T +[/CropBox[0 0 FmDC 612 792 FmDC FmBx]/PAGE FmPD +[/Dest/P.81/DEST FmPD2 +[/Title(A)/Rect[171 63 549 639]/ARTICLE FmPD2 +FMENDPAGE +%%EndPage: "81" 81 +%%Page: "82" 82 +612 792 0 FMBEGINPAGE +0 FrameSetSepColors +FrameNoSep +0 0 0 1 0 0 0 1 K +180 745.99 540 756 R +7 X +V +1 12 Q +0 X +(82) 180 748 T +180 32.69 540 42.7 R +7 X +V +0 X +( MPI Primer / Developing with LAM) 180 34.7 T +180 738 540 738 2 L +7 X +V +1 H +2 Z +0 X +N +540 54 180 54 2 L +7 X +V +0 X +N +180 72 540 630 R +7 X +V +3 F +0 X +(integer intercomm, intracomm) 216 622 T +(logical high) 216 608 T +0 F +(from) 180 586 T +2 F +(Pr) 206.33 586 T +(ocess T) 217.79 586 T +(opolo) 252.35 586 T +(gies) 279.56 586 T +0 F +(:) 298.9 586 T +180 730/G95140 FmPA +3 F +(MPI_CART_CREATE \050oldcomm, ndims, dims, periods,) 180 564 T +180 708/G95141 FmPA +(reorder, newcomm, ierror\051) 252 550 T +(integer oldcomm, ndims, dims\050*\051, newcomm) 216 536 T +(logical periods\050*\051, reorder) 216 522 T +(MPI_CART_RANK \050comm, coords, rank, ierror\051) 180 504 T +180 648/G95145 FmPA +(integer comm, coords\050*\051, rank) 216 490 T +(MPI_CART_COORDS \050comm, rank, maxdims, coords,) 180 472 T +180 616/G95146 FmPA +(ierror\051) 252 458 T +(integer comm, rank, maxdims, coords\050*\051) 216 444 T +(MPI_CART_SHIFT \050comm, direction, distance,) 180 426 T +180 570/G95150 FmPA +(rank_source, rank_dest, ierror\051) 252 412 T +(integer comm, direction, distance) 216 398 T +(integer rank_source, rank_dest) 216 384 T +0 F +(from) 180 362 T +2 F +(Dynamic Pr) 206.33 362 T +(ocesses) 264.11 362 T +0 F +(:) 300.1 362 T +180 506/G95151 FmPA +3 F +(MPI_SPAWN \050program, argv, maxprocs, info, root,) 180 340 T +180 484/G97350 FmPA +(comm, intercomm, ierrors, ierror\051) 252 326 T +(character*\050*\051 program, argv\050*\051) 216 312 T +(integer info, maxprocs, root, comm) 216 298 T +(integer intercomm, ierrors\050*\051) 216 284 T +0 F +(from) 180 262 T +2 F +(Miscellaneous MPI F) 206.33 262 T +(eatur) 309.41 262 T +(es) 334.3 262 T +0 F +(:) 344.29 262 T +180 406/G97349 FmPA +3 F +(MPI_ERRHANDLER_CREATE \050errfunc, handler, ierror\051) 180 240 T +180 384/G95152 FmPA +(external errfunc) 216 226 T +(integer handler) 216 212 T +(MPI_ERRHANDLER_SET \050comm, handler, ierror\051) 180 194 T +180 338/G95153 FmPA +(integer comm, handler) 216 180 T +(MPI_ERROR_STRING \050code, errstring, resultlen,) 180 162 T +180 306/G95154 FmPA +(ierror\051) 252 148 T +(integer code, resultlen) 216 134 T +(character*\050*\051 errstring) 216 120 T +(MPI_ERROR_CLASS \050code, class, ierror\051) 180 102 T +180 246/G95155 FmPA +(integer code, class) 216 88 T +[/CropBox[0 0 FmDC 612 792 FmDC FmBx]/PAGE FmPD +[/Dest/P.82/DEST FmPD2 +[/Title(A)/Rect[171 63 549 639]/ARTICLE FmPD2 +FMENDPAGE +%%EndPage: "82" 82 +%%Page: "83" 83 +612 792 0 FMBEGINPAGE +0 FrameSetSepColors +FrameNoSep +0 0 0 1 0 0 0 1 K +180 745.99 540 756 R +7 X +V +1 12 Q +0 X +(83) 526.66 748 T +180 32.69 540 42.7 R +7 X +V +0 X +( MPI Primer / Developing with LAM) 180 34.7 T +180 738 540 738 2 L +7 X +V +1 H +2 Z +0 X +N +540 54 180 54 2 L +7 X +V +0 X +N +180 72 540 630 R +7 X +V +3 F +0 X +(MPI_ATTR_GET \050comm, keyval, attrval, flag, ierror\051) 180 622 T +180 766/G97398 FmPA +(integer comm, keyval, attrval) 216 608 T +(logical flag) 216 594 T +(double precision MPI_WTIME\050\051) 180 576 T +180 720/G95156 FmPA +0 F +(from) 180 554 T +2 F +(Remote F) 206.33 554 T +(ile Access) 252.11 554 T +0 F +(:) 299.76 554 T +180 698/G95157 FmPA +3 F +(lamf_rfopen \050lamfd, file, flags, modes, ierror\051) 180 532 T +180 676/G95158 FmPA +(integer lamfd, flags, modes) 216 518 T +(character*\050*\051 file) 216 504 T +(lamf_rfclose \050lamfd, ierror\051) 180 486 T +180 630/G95159 FmPA +(integer lamfd) 216 472 T +(lamf_rfread \050lamfd, buf, length, nread, ierror\051) 180 454 T +180 598/G95160 FmPA +(integer lamfd, length, nread) 216 440 T +( buf\050*\051) 216 426 T +(lamf_rfwrite \050lamfd, buf, length, nwritten,) 180 408 T +180 552/G95161 FmPA +(ierror\051) 252 394 T +(integer lamfd, length, nwritten) 216 380 T +( buf\050*\051) 216 366 T +0 F +(from) 180 344 T +2 F +(Collective I/O) 206.33 344 T +0 F +(:) 273.98 344 T +180 488/G95162 FmPA +3 F +(CBX_OPEN \050file, flags, mode, owner, comm, cbxfd,) 180 322 T +180 466/G95163 FmPA +(ierror\051) 252 308 T +(character*\050*\051 file) 216 294 T +(integer flags, mode, owner, comm, cbxfd) 216 280 T +(CBX_CLOSE \050cbxfd, ierror\051) 180 262 T +180 406/G95167 FmPA +(integer cbxfd) 216 248 T +(CBX_READ \050cbxfd, buf, count, dtype, nread, ierror\051) 180 230 T +180 374/G95168 FmPA +(integer cbxfd, count, dtype, nread) 216 216 T +( buf\050*\051) 216 202 T +(CBX_WRITE \050cbxfd, buf, count, dtype, nwritten,) 180 184 T +180 328/G95169 FmPA +(ierror\051) 252 170 T +(integer cbxfd, count, dtype, nwritten) 216 156 T +( buf\050*\051) 216 142 T +(CBX_LSEEK \050cbxfd, offset, whence, ierror\051) 180 124 T +180 268/G95174 FmPA +(integer cbxfd, offset, whence) 216 110 T +(CBX_MULTI \050cbxfd, ierror\051) 180 92 T +180 236/G95175 FmPA +(integer cbxfd) 216 78 T +[/CropBox[0 0 FmDC 612 792 FmDC FmBx]/PAGE FmPD +[/Dest/P.83/DEST FmPD2 +[/Title(A)/Rect[171 63 549 639]/ARTICLE FmPD2 +FMENDPAGE +%%EndPage: "83" 83 +%%Page: "84" 84 +612 792 0 FMBEGINPAGE +0 FrameSetSepColors +FrameNoSep +0 0 0 1 0 0 0 1 K +180 745.99 540 756 R +7 X +V +1 12 Q +0 X +(84) 180 748 T +180 32.69 540 42.7 R +7 X +V +0 X +( MPI Primer / Developing with LAM) 180 34.7 T +180 738 540 738 2 L +7 X +V +1 H +2 Z +0 X +N +540 54 180 54 2 L +7 X +V +0 X +N +180 72 540 630 R +7 X +V +3 F +0 X +(CBX_SINGL \050cbxfd, ierror\051) 180 622 T +180 766/G95176 FmPA +(integer cbxfd) 216 608 T +(CBX_IS_MULTI \050cbxfd, result, ierror\051) 180 590 T +180 734/G95177 FmPA +(integer cbxfd) 216 576 T +(logical result) 216 562 T +(CBX_IS_SINGL \050cbxfd, result, ierror\051) 180 544 T +180 688/G95178 FmPA +(integer cbxfd) 216 530 T +(logical result) 216 516 T +(CBX_ORDER \050cbxfd, newrank, ierror\051) 180 498 T +180 642/G95182 FmPA +(integer cbxfd, newrank) 216 484 T +0 F +(from) 180 462 T +2 F +(Signal Handling) 206.33 462 T +0 F +(:) 285.34 462 T +180 606/G95190 FmPA +3 F +(MPIL_SIGNAL \050comm, rank, signo, ierror\051) 180 440 T +180 584/G95191 FmPA +(integer comm, rank, signo) 216 426 T +(from) 180 408 T +2 F +(Deb) 216 408 T +(ug) 235.75 408 T +(ging and T) 247.63 408 T +(r) 298.98 408 T +(acing) 303.47 408 T +3 F +(:) 330.13 408 T +180 552/G95192 FmPA +(MPIL_COMM_ID \050comm, id, ierror\051) 180 390 T +180 534/G95193 FmPA +(integer comm, id) 216 376 T +(MPIL_COMM_GPS \050comm, rank, nodeid, pid, ierror\051) 180 358 T +180 502/G95194 FmPA +(integer comm, rank, nodeid, pid) 216 344 T +(MPIL_TYPE_ID \050dtype, id, ierror\051) 180 326 T +180 470/G95195 FmPA +(integer dtype, id) 216 312 T +(MPIL_TRACE_ON \050ierror\051) 180 294 T +180 438/G95196 FmPA +(MPIL_TRACE_OFF \050ierror\051) 180 276 T +180 420/G95197 FmPA +[/CropBox[0 0 FmDC 612 792 FmDC FmBx]/PAGE FmPD +[/Dest/P.84/DEST FmPD2 +[/Title(A)/Rect[171 63 549 639]/ARTICLE FmPD2 +FMENDPAGE +%%EndPage: "84" 84 +%%Page: "85" 85 +612 792 0 FMBEGINPAGE +0 FrameSetSepColors +FrameNoSep +0 0 0 1 0 0 0 1 K +180 745.99 540 756 R +7 X +V +1 12 Q +0 X +(85) 526.66 748 T +180 32.69 540 42.7 R +7 X +V +0 X +( MPI Primer / Developing with LAM) 180 34.7 T +180 738 540 738 2 L +7 X +V +1 H +2 Z +0 X +N +540 54 180 54 2 L +7 X +V +0 X +N +180 72 540 630 R +7 X +V +0 F +0 X +(The tri) 180 622 T +(vial e) 212.03 622 T +(xample program from) 238.18 622 T +2 F +(Pr) 346.49 622 T +(o) 357.95 622 T +(gr) 363.83 622 T +(amming T) 374.32 622 T +(utorial) 421.99 622 T +0 F +( is sho) 454.67 622 T +(wn here in) 485.04 622 T +180 766/G95198 FmPA +(F) 180 608 T +(ortran.) 186.49 608 T +3 10 Q +(c) 180 587.33 T +180 731/G95205 FmPA +(c Transmit a message in a two process system.) 180 576.33 T +(c) 180 565.33 T +(program trivial) 216 554.33 T +(#include ) 180 541.33 T +180 685/G95207 FmPA +(integer*4) 216 528.33 T +(BUFSIZE) 324 528.33 T +180 672/G95208 FmPA +(parameter) 216 515.33 T +(\050BUFSIZE = 64\051) 324 515.33 T +180 659/G95209 FmPA +(integer*4) 216 502.33 T +(buffer\050BUFSIZE\051) 324 502.33 T +180 646/G95210 FmPA +(integer) 216 491.33 T +(rank, size) 324 491.33 T +(integer) 216 480.33 T +(status\050MPI_STATUS_SIZE\051) 324 480.33 T +(c) 180 467.33 T +180 611/G95211 FmPA +(c Initialize MPI.) 180 456.33 T +(c) 180 445.33 T +(call MPI_INIT\050ierror\051) 216 434.33 T +(c) 180 421.33 T +180 565/G95218 FmPA +(c Error check the number of processes.) 180 410.33 T +(c Determine my rank in the world group.) 180 399.33 T +(c The sender will be rank 0 and the receiver, rank 1.) 180 388.33 T +(c) 180 377.33 T +(call MPI_COMM_SIZE\050MPI_COMM_WORLD, size, ierror\051) 216 366.33 T +(if \050size .ne. 2\051 then) 216 353.33 T +180 497/G95212 FmPA +(call MPI_FINALIZE\050ierror\051) 252 342.33 T +(stop) 252 331.33 T +(endif) 216 320.33 T +(call MPI_COMM_RANK\050MPI_COMM_WORLD, rank, ierror\051) 216 307.33 T +180 451/G95213 FmPA +(c) 180 294.33 T +180 438/G95219 FmPA +(c As rank 0, send a message to rank 1.) 180 283.33 T +(c) 180 272.33 T +(if \050rank .eq. 0\051 then) 216 261.33 T +(call MPI_SEND\050buffer\0501\051, BUFSIZE, MPI_INTEGER,) 252 250.33 T +( +) 180 239.33 T +(1, 11, MPI_COMM_WORLD, ierror\051) 324 239.33 T +(c) 180 226.33 T +180 370/G95220 FmPA +(c As rank 1, receive a message from rank 0.) 180 215.33 T +(c) 180 204.33 T +(else) 216 193.33 T +(call MPI_RECV\050buffer\0501\051, BUFSIZE, MPI_INTEGER,) 252 182.33 T +( +) 180 171.33 T +(0, 11, MPI_COMM_WORLD, status,) 324 171.33 T +( +) 180 160.33 T +(ierror\051) 324 160.33 T +(endif) 216 149.33 T +(call MPI_FINALIZE\050ierror\051) 216 136.33 T +180 280/G95214 FmPA +(stop) 216 125.33 T +(end) 216 114.33 T +63 549 180 630 C +0 0 0 1 0 0 0 1 K +63 549 180 630 R +7 X +V +72 558 162 630 R +V +4 14 Q +0 X +(A) 86.5 620.67 T +(ppendix B:) 96.26 620.67 T +72 765/G95246 FmPA +(F) 114.92 604.67 T +(ortran) 123.12 604.67 T +(Example) 109.11 588.67 T +(Pr) 108.6 572.67 T +(ogram) 123.12 572.67 T +0 0 612 792 C +0 0 0 1 0 0 0 1 K +[/CropBox[0 0 FmDC 612 792 FmDC FmBx]/PAGE FmPD +[/Dest/P.85/DEST FmPD2 +[/Title(A)/Rect[171 63 549 639]/ARTICLE FmPD2 +FMENDPAGE +%%EndPage: "85" 85 +%%Page: "86" 86 +612 792 0 FMBEGINPAGE +0 FrameSetSepColors +FrameNoSep +0 0 0 1 0 0 0 1 K +180 745.99 540 756 R +7 X +V +1 12 Q +0 X +(86) 180 748 T +180 32.69 540 42.7 R +7 X +V +0 X +( MPI Primer / Developing with LAM) 180 34.7 T +180 738 540 738 2 L +7 X +V +1 H +2 Z +0 X +N +540 54 180 54 2 L +7 X +V +0 X +N +1 24 Q +(MPI Primer /) 180 120.02 T +180 522 540 558 R +7 X +V +0 12 Q +0 X +(http://www.osc.edu/lam.html) 180 550 T +180 694/G183416 FmPA +(ftp://ftp.osc.edu/pub/lam) 180 537 T +72 522 162 558 R +7 X +V +4 F +0 X +(Mor) 134.23 550 T +(e) 156.67 550 T +72 694/G183417 FmPA +(Inf) 99.64 536 T +(ormation) 114.67 536 T +180 576 351 630 R +7 X +V +0 F +0 X +(Ohio Supercomputer Center) 180 622 T +180 766/G183418 FmPA +(1224 Kinnear Road) 180 608 T +180 752/G187894 FmPA +(Columbus, OH 43212) 180 594 T +180 738/G187895 FmPA +(lam@tbag.osc.edu) 180 581 T +72 576 162 630 R +7 X +V +4 F +0 X +(Contact) 121.34 622 T +72 766/G183419 FmPA +180 477 540 504 R +7 X +V +0 F +0 X +(This document is protected by cop) 180 496 T +(yright.) 345.53 496 T +180 640/G183420 FmPA +(Authors: GDB/RBD) 180 482 T +72 468 162 504 R +7 X +V +4 F +0 X +(Copyright) 109.33 496 T +72 640/G183421 FmPA +0 F +(Copyright 1996 The Ohio State University) 197.14 463.5 T +7 X +90 450 4.5 4.5 186.59 468 G +0.5 H +0 Z +0 X +90 450 4.5 4.5 186.59 468 A +0 10 Q +(c) 184.1 465.52 T +1 24 Q +(Developing with LAM) 180 95.98 T +63 405 162 441 R +7 X +V +4 12 Q +0 X +(Ackno) 72.79 433 T +(wledgment) 106.01 433 T +63 577/G96300 FmPA +180 414 540 441 R +7 X +V +0 F +0 X +(LAM documentation is supported in part by the National Science) 180 433 T +180 577/G96303 FmPA +(F) 180 419 T +(oundation under grant CCR-9510016.) 186.49 419 T +[/CropBox[0 0 FmDC 612 792 FmDC FmBx]/PAGE FmPD +[/Dest/P.86/DEST FmPD2 +[/Dest/L/DEST FmPD2 +0 792 0 792 C +0 0 612 792 C +0 792 0 792 C +0 0 612 792 C +0 792 0 792 C +0 0 612 792 C +0 791.99 0 791.99 C +0 0 612 792 C +0 792 0 792 C +0 0 612 792 C +0 791.99 0 791.99 C +0 0 612 792 C +0 791.99 0 792 C +0 0 612 792 C +0 791.99 0 791.99 C +0 0 612 792 C +0 791.99 0 791.99 C +0 0 612 792 C +0 791.99 0 791.99 C +0 0 612 792 C +0 791.99 0 791.99 C +0 0 612 792 C +0 791.99 0 791.99 C +0 0 612 792 C +0 791.99 0 791.99 C +0 0 612 792 C +0 791.99 0 791.99 C +0 0 612 792 C +0 791.99 0 791.99 C +0 0 612 792 C +0 791.99 0 791.99 C +0 0 612 792 C +0 791.99 0 791.99 C +0 0 612 792 C +0 791.99 0 791.99 C +0 0 612 792 C +0 791.99 0 792 C +0 0 612 792 C +0 791.99 0 791.99 C +0 0 612 792 C +0 791.99 0 792 C +0 0 612 792 C +0 791.99 0 792 C +0 0 612 792 C +0 792 0 792 C +0 0 612 792 C +0 792 0 792 C +0 0 612 792 C +0 792 0 792 C +0 0 612 792 C +0 792 0 792 C +0 0 612 792 C +0 792 0 792 C +0 0 612 792 C +0 792 0 792 C +0 0 612 792 C +0 792 0 792 C +0 0 612 792 C +0 792 0 792 C +0 0 612 792 C +0 792 0 792 C +0 0 612 792 C +0 792 0 792 C +0 0 612 792 C +[/Page 2/View[/XYZ null 94 774 FmDC exch pop null]/Title(How to Use This Document)/OUT FmPD +[/Page 3/View[/XYZ null 114 774 FmDC exch pop null]/Title(Table of Contents)/Count -4/OUT FmPD +[/Page 3/View[/XYZ null 180 684 FmDC exch pop null]/Title(LAM / MPI Tutorial Introduction)/OUT FmPD +[/Page 3/View[/XYZ null 180 450 FmDC exch pop null]/Title(MPI Programming Primer)/OUT FmPD +[/Page 4/View[/XYZ null 180 442 FmDC exch pop null]/Title(LAM / MPI Extensions)/OUT FmPD +[/Page 4/View[/XYZ null 180 280 FmDC exch pop null]/Title(LAM Command Reference)/OUT FmPD +[/Page 7/View[/XYZ null 129 774 FmDC exch pop null]/Title(LAM Architecture)/OUT FmPD +[/Page 9/View[/XYZ null 180 774 FmDC exch pop null]/Title(LAM / MPI Tutorial Introduction)/Count -2/OUT FmPD +[/Page 9/View[/XYZ null 78 546 FmDC exch pop null]/Title(Programming Tutorial)/OUT FmPD +[/Page 15/View[/XYZ null 101 774 FmDC exch pop null]/Title(Operation Tutorial)/OUT FmPD +[/Page 19/View[/XYZ null 180 774 FmDC exch pop null]/Title(MPI Programming Primer)/Count -25/OUT FmPD +[/Page 19/View[/XYZ null 72 582 FmDC exch pop null]/Title(Basic Concepts)/OUT FmPD +[/Page 21/View[/XYZ null 180 774 FmDC exch pop null]/Title(MPI_Init Initialize MPI state. MPI_Finalize Clean up MPI state. MPI_Abort Abnormally terminate. M...)/OUT FmPD +[/Page 21/View[/XYZ null 180 688 FmDC exch pop null]/Title(MPI_Initialized Has MPI been initialized?)/Count -1/OUT FmPD +[/Page 21/View[/XYZ null 85 653 FmDC exch pop null]/Title(Initialization)/OUT FmPD +[/Page 22/View[/XYZ null 180 774 FmDC exch pop null]/Title(MPI_Send Send a message in standard mode. MPI_Recv Receive a message. MPI_Get_count Count the ele...)/OUT FmPD +[/Page 22/View[/XYZ null 180 702 FmDC exch pop null]/Title(MPI_Bsend Send a message in buffered mode. MPI_Ssend Send a message in synchronous mode. MPI_Rsen...)/Count -1/OUT FmPD +[/Page 22/View[/XYZ null 106 583 FmDC exch pop null]/Title(Blocking Point-to-Point)/OUT FmPD +[/Page 25/View[/XYZ null 180 774 FmDC exch pop null]/Title(MPI_Isend Begin to send a standard message. MPI_Irecv Begin to receive a message. MPI_Wait Comple...)/OUT FmPD +[/Page 25/View[/XYZ null 180 688 FmDC exch pop null]/Title(MPI_Ibsend Begin to send a buffered message. MPI_Issend Begin to send a synchronous message. MPI_...)/Count -1/OUT FmPD +[/Page 25/View[/XYZ null 86 521 FmDC exch pop null]/Title(Nonblocking Point-to-Point)/OUT FmPD +[/Page 27/View[/XYZ null 180 774 FmDC exch pop null]/Title(MPI_Type_vector Create a strided homogeneous vector. MPI_Type_struct Create a heterogeneous struc...)/OUT FmPD +[/Page 27/View[/XYZ null 180 660 FmDC exch pop null]/Title(MPI_Type_continuous Create contiguous homogeneous array. MPI_Type_hvector Create vector with byte...)/Count -1/OUT FmPD +[/Page 27/View[/XYZ null 111 529 FmDC exch pop null]/Title(Message Datatypes)/OUT FmPD +[/Page 34/View[/XYZ null 180 774 FmDC exch pop null]/Title(MPI_Bcast Send one message to all group members. MPI_Gather Receive and concatenate from all memb...)/OUT FmPD +[/Page 34/View[/XYZ null 180 702 FmDC exch pop null]/Title(MPI_Barrier Wait until all group members reach this point. MPI_Gatherv Vary counts and buffer dis...)/Count -1/OUT FmPD +[/Page 34/View[/XYZ null 103 547 FmDC exch pop null]/Title(Collective Message- Passing)/OUT FmPD +[/Page 38/View[/XYZ null 180 774 FmDC exch pop null]/Title(MPI_Comm_dup Duplicate communicator with new context. MPI_Comm_split Split into categorized sub-g...)/OUT FmPD +[/Page 38/View[/XYZ null 180 674 FmDC exch pop null]/Title(MPI_Comm_compare Compare two communicators. MPI_Comm_create Create a communicator with a given gr...)/OUT FmPD +[/Page 38/View[/XYZ null 180 613 FmDC exch pop null]/Title(MPI_Group_size Get number of processes in group. MPI_Group_rank Get rank of calling process. MPI_...)/OUT FmPD +[/Page 38/View[/XYZ null 180 422 FmDC exch pop null]/Title(A communicator could be described simply as a process group. Its creation is synchronized and its...)/Count -1/OUT FmPD +[/Page 38/View[/XYZ null 109 422 FmDC exch pop null]/Title(Creating Communicators)/OUT FmPD +[/Page 38/View[/XYZ null 180 308 FmDC exch pop null]/Title(Communicators carry a hidden synchronization variable called the context. If two processes agree ...)/OUT FmPD +[/Page 39/View[/XYZ null 180 694 FmDC exch pop null]/Title(Applications may wish to split into many subgroups, sometimes for data parallel convenience \(i.e....)/OUT FmPD +[/Page 39/View[/XYZ null 180 516 FmDC exch pop null]/Title(The color and key arguments guide the group splitting. There will be one new communicator for eac...)/OUT FmPD +[/Page 39/View[/XYZ null 180 284 FmDC exch pop null]/Title(A communicator is released by MPI_Comm_free\(\). Underlying system resources may be conserved by re...)/OUT FmPD +[/Page 40/View[/XYZ null 180 774 FmDC exch pop null]/Title(An intercommunicator contains two groups: a local group in which the owning process is a member a...)/OUT FmPD +[/Page 40/View[/XYZ null 180 518 FmDC exch pop null]/Title(The number of members in the remote group of an intercommunicator is obtained by MPI_Comm_remote_...)/OUT FmPD +[/Page 41/View[/XYZ null 180 774 FmDC exch pop null]/Title(MPI_Cart_create Create cartesian topology communicator. MPI_Dims_create Suggest balanced dimensio...)/Count -1/OUT FmPD +[/Page 41/View[/XYZ null 117 521 FmDC exch pop null]/Title(Process Topologies)/OUT FmPD +[/Page 44/View[/XYZ null 180 774 FmDC exch pop null]/Title(MPI_Spawn Start copies of one program.)/Count -1/OUT FmPD +[/Page 44/View[/XYZ null 117 504 FmDC exch pop null]/Title(Process Creation)/OUT FmPD +[/Page 46/View[/XYZ null 180 774 FmDC exch pop null]/Title(MPI_Errhandler_create Create custom error handler. MPI_Errhandler_set Set error handler for commu...)/OUT FmPD +[/Page 46/View[/XYZ null 180 660 FmDC exch pop null]/Title(MPI_Errhandler_get Get error handler from communicator. MPI_Errhandler_free Release custom error ...)/Count -1/OUT FmPD +[/Page 46/View[/XYZ null 78 516 FmDC exch pop null]/Title(Miscellaneous MPI Features)/OUT FmPD +[/Page 49/View[/XYZ null 180 774 FmDC exch pop null]/Title(LAM / MPI Extensions)/Count -6/OUT FmPD +[/Page 50/View[/XYZ null 180 774 FmDC exch pop null]/Title(lam_rfopen Open a file. lam_rfclose Close a file. lam_rfread Read from a file. lam_rfwrite Write ...)/Count -1/OUT FmPD +[/Page 50/View[/XYZ null 90 496 FmDC exch pop null]/Title(Remote File Access)/OUT FmPD +[/Page 52/View[/XYZ null 180 774 FmDC exch pop null]/Title(CBX_Open Open a file for MPI Cubix access. CBX_Close Close an MPI Cubix file. CBX_Read Read in ei...)/Count -1/OUT FmPD +[/Page 52/View[/XYZ null 79 608 FmDC exch pop null]/Title(Collective I/O)/OUT FmPD +[/Page 55/View[/XYZ null 180 774 FmDC exch pop null]/Title(lam_ksignal Install a signal handler. lam_ksigblock Block selected signals. lam_ksigsetmask Set e...)/OUT FmPD +[/Page 55/View[/XYZ null 180 674 FmDC exch pop null]/Title(MPIL_Signal Deliver a signal to a process.)/Count -1/OUT FmPD +[/Page 55/View[/XYZ null 125 634 FmDC exch pop null]/Title(Signal Handling)/OUT FmPD +[/Page 56/View[/XYZ null 180 774 FmDC exch pop null]/Title(MPIL_Comm_id Get communicator identifier. MPIL_Comm_gps Get LAM coordinates for an MPI process. M...)/OUT FmPD +[/Page 56/View[/XYZ null 180 716 FmDC exch pop null]/Title(MPIL_Trace_on Enable trace collection. MPIL_Trace_off Disable trace collection.)/Count -1/OUT FmPD +[/Page 56/View[/XYZ null 72 662 FmDC exch pop null]/Title(Debugging and Tracing)/OUT FmPD +[/Page 57/View[/XYZ null 180 774 FmDC exch pop null]/Title(LAM Command Reference)/Count -11/OUT FmPD +[/Page 57/View[/XYZ null 117 582 FmDC exch pop null]/Title(Getting Started)/OUT FmPD +[/Page 60/View[/XYZ null 180 774 FmDC exch pop null]/Title(hcc wrapper for local C compiler hcp wrapper for local C++ compiler hf77 wrapper for local Fortra...)/Count -1/OUT FmPD +[/Page 60/View[/XYZ null 99 706 FmDC exch pop null]/Title(Compiling MPI Programs)/OUT FmPD +[/Page 61/View[/XYZ null 180 774 FmDC exch pop null]/Title(recon Verify multicomputer is ready to run LAM. lamboot Start a LAM multicomputer session. tping ...)/Count -1/OUT FmPD +[/Page 61/View[/XYZ null 77 692 FmDC exch pop null]/Title(Starting LAM)/OUT FmPD +[/Page 63/View[/XYZ null 180 774 FmDC exch pop null]/Title(mpirun Run an MPI application. lamclean Terminate and clean up all LAM processes.)/Count -1/OUT FmPD +[/Page 63/View[/XYZ null 72 720 FmDC exch pop null]/Title(Executing MPI Programs)/OUT FmPD +[/Page 66/View[/XYZ null 180 774 FmDC exch pop null]/Title(mpitask Print status of MPI processes. doom Send a signal to a process.)/Count -1/OUT FmPD +[/Page 66/View[/XYZ null 117 720 FmDC exch pop null]/Title(Process Monitoring and Control)/OUT FmPD +[/Page 71/View[/XYZ null 180 774 FmDC exch pop null]/Title(mpimsg Monitor message buffers. bfctl Control message buffers.)/Count -1/OUT FmPD +[/Page 71/View[/XYZ null 111 720 FmDC exch pop null]/Title(Message Monitoring and Control)/OUT FmPD +[/Page 73/View[/XYZ null 180 774 FmDC exch pop null]/Title(lamtrace Collect trace data and store in a file.)/Count -1/OUT FmPD +[/Page 73/View[/XYZ null 101 734 FmDC exch pop null]/Title(Collecting Trace Data)/OUT FmPD +[/Page 74/View[/XYZ null 180 774 FmDC exch pop null]/Title(lamgrow Add a node to the current LAM session. lamshrink Remove a node.)/Count -1/OUT FmPD +[/Page 74/View[/XYZ null 92 720 FmDC exch pop null]/Title(Adding and Deleting LAM Nodes)/OUT FmPD +[/Page 75/View[/XYZ null 180 774 FmDC exch pop null]/Title(fstate Get remote filesystem status. fctl Control remote filesystem.)/Count -1/OUT FmPD +[/Page 75/View[/XYZ null 139 720 FmDC exch pop null]/Title(File Monitoring and Control)/OUT FmPD +[/Page 76/View[/XYZ null 180 774 FmDC exch pop null]/Title(bhost.my3suns example host file)/Count -1/OUT FmPD +[/Page 76/View[/XYZ null 104 734 FmDC exch pop null]/Title(Writing a LAM Boot Schema)/OUT FmPD +[/Page 77/View[/XYZ null 180 774 FmDC exch pop null]/Title(hboot Start LAM on one node.)/Count -3/OUT FmPD +[/Page 77/View[/XYZ null 100 734 FmDC exch pop null]/Title(Low Level LAM Start-up)/OUT FmPD +[/Page 79/View[/XYZ null 86 774 FmDC exch pop null]/Title(Appendix A: Fortran Bindings)/OUT FmPD +[/Page 85/View[/XYZ null 86 774 FmDC exch pop null]/Title(Appendix B: Fortran Example Program)/OUT FmPD +[ /PageMode /UseOutlines /Page 1 /View [/XYZ null null null] /DOCVIEW FmPD2 +FMENDPAGE +%%EndPage: "86" 86 +%%Trailer +FMENDDOCUMENT +%%BoundingBox: 0 0 612 792 +%%PageOrder: Ascend +%%Pages: 86 +%%DocumentFonts: Times-Roman +%%+ Helvetica-Bold +%%+ Times-Italic +%%+ Courier +%%+ Times-Bold +%%+ Helvetica +%%+ Courier-Bold +%%DocumentNeedsFonts: Times-Roman +%%+ Helvetica-Bold +%%+ Times-Italic +%%+ Courier +%%+ Times-Bold +%%+ Helvetica +%%+ Courier-Bold +%%DocumentSuppliedFonts: +%%EOF --- lam-7.1.2.orig/debian/lam4-dev.prerm +++ lam-7.1.2/debian/lam4-dev.prerm @@ -0,0 +1,12 @@ +#!/bin/sh + +set -e + +if [ "$1" != "upgrade" ] +then + update-alternatives --remove mpi /usr/include/lam +fi + +#DEBHELPER# + +exit 0 --- lam-7.1.2.orig/debian/changelog +++ lam-7.1.2/debian/changelog @@ -0,0 +1,800 @@ +lam (7.1.2-1.6) unstable; urgency=medium + + * Non-maintainer upload. + * Fix CVE-2009-3726 in the internal ltdl copy (Closes: #559835) + + -- Moritz Muehlenhoff Tue, 27 Jul 2010 22:29:03 -0400 + +lam (7.1.2-1.5) unstable; urgency=medium + + * Non-maintainer upload. + * Fix bashism in debian/rules (Closes: #484396) + * Bump Standards-Version to 3.8.0. + + -- Chris Lamb Fri, 11 Jul 2008 21:57:10 +0100 + +lam (7.1.2-1.4) unstable; urgency=low + + * Non-maintainer upload to fix pending l10n issues. + * Remove debconf templates dealing with obsolete transitions. + Closes: #388914 + This also closes pending debconf localization bug reports + Closes: #414761, #415532, #471696, #472687 + + -- Christian Perrier Mon, 17 Mar 2008 20:19:54 +0100 + +lam (7.1.2-1.3) unstable; urgency=low + + * Non-maintainer upload. + * Fix the second argument to main() in the test programs used by configure. + Fixes FTBFS with gcc-4.3. (Closes: #468065) + + -- James Vega Sun, 09 Mar 2008 00:13:40 -0500 + +lam (7.1.2-1.2) unstable; urgency=low + + * Non-maintainer upload. + * Upload to unstable + + -- Riku Voipio Sat, 09 Feb 2008 23:04:48 +0200 + +lam (7.1.2-1.1) experimental; urgency=low + + * Non-maintainer upload. + * transition to gfortran, closes: #456418 + * rename package for long double transition, closes: #430241 + * remove pre-depends on stone-age dpkg version + * remove versioned depends on essential package findutils and debianutils + * Depend on ssh-client instead of ssh, closes: #418988 + * Edit changelog to get rid of lintian warning on long changelog + + -- Riku Voipio Tue, 29 Jan 2008 22:24:19 +0200 + +lam (7.1.2-1) unstable; urgency=low + + * New upstream release, Closes: #362168 + * Accept NMU, Closes: #359118. Closes: #355245. + Closes: #335721. Closes: #337843. Closes: #331881. + * Update README.Debian, Closes: #360226 + * Add mpiexec to alternatives, Closes: #384065. + + -- Camm Maguire Tue, 26 Sep 2006 10:55:25 -0400 + +lam (7.1.1a-1.1) unstable; urgency=high + + * Non-maintainer upload. + * Remove spurious confmodule invocation (Closes: #355245). + * Add debconf-2.0 alternative (Closes: #331881). + * Add Swedish debconf translation (Closes: #337843). + * Add support for GNU/kFreeBSD (Closes: #335721). + + -- Luk Claes Sun, 26 Mar 2006 17:05:44 +0200 + +lam (7.1.1a-1) unstable; urgency=low + + * /u+x -> -u+x per findutils guru recommendation + * Bug fix: "lam: source package has (unused) APSL licensed code", thanks + to James Troup (Closes: #338249). Files removed. + + -- Camm Maguire Tue, 22 Nov 2005 23:48:04 +0000 + +lam (7.1.1-5) unstable; urgency=high + + * Versioned build-dep on findutils >= 4.2.25-1 for new perm argument + syntax. Closes: #330103. + * Accepted NMU in -4 Closes: #318960. Closes: #308554. + + -- Camm Maguire Tue, 27 Sep 2005 14:18:35 +0000 + +lam (7.1.1-4) unstable; urgency=high + + * Accept NMU + * Lower optimization to O2 on m68k, Closes: #328206 + * Czech po file, Closes: #318152 + * Vietnamese po file, CLoses: #314272 + * Add user.pdf and isntall.pdf to docs and doc-base, Closes: #314574 + * Set CC, FC, F77, and CXX environment variables to configure to ensure + mpicc and the like only call compilers by their generic names, Closes: + #316815 + * newer standards + + -- Camm Maguire Thu, 22 Sep 2005 18:10:19 +0000 + +lam (7.1.1-3.2) unstable; urgency=low + + * NMU for the CXX transition according to + http://lists.debian.org/debian-devel-announce/2005/07/msg00001.html + * CXX transition: Rename lam4 to lam4c2; patch from doko: + https://bugzilla.ubuntu.com/show_bug.cgi?id=10708; closes: Bug#318960 + + -- Robert Jordens Wed, 13 Jul 2005 23:43:52 +0200 + +lam (7.1.1-3.1) unstable; urgency=high + + * Non-maintainer upload. + * share/boot/asc_run.c: Re-enable stdin for rank 0, accidently disabled in + 7.1.1. Pulled from upstream revision 9923 of branch-7-1 + (closes: #308554). + + -- Torsten Landschoff Fri, 24 Jun 2005 22:16:52 +0200 + +lam (7.1.1-3) unstable; urgency=high + + * Bug fix: "lam4-dev: /usr/include/lam/mpi++.h is a dangling symlink", + thanks to Laurent Bonnaud (Closes: #287569). Remove link from + package. + + -- Camm Maguire Tue, 22 Mar 2005 16:10:19 +0000 + +lam (7.1.1-2) unstable; urgency=high + + * Link liblam against -ldl, Closes: #278968. + + -- Camm Maguire Sat, 30 Oct 2004 21:55:55 +0000 + +lam (7.1.1-1) unstable; urgency=low + + * New upstream release + * New watch file + + -- Camm Maguire Mon, 4 Oct 2004 13:34:45 +0000 + +lam (7.1-1) unstable; urgency=high + + * New upstream release + * Don't db_input old lam3 template. Closes: #272601. + * Undo wipe -> lamwipe transition in debian/rules as is taken care of + upstream now. + * Remove links in clean: + + -- Camm Maguire Wed, 22 Sep 2004 17:38:10 +0000 + +lam (7.0.6-4) unstable; urgency=low + + * Bug fix: "lam-runtime: still contains files from lam3-dev", thanks to + Guido Guenther (Closes: #254669). Move lam-runtime.links to + lam4-dev.links, which establishes hcc, hf77, and hcp. + + -- Camm Maguire Tue, 22 Jun 2004 22:15:20 +0000 + +lam (7.0.6-3) unstable; urgency=low + + * Bug fix: "lam-runtime: contains files from lam3-dev", thanks to Guido + Guenther (Closes: #253636). Moved hcc.1, hf77.1 and hcp.1 manpages + from lam-runtime to lam4-dev. + + -- Camm Maguire Thu, 10 Jun 2004 16:03:47 +0000 + +lam (7.0.6-2) unstable; urgency=low + + * Bug fix: "lam-runtime: lamssi*(7) man pages missing", thanks to Tilman + Koschnick (Closes: #251029). Added lamssi manpages to lam-runtime + * Added missing manpages to lam-mpidoc + * add mpiexec and laminfo binaries and manpages to lam-runtime + * add old hcc, hf77, and hcp links and manpages to lam-runtime + * alter relink in rules to sub liblam for libmpi.la + * Bug fix: "[l10:ca] catalan debconf templates", thanks to Aleix Badia i + Bosch (Closes: #250125). Added submitted file as ca.po + + -- Camm Maguire Mon, 31 May 2004 20:23:01 +0000 + +lam (7.0.6-1) unstable; urgency=low + + * New upstream release + * Bug fix: "lam4-dev: Cannot link statically", thanks to Erik Schnetter + (Closes: #249531). Reorder library unpackings in debian/rules when + building final Debian versions of the libs/. + * Bug fix: "lam: [INTL:fr] French debconf templates translation", thanks + to Christian Perrier (Closes: #247907). Added fr.po -- thanks! + * Moved manpage libmpi.3 -> libmpi.7 to match internal .TH designations + (lintian cleanup) + * Set section in manpage lamd.1 from 7 to 1 (lintian cleanup) + * Add generated file ./share/include/mpif.hto clean target + + -- Camm Maguire Thu, 20 May 2004 14:00:55 +0000 + +lam (7.0.5-2) unstable; urgency=low + + * Bug fix: "lam-runtime: Debconf-Note contains codes instead of + umlaute", thanks to Helge Kreutzmann (Closes: #237639). Recoded + German translation as per email instructions from Denis Barbier + (barbier@linuxfr.org) + + -- Camm Maguire Fri, 30 Apr 2004 21:19:53 +0000 + +lam (7.0.5-1) unstable; urgency=low + + * New upstream release + * Bug fix: "lam3: package description should expand "LAM:; acronym", + thanks to Branden Robinson (Closes: #231132). Edited control file as + suggested. + * Bug fix: "lam4-dev: mpiCC command missing", thanks to Sjoerd Simons + (Closes: #231459). mpiCC is now just a symlink to mpic++, as with + upstream. + * Bug fix: "lam-runtime: lamboot tries to source ~/.profile on remote + hosts while it doesn't exist", thanks to Sjoerd Simons (Closes: + #231460). Minor edit to ssi_boot_rsh_inetexec.c to query the + existence of .profile before sourcing. + * Bug fix: "Please switch to gettext-based debconf templates", thanks to + Martin Quinson (Closes: #234761). Applied po-debconf patch as supplied + by bug submitter. + * Bug fix: "lam-runtime: inconsistent command naming and references", + thanks to Ross Boylan (Closes: #239728). Edited manpages, noted wipe + -> lamwipe name change in README.Debian. + * Bug fix: "lam-runtime: documentation doesn't seem to be for this + release", thanks to Ross Boylan (Closes: #241597). Refreshed release + notes. + * debconf compat level 4 + * Lintian cleanups -- remove lam-runtime.conffiles, explicitly remove + self-depends in lam4. + + -- Camm Maguire Fri, 30 Apr 2004 18:10:05 +0000 + +lam (7.0.4-2) unstable; urgency=low + + * liblam++ linked against liblam + * liblamio linked against liblam + * liblam linked against -lpthread + * liblam++ linked with g++ + + -- Camm Maguire Wed, 21 Jan 2004 22:57:47 +0000 + +lam (7.0.4-1) unstable; urgency=low + + * New upstream release + * Add share/include/lam_build_info.h to clean target + + -- Camm Maguire Wed, 21 Jan 2004 21:34:13 +0000 + +lam (7.0.3-4) unstable; urgency=low + + * watch version 2 + + -- Camm Maguire Wed, 21 Jan 2004 21:22:51 +0000 + +lam (7.0.3-3) unstable; urgency=low + + * Fix errors and warnings in relink rule of debian/rules + + -- Camm Maguire Wed, 21 Jan 2004 20:53:29 +0000 + +lam (7.0.3-2) unstable; urgency=low + + * Restore missing modifications in the 6.5.9 packages + * Link liblam.so.4.0 et. al. against -lutil for ease in LAM + development + + -- Camm Maguire Sat, 20 Dec 2003 02:19:03 +0000 + +lam (7.0.3-1) unstable; urgency=low + + * New upstream release + * New release Closes: #206481, Closes: #214883 + + -- Camm Maguire Fri, 19 Dec 2003 22:37:01 +0000 + +lam (7.0-1) unstable; urgency=low + + * New upstream release + + -- Camm Maguire Mon, 4 Aug 2003 14:57:45 +0000 + +lam (6.5.9-3) unstable; urgency=low + + * lam3 recommends lam-runtime, Closes: #207678 + * Fix minor error in MPI_Allgather manpage, Closes: #219518 + + -- Camm Maguire Wed, 17 Dec 2003 19:21:47 +0000 + +lam (6.5.9-2) unstable; urgency=low + + * Remove dh_undocumented calls + * Make debian/mm executable for generated man pages + + -- Camm Maguire Wed, 20 Aug 2003 19:24:02 +0000 + +lam (6.5.9-1) unstable; urgency=low + + * Rerelease against latest c++, Closes: #194126 + * New upstream release, Closes: #187766 + * Fixed mpi(7) and libmpi(3) man pages following 7.0 release, Closes: + #188497 + * versioned build dep on debhelper + * remove periods from short descriptions + * lintian clean to copyright authors line + * Added lamd.1 to lam-runtime package + * Build manpages for lamnodes, lamhalt and balky via help2man, a new + build dependency + + -- Camm Maguire Wed, 20 Aug 2003 16:13:03 +0000 + +lam (6.5.8-2) unstable; urgency=low + + * Remove more build generated romio files from diff + * load confmodule in lam-runtime.postinst + + -- Camm Maguire Sun, 8 Dec 2002 22:12:55 -0500 + +lam (6.5.8-1) unstable; urgency=low + + * New upstream release + * Removed trailing space from -L in debian/rules for newer libtool + behavior + * update clean target + * lintian cleanups + + -- Camm Maguire Sat, 7 Dec 2002 23:42:46 -0500 + +lam (6.5.6-7) unstable; urgency=low + + * Removed config/Makefile from diff + + -- Camm Maguire Mon, 18 Mar 2002 14:59:34 -0500 + +lam (6.5.6-6) unstable; urgency=low + + * Reformatted lam-runtime description, Closes: #131578 + + -- Camm Maguire Thu, 31 Jan 2002 08:57:38 -0500 + +lam (6.5.6-5) unstable; urgency=low + + * Removed add-log-mailing-address from changelog + * With previous release, Closes: 127101 + + -- Camm Maguire Tue, 1 Jan 2002 22:45:39 -0500 + +lam (6.5.6-4) unstable; urgency=low + + * /usr/doc -> /usr/share/doc in lam-runtime.doc-base, Closes: #126958 + + -- Camm Maguire Sun, 30 Dec 2001 12:31:52 -0500 + +lam (6.5.6-3) unstable; urgency=low + + * Replaced missing Build-Depends on autotools-dev + + -- Camm Maguire Thu, 20 Dec 2001 16:45:12 -0500 + +lam (6.5.6-2) unstable; urgency=low + + * Prevented hcc from linking in lammpi++ when using gcc to compile C, + not C++, Closes: #123151 + * Also disabled -llammpi++ from hf77 + + -- Camm Maguire Mon, 10 Dec 2001 23:05:25 -0500 + +lam (6.5.6-1) unstable; urgency=low + + * New upstream release + * New watch file + * Depends on rsh-client | ssh,rsh-server | ssh, as user can override + compile-time dependency on rsh via LAMRSH environment variable, e.g. + export LAMRSH='ssh -x', Closes:# 115813 + + -- Camm Maguire Sat, 1 Dec 2001 17:46:46 -0500 + +lam (6.5.5-2) unstable; urgency=low + + * Added Build-Depends on autotools-dev and rules to update + config.{sub,guess}, Closes: #120143 + + -- Camm Maguire Mon, 19 Nov 2001 22:58:13 -0500 + +lam (6.5.5-1) unstable; urgency=low + + * New upstream release + * Removed -M and -S patch to hcc, now included upstream + + -- Camm Maguire Fri, 16 Nov 2001 12:17:04 -0500 + +lam (6.5.4-2) unstable; urgency=low + + * Updated short descriptions for lam packages, Closes: #114263 + + -- Camm Maguire Thu, 4 Oct 2001 13:37:08 -0400 + +lam (6.5.4-1) unstable; urgency=low + + * New upstream release + + -- Camm Maguire Mon, 1 Oct 2001 15:55:23 -0400 + +lam (6.5.3-6) unstable; urgency=low + + * Fixed German template, Closes: #108478 + * Made /etc/lam/lam-helpfile a conffile, Closes: #107185 + * Added support for update-cluster, Closes: #108028 + + -- Camm Maguire Mon, 20 Aug 2001 13:32:55 -0400 + +lam (6.5.3-5) unstable; urgency=low + + * Added german template file, Closes: #106895 + + -- Camm Maguire Mon, 30 Jul 2001 13:32:48 -0400 + +lam (6.5.3-4) unstable; urgency=low + + * Moved examples up one directory level and renamed a few dirs, + Closes: #105860 + + -- Camm Maguire Thu, 19 Jul 2001 10:01:59 -0400 + +lam (6.5.3-3) unstable; urgency=low + + * Removed share/include/debian inadvertantly but harmlessly included + in the diff + + -- Camm Maguire Sat, 14 Jul 2001 19:44:08 -0400 + +lam (6.5.3-2) unstable; urgency=low + + * Fixed typos in debconf files preventing debconf from running + + -- Camm Maguire Sat, 14 Jul 2001 10:31:30 -0400 + +lam (6.5.3-1) unstable; urgency=low + + * New upstream release + * Patched hcc to take -M and -S flags as in 6.3.2 + * Disabled LAM_HAVE_OPENPTY to oviate need to link -lutil, and + preserve 'cc -I /usr/include/mpi foo.c -lmpi' compilation option + * Patched lamnet.h, renaming wipe to lamwipe as in 6.3.2 + * Upgrade Close: #93451 + * New man page layout Closes: #93451, noting that mpi{CC,cc,f77} + manpages are installed with alternative system + * Upgrade Closes: #93451 + * Better upstream message in case of not having run lamboot, Closes: + #100882 + * lam2 now obsolete, removed from woody, Closes: #103828 + * _lam -> .lam, Closes: #100994 + * Added lam-runtime template explaining binary incompatibility with + this release + * Disabled sysv ptys -- bsd work, and are the default on Linux, unix98 + ptys being a kernel option + + -- Camm Maguire Sat, 14 Jul 2001 01:07:25 -0400 + +lam (6.3.2-11) unstable; urgency=low + + * Put a 'Files' entry in lam-runtime.doc-base (Thanks Marcelo!) + Closes: #88328 + + -- Camm Maguire Tue, 6 Mar 2001 18:35:06 -0500 + +lam (6.3.2-10) unstable; urgency=low + + * lam-runtime in utils, lam2 in libs as in override file + + -- Camm Maguire Thu, 1 Mar 2001 15:21:13 -0500 + +lam (6.3.2-9) unstable; urgency=low + + * Added Build-Depends line to control + * Doc-base replaces old dhelp files + + -- Camm Maguire Thu, 1 Mar 2001 10:44:26 -0500 + +lam (6.3.2-8) unstable; urgency=low + + * Made package descriptions clearer, Closes: #78156 + * Patched hcc.c to eliminate linker flags when invoked with -M, + Closes: #85895 + * Set DEFFCONFIGH to conf.lam from conf.otb in boot.h, Closes: #87326 + * Added -S support to hcc, Closes: #76140 + * Added rm of man/index.bt to clean target of rules + + -- Camm Maguire Sun, 25 Feb 2001 02:03:58 -0500 + +lam (6.3.2-7) unstable; urgency=low + + * Backported new inetexec.c from cvs to address erratic lamboot + failure. closes: #65795 + * Updated configure.in to substitute @RSH@ into inetexec.c + * Replaced 'make clean' with 'make distclean' in debian/rules + * Added inetexec.c to distclean target + * Added missing examples/* files to distclean target + + -- Camm Maguire Wed, 20 Sep 2000 18:45:03 +0200 + +lam (6.3.2-6) unstable; urgency=low + + * Added dh_testversion logic to debian/rules to correctly install + examples with latest debhelper. Closes: #66131. + + -- Camm Maguire Tue, 27 Jun 2000 18:05:14 +0200 + +lam (6.3.2-5) unstable; urgency=low + + * Fixed minor typo in bug 63084 processing. 63084 wishlist now + closed. + + -- Camm Maguire Wed, 14 Jun 2000 18:00:13 +0200 + +lam (6.3.2-4) unstable; urgency=low + + * Added dependency on version of dpkg to ensure that multi + conflicts/replaces are handled properly. Added accompanying check + in preinst. Closes #63084 + + -- Camm Maguire Tue, 13 Jun 2000 16:23:01 +0200 + +lam (6.3.2-3) frozen unstable; urgency=low + + * C++ bindings in frozen version didn't work, now fixed. + * ROMIO not built before, now fixed. + * Made build cleanly from source (closes #62381) + + -- Camm Maguire Tue, 18 Apr 2000 00:14:35 +0200 + +lam (6.3.2-2) unstable; urgency=low + + * Included static libraries with ROMIO support + * Added libmpi.a and libmpi++.a slave links to -dev alternatives + + -- Camm Maguire Thu, 13 Apr 2000 17:52:46 +0200 + +lam (6.3.2-1) frozen unstable; urgency=low + + * New upstream release fixing critical data-corruption bug in shared + memory routines + * Upgraded standards version in debian/control + * Corrected GPL path in debian/copyright + + -- Camm Maguire Tue, 28 Mar 2000 22:42:51 +0200 + +lam (6.3-7) unstable; urgency=low + + * Updated upstream-shipped config.guess and config.sub to latest from + automake (closing #55908) + * Included 6.3.1 changes to configure.in to make sure correct compile + flags are used on all systems. (Previously released binaries were + correctly compiled anyway.) + + -- Camm Maguire Mon, 24 Jan 2000 14:31:25 -0500 + +lam (6.3-6) unstable; urgency=low + + * Moved sweep and manpage to lamsweep to avoid name conflict with + geomview (closes #54699) + * Added upstream suggested #if !HAVE_IEEE_FP/#endif around all of + ieee.c to allow compilation on Debian sparc (closes #51871) + + -- Camm Maguire Wed, 12 Jan 2000 16:47:00 -0500 + +lam (6.3-5) unstable; urgency=low + + * Moved priority to extra, in keeping with policy descriptions, and + to make dependency on rsh work + + -- Camm Maguire Wed, 8 Dec 1999 15:58:37 -0500 + +lam (6.3-4) unstable; urgency=low + + * Added Replaces lam-runtime (<< 6.3-3) to control for lam2-dev, closing #51822. + + -- Camm Maguire Fri, 3 Dec 1999 09:31:44 -0500 + +lam (6.3-3) unstable; urgency=low + + * Made lam2-dev architecture dependent + * Moved following from lam-runtime to lam2-dev: mpiCC,mpicc,mpif77, + hcc,hcp,hf77,balky + * Separated alternatives into devel set governed by mpi -> + /usr/include/lam, and runtime set governed by mpirun -> + /usr/bin/mpirun_lam + * Removed libmpi.so.2 and libmpi++.so.2 from alternatives, + as not used by system anyway + + -- Camm Maguire Tue, 30 Nov 1999 13:59:51 -0500 + +lam (6.3-2) unstable; urgency=low + + * Added example files to lam2-dev + * Removed loose -Wl from LIBBIND in configure.in + * Fixed rules so that source will build on machines without lam installed :-) (closes 50930) + + -- Camm Maguire Mon, 22 Nov 1999 14:56:35 -0500 + +lam (6.3-1) unstable; urgency=low + + * Altered build rules to avoid a complete remake with each debian/rules install + * Used smaller no-logo version of lam61.doc.ps + * Added C++ alternatives and files + * ROMIO files excluded, as support not built-in for shared libraries + * Added dhelp support + * Moved lamd.1 to lamd.8, apparently the appropriate place for daemon manpages + * New upstream release + + -- Camm Maguire Mon, 1 Nov 1999 10:30:51 -0500 + +lam (6.2b-pl5-2) unstable; urgency=low + + * Hardcoded rsh path in debian/rules to enable builds on machines without rsh installed + + -- Camm Maguire Mon, 1 Nov 1999 10:30:51 -0500 + +lam (6.2b-pl5-1) unstable; urgency=low + + * reinstated shortcircuit optimization + * New upstream release + + -- Camm Maguire Wed, 22 Sep 1999 15:18:53 -0400 + +lam (6.2b-pl4-2) unstable; urgency=low + + * Made lamwipe use /etc/lam/bhost.def by default + * changed RPI to sysv, better for Linux uniprocessors + * added --without-shortcircuit config option -- fixes BLACS errors + + -- Camm Maguire Wed, 22 Sep 1999 15:18:53 -0400 + +lam (6.2b-pl4-1) unstable; urgency=low + + * New upstream release + + -- Camm Maguire Fri, 17 Sep 1999 00:04:38 -0400 + +lam (6.2b-pl3-9) unstable; urgency=low + + * Updated alternative manpage links to point to /usr/share/man + + -- Camm Maguire Fri, 17 Sep 1999 00:04:38 -0400 + +lam (6.2b-pl3-8) unstable; urgency=low + + * Fixed lintian errors + + -- Camm Maguire Sat, 11 Sep 1999 16:32:07 -0400 + +lam (6.2b-pl3-7) unstable; urgency=low + + * Renamed to lam2 because of new library setup + * Enabled lam1-dev to axe previous directory /usr/lib/lam/lib + * Updated alternatives to new library location + * Changed liblam soname to 1 from 1.0 + * Removed -lmpi from mpicc and mpif77 + * Changed hcc and hf77 to use -llam + * Removed double compile from rules + * Removed sub libraries + * Moved liblam to /usr/lib + * Linked binaries to merged liblam as permitted by upstream + + -- Camm Maguire Sun, 15 Aug 1999 17:07:48 -0400 + +lam (6.2b-pl3-6) unstable; urgency=low + + * Made lam-runtime remove lam1-runtime + * Changed lam1-runtime package name to lam-runtime to fit policy + + -- Camm Maguire Sat, 14 Aug 1999 15:26:03 -0400 + +lam (6.2b-pl3-5) unstable; urgency=low + + * Changed short description to fit and be acronym free + + -- Camm Maguire Wed, 11 Aug 1999 18:22:56 -0400 + +lam (6.2b-pl3-4) unstable; urgency=low + + * Removed HBIND def for linux, fixes mpicc/hcc error + * Removed .ex files from debian + * Removed postinst/prerm from basedir + + -- Camm Maguire Mon, 2 Aug 1999 18:17:25 -0400 + +lam (6.2b-pl3-3) unstable; urgency=low + + * Put back lam61.doc.gs in lam1-dev + * Renamed mater alternative to libmpi.so.1 to avoid breakage with older 'mpi' + * Divided alternatives appropriately among packages + * Changed wipe to lamwipe in lamnet.h + * Updated Replaces/Conflicts control mechanisms + * fixed mpicc and mpif77 alternatives bugs + + -- Camm Maguire Thu, 29 Jul 1999 11:25:37 -0400 + +lam (6.2b-pl3-2) unstable; urgency=low + + * Changed scripts to /bin/sh, added set -e + * Symlink /usr/lib/lam/boot -> /etc/lam + * Moved /usr/lib/lam/boot to /etc/lam + * CC=cc + + -- Camm Maguire Thu, 29 Jul 1999 11:07:22 -0400 + +lam (6.2b-pl3-1) unstable; urgency=low + + * Fixed hardoced paths in hboot, hcc,hf77,lamboot,lamwipe,mpicc,mpif77,mpirun_lam,recon + * mpicc undocumented binary + * Eliminated rpath from configure.in for shared libraries + * Added 'final-home' configuration option for paths hard-coded into some binaries + * Linked manpages PRCVC and PRCVO to psend, instead of PSND + * Disabled builtin install of manpages, used dh_installmanpages instead + * Moved to debhelper + * Split package into shared library, runtime, and dev + * New upstream release. + + -- Camm Maguire Thu, 8 Jul 1999 14:03:49 -0400 + +lam (6.1-8) unstable; urgency=low + + * Changed 'wipe' to 'lamwipe' to co-exist with package 'wipe' + + -- Camm Maguire Thu, 8 Jul 1999 11:29:09 -0400 + +lam (6.1-7) unstable; urgency=low + + * Added lamd manpage reference as directed by upstream. + + -- Camm Maguire Thu, 22 Apr 1999 10:32:09 -0400 + +lam (6.1-6) unstable; urgency=low + + * Fixed lintian error: Perms for all manpages: 644 + * Fixed lintian error: Perms for hcp and sweep: 755 + * Fixed lintian error: lengthy man page symlinks + * Fixed lintian error: No tabs in Description + * Fixed lintian error: man page for lamd + + -- Camm Maguire Mon, 12 Apr 1999 12:17:41 -0400 + +lam (6.1-5) unstable; urgency=low + + * Did same for mpirun + * Replaced DEFP* definitions in Makefiles under tools directory so default LAMHOME works + + -- Camm Maguire Wed, 10 Mar 1999 13:06:24 -0500 + +lam (6.1-4) unstable; urgency=low + + * Updated README.Debian to point to mpi-doc for manpages + * Applied patch for powerpc and glibc-2.1 + + -- Camm Maguire Tue, 9 Mar 1999 11:39:32 -0500 + +lam (6.1-3) unstable; urgency=low + + * Applied patch to enable compilation on m68k, also gracefully fails + for non-supported CPUs (thanks Roman.Hodek@informatik.uni-erlangen.de!) + + -- Camm Maguire Wed, 3 Feb 1999 10:19:54 -0500 + +lam (6.1-2) unstable; urgency=low + + * Modified debian/rules to compile on non-i386 architectures + * Modified debian/rules to allow make clean on newly unpacked source + + -- Camm Maguire Tue, 26 Jan 1999 11:03:21 -0500 + +lam (6.1-1) frozen unstable; urgency=low + + * Hardcoded DEFP path in hcc and hf77 Makefiles + * Added compatability links h,bin, and man in /usr/lib/lam + * Handled alternative collisions: moved mpirun.1.gz to mpirun_lam.1.gz + * Handled alternative collisions: had mpirun built as mpirun_lam + * Moved man pages to /usr/man + * Moved binaries to /usr/bin + * Had debstd handle man pages instead of man/Makefile + * Used update-alternatives for /usr/include/mpi + * Used update-alternatives for /usr/man/man1/mpirun.1.gz + * Used update-alternatives for /usr/bin/mpirun + * Used update-alternatives for /usr/lib/libmpi.a + * Built merge library libmpi_merge.a in /usr/lib/lam/lib + * Converted lam61.doc.ps from lam61.doc.pdf on website + * Added lam61.doc.ps to /usr/doc/lam + * loaded examples and doc directory under /usr/doc/lam + * Added DESTDIR=`pwd`/debian/tmp to build make in debian/rules + * patched otb/t/etc/srfd.c to use msg.controllen in linux + * patched otb/t/etc/srfd.c to use msg.control in linux + * debian/rules sets config link back to sparc on clean + * debian/rules sets config link to linux on build + * Lam home set to /usr/lib/lam + * + * + * Initial Release. + + -- Camm Maguire Tue, 15 Dec 1998 17:48:49 -0500 + + --- lam-7.1.2.orig/debian/release.html +++ lam-7.1.2/debian/release.html @@ -0,0 +1,595 @@ + + + + + + + + + + + + + LAM 7.0.5 Release Notes + + + + + + ++ + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ LAM/MPI logo + +

LAM 7.0.5 Release Notes

+
+ + + + + + + + + + +
+ + + + + + + + +
+   |   + Home +   |   + Download +   |   + Documentation +   |   + FAQ +   |   + + + + + + +
+
+ +
+
+ + + + +
+ + + + + + +
+ + +This page provides release notes for LAM targeted at LAM users. The +bulk of the release notes for LAM/MPI 7.0.5 are in the +Installation Guide and +User's Guide. Both +documents are also included in the doc/ directory of +every LAM/MPI tarball. + +

+


+ +

Case-Insensitive Filesystems

+ + +On systems with case-insensitive filesystems (such as Mac OS X with +HFS+, or Linux with NTFS), the mpicc and mpiCC commands +will both refer to the same executable. This obviously makes +distinguishing between the mpicc and mpiCC wrapper +compilers impossible. LAM will attempt to determine if you are +building on a case-insensitive filesystem. If you are, the C++ +wrapper compiler will be called mpic++. Otherwise, the C++ +compiler will be called mpiCC (although mpic++ will also +be available). + +

+


+ +

NFS-shared /tmp

+ + +The LAM per-session directory may not work properly when hosted in an +NFS directory, and may cause problems when running MPI programs and/or +supplementary LAM run-time environment commands. If using a local +filesystem is not possible (e.g., on diskless workstations), the use +of tmpfs or tinyfs is recommended. LAM's session +directory will not grow large; it contains a small amount of meta data +as well as known endpoints for Unix sockets to allow LAM/MPI programs +to contact the local LAM run-time environment daemon. + + +

+


+ +

AFS and tokens/permissoins

+ + +AFS has some peculiarities, especially with file permissions when +using rsh/ssh. + +

Many sites tend to install the AFS rsh replacement that +passes tokens to the remote machine as the default rsh. +Similarly, most modern versions of ssh have the ability +to pass AFS tokens. Hence, if you are using the rsh boot +module with recon or lamboot, your AFS token +will be passed to the remote LAM daemon automatically. If your site +does not install the AFS replacement rsh as the default, +consult the documentation on with-rsh to see how to +set the path to the rsh that LAM will use. + +

Once you use the replacement rsh or an AFS-capable +ssh, you should get a token on the target node when using +the rsh boot module (If you are using a different boot +module, you may experience problems with obtaining AFS tokens on +remote nodes.). This means that your LAM daemons are running with +your AFS token, and you should be able to run any program that you +wish, including those that are not system:anyuser +accessible. You will even be able to write into AFS directories where +you have write permission (as you would expect). + +

Keep in mind, however, that AFS tokens have limited lives, and will +eventually expire. This means that your LAM daemons (and user MPI +programs) will lose their AFS permissions after some specified time +unless you renew your token (with the klog command, for example) +on the originating machine before the token runs out. This can play +havoc with long-running MPI programs that periodically write out file +results; if you lose your AFS token in the middle of a run, and your +program tries to write out to a file, it will not have permission to, +which may cause Bad Things to happen. + +

If you need to run long MPI jobs with LAM on AFS, it is usually +advisable to ask your AFS administrator to increase your default token +life time to a large value, such as 2 weeks. + + + +

+


+ +

Solaris and GM

+ + +The gm RPI will fail to function properly on versions of Solaris +older than Solaris 7. + + + +
+
+
+ + + + + + + + + +
+ + +
+
+ + + --- lam-7.1.2.orig/debian/control +++ lam-7.1.2/debian/control @@ -0,0 +1,74 @@ +Source: lam +Section: devel +Priority: extra +Maintainer: Camm Maguire +Build-Depends: autoconf,automake1.9,debhelper (>= 4.1.16),gfortran,texinfo,autotools-dev,help2man +Standards-Version: 3.8.0 + +Package: lam-mpidoc +Section: doc +Architecture: all +Conflicts: mpi-doc +Replaces: mpi-doc +Description: Documentation for the Message Passing Interface standard + This package contains man pages describing the Message Passing + Interface standard. + . + These pages are newly provided by the LAM package, and are also found + in the mpi-doc package build from the mpich source package. + +Package: lam4-dev +Section: devel +Architecture: any +Depends: liblam4, libc6-dev +Provides: lam-dev +Conflicts: lam-dev,lam,lam1-dev +Replaces: lam-dev,lam,lam1-dev,lam2-dev,lam3-dev,lam-runtime (<< 6.3-3) +Description: Development of parallel programs using LAM + LAM (Local Area Multicomputer) is an open source implementation of the + Message Passing Interface (MPI) standard. + . + This package provides the development headers and related files. + +Package: liblam4 +Section: libs +Architecture: any +Depends: ${shlibs:Depends} +Provides: mpi +Conflicts: lam,lam1,lam4,lam4c2 +Replaces: lam,lam1,lam4,lam4c2 +Recommends: lam-runtime +Description: Shared libraries used by LAM parallel programs + LAM (Local Area Multicomputer) is an open source implementation of the + Message Passing Interface (MPI) standard. + . + This package provides the shared library. + +Package: lam-runtime +Section: utils +Architecture: any +Conflicts: lam1-runtime,lam +Replaces: lam1-runtime,lam +Depends: ${shlibs:Depends},ssh-client | rsh-client,ssh-server | rsh-server +Description: LAM runtime environment for executing parallel programs + LAM (Local Area Multicomputer) is an open source implementation of the + Message Passing Interface (MPI) standard. + . + Some enhancements in LAM 6.3 are: + o Added the MPI-2 C++ bindings package (chapter 10 from the MPI-2 + standard) from the Laboratory for Scientific Computing at the + University of Notre Dame. + o Added ROMIO MPI I/O package (chapter 9 from the MPI-2 standard) + from the Argonne National Laboratory. + o Pseudo-tty support for remote IO (e.g., line buffered output). + o Ability to pass environment variables through mpirun. + o Ability to mpirun shell scripts/debuggers/etc. (that eventually + run LAM/MPI programs). + o Ability to execute non-MPI programs across the multicomputer. + o Added configurable ability to zero-fill internal LAM buffers + before they are used (for development tools such as Purify). + o Greatly expanded error messages; provided for customizable + local help files. + o Expanded and updated documentation. + o Various bug fixes and minor enhancements. + --- lam-7.1.2.orig/debian/lam4-dev.dirs +++ lam-7.1.2/debian/lam4-dev.dirs @@ -0,0 +1,3 @@ +usr/lib +usr/include +etc/lam --- lam-7.1.2.orig/debian/liblam4.postinst +++ lam-7.1.2/debian/liblam4.postinst @@ -0,0 +1,9 @@ +#!/bin/sh + +set -e + +if [ "$1" = "configure" ]; then + ldconfig +fi + +#DEBHELPER# --- lam-7.1.2.orig/debian/lam-runtime.dirs +++ lam-7.1.2/debian/lam-runtime.dirs @@ -0,0 +1 @@ +/etc/lam --- lam-7.1.2.orig/debian/lam-runtime.prerm +++ lam-7.1.2/debian/lam-runtime.prerm @@ -0,0 +1,12 @@ +#!/bin/sh + +set -e + +if [ "$1" != "upgrade" ] +then + update-alternatives --remove mpirun /usr/bin/mpirun.lam +fi + +#DEBHELPER# + +exit 0 --- lam-7.1.2.orig/debian/lam4-dev.docs +++ lam-7.1.2/debian/lam4-dev.docs @@ -0,0 +1,2 @@ +debian/lam61.nol.doc.ps +romio/doc --- lam-7.1.2.orig/debian/lam-runtime.docs +++ lam-7.1.2/debian/lam-runtime.docs @@ -0,0 +1,3 @@ +debian/release.html +doc/user.pdf +doc/install.pdf --- lam-7.1.2.orig/debian/lam-mpidoc.files +++ lam-7.1.2/debian/lam-mpidoc.files @@ -0,0 +1,220 @@ +usr/share/man/man3/MPIO_Request_c2f.3 +usr/share/man/man3/MPIO_Request_f2c.3 +usr/share/man/man3/MPIO_Test.3 +usr/share/man/man3/MPIO_Wait.3 +usr/share/man/man3/MPI_Abort.3 +usr/share/man/man3/MPI_Address.3 +usr/share/man/man3/MPI_Allgather.3 +usr/share/man/man3/MPI_Allgatherv.3 +usr/share/man/man3/MPI_Allreduce.3 +usr/share/man/man3/MPI_Alltoall.3 +usr/share/man/man3/MPI_Alltoallv.3 +usr/share/man/man3/MPI_Attr_delete.3 +usr/share/man/man3/MPI_Attr_get.3 +usr/share/man/man3/MPI_Attr_put.3 +usr/share/man/man3/MPI_Barrier.3 +usr/share/man/man3/MPI_Bcast.3 +usr/share/man/man3/MPI_Bsend.3 +usr/share/man/man3/MPI_Bsend_init.3 +usr/share/man/man3/MPI_Buffer_attach.3 +usr/share/man/man3/MPI_Buffer_detach.3 +usr/share/man/man3/MPI_Cancel.3 +usr/share/man/man3/MPI_Cart_coords.3 +usr/share/man/man3/MPI_Cart_create.3 +usr/share/man/man3/MPI_Cart_get.3 +usr/share/man/man3/MPI_Cart_map.3 +usr/share/man/man3/MPI_Cart_rank.3 +usr/share/man/man3/MPI_Cart_shift.3 +usr/share/man/man3/MPI_Cart_sub.3 +usr/share/man/man3/MPI_Cartdim_get.3 +usr/share/man/man3/MPI_Comm_compare.3 +usr/share/man/man3/MPI_Comm_create.3 +usr/share/man/man3/MPI_Comm_dup.3 +usr/share/man/man3/MPI_Comm_free.3 +usr/share/man/man3/MPI_Comm_group.3 +usr/share/man/man3/MPI_Comm_rank.3 +usr/share/man/man3/MPI_Comm_remote_group.3 +usr/share/man/man3/MPI_Comm_remote_size.3 +usr/share/man/man3/MPI_Comm_size.3 +usr/share/man/man3/MPI_Comm_split.3 +usr/share/man/man3/MPI_Comm_test_inter.3 +usr/share/man/man3/MPI_DUP_FN.3 +usr/share/man/man3/MPI_Dims_create.3 +usr/share/man/man3/MPI_Errhandler_create.3 +usr/share/man/man3/MPI_Errhandler_free.3 +usr/share/man/man3/MPI_Errhandler_get.3 +usr/share/man/man3/MPI_Errhandler_set.3 +usr/share/man/man3/MPI_Error_class.3 +usr/share/man/man3/MPI_Error_string.3 +usr/share/man/man3/MPI_File_c2f.3 +usr/share/man/man3/MPI_File_close.3 +usr/share/man/man3/MPI_File_delete.3 +usr/share/man/man3/MPI_File_f2c.3 +usr/share/man/man3/MPI_File_get_amode.3 +usr/share/man/man3/MPI_File_get_atomicity.3 +usr/share/man/man3/MPI_File_get_byte_offset.3 +usr/share/man/man3/MPI_File_get_errhandler.3 +usr/share/man/man3/MPI_File_get_group.3 +usr/share/man/man3/MPI_File_get_info.3 +usr/share/man/man3/MPI_File_get_position.3 +usr/share/man/man3/MPI_File_get_position_shared.3 +usr/share/man/man3/MPI_File_get_size.3 +usr/share/man/man3/MPI_File_get_type_extent.3 +usr/share/man/man3/MPI_File_get_view.3 +usr/share/man/man3/MPI_File_iread.3 +usr/share/man/man3/MPI_File_iread_at.3 +usr/share/man/man3/MPI_File_iread_shared.3 +usr/share/man/man3/MPI_File_iwrite.3 +usr/share/man/man3/MPI_File_iwrite_at.3 +usr/share/man/man3/MPI_File_iwrite_shared.3 +usr/share/man/man3/MPI_File_open.3 +usr/share/man/man3/MPI_File_preallocate.3 +usr/share/man/man3/MPI_File_read.3 +usr/share/man/man3/MPI_File_read_all.3 +usr/share/man/man3/MPI_File_read_all_begin.3 +usr/share/man/man3/MPI_File_read_all_end.3 +usr/share/man/man3/MPI_File_read_at.3 +usr/share/man/man3/MPI_File_read_at_all.3 +usr/share/man/man3/MPI_File_read_at_all_begin.3 +usr/share/man/man3/MPI_File_read_at_all_end.3 +usr/share/man/man3/MPI_File_read_ordered.3 +usr/share/man/man3/MPI_File_read_ordered_begin.3 +usr/share/man/man3/MPI_File_read_ordered_end.3 +usr/share/man/man3/MPI_File_read_shared.3 +usr/share/man/man3/MPI_File_seek.3 +usr/share/man/man3/MPI_File_seek_shared.3 +usr/share/man/man3/MPI_File_set_atomicity.3 +usr/share/man/man3/MPI_File_set_errhandler.3 +usr/share/man/man3/MPI_File_set_info.3 +usr/share/man/man3/MPI_File_set_size.3 +usr/share/man/man3/MPI_File_set_view.3 +usr/share/man/man3/MPI_File_sync.3 +usr/share/man/man3/MPI_File_write.3 +usr/share/man/man3/MPI_File_write_all.3 +usr/share/man/man3/MPI_File_write_all_begin.3 +usr/share/man/man3/MPI_File_write_all_end.3 +usr/share/man/man3/MPI_File_write_at.3 +usr/share/man/man3/MPI_File_write_at_all.3 +usr/share/man/man3/MPI_File_write_at_all_begin.3 +usr/share/man/man3/MPI_File_write_at_all_end.3 +usr/share/man/man3/MPI_File_write_ordered.3 +usr/share/man/man3/MPI_File_write_ordered_begin.3 +usr/share/man/man3/MPI_File_write_ordered_end.3 +usr/share/man/man3/MPI_File_write_shared.3 +usr/share/man/man3/MPI_Finalize.3 +usr/share/man/man3/MPI_Finalized.3 +usr/share/man/man3/MPI_Gather.3 +usr/share/man/man3/MPI_Gatherv.3 +usr/share/man/man3/MPI_Get_count.3 +usr/share/man/man3/MPI_Get_elements.3 +usr/share/man/man3/MPI_Get_processor_name.3 +usr/share/man/man3/MPI_Get_version.3 +usr/share/man/man3/MPI_Graph_create.3 +usr/share/man/man3/MPI_Graph_get.3 +usr/share/man/man3/MPI_Graph_map.3 +usr/share/man/man3/MPI_Graph_neighbors.3 +usr/share/man/man3/MPI_Graph_neighbors_count.3 +usr/share/man/man3/MPI_Graphdims_get.3 +usr/share/man/man3/MPI_Group_compare.3 +usr/share/man/man3/MPI_Group_difference.3 +usr/share/man/man3/MPI_Group_excl.3 +usr/share/man/man3/MPI_Group_free.3 +usr/share/man/man3/MPI_Group_incl.3 +usr/share/man/man3/MPI_Group_intersection.3 +usr/share/man/man3/MPI_Group_range_excl.3 +usr/share/man/man3/MPI_Group_range_incl.3 +usr/share/man/man3/MPI_Group_rank.3 +usr/share/man/man3/MPI_Group_size.3 +usr/share/man/man3/MPI_Group_translate_ranks.3 +usr/share/man/man3/MPI_Group_union.3 +usr/share/man/man3/MPI_Ibsend.3 +usr/share/man/man3/MPI_Info_c2f.3 +usr/share/man/man3/MPI_Info_create.3 +usr/share/man/man3/MPI_Info_delete.3 +usr/share/man/man3/MPI_Info_dup.3 +usr/share/man/man3/MPI_Info_f2c.3 +usr/share/man/man3/MPI_Info_free.3 +usr/share/man/man3/MPI_Info_get.3 +usr/share/man/man3/MPI_Info_get_nkeys.3 +usr/share/man/man3/MPI_Info_get_nthkey.3 +usr/share/man/man3/MPI_Info_get_valuelen.3 +usr/share/man/man3/MPI_Info_set.3 +usr/share/man/man3/MPI_Init.3 +usr/share/man/man3/MPI_Init_thread.3 +usr/share/man/man3/MPI_Initialized.3 +usr/share/man/man3/MPI_Intercomm_create.3 +usr/share/man/man3/MPI_Intercomm_merge.3 +usr/share/man/man3/MPI_Iprobe.3 +usr/share/man/man3/MPI_Irecv.3 +usr/share/man/man3/MPI_Irsend.3 +usr/share/man/man3/MPI_Isend.3 +usr/share/man/man3/MPI_Issend.3 +usr/share/man/man3/MPI_Keyval_create.3 +usr/share/man/man3/MPI_Keyval_free.3 +usr/share/man/man3/MPI_Op_create.3 +usr/share/man/man3/MPI_Op_free.3 +usr/share/man/man3/MPI_Pack.3 +usr/share/man/man3/MPI_Pack_size.3 +usr/share/man/man3/MPI_Pcontrol.3 +usr/share/man/man3/MPI_Probe.3 +usr/share/man/man3/MPI_Recv.3 +usr/share/man/man3/MPI_Recv_init.3 +usr/share/man/man3/MPI_Reduce.3 +usr/share/man/man3/MPI_Reduce_scatter.3 +usr/share/man/man3/MPI_Request_c2f.3 +usr/share/man/man3/MPI_Request_free.3 +usr/share/man/man3/MPI_Rsend.3 +usr/share/man/man3/MPI_Rsend_init.3 +usr/share/man/man3/MPI_Scan.3 +usr/share/man/man3/MPI_Scatter.3 +usr/share/man/man3/MPI_Scatterv.3 +usr/share/man/man3/MPI_Send.3 +usr/share/man/man3/MPI_Send_init.3 +usr/share/man/man3/MPI_Sendrecv.3 +usr/share/man/man3/MPI_Sendrecv_replace.3 +usr/share/man/man3/MPI_Ssend.3 +usr/share/man/man3/MPI_Ssend_init.3 +usr/share/man/man3/MPI_Start.3 +usr/share/man/man3/MPI_Startall.3 +usr/share/man/man3/MPI_Status_c2f.3 +usr/share/man/man3/MPI_Test.3 +usr/share/man/man3/MPI_Test_cancelled.3 +usr/share/man/man3/MPI_Testall.3 +usr/share/man/man3/MPI_Testany.3 +usr/share/man/man3/MPI_Testsome.3 +usr/share/man/man3/MPI_Topo_test.3 +usr/share/man/man3/MPI_Type_commit.3 +usr/share/man/man3/MPI_Type_contiguous.3 +usr/share/man/man3/MPI_Type_create_darray.3 +usr/share/man/man3/MPI_Type_create_subarray.3 +usr/share/man/man3/MPI_Type_extent.3 +usr/share/man/man3/MPI_Type_free.3 +usr/share/man/man3/MPI_Type_get_contents.3 +usr/share/man/man3/MPI_Type_get_envelope.3 +usr/share/man/man3/MPI_Type_hindexed.3 +usr/share/man/man3/MPI_Type_hvector.3 +usr/share/man/man3/MPI_Type_indexed.3 +usr/share/man/man3/MPI_Type_lb.3 +usr/share/man/man3/MPI_Type_size.3 +usr/share/man/man3/MPI_Type_struct.3 +usr/share/man/man3/MPI_Type_ub.3 +usr/share/man/man3/MPI_Type_vector.3 +usr/share/man/man3/MPI_Unpack.3 +usr/share/man/man3/MPI_Wait.3 +usr/share/man/man3/MPI_Waitall.3 +usr/share/man/man3/MPI_Waitany.3 +usr/share/man/man3/MPI_Waitsome.3 +usr/share/man/man3/MPI_Wtick.3 +usr/share/man/man3/MPI_Wtime.3 +usr/share/man/man3/MPI_Win_unlock.3 +usr/share/man/man3/MPI_Win_Test.3 +usr/share/man/man3/MPI_Win_Lock.3 +usr/share/man/man3/MPI_Win_call_errhandler.3 +usr/share/man/man3/MPIL_Type_id.3 +usr/share/man/man3/MPIL_Trace_on.3 +usr/share/man/man3/MPIL_Trace_off.3 +usr/share/man/man3/MPIL_Signal.3 +usr/share/man/man3/MPIL_Request_set_name.3 +usr/share/man/man3/MPIL_Request_get_name.3 +usr/share/man/man3/MPIL_Comm_id.3 +usr/share/man/man3/MPIL_Comm_gps.3 --- lam-7.1.2.orig/debian/lam4-dev.files +++ lam-7.1.2/debian/lam4-dev.files @@ -0,0 +1,109 @@ +usr/bin/mpicc.lam +usr/bin/mpic++.lam +usr/bin/mpif77.lam +usr/lib/*.a +usr/lib/*.so +usr/lib/lam/lib +usr/lib/lam/man +usr/lib/lam/include +usr/include +usr/share/man/man1/hcc.1 +usr/share/man/man1/hf77.1 +usr/share/man/man1/hcp.1 +usr/share/man/man1/introu.1 +usr/share/man/man1/mpiCC.lam.1 +usr/share/man/man1/mpic++.lam.1 +usr/share/man/man1/mpicc.lam.1 +usr/share/man/man1/mpif77.lam.1 +usr/share/man/man3/MPI_Accumulate.3 +usr/share/man/man3/MPI_Alloc_mem.3 +usr/share/man/man3/MPI_COMM_DUP_FN.3 +usr/share/man/man3/MPI_Close_port.3 +usr/share/man/man3/MPI_Comm_accept.3 +usr/share/man/man3/MPI_Comm_c2f.3 +usr/share/man/man3/MPI_Comm_connect.3 +usr/share/man/man3/MPI_Comm_create_errhandler.3 +usr/share/man/man3/MPI_Comm_create_keyval.3 +usr/share/man/man3/MPI_Comm_delete_attr.3 +usr/share/man/man3/MPI_Comm_disconnect.3 +usr/share/man/man3/MPI_Comm_f2c.3 +usr/share/man/man3/MPI_Comm_free_keyval.3 +usr/share/man/man3/MPI_Comm_get_attr.3 +usr/share/man/man3/MPI_Comm_get_errhandler.3 +usr/share/man/man3/MPI_Comm_get_name.3 +usr/share/man/man3/MPI_Comm_get_parent.3 +usr/share/man/man3/MPI_Comm_join.3 +usr/share/man/man3/MPI_Comm_ser_errhandler.3 +usr/share/man/man3/MPI_Comm_set_attr.3 +usr/share/man/man3/MPI_Comm_set_name.3 +usr/share/man/man3/MPI_Comm_spawn.3 +usr/share/man/man3/MPI_Comm_spawn_multiple.3 +usr/share/man/man3/MPI_Errhandler_c2f.3 +usr/share/man/man3/MPI_Errhandler_f2c.3 +usr/share/man/man3/MPI_Free_mem.3 +usr/share/man/man3/MPI_Get.3 +usr/share/man/man3/MPI_Get_address.3 +usr/share/man/man3/MPI_Group_c2f.3 +usr/share/man/man3/MPI_Group_f2c.3 +usr/share/man/man3/MPI_Is_thread_main.3 +usr/share/man/man3/MPI_Lookup_name.3 +usr/share/man/man3/MPI_Op_c2f.3 +usr/share/man/man3/MPI_Op_f2c.3 +usr/share/man/man3/MPI_Open_port.3 +usr/share/man/man3/MPI_Publish_name.3 +usr/share/man/man3/MPI_Put.3 +usr/share/man/man3/MPI_Query_thread.3 +usr/share/man/man3/MPI_Request_f2c.3 +usr/share/man/man3/MPI_Status_f2c.3 +usr/share/man/man3/MPI_TYPE_DUP_FN.3 +usr/share/man/man3/MPI_Type_c2f.3 +usr/share/man/man3/MPI_Type_create_extent.3 +usr/share/man/man3/MPI_Type_create_hindexed.3 +usr/share/man/man3/MPI_Type_create_hvector.3 +usr/share/man/man3/MPI_Type_create_keyval.3 +usr/share/man/man3/MPI_Type_create_struct.3 +usr/share/man/man3/MPI_Type_delete_attr.3 +usr/share/man/man3/MPI_Type_dup.3 +usr/share/man/man3/MPI_Type_f2c.3 +usr/share/man/man3/MPI_Type_free_keyval.3 +usr/share/man/man3/MPI_Type_get_attr.3 +usr/share/man/man3/MPI_Type_get_extent.3 +usr/share/man/man3/MPI_Type_get_name.3 +usr/share/man/man3/MPI_Type_get_true_extent.3 +usr/share/man/man3/MPI_Type_set_attr.3 +usr/share/man/man3/MPI_Type_set_name.3 +usr/share/man/man3/MPI_WIN_DUP_FN.3 +usr/share/man/man3/MPI_Win_c2f.3 +usr/share/man/man3/MPI_Win_complete.3 +usr/share/man/man3/MPI_Win_create.3 +usr/share/man/man3/MPI_Win_create_errhandler.3 +usr/share/man/man3/MPI_Win_create_keyval.3 +usr/share/man/man3/MPI_Win_delete_attr.3 +usr/share/man/man3/MPI_Win_f2c.3 +usr/share/man/man3/MPI_Win_fence.3 +usr/share/man/man3/MPI_Win_free.3 +usr/share/man/man3/MPI_Win_free_keyval.3 +usr/share/man/man3/MPI_Win_get_attr.3 +usr/share/man/man3/MPI_Win_get_errhandler.3 +usr/share/man/man3/MPI_Win_get_group.3 +usr/share/man/man3/MPI_Win_get_name.3 +usr/share/man/man3/MPI_Win_post.3 +usr/share/man/man3/MPI_Win_set_attr.3 +usr/share/man/man3/MPI_Win_set_errhandler.3 +usr/share/man/man3/MPI_Win_set_name.3 +usr/share/man/man3/MPI_Win_start.3 +usr/share/man/man3/MPI_Win_wait.3 +usr/share/man/man3/XMPI_Buoy.3 +usr/share/man/man3/XMPI_Coloroff.3 +usr/share/man/man3/XMPI_Coloron.3 +usr/share/man/man7/libmpi.7 +usr/share/man/man5/CONSTANTS.5 +usr/share/man/man5/appschema.5 +usr/share/man/man5/bhost.5 +usr/share/man/man5/conf.5 +usr/share/man/man5/lam-helpfile.5 +usr/share/man/man5/procschema.5 +usr/share/man/man7/LAM.7 +usr/share/man/man7/MPI.7 +usr/share/man/man7/lam.7 +usr/share/man/man7/mpi.7 --- lam-7.1.2.orig/debian/copyright +++ lam-7.1.2/debian/copyright @@ -0,0 +1,60 @@ +This package was debianized by Camm Maguire camm@enhanced.com on +Thu, 8 Jul 1999 14:03:49 -0400. + +It was downloaded from http://www.mpi.nd.edu/lam/ + +Upstream Authors: LAM team, llamas@mpi.nd.edu. + +Copyright: follows + +COPYRIGHT NOTICE: + +Copyright 1998-2001, University of Notre Dame. +Authors: Jeffrey M. Squyres and Arun Rodrigues with Brian Barrett, + Kinis L. Meyer, M. D. McNally, and Andrew Lumsdaine + +LICENSE AGREEMENT: + +In consideration of being allowed to copy and/or use this software, +user agrees to be bound by the terms and conditions of this License +Agreement as "Licensee." This Agreement gives you, the LICENSEE, +certain rights and obligations. By using the software, you indicate +that you have read, understood, and will comply with the following +terms and conditions. + +Permission is hereby granted to use or copy this program for any +purpose, provided the text of this NOTICE (to include COPYRIGHT +NOTICE, LICENSE AGREEMENT, and DISCLAIMER) is retained with all +copies. Permission to modify the code and to distribute modified code +is granted, provided the text of this NOTICE is retained, a notice +that the code was modified is included with the above COPYRIGHT NOTICE +and with the COPYRIGHT NOTICE in any modified files, and that this +file ("LICENSE") is distributed with the modified code. + +Title to copyright to this software and its derivatives and to any +associated documentation shall at all times remain with Licensor and +LICENSEE agrees to preserve the same. Nothing in this Agreement shall +be construed as conferring rights to use in advertising, publicity or +otherwise any trademark or the name of the University of Notre Dame du +Lac. + +DISCLAIMER: + +LICENSOR MAKES NO REPRESENTATIONS OR WARRANTIES, EXPRESS OR IMPLIED. +By way of example, but not limitation, Licensor MAKES NO +REPRESENTATIONS OR WARRANTIES OF MERCHANTABILITY OR FITNESS FOR ANY +PARTICULAR PURPOSE OR THAT THE USE OF THE LICENSED SOFTWARE COMPONENTS +OR DOCUMENTATION WILL NOT INFRINGE ANY PATENTS, COPYRIGHTS, TRADEMARKS +OR OTHER RIGHTS. + +The Authors and the University of Notre Dame du Lac shall not be held +liable for any liability nor for any direct, indirect or consequential +damages with respect to any claim by LICENSEE or any third party on +account of or arising from this Agreement or use of this software. + +Any disputes arising out of this Agreement or LICENSEE'S use of the +software at any time shall be resolved by the courts of the state of +Indiana. LICENSEE hereby consents to the jurisdiction of the Indiana +courts and waives the right to challenge the jurisdiction thereof in +any dispute arising out of this Agreement or Licensee's use of the +software. --- lam-7.1.2.orig/debian/watch +++ lam-7.1.2/debian/watch @@ -0,0 +1,6 @@ +# Example watch control file for uscan +# Rename this file to "watch" and then you can run the "uscan" command +# to check for upstream updates and more. +# Site Directory Pattern Version Script +version=2 +http://www.lam-mpi.org/download/files/ .*lam-([0-9\\.]*).tar.gz debian uupdate --- lam-7.1.2.orig/debian/lam-runtime.doc-base.installation-guide +++ lam-7.1.2/debian/lam-runtime.doc-base.installation-guide @@ -0,0 +1,11 @@ +Document: lam-installation-guide +Title: Debian LAM Manual - installation guide +Author: LAM team, llamas@mpi.nd.edu. +Abstract: This manual documents the LAM + Message Passing Interface (MPI) system + for parallel computing. +Section: Apps/Programming + +Format: PDF +Index: /usr/share/doc/lam-runtime/install.pdf.gz +Files: /usr/share/doc/lam-runtime/install.pdf.gz --- lam-7.1.2.orig/debian/README.debian +++ lam-7.1.2/debian/README.debian @@ -0,0 +1,12 @@ +lam for DEBIAN +---------------------- + +Man pages for the MPI function calls are currently included in the +lam-mpidoc package. + +In the Debian lam-runtime package, the 'wipe' program produced by the +upstream source has been renamed to 'lamwipe' in order to avoid a +conflict with a file removal utility of the same name which is +separately packaged and supplied by the distribution. + +Camm Maguire , Thu, 8 Jul 1999 14:03:49 -0400 --- lam-7.1.2.orig/debian/mm +++ lam-7.1.2/debian/mm @@ -0,0 +1,17 @@ +#!/bin/bash + +if [ "$1" == "--help" ] ; then + echo \`$PNAME\' + echo + $MPATH/$PNAME $1 2>&1 #| \ +# awk '/where options include/ {next} {print}' |\ +# awk '/ATLAS usage:/ {i=1;next} {if (i) {$0="Usage: " $0;i=0};print}' +else + echo $PNAME $VERSION + echo +# echo Copyright \(C\) 2002 R. Clint Whaley et. al. +# awk '/^Copyright/ {i=1;next} {if (i) print}' /usr/share/doc/atlas2-base/copyright +# echo +# echo Written by R. Clint Whaley, et. al. +fi +exit 0