From owner-mpi-comm@CS.UTK.EDU Mon Nov 23 16:08:35 1992
Return-Path: <owner-mpi-comm>
Received:  by CS.UTK.EDU (5.61++/2.8s-UTK)
	id AA26326; Mon, 23 Nov 92 15:50:10 -0500
Received: from THUD.CS.UTK.EDU by CS.UTK.EDU with SMTP (5.61++/2.8s-UTK)
	id AA26317; Mon, 23 Nov 92 15:50:05 -0500
From: Jack Dongarra <dongarra@cs.utk.edu>
Received:  by thud.cs.utk.edu (5.61++/2.7c-UTK)
	id AA06935; Mon, 23 Nov 92 15:50:04 -0500
Date: Mon, 23 Nov 92 15:50:04 -0500
Message-Id: <9211232050.AA06935@thud.cs.utk.edu>
To: mpi-comm@cs.utk.edu
Subject: mpi committees and mailing list
Status: R


The following mailing lists have been set up.

   mpi-comm@cs.utk.edu          Whole committee
   mpi-intro@cs.utk.edu         Introduction subcommittee
   mpi-pt2pt@cs.utk.edu         Point-to-point communication subcommittee
   mpi-collcomm@cs.utk.edu      Collective communication subcommittee
   mpi-ptop@cs.utk.edu          Process topology subcommittee
   mpi-lang@cs.utk.edu          Language binding subcommittee
   mpi-formal@cs.utk.edu        Formal language description subcommittee
   mpi-envir@cs.utk.edu         Environment inquiry subcommittee

All mail will be collected and can be retrieved by sending email to
netlib@ornl.gov and in the mail message typing:
send mpi-comm from mpi
send mpi-intro from mpi
etc.
Also try:
send index from mpi

I'm in the process of collecting information on how the HPF committee
operates and will pass along the details in the next few days.
I would like to suggest January 6 - 8 for the next meeting
in Dallas at the airport hotel. We should plan on starting around 1:00 on
January 6th and finishing around 3:00 on January 8th.

Below is a list of the subcommittees as I have them from our meeting
last week. Please let me know if you have any changes.

Regards,
Jack

Introduction Subcommittee
----------------------
Jack Dongarra - Chair 	dongarra@cs.utk.edu
Daniel Frye 		danielf@kgnvma.vnet.ibm.com
Tony Hey  		ajgh@ecs.soton.ac.uk
Rusty Lusk 		lusk@mcs.anl.gov
Steve Zenith 		zenith@kai.com


Point-To-Point Communication Subcommittee
-----------------------------------------
Marc Snir - Chair 	snir@watson.ibm.com
Scott Berryman 		berryman@cs.yale.edu
Jack Dongarra 		dongarra@cs.utk.edu
Al Geist 		geist@msr.epm.ornl.gov
Adam Greenberg 		moose@think.com
Bill Gropp 		gropp@mcs.anl.gov
Leslie Hart 		hart@fsl.noaa.gov
Rolf Hempel 		hempel@gmd.de
Tom Henderson 		hender@fsl.noaa.gov
Bob Knighten 		knighten@ssd.intel.com
Oliver McBryan          mcbryan@piper.cs.colorado.edu
Peter Rigsbee 		par@cray.com
David Walker 		walker@msr.epm.ornl.gov



Collective Communication Subcommittee
-------------------------------------
Al Geist - Chair 	geist@msr.epm.ornl.gov
Leslie Hart 		hart@fsl.noaa.gov
Jon Flowers 		jwf@parasoft.com
Adam Greenberg 		moose@think.com
Bob Knighten 		knighten@ssd.intel.com
Steve Otto 		otto@cse.ogi.edu
Peter Rigsbee 		par@cray.com
Marc Snir 		snir@watson.ibm.com
David Walker 		walker@msr.epm.ornl.gov


Process Topology Subcommittee
-----------------------------
Rolf Hempel - Chair 	hempel@gmd.de
Jon Flowers 		jwf@parasoft.com
Tom Henderson 		hender@fsl.noaa.gov
Oliver McBryan		mcbryan@piper.cs.colorado.edu
Steve Otto 		otto@cse.ogi.edu
Lew Tucker 		tucker@think.com


Language Binding Subcommittee
-----------------------------
Scott Berryman - Chair 	berryman@cs.yale.edu
Bruce Leisure 		bleasure@kai.com


Formal Language Description Subcommittee
----------------------------------------
Steve Zenith - Chair	zenith@kai.com 
Tony Hey 		ajgh@cs.ston.ac.uk
Rusty Lusk 		lusk@mcs.anl.gov


Environment Inquiry Subcommittee
---------------------------------
Bill Gropp - Chair 	gropp@mcs.anl.gov
Daniel Frye 		danielf@kgnvma.vnet.ibm.com


From owner-mpi-comm@CS.UTK.EDU  Tue Nov 24 15:37:43 1992
Received: from CS.UTK.EDU by surfer.EPM.ORNL.GOV (5.61/1.34)
	id AA02830; Tue, 24 Nov 92 15:37:43 -0500
Received:  by CS.UTK.EDU (5.61++/2.8s-UTK)
	id AA19627; Tue, 24 Nov 92 15:12:24 -0500
Received: from antares.mcs.anl.gov by CS.UTK.EDU with SMTP (5.61++/2.8s-UTK)
	id AA19622; Tue, 24 Nov 92 15:12:21 -0500
Received: from godzilla.mcs.anl.gov by antares.mcs.anl.gov (4.1/SMI-GAR)
	id AA25860; Tue, 24 Nov 92 14:12:19 CST
From: gropp@antares.mcs.anl.gov (William Gropp)
Received: by godzilla.mcs.anl.gov (4.1/GeneV4)
	id AA11600; Tue, 24 Nov 92 14:12:17 CST
Date: Tue, 24 Nov 92 14:12:17 CST
Message-Id: <9211242012.AA11600@godzilla.mcs.anl.gov>
To: mpi-comm@cs.utk.edu
Subject: Test Implementation of the Draft Standard

We have completed a first and rough draft of a test implementation.  We
have included (and run!) three sample programs written in MPI on a sun
network and on an Intel ipsc/i860.  It is available by anonymous ftp from
info.mcs.anl.gov in pub/mpi .  The README file there gives more information,
including how to get, install, and run the examples.

This is a rough draft; the file mpi.man.ps.Z contains a description of the
implementations architecture and man pages for all of the routines.
We will be updating this implementation with additional examples and
fewer restrictions soon.

Enjoy!
Bill Gropp and Rusty Lusk


From owner-mpi-comm@CS.UTK.EDU  Tue Nov 24 17:07:49 1992
Received: from CS.UTK.EDU by surfer.EPM.ORNL.GOV (5.61/1.34)
	id AA06915; Tue, 24 Nov 92 17:07:49 -0500
Received:  by CS.UTK.EDU (5.61++/2.8s-UTK)
	id AA21596; Tue, 24 Nov 92 16:45:52 -0500
Received: from THUD.CS.UTK.EDU by CS.UTK.EDU with SMTP (5.61++/2.8s-UTK)
	id AA21572; Tue, 24 Nov 92 16:45:38 -0500
From: Jack Dongarra <dongarra@cs.utk.edu>
Received:  by thud.cs.utk.edu (5.61++/2.7c-UTK)
	id AA21258; Tue, 24 Nov 92 16:45:35 -0500
Date: Tue, 24 Nov 92 16:45:35 -0500
Message-Id: <9211242145.AA21258@thud.cs.utk.edu>
To: mpi-comm@cs.utk.edu
Subject: working procedures


Chuck Koelbel has passed on some notes from the HPF experence.
I think we will find them useful in carring out our meetings.
Jack


HPFF Working Procedures

HPFF never had an explicit vote on adopting any operating procedures.  We 
did, however, informally adopt the following rules.


General Organization

Most of the technical details were hammered out in subgroups, which made 
the base proposals. The main group would discuss these proposals and 
(usually) adopt them. In practice, lots of the technical discussions were 
done on email lists. Keeping those lists public was a big part of the 
openness of the forum.

For a while, each subgroup brought its own proposal as handouts. 
Eventually, we ended up with a unified draft thanks to Dave Loveman. The 
intent (which we never lived up to) was that all proposals discussed at a 
meeting would be in that draft. Despite always having a loose proposal or 
two, the draft was extremely useful - among other things, it made editing a 
final report possible. 


Main Group / Plenary Session Matters

For running discussions, we used loosely-enforced Robert's Rules of 
Order.  Basically, we didn't stand on formalities unless the discussion 
was becoming unruly.  Some of the more often-invoked rules:
	1. Moving and voting on amendments before the main proposal.  Basically, 
	this kept the discussions focussed.
	2. Motions coming out of committee (subgroup) are automatically 
	seconded; others need a second from the floor.
	3. Triply-nested amendments are not allowed.  This keeps the confusion 
	down.
Generally, whoever was making the presentation ran the discussion, 
recognized comments from the floor, etc.  Ken usually came in after the 
meat of the discussion to run the votes.  Peer pressure was fairly 
effective at keeping people from filibustering (I think once there was a 
call to limit discussion).  More common was lots of people wanting to 
make comments - this was handled by the presenters, usually by saying "OK, 
let's go clockwise around the table".

Organizations were limited to 2 attendees each (not enforced, but no 
major problems). We passed around an attendence sheet at each meeting to 
keep track of who was there; because of various planning problems, I 
recommend using a pre-registration scheme ("send email to xxx@yyy if you 
plan to attend").  Organizations were asked to commit to having the same 
attendee at every meeting, and this was generally followed.  It's very 
important to have this kind of continuity in attendees, else we would 
have spent too much time in remedial education.

Each organization (school, company, lab) got one vote - note this was on an 
organization basis, not a person. We didn't have trouble with cheating on 
this rule - just make sure the representatives from an organization have 
agreed on who is voting. An organization was eligible to vote if it had 
attended 2 of the last 3 meetings, counting the current meeting (i.e. you 
could attend every other meeting and still vote; you could not vote at your 
first meeting). Obviously, we couldn't enforce this rule at the first 
two meetings. 

Accepting a section of the HPF language spec was a multi-step process.
	1. Someone wrote a draft specification; often there were a couple 
	drafts.  Details of these were hashed out in the subgroup.
	2. First Reading: The subgroup leader (or occasionally the draft author) 
	presented the subgroup-approved draft to the main group.  When there was 
	controversy, it was usually pointed out.  The main group discussed, 
	suggested changes (sometimes), and held a series of "straw votes" on the 
	proposal.  All attendees were eligible to vote in straw votes, which 
	were not binding on the subgroups.
	3. More subgroup discussion, both electronic and in person at the next 
	meeting, producing a revised proposal.
	4. Second Reading: The subgroup leader presented the revised proposal to 
	the main group.  Sections that were substantially the same as the 
	original (or an alternative presented at the first reading) were amended 
	by motion and eventually voted on.  Eligibility for votes was as 
	explained above.  Major additions (for example, when PURE functions were 
	added to FORALL between meetings) were treated as first readings at this 
	point.  Often most of the proposal was accepted, and a few sections were 
	sent back to subgroup for more work; these came back as second readings 
	at the next meeting.
	5. Once a section was accepted at second reading, it was "frozen" until 
	the end of the HPFF process.  Revisions were only allowed for clarity or 
	when new information surfaced (like discovering that the draft was 
	self-contradictory).  This limitation was enforced as strictly as we 
	could, to avoid backtracking.
	6. At the end of the process (December), we promised to allow 
	reconsideration of any feature.
See also the discussion of the Journal of Development below.


Subgroup Matters

Subgroups met independently of the main body, usually the afternoon and 
evening of the day before.  The leader of the subgroup ran these meetings 
using whatever style he or she was comfortable with.  Most of us took 
votes from whoever showed up, and ran a pseud-democratic style.  Also, 
there was a mailing list for each subgroup where most of the discussions 
went on.

Each subgroup was devoted to one topic from the following list:
	Data distribution
	FORALL and other parallel statements
	Fortran 90, storage & sequence association, and the HPF subset
	Intrinsic functions
	Parallel I/O
	EXTRINSIC (nee LOCAL, nee FOREIGN) functions
The groups met in parallel, which caused a little friction but was 
logstically unavoidable.  When a subject straddled two groups (like 
intrinsic functions for enquiring about distributions), the subgroup 
leaders would talk to each other and decide who would handle it - this 
often led to minor anti-turf battles (also known as "after you" 
deadlock).  Both groups would act as sanity checks on the results.

When it came time to write the draft, each subgroup became a chapter.  
The subgroup leader was the editor (and usually major author) of the 
chapter, and was responsible for making sure the chapter reflected the 
decisions made in the subgroup and in committee.  


Logistical Matters

Meetings were 2.5 days, starting Wednesday afternoon, in Dallas (there 
were exceptions to this for logistical reasons, but we would have 
prefered to keep them all on this schedule).  A typical schedule was

	Wednesday
	  1:30-6:00  Subgroup meetings, about 3 going on in parallel (reserve 4 
		"breakout" rooms with the hotel, fo 10-20 people each)
	  6:00-7:30  Unofficial dinner break (usually the subgroup leaders ate 
		together & planned the meeting agenda)
	  7:30-10:30 More subgroup meetings (subgroup leaders usually ended up 
		staying up late to revise drafts)
	
	Thursday
	  9:00-12:00 Full group meeting (coffee breaks at natural breaks)
	  12:00-1:30 Lunch (provided)
	  1:30-6:00  Full group meeting (and coffee breaks)
	  6:00-8:00  Dinner (attendees pay, but hotel provided transport to area 
		restaurant)
	  8:00-10:00 (Sometimes) Full group meeting (when no full meeting, 
		subgroups usually met instead)
	
	Friday
	  9:00-12:00 Full group meeting (and coffee breaks)
	  12:00-1:30 (Sometimes) Lunch (provided if we thought the meeting would 
		last long)
	  1:30-3:00  (Sometimes) Full group meeting

We tried to finish as early as possible on Friday, to allow people to 
catch flights.

Since we scheduled all the meetings early on, we set up a contract with 
the hotel.  I didn't handle the details, but I think this saved us a 
little money and a lot of aggravation (talk to Theresa Chatman if you 
need more info).  At any rate, this is a great thing for someone on your 
staff to set up.

We financed the meetings primarily from a per-meeting fee of $95 ($75 if 
we didn't have lunch the second day) per attendee.  Ken offered to foot 
the bill for academics to attend, based on the expectation of NSF funds.  
We're still waiting on those funds; highly recommend that you don't make 
such offers without first getting the cash.


Documentation

The Draft: The earlier you have one the better. David Loveman served as our 
general editor, collecting the chapters and trying to smooth format 
details. I contributed the introduction and credits, mainly cribbed from 
meeting notes and other announcements. Guy Steele contributed a set of 
macros for BNF syntax and reproducing code segments. We tried to find some 
formatting from an ANSI standard, but no dice. Toward the end of the 
process, version control became a problem. We (tried to) set up the 
following framework: 
	1. David had the "official" version of the draft.  He set deadlines for 
	receiving the chapters, and edited for formatting.
	2. David sent me the whole document when all the chapters were done.  
	I LaTeXed it to check for system dependences (never a problem)
	3. I sent the document to the "core" mail group (see below), put it out 
	for anonymous FTP, and announced it on the net.
	4. Any further changes were supposed to be made to David's edited 
	copy, not the original version (this to make the next round of edits 
	easier).
The system worked pretty well, until the final draft when the wrong 
version of Chapter 6 got distributed...

Each subgroup wrote one chapter, generally written and/or edited by the 
subgroup leader. While the meetings were going on, the draft contained all 
proposals still under consideration (Guy provided a "\alternative" macro 
that marked sections as being alternatives to each other). Also, the author 
of each section was identified in a footnote at the beginning of the 
section, along with the date (and occasionally other version information). 
In the current draft, we've moved summaries of some discarded proposals to 
the "Journal of Development" (primarily the ones dropped for lack of time). 
All proposals exist in the archives; we may put together a "rationale" 
document to explain some of the more controversial decisions. We're also 
planning to move the authorship information from footnotes to the credits 
chapter in the December draft. It's too early to know how this organization 
will work for the reader, but the modularity has helped in writing the 
document.

Other lessons from the draft:
	1. Make sure the chapter authors realize they are writing a draft 
	chapter, not a stand-alone document.
	2. Make sure the person in charge of the credits chapter has plenty of 
	time to work on it (I spent 50% of my time for a week appeasing various 
	corporate egos, wording things right, and checking spelling of names).
	3. Proofread the document before sending it out - both spell checking 
	and careful chapter reading.

Mailing lists: Every subgroup had its own mailing list.  Those lists are 
where most of the technical action happened; they were very high-volume 
(final total was something like 1.5Mb of archived messages).  On top of that, 
there was a list for everybody in the world interested in HPF, and another 
for the "core" group. The "everybody" list was used for the meeting minutes 
and a few miscellaneous announcements. The core group list was primarily 
for the meeting attendees, but a few others were also on it for political 
and/or practical reasons (for example, Gil Weigand and Theresa Chatman were 
both on the list); it got meeting details, and copies of the various 
proposals before the meetings. All lists were kept at cs.rice.edu (there 
were a couple smaller lists other places, including a European list at GMD 
and several local lists for particular campuses). People could add or 
delete themselves to/from any of the lists by mailing to another mail alias 
at Rice. Automating this was a huge win (although I got 2 or 3 requests 
sent directly to me every week).

FTP: We made everything we could available by anonymous FTP at Rice; 
eventually other sites picked up some of it as well. This included the 
various drafts of the language spec; any other handouts from the meetings; 
supporting (sometimes critical) commentary; papers on Fortran D, Vienna 
Fortran, ADAPT, and other systems; archived email traffic; and the minutes 
of the meetings. Generally, I put up a couple versions of any document 
(particularly text formatting stuff) - TeX or LaTeX, Postscript, and 
compressed versions of large files.  This was important, since I've found 
out some fascinating things about portability (or lack thereof) of 
different formats.  (Hints: keep all lines 80 characters or less; no 
fancy macros in TeX; at most one "." in a file name (filename.tex.Z 
doesn't translate well to IBM!); never include ANY pathname.)

Minutes: Extremely popular, but lots of work. I'm convinced that making 
them available was a key to HPFF's success. Make them as detailed as 
possible, particularly including counts of the votes taken, major topics 
discussed, and lists of people (humor helps occasionally, too). "Executive 
Summary" sections with the major issues at the front seemed to be popular. 
I also used the minutes to announce additions to the FTP archives.

Advertizing:
Announcements of major news (new drafts, etc.) went everywhere I could 
think of.  This includes the "world" mailing list; newsgroups 
comp.lang.fortran, comp.lang.misc, and comp.parallel; (indirectly) 
na-net, scinet, and hpcwire.  Meeting minutes went to the world and core 
mailing lists and the newsgroups.  I've been writing short "What is HPF" 
articles constantly, and I think the same is true of others.  Ken, Dave 
Loveman, Guy, and I have all given large numbers of talks on HPF; again, 
the same is probably true of others.  This includes invited talks at 
conferences and visits to various companies.



From chk@cs.rice.edu Mon Nov 23 15:45:48 1992
Return-Path: <chk@cs.rice.edu>
Received: from cs.rice.edu by CS.UTK.EDU with SMTP (5.61++/2.8s-UTK)
	id AA26184; Mon, 23 Nov 92 15:45:39 -0500
Received: from DialupEudora (charon.rice.edu) by cs.rice.edu (AA22750); Mon, 23 Nov 92 14:44:21 CST
Message-Id: <9211232044.AA22750@cs.rice.edu>
Date: Mon, 23 Nov 1992 14:47:55 -0600
To: dongarra@cs.utk.edu
From: chk@cs.rice.edu
Subject: HPFF organization
X-Attachments: :Macintosh HD:4227:HPFF rules:
Status: RO

Here it is.  If anything is unclear, just ask me or (for logistical
details) Theresa Chatman (tlc@cs.rice.edu).

                                                Chuck

HPFF Working Procedures

HPFF never had an explicit vote on adopting any operating procedures.  We 
did, however, informally adopt the following rules.


General Organization

Most of the technical details were hammered out in subgroups, which made 
the base proposals. The main group would discuss these proposals and 
(usually) adopt them. In practice, lots of the technical discussions were 
done on email lists. Keeping those lists public was a big part of the 
openness of the forum.

For a while, each subgroup brought its own proposal as handouts. 
Eventually, we ended up with a unified draft thanks to Dave Loveman. The 
intent (which we never lived up to) was that all proposals discussed at a 
meeting would be in that draft. Despite always having a loose proposal or 
two, the draft was extremely useful - among other things, it made editing a 
final report possible. 


Main Group / Plenary Session Matters

For running discussions, we used loosely-enforced Robert's Rules of 
Order.  Basically, we didn't stand on formalities unless the discussion 
was becoming unruly.  Some of the more often-invoked rules:
	1. Moving and voting on amendments before the main proposal.  Basically, 
	this kept the discussions focussed.
	2. Motions coming out of committee (subgroup) are automatically 
	seconded; others need a second from the floor.
	3. Triply-nested amendments are not allowed.  This keeps the confusion 
	down.
Generally, whoever was making the presentation ran the discussion, 
recognized comments from the floor, etc.  Ken usually came in after the 
meat of the discussion to run the votes.  Peer pressure was fairly 
effective at keeping people from filibustering (I think once there was a 
call to limit discussion).  More common was lots of people wanting to 
make comments - this was handled by the presenters, usually by saying "OK, 
let's go clockwise around the table".

Organizations were limited to 2 attendees each (not enforced, but no 
major problems). We passed around an attendence sheet at each meeting to 
keep track of who was there; because of various planning problems, I 
recommend using a pre-registration scheme ("send email to xxx@yyy if you 
plan to attend").  Organizations were asked to commit to having the same 
attendee at every meeting, and this was generally followed.  It's very 
important to have this kind of continuity in attendees, else we would 
have spent too much time in remedial education.

Each organization (school, company, lab) got one vote - note this was on an 
organization basis, not a person. We didn't have trouble with cheating on 
this rule - just make sure the representatives from an organization have 
agreed on who is voting. An organization was eligible to vote if it had 
attended 2 of the last 3 meetings, counting the current meeting (i.e. you 
could attend every other meeting and still vote; you could not vote at your 
first meeting). Obviously, we couldn't enforce this rule at the first 
two meetings. 

Accepting a section of the HPF language spec was a multi-step process.
	1. Someone wrote a draft specification; often there were a couple 
	drafts.  Details of these were hashed out in the subgroup.
	2. First Reading: The subgroup leader (or occasionally the draft author) 
	presented the subgroup-approved draft to the main group.  When there was 
	controversy, it was usually pointed out.  The main group discussed, 
	suggested changes (sometimes), and held a series of "straw votes" on the 
	proposal.  All attendees were eligible to vote in straw votes, which 
	were not binding on the subgroups.
	3. More subgroup discussion, both electronic and in person at the next 
	meeting, producing a revised proposal.
	4. Second Reading: The subgroup leader presented the revised proposal to 
	the main group.  Sections that were substantially the same as the 
	original (or an alternative presented at the first reading) were amended 
	by motion and eventually voted on.  Eligibility for votes was as 
	explained above.  Major additions (for example, when PURE functions were 
	added to FORALL between meetings) were treated as first readings at this 
	point.  Often most of the proposal was accepted, and a few sections were 
	sent back to subgroup for more work; these came back as second readings 
	at the next meeting.
	5. Once a section was accepted at second reading, it was "frozen" until 
	the end of the HPFF process.  Revisions were only allowed for clarity or 
	when new information surfaced (like discovering that the draft was 
	self-contradictory).  This limitation was enforced as strictly as we 
	could, to avoid backtracking.
	6. At the end of the process (December), we promised to allow 
	reconsideration of any feature.
See also the discussion of the Journal of Development below.


Subgroup Matters

Subgroups met independently of the main body, usually the afternoon and 
evening of the day before.  The leader of the subgroup ran these meetings 
using whatever style he or she was comfortable with.  Most of us took 
votes from whoever showed up, and ran a pseud-democratic style.  Also, 
there was a mailing list for each subgroup where most of the discussions 
went on.

Each subgroup was devoted to one topic from the following list:
	Data distribution
	FORALL and other parallel statements
	Fortran 90, storage & sequence association, and the HPF subset
	Intrinsic functions
	Parallel I/O
	EXTRINSIC (nee LOCAL, nee FOREIGN) functions
The groups met in parallel, which caused a little friction but was 
logstically unavoidable.  When a subject straddled two groups (like 
intrinsic functions for enquiring about distributions), the subgroup 
leaders would talk to each other and decide who would handle it - this 
often led to minor anti-turf battles (also known as "after you" 
deadlock).  Both groups would act as sanity checks on the results.

When it came time to write the draft, each subgroup became a chapter.  
The subgroup leader was the editor (and usually major author) of the 
chapter, and was responsible for making sure the chapter reflected the 
decisions made in the subgroup and in committee.  


Logistical Matters

Meetings were 2.5 days, starting Wednesday afternoon, in Dallas (there 
were exceptions to this for logistical reasons, but we would have 
prefered to keep them all on this schedule).  A typical schedule was

	Wednesday
	  1:30-6:00  Subgroup meetings, about 3 going on in parallel (reserve 4 
		"breakout" rooms with the hotel, fo 10-20 people each)
	  6:00-7:30  Unofficial dinner break (usually the subgroup leaders ate 
		together & planned the meeting agenda)
	  7:30-10:30 More subgroup meetings (subgroup leaders usually ended up 
		staying up late to revise drafts)
	
	Thursday
	  9:00-12:00 Full group meeting (coffee breaks at natural breaks)
	  12:00-1:30 Lunch (provided)
	  1:30-6:00  Full group meeting (and coffee breaks)
	  6:00-8:00  Dinner (attendees pay, but hotel provided transport to area 
		restaurant)
	  8:00-10:00 (Sometimes) Full group meeting (when no full meeting, 
		subgroups usually met instead)
	
	Friday
	  9:00-12:00 Full group meeting (and coffee breaks)
	  12:00-1:30 (Sometimes) Lunch (provided if we thought the meeting would 
		last long)
	  1:30-3:00  (Sometimes) Full group meeting

We tried to finish as early as possible on Friday, to allow people to 
catch flights.

Since we scheduled all the meetings early on, we set up a contract with 
the hotel.  I didn't handle the details, but I think this saved us a 
little money and a lot of aggravation (talk to Theresa Chatman if you 
need more info).  At any rate, this is a great thing for someone on your 
staff to set up.

We financed the meetings primarily from a per-meeting fee of $95 ($75 if 
we didn't have lunch the second day) per attendee.  Ken offered to foot 
the bill for academics to attend, based on the expectation of NSF funds.  
We're still waiting on those funds; highly recommend that you don't make 
such offers without first getting the cash.


Documentation

The Draft: The earlier you have one the better. David Loveman served as our 
general editor, collecting the chapters and trying to smooth format 
details. I contributed the introduction and credits, mainly cribbed from 
meeting notes and other announcements. Guy Steele contributed a set of 
macros for BNF syntax and reproducing code segments. We tried to find some 
formatting from an ANSI standard, but no dice. Toward the end of the 
process, version control became a problem. We (tried to) set up the 
following framework: 
	1. David had the "official" version of the draft.  He set deadlines for 
	receiving the chapters, and edited for formatting.
	2. David sent me the whole document when all the chapters were done.  
	I LaTeXed it to check for system dependences (never a problem)
	3. I sent the document to the "core" mail group (see below), put it out 
	for anonymous FTP, and announced it on the net.
	4. Any further changes were supposed to be made to David's edited 
	copy, not the original version (this to make the next round of edits 
	easier).
The system worked pretty well, until the final draft when the wrong 
version of Chapter 6 got distributed...

Each subgroup wrote one chapter, generally written and/or edited by the 
subgroup leader. While the meetings were going on, the draft contained all 
proposals still under consideration (Guy provided a "\alternative" macro 
that marked sections as being alternatives to each other). Also, the author 
of each section was identified in a footnote at the beginning of the 
section, along with the date (and occasionally other version information). 
In the current draft, we've moved summaries of some discarded proposals to 
the "Journal of Development" (primarily the ones dropped for lack of time). 
All proposals exist in the archives; we may put together a "rationale" 
document to explain some of the more controversial decisions. We're also 
planning to move the authorship information from footnotes to the credits 
chapter in the December draft. It's too early to know how this organization 
will work for the reader, but the modularity has helped in writing the 
document.

Other lessons from the draft:
	1. Make sure the chapter authors realize they are writing a draft 
	chapter, not a stand-alone document.
	2. Make sure the person in charge of the credits chapter has plenty of 
	time to work on it (I spent 50% of my time for a week appeasing various 
	corporate egos, wording things right, and checking spelling of names).
	3. Proofread the document before sending it out - both spell checking 
	and careful chapter reading.

Mailing lists: Every subgroup had its own mailing list.  Those lists are 
where most of the technical action happened; they were very high-volume 
(final total was something like 1.5Mb of archived messages).  On top of that, 
there was a list for everybody in the world interested in HPF, and another 
for the "core" group. The "everybody" list was used for the meeting minutes 
and a few miscellaneous announcements. The core group list was primarily 
for the meeting attendees, but a few others were also on it for political 
and/or practical reasons (for example, Gil Weigand and Theresa Chatman were 
both on the list); it got meeting details, and copies of the various 
proposals before the meetings. All lists were kept at cs.rice.edu (there 
were a couple smaller lists other places, including a European list at GMD 
and several local lists for particular campuses). People could add or 
delete themselves to/from any of the lists by mailing to another mail alias 
at Rice. Automating this was a huge win (although I got 2 or 3 requests 
sent directly to me every week).

FTP: We made everything we could available by anonymous FTP at Rice; 
eventually other sites picked up some of it as well. This included the 
various drafts of the language spec; any other handouts from the meetings; 
supporting (sometimes critical) commentary; papers on Fortran D, Vienna 
Fortran, ADAPT, and other systems; archived email traffic; and the minutes 
of the meetings. Generally, I put up a couple versions of any document 
(particularly text formatting stuff) - TeX or LaTeX, Postscript, and 
compressed versions of large files.  This was important, since I've found 
out some fascinating things about portability (or lack thereof) of 
different formats.  (Hints: keep all lines 80 characters or less; no 
fancy macros in TeX; at most one "." in a file name (filename.tex.Z 
doesn't translate well to IBM!); never include ANY pathname.)

Minutes: Extremely popular, but lots of work. I'm convinced that making 
them available was a key to HPFF's success. Make them as detailed as 
possible, particularly including counts of the votes taken, major topics 
discussed, and lists of people (humor helps occasionally, too). "Executive 
Summary" sections with the major issues at the front seemed to be popular. 
I also used the minutes to announce additions to the FTP archives.

Advertizing:
Announcements of major news (new drafts, etc.) went everywhere I could 
think of.  This includes the "world" mailing list; newsgroups 
comp.lang.fortran, comp.lang.misc, and comp.parallel; (indirectly) 
na-net, scinet, and hpcwire.  Meeting minutes went to the world and core 
mailing lists and the newsgroups.  I've been writing short "What is HPF" 
articles constantly, and I think the same is true of others.  Ken, Dave 
Loveman, Guy, and I have all given large numbers of talks on HPF; again, 
the same is probably true of others.  This includes invited talks at 
conferences and visits to various companies.



From owner-mpi-comm@CS.UTK.EDU  Tue Nov 24 18:09:18 1992
Received: from CS.UTK.EDU by surfer.EPM.ORNL.GOV (5.61/1.34)
	id AA08323; Tue, 24 Nov 92 18:09:18 -0500
Received:  by CS.UTK.EDU (5.61++/2.8s-UTK)
	id AA22602; Tue, 24 Nov 92 17:43:42 -0500
Received: from relay2.UU.NET by CS.UTK.EDU with SMTP (5.61++/2.8s-UTK)
	id AA22596; Tue, 24 Nov 92 17:43:35 -0500
Received: from uunet.uu.net (via LOCALHOST.UU.NET) by relay2.UU.NET with SMTP 
	(5.61/UUNET-internet-primary) id AA11950; Tue, 24 Nov 92 17:43:40 -0500
Received: from kailand.UUCP by uunet.uu.net with UUCP/RMAIL
	(queueing-rmail) id 174208.17287; Tue, 24 Nov 1992 17:42:08 EST
Received: from brisk.kai.com (brisk) by kailand.kai.com via SMTP
  (5.65d-92031301) id AA07130; Tue, 24 Nov 1992 16:14:37 -0600
Received: by brisk.kai.com
  (920330.SGI-92101201) id AA06815; Tue, 24 Nov 92 16:14:36 -0600
Date: Tue, 24 Nov 92 16:14:36 -0600
Message-Id: <9211242214.AA06815@brisk.kai.com>
To: dongarra@cs.utk.edu
Cc: mpi-comm@cs.utk.edu
In-Reply-To: Jack Dongarra's message of Tue, 24 Nov 92 15:04:05 -0500 <9211242004.AA20345@thud.cs.utk.edu>
Subject: more on the intro
From: Steven Ericsson Zenith <zenith@kai.com>
Sender: zenith@kai.com
Organization: 	Kuck and Associates, Inc.
		1906 Fox Drive, Champaign IL USA 61820-7334,
		voice 217-356-2288, fax 217-356-5199


Concerning the introduction:

	"The paradigm will not be made obsolete by architectures combining the shared-
	and distributed-memory views, or by increases in network speeds."

I think this sentence is unnecessarily defensive. I'd delete the sentence
and the following "thus".

I earlier raised an objection to 

    \item  A simple way to create processes for the SPMD model

there seems to be some redundancy here with

    \item  Process groups

The former is a subset of the latter. I'll repeat my noncirculated
comments: I would rather not see us say too much about the process model
at this stage; except to say that there is some process model defined by
the language using the standard and to say something about side effects
between processes that affect the message passing semantics (i.e., that
there should be none). That does, of course, leave us with some
interesting problems for identifying our communication; traditionally a
difficult subject in message passing (hence my distribution of this
message to the whole committee).

The easy route would be to have a global name space of shared "channels"
each with a communication characteristic [type] (e.g., "point-to-point"
or "one-to-many"): a compiler can check correct usage if we identify the
right rules (e.g. a synchronized unidirectional point-to-point
communication is shared by only two processes). Such logical naming
would map well across all the existing systems and avoid the problems of
name servers, processor id, topologies and so forth since any topology
can be described by the set of names and its users. Processor ids are,
in effect, names in a global name space - and are often channels that
have a "many-to-one" characteristic.

Steven



From owner-mpi-comm@CS.UTK.EDU  Sat Nov 28 18:38:03 1992
Received: from CS.UTK.EDU by surfer.EPM.ORNL.GOV (5.61/1.34)
	id AA07921; Sat, 28 Nov 92 18:38:03 -0500
Received:  by CS.UTK.EDU (5.61++/2.8s-UTK)
	id AA22407; Sat, 28 Nov 92 18:35:38 -0500
Received: from cunyvm.cuny.edu by CS.UTK.EDU with SMTP (5.61++/2.8s-UTK)
	id AA22403; Sat, 28 Nov 92 18:35:36 -0500
Message-Id: <9211282335.AA22403@CS.UTK.EDU>
Received: from YKTVMV by CUNYVM.CUNY.EDU (IBM VM SMTP V2R2) with BSMTP id 6064;
   Sat, 28 Nov 92 18:35:01 EST
Date: Sat, 28 Nov 92 18:32:55 EST
From: "Marc Snir" <SNIR%YKTVMV.BITNET@utkvm1.utk.edu>
X-Addr: (914) 945-3204  (862-3204)
        28-226 IBM T.J. Watson Research Center
        P.O. Box 218 Yorktown Heights NY 10598
To: mpi-comm@cs.utk.edu
Subject: previously sent postcript file
Reply-To: SNIR@watson.ibm.com

Contains an outline I want to use for discussing issues in the poin-to-point
subcommittee.  I send it to the entire committee since it touches many
issues related to collective communication and formal definitions.

If somebody cannot print postscript and prefers latex, pls let me know.
From owner-mpi-comm@CS.UTK.EDU  Sat Nov 28 18:40:52 1992
Received: from CS.UTK.EDU by surfer.EPM.ORNL.GOV (5.61/1.34)
	id AA07938; Sat, 28 Nov 92 18:40:52 -0500
Received:  by CS.UTK.EDU (5.61++/2.8s-UTK)
	id AA22399; Sat, 28 Nov 92 18:33:55 -0500
Received: from cunyvm.cuny.edu by CS.UTK.EDU with SMTP (5.61++/2.8s-UTK)
	id AA22394; Sat, 28 Nov 92 18:33:40 -0500
Message-Id: <9211282333.AA22394@CS.UTK.EDU>
Received: from YKTVMV by CUNYVM.CUNY.EDU (IBM VM SMTP V2R2) with BSMTP id 6053;
   Sat, 28 Nov 92 18:33:04 EST
Date: Sat, 28 Nov 92 18:32:22 EST
From: "Marc Snir" <SNIR%YKTVMV.BITNET@utkvm1.utk.edu>
To: MPI-COMM@CS.UTK.EDU

%!PS-Adobe-2.0
%%Creator: dvips 5.47 Copyright 1986-91 Radical Eye Software
%%Title: MPIOUTLN.DVI.*
%%Pages: 10 1
%%BoundingBox: 0 0 612 792
%%EndComments
%%BeginProcSet: texc.pro
/TeXDict 250 dict def TeXDict begin /N /def load def /B{bind def}N /S /exch
load def /X{S N}B /TR /translate load N /isls false N /vsize 10 N /@rigin{
isls{[0 1 -1 0 0 0]concat}if 72 Resolution div 72 VResolution div neg scale
Resolution VResolution vsize neg mul TR matrix currentmatrix dup dup 4 get
round 4 exch put dup dup 5 get round 5 exch put setmatrix}N /@letter{/vsize 10
N}B /@landscape{/isls true N /vsize -1 N}B /@a4{/vsize 10.6929133858 N}B /@a3{
/vsize 15.5531 N}B /@ledger{/vsize 16 N}B /@legal{/vsize 13 N}B /@manualfeed{
statusdict /manualfeed true put}B /@copies{/#copies X}B /FMat[1 0 0 -1 0 0]N
/FBB[0 0 0 0]N /nn 0 N /IE 0 N /ctr 0 N /df-tail{/nn 8 dict N nn begin
/FontType 3 N /FontMatrix fntrx N /FontBBox FBB N string /base X array
/BitMaps X /BuildChar{CharBuilder} N /Encoding IE N end dup{/foo setfont}2
array copy cvx N load 0 nn put /ctr 0 N[}B /df{/sf 1 N /fntrx FMat N df-tail}
B /dfs{div /sf X /fntrx[sf 0 0 sf neg 0 0]N df-tail}B /E{pop nn dup definefont
setfont}B /ch-width{ch-data dup length 5 sub get} B /ch-height{ch-data dup
length 4 sub get} B /ch-xoff{128 ch-data dup length 3 sub get sub} B /ch-yoff{
ch-data dup length 2 sub get 127 sub} B /ch-dx{ch-data dup length 1 sub get} B
/ch-image{ch-data dup type /stringtype ne{ctr get /ctr ctr 1 add N}if}B /id 0
N /rw 0 N /rc 0 N /gp 0 N /cp 0 N /G 0 N /sf 0 N /CharBuilder{save 3 1 roll S
dup /base get 2 index get S /BitMaps get S get /ch-data X pop /ctr 0 N ch-dx 0
ch-xoff ch-yoff ch-height sub ch-xoff ch-width add ch-yoff setcachedevice
ch-width ch-height true[1 0 0 -1 -.1 ch-xoff sub ch-yoff .1 add]/id ch-image N
/rw ch-width 7 add 8 idiv string N /rc 0 N /gp 0 N /cp 0 N{rc 0 ne{rc 1 sub
/rc X rw}{G}ifelse}imagemask restore}B /G{{id gp get /gp gp 1 add N dup 18 mod
S 18 idiv pl S get exec}loop}B /adv{cp add /cp X}B /chg{rw cp id gp 4 index
getinterval putinterval dup gp add /gp X adv}B /nd{/cp 0 N rw exit}B /lsh{rw
cp 2 copy get dup 0 eq{pop 1}{dup 255 eq{pop 254}{dup dup add 255 and S 1 and
or}ifelse}ifelse put 1 adv}B /rsh{rw cp 2 copy get dup 0 eq{pop 128}{dup 255
eq{pop 127}{dup 2 idiv S 128 and or}ifelse}ifelse put 1 adv}B /clr{rw cp 2
index string putinterval adv}B /set{rw cp fillstr 0 4 index getinterval
putinterval adv}B /fillstr 18 string 0 1 17{2 copy 255 put pop}for N /pl[{adv
1 chg}bind{adv 1 chg nd}bind{1 add chg}bind{1 add chg nd}bind{adv lsh}bind{
adv lsh nd}bind{adv rsh}bind{adv rsh nd}bind{1 add adv}bind{/rc X nd}bind{1
add set}bind{1 add clr}bind{adv 2 chg}bind{adv 2 chg nd}bind{pop nd}bind]N /D{
/cc X dup type /stringtype ne{]}if nn /base get cc ctr put nn /BitMaps get S
ctr S sf 1 ne{dup dup length 1 sub dup 2 index S get sf div put}if put /ctr
ctr 1 add N}B /I{cc 1 add D}B /bop{userdict /bop-hook known{bop-hook}if /SI
save N @rigin 0 0 moveto}N /eop{clear SI restore showpage userdict /eop-hook
known{eop-hook}if}N /@start{userdict /start-hook known{start-hook}if
/VResolution X /Resolution X 1000 div /DVImag X /IE 256 array N 0 1 255{IE S 1
string dup 0 3 index put cvn put} for}N /p /show load N /RMat[1 0 0 -1 0 0]N
/BDot 260 string N /rulex 0 N /ruley 0 N /v{/ruley X /rulex X V}B /V
statusdict begin /product where{pop product dup length 7 ge{0 7 getinterval
(Display)eq}{pop false}ifelse}{false}ifelse end{{gsave TR -.1 -.1 TR 1 1 scale
rulex ruley false RMat{BDot}imagemask grestore}}{{gsave TR -.1 -.1 TR rulex
ruley scale 1 1 false RMat{BDot}imagemask grestore}}ifelse B /a{moveto}B
/delta 0 N /tail{dup /delta X 0 rmoveto}B /M{S p delta add tail}B /b{S p tail}
B /c{-4 M}B /d{-3 M}B /e{-2 M}B /f{-1 M}B /g{0 M}B /h{1 M}B /i{2 M}B /j{3 M}B
/k{4 M}B /w{0 rmoveto}B /l{p -4 w}B /m{p -3 w}B /n{p -2 w}B /o{p -1 w}B /q{p 1
w}B /r{p 2 w}B /s{p 3 w}B /t{p 4 w}B /x{0 S rmoveto}B /y{3 2 roll p a}B /bos{
/SS save N}B /eos{clear SS restore}B end
%%EndProcSet
TeXDict begin 1000 300 300 @start /Fa 1 16 df<EA07E0EA1FF8EA3FFCEA7FFEA2B5FCA8
EA7FFEA2EA3FFCEA1FF8EA07E010127D9317>15 D E /Fb 51 125 df<127012F8B012701200A5
127012F8A31270051C779B18>33 D<137013F01201EA03C0EA0780EA0F00121E121C123C123812
781270A212F05AA87E1270A212781238123C121C121E7EEA0780EA03C0EA01F0120013700C2479
9F18>40 D<126012F012787E7E7EEA0780120313C0120113E01200A213F01370A813F013E0A212
0113C0120313801207EA0F00121E5A5A5A12600C247C9F18>I<123C127E127FA3123F120F120E
121E127C12F81270080C788518>44 D<EA7FFFB51280A26C130011047D8F18>I<EA01F0EA07FC
487EEA1F1FEA1C0738380380007813C0EA7001A238E000E0A9EAF001007013C0A2EA7803003813
80381C0700EA1F1FEA0FFE6C5AEA01F0131C7E9B18>48 D<EA018012031207A2120F123F12FF12
FB12631203B0EA7FFCEAFFFEEA7FFC0F1C7B9B18>I<EA07F8EA1FFE487E387C0F80387003C038
F001E01300A3C7FCA2130114C01303EB0780EB0F00131E5B5B5BEA03E0485A485A381E00E05AEA
7FFFB5FC7E131C7E9B18>I<387FFFC0B512E0A3C8FCA4B512E0A36C13C0130C7E9318>61
D<137013F8A213D8A2EA01DCA3138CEA038EA41306EA0707A4380FFF80A3EA0E03A2381C01C0A2
387F07F038FF8FF8387F07F0151C7F9B18>65 D<EAFFFC13FF1480381C03C01301EB00E0A41301
14C01307381FFF80140014C0EA1C03EB00E014F01470A414F014E01303B512C01480EBFE00141C
7F9B18>I<3801FCE0EA03FEEA07FFEA0F07EA1E03EA3C01EA78001270A200F013005AA87E0070
13E0A21278EA3C01001E13C0EA0F073807FF806C1300EA01FC131C7E9B18>I<EA7FF8EAFFFE6C
7E381C0F80EB03C0A2EB01E01300A214F01470A814F014E0A2130114C01303EB0F80387FFF0048
5AEA7FF8141C7F9B18>I<B512F0A3381C0070A41400A2130EA3EA1FFEA3EA1C0EA390C7FCA214
38A5B512F8A3151C7F9B18>I<B512E0A3EA1C00A41400A2131CA3EA1FFCA3EA1C1CA390C7FCA7
EAFFC0A3131C7E9B18>I<3801F9C0EA07FF5AEA1F0FEA1C03123CEA78011270A200F0C7FC5AA5
EB0FF0131F130F38F001C0127013031278123CEA1C07EA1F0FEA0FFFEA07FDEA01F9141C7E9B18
>I<387F07F038FF8FF8387F07F0381C01C0A9EA1FFFA3EA1C01AA387F07F038FF8FF8387F07F0
151C7F9B18>I<EA7FFFB512806C1300EA01C0B3A4EA7FFFB512806C1300111C7D9B18>I<EA7FE0
12FF127F000EC7FCB11470A5387FFFF0B5FC7E141C7F9B18>76 D<38FC01F8EAFE03A2383B06E0
A4138EA2EA398CA213DCA3EA38D8A213F81370A21300A638FE03F8A3151C7F9B18>I<387E07F0
38FF0FF8387F07F0381D81C0A313C1121CA213E1A313611371A213311339A31319A2131D130DA3
EA7F07EAFF87EA7F03151C7F9B18>I<EA0FF8EA3FFE487EEA780FEA700700F01380EAE003B0EA
F00700701300EA780FEA7FFF6C5AEA0FF8111C7D9B18>I<EAFFFEEBFF8014C0EA1C03EB01E013
001470A514E01301EB03C0EA1FFF1480EBFE00001CC7FCA8B47EA3141C7F9B18>I<EA7FF8EAFF
FE6C7E381C0F80130314C01301A313031480130F381FFF005BA2EA1C0FEB07801303A5149CA300
7F13FC38FF81F8387F00F0161C7F9B18>82 D<3807F380EA1FFF5AEA7C1FEA7007EAF00312E0A2
90C7FC7E1278123FEA1FF0EA0FFEEA01FF38001F80EB03C0EB01E01300A2126012E0130100F013
C0EAFC07B512801400EAE7FC131C7E9B18>I<387FFFF8B5FCA238E07038A400001300B2EA07FF
A3151C7F9B18>I<38FF83FEA3381C0070B2001E13F0000E13E0EA0F013807C7C03803FF806C13
00EA007C171C809B18>I<38FF07F8A3381C01C0A4380E0380A4EA0F0700071300A4EA038EA4EA
018C13DCA3EA00D813F8A21370151C7F9B18>I<38FE03F8A338700070A36C13E0A513F8A2EA39
DCA2001913C0A3138CEA1D8DA4000D13801305EA0F07A2EA0E03151C7F9B18>I<EA1FE0EA3FF8
487EEA783EEA300FC67EA248B4FC120F123FEA7F07127812F012E0A26C5AEA783F387FFFF0EA3F
FBEA0FE114147D9318>97 D<127E12FE127E120EA5133EEBFF80000F13C0EBE3E0EB80F0EB0070
1478000E1338A5120F14781470EB80F0EBC3E0EBFFC0000E138038067E00151C809B18>I<EA01
FEEA07FF001F1380EA3F07383C030048C7FC127012F05AA47E1270387801C0123CEA3F07381FFF
8000071300EA01FC12147D9318>I<EB1F80133F131F1303A5EA03F3EA0FFBEA1FFFEA3E1FEA78
0FEA700712F0EAE003A5130712F01270EA780FEA3E3F381FFFF0380FFBF83803E3F0151C7E9B18
>I<EA03F0EA0FFC487EEA3E1F38780780EA700300F013C0EAE001A2B5FCA300F0C7FC12703878
01C0123CEA3F07381FFF8000071300EA01FC12147D9318>I<EB1FC0EB7FE013FFEA01F1EBC0C0
1400A3387FFFC0B5FCA23801C000AEEA7FFFA3131C7F9B18>I<3803F1F03807FFF85A381E1F30
383C0F00EA3807A5EA3C0FEA1E1EEA1FFC485AEA3BF00038C7FC123CEA1FFF14C04813E0387801
F038F00078481338A36C1378007813F0EA7E03383FFFE0000F13803803FE00151F7F9318>I<12
7E12FE127E120EA5133FEBFF80000F13C0EBE1E013801300A2120EAA387FC3FC38FFE7FE387FC3
FC171C809B18>I<EA0380487EA36C5AC8FCA4EA7FC012FF127F1201AEB5FC14801400111D7C9C
18>I<12FEA3120EA5EB3FF0137F133FEB0780EB0F00131E5B5B5BEA0FF87F139C131EEA0E0FEB
0780130314C038FFC7F8A3151C7F9B18>107 D<EA7FE012FF127F1200B3A4387FFFC0B512E06C
13C0131C7E9B18>I<387DF1F038FFFBF86CB47E381F1F1CEA1E1EA2EA1C1CAB387F1F1F39FFBF
BF80397F1F1F001914819318>I<EA7E3F38FEFF80007F13C0380FE1E013801300A2120EAA387F
C3FC38FFE7FE387FC3FC1714809318>I<EA01F0EA0FFE487E383E0F80EA3803387001C0A238E0
00E0A5EAF001007013C0EA7803383C0780EA3E0F381FFF006C5AEA01F013147E9318>I<EA7E3E
38FEFF80007F13C0380FE3E0EB80F0EB00701478000E1338A5120F14781470EB80F0EBC3E0EBFF
C0000E1380EB7E0090C7FCA7EA7FC0487E6C5A151E809318>I<387F87E038FF9FF8EA7FBF3803
FC78EBF030EBE0005BA35BA8EA7FFEB5FC6C5A15147F9318>114 D<EA0FF7EA3FFF5AEAF81FEA
E007A212F0007CC7FCEA7FF0EA1FFCEA07FEEA001F38600780EAE00312F0130738FC0F00B5FC5B
EAE7F811147D9318>I<487E1203A4387FFFC0B5FCA238038000A9144014E0A21381EBC3C0EA01
FF6C1380EB7E0013197F9818>I<387E07E0EAFE0FEA7E07EA0E00AC1301EA0F073807FFFC6C13
FE3801FCFC1714809318>I<38FF8FF8A3383800E0A3381C01C0A2137113F9A213D9A2380DDD80
A3138DEA0F8FA23807070015147F9318>119 D<387F8FF000FF13F8007F13F0380E01C0EB0380
A21207EB0700A2EA03871386138EEA01CEA2EA00CCA213DC1378A31370A313F05B1279EA7BC0EA
7F806CC7FC121E151E7F9318>121 D<126012F0B3B012600424769F18>124
D E /Fc 12 119 df<EBF1803803FDC038078F80EA0E07121C123C14001278A3EAF00EA31430EB
1C60133CEA707C3878FCC0EA3FCF380F078014147C9317>97 D<EA0780123F13001207A3120EA4
5AA213F0EA1FFCEA3F1EEA3E0EEA3C0F12381270A4EAE01EA3133CA21338EA6070EA71E0EA3FC0
EA1F0010207B9F15>I<137E48B4FC38038380EA0F07121E001C1300EA3C0248C7FCA35AA5EA70
021307EA381EEA1FF8EA07E011147C9315>I<1478EB03F814F0EB0070A314E0A4EB01C0A213F1
EA03FD38078F80EA0E07121C123C14001278A3EAF00EA31430EB1C60133CEA707C3878FCC0EA3F
CF380F078015207C9F17>I<137C48B4FCEA0783380F0180121E123CEB0300EA780EEA7FFC13E0
00F0C7FCA412701302EA7807EA3C1EEA1FF8EA07E011147C9315>I<EB3C60EBFF703801E3E0EA
0381EA0701120F14C0121EA3383C0380A4EB07005BEA1C1FEA1E3FEA0FFEEA03CEEA000EA25BA2
1230EA7838EAF0F0EA7FE0EA3F80141D7E9315>103 D<136013F0A213E01300A7120FEA1F8012
3113C0EA6380A212C3EA0700A3120EA3EA1C301360A2EA38C01218EA1F80EA0F000C1F7D9E0E>
105 D<EA03C0121F13801203A3EA0700A4120EA45AA45AA45AA3EA7180EAE300A312E6127E123C
0A207C9F0C>108 D<381E07C0383F1FE03833B870EA63E0EBC038138000C71370EA0700A3000E
13E0A3EB01C3001C13C6A2EB038C1301003813F8381800F018147D931A>110
D<137C48B4FC38038380380F01C0121E001C13E0123C1278A338F003C0A3EB07801400EA700F13
1EEA3838EA1FF0EA07C013147C9317>I<EA018013C0EA0380A4EA0700A2EAFFF0A2EA0E00A45A
A45AA31330EA7060A213C0EA7180EA3F00121E0C1C7C9B0F>116 D<380F01C0EA1F83003113E0
13C1EA6380A200C313C0EA0700A3380E0180A3EB0300A21306A2EA0F0CEA07F8EA01E013147D93
15>118 D E /Fd 28 121 df<903807F83F017FB512C03A01FC0FE3E03903F01FC7EA07E0D80F
C01387ED83C0ED8000A6B612FCA2390FC01F80B2397FF8FFF8A223237FA221>11
D<13181330136013C01201EA0380120713005A121EA2123E123CA2127CA3127812F8AD1278127C
A3123CA2123E121EA27E7E13801203EA01C012001360133013180D317BA416>40
D<12C012607E7E121C7E120F7E1380EA03C0A213E01201A213F0A3120013F8AD13F01201A313E0
A2120313C0A2EA078013005A120E5A12185A5A5A0D317DA416>I<EA07FCEA1FFF38380F803870
07C000F813E012FCA3127838000FC0EB1F801400133C5B13705BA25BA690C7FCA5EA01C0487E48
7EA36C5A6C5A13237DA21A>63 D<D903FE138090381FFF819038FF01E33901F8003FD803E0131F
4848130F48481307121F48C71203A2481401127EA200FE91C7FCA8127EED0180127F7E15036C6C
1400120F6C6C1306D803F05B6C6C13386CB413F090381FFFC0D903FEC7FC21227DA128>67
D<D903FE134090391FFFC0C090387F00F1D801F8133F4848130FD807C01307000F1403485A48C7
1201A2481400127EA200FE1500A791380FFFFC127E007F9038001FC0A27EA26C7E6C7E6C7E6C7E
D801FC133F39007F80E790381FFFC30103130026227DA12C>71 D<D8FFF0EC0FFF6D5C000716E0
D806FC1437A3017E1467A26D14C7A290391F800187A290390FC00307A3903807E006A2903803F0
0CA2903801F818A3903800FC30A2EC7E60A2EC3FC0A2EC1F80A3EC0F00D8FFF091B5FC14063022
7EA135>77 D<B53A0FFFF01FFEA2260FF00090C712E000076E14C0A26C6C9138800180153F6D15
03000103C01300A26C6C90387FE006156F7F6D9038C7F00CA20280EBF81C90263F81831318A2D9
1FC36D5A150114E3903A0FE600FE60A202F6EBFFE0D907FC6D5AA201035D4A133FA26D486DC7FC
A20100141E4A130EA237227FA13A>87 D<EA07FC381FFF80383F0FC0EB07E0130314F0121E1200
A213FF1207EA1FC3EA3F03127E12FCA4EA7E07EB1DF8381FF8FF3807E07F18167E951B>97
D<B47EA2121FABEB8FE0EBBFF8EBF07CEBC01EEB801FEC0F80A215C0A81580141F1500EBC03EEB
607C381E3FF8381C0FC01A237EA21F>I<EBFF80000713E0380F83F0EA1F03123E127E387C01E0
90C7FC12FCA6127C127EA2003E13306C1360380FC0E03807FF803800FE0014167E9519>I<EB03
FEA2EB007EABEA01FCEA07FF380F81FEEA1F00003E137E127E127C12FCA8127CA27E001E13FEEA
0F833907FF7FC0EA01FC1A237EA21F>I<13FE3807FF80380F87C0381E01E0003E13F0EA7C0014
F812FCA2B5FCA200FCC7FCA3127CA2127E003E13186C1330380FC0703803FFC0C6130015167E95
1A>I<EB3F80EBFFC03801F3E0EA03E7EA07C7120FEBC3C0EBC000A6EAFFFCA2EA0FC0B2EA7FFC
A213237FA211>I<3801FE1F0007B51280380F87E7EA1F03391E01E000003E7FA5001E5BEA1F03
380F87C0EBFF80D819FEC7FC0018C8FC121CA2381FFFE014F86C13FE80123F397C003F8048131F
140FA3007CEB1F00007E5B381F80FC6CB45A000113C019217F951C>I<B47EA2121FABEB87E0EB
9FF8EBB8FCEBE07CEBC07EA21380AE39FFF1FFC0A21A237EA21F>I<120E121FEA3F80A3EA1F00
120EC7FCA7EAFF80A2121FB2EAFFF0A20C247FA30F>I<EAFF80A2121FB3ADEAFFF0A20C237FA2
0F>108 D<3AFF87F00FE090399FFC3FF83A1FB87E70FC9039E03EC07C9039C03F807EA2018013
00AE3BFFF1FFE3FFC0A22A167E952F>I<38FF87E0EB9FF8381FB8FCEBE07CEBC07EA21380AE39
FFF1FFC0A21A167E951F>I<13FE3807FFC0380F83E0381E00F0003E13F848137CA300FC137EA7
007C137CA26C13F8381F01F0380F83E03807FFC03800FE0017167E951C>I<38FF8FE0EBBFF838
1FF07CEBC03E497E1580A2EC0FC0A8EC1F80A2EC3F00EBC03EEBE0FCEBBFF8EB8FC00180C7FCA8
EAFFF0A21A207E951F>I<EAFF1FEB3FC0381F67E013C7A3EB83C0EB8000ADEAFFF8A213167E95
17>114 D<EA07F3EA1FFFEA780FEA7007EAF003A26CC7FCB4FC13F0EA7FFC6C7E6C7E12073800
3F80EAC00F130712E0A200F01300EAFC1EEAEFFCEAC7F011167E9516>I<13C0A41201A2120312
07120F121FB5FCA2EA0FC0ABEBC180A51207EBE300EA03FEC65A11207F9F16>I<38FF83FEA238
1F807EAF14FEA2EA0F833907FF7FC0EA01FC1A167E951F>I<39FFF01FE0A2390FC00600A2EBE0
0E0007130CEBF01C0003131813F800015BA26C6C5AA2EB7EC0A2137F6D5AA26DC7FCA2130EA21B
167F951E>I<39FFF07FC0A2390FC01C006C6C5A6D5A6C6C5A00015B3800FD80017FC7FCA27F6D
7E497E80EB67F013E33801C1F8380381FC48C67E000E137E39FF81FFE0A21B167F951E>120
D E /Fe 1 4 df<1207A3EAE738EAFFF8EA7FF0EA1FC0A2EA7FF0EAFFF8EAE738EA0700A30D0E
7E8E12>3 D E /Ff 33 118 df<1318137013E0EA01C0EA0380A2EA0700120EA2121E121C123C
A25AA412F85AA97E1278A47EA2121C121E120EA27EEA0380A2EA01C0EA00E0137013180D2D7DA1
14>40 D<12C012707E7E7EA27EEA0380A213C0120113E0A2EA00F0A413F81378A913F813F0A4EA
01E0A213C012031380A2EA0700120EA25A5A5A12C00D2D7DA114>I<14E0B0B712C0A3C700E0C7
FCB022237D9C29>43 D<1238127C12FE12FFA2127F123B1203A21206A2120E120C121812701220
08107C860F>I<137013F0120F12FF12F31203B3A4B51280A2111D7C9C1A>49
D<EA07F0EA1FFEEA383F387C1F8038FE0FC0A214E01307127C1238EA000F14C0A2EB1F80140013
3E13785B5B3801C060EA0380EA0700000C13E0EA1FFF14C05A5AB5FCA2131D7D9C1A>I<EA01FC
EA07FF380E0F80001E13C0383F07E01387A3381F0FC0120E00001380EB1F00EA01FCA238000F80
EB07C0EB03E014F0003C13F8127E12FFA314F0127E387C07E0383C0FC0380FFF803803FC00151D
7E9C1A>I<EB01C013031307A2130F131F133F1377136713C7EA01871203EA0707120E120C1218
1238127012E0B512FEA238000FC0A63801FFFEA2171D7F9C1A>I<14E0A2497EA3497EA2497EA2
497E130CA2EB187FA201307F143F01707FEB601FA201C07F140F48B57EA2EB800748486C7EA200
06801401000E803AFFE01FFFE0A2231F7E9E28>65 D<B612E0A23807F007140114001560157015
30A21460A21500A2EBF1E013FFA213F1EBF060A2150CA214001518A31538157815F8EC03F0B6FC
A21E1F7E9E22>69 D<B612E0A23807F00714011400156015701530A21460A21500A2EBF1E013FF
A213F1EBF060A491C7FCA8B512C0A21C1F7E9E21>I<B51280A23807F000B3A9B51280A2111F7F
9E14>73 D<D8FFF8EBFFF0A2D807FCEB06007F7F00061380137FEB3FC0EB1FE0EB0FF014F8EB07
FC1303EB01FEEB00FFEC7F8615C6EC3FE6141FEC0FF6EC07FE1403A214011400157E153E151EA2
D8FFF0130E1506241F7E9E29>78 D<B512F814FF3907F01FC0EC07E06E7EA281A45DA24A5AEC1F
C090B5C7FC5C9038F03F806E7E81140FA61630A2EDF070913807F860B53881FFE09138807F8024
1F7E9E27>82 D<3803FC08380FFF38381E03F8EA3C00481378143812F814187E1400B4FC13F86C
B4FC14C06C13E06C13F06C13F8120338001FFC13011300A200C0137CA36C1378A200F813F038FE
01E038E7FFC000811300161F7D9E1D>I<007FB512FCA2397C0FE07C0070141C0060140CA200E0
140E00C01406A400001400B10007B512C0A21F1E7E9D24>I<B53A1FFFC0FFE0A23C0FE001FC00
0E00D807F0150C81EBF80000035E816D1538000149EB803015BFD800FE5D9138031FC001FF15E0
017F6E5AEC060FD93F86EBE180028E13F1ECCC07011F02F3C7FC9138D803FB02F813FF010F5CEC
F00101075CECE000A201035C4A1378010114704A1330331F7F9E36>87 D<EA07FCEA1FFF383F0F
80EB07C0EB03E0A2120C1200EA01FF120FEA3F83EA7E03127C12F8A3EAFC07EA7E0D383FF9FE38
07E07E17147F9319>97 D<EB07F8A21300AAEA01F8EA0FFEEA1F83EA3E01EA7E00127CA212FCA6
127CA2127EEA3E01EA1F07380FFEFFEA03F818207E9F1D>100 D<EA01FE3807FF80381F83E038
3F01F0EA7E0014F85AA2B5FCA200FCC7FCA3127C127E003E1318003F1338380F80703807FFE0C6
138015147F9318>I<EB1F80EBFFC03801F3E0EA03E713C71207EBC3C0EBC000A5EAFFFCA2EA07
C0B0EA3FFCA213207F9F10>I<3801FC3C3807FFFE380F07DEEA1E03003E13E0A5001E13C0380F
0780EBFF00EA19FC0018C7FCA2121C381FFF8014F06C13F8003F13FC387C007C0070133E00F013
1EA30078133CA2383F01F8380FFFE000011300171E7F931A>I<B4FCA2121FAAEB0FC0EB3FE0EB
61F0EBC0F813801300AD38FFE3FFA218207D9F1D>I<121C123F5AA37E121CC7FCA6B4FCA2121F
B0EAFFE0A20B217EA00E>I<B4FCA2121FB3AAEAFFE0A20B207E9F0E>108
D<3AFE0FE03F8090393FF0FFC03A1E70F9C3E09039C07F01F0381F807EA2EB007CAC3AFFE3FF8F
FEA227147D932C>I<38FE0FC0EB3FE0381E61F0EBC0F8EA1F801300AD38FFE3FFA218147D931D>
I<48B4FC000713C0381F83F0383E00F8A248137CA200FC137EA6007C137CA26C13F8A2381F83F0
3807FFC00001130017147F931A>I<38FF1FC0EB7FF0381FE1F8EB80FCEB007EA2143E143FA614
3E147E147CEB80FCEBC1F8EB7FE0EB1F8090C7FCA7EAFFE0A2181D7E931D>I<EAFE3EEB7F8038
1ECFC0EA1F8FA3EB030090C7FCABEAFFF0A212147E9316>114 D<EA0FE6EA3FFEEA701EEA600E
EAE006A2EAF800EAFFC0EA7FF8EA3FFCEA1FFE1203EA001FEAC007A212E0EAF006EAF81EEAFFFC
EAC7F010147E9315>I<EA0180A31203A31207120F123FEAFFFCA2EA0F80AA1386A5EA07CCEA03
F8EA01F00F1D7F9C14>I<38FF07F8A2EA1F00AD1301A2EA0F073807FEFFEA03F818147D931D>I
E /Fg 77 124 df<90380FC3E090387FEFF09038E07C783801C0F8D8038013303907007000A7B6
1280A23907007000B0387FE3FFA21D20809F1B>11 D<EB1F80EB7FC03801E0E0EA0381A2EA0701
90C7FCA6B512E0A2EA0700B0387FC3FEA21720809F19>I<EB1FE0137FEA01E1EA03811380EA07
00A7B5FCA2EA0700B0387FE7FEA21720809F19>I<90380F80F890387FE7FE9038E06E063901C0
FC0F380380F8380700F00270C7FCA6B7FCA23907007007B03A7FE3FE3FF0A22420809F26>I<90
380FC0FFEB7FE79038E07E0F3801C0FC4848487E38070070A7B7FCA23907007007B03A7FE3FE3F
F0A22420809F26>I<EA7038EAF87CEAFC7EA2EA7C3EEA0C06A3EA180CA2EA381CEA3018EA6030
EA40200F0E7E9F17>34 D<127012F812FCA2127C120CA31218A21238123012601240060E7C9F0D
>39 D<136013C0EA0180EA03005A12065A121C12181238A212301270A31260A212E0AC1260A212
70A312301238A21218121C120C7E12077EEA0180EA00C013600B2E7DA112>I<12C012607E7E12
1C120C7E12077E1380A2120113C0A31200A213E0AC13C0A21201A313801203A213005A12065A12
1C12185A5A5A0B2E7DA112>I<1306AFB612F0A2D80006C7FCAF1C207D9A23>43
D<127012F812FCA2127C120CA31218A21238123012601240060E7C840D>I<EAFFC0A30A037F8A
0F>I<127012F8A3127005057C840D>I<1303A213071306A2130E130CA2131C1318A213381330A2
13701360A213E013C0A212011380A312031300A25A1206A2120E120CA2121C1218A212381230A2
12701260A212E05AA2102D7DA117>I<EA03F0EA0FFCEA1E1EEA1C0E487E00781380EA7003A300
F013C0AD00701380A3EA780700381300EA1C0EEA1E1EEA0FFCEA03F0121F7E9D17>I<EA018012
03121F12FF12E31203B3A5EAFFFEA20F1E7C9D17>I<EA03F0EA0FFCEA183EEA300F00601380EA
C00700F013C012F81303A21220EA00071480A2EB0F00130E5B5B5B5B485A485A90C7FC000613C0
5A5A38300180EA7FFFB5FCA2121E7E9D17>I<EA03F0EA0FFCEA1C1EEA300F00781380A21307EA
380F12001400A2131E5BEA03F85BEA001C7F130FEB0780A214C0122012F8A300F01380EA600F00
701300EA3C1EEA1FFCEA03F0121F7E9D17>I<130EA2131E133EA2136E13EE13CEEA018E120313
0E1206120E120C121812381230126012E0B512F0A238000E00A7EBFFE0A2141E7F9D17>I<EA38
03EA3FFF5B13F813E00030C7FCA6EA31F0EA37FCEA3E0EEA3C0700381380EA3003120014C0A312
6012F0A21480EAC00700601300EA700EEA3C1EEA0FF8EA07E0121F7E9D17>I<137CEA01FEEA07
83380E0380EA0C07121C3838030090C7FC12781270A2EAF3F8EAF7FEEAFC0E487EEB0380A200F0
13C0A51270A214801238EB0700121CEA0E1EEA07FCEA01F0121F7E9D17>I<1260387FFFC0A214
80EA600138C003001306A2C65A5BA25B5BA213E05B1201A3485AA41207A76CC7FC121F7D9D17>
I<EA03F0EA0FFCEA1E1EEA3807123038700380A438780700123EEA3F0EEA1FDCEA0FF81203487E
EA1E7EEA383F38700F80130738E003C01301A400F01380EA700338380700EA1E0EEA0FFCEA03F0
121F7E9D17>I<EA03F0487EEA1E1CEA380E7F1270EB038012F0A214C0A5EA7007A2EA380F121C
EA1FFBEA07F338000380A2130714001230EA780EA2EA701CEA3078EA1FF0EA0FC0121F7E9D17>
I<127012F8A312701200AA127012F8A3127005147C930D>I<127012F8A312701200AA127012F8
A312781218A41230A21260A21240051D7C930D>I<007FB512E0B612F0C9FCA8B612F06C14E01C
0C7D9023>61 D<EA0FC0EA3FF0EA7078EA6038EAE03C12F0A212601200137813F013E0EA01C013
8012031300A7C7FCA51207EA0F80A3EA07000E207D9F15>63 D<EB0380A3497EA3EB0DE0A3EB18
F0A3EB3078A3497EA3EBE01E13C0EBFFFE487FEB800FA200031480EB0007A24814C01403EA0F80
39FFE03FFEA21F207F9F22>65 D<B512E014F83807803E80801580A515005C143E5CEBFFF880EB
801E801580140715C0A51580140FEC1F00143EB512FC14F01A1F7E9E20>I<90381FC04090387F
F0C03801F8393803C00D38078007380F0003121E003E1301123C127C1400127812F81500A80078
14C0127CA2123C003EEB0180121E6CEB0300EA07803803C00E3801F81C38007FF0EB1FC01A217D
9F21>I<B512E014FC3807803E140FEC0780EC03C015E0140115F01400A215F8A915F0A2140115
E0A2EC03C0EC0780EC0F00143EB512FC14E01D1F7E9E23>I<B6FCA23807801F140780A2158014
01A214C1A2ECC000A2138113FFA213811380A21560A2140015C0A31401A21403EC0F80B6FCA21B
1F7E9E1F>I<B6FCA23807801F140780A215801401A214C1A2ECC000A2138113FFA213811380A4
91C7FCA8EAFFFEA2191F7E9E1E>I<90380FC02090387FF8603901F81CE03803E0063807800338
0F0001121E14005A127C1560127812F81500A6EC7FFCA20078EB01E0127CA2123C7EA27E380780
03EA03E03901F80E6039007FFC2090380FE0001E217D9F24>I<39FFF8FFF8A23907800F00AC90
B5FCA2EB800FAD39FFF8FFF8A21D1F7E9E22>I<EAFFFCA2EA0780B3A9EAFFFCA20E1F7F9E10>I<
EAFFFEA2EA0780B11406A4140EA2140C141C143C14FCB5FCA2171F7E9E1C>76
D<B46CEB1FF86D133F00071500A2D806E0136FA3017013CFA3903838018FA390381C030FA3EB0E
06A3EB070CA3EB0398A3EB01F0A3380F00E03AFFF0E1FFF8A2251F7E9E2A>I<39FF807FF813C0
0007EB07809038E00300A2EA06F0A21378133CA2131EA2130FA2EB078314C31303EB01E3A2EB00
F3A2147BA2143F80A280A2000F7FEAFFF0801D1F7E9E22>I<EB1F80EBFFF03801E0783807C03E
48487E497E001EEB078048EB03C0A2007C14E0A20078130100F814F0A9007814E0007C1303A200
3C14C0003E1307001E14806CEB0F006D5A3807C03E3801F0F86CB45AEB1F801C217D9F23>I<B5
12E014F83807807C141E141F801580A515005C141E147CEBFFF814E00180C7FCACEAFFFCA2191F
7E9E1F>I<B57E14F0380780F8143C143E141E141FA4141E143E143C14F8EBFFF01480EB81C0EB
80E01470A21478A3147CA3150C147E143E39FFFC1F18EC0FF0C7EA03E01E207E9E21>82
D<3807E080EA0FF9EA1C1FEA300FEA7007EA600312E01301A36CC7FCA21278127FEA3FF0EA1FFC
6C7EEA03FF38001F801307EB03C0A2130112C0A400E01380EAF00338F80700EAFE0EEACFFCEA81
F812217D9F19>I<007FB512E0A238780F010070130000601460A200E0147000C01430A4000014
00B23807FFFEA21C1F7E9E21>I<39FFFC7FF8A23907800780EC0300B3A300031302EBC006A200
015B6C6C5AEB7830EB3FE0EB0FC01D207E9E22>I<39FFF007FEA2390F8001F090C712E06C6C13
C0A2EBC00100031480A2EBE00300011400A23800F006A3EB780CA36D5AA36D5AA2EB1F70EB0F60
A214E06D5AA26D5AA31F207F9E22>I<3BFFF07FF83FF0A23B0F0007800F80EE0300A23A07800F
C006A3913819E00ED803C0140CA214393A01E030F018A33A00F0607830A3ECE07C903978C03C60
A390393D801EC0A390383F000F6D5CA3010E6DC7FCA32C207F9E2F>I<397FF83FF8A23907C00F
800003EB06003801E00EEBF00C00005BEB7838EB7C30EB3C70EB3E60EB1EC0130F5C1307808013
0DEB1DF0EB18F8EB3878EB307CEB603CEBE01EEBC01F48487E0003EB0780010013C0EA0F8039FF
E01FFEA21F1F7F9E22>I<EA0804EA180CEA3018EA7038EA6030A2EAC060A3EAF87CEAFC7EA2EA
7C3EEA381C0F0E7B9F17>92 D<EA1FE0487EEA78387FEA300E1200A3EA03FE121FEA3E0E127812
F800F01330A3131E38783F70383FEFE0380F878014147E9317>97 D<120E12FEA2120EA9133FEB
FF80380FC3C0EB00E0000E13F014701478A7147014F0120FEB01E0EBC3C0380CFF80EB3E001520
7F9F19>I<EA03F8EA0FFCEA1E1E123CEA380CEA7800127012F0A612701278EA3803123CEA1F0E
EA0FFCEA03F010147E9314>I<EB0380133FA21303A9EA03E3EA0FFBEA1E0FEA3C07EA7803A212
7012F0A61270A2EA78071238EA1E1F380FFBF8EA03E315207E9F19>I<EA03F0EA0FFCEA1E1E48
7EEA380712783870038012F0B5FCA200F0C7FCA31270127838380180EA1C03380F0700EA07FEEA
01F811147F9314>I<133C13FEEA01CFEA038F1306EA0700A7EAFFF0A2EA0700B0EA7FF0A21020
809F0E>I<EB01E03803E3F0380FFF70EA1C1C383C1E00EA380EEA780FA4EA380EEA3C1EEA1C1C
EA3FF8EA33E00030C7FCA21238EA3FFE381FFF804813C0387003E0EB00F0481370A36C13F03878
01E0383E07C0380FFF00EA03FC141F7F9417>I<120E12FEA2120EA9133E13FF380FC380EB01C0
A2120EAD38FFE7FCA216207F9F19>I<121C121E123E121E121CC7FCA6120E127EA2120EAFEAFF
C0A20A1F809E0C>I<13E0EA01F0A3EA00E01300A61370EA07F0A212001370B3A21260EAF0E0EA
F1C0EA7F80EA3E000C28829E0E>I<120E12FEA2120EA9EB1FF0A2EB0F80EB0E00130C5B5B1370
13F0EA0FF81338EA0E1C131E130E7F1480130314C038FFCFF8A215207F9F18>I<120E12FEA212
0EB3A9EAFFE0A20B20809F0C>I<390E3F03F039FEFF8FF839FFC1DC1C390F80F80EEB00F0000E
13E0AD3AFFE7FE7FE0A223147F9326>I<EA0E3EEAFEFF38FFC380380F01C0A2120EAD38FFE7FC
A216147F9319>I<EA01F8EA07FE381E0780383C03C0EA3801387000E0A200F013F0A6007013E0
EA7801003813C0EA3C03381E07803807FE00EA01F814147F9317>I<EA0E3F38FEFF8038FFC3C0
380F01E0380E00F0A21478A7147014F0120FEB01E0EBC3C0380EFF80EB3E0090C7FCA7EAFFE0A2
151D7F9319>I<3803E180EA0FF9EA1E1FEA3C0712781303127012F0A6127012781307EA3C0FEA
1E1FEA0FF3EA03E3EA0003A7EB3FF8A2151D7E9318>I<EA0E78EAFEFCEAFF9EEA0F1E130C1300
120EACEAFFE0A20F147F9312>I<EA1F90EA3FF0EA7070EAE030A3EAF0001278EA7F80EA3FE0EA
0FF01200EAC0781338A212E0A2EAF070EADFE0EA8F800D147E9312>I<1206A4120EA2121E123E
EAFFF8A2EA0E00AA1318A5EA073013E0EA03C00D1C7F9B12>I<380E01C0EAFE1FA2EA0E01AC13
03A2EA070FEBFDFCEA01F116147F9319>I<38FF87F8A2381E01E0000E13C01480A238070300A3
EA0386A2138EEA01CCA213FC6C5AA21370A315147F9318>I<39FF9FF3FCA2391C0780F01560EC
C0E0D80E0F13C0130C14E00007EBE180EB186114713903987300EBB033A2143F3801F03EEBE01E
A20000131CEBC00C1E147F9321>I<387FC7FCA2380703E0148038038300EA01C7EA00EE13EC13
781338133C137C13EEEA01C7138738030380380701C0000F13E038FF87FEA21714809318>I<38
FF87F8A2381E01E0000E13C01480A238070300A3EA0386A2138EEA01CCA213FC6C5AA21370A313
60A35B12F0EAF18012F3007FC7FC123C151D7F9318>I<EA3FFFA2EA380EEA301CEA703CEA6038
137013F0EA01E013C0EA0380EA0783EA0F03120EEA1C07EA3C061238EA701EEAFFFEA210147F93
14>I<B512FCA21602808C17>I E /Fh 29 122 df<48B4FC000F13E0383E03F8007813FCEA7E01
00FF13FEA5387E03FC1200EB07F0EB0FE01480EB1F00131E5BA25BA21370A690C7FCA61370EA01
FC487EA56C5AEA0070172A7CA920>63 D<B712C0A33903FE003FED0FE015031501A21500A316F0
9138038070A31600A21407140F90B5FCA3EBFE0F14071403A591C8FCA9B512FEA324297DA82B>
70 D<91387FE003903903FFFC0F011FEBFF1F90397FF00FFF9038FF8001D803FEC7FC48488048
48804980485A003F815B007F81A3484891C7FCA90203B512F8A2EA7FC0DA00011300A2123F7F12
1F6C7E7F6C7E6C6C5B3800FF8090387FF00F011FB5123F0103EBFC0F9039007FE0032D297CA836
>I<B512FEA300011300B3B1B512FEA317297FA81A>73 D<B592383FFFC0A26E5C0003EFF000A2
D9BFC014EFA2D99FE0EB01CFA2D98FF0EB038FA3D987F8EB070FA2D983FC130EA2D981FE131CA3
D980FF1338A291387F8070A291383FC0E0A391381FE1C0A291380FF380A2913807FF00A36E5AA2
6E5AA26E5AD8FFFE0203B512C0A215703A297DA841>77 D<90387F80603903FFF0E0000F13FF38
1F807F383F001F003E1307007E1303127C00FC1301A214007E7E6D130013F8EBFF806C13F814FE
6C7F6C14C07E6C14E0000114F0EA003F010113F8EB001F1407A200E013031401A37E15F06C1303
6C14E0B413079038E01FC090B5120000E05B38C01FF01D297CA826>83 D<B53CF87FFFF807FFF0
A32703FE000190C7EA1C00A26C6C6F5B816E16786C701370A26E6E13F0017F495D14E0013F496D
485A169F02F01503011F9026070FF85BA2DAF80FEBFC07010FD90E0791C7FC14FC0107011EEBFE
0EED1C0302FE151E010390393801FF1CA2902601FF7814B8ED700015F06D16F04B137FA26E486D
5AA2023F5D4B131FA2021F5D92C7120FA2020E6EC8FC44297FA847>87 D<48B47E000F13F0381F
81FC486C7E147FA2EC3F80A2EA0F00C7FCA2EB0FFF90B5FC3807FC3FEA1FE0EA3F80127F130012
FEA3147F7E6CEBFFC0393F83DFFC380FFF0F3801FC031E1B7E9A21>97 D<EB1FF0EBFFFE3803F0
3F390FE07F80EA1FC0EA3F80A2127F9038001E004890C7FCA97E7F003FEB01C013C0001F130339
0FE007803903F01F003800FFFCEB1FE01A1B7E9A1F>99 D<EC3FF8A31403ACEB1FE3EBFFFB3803
F03F380FE00F381FC007383F8003A2127F13005AA97EA2EA3F801407381FC00F380FE01F3A03F0
3FFF803800FFF3EB3FC3212A7EA926>I<EB3FE03801FFF83803F07E380FE03F391FC01F80393F
800FC0A2EA7F00EC07E05AA390B5FCA290C8FCA47E7F003F14E01401D81FC013C0380FE0033903
F81F803900FFFE00EB1FF01B1B7E9A20>I<EB07F8EB3FFEEBFE3F3901FC7F80EA03F8A2EA07F0
A2EC3F0091C7FCA6B512C0A3D807F0C7FCB3A3387FFF80A3192A7EA915>I<9038FF81F00003EB
E7FC390FC1FE7C391F80FCFC003FEBFE7C9038007E3848EB7F00A66C137EEB80FE001F5B380FC1
F8381FFFE0001813800038C8FC123CA2123E383FFFF814FF6C14C06C14E06C14F0121F397E0007
F8007C13015A1400A36C1301007EEB03F06CEB07E0390FC01F803903FFFE0038007FF01E287E9A
22>I<EAFFE0A3120FAC147F9038E1FFC09038E787E09038EE07F09038FC03F813F813F0A313E0
AF3AFFFE3FFF80A3212A7DA926>I<1207EA1FC013E0123FA3121F13C0EA0700C7FCA7EAFFE0A3
120FB3A3EAFFFEA30F2B7DAA14>I<EAFFE0A3120FACEC1FFCA3EC07C0EC0F80EC1E00147C5CEB
E1F0EBE3E0EBE7C0EBEFE0EBFFF0A280EBF3FCEBE1FE13C080EC7F80143F15C0EC1FE0EC0FF039
FFFC3FFEA31F2A7EA924>107 D<EAFFE0A3120FB3B2EAFFFEA30F2A7DA914>I<3BFFC07F800FF0
903AC1FFE03FFC903AC783F0F07E3B0FCE03F9C07F903ADC01FB803F01F8D9FF00138001F05BA3
01E05BAF3CFFFE1FFFC3FFF8A3351B7D9A3A>I<38FFC07F9038C1FFC09038C787E0390FCE07F0
9038DC03F813F813F0A313E0AF3AFFFE3FFF80A3211B7D9A26>I<EB3FE03801FFFC3803F07E39
0FC01F80391F800FC0003F14E0EB00074814F0A34814F8A86C14F0A2393F800FE0A2001F14C039
0FC01F803907F07F003801FFFC38003FE01D1B7E9A22>I<38FFE1FE9038E7FF809038FE07E039
0FF803F8496C7E01E07F140081A2ED7F80A9EDFF00A25DEBF0014A5A01F85B9038FE0FE09038EF
FF80D9E1FCC7FC01E0C8FCA9EAFFFEA321277E9A26>I<38FFC3F0EBCFFCEBDC7E380FD8FF13F8
5BA3EBE03C1400AFB5FCA3181B7E9A1C>114 D<3803FE30380FFFF0EA3E03EA7800127000F013
70A27E6C1300EAFFE013FE387FFFC06C13E06C13F0000713F8C613FC1303130000E0137C143C7E
A26C13787E38FF01F038F7FFC000C11300161B7E9A1B>I<1370A413F0A312011203A21207381F
FFF0B5FCA23807F000AD1438A73803F870000113F03800FFE0EB1F8015267FA51B>I<39FFE03F
F8A3000F1303B11407A2140F0007131F3A03F03BFF803801FFF338003FC3211B7D9A26>I<3AFF
FE03FF80A33A07F0007000A26D13F000035CEBFC0100015CA26C6C485AA2D97F07C7FCA2148FEB
3F8E14DEEB1FDCA2EB0FF8A36D5AA26D5AA26D5A211B7F9A24>I<3BFFFE7FFC0FFEA33B0FE007
E000E03B07F003F001C0A29039F807F80300031680A23B01FC0EFC0700A2D9FE1E5B000090381C
7E0EA29039FF383F1E017F141C0278133C90393FF01FB8A216F86D486C5AA26D486C5AA36D486C
5AA22F1B7F9A32>I<39FFFC0FFFA33907F003C06C6C485AEA01FC6C6C48C7FCEBFF1E6D5AEB3F
F86D5A130FA2130780497E497E131EEB3C7F496C7E496C7ED801E07FEBC00F00036D7E3AFFF01F
FF80A3211B7F9A24>I<3AFFFE03FF80A33A07F0007000A26D13F000035CEBFC0100015CA26C6C
485AA2D97F07C7FCA2148FEB3F8E14DEEB1FDCA2EB0FF8A36D5AA26D5AA26D5AA2495AA2EA3807
007C90C8FCEAFE0F130E131E5BEA7C78EA3FE0EA0FC021277F9A24>I E
/Fi 18 119 df<127012F812FCA2127C120CA41218A21230A212601240060F7C840E>44
D<EA01801203120F12FF12F31203B3A8EAFFFEA20F217CA018>49 D<EA03F0EA0FFCEA1C1F3830
0F80EA6007EB03C012C000F013E0EAF801A3EA2003120014C0A2EB0780A2EB0F00131E131C5B5B
5B485A485A38070060120E120C4813E04813C0EA7FFFB5FCA213217EA018>I<EA01F0EA07FCEA
0E0F38180780EA3803383001C01270A31278EB0380123E383F0700EA1FCEEA0FFCEA03F87FEA0F
7F381C3F80EA380F387007C0130338E001E01300A5387001C0A238380380381E0F00EA0FFEEA03
F013227EA018>56 D<EA01F0EA07FCEA0E0E487E383803801278127038F001C0A314E0A5127013
031278EA3807EA1C0DEA0FF9EA07F1380081C0130113031480A2383007001278130EEA701C6C5A
EA1FF0EA0FC013227EA018>I<D8FFC0EB03FF6D5B000715E0A2D806F0130DA301781319A36D13
31A36D1361A36D13C1A29038078181A3903803C301A3EB01E6A3EB00FCA31478EA1F80D8FFF0EB
3FFF143028227EA12D>77 D<39FF800FFF13C00007EB01F89038E000607F12061378A27F133E13
1E7FA2EB078014C01303EB01E0A2EB00F01478A2143CA2141E140FA2EC07E0A214031401A2381F
8000EAFFF0156020227EA125>I<3803F020380FFC60381C0EE0EA3803EA7001A2EAE000A21460
A36C1300A21278127FEA3FF0EA1FFE6C7E0003138038003FC0EB07E01301EB00F0A2147012C0A4
6C136014E06C13C0EAF80138EF038038C7FF00EA81FC14247DA21B>83 D<EA0FE0EA1FF8EA3C1C
7FEA18071200A25BEA03FF120FEA3F07127C127812F01418A2130F1278387C3FB8383FF3F0380F
C3C015157E9418>97 D<120E12FEA2121E120EAAEB1F80EB7FE0380FC0F0EB0078000E1338143C
141C141EA7141C143C000F1338EB8070EBC1F0380C7FC0EB1F0017237FA21B>I<EA01FEEA07FF
380F0780121C383803000078C7FC127012F0A7127814C07E381E0180380F0300EA07FEEA01F812
157E9416>I<EA01FCEA07FF380F0780381C03C0EA3801007813E0EA7000B5FCA200F0C7FCA512
7814607E6C13C0380F83803807FF00EA00FC13157F9416>101 D<121C121E123E121E121CC7FC
A8120E12FEA2121E120EAFEAFFC0A20A227FA10E>105 D<390E1FC07F3AFE7FE1FF809039C0F3
03C03A1F807E01E0390F003C00000E1338AE3AFFE3FF8FFEA227157F942A>109
D<380E1F8038FE7FC038FFC1E0381F80F0380F0070120EAE38FFE7FFA218157F941B>I<EA01FC
EA07FF380F0780381C01C0383800E0007813F00070137000F01378A700701370007813F0003813
E0381C01C0380F07803807FF00EA01FC15157F9418>I<EA0E3CEAFEFEEAFFCFEA1F8FEA0F0613
00120EADEAFFF0A210157F9413>114 D<38FFC3FEA2381E00F8000E1360A26C13C0A338038180
A213C300011300A2EA00E6A3137CA31338A217157F941A>118 D E /Fj
17 124 df<B51280A23807F0006C5AB3B3A7487EB51280A211317DB017>73
D<D8FFF0ED7FF86D15FF0007170000035E017CEC01BEA36DEC033EA36D1406A36D6C130CA36D6C
1318A36D6C1330A36D6C1360A216C06D7EA291387C0180A391383E0300A3EC1F06A3EC0F8CA3EC
07D8A3EC03F0A3486C6C5AD80FC0157FD8FFFC91380FFFF8EC00C035317CB03D>77
D<EC3FC0903801FFF8903807C03E90391F000F80013CEB03C001F8EB01F048486D7E4848147C49
143C0007153E484880A248C8EA0F80A2003EED07C0A2007E16E0A2007C1503A200FC16F0AB007E
ED07E0A4003E16C0003F150F6C1680A26C6CEC1F00A26C6C143E6C6C5CA26C6C5C6C6C495A013E
EB07C06D495A902607E07EC7FC903801FFF89038003FC02C337CB134>79
D<B612C015F83907E000FE0003141FED0F80ED07C0ED03E016F01501A216F8A616F0A2150316E0
ED07C0ED0F80ED1F0015FE90B512F815C001E0C8FCB3A2487EB57EA225317CB02D>I<EA01FE38
0FFFC0381C03E0383C00F0003E137880141C0008131EC7FCA4EB01FE133F3801FF1EEA07F0EA0F
80EA1F00123E5AA248140CA3143EA2007C137E6CEBDF1C391F038FB8390FFF07F03903F803C01E
1F7D9E21>97 D<EB3FC0EBFFF83803E01C3807801E380F003E121EA2481308007C1300A2127812
F8A9127CA36C1303121E001F1306380F800E3807C01C3803F0383800FFE0EB3F80181F7D9E1D>
99 D<EB3F80EBFFE03803E0F83807803C48487E121E805A127C15800078130712F8B6FCA200F8
C8FCA61278127C123CEC01807E6CEB0300EB80063807C00E3801F03C3800FFF0EB1FC0191F7E9E
1D>101 D<EB03E0EB1FF8EB3C38EB707C13F0EA01E014383803C000ACB512C0A23803C000B3A8
487EEA7FFFA216327FB114>I<15F090387F03F83901FFCF1C3803C1FC390780F818390F007800
48137C001E133C003E133EA7001E133C001F137C6C13786C6C5A380FC1E0380DFFC0D81C7FC7FC
0018C8FCA2121CA2121E380FFFF814FF6C14804814C0391E0007E00038EB01F048EB0070157848
1438A500701470007814F06CEB01E06CEB03C03907C01F003801FFFC38003FE01E2F7E9F21>I<
1207EA0F80121FA2120FEA0700C7FCABEA078012FFA2120F1207B3A6EA0FC0EAFFF8A20D307EAF
12>105 D<EA078012FFA2120F1207B3B3A7EA0FC0EAFFFCA20E327EB112>108
D<380781FE39FF87FF8090388E07C0390F9803E03807B0019038E000F05BA35BB3486C487E3AFF
FC1FFF80A2211F7E9E25>110 D<380783E038FF8FF8EB9C7CEA0FB0EA07F0EBE038EBC000A35B
B3487EEAFFFEA2161F7E9E19>114 D<3801FC10380FFF30381E03F0EA38004813705A1430A37E
6C1300127EEA3FF06CB4FC6C1380000313E038003FF0EB03F8EB007800C0133CA2141C7EA27E14
186C13386C137038EF01E038C3FFC03880FE00161F7E9E1A>I<13C0A51201A31203A21207120F
121FB512E0A23803C000B01430A83801E060A23800F0C0EB7F80EB1F00142C7FAB19>I<D80780
13F000FF131FA2000F130100071300B31401A2140300031307EBC00E3901F03CF83A00FFF0FF80
EB3FC0211F7E9E25>I<B71280A22102809321>123 D E end
%%EndProlog
%%BeginSetup
%%Feature: *Resolution 300
TeXDict begin
%%EndSetup
%%Page: 1 1
bop 457 227 a Fj(Message)21 b(P)n(assing)g(In)n(terface)i({)f(Outline)869
354 y Fi(Marc)16 b(Snir)772 456 y(No)o(v)o(em)o(b)q(er)d(28,)k(1992)75
643 y Fh(In)n(tro)r(duction)75 745 y Fg(The)f(purp)q(ose)h(of)f(this)g(do)q
(cumen)o(t)h(is)f(to)g(pro)o(vide)g(a)g(framew)o(ork)f(that)g(w)o(e)h(can)g
(use)h(to)e(discuss)i(issues)75 801 y(in)i(the)e(de\014nition)j(of)d(MPI,)h
(to)f(list)i(questions)f(w)o(e)f(need)i(to)e(answ)o(er,)h(and)g(prop)q(ose)f
(some)h(answ)o(ers.)75 857 y(I)g(plan)g(to)e(use)i(this)g(do)q(cumen)o(t)f
(as)g(a)g(framew)o(ork)f(for)h(the)g(discussions)i(in)f(the)f(p)q(oin)o
(t-to-p)q(oin)o(t)h(sub-)75 914 y(committee;)d(I)g(broadcast)g(it)g(to)g(the)
g(en)o(tire)g(committee,)g(b)q(ecause)h(man)o(y)f(issues)h(are)f(relev)m(an)o
(t)g(to)g(the)75 970 y(other)g(sub)q(committees.)75 1113 y
Fh(Goals)131 1214 y Fg(1.)22 b(Design)17 b(an)h(application)h(programming)d
(in)o(terface)i(\(not)e(necessarily)j(a)e(target)f(for)h(compilers)189
1271 y(or)d(a)h(system)g(implemen)o(tation)h(library\))131
1363 y(2.)22 b(Allo)o(w)15 b(e\016cien)o(t)h(comm)o(unication:)21
b(Av)o(oid)16 b(memory)e(to)h(memory)g(cop)o(ying)g(and)h(allo)o(w)f(o)o(v)o
(erlap)189 1420 y(of)e(computation)g(and)h(comm)o(unication)g(and)g(o\017oad)
f(to)g(comm)o(unication)h(copro)q(cessor,)g(where)189 1476
y(a)o(v)m(ailable)131 1569 y(3.)22 b(Allo)o(w)15 b(\(but)g(no)h(mandate\))e
(extensions)i(for)f(use)g(in)h(heterogeneous)f(en)o(vironmen)o(t.)131
1661 y(4.)22 b(Allo)o(w)15 b(con)o(v)o(enien)o(t)h(C,)f(C++,)g(F77)f(and)i
(F90)e(bindings)j(for)e(in)o(terface.)131 1754 y(5.)22 b(Pro)o(vide)15
b(a)g(reliable)i(comm)o(unication)f(in)o(terface:)21 b(User)15
b(need)h(not)f(cop)q(e)h(with)f(comm)o(unication)189 1810 y(failures.)21
b(Suc)o(h)15 b(failures)i(are)d(dealt)i(b)o(y)f(the)h(underlying)h(comm)o
(unication)f(subsystem.)131 1902 y(6.)22 b(F)l(o)q(cus)15 b(on)g(a)g(prop)q
(osal)h(that)e(can)h(b)q(e)h(agreed)f(up)q(on)h(in)g(6)f(mon)o(ths.)131
1995 y(7.)22 b(De\014ne)10 b(an)g(in)o(terface)h(that)e(is)i(not)f(to)q(o)f
(di\013eren)o(t)i(from)e(curren)o(t)h(practice)h(\(PVM/Express/P)o(armacs\))
131 2087 y(8.)22 b(De\014ne)13 b(an)g(in)o(terface)f(that)g(can)h(b)q(e)h
(quic)o(kly)g(implemen)o(ted)g(on)f(man)o(y)f(v)o(endors)g(platforms,)h(with)
189 2144 y(no)i(signi\014can)o(t)h(c)o(hanges)f(in)h(the)f(underlying)j(comm)
o(unication)d(and)h(system)f(soft)o(w)o(are.)146 2245 y(Do)f(w)o(e)h(agree)g
(on)g(this?)75 2388 y Fh(F)-6 b(ramew)n(ork)75 2489 y Fg(I)11
b(prop)q(ose)g(to)g(consider)g(comm)o(unication)h(op)q(erations)f(as)g
(consisting)g(of)g(the)g(follo)o(wing)g(sub)q(op)q(erations:)75
2591 y Ff(INIT\(op)q(eration,)19 b(params,)d(handle\))24 b
Fg(Pro)q(cess)15 b(pro)o(vides)f(all)i(relev)m(an)o(t)e(parameters)g(for)g
(its)g(par-)189 2647 y(ticipation)19 b(in)f(the)g(comm)o(unication)g(op)q
(eration)g(\(data)f(bu\013er,)h(t)o(yp)q(e,)g(participan)o(ts,)g(etc.\).)27
b(A)189 2704 y(handle)16 b(is)g(created)f(that)g(iden)o(ti\014es)h(the)g(op)q
(eration.)964 2828 y(1)p eop
%%Page: 2 2
bop 75 45 a Ff(ST)l(AR)l(T\(handle\))24 b Fg(The)16 b(comm)o(unication)g(op)q
(eration)f(is)h(started)75 139 y Ff(A)-6 b(W)g(AIT\(handle\))24
b Fg(The)15 b(comm)o(unication)h(op)q(eration)g(is)g(completed.)75
232 y Ff(FREE\(handle\))25 b Fg(The)16 b(handle,)g(and)f(asso)q(ciated)g
(resources)h(are)f(freed.)75 337 y(Correct)g(in)o(v)o(o)q(cation)h(of)g
(these)g(sub)q(op)q(erations)g(is)h(a)e(sequence)i(of)e(the)h(form)f(1\(23\))
1539 321 y Fe(\003)1558 337 y Fg(4.)21 b(I.e.,)15 b(a)h(handle)75
394 y(need)g(b)q(e)g(created)g(b)q(efore)g(comm)o(unication)g(o)q(ccurs;)g
(it)f(can)h(b)q(e)g(reused)g(only)g(after)f(the)g(previous)i(use)75
450 y(has)12 b(completed;)h(and)f(it)g(need)h(to)e(b)q(e)h(freed)g(ev)o(en)o
(tually)h(\(of)e(course,)h(one)g(can)g(assume)f(that)g(all)i(handles)75
507 y(are)i(freed)g(at)g(program)f(termination,)h(b)o(y)g(default\).)146
563 y(The)f(c)o(hoice)i(of)e(these)h(sub)q(op)q(erations)g(is)h(somewhat)d
(arbitrary)l(.)20 b(The)15 b(justi\014cation)g(is)g(that)f(com-)75
619 y(m)o(unication)k(ma)o(y)f(b)q(e)h(a)g(length)o(y)g(pro)q(cess)f(one)h
(desires)h(to)d(o)o(v)o(erlap)i(with)g(computation,)f(hence)i(the)75
676 y(separation)g(of)g(2)h(and)f(3;)i(also)e(comm)o(unication)i(setup)e(ma)o
(y)g(in)o(v)o(olv)o(e)h(a)f(signi\014can)o(t)i(o)o(v)o(erhead)e(one)75
732 y(desires)i(to)f(amortize)h(o)o(v)o(er)e(man)o(y)h(successiv)o(e)i(comm)o
(unications)f(with)g(the)g(same)f(c)o(haracteristics,)75 789
y(hence)c(the)g(separation)f(of)f(1)h(and)h(4)f(from)f(2)h(and)g(3.)75
932 y Fh(Issues)75 1035 y Fd(Whic)n(h)20 b(op)r(erations?)75
1121 y Fg(SEND)15 b(and)g(RECEIVE)g(for)g(p)q(oin)o(t)g(to)f(p)q(oin)o(t)i
(comm)o(unication.)k(Longer)15 b(list)h(for)e(collectiv)o(e)j(comm)o(u-)75
1177 y(nication)g(\(note:)k(SEND)16 b(and)g(RECEIVE)g(are)g(particular)g
(case)g(of)g(broadcast,)f(for)g(group)g(of)h(size)h(2;)75 1234
y(this)i(observ)m(ation)g(can)g(b)q(e)g(used)h(to)e(c)o(hec)o(k)h(if)g
(de\014nition)i(of)d(collectiv)o(e)i(comm)o(unication)g(seman)o(tics)75
1290 y(are)15 b(consisten)o(t)g(with)h(de\014nition)h(of)e(p)q(oin)o(t-to-p)q
(oin)o(t)h(comm)o(unication\).)146 1347 y(One)g(can)f(argue)g(for)f(a)h(SEND)
p 684 1347 14 2 v 17 w(RECV)g(\(or)f(EX)o(CHANGE\))h(op)q(eration.)146
1403 y(I)g(prop)q(ose)g(to)g(lea)o(v)o(e)g(out,)f(for)g(the)i(time)f(b)q
(eing,)h(things)f(lik)o(e)i(remote)d(pro)q(cedure)i(calls,)g(monitors,)75
1460 y(atomic)h(op)q(erations,)i(semaphores,)e(activ)o(e)h(messages,)g
(message)f(handlers,)i(etc.)27 b(This,)19 b(in)f(order)g(to)75
1516 y(fo)q(cus)f(initially)j(on)c(a)h(smaller)g(set)g(of)f(issues,)i(with)f
(less)g(dep)q(endencie)q(s)i(on)e(the)g(underlying)i(pro)q(cess)75
1572 y(mo)q(del.)146 1629 y(Opinions?)75 1750 y Fd(What)g(calls)h(are)e(made)
h(a)n(v)m(ailable)h(to)f(the)f(user?)75 1836 y Fg(Options:)75
1941 y Ff(\(1+2+3+4\))23 b Fg(blo)q(c)o(king)16 b(send/receiv)o(e)75
2035 y Ff(\(1+2\))i(\(3+4\))23 b Fg(non)o(blo)q(c)o(king)17
b(send/receiv)o(e,)f(follo)o(w)o(ed)f(b)o(y)h(w)o(ait)75 2128
y Ff(\(1\))i(\(2+3\))g(\(4\))24 b Fg(c)o(hannel)16 b(creation;)f(blo)q(c)o
(king)i(c)o(hannel)f(send/receiv)o(e;)g(c)o(hannel)h(cancelation)75
2222 y Ff(\(1\))h(\(2\))g(\(3\))h(\(4\))k Fg(c)o(hannel)17
b(creation;)e(non)o(blo)q(c)o(king)h(send/receiv)o(e;)g(w)o(ait;)f(c)o
(hannel)h(destruction)146 2327 y(An)o(y)f(more)g(needed?)22
b(An)o(y)15 b(less?)75 2448 y Fd(When)j(is)i(a)f(comm)n(unication)h(op)r
(eration)e(completed?)75 2534 y Fg(The)12 b(main)f(distinction)j(is)e(b)q(et)
o(w)o(een)f Fc(lo)n(c)n(al)g Fg(termination)g(and)h Fc(glob)n(al)f
Fg(termination.)19 b(A)11 b(send)h(terminates)75 2591 y(lo)q(cally)23
b(when)f(data)f(has)h(b)q(een)h(copied)g(out)e(of)g(the)h(sender)g(bu\013er)g
(\(formally)l(,)h(when)f(the)f(sender)75 2647 y(cannot)e(a\013ect)g(an)o
(ymore)g(the)h(outcome)g(of)f(the)h(send)g(op)q(eration\).)33
b(It)20 b(terminates)g(globally)g(when)75 2704 y(data)d(has)h(b)q(een)h
(receiv)o(ed)g(b)o(y)f(the)f(receiv)o(er)i(\(formally)l(,)f(when)h(receiv)o
(er)f(has)g(terminated)g(executing)964 2828 y(2)p eop
%%Page: 3 3
bop 75 45 a Fg(an)o(y)15 b(op)q(eration)h(that)f(logically)j(precedes)f(the)f
(execution)g(of)g(the)g(receiv)o(e\).)22 b(The)16 b(distinction)h(has)f(no)75
102 y(meaning)g(for)e(a)h(receiv)o(e)h({)f(since)i(lo)q(cal)f(termination)g
(of)e(a)h(receiv)o(e)h(implies)i(global)d(termination.)146
158 y(Choices:)131 252 y(1.)22 b(T)l(ermination)16 b(is)f(alw)o(a)o(ys)g(lo)q
(cal.)131 346 y(2.)22 b(T)l(ermination)e(is)g(either)g(lo)q(cal)h(or)e
(global,)i(at)e(user)g(c)o(hoice)i(\(e.g.,)e(user)g(can)h(c)o(ho)q(ose)g(b)q
(et)o(w)o(een)189 402 y(sync)o(hronous)15 b(and)g(async)o(hronous)g(comm)o
(unication\))131 496 y(3.)22 b(T)l(ermination)16 b(is)f(alw)o(a)o(ys)g
(global.)146 590 y(The)21 b(curren)o(t)f(MPI)h(prop)q(osal)g(c)o(ho)q(oses)g
(2.)37 b(If)21 b(w)o(e)g(stic)o(k)g(to)f(this)h(c)o(hoice)h(then)f(I)g
(suggest)g(that)75 646 y(termination)h(mo)q(de)g(\(global)g(or)f(lo)q(cal\))h
(is)g(part)f(of)g(the)h(op)q(eration)f(parameters)g(that)g(are)g(set)g(up)75
703 y(in)g(sub)q(op)q(eration)g(1.)34 b(F)l(urthermore,)21
b(I)f(w)o(ould)h(suggest)e(to)h(o\013er)f(the)h(same)g(option)h(for)e
(collectiv)o(e)75 759 y(comm)o(unications.)146 816 y(Another)13
b(issue)h(is)g(whether)g(termination)g(mo)q(de)f(need)h(b)q(e)h(consisten)o
(t)e(for)g(all)h(participan)o(ts.)20 b(Cur-)75 872 y(ren)o(t)c(MPI)g(prop)q
(osal)g(requires)h(that)e(a)g(sync)o(hronous)h(send)h(b)q(e)g(matc)o(hed)e(b)
o(y)h(a)g(sync)o(hronous)g(receiv)o(e)75 928 y(\(either)i(all)h(participan)o
(ts)f(use)g(lo)q(cal)h(completion)g(or)e(all)i(use)f(global)g(completion\).)
29 b(There)18 b(seem)g(to)75 985 y(b)q(e)d(no)g(comp)q(elling)i(logical)f
(reason)f(for)f(this)h(restriction,)g(and)g(I)g(am)g(not)f(sure)h(it)g(has)g
(signi\014can)o(t)g(im-)75 1041 y(plemen)o(tation)i(adv)m(an)o(tages.)k(The)
16 b(alternativ)o(e)g(is)g(to)f(allo)o(w)h(eac)o(h)g(participan)o(t)g(in)h(a)
e(comm)o(unication)75 1098 y(op)q(eration)h(to)g(c)o(ho)q(ose)g(either)h(lo)q
(cal)h(or)e(global)h(termination)f(\(this)h(b)q(ecomes)g(more)e(signi\014can)
o(t)j(for)d(a)75 1154 y(collectiv)o(e)i(op)q(eration,)e(where)g(the)h(c)o
(hoice)g(is)g(meaningful)g(at)f(more)f(than)i(one)f(pro)q(cess\).)146
1211 y(I)i(assume)h(lo)q(cal)g(termination)g(for)f(sub)q(op)q(eration)h(1)f
({)g(no)h(sync)o(hronization)g(with)g(another)f(pro-)75 1267
y(cessor)e(is)h(required)g(for)f(this)g(phase.)146 1324 y(Opinions?)146
1380 y(Should)h(w)o(e)f(c)o(ho)q(ose)g(1)g(or)g(3,)f(rather)h(than)g(2?)146
1437 y(Should)g(w)o(e)f(use)g(another)g(mec)o(hanism)g(to)g(c)o(ho)q(ose)g
(lo)q(cal)h(and)f(global)h(termination)f(\(e.g.,)f(a)g(global)75
1493 y(\015ag\)?)146 1549 y(Should)g(w)o(e)e(require)h(the)g(c)o(hoice)h(of)e
(\\sync)o(hronous")g(to)g(b)q(e)h(done)g(consisten)o(tly)h(b)q(e)f(all)h
(participan)o(ts)75 1606 y(in)j(a)f(comm)o(unication?)75 1728
y Fd(When)j(do)r(es)g(a)h(call)h(return?)75 1813 y Fg(The)14
b(ob)o(vious)f(c)o(hoice)i(is:)k(\\A)13 b(call)i(return)e(when)h(the)f
(corresp)q(onding)i(sub)q(op)q(eration\(s\))e(terminated".)75
1870 y(An)21 b(alternativ)o(e)f(is)h(to)f(allo)o(w)h(for)f(unsuccessful)i
(return)f(as)f(w)o(ell.)37 b(E.g.,)20 b(send)h(can)g(return)f(unsuc-)75
1926 y(cessfully)l(,)d(if)f(the)f(system)g(cannot)g(accept)g(the)h(message,)e
(for)h(whatev)o(er)g(reasons;)f(or)h(receiv)o(e)h(returns)75
1983 y(unsuccessfully)f(if)e(the)g(receiv)o(e)h(cannot)e(execute)i(within)g
(a)e(set)h(time;)g(and)g(so)g(on.)19 b(This)13 b(is)g(the)g(curren)o(t)75
2039 y(MPI)i(de\014nition.)146 2096 y(My)j(p)q(ersonal)i(c)o(hoice)g(is)g
(against)e(unsuccessful)j(return.)32 b(This)20 b(is)f(more)g(adequate)g(for)f
(system)75 2152 y(programming,)f(rather)h(than)f(application)j(programming;)e
(it)g(in)o(tro)q(duces)h(seman)o(tic)f(dep)q(endencies)75 2209
y(on)h(implemen)o(tation;)i(it)e(forces)f(the)h(user)f(to)g(c)o(hec)o(k)h
(for)f(success)i(at)e(eac)o(h)g(op)q(eration,)i(rather)e(then)75
2265 y(deal)j(with)g(failure)g(of)f(comm)o(unication)h(using)g(an)f
(exception)i(handling)g(mec)o(hanism.)36 b(Of)20 b(course,)75
2322 y(implemen)o(ters)f(are)f(w)o(elcome)g(to)f(pro)o(vide)i(a)e(reasonable)
i(exception)f(handling)i(mec)o(hanism)f(for)e(the)75 2378 y(MPI)e(library)h
({)f(I)h(suggest)e(to)h(lea)o(v)o(e)g(op)q(en)h(the)f(de\014nition)i(of)e
(suc)o(h)h(mec)o(hanism.)146 2434 y(Opinions?)75 2556 y Fd(Correctness)i
(criteria)75 2642 y Fg(I)e(use)f(the)g(follo)o(wing)h(terminology:)964
2828 y(3)p eop
%%Page: 4 4
bop 75 45 a Ff(safe)17 b(program)22 b Fg(A)c(program)f(that)h(should)h
(execute)f(successfully)i(in)f(an)o(y)f(implemen)o(tation,)i(inde-)189
102 y(p)q(enden)o(tly)c(of)f(the)h(amoun)o(t)e(of)h(a)o(v)m(ailable)i(system)
d(resources.)75 195 y Ff(unsafe)j(program)23 b Fg(A)d(program)f(that)g(will)j
(succeed)f(or)f(fail,)i(dep)q(ending)g(on)e(implemen)o(tation)h(or)189
252 y(a)o(v)m(ailable)c(system)d(resources.)75 346 y Ff(erroneous)i(program)
22 b Fg(A)16 b(program)e(that)g(will)j(alw)o(a)o(ys)e(fail.)146
452 y(Examples)g(\(in)o(v)o(olving)h(t)o(w)o(o)e(pro)q(cessors)h(with)h(ids)g
(1)f(and)g(2,)f(and)i(using)g(MPI)f(lik)o(e)h(syn)o(tax\))146
508 y(The)f(follo)o(wing)h(program)e(is)i(safe,)e(and)i(should)g(alw)o(a)o
(ys)e(succeed.)75 659 y Fb(IF)24 b(\(GETID\(\))e(==)i(1\))g(THEN)147
715 y(CALL)f(CSEND\(mode=blocking,)e(buf=sendbuf,)h(dest=2,)h(type=0,)g
(len=1000\))147 772 y(CALL)g(CRECV\(mode=blocking,)e(buf=recdbuf,)h
(source=2,)h(type=0,)g(len=1000\))75 884 y(ELSE)g(!)h(\(GETID\(\))f(==)g(2\))
147 941 y(CALL)g(CRECV\(mode=blocking,)e(buf=recbuf,)h(source=1,)h(type=0,)g
(len=1000\))147 997 y(CALL)g(CSEND\(mode=blocking,)e(buf=sendbuf,)h(dest=1,)h
(type=0,)g(len=1000\))146 1148 y Fg(The)15 b(follo)o(wing)h(program)e(is)i
(erroneous,)e(and)i(should)g(alw)o(a)o(ys)e(fail.)75 1310 y
Fb(IF)24 b(\(GETID\(\))e(==)i(1\))g(THEN)147 1367 y(CALL)f
(CSEND\(mode=synchronous,)e(buf=sendbuf,)h(dest=2,)h(type=0,)g(len=1000\))147
1423 y(CALL)g(CRECV\(mode=synchronous,)e(buf=recdbuf,)h(source=2,)g(type=0,)h
(len=1000\))75 1536 y(ELSE)47 b(!)24 b(\(GETID\(\))f(==)g(2\))147
1593 y(CALL)g(CSEND\(mode=synchronous,)e(buf=sendbuf,)h(dest=1,)h(type=0,)g
(len=1000\))147 1649 y(CALL)g(CRECV\(mode=synchronous,)e(buf=recbuf,)h
(source=1,)h(type=0,)g(len=1000\))146 1755 y Fg(The)12 b(follo)o(wing)h
(program)d(is)j(unsafe,)f(and)h(ma)o(y)e(succeed)i(or)f(fail,)h(dep)q(ending)
h(on)e(implemen)o(tation.)75 1918 y Fb(IF)24 b(\(GETID\(\))e(==)i(1\))g(THEN)
147 1975 y(CALL)f(CSEND\(mode=blocking,)e(buf=sendbuf,)h(dest=2,)h(type=0,)g
(len=1000000\))147 2031 y(CALL)g(CRECV\(mode=blocking,)e(buf=recdbuf,)h
(source=2,)h(type=0,)g(len=1000000\))75 2144 y(ELSE)g(!)h(\(GETID\(\))f(==)g
(2\))147 2200 y(CALL)g(CSEND\(mode=blocking,)e(buf=sendbuf,)h(dest=1,)h
(type=0,)g(len=1000000\))147 2257 y(CALL)g(CRECV\(mode=blocking,)e
(buf=recbuf,)h(source=1,)h(type=0,)g(len=1000000\))146 2363
y Fg(This)14 b(program)f(can)h(succeed)h(only)g(if)f(the)g(system)g(has)g
(su\016cien)o(t)g(bu\013er)g(space)g(to)g(bu\013er)g(1)f(MgB)75
2420 y(of)i(data.)146 2476 y(The)j(strict)g(de\014nition)i(of)e(\\safe")f
(needs)i(to)f(b)q(e)g(somewhat)g(temp)q(ered)h(in)g(practice.)29
b(A)18 b(correct)75 2532 y(sequen)o(tial)13 b(program)d(ma)o(y)h(fail)i(b)q
(ecause)f(of)g(time)g(limits)h(or)e(other)g(resource)h(restrictions.)19
b(Lik)o(ewise,)13 b(a)75 2589 y(safe)h(parallel)i(program)d(ma)o(y)l(,)g
(exceptionally)l(,)k(exceed)e(system)f(resources.)19 b(Still,)d(common)e
(sense)h(can)75 2645 y(di\013eren)o(tiate)i(b)q(et)o(w)o(een)g(resources)f
(that)g(are)h(\\practically)g(un)o(b)q(ounded",)h(i.e.)25 b(with)17
b(limits)g(that)f(are)75 2702 y(unlik)o(ely)k(to)d(b)q(e)h(normally)g(encoun)
o(tered)g(b)o(y)g(correct)f(programs,)g(and)g(resources)h(that)f
(\\practically)964 2828 y(4)p eop
%%Page: 5 5
bop 75 45 a Fg(b)q(ounded",)23 b(i.e.)37 b(with)21 b(limits)h(one)f(encoun)o
(ters)g(frequen)o(tly)g(with)g(correct)g(programs,)f(and)h(whic)o(h)75
102 y(often)13 b(impinges)i(on)f(program)e(p)q(ortabilit)o(y)l(.)20
b(A)14 b(formal)f(de\014nition)i(will)h(assume)d(that)g(some)g(resources)75
158 y(are)19 b(unlimited,)k(and)c(implemen)o(tations)i(will)g(striv)o(e)f(to)
f(pro)o(vide)h(a)f(reasonable)h(appro)o(ximation)f(of)75 214
y(this)f(assumption.)26 b(F)l(urthermore,)17 b(the)g(user)h(should)g(b)q(e)g
(able)g(to)f(query)g(and)g(p)q(ossibly)i(con)o(trol)e(an)o(y)75
271 y(implemen)o(tation)f(sp)q(eci\014c)i(resource)d(limitation)h(that)f
(a\013ects)f(program)g(b)q(eha)o(vior.)146 327 y(One)k(need)g(to)f(allo)o(w)h
(\(indeed,)h(one)f(cannot)f(disallo)o(w\))h(v)o(endors)g(to)e(supp)q(ort)i
(some)f(unsafe)h(pro-)75 384 y(grams)c(as)h(w)o(ell.)21 b(The)15
b(requiremen)o(ts)h(there)f(should)h(b)q(e)g(that)143 478 y
Fa(\017)23 b Fg(The)15 b(seman)o(tics)g(of)g(successful)i(program)d
(execution)i(b)q(e)g(w)o(ell-de\014ned)143 571 y Fa(\017)23
b Fg(The)16 b(system)f(pro)o(vide)i(clear)f(information)h(and)f(p)q(ossibly)h
(con)o(trol)f(on)g(those)g(parameters)f(that)189 628 y(determine)h(the)f(b)q
(eha)o(vior)h(of)f(unsafe)g(programs)f(\(e.g.,)g(bu\013er)h(sizes\).)146
722 y(A)g(handle)j(is)e Fc(active)g Fg(\(at)f(a)g(pro)q(cess\))h(from)f(the)h
(start)f(of)g(sub)q(op)q(eration)i(1)e(to)g(the)h(completion)h(of)75
778 y(sub)q(op)q(eration)f(4)g(for)f(this)h(handle.)22 b(A)15
b(comm)o(unication)i(is)f Fc(active)f Fg(\(at)g(a)g(pro)q(cess\))h(from)e
(the)i(start)e(of)75 835 y(sub)q(op)q(eration)i(2)f(to)g(the)g(completion)h
(of)f(sub)q(op)q(eration)h(3.)k(I)15 b(suggest)g(the)g(follo)o(wing)h(design)
g(p)q(oin)o(t:)131 941 y(1.)22 b(The)13 b(n)o(um)o(b)q(er)g(of)g(activ)o(e)g
(comm)o(unication)g(handles)i(p)q(er)e(pro)q(cess)g(is)h(\\practically)g(un)o
(b)q(ounded".)131 1035 y(2.)22 b(The)d(n)o(um)o(b)q(er)g(of)f(initiated)j
(comm)o(unications)e(p)q(er)h(pro)q(cessor)f(is)g(\\practically)h(un)o(b)q
(ounded".)189 1091 y(\(Note)12 b(that)h(there)g(ma)o(y)g(b)q(e)g(only)h(one)g
(activ)o(e)f(comm)o(unication)h(op)q(eration)f(p)q(er)h(activ)o(e)f
(handle\).)131 1185 y(3.)22 b(The)16 b(amoun)o(t)g(of)g(a)o(v)m(ailable)i
(system)d(bu\013er)i(space)f(is)h(limited)h({)e(a)g(safe)g(program)f(cannot)h
(rely)189 1241 y(on)f(it.)146 1348 y(This)g(design)h(p)q(oin)o(t)g(has)f(the)
h(follo)o(wing)f(implications:)131 1454 y(1.)22 b(A)11 b(t)o(yp)q(e)g(1)f(or)
h(t)o(yp)q(e)g(2)g(sub)q(op)q(eration)g(will)i(alw)o(a)o(ys)d(complete,)i
(indep)q(enden)o(tl)q(y)h(of)e(other)g(pro)q(cesses)189 1510
y(activities.)21 b(Of)15 b(course,)g(the)g(same)g(is)h(true)f(for)g(a)f(t)o
(yp)q(e)i(4)f(sub)q(op)q(eration.)131 1604 y(2.)22 b(The)15
b(successful)h(completion)h(of)d(a)h(t)o(yp)q(e)g(3)g(sub)q(op)q(eration)h
(ma)o(y)e(dep)q(end)j(on)e(the)g(participation)189 1661 y(of)h(other)g(pro)q
(cesses.)24 b(A)17 b(send)g(ma)o(y)f(b)q(e)h(blo)q(c)o(k)o(ed)g(un)o(til)h(a)
e(matc)o(hing)h(receiv)o(e)g(o)q(ccurs.)24 b(And,)17 b(of)189
1717 y(course,)h(a)g(receiv)o(e)h(ma)o(y)e(not)h(complete)g(un)o(til)i(a)d
(matc)o(hing)h(send)h(o)q(ccurs.)29 b(\(This)18 b(extends)h(to)189
1774 y(collectiv)o(e)e(comm)o(unication.\))146 1880 y(T)l(o)e(this,)h(w)o(e)f
(need)i(add)f(p)q(ositiv)o(e)g(requiremen)o(ts)g(for)f(progress)g(and/or)h
(fairness.)21 b(Let's)16 b(sa)o(y)f(that)75 1936 y(a)k(comm)o(unication)h(is)
f Fc(enable)n(d)f Fg(\(at)h(a)f(pro)q(cess\))h(if)h(a)f(matc)o(hing)g(comm)o
(unication)h(is)f(activ)o(e)h(\(i.e.)31 b(a)75 1993 y(matc)o(hing)16
b(receiv)o(e)h(for)e(a)h(send)g(or)f(a)h(matc)o(hing)g(send)g(for)g(a)f
(receiv)o(e\).)23 b(An)16 b(enabled)h(comm)o(unication)75 2049
y(ma)o(y)g(b)q(ecome)i(disabled)h(either)e(b)q(ecause)h(it)g(completes)f
(successfully)i(\(the)e(comm)o(unication)h(o)q(ccurs)75 2106
y(and)d(sub)q(op)q(eration)h(3)e(terminates\))g(or)h(b)q(ecause)g(the)g(matc)
o(hing)g(comm)o(unication)h(b)q(ecomes)f(inactiv)o(e)75 2162
y(\(e.g.,)e(a)h(receiv)o(e)h(that)e(matc)o(hes)h(one)h(send)g(ma)o(y)e(b)q(e)
i(satis\014ed)g(b)o(y)f(another)g(send,)h(th)o(us)f(disabling)i(the)75
2219 y(\014rst)e(send\).)75 2325 y Ff(progress)21 b Fg(If)14
b(some)f(comm)o(unication)h(in)g(the)f(system)g(is)h(enabled)h(then)e(some)g
(comm)o(unication)h(ev)o(en-)189 2381 y(tually)i(o)q(ccurs)f(in)h(the)g
(system.)75 2475 y Ff(fairness)22 b Fg(An)c(activ)o(e)f(comm)o(unication)h
(either)g(completes)g(successfully)h(or)d(b)q(ecomes)i(p)q(ermanen)o(tly)189
2532 y(disabled.)964 2828 y(5)p eop
%%Page: 6 6
bop 146 45 a Fg(W)l(e)19 b(assume)g(in)h(these)f(de\014nitions)i(that)d(eac)o
(h)h(pro)q(cess)g(in)o(v)o(ok)o(e)g(sub)q(op)q(erations)h(in)g(the)f(correct)
75 102 y(order,)c(i.e.)23 b(1\(23\))393 85 y Fe(\003)411 102
y Fg(4.)f(Of)16 b(course,)f(a)h(program)f(where)h(an)g(activ)o(e)g(comm)o
(unication)g(b)q(ecomes)h(p)q(erma-)75 158 y(nen)o(tly)f(disabled)h(\(e.g.,)c
(a)i(send)h(is)f(left)h(forev)o(er)e(with)i(no)f(matc)o(hing)g(receiv)o(e\))h
(is)f(erroneous,)g(and)g(will)75 214 y(not)g(terminate)g(successfully)l(.)146
271 y(The)20 b(enforcemen)o(t)g(of)g(these)g(t)o(w)o(o)f(conditions)i
(requires)g(a)f(\015o)o(w)g(con)o(trol)g(proto)q(col:)29 b(A)21
b(pro)q(cess)75 327 y(should)c(not)f(b)q(e)h(prev)o(en)o(ted)g(from)e
(accepting)j(one)e(message)g(that)g(w)o(as)f(sen)o(t)h(b)q(ecause)i(its)e
(bu\013ers)g(are)75 384 y(full)21 b(with)f(other)g(messages,)g(p)q(ossibly)h
(sen)o(t)f(earlier.)34 b(When)21 b(a)e(receiv)o(e)i(matc)o(hes)e(sev)o(eral)h
(p)q(ossible)75 440 y(messages)d(\(e.g.,)f(a)h(receiv)o(e)h(with)g(a)f
(\\don't)f(care")h(sender)h(\014eld\))g(then)g(alternativ)o(e)g(options)f
(should)75 497 y(b)q(e)f(considered)g(fairly)g(\(e.g.,)e(b)o(y)h(using)h(an)f
(LR)o(U)h(p)q(olicy)h(when)e(considering)i(matc)o(hing)e(senders\).)146
553 y(A\014cionados)d(of)f(formalism)h(will)i(note)d(that)g(I)h(used)g(the)g
(w)o(eak)o(est)f(de\014nition)j(of)d(fairness)h(\(ev)o(en)o(tual)75
610 y(fairness\),)j(rather)f(than)h(b)q(ounded)i(fairness)f(or)e(other)h
(alternativ)o(es.)146 666 y(Examples:)146 723 y(The)g(follo)o(wing)h
(programs)e(are)h(safe,)f(and)i(should)g(succeed:)75 823 y
Fb(!)24 b(assume)f(only)g(two)h(processes,)e(numbered)h(1)h(and)f(2)75
936 y(IF)h(\(GETID\(\))e(==)i(1\))g(THEN)147 992 y(DO)f(I=0,)g(N)218
1048 y(CALL)g(CSEND\(mode=nonblocking,)e(buf=buf\(I\),)i(dest=2,)f(type=I,)h
(len=1000\))147 1105 y(END)g(DO)75 1218 y(ELSE)g(!)h(\(GETID\(\))f(==)g(2\))
147 1274 y(DO)g(I=0,)g(N)218 1331 y(CALL)g(CRECV\(mode=nonblocking,)e
(buf=buf\(I\),)i(dest=2,)f(type=N-I,)h(len=1000\))147 1387
y(END)g(DO)146 1487 y Fg(Pro)q(cess)16 b(1)g(uses)h(non)o(blo)q(c)o(king)h
(sends)f(to)f(send)h(a)f(sequence)i(of)e(messages)g(to)f(pro)q(cess)i(2;)g
(pro)q(cess)75 1544 y(2)d(receiv)o(es)h(these)f(messages)f(in)i(the)f(rev)o
(erse)g(order,)g(using)h(non)o(blo)q(c)o(king)g(receiv)o(es.)20
b(In)15 b(practice,)g(suc)o(h)75 1600 y(program)e(ma)o(y)g(fail)h(if)g(the)g
(n)o(um)o(b)q(er)g(of)g(p)q(ending)h(messages)f(implied)i(b)o(y)d(this)i
(program)d(is)i(larger)g(than)75 1657 y(the)20 b(system)g(limit.)36
b(But)21 b(the)f(system)g(limit)h(should)h(b)q(e)e(large)h(enough)f(as)g(to)g
(mak)o(e)f(suc)o(h)i(failure)75 1713 y(extremely)16 b(unlik)o(ely)l(.)75
1813 y Fb(!)24 b(Assume)f(a)g(large)h(number)f(of)g(processes)75
1926 y(!)h(Consumer)e(code)75 1983 y(IF)i(\(GETID\(\))e(==)i(1\))g(THEN)123
2039 y(DO)f(I=)h(1,)f(INFOG\(\))194 2095 y(CALL)h(CRECV\(mode=blocking,)d
(buf=buf\(I\),)h(source=I,)h(type=0,)g(len=1000\))123 2152
y(END)g(DO)75 2265 y(!)h(Producers)75 2321 y(ELSE)123 2378
y(CALL)f(CSEND\(mode=blocking,)e(buf=sendbuf,)h(dest=1,)h(type=0,)g
(len=1000\))146 2478 y Fg(All)17 b(pro)q(cesses)f(send)g(a)f(message)h(to)f
(pro)q(cess)h(1.)21 b(Pro)q(cess)15 b(1)h(receiv)o(es)g(these)g(messages)f
(in)i(a)e(\014xed)75 2534 y(order.)31 b(A)20 b(\015o)o(w)e(con)o(trol)h
(proto)q(col)g(is)h(needed)g(to)f(mak)o(e)f(sure)h(that)g(bu\013ers)g(at)f
(pro)q(cess)i(1)f(will)h(not)75 2591 y(o)o(v)o(er\015o)o(w.)e(The)c(sending)h
(pro)q(cesses)f(ma)o(y)g(b)q(e)g(dela)o(y)o(ed)h(un)o(til)g(the)f(receiv)o(e)
g(pro)q(cess)g(is)h(ready)f(to)f(accept)75 2647 y(their)j(message.)146
2704 y(Consider)f(the)h(follo)o(wing)g(implemen)o(tation)g(alternativ)o(es)f
(for)g(this)h(co)q(de:)964 2828 y(6)p eop
%%Page: 7 7
bop 143 45 a Fa(\017)23 b Fg(Messages)18 b(are)h(sen)o(t)g(immediately)i(and)
e(stored)g(in)h(the)f(ph)o(ysical)i(memory)d(of)h(the)g(receiving)189
102 y(no)q(de)g({)g(no)g(pro)o(vision)g(for)g(retry)l(.)31
b(This)19 b(is)h(a)e(bad)i(implemen)o(tation)g(since)g(ph)o(ysical)g(storage)
189 158 y(limits)c(are)f(lik)o(ely)i(to)e(b)q(e)g(encoun)o(tered.)143
252 y Fa(\017)23 b Fg(Messages)c(are)g(sen)o(t)h(immediately)h(and)f(stored)f
(in)i(the)f(receiv)o(er)g(ph)o(ysical)i(memory)l(.)33 b(If)20
b(the)189 308 y(receiv)o(er)e(is)g(unable)h(to)f(receiv)o(e)g(the)g(message,)
g(the)f(send)i(is)f(retried.)28 b(This)19 b(is)f(a)f(correct,)h(but)189
365 y(p)q(ossibly)e(ine\016cien)o(t)h(implemen)o(tation.)143
459 y Fa(\017)23 b Fg(A)16 b(\\request-to-send")h(proto)q(col)g(is)g(used;)h
(the)f(receiv)o(er)g(allo)o(ws)g(the)g(send)g(to)g(pro)q(ceed)g(only)g(if)189
515 y(it)g(has)g(storage)f(for)h(the)g(message.)26 b(The)18
b(receiv)o(ers)g(need)g(to)e(store)h(information)g(on)h(p)q(ending,)189
571 y(unsatis\014ed)13 b(requests)g(to)f(send.)19 b(The)13
b(maxim)o(um)f(n)o(um)o(b)q(er)h(of)f(p)q(ending)j(requests)d(at)g(a)g(no)q
(de)h(is)g(a)189 628 y(system)f(limit)i(that)e(should)i(b)q(e)f(set)f(large)h
(enough)g(as)f(to)g(b)q(e)i(considered)g(\\practically)g(in\014nite".)146
722 y(Opinions?)146 778 y(Should)k(w)o(e)e(b)q(e)h(ev)o(en)h(more)e
(restrictiv)o(e)h(and)g(require)g(that)g(safe)f(programs)f(run)i(correctly)l
(,)h(ev)o(en)75 835 y(when)c(exceeding)h(\\v)o(ery)d(large")h(resource)h
(limits?)21 b(\(Or)13 b(should)i(w)o(e)e(a)o(v)o(oid)g(to)f(burden)j(the)e
(implemen-)75 891 y(tation)i(with)g(requiremen)o(ts)h(to)f(handle)h(what)f
(most)f(lik)o(ely)j(are)e(pathologic)h(programs?\))146 948
y(Should)h(w)o(e)f(try)g(to)g(b)q(e)h(more)f(formal)g(in)h(de\014ning)h(when)
f(some)f(of)g(the)h(\\unsafe")f(programs)f(will)75 1004 y(run)h(to)g
(completions?)24 b(\(Can)16 b(w)o(e)g(do)g(it)g(without)g(b)q(eing)i(more)d
(sp)q(eci\014c)j(ab)q(out)e(the)h(implemen)o(tation)75 1060
y(mo)q(del?\))146 1117 y(Should)f(w)o(e)f(require)h(fairness?)21
b(Should)c(w)o(e)d(ha)o(v)o(e)h(a)g(stronger)f(requiremen)o(t)i(of)f
(fairness?)75 1260 y Fh(What)23 b(are)g(the)g(comm)n(unication)d(parameters?)
75 1363 y Fd(Message)e(data)i(\(bu\013er\))131 1449 y Fg(1.)i(scalar)15
b(\(b)o(yte/halfw)o(ord/w)o(ord/doublew)o(ord\),)e(presumably)j(coming)f
(from)g(a)g(register)131 1543 y(2.)22 b(Con)o(tiguous)15 b(space)g(in)h
(memory)f(\(initial)i(address/length\))131 1637 y(3.)22 b(Bu\013er)15
b(with)g(constan)o(t)g(stride)g(\(initial)i(address/size)f(of)f(eac)o(h)g
(blo)q(c)o(k/stride/n)o(um)o(b)q(er)i(blo)q(c)o(ks\))131 1731
y(4.)22 b(A)15 b(t)o(yp)q(ed)g(message)g(\(of)g(a)f(t)o(yp)q(e)i(supp)q
(orted)g(in)g(the)f(domain)g(language\).)131 1824 y(5.)22 b(A)d(union)i(of)d
(sev)o(eral)i(messages)f(\(p)q(ossibly)i(sp)q(eci\014ed)g(b)o(y)e(an)h(arra)o
(y)e(of)h(p)q(oin)o(ters)h(to)e(message)189 1881 y(descriptors\).)g(The)13
b(seman)o(tics)f(of)f(a)h(union)h(is)f(probably)h(conjunctiv)o(e)f(at)g(the)g
(sender)g(end)h(\(send)189 1937 y(all\);)g(at)f(the)h(receiv)o(e)g(end,)h(it)
f(ma)o(y)e(b)q(e)j(conjunctiv)o(e)f(\(receiv)o(e)g(all\))h(or)e(disjunctiv)o
(e)i(\(receiv)o(e)f(an)o(y\).)146 2044 y(The)j(curren)o(t)g(MPI)f(prop)q
(osal)i(has)e(2)h(and)g(3)g(\(2)f(is)h(really)h(a)f(particular)g(case)g(of)g
(3\).)21 b(Do)15 b(w)o(e)h(w)o(an)o(t)75 2100 y(more?)k(In)c(particular,)g
(do)f(w)o(e)g(w)o(an)o(t)f(t)o(yp)q(ed)h(messages?)20 b(Ho)o(w)15
b(general?)75 2222 y Fd(Groups)k(and)g(con)n(text)75 2307 y
Fg(Messages)c(are)g(tagged)g(b)o(y)g(pro)q(cess)h(names)f(\(sender)h(and)f
(receiv)o(er\))h(and)g(t)o(yp)q(e)f(names.)21 b(Both)15 b(names)75
2364 y(spaces)g(can)f(b)q(e)i(\015at)e(or)g(structured.)20
b(If)14 b(a)h(\015at)f(pro)q(cess)h(name)f(space)h(is)g(used,)g(then)g(a)f
(pro)q(cess)h(names)75 2420 y(is)e(an)f(in)o(teger)g(\(from)f(0)h(to)f(n)o
(um)o(b)q(er)p 687 2420 14 2 v 17 w(of)p 741 2420 V 16 w(pro)q(cesses-1,)i
(for)e(C)h(think)o(ers\).)19 b(If)13 b(a)e(structured)i(pro)q(cess)f(name)75
2477 y(space)18 b(is)g(used)f(then)h(a)f(pro)q(cess)h(name)f(is)h(a)f(pair)h
(of)f(the)g(form)g(\(group,)g(rank\).)26 b(Similarly)19 b(in)f(a)f(\015at)75
2533 y(t)o(yp)q(e)g(name)h(space,)g(a)f(t)o(yp)q(e)g(is)h(a)f(n)o(um)o(b)q
(er)h(in)g(a)f(range;)h(in)g(a)f(structured)g(t)o(yp)q(e)h(name)f(space,)h
(it)f(is)h(a)75 2590 y(pair)e(of)e(the)i(form)e(\(group,)g(lo)q(cal)p
659 2590 V 18 w(t)o(yp)q(e\).)146 2646 y(The)21 b(usefulness)h(of)f(groups)f
(seem)h(clear)h(in)f(the)g(con)o(text)g(of)f(collectiv)o(e)j(op)q(erations,)f
(where)f(a)75 2703 y(groupid)c(is)g(a)f(handle)h(to)f(sp)q(ecify)h(the)g(set)
f(of)f(participan)o(ts)i(in)g(a)f(collectiv)o(e)i(comm)o(unication)f(\(Note:)
964 2828 y(7)p eop
%%Page: 8 8
bop 75 45 a Fg(some)15 b(of)h(the)f(discussions)j(on)d(groups)g(seem)h(to)f
(assume)h(that)f(a)g(group)g(is)i(alw)o(a)o(ys)e(represen)o(ted)h(b)o(y)f(a)
75 102 y(mem)o(b)q(ership)f(list)g(that)f(is)h(presen)o(t)f(at)f(eac)o(h)i
(group)f(mem)o(b)q(er.)19 b(While)14 b(is)g(the)f(represen)o(tation)h(lik)o
(ely)h(to)75 158 y(b)q(e)g(used)h(on)e(small)i(systems,)e(it)h(is)g(b)o(y)g
(no)g(means)f(the)h(unique)h(p)q(ossible)h(one.)j(An)o(y)15
b(connected)g(graph)75 214 y(structure)h(can)h(b)q(e)g(used)g(to)f(k)o(eep)h
(trac)o(k)f(of)g(group)g(mem)o(b)q(ership,)i(with)f(ob)o(vious)f(tradeo\013s)
g(b)q(et)o(w)o(een)75 271 y(storage)h(and)h(p)q(erformance.)28
b(A)18 b(complete)g(list)h(at)e(eac)o(h)h(no)q(de)h(is)f(one)g(extreme)g(of)g
(this,)g(namely)l(,)h(a)75 327 y(complete)g(graph.)28 b(Therefore,)19
b(a)e(group)h(handle)i(is)e(a)g(more)g(abstract)f(and)h(more)g(general)g
(concept)75 384 y(than)d(a)g(list)h(of)f(group)g(mem)o(b)q(ers.\))146
440 y(The)h(collectiv)o(e)j(comm)o(unication)e(sub)q(committee)g(has)g(to)f
(deal)h(with)g(mec)o(hanisms)g(for)f(creating)75 497 y(and)j(destro)o(ying)f
(groups)g(\(for)g(the)g(record,)h(I)g(fa)o(v)o(or)e(dynamic)i(group)g
(creation)f(b)q(oth)h(b)o(y)f(explicitly)75 553 y(listing)j(group)f(mem)o(b)q
(ers)f(and)h(b)o(y)g(partitioning)h(an)e(existing)i(group.)33
b(I)20 b(do)g(not)f(fa)o(v)o(or)g(a)g(complex)75 610 y(stac)o(k)e(or)h(tree)g
(mec)o(hanism)h(to)e(manage)h(groups)f(and)i(na)o(vigate)e(from)h(one)g
(group)g(to)f(another)h({)g(at)75 666 y(least)d(not)g(in)h(the)f(basic)h(MPI)
f(prop)q(osal\).)146 723 y(In)i(the)f(con)o(text)g(of)g(p)q(oin)o(t-to-p)q
(oin)o(t)h(comm)o(unication,)g(the)f(issue)h(is)g(whether)g(w)o(e)f(w)o(an)o
(t)f(to)h(use)g(a)75 779 y(structured)f(name)g(space)h(for)e(t)o(yp)q(e)i
(and)f(pro)q(cess)h(argumen)o(ts)e(and,)h(if)h(so,)e(ho)o(w.)146
835 y(The)21 b(adv)m(an)o(tage)h(of)f(ha)o(ving)h(a)f(structured)h(name)g
(space)f(for)h(pro)q(cesses)g(is)g(that)f(it)h(simpli\014es)75
892 y(com)o(bining)14 b(of)e(distinct)i(parallel)g(co)q(des)f(in)h(a)e(lo)q
(osely)i(coupled)g(application:)20 b(Eac)o(h)13 b(functional)h(subset)75
948 y(can)j(use)h(message)f(passing)h(within)g(its)g(con)o(text,)f(with)g(no)
h(c)o(hanges)f(in)h(the)f(lo)q(cal)i(co)q(de.)27 b(The)17 b(same)75
1005 y(concern)k(for)f(mo)q(dularit)o(y)h(militates)h(for)e(a)g(structured)g
(t)o(yp)q(e)h(space.)36 b(This)21 b(do)q(es)g(not)g(necessarily)75
1061 y(implies)j(or)d(requires)h(a)f(stac)o(k)g(mec)o(hanism)h(for)f
(managing)g(groups,)i(or)e(a)g(tree)g(structure)h(among)75
1118 y(groups.)146 1174 y(First,)14 b(t)o(w)o(o)g(remarks:)143
1268 y Fa(\017)23 b Fg(The)c(preexisting)h(group)f Fb(ALL)f
Fg(that)g(includes)j(all)f(pro)q(cesses)g(pro)o(vides)f(a)g(global)g(con)o
(text.)31 b(If)189 1324 y(all)17 b(comm)o(unications)f(use)h(this)f(con)o
(text,)f(then)i(one)f(defaults)g(to)g(\015at)f(name)h(space.)23
b(With)16 b(the)189 1381 y(righ)o(t)g(syn)o(tax,)h(the)g(existence)h(of)f(a)g
(structured)g(name)g(space)g(can)g(b)q(e)h(ignored)g(b)o(y)f(users)g(that)189
1437 y(prefer)e(a)g(\015at,)f(global)i(name)f(space.)143 1531
y Fa(\017)23 b Fg(A)c(structured)f(name)h(space)g(can)g(alw)o(a)o(ys)g(fak)o
(ed,)g(with)g(no)g(c)o(hanges)g(in)g(the)g(comm)o(unication)189
1588 y(op)q(erations:)g(Replace)d(eac)o(h)e Fb(process)p 868
1588 15 2 v 16 w(id)g Fg(actual)h(parameter)e(b)o(y)h(a)g(a)g(reference)h(to)
e(a)h(function)189 1644 y Fb(process\(rank,)22 b(group)p 646
1644 V 16 w(id\))p Fg(;)c(replace)h(eac)o(h)e Fb(type)h Fg(actual)f
(parameter)g(b)o(y)h(a)f(reference)h(to)f(a)189 1701 y(function)f
Fb(type\(local)p 610 1701 V 15 w(type,)24 b(group)p 889 1701
V 16 w(id\))p Fg(.)146 1794 y(F)l(or)16 b(simplicit)o(y)l(,)j(I)e(shall)h
(assume)f(the)f(same)h(group)f(con)o(text)h(is)g(used)g(b)q(oth)g(for)f
(relativ)o(e)i(pro)q(cess)75 1851 y(n)o(um)o(b)q(ering)h(and)g(for)f(relativ)
o(e)h(t)o(yp)q(e)g(naming.)30 b(I)19 b(b)q(eliev)o(e)h(this)f(simpli\014es)i
(the)d(discussion,)j(without)75 1907 y(in)o(tro)q(ducing)13
b(undue)g(restrictions.)20 b(A)12 b(con)o(text)f(for)g(a)h(comm)o(unication)g
(op)q(eration)h(can)f(b)q(e)g(established)75 1964 y(in)k(t)o(w)o(o)e(w)o(a)o
(ys:)131 2070 y(1.)22 b(The)f(curren)o(t)h(scop)q(e)g(\(curren)o(t)f(group\))
g(of)g(a)g(comm)o(unication)h(op)q(eration)g(is)g(implicit;)27
b(it)21 b(is)189 2126 y(established)16 b(b)o(y)g(the)f(last)g(executed)h(con)
o(text)f(con)o(trolling)h(call)g(\()p Fb(MPI)p 1401 2126 V
17 w(PUSHC)e Fg(and)i Fb(MPI)p 1713 2126 V 16 w(POPC)f Fg(in)189
2183 y(the)e(curren)o(t)h(draft\).)k(Th)o(us,)c(an)o(y)f(pro)q(cess)h(n)o(um)
o(b)q(er)h(is)f(understo)q(o)q(d)g(to)f(b)q(e)i(relativ)o(e)f(rank)f(in)i
(the)189 2239 y(curren)o(t)g(group,)f(and)h(an)o(y)g(t)o(yp)q(e)g(name)g(is)h
(understo)q(o)q(d)f(to)g(b)q(e)g(relativ)o(e)h(to)e(curren)o(t)h(group,)g
(and)189 2296 y(do)q(es)j(not)f(con\015icts)i(with)f(t)o(yp)q(e)h(names)e
(used)i(within)g(other)f(groups.)27 b(Of)18 b(course,)h(the)f(initial)189
2352 y(scop)q(e)d(is)g Fb(ALL)p Fg(,)e(and)i(the)g(system)f(defaults)h(to)f
(a)g(\015at)g(name)h(space)g(if)g(scop)q(e)g(setting)f(commands)189
2409 y(are)h(nev)o(er)g(used.)131 2503 y(2.)22 b(The)g(con)o(text)g(of)f(a)h
(comm)o(unication)h(op)q(erations)f(need)h(to)f(b)q(e)h(explicitly)i(sp)q
(eci\014ed)f(in)f(the)189 2559 y(comm)o(unication)15 b(op)q(eration)f
(itself.)21 b(A)14 b(pro)q(cess)h(ma)o(y)e(b)q(elong)j(to)d(sev)o(eral)i
(groups)f(at)f(an)o(y)h(p)q(oin)o(t)189 2615 y(in)19 b(time,)g(and)g(ma)o(y)f
(use)h(an)o(y)f(of)g(these)h(groups)f(as)g(scop)q(e)h(for)f(a)g(comm)o
(unication)h(op)q(eration.)189 2672 y(Again,)14 b(the)f(initial)j(scop)q(e)e
Fb(ALL)f Fg(is)h(prede\014ned,)h(and)f(can)g(b)q(e)g(used)g(as)g(a)f(\015at)g
(name)h(space.)19 b(\(In)14 b(a)964 2828 y(8)p eop
%%Page: 9 9
bop 189 45 a Fg(language)13 b(where)g(argumen)o(ts)f(are)h(optional,)h(con)o
(text)e(w)o(ould)i(b)q(e)g(an)f(optional)g(parameter)g(with)189
102 y(default)i(v)m(alue)i Fb(ALL)p Fg(.\))146 208 y(The)h(adv)m(an)o(tage)f
(of)g(an)h(explicit)i(con)o(text)d(parameter)g(is)h(that)g(it)g(prev)o(en)o
(ts)f(the)h(confusion)h(that)75 264 y(o)q(ccurs)13 b(when)g(an)g(implicit)i
(con)o(text)d(is)h(c)o(hanged)g(mid)g(comm)o(unication.)20
b(More)12 b(generally)l(,)i(it)f(prev)o(en)o(ts)75 321 y(the)e(confusion)h
(arising)g(when)g(the)f(seman)o(tics)h(of)e(an)i(op)q(eration)f(is)h
(quali\014ed)h(b)o(y)e(a)g(scop)q(e)h(that)e(dep)q(ends)75
377 y(on)18 b(the)g(con)o(trol)g(\015o)o(w)g(of)g(the)g(program,)g(rather)f
(than)h(its)h(static)f(structure.)29 b(The)18 b(disadv)m(an)o(tage)g(is)75
434 y(the)e(need)g(for)f(an)g(additional)i(parameter,)d(in)j(languages)e
(that)g(don't)g(ha)o(v)o(e)g(optional)h(parameters)e(or)75
490 y(o)o(v)o(erloading)h(of)g(pro)q(cedures.)146 547 y(Opinions?)75
690 y Fh(Matc)n(hing)23 b(of)g(send)g(and)h(receiv)n(e)75 793
y Fd(receiv)n(e)18 b(criteria)75 879 y Fg(Messages)c(are)h(matc)o(hed)g(b)o
(y)h(sender)f(and)h(t)o(yp)q(e,)f(where)g(eac)o(h)g(can)h(b)q(e)g(a)e
(\\don't)h(care".)146 935 y(Our)f(exp)q(erience)j(is)e(that)f(matc)o(hing)g
(b)o(y)g(t)o(yp)q(e)h(only)l(,)g(or)f(disallo)o(wing)i(\\don't)e(care")g(in)h
(the)f(sender)75 992 y(\014eld)20 b(signi\014can)o(tly)h(simpli\014es)g(the)e
(implemen)o(tation)i({)d(but)h(some)g(users)g(complained)i(ab)q(out)e(suc)o
(h)75 1048 y(restriction.)146 1105 y(Also,)c(do)g(w)o(e)g(w)o(an)o(t)f(to)g
(b)q(e)i(explicit)i(ab)q(out)d(the)g(don't)g(care)g(v)m(alue,)h(or)e(use)i
(named)f(constan)o(ts?)146 1161 y(Opinions?)75 1283 y Fd(Matc)n(hing)20
b(of)f(data)75 1369 y Fg(F)l(or)c(un)o(t)o(yp)q(ed)g(messages)g(the)g
(options)h(are)131 1462 y(1.)22 b(Send)16 b(and)f(receiv)o(e)h(bu\013er)f(ha)
o(v)o(e)g(same)g(size)131 1556 y(2.)22 b(Receiv)o(e)16 b(bu\013er)g(is)f(no)g
(shorter)g(than)g(send)h(bu\013er)131 1650 y(3.)22 b(No)15
b(constrain)o(ts)f(\(messages)h(ma)o(y)f(b)q(e)i(truncated\).)131
1744 y(4.)22 b(User)15 b(c)o(ho)q(ose)g(one)g(of)g(the)g(ab)q(o)o(v)o(e)g
(options)h(\(one)f(more)f(call)j(parameter,)d(or)g(a)h(global)h(\015ag\).)146
1838 y(Choices)f(should)g(b)q(e)g(the)f(same)g(for)f(all)j(t)o(yp)q(es)e(of)g
(send)h(op)q(eration)f(\(the)g(curren)o(t)g(MPI)g(draft)g(seem)75
1894 y(to)h(allo)o(w)g(truncation)g(for)g(con)o(tiguous)g(data,)f(but)i
(disallo)o(w)g(it)f(for)g(receiv)o(e)h(with)g(stride\))146
1951 y(The)d(EUI)h(prop)q(osal)f(uses)g(option)h(4.)19 b(I)13
b(w)o(ould)h(b)q(e)g(happier)g(with)f(2,)g(but)h(am)e(uncomfortable)i(with)75
2007 y(3)i(\(truncation)h(seems)g(to)f(fall)i(in)f(the)g(category)f(of)g
(comm)o(unication)i(errors,)e(for)g(whic)o(h)h(I)h(assume)e(a)75
2063 y(global)g(exception)g(handling)h(mec)o(hanism\).)146
2120 y(Opinions?)146 2176 y(If)12 b(t)o(yp)q(ed)g(messages)g(are)g(supp)q
(orted)g(then)h(one)f(should)h(sp)q(ell)h(out)e(requiremen)o(ts)g(on)g(t)o
(yp)q(e)g(compat-)75 2233 y(ibilit)o(y)18 b(\(e.g.,)d(can)h(t)o(w)o(o)e(real)
i(n)o(um)o(b)q(ers)g(b)q(e)h(receiv)o(ed)g(in)o(to)f(a)g(complex)g(n)o(um)o
(b)q(er?\))23 b({)16 b(this)g(is)g(probably)75 2289 y(sp)q(eci\014c)h(to)e
(eac)o(h)g(language)g(binding.)146 2346 y(Opinions?)75 2489
y Fh(Syn)n(tax)75 2590 y Fg(This)h(ma)o(y)e(b)q(e,)i(of)f(course,)f(a)h(sub)s
(ject)g(of)g(endless)i(dispute.)k(A)15 b(few)g(ob)o(vious)g(guidelines:)143
2684 y Fa(\017)23 b Fg(Short,)14 b(mnemonic)i(names)964 2828
y(9)p eop
%%Page: 10 10
bop 143 45 a Fa(\017)23 b Fg(Systematic)15 b(naming)h(con)o(v)o(en)o(tion)143
137 y Fa(\017)23 b Fg(Systematic)15 b(ordering)g(of)g(parameters)143
230 y Fa(\017)23 b Fg(Use,)15 b(in)h(languages)g(where)g(this)f(is)h(p)q
(ossible,)h(of)e(optional)h(parameters)f(and)h(k)o(eyw)o(ord)e(param-)189
286 y(eters.)143 379 y Fa(\017)23 b Fg(Use,)15 b(in)h(languages)f(where)g
(this)h(p)q(ossible,)h(of)d(o)o(v)o(erloading.)146 469 y(I)d(heard)g(in)h
(our)f(last)g(meeting)g(a)g(preference)h(for)f(m)o(ultiple)h(function)g
(names,)g(rather)e(than)h(m)o(ultiple)75 525 y(mo)q(des.)146
582 y(Th)o(us,)f(in)h(C++)g(or)f(F90,)f(one)i(could)g(ha)o(v)o(e)f(the)g(c)o
(hoice)h(of)f(the)g(t)o(yp)q(e)g(of)g(datum)g(sen)o(t)g(\(scalar/con)o
(tiguous)75 638 y(v)o(ector/noncon)o(tiguous\))15 b(b)q(e)i(dictated)g(b)o(y)
f(the)h(t)o(yp)q(e)f(and)h(n)o(um)o(b)q(er)f(of)g(parameters,)f(rather)h
(than)g(b)q(e)75 695 y(enco)q(ded)f(in)f(the)g(function)g(name.)19
b(Then)14 b(a)f(p)q(ossible)i(naming)f(c)o(hoice)h(is)f Fb(mode)23
b(|)h(operation)p Fg(,)12 b(where)75 751 y Fb(mode)18 b Fg(=)g
Fb(init)g Fg(\(1\),)f Fb(nonblocking)g Fg(\(1+2\),)h Fb(blocking)f
Fg(\(1+2+3+4,)h(lo)q(cal)h(termination\),)g(or)f Fb(sync)75
808 y Fg(\(1+2+3+4)d(global)h(termination\),)f(and)g Fb(operation)f
Fg(=)h(send,)h(or)e(recv.)146 864 y(In)h(addition,)h(one)f(has)g
Fb(DO\(handle\))p Fg(,)f Fb(START\(handle\))p Fg(,)e Fb(AWAIT\(handle\))i
Fg(and)h Fb(FREE\(handle\))p Fg(.)146 921 y(Another)21 b(issue)i(is)f
(function)g(vs)f(pro)q(cedure)i(call,)h(in)e(F)l(ortran.)38
b(Pro)q(cedure)22 b(calls)h(seem)e(more)75 977 y(natural)15
b(in)h(F)l(ortran,)e(where)h(function)h(in)o(v)o(o)q(cations)g(cannot)f(b)q
(e)h(used)g(as)e(statemen)o(ts.)146 1033 y(Opinions?)22 b(Preferences)16
b(for)f(mnemonics?)21 b(Suggestions)16 b(for)e(F77)h(and)g(C?)75
1176 y Fh(Miscelania)75 1277 y Fg(Do)h(w)o(e)g(w)o(an)o(t)g(a)g
Fb(TEST)p Fg(,)f(a)i(non)o(blo)q(c)o(king)h Fb(AWAIT)d Fg(op)q(eration?)25
b(\(Alw)o(a)o(ys)16 b(returns;)h(a)f(successful)i(return)75
1334 y(is)e(equiv)m(alen)o(t)h(to)d(a)h(successful)i(return)e(of)g(a)f(blo)q
(c)o(king)j Fb(AWAIT)p Fg(\).)146 1390 y(Do)d(w)o(e)h(w)o(an)o(t)f(to)h
Fb(AWAIT)f Fg(sev)o(eral)i(messages?)146 1447 y(Do)h(w)o(e)h(w)o(an)o(t)f(a)g
Fb(PROBE)h Fg(function)h(\(tells)f(me)g(whic)o(h)h(messages)f(are)g(w)o
(aiting)g(to)f(b)q(e)i(receiv)o(ed)g(b)o(y)75 1503 y(me\)?)146
1560 y(Where)12 b(do)h(w)o(e)f(return)h(information)g(on)g(parameters)f(of)g
(receiv)o(ed)i(messages)e(suc)o(h)h(as)f(length,)i(and)75 1616
y(t)o(yp)q(e?)24 b(The)16 b(curren)o(t)g(MPI)h(prop)q(osal)f(has)g(length)h
(b)q(e)g(the)f(v)m(alue)i(returned)e(b)o(y)h(the)f(receiv)o(e)h(function)75
1673 y(and)d(t)o(yp)q(e)g(returned)h(b)o(y)f(a)f(subsequen)o(t)i(call)g(to)e
Fb(MP)p 964 1673 15 2 v 17 w(INFOT)p Fg(.)g(Another)h(natural)g(c)o(hoice)h
(w)o(ould)f(seem)h(to)75 1729 y(b)q(e)f(that)f(that)f(length)i(and)g(t)o(yp)q
(e)f(are)g(returned)h(b)o(y)f(the)h(len)g(and)g(t)o(yp)q(e)f(parameters)f(of)
h(the)h(initial)h(call,)75 1786 y(but)g(this)h(is)g(error)e(prone:)143
1876 y Fa(\017)23 b Fg(The)d(v)m(alues)h(are)e(returned)i(async)o(hronously)f
(for)f(non)o(blo)q(c)o(king)j(receiv)o(es.)35 b(The)20 b(user)g(has)g(to)189
1932 y(remem)o(b)q(er)11 b(not)h(to)f(touc)o(h)g(the)h(actual)g(len)g(and)g
(t)o(yp)q(e)g(parameters,)f(in)h(addition)h(of)e(not)h(touc)o(hing)189
1989 y(the)j(receiv)o(e)h(bu\013er,)f(un)o(til)h(the)f(op)q(eration)h
(completes.)143 2081 y Fa(\017)23 b Fg(A)f(natural)h(implemen)o(tation)h(w)o
(ould)f(b)q(e)g(to)f(alw)o(a)o(ys)g(return)g(the)h(length)g(and)g(t)o(yp)q(e)
g(of)f(the)189 2138 y(receiv)o(ed)f(messages.)36 b(Ho)o(w)o(ev)o(er,)20
b(most)g(users)g(will)i(assume)f(that)e(the)i(actual)g(len)g(and)g(t)o(yp)q
(e)189 2194 y(parameters)14 b(are)h(not)g(up)q(dated)h(when)f(their)h(v)m
(alue)h(is)e(not)g(\\don't)f(care".)143 2286 y Fa(\017)23 b
Fg(The)13 b(user)h(will)h(not)e(b)q(e)h(able)g(to)f(use)h(constan)o(ts)e(as)h
(actual)h(\\don't)f(care")g(parameter)f(v)m(alues)j(\(or)189
2343 y(an)o(ytime,)g(if)g(the)g(\\natural")g(implemen)o(tation)i(is)e(allo)o
(w)o(ed\))143 2435 y Fa(\017)23 b Fg(This)17 b(c)o(hoice)h(b)q(ecomes)g(ev)o
(en)f(less)h(app)q(etizing)h(when)e(a)g(handle)h(is)g(reused;)g(then)g(the)f
(len)h(and)189 2492 y(t)o(yp)q(e)d(v)m(ariables)h(w)o(ould)g(b)q(e)g(reused,)
f(to)q(o.)75 2582 y(It)g(seems)g(safer)f(to)g(return)h(these)g(v)m(alues)h
(with)f(the)g(call)g(that)g(concludes)h(the)f(execution)h(of)e(sub)q(op)q
(er-)75 2638 y(ation)h(3)g({)g(but)g(w)o(e)g(need)h(to)f(think)h(syn)o(tax.)
146 2695 y(Opinions?)952 2828 y(10)p eop
%%Trailer
end
userdict /end-hook known{end-hook}if
%%EOF
From owner-mpi-comm@CS.UTK.EDU  Mon Nov 30 18:08:53 1992
Received: from CS.UTK.EDU by surfer.EPM.ORNL.GOV (5.61/1.34)
	id AA22099; Mon, 30 Nov 92 18:08:53 -0500
Received:  by CS.UTK.EDU (5.61++/2.8s-UTK)
	id AA03436; Mon, 30 Nov 92 17:54:53 -0500
Received: from THUD.CS.UTK.EDU by CS.UTK.EDU with SMTP (5.61++/2.8s-UTK)
	id AA03434; Mon, 30 Nov 92 17:54:51 -0500
From: Jack Dongarra <dongarra@cs.utk.edu>
Received:  by thud.cs.utk.edu (5.61++/2.7c-UTK)
	id AA26470; Mon, 30 Nov 92 17:54:50 -0500
Date: Mon, 30 Nov 92 17:54:50 -0500
Message-Id: <9211302254.AA26470@thud.cs.utk.edu>
To: mpi-comm@cs.utk.edu
Subject: draft of introduction

Enclosed is a draft the introduction subcommittee has put together.
We would like to get your comments and input. We feel that it is in
a partial state and will be expanded. Hopefully this draft will help keep 
the discussion of goals, target, audience, etc. from becoming fragmented 
in each subcommittee.
Jack


\section{Introduction}
\label{sec:intro}

\subsection{Overview and Goals}

Message passing is a paradigm used
widely on certain classes of parallel machines; especially those with
distributed memory.
Although there are many variations, the basic
concept of processes communicating through messages is well understood.
Over the last ten years, substantial progress has been made in casting
significant applications in this paradigm.  Each vendor
has implemented their own variant.
More recently, several systems \cite{need references} have demonstrated
that a message passing system can be efficiently and
be portably implemented.
It is thus an appropriate time to try to define both the syntax
and semantics of a core of library routines that will be useful to a wide
range of users and efficiently implementable on a wide range of computers.

In designing MPI we have sought to make use of the most attractive features
of a number of existing message passing systems, rather than selecting one
of them and adopting it as the standard. Thus, MPI has been strongly
influenced by work at the IBM T. J. Watson Research Center by
Bala, Kipnis, Snir and colleagues \cite{}, Intel's NX/2 \cite{},
Express \cite{}, nCUBE's Vertex \cite{}, and PARMACS \cite{}.
Other important contributions have come from Zipcode \cite{},
Chimp \cite{}, PVM \cite{}, and PICL \cite{}.

One of the objectives of this paper is to promote a discussion within the
concurrent computing research community of the issues that must be addressed
in establishing a practical, portable, and flexible standard for message
passing. This cooperative process began with a workshop on standards
for message passing held in April 1992 \cite{}.

The main advantages of establishing a message passing standard are portability
and ease-of-use. In a distributed memory communication environment in which
the higher level routines and/or abstractions are build upon lower level
message passing routines the benefits of standardization are particularly
apparent. Furthermore, the definition of a message passing standard, such
as that proposed here, provides vendors with a clearly defined base set of
routines that they can implement efficiently, or in some cases provide
hardware support for, thereby enhancing scalability.

The goal of the Message Passing Interface simply stated is to
develop a \it{de facto} standard for writing message-passing programs.
As such the interface should
establishing a practical, portable, efficient, and flexible standard for message
passing.

\subsection{Who Should Use This Standard?}

This standard is intended for use by all those who want to write portable
message-passing programs in Fortran 77 and/or C.
This includes individual application programmers,
developers software designed to run on parallel machines, and creators of
higher-level programming languages, environments, and tools.  In order to be
attractive to this wide audience, the standard must provide a simple, easy-to-use
interface for the basic user while not semantically precluding the
high-performance message-passing operations available on advanced machines.


\subsection{What Platforms Are Targets For Implementation?}

The attractiveness of the message-passing paradigm at least partially
stems from its wide portability.  Programs expressed this way can run
efficiently on distributed-memory
multiprocessors, networks of workstations, and combinations of all of these.
In addition, shared-memory implementations are possible.
The paradigm will not be made obsolete by architectures combining the shared-
and distributed-memory views, or by increases in network speeds.  It thus
should be both possible and useful to implement this standard on a great
variety of machines, including those "machines" consisting of collections of
other machines, parallel or not, connected by a communication network.

\subsection{What Is Included In The Standard?}

The standard includes (this is temporarily as inclusive as possible):

\begin{itemize}
    \item  Point-to-point communication in a variety of modes, including modes
         that allow fast communication and heterogeneous communication
    \item  Collective operations
    \item  Process groups
    \item  Communication contexts
    \item  A simple way to create processes for the SPMD model
    \item  Bindings for both Fortran and C
    \item  A model implementation
    \item A formal specification.

\end{itemize}

\subsection{What Is Not Included In The Standard?}


The standard does not specify:

\begin{itemize}
    \item  Explicit shared-memory operations
    \item  Operations that require more operating system support than is currently
          standard; for example, interrupt-driven receives, remote execution,
          or active messages
    \item  Program construction tools
    \item  Debugging facilities
    \item  Tracing facilities
\end{itemize}

Features that are not included can always be offered as extensions
by specific
implementations.


From owner-mpi-comm@CS.UTK.EDU  Tue Dec  1 16:39:05 1992
Received: from CS.UTK.EDU by surfer.EPM.ORNL.GOV (5.61/1.34)
	id AA17944; Tue, 1 Dec 92 16:39:05 -0500
Received:  by CS.UTK.EDU (5.61++/2.8s-UTK)
	id AA27367; Tue, 1 Dec 92 16:14:27 -0500
Received: from relay2.UU.NET by CS.UTK.EDU with SMTP (5.61++/2.8s-UTK)
	id AA27363; Tue, 1 Dec 92 16:14:24 -0500
Received: from uunet.uu.net (via LOCALHOST.UU.NET) by relay2.UU.NET with SMTP 
	(5.61/UUNET-internet-primary) id AA00550; Tue, 1 Dec 92 16:14:28 -0500
Received: from kailand.UUCP by uunet.uu.net with UUCP/RMAIL
	(queueing-rmail) id 161350.23711; Tue, 1 Dec 1992 16:13:50 EST
Received: from brisk.kai.com (brisk) by kailand.kai.com via SMTP
  (5.65d-92031301 for <mpi-comm@cs.utk.edu>) id AA22501; Tue, 1 Dec 1992 15:07:53 -0600
Received: by brisk.kai.com
  (920330.SGI-92101201) id AA16316; Tue, 1 Dec 92 15:07:51 -0600
Date: Tue, 1 Dec 92 15:07:51 -0600
Message-Id: <9212012107.AA16316@brisk.kai.com>
To: mpi-comm@cs.utk.edu
Subject: A proposal.
From: Steven Ericsson Zenith <zenith@kai.com>
Sender: zenith@kai.com
Organization: 	Kuck and Associates, Inc.
		1906 Fox Drive, Champaign IL USA 61820-7334,
		voice 217-356-2288, fax 217-356-5199


I've seen several proposals and made a few suggestions myself. I have
now had a chance to look at Gropp and Lusk's Manual for the test
implementation and I like it as a starting point. I propose to all
subcommittees that we use this document as the focus for discussion
along with the introduction Jack sent around yesterday.

This shouldn't be taken as an endorsement by me of the Gropp and Lusk
manual - I have several remarks I would like to make at a later stage.
However, it is clear that we need a well considered and simple starting
point and I see that in this document plus the introduction.

Do I have any seconders?

In the HPFF committe structure description we received a few days ago it
was noted that much success came from someone taking charge of the
central document. I implore someone to do this (Jack?).

Steven

P.S. I am not ignoring the other comments made in the committees - I
think they too can - after debate - be folded into the suggested
starting point.

From owner-mpi-comm@CS.UTK.EDU  Tue Dec  1 19:08:43 1992
Received: from CS.UTK.EDU by surfer.EPM.ORNL.GOV (5.61/1.34)
	id AA21233; Tue, 1 Dec 92 19:08:43 -0500
Received:  by CS.UTK.EDU (5.61++/2.8s-UTK)
	id AA01862; Tue, 1 Dec 92 18:43:11 -0500
Received: from cunyvm.cuny.edu by CS.UTK.EDU with SMTP (5.61++/2.8s-UTK)
	id AA01858; Tue, 1 Dec 92 18:43:08 -0500
Message-Id: <9212012343.AA01858@CS.UTK.EDU>
Received: from YKTVMV by CUNYVM.CUNY.EDU (IBM VM SMTP V2R2) with BSMTP id 7311;
   Tue, 01 Dec 92 18:42:33 EST
Date: Tue, 1 Dec 92 18:43:02 EST
From: "Marc Snir" <SNIR%YKTVMV.BITNET@utkvm1.utk.edu>
X-Addr: (914) 945-3204  (862-3204)
        28-226 IBM T.J. Watson Research Center
        P.O. Box 218 Yorktown Heights NY 10598
To: mpi-comm@cs.utk.edu
Subject: HPF process
Reply-To: SNIR@watson.ibm.com

The HPF process did not start with a central document.  Various peoples wrote
proposals for various parts of the language design and, after several iterations,
when the number of proposals starting being reasonable and these proposals started
being coherent, they were collated into one document that evolved (mostly by
successive pruning) into a draft. I suppose we can follow the same approach --
with the initial MPI Draft being our first frame of reference.
From owner-mpi-comm@CS.UTK.EDU  Fri Dec  4 16:10:12 1992
Received: from CS.UTK.EDU by surfer.EPM.ORNL.GOV (5.61/1.34)
	id AA06597; Fri, 4 Dec 92 16:10:12 -0500
Received:  by CS.UTK.EDU (5.61++/2.8s-UTK)
	id AA27740; Fri, 4 Dec 92 15:56:38 -0500
Received: from THUD.CS.UTK.EDU by CS.UTK.EDU with SMTP (5.61++/2.8s-UTK)
	id AA27738; Fri, 4 Dec 92 15:56:36 -0500
From: Jack Dongarra <dongarra@cs.utk.edu>
Received:  by thud.cs.utk.edu (5.61++/2.7c-UTK)
	id AA07974; Fri, 4 Dec 92 15:56:35 -0500
Date: Fri, 4 Dec 92 15:56:35 -0500
Message-Id: <9212042056.AA07974@thud.cs.utk.edu>
To: mpi-comm@cs.utk.edu
Subject: addresses for mpi

I'm trying to put together a complete mailing list for MPI.
Can you fill in the following information and send it to me.
Thanks,
Jack

Name:
Address:
Email:
Fax:
Office phone number:
Home phone number: (I'll use this only in an emergency and won't circulate.)

From owner-mpi-comm@CS.UTK.EDU  Mon Dec  7 21:39:33 1992
Received: from CS.UTK.EDU by surfer.EPM.ORNL.GOV (5.61/1.34)
	id AA10542; Mon, 7 Dec 92 21:39:33 -0500
Received:  by CS.UTK.EDU (5.61++/2.8s-UTK)
	id AA29754; Mon, 7 Dec 92 21:28:26 -0500
Received: from vnet.ibm.com by CS.UTK.EDU with SMTP (5.61++/2.8s-UTK)
	id AA29750; Mon, 7 Dec 92 21:28:21 -0500
Message-Id: <9212080228.AA29750@CS.UTK.EDU>
Received: from AUSVM6 by vnet.ibm.com (IBM VM SMTP V2R2) with BSMTP id 3637;
   Mon, 07 Dec 92 21:26:25 EST
Date: Mon, 7 Dec 92 14:02:48 CST
From: panda@vnet.ibm.com
To: mpi-comm@cs.utk.edu

To: mpi-comm@cs.utk.edu
Subject: addresses for mpi

I'm trying to put together a complete mailing list for MPI.
Can you fill in the following information and send it to me.
Thanks,
Jack

NAME:    RAJ PANDA
ADDRESS: E39/4305 IBM, 11400 BURNET RD., AUSTIN, TX 78758
EMAIL:   PANDA@VNET.IBM.COM
FAX:     1-512-823-6144
OFFICE PHONE NUMBER: 1-512-838-6632
HOME PHONE NUMBER:   1-512-835-1959                                      e.)

From owner-mpi-comm@CS.UTK.EDU  Mon Dec  7 22:10:17 1992
Received: from CS.UTK.EDU by surfer.EPM.ORNL.GOV (5.61/1.34)
	id AA10659; Mon, 7 Dec 92 22:10:17 -0500
Received:  by CS.UTK.EDU (5.61++/2.8s-UTK)
	id AA29855; Mon, 7 Dec 92 21:41:36 -0500
Received: from vnet.ibm.com by CS.UTK.EDU with SMTP (5.61++/2.8s-UTK)
	id AA29851; Mon, 7 Dec 92 21:41:26 -0500
Message-Id: <9212080241.AA29851@CS.UTK.EDU>
Received: from AUSVM6 by vnet.ibm.com (IBM VM SMTP V2R2) with BSMTP id 4638;
   Mon, 07 Dec 92 21:39:36 EST
Date: Mon, 7 Dec 92 14:51:31 CST
From: LBWARD@AUSVM6.VNET.IBM.COM
To: mpi-comm@cs.utk.edu
Subject: address for mpi mailing list

Please add my name to the MPI forum.    Linton Ward


Name:  Linton Ward
Address:  11400 Burnet Rd, Austin TX   78758
Email:  lbward@ausvm6.vmnet.ibm.com
Fax: (512) 823-6144
Office phone number: (512) 838-5116
Home phone number: (512) 244-1949

From owner-mpi-comm@CS.UTK.EDU  Thu Dec 10 13:10:06 1992
Received: from CS.UTK.EDU by surfer.EPM.ORNL.GOV (5.61/1.34)
	id AA08984; Thu, 10 Dec 92 13:10:06 -0500
Received:  by CS.UTK.EDU (5.61++/2.8s-UTK)
	id AA18058; Thu, 10 Dec 92 12:47:20 -0500
Received: from THUD.CS.UTK.EDU by CS.UTK.EDU with SMTP (5.61++/2.8s-UTK)
	id AA18051; Thu, 10 Dec 92 12:47:17 -0500
From: Jack Dongarra <dongarra@cs.utk.edu>
Received:  by thud.cs.utk.edu (5.61++/2.7c-UTK)
	id AA27178; Thu, 10 Dec 92 12:47:15 -0500
Date: Thu, 10 Dec 92 12:47:15 -0500
Message-Id: <9212101747.AA27178@thud.cs.utk.edu>
To: mpi-comm@cs.utk.edu
Subject: Information on the MPI meeting


Here are some details on the MPI meeting which is set for
January 6th-8th 1993 in Dallas.

The meeting site will be the:

 Bristol Suites
 7800 Alpha Road
 Dallas, TX
 214-233-7600
 
The room rate is $89.00. When making a reservation tell them you are
with the MPI meeting.

TBS Shuttle Service will be providing complimentary shuttle service to
and from the airports.  If you fly into DFW, use their courtesy telephone 
and dial 03.  If you fly into Love Field, you'll have to use a pay phone.  
They can be reached at 817-267-5150.  Upon boarding the shuttle, 
refer to the MPI meeting.

The registration fee for the meeting will be $75.  
Please make checks and POs payable to University of Tennessee.
We will collect this at the meeting.
The registration fee will go for coffee breaks, meeting rooms, 
AV and printer rentals. 

We should plan to start at 1:00 pm January 6th and finishing about 
noon on January 8th.

The format of the meeting is:

Wednesday, January 6
1:00 pm to 8:00 pm
2 Breakouts for 10 people
1 Breakout for 20 people
5:00 pm to 6:00 pm--On our own for dinner.

Thursday, January 7
8:00 am to 10:00 pm
1 U-shape room for 40 people
6:00 pm to 8:00 pm--
The group dinner somewhere in the area.  The hotel will provide round trip
van transportation.

Friday, January 8
8:00 am to 12:00 pm
1 U-shape room for 40 people

This is an open meeting and all are welcome.

For future planning here is a tentative list of dates, roughly 6 weeks apart,
for the series of meetings:

   January 6-8
   February 24-26
   April 7-9
   May 19-21
   June 30-July2

If you have any questions, please feel free to contact me.
Jack

From owner-mpi-comm@CS.UTK.EDU Wed Dec 23 16:46:29 1992
Received: from convex.convex.com by mozart.convex.com (5.64/1.28)
	id AA20114; Wed, 23 Dec 92 16:46:25 -0600
Received: from CS.UTK.EDU by convex.convex.com (5.64/1.35)
	id AA05394; Wed, 23 Dec 92 16:46:20 -0600
Received: from localhost by CS.UTK.EDU with SMTP (5.61++/2.8s-UTK)
	id AA14697; Wed, 23 Dec 92 17:31:12 -0500
X-Resent-To: mpi-comm@CS.UTK.EDU ; Wed, 23 Dec 1992 22:31:10 GMT
Errors-To: owner-mpi-comm@CS.UTK.EDU
Received: from rios2.EPM.ORNL.GOV by CS.UTK.EDU with SMTP (5.61++/2.8s-UTK)
	id AA14687; Wed, 23 Dec 92 17:31:08 -0500
Received: by rios2.epm.ornl.gov (AIX 3.2/UCB 5.64/4.03)
          id AA19206; Wed, 23 Dec 1992 17:29:47 -0500
Date: Wed, 23 Dec 1992 17:29:47 -0500
From: walker@rios2.epm.ornl.gov (David Walker)
Message-Id: <9212232229.AA19206@rios2.epm.ornl.gov>
To: abmacca@cs.sandia.gov, benson@rdvax.enet.dec.com, mpi-comm@cs.utk.edu,
        peter@sun.math.usfca.edu, srwheat@cs.sandia.gov
Subject: MPI Information
Status: RO


Dear MPI committee member or observer,

I need to know how many people to expect at the Dallas so please let me know 
if you intend to show up by sending email to walker@msr.epm.ornl.gov

Please find below some information about the use of the MPI
mailing lists, and who's involved in the various subcommittees. Please
check that your entry is correct. If there are any errors please sent email
to walker@msr.epm.ornl.gov and to dongarra@cs.utk.edu.
Also there's some information about the January 6-8, 1993, meeting
in Dallas.

1. Use of Mailing Lists
=======================

The following mailing lists have been set up.

   mpi-comm@cs.utk.edu          Whole committee (subcommitttes + observers)
   mpi-intro@cs.utk.edu         Introduction subcommittee
   mpi-pt2pt@cs.utk.edu         Point-to-point communication subcommittee
   mpi-collcomm@cs.utk.edu      Collective communication subcommittee
   mpi-ptop@cs.utk.edu          Process topology subcommittee
   mpi-lang@cs.utk.edu          Language binding subcommittee
   mpi-formal@cs.utk.edu        Formal language description subcommittee
   mpi-envir@cs.utk.edu         Environment inquiry subcommittee

All mail is being collected and can be retrieved by sending email to
netlib@ornl.gov and in the mail message typing:

		send mpi-comm from mpi
		send mpi-intro from mpi
		...etc.

Also try:
		send index from mpi


2. Membership of Subcommittees (as of Dec. 22, 1993)
====================================================

2.1. Introduction Subcommittee:

   Jack Dongarra (Chair)   dongarra@cs.utk.edu           Univ. of TN & ORNL
   Jim Cownie              jim@meiko.co.uk               Meiko
   Daniel Frye             danielf@kgnvma.vnet.ibm.com   IBM Kingston
   Ian Glendinning         igl@ecs.soton.ac.uk           Southampton Univ.
   Tony Hey                ajgh@ecs.soton.ac.uk          Southampton Univ.
   Robert L. Knighten      knighten@ssd.intel.com        Intel SSD
   Rusty Lusk              lusk@mcs.anl.gob              Argonne National Lab.
   Peter A. Rigsbee        par@cray.com                  Cray Research, Inc.
   Steve Zenith            zenith@kai.com                Kuck & Associates, Inc.
   
2.2. Point-To-Point Communication Subcommittee

   Marc Snir (Chair)       snir@watson.ibm.com           IBM T. J. Watson
   Scott Berryman          berryman@cs.yale.edu          Yale
   Jaeyoung Choi           choi@msr.epm.ornl.gov         ORNL
   Jim Cownie              jim@meiko.co.uk               Meiko
   Jack Dongarra           dongarra@cs.utk.edu           Univ. of TN & ORNL
   Anne Elster             elster@cs.cornell.edu         Cornell Univ.
   Al Geist                geist@msr.epm.ornl.gov        ORNL
   Adam Greenberg          moose@think.com               Thinking Machines Corp.
   Bill Gropp              gropp@mcs.anl.gov             Argonne National Lab.
   Leslie Hart             hart@fsl.noaa.gov             NOAA/FSL
   Rolf Hempel             hempel@gmd.de                 GMD
   Tom Henderson           hender@fsl.noaa.gov           NOAA/FSL
   Steven Huss-Lederman    lederman@super.org            Supercomput. Res. Ctr.
   John Kapenga            john@cs.wmich.edu             Western Michigan Univ.
   Robert L. Knighten      knighten@ssd.intel.com        Intel SSD
   Arthur B. Maccabe       abmacca@cs.sandia.gov         Sandia National Labs
   Oliver McBryan          mcbryan@piper.cs.colorado.edu Univ. of Colorado
   Charles Mosher          ccm@arco.com                  ARCO
   Paul R. Pierce          prp@ssd.intel.com             Intel SSD
   Peter Rigsbee           par@cray.com                  Cray Research, Inc.
   Anthony Skjellum        tony@cs.msstate.edu           Mississippi State Univ.
   Vaidy Sunderam          vss@mathcs.emory.edu          Emory University
   Robert van de Geijn     rvdg@cs.utexas.edu            Univ. of Texas, Austin
   David Walker            walker@msr.epm.ornl.gov       ORNL
   Stephen R. Wheat        srwheat@cs.sandia.gov         Sandia National Labs
   Steve Zenith            zenith@kai.com                Kuck & Associates, Inc.

2.3. Collective Communication Subcommittee

   Al Geist (Chair)        geist@msr.epm.ornl.gov        ORNL
   Jaeyoung Choi           choi@msr.epm.ornl.gov         ORNL
   Jim Cownie              jim@meiko.co.uk               Meiko
   Mark Debbage            md@ecs.soton.ac.uk            Southampton Univ.
   Anne Elster             elster@cs.cornell.edu         Cornell Univ.
   Jon Flower              jwf@parasoft.com              Parasoft Corp.
   Adam Greenberg          moose@think.com               Thinking Machines Corp.
   Leslie Hart             hart@fsl.noaa.gov             NOAA/FSL
   C. T. Howard Ho         ho@almaden.ibm.com            IBM Almaden
   John Kapenga            john@cs.wmich.edu             Western Michigan Univ.
   Robert L. Knighten      knighten@ssd.intel.com        Intel SSD
   Arthur B. Maccabe       abmacca@cs.sandia.gov         Sandia National Labs
   Charles Mosher          ccm@arco.com                  ARCO
   Steve Otto              otto@cse.ogi.edu              Oregon Graduate Inst.
   Paul R. Pierce          prp@ssd.intel.com             Intel SSD
   Peter Rigsbee           par@cray.com                  Cray Research, Inc.
   Anthony Skjellum        tony@cs.msstate.edu           Mississippi State Univ.
   Marc Snir               snir@watson.ibm.com           IBM T. J. Watson
   Vaidy Sunderam          vss@mathcs.emory.edu          Emory University
   Robert van de Geijn     rvdg@cs.utexas.edu            Univ. of Texas, Austin
   David Walker            walker@msr.epm.ornl.gov       ORNL
   Stephen R. Wheat        srwheat@cs.sandia.gov         Sandia National Labs
   Steve Zenith            zenith@kai.com                Kuck & Associates, Inc.

2.4. Process Topology Subcommittee

   Rolf Hempel (Chair)     hempel@gmd.de                 GMD
   Jim Cownie              jim@meiko.co.uk               Meiko
   Jon Flower              jwf@parasoft.com              Parasoft Corp.
   Tom Henderson           hender@fsl.noaa.gov           NOAA/FSL
   Steven Huss-Lederman    lederman@super.org            Supercomput. Res. Ctr.
   Robert L. Knighten      knighten@ssd.intel.com        Intel SSD
   Oliver McBryan          mcbryan@piper.cs.colorado.edu Univ. Of Colorado
   Steve Otto              otto@cse.ogi.edu              Oregon Graduate Inst.
   Lew Tucker              tucker@think.com              Thinking Machines Corp.

2.5. Language Binding Subcommittee

   Scott Berryman (Chair)  berryman@cs.yale.edu          Yale
   Bruce Leisure           bleisure@kai.com              Kuck & Associates, Inc.
   Robert L. Knighten      knighten@ssd.intel.com        Intel SSD
   Cherri M. Pancake       pancake@cs.orst.edu           Oregon State Univ.
   Peter Rigsbee           par@cray.com                  Cray Research, Inc.

2.6. Formal Language Description Subcommittee

   Steve Zenith (Chair)    zenith@kai.com                Kuck & Associates, Inc.
   Ian Glendinning         igl@ecs.soton.ac.uk           Southampton Univ.
   Tony Hey                ajgh@cs.ston.ac.uk            Southampton Univ.
   Robert L. Knighten      knighten@ssd.intel.com        Intel SSD
   Rusty Lusk              lusk@mcs.anl.gov              Argonne National Lab.

2.7. Environment Inquiry Subcommittee

   Bill Gropp (Chair)      gropp@mcs.anl.gov             Argonne National Lab.
   Daniel Frye             danielf@kgnvma.vnet.ibm.com   IBM Kingston
   Robert L. Knighten      knighten@ssd.intel.com        Intel SSD
   Steve Zenith            zenith@kai.com                Kuck & Associates, Inc.

2.8. Observers

   Ed Benson               benson@rdvax.enet.dec.com     DEC
   Clemens H. Cap          cap@ifi.unizh.ch              University of Zurich
   Michel J. Dayde         dayde@enseeiht.fr             ENSEEIHT-IRIT
   Jim Feeney              feeneyj@gdlvm6.vnet.ibm.com   IBM
   Kyle Gallivan           gallivan@csrd.uiuc.edu        CSRD, Univ. of Illinois
   Michael Heath           heath@ncsa.uiuc.edu           NCSA, Univ. of Illinois
   Mark Bowen Hill         mbh@ecs.soton.ac.uk           Southampton Univ.
   Shlomo Kipnis           kipnis@watson.ibm.com         IBM T. J. Watson
   ???                     langley@dirac.scri.fsu.edu    Florida State Univ.
   Bob Leary               leary@sdsc.edu                San Diego Super. Ctr.
   Lorie Liebrock          lorie@cs.rice.edu             Rice University
   Miron Livny             miron@cs.wisc.edu             Univ. of Wisconsin
   Ken Kennedy             ken@rice.edu                  Rice University
   Neil MacDonald          nbm@epcc.ed.ac.uk             Univ. of Edinburgh
   Dan Cristian Marinescu  dcm@cs.purdue.edu             Purdue University
   Harish Nag              harish@ssd.intel.com          Intel SSD
   Dan Nessett             nessett@llnl.gov              LLNL
   Angela Ovearly          fsang@kira.lerc.nasa.gov      NASA Lewis Res. Ctr.
   Peter S. Pacheco        peter@sun.math.usfca.edu      Univ. of CA, San Franc.
   Raj Panda               panda@vnet.ibm.com            IBM
   Arnulfo Perez           arperez@mtecv2.mty.itesm.mx   Center for AI, Mexico
   Matthew Peters          mpeters@vnet.ibm.com          IBM UK Sci. Ctr.
   Jean-Laurent Philippe   philippe@archipel.fr          Archipel
   Robert S. Schreiber     schreibr@riacs.edu            RIACS, NASA Ames
   Mike Surridge           ms@pac.soton.ac.uk            Southampton Univ.
   Tricot                  tricot@archipel.fr            Archipel
   Robert Voigt            rvoigt@note.nsf.gov           NSF
   Linton Ward             lbward@ausvm6.vmnet.ibm.com   IBM
   Dennis Weeks            weeks@convex.com              Convex
   Francis Wray            falk@parsytec.de              Parsytec


3. Institutions Involved in MPI
===============================

3.1. Universities
   
   Univ. of Edinburgh
   Emory University
   N.L. Mexico Centro de Intelligencia Artifical, Mexico
   Mississippi State University
   Oregon Graduate Institute
   Oregon State University
   Purdue University
   Rice University
   Western Michigan University
   Yale University 
   University of Illinois, CSRD
   University of Illinois, NCSA
   University of Southampton             
   University of Tennessee
   University of Texas at Austin
   University of Wisconsin
   University of Zurich                      
   University of Colorado
   
3.2. Laboratories

   ARCO Exploration and Production Technology
   Argonne National Laboratory
   Cerfacs ENSEEIHT-IRIT, France
   GMD
   Lawrence Livermore National Laboratory
   NASA RIACS
   NOAA
   Oak Ridge National Laboratory
   San Diego Supercomputer Center
   Sandia National Laboratories
   Supercomputer Research Center
   
3.3. Companies

   ARCHIPEL S.A.
   Cray Research, Inc.
   Digital Equipment Corporation
   IBM Austin
   IBM Almaden Research Center
   IBM Kingston
   IBM T.J. Watson Research Center
   IBM UK Scientific Centre
   Intel Supercomputer Systems Division
   Kuck and Associates, Inc.
   ParaSoft Corporation
   Parsytec Computer GmbH
   Thinking Machines Corporation

4. MPI Committee Meeting, Jan 6-8, 1993
=======================================

The next meeting of the MPI subcommittees will take place at

      Bristol Suites Hotel
      7800 Alpha Road
      Dallas, Texas
      
The meeting will start at 1pm on Wednesday January 6, 1993, and finish at noon 
on Friday, January 8, 1993. 

Rooms are $89 per night and reservations may be made by calling (214) 233-7600 
(mention MPI meeting). 

The meeting registration fee will be $75. Please make checks and POs payable to University of Tennessee. Jack Dongarra will collect this at the meeting. The 
registration fee will go for coffee breaks, meeting rooms, AV and printer 
rentals.

TBS Shuttle Service will be providing complimentary shuttle service to
and from the airports.  If you fly into DFW, use their courtesy telephone
and dial 03.  If you fly into Love Field, you'll have to use a pay phone.
They can be reached at 817-267-5150.  Upon boarding the shuttle refer to the 
MPI meeting.

We have made arrangements with Delta Airlines to get a deal on airfares.
When you book your flights please call Delta or have your
travel agent call 1-800-241-6760 for reservations and refer to 
File Number S2145.  The file goes by the name Message Passing Interface.  
A certain restrictions apply and seats are limited.

An agenda will be sent out soon to all subcommittee members. We intend to 
rent a laser printer for use by attendees with protable computers.

From owner-mpi-comm@CS.UTK.EDU Mon Jan  4 11:02:02 1993
Received: from convex.convex.com by mozart.convex.com (5.64/1.28)
	id AA06142; Mon, 4 Jan 93 11:02:00 -0600
Received: from CS.UTK.EDU by convex.convex.com (5.64/1.35)
	id AA08877; Mon, 4 Jan 93 11:01:56 -0600
Received: from localhost by CS.UTK.EDU with SMTP (5.61++/2.8s-UTK)
	id AA15255; Mon, 4 Jan 93 11:54:20 -0500
X-Resent-To: mpi-comm@CS.UTK.EDU ; Mon, 04 Jan 1993 16:54:19 GMT
Errors-To: owner-mpi-comm@CS.UTK.EDU
Received: from timbuk.cray.com by CS.UTK.EDU with SMTP (5.61++/2.8s-UTK)
	id AA15247; Mon, 4 Jan 93 11:54:16 -0500
Received: from teak18.cray.com by cray.com (4.1/CRI-MX 2.4)
	id AA21055; Mon, 4 Jan 93 10:54:14 CST
Received: by teak18.cray.com
	id AA05581; 4.1/CRI-5.6; Mon, 4 Jan 93 10:54:13 CST
From: par@teak.cray.com (Peter Rigsbee)
Message-Id: <9301041654.AA05581@teak18.cray.com>
Subject: Profilers etc. (fwd)
To: mpi-comm@cs.utk.edu
Date: Mon, 4 Jan 93 10:54:10 CST
X-Mailer: ELM [version 2.3 PL11b-CRI]
Status: R

James Cownie writes:
> 
> I have an implementation issue which I would like to raise in the MPI
> forum, since it is unclear where it fits into the sub-committee
> structure I have mailed to both mpi-pt2pt and mpi-lang. Apologies to
> those of you who receive this message twice.
>
> Issue
> =====
> The major objective of MPI1 is to achieve portability of applications.
> This has major benefits for us all (not least in legitimising and
> therefore growing the MPP marketplace). 
> 
> One of the benefits which it would also be nice to achieve would be
> the wide availability of different tools which support programming in
> the MPI1 model. The most immediately obvious such tools (to me at
> least !) are
> 
> 1) HPF to Fortran + MPI1 translators
> 2) Performance monitoring/tuning tools
> 3) Debuggers
> 
> Support for the first is easy (since it just requires what we're
> already doing). 
> 
> Portable support for the second is not so trivial, since the
> collection of useful performance information is much more intrusive.
> 
> Portable support for the third is harder still, and I won't discuss it
> further. 

First, I think this is an important issue.  I'd argue that the need isn't
necessarily to support portable tools, but it would be nice to define a 
mechanism by which performance and debugging tools could obtain at least the
most basic information about the communications.

Second, I don't think it really fits into either group that Jim sent the
message to.  The same issue, for example, also applies for global 
communications.  This is why I copied the entire committee, and I think
there should be some discussion in Dallas was to whether this is a topic
that should be covered by the standard.

Third, I fear this will be a very difficult subject to address.  Clearly
Jim had some specific use in mind when he made his suggestions, but didn't
go into much detail (and properly so -- this isn't intended as a criticism).  
But there are some very basic differences between the ways that different
tools are designed that need to be considered.  What information should be
recorded?  Is data needed for each transmission (a "trace") or should it be 
accumulated by the library?  Should the library pass information to the tool 
or should the tool query the library?  I don't think there are clear cut 
answers here.

But I think this is an important issue that should receive some airtime in
Dallas.

	- Peter Rigsbee
	  par@cray.com


I've included the rest of Jim's proposal for those who didn't see the 
original mailing...
> 
> Options
> =======
> We have various possible options which we can take.
> 
> 1) Ignore the problem
>    Provide no support for portable performance monitoring tools, and
>    leave each tool provider with a large porting problem.
> 
>    I don't like this solution, it loses some of the benefit of the
>    standard, which should be attracting people to build tools.
> 
> 2) Document specific implementation hooks as part of MPI1. 
>    In effect these would be callbacks from the library to profiling
>    code which could then do whatever it liked.
> 
> 3) As 2, but without REQUIRING that a conforming implementation
>    provide the functions. They're there as a recommendation, rather
>    than being mandatory. 
> 
> 
> I think we should be concerned about this, and I'd like us at least to
> make some recommendation. Personally I'd probably implement two
> separate interface to the library, one of which provided the hooks,
> and the other of which didn't so that you don't pay the cost of
> checking the profiling hooks unless you asked to.
> 
> Of course even if we do nothing it's not too hard to escape (using
> horrible macros) in C, but Fortran doesn't always have macros, so a
> properly specified internal solution is definitely preferable.
> 
> Thoughts ???
> Flame me at Dallas. I'm travelling tomorrow. When are we having a
> meeting in Europe ???
> 
> -- Jim
> James Cownie 
> Meiko Limited
> 650 Aztec West
> Bristol BS12 4SD
> England
> 
> Phone : +44 454 616171
> FAX   : +44 454 618188
> E-Mail: jim@meiko.co.uk or jim@meiko.com
> 
> 

From owner-mpi-comm@CS.UTK.EDU  Tue Jan  5 17:33:28 1993
Received: from CS.UTK.EDU by surfer.EPM.ORNL.GOV (5.61/1.34)
	id AA07561; Tue, 5 Jan 93 17:33:28 -0500
Received: from localhost by CS.UTK.EDU with SMTP (5.61++/2.8s-UTK)
	id AA27130; Tue, 5 Jan 93 17:32:46 -0500
X-Resent-To: mpi-comm@CS.UTK.EDU ; Tue, 05 Jan 1993 22:32:45 GMT
Errors-To: owner-mpi-comm@CS.UTK.EDU
Received: from fslg8.fsl.noaa.gov by CS.UTK.EDU with SMTP (5.61++/2.8s-UTK)
	id AA27122; Tue, 5 Jan 93 17:32:42 -0500
Received: by fslg8.fsl.noaa.gov (5.57/Ultrix3.0-C)
	id AA23201; Tue, 5 Jan 93 22:32:36 GMT
Received: by macaw.fsl.noaa.gov (4.1/SMI-4.1)
	id AA01387; Tue, 5 Jan 93 15:31:37 MST
Date: Tue, 5 Jan 93 15:31:37 MST
From: hender@macaw.fsl.noaa.gov (Tom Henderson)
Message-Id: <9301052231.AA01387@macaw.fsl.noaa.gov>
To: mpi-comm@cs.utk.edu
Subject: A few general comments



Here are a few comments/questions regarding the MPI1 draft proposal from folks 
here (Forecast Systems Lab).  Apologies if you have seen them before!  


1)  Currently, communication between groups operating in different 
    communication contexts appears to be very difficult.  One way to alleviate 
    this problem might be to provide a way to "name" contexts.  Communicating 
    groups could then refer to a context by name to ensure that the same 
    message types were used.  Message registration would also accomplish this 
    and might be easier to implement (see our "Proposal 1" below).  

2)  We believe that MPI1 should include a specification of low level
    protocols that vendors should implement so that heterogeneous computing
    can be made available.  Each media type (standard ethernet, FDDI, HIPPI,
    etc.) should have a specification.  This would greatly aid in this 
    standard being useful in a workstation environment.  The protocol
    document would be a companion document to the syntactical standard for
    MPI1.

3)  On p. 9  "No reference may be made to any process or group outside the 
    current group context."  How do different groups that are simultaneously 
    working on different stages of a problem communicate?  MPI_PARTG()??  

4)  The use of stacks to manage contexts and groups may be a bad idea if MPI 
    ever intends to support MIMD programs (how do groups synchronize stacks of 
    message contexts?).  Message registration would do the job without 
    stacks.  Registration of blocks of messages at the beginning of a program 
    (or large module) would not affect performance very much.  For groups, we 
    like Al Geist's approach of identifying a process by one or more 
    (group ID, process ID) pairs.  We feel that communication between groups 
    is very useful, even for SPMD programs.  

5)  It is clear that some way of responding to asynchronous events must be 
    provided.  We believe that "interrupt" type routines (such as Intel's 
    hrecv() and hsend()) may not be the best approach.  We have a brief 
    alternative proposal for "Remote Services" below ("Proposal 2").  

6)  The consensus seems to be that "parallel I/O" should not be a part of 
    MPI1.  Should it be a part of MPI2 or MPI3?  If our intent is to create a 
    standard that supports the development of portable code then we believe 
    that I/O must be considered at some point.  We should make sure that the 
    specification of MPI1 includes the hooks necessary to include I/O at a 
    later date.  If our intent is to create only a low level library, then we 
    can leave all this up to us users.  We have some ideas about I/O and Data 
    Decomposition below ("Proposal 3").  Successful implementation of such a 
    proposal would require process topology information (yes, here's a plug 
    for the Process Topology subcommittee).  

The proposals follow.  

Regards, 

                      Leslie Hart (hart@fsl.noaa.gov)
                      Tom Henderson (hender@fsl.noaa.gov)
                      Bernardo Rodriguez (bernardo@fsl.noaa.gov)




               PROPOSALS



Proposal 1.  Message Type Registration.

Message types are managed using a global registry.  Routines are
provided that allow the user to "reserve" blocks of message types for
use by the application.  Message type registration is intended to
prevent message type "collisions" when user code and third-party library
routines are used together (historically, a serious problem with typed
message passing systems).  Initial concepts for message type
registration are due to Tony Skjellum of Lawrence Livermore National
Laboratory.

Two proposed routines to register and monitor message types are described 
below.  Arguments have been omitted for brevity.  

Message type registration routine:

MPI_ReserveMsgType()
Reserve one or more message types for use by the calling process.  This
routine is used to prevent message type "collisions" between user
applications and libraries.  Inputs include an ID string and the number
of message types to be reserved.  The routine first checks the locally
maintained message type registry and returns an error condition if the ID
string matches an existing entry.  The routine then goes to the global
message type registry to get the message types.  If the ID string matches an
existing entry in the global message type registry then the message types are
copied from that entry to the calling process.  Otherwise, new
message types are registered with the ID string, entered into the global
message type registry, and copied to the calling process.  The new ID string
and message types are entered into the locally maintained message type 
registry.

Message type registration inquiry routine:

MPI_InquireMsgTypeByName()
Ask the message type registry to obtain the message types reserved under
an ID string.  An error is returned if no message types have been reserved
under the ID string. 



Proposal 2.  Remote Services (brief concept only).

A remote service is similar in concept to a RPC (remote procedure call).
Remote services are most often used to respond to specified
asynchronous events.  The actions taken in response to asynchronous
events are performed by agent processes known as protocol handlers.

A remote service is requested of one process by the same or another
process.  The remote service request is accompanied by a small amount of
data to guide the action of the service.  Routines are provided to allow 
user-created routine to be attached to specified requests.  An attached 
user-created routine is called a protocol handler.  A protocol handler does 
not have access to the address space of the its associated process.  

The protocol handler has the status of a full process (ie. it may perform I/O 
and message-passing communication).  This is an advantage over some current 
interrupt-driven approaches.  Remote service requests are handled one at a 
time on a first-come first-served basis (ie. a new remote service request will 
not be handled until all pending remote service requests are handled).  This 
may be a drawback to this approach.  



Proposal 3.  Some ideas about Cartesian Data Decomposition and Parallel I/O.  

Due to length, we have just included a few ideas.  If there is any interest, 
we can provide (lots) more detail.  

1)  We propose Cartesian data decomposition routines to support the
    scalable distribution of multidimensional arrays among the processes in
    a group. These routines isolate the user from the details of
    implementing scalable data parallelism in a message passing environment.
    The routines also enhance performance by distributing data in a way 
    that is most advantageous for a particular architecture.  

2)  A Cartesian data decomposition defines the distribution of a
    multidimensional data array onto a "logical" array of processes with the
    same dimension.  The processes are members of a specified group. 
    A Cartesian data decomposition is defined by information provided by the
    user and by run-time parameters determined by the system.  The user
    specifies the group, array dimension, and number of elements in
    each dimension of the data array.  The user may also optionally specify
    re-ordering of processes in the group and boundary behavior.  The 
    Cartesian data decomposition routines then combine this information with 
    the number of processes in the group (provided by the system at run time) 
    to determine which portion of the data array will reside on each process 
    in the group.  All information about the decomposition is then stored in 
    a structure (or FORTRAN77 array).  

    The "logical" array of processors is created using the Processor Topology 
    routines (this idea has already been discussed in some detail in that 
    subcommittee).  

3)  Cartesian data decomposition and I/O should be intimately related.  Once a 
    decomposition structure has been created, I/O should be possible using 
    routines with syntax similar to this:  
    
        cget(file, array, decomp)
        cput(file, array, decomp)

    where decomp is the decomposition structure.  

4)  Data decomposition tools have been available for several years, most
    notably from Parasoft's Express software package.  These tools are
    extremely useful for almost all data parallel applications.  Use of these 
    tools in conjunction with I/O greatly simplifies program development on
    message passing systems.

5)  Few areas in parallel processing have been dealt with in less detail by
    standardization efforts than parallel I/O.  We would like to see 
    behavior defined for such operations as seek/read and seek/write when 
    several processes are accessing the same file.  The concept of "loose 
    synchronization" (Express and elsewhere) has proven to be very useful 
    and should be included in a standard.  Encapsulation of I/O in 
    standardized routines would also permit performance optimization by the 
    people who (should) know best how to do it (ie. the hardware vendors).  

From owner-mpi-comm@CS.UTK.EDU  Wed Jan  6 11:42:45 1993
Received: from CS.UTK.EDU by surfer.EPM.ORNL.GOV (5.61/1.34)
	id AA24005; Wed, 6 Jan 93 11:42:45 -0500
Received: from localhost by CS.UTK.EDU with SMTP (5.61++/2.8s-UTK)
	id AA12383; Wed, 6 Jan 93 11:41:35 -0500
X-Resent-To: mpi-comm@CS.UTK.EDU ; Wed, 06 Jan 1993 16:41:34 GMT
Errors-To: owner-mpi-comm@CS.UTK.EDU
Received: from pnlg.pnl.gov by CS.UTK.EDU with SMTP (5.61++/2.8s-UTK)
	id AA12375; Wed, 6 Jan 93 11:41:32 -0500
Received: from carbon.pnl.gov (130.20.65.121) by pnlg.pnl.gov; Wed, 6 Jan 93
 08:39 PST
Received: from fermi.pnl.gov by carbon.pnl.gov (4.1/SMI-4.1) id AA25662; Wed, 6
 Jan 93 08:38:48 PST
Received: by fermi.pnl.gov (4.1/SMI-4.1) id AA18870; Wed, 6 Jan 93 08:38:46 PST
Date: Wed, 06 Jan 93 08:38:45 -0800
From: Robert J Harrison <d3g681@fermi.pnl.gov>
Subject: Re: Comments on Bill Gropp's comments
To: mpi-comm@cs.utk.edu
Message-Id: <9301061638.AA18870@fermi.pnl.gov>
X-Envelope-To: mpi-comm@cs.utk.edu

At the end of message <9301051955.AA01014@SSD.intel.com> Paul Pierce wrote
> 
> I strongly recommend that we avoid separated info calls. Info can be returned
> through output parameters, although that does annoyingly complicate receive
> calls. Alternatively, info can be associated with handles, but that seriously
> complicates handle management. (Handle management is a good topic for a
> separate discussion.)

I also strongly favour not having separate info calls.  The necessary
information is brief and does not excessively clutter argument lists,
and can always be hidden in a wrapper if it is routinely not required.

Also, by removing sources of ambiguity we give more freedom for
implementation specific optimizations.

> 
> If we decide we must have separated info calls, we should use dynamic context
> semantics.
> 
Yes to this too. 

Robert Harrison.
From owner-mpi-comm@CS.UTK.EDU  Wed Jan  6 17:17:30 1993
Received: from CS.UTK.EDU by surfer.EPM.ORNL.GOV (5.61/1.34)
	id AA10712; Wed, 6 Jan 93 17:17:30 -0500
Received: from localhost by CS.UTK.EDU with SMTP (5.61++/2.8s-UTK)
	id AA29683; Wed, 6 Jan 93 17:16:48 -0500
X-Resent-To: mpi-comm@CS.UTK.EDU ; Wed, 06 Jan 1993 22:16:46 GMT
Errors-To: owner-mpi-comm@CS.UTK.EDU
Received: from p.lanl.gov by CS.UTK.EDU with SMTP (5.61++/2.8s-UTK)
	id AA29672; Wed, 6 Jan 93 17:16:45 -0500
Received: from beta.lanl.gov by p.lanl.gov (5.65/1.14)
	id AA11282; Wed, 6 Jan 93 15:16:41 -0700
Received: by beta.lanl.gov (5.57/Ultrix2.4-C)
	id AA29872; Wed, 6 Jan 93 15:15:46 -0700
Date: Wed, 6 Jan 93 15:15:46 -0700
From: sp@beta.lanl.gov (Stephen W Poole)
Message-Id: <9301062215.AA29872@beta.lanl.gov>
To: mpi-comm@cs.utk.edu

I would like to have my name added to the mailing list.

Steve...
From owner-mpi-comm@CS.UTK.EDU  Fri Jan 15 15:31:08 1993
Received: from CS.UTK.EDU by surfer.EPM.ORNL.GOV (5.61/1.34)
	id AA17910; Fri, 15 Jan 93 15:31:08 -0500
Received: from localhost by CS.UTK.EDU with SMTP (5.61++/2.8s-UTK)
	id AA13121; Fri, 15 Jan 93 15:29:52 -0500
X-Resent-To: mpi-comm@CS.UTK.EDU ; Fri, 15 Jan 1993 15:29:51 EST
Errors-To: owner-mpi-comm@CS.UTK.EDU
Received: from rios2.EPM.ORNL.GOV by CS.UTK.EDU with SMTP (5.61++/2.8s-UTK)
	id AA13112; Fri, 15 Jan 93 15:29:50 -0500
Received: by rios2.epm.ornl.gov (AIX 3.2/UCB 5.64/4.03)
          id AA13694; Fri, 15 Jan 1993 15:29:49 -0500
Date: Fri, 15 Jan 1993 15:29:49 -0500
From: walker@rios2.epm.ornl.gov (David Walker)
Message-Id: <9301152029.AA13694@rios2.epm.ornl.gov>
To: mpi-comm@cs.utk.edu
Subject: Communication contexts


I thought the discussion of communication contexts at the last Dallas meeting
was lacking in focus, and I'm afraid the existing subcommittees may
not deal with this area. If there are enough people interested perhaps there
should be a separate communication context subcommittee. If you have any
strong opinions on this please let me know. Also let me know if you would
like to be on the communication context subcommittee if one is established.

On the topic of communication contexts I think (at least) 4 approaches have
been proposed.
	1) Implicit communication contexts as in MPI1 controlled by push/pop.
	2) Explicit registration as in Zipcode
	3) Explicit communication contexts should be merged with explicit
           group contexts. Since groups cannot communicate with each other
	   a new communication context can be created by creating a new group 
	   with the same members as the current group.
	4) Chuck Simmons of Oracle has suggested that communication contexts
	   are really a particular type of thread, and so can be handled
           using existing threads packages.
If you have any ideas, or are strongly for or against any of the above
approaches let mpi-comm know so we can initiate a discussion of this topic.

David Walker
From owner-mpi-comm@CS.UTK.EDU  Fri Jan 15 15:48:16 1993
Received: from CS.UTK.EDU by surfer.EPM.ORNL.GOV (5.61/1.34)
	id AA18263; Fri, 15 Jan 93 15:48:16 -0500
Received: from localhost by CS.UTK.EDU with SMTP (5.61++/2.8s-UTK)
	id AA14054; Fri, 15 Jan 93 15:47:41 -0500
X-Resent-To: mpi-comm@CS.UTK.EDU ; Fri, 15 Jan 1993 15:47:39 EST
Errors-To: owner-mpi-comm@CS.UTK.EDU
Received: from antares.mcs.anl.gov by CS.UTK.EDU with SMTP (5.61++/2.8s-UTK)
	id AA14046; Fri, 15 Jan 93 15:47:38 -0500
Received: from donner.mcs.anl.gov by antares.mcs.anl.gov (4.1/SMI-GAR)
	id AA03636; Fri, 15 Jan 93 14:47:35 CST
Received: by donner.mcs.anl.gov (4.1/GCF-5.8)
	id AA00709; Fri, 15 Jan 93 14:47:32 CST
Message-Id: <9301152047.AA00709@donner.mcs.anl.gov>
To: mpi-comm@cs.utk.edu
Subject: Communication contexts
Cc: walker@rios2.epm.ornl.gov
Date: Fri, 15 Jan 93 14:47:31 CST
From: Rusty Lusk <lusk@antares.mcs.anl.gov>

| 
| On the topic of communication contexts I think (at least) 4 approaches have
| been proposed.
| 	1) Implicit communication contexts as in MPI1 controlled by push/pop.
| 	2) Explicit registration as in Zipcode
| 	3) Explicit communication contexts should be merged with explicit
|            group contexts. Since groups cannot communicate with each other
| 	   a new communication context can be created by creating a new group 
| 	   with the same members as the current group.
| 	4) Chuck Simmons of Oracle has suggested that communication contexts
| 	   are really a particular type of thread, and so can be handled
|            using existing threads packages.
| If you have any ideas, or are strongly for or against any of the above
| approaches let mpi-comm know so we can initiate a discussion of this topic.

I think that 1) contradicts our genral agreement to avoid state as much as
possible.  4) is a problem on systems that don't support threads, and we have
more-or-less agreed to be consistent with thread packages but not depend upon
them.  3) should be discussed along with the converse: that contexts rather
than groups should be the primary concept and groups defined in terms of
contexts.

David, perhaps you could create a mailing list on which this discussion can
take place, parallel to the subcommittee mailing lists, so it doesn't have to
go to the whole committee.  Thanks.

Rusty
From owner-mpi-comm@CS.UTK.EDU  Fri Jan 15 16:13:17 1993
Received: from CS.UTK.EDU by surfer.EPM.ORNL.GOV (5.61/1.34)
	id AA18561; Fri, 15 Jan 93 16:13:17 -0500
Received: from localhost by CS.UTK.EDU with SMTP (5.61++/2.8s-UTK)
	id AA16784; Fri, 15 Jan 93 16:12:04 -0500
X-Resent-To: mpi-comm@CS.UTK.EDU ; Fri, 15 Jan 1993 16:12:03 EST
Errors-To: owner-mpi-comm@CS.UTK.EDU
Received: from convex.convex.com by CS.UTK.EDU with SMTP (5.61++/2.8s-UTK)
	id AA16768; Fri, 15 Jan 93 16:12:01 -0500
Received: from mozart.convex.com by convex.convex.com (5.64/1.35)
	id AA21882; Fri, 15 Jan 93 15:11:54 -0600
Received: by mozart.convex.com (5.64/1.28)
	id AA01950; Fri, 15 Jan 93 15:11:17 -0600
Date: Fri, 15 Jan 93 15:11:17 -0600
From: weeks@mozart.convex.com (Dennis Weeks)
Message-Id: <9301152111.AA01950@mozart.convex.com>
To: mpi-comm@cs.utk.edu
Subject: Communication contexts
Cc: lusk@antares.mcs.anl.gov, walker@rios2.epm.ornl.gov

Rusty Lusk writes:
> David, perhaps you could create a mailing list on which this discussion can
> take place, parallel to the subcommittee mailing lists, so it doesn't have to
> go to the whole committee.  Thanks.
I believe the default inclusion of everyone is a good idea, although creating
a separate mailing list might be appropriate if some mpi-comm members wish to
"unsubscribe".  In the meantime, I will add one brief opinion:

I felt that the discussions of contexts in the topology subgroup were quite
sufficient, and it would probably be better to have the single subgroup which
covers both groups and contexts, so that both will appear in the standard in
a style which does not make them conflict with each other, and/or to avoid a
proposal where groups and contexts would be totally redundant.

I definitely agree that it is an important topic, and that the discussions
last week in Dallas were far away from getting a proposal for groups and
contexts that would be unanimously acceptable, so much work remains to be done.
From owner-mpi-comm@CS.UTK.EDU  Fri Jan 15 17:01:57 1993
Received: from CS.UTK.EDU by surfer.EPM.ORNL.GOV (5.61/1.34)
	id AA19329; Fri, 15 Jan 93 17:01:57 -0500
Received: from localhost by CS.UTK.EDU with SMTP (5.61++/2.8s-UTK)
	id AA21190; Fri, 15 Jan 93 17:00:57 -0500
X-Resent-To: mpi-comm@CS.UTK.EDU ; Fri, 15 Jan 1993 17:00:56 EST
Errors-To: owner-mpi-comm@CS.UTK.EDU
Received: from fslg8.fsl.noaa.gov by CS.UTK.EDU with SMTP (5.61++/2.8s-UTK)
	id AA21182; Fri, 15 Jan 93 17:00:54 -0500
Received: by fslg8.fsl.noaa.gov (5.57/Ultrix3.0-C)
	id AA20492; Fri, 15 Jan 93 22:00:50 GMT
Received: by macaw.fsl.noaa.gov (4.1/SMI-4.1)
	id AA14823; Fri, 15 Jan 93 14:59:49 MST
Date: Fri, 15 Jan 93 14:59:49 MST
From: hender@macaw.fsl.noaa.gov (Tom Henderson)
Message-Id: <9301152159.AA14823@macaw.fsl.noaa.gov>
To: mpi-comm@cs.utk.edu
Subject: Re: Communication contexts


> | 
> | On the topic of communication contexts I think (at least) 4 approaches have
> | been proposed.
> | 	1) Implicit communication contexts as in MPI1 controlled by push/pop.
> | 	2) Explicit registration as in Zipcode
> | 	3) Explicit communication contexts should be merged with explicit
> |            group contexts. Since groups cannot communicate with each other
> | 	   a new communication context can be created by creating a new group 
> | 	   with the same members as the current group.
> | 	4) Chuck Simmons of Oracle has suggested that communication contexts
> | 	   are really a particular type of thread, and so can be handled
> |            using existing threads packages.
> | If you have any ideas, or are strongly for or against any of the above
> | approaches let mpi-comm know so we can initiate a discussion of this topic.
> 
> I think that 1) contradicts our genral agreement to avoid state as much as
> possible.  4) is a problem on systems that don't support threads, and we have
> more-or-less agreed to be consistent with thread packages but not depend upon
> them.  3) should be discussed along with the converse: that contexts rather
> than groups should be the primary concept and groups defined in terms of
> contexts.
> 
> David, perhaps you could create a mailing list on which this discussion can
> take place, parallel to the subcommittee mailing lists, so it doesn't have to
> go to the whole committee.  Thanks.
> 
> Rusty

I'm not sure, but I believe that Zipcode uses push/pop to control contexts 
(Tony, please correct me if I'm wrong).  I'd like to add a 5th approach, 
basically the one proposed by Paul Pierce:  

5)  Contexts are used exclusively to insure that message collisions will not 
    occur if independently developed sub-programs are combined.  Contexts and 
    groups are orthogonal.  Contexts and threads are orthogonal.  Each message 
    has an associated context and tag.  Message context is managed by library 
    routines and is completely out of a user's control.  Message tag is 
    selected by the user.  

    The method of managing message contexts is a separate issue (assuming we 
    want contexts).  Existing proposals are:  

    5a)  Stack-based management (objected to due to hidden states).  
    5b)  Explicit registration with user-defined "names" (probably requires 
         some communication).  
    5c)  Explicit registration by a central authority ("dollar bill" 
         registration mentioned by Jim Cownie.)

There is enough confusion about contexts and groups that we may want to keep 
this discussion open to everyone.  If the concensus is to make a separate 
mailing list, please both of us to it.  

Thanks,

Tom Henderson
hender@fsl.noaa.gov

Leslie Hart
hart@fsl.noaa.gov

From owner-mpi-comm@CS.UTK.EDU  Fri Jan 15 19:06:47 1993
Received: from CS.UTK.EDU by surfer.EPM.ORNL.GOV (5.61/1.34)
	id AA21669; Fri, 15 Jan 93 19:06:47 -0500
Received: from localhost by CS.UTK.EDU with SMTP (5.61++/2.8s-UTK)
	id AA27214; Fri, 15 Jan 93 19:05:42 -0500
X-Resent-To: mpi-comm@CS.UTK.EDU ; Fri, 15 Jan 1993 19:05:41 EST
Errors-To: owner-mpi-comm@CS.UTK.EDU
Received: from Aurora.CS.MsState.Edu by CS.UTK.EDU with SMTP (5.61++/2.8s-UTK)
	id AA27206; Fri, 15 Jan 93 19:05:40 -0500
Received:  by Aurora.CS.MsState.Edu (4.1/6.0s-FWP);
	   id AA00450; Fri, 15 Jan 93 18:05:36 CST
Date: Fri, 15 Jan 93 18:05:36 CST
From: Tony Skjellum <tony@Aurora.CS.MsState.Edu>
Message-Id: <9301160005.AA00450@Aurora.CS.MsState.Edu>
To: hender@macaw.fsl.noaa.gov, mpi-comm@cs.utk.edu
Subject: Re: Communication contexts

In Zipcode, contexts have a group-wide scope.  Groups of processes can
involve more than one context.  For instance, if 10 processes are involved
in several stages of a calculation, each stage might have a different notion
of how to do messaging, but each would use all the processes.  Groups
are important, because they allow control over the scope of global operations.
Contexts are important because they provide guarantees to sub-programs
about restricted scope of messages.  Contexts are added typing-like
information, but which is controlled by the system, not ad hoc by each
user program.  When they determine to start messaging, sub-programs
request a context from a "postmaster general" in Zipcode.  Currently, this
is a group-oriented request (loose synchronization) resulting in each
group member getting the context, and other information.  In a lower-level
system, simpler tactics might be possible.  The way we did it was supposed
to avoid possibility of races or other problems like that.

To build large-scale software, without globalization of the local use of
messaging resources, and to provide scalable algorithms with efficient
global operations, both groups and contexts are needed.  The push/pop
state is an implementation detail of little importance.

-Tony
From owner-mpi-comm@CS.UTK.EDU  Sat Jan 16 02:07:09 1993
Received: from CS.UTK.EDU by surfer.EPM.ORNL.GOV (5.61/1.34)
	id AA26026; Sat, 16 Jan 93 02:07:09 -0500
Received: from localhost by CS.UTK.EDU with SMTP (5.61++/2.8s-UTK)
	id AA11696; Sat, 16 Jan 93 02:06:16 -0500
X-Resent-To: mpi-comm@CS.UTK.EDU ; Sat, 16 Jan 1993 02:06:15 EST
Errors-To: owner-mpi-comm@CS.UTK.EDU
Received: from sol.cs.wmich.edu by CS.UTK.EDU with SMTP (5.61++/2.8s-UTK)
	id AA11688; Sat, 16 Jan 93 02:06:13 -0500
Received: from id.wmich.edu (id.cs.wmich.edu) by cs.wmich.edu (4.1/SMI-4.1)
	id AA06036; Sat, 16 Jan 93 02:01:08 EST
Date: Sat, 16 Jan 93 02:01:08 EST
From: john@cs.wmich.edu (John Kapenga)
Message-Id: <9301160701.AA06036@cs.wmich.edu>
To: mpi-comm@cs.utk.edu

hi;

It was my feeling that the concepts of group and context,
that were clearly understood differently by different people at
the start of the discussions, became somewhat better agreed on as
the pt2pt discussion took place.

Groups - used to define groups of processors for collective communication
	primitives and to allow mapping topologies onto processors. This
	allows a group of processors to be used in isolation to compute
	together.
Contexts - As Tom (and Tony) express below,

> From: hender@macaw.fsl.noaa.gov (Tom Henderson)
> Message-Id: <9301152159.AA14823@macaw.fsl.noaa.gov>
> To: mpi-comm@cs.utk.edu
> Subject: Re: Communication contexts
> Status: R
> 
> I'd like to add a 5th approach, basically the one proposed by Paul Pierce:
> 
> 5)  Contexts are used exclusively to insure that message collisions will not 
>     occur if independently developed sub-programs are combined.  Contexts and 
>     groups are orthogonal.  Contexts and threads are orthogonal.  Each message 
>     has an associated context and tag.  Message context is managed by library 
>     routines and is completely out of a user's control.  Message tag is 
>     selected by the user.  

The only expression stated so far about the difference between tags and
contexts I had gleaned was that context should now be wildcardable (IE no
-1 for All contexts) while a receive ALL or some other MASK variant would
be allowed on tags.

> 
>     The method of managing message contexts is a separate issue (assuming we 
>     want contexts).  Existing proposals are:  
> 
>     5a)  Stack-based management (objected to due to hidden states).  
>     5b)  Explicit registration with user-defined "names" (probably requires 
>          some communication).  
>     5c)  Explicit registration by a central authority ("dollar bill" 
>          registration mentioned by Jim Cownie.)

Add:
      5d) A context is not strictly managed, but use should follow 
          suggested guidelines.

This could allow static allocation of contexts when reasonable, but also
support a context server (as the Postmaster General in Zipcode). Think
of the static contexts or non-registrar provided contexts as reserved
with respect to any registration system. This could be part of the
MPI initialization call, if a registrar is included.

The drawback here of course is the user could violate whatever guidelines
were given.

It seems to me most types of name registration or stack allocation schemes,
that are not too restrictive and allows user code to interact, are likely
to allow errant management of contexts as well.

I expect that allowing 5d) would let strictly controlled context systems
to be built over MPI.

> From: Tony Skjellum <tony@Aurora.CS.MsState.Edu>
> Message-Id: <9301160005.AA00450@Aurora.CS.MsState.Edu>
> To: hender@macaw.fsl.noaa.gov, mpi-comm@cs.utk.edu
> Subject: Re: Communication contexts
> Status: R
> 
> In Zipcode, contexts have a group-wide scope.  Groups of processes can

Of course if we eliminate groups from the pt2pt call then contexts may
not be explicitly limited to groups in MPI. (though a context server
could be asked to provide a context relative to a group).

> involve more than one context.  For instance, if 10 processes are involved
> in several stages of a calculation, each stage might have a different notion
> of how to do messaging, but each would use all the processes.  Groups
> are important, because they allow control over the scope of global operations.
> Contexts are important because they provide guarantees to sub-programs
> about restricted scope of messages.  Contexts are added typing-like
> information, but which is controlled by the system, not ad hoc by each
> user program.  When they determine to start messaging, sub-programs
> request a context from a "postmaster general" in Zipcode.  Currently, this
...
> To build large-scale software, without globalization of the local use of
> messaging resources, and to provide scalable algorithms with efficient
> global operations, both groups and contexts are needed.  The push/pop
> state is an implementation detail of little importance.

I expect the use push/pop for context state would make implementation
in some environments hard and I have some concern about requiring registration
on very large systems. I do think a strictly controlled stack context
system could be built over 5d).

The question about context management relates to how high a level MPI
should be at. I see it at a low level, that higher level systems can
be built on. That is one reason for keeping context management
"advisory".

> 
> -Tony
> 

I liked the zipcode documentation. I think it would be a good idea to
make it available on netlib.

john
From owner-mpi-comm@CS.UTK.EDU  Sun Jan 17 11:46:39 1993
Received: from CS.UTK.EDU by surfer.EPM.ORNL.GOV (5.61/1.34)
	id AA04093; Sun, 17 Jan 93 11:46:39 -0500
Received: from localhost by CS.UTK.EDU with SMTP (5.61++/2.8s-UTK)
	id AA09441; Sun, 17 Jan 93 11:43:57 -0500
X-Resent-To: mpi-comm@CS.UTK.EDU ; Sun, 17 Jan 1993 11:43:56 EST
Errors-To: owner-mpi-comm@CS.UTK.EDU
Received: from sol.cs.wmich.edu by CS.UTK.EDU with SMTP (5.61++/2.8s-UTK)
	id AA09433; Sun, 17 Jan 93 11:43:55 -0500
Received: from id.wmich.edu (id.cs.wmich.edu) by cs.wmich.edu (4.1/SMI-4.1)
	id AA08023; Sun, 17 Jan 93 11:38:43 EST
Date: Sun, 17 Jan 93 11:38:43 EST
From: john@cs.wmich.edu (John Kapenga)
Message-Id: <9301171638.AA08023@cs.wmich.edu>
To: mpi-comm@cs.utk.edu

Although the question of IO specification in the MPI-1 has been
raised before, I think it still needs to be addressed.  Omission
of any IO requirements means no program can be portable. If IO
specifications are not included the introduction should make a
strong case for the reasons. 

Any attempt to specify high level parallel IO at this point in time
seems premature. Perhaps there can be a middle ground. We could
specify low level IO, compatible with ANSI/ISO/POSIX standards
and perhaps allow an inquire function to test for its presence.

I will suggest every process should have access to Level-1 IO,
given in the following list, which works for c and c++.
--------------------------------------------------------------------
Level-1 Input and Output
A process should have access to:
1)  open/close/flush read/write lseek
2)  readv/writev
3)  fcntl dup dup2 ioctl
4)  fopen/fclose/fflush scanf/printf fscanf/fprintf sscanf/sprintf
5)  varargs  vscanf/vprintf vfscanf/vfprintf vsscanf/vsprintf
Behavior of these functions is to match that in current standards
(specific standard to be chosen).
--------------------------------------------------------------------

This could be loosened to only require defined behavior when
access is by a single process.

A Like Level-1 IO can be specified for Fortran-77 as well.

This type of facility is provided in many vendor environments
and several portable environments as well.

A prototype version of the Level-1 IO could be built using gnu
sprintf/sscanf, MPI-1 message passing and the assumption that
some process can do IO.

--------------------------------------------------------------------
Level-2 Input and Output
A case can be made for Level-2 Input and Output as well. This
would be group IO, no claim would be made for efficiency, only
that the behavior was defined and would not overload the
communication network. All processes in a group would execute
the same IO calls as in level-1 and the joint behavior would
be defined. To avoid state a modified name for each function
could be used. A generic level-2 IO could be built on level-1
and the rest of MPI-1.

--------------------------------------------------------------------
I propose we include a Level-1 specification and I think we should
consider Level-2 as well.

I am willing to draft a Level-1 suggestion and a Level-2 suggestion.

I'm not sure which mailing list to put this on, but I think the
issue needs to be addressed quickly (even if the decision remains
to ignore IO).

john
From owner-mpi-comm@CS.UTK.EDU  Mon Jan 18 09:30:23 1993
Received: from CS.UTK.EDU by surfer.EPM.ORNL.GOV (5.61/1.34)
	id AA14975; Mon, 18 Jan 93 09:30:23 -0500
Received: from localhost by CS.UTK.EDU with SMTP (5.61++/2.8s-UTK)
	id AA16251; Mon, 18 Jan 93 09:29:26 -0500
X-Resent-To: mpi-comm@CS.UTK.EDU ; Mon, 18 Jan 1993 09:29:25 EST
Errors-To: owner-mpi-comm@CS.UTK.EDU
Received: from rios2.EPM.ORNL.GOV by CS.UTK.EDU with SMTP (5.61++/2.8s-UTK)
	id AA16243; Mon, 18 Jan 93 09:29:24 -0500
Received: by rios2.epm.ornl.gov (AIX 3.2/UCB 5.64/4.03)
          id AA12246; Mon, 18 Jan 1993 09:29:23 -0500
Date: Mon, 18 Jan 1993 09:29:23 -0500
From: walker@rios2.epm.ornl.gov (David Walker)
Message-Id: <9301181429.AA12246@rios2.epm.ornl.gov>
To: mpi-comm@cs.utk.edu
Subject: MPI news


1) NEW SUBCOMMITTEE
	A new subcommittee on profiling has been set up. It is chaired by
	Jim Cownie of Meiko, and you can send email to it at 
	mpi-profile@cs.utk.edu. Please let me know if you want to join
2) NEWCOMERS FILE
	If you are a newcomer to the MPI forum or want general information
	send the message
		send mpi-newcomers from mpi
	to netlib@ornl.gov
3) REVISED VERSION OF MPI1 TECH REPORT
	A revised version of the MPI1 paper by Dongarra, Hempel, Hey , and
	Walker is available from netlib. This is basically the original
	document with some unnecessary and inappropriate routines removed.
	The PostScript file can be obtained by sending the message
		send mpi1.ps from mpi
	to netlib@ornl.gov
4) NEXT MPI MEETING
	Here are some details on the MPI meeting which is set for
	February 17th-19th 1993 in Dallas.

	The meeting site will be the:

	 Bristol Suites
	 7800 Alpha Road
	 Dallas, TX
	 214-233-7600

	The room rate is $89.00. When making a reservation tell them you are
	with the MPI meeting.

	TBS Shuttle Service will be providing complimentary shuttle service to
	and from the airports.  If you fly into DFW, use their courtesy 
	telephone and dial 03.  If you fly into Love Field, you'll have to use 
	a pay phone. They can be reached at 817-267-5150. Upon boarding the 
	shuttle, refer to the MPI meeting.

	The registration fee for the meeting will be $75.
	Please make checks and POs payable to University of Tennessee.
	We will collect this at the meeting.
	The registration fee will go for coffee breaks, meeting rooms,
	AV and printer rentals.

	We should plan to start at 1:00 pm February 17th and finishing about
	noon on February 19th.

	The format of the meeting is:

	Wednesday, February 17
	1:00 pm to 8:00 pm
	point to point subcommittee meeting
	5:00 pm to 6:00 pm--On our own for dinner.
	after dinner:
	other subcommittees meet

	Thursday, Febrauary 18
	8:00 am to 12:00 pm
	Collective communication subcommittee meeting
	1:00 pm to 6:00 pm
	Subcommittee reports presented to the main group
	6:00 pm to 8:00 pm--
	The group dinner somewhere in the area. The hotel will provide round 
	trip van transportation.

	Friday, Febraury 19
	8:00 am to 12:00 pm
	Subcommittee reports presented to the main group

	For future planning here is a tentative list of dates, roughly 6 weeks 
	apart, for the series of meetings:

	   March 31-April 2
	   May 19-21
	   June 30-July2
From owner-mpi-comm@CS.UTK.EDU  Mon Jan 18 14:20:28 1993
Received: from CS.UTK.EDU by surfer.EPM.ORNL.GOV (5.61/1.34)
	id AA21493; Mon, 18 Jan 93 14:20:28 -0500
Received: from localhost by CS.UTK.EDU with SMTP (5.61++/2.8s-UTK)
	id AA27089; Mon, 18 Jan 93 14:19:01 -0500
X-Resent-To: mpi-comm@CS.UTK.EDU ; Mon, 18 Jan 1993 14:19:00 EST
Errors-To: owner-mpi-comm@CS.UTK.EDU
Received: from rios2.EPM.ORNL.GOV by CS.UTK.EDU with SMTP (5.61++/2.8s-UTK)
	id AA27075; Mon, 18 Jan 93 14:18:59 -0500
Received: by rios2.epm.ornl.gov (AIX 3.2/UCB 5.64/4.03)
          id AA15953; Mon, 18 Jan 1993 14:18:58 -0500
Date: Mon, 18 Jan 1993 14:18:58 -0500
From: walker@rios2.epm.ornl.gov (David Walker)
Message-Id: <9301181918.AA15953@rios2.epm.ornl.gov>
To: mpi-comm@cs.utk.edu
Subject: Contexts group


A new subcommittee and associated email group has been set up to responsible for
MPI communication contexts. The current group membership is as follows:
		tony@cs.msstate.edu
		dongarra@cs.utk.edu
		lusk@mcs.anl.gov
		weeks@convex.com
		hender@fsl.noaa.gov
		john@cs.wmich.edu
		csimmons@us.oracle.com
		walker@msr.epm.ornl.gov
If you would to join (or leave) this subcommittee please send email to me.
You can send email to the group at mpi-context@cs.utk.edu. You can get the
archived email for this group by sending the following message:
	send mpi-context from mpi
to netlib@ornl.gov

Regards,
David

From owner-mpi-comm@CS.UTK.EDU  Tue Jan 19 12:29:45 1993
Received: from CS.UTK.EDU by surfer.EPM.ORNL.GOV (5.61/1.34)
	id AA19476; Tue, 19 Jan 93 12:29:45 -0500
Received: from localhost by CS.UTK.EDU with SMTP (5.61++/2.8s-UTK)
	id AA24138; Tue, 19 Jan 93 12:28:28 -0500
X-Resent-To: mpi-comm@CS.UTK.EDU ; Tue, 19 Jan 1993 12:28:27 EST
Errors-To: owner-mpi-comm@CS.UTK.EDU
Received: from fslg8.fsl.noaa.gov by CS.UTK.EDU with SMTP (5.61++/2.8s-UTK)
	id AA24130; Tue, 19 Jan 93 12:28:25 -0500
Received: by fslg8.fsl.noaa.gov (5.57/Ultrix3.0-C)
	id AA26202; Tue, 19 Jan 93 17:28:13 GMT
Received: by nipmuc.fsl.noaa.gov (4.1/SMI-4.1)
	id AA02004; Tue, 19 Jan 93 10:30:14 MST
Date: Tue, 19 Jan 93 10:30:14 MST
From: hart@nipmuc.fsl.noaa.gov (Leslie Hart)
Message-Id: <9301191730.AA02004@nipmuc.fsl.noaa.gov>
To: mpi-comm@cs.utk.edu, john@cs.wmich.edu

> From: john@cs.wmich.edu (John Kapenga)
> To: mpi-comm@cs.utk.edu
> 
> Although the question of IO specification in the MPI-1 has been
> raised before, I think it still needs to be addressed.  Omission
> of any IO requirements means no program can be portable. If IO
> specifications are not included the introduction should make a
> strong case for the reasons. 

We (Tom Henderson and myself) agree and have also suggested such a proposal.  
Ours had a little more high level stuff, but not much.  We do think you need 
some specification of how basic I/O performs in a parallel environment to 
provide a high level of portability.  We think opportunities for parallelism 
can be expressed as well by routines that are loosely snychronous.

> ...
> Any attempt to specify high level parallel IO at this point in time
> seems premature. Perhaps there can be a middle ground. We could
> specify low level IO, compatible with ANSI/ISO/POSIX standards
> and perhaps allow an inquire function to test for its presence.
> I am willing to draft a Level-1 suggestion and a Level-2 suggestion.
> 
I think that is a good idea and would be interested in cooperating on
such an endeavor.

> I'm not sure which mailing list to put this on, but I think the
> issue needs to be addressed quickly (even if the decision remains
> to ignore IO).

Neither am I, let's hope it's not another subcommittee ;-)
> 
> john
> 
Leslie Hart (hart@fsl.noaa.gov)
From owner-mpi-comm@CS.UTK.EDU  Tue Jan 19 12:32:14 1993
Received: from CS.UTK.EDU by surfer.EPM.ORNL.GOV (5.61/1.34)
	id AA19727; Tue, 19 Jan 93 12:32:14 -0500
Received: from localhost by CS.UTK.EDU with SMTP (5.61++/2.8s-UTK)
	id AA24283; Tue, 19 Jan 93 12:31:27 -0500
X-Resent-To: mpi-comm@CS.UTK.EDU ; Tue, 19 Jan 1993 12:31:25 EST
Errors-To: owner-mpi-comm@CS.UTK.EDU
Received: from fslg8.fsl.noaa.gov by CS.UTK.EDU with SMTP (5.61++/2.8s-UTK)
	id AA24275; Tue, 19 Jan 93 12:31:22 -0500
Received: by fslg8.fsl.noaa.gov (5.57/Ultrix3.0-C)
	id AA26204; Tue, 19 Jan 93 17:28:14 GMT
Received: by nipmuc.fsl.noaa.gov (4.1/SMI-4.1)
	id AA02007; Tue, 19 Jan 93 10:30:15 MST
Date: Tue, 19 Jan 93 10:30:15 MST
From: hart@nipmuc.fsl.noaa.gov (Leslie Hart)
Message-Id: <9301191730.AA02007@nipmuc.fsl.noaa.gov>
To: mpi-comm@cs.utk.edu, bernardo@fsl.noaa.gov, hart@fsl.noaa.gov,
        hender@fsl.noaa.gov, csimmons@us.oracle.com
Subject: Re: "Message Capsule" Proposal (long)

> From: Charles Simmons <csimmons@us.oracle.com>
> To: bernardo@fsl.noaa.gov, hart@fsl.noaa.gov, hender@fsl.noaa.gov
> Subject: Re: "Message Capsule" Proposal (long)
> 
> As feedback...
> 
> The message capsule proposal might be a bit high level.  E.g. it
> seems to implement the topmost layer of the ISO 7-layer communications
> model which deals with transmitting data between processes running
> on heterogeneous machines.

I'm not familiar with with the ISO 7-layer approach, but what we were 
proposing was a place for each local process (or thread) to store information
about one or more messages.  Other words for capsule might be "handle" or
"envelop".

> 
> "
> 6.1  Advantages
> 
>   - The number of separate send and receive routines is greatly reduced 
>     without sacrificing functionality.  
>   - A user who is used to "common practice" can use the simplified 
>     versions of the routines.  
>   - A user who wants more flexibility only needs to learn about the features 
>     required for his/her specific application.  (For example, if I only need 
>     contiguous messages, then I don't need to know anything about strided data 
>     items.  If the receiving process always knows the data description of 
>     received messages, then I don't need to know about the probe and "info" 
>     routines.)  
>   - "Hidden states" are removed so multi-threaded applications won't get 
>     confused.  
>   - Encapsulation of features in message capsules allows new features to be 
>     added later without modifying syntax of existing routines.  A new feature 
>     would require addition of one or more new routines to modify and examine 
>     message capsules.  
> "
> 
> While the number of separate send and receive routines is reduced,
> the number of other routines are correspondingly increased (e.g. attach
> and info routines).

The increase in routines is not combinatorial, but rather additive.  For 
three new modes each of which have two possible settings, there is a 
maximum of six (6) new routines (ok, maybe 12 if there are other inquiry
functions).  In another approach the number of routines would be *mulitplied* 
by two for each new mode (i.e. multiplied by 8).

> 
> Even in the MPI approach, users can limit themselves to simple versions
> of various rotuines.

Agreed, but I don't think the document has been taken to heart as a 
syntactical or semantical starting point.

> 
> I don't see how capsules keep multi-threaded applications from
> getting confused.  If you have two threads in a receiver that are
> each waiting for messages that look pretty much the same to the OS
> or compiler or library code, it would appear to be fairly easy to
> give the messages to the wrong threads.  The sender really needs
> to attach a thread identifier to a message under certain circumstances.
> 

This responds to some issues that hidden state cause with multithreading.
Such as what does the last message mean?  We don't claim that it deals with
which thread should be a target in a send.  It just removes confusion if you
probe and then wish to receive the message that you probed about.

> 
> [There was a brief thought I had that this proposal reminded me of...
> For certain types of applications, it would be possible for the sender
> to know the layout of data in a receiver's address space.  In an RPC
> application, the receiver could transmit a description of the layout
> to the sender.  In an SPMD application, the sender might just know without
> being told.  This would allow the sender to prepend the layout description
> to her message, and would allow the receiving OS to splatter received data
> directly into user address space.]
> 
> G'luck, Chuck

Thanks for your input, we wanted to start a discussion about these issues.
(BTW, your response was directly to us, so we included it in its entirety to
mpi-comm).

Leslie Hart           Tom Henderson           Bernardo Rodriguez
hart@fsl.noaa.gov     hender@fsl.noaa.gov     bernardo@fsl.noaa.gov
From owner-mpi-comm@CS.UTK.EDU  Tue Jan 26 16:04:52 1993
Received: from CS.UTK.EDU by surfer.EPM.ORNL.GOV (5.61/1.34)
	id AA21467; Tue, 26 Jan 93 16:04:52 -0500
Received: from localhost by CS.UTK.EDU with SMTP (5.61++/2.8s-UTK)
	id AA20893; Tue, 26 Jan 93 16:03:52 -0500
X-Resent-To: mpi-comm@CS.UTK.EDU ; Tue, 26 Jan 1993 16:03:51 EST
Errors-To: owner-mpi-comm@CS.UTK.EDU
Received: from enet-gw.pa.dec.com by CS.UTK.EDU with SMTP (5.61++/2.8s-UTK)
	id AA20885; Tue, 26 Jan 93 16:03:47 -0500
Received: by enet-gw.pa.dec.com; id AA27890; Tue, 26 Jan 93 13:03:06 -0800
Message-Id: <9301262103.AA27890@enet-gw.pa.dec.com>
Received: from rdvax.enet; by decwrl.enet; Tue, 26 Jan 93 13:03:45 PST
Date: Tue, 26 Jan 93 13:03:45 PST
From: MPS ENGINEERING 223-4656 <benson@rdvax.enet.dec.com>
To: mpi-comm@cs.utk.edu
Cc: benson@rdvax.enet.dec.com
Apparently-To: mpi-comm@cs.utk.edu
Subject: POSIX 1003.4 message queues considered ?


Has anyone involved in the MPI effort looked into POSIX 1003.4 (Realtime)
message queues ?

-Ed
From owner-mpi-comm@CS.UTK.EDU  Wed Jan 27 12:03:40 1993
Received: from CS.UTK.EDU by surfer.EPM.ORNL.GOV (5.61/1.34)
	id AA08441; Wed, 27 Jan 93 12:03:40 -0500
Received: from localhost by CS.UTK.EDU with SMTP (5.61++/2.8s-UTK)
	id AA09490; Wed, 27 Jan 93 12:02:33 -0500
X-Resent-To: mpi-comm@CS.UTK.EDU ; Wed, 27 Jan 1993 12:02:31 EST
Errors-To: owner-mpi-comm@CS.UTK.EDU
Received: from antares.mcs.anl.gov by CS.UTK.EDU with SMTP (5.61++/2.8s-UTK)
	id AA09480; Wed, 27 Jan 93 12:02:24 -0500
Received: from donner.mcs.anl.gov by antares.mcs.anl.gov (4.1/SMI-GAR)
	id AA02128; Wed, 27 Jan 93 11:02:21 CST
Received: by donner.mcs.anl.gov (4.1/GCF-5.8)
	id AA16675; Wed, 27 Jan 93 11:02:16 CST
Message-Id: <9301271702.AA16675@donner.mcs.anl.gov>
To: mpi-comm@cs.utk.edu
Subject: minutes of January MPI meeting
Date: Wed, 27 Jan 93 11:02:15 CST
From: Rusty Lusk <lusk@antares.mcs.anl.gov>


          Minutes of the Message Passing Interface Standard Meeting
			  Dallas, January 6-8, 1993

The MPI Standards Committee met in Dallas on January 6-8, 1993, at the Bristol
Suites Hotel in North Dallas.

This was the third meeting of the MPI committee, but the first following the
format used by the High Performance Fortran Forum.  There were both general
meetings of the committee as a whole and meetings of several of the
subcommittees.  Because interest in the Point-to-Point communications and the
Collective communications was so general, these met as committees of the
whole.

No formal decisions were taken at this meeting, but a number of straw votes
were taken in the subcommittees.  These are included as part of the reports on
the work of the subcommittees.

These minutes were taken by Rusty Lusk (lusk@mcs.anl.gov) with some additions
by Bob Knighten.  Marc Snir's notes on the point-to-point subcommittee
meetings are included here as well.

These minutes are quite long.  If you want to see the important topics you can
search for --- and this will quickly the lead to each topic (and a few other
things.)


January 6
---------

-------------------------------------------------------------------------------
			       General Meeting
-------------------------------------------------------------------------------


The meeting was called to order by Jack Dongarra at 1:30.

Jack Dongarra presented the rules and procedures that had been circulated in
the mailing list.  In general, they say that we intend to operate in very open
fashion, following the example set by the High-Performance Fortran Committee.
He also described the subcommittee structure.  For details, see the mailing
list,

A tentative schedule for future meetings was presented, which was amended on
the last day (see there).

All meetings will be in Dallas at the Bristol Suites.  Steve Otto will
coordinate the production of the document.  He will obtain a set of LaTeX
macros from the HPF Committee and distribute them to the subcommittee heads.

It was suggested by Bob Knighten that the Executive Director arrange for
copies of all pertinent documents be provided at the meetings.  Dennis Weeks,
who is somewhat local (Convex), volunteered to help with the relevant copying.

The attendees were:


Ed Anderson	     Cray Research		eca@cray.com
James Cownie	     Meiko			jim@meiko.co.uk
Jack Dongarra	     UT/ORNL			dongarra@cs.utk.edu
Jim Feeney	     IBM-Endicott		feeneyj@gdlvm6.vnet.ibm.com
Jon Flower	     ParaSoft			jwf@parasoft.com
Daniel Frye	     IBM-Kingston		danielf@kgnvma.vnet.ibm.com
Al Geist	     ORNL			gst@ornl.gov
Ian Glendinning	     Univ. of Southampton	igl@ecs.soton.ac.uk
Adam Greenberg	     TMC			moose@think.com
Bill Gropp	     ANL			gropp@mcs.anl.gov
Robert Harrison	     PNL			rj_harrison@pnl.gov
Leslie Hart	     NOAA/FSL			hart@fsl.noaa.gov
Tom Haupt	     Syracuse U.		haupt@npac.syr.edu
Rolf Hempel	     GMD			hempel@gmd.de
Tom Henderson	     NOAA/FSL			hender@fsl.noaa.gov
C. T. Howard Ho	     IBM Almaden		ho@almaden.ibm.com
Steven Huss-Lederman SRC			lederman@super.org
John Kapenga         Western Michigan Univ.     john@cs.wmich.edu
Bob Knighten	     Intel SSD			knighten@ssd.intel.com
Bob Leary	     SDSC			leary@sdsc.edu
Rik Littlefield	     PNL			rj_littlefield@pnl.gov
Rusty Lusk	     ANL			lusk@mcs.anl.gov
Barney Maccabe       Sandia                     abmacca@cs.sandia.gov
Phil McKinley	     Michigan State		mckinlehy@cps.msu.edu
Chuck Mosher         ARCO			ccm@arco.com
Dan Nessett	     LLNL			nessett@llnl.gov
Steve Otto	     Oregon Graduate Institute   otto@cse.ogi.edu
Paul Pierce	     Intel			prp@ssd.intel.com
Peter Rigsbee	     Cray Research		par@cray.com
Ambuj Singh	     UC Santa Barbara		ambuj@cs.ucsb.edu
Marc Snir            IBM                        snir@watson.ibm.com
Robert G. Voigt	     NSF			rvoigt@nsf.gov
David Walker	     ORNL			walker@msr.epm.ornl.gov
Dennis Weeks	     Convex			weeks@convex.com
Stephen Wheat	     Sandia NL			srwheat@cs.sandia.gov


-------------------------------------------------------------------------------
			 Point-to-point subcommittee
-------------------------------------------------------------------------------

Mark Snir called the meeting to order at 1:40 p.m.  It adjourned at 4:10 p.m.
It resumed the following morning at 9:10 a.m. and adjourned at 4:15 p.m.


Marc Snir began by summarizing the decisions that we have to make:

* which operations?
   send
   receive
   channels?
   sendreceive?
   info arguments
   operations on queues
   probe?

* operation modes
   sync
   async
   local and/or global termination 
   interrupt-driven?

* message types (data types)
   structure of data in core
   buffer packing

* send-receive matching
   type  (We later decided to call this "tag".)
   sender?

* correctness criteria (See Marc Snir's paper in handouts)

* heterogeneous operations

* name space
   how processes are addressed
   flat?
   structured?  implicit/explicit

* error handling

* interaction with threads, interrupt handlers, remote signalling

* special operations for high performance
   ready receiver?

* process startup
   
* syntax/style (The plan is to postpone this for this meeting.)

We will prioritize this list and then go through them one by one.
(The priorities assigned were more or less in the order listed above.)

Two preliminary questions were then discussed:

  A.  Must we worry about multithreaded environments?

      James Cownie pointed out that threads were coming, in almost all new
      systems. Most systems have threads now.  It was proposed that a process,
      which could send and receive messages, should be an address space, so
      that individual threads would not be (MPI-) addressable.

  B.  What about signals?

      Paul Pierce suggested that we discuss signals first: do we want to
      support send/receive from interrupt handlers?


These two questions were then discussed at length.  Dealing with threads
argues against the notion of "last message", since that implies state is
maintained by the system.  There was general agreement that "state" was a `
bad thing, but arguments in favor of state are:

  Sometimes one doesn't want all of the information available after an
    operations, so it shouldn't be returned.
  Having lots of arguments to calls is bad, especially inout arguments.

Ways to avoid state are:

  Structures could be returned
  Return individual arguments
  Return tag to do queries on (but they one needs to free it.)
  Additional out arguments (OK in Fortran 90, but not in C or f77)
  User passes in storage to be used (so he knows the address), and MPI
    provides inquiry functions

[For more details, see Jim Cownie's mail message of January  4, 1993
entitled: Multifarious]

There was a general agreement that system state decreases portability and
manageability, and we should decrease it when we can.  James Cownie said that
We need a reentrant style, and Mark Snir suggested that we try to make all
function calls reentrant.  When queried no one in the group objected to trying
to make all the functions that are introduced in MPI reentrant.
    
Now we began going through the above-mentioned major topics.

Which Operations?
----- ----------

We have send and receive.  How about send-receive (also called shift)?  It can
be efficiently implemented, and buffer can be reused.  There was a discussion
of the "two-body" send-receive (exchange) and the "three-body" version
(ring-shift).  Variations include those in which the send-buffer is required
to be the same as the received- buffer and those in which is is required to be
disjoint from the receive-buffer.

Al Geist: We should focus on *required* operations.  Steve Otto replied that
send-receive *is* a required operation.  Using "exchange" can help avoid
deadlock.

It was agreed that there was no consensus on these issues and it was decided
to defer this to the collective communication subcommittee.


Operation Modes
--------- -----

The next topic that Marc Snir raised for discussion was when do send and
receive return.  Marc described several options:

For send:
  1) return as soon as possible
  2) return when send-buffer is clear
  3) return when the corresponding receive has completed

For receive:
  1) return as soon as possible
  2) return when the receive-buffer is full

"Receive has completed" means "when the user knows".  In other words, when the
sender has returned from send, the receiver has returned from receive.

There was a general discussion about whether 3) was necessary?  dangerous?
Robert Harrison said he believed that 3) was the minimal version that
was truly portable.  Steve Otto pointed out that 3) is CSP-like.  Rusty Lusk
said that 3) would be easier to prove things about than the others.  Adam
Greenberg and Paul Pierce pointed out that neither TMC nor Intel have
implemented an operation depending on the behavior of the receiver.


A straw vote was taken and the vote was 17-3 in favor of having 3) as an
option. 

Marc Snir pointed out that in his original proposal send returns a handle and
the status of the handle is then tested for completion of the send operation,
and asked if this is this desirable.

There was general agreement that something of this sort was desirable, but a
variety of alternatives were mentioned  It was pointed out that sometimes one
wants to wait on multiple outstanding operations.

Al Geist prefers separating "wait" into "sendwait" and receivewait" for code
readability.
      
Bill Gropp suggested that instead of using handles, one could supply a routine
to be called when an operation completes.

James Cownie:  "This gets really hairy in Fortran".

There was a discussion of probing multiple outstanding receives:
If the receives return handles,

   h1 = recv( ... )
   h2 = recv( ... )

wait ( h1 or h2) ?
wait ( h1 and h2 ) is not needed.

Jame Cownie proposed that we supply an operations to *wait* on a vector of
handles, which would return  one of those that have succeeded.  It would
return the handle, not the status.

A straw vote as taken on this proposal, which passed 17 - 0.

So we have:

  status (handle)
  wait   (array of handles)

The send specifies what completion of send means.  Handles need to be freed.

It was pointed out the only the existence of such an operation has been
decided, the semantics are yet unspecified - e.g. issues such as fairness or
what wait returns when several complete are not yet specified.

There was a long discussion of cancellation of send and receive.  It was
observed that there are serious implementation problems because of race
conditions, freeing resources, etc.

A straw poll was taken on including cancel in the initial MPI.  It failed 7-19.

This was the end of the Wednesday afternoon point-to-point meeting.


January 7
---------

The point-to-point subcommittee (now a Committee of the Whole) resumed at
9:15 a.m. on Thursday morning.

Marc Snir opened the meeting and summarized the progress so far:

  3 ways in which send can terminate
  sendreceive postponed
  no cancel of incomplete send operation
  status and wait (successful status accomplishes same as wait)

We did not get to:

  channels (the idea of trying to bind as soon as possible as many parameters
            as possible, so that they can be reused.)
  probe
  readyreceive

Marc noted that channels and readyrecv address similar issues.  Probably want
only one of these.  Do we want either?

Rolf Hempel observed that we don't need channels - can depend on operating
system to cache the connection information when doing synchronous
communication.  Adam Greenberg replied: NO! Want to be able to do this all at
user level without "smart" OS.

Channel creation and use might look like:

  handle = send_init( ... )
  start(handle)
  wait(handle)
  free(handle)

This is an intermediate point between bundled send/receive and full
named channels.  Indeed there are many intermediate points based on
various early bindings.

Is there enough experience to justify a standard?  Bob Knighten observed that
there has been substantial experience with channels on the iWarp system.

There was next a discussion of the ready-receiver semantics proposed by Lusk
and Gropp in the handouts.  Steve Huss-Lederman said that such operations
could make a difference of as much as 25% for matrix multiplication on the
Delta.  Some doubt was expressed about the universality of this optimization.  

Question of use of readyrecv by naive users again.  Cownie mentions
experience again.  Greenberg: facilities for efficiency should not
make it difficult to write correct programs.  Wheat: Don't penalize
users who do understand and can take advantage of efficient procedures.
General back and forth discussion.

Two straw votes were taken:

Ready-receiver operations passed 13 - 10
Channels passed 19 - 2  (Marc Snir will write up a detailed proposal)
  

The next topic discussed was the probe operation.  Do we want such an
operation, and if so, what should be its semantics?

Probing must "lock" the message that it finds, else the information returned
by the probe may be unreliable.  (Consider the multithreaded environment.)
Bill Gropp pointed out that probe is often used to find out the length of a
message so that a buffer of the appropriate size can be allocated.  Marc Snir
pointed out that this is a problem with the November document, that we need to
know the length of a message ahead of time.  Jon Flowers suggested the need
for a blocking probe.

What is needed is to probe and then to receive the message found via the
probe:

  handle = probe(params)
  . . .
  recv(handle)
  release(handle)

Marc Snir pointed out that the handle serves as a lock on the message.
James Cownie pointed out that while we agreed to not have a cancel for a send,
we do need to be able to cancel receives, since an outstanding receive is
permission for the system to write in the user's address space, which is a
permission the user may want to revoke.

A straw vote was taken on the existence of some form of probe, and it passed
25 to 0.


Send-Receive Matching
------------ --------

The next topic is the matching of send and receive.  Currently we have to
discuss matching on:

  tag
  sender
  group id
  context id

We will also need to discuss the name space issue for messages.

Here are three proposals for the predicate that determine whether a message
matches a particular receive:

 1) simple matching on fields
 2) more general, with mask, etc.
 3) user defined function

Adam Greenberg said that at TMC: A user defined function is used by the
system whenever a message is received by a node to decide if it is to actually
be received by the application.  The parameters to the user defined receive
predicate are tag and group.

Issue: If most information is encoded in the tag, then the tag protocol must
be understood by all users involved in writing a particular application.
True, but not a serious problem.  Best to identify small class of specific
matching parameters (e.g. group) and use tag for everything else.

James Cownie pointed out that the matching function, if not too complicated,
can (and is, on many systems) done by special communications processors.
There was further discussion of the difficulties of having the system call
user code for screening messages.  Paul Pierce pointed out that receipt of a
message by the hardware is a crucial point for performance.  

There was general discussion of alternative approaches to getting at least
some of this.  The question of need for this generality was also raised.  TMC
has a user who wants and uses his own predicate function.

Possibilities: (a) select on mask for fields (including a don't care);
(b) simple static logical operations on fields; (c) user defined 

(b) might be  match =  AND (( message(i) = pattern(i) ) OR mask(i))
                      fields

A straw vote was taken on whether to pursue allowing user-defines predicates.
It was decided 26-1 not to allow user-defined functions for this purpose.

(b) deferred until a proposal is available.



Marc Snir summarized that matching by tag is generally agreed on and that this
is not the only item for selection.  After some discussion, matching by sender
was also generally agreed on.  So now, how do we identify a sender?

Rusty Lusk spoke in favor of a flat name space, so that processes could be
addressed independently of group, etc.  There ensued a general discussion of
groups, contexts, and the name space.  It was pointed out that the name space
expected by send could be flat and groups could be implemented by a function
that converted any structured name into a flat integer id.

Other proposals were to to have name=(rank,gid) with the restriction that this
name be usable only within the given group (gid) and the sender must be a
member of this group.  By default the group would be ALL.  Other alternatives
mentioned were name=(rank,ALL)=pid and name=(pid,context).

This led to a general discussion of context and the relation to groups.

Marc Snir pointed out that we could have

pid
pid,context

in which context did not change the meaning of pid.  Paul Pierce said that
tags and contexts should be separated since they need to be handled in
different ways.  Marc Snir pointed out that there should be no "don't care"
on context.  

There was a discussion of servers that can process "any" message.
This also led into discussion of flat name space vs. hierarchical
name space where we would have pid(group, rank) function.  

Can use context to define groups, but there are other uses as well.
Why groups as well as context?  What is the difference between
context and groups?  

Cownie:  Context is just another integer used in the same manner as
tag.  

Not quite - it is reserved, but what is the meaning of "reserved"?

Greenberg was concerned about connecting send/receive behavior with groups.

Snir: Suppose a users wants to have two independently written subroutines that
use the usual rank notation.

Wheat: Similarly want to use rank notation when partitioning machine.

Snir: Both contexts and groups are nice, but do we need both?

Gropp: Problem with mixing two applications both of which use 0-based
indexing will need a larger common name space when they need to communicate.

There was a general discussion of the cost of contexts.  Cownie observed that
context is cheap if only used to distinguish code - obtain a unique context id
for the code by means of the "one-dollar random number generator": each author
obtains a one-dollar bill, copies the serial number, and then burns the bill.
But in general context is not cheaper than groups.

Someone asked about spawning additional processes while program is running?

Various people raised the question: If use name=(pid,context), does context
change the meaning of the pid (i.e. is pid context {or gid or ???} relative.)

There was some discussion of message registration.  Paul Pierce observed that
tag vs. context is only matter of registration.  He wants to divorce tag and
context for safety.  This implies that one cannot use wild card for selecting
on context.

Various people noted difficulties with mixing tag and context.

Adam Greenberg offered: Proposal - always separate tag and context.  Have a
context, NONE, so that pid with context NONE is unmodified, but with other
contexts the pid may be relative.  [NONE, GLOBAL, BASE]

  tag, context
   - must match on context

Several people noted that there are two very different uses of context -
identification of distinct code and identification of a group of processors.
There is state, even distributed state, associated with remapping of
processors with groups.

POSSIBLE FIELDS FOR SEND/RECEIVE:

  tag     context                    id     group
          - no wild card                    - set of processes
          - registration management         - receive only from group
                                            - managed by system

Marc Snir asked whether we could agree on what would be carried with a
message: 

  tag
  context  (like tag, except no wild card; management to be determined)


Two straw votes were taken:
  Having contexts passed unanimously.
  Having the context *not* modify the process id passed unanimously.


Groups
------

Three alternatives:

  no groups  (use send(pid(group, rank), ...) instead)
  group as explicit parameter in operations
  use contexts to implement groups

The basic difference is:  do we want to be able to select on group?

Straw vote:

yes: 10  no:11  on the capability of selecting by group.

(Thursday lunch occurred here)


Message Data Types
------- ---- -----

WHAT IS A BUFFER?

  (Language bindings are going to be important here.)

There are many options to consider:

a) contiguous bytes (non-controversial)  General agreement that 0-length
   messages should be allowed.

b) contiguous buffers of other (implementation specific?) units?

b) stride?  (parameters: base-address, element-length, stride, 
                         number-of-elements)

c) basic data types?

d) arbitrary structures?

e) How will we specify data to be communicated in a heterogeneous environment?

f) iovec structures (array of pointers and lengths, as in un*x iovec for
   reads and writes)

Marc Snir pointed out that one possibility is to have separate pack/unpack
routines and then just send contiguous buffers.  Rusty Lusk pointed out that
this requires a copy that may be unnecessary on certain machines.


Two choices - pack scattered buffer and send OR send scattered
buffer.  If the second, then may need a pack that produces the
descriptor of a scattered buffer to be used by the send scattered
buffer.

Straw poll:  Use IOVEC type send.  Passed 18-1

Basic data types were deferred.

Marc Snir observed that up to this point, a message is a set of bytes in
storage, but now we are about to consider more meanings:

  message = sequence of *values*

Should we use the same calls for homogeneous and heterogeneous calls?  Can
we have a fast homogeneous implementation of the heterogeneous calls?  Bill
Gropp pointed out that the current testbed implementation does this.

SEND vs. SENDCHAR, SENDREAL, . . .
  To be compliant with F77 need to have at least SENDCHAR for
correctness (and this is a real issue, e.g. on VAX.)  Strictly need to
have different for each basic data type (but in practice this is not
an issue.)  But for other than CHARACTER there is also an efficiency
issue.

  1.  F77 conformance
  2.  Special problem of CHARACTER
  3.  Performance
  4.  Heterogeneity (?)

Postpone to language binding discussion.

This led into the issue of the general problem of converting types
between languages and machines!  This in turn led to a discussion of
XDR (and mention of other systems such as NDR, ...)  XDR supports the
basic types (INT, REAL, COMPLEX, CHAR, etc.), array constructors,
pack/unpack routines, etc.

Do we use the same calls for homogeneous and heterogeneous systems?
Can we have a fast implementation of heterogeneous procedures for a
homogeneous system?

What about a "message envelope" that specifies the environmental
aspects of messages (e.g. heterogeneity features such as XDR.)

When we talk about heterogeneity, do we expect MPI libraries from
different vendors on different machines to cooperate?  

Include general SEND as SENDBYTES?

Agreed that do not want SEND in homogeneous to require type
information needed for heterogeneous environment.

There was a discussion of whether we have to pick an interchange format, for
example XDR.  There seemed to be some agreement that we do (as MPI
implementations from different vendors have to be able to communicate with one
another), but no vote was taken.


Error Handling
----- --------

The main issue here is whether an error detected by an MPI routine should
result in the calling of an error-handler or return of a return code.  Other
issues are how much of error handling should be standardized as opposed to
implementation-dependent, and how much user control there should be over
error-handling.

There are two types of error environments - soft (recoverable) and hard
(unrecoverable).  In a soft error environment there is the opportunity for
cleanup on the part of both the "application" and the system, while in the
hard error environment the system will cleanup and terminate the application.


Choices:
  An mpi routine always returns (though it may return with an error code.)
  An mpi routine may call an exception handler

There may be a default exception handler and there could be a user-installable
one as well.

Library writers may want to handle errors differently from how a user program
wants to handle them (or have them handled by the system).

Robert Harrison described the error modes used in TCGMSG and p4:  A process
has a user-settable state that determines whether an error should result in
a (hopefully) graceful takedown of the program or in a error return code.

Paul Pierce described the Intel method which uses two syntactically distinct
classes of functions. For one class an error results in a message being
printed and the process in which the error occurred terminating.  For the other
class an error code is set.

There was some discussion of the problem of maintaining state in a
multithreaded environment.

Two straw votes were taken:
  Do we want a version of MPI that calls an exception handler:  yes: 23 no: 0
  Do we want a version with return codes:  yes: 19  no: 1

Specific discussion of modes or "shadow" routines was deferred.


Correctness Criteria
----------- --------

This concerns defining what is a correct implementation of MPI

An assumption that had to be restated several times during the meeting is that
MPI assumes a reliable underlying communication system, i.e. MPI does NOT
address what happens if that fails.

Two specific topics are order of messages and resource bounds.

There was discussion about whether order preservation is required; that is,
for messages from one process to another, messages are received in the order
they are sent.  Maintaining message ordering is troublesome, but seems
essential for conveniently writing reliable portable programs.  But then comes
the question of what exactly this means, particularly with multithreaded
processes!  What is the effect of probe on the ordering of messages?


Straw vote in favor of requiring order preservation: yes: 23 no: 4

On the issue of correctness with regard to resource exhaustion, Marc Snir
suggested the following example:

		    Process 1      Process 2
		    ---------      ---------
		    send to 2      send to 1
		    recv           recv

What should an implementation be required to do with this program?

On the CM-5 this will always deadlock.  On Intel and Meiko machines this will
"usually" work (but how does one specify exactly when it will work.)  Exchange
is an even nastier case.


------------------------------------------------------------------------------
Summary of both Wednesday and Thursday point-to-point subgroup meetings
by Marc Snir

1. Multithreaded systems and signal handlers.
Should these be of concern to us?

No vote was taken, but the general feeling was that we should try to define
the various communication calls so that they do not rule out the case where
the communicating process is multithreaded.  The implications seems to be that
all calls should be made reentrant, and the communication subsystem is, from
the view-point of the application code, stateless.  (With one with one obvious
exception, namely that due to posted receive or send buffers, and perhaps
additional exceptions having to do with global "modes", like error handling
mode.

2. Small or large library?

No vote taken.  The general feeling is that we should provide many options for
the advanced programmer that wants to optimize code (otherwise, all
"interesting" codes will use non-portable features, but set the syntax so that
the use that uses only the "core" functions need not be burdened by the
availability of advanced options.

3. What functions?

Clearly, SEND and RECEIVE 

General sentiment that a combined send-receive would be nice ("most used
function on CM"), but discussion postponed until we have a proposed
definition: Do we we want an exchange (source=dest), or a 3-body function
(source != dest), or allow for both? do we want send_buffer identical to
receive_buffer, or disjoint from receive_buffer, or allow arbitrary overlap
between the two?  What attributes are shared by sent message and received
message, if at all?

WAIT, STATUS and PROBE functions, and persistent handles are discussed later.

4. What modes?

We want blocking and nonblocking sends and receives (blocking -- returns when
operation terminated; nonblocking -- returns as soon as possible and a
different call is needed to terminate the operation).

We want synchronous and asynchronous modes (Synchronous -- operation
terminated when terminated at all participating nodes.  Asynchronous --
operation terminated when terminated at the calling node; e.g. a send
terminates asynchronously when the sender buffer can be reused.  Please let me
know if you dislike this terminology and prefer something like "local" and
"global".)  The vote went 17-2 toward having a synchronous SEND (completes
when RECEIVE has completed, i.e. when the corresponding WAIT has returned, or
STATUS has returned successfully.)

We did not discuss whether we want all 4 combinations of blocking-nonblocking
and synchronous-asynchronous, or just 3 (blocking synchronous, blocking
asynchronous and nonblocking asynchronous).  We did not discussed explicitly,
but "kind of assumed" that any SEND mode can match any RECEIVE mode.

5.  How does one complete a nonblocking operation?

The SEND and RECEIVE nonblocking operations return a handle that can be used
to query for completion.  WAIT(handle) blocks until operation completed;
STATUS(handle) returns as soon as possible, and returns an indication for
successful completion.  In addition, these operations return information on
completed RECEIVES: tag, message length, etc.  for the received message.  The
information is returned in a structure provided by the caller.  After return
of a WAIT or successful return of a STATUS the operation handle is freed; the
system has no more information on the completed operation, and has freed all
associated resources.

A more complex WAIT is needed, that waits for the completion of one out of
several pending operations.  Proposed syntax is WAIT(array_of_handles) that
returns information on which operation succeeded and its parameters (voted 17
to 0).

No CANCEL operation -- Once a SEND or RECEIVE is posted, it must complete.
(Voted 19 to 7.  Some peoples asked to reconsider at least canceling posted
RECEIVEs, even if posted SENDs must complete).

6. Additional operations

"ready-receive" SEND.  SEND with a promise that a matching RECEIVE is already
posted (A program where such SEND occurs with no preceding matching RECEIVE is
erroneous and, hopefully, the implementation detects this error.)   The
justification is "it exists on some machine" and "it can improve performance by
25% on Delta".  Accepted by 13 against 10.

Persistent handles.  Created by SEND_INIT(params) (resp RECV_INIT(params).  can
now be repeatedly used to send/receive messages with these parameters, and then
explicitly destroyed.  Supported by 19 against 2.

PROBE.  Allows probing for messages available to receive.  Justification -
"provides a mechanism to allocate memory to a message of unknown length,
before it is received".  The proposed mechanism is PROBE(params) that returns
a lock to a matching message if there is a matching message that can be
received.  This message is now locked and can only be received using this
lock.  This was voted 25 to 0.  Some level of uncertainty whether we should
also allow to unlock without receiving (why should one want to do this?)

7.  What is the buffer argument in SENDs and RECEIVEs?

A message is a sequence of values, and as a particular case which is of most
interest for homogeneous systems, and for which the syntax ought be simpler, a
message is a sequence of bytes.  There are various ways of specifying this
sequence of bytes.

a. Contiguous message:  Starting address and length

b. Regular stride message: Starting address, number blocks, length of blocks,
stride.  Voted with no opposition.

c. IOVEC: a list of entries, each of which describes a type a or type b 
message.  Voted 18 against 1.

There was no discussion on a concrete proposal for typed messages, short of
agreement that there should be such.   The standard is not going to propose a
concrete encoding of typed messages, and a concrete mechanism for message
exchange in heterogeneous systems.

8.  Matching of SENDs and RECEIVEs.

A SEND operation associates with a message the following attributes.
a.  Sender id.
b. Tag
c. Context

The idea of associated a group id, too, was rejected 11 to 10.

The RECEIVE criterion is a Boolean predicate on these attributes of the form.
(SENDER_ID = param1) and (TAG = param2) and (CONTEXT = param3).
Don't cares are allowed for sender_id and tag, but not for context.
Sender_id is determined by system, in the obvious manner, and is absolute (not
relative to a group or a context). Tag is under sender control.
Context is under sender control, but a yet to be determined mechanism is used
to allocate valid context values to processes so as to prevent conflicts.
All this was approved with no opposition.  The idea of allowing the user to
provide its own Boolean function as a receive predicate was rejected 26 to 1
(Reason:  "hard to do if the matching is done by a communication coprocessor".)

9.  Error handling

a. We need a version of MPI where errors generate exceptions (user program
halts when an error is detected in an MPI call, or a specific exception
handling mechanism is invoked).  Voted 19 to 1.

b.  we need to provide a version of MPI where calls return error codes, and do
not cause exceptions, whenever possible.  Voted 23 to 0.

10.  Ordering of messages

Messages sent from the same source to the same destination "arrive in the order
they where sent".  Voted 23 to 0.  The exact implications in terms of order in
which RECEIVEs can occur has to be worked out.  It was pointed out that this
condition may be somewhat hard to define in a multithreaded environment.

End of Marc Snir's summary

---------------------------------------------------------------------------
		    Collective Communication Subcommittee
---------------------------------------------------------------------------

The Collective Communication Subcommittee was called to order by Al Geist at
4:30 p.m. on Wednesday.  It continued until 6:40 p.m. when there was a break
for dinner.  The meeting resumed at 8:25 p.m. and finally adjourned at 10:10
p.m.

Al Geist introduced this as the first meeting, since no real discussion
on groups and collective communication took place in Minneapolis.  One
goal of this committee is to maintain consistency with the point-to-point 
operations.  Any discussion of groups necessarily involves this subcommittee.

Collective communication operations can be constructed out of the
point-to-point primitives, but are desired because

  they can be implemented efficiently
  they are convenient for programmers.

The committee then went through the set of collective communication primitives
that had been proposed by Al Geist during the email discussions.

Broadcast:  info = MPI_BCAST(buf,bytes,tag,gid,root)

On return, contents of buf for root is in buf for all processes.  Al Geist
pointed out that the group id here is explicit.  Root has to be a member of
the group.

It was at this point that the committee decided that it would use the word
"tag" for message type from now on to distinguish it from "type", which will
now always mean type of data.

Marc Snir pointed out that for consistency with point-to-point operations,
there should be both local termination (the operation returns when the local
process has done its part) and global termination (the operation returns when
all processes have finished their participation) versions.

There followed a discussion of the fact that the point-to-point committee
seems to be adopting many different versions of send and receive, and that
total compatibility will require many different versions of broadcast.

There was a discussion of the reason for the tag parameter in the
call.  It is needed to disentangle multiple broadcasts occurring at
approximately the same time.  Paul Pierce described how the system can do this
by generating sequence numbers.  Others argued that the tag was useful for the
programmer in any case, particularly for verifying program correctness.


Marc Snir argued that there is a problem (because of the intuition that bcast
provides barrier)

  1            2                3
send(3)	     bcast           rec(don't care)
bcast        send(3)         bcast
   			     rec(don't care)

Note that 3 may receive from 2 before 1, i.e. no barrier.

Al Geist replied that we need barrier, but broadcast is NOT a barrier.

James Cownie initiated a general discussion of whether broadcasts could be
received by general receives.  This would make it simpler to inherit some of
the point-to-point semantics.  Al Geist said that broadcast should be
consistent with the other collective operations, all of which are symmetric.

Paul Pierce suggested we specify collective communication routines in terms of
model P-P implementation. This has consequences in terms of what options can
be supported.

Marc Snir pointed out that one can't actually specify collective communication
in terms of point-to-point operations because they need dynamically-allocated
additional space.

It was decided to postpone a straw vote on whether all processes participating
in a broadcast should do "broadcast" or only the root should "broadcast" and
the others should "receive" because of concern about remaining issues, e.g.
different varieties of recieves.

The discussion of "error code" was deferred until the issue is settled in the
Point-to-point communication subcommittee.


MPI_GATHER:  (see mail archives for details)

It was proposed to have a version in which each participant contributes a
different amount of information (a general "concatenate" function).

Issues raised: How handle the situation where the number of bytes on each
processor is different.  How specify the type of data?  For example one needs
to know the size of the data type for various purposes, e.g. when doing
recursive bisection.


MPI_GLOBAL_OP:  (see archives for definition)

This does not include the data types.  There was a discussion of how the
forwarding processors know where to break buffers if the data type is not
specified.  Paul Pierce suggested that we should separate the case of
user-defined combining operations from the system ones, which could be
optimized.

Robert Harrison suggested that the buffer be specified as (#items, length) at
least for the user-defined operations.  (Tag would be retained) Someone noted
that "bytes" would be different on each processor in the heterogeneous case.


Back to GATHER.  Many agreed that the interface should be changed, but no
proposal was offered.

Straw vote on having separate general concatenation, to go along with the
gather operation:  yes: 18  no: 0


MPI_SYNCH

There was general agreement that "BARRIER" would be a better name.  James
Cownie suggested that a tag argument would be helpful for debugging.

There was also some discussion of failure of such a barrier, e.g. because some
node fails.  It was agreed that this was not a problem peculiar to this
particular function.  One individual nonetheless argued strongly for some kind
of timeout for the barrier.


Groups
------

gid = MPI_MKGRP (list of processes)

There was much discussion of the format of the process list.  As defined MKGRP
defines a group as a subset of a pre-existing group.  One alternative would be
to allow creating a group consisting of processes from a number of other
groups.  (NB Identification of processes is unspecified.  This is a task for
the Point-to-point Communication Subcommittee.)

MKGRP provides an implicit barrier among the processes joining the group.

There are a number of problems about making sure that gid is uniform and known
across the system.  This is an efficiency issue.

Should it be possible to SEND to a (gid,rank) pair?  Marc argued that one
should do Point-to-point communication only within a group, not between
groups.

Note that groups are constant - cannot add or delete members from a
group.  Also group creation is a barrier for the processes that are
part of the group.  This raises the question of how the processes
joining the group know that they are joining.

What is utility of groups? Certainly at present the only commonly used
group is ALL.

MPI_FREEGRP(gid)
MPI_GRPSIZE
MPI_MYRANK

There was a general discussion of how group id's would be generated.  Also a
discussion of the mapping information: How to map back from my_rank and gid to
rank in ALL?  (In order to actually do a SEND.)

-----
At this point the group broke for dinner
-----

The continuation after dinner was an informal general discussion.  There were
some general question about experience from Al Geist to Paul Pierce.

Adam Greenberg expressed interest in discussing channels.  Channels are seen
as an early binding, (Curryification) of various of the SEND/RECV functions
which offer a number of gains in efficiency.

There was a discussion of Fortran language bindings (F77, F90, HPF) of MPI.
It was agreed by those knowledgable in the area that there are no special
issues in regard to HPF.

Steve Wheat discussed the Sandia implementation of channels on the Ncube.
Sounds very similar to iWarp channels except that they are dynamic in
creation.

Jim Cownie noted that global-ops are going to result in non-determinism
in numeric routines.

Jim also elaborated on Meiko's BAD experience with ready_receive function -
lots of user problems.  Commonly user's try it on small problems and it works
and speeds up.  But then on large problems things erratically break and the
user bitches.

Paul Pierce noted that this is essentially Intel's force type and the Intel
experience has not been so bad.  In particular it is harder to use and does
not generally work easily on small problems.

Cownie: In general what to do when a ready_receive fails?  No
reasonable way to raise error.  Response: Use a signal.  Cownie:
GAACK!  This is implementation and not viable on all systems.

John Kapenga listed six collective communication issues that he considers
particularly important.  [Missed the list]

Other desirable collective communication features that were mentioned:
global-exchange; all-to-all communication.

What are criteria for including?  Proposal: Difficulty of implementation;
frequency of use; efficiency gain

John Kapenga asked about 2-D and 3-D mesh operations - e.g. shifts?

Adam Greenberg said this should be left to compilers.  John: No Way!  Adam
argued that the compiler can recognize opportunity to avoid memory copies.
Unless that same facility is available to user the compiler can do much
better.

The group adjourned at 10:10 p.m.

---------------------------------------------------------------------------
			   Topologies Subcommittee
---------------------------------------------------------------------------

The Topologies Subcommittee was called to order by Rolf Hempel at 4:00 on
Wednesday.  It lasted until dinner.

---------------------------------------------------------------------------
			     Other Subcommittees
---------------------------------------------------------------------------

The other subcommittees (Introduction, Formal Semantics, Environmental
Enquiry, Language Binding) met informally after dinner on Wednesday.

---------------------------------------------------------------------------
			Meeting of the Whole Committee
---------------------------------------------------------------------------

Thursday, January 7, 4:30

The Agenda for the rest of the meeting was presented:

  Introduction subgroup report
  Collective-communications subgroup report
  Process Topology subgroup report
  Environmental Inquiry subgroup report
  Formal Language subgroup report
  Language Binding subgroup report
  Profiling (Jim Cownie)
  Dates for future meetings



Report of the Introduction Subcommittee:
------ -- --- ------------ ------------

Jack Dongarra presented the results of the subcommittee meeting that took
place Wednesday night.  This is essentially the draft that has been available
from netlib for the last six weeks.  There was some on-the-fly editing by the
group at large.


The goal of the Message Passing Interface simply stated is to
develop a *de facto* standard for writing message-passing programs.

As such the interface should establishing a practical, portable, efficient,
and flexible standard for message passing.


Goals
-----

  Design an application programming interface (not necessarily for compilers
  or a system implementation library).


  Allow efficient communication: Avoid memory to memory copying and allow
  overlap of computation and communication and offload to communication
  coprocessor, where available.

  Allow (but not mandate) extensions for use in heterogeneous environment.

  Allow convenient C, Fortran 77, Fortran 90, and C++ bindings for interface.

  Provide a reliable communication interface.
    User need not cope with communication failures.
    Such failures are dealt by the underlying communication subsystem.

  Define an interface that is not too different from current practice,
  such as PVM, Express, P4, etc.

  Define an interface that can be quickly implemented on many
  vendor's platforms, with no significant changes in the underlying
  communication and system software.


  The interface should not contain more functions than are really necessary.
(Based on the latest count of send/receive variants, this drew a large laugh
from the crowd.)

  Focus on a proposal that can be agreed upon in 6 months.

Added:  Semantics of the MPI should be programming language independent.

Who Should Use This Standard?
--- ------ --- ---- ---------

  This standard is intended for use by all those who want to write portable
  message-passing programs in Fortran 77 and/or C.


  This includes individual application programmers, developers of software
  designed to run on parallel machines, and creators of higher-level
  programming languages, environments, and tools.


  In order to be attractive to this wide audience, the standard must provide a
  simple, easy-to-use interface for the basic user while not semantically
  precluding the high-performance message-passing operations available on
  advanced machines.


What Platforms Are Targets For Implementation?
---- --------- --- ------- --- ---------------

  The attractiveness of the message-passing paradigm at least partially
  stems from its wide portability.  

  Programs expressed this way can run on distributed-memory multiprocessors,
  networks of workstations, and combinations of all of these.

  In addition, shared-memory implementations are possible.

  The paradigm will not be made obsolete by architectures combining the shared-
  and distributed-memory views, or by increases in network speeds.


  It thus should be both possible and useful to implement this standard on a
  great variety of machines, including those ``machines" consisting of
  collections of other machines, parallel or not, connected by a communication
  network. 

It was agreed that explicit remarks that MPI is intended to be usable with
multithreaded processes and with MIMD (not just SPMD) programs should be added
somewhere.


What Is Included In The Standard?
---- -- -------- -- --- ---------

The standard includes:

  Point-to-point communication in a variety of modes, including modes
  that allow fast communication and heterogeneous communication

  Collective operations

  Process groups

  Communication contexts

  A simple way to create processes for the SPMD model

  Bindings for both Fortran and C

  Support for Process Topologies

In addition

  A model implementation

and

  A formal specification.

will be provided.


It was proposed that explanation and rationale for the standard would also be
provided as would sample programs and a validation suite.  This is getting
very ambitious.

Jim Cownie also wants wrappers available for use by, for example, profiling.
The suggestion is to provide "name shift", e.g. __MPI_SEND, etc. so the
profiler can have MPI_SEND call __MPI_SEND after doing whatever is useful for
profiling.


What Is Not Included In The Standard?
---- -- --- -------- -- --- ---------

The standard does not specify:


  Explicit shared-memory operations
  Operations that require more operating system support than is currently
    standard; for example, interrupt-driven receives, remote execution,
    or active messages
  Program construction tools
  Debugging facilities
  Tracing facilities


Features that are not included can always be offered as extensions by specific
implementations.




Report of the Collective Communication Subcommittee:
------ -- --- ---------- ------------- ------------

Al Geist summarized the meeting that took place Wednesday afternoon (described
above). 

Global functions beyond those discussed by the subcommittee, such as all2all
or total_exchange, await written proposals.

The (whole) committee added that Fortran 90 and HPF would be a good place to
look for more combining functions (other than max, min, sum, etc.)

It was agreed that a way to supply user-supplied functions would be useful.

Issues mentioned include: What is a group?  How are groups formed?  Are group
elements addressable, if so how?  Are groups ordered (e.g. for prefix/suffix
operations)?  Group always an ordered subset of the ALL group?

Partitioning?  Connection with virtual topologies?  This will be
discussed when topology group reports.


Friday, January 8
------  ------- -
Jack Dongarra called the meeting to order at 9:00.

Report of the Process Topologies Subcommittee:
------ -- --- ------- ---------- ------------

Rolf Hempel reported on the meeting held Wednesday afternoon:

Motivation:

  Applications have structures of processes
  Most natural way to address processes
  Processor topology is valuable to user
  Creation of subgroups is a natural way to implement topologies

Draft proposal for MPI functions in support of process topologies (by Rolf
Hempel) is in the handout bundle.  The subcommittee made some changes to the
draft. 

What functions should MPI contain?

  specification of logical process structure
  lookup functions for process id's
  clean interface to other parts of MPI (process groups)

What should it not contain?

  any reference to particular hardware architectures
  algorithms for mapping of processes to processors

If it does this, the user program will be portable, but will contain full
information for processes mapping at the logical level.

Claim:  The use of process topologies is not an obstruction to quick
implementation of MPI, since the first implementation can make random
assignments. 

A process topology is assigned to a process group.  Copying groups can be used
to overlay different topologies on the same processes.  All processes in a
group call the topology definition function.

Inquiry functions provide the translation of logical process location to
process id.

Supported Topologies:

  General graph structure:
    For each process, define the complete set of neighbors for each node.

    In principle this is sufficient as it covers all topologies.  But it is
    not scalable as all processes have knowledge of all others.  we should
    investigate a scalable version.

However, important special cases should be treated explicitly, because regular
structures can be specified in a scalable way easier to implement the mapping
they cover a large number of applications.

A special case:  Cartesian structures
  grids/tori
  hypercube is a special case
  Support for creation of subgroups for regular structures will be useful.

Special treatment for trees?  deferred

User-defined topology definition functions?  deferred
  It will be necessary for the inquiry functions to provide information on the
  hardware topology, so that a user can provide his own mapping function.

Marc Snir: We need to consider consistency of mapping alignments, for example
an octtree for image processing with a grid structure.

Al Geist: What is connection between group and topology.  Recall that a group
is a linear *ordered* array which is a kind of topology.

General discussion of copying topologies and groups Proposal is to have at
most one topology per group so can use group id as name for topology.  This is
reason that there must be a group copy.

David Walker: We need closer coordination between the collective communication
subcommittee and the topology subcommittee, since groups are central to both.


Report of the Environmental Enquiry Subcommittee:
------ -- --- ------------- ------- ------------

Bill Gropp reported that the Environmental Enquiry subcommittee needs to wait
and get a better picture of what MPI will contain.  

Jon Flower again asked for cpu_time.  This was discussed, and we were reminded
that these were more-or-less rejected at the Minneapolis meeting as not being
part of MPI.  Standardization should come from POSIX.

Marc Snir:  Part of the subcommittee's job should be to decide *what* can be
enquired about as well as how it will be done.

There was general discussion about inquiring about both MPI parameters and
implementation parameters.  Also if parameter *setting* as well as enquiry
should be supported.  (Buffer pool sizes, for example).

Jon Flower also asked about system hints.  He suggested it should be possible
to tell the system about implementation specific tuning in a system
independent way.



Report of the Formal Specification Subcommittee:
------ -- --- ------ ------------- ------------

Rusty Lusk reported the committee was without its chairman, Steven Zenith,
but that it viewed its mission as to try to formalize what the other
subcommittees decide on.  It will probably use CSP, for lack of experience
with any other formal specification language.  

Bob Knighten suggested that the subcommittee look into LIS (Language
Independent Specification) that POSIX defined in order to separate semantics
from language bindings.


Report on MPI -1 (minus one)
------ -- ------ -----------

James Cownie presented an MPI anti-specification.  Ya hadda be there, but in
case you weren't or just want to be reminded, here is a transcription of Jim's
slides.  

                          MPI -1  (Jim Cownie)

In the spirit of LPF (Low Performance Fortran)

   *  Bindings ONLY for    Mathematica
   			   Occam
                           ML

   *  No function take arguments or returns result

   *  Point to Pointless communication

   *  1024 different sends
      NO receives

   *  Full support for 0 dimensional topologies

   *  User data in a message limited to 1 byte (of 6 data types)
      BUT 1 KByte of TAG, CONTEXT

   *  Informal semantics - Formal Syntax

   *  All groups are contexts

   *  All contexts are groups

   *  Non blocking wait

   *  Non blocking barrier

   *  All user programs are unsafe & erroneous, they therefore do all
      their work in the exception handler.


---------------------------------------------------------------------------

A Profile/Instrumentation subgroup was formed with Jim Cownie as chairman.

Steve Otto, as general editor, will contact subgroup chairmen to begin
discussion of editing concerns.

Discussion of meeting format.  The following was proposed as a format for
subsequent meetings, based on the experience with this meeting.

Wed. afternoon:   point-to-point
Wed. night:       all subcommittees other than pt-to-pt and collective comm.
Thurs. morning:   collective communication
Thurs. afternoon: subcommittee reports
Fri. afternoon:   subcommittee reports

Meeting Dates:

It was decided to moved the next two meetings up a week from when they were
tentatively scheduled.

The next meeting will be Feb 17-19.
The next one after that will be Mar 31-Apr 2

The currently-scheduled May 19-21 and June 30-July 2 meetings may also be
moved up as well.  Note that July 2 will be a holiday in the United States.

From owner-mpi-comm@CS.UTK.EDU  Wed Feb  3 01:42:10 1993
Received: from CS.UTK.EDU by surfer.EPM.ORNL.GOV (5.61/1.34)
	id AA07543; Wed, 3 Feb 93 01:42:10 -0500
Received: from localhost by CS.UTK.EDU with SMTP (5.61++/2.8s-UTK)
	id AA03537; Wed, 3 Feb 93 01:41:08 -0500
X-Resent-To: mpi-comm@CS.UTK.EDU ; Wed, 3 Feb 1993 01:41:06 EST
Errors-To: owner-mpi-comm@CS.UTK.EDU
Received: from antares.mcs.anl.gov by CS.UTK.EDU with SMTP (5.61++/2.8s-UTK)
	id AA03528; Wed, 3 Feb 93 01:41:05 -0500
Received: from donner.mcs.anl.gov by antares.mcs.anl.gov (4.1/SMI-GAR)
	id AA28816; Wed, 3 Feb 93 00:41:03 CST
Received: by donner.mcs.anl.gov (4.1/GCF-5.8)
	id AA23933; Wed, 3 Feb 93 00:41:00 CST
Message-Id: <9302030641.AA23933@donner.mcs.anl.gov>
To: mpi-comm@cs.utk.edu
Subject: A suggestion for a multi-level MPI
Date: Wed, 03 Feb 93 00:40:59 CST
From: Rusty Lusk <lusk@antares.mcs.anl.gov>


At the last meeting, it became apparent that many people were uncomfortable
with the large number of routines (1024 sends?) that we seemed to be going
towards.  There are good reasons for the standard not to be incomprehensibly
complex.  There are good reasons also for it not to be crippled by lack of
functionality.  Are we stuck?

There are two ways to deal with this problem.  This note is a proposal that we
adopt both of them.

The reason the problem can be solved is that the sets of options that we have
been considering (blocking or not, contiguous buffer or not, heterogeneous
machines or not, etc.) are orthogonal, and one of a large number of possible
send routines can thus be specified simply and without extra parameters.  In
addition, certain subsets of the set of all operations can be identified and
packaged for ease of use.

Here is a suggestion for how to organize the routines and end up with a
powerful, flexible, yet easy-to-use library of point-to-point functions.
(We assume that these will all be renamed to have an MPI prefix, to avoid
name-space pollution)

Level 4 (very restrictive, very simple):

    send(dest,tag,buf,len)
    recv(dest,tag,buf,len)

Both of these block until the operation is locally complete.  The buffer is a
contiguous sequence of bytes. No special protocols or translation for
heterogeneous machines.

This level is enough to express lots of parallel algorithms.  The main reason
we need more is for efficiency and control.  We now add these in steps.

Level 3 (still simple, but allows for overlap of computation and communication
         and better buffer management, and allows heterogeneous machines to
         communicate.) 

    bsend(tag,dest,bufadd,buflen)
    nsend(tag,dest,bufadd,buflen)
    bsendh(tag,dest,bufadd,datatype,numitems)
    nsendh(tag,dest,bufadd,datatype,numitems)
    brecv(tag,dest,bufadd,buflen)
    nrecv(tag,dest,bufadd,buflen)
    brecvh(tag,dest,bufadd,datatype,numitems)
    nrecvh(tag,dest,bufadd,datatype,numitems)

Here the n or b selects block or nonblocking operations, h specifies
translation for heterogeneous machines.  The restrictions (which allow the
parameter lists to be short and the number of routines to be small) are: no
noncontiguous buffers, data in message all the same type, no globally
synchronized, CSP-like send-receive, and no special protocol (like the
ready-receiver protocol discussed at the last meeting).

In order to emphasize the orthogonality, we might organize these routine names
in a diagram like this:

   [n][send][ ]
   [b][recv][h]

That is, one makes a choice in each column.

Level 2 (access to almost all MPI functionality via a large number of
orthogonally named routines):

   [c][n][send][ ][  ]
   [s][b][recv][h][rr]
   [g][s] 

the first column designates the buffer type (contiguous, strided, general
gather/scatter), the second is the termination type (nonblocking, blocking,
synchronized), then send or receive, "h" or not for heterogeneous
communication, "rr" or not for "ready-receiver" protocol.  This is a lot of
routines (3 x 3 x 2 x 2 x 2 = 72) but because of orthogonality it is easy to
understand. 

The only restriction here is that there are no "channels":  the initialization
of a send operation is combined with initiating it.

Level 1 (full MPI functionality, in a small, flexible set of routines)

   handle = init_send(tag,dest)
            mod_send(handle,option,value)
            do_send(handle)
            free_send(handle)

along with the corresponding receive routines.

The idea is that the "init" routines will set up a usable set of defaults for
all the options, specifying only minimal parameters, and then the "mod"
routine can be repeatedly called to specify all the options with regard to 
buffer type, termination type, etc.

The point is that at this level we can offer not only all possible options,
with a small number of routines, and include the "setup" routines proposed by
Marc for increased efficiency, but we also allow room for growth in the
standard through the addition of more values for "option" in the "mod" calls.

So here's how it might look, this time from the bottom up:

Level 1:  full functionality, small number of routines, channel setup

Level 2:  sequences of Level 1 calls of the form

            init...
            mod...
            mod...
            mod...
            do...
      
are given specific names in an organized way.  This promotes ease of use and
also efficiency (fewer calls).

Level 3: several of the Level 2 routines are renamed and promoted to this
level to provide a useful subset of MPI functionality in a small number of
routines, each having the minimal number of parameters.

Level 4:  ultra-simple interface

All four levels would be part of the standard and it would be possible to mix
levels in the same program.

We have not considered carefully yet how this interacts with groups and
contexts, but similar ideas might be useful there, where there are similar
problems in providing both functionality and simplicity.

Comments?

Rusty Lusk and Bill Gropp
From owner-mpi-comm@CS.UTK.EDU  Wed Feb  3 06:16:01 1993
Received: from CS.UTK.EDU by surfer.EPM.ORNL.GOV (5.61/1.34)
	id AA27255; Wed, 3 Feb 93 06:16:01 -0500
Received: from localhost by CS.UTK.EDU with SMTP (5.61++/2.8s-UTK)
	id AA23277; Wed, 3 Feb 93 06:14:47 -0500
X-Resent-To: mpi-comm@CS.UTK.EDU ; Wed, 3 Feb 1993 06:14:46 EST
Errors-To: owner-mpi-comm@CS.UTK.EDU
Received: from gatekeeper.oracle.com by CS.UTK.EDU with SMTP (5.61++/2.8s-UTK)
	id AA23269; Wed, 3 Feb 93 06:14:40 -0500
Received:  from wrpyr.us.oracle.com by gatekeeper.oracle.com (5.59.11/37.7)
	id AA21815; Wed, 3 Feb 93 03:14:37 PST
Received:  by wrpyr.us.oracle.com (5.59.11/37.7)
	id AA15597; Wed, 3 Feb 93 03:17:14 PST
Message-Id: <9302031117.AA15597@wrpyr.us.oracle.com>
Date: Wed, 3 Feb 93 03:17:14 PST
From: "Chuck Simmons <csimmonsa@us.oracle.com>" <csimmonsa@us.oracle.com>
To: mpi-comm@cs.utk.edu
Subject: Re: A suggestion for a multi-level MPI
Reply-To: csimmons@us.oracle.com
Original-To: WRPYR:mpi-comm@cs.utk.edu

In-Reply-To: WRPYR:owner-mpi-comm@CS.UTK.EDU's message of 02-03-93 00:40

Rusty, Bill --

I do view the interface as being layered, but I would organize the layers
differently.  And I have a couple of arguments that I haven't tried out
yet against some of the send/recv routines.

First, it sounds to me like you are suggesting that the 72 routines
be implemented as 72 simple routines that each make a small number of
subroutine calls to very simple routines.  And then the do_send routine
would do a lot.  I guess the do_send routine on a typical machine might
look like:

	/* convert the data into a vector of buffers */
	if (options & MPI_OPT_ONEBUF) {
		iovlen = 1;
		iovp = bufp;
	}
	else if (options & MPI_OPT_STRIDED) {
		/* malloc local buffer, gather data, set up iovlen and iovp */
	}

	/* translate the data */
	if (options & MPI_OPT_HETER) {
		/* malloc new buffer, translate data into new buffer */
	}

	/* send the data non-blocking and unreliable */
	if (options & MPI_OPT_RR) {
		sendrr (...);
	}
	else send (...);

	/* block if so requested */
	if (options & MPI_OPT_BLOCK) {
		block (...);
	}



My view of the layering is:

	basic functionality:
		non-blocking vector send
		non-blocking vector receive

	easy-to-use basic functionality:
		non-blocking single buffer send
		non-blocking single buffer receive

	reliable:
		synchronous vector send
		synchronous vector receive

	easy and reliable:
		synchronous single buffer send
		synchronous single buffer receive

In the above, each of the later listed routines can be implemented
on top of an earlier listed routine.


I would then examine each of the remaining aspects of the functionality:
heterogeneity, ready-receiver, strided messages, and blocking non-synchronous
messages.

For heterogeneity, I would argue that it is wrong to put the datatype
translation filter in the communications channel.  In your model, it
is relatively easy to do things like:

	bsendh (dest, tag, buf, FLOAT, 1);

or even:

	bsendh (dest, tag, buf, ARRAY|FLOAT, nitems);

but what about

	bsendh (dest, tag, buf, rpc_t, 1);

where 'rpc_t' is some user defined data structure?  Thus, this model
lacks generality.  Only certain simple messages can be heterogeneously
sent efficiently through the interface.  A completely different paradigm
must be used if you want to send a structure instead of an array.

Further, consider how the "bsendh (dest, tag, buf, ARRAY|FLOAT, nitems);"
routine is going to be implemented on a typical machine:

	buflen = sizeof (net_float) * nitems;
	sendbuf = (net_float *) malloc (buflen);
	if (!sendbuf) return ENOMEM;

	for (i = 0; i < nitems; i++) {
		sendbuf[i] = float2netfloat (buf[i]);
	}

	bsend (dest, tag, (void *)sendbuf, buflen);
	free (sendbuf);

(In the above, we assume that a "net_float" holds the network normalized
format of a floating point number.)

It would be as efficient to implement the translation routines completely
separate from the communications routines.

But, wait, you say, our machine is not typical and we can implement this
as:

	bsend (dest, tag, &header, sizeof (header));
	for (i = 0; i < nitems; i++) {
		bsend (dest, tag, float2netfloat (buf[i]), sizeof (net_float));
	}

where 'bsend' is assumed to be a machine instruction.

My argument against this is that the gain in efficiency is sufficiently
small that it's not clear its worth the added complexity.  In both
implementations, the cpu time will be dominated by the data conversion.
In the "typical" implementation, there is an additional cost for moving
data between two buffers, but that data movement occurs at the speed of
local memory access which is likely to be much higher than network bandwidth.
Thus, it is much easier for the hardware to DMA the first implementation and
run some other process while that DMA is in progress.  In the second
implementation, the sending process is essentially hogging the cpu for the
full time it takes to transmit each piece of the message.

Obviously, if there exists a standard for network normal formats of datatypes,
and if hardware vendors implement the data translation facilities in hardware,
then we could DMA out the whole message heterogeneously.  But surely there
are other things that we would rather have hardware vendors implementing for
us.


The above is essentially the same argument that I'm going to use for
strided messages.   Strided messages are only efficient if you have
hardware that can DMA the strided vector, and then its not so efficient
that it's obviously worth the effort.


For ready-receiver, I'm going to argue that the communications subsystem
should always assume the receiver is ready and then handle the case where
this isn't true.  If the application has set things up so that this is
true, that application will run efficiently whether or not the sender
specifies that the receiver is ready.  If the application isn't being careful,
it will run slowly in your model, but in my model, it will usually run quickly
since memory is usually availabe in the receiver, and my model will run
as slowly as your model when congestion is present at the receiver.

Implementing the ready-receiver places strong semantics on the sender
and receiver.  The sender has to know whether or not the receiver was
implemented in a fashion that allows the sender to assume that the receiver
is ready.


Finally, let's consider synchronous messages versus blocking messages.
For most applications, you want reliability.  Implementing blocking
non-synchronous messages doesn't help you implement this.  You can't
reuse the buffer being sent until you know that it has been received
at the other side.  So you might as well either send the message synchronously,
or send it non-blocking and go off and do something else while you're
waiting to see if you'll need to retransmit the buffer.

[Hmmm...  I did mention, didn't I, that I was still trying out a couple
of these arguments...]


This reduces the number of interface routines to 8.  I could probably
be convinced that adding 4 more interface routines to support strided
messages doesn't overly complicate the interface.

-- Chuck

*** We use Oracle*Mail running on Oracle V6.2 and an nCUBE2 supercomputer. ***



---- Included Message ----

Received: 02-02-93 22:48                         Sent: 02-03-93 00:40 
From: WRPYR:owner-mpi-comm@CS.UTK.EDU
To: mpi-comm@cs.utk.edu 
Subject: A suggestion for a multi-level MPI
Reply-To: WRPYR:owner-mpi-comm@CS.UTK.EDU
X-Resent-To:  mpi-comm@CS.UTK.EDU ; Wed, 3 Feb 1993 01:41:06 EST
Errors-To:  owner-mpi-comm@CS.UTK.EDU



At the last meeting, it became apparent that many people were uncomfortable
with the large number of routines (1024 sends?) that we seemed to be going
towards.  There are good reasons for the standard not to be incomprehensibly
complex.  There are good reasons also for it not to be crippled by lack of
functionality.  Are we stuck?

There are two ways to deal with this problem.  This note is a proposal that we
adopt both of them.

The reason the problem can be solved is that the sets of options that we have
been considering (blocking or not, contiguous buffer or not, heterogeneous
machines or not, etc.) are orthogonal, and one of a large number of possible
send routines can thus be specified simply and without extra parameters.  In
addition, certain subsets of the set of all operations can be identified and
packaged for ease of use.

Here is a suggestion for how to organize the routines and end up with a
powerful, flexible, yet easy-to-use library of point-to-point functions.
(We assume that these will all be renamed to have an MPI prefix, to avoid
name-space pollution)

Level 4 (very restrictive, very simple):

    send(dest,tag,buf,len)
    recv(dest,tag,buf,len)

Both of these block until the operation is locally complete.  The buffer is a
contiguous sequence of bytes. No special protocols or translation for
heterogeneous machines.

This level is enough to express lots of parallel algorithms.  The main reason
we need more is for efficiency and control.  We now add these in steps.

Level 3 (still simple, but allows for overlap of computation and communication
         and better buffer management, and allows heterogeneous machines to
         communicate.) 

    bsend(tag,dest,bufadd,buflen)
    nsend(tag,dest,bufadd,buflen)
    bsendh(tag,dest,bufadd,datatype,numitems)
    nsendh(tag,dest,bufadd,datatype,numitems)
    brecv(tag,dest,bufadd,buflen)
    nrecv(tag,dest,bufadd,buflen)
    brecvh(tag,dest,bufadd,datatype,numitems)
    nrecvh(tag,dest,bufadd,datatype,numitems)

Here the n or b selects block or nonblocking operations, h specifies
translation for heterogeneous machines.  The restrictions (which allow the
parameter lists to be short and the number of routines to be small) are: no
noncontiguous buffers, data in message all the same type, no globally
synchronized, CSP-like send-receive, and no special protocol (like the
ready-receiver protocol discussed at the last meeting).

In order to emphasize the orthogonality, we might organize these routine names
in a diagram like this:

   [n][send][ ]
   [b][recv][h]

That is, one makes a choice in each column.

Level 2 (access to almost all MPI functionality via a large number of
orthogonally named routines):

   [c][n][send][ ][  ]
   [s][b][recv][h][rr]
   [g][s] 

the first column designates the buffer type (contiguous, strided, general
gather/scatter), the second is the termination type (nonblocking, blocking,
synchronized), then send or receive, "h" or not for heterogeneous
communication, "rr" or not for "ready-receiver" protocol.  This is a lot of
routines (3 x 3 x 2 x 2 x 2 = 72) but because of orthogonality it is easy to
understand. 

The only restriction here is that there are no "channels":  the initialization
of a send operation is combined with initiating it.

Level 1 (full MPI functionality, in a small, flexible set of routines)

   handle = init_send(tag,dest)
            mod_send(handle,option,value)
            do_send(handle)
            free_send(handle)

along with the corresponding receive routines.

The idea is that the "init" routines will set up a usable set of defaults for
all the options, specifying only minimal parameters, and then the "mod"
routine can be repeatedly called to specify all the options with regard to 
buffer type, termination type, etc.

The point is that at this level we can offer not only all possible options,
with a small number of routines, and include the "setup" routines proposed by
Marc for increased efficiency, but we also allow room for growth in the
standard through the addition of more values for "option" in the "mod" calls.

So here's how it might look, this time from the bottom up:

Level 1:  full functionality, small number of routines, channel setup

Level 2:  sequences of Level 1 calls of the form

            init...
            mod...
            mod...
            mod...
            do...
      
are given specific names in an organized way.  This promotes ease of use and
also efficiency (fewer calls).

Level 3: several of the Level 2 routines are renamed and promoted to this
level to provide a useful subset of MPI functionality in a small number of
routines, each having the minimal number of parameters.

Level 4:  ultra-simple interface

All four levels would be part of the standard and it would be possible to mix
levels in the same program.

We have not considered carefully yet how this interacts with groups and
contexts, but similar ideas might be useful there, where there are similar
problems in providing both functionality and simplicity.

Comments?

Rusty Lusk and Bill Gropp

From owner-mpi-comm@CS.UTK.EDU  Wed Feb  3 06:35:54 1993
Received: from CS.UTK.EDU by surfer.EPM.ORNL.GOV (5.61/1.34)
	id AA01865; Wed, 3 Feb 93 06:35:54 -0500
Received: from localhost by CS.UTK.EDU with SMTP (5.61++/2.8s-UTK)
	id AA23802; Wed, 3 Feb 93 06:35:00 -0500
X-Resent-To: mpi-comm@CS.UTK.EDU ; Wed, 3 Feb 1993 06:34:59 EST
Errors-To: owner-mpi-comm@CS.UTK.EDU
Received: from marge.meiko.com by CS.UTK.EDU with SMTP (5.61++/2.8s-UTK)
	id AA23794; Wed, 3 Feb 93 06:34:56 -0500
Received: from hub.meiko.co.uk by marge.meiko.com with SMTP id AA13771
  (5.65c/IDA-1.4.4 for <mpi-comm@cs.utk.edu>); Wed, 3 Feb 1993 06:34:53 -0500
Received: from float.co.uk (float.meiko.co.uk) by hub.meiko.co.uk (4.1/SMI-4.1)
	id AA26850; Wed, 3 Feb 93 11:34:48 GMT
Date: Wed, 3 Feb 93 11:34:48 GMT
From: jim@meiko.co.uk (James Cownie)
Message-Id: <9302031134.AA26850@hub.meiko.co.uk>
Received: by float.co.uk (5.0/SMI-SVR4)
	id AA03425; Wed, 3 Feb 93 11:33:11 GMT
To: lusk@antares.mcs.anl.gov
Cc: mpi-comm@cs.utk.edu
In-Reply-To: Rusty Lusk's message of Wed, 03 Feb 93 00:40:59 CST <9302030641.AA23933@donner.mcs.anl.gov>
Subject: A suggestion for a multi-level MPI
Content-Length: 581

The fundamental approach seems fine to me (though Chuck makes some
good points...)

However there's at least one point to note :-

1) The Fortran binding issue suggests that in the heterogeneous cases
   there should be a  routine for each data type, rather than having the
   data type as an argument.

-- Jim
James Cownie 
Meiko Limited			Meiko Inc.
650 Aztec West			Reservoir Place
Bristol BS12 4SD		1601 Trapelo Road
England				Waltham
				MA 02154

Phone : +44 454 616171		+1 617 890 7676
FAX   : +44 454 618188		+1 617 890 5042
E-Mail: jim@meiko.co.uk   or    jim@meiko.com

From owner-mpi-comm@CS.UTK.EDU  Wed Feb  3 07:27:22 1993
Received: from CS.UTK.EDU by surfer.EPM.ORNL.GOV (5.61/1.34)
	id AA11163; Wed, 3 Feb 93 07:27:22 -0500
Received: from localhost by CS.UTK.EDU with SMTP (5.61++/2.8s-UTK)
	id AA25571; Wed, 3 Feb 93 07:26:12 -0500
X-Resent-To: mpi-comm@CS.UTK.EDU ; Wed, 3 Feb 1993 07:26:11 EST
Errors-To: owner-mpi-comm@CS.UTK.EDU
Received: from ifi.uio.no by CS.UTK.EDU with SMTP (5.61++/2.8s-UTK)
	id AA25557; Wed, 3 Feb 93 07:26:08 -0500
Received: from byflak.ifi.uio.no by ifi.uio.no with SMTP 
	id <AAifi.uio.no02483>; Wed, 3 Feb 1993 13:26:05 +0100
From: "\ystein Gran Larsen" <gran@ifi.uio.no>
Received: by byflak.ifi.uio.no ; Wed, 3 Feb 93 13:26:04 +0100
Date: Wed, 3 Feb 93 13:26:04 +0100
Message-Id: <9302031226.AA26562@byflak.ifi.uio.no>
To: mpi-comm@cs.utk.edu
Subject: data types and heterogeneity


 
Hi,

I have read the minutes from the MPI meeting, January 6-8 1993. 
The section on message data types mentiones the use of XDR as a 
protocol for converting types between languages and machines. 

The standardization of Scalable Coherent Interface (SCI) has lead
to a proposed standard for "Shared-Data Formats Optimized for
Scalable Coherent Interface Processors", P1596.5.
[Working group P1596.5 is chaired by David V. James (dvj@apple.com)]
This proposed standard may be of relevance to the MPI-initiative, 
when it comes to supporting heterogeneous machines.

-{\O}ystein

From owner-mpi-comm@CS.UTK.EDU  Wed Feb  3 11:56:47 1993
Received: from CS.UTK.EDU by surfer.EPM.ORNL.GOV (5.61/1.34)
	id AA17274; Wed, 3 Feb 93 11:56:47 -0500
Received: from localhost by CS.UTK.EDU with SMTP (5.61++/2.8s-UTK)
	id AA07365; Wed, 3 Feb 93 11:54:56 -0500
X-Resent-To: mpi-comm@CS.UTK.EDU ; Wed, 3 Feb 1993 11:54:55 EST
Errors-To: owner-mpi-comm@CS.UTK.EDU
Received: from Aurora.CS.MsState.Edu by CS.UTK.EDU with SMTP (5.61++/2.8s-UTK)
	id AA07357; Wed, 3 Feb 93 11:54:53 -0500
Received:  by Aurora.CS.MsState.Edu (4.1/6.0s-FWP);
	   id AA01169; Wed, 3 Feb 93 10:54:51 CST
Date: Wed, 3 Feb 93 10:54:51 CST
From: Tony Skjellum <tony@Aurora.CS.MsState.Edu>
Message-Id: <9302031654.AA01169@Aurora.CS.MsState.Edu>
To: mpi-comm@cs.utk.edu, gran@ifi.uio.no
Subject: Re: data types and heterogeneity


XDR as currently implemented causes one function call per datum.  This
feature must be changed (loops moved inside fundamental converter
routines) to provide for better performance (less bandwidth impact of
converting data types).  I am eager to see the report mentioned by
Oystein.

- Tony
From owner-mpi-comm@CS.UTK.EDU  Wed Feb  3 13:33:45 1993
Received: from CS.UTK.EDU by surfer.EPM.ORNL.GOV (5.61/1.34)
	id AA19846; Wed, 3 Feb 93 13:33:45 -0500
Received: from localhost by CS.UTK.EDU with SMTP (5.61++/2.8s-UTK)
	id AA12323; Wed, 3 Feb 93 13:31:59 -0500
X-Resent-To: mpi-comm@CS.UTK.EDU ; Wed, 3 Feb 1993 13:31:58 EST
Errors-To: owner-mpi-comm@CS.UTK.EDU
Received: from iliamna.cse.ogi.edu by CS.UTK.EDU with SMTP (5.61++/2.8s-UTK)
	id AA12315; Wed, 3 Feb 93 13:31:56 -0500
Received: by iliamna.cse.ogi.edu (/\==/\ Smail3.1.25.1 #25.15)
	id <m0nJot8-0002wBC@iliamna.cse.ogi.edu>; Wed, 3 Feb 93 10:31 PST
Message-Id: <m0nJot8-0002wBC@iliamna.cse.ogi.edu>
Date: Wed, 3 Feb 93 10:31 PST
From: otto@iliamna.cse.ogi.edu (Steve Otto)
To: mpi-comm@cs.utk.edu
Subject: Mix + Match, NOT



At first look, I definitely like the proposal of Lusk and Gropp.  
It seems to be the right way to set up a hierarchy of the 1024+ routines 
that we are inventing.

One thing that bothers me:  at the last meeting it was said by several
people that one would be allowed to mix+match different kinds of sends and 
recvs to each other. That is, I could do a "cnsend()" and have that
consumed by a "sbrecvhrr()".  I think we are asking for lots of trouble
if the standard states that this is allowed.  If it is allowed, an
implementor has to worry about 72 x 72 = 5184 different types of
behavior for pt-pt communication.

I don't see a strong reason for allowing mix+match, and on the implementation
side it seems to me that there are many reasons for wanting the
restriction that a send of flavor 53 (out of a possible 72) should
be matched by a recv of the same flavor, 53.  It is true that it seems
like many flavors could be mixed, but consider the synchronization
choices.  If we allow mixing, then the implementor of the sbrecv()
routine has to insure that "sensible" behavior results no matter
what send routine was used.  As I understand it, this means the 
implementation cannot be done in an orthogonal manner.  I'm not
even sure we could define "sensible" for all 5184 combinations!

Comments?  Am I missing something?

--Steve Otto

From owner-mpi-comm@CS.UTK.EDU  Wed Feb  3 18:43:47 1993
Received: from CS.UTK.EDU by surfer.EPM.ORNL.GOV (5.61/1.34)
	id AA29539; Wed, 3 Feb 93 18:43:47 -0500
Received: from localhost by CS.UTK.EDU with SMTP (5.61++/2.8s-UTK)
	id AA27997; Wed, 3 Feb 93 18:41:34 -0500
X-Resent-To: mpi-comm@CS.UTK.EDU ; Wed, 3 Feb 1993 18:41:33 EST
Errors-To: owner-mpi-comm@CS.UTK.EDU
Received: from sol.cs.wmich.edu by CS.UTK.EDU with SMTP (5.61++/2.8s-UTK)
	id AA27989; Wed, 3 Feb 93 18:41:32 -0500
Received: from id.wmich.edu by cs.wmich.edu (4.1/SMI-4.1)
	id AA14014; Wed, 3 Feb 93 18:35:11 EST
Date: Wed, 3 Feb 93 18:35:11 EST
From: john@cs.wmich.edu (John Kapenga)
Message-Id: <9302032335.AA14014@cs.wmich.edu>
To: mpi-comm@CS.UTK.EDU
Subject: Re:  A suggestion for a multi-level MPI


James Cownie remarks on needing a seperate send routine for 
each data type in the Fortran Binding.

For both the C and Fortran versions there could be seperate 
calls setting up the Data Addresses (no Data need be moved)
and then a single send could take the value returned by the
Data Address Setup Call. No system call required on the 
Data Setup Call. 

This might require that the array passed to the Data Setup
Call not be modified before the send call is made, to avoid
recopying it.

This also allows later extensions to other Data Addressing
modes, without changing the send/recieve syntax.

This reduces the number of calls by almost a factor of three,
uncouples the data location from the send/recieve syntax and
allows arguement types on all calls to be correct and fixed. 

It does make a bit more processing (trival) and the need for
the user to mamage the Data Setup return value and not modify
the address array (two of its bad points).

john


From owner-mpi-comm@CS.UTK.EDU  Wed Feb  3 23:45:54 1993
Received: from CS.UTK.EDU by surfer.EPM.ORNL.GOV (5.61/1.34)
	id AA02591; Wed, 3 Feb 93 23:45:54 -0500
Received: from localhost by CS.UTK.EDU with SMTP (5.61++/2.8s-UTK)
	id AA09607; Wed, 3 Feb 93 23:43:48 -0500
X-Resent-To: mpi-comm@CS.UTK.EDU ; Wed, 3 Feb 1993 23:43:47 EST
Errors-To: owner-mpi-comm@CS.UTK.EDU
Received: from Aurora.CS.MsState.Edu by CS.UTK.EDU with SMTP (5.61++/2.8s-UTK)
	id AA09599; Wed, 3 Feb 93 23:43:45 -0500
Received:  by Aurora.CS.MsState.Edu (4.1/6.0s-FWP);
	   id AA00850; Wed, 3 Feb 93 22:43:44 CST
Date: Wed, 3 Feb 93 22:43:44 CST
From: Tony Skjellum <tony@Aurora.CS.MsState.Edu>
Message-Id: <9302040443.AA00850@Aurora.CS.MsState.Edu>
To: mpi-comm@cs.utk.edu
Subject: Anonymous ftp site aurora.cs.msstate.edu

A paper of relevance to the MPI project, describing "Zipcode 1.0" is
available by anonymous FTP, in the pub/reports subdirectory:
	zipcode_sep92.ps.Z

The site is aurora.cs.msstate.edu.

- Tony Skjellum
From owner-mpi-comm@CS.UTK.EDU  Thu Feb  4 00:02:32 1993
Received: from CS.UTK.EDU by surfer.EPM.ORNL.GOV (5.61/1.34)
	id AA02797; Thu, 4 Feb 93 00:02:32 -0500
Received: from localhost by CS.UTK.EDU with SMTP (5.61++/2.8s-UTK)
	id AA10374; Thu, 4 Feb 93 00:01:41 -0500
X-Resent-To: mpi-comm@CS.UTK.EDU ; Thu, 4 Feb 1993 00:01:39 EST
Errors-To: owner-mpi-comm@CS.UTK.EDU
Received: from antares.mcs.anl.gov by CS.UTK.EDU with SMTP (5.61++/2.8s-UTK)
	id AA10364; Thu, 4 Feb 93 00:01:38 -0500
Received: from donner.mcs.anl.gov by antares.mcs.anl.gov (4.1/SMI-GAR)
	id AA08517; Wed, 3 Feb 93 23:01:36 CST
Received: by donner.mcs.anl.gov (4.1/GCF-5.8)
	id AA26443; Wed, 3 Feb 93 23:01:34 CST
Message-Id: <9302040501.AA26443@donner.mcs.anl.gov>
To: mpi-comm@cs.utk.edu
Subject: Multiple levels
Date: Wed, 03 Feb 93 23:01:33 CST
From: Rusty Lusk <lusk@antares.mcs.anl.gov>


Chuck --

Thanks for your comments.  They are of two kinds.  The first kind are about
the suggested multiple-level organization of the library.  There I think I
didn't explain some things well enough, and will try to do better here.  The
other kind are about what should be in or out of the library altogether, and
there I can only try to summarize what people talked about in Dallas;  the
things we incorporated are just the things that the straw votes indicated
people wanted in the standard.

| 
| I do view the interface as being layered, but I would organize the layers
| differently.  And I have a couple of arguments that I haven't tried out
| yet against some of the send/recv routines.
| 
| First, it sounds to me like you are suggesting that the 72 routines
| be implemented as 72 simple routines that each make a small number of
| subroutine calls to very simple routines.

This is not at all what we intended to suggest.  We used the word "levels"
rather than "layers".  The upper levels could be *defined* in terms of the
lower ones (That's what makes them upper-level) but the intention is that
they would *not* be implemented as calls to the lower-level routines.  In
fact what we called level 2 (large number of routines) exists partly to
avoid the multiple subroutine calls necessary in level 1 (where there are a
small number of routines.)  In fact, level 2 routines don't need to use the
data structures implied by the get_handle-mod_handle-use_handle-free_handle
at all.  They just have to do what they say they do, as efficiently as
possible. 

| 
| For heterogeneity, I would argue that it is wrong to put the datatype
| translation filter in the communications channel.
|

Our discussions seemed to indicate that people want it there.  The popularity
of systems like PVM, p4, Express, and others that handle this for the user
attests to this.  I think the reason is portability;  people like being able
to move code unchanged from a heterogeneous network to a multicomputer and
back.  The system can (relatively easily) handle all the translations,
including figuring out whether it is necessary at all or not.  Many users
hardly even know about the non-portability of data formats;  they think (in my
opinion rightly) that the communication system should handle that if they want
it to. 


|                                         In your model, it
| is relatively easy to do things like:
|
| 	bsendh (dest, tag, buf, FLOAT, 1);
| or even:
| 	bsendh (dest, tag, buf, ARRAY|FLOAT, nitems);
| but what about
| 	bsendh (dest, tag, buf, rpc_t, 1);
| where 'rpc_t' is some user defined data structure?  Thus, this model
| lacks generality. 

Not quite true, although not entirely false.  In the "draft implementation" of
mpi that you can get from here, we use an iovec-like structure which is a
vector of (addr,datatype,nitems) triples to describe a scattered, mixed type
buffer.  An arbitrary structure can be sent this way, provided the user builds
the structure descriptor (It's too bad compilers don't do this for us.)

| 
| It would be as efficient to implement the translation routines completely
| separate from the communications routines.
| 
....
| 
| The above is essentially the same argument that I'm going to use for
| strided messages.   Strided messages are only efficient if you have
| hardware that can DMA the strided vector, and then its not so efficient
| that it's obviously worth the effort.

Machines do have this kind of hardware, and we can expect to see more of it.
One thing that I will continue to argue in favor of is giving the user access
to as much of the speed the hardware can deliver as possible.

| 
| For ready-receiver, I'm going to argue that the communications subsystem
| should always assume the receiver is ready and then handle the case where
| this isn't true.
|

Some existing machines can perform *significantly* faster if the user can
relieve their system of some buffer-management chores.  If we don't give the
power users access to this efficiency, they simply won't use MPI.  And it will
come to pass that everyone will agree that to get real efficiency, you have to
use the vendor's unique routines.  Or you have to use "MPI with the XXX
extension package".  Portability will be destroyed.  This is a way the MPI
effort could fail.

| 
| Implementing the ready-receiver places strong semantics on the sender
| and receiver.  The sender has to know whether or not the receiver was
| implemented in a fashion that allows the sender to assume that the receiver
| is ready.
| 

Agreed.  The naive user can use what we call the Level 3 or Level 4 routines,
and never read the chapter in the manual that describes "ready-receiver"
semantics and requirements.  The power user can use them to write *portable*
fast code.

| 
| Finally, let's consider synchronous messages versus blocking messages.  For
| most applications, you want reliability.  Implementing blocking
| non-synchronous messages doesn't help you implement this.  You can't reuse
| the buffer being sent until you know that it has been received at the other
| side.  So you might as well either send the message synchronously, or send
| it non-blocking and go off and do something else while you're waiting to see
| if you'll need to retransmit the buffer.
|

Most people want to compute while the message is in transit, and even while
the buffer is being emptied. They don't want this capability taken from them.

| 
| This reduces the number of interface routines to 8.  I could probably
| be convinced that adding 4 more interface routines to support strided
| messages doesn't overly complicate the interface.
| 

The Level 4 routines are only 2.  More routines are needed only for more
efficiency and functionality.  In the last few weeks I have talked to lots of
people about the MPI effort, and they are mainly afraid that we will leave
something important out.  If we don't supply all the functionality and
efficiency that we possibly can, MPI will fail.  The problem is to do so
without making the package too complicated.  Our posting about multiple levels
was merely an attempt to demonstrate that it could be done.

Regards,
Rusty Lusk & Bill Gropp
From owner-mpi-comm@CS.UTK.EDU  Thu Feb  4 01:30:19 1993
Received: from CS.UTK.EDU by surfer.EPM.ORNL.GOV (5.61/1.34)
	id AA04177; Thu, 4 Feb 93 01:30:19 -0500
Received: from localhost by CS.UTK.EDU with SMTP (5.61++/2.8s-UTK)
	id AA13427; Thu, 4 Feb 93 01:29:10 -0500
X-Resent-To: mpi-comm@CS.UTK.EDU ; Thu, 4 Feb 1993 01:29:09 EST
Errors-To: owner-mpi-comm@CS.UTK.EDU
Received: from msr.EPM.ORNL.GOV by CS.UTK.EDU with SMTP (5.61++/2.8s-UTK)
	id AA13419; Thu, 4 Feb 93 01:29:08 -0500
Received: by msr.EPM.ORNL.GOV (5.67/1.34)
	id AA12505; Thu, 4 Feb 93 01:29:05 -0500
Date: Thu, 4 Feb 93 01:29:05 -0500
From: geist@msr.EPM.ORNL.GOV (Al Geist)
Message-Id: <9302040629.AA12505@msr.EPM.ORNL.GOV>
To: mpi-comm@cs.utk.edu
Subject: Re: 5184 bottles of sends on the wall...


Steve Otto proposes that the 72 (or 648 if each data type is separate)
sends be matched to the same type of recv.
While I agree with Steve that we will not be able to define much less
test the 5184 combinations if we allow otherwise,
There are obvious cases where the user would want to mismatch send/recv
For example, she may have to do a blocking send, but can get away with
a non-blocking recv. Not all combinations make sense, but
we can't restrict the user to no mismatches.

Al Geist
From owner-mpi-comm@CS.UTK.EDU  Thu Feb  4 02:10:22 1993
Received: from CS.UTK.EDU by surfer.EPM.ORNL.GOV (5.61/1.34)
	id AA05537; Thu, 4 Feb 93 02:10:22 -0500
Received: from localhost by CS.UTK.EDU with SMTP (5.61++/2.8s-UTK)
	id AA14590; Thu, 4 Feb 93 02:08:44 -0500
X-Resent-To: mpi-comm@CS.UTK.EDU ; Thu, 4 Feb 1993 02:08:43 EST
Errors-To: owner-mpi-comm@CS.UTK.EDU
Received: from msr.EPM.ORNL.GOV by CS.UTK.EDU with SMTP (5.61++/2.8s-UTK)
	id AA14582; Thu, 4 Feb 93 02:08:41 -0500
Received: by msr.EPM.ORNL.GOV (5.67/1.34)
	id AA12583; Thu, 4 Feb 93 02:08:39 -0500
Date: Thu, 4 Feb 93 02:08:39 -0500
From: geist@msr.EPM.ORNL.GOV (Al Geist)
Message-Id: <9302040708.AA12583@msr.EPM.ORNL.GOV>
To: mpi-comm@cs.utk.edu
Subject: Re: Rusty and Bill ride again...


Whoa there Rusty and Bill. Let's not play to fast and loose with the facts.

>Most people want to compute even while the buffer is being emptied...

Actually most people don't want to think or know about  how messages 
are sent they just want it reliable and fast.
Only  high priests are concerned with the pain of non-blocking send.

>If we don't supply all the functionality that we possibly can,
>MPI will fail. The problem is to do so without making the package
>too complicated.

The complication I am seeing in MPI will also make it fail.
72 sends?? Appears to violate several of our goals, like
similar to existing packages.
small set of routines.

>The naive user never has to read the chapter in the manual...

I hope the user doesn't have to make room on his shelves for volumes
of the MPI manual.

Al
From owner-mpi-comm@CS.UTK.EDU  Thu Feb  4 02:41:49 1993
Received: from CS.UTK.EDU by surfer.EPM.ORNL.GOV (5.61/1.34)
	id AA05708; Thu, 4 Feb 93 02:41:49 -0500
Received: from localhost by CS.UTK.EDU with SMTP (5.61++/2.8s-UTK)
	id AA15558; Thu, 4 Feb 93 02:40:34 -0500
X-Resent-To: mpi-comm@CS.UTK.EDU ; Thu, 4 Feb 1993 02:40:32 EST
Errors-To: owner-mpi-comm@CS.UTK.EDU
Received: from gmdzi.gmd.de by CS.UTK.EDU with SMTP (5.61++/2.8s-UTK)
	id AA15544; Thu, 4 Feb 93 02:40:30 -0500
Received: from f1neuman.gmd.de (f1neuman) by gmdzi.gmd.de with SMTP id AA08675
  (5.65c/IDA-1.4.4 for <mpi-comm@cs.utk.edu>); Thu, 4 Feb 1993 08:39:03 +0100
Received: by f1neuman.gmd.de id AA14246; Thu, 4 Feb 1993 08:38:42 +0100
Date: Thu, 4 Feb 1993 08:38:42 +0100
From: Rolf.Hempel@gmd.de
Message-Id: <9302040738.AA14246@f1neuman.gmd.de>
To: mpi-comm@cs.utk.edu
Subject: Re: 5184 bottles of sends on the wall...
Cc: gmap10@f1neuman.gmd.de


I was glad to read Steve's proposal not to allow mismatches between
different types of sends and receives. If we don't follow that line,
we will most likely cause many problems to the implementors of MPI
which we cannot forsee at the moment. Also, the requirement of matching
sends and receives could be used to check the correct behaviour of the
user program in some debugging mode.
  Al's counter-example of course makes sense, but if you have to use
a blocking send, you can get the same by using the non-blocking version
followed directly by the wait-for-completion. I'm looking forward to
seeing an example where you really need the mismatch.

Rolf
From owner-mpi-comm@CS.UTK.EDU  Thu Feb  4 03:16:46 1993
Received: from CS.UTK.EDU by surfer.EPM.ORNL.GOV (5.61/1.34)
	id AA05912; Thu, 4 Feb 93 03:16:46 -0500
Received: from localhost by CS.UTK.EDU with SMTP (5.61++/2.8s-UTK)
	id AA17215; Thu, 4 Feb 93 03:14:56 -0500
X-Resent-To: mpi-comm@CS.UTK.EDU ; Thu, 4 Feb 1993 03:14:53 EST
Errors-To: owner-mpi-comm@CS.UTK.EDU
Received: from sol.cs.wmich.edu by CS.UTK.EDU with SMTP (5.61++/2.8s-UTK)
	id AA17205; Thu, 4 Feb 93 03:14:51 -0500
Received: from id.wmich.edu by cs.wmich.edu (4.1/SMI-4.1)
	id AA15627; Thu, 4 Feb 93 03:08:28 EST
Date: Thu, 4 Feb 93 03:08:28 EST
From: john@cs.wmich.edu (John Kapenga)
Message-Id: <9302040808.AA15627@cs.wmich.edu>
To: mpi-comm@cs.utk.edu
Subject:  Re: 5184 bottles of sends on the wall...


Rolf asks --
>  ...
> followed directly by the wait-for-completion. I'm looking forward to
> seeing an example where you really need the mismatch.
> 
> Rolf

By using the wait_for_completion you never need a blocking send/receive
operation.  The code looks a bit ugly. 

Right now we have to have a "mismatch" because we don't have a
synchronized send/receive pair ;-).
Actually I thought the reason that the synchronized send/recieve
pair was there initially was to help insure correctness in matching
calls, as well as a possible simpler implementation.

john
From owner-mpi-comm@CS.UTK.EDU  Thu Feb  4 07:03:39 1993
Received: from CS.UTK.EDU by surfer.EPM.ORNL.GOV (5.61/1.34)
	id AA07047; Thu, 4 Feb 93 07:03:39 -0500
Received: from localhost by CS.UTK.EDU with SMTP (5.61++/2.8s-UTK)
	id AA01249; Thu, 4 Feb 93 07:02:33 -0500
X-Resent-To: mpi-comm@CS.UTK.EDU ; Thu, 4 Feb 1993 07:02:32 EST
Errors-To: owner-mpi-comm@CS.UTK.EDU
Received: from marge.meiko.com by CS.UTK.EDU with SMTP (5.61++/2.8s-UTK)
	id AA01241; Thu, 4 Feb 93 07:02:28 -0500
Received: from hub.meiko.co.uk by marge.meiko.com with SMTP id AA09794
  (5.65c/IDA-1.4.4 for <mpi-comm@cs.utk.edu>); Thu, 4 Feb 1993 07:02:22 -0500
Received: from float.co.uk (float.meiko.co.uk) by hub.meiko.co.uk (4.1/SMI-4.1)
	id AA02743; Thu, 4 Feb 93 12:02:17 GMT
Date: Thu, 4 Feb 93 12:02:17 GMT
From: jim@meiko.co.uk (James Cownie)
Message-Id: <9302041202.AA02743@hub.meiko.co.uk>
Received: by float.co.uk (5.0/SMI-SVR4)
	id AA03570; Thu, 4 Feb 93 12:00:32 GMT
To: otto@iliamna.cse.ogi.edu
Cc: mpi-comm@cs.utk.edu
In-Reply-To: Steve Otto's message of Wed, 3 Feb 93 10:31 PST <m0nJot8-0002wBC@iliamna.cse.ogi.edu>
Subject: ~ (Mix + Match, NOT)
Content-Length: 2480

The only place where I can see a need for matching of send and receive
formats is in the heterogeneous case. Here I would be happy to insist
that a heterogeneous send be matched to a heterogeneous receive. 

Since I don't want to enforce in MPI the implemntation decision of
whether the data type conversion occurs at sender or receiver I need
the data type information in both places.

I can see NO reason to restrict any other combinations.

Discussion
----------
There are two major areas which cause the many sends

1) layout of data in store. (contiguous, strided, by iovec)

2) synchronisation behaviour (return asap, return when buffer free,
                              return when data received at other end)

Data layout
-----------
Data layout is an issue which is entirely local. Why does it matter to
the receiver how the sender chose to layout her buffer (or the
converse) ?

This information hiding is one of the things which is an advantage of
message passing.

The data is necessarily serialised to some degree over the
communications medium, so where's the problem ? I believe it is
actually HARDER to insist that the buffer sepcifications match at each
end than not to do this. (Certainly I have to pass additional
information with the message if I'm to check this.)

Synchronisation behaviour
-------------------------
Once again this seems to me to be largely to do with local issues of
buffer management. (Though of course my algorithm may need
certain synchronisation behaviour, in which case I must code it using
the correct forms of send and recv at both ends.)

However I can see no reason to INSIST that the same style of send and
receive is used. Indeed there are strong reasons NOT to do so.

Consider (for example) a server with multiple clients. I'd certainly
like to write it like this :--

	Set up lots of non-blocking receives
	
	while (running)
	{
	    wait for a recv
	    service the request
	    get a reply buffer (may need to wait for one)
	    queue a reply
	    requeue the receive buffer
        }

However the clients can simply make requests thus

	blocking send request
	blocking receive reply


Here is an immediate mismatch in the synchronisations.
	

-- Jim
James Cownie 
Meiko Limited			Meiko Inc.
650 Aztec West			Reservoir Place
Bristol BS12 4SD		1601 Trapelo Road
England				Waltham
				MA 02154

Phone : +44 454 616171		+1 617 890 7676
FAX   : +44 454 618188		+1 617 890 5042
E-Mail: jim@meiko.co.uk   or    jim@meiko.com


From owner-mpi-comm@CS.UTK.EDU  Thu Feb  4 09:44:02 1993
Received: from CS.UTK.EDU by surfer.EPM.ORNL.GOV (5.61/1.34)
	id AA11973; Thu, 4 Feb 93 09:44:02 -0500
Received: from localhost by CS.UTK.EDU with SMTP (5.61++/2.8s-UTK)
	id AA07037; Thu, 4 Feb 93 09:42:34 -0500
X-Resent-To: mpi-comm@CS.UTK.EDU ; Thu, 4 Feb 1993 09:42:33 EST
Errors-To: owner-mpi-comm@CS.UTK.EDU
Received: from [132.175.13.2] by CS.UTK.EDU with SMTP (5.61++/2.8s-UTK)
	id AA07029; Thu, 4 Feb 93 09:42:30 -0500
Received: from panther.cs.sandia.gov by cs.sandia.gov (4.1/SMI-4.1)
	id AA12554; Thu, 4 Feb 93 07:42:27 MST
Received: by panther.cs.sandia.gov (Smail3.1.28.1 #1)
	id m0nK7mc-0016ZKC; Thu, 4 Feb 93 07:42 MST
Message-Id: <m0nK7mc-0016ZKC@panther.cs.sandia.gov>
Date: Thu, 4 Feb 93 07:42 MST
From: srwheat@cs.sandia.gov (Stephen R. Wheat)
To: mpi-comm@cs.utk.edu
Subject: Re: Rusty and Bill ride again...

# Whoa there Rusty and Bill. Let's not play to fast and loose with the facts.

# >Most people want to compute even while the buffer is being emptied...

# Actually most people don't want to think or know about  how messages 
# are sent they just want it reliable and fast.
# Only  high priests are concerned with the pain of non-blocking send.

Not so; we have those that are not only concerned about being able
to compute while messages are in transit, but also wanting to assure
that minimal system space is required.  That is, they want to manage
memory much more tightly than a "buffered" system allows.  We have
a lot of applications types that find it very hard to fit an application
into memory and still allocate sufficient message buffers.
By the way, paging is not a viable solution :-).

Stephen
From owner-mpi-comm@CS.UTK.EDU  Thu Feb  4 09:59:26 1993
Received: from CS.UTK.EDU by surfer.EPM.ORNL.GOV (5.61/1.34)
	id AA12166; Thu, 4 Feb 93 09:59:26 -0500
Received: from localhost by CS.UTK.EDU with SMTP (5.61++/2.8s-UTK)
	id AA07696; Thu, 4 Feb 93 09:58:25 -0500
X-Resent-To: mpi-comm@CS.UTK.EDU ; Thu, 4 Feb 1993 09:58:23 EST
Errors-To: owner-mpi-comm@CS.UTK.EDU
Received: from [132.175.13.2] by CS.UTK.EDU with SMTP (5.61++/2.8s-UTK)
	id AA07688; Thu, 4 Feb 93 09:58:22 -0500
Received: from panther.cs.sandia.gov by cs.sandia.gov (4.1/SMI-4.1)
	id AA12746; Thu, 4 Feb 93 07:58:18 MST
Received: by panther.cs.sandia.gov (Smail3.1.28.1 #1)
	id m0nK81y-0016ZKC; Thu, 4 Feb 93 07:58 MST
Message-Id: <m0nK81y-0016ZKC@panther.cs.sandia.gov>
Date: Thu, 4 Feb 93 07:58 MST
From: srwheat@cs.sandia.gov (Stephen R. Wheat)
To: john@cs.wmich.edu, mpi-comm@cs.utk.edu
Subject: Re: 5184 bottles of sends on the wall...

as an implementor of blocked and non-blocked messaging systems, I have not
experienced any "system" problems associated with matching mixed send/receives.
While worrying about the "potential" implementation difficulties, I fear
that we make use of the system so difficult that it won't be used (so would
that make it easy to use?).

Furthermore, as for the theme that seems to prevail concerning features that
only "wizards" would use, if we do not provide wizardly type features, then
the wizards will not use MPI.  Then to whom will the "novice" types refer when
they finally see the light of low-performance codes running in a
high-performance compute environment?

Stephen
From owner-mpi-comm@CS.UTK.EDU  Thu Feb  4 10:28:11 1993
Received: from CS.UTK.EDU by surfer.EPM.ORNL.GOV (5.61/1.34)
	id AA12742; Thu, 4 Feb 93 10:28:11 -0500
Received: from localhost by CS.UTK.EDU with SMTP (5.61++/2.8s-UTK)
	id AA09131; Thu, 4 Feb 93 10:26:01 -0500
X-Resent-To: mpi-comm@CS.UTK.EDU ; Thu, 4 Feb 1993 10:26:00 EST
Errors-To: owner-mpi-comm@CS.UTK.EDU
Received: from Aurora.CS.MsState.Edu by CS.UTK.EDU with SMTP (5.61++/2.8s-UTK)
	id AA09123; Thu, 4 Feb 93 10:25:58 -0500
Received:  by Aurora.CS.MsState.Edu (4.1/6.0s-FWP);
	   id AA01127; Thu, 4 Feb 93 09:25:56 CST
Date: Thu, 4 Feb 93 09:25:56 CST
From: Tony Skjellum <tony@Aurora.CS.MsState.Edu>
Message-Id: <9302041525.AA01127@Aurora.CS.MsState.Edu>
To: mpi-comm@cs.utk.edu, john@cs.wmich.edu
Subject: Re: 5184 bottles of sends on the wall...


Please remember that overlapped send/receive will only make sense on
systems with excess memory bandwidth.  Hence, it might make more sense
to implement a system where this is permitted by the implementor, but
not required.  Otherwise, calculations might slow down instead of
achieving pipelined improvements.  As Al points out, it is only the
heavy-duty guys who try this sort of stuff...

- Tony
From owner-mpi-comm@CS.UTK.EDU  Thu Feb  4 10:30:25 1993
Received: from CS.UTK.EDU by surfer.EPM.ORNL.GOV (5.61/1.34)
	id AA12830; Thu, 4 Feb 93 10:30:25 -0500
Received: from localhost by CS.UTK.EDU with SMTP (5.61++/2.8s-UTK)
	id AA09278; Thu, 4 Feb 93 10:28:57 -0500
X-Resent-To: mpi-comm@CS.UTK.EDU ; Thu, 4 Feb 1993 10:28:56 EST
Errors-To: owner-mpi-comm@CS.UTK.EDU
Received: from sol.cs.wmich.edu by CS.UTK.EDU with SMTP (5.61++/2.8s-UTK)
	id AA09270; Thu, 4 Feb 93 10:28:53 -0500
Received: from id.wmich.edu by cs.wmich.edu (4.1/SMI-4.1)
	id AA16295; Thu, 4 Feb 93 10:22:30 EST
Date: Thu, 4 Feb 93 10:22:30 EST
From: john@cs.wmich.edu (John Kapenga)
Message-Id: <9302041522.AA16295@cs.wmich.edu>
To: mpi-comm@CS.UTK.EDU
Subject: Re: 5184 bottles of sends on the wall...


My initial concept of mixing IO types was that blocking
and non-blocking could be freely mixed, but that synchronized
was special and a synchronized send would only match a synchronized
receive. 

The rationale for dropping the synchronized recieve is OK with me.
I have no problems with the current proposal.

Overlappping communication and computation is the only way to get
good prerformance in many applications. It must be assumed to be
the norm rather than the exception. I would not be able to use
a system that did not support it.

john
From owner-mpi-comm@CS.UTK.EDU  Thu Feb  4 10:46:15 1993
Received: from CS.UTK.EDU by surfer.EPM.ORNL.GOV (5.61/1.34)
	id AA13213; Thu, 4 Feb 93 10:46:15 -0500
Received: from localhost by CS.UTK.EDU with SMTP (5.61++/2.8s-UTK)
	id AA10063; Thu, 4 Feb 93 10:45:12 -0500
X-Resent-To: mpi-comm@CS.UTK.EDU ; Thu, 4 Feb 1993 10:45:11 EST
Errors-To: owner-mpi-comm@CS.UTK.EDU
Received: from marge.meiko.com by CS.UTK.EDU with SMTP (5.61++/2.8s-UTK)
	id AA10042; Thu, 4 Feb 93 10:45:06 -0500
Received: from hub.meiko.co.uk by marge.meiko.com with SMTP id AA12579
  (5.65c/IDA-1.4.4 for <mpi-comm@cs.utk.edu>); Thu, 4 Feb 1993 10:45:01 -0500
Received: from float.co.uk (float.meiko.co.uk) by hub.meiko.co.uk (4.1/SMI-4.1)
	id AA06100; Thu, 4 Feb 93 15:44:56 GMT
Date: Thu, 4 Feb 93 15:44:56 GMT
From: jim@meiko.co.uk (James Cownie)
Message-Id: <9302041544.AA06100@hub.meiko.co.uk>
Received: by float.co.uk (5.0/SMI-SVR4)
	id AA03785; Thu, 4 Feb 93 15:43:15 GMT
To: tony@Aurora.CS.MsState.Edu
Cc: mpi-comm@cs.utk.edu, john@cs.wmich.edu
In-Reply-To: Tony Skjellum's message of Thu, 4 Feb 93 09:25:56 CST <9302041525.AA01127@Aurora.CS.MsState.Edu>
Subject: 5184 bottles of sends on the wall...
Content-Length: 1025

> Please remember that overlapped send/receive will only make sense on
> systems with excess memory bandwidth.  Hence, it might make more sense
> to implement a system where this is permitted by the implementor, but
> not required.  Otherwise, calculations might slow down instead of
> achieving pipelined improvements.  

True, and all the more reason to avoid as many copies as possible.
After all if taking it from the user buffer consumes bandwidth 1, then
the bandwidth cost of a send which needed a copy will be 2+1 = 3. This
can be significant.

(Of course I'm assuming a "fair" memory system here, in which taking
from one port only loses the same from another. I've seen systems
where this wasn't true, and this can change the balance.)

-- Jim
James Cownie 
Meiko Limited			Meiko Inc.
650 Aztec West			Reservoir Place
Bristol BS12 4SD		1601 Trapelo Road
England				Waltham
				MA 02154

Phone : +44 454 616171		+1 617 890 7676
FAX   : +44 454 618188		+1 617 890 5042
E-Mail: jim@meiko.co.uk   or    jim@meiko.com

From owner-mpi-comm@CS.UTK.EDU  Thu Feb  4 15:33:00 1993
Received: from CS.UTK.EDU by surfer.EPM.ORNL.GOV (5.61/1.34)
	id AA19567; Thu, 4 Feb 93 15:33:00 -0500
Received: from localhost by CS.UTK.EDU with SMTP (5.61++/2.8s-UTK)
	id AA25767; Thu, 4 Feb 93 15:30:40 -0500
X-Resent-To: mpi-comm@CS.UTK.EDU ; Thu, 4 Feb 1993 15:30:37 EST
Errors-To: owner-mpi-comm@CS.UTK.EDU
Received: from fslg8.fsl.noaa.gov by CS.UTK.EDU with SMTP (5.61++/2.8s-UTK)
	id AA25752; Thu, 4 Feb 93 15:30:34 -0500
Received: by fslg8.fsl.noaa.gov (5.57/Ultrix3.0-C)
	id AA04724; Thu, 4 Feb 93 20:30:30 GMT
Received: by macaw.fsl.noaa.gov (4.1/SMI-4.1)
	id AA05190; Thu, 4 Feb 93 13:29:24 MST
Date: Thu, 4 Feb 93 13:29:24 MST
From: hender@macaw.fsl.noaa.gov (Tom Henderson)
Message-Id: <9302042029.AA05190@macaw.fsl.noaa.gov>
To: mpi-comm@cs.utk.edu
Subject: Re: A suggestion for a multi-level MPI



I especially like "Level 1" of Rusty and Bill's proposal.  I would like to see 
more detail in this section, like examples of mod_xxx() and do_xxx() 
routines.  I think there will be a good deal of support for Level 1 with all 
the talk that's been going on about handles/invoices/envelopes (of course 
there's that annoying syntax thing...).  

I am concerned about how heterogeneous communications are handled (or avoided) 
in Levels 3 and 4.  I would be a lot more comfortable if ALL send() and recv() 
routines were heterogeneous.  Here's a slight modification to the original 
proposal:  

Level 4 ("novice users"):

    send(dest,tag,bufadd,datatype,numitems)
    recv(dest,tag,bufadd,datatype,numitems)

Level 3 ("dangerous users" [like me :) ]):

    bsend(tag,dest,bufadd,datatype,numitems)
    nsend(tag,dest,bufadd,datatype,numitems)
    brecv(tag,dest,bufadd,datatype,numitems)
    nrecv(tag,dest,bufadd,datatype,numitems)
or
   [n][send]
   [b][recv]
in Bill and Rusty's shorthand.  

Level 2 ("really frightening users"):

   [c][n][send][  ]
   [s][b][recv][rr]
   [g][s] 


Here's the arguments:  

- I don't like the idea of having to tell novice users that they must change 
  all the MPI communication routine calls in their code before their program 
  will run on a heterogeneous system.  I think a lot of novice users will be 
  using heterogeneous workstation networks.  The current proposal forces these 
  folks to learn at least two versions of send() and recv().  

- I don't think there are any significant performance reasons for having 
  separate heterogeneous versions of these calls, as long as we require a 
  receiving process to know what incoming message contents will be (which 
  seems to be consistent with the original proposal).  

- I don't think that the additional "datatype" argument reduces "ease of use" 
  very much.  An incorrect datatype should be no more difficult to debug than 
  an incorrect "bufadd" or "buflen" (and should be easier than a bad "tag" or 
  "dest", especially if deadlock results!).  In FORTRAN77, "numitems" should 
  be easier to code portably than "buflen".  Even in C, there is little 
  difference in complexity between portable calls to heterogeneous and 
  non-heterogeneous versions:  

(non-heterogeneous)
    float mybuf[NUMITEMS];
...
    send(dest, tag, mybuf, NUMITEMS * sizeof(float));

(heterogeneous)
    send(dest, tag, mybuf, MPI_FLOAT, NUMITEMS);


- This gets rid of a whole bunch of send() and recv() variant routines (at 
  least 22).  

- If we really want non-heterogeneous communication, it could be stuck in 
  Level 1 with all the other stuff that's really dangerous for "novices".  
  Another option would be to allow a MPI_BYTE datatype (not sure how this 
  would work in FORTRAN).  This may be useful for library developers.  I think 
  it's a good idea to keep "raw bytes" away from novice users (especially in 
  FORTRAN).  


Tom Henderson
hender@fsl.noaa.gov



From owner-mpi-comm@CS.UTK.EDU  Thu Feb  4 15:49:14 1993
Received: from CS.UTK.EDU by surfer.EPM.ORNL.GOV (5.61/1.34)
	id AA20005; Thu, 4 Feb 93 15:49:14 -0500
Received: from localhost by CS.UTK.EDU with SMTP (5.61++/2.8s-UTK)
	id AA27824; Thu, 4 Feb 93 15:48:00 -0500
X-Resent-To: mpi-comm@CS.UTK.EDU ; Thu, 4 Feb 1993 15:47:58 EST
Errors-To: owner-mpi-comm@CS.UTK.EDU
Received: from Aurora.CS.MsState.Edu by CS.UTK.EDU with SMTP (5.61++/2.8s-UTK)
	id AA27816; Thu, 4 Feb 93 15:47:57 -0500
Received:  by Aurora.CS.MsState.Edu (4.1/6.0s-FWP);
	   id AA01577; Thu, 4 Feb 93 14:47:56 CST
Date: Thu, 4 Feb 93 14:47:56 CST
From: Tony Skjellum <tony@Aurora.CS.MsState.Edu>
Message-Id: <9302042047.AA01577@Aurora.CS.MsState.Edu>
To: mpi-comm@cs.utk.edu, hender@macaw.fsl.noaa.gov
Subject: Re: A suggestion for a multi-level MPI

Tom,

It is an artificial requirement to restrict heterogeneous messages to a single
 data type.
- Tony
From owner-mpi-comm@CS.UTK.EDU  Thu Feb  4 15:53:51 1993
Received: from CS.UTK.EDU by surfer.EPM.ORNL.GOV (5.61/1.34)
	id AA20074; Thu, 4 Feb 93 15:53:51 -0500
Received: from localhost by CS.UTK.EDU with SMTP (5.61++/2.8s-UTK)
	id AA28380; Thu, 4 Feb 93 15:52:40 -0500
X-Resent-To: mpi-comm@CS.UTK.EDU ; Thu, 4 Feb 1993 15:52:38 EST
Errors-To: owner-mpi-comm@CS.UTK.EDU
Received: from fslg8.fsl.noaa.gov by CS.UTK.EDU with SMTP (5.61++/2.8s-UTK)
	id AA28367; Thu, 4 Feb 93 15:52:36 -0500
Received: by fslg8.fsl.noaa.gov (5.57/Ultrix3.0-C)
	id AA04817; Thu, 4 Feb 93 20:52:32 GMT
Received: by macaw.fsl.noaa.gov (4.1/SMI-4.1)
	id AA05241; Thu, 4 Feb 93 13:51:27 MST
Date: Thu, 4 Feb 93 13:51:27 MST
From: hender@macaw.fsl.noaa.gov (Tom Henderson)
Message-Id: <9302042051.AA05241@macaw.fsl.noaa.gov>
To: mpi-comm@cs.utk.edu
Subject: Re: A suggestion for a multi-level MPI


> Tom,
> 
> It is an artificial requirement to restrict heterogeneous messages to a single
>  data type.
> - Tony
> 

I agree.  My interpretation of Rusty and Bill's proposal is that messages that 
contain multiple data types would be constructed using the Level 1 routines-- 
something similar to Zipcode's invoices.  

Tom


From owner-mpi-comm@CS.UTK.EDU  Thu Feb  4 17:02:43 1993
Received: from CS.UTK.EDU by surfer.EPM.ORNL.GOV (5.61/1.34)
	id AA21865; Thu, 4 Feb 93 17:02:43 -0500
Received: from localhost by CS.UTK.EDU with SMTP (5.61++/2.8s-UTK)
	id AA03500; Thu, 4 Feb 93 17:01:23 -0500
X-Resent-To: mpi-comm@CS.UTK.EDU ; Thu, 4 Feb 1993 17:01:22 EST
Errors-To: owner-mpi-comm@CS.UTK.EDU
Received: from iliamna.cse.ogi.edu by CS.UTK.EDU with SMTP (5.61++/2.8s-UTK)
	id AA03492; Thu, 4 Feb 93 17:01:20 -0500
Received: by iliamna.cse.ogi.edu (/\==/\ Smail3.1.25.1 #25.15)
	id <m0nKEdJ-0002wBC@iliamna.cse.ogi.edu>; Thu, 4 Feb 93 14:01 PST
Message-Id: <m0nKEdJ-0002wBC@iliamna.cse.ogi.edu>
Date: Thu, 4 Feb 93 14:01 PST
From: otto@iliamna.cse.ogi.edu (Steve Otto)
To: mpi-comm@cs.utk.edu
Subject: 5184; one small point


I got into my office late today, and I must say,
how exciting to see all the mail concerning 5184!

Jim Cownie writes:

>The data is necessarily serialised to some degree over the
>communications medium, so where's the problem ? I believe it is
>actually HARDER to insist that the buffer sepcifications match at each
>end than not to do this. (Certainly I have to pass additional
>information with the message if I'm to check this.)

	I did not mean to imply that the standard should RULE OUT
	mix+match or that it should check for it at run time, 
	merely that the standard should not make the
	guarantee that one IS allowed to do this.  There is an
	important difference.  I really don't believe we can foresee
	everything, so we should be conservative on what the standard
	guarantees.

	Jim agrees that in the case of heterogeneity, it does seem
	that we want matching:

>The only place where I can see a need for matching of send and receive
>formats is in the heterogeneous case. Here I would be happy to insist
>that a heterogeneous send be matched to a heterogeneous receive. 

	So maybe we don't want to allow all 5184 combinations.  OK,
	at least we are admitting that there is an issue here.

--Steve Otto

From owner-mpi-comm@CS.UTK.EDU  Thu Feb  4 17:52:12 1993
Received: from CS.UTK.EDU by surfer.EPM.ORNL.GOV (5.61/1.34)
	id AA23307; Thu, 4 Feb 93 17:52:12 -0500
Received: from localhost by CS.UTK.EDU with SMTP (5.61++/2.8s-UTK)
	id AA06478; Thu, 4 Feb 93 17:50:57 -0500
X-Resent-To: mpi-comm@CS.UTK.EDU ; Thu, 4 Feb 1993 17:50:56 EST
Errors-To: owner-mpi-comm@CS.UTK.EDU
Received: from ssdintel.ssd.intel.com by CS.UTK.EDU with SMTP (5.61++/2.8s-UTK)
	id AA06466; Thu, 4 Feb 93 17:50:53 -0500
Received: from fuji.ssd.intel.com by SSD.intel.com (4.1/SMI-4.1)
	id AA17493; Thu, 4 Feb 93 14:50:39 PST
Message-Id: <9302042250.AA17493@SSD.intel.com>
To: otto@iliamna.cse.ogi.edu (Steve Otto)
Cc: mpi-comm@cs.utk.edu, prp@SSD.intel.com
Subject: Re: 5184; one small point 
In-Reply-To: Your message of "Thu, 04 Feb 93 14:01:00 PST."
             <m0nKEdJ-0002wBC@iliamna.cse.ogi.edu> 
Date: Thu, 04 Feb 93 14:50:38 -0800
From: prp@SSD.intel.com


> >The data is necessarily serialised to some degree over the
> >communications medium, so where's the problem ? I believe it is
> >actually HARDER to insist that the buffer sepcifications match at each
> >end than not to do this. (Certainly I have to pass additional
> >information with the message if I'm to check this.)
> 
> 	I did not mean to imply that the standard should RULE OUT
> 	mix+match or that it should check for it at run time, 
> 	merely that the standard should not make the
> 	guarantee that one IS allowed to do this.  There is an
> 	important difference.  I really don't believe we can foresee
> 	everything, so we should be conservative on what the standard
> 	guarantees.
> 
> --Steve Otto
> 

One of the important differences is that if the standard does not guarantee
that you can mix, you can't write a portable program that mixes. Since we have
seen one or two good examples of useful mixing, I think its important to
guarantee the ability to mix at least for some combinations. My preference
would be to guarantee mixing in all but specific cases, as few as possible.
In fact, I would recommend against including features that cannot be mixed.

I am optimistic that we can take care of the heterogeneous case in a
sufficiently uniform way that mixing heterogeneous levels with
non-heterogeneous becomes a non-issue. There was a good argument for not
having a non-heterogeneous level, that would take care of it.

The one case where mixing probably can't be justified is synchronous
operation, where the send does not complete until the receive does. I've never
liked this option, and worry that some support comes from  misunderstanding
about the difference between blocking and synchronous, as evidenced by Chuck's
comment "You can't reuse the buffer being sent until you know that it has been
received at the other side". This is of course not true. If the blocking send
semantics are that 1) the send completes when the send buffer can be written
safely and 2) message delivery is guaranteed, then you may happily overwrite
the send buffer when the send completes with the assurance that the undamaged
message will eventually appear at the receiver if its not already there.

The only interesting difference between blocking send and synchronous send is
in the amount of system buffering that may be required by applications. A
correct application using blocking send might require some amount of system
buffering, while a correct application that exclusively uses synchronous send
requires no system buffering. In my opinion, we should focus on the problem of
implied system buffering in the system environment area and eliminate
synchronous send from the point-to-point portion of the standard.

With reasonable care, we can make a clear and simple guarantee that appropriate
different sends and receives can be mixed freely. This will allow people to
write portable applications which use mixed structures.

Paul

From owner-mpi-comm@CS.UTK.EDU  Thu Feb  4 17:56:31 1993
Received: from CS.UTK.EDU by surfer.EPM.ORNL.GOV (5.61/1.34)
	id AA23412; Thu, 4 Feb 93 17:56:31 -0500
Received: from localhost by CS.UTK.EDU with SMTP (5.61++/2.8s-UTK)
	id AA06726; Thu, 4 Feb 93 17:55:42 -0500
X-Resent-To: mpi-comm@CS.UTK.EDU ; Thu, 4 Feb 1993 17:55:40 EST
Errors-To: owner-mpi-comm@CS.UTK.EDU
Received: from hub.ucsb.edu by CS.UTK.EDU with SMTP (5.61++/2.8s-UTK)
	id AA06712; Thu, 4 Feb 93 17:55:37 -0500
Received: from garuda (garuda.ucsb.edu) by hub.ucsb.edu; id AA06657
	sendmail 4.1/UCSB-2.0-sun
	Thu, 4 Feb 93 14:55:27 PST for mpi-comm@cs.utk.edu
Received: by garuda (4.1/UCSB-v2)
	id AA22402; Thu, 4 Feb 93 13:56:59 PST
Date: Thu, 4 Feb 93 13:56:59 PST
From: ambuj%cs@hub.ucsb.edu (Ambuj Singh)
Message-Id: <9302042156.AA22402@garuda>
To: mpi-comm@cs.utk.edu
Subject: Asynchronous send operations

Hi:

Here is a suggestion regarding the various kinds of send operations. 

From a semantic point of view, the synchronous and the asynchronous
versions are meaningful.  The further division of the asynchronous send
into two kinds based on whether the buffer has been emptied or not
is an implementation issue.  Implementors of a system where buffer
space is not a problem may wish to return without waiting for the
buffer to empty whereas implementors of a system with limited buffer
space may wish to suspend the operation until the buffer space is
emptied.  As to which version of asynchronous send operation is being
implemented should be transparent and should not affect the correctness 
of a program.

Ambuj Singh
Dept. of CS
Univ. of California
Santa Barbara, CA 93106
ambuj@cs.ucsb.edu
From owner-mpi-comm@CS.UTK.EDU  Thu Feb  4 18:06:52 1993
Received: from CS.UTK.EDU by surfer.EPM.ORNL.GOV (5.61/1.34)
	id AA23575; Thu, 4 Feb 93 18:06:52 -0500
Received: from localhost by CS.UTK.EDU with SMTP (5.61++/2.8s-UTK)
	id AA06726; Thu, 4 Feb 93 17:55:42 -0500
X-Resent-To: mpi-comm@CS.UTK.EDU ; Thu, 4 Feb 1993 17:55:40 EST
Errors-To: owner-mpi-comm@CS.UTK.EDU
Received: from hub.ucsb.edu by CS.UTK.EDU with SMTP (5.61++/2.8s-UTK)
	id AA06712; Thu, 4 Feb 93 17:55:37 -0500
Received: from garuda (garuda.ucsb.edu) by hub.ucsb.edu; id AA06657
	sendmail 4.1/UCSB-2.0-sun
	Thu, 4 Feb 93 14:55:27 PST for mpi-comm@cs.utk.edu
Received: by garuda (4.1/UCSB-v2)
	id AA22402; Thu, 4 Feb 93 13:56:59 PST
Date: Thu, 4 Feb 93 13:56:59 PST
From: ambuj%cs@hub.ucsb.edu (Ambuj Singh)
Message-Id: <9302042156.AA22402@garuda>
To: mpi-comm@cs.utk.edu
Subject: Asynchronous send operations

Hi:

Here is a suggestion regarding the various kinds of send operations. 

From a semantic point of view, the synchronous and the asynchronous
versions are meaningful.  The further division of the asynchronous send
into two kinds based on whether the buffer has been emptied or not
is an implementation issue.  Implementors of a system where buffer
space is not a problem may wish to return without waiting for the
buffer to empty whereas implementors of a system with limited buffer
space may wish to suspend the operation until the buffer space is
emptied.  As to which version of asynchronous send operation is being
implemented should be transparent and should not affect the correctness 
of a program.

Ambuj Singh
Dept. of CS
Univ. of California
Santa Barbara, CA 93106
ambuj@cs.ucsb.edu
From owner-mpi-comm@CS.UTK.EDU  Thu Feb  4 18:15:06 1993
Received: from CS.UTK.EDU by surfer.EPM.ORNL.GOV (5.61/1.34)
	id AA23912; Thu, 4 Feb 93 18:15:06 -0500
Received: from localhost by CS.UTK.EDU with SMTP (5.61++/2.8s-UTK)
	id AA06726; Thu, 4 Feb 93 17:55:42 -0500
X-Resent-To: mpi-comm@CS.UTK.EDU ; Thu, 4 Feb 1993 17:55:40 EST
Errors-To: owner-mpi-comm@CS.UTK.EDU
Received: from hub.ucsb.edu by CS.UTK.EDU with SMTP (5.61++/2.8s-UTK)
	id AA06712; Thu, 4 Feb 93 17:55:37 -0500
Received: from garuda (garuda.ucsb.edu) by hub.ucsb.edu; id AA06657
	sendmail 4.1/UCSB-2.0-sun
	Thu, 4 Feb 93 14:55:27 PST for mpi-comm@cs.utk.edu
Received: by garuda (4.1/UCSB-v2)
	id AA22402; Thu, 4 Feb 93 13:56:59 PST
Date: Thu, 4 Feb 93 13:56:59 PST
From: ambuj%cs@hub.ucsb.edu (Ambuj Singh)
Message-Id: <9302042156.AA22402@garuda>
To: mpi-comm@cs.utk.edu
Subject: Asynchronous send operations

Hi:

Here is a suggestion regarding the various kinds of send operations. 

From a semantic point of view, the synchronous and the asynchronous
versions are meaningful.  The further division of the asynchronous send
into two kinds based on whether the buffer has been emptied or not
is an implementation issue.  Implementors of a system where buffer
space is not a problem may wish to return without waiting for the
buffer to empty whereas implementors of a system with limited buffer
space may wish to suspend the operation until the buffer space is
emptied.  As to which version of asynchronous send operation is being
implemented should be transparent and should not affect the correctness 
of a program.

Ambuj Singh
Dept. of CS
Univ. of California
Santa Barbara, CA 93106
ambuj@cs.ucsb.edu
From owner-mpi-comm@CS.UTK.EDU  Thu Feb  4 19:10:08 1993
Received: from CS.UTK.EDU by surfer.EPM.ORNL.GOV (5.61/1.34)
	id AA24655; Thu, 4 Feb 93 19:10:08 -0500
Received: from localhost by CS.UTK.EDU with SMTP (5.61++/2.8s-UTK)
	id AA11923; Thu, 4 Feb 93 19:09:15 -0500
X-Resent-To: mpi-comm@CS.UTK.EDU ; Thu, 4 Feb 1993 19:09:13 EST
Errors-To: owner-mpi-comm@CS.UTK.EDU
Received: from almaden.ibm.com by CS.UTK.EDU with SMTP (5.61++/2.8s-UTK)
	id AA11915; Thu, 4 Feb 93 19:09:11 -0500
Message-Id: <9302050009.AA11915@CS.UTK.EDU>
Received: from almaden.ibm.com by almaden.ibm.com (IBM VM SMTP V2R2)
   with BSMTP id 9078; Thu, 04 Feb 93 16:09:16 PST
Date: Thu, 4 Feb 93 16:09:15 PST
From: "Ching-Tien (Howard) Ho" <ho@almaden.ibm.com>
To: mpi-comm@cs.utk.edu
Subject: re:

> Please remember that overlapped send/receive will only make sense on
> systems with excess memory bandwidth.  Hence, it might make more sense
> to implement a system where this is permitted by the implementor, but
> not required.  Otherwise, calculations might slow down instead of
> achieving pipelined improvements.  As Al points out, it is only the
> heavy-duty guys who try this sort of stuff...
>
> - Tony

A message passing system with only blocking send and blocking recv is hard
to implement a shift or circulant shift efficiently and safely.
Either you write an unsafe program

bsend (right_nbr)
brecv (left_nbr)

which may deadlock depending on the size of the system buffer,
or you do a two-phase or three-phase
algorithm based on parity, which may require pointer jumping and choosing a
leader.

Regards,

-- Howard

From owner-mpi-comm@CS.UTK.EDU  Thu Feb  4 20:10:38 1993
Received: from CS.UTK.EDU by surfer.EPM.ORNL.GOV (5.61/1.34)
	id AA25133; Thu, 4 Feb 93 20:10:38 -0500
Received: from localhost by CS.UTK.EDU with SMTP (5.61++/2.8s-UTK)
	id AA14638; Thu, 4 Feb 93 20:09:30 -0500
X-Resent-To: mpi-comm@CS.UTK.EDU ; Thu, 4 Feb 1993 20:09:29 EST
Errors-To: owner-mpi-comm@CS.UTK.EDU
Received: from Aurora.CS.MsState.Edu by CS.UTK.EDU with SMTP (5.61++/2.8s-UTK)
	id AA14630; Thu, 4 Feb 93 20:09:28 -0500
Received:  by Aurora.CS.MsState.Edu (4.1/6.0s-FWP);
	   id AA00403; Thu, 4 Feb 93 19:09:20 CST
Date: Thu, 4 Feb 93 19:09:20 CST
From: Tony Skjellum <tony@Aurora.CS.MsState.Edu>
Message-Id: <9302050109.AA00403@Aurora.CS.MsState.Edu>
To: ho@almaden.ibm.com
Subject: re: my comments on overlapping
Cc: mpi-comm@cs.utk.edu

BTW, I do not mean blocking send / blocking receive only in my comments.
I mean asynchronous reading of a specific message (aka intel irecv) going
on at the same time as processing.  The message appears in the buffer,
and one can poll for that to be complete.  In practice, message passing
does happen in background on all these systems, but the algorithms are not
explicitly using this feature, or encouraging this overlap, necessarily.
They might process messages at high priority, and only compute when message
input queues are empty.

Lennart has always repeated this warning that the overlap is only useful
from a performance sense, and therefore from the point of view of a programmer
trying to ask for this, if the system can perform better with the overlap.
I DO NOT ADVOCATE block send / block receive only.

Best wishes,
Tony

----- Begin Included Message -----

From owner-mpi-comm@CS.UTK.EDU Thu Feb  4 18:18:36 1993
X-Resent-To: mpi-comm@CS.UTK.EDU ; Thu, 4 Feb 1993 19:09:13 EST
Date: Thu, 4 Feb 93 16:09:15 PST
From: "Ching-Tien (Howard) Ho" <ho@almaden.ibm.com>
To: mpi-comm@cs.utk.edu
Subject: re:
Content-Length: 831

> Please remember that overlapped send/receive will only make sense on
> systems with excess memory bandwidth.  Hence, it might make more sense
> to implement a system where this is permitted by the implementor, but
> not required.  Otherwise, calculations might slow down instead of
> achieving pipelined improvements.  As Al points out, it is only the
> heavy-duty guys who try this sort of stuff...
>
> - Tony

A message passing system with only blocking send and blocking recv is hard
to implement a shift or circulant shift efficiently and safely.
Either you write an unsafe program

bsend (right_nbr)
brecv (left_nbr)

which may deadlock depending on the size of the system buffer,
or you do a two-phase or three-phase
algorithm based on parity, which may require pointer jumping and choosing a
leader.

Regards,

-- Howard



----- End Included Message -----

From owner-mpi-comm@CS.UTK.EDU  Fri Feb  5 18:05:15 1993
Received: from CS.UTK.EDU by surfer.EPM.ORNL.GOV (5.61/1.34)
	id AA14845; Fri, 5 Feb 93 18:05:15 -0500
Received: from localhost by CS.UTK.EDU with SMTP (5.61++/2.8s-UTK)
	id AA03769; Fri, 5 Feb 93 18:03:08 -0500
X-Resent-To: mpi-comm@CS.UTK.EDU ; Fri, 5 Feb 1993 18:03:06 EST
Errors-To: owner-mpi-comm@CS.UTK.EDU
Received: from ssdintel.ssd.intel.com by CS.UTK.EDU with SMTP (5.61++/2.8s-UTK)
	id AA03760; Fri, 5 Feb 93 18:03:04 -0500
Received: from fuji.ssd.intel.com by SSD.intel.com (4.1/SMI-4.1)
	id AA06572; Fri, 5 Feb 93 15:02:57 PST
Message-Id: <9302052302.AA06572@SSD.intel.com>
To: jwf@lion.parasoft.com (Jon Flower)
Cc: mpi-comm@cs.utk.edu, prp@SSD.intel.com
Subject: Re: 5184; one small point 
In-Reply-To: Your message of "Thu, 04 Feb 93 14:01:00 PST."
             <m0nKEdJ-0002wBC@iliamna.cse.ogi.edu> 
Date: Fri, 05 Feb 93 15:02:57 -0800
From: prp@SSD.intel.com


Folks, here is an offline exchange Jon and I had that you might enjoy.



To: prp@SSD.intel.com
Subject: Re: 5184; one small point

Paul, I saw your message about blocking and synchronous messages. Without
wanting to speak for Chuck I think there is a pretty important difference
between the two, particularly for applications such as Oracle. Using the
blocking send it is true that the send buffer can be reused as soon as
it is "clear" AS LONG AS IT IS GUARANTEED that it will be delivered.
Unfortuntely this can't be guaranteed in the case where system buffers
are required because the system may simply be out of memory at
the receiver. In this case MPI and other systems will simply drop
the offending message on the ground. For a database I assume this
would be fatal. On the other hand the synchronous scheme has
the advantage that you know it's worked when it returns, on both
send and receive sides.

	Jon Flower




This is an area where we must be clear about the semantics.

We have agreed to some extent that message passing in MPI will be reliable. If
I remember correctly, this passed on a straw vote early in the first
point-to-point discussion.

When I say "agreed to some extent" I mean that not everyone has the
same understanding of what the standard is about on this issue.

To me it means that if I have a send, and a receive that matches the message
sent, that the message will absolutely be delivered. This is how NX works. If
there isn't enough buffer space, the send must block so that the message waits
in the send buffer until it can be delivered. Flow control is required in the
underlying protocol.

There seem to be a lot of people that expect no underlying protocol. When you
say "send", the system sends - whether the message can be delivered or not.
Apparently some systems work this way, and therefore it is expected behavior
for people who have been users of these systems.
To me, it is not at all compatible with the notion of reliable message passing.

If you have reliable message passing as I understand it, clearly the important
difference you mention goes away, leaving the lesser difference I wrote about.

Without reliable message passing, I see no point whatsoever in blocking send.
In fact, I see little point in having a typed send/receive standard, because
such an interface is loaded up with friendly help for the user and it seems
ridiculous to turn around and expect that same user to worry about reliable
delivery.

Does any of this make sense?

Paul





Hi Paul. I think what you're saying makes some sense. I have two more 
questions though....

a) Having the sender block until memory is available potentially
   invalidates some algorithms, particularly as the number of nodes
   grows. It's quite easy to come up with a sort of "ring" 
   algorithm in which everyone ends up hung. I would agree that
   the trivial case (a single one-dimensional ring) in which this
   happens is a "user error" but there are more complex 
   multi-dimensional cases in which it is quite hard for users
   to guarantee that it won't come up, even with quite reasonable
   programs.

b) What are the implications of the flow control that you are
   using on performance? Is your routing hardware doing the claiming
   of memory blocks on the receiver or is there an initial software
   handshake to get started. The latter probably costs a fair
   amount that the "high priests" don't like???

I agree that the definition of "reliable devliery" in the MPI
picture is not solid. I thought I remembered a piece that actually
said that it was OK to drop a message if there wasn't enough
memory on the receiver but I could be hallucinating. I wonder
if it's worth trying to straighten this out? I have a nasty
feeling that we'll get down to implementation details. If we
can't get IBM and TMC to agree that

    Node 0:
	send to 1
	read from 1

    Node 1:
	send to 0
	read from 0

is a reasonable thing to do I don't see much hope for anything
else at this level.......

	Jon





> a) Having the sender block until memory is available...

This is inherently a hard problem that is all about system buffering. You
can't solve this problem by careful or clever definition of the semantics of
a message passing interface (whether and when sends block, and whether message
passing is reliable.) If you push it down here, it pops up over there -
depending on the semantics defined for the interface, the problem must be
solved by the system or by the user. My preference (for a typed send/receive
interface) is to push the problem to the system side, as much as possible.
That way most users won't have to deal with it. But you can't completely solve
the problem on the system side, because the user can always write a program
that will confound any system buffering that has finite buffer space.

With a reasonably good system implementation, it is actually rather difficult
to come up with an algorithm that breaks it. Also, it is possible to define
straightforward rules that will guarantee correct execution. That way,
although the user must be careful being careful is easy.

> b) What are the implications of the flow control...

There is a performance penalty. People have claimed that NX overheads are too
high, and it is true that they are noticeably higher than raw hardware. But
there is quite a bit of overhead from message matching too, so for those who
want ultimate performance there should be an alternative to the typed
send/receive interface. Active messages is a good candidate. Such an interface
is outside the scope of MPI.

> I agree that the definition of "reliable devliery" in the MPI
> picture is not solid. I thought I remembered a piece that actually
> said that it was OK to drop a message if there wasn't enough
> memory on the receiver but I could be hallucinating. I wonder

It was in the first draft.

> if it's worth trying to straighten this out? I have a nasty
> feeling that we'll get down to implementation details. If we
> can't get IBM and TMC to agree that
> 
>     Node 0:
> 	send to 1
> 	read from 1
> 
>     Node 1:
> 	send to 0
> 	read from 0
> 
> is a reasonable thing to do I don't see much hope for anything
> else at this level.......

We have to develop and agree on a way to manage system buffering. To get
Intel, IBM, and TMC together it must allow for the case where the above works
and the case where it doesn't.

> 
> 	Jon

Paul





Do you have any plan for how to reconcile the difference between
the three camps on the simple program I sent you? My impression
is that:

	NX (& Express, in fact) want that program to work
	as well as it possibly can. I believe that >95% of
	Express users code that way and are successful. I
	think you mentioned a similar fact in Dallas.

	TMC is prepared to say that the program is incorrect and 
	won't work at all.

	IBM is not convinced either way.

I don't see how to reconcile these camps in any good way. If we allow
for the possibility that the code doesn't work AT ALL then the 95% of
Express codes I mentioned above ALL have to be re-written in order to
become portable. Furthermore, if the only way to guarantee portability,
even within MPI, is to assume "half-duplex" communication then why not
toss the other kind completely -- it would certainly reduce the 
complexity of the draft?

	Jon




I think the answer (if there is one) is to provide a mechanism where the user
declares a need for system buffering. This is a job for the system environment
group to work out properly. With a declaration, you get:

 - Portability: The code is written for a specific buffering model but will
port between environments because it tells the system what it needs.

 - Efficiency: If the user declares no buffering, the system can eliminate
the associated overhead. (How to do this is a trick.)

 - Bloat: Every vendor must provide system buffering in case the user declares
a need for it.

Paul




I agree....... do you think TMC will?
Should we attempt to make a formal suggestion along these lines
to the entire group. "Prepare to be flamed!!!!"

	Jon



[I'm ready]

Paul
From owner-mpi-comm@CS.UTK.EDU  Fri Feb  5 18:59:06 1993
Received: from CS.UTK.EDU by surfer.EPM.ORNL.GOV (5.61/1.34)
	id AA15545; Fri, 5 Feb 93 18:59:06 -0500
Received: from localhost by CS.UTK.EDU with SMTP (5.61++/2.8s-UTK)
	id AA06448; Fri, 5 Feb 93 18:57:54 -0500
X-Resent-To: mpi-comm@CS.UTK.EDU ; Fri, 5 Feb 1993 18:57:52 EST
Errors-To: owner-mpi-comm@CS.UTK.EDU
Received: from hub.ucsb.edu by CS.UTK.EDU with SMTP (5.61++/2.8s-UTK)
	id AA06440; Fri, 5 Feb 93 18:57:50 -0500
Received: from garuda (garuda.ucsb.edu) by hub.ucsb.edu; id AA18688
	sendmail 4.1/UCSB-2.0-sun
	Fri, 5 Feb 93 15:55:42 PST for mpi-comm@cs.utk.edu
Received: by garuda (4.1/UCSB-v2)
	id AA23498; Fri, 5 Feb 93 14:42:13 PST
Date: Fri, 5 Feb 93 14:42:13 PST
From: ambuj%cs@hub.ucsb.edu (Ambuj Singh)
Message-Id: <9302052242.AA23498@garuda>
To: mpi-comm@cs.utk.edu
Subject: order preservation

Hello:

The issue of order preservation of messages when there
are multiple threads at the sender was not clarified
at the January meeting.  What do people have to say about
this?  It seems that there is no need to require message
orderings across different threads.  In other words,
the order that the messages are received should be
consistent with the ``program order'' which is defined
by the order in which statements get executed.  Thus
messages in different threads may not be related and
there should not be a need to preserve their order.

On a different note, there was some question regarding
the need for a synchronous send operation.  One reason
that they may be useful is that they might be the only
means to ensure true portability.  As illustrated by the
following program that we discussed at the January
meeting, asynchronous send operations are not portable
across  CM-5 and Intel.

                    Process 1      Process 2
                    ---------      ---------
                    send to 2      send to 1
                    recv           recv

In other words, the standard could inquire that programs
employing synchronous send/receive operations be portable
across machines.  It would be difficult to meet the
same requirement for the asynchronous operations.

--Ambuj Singh
Dept. of CS, UCSB
From owner-mpi-comm@CS.UTK.EDU  Mon Feb  8 06:54:25 1993
Received: from CS.UTK.EDU by surfer.EPM.ORNL.GOV (5.61/1.34)
	id AA18563; Mon, 8 Feb 93 06:54:25 -0500
Received: from localhost by CS.UTK.EDU with SMTP (5.61++/2.8s-UTK)
	id AA17241; Mon, 8 Feb 93 06:53:03 -0500
X-Resent-To: mpi-comm@CS.UTK.EDU ; Mon, 8 Feb 1993 06:53:02 EST
Errors-To: owner-mpi-comm@CS.UTK.EDU
Received: from marge.meiko.com by CS.UTK.EDU with SMTP (5.61++/2.8s-UTK)
	id AA17231; Mon, 8 Feb 93 06:52:56 -0500
Received: from hub.meiko.co.uk by marge.meiko.com with SMTP id AA03743
  (5.65c/IDA-1.4.4 for <mpi-comm@cs.utk.edu>); Mon, 8 Feb 1993 06:52:53 -0500
Received: from float.co.uk (float.meiko.co.uk) by hub.meiko.co.uk (4.1/SMI-4.1)
	id AA26581; Mon, 8 Feb 93 11:52:48 GMT
Date: Mon, 8 Feb 93 11:52:48 GMT
From: jim@meiko.co.uk (James Cownie)
Message-Id: <9302081152.AA26581@hub.meiko.co.uk>
Received: by float.co.uk (5.0/SMI-SVR4)
	id AA00721; Mon, 8 Feb 93 11:50:58 GMT
To: mpi-comm@cs.utk.edu
In-Reply-To: prp@SSD.intel.com's message of Fri, 05 Feb 93 15:02:57 -0800 <9302052302.AA06572@SSD.intel.com>
Subject: The Jon and Paul show
Content-Length: 1971

While I am no fan of arbitrary system buffering of messages, I
believe that if it is to succeed MPI must allow the easy importation
of existing Express and NX style codes. This necessarily implies that
system buffering is required, so that code like this

	Blocking send to myself
	Blocking receive from myself

works. (This is an even simpler version of the test case given by
Jon/Paul). 

I agree with the approach that the user should declare her buffering
requirement up front. This seems to be the only way to ensure
portability. (Even if all it achieves is ensuring that she gets an
"MPI-INSFMEM insufficient buffer space available" message on some
systems, this is still preferable to a crash or hang).

This is exactly the set of issues Marc was addressing in his
discussion on SAFE and UNSAFE programs, and the amounts of buffering
such codes could assume (he also addressed issues such as "How many
outstanding messages can a code assume it is allowed ?").

I've a feeling that a lot of users (most ?) don't actually know what
their buffer requirement is, however I still think that requiring a
user specification of required buffer space is the correct way
forward. 

(It might also be nice to have a system enquiry function which could
return the buffer space currently used and the high water mark. This
would at least let users find out about the behaviour of their codes.
Unfortunately this information is rather implementation specific, and
would not be accessible through the currently proposed profiling
interface. Is this an issue for the profiling committee, or the
environmental enquiry one ??? [As chair of the Profiling committe I'd
vote for Environmental Enquiry !])

-- Jim
James Cownie 
Meiko Limited			Meiko Inc.
650 Aztec West			Reservoir Place
Bristol BS12 4SD		1601 Trapelo Road
England				Waltham
				MA 02154

Phone : +44 454 616171		+1 617 890 7676
FAX   : +44 454 618188		+1 617 890 5042
E-Mail: jim@meiko.co.uk   or    jim@meiko.com


From owner-mpi-comm@CS.UTK.EDU  Mon Feb  8 07:10:19 1993
Received: from CS.UTK.EDU by surfer.EPM.ORNL.GOV (5.61/1.34)
	id AA22055; Mon, 8 Feb 93 07:10:19 -0500
Received: from localhost by CS.UTK.EDU with SMTP (5.61++/2.8s-UTK)
	id AA17649; Mon, 8 Feb 93 07:09:28 -0500
X-Resent-To: mpi-comm@CS.UTK.EDU ; Mon, 8 Feb 1993 07:09:27 EST
Errors-To: owner-mpi-comm@CS.UTK.EDU
Received: from marge.meiko.com by CS.UTK.EDU with SMTP (5.61++/2.8s-UTK)
	id AA17641; Mon, 8 Feb 93 07:09:23 -0500
Received: from hub.meiko.co.uk by marge.meiko.com with SMTP id AA03842
  (5.65c/IDA-1.4.4 for <mpi-comm@cs.utk.edu>); Mon, 8 Feb 1993 07:09:20 -0500
Received: from float.co.uk (float.meiko.co.uk) by hub.meiko.co.uk (4.1/SMI-4.1)
	id AA26809; Mon, 8 Feb 93 12:09:13 GMT
Date: Mon, 8 Feb 93 12:09:13 GMT
From: jim@meiko.co.uk (James Cownie)
Message-Id: <9302081209.AA26809@hub.meiko.co.uk>
Received: by float.co.uk (5.0/SMI-SVR4)
	id AA00724; Mon, 8 Feb 93 12:07:22 GMT
To: mpi-comm@cs.utk.edu
In-Reply-To: prp@SSD.intel.com's message of Fri, 05 Feb 93 15:02:57 -0800 <9302052302.AA06572@SSD.intel.com>
Subject: The Jon and Paul show [more]
Content-Length: 2029

One more point I ommitted before...

Paul says :-
> to work out properly. With a declaration, you get:
> 
>  - Portability: The code is written for a specific buffering model but will
> port between environments because it tells the system what it needs.
> 
>  - Efficiency: If the user declares no buffering, the system can eliminate
> the associated overhead. (How to do this is a trick.)
> 
>  - Bloat: Every vendor must provide system buffering in case the user declares
> a need for it.

The last point is not actually true. It's entirely reasonable to have
a standard which contains a buffering request and allow it to  be
refused. (There's not actually any point in having the request unless
it can be refused !)

I don't see a huge logical distinction between an implementation which
permits system buffering of 1 byte and one which permits no system
buffering. If the user needed 1Mb, then neither system is any use !

So it's merely an implementation quality issue. If someone has been
able to sell their current system and keep their users happy without
system buffering, then they should still be able to keep them happy
with an MPI implementation in which the amount of system buffering is
zero, and any request for more fails.

Such an implementation would be standard conforming too. (Though such
a vendor might expect some moaning from people trying to import code
onto the machine, and maybe market pressure would push them into an 
implementation which did support system buffering !)

(As an analogy, I believe that it is possible to have a standard
conforming ADA implementation whose sole action when presented with
any program is to raise the "Implementation limit exceeded" exception.
Not useful, not saleable, but standard !)

-- Jim
James Cownie 
Meiko Limited			Meiko Inc.
650 Aztec West			Reservoir Place
Bristol BS12 4SD		1601 Trapelo Road
England				Waltham
				MA 02154

Phone : +44 454 616171		+1 617 890 7676
FAX   : +44 454 618188		+1 617 890 5042
E-Mail: jim@meiko.co.uk   or    jim@meiko.com


From owner-mpi-comm@CS.UTK.EDU  Mon Feb  8 08:54:49 1993
Received: from CS.UTK.EDU by surfer.EPM.ORNL.GOV (5.61/1.34)
	id AA26134; Mon, 8 Feb 93 08:54:49 -0500
Received: from localhost by CS.UTK.EDU with SMTP (5.61++/2.8s-UTK)
	id AA20868; Mon, 8 Feb 93 08:54:03 -0500
X-Resent-To: mpi-comm@CS.UTK.EDU ; Mon, 8 Feb 1993 08:54:02 EST
Errors-To: owner-mpi-comm@CS.UTK.EDU
Received: from [129.215.56.21] by CS.UTK.EDU with SMTP (5.61++/2.8s-UTK)
	id AA20822; Mon, 8 Feb 93 08:52:39 -0500
Date: Mon, 8 Feb 93 13:52:17 GMT
Message-Id: <16939.9302081352@subnode.epcc.ed.ac.uk>
From: L J Clarke <lyndon@epcc.ed.ac.uk>
Subject: buffered/unbuffered comms (was compiler target (was Be brave. Be sure.))
To: mpi-pt2pt@cs.utk.edu, mpi-comm@cs.utk.edu
Reply-To: lyndon@epcc.ed.ac.uk

Hi 

Here comes my 5p worth on the subject of buffered and unbuffered comms. 

For completeness: by unbuffered I mean that the sender blocks until the
message has been (or certainly will be) copied into the space of the
receiver, a la occam for example; by buffered comms I mean that the
message is copied away into a system buffer somewhere and the sender
returns, a la PVM for example. 

It seems to me that there are a few different issues in this subject
which discussions may have touched on. 

a) Ease of programming.  

I don't think anyone can really disagree that many programmers will
report that they find buffered comms easier to use.  

These users have been fortunate enough not to have come up against the
boundedness of buffering provided with the system.  With high
probability they are programming (or adapting) applications by inserting
message passing calls directly into the application source. 

b) Portability of programs using MPI between different machines.

[Here I give away my bias.]

It is very difficult to make statements about portability (and
reliability/correctness) of programs which use buffered messages and
rely on system storage capacity and structure thereof. 

This becomes particularly difficult when the application makes use of
substantive libraries, which themselves are written using buffered comms
and place requirements on system buffering.  It can just become to
difficult to work out how much buffering you need.  We played with a
system which allowed the programmer to configure the system buffering,
and this feature was only used (properly) by high priests. 

In my work I will only be able to use MPI if I can write substantive
libraries in the confidence that they will not be subject to failure due
to running out of such buffer space.  Therefore we use only unbuffered
message passing with a mixture of blocking/nonblocking (like Intel NX
isend/irecv/msgwait) calls. Therefore my bias :-)

c) Portability of existing applications (using existing message passing
interfaces) to MPI.

This is a different subject to (c).  Following the discussion it seems
that an argument in favour of adopting buffered comms is the number of
existing programs (eg, lotsa programs written using Express) which use
unbuffered comms. 

It has been my experience that migration of applications between
different, broadly similar, message passing interfaces is not so
difficult, except for this point.  In a nutshell, the surgery you have
to perform to move programs/libraries between an interface that forces
buffered comms and one which forces unbuffered comms and
blocking/nonblocking (isend/irecv/msgwait) is grevious and error prone. 

Given the above, I come to the conclusions:

i)  MPI must contain unbuffered communications with blocking/nonblocking
(irecv/isend/msgwait kinda thing) calls, for reliability and
portability. 

ii) If a goal of MPI is that existing applications using message passing
interfaces (eg Express, PVM) should easily port to MPI, then MPI must
also contain buffered comms. This seems to be a matter for the full
committee, hence I have crossposted.

Incidentally, to pitch in 2ps on some other lines of discussion:

* I can see no particular benefit in allowing a buffered snd/rcv match
an unbuffered rcv/snd.  I can see considerable inconvenience in
forbidding a blocking send/recv to match with a nonblocking recv/send. 

* Yes, we do try to overlap communications with calculation.  (Sometimes
it doesnt buy you, sometimes it does.  Sometimes we have specifically
needed to avoid such overlap in order to maximise performance, but that
was a weird one :-) Just as important, we frequently "overlap"
communication with communication (ie, use nonblocking calls) to avoid
deadlock. 

* Please, oh please, let MPI decide that communications should be
adressed using a rank relative to a group/context (0 ...  GroupSize - 1)
or (1 ...  GroupSize).  We do this all the time, and its very very
convenient.  In fact, when we can't do this we end up having to create
arrays of the task identifiers - we end up doing it ourselves anyway. 

Best Wishes
Lyndon

         /--------------------------------------------------------\
    e||) | Lyndon J Clarke    Edinburgh Parallel Computing Centre | e||) 
    c||c | Tel: 031 650 5021  Email: lyndon@epcc.edinburgh.ac.uk  | c||c 
         \--------------------------------------------------------/


From owner-mpi-comm@CS.UTK.EDU  Tue Feb  9 02:23:46 1993
Received: from CS.UTK.EDU by surfer.EPM.ORNL.GOV (5.61/1.34)
	id AA19163; Tue, 9 Feb 93 02:23:46 -0500
Received: from localhost by CS.UTK.EDU with SMTP (5.61++/2.8s-UTK)
	id AA06697; Tue, 9 Feb 93 02:22:48 -0500
X-Resent-To: mpi-comm@CS.UTK.EDU ; Tue, 9 Feb 1993 02:22:47 EST
Errors-To: owner-mpi-comm@CS.UTK.EDU
Received: from antares.mcs.anl.gov by CS.UTK.EDU with SMTP (5.61++/2.8s-UTK)
	id AA06689; Tue, 9 Feb 93 02:22:45 -0500
Received: from donner.mcs.anl.gov by antares.mcs.anl.gov (4.1/SMI-GAR)
	id AA20792; Tue, 9 Feb 93 01:22:44 CST
Received: by donner.mcs.anl.gov (4.1/GCF-5.8)
	id AA04771; Tue, 9 Feb 93 01:22:41 CST
Message-Id: <9302090722.AA04771@donner.mcs.anl.gov>
To: mpi-comm@cs.utk.edu
Subject: The Jon and Paul show (was: 5184; one small point)
In-Reply-To: Your message of "Fri, 05 Feb 93 15:02:57 PST."
             <9302052302.AA06572@SSD.intel.com> 
Date: Tue, 09 Feb 93 01:22:40 CST
From: Rusty Lusk <lusk@antares.mcs.anl.gov>


| 
| Folks, here is an offline exchange Jon and I had that you might enjoy.
  ....
| Should we attempt to make a formal suggestion along these lines
| to the entire group. "Prepare to be flamed!!!!"

(not a flame)
I did enjoy this exchange, because it is a tutorial on the buffering problem.
Paul says it perfectly: You can't solve the system buffering problem by
careful or clever definition of the semantics of a message passing interface.

I agree that most users would rather not worry about it (and don't) and we
should allow systems that try to handle the problem for the user to do so (the
example programs in the discussion should run).  I agree with Jim Cownie on
this point.  For portability, an enquiry function can be provided to alert the
user who checks to find out how much (or how little) buffering is provided.
I think the environmental enquiry subcommittee should propose something along
these lines.

As Paul says, handling this robustly has a cost, and some users certainly want
to avoid it.  After all, the user can know some things about his program that
the system cannot, and should be able to take over responsibility for the
buffering problem if he wants to.  This is just what is done in the case of
the "ready-receiver" communication.  I admit that this is not a particularly
euphonious name, but some way is needed for the user to relieve the system of
buffer management if he wants to do so in the interest of greater efficiency.

Rusty
From owner-mpi-comm@CS.UTK.EDU  Wed Feb 10 01:16:47 1993
Received: from CS.UTK.EDU by surfer.EPM.ORNL.GOV (5.61/1.34)
	id AA13938; Wed, 10 Feb 93 01:16:47 -0500
Received: from localhost by CS.UTK.EDU with SMTP (5.61++/2.8s-UTK)
	id AA11091; Wed, 10 Feb 93 01:15:37 -0500
X-Resent-To: mpi-comm@CS.UTK.EDU ; Wed, 10 Feb 1993 01:15:35 EST
Errors-To: owner-mpi-comm@CS.UTK.EDU
Received: from antares.mcs.anl.gov by CS.UTK.EDU with SMTP (5.61++/2.8s-UTK)
	id AA11083; Wed, 10 Feb 93 01:15:33 -0500
Received: from donner.mcs.anl.gov by antares.mcs.anl.gov (4.1/SMI-GAR)
	id AA02367; Wed, 10 Feb 93 00:15:31 CST
Received: by donner.mcs.anl.gov (4.1/GCF-5.8)
	id AA06777; Wed, 10 Feb 93 00:15:28 CST
Message-Id: <9302100615.AA06777@donner.mcs.anl.gov>
To: mpi-comm@cs.utk.edu
Subject: Multiple levels of collective operations
Date: Wed, 10 Feb 93 00:15:27 CST
From: Rusty Lusk <lusk@antares.mcs.anl.gov>


A few days ago, we posted a suggestion for a multi-level MPI specification as
a way to manage the complexity inherent in providing a highly functional
interface, and to make MPI accessible to users who did not need or want all of
its capabilities.  The examples there were only for point-to-point
communication.  We thought it worth exploring whether the same ideas might be
useful in the context of the group operations.  Here are a few thoughts.

The idea here is not to propose specific syntax, but to suggest how
simultaneous adoption of multiple levels of collective operations might help
provide both a simple interface and a full-featured one.

Level 4: (very, very simple)

Here there would be only one group, the default group of all processes, so
there is no group id in the parameter lists.

MPI_barrier
MPI_combine(...,SUM,...)
                MAX
                ...
  (That is, only a fixed set of combining operations)

MPI_broadcast(....)

All operations would block until globally completed.

Message types would be just like level 4 of the point-to-point operations:
either contiguous strings of bytes, or arrays of specific data types specified
like  (...,datatype,numitems)

The main point is that using just this level of group operations one could
port many existing programs that use global operations, without introducing
any explicit management of groups.

Level 3: (still pretty simple, but more functionality)

All the utilities proposed by Al Geist at the last meeting for the management
of groups (creation, inquiry, etc.)

Operations at this level have group id as an explicit argument (Again as Al
suggested).

User-defined combining functions.

Gather operations.

Main restriction: for simplicity, still simple contiguous buffers made up of
either untyped byte strings or arrays of fixed types.

All operations still block.  In fact, we propose that there not be
non-blocking collective operations, even at lower levels.  The necessity of 
cooperating in the global operation beyond just making one's own explicit
contribution puts non-blocking global operations more in the "threads" domain.

Level 2:  (More options for buffer structure, as in the point-to-point routines
at this level)

Here buffers specified for broadcasting, combining, etc., could be completely
general, including mixed-type, non-contiguous buffers described by vectors of
(address,datatype,numitems) triples.

Level 1:  (Full functionality, plus separate "setup" parts of the operations,
like in Marc's point-to-point proposal.)

Here operations would have a separate "init" call.  Being separate has the 
same advantages as for the point-to-point operations, in that resources could
be reused in loops.  The "init" call would return a handle that could be
further modified (setting buffer type, address, etc.) before use.  The payoff
seems potentially greater here because some of the "init" calls may turn out
to be inherently non-scalable, and therefore reuse of their results is
important. 

Summary: Multiple levels might help deal with conflicting demands for both
simplicity and functionality in the case of collective operations as well as
for point-to-point operations.  What was generally discussed at the last
meeting is very much like Level 3 above.  An even simpler interface (so that
groups need not be explicit at all) is provided by Level 4, while the somewhat
grubby aspects of multiple and complicated buffer formats is pushed down into
Level 2.  Finally, Level 1 provides the opportunity to absorb some of the
difficult-to-scale parts of global operations into separate, reusable calls.

Comments?

Rusty Lusk and Bill Gropp
From owner-mpi-comm@CS.UTK.EDU  Fri Feb 12 04:14:26 1993
Received: from CS.UTK.EDU by surfer.EPM.ORNL.GOV (5.61/1.34)
	id AA05929; Fri, 12 Feb 93 04:14:26 -0500
Received: from localhost by CS.UTK.EDU with SMTP (5.61++/2.8s-UTK)
	id AA23402; Fri, 12 Feb 93 04:12:57 -0500
X-Resent-To: mpi-comm@CS.UTK.EDU ; Fri, 12 Feb 1993 04:12:57 EST
Errors-To: owner-mpi-comm@CS.UTK.EDU
Received: from enseeiht.enseeiht.fr by CS.UTK.EDU with SMTP (5.61++/2.8s-UTK)
	id AA23393; Fri, 12 Feb 93 04:12:50 -0500
Received: from marylin (marylin.enseeiht.fr) by enseeiht.enseeiht.fr, Fri, 12 Feb 1993 10:12:45 +0100
Message-Id: <199302120912.AA08776@enseeiht.enseeiht.fr>
Date: Fri, 12 Feb 93 10:10:29 +0100
From: Michel DAYDE <dayde@enseeiht.fr>
To: mpi-comm@cs.utk.edu
Subject: Re Multiple levels of cllective operations


I like the idea of multi-level MPI specifications
since it is a nice way of dealing with
functionality and simplicity. 

Also the fact that Level 4 of collective operations
avoids to introduce any explicit management of
groups will simplify the life.

    Michel Dayde, ENSEEIHT-IRIT and CERFACS.
From owner-mpi-comm@CS.UTK.EDU  Mon Feb 15 07:56:19 1993
Received: from CS.UTK.EDU by surfer.EPM.ORNL.GOV (5.61/1.34)
	id AA02001; Mon, 15 Feb 93 07:56:19 -0500
Received: from localhost by CS.UTK.EDU with SMTP (5.61++/2.8s-UTK)
	id AA14309; Mon, 15 Feb 93 07:54:13 -0500
X-Resent-To: mpi-comm@CS.UTK.EDU ; Mon, 15 Feb 1993 07:54:12 EST
Errors-To: owner-mpi-comm@CS.UTK.EDU
Received: from daedalus.epcc.ed.ac.uk by CS.UTK.EDU with SMTP (5.61++/2.8s-UTK)
	id AA14301; Mon, 15 Feb 93 07:54:07 -0500
Date: Mon, 15 Feb 93 12:54:01 GMT
Message-Id: <21675.9302151254@subnode.epcc.ed.ac.uk>
From: L J Clarke <lyndon@epcc.ed.ac.uk>
Subject: Mixed F77/C, MIMD(not SPMD)
To: mpi-comm@cs.utk.edu
Reply-To: lyndon@epcc.ed.ac.uk

Dear MPI Colleagues

I'd like to raise a couple of points which I hope we can discuss at the
meeting later this week, after lenghty discussions with a variety of
local users. 

In general the objectives of the MPI Forum are very well received.  Two
specific concerns, of a very general nature, became apparent. 

a) The introduction says that MPI is for programmers who wish to write
portable programs in C and/or Fortran77.  The choice of languages is
fine, although some may wish to use C++ and Fortran90.  The concern is
whether MPI intends to allow, and if so in what manner, mixed language
programming, i.e.  programs written in a mixture of C and Fortran77. 

The observation is that C is most useful for library programming,
whereas a large number of applications that we deal with are written in
Fortran77.  (Users did not expect MPI say anything about cross-calling
and such murky business, that is outwith message passing.)

I propose that the make a statement of intent, possibly in the
introduction, that mixed languages will be allowed/supported (I would
hope that we could not make the decision to not allow/support mixture of
C and F77 :-). This seems an easy thing to do.

b) The working introduction of November 24 states that MPI includes
(temporarily?) 

    \item  A simple way to create processes for the SPMD model

This kinda carries the implication that MPI is for programming in the
SPMD model. 

The January minutes state that

    It was agreed that explicit remarks that MPI is intended to be
    usable with multithreaded proesses and with MIMD (not just SPMD)
    programs should be added somewhere.

We at EPCC most strongly support the proposal that MPI should provide
for MIMD programs and not restrict itself to the world of SPMD
programming.  The SPMD model has been useful, and can be expected to
remain useful, for tweaking serial (usually Fortran77) programs in a
strictly data parallel fashion to derive a parallel program.  However,
this is not a string enough argument for restricting MPI to SPMD.  There
are a lot of applications out there which are not really suited to such
simple tweaking.  Further, we believe that MPI needs to provide support
for library writers, where libraries can consist of a procedure library
linked into user processes along with one or more library service
processes. 

The concern felt by users and gurus alike is that our perception of much
of the discussion in subcommittees is that it seems to be proceeding
with scant consideration of issues in MIMD programming as opposed to
SPMD programming.

I suggest that this should be prioritised within the MPI.  I am happy to
write a proposal or discussion document on these issues, but I have no
time to write either before the next meeting as my travel schedule
starts at 6am tomorrow.  So, I'm afraid this point was simply raising a
flag that there is concern, without a proposal on the matter, for which
I apologise. 

Looking forward to meeting and discussing at the meeting later this
week!

Best Wishes
Lyndon

         /--------------------------------------------------------\
    e||) | Lyndon J Clarke    Edinburgh Parallel Computing Centre | e||) 
    c||c | Tel: 031 650 5021  Email: lyndon@epcc.edinburgh.ac.uk  | c||c 
         \--------------------------------------------------------/


From owner-mpi-comm@CS.UTK.EDU  Mon Feb 15 10:21:06 1993
Received: from CS.UTK.EDU by surfer.EPM.ORNL.GOV (5.61/1.34)
	id AA04616; Mon, 15 Feb 93 10:21:06 -0500
Received: from localhost by CS.UTK.EDU with SMTP (5.61++/2.8s-UTK)
	id AA20711; Mon, 15 Feb 93 10:19:40 -0500
X-Resent-To: mpi-comm@CS.UTK.EDU ; Mon, 15 Feb 1993 10:19:38 EST
Errors-To: owner-mpi-comm@CS.UTK.EDU
Received: from antares.mcs.anl.gov by CS.UTK.EDU with SMTP (5.61++/2.8s-UTK)
	id AA20702; Mon, 15 Feb 93 10:19:36 -0500
Received: from godzilla.mcs.anl.gov by antares.mcs.anl.gov (4.1/SMI-GAR)
	id AA15992; Mon, 15 Feb 93 09:19:33 CST
From: gropp@antares.mcs.anl.gov (William Gropp)
Received: by godzilla.mcs.anl.gov (4.1/GeneV4)
	id AA27181; Mon, 15 Feb 93 09:19:31 CST
Date: Mon, 15 Feb 93 09:19:31 CST
Message-Id: <9302151519.AA27181@godzilla.mcs.anl.gov>
To: lyndon@epcc.ed.ac.uk
Cc: mpi-comm@cs.utk.edu
In-Reply-To: L J Clarke's message of Mon, 15 Feb 93 12:54:01 GMT <21675.9302151254@subnode.epcc.ed.ac.uk>
Subject: Mixed F77/C, MIMD(not SPMD)

   X-Resent-To: mpi-comm@CS.UTK.EDU ; Mon, 15 Feb 1993 07:54:12 EST
   Date: Mon, 15 Feb 93 12:54:01 GMT
   From: L J Clarke <lyndon@epcc.ed.ac.uk>
   Reply-To: lyndon@epcc.ed.ac.uk

Again, a few clarifications:

   b) The working introduction of November 24 states that MPI includes
   (temporarily?) 

       \item  A simple way to create processes for the SPMD model

   This kinda carries the implication that MPI is for programming in the
   SPMD model. 

My interpretation (and in fact, the reason that Rusty and I included such a
method in our implementation of the November draft) is that there needs to be
some way to write, entirely in MPI, a running program, and there is a chance
that we could agree on a method for running SPMD programs.  It was definately
NOT meant to exclude other models; just a position that MPI needs to include
some way to write a complete (at the source code level; we do not intend to
specify the OS interface to "launching" the program) parallel program for a
common and simple model.  I'd be quite happy adding text that indicates that
MPI is intended for MIMD models as well.  I would be very interested in seeing
a proposal for an interface for MIMD programs.

Bill 
From owner-mpi-comm@CS.UTK.EDU  Mon Feb 15 10:21:06 1993
Received: from CS.UTK.EDU by surfer.EPM.ORNL.GOV (5.61/1.34)
	id AA04617; Mon, 15 Feb 93 10:21:06 -0500
Received: from localhost by CS.UTK.EDU with SMTP (5.61++/2.8s-UTK)
	id AA20721; Mon, 15 Feb 93 10:19:42 -0500
X-Resent-To: mpi-comm@CS.UTK.EDU ; Mon, 15 Feb 1993 10:19:41 EST
Errors-To: owner-mpi-comm@CS.UTK.EDU
Received: from antares.mcs.anl.gov by CS.UTK.EDU with SMTP (5.61++/2.8s-UTK)
	id AA20713; Mon, 15 Feb 93 10:19:40 -0500
Received: from jadoube.mcs.anl.gov by antares.mcs.anl.gov (4.1/SMI-GAR)
	id AA15995; Mon, 15 Feb 93 09:19:37 CST
From: levine@antares.mcs.anl.gov (David Levine)
Received: by jadoube.mcs.anl.gov (4.1/GeneV4)
	id AA21322; Mon, 15 Feb 93 09:19:36 CST
Date: Mon, 15 Feb 93 09:19:36 CST
Message-Id: <9302151519.AA21322@jadoube.mcs.anl.gov>
To: lyndon@epcc.ed.ac.uk
Cc: mpi-comm@cs.utk.edu
Subject: Mixed F77/C, MIMD(not SPMD)

   X-Resent-To: mpi-comm@CS.UTK.EDU ; Mon, 15 Feb 1993 07:54:12 EST
   Date: Mon, 15 Feb 93 12:54:01 GMT
   From: L J Clarke <lyndon@epcc.ed.ac.uk>
   Reply-To: lyndon@epcc.ed.ac.uk

   Dear MPI Colleagues

   I'd like to raise a couple of points which I hope we can discuss at the
   meeting later this week, after lenghty discussions with a variety of
   local users. 

   In general the objectives of the MPI Forum are very well received.  Two
   specific concerns, of a very general nature, became apparent. 

   a) The introduction says that MPI is for programmers who wish to write
   portable programs in C and/or Fortran77.  The choice of languages is
   fine, although some may wish to use C++ and Fortran90.  The concern is
   whether MPI intends to allow, and if so in what manner, mixed language
   programming, i.e.  programs written in a mixture of C and Fortran77. 

   The observation is that C is most useful for library programming,
   whereas a large number of applications that we deal with are written in
   Fortran77.  (Users did not expect MPI say anything about cross-calling
   and such murky business, that is outwith message passing.)

   I propose that the make a statement of intent, possibly in the
   introduction, that mixed languages will be allowed/supported (I would
   hope that we could not make the decision to not allow/support mixture of
   C and F77 :-). This seems an easy thing to do.

Let me second this, if for no other reason than the lack of dynamic memory
allocation in Fortran 77, and the relatively small physical memory available
on the nodes of distributed-memory machines.  In porting Fortran 77 codes to
distributed-memory machines I consider the use of C for dynamic memory
allocation to be "mandatory."

--dave levine
From owner-mpi-comm@CS.UTK.EDU  Mon Feb 15 12:20:23 1993
Received: from CS.UTK.EDU by surfer.EPM.ORNL.GOV (5.61/1.34)
	id AA07231; Mon, 15 Feb 93 12:20:23 -0500
Received: from localhost by CS.UTK.EDU with SMTP (5.61++/2.8s-UTK)
	id AA25990; Mon, 15 Feb 93 12:18:19 -0500
X-Resent-To: mpi-comm@CS.UTK.EDU ; Mon, 15 Feb 1993 12:18:17 EST
Errors-To: owner-mpi-comm@CS.UTK.EDU
Received: from chert.CS.ORST.EDU by CS.UTK.EDU with SMTP (5.61++/2.8s-UTK)
	id AA25979; Mon, 15 Feb 93 12:18:15 -0500
Received: from sycamore.CS.ORST.EDU by research.CS.ORST.EDU (4.1/1.30)
	id AA03629; Mon, 15 Feb 93 09:18:12 PST
Date: Mon, 15 Feb 93 09:18:12 PST
From: pancake@chert.CS.ORST.EDU (Cherri Pancake)
Message-Id: <9302151718.AA03629@research.CS.ORST.EDU>
To: mpi-comm@cs.utk.edu
Subject: C/Fortran Compatibility


I agree with Lyndon Clarke that interlanguage compatibility needs to be
an explicitly stated goal of the standard.  The user community is assuming
that this is true....

Cherri Pancake
From owner-mpi-comm@CS.UTK.EDU  Mon Feb 15 13:17:38 1993
Received: from CS.UTK.EDU by surfer.EPM.ORNL.GOV (5.61/1.34)
	id AA09917; Mon, 15 Feb 93 13:17:38 -0500
Received: from localhost by CS.UTK.EDU with SMTP (5.61++/2.8s-UTK)
	id AA29053; Mon, 15 Feb 93 13:16:12 -0500
X-Resent-To: mpi-comm@CS.UTK.EDU ; Mon, 15 Feb 1993 13:16:11 EST
Errors-To: owner-mpi-comm@CS.UTK.EDU
Received: from NA-GW.CS.YALE.EDU by CS.UTK.EDU with SMTP (5.61++/2.8s-UTK)
	id AA29045; Mon, 15 Feb 93 13:16:09 -0500
Received: from YOGI.NA.CS.YALE.EDU by CASPER.NA.CS.YALE.EDU via SMTP; Mon, 15 Feb 1993 13:16:06 -0500
Received: by YOGI.NA.CS.YALE.EDU (Sendmail-5.65c/res.client.cf-3.5)
	id AA28124; Mon, 15 Feb 1993 13:16:04 -0500
Date: Mon, 15 Feb 1993 13:16:04 -0500
From: berryman-harry@CS.YALE.EDU (Harry Berryman)
Message-Id: <199302151816.AA28124@YOGI.NA.CS.YALE.EDU>
To: mpi-comm@cs.utk.edu
Subject: C/Fortran Compatibility

Ok, folks,

What exactly do you mean by "interlanguage compatibility"?
In particular are we going to ask that F77 programs be able to call 
C routines? Although I agree that this is a good idea, I don't think
that dictating compiler (and linker) standards is in the jurisdiction 
of this committee. 

On a slightly different issue, it is not clear to me that a C++
interface would be different from an ANSI C interface. Although 
it is possible to make an object-oriented interface definition, 
I think that such a definition would be unwise for several reasons.
First, if an ANSI C interface is available, anyone wanting an 
object oriented C++ interface could write one in a portable way.
Second, I don't think that enough object-oriented message-passing 
interfaces have been written to determine what a standard should look like. 
Of course, I'm willing to persuaded on either point.

-scott berryman 
Chairanimal, Language Binding 
From owner-mpi-comm@CS.UTK.EDU  Mon Feb 15 14:00:27 1993
Received: from CS.UTK.EDU by surfer.EPM.ORNL.GOV (5.61/1.34)
	id AA11570; Mon, 15 Feb 93 14:00:27 -0500
Received: from localhost by CS.UTK.EDU with SMTP (5.61++/2.8s-UTK)
	id AA01123; Mon, 15 Feb 93 13:59:09 -0500
X-Resent-To: mpi-comm@CS.UTK.EDU ; Mon, 15 Feb 1993 13:59:07 EST
Errors-To: owner-mpi-comm@CS.UTK.EDU
Received: from Aurora.CS.MsState.Edu by CS.UTK.EDU with SMTP (5.61++/2.8s-UTK)
	id AA01110; Mon, 15 Feb 93 13:59:04 -0500
Received:  by Aurora.CS.MsState.Edu (4.1/6.0s-FWP);
	   id AA00836; Mon, 15 Feb 93 12:58:50 CST
Date: Mon, 15 Feb 93 12:58:50 CST
From: Tony Skjellum <tony@Aurora.CS.MsState.Edu>
Message-Id: <9302151858.AA00836@Aurora.CS.MsState.Edu>
To: mpi-comm@cs.utk.edu, berryman-harry@CS.YALE.EDU
Subject: Re: C/Fortran Compatibility

I agree with Scott.

I think that a valid, related point, is that there need to be a C interface
which is convenient for C programmers, not just a FORTRAN interface, which
is usable by C programmers, but not natural.

- Tony


----- Begin Included Message -----

From owner-mpi-comm@CS.UTK.EDU Mon Feb 15 12:41:33 1993
X-Resent-To: mpi-comm@CS.UTK.EDU ; Mon, 15 Feb 1993 13:16:11 EST
Date: Mon, 15 Feb 1993 13:16:04 -0500
From: berryman-harry@CS.YALE.EDU (Harry Berryman)
To: mpi-comm@cs.utk.edu
Subject: C/Fortran Compatibility
Content-Length: 937

Ok, folks,

What exactly do you mean by "interlanguage compatibility"?
In particular are we going to ask that F77 programs be able to call 
C routines? Although I agree that this is a good idea, I don't think
that dictating compiler (and linker) standards is in the jurisdiction 
of this committee. 

On a slightly different issue, it is not clear to me that a C++
interface would be different from an ANSI C interface. Although 
it is possible to make an object-oriented interface definition, 
I think that such a definition would be unwise for several reasons.
First, if an ANSI C interface is available, anyone wanting an 
object oriented C++ interface could write one in a portable way.
Second, I don't think that enough object-oriented message-passing 
interfaces have been written to determine what a standard should look like. 
Of course, I'm willing to persuaded on either point.

-scott berryman 
Chairanimal, Language Binding 


----- End Included Message -----


From owner-mpi-comm@CS.UTK.EDU  Mon Feb 15 14:08:46 1993
Received: from CS.UTK.EDU by surfer.EPM.ORNL.GOV (5.61/1.34)
	id AA11680; Mon, 15 Feb 93 14:08:46 -0500
Received: from localhost by CS.UTK.EDU with SMTP (5.61++/2.8s-UTK)
	id AA01543; Mon, 15 Feb 93 14:07:50 -0500
X-Resent-To: mpi-comm@CS.UTK.EDU ; Mon, 15 Feb 1993 14:07:49 EST
Errors-To: owner-mpi-comm@CS.UTK.EDU
Received: from sol.cs.wmich.edu by CS.UTK.EDU with SMTP (5.61++/2.8s-UTK)
	id AA01534; Mon, 15 Feb 93 14:07:48 -0500
Received: from id.wmich.edu by cs.wmich.edu (4.1/SMI-4.1)
	id AA01566; Mon, 15 Feb 93 14:00:38 EST
Date: Mon, 15 Feb 93 14:00:38 EST
From: john@cs.wmich.edu (John Kapenga)
Message-Id: <9302151900.AA01566@cs.wmich.edu>
To: mpi-comm@CS.UTK.EDU
Subject:  C/Fortran Compatibility

Asking for compatibility is a lot in some respects.  going far
beyond the MPI interface - such as asking a malloc from a C
subroutine to "work" when called from a Fortran program.
(library name collisions - need for initializations for both
environments, cleaning up both environments  etc.)

I want to see them together too, but....

Perhaps we should not make it a full "requirement", but rather
be careful to set up the MPI language bindings so that they could
work together from C and Fortran. and indicate that this is intended
on environments supporting mixed programs.

I know of no standards work on mixed programs and recall the the
discussion of it (ANSI?) as a general area for standardization a
couple years back being postponed as too "hairy".

cheers - john
From owner-mpi-comm@CS.UTK.EDU  Mon Feb 15 14:24:08 1993
Received: from CS.UTK.EDU by surfer.EPM.ORNL.GOV (5.61/1.34)
	id AA12649; Mon, 15 Feb 93 14:24:08 -0500
Received: from localhost by CS.UTK.EDU with SMTP (5.61++/2.8s-UTK)
	id AA02252; Mon, 15 Feb 93 14:23:11 -0500
X-Resent-To: mpi-comm@CS.UTK.EDU ; Mon, 15 Feb 1993 14:23:10 EST
Errors-To: owner-mpi-comm@CS.UTK.EDU
Received: from chert.CS.ORST.EDU by CS.UTK.EDU with SMTP (5.61++/2.8s-UTK)
	id AA02243; Mon, 15 Feb 93 14:23:08 -0500
Received: from sycamore.CS.ORST.EDU by research.CS.ORST.EDU (4.1/1.30)
	id AA06780; Mon, 15 Feb 93 11:23:02 PST
Date: Mon, 15 Feb 93 11:23:02 PST
From: pancake@chert.CS.ORST.EDU (Cherri Pancake)
Message-Id: <9302151923.AA06780@research.CS.ORST.EDU>
To: mpi-comm@cs.utk.edu
Subject: hat is Interlanguage Compatibility?


To me, multilanguage support means that:

	(a) we provide both C and Fortran programmatic interfaces, and
	(b) operationally, there will be no perceptible difference whether
		the programmer uses the C interface, the Fortran, or
		both in his/her program.

Cherri Pancake
From owner-mpi-comm@CS.UTK.EDU  Mon Feb 15 14:36:03 1993
Received: from CS.UTK.EDU by surfer.EPM.ORNL.GOV (5.61/1.34)
	id AA13372; Mon, 15 Feb 93 14:36:03 -0500
Received: from localhost by CS.UTK.EDU with SMTP (5.61++/2.8s-UTK)
	id AA02815; Mon, 15 Feb 93 14:34:51 -0500
X-Resent-To: mpi-comm@CS.UTK.EDU ; Mon, 15 Feb 1993 14:34:50 EST
Errors-To: owner-mpi-comm@CS.UTK.EDU
Received: from NA-GW.CS.YALE.EDU by CS.UTK.EDU with SMTP (5.61++/2.8s-UTK)
	id AA02805; Mon, 15 Feb 93 14:34:49 -0500
Received: from YOGI.NA.CS.YALE.EDU by CASPER.NA.CS.YALE.EDU via SMTP; Mon, 15 Feb 1993 14:34:46 -0500
Received: by YOGI.NA.CS.YALE.EDU (Sendmail-5.65c/res.client.cf-3.5)
	id AA28237; Mon, 15 Feb 1993 14:34:44 -0500
Date: Mon, 15 Feb 1993 14:34:44 -0500
From: berryman-harry@CS.YALE.EDU (Harry Berryman)
Message-Id: <199302151934.AA28237@YOGI.NA.CS.YALE.EDU>
To: mpi-comm@cs.utk.edu
Subject: Any opinions?

In my earlier message, I suggested that a C++ interface was not needed 
if an ANIS C interface was available. Are there any objections to this?

-scott berryman 

From owner-mpi-comm@CS.UTK.EDU  Mon Feb 15 14:44:24 1993
Received: from CS.UTK.EDU by surfer.EPM.ORNL.GOV (5.61/1.34)
	id AA13826; Mon, 15 Feb 93 14:44:24 -0500
Received: from localhost by CS.UTK.EDU with SMTP (5.61++/2.8s-UTK)
	id AA03257; Mon, 15 Feb 93 14:43:38 -0500
X-Resent-To: mpi-comm@CS.UTK.EDU ; Mon, 15 Feb 1993 14:43:37 EST
Errors-To: owner-mpi-comm@CS.UTK.EDU
Received: from NA-GW.CS.YALE.EDU by CS.UTK.EDU with SMTP (5.61++/2.8s-UTK)
	id AA03248; Mon, 15 Feb 93 14:43:36 -0500
Received: from YOGI.NA.CS.YALE.EDU by CASPER.NA.CS.YALE.EDU via SMTP; Mon, 15 Feb 1993 14:43:34 -0500
Received: by YOGI.NA.CS.YALE.EDU (Sendmail-5.65c/res.client.cf-3.5)
	id AA28255; Mon, 15 Feb 1993 14:43:33 -0500
Date: Mon, 15 Feb 1993 14:43:33 -0500
From: berryman-harry@CS.YALE.EDU (Harry Berryman)
Message-Id: <199302151943.AA28255@YOGI.NA.CS.YALE.EDU>
To: mpi-comm@cs.utk.edu
Subject: Perhaps another place?

Cherri,

Perhaps we should carry on the thread about C++, ANSI C, F77, and F90 
to the mpi-lang mailing list. 

At any rate, I'm very much for having the interface consistent 
across languages. This does however, limit what we can do in C++
and F90. We cannot, for example, use methods in C++ or optional 
arguments in F90. Will such limitations cause much gnashing of teeth
in the user community? Will we hate ourselves in a year or two for 
not taking advantage of the truly rightous F90 features?

-scott berryman
From owner-mpi-comm@CS.UTK.EDU  Mon Feb 15 15:11:20 1993
Received: from CS.UTK.EDU by surfer.EPM.ORNL.GOV (5.61/1.34)
	id AA14568; Mon, 15 Feb 93 15:11:20 -0500
Received: from localhost by CS.UTK.EDU with SMTP (5.61++/2.8s-UTK)
	id AA04587; Mon, 15 Feb 93 15:09:52 -0500
X-Resent-To: mpi-comm@CS.UTK.EDU ; Mon, 15 Feb 1993 15:09:51 EST
Errors-To: owner-mpi-comm@CS.UTK.EDU
Received: from ssdintel.ssd.intel.com by CS.UTK.EDU with SMTP (5.61++/2.8s-UTK)
	id AA04578; Mon, 15 Feb 93 15:09:49 -0500
Received: from tualatin.SSD.intel.com by SSD.intel.com (4.1/SMI-4.1)
	id AA25287; Mon, 15 Feb 93 11:39:31 PST
Date: Mon, 15 Feb 93 11:39:31 PST
Message-Id: <9302151939.AA25287@SSD.intel.com>
Received: by tualatin.SSD.intel.com (4.1/SMI-4.0)
	id AA06755; Mon, 15 Feb 93 11:39:30 PST
From: Bob Knighten <knighten@SSD.intel.com>
Sender: knighten@SSD.intel.com
To: john@cs.wmich.edu
Cc: mpi-comm@CS.UTK.EDU
Subject: Re: C/Fortran Compatibility
In-Reply-To: <9302151900.AA01566@cs.wmich.edu>
References: <9302151900.AA01566@cs.wmich.edu>
Reply-To: knighten@SSD.intel.com (Bob Knighten)

POSIX Standardized Profiles are one standard arena where some effort is being
made to guarantee some expected level of interoperability.  My POSIX working
group (P1003.14) is producing the P1003.18 profile for "classic POSIX"
covering P1003.1 (system interfaces) and P1003.2 (shell and utilities).  This
does not include networks or any of the serious problems regarding
interoperability.  

In this context we have been struggling just to find reasonable requirements
to express such expectations as that a file written by a C program can be read
by a FORTRAN program or an Ada program.  We would not even dream of trying to
stadardized the way you might link routines produced by different language
compilers! 

-- Bob

Robert L. Knighten	             | knighten@ssd.intel.com
Intel Supercomputer Systems Division | 
15201 N.W. Greenbrier Pkwy.	     | (503) 629-4315
Beaverton, Oregon  97006	     | (503) 629-9147 [FAX]
From owner-mpi-comm@CS.UTK.EDU  Mon Feb 15 17:26:17 1993
Received: from CS.UTK.EDU by surfer.EPM.ORNL.GOV (5.61/1.34)
	id AA18114; Mon, 15 Feb 93 17:26:17 -0500
Received: from localhost by CS.UTK.EDU with SMTP (5.61++/2.8s-UTK)
	id AA10980; Mon, 15 Feb 93 17:25:12 -0500
X-Resent-To: mpi-comm@CS.UTK.EDU ; Mon, 15 Feb 1993 17:25:11 EST
Errors-To: owner-mpi-comm@CS.UTK.EDU
Received: from chert.CS.ORST.EDU by CS.UTK.EDU with SMTP (5.61++/2.8s-UTK)
	id AA10972; Mon, 15 Feb 93 17:25:09 -0500
Received: from sycamore.CS.ORST.EDU by research.CS.ORST.EDU (4.1/1.30)
	id AA11917; Mon, 15 Feb 93 14:25:03 PST
From: pancake@chert.CS.ORST.EDU (Cherri Pancake)
Received: by sycamore.CS.ORST.EDU (4.1/CS-Client)
	id AA10017; Mon, 15 Feb 93 14:24:59 PST
Date: Mon, 15 Feb 93 14:24:59 PST
Message-Id: <9302152224.AA10017@sycamore.CS.ORST.EDU>
To: mpi-comm@cs.utk.edu
Subject: Response to Bob Knighten's comments


Bob said:
?We would not even dream of trying to
>stadardized the way you might link routines produced by different language
>compilers! 

I don't think that's necessarily the goal of multilanguage support.  I
should be able to write a program that combines routines written in Fortran
and C, using MPI for the message-passing.  That does not mean that the
function calls look identical in the two source languages, nor that there
be a single set of library routines capable of servicing both.  But it
does mean that I should be able to send a message from a Fortran routine,
calling the Fortran library module, and receive it from a C routine that
uses the corresponding C library module.

Cherri Pancake
From owner-mpi-comm@CS.UTK.EDU  Mon Feb 15 17:45:07 1993
Received: from CS.UTK.EDU by surfer.EPM.ORNL.GOV (5.61/1.34)
	id AA19007; Mon, 15 Feb 93 17:45:07 -0500
Received: from localhost by CS.UTK.EDU with SMTP (5.61++/2.8s-UTK)
	id AA11672; Mon, 15 Feb 93 17:43:36 -0500
X-Resent-To: mpi-comm@CS.UTK.EDU ; Mon, 15 Feb 1993 17:43:35 EST
Errors-To: owner-mpi-comm@CS.UTK.EDU
Received: from enet-gw.pa.dec.com by CS.UTK.EDU with SMTP (5.61++/2.8s-UTK)
	id AA11664; Mon, 15 Feb 93 17:43:32 -0500
Received: by enet-gw.pa.dec.com; id AA27000; Mon, 15 Feb 93 14:41:53 -0800
Message-Id: <9302152241.AA27000@enet-gw.pa.dec.com>
Received: from rdvax.enet; by decwrl.enet; Mon, 15 Feb 93 14:43:30 PST
Date: Mon, 15 Feb 93 14:43:30 PST
From: MPS ENGINEERING 223-4656 <benson@rdvax.enet.dec.com>
To: mpi-comm@cs.utk.edu
Cc: benson@rdvax.enet.dec.com
Apparently-To: mpi-comm@cs.utk.edu
Subject: Some notes on MPI

						15-FEB-1993

Some general comments from the Massively Parallel Systems Group of
Digital Equipment Corporation on MPI:

The MPI effort must strive to Keep It Simple !!!
The multiple levels idea is good as long as it is clearly
stated what the model is in terms of mixing the use of levels
within an application.

Language independence must be worried about.... C and FORTRAN
are a MUST today, C++, ADA, and others will be of interest in
the future.

MPI must be a reliable message passing system. i.e. The user must not
be burdened with running a protocol on top of MPI to support
retransmission, etc..... (An optional non-reliable mode should
not be ruled out.)

MPI should be thread safe.  All functions should return error codes
not just a fail/succeed status.  All subroutines should have a status 
argument into which an error code can be returned.  Groups and communication
contexts discussions and specifications must include thread usage rules and
guidelines.

When in doubt give the user the choice about buffering and other less
than obvious characteristics.... But, consistently warn about portability
issues WHENEVER a choice is offered.

FLAG ALL CHOICES THAT CAN CAUSE PORTABILITY PROBLEMS !!!
Be particularly careful with the homogeneous vs heterogeneous environment
issues. i.e. Packing verses raw data, XDR etc....  Models / guidelines
should be included to address the issue of sending structures and endian
sensitive data between heterogeneous environments.

When the syntax effort gets serious: All names should be readable, 
descriptive, and consistent.  No numeric constants should exist in the
MPI standard.  All constants should be defined symbolically only !!!
(POSIX inherited a lot of stuff from SVID and should not be use as a
 strict model)
  
Data hiding via opaque types should be used unless there is a truly
justifiable reason.

A message type registration facility should be considered as an alternative
to communication contexts.
From owner-mpi-comm@CS.UTK.EDU  Mon Feb 15 18:56:14 1993
Received: from CS.UTK.EDU by surfer.EPM.ORNL.GOV (5.61/1.34)
	id AA20138; Mon, 15 Feb 93 18:56:14 -0500
Received: from localhost by CS.UTK.EDU with SMTP (5.61++/2.8s-UTK)
	id AA14806; Mon, 15 Feb 93 18:54:48 -0500
X-Resent-To: mpi-comm@CS.UTK.EDU ; Mon, 15 Feb 1993 18:54:46 EST
Errors-To: owner-mpi-comm@CS.UTK.EDU
Received: from Aurora.CS.MsState.Edu by CS.UTK.EDU with SMTP (5.61++/2.8s-UTK)
	id AA14798; Mon, 15 Feb 93 18:54:45 -0500
Received:  by Aurora.CS.MsState.Edu (4.1/6.0s-FWP);
	   id AA01171; Mon, 15 Feb 93 17:54:04 CST
Date: Mon, 15 Feb 93 17:54:04 CST
From: Tony Skjellum <tony@Aurora.CS.MsState.Edu>
Message-Id: <9302152354.AA01171@Aurora.CS.MsState.Edu>
To: benson@rdvax.enet.dec.com
Subject: Re: Some notes on MPI
Cc: mpi-comm@cs.utk.edu

Please elaborate on these points so we can discuss them at the meeting,
in the context subcommitee.
  
>Data hiding via opaque types should be used unless there is a truly
>justifiable reason.
-- what does this mean????

>A message type registration facility should be considered as an alternative
>to communication contexts.

I see "current typing practice without any registration," 
      "current typing practice plus context registration,"
and   "typing registration with no degrees of freedom left for user,"
as the three alternatives.  I think the latter is too restrictive, because
user cannot encode semantically meaningful bits into types at all.  In the
first (current) option, this can be done, but there are big risks of
conflicts in real programs.  Hence, I continue to favor the middle option.

- Tony

From owner-mpi-comm@CS.UTK.EDU  Tue Feb 16 08:18:41 1993
Received: from CS.UTK.EDU by surfer.EPM.ORNL.GOV (5.61/1.34)
	id AA16998; Tue, 16 Feb 93 08:18:41 -0500
Received: from localhost by CS.UTK.EDU with SMTP (5.61++/2.8s-UTK)
	id AA19183; Tue, 16 Feb 93 08:16:05 -0500
X-Resent-To: mpi-comm@CS.UTK.EDU ; Tue, 16 Feb 1993 08:16:03 EST
Errors-To: owner-mpi-comm@CS.UTK.EDU
Received: from inet-gw-1.pa.dec.com by CS.UTK.EDU with SMTP (5.61++/2.8s-UTK)
	id AA19171; Tue, 16 Feb 93 08:15:51 -0500
Received: by inet-gw-1.pa.dec.com; id AA16702; Tue, 16 Feb 93 05:15:46 -0800
Received: by mpsg.mps.mlo.dec.com; id AA14150; Tue, 16 Feb 93 08:15:38 -0500
Date: Tue, 16 Feb 93 08:15:38 -0500
From: linden@mps.mlo.dec.com (David C.P. Linden)
Message-Id: <9302161315.AA14150@mpsg.mps.mlo.dec.com>
To: tony@Aurora.CS.MsState.Edu
Cc: benson@rdvax.enet.dec.com, mpi-comm@cs.utk.edu
In-Reply-To: Tony Skjellum's message of Mon, 15 Feb 93 18:57:10 -0500 <9302152357.AA13311@mpsg.mps.mlo.dec.com>
Subject: Some notes on MPI

[I work with Ed in Digital's Massively Parallel Systems Group.]

>Data hiding via opaque types should be used unless there is a truly
>justifiable reason.

This means that, unless there is good reason, the user gets a cookie
and must use cookie-manipulation routines to perform actions.  A major
example is process ids.  We think PVM took the better approach by
having PIDs be opaque integers.  This allows processes to join and
leave, which MPI seems to rule out, but which we think should be
reconsidered.  Having the notion of 0..n-1 or 1..n may have some level
of convenience, but we think it is too restrictive.  (Additionally,
there is the paradigm problem.  0..n-1 is the C way of numbering, but
1..n is the FORTRAN.)

>A message type registration facility should be considered as an alternative
>to communication contexts.

A big problem we see with communication contexts is that they aren't
thread-safe.  Their purported purpose is to ensure different pieces of
code (e.g., libraries, user codes) don't conflict with each other in
the space of types.  That's a real problem worthy of solution, but the
lack of thread-safety in communication contexts casts doubt on CCs as
a solution.  A type registration system (compare (very loosely) the X
windows color space registration system) would allow users and
libraries to allocate and deallocate a range of types.  With
appropriate allocate routines, you could specify alignment constraints
in order to bit-encode semantics.
From owner-mpi-comm@CS.UTK.EDU  Tue Feb 16 10:29:05 1993
Received: from CS.UTK.EDU by surfer.EPM.ORNL.GOV (5.61/1.34)
	id AA25120; Tue, 16 Feb 93 10:29:05 -0500
Received: from localhost by CS.UTK.EDU with SMTP (5.61++/2.8s-UTK)
	id AA25032; Tue, 16 Feb 93 10:27:35 -0500
X-Resent-To: mpi-comm@CS.UTK.EDU ; Tue, 16 Feb 1993 10:27:33 EST
Errors-To: owner-mpi-comm@CS.UTK.EDU
Received: from chert.CS.ORST.EDU by CS.UTK.EDU with SMTP (5.61++/2.8s-UTK)
	id AA25024; Tue, 16 Feb 93 10:27:25 -0500
Received: from sycamore.CS.ORST.EDU by research.CS.ORST.EDU (4.1/1.30)
	id AA02715; Tue, 16 Feb 93 07:27:19 PST
From: pancake@chert.CS.ORST.EDU (Cherri Pancake)
Received: by sycamore.CS.ORST.EDU (4.1/CS-Client)
	id AA11099; Tue, 16 Feb 93 07:27:18 PST
Date: Tue, 16 Feb 93 07:27:18 PST
Message-Id: <9302161527.AA11099@sycamore.CS.ORST.EDU>
To: mpi-comm@cs.utk.edu
Subject: Continued comments on multilanguage support




In response to Scott Berryman's comments:
>At any rate, I'm very much for having the interface consistent 
>across languages. This does however, limit what we can do in C++
>and F90. We cannot, for example, use methods in C++ or optional 
>arguments in F90. Will such limitations cause much gnashing of teeth
>in the user community? Will we hate ourselves in a year or two for 
>not taking advantage of the truly rightous F90 features?

I'm not convinced that optional arguments are all that good for the
general technical computing community, anyway, unless there is VERY
GOOD interprocedural argument checking going on (which lets out most
current systems).  Consistency is much more important at this point 
in the evolution cycle.

Cherri Pancake

P.S.  I tried to post this to mpi-lang, but got rejected.

From owner-mpi-comm@CS.UTK.EDU  Tue Feb 16 15:03:44 1993
Received: from CS.UTK.EDU by surfer.EPM.ORNL.GOV (5.61/1.34)
	id AA08057; Tue, 16 Feb 93 15:03:44 -0500
Received: from localhost by CS.UTK.EDU with SMTP (5.61++/2.8s-UTK)
	id AA10592; Tue, 16 Feb 93 15:00:35 -0500
X-Resent-To: mpi-comm@CS.UTK.EDU ; Tue, 16 Feb 1993 15:00:32 EST
Errors-To: owner-mpi-comm@CS.UTK.EDU
Received: from sol.cs.wmich.edu by CS.UTK.EDU with SMTP (5.61++/2.8s-UTK)
	id AA10578; Tue, 16 Feb 93 15:00:29 -0500
Received: from s307.cs.wmich.edu by cs.wmich.edu (4.1/SMI-4.1)
	id AA07659; Tue, 16 Feb 93 14:53:15 EST
Date: Tue, 16 Feb 93 14:53:15 EST
From: john@cs.wmich.edu (John Kapenga)
Message-Id: <9302161953.AA07659@cs.wmich.edu>
To: mpi-comm@cs.utk.edu



Hi;

A late pre-meeting post. I hope we can talk about the possibility
of adding an io specification to MPI in Dallas.

A couple of us (Leslie Hart, ... and myself) have been talking about
possible MPI io specifications.

Here is a brief outline of IO specifications for one option, a loosely
synchronized version of multiple IO based on the ANSI-C librtary. 
Placing "mp_" before all names is fine (It is my preference to do that
in all libraries).

Leslie and others have a seek and read/write primative whuich has merit
if processes were going to read from differeent "random" positions in a
file. Assuming a message is sent for every call this could be high overhead,
but it keeps life simple. This also allows IO request to be asynchronous
(assuming the seeks are absolute), although we may wear out the disk head
actuator ;-).

Perhaps we should set basic goals for an IO system: 
1) interaction with a terminal
2) writing and reading buffers to files, which should correspond
   closely to sending and recieving messages.
3) three modes of operation - single_io(), ordered_io() and unordered_io()
4) some specification of conditions for deadlock free use.

Some questions:
Should all IO be loosely synchronized?
Should all IO "require" a message be sent with that request
	(implying no buffering / queueing)?
If not "require" then, should the user have any control over
	the buffering / queueing?

I'm not sure about how to address hetrogenious access to a file. I
have seen a couple options. I would tend to not want to force a "binary"
file compatable with all architectures. Text files should not pose as large
a problem. It does appear binary conversions by the message system in
pt-2-pt has supporters, if that works out then soemthing could here too.

This is still a thought exercise, not a proposal. 

john
----------------------------------------------------------------
The Three MPI IO Modes

The three levels of routines below and the three IO-modes are orthogonal.

All IO routines must be executed by all members of a group in
a loosely synchronized manner. All processes must invoke the same
primative on the same stream.

The following IO routines operate in three modes. Initializing IO
and switching between modes using:
	single_io(group)
	ordered_io(group)
	unordered_io(group)
Terminating IO from a group is done by:
	end_io(group)
Each of these calls must be executed by all members of a group.

In single_io() mode the IO routines should function from a process
as described in the relevant standard. On output or in setting the
file position the results from only one of the processes will be
done. On input all processes receive the same values.

In ordered_io() and unordered_io() the results of setting file
positions are done for only one process. Input and Output from a
group of size p results in p separate items being read or written.

The ordered_io() mode requires the p IO operations to occur in process order.
(If we have a group order this should be group order) The order of the p IO
operations in unordered_io() mode is unspecified.

****************************************************************

The POSIX IEEE Std 1003.1-1988 C functions
From Chapter 8, 4.9  (Which is a pointer to the ANSI-C standard
X3.159-1989 which is essentially the same as ISO 9899-1990)
Those functions not mentioned in POSIX which were later included
in the ANSI-C are still be be considered required by POSIX.

Below:
	the functions marked with a "*" are non-ANSI-C
	the functions marked with a 1 provide a complete set,
		without access to buffer cantrol.

Level-1 IO --------------------------------------------------------
1	fopen(), 
		FILE * fopen(const char *name, const char *mode)
	freopen(), 
		FILE * fopen(const char *name, const char *mode, FILE *stream)
1	fclose(), 
		int fclose(FILE *stream)
1	clearerr(), 
		int clearerr(FILE *stream)
1	feof(), 
		int feof(FILE *stream)
1	ferror(), 
		int ferror(FILE *stream)
	setvbuf(),     (not mentioned in POSIX, but it is in ANSI-C)
		int setvbuf(FILE *stream, char *buf, int smode, size_t size)
	fflush(),
		int fflush(FILE *stream)
	rewind(),
		int rewind(FILE *stream)
	fsetpos(),  (Not in POSIX, but in ANSI-C)
		int fsetpos(FILE *stream, const f_pos *pos)
1	fseek(), 
		int fseek(FILE *stream, long offset, int ptrnane)
	ftell(), 
		long ftell(FILE *stream)
	fgetpos()      (Not in POSIX, but in ANSI-C),
		int fgetpos(FILE *stream, fpos_t *pos)
1	fread(), 
		int fread(char *ptr, int size, int nitems, FILE *stream);
1*	sfread(),     (a possible non-ANSI-C stride version)
1*	ifread(),     (a possible non-ANSI_C iovec version)
	fwrite(),  
		int fwrite(char *ptr, int size, int nitems, FILE *stream);
1*	sfwrite(),    (a possible non-ANSI-C stride version)
1*	ifwrite(),    (a possible non-ANSI_C iovec version)

Level-2 IO --------------------------------------------------------
	setbuf(),
		void setbuf(FILE *stream, char *buff)
	perror(), 
		int perror(const  char *err)
1	printf(), fprintf(), sprintf(),
1	scanf(), fscanf(), sscanf().

Other ANSI-C IO --------------------------------------------------------
	putc(), putchar(), puts(),
	fputc(), fputs(), 
	getc(), getchar(), gets(), 
	fgetc(), fgets(), 

	vprintf(), vfprintf(), vsprintf(), (Not in POSIX, but in ANSI-C)
	remove(), rename+(), 
	tmpfile(), tmpname(), 
	ungetc(),

******************************************************************
Remarks: Deadlock ------------------------------------------------
Something must be said about deadlock, this needs to be addressed
as part of the collective communications and pt 2 tp too. Some
options are No deadlock will occur if:
  no messages are "active" while any IO mode is enabled (too strong but safe)
  no messages are "active" in the IO group.
  no messages are "active" in the IO group, during the execution of each
	IO opeation.
  all processes in the IO group have free receive/transmit buffers during the
	execution of each IO operation.
Some type of inquiry function might help.
  All processes in the group may execute a probe to find out if it is safe
  to call the IO operations (humm....)

Remarks: Sizes of objects ----------------------------------------
Restriction on the sizes of objects generated by the different processes
could be made. Possible examples:
   In fread()/fwrite() size and nitems must be identical in all processes.
   In printf()/scanf() the same format string appears in all processes.
These would make implementation faster and easier (and should be true in
single_io() mode IO.) It does make slightly irregular data distribution
harder.  (Why can't P always divide N :-) ). 

Remarks: Buffering  -----------------------------------------------
There are two types of buffering to consider, queueing multiple output 
requests before sending them and buffering the response to input requests
(as the normal ANSI-C buffered IO rouitines do.)  Buffering works
in single_io() mode, but it may not make sense in ordered_io() or
unordered_io() modes. Queueing input requests could make sense,
for non-blocking requests.

In our distributed graphics system we have some asynchronious commands,
which are not loosely synchronized. For these commnads each process gives
an independent stream to the server, which it must de-mux into a single
valid stream.  Any calls which change "state" in the graphics server are
loosely synchronized.  So the server dose not have to keep state for each
process, just insure a stream can be interupted from one process at a
valid place before switching to another processes stream.  I don't
think that type of IO is needed most.

Since the most heavy use of IO would be the ordered_io() / unordered_io(),
and that would seem to be large size chuncks of data, buffering multiple
IO requests may not be needed.  For terminal IO, the usual line buffering
should be OK.

What I'm really trying to figure out is, if setting up things with
no buffering/queueing specified has a negitive enough impact on
any applications to worry about. That boils down to how applications
would use IO routines.

Remarks: Higher level IO -----------------------------------------
Mapping r-dimensional data onto a logical s-dimensional process array is
one fundimental high level IO operation. The ordered_io() and unordered_io()
calls above allow a fixed dimension data file to be operated on by
a fixed dimension array.  I'm not sure how often dimensions above 3
are needed. That is, how often problems of higher dimension can't 
be well handled by projecting into 1-3 dimensions first (for the 
data/process distribution).

If the size of the array was changed, a single_io() read of the file
could be done, disgarding items not needed. For non-parallel disks
(from a host or other single source) on an  MIMD machine, I don't think
this posses a serious problem. 

For high preformance parallel disks, or disks distributed on a network,
that could be unacceptable. The only way to support that type of
IO would be to define the process array and the data file and let
the system sort it out - as well as choose the files internal distribution.
(As in Hart's system propoasal).

The EXPRESS model is successful and should be considered.

Remarks: Multiple process IO -------------------------------------
What if anything to say about multiple processes operating on files?

limit the total number of open files? (eg System Constant  12)
limit any file to be open by only one group for writing, for defined
	behavior?
allow any number of groups to open the same file for reading?
	(requires the server or group to keep state for each group).

Remarks: The three buffering modes in ANSI-C. ---------------------
The three buffering modes are:
	unbuffered
	block buffered
	line buffered
by default:
	stdout is line buffered
	stderr is unbuffered
	all others are block buffered
The 
	setbuf(FILE *stream, char *buf) 
call can set buffering on a newly opened stream to unbuffered
(buf == NULL) or block buffered, using a user allocated buffer. 
he buffer buf must be of a fixed system supplied size.
Useful buffering calls, not mentioned in POSIX:
	setbuffer(FILE *stream, char *buf, int size), allows user
		specified buffer sizes to be used.
	setlinebuf(FILE* stream)
		puts a stream into line buffered mode.
	setvbuf(FILE *stream, char *buf, int type, int size)
		sets any of the three modes (using type) and
		allows a user sized buffer to be used.
setvbuf is in ANSI-C and I suggest it be included.

The tie in of the buffer and sending a message could be made,
implying a message is sent when the buffer is filled. Giving
the user some control. I'm not sure I would like to state
something like this as a requirement.

Remarks: non-C Language IO -----------------------------------------
The functions above are clearly C oriented. Compatioble calls
could be available in other language bindings. No attempt to
specify native Fortran IO in MPI is suggested.

Remarks: The varargs forms -----------------------------------------
The varags form of the buffered output family (vprintf(), vfprintf() and
vsprintf() ) is in ANSI-C (it was not mentioned in POSIX). They could
be useful in avoiding extra memory copies. 

There are not corresponding varagr buffered input versions defined
in ANSI-C.	

I would suggest that they would not be as useful as a stride and iovec
version of the fread() and fwrite() calls.  I think iovev/stride versions
of fread() and fwrite() should might be the first extension to the ANSI-C
standard to consider including in Level-1 IO. The format for these would
be compatible with whatever the pt-2-pt calls become.

Remarks: Blocking, Non-Blocking and Synchronized modes ----------
Some of these calls could be used in all 3 forms.
The setvbuf() call already could give a lot of control over buffering.
It might be wise to only consider "extra" modes for the fread() and
fwrite(), which would correspond the modes finally in pt2pt.
(though if extra modes are implemented here they should be easy for
the implementer to add to calls such as fprintf() and fscanf() )

Remarks: The modes in the fopen call ----------------------------
Limiting the fopen modes to read only and write only would simplify
some things.

Remarks: The unbuffered IO calls. -------------------------------
Although the POSIX IEEE Std 1003.1-1988 C functions do include the
usual UNIX unbuffered IO functions, I think we could take the same
approach ANSI-C does and only specify the buffered IO functions.
Because of the fread() and fwrite() calls no functionality is lost.

If the unbuffered calls were included I would suggest the calls
readv() and writev() be included as well.
     int readv(fd, iov, iovcnt)
     int fd;
     struct iovec *iov;	/* pointer to an array of iovec structures */
     int iovcnt;	/* number of iovec structures */
where,
     struct iovec {
        caddr_t   iov_base;
        int       iov_len;
     };
From owner-mpi-comm@CS.UTK.EDU  Thu Feb 25 12:19:04 1993
Received: from CS.UTK.EDU by surfer.EPM.ORNL.GOV (5.61/1.34)
	id AA25996; Thu, 25 Feb 93 12:19:04 -0500
Received: from localhost by CS.UTK.EDU with SMTP (5.61++/2.8s-UTK)
	id AA06338; Thu, 25 Feb 93 12:17:37 -0500
X-Resent-To: mpi-comm@CS.UTK.EDU ; Thu, 25 Feb 1993 12:17:33 EST
Errors-To: owner-mpi-comm@CS.UTK.EDU
Received: from daedalus.epcc.ed.ac.uk by CS.UTK.EDU with SMTP (5.61++/2.8s-UTK)
	id AA06280; Thu, 25 Feb 93 12:16:46 -0500
From: lyndon@epcc.ed.ac.uk
Date: Thu, 25 Feb 93 17:16:32 GMT
Message-Id: <2150.9302251716@subnode.epcc.ed.ac.uk>
To: mpi-comm@cs.utk.edu
Subject: background information


Dear MPI Colleagues

I found the February  meeting both enjoyable and stimulating. It seems
to me  that the question of process groups and communication  contexts
remains fairly open,  and  the  committee  has  taken  steps  to  move
forward.

I am sending the interface specification  for the system which we have
implemented   in  Edinburgh,   called   CHIMP.   It   doesn't  contain
heterogeneous  support  and the such,  but  it  has  a  very  flexible
approach  to process groups/contexts. We've used this  extensively for
both SPMD and MIMD application and library development.

It's coming in three parts, first below, and it's a uuencoded
compressed PostScript file.

>-------------------------------Cut-Here-------------------------------<
begin 644 interface.ps.Z
M'YV0)4) F=(B")DW8LJTD.$"AH(2)8;(*1.&SALY.D"0L9,&SAP0-5S0R%$#
MQ) W</+(27,&#1T0,7+@L,$"9HX<,D!("4,FS9@P;$ 4R5,&Q)0W9NC<"3/Q
M80DJ:>BP*9/QX!@7&],XE4B13IHW;HA4I KB2ADR((R4$0,3!@@8.73(B$LC
MALT<,YQ""7.FS)R,-/)"W-OWB1PR93"""#)G3!DW9)P*>5,'<AHW9R;CR>C6
M;8T<-D#@H"'#*9$W8^JT>4S'"%@Z?T'L95/Q\IL64MZT">-&-M#:;FY/9H-V
M-O#;2>@ ]>FT".23;5:[@?V0B)4D Z'OALSD,MFL'C6BQLJQ^O6!1^O(<9P1
M!)4R6$!0I@.GSLN8>!LRC %#!UP9.$A6QAF702$':E.404=&=)2!APMP'/A0
M" J\\!X61/CTD@PUN-73&"\A9H9[\&4((@@)$=C;"T[L(6(?(H+P@A![B'$9
M6B\Z(>,4>S@X!AI]Z/@"%GM, 8(3?2@@A(Q42+$''7+P-@=M#08I8QI3?F0&
M4',4):0=<Z2A1U$QV'5#3FW4$9200*RDXAY8LC'''ENX95<+=G7V5A<*C '6
M3W3TD<:(9^KDUQMLV/=5;SW9 4*A5DAQ:*)>@:51&HZZ,2 (C0%55)QSNB7I
M'(@J"I8"8(I95*&-@I!F4$T*.N*HI5;:6Z23FMI;JF."T *KF,($ D]HO>J>
M% KL!F4:>("0FAP33:?L2LV240<<&ET+ @T@]/72@96AQ:V/:(!07XC:6HMM
M2=Z" "YD((% K@+G<JK@M,Q:^0(0M$'6*1QE[/$"J"! 68>7?2RY[W9U &5&
M&6?M,8=R=-0QQX<OO<"PPQ!'9G!1YR8L(Q!^PI&&7P*/4/+)'V$A\@M&-%'1
M%GF^Y6O-,'0AI!%""%&GS9WI+*,;O;GE1(5)%&&SD"#*L;2,9)C1@G)IL"$P
MT:)=>J*.6*=XF8RN34=%'@"#,,.18+\F\[)X*&#&='(TN_-K/;_1+,]+ZCCQ
M2IC)*$8878(0'U-1YB&C$%')'%Y\,]91-1E#H,'4'@I$SI00CA.7F+[.^=E3
MWTFC_1B.UPILQAMOV$O'Z=/UD1/A81A>LNQVR T"&V_P9#/1]-HG8]-+;_%R
MU +/,:)=0KX-Y=UKHQWUU&%4/;P9<[;Z@O&"RZA\W%M@[Y!;V&MZ!M!"/T\U
M&R\7L0<<*(& M;H:E6&&=ZR_U.7JK[W\8PMWI$$&'6C8P_[(4)$P* !^4\$,
M .,UASJPQ5OZ0T,+T% &EKA$@!(DH'*RA:T$GF&!W&K@ Q44P1;@ 2EFV$,,
M -2G#!:0@[=[S ?+=381=DM!G')@"?. 0@RV0(-A@*$'%Y@3&[9KA3=0@ A+
M2 8\^!"(0I3A NUB1!(J;']IV$U?GOA"^-&!;&6HT-XN\T$PNB]@P&O7"X '
M/+L0ZTBR>IG_GO8".=R!CNNAXQFP9;0*C8&/:'O!$>CHO4!:3@Z8>UQB)!8&
M.Q3E;'8Y$!N"8B3XO>!O@6M73F[DH!O200%&FE'BPA">=AE)C0-\87S8AZTU
M0NEI VR66_9W0C.,:'\\M*6S)$A!"W[2AK1$X2[YY[\%OA&7PKS?3WYTEC)P
MQ#'#[-__RK6_7K;D)1^C&= 4@"=?N< NP=0E,"68RQ%]<UAD($,7?)A%OI1!
M4%HLPV[FL 9W^<4B$WD9$00VAC%D3UT*^&+9KK<L!9I14WOH@JS<MR),%J5=
M_736*^N%-5'207$?,:5$G68D[,5  0B%'P*E6"XJ.A"&FX1,)T^)0^RU*F2#
M,I?O7.FT-J(3+4A2DHR2($!_NC&=("#"R\2 DCU8+#$8\QM*)HBZ>JXA.'=P
M0XV6BH:F+O0%4T@"IQKI)1"TB26748">VO &1UI$1E9P546HY2SU1(L.^*J6
MMNS2+O@9BUPVJZNVC$4L!;C@)K>C@\"B8(4^"$P*A1U4&>14%-SI+D:L-!=*
M]%6&HF;5GA.[2%'F4-4[P,&=(#CJ8314H<K"@:EO<"I4I6I:U*XACFR:&%,$
M*]JD$G2VK@7!4]\058DI1PYT<&V28AK9%^"*5)1:5/9>0*OD6BH^_(&!AX+U
M NLD08O+#1V'0@,[P^G(3B#@4 T4L(?0&8F*!1T?_-QR-DXVJUYCL$-O0G8Z
MI]F@!C? 00Q<<(/06(]718G/??.[W_X>D+IH"%.O7"8D.$BLL_J2PMJTJ:=N
M!DU(0CC-AFP OO0&4@YJZF0?ZQABPQE-1G80&(BG8CC&K;B3\2FLPJRPAY<A
MEE,4LUA2O;:B"+W!6B>Z P4G0KG(^AC(Z.H@21]UPSVXY0:>O$R#Y& 'H' 0
M!1F: QQHDX<4E"$.\L+#CVQ& P5X2\J)J3(;4. $^%#!RV"^B&$CNR7&RFJQ
M73)LG?.L6,;*"S)[V,,9YL#58WGS3M]40).$1<6?3,5=(6[6BPVWYZ)(N")[
MR/ ; M7.OLRSGF>82&;S:5A!$]J1AFY!HE5MET6_6-(EYI2CR22L2NMD;9G6
M,#S=^>ENB1J?[[RSGQ5&6,H-NM!0DE)]V^ NRL +K^]""UZC$B4W&.\BS":K
M65/W:IO)@0W>.:M#)GW&\7T[W-R.=+F]#6Y-G75^D_3U/37[LC#L0=L*>L/P
M%KO!$9_/1=IZ 6+8L,'XN$4.^+;(RYI0)'/%C^!!?./YAMIP;$W\BGMH ;>:
MD"2%D2'C9^.XP@*V$!"(7'L9M\O)7W &)YO\90%4N1SWD).5JV$/(7_9&O:P
M\815Z XN1WA9\_TRJV%+XR"XP\O:L#Y?G4WI"I/JT7,"=1F]H>G=K/H+XM!T
MNVA=#D4.;])?-B=L/?UE@L46M[3N1+<82>C;?ED><"YV208%6V$8ZAOFA-6.
M<E4!2!KYWHOT]GGG<TFC:PYD#(0@!0E(18P?0X(65# '>01"$@J(HDND(10-
MZ&MU3.'\(%._*"JPI#?5VDMXK$(0N!=L22#"&<7NW@I5P0UIB,/!8C][WGS\
M1>MK'RN%G>?Z H4-VGR]6T+33;N'N0S^= M>Q]M\1 7EN+52;G-U=2E'&4M\
MY'M!$Q2TDC%\!*\QVO'GW:" SOV8C#T2<[F\:,:!36= B1%H41!JY/:9E"WK
M%4/!!P>&)3Q]EF>4$S87M5;,DE<XU"KCMRSFYX A$BPO<H#O9'SQ%H'E]Q'B
M1WX^,0=]XE:LD52C$S]FL 4IA1C-\BQO98+P(B+T\QIF<S/-%F^[L0;R\QIB
MI""EYUCJ%%_5(C\P(C\R\@1B &ZZ5P93T"^"!3]ATAM&XB<?T2KB\S)-R!NM
M\1H\IP"OQU?I5(0C\@)%@ <- AD*2'?5AX-J$F8_(H8R(BGNAQAI2(9NX#ED
MI #H1X0QDG@0X1QD$'F3]W@%<B"2IR 9H670EP9 @7EO,"&;AR&=QV,[8B(;
M(EVJAS938(F>IR(C,P4 ,P:,R 9$(#]AH":P(3 )!@(VL$*!!"8*< ,X$4A5
M14=VD#HG]@()YE.OV!C"(B2\,3ZY. 1,@!UXU#\)\A@@8&M'4T=HD ;)V!O,
M*"-300=35F-"$AP-@HTR$@8TP(TO,!5G !38^#) T"E341E1T18C!@2[Z"E[
M<(ZSIHX5Z"BZZ(LNHS!  ":S%H_H6 ;TV'THAH_FF&"JHHHBR#C$:(S(8XX 
M)C!@LEP+"06_:(YC &X.]@(3*7:!-S)594OWHXJIDX\5LH\H%)(O<(N"8X[!
M.!4"$XPKJ8]VE 8J-%WV.)/+-9/16# @AC R^8SDQ1\"Z8QID)//N),? T?Z
M.$E.%(YLT"SY.#*3-'=.V6+FJ!Y-B94Q69+J095=&9,RHD7_R),'@X)_AA;[
M(C.'2 =5X&"UU7D:@Q:[U5MO"2(5T@9HT2[Z!S4:LI=?9E1=,EHG0HEX&4.G
MUQ:I5YB[@0=#5"Y;%)?)0CI*=I@RX!9OE%2S@X(+=8*%28GAJ"#7J"_:&##Z
M(H[DJ #Z\F-/@@?L$S@UTP9T,(1;@HIQI1')9FW+9A3#HAQN\ *?E3V:XED5
M04T8^5D E"Q,L7.W>6T(!R?+F9L)IV^&]9S8YIS5QIS,UFY$9UC,EQ-V%U#7
MF9O=>8-!09T(QXJ^XIW6QY/*5IW4UI[G&1KJ.4E>:)[,)I_DZ7KVB9[S&13/
M$G>E=I%[5P;&"21]4* :R 8@50;"N4!^4AG6J!O).2S0$CO#,FI%P7+^A =1
M(UG8<B(SD ,V4R]":09Z8#/4$UX*8 0OP =?\*(P>A+J<3).HSRNYP:.!%QF
M0!LMMQ=2)@2T,0:O-2CZ$INM&3!P@ <?D1(?,99P$"$* !2Y@Q;]!W;!L:,=
M47;M8R3@9R2+%EEWTFB>LE!X@*78D@=F.BR %EE3L*#CXZ52 !,X<'";-A;"
MTDU.&B$UV"Y/ZC1TA4/@9T/@UZ=BQZ=ZZA#M$J@G!7ZQ$E-EBI$@@*:0JHUJ
M^G%LNFYPZJ%R2J<4 S)ZFA>&ZJ>>M&Z"NBENT:@C(JD= 0*/NJJ4ZGOKHZ=_
M^A*#>JB>Y*;'$D=[<*48.2=?*GSM(P,WP*EV&J:R-J:.FJ:JBG> ]JMP0"_M
MDP/$VB!W*J:/1JAG$ZK"DJB;4JKC0Z@YH:UNX2VXZJVYFJR0NJSNLVF5N@?.
MJJG2VFR=:BZ?.JJ$.JOENJBF>JZIFJ:MBBVOVJQQVG_8(JS3ZJE.$ZXX1*B(
M"JC=JJ_"J)NH2GR;-6MBD >@$:M.(Z6Z$UG<LH9!\48YT2IY$4GK*;("F1.9
MN6A_Y5_:,I9=BJG\JB]_-( >JD2=]5E]82[,]FOTIB.C$T=$FHW8QB7]N'VV
M\B@C&RS8YUSL!RR9TJVSIE:#UH_6A5U0.&L+!3X*$FJQHR\>D11S8B0#IE_\
M90,'YBA((B2R!5SO@0=&P!("$[8D, 5<1093,*^GUE5U^1*+V9B9R&-WR1=C
M:6LQ$AP(9[2>TE;0PAKL(V6&YIO&0P)?&;:P(2-TJY66*X*2:P8D,)7F8CR7
MV[F?^Y2A*[:8.[F&L[FIZ[GO);H?X8*.^P:02[ICT&(50K=C )6M2P)S\+JN
M>[J4&S?"RY0Y!(#!TF"3.P>KJ[K"VY7T,KF@:T.MHB-T^[O"R[S'>JV3N[O9
M6RW!0K?&:T.ZFP?1Z[G:^U*3^Y4VM&C7D[/N!(Z) 3@$&K\TBQ)D8[\-5H,B
MH@! H):3UY;Z8A48N3[2:[KBRP;-Z[F:N[YR(#LD.!V/.QW\29X+VJ#EPBV9
MR2W]Z2I#=U;,9[+Q9B3:>58DC&ZZ6<*I(Z!=4J!],JD,6J >''=",CIO&[<M
M=X)T:[>.A+?SZK/YQ"8\IHBB>)J;.(GKMR.A.(H\O%F%IB/'AFJ(NQMR,K6R
M*\&T2\%-XK^@N(A 48JS27"QZVP9@QIDO%QD\* 4K,9T@#&R):1P%%L*0L2C
MN <3J0!V\9?!*<-C]<&ILXH'I\(V$Y'GYFY__!'@%\@HS,+U>YP7V1$+58LJ
MN6B[" +\N+U% 9,'\L/("#%2A9-:.;XGU2IR<)2>3#FE7)1?.;VCC"F&I2X4
MB\FW8[K@![J,*@6&E<K1N >I'%H//,OF2[T6^+)3:[RUK,#K-K$8:!+%2)$Y
MH<<Q/)RSW"Q3F2Q^[,O4C,R"K)6KC,+&V\V&["RXT\+2_,@$."AB!+];1%E1
M0L[KS#3XJ[.DR371#$#Z @2C0\?DR,;RP<9*Y$ #V <3 3 5X2QD[,;* <=I
M?,8BU".0(= $VA7RAJ%&L<1 T<0* ,1%$;1L(B+Z;#5'/)CK=\\/0P8?[=!D
M4'0TJ<(O\VVHS-(*LQZ\_)]$%W49V<3Q<<7TD<49T\19D#TZ0D4*HIT_\:Q[
M/)SZ,C&^=2 Z:!1<%1\^/<-$ESQ5LP?P1DE/[=2.]-/1&22E-4E9&C O,#HM
M&6 RTK:\>0:/QC@JH3N,@P=1@A:,L[>U&5<CV+C2PH"VLVAPK3MMC19CJ2?H
M-5ME?9:%S13^1-=ZK43WHM=6XH<E (B"Z'@7PHF4&*(Q4 ,X "">40,S,*<W
M$1K1Q5Z8. /2I0 H\ )A\ )ZD ;K 18"AR5KH(NZ408O4 <Q0 .JS09B( =K
M](QM  ?&E1AA A8, 0,"AQKV-V5;XAC)?159D0+^B]9@$T0Y80,C:P8\  /Y
M!0,Q,!,P8-KB'=XPP&'?;=XX4 3>/03J'0/LO=[M_=[N'=_T#=\.,=_VC=_N
MC=[H/:R?/=[G+5W=#0-%\-TW4 0Y< ,Q, ,^0 ,X$%0\8 02/N%S.N$4+ET8
MGN%BE>$<WN$>_N$@;N$27N$B/J<Q 0-!<. X0 0Q4 0^T(H*('M* S-L81<V
M<#91PP/JG>$#+ETMSN$][MT[CN%!_N,\/J<8;N1$CN0;KN1"?N1)/N3<C>1/
MON11#N4^+N5!+N7>K> V< -$@!=X[.+8'51" 3;^1 .B+0,XKMV??0-#<. '
M/@/J7> %'N<X8 3E+> P( 2R.!HQ8 ,-7F9$P ,W,.'29>$D/N(@WNB.#@.*
M#ND7?N@2[N/\X><(7B9H^^)V4>C2)>4QH.=)+NH^+@09'@.FCN$S( 14ONJM
MSNJJ_MU$[MZS/@2U?MK<3>L"KNL$WNN?[NN2/N02ON.A7NGKS=T^;NO#>NS+
M?NBA;NL2'NKJ[>Q&8.MX/ ,Q<>@R$>@O7A*%3NE(/N$[3NFB3NOEKNPF;NN?
M?>SK3NOMCN[,[N-&L*+E/NSR;@3$/@2AGNSAG>[A;>NT'O  /_#'+O#L3O#=
M3>XD3N\"+N&V[MTRD.U&L.V"G@3;'>JRSMT\$^Z,ON]&,*<S ._KON[+3O+2
MM>ZD?MI<OO(<SO(9[O(8GO+(WN\S/_(@#_+*+N^0CNOVWO /[]VD7B;9CN#Z
M5?&&SNB2CN\-;^SFSN_=[>X$;_ ?%?7Q_>NZ7O6]?O7'GO4/C_5>7_!13_ A
MS^P*X.\?K_'&+NY+C^0+'A.@7?0^8/'D#NT3KNQU#_9X+_5#(%8&G^0_O]ZZ
M[MZ![_#W_O#%;OCZCOB!__=:W_A[;_5=O_73KO86/OGVWO8)/O%P;_&5G_1*
MW_F._^MX'/FA[_>GGOC)/OC57OBL#_B*C_BGK^&\OO7\;OHQ?_:)OOJY3^68
MK^V;O]UT;MI+?_OE7N#S?O+0?O)SVNQ\/O/++O,P_^LOW_+A??:3;^OJ/0-G
M+^I)U/S,7_,5COP[+^3[GOND?NC+'MY%L.PK-/04'_='_^R2+@1*?^AXO/JT
MSOXY'^_\G_].__] C^DAN@!X[F:>_UMO8D7_&<#]=P ;( /<?]2.[M&_R2?_
M>I_FXW:<;]A)N!55!-3>NJ-Y(/ #BD D-P*5GPD,@20P!9[ $DCSQ K*TX P
M\/-ENS#W^PA?[OMY-I#VZ<#9QP/_WNB+?;:O]@G!'<CXBB 0I &2+PEJO1_8
MZSJ?$U1[%O#]]1<(M_H.'*13;Y\/"V:_(-#G0)X00'5>$ R&-R& QV#=JA.#
M9] ,]@PSF .$P,AK@V_0#8(\.#@'C8#-*P)WT.;1/#WXV5S@S=N#?S +7L%!
M* BCX.\[</)/PFD_"HC_B( !) (X8-GA,4C(_BBACR,"<>X29L+UM@G=6R=D
M;_IO_24[4;C>OERR,X7K[0;H/U5XVMS;#-!_KS#9Q4+ U^R,0/F3<#F ^^FY
M<H?M,M_[LWB'[^3U/'(GX"K<AN-^<VK'K3MEF Q-(#/T=<O0&4I#FO<,J^$T
MS O-D!J:0&0X_A)>^$-[HD[[*;T :/C*1((C>ACPZ.$^M:?Q&-ZQ.WONSM^-
M/;V7]\2>V#-[)FX %CMBA_3<VX8;@CT0" +$OW?H,AS2TWBG+N+YPD,X#AW"
MA4-[BB_?C3\'N  KH@(\=T8N& 9 MF<#1]_B\W6T3B**1'Y7!"I32!Q6)Q$A
M6L$19P4+XCRL"PN1VY6]G.#IYMR]"X<#D,"(.NXG_9;=N)-^,0_(4;GJQ_N,
MW?<X='^O(28Z(,?A/J )Y##:,"H^OV_(#N\>#(ASI Z/F<,#]PO5X>>C?&JO
MSO4ZL4@6QZ)9!(IH$=B)ONG'%C%<]%.+</$MRD4>I_N"W3]$BCZN%_J^=%@0
M"^*(8XEZKB#2P\$8]NHA C2,A!$Q%L;$V/>R'Y)SC'PN_241H[@(#2+;JP%N
M#R[40&6G!0DA9[2( -#=^;@_N.X4 !\DC>GM#=K!.A@'VQT<]'&OT;O%QIC@
M!F%C;92-MS$F++A6^ 53':13<K9PR(E%[Z87+Z"@BX00CMHM/SMX]I3CIU-R
M=X[(C3T!9QI?7:M+>>4ORU&_*S?J,ISV\XZP3L"%QUSW\Q3<SRL"8D4X@D0(
M: M77[2K?^T1X!7'KB@(WV-G5'H441*>Q?UH'F_=KOMYKD[5C<?L"/2VHULT
MD$!QP\W%MD@4B5Q=U'YL;S[^/FFGZHPBN"N&(6_#";\%6?WXX3BD<[[.)TJ_
M'4<B1R2&''<>$-\ED1WW\4!DVQ-6F8[;);CD*.64HA5DD'$101(X$/GIC)U8
M>8@M\N&)NA+IZWYBB.R)2/)(*DDBJ>>,7)#\'@^Q Y*Z&V?X8.+;2X<-TN'M
MPY#7XKK;)@1VZA$H"KOOX?P2'H@T?N[Q['U'_H!$PIRF@W_"D"YZ1YF7_IH?
MD=-P,^_?I3\)Q_X&()?DACQQYAG)0=G\"*6@]'Y0LOF%0WU7[WJ>BN1^<:Z]
MP<2]:/34W^X[?%QR_27#9H<BYYV($W%ALDPNO['7'K^BNFN2$ _,Y8 W:?%T
MGH.D<OUP_94]61@$:1\Q]'SF+^@9P5H9$'FEM?.5 I$(5LAQ>"O%(;';BL81
M3@:_AX?^6"2]BV^>,"I&0VF9#:>EX,.!N*_8)3DA,.2<HG<;BJ%N11D^/SGI
M<!Z8/)?J43TJ0#C'W4XETNMY#9(XCCYMQRH-78W4<APR+:Z\Z4C@&N( A'21
M<$[]2! (&7O=!RR8")-@*LR#N3 ?(\U#BG[Q408(B-DD,:-,T(Q8,N--Q^F8
M\1Z=@[1[(+/V?43O5CE$)NS;>B/S(Y(["T?NV&2*"W.KTNCEP)E9%_G>KAR(
MP;)7XDQ@R3._A\X4ECTST@G-"R?TSN'[XP\!HM!-O"'P CL@W;-W(2^_9#\\
MYQB'5=4TF)$0:UK-?K<UWYS6_)KMAVM^32T(YSZ>BAP"9A,/XKG,MD) 6[V<
M<T*R W9*4O?Q!IR>.YA^\-<QS+WI,/FFWNR;@/-O:CRL&.P.722L=H)QO+1-
MN% O+>7MXXBZ+U,6PVY8**]AM;R<T%!@<L/OU]T694:DF:UNR D]&+DJ^2(>
M9)%2<NFM0QR0%X2DB2R2E?-0RDX1.3M?9Y-DD:Q32"(]*?D/U>:!Q)'Y4BWB
MQ=PWY(:G=ZL+L*YTRLSCER8K(Y\DEGH.";9++#<Y[R2/8XK7,WM:3R+W#^UD
MTM.=NL\JODAZR>W*!+?P=/B.:3H\2H<V_UU]<V^2\>S=/UU( H< 5"P")')(
M?KP65_<H7*1,=&U2>2I+[+D]O6<"I(MI;P!:N *:)[UG WV@=1*">K<[61J1
MW0?T;T@NOZ2_RBCODB+;*Q.J<.*U(J.'"+<?'FR.QB]P&LQ9B34%9PM]H0G3
M;\)0A;D.<R+/4)-X<$5Y-\S(V02HW(N/DHY"1L#^AP4/9+HTHOZ1/')/7M<?
M3]YX#)!.M"B>.NB7Y+"=L)IX]=(^SK^O2"&K(R#\HJ>QW^%!$Y<+A5],L(.V
MT8P2 3]W"=FH=UNCE="-_L8=]R.!8T:THN23A +10Z?][)[\^XWED5]"T>HW
M1:G?/W1R!'*0W@!^V43/XA!5A/"Q N)1+,H7@>@&S(6,$.$=R/0W'/DCL&ND
MC31$ <@<,$IYWX!4$D-1YJE2'1G]F"@I)7)"H#SB/D*JZAA?R?)SE-3HB<,J
M>/?FGO-;?DL1V3DY?CGENJ.JTW)4;F!>.:C'[,S>W;-P3Q/_1;PKZD//',R(
M##6@)*R0-K?=KF+M$WY[3KJ<3!&X/=,?5#R78O)W KNP*5W.J614=:J.[?V\
MGW=.P2FO>WA!( 80@1L0!&Y";FMP#J'043EZ"D]'HQ <<NYT>X)3%LA056 (
MQ'7OM)W^SL!' C'<.?UY0W%5[M,AX$]I@+)TJ.ONQN$ M!FBI"2^,XV,;APJ
M/7&8YS1@216IZ@ZDACO^P!4CGD>5>P"SVB%.6Z?O6&>O>W@<)@C$(IE0%SPJ
M#3B?%^_O\<B3)^5FP#D-;T^5%1*Y.BE5!5R=O'$O[P.F1Z<X1MTB5_V &C&L
MHC[7A_R,W+3$=Q#R"J95H1="%0!H^*?WA0I6NKKWV5K<,B1Y>'54ZM4=J5].
M:+43ATRSK][5O;I(EY\7+:S<;;#R3X='X=AD"'VK-Q7XV<]@YPH+G&#MJS[1
M)][/4,E.T:EGO9^9]=.MNYYZ+5^@^/N-JA#!M:+("B\?8G7<F'W5<H*_V5KR
M4",8M:UA-(QZ43U86V<K,S2KN=/\<3S1"4*UW6J%?PL45SY,#0E,'Z8)[*WQ
MU#MF3>6W02DC99RN8O,$GD#F*EUOJW=]@2F5:!97$?I/,^"GS*N)U;"B5Q2(
M0?U;I1.'8M-K-M05*%-SGWV=H#$@M;K5X]HJ0QZ'&7:5];O95<SZZ33KIPN5
M"%;C33X2"5H+[/<8HRU.P-XY$ DUV9MC-:[E-<*=T JW8:EEYORPUM A3,L1
M6RU[GK&4K2&6Q()8%'O:SFJ'1:OP<+Q"5N3Z%QE=1,V3-S;'EM.[6$Y[K)W4
ML4FOI9X]%J<*PQQ_W6YX<7C>V%CD8W%LDP6R3O;']KJM.:STW/4KD,\QB:C*
M(_LH'V5=#:S_+6#*U_06WG) ]GNE ;*/5K]3.37;;'S-FJ^5=<K9+_ME82R,
MO;#DE;7NQ'!87U$@?=VN\]7/"EKTBE@+[:>,=EV.*W+9^]@932,6#(-J$ WV
M1DCK!7M&I66#<K#,9MH0M6G+Z,WKJI^MJ^Y6W$IJORN')82=L>UUMQG+^5YL
MASV3&M+4*4-9ZT2A(:T=@V2VS.;:$+5K2:DR]+4G#]CVN_<V;)DA_F2N-H 9
M)EOEMVS[7;/];ZB31Z+58YE?,6QDU9;L,[]$3?M&X-@I_CRPX); D<AQ&VZ_
MK;@MM^3VW!(XE(CGHJ:63'O5%CVRV@@W5QU>7>VJ7;70$EKT"F']JOJ\FWUV
M!')70:M2B5VBS;,T5M@AO?_V\+XLBXV*7O2W-MS@6OUP'WQ5?B-0USG<?J=Q
M]<O$[;CN[>;I4VM75S$A(3RU["_B/=;CNMD@'*0; HSRK[9+#A/RWJ=\([8X
M5ADJO1]9[^2I=OQTF[7<-DFT*6<1W?]$K8HVPRH\SY<,7>&LG+!--[ 2.%?H
M<WLFT-R96/?8'=*;>75UX$'LAS)VT:+:07@:\V9N+;5GU]2JW;1K\\SN'\R/
M2-3G&5/BF%]!&Y=EE!4.[WI8.FHMQ^JU3'VO#_!Z52K7544KX76*6'6J\KCT
MEP#KI%/UCD]UJ3I.(<A6K2URU;O5+M0U5\[I_38<YW5^S4_X045L-UG'H+E=
M=:=7"#Q;U3MK5Z_K)7:J]_%YM]CKXX* ##!\OE/(<<S<6WD1KMP[G0(.^*XW
ML%IXURVL9+(.DL<UU:;*=8FIY)6\596[U4E-.7B3G6D,O/_.2;K:M1IV,RR,
MY;!I=<3JNWP7^'+O5CV\5"[Z1M_'>TR](ZCCNC]39]K,8%D0DZ^EJ[:^5QV:
MU&^KW]Y;J 6!G'2B_LJ.*V73Z=8;K.O6P?;+&(@%X^V\M7?V;LAUU@1K@#TK
M!;; ZO0"JT<%F8'5*00>AU]PG]Z$5:EGL6!#U, =.$&BX J\@C$P"^[ 'UB]
MB940K.U(L _ "Q#NCZ*].SG@3"*XO)G#4R-R26:9!)G@U]-UPXI=5MS5&6-I
M:A'(<_]T1BK-I A_=V63J\+9D@B,PWW'_K(?OWMWBC$,2[V2&0^?G!FULI>P
M+A)='Z=R[6Z&S9*9-_&M.^QZ3CEKJ$RHSE#PF>!3"4"YVQ.VA9$U^"I?5HH@
MTZ.!A',*-]_Q2--FY&@GD7S$KQ,2PTYD9XC)&W#ED=).]Y5-@*=R+6^KO)&5
MCNHRXDU(;,WM_A5WG14/4T,]+.GX\&_TPU X$$_/08C?/AL2G*^4;O_FS4$;
M<'OQG\VVA,\6KMPW7#;E';V[>6GV6_(Y)+SUV.W)4\;]3@121B4L0>=DMO24
M#7<8!M,4BSF?X?>3G.30_GHW9!F+X9^X-(A5.&=6X0&G3[?PQX.*/VY= L ?
M*(_[WP,$C?9XYOU%$YSGVANV6[5'EKP=Q0Q:43TF75R.OI@7_]E!RT+!*]HD
M?)9552HX67Q.Z:9%-<BCKDE:R.V)?*.L1X:R(/G)WDDD*!;M'L@3=6)E"%0F
MKCB1:2R)2\B!-B;#9(&ID/VLN*-\#OBX(DTJR.I8I!'0PLAO-?X[H1QJVRZH
M38V?-@\FY:4L1I5R4^:P/(-LFEFZ"P/F5#FV>.+2;FIA?@C>GEP]AKOY^"O?
MXWI,CW??5^S'5-DJ V(XR2ZU9=3,FO"3VYKB=#N7'>R\S)UO65O.8EL(B]<R
MYUO#D&XKZ[PN+)#+,&,$>&1X,2IFFO?CSC!(U,*(+UNF8YYYA0WB+#V([0\'
MJ&7O:_P2W?K#??CS ^[/H&@066GWS)' DQ 3O]5\?S5>.3:?,6Z[_636.>)H
M[D@=MOWN_*E)8V<X3V$[W7$V0-0%9X_K/U6J$R['"J"_BF3OQU@)7T@NP!]Y
MRDKG:7<576#X!*#X9>(5U<O['5]N=P;+X'DLA\;')Y;QL>"CFR9V_?ECI%F5
M_;*&3:O?EZS*9X^(??EJ]36\%A6<2M_%RY_;KW]FJDFN3+3#JTQO>_/S_(/<
M>,6666(K2HD=*35\M'?VV@##%P0F=).KT+B7&E/? OM!::K95+HG-/A^Y^*[
MH?<SD6NJG54'.E\M-WU[7.']NVK5A')?#TV@XS,'7*M^-T?SNNB(GWMT>I6.
M/$X_S\*35R>5'-\#=>]7'7=7 ><4U2_S/75EXG 2Z%T:BR9<:(W+%U0 G\  
MS.Q(7BT\M&S2-?OE]@,VBH)^V0*F#23( !7TX-8T@# ;=@+*R("<$!-@ IIV
M"V\Z31]5F""G:0:4,6T*X$W' !54$M+TG+;3'*(MH&D1-:AGP-E(TX.Z+L#I
M\+(%.H39H!DB2E)+:A82J>V"4[73(>I1$.KP4A(2M:DNU:B:5*OJ1#VH75%^
MW18U8 O4F*.J #I$0^!P,L(X>(7@T *& UJ0 V/("!P/D% 2<EPP-6VVCL,@
M0>PG81DQ'A2G-Y;#*,@S&1@(G'[)<^)T2 +G<<>M!;$?%G!0L;]8U7:Z(84?
M:9U33!- X[$WRA6_8 WP 37@?%I3(S ^KALW_:\[#RHB01H YWSJ$(#7#Z[0
M<;GJ>>H&=@(<BC]7*'8X)V?E.!S#)MC<46$#.18:L1MVQ8;858YZ)FR+O;&K
M9_<<V++1P(6Y&E"97AQ-G-?EXDQ_ZAI@ ]"T:!-1,D ^G8TU/0-*PZ>F 9B:
M4K.Y\"*B/G7,A@DMFS2 :OE4J1_<#%!!9\/!@6HZO064-FG 8[%Z+O#LJ3T2
M9+7K.!N:S04XZJT=&EZ KK8-O1I1_.I@793.]*&.UW<Z4-N%G9W;@+;;'M01
M3TZ%ET=-I^GT@W/5.2%NQ^U6+9_LPJN."7CL;C?JO%VJ9_:HIMDP>V;?;9K!
M+6KVMF#3H-I.Y #&C9B.JM6> >.E+K@ &\"Y.?>#\]J_85<C!^4 ;OP)L 8;
M:D TP(##71(PHPI:VS/;4Q?N0*U-N<5W<]L[VU3/[,8-95P1V[83>9N#01(.
MAJ>U:9O."W'[:+?M5FV[(?>;%MIIVG&;ZKQMM&=VH7[4C1MF%^K[9KL;=Z'.
MV];;;.1M[2V^61'-P--K.WV'%_6MM].WVE[?JEHH+6\\3;F7=TX(459[D6Z+
M_=*Y/7>N#MU@.S=LAXP6K.N)V6[=;MIPY^[:+;<#':(NW*KZ%<*$YKV\RXSN
MQMUKVW@C:K]]M!,UI#[<39MP4VH'CKG-QNQNU-M[:9MOH82S]_;KAM]Z^WQO
MBY9=8T*UYN[?-N!S?VU>[:L).-@("@MN<@LK$VXV##<-* E.6P5Q,,B-!$%U
M[P[ABIK#@(1*[1#6M"RZU&_:!F3J2LVH@S;3%MIPVRZH.:M=IUFGUM[:GQIT
M4XD +J'8S^F&;))-DKR!,T"(W,#DN19.02U4!/5 %E0 TE(NPH\,F(Q(9-G6
MCUX@)8EA"JB*C! $RHSBP5L* H\/!G>2$?PV'K,91 5;W !M6L(-2!P: HH<
M,5"P/4 "D@ 9R @$JI^X@(F1!UB H]@O+/LNS( 7  -D "V_VS5 !WPV'2"T
MQ8 :< -WI QA"Q+0!U"0 O 57PYHBZ@@ @2&F$4#X@O.JQBON7 V^(4"J]5-
M' AHI0'C5;Y2#G<+;:)_>)7[\='J^&E(#=*!\J3R,2 &[@#N. -OP 40*!$4
M$ 9"03@("0%/- 33@!I4 VM00+$!"2P6L^(3# A$@ I2@2P4 2@ <V_''$\=
M24"KY*CBUAOV"XK;"A.A(ER$C. $?$(]V0EI#-S8DC)0$Q8ZS,7H76%1B(4&
M4<ESP ))$'"@0;2!A."G_&E-X ^\?+Q !->@&$SZWIOD?2$V?!2(,!G"!1G1
M#)4\FE-SD-#$!\PCUPZL@9X_!*' T(? 7; +[SQUH  Q8 +N0 J0%W"@G[3S
MK"[//<)#4  58G[LD;V3 !) 32)M,*"8]Z\7L'=F35OG.=NB#R2 _E4A)@)B
MN.MN0<WI];F>A [&&+CK.2&N[W7Y42$*.X&ZZYYM6]R P<[8Z\A9..QN/9DK
M=L*>*-8"4W#K_/HM4'8ST-B9PAUHZS9@L9/V2\(4T$!;U\RJ_2'XIO,!V6^ 
M"TC4FYVQEX 7<#Y.>P*P 2*A!L3VV1X]V$!MU]HE(;>O]MZ.VI'[<#\?KCT!
M8.[8+D:H6!7S% D@OU#WZV'=R8L"2  O0*"S 8+^$Q+ Z(D:/"@!S 'K_H_4
M^ZRI'ZCI@##V"D$;Y$!?\.[@7;R3]S!@WF\$?$\ ]3VHV_5_!-^3!%^_))V]
M&DT9_,Y9>$M\/_!^7<$G!OR>E'X$4W!A!GZ^"YPH<0<<^]^0 _A=%]&!!$ N
M8CMXOP-D@,3+'^J> %!\ H !":"0Y9OO#N-=0HQ78=\=Q9>;%W_CT<UW9V08
M7KZ3=C.SM]P&2VA-[,G:4(DP4M<7US\2*^I]J'D':7*<E(AU5QWP_8*Y,+]>
M%*(3:BL#7SW"@Z8)OS=22QC1\L,IHUUVJ6814-L8"/-G0<*#^#*O@]#Z43M.
MCMV?>'D4\.83@&.7\TH$2IAY.U_/T( "<.S88L_#@:_^Y\<\B(_IQ9W-/Z+>
M7C"*^_SA\!Z>*1AY^H3F\7QG__"2_M";=A31VC4"IO_TFOZJH?508WC.? FX
M\R5%J>/@Z+0MAKA3Y19DX-0?#%!/Y\]\@Q=.]_T/089S[L^GPS''9_[BF0-M
MDFT37H=7<>9>#)J#<^,5"Z4Y,G-P#D&;$Z\;D,V_TB*%,N&\*)VC.?;,S7D_
M3^>HO Z,@5\#(>BY0" (!@$A*(09T!"H^A0P BV WCL$B, 5-+IB, (3H0P@
M =\# E  %4 (AJ,)7(25<'Y> E" \W["VA@,$'$64(3A4 )O  WT!LR1T$'\
M08\*4R$CK/M[ A.^29GA]QG=5JQTLG #7@ .> &K$B;$ !V 7X9%&Y ,SN9S
M9 :[D=39R[#:%G/J431Q%+ 4/D)E"B^L$R0D<Y\JW2 "L4_G #TC0(75, =P
M0QLW.5 @,0",BF'02\#39PUMIIF0@:CO'K*(7[#ZVP'K:_U(WO4!$52?#B)(
MK-B,Y;3DT7H)4 &^H@7H_;W/]_N^W__[@#_P!WX7\!#P/A6@("#@]F *XA85
M#,=)D /L(TI0*RN )1I&4##EK*'Q/Y_U@"6* A-XZ"" #Q3^O"_X2[_I/_U_
M_P38?;Q?U"U#WR JS0)+,'4H@_?CM6T?_79@O^!TDX H*(,<&&.-B^*3 1>P
M&-))5%@45@8QG(^;<A8(_]T' = _^D/_*M EFE3]DOQ% 6,@_U]67TQ]&.@?
M?<-/!#>P$-6=/]Z7_M%?+,B!>D)4P@538!GR01JI"3;0 OP$[E /6X7@N+8R
M0/Q;O\Y'$7;#NO(2V'^^7\5W&9A_EHSN-_,9!0K"&- &Y %K  'H-!P5: &E
M<C_8=V* !(C[Z7XR@-1W&5 :M %GX1=8,EA"&I"$9#(OP6. ;5 &3<K4,A'@
M&V@!"M &4!N+11:QCO@8)V ;T/2=?^@?", $.'IDA#UQ$&@*!0.W(4\,':3>
M@;"$2!9A@JU 1B" N=\W,0-D!%8 XV<IN &J 4W'_*$%9\5/,#$\&@[%C5(P
M?( QA#5"W!1\XE\Z5_'-!SM@ @#]30%U@"W!+(R N1Y* #"@!6; @<!L3'3*
M17 P!T"!NA\-D!%@#N/#UU!Z= E3 8BP*&0$1T 0< 58,E9@;[ L-'^%GQL(
M OA_02#L9RY$#_<'6I"$A %PS-<P$4QT%1]9@1BL?D?"IE$4 !"RWT2@>^Q_
M6@(-(@),?6>? ,<;B !%H.=A+H@:K 'A5R%,,5:&].<A&"'/'S 8%) 5P<&/
MH >&$98=*8@60'\C"S&(]PD944%18"D$$9\@'/,W""FA1LY7(2@%9LS]YS3P
M+])@P7 'K#"]'_[7 @B!E0J*$*2L 6G=_$< XG^X7CEH!LQ_!HTX:/<9!:I"
M"S 1+'E4RH$0^24M$9^@)R?("R[ &=#_7036PD10%A03Y4+W%^ U%@\=YV(,
M*AA%00\(_:D0<EUE-Q%BA!IA]$=S=(0C0@D06@0.K& LZ#1$"&@&8*,J@  ^
M $S $)0$#F#!5P.( -+-Z&?182)9R^)2#((%L@5DP!2XA+W".L@F10<%'PV 
M$SH+KLU%0M+!!*8-4@@*'@ASP$>@?Z""J%]6J!5NA:>?:>0"S 1.%0YV/\R 
M4P:X01;N@TY %G@&?@U;0!= H5@:1\"2H&8<#!\!"@ *<GV@2PS0 @P!34 6
MD (0?T\  )$8K"L? 5-0%.P%TP'Y]P=.=8BA14 $?AF.@YKQ&#@&5F$8H(-(
M(WI@I7<"BH%10!-@)+"$]X?3L#&P <Y?$J#DV2D@ ,UPJ[T%FYN( @.LAJ]A
M-N46Q@C/'X"0$V0AU H*4!GX"6,!&2#=O "FX92 &JJ&F$ALZ!K"ABZ ;&B6
MU(8X@(B"&Q8%?%[NT"#XADB#&Y -UA.IX6M8'"*'F,A..!M6=J8A-4BM9(?<
M86=0'GZ'JYUIZ-=)?W7":K@3LH8W#FLH7:"'(,#SAQ\8"C$@;S@=-GWJ8<47
M_;6'V^%H !^>#=IASK <XGTQ04X@*<2 NZ%T6/%]%@"#'/ ;FH:.W7_X'KZ&
M$ER!*!\:B+0AWB?\F!QS!)!2EGP-@N$R@@_.@TX#H:'_-07 (680\/4&Y.&>
MIB%BB,?A?'@@%G$/SA'P(HJ!)>(]&&^@B 7#,_(%%@5_ WW2(M8'D-^CT1YF
M-B7?=N@D<HCE()MS-D !ZL&6\2E(@HB?C^B?I(-.0TJ8T-D+9P'G8AK*,Q\!
M>;@=,HFOH8QXJ]&']N$,P"UD 8L%[G 'O "&03!R)0:)18&6F _Z?C>*IK 2
MNA-BHAM %$P2O(69:!ZZB:PAM[<ALHD(XJ<&)Q**=P2)F"6>B%PB )A:R MD
M0%!WS(6$G&)(^/Q)?P0?9W$R$ =]XF!X%MQWA=_H!\9X!ZJ# P@!2H \8F+0
M!GP$2(&[< :P!3$%I2*#: J>( 2#U[P$: ;D-Q%,&>9?#T('N(H18._G- @9
MB4%1$-!LBM+?'G#6-( /8+*(.X!XG:*T"#\()5\&"&"S7("WH@28)'2*V>+_
ML2T("\Y'7D NKHO>8@WR>KP1X$< 0G!XBY%%7.=ZC B0A 7#+I*+Q=Q TQ5 
MB_LB^@<N9H#*XLT2,*)_Q1P& C!JA,6<C1"#,'8]8,+X,# 6:-WUT  JBWL 
MQT*EM _*1+4H+AIS%<)!H)U0#O>#=D+EE0LEHW=0U*@.VHD:D,6  *;A95!/
M*!,%8Z^'FAQX!X$0< 6,C(R-5##E080LH\I(2@2-FH++^#68AFN 87 %/"/4
M"LUX+>(83$T8(894C)^%E$$Y 'EI7A031CB-%\$R4C4H**P>AG(S:G@CW\20
M5-@ N%[GP=>5C6T,$J,B5(Q>XE30)82)E,/S%S=N%AW#1[ .5HW301#($ Z&
M=@$*P 0@ 2E 32 #U 0T 4A0$YP-+$"9L1  =U &:'#;A7H+@6U7$I $Y\1"
M0 -,CI%0O;<0T'M0QDP@$C NVP8WP>9PCINCB((GV'9/1@Z0'-X,(4%.H I]
MA:3CC(<G;(ZA07\Q.>()!<:C0.^ICF7"Z+A(_16U8YO'.YX39P+MB">\AE#&
M\)@3+(_U'K>WN16/C\A"\!J**)H9?W$[^'B:X^28 VR.;L'C^#HF.)ECS*8]
M2HXJBWI0.BZ-U:!A0"4FB2 #)_A)P'IH'9Z  XR.THKVZ.79C[1C<_@ZKHZ<
MHVWWX. )(0'V:-MI,.JC[9C9$(^B8TEP/(8&9@N4<3RZ!7,*[4C3&(_\P>LH
MBVB/OL+]*#L"=W:!KV#;Y8XA 91Q03XBR!SMN,E-CB(D\;A!AI MP/WXX%20
M#\X)R4UDD!0D0_"Q!(]VP6A /!Z//21PESY2&0KD3"@:N(XY 8Z')]![$*3K
MZ$ N.--C_CA YC;XXWZ!0!*1&.3F^."L2MKC[3@^;HX2)!6Y1<:.U.,-"=RY
M!=_C_YA?T8XXP>C(/W(+^:,)F4"V>>QC@^ ^5HG7BOS8Z1EZQYSY&!I@C@^.
MEQ=>') @0!H9&H07FV-.(#KF!'/;](@#%)!EI$W@2#($#PZ?=DZ8+2'D BD[
MVG9#9.DXP6F0D*3,IT)NCIDD+"?TG1,VI"@I.^I[T9_K>#8XC]'?_9@[XHZ1
MI&@P/4J/A^0*$3T*D="?+MDZ3HZI)!19$FR0C.0:.4,R!%"&)7E,:H^I9&4R
M.F:/W *.M[X]DZZCB!)>, 1_I.X'#=)[E^-^$$ER"%$D+1E> '>7(W#'+8R3
M461(4$/.D8]('5D&W)'PXR8H9>R1:)TE^4>^AH&D'W/,?3?UGO^82YJ3H@$G
MV4N&!!0D<+=.8I$HY ))08:2&>0,^1H6DP_EH^ Z7I&>9"&I0GJ0T9_E^"CP
MDM"?0?DHJ).UY!GY4;*0CP+RB$3&DOWD]5A+GI2;S>O8%FAMH@%!V4MBB*(!
M0!E,[A<SY$DI3>J2.>7T*!.RD2HE5!A%FI+!)/A82.*4O22]MT5JD;VD48DY
M4I0S'DQ 1AJ2O23K6$@:D?9D(8E/EI'N)#QI)<J3QA[]>,PM!).C[H@FZ),W
MPRUY/YZ39.4,:45"?VVE:  Z1I)Q9>=X2+8 S&,AF3K"E9LC'+E7II(M0$CP
M1X*1<.5:>53ZE"U -7E8@A/LY VY5?J/)4$'>4F&DK^"(YE(TI4CI&A 2<*5
MD*-FR4*V "(E#4E7A@3#I!,)5\Z5*Z0U259^D,!D8]E5R@'OXU?)-\Z/A5X]
M&5X@CR"E(%GR<0OY1;W72TZ2OF7)!T%>EJFD<"D:8)2^PFMH%Z21E:39$$Y:
MD(TE],=44I707V;)14:6%N5R:=%%DCCD$3DZ5I?/I$#943*0@F5(R4!>EM ?
M)-E2AI @ >>85Q:73.4&>4XZE\,D:1G]>9,KY$&Y/C*-[R1LB4?&C_,D_4@2
MPHU"8D)7)%H-H]_=2.K1)\_?$V ?:">< APP9(01!.3HB-W0COOC LDM:''G
MA&0IHDB/C"1>Z4(2E]%E26DFH)=09&C 86:23"0KLED&DRTFR^92FI@@P7X1
M8JJ4F%%KB5".E?>CB))C/H\:IM*G1H8$&^:+Z5KREX:!CNC)@)6?!'@QLB *
MW@$J^(RT!.#&-;$I(I47IEV@6VZ6%R9VR66RDM"?4LF*T'N=9%3I7#XXK0CM
M" U.CQ>F-4E?LB+O98G98G(8)"5#<#9DF=$?ENE-VI QHQM03\R6<I_?)AYH
M)Z@)R,C;%9A3@>1P+ 804F9%\",$@>N@?\&(P'-N@)4Q1@ ,(@CT*#O:F*&>
MK\!47IB,I"WYX'@VQ"/T)T."!+\C=ZE-RIC1I(^77+*9#$&(J4..F;MC!KEI
MZIBE8Y_Y9^J1X(5=(#)&F6,E_W9*GI6>I(@Y3$:40N5U\QKFDF0FG#D]PIBT
MXXTS.4J3MJ2(<E]\E[?EANDZ5I+ZW"R):\YXNB:3&6@*"[^FIE _BI&LR&69
M86Z5G\%GJ5S6F(CENYECA@;P)?%(LKV.TJ0^EQ-D4Y^E8DEGABF?)HFY8X:;
M@&:O.6@"FWB"-\EO0AF")&A).\J8R63P6!+D<-^EQ,F*&);%I>OX9'":U.:[
MF6:&, IG"7DSA)S,9&-)</*:C,;!:6[>D+1DFDEL1I65I8V#7IZ9ON.,*68.
MCS1AB;E5#H\B2KZ)3+(BBF4+:6WNE5ZDBLEI\IFXAY\I;AJ<Y>:9YRN0D?>F
MEHE6ZG-0QKUY3@J3K,A^84UBG6FFB )M7C?E);798SJ;D65@.3E&G7 EU+EG
MFIQ)YZXY3S*=4*:Y.6!^@XAF,W$^S FCG_)7W.F-6<-Z=WQL@HNF7W!EGIVT
MY)9Y=LJ4:^:^:5^&F8=GR;EC,I[[YLQYW!!KV"9#X&,VF\4E*WEO-I=(9;SF
M4Y9\D>>SR7;*C$MGRMETUI-FIUV0M4F=Q28I"1+<CV6GZ]ENN@5.QSG1;I:9
M;5[MJ7H*D'SEV3EVUI[< L1)5S:;,F:(24NNGFFG[7D_,I8#9]M9>@J:I^=8
M65YR;M-CP]ER6I6>)INI4=:>*J9M)T<^GOD>F\E1:AS1)B%9>UJ;9"1@*6:B
MC6IFZLF* '=WY?0)?Y:1)^?;:7K&G6=>PCDY@IJ48_!XW?R<QZ.]5FM&E-(F
M5(E!$J"3Y_$X<=)[8<JRZ6QZG8TE]#AQQH8W@YY9:\::+N:WV>;5G\8>W$EH
M;HJ&9=96$NB6$^7K66I:E,%G"?I2IJ"BY^.900:?R*5%N6^>E"_E[HE*1I>V
MII"93%:;)BAV&8+"GO2G\UEPWI\?J*D9;?*2).@1RD%:E&BF>-E0LB*$9#"Y
M55*?M*=%.7':=IEDFIAN$H]2Z.O(?F*7)R7U&6J>FF)H$$IZ#J'0)_YI6W*:
M"@Z&B5;>EK(C!IIX*BU+:+.9/$*@CZ=S>6MZF=$C-GE?NI!::.89/6J'>:8*
MB53^EK>F?@EN"J$H9QKZ@2Z1V.:%&1IDF'TEK1D^4I$+Z ^Y0$Z<KJ<-66%.
MG  H)FJ)PHX6YE;IB6ZBSN8.F6I*HC<#O5=DMJ"Y)B-J?SJB4>;<>6AB"0G=
M;G 94 YBI=U8=X*):,%\0&CF>\MG(>DZLIX*) 7*82:1KJ9%N7P4H]*D4\5&
MGII*Y&=S3MP$YP2.QX$VF41HE'DWSHTF#2JH8$X,\L18Z8J:#1AEPSEK\FO3
MIJM960:?R*;9&7R.GT2FD(E[HI#;PO18?&Z/ALRF6%Z.!"2E \J.AIH"J4!9
M7 J;UB@SVH]NH^/FDTEHVJ)>8$)7-R*($X.S #A\B<)HE$D_PI41CQNIZ>B/
M;^A"\%;Z"N0CE$%MZI]LI>1HDC:C*21;64&NI/UHGMEB=I!Y);6959*DA*5-
MZD?"E9@C3&IFHI,A3*"C/=JD[650ZGWRHS^I<[E#0I$])TOJ7-Z5V*A/FGM&
M?S-I8NDZ[J!D94IZE49_6>G-  .(G,5E>N*19I!8Z:S).W:6'.E8VEDBG>(A
M@-F!"@L.*;!9&\(+$>FCD9&:FQPI< <\0I$,9TAJ/JJ6::14BH\"D(#I7'F2
M!H^JY>PHF *,Q:@(>93:I% D#)D?+*;WI3:)DPZE+&E'&J;PI4CI5,IX+J6&
MJ5/*@'JEER516I7*!"2E/@>8HJ5IY6KJ>%:4K2E/RII6EJXI5DI(+H^]8UA*
MFWJE(B=<:=OMI7.E;ZJ)<J9(YQF*<N)I*F<8$?V9A"<!8I +U@M!!!]H*20!
M+@ 10/Q)BD0B_2(?C @E8EVJG$)_)J'6""V:A)7E$[E&,HFTGE!#!W@M)D9#
MP"UHAR'$U(("1(&YS5?WZXVGT* 4MQ!X)[3>9KG)V"DH ,:G\5V"#V9B<-/=
M!#* ?=I9X*=A(["!"GJG[D(8$-S,%B((1VI8(G-YI6ZY$%RHOX+(>9+* )6H
M"+F5ZJ29I8B*F<:DT* LR5G6I"QI\'A7TIF4:2\Y?R)SCZEHBEA^.2=J4JJB
M8J@YJF<:0WZ7H"6+BJ("GYQEC8JBX@D )8W:HPZFP2-;":-VIH\(0ZHGT)31
MY_,W.#H+T4*<6!M8"B+ /W@RF $BP*;XB7*6O:.&BG4B<[WC8<I[*JDQ*IZP
M;1:I2VIR!LSQE^*F2=B+XGTS8#KQ:(Q\FL(DL:7V!EUJ#2@_A*G2'WH)6I:I
M;^AX&6*FF3'J;\EMXJB-JHBYJ!JIBVA;6J>>$1C,@YJE^JE)R]!1RL D@2JX
M,:B*J> D6[E"]J45Y><(I"JF4"JT"$[>E:RJ3EI>(G,C:F9:E5*?C>KI"*MZ
MJ#Y>>$BG IH"IJ&I(GH%1,;H]P+^&'%BQ3>L[G]3W520%*R#!)^;X!),$ 1?
M@5(7X@%?7:UX&?B)G,(SLEA(&YEB45 AX 'A8_XHHLQU>$ (R47ZFO.=27@Z
MX'_!8I>@"%H*$\SE@@)T&=MI_D>L9C+P0L@"+S@-IZ+@^0+D 6>#3*AQ&G,#
M:ZB)7[R.<UT> $.2FL5:99<'7*(@*L/:KBXC?")BL!+T,/9$"\ :5!LO08[B
M%5"&12 <P )(JW0 "^"LIJQ$183";-2*RRJ+V$1XB^DJJP(^Z! (*QU0.WB+
M,^O2XBB0JS?%@%E'[*PN0K- L$8J-RM;8"SD 3G!T?I&3*S'2Z1B+K8*0"NQ
M(+2* 41KSRJ05*UA",(ZWC4+16NDTK2:BTMKTWHV/*U)J]0:M5*MEDG7.M?I
MK(;#'G"T.JQK*_CB*.BLS0+0:D,LK3]%2H.P4AEQ*].*M-:M @F5D;>FK4MK
MV^JW$G9V0.#:M*:M,VNK@+4>KE%KXAJT>JV-J[<XMTZM=NOML+/JK2<%WWJY
M]B_1'] :J12LG2;TA[<6#)FK35JSGJZM:ND:0@JN-JGAZBZTKBSIZTJWNJZS
MJUM@DTZN* +N.J2:KE"KZTI[[JXLZ=?JN1H.QBOT1[OVJGZF82 BNJ6T9:9:
M1$AYFL+*R+7XC$7CRQAN<HT@7J#V.J:,P0E$J   K4<KK;>ZPJU0*JMB%QRM
M@HS-B+XBHV>%\CK>,:\HC/SZOM*OW,;."KBVKS:C A :D*\,BOF*OKZ<]>O.
M>K\"L()>G5>S"JZTGNWZO\:O#6P8@;ZZ!;0>\(JUXJ_AS /KN^:O%6RA>> 1
M%:G%1'H)-A60('#A$_@%Q!\=<$DP""C!);%I6 1M0$V0!M!U&<&VFAC0=?9!
M8D#\L0%UQ!J1$:RL=80OL49\K,R@5) Z@!Q)*K:3' JM/J.WF.\1HF9#-0G%
M^A/M(FMH30HK_ 44NQ*TBTXL[?D*_15>[!)K-F"A*6I#<+7B#E*L-/JQS 5/
M+,*:A!0E&0<<"SPZD5?K@0#&@I#I28]YM8HB6>R[*3[B 'DL'0NG=9'.) TP
M=XJGR"G=-Q:,?B1L/7&E<A8\ 6]!_!U^^\>F,6;(?F=%(T&[!*,Y"I<1!):(
MEJIA& 80?O2C$AOJJ;)X10UQ4N 5.!YY&J*,CF=#+.MTU*,?;#\JRY:@)0>.
MEX2D#JULU(I7F(N^+!M+S$*OQND\:1(*-LDI*AC)Z@1(0+=:R=X!]*2@M\KJ
ML<'L&P'+^G@F(1)T3M2RW*S9P,?FLC->-RO(@K/]:&\#S,H?-8@VR\X>L^FL
M'@O/+J+)K+&WS-H,OJ8:"LFBL//!8'B7AA&I+!N[/XZQ\R4JZG3HI:<E(?K+
M#I^EYA1;[^6;>Z73X8>>E@VM-%J%LH8PI$5;2[J>!VUPV5YFM!.M=-EA.K2S
M1&.ISK:JUFPT2D[>EQ>JV6!*AIF$Y+)02_ZF5*EX^5NREP#"ZW@LUI*6*=+G
M4D*/\R7F1CM&L9ZH$[N#SK*T9[X7T8IOQ*,J:T.^EH^BG%AZ(J=5*M[WS$H!
MT:P\@REJBMOE6%@-GAMG86]3E'AY)RV.!YZD#BKMC)G3!K4O[1D[.LJT-J1)
MB#4>)U!MG%@H#J%4K1JJ5-XX6EP-<2]\M69A5.#,HK ZK-/PSP84X$:H-\>V
MJ@M!T&D]!I<.IVH)13XX&6!14ERBL:VHFGG(JI;.9$D@UI:1,FTTVM-:HQ>M
M. FKU7L[+6"I@LYPOF5C>X)ZLVX!47MDMH^P): XU8H=5:VE*,E&LWZ"'. G
M'GH"K3ZYV.)X>H(1F=M>M;SM1?#;GK1D[1=+W-H,QJT^^_P]LSL*]+$&Q'V?
M25(@.< +[.IJA[)NMVA!-W'@5;=""N6@BQ!\>PAI)YZFLM=)W=?'E(YD*?0'
MWKH*;0AK2*<)E/.ML4!^)I/.))21W[8AT&-)NV/RDXSD?QL45); &_%HX*:0
M5>C]Z-\2?,9"]JF(YIZ](PBPX,:5DJJ%"^$"N&3DJYD3++C0W[M9G"J=:"AK
MB..HH0VJ9C$VDG;=XR&)3CXX*^M\NXPD@O6$E1K-6@3/RD(0$K"73VB,2_#-
MN-9M?8CW7:EY*ADP%9B.L^K3.6W*#P#$CTO>UKA#;C3;LM*P?213F9_2CM\M
MP??D"KG0;,G:1X8$J.L3FN7""UON\X?5N@K^@Y&KG(*3S:79Z9WX$O-MF8OW
MG;E3KFXPV%Z*6D:4^5O.ESDM!ON&CJ0^;14J8N*TV^>K2>A"E^"G%MI+WH^"
M;E[)DV*;9.5=.:<ANL5F4-D]-I<8;5[JT;Z;Z8E(66^RE1UI2=!Q(I8Q@6:[
M6[*T'BV@V^>:H21N(TIN2K=6+0I[YFJU 6N%ZJAAFS5;O2=(NHFX[N099B*>
M+BVN"^PZL08H"IGKSI?.917*ZTJZ]6B8*4[JN*-C*IGK,KNC8S0ZT4*[0:UI
M6U*&FK=N4#MYCKANI[%G9F@T(JR&)^?!'W*?9Z ]YHP[8Y3)7."X4B64$2/4
MAT!;=ULA2 $MZ\WP2'JMCIZQ4>3]IPV"G)HTR@'N9*NH+%8()PD.D=ZFNZ$>
M%))>G(R:BL^Z;B2\?LLU<Y^FN$W!U(C:O!DZ ;PK49:!"QX*0#AVO.T#*V)?
M GHH0!'PU4D!'B^S!^BA-E7 RNOQ&K6BKJ.'VC@!,F_)NT;6O&8@B(<") $Y
M+[;048*\$QX*8 4$O9PET>OSJKPD[]%1IZ&\4@#2F^\ED38O"C %2+U[&LH+
M]#:]3^?FR/.&O!POR]L^@)9?;]'K%W*]OP*,:_.B-D_ RIOO=JCX9M5K!+B]
M[,JAJO2B=2DOW?L2Y'L]9]5+!.B]Z4G9Z_-NO?ANW1O-H;PXKTZ0[X:X=R\*
M( 0 OE)EXQOS*K[LRJ0&]4*^:D[C>P1 OE(<RCOR%KXOP4@I^):[0UYRDXJ,
M?E?J05"]NC W0_+XL<B4!*(X:YFL!P*OTOBK'J>G+KO[@9JYT:SJ>V6VH<P'
M[&LS/%X4RAA0^Q*\MZ_]:2>,CKIO+2JL>JO$@0DK*GZK\D$/"["&JU*?93@"
M?A91PFHP98  (@!&* +4!!1@+EAI'@AW1(E(5!P&?)P"\!&^A-TBY9!8&I;;
MY1O!CM".9*L^.?^.CO4O4-%!8I1]*V.+FMIN]=X;P3M>E@'PKQ!1]K_A[4=J
M'CXX!K"#,SI&E 9PE#8Y;I7'1 1:ZKZGYT0%W)'2::F'%WD<)L!EPHXK+-B_
M(J:;V0/>CAAH -Q,>I/OI@W!.W*: 3"I]CK&P"=%POENUL!JSO084<K %G!B
M1SMFP(\GQ1D::*% L% J!$/ _B_Y*-K4>TFP0%D#.\%-8M3:04K!J4<J205W
MM2?%_7NW1:TX7ET+*8J;('"QIH8:%MS$ #Q3;I7[HQK\_[:C_>C^NY0:JL-*
MK2F4AH\2\%**49ZBO&S[\UE2D7NI"?QJ H^D@0:*0DZZFRFG"0W:ESIPA]D#
M!Z5[<'1I!%>@'&4AF5GRCN(E%7P%&\+'G"8<7=".83"2*0=$M7>M'@D"XWIG
M\+V(9[AZ>-_T2RH6MELMA6FNMI*I9AMLZ9IQH8$2.0OSCG8F,@?<G0V\8T2I
M<8"4O#!,>8JJJ+RC":Q_[J7QJ""[&[VF4:50&L+ !2SDZ6B><K2! 4Q9#)\-
MJ:2TR0S#E(ME!=H+A\,=9(NI!?>T^4%3NI#.J=6@N&F+]K.<WWK@DHQ^\#!3
M* \S@T#K,#B&0*WZ\/GJ%D"MN0T#FMS)OL6O O!:(HV&P8(H;HJGY@RFZL)4
M"(KFHXD94 [0WWF[:%+$T=]&RI4&Q-]$28!7Z)8L[2^L)\AXGBG0D/N^ 3HC
MH0G]38V,[]H6&M0D6AO#V88L.*EC26!#1,1  L:*+=*[E0$IX6-PK$H $K D
M.#@M (1I>20&9M]TP!D("Z'='A!*&@L+S@![4N#$Q5Q]L>+:>45+4""=]@;=
MXBA(W%1\6[&\$&<X#7L 3DQ&2(SC;JM'^E:,[9_K=RO:#28L)M@W('7A!9Z6
M]+%LH2.@]OQE=<X"$CNNZ@DQPL *&.MVK%_.%P32Q5L 8\("Y %B@%OH CS&
MJ2%<LQC3 7S""\"8V*R#)+U7PE$O1HAE[#0 K<(*$UD27"82*UL M0HKX*--
M/,ITQGG 2W :WZ&C,5#1OUS&C'&H1QN_!#@>7!.IX,8^GFY<&X?"M"W2*&X&
MJ_U+XN%'_!KF+4BX\*8DD: ;,G^TJWC?KE@4H(B!(NG)+H*#0&(*2]&)Q=YB
M<+CD%7/EA77X#DJ,JS#"BA CO^UP2.@5_W[^H7:L7,2_OFHU"![KFL4<]+?,
MS'4'L=*I'CL37_$SZ!Y;"O!QVUD?=\?L<)6@"OL9!]YKJ1"'A-AQI?@?<\5@
M1GCLUPW(X7%;2AXCR!?KX8>+/AK@*.?R6L:6CP;ZIR4"B6%Q@(PD6HF&17QL
M(-_'%^L0T!2"@:#@&M -A@L50GX\\"[(JNLYF!V7R&#&B%PI\LCRP4Y\, [)
M&J&$?!90R#;RA1PX\'4FH=VR(C*#Y_'TVBGZR.+@@\P=A\>.77T<'LN, S*+
M/.0UR= O6C 9L+\LHA@LU8K(\N"/W!P'R(.BG)@B%\COQ(&\)&?(OZ@0<'S4
MR**PDJF,](!4,I\()(?'K-YC,!_#R4IR]G>Q3@:7(F$@L'[(MBV?G"97R7_R
MF @H#LH6LIQL*'_))8!I>)'4 73(:Y 1- %9'^3']I5]5!_:QQOL@T$ 9F Q
M/,@ZP.CW I@!=H$"DB%,!"#"16 XB!^A\M;7,.@6J\7H%RU^#.#Q;K#^>8LH
M0/TP!^#*:Q_7]]6A !*BU[BGCC/R0]4 ,K0/P#*.80>>!;[RP2A 3 6SA80R
M+%<:$F.AG"UOA,)R/2$P@,K)\JY\WI4>K_)K(/LARZ(RUV>6T!E<0IR<63PI
MV/*GR"ENRQ0!<.$MUQ/5,I'B+0;,$V.7,"Y[BQ:"V5?UV8+2B']'@[3+?:,'
M0@LNS%??BW O@HPFH8X8!L@31<$5@#J@!5MQJ_PJQ\JOP:P,?> 3MS*Z'"_O
MRG,)^_$K]R3!\H2R!Q3+K\&QK#+KRF' LMPLPQO3,;3,,VLJU?*]? <NC.LB
MO]PME\O+2+T<+EO* &.@ 2_CS%XCZ?$PUP_O\LT\*L<(X+*UC"]'!MDBP0P>
M$\RK<-.<,)?*#'/4C-Y1,!"S5R Q*\RF,J- A%S,3#+>=^YB!FZ#7>"RF<2?
M6M"@5N@@AZ /PH,$:OE!"9=-L8XE@2,;\+*-ZL?;6.1!?V'Q>MPE2!L1<ENL
M\\%^:#'T!P^+(O?PIC@WTW'D[N(L'E 'T!](Z ISS=V"YPS]F3, X]VHB[K,
MT=_=>&"FSG4G3@P[;\AVY]X),'JG ./SAQB( 77 &: BC _:24:@-<J$Q'-@
MPXXD><(AM0*A8KS?:>@,%.RK &,DFSM'QVM![_P[(Z7"\]Z2-4R1F,CR&-NV
MMW;*6/+,,L^;(OG,^"Z_YRK^R>6.SJ6B8?M@1IGD;N+1V&K&#N3@W! 4SN!S
MP#MWFH10@$<7_UF#(X(Q6!,TR.)@3> XGP4U09^L'DQU]T-H@2UPOQ*J@G &
M=G\B -N("SH:"LH:\6N$Q<QB4[ 11A9L8UA,?PP4E:;W:T;$OT+(\S$&A,N;
MXJZ2%8O+&O0] 1)VT-^IS<(V@H0C=(920BL()W2$G$(["- '"[T17H2J@KC<
M)_P:].[(9Z>PC?L@P=<3:!E<AGZ"L_ 6\HS=%]D\ ?..L$<&?'W&GE>1SRA[
M2-#WMLRE!6O&$( $) &@<@H0MXD!1F\*D%BB""A )*A&VP5L]''C9?R\H6%S
M ^9M<K6: V<X& %K  K >*@!)W,*4"; T5Y!0J<#I "2&EM@!*@!*( 9C49#
M 8:T6\!&+P%4 "6]R9F\9<8?'4AST71 "H &H ")=,C'2-/1:0$D+4FGT4()
M&WWT!I9PM!Q=)AQZ*( =;0;@T<P-*+A'EY9-:UKP29][K($HC0+X#YD?%[!=
M) :+="^WHD#2/ET+@$E# 7OA&0TJMP!6@ S0 B0!<V\;@ ($ >R-(7TVL-'[
MQ0R0 FS2>,$_[$MC&<#T='!'%YBV\B+]K)#3A4*@T\3E!*]<=QC>N!&IM"!-
MW( %?:H:O49C&6-!"H"Y<0ML-!P8'3 %709ID$2XTFZT9QM'_WZ+0@J@R6E3
MY<W9D%9$%S+?SA8&H !1;RN]38> !(1K(TP' 2G +2T$@!B.00J &='2<QID
M4$G#T4[ T#'3)0;"-'Z0H(X$<'3<\ON%TAXU$1 E) 6G-&6+ EATE?1]DU\U
MK1SU2\U&!P$@=?0@(8[2)+5)C5*#>9@1'!WQ3 PI@(C"1I<BCL%,+2&F 4,U
M@CI.+]0H0!-@&TB(AS0;K?#U!,8TRP8H+ IS@#^M50_5WT11+1,>:GE 4NU1
M,]6 0TC]5&_3)35J<U*K>U0U'1U6 Q!*=8#*&S0,#TP*< :$U7B!(1W-L=$Z
M-5;M44L*' &#XEB7U1##KG8&.-:HS5H=5V/4X/1M9U<C$4AU1VU)?]1]M5,]
M4I?4CN]4K5(;UC$ 5IT#T-)J06_#6'<98#5^($Z#4'!T@A#Q^89I-4?M3)P,
M7MTM/7XH"&3$9BU:J]0.06DM3D_44"$,P"VD%9MT;N/=# OG=!#0IY05#U]Q
MW1U,#,GT-YT6@-6K-"7-']#2S[0P+3-4FGV!A*A-LP#"-!10!3 !L'5[_5B_
MU^Z$?(T"T->C])L!2[/1T(?&5]"Q 94T+7T26!NHB!825V?71]S[FD\' < %
M&J >"--OQIHA(;X!<;17MV8 V()C"N &W*N0 5@ 6P\!]9T.0E_3<6Q&!8%@
M[]>@X&E0:1('FS47D/)6=5Q X2A,)P&\P1WM%ZX9SL9G_5C;V#, ?CU*=P=D
MX5F08TO4>@A*<,CU!1E!WA:H"0N9W$=YQG+7C_2-#7,YTYET-#U)4]/6-#:=
M FC3W+3*.UG3U;]U518@U-$2M94=K_%IV$X-XBADUU-0$&$$C-(+]AD"&XS3
MI1IH$*F<TS' *4U+FX:"'I(14><V'K4XO4G7!4CU36U8ER)MM0V >]@*HW5@
M4&:PT;^U!.?@0!E_-"2]'S#2!+75FV:LL)(U'!T$]!-^05S]6$,!/$U<W4BO
M*(_U(GWTL=&+=*R]62_2H_0B?4O7VB@ KMUKP]:\=K M3.O:O[:MG6L#V[=V
MLFWH_=J[MK+-;!?;T+:O36P+V\=VLVUK&]N_]B)UZ.73F7;5V8I$*K6T:;VG
ML=$+=J1]!J@'?ZHWC2*D!;;VK/UK5]O1]K =6,?;V/:T[6S;V]?VN_UL4]O[
M=K)=;R/;++:T#7#'V_ VOXUO$]S9MGF=97?; NRGEE?;F: V')U>)]89]KV*
M::8 J1N]]FN[VP*WM:UO']S"M@)0<-_; [?!77++VQZWR9URH]S%-FJC<B/<
>-------------------------------Cut-Here-------------------------------<

   ----------------------------------------------------------------------
  / e||)   Lyndon J Clarke    Edinburgh Parallel Computing Centre   e||) \ 
  \ c||c   Tel: 031 650 5021  Email: lyndon@epcc.edinburgh.ac.uk    c||c /
   ---------------------------------------------------------------------- 


From owner-mpi-comm@CS.UTK.EDU  Thu Feb 25 12:19:23 1993
Received: from CS.UTK.EDU by surfer.EPM.ORNL.GOV (5.61/1.34)
	id AA26006; Thu, 25 Feb 93 12:19:23 -0500
Received: from localhost by CS.UTK.EDU with SMTP (5.61++/2.8s-UTK)
	id AA06312; Thu, 25 Feb 93 12:17:23 -0500
X-Resent-To: mpi-comm@CS.UTK.EDU ; Thu, 25 Feb 1993 12:17:21 EST
Errors-To: owner-mpi-comm@CS.UTK.EDU
Received: from daedalus.epcc.ed.ac.uk by CS.UTK.EDU with SMTP (5.61++/2.8s-UTK)
	id AA06274; Thu, 25 Feb 93 12:16:42 -0500
From: lyndon@epcc.ed.ac.uk
Date: Thu, 25 Feb 93 17:16:34 GMT
Message-Id: <2153.9302251716@subnode.epcc.ed.ac.uk>
To: mpi-comm@cs.utk.edu
Subject: background information


Dear MPI Colleagues

I found the February  meeting both enjoyable and stimulating. It seems
to me  that the question of process groups and communication  contexts
remains fairly open,  and  the  committee  has  taken  steps  to  move
forward.

I am sending the interface specification  for the system which we have
implemented   in  Edinburgh,   called   CHIMP.   It   doesn't  contain
heterogeneous  support  and the such,  but  it  has  a  very  flexible
approach  to process groups/contexts. We've used this  extensively for
both SPMD and MIMD application and library development.

It's coming in three parts, first below, and it's a uuencoded
compressed PostScript file.

>-------------------------------Cut-Here-------------------------------<
begin 644 interface.ps.Z
M'YV0)4) F=(B")DW8LJTD.$"AH(2)8;(*1.&SALY.D"0L9,&SAP0-5S0R%$#
MQ) W</+(27,&#1T0,7+@L,$"9HX<,D!("4,FS9@P;$ 4R5,&Q)0W9NC<"3/Q
M80DJ:>BP*9/QX!@7&],XE4B13IHW;HA4I KB2ADR((R4$0,3!@@8.73(B$LC
MALT<,YQ""7.FS)R,-/)"W-OWB1PR93"""#)G3!DW9)P*>5,'<AHW9R;CR>C6
M;8T<-D#@H"'#*9$W8^JT>4S'"%@Z?T'L95/Q\IL64MZT">-&-M#:;FY/9H-V
M-O#;2>@ ]>FT".23;5:[@?V0B)4D Z'OALSD,MFL'C6BQLJQ^O6!1^O(<9P1
M!)4R6$!0I@.GSLN8>!LRC %#!UP9.$A6QAF702$':E.404=&=)2!APMP'/A0
M" J\\!X61/CTD@PUN-73&"\A9H9[\&4((@@)$=C;"T[L(6(?(H+P@A![B'$9
M6B\Z(>,4>S@X!AI]Z/@"%GM, 8(3?2@@A(Q42+$''7+P-@=M#08I8QI3?F0&
M4',4):0=<Z2A1U$QV'5#3FW4$9200*RDXAY8LC'''ENX95<+=G7V5A<*C '6
M3W3TD<:(9^KDUQMLV/=5;SW9 4*A5DAQ:*)>@:51&HZZ,2 (C0%55)QSNB7I
M'(@J"I8"8(I95*&-@I!F4$T*.N*HI5;:6Z23FMI;JF."T *KF,($ D]HO>J>
M% KL!F4:>("0FAP33:?L2LV240<<&ET+ @T@]/72@96AQ:V/:(!07XC:6HMM
M2=Z" "YD((% K@+G<JK@M,Q:^0(0M$'6*1QE[/$"J"! 68>7?2RY[W9U &5&
M&6?M,8=R=-0QQX<OO<"PPQ!'9G!1YR8L(Q!^PI&&7P*/4/+)'V$A\@M&-%'1
M%GF^Y6O-,'0AI!%""%&GS9WI+*,;O;GE1(5)%&&SD"#*L;2,9)C1@G)IL"$P
MT:)=>J*.6*=XF8RN34=%'@"#,,.18+\F\[)X*&#&='(TN_-K/;_1+,]+ZCCQ
M2IC)*$8878(0'U-1YB&C$%')'%Y\,]91-1E#H,'4'@I$SI00CA.7F+[.^=E3
MWTFC_1B.UPILQAMOV$O'Z=/UD1/A81A>LNQVR T"&V_P9#/1]-HG8]-+;_%R
MU +/,:)=0KX-Y=UKHQWUU&%4/;P9<[;Z@O&"RZA\W%M@[Y!;V&MZ!M!"/T\U
M&R\7L0<<*(& M;H:E6&&=ZR_U.7JK[W\8PMWI$$&'6C8P_[(4)$P* !^4\$,
M .,UASJPQ5OZ0T,+T% &EKA$@!(DH'*RA:T$GF&!W&K@ Q44P1;@ 2EFV$,,
M -2G#!:0@[=[S ?+=381=DM!G')@"?. 0@RV0(-A@*$'%Y@3&[9KA3=0@ A+
M2 8\^!"(0I3A NUB1!(J;']IV$U?GOA"^-&!;&6HT-XN\T$PNB]@P&O7"X '
M/+L0ZTBR>IG_GO8".=R!CNNAXQFP9;0*C8&/:'O!$>CHO4!:3@Z8>UQB)!8&
M.Q3E;'8Y$!N"8B3XO>!O@6M73F[DH!O200%&FE'BPA">=AE)C0-\87S8AZTU
M0NEI VR66_9W0C.,:'\\M*6S)$A!"W[2AK1$X2[YY[\%OA&7PKS?3WYTEC)P
MQ#'#[-__RK6_7K;D)1^C&= 4@"=?N< NP=0E,"68RQ%]<UAD($,7?)A%OI1!
M4%HLPV[FL 9W^<4B$WD9$00VAC%D3UT*^&+9KK<L!9I14WOH@JS<MR),%J5=
M_736*^N%-5'207$?,:5$G68D[,5  0B%'P*E6"XJ.A"&FX1,)T^)0^RU*F2#
M,I?O7.FT-J(3+4A2DHR2($!_NC&=("#"R\2 DCU8+#$8\QM*)HBZ>JXA.'=P
M0XV6BH:F+O0%4T@"IQKI)1"TB26748">VO &1UI$1E9P546HY2SU1(L.^*J6
MMNS2+O@9BUPVJZNVC$4L!;C@)K>C@\"B8(4^"$P*A1U4&>14%-SI+D:L-!=*
M]%6&HF;5GA.[2%'F4-4[P,&=(#CJ8314H<K"@:EO<"I4I6I:U*XACFR:&%,$
M*]JD$G2VK@7!4]\058DI1PYT<&V28AK9%^"*5)1:5/9>0*OD6BH^_(&!AX+U
M NLD08O+#1V'0@,[P^G(3B#@4 T4L(?0&8F*!1T?_-QR-DXVJUYCL$-O0G8Z
MI]F@!C? 00Q<<(/06(]718G/??.[W_X>D+IH"%.O7"8D.$BLL_J2PMJTJ:=N
M!DU(0CC-AFP OO0&4@YJZF0?ZQABPQE-1G80&(BG8CC&K;B3\2FLPJRPAY<A
MEE,4LUA2O;:B"+W!6B>Z P4G0KG(^AC(Z.H@21]UPSVXY0:>O$R#Y& 'H' 0
M!1F: QQHDX<4E"$.\L+#CVQ& P5X2\J)J3(;4. $^%#!RV"^B&$CNR7&RFJQ
M73)LG?.L6,;*"S)[V,,9YL#58WGS3M]40).$1<6?3,5=(6[6BPVWYZ)(N")[
MR/ ; M7.OLRSGF>82&;S:5A!$]J1AFY!HE5MET6_6-(EYI2CR22L2NMD;9G6
M,#S=^>ENB1J?[[RSGQ5&6,H-NM!0DE)]V^ NRL +K^]""UZC$B4W&.\BS":K
M65/W:IO)@0W>.:M#)GW&\7T[W-R.=+F]#6Y-G75^D_3U/37[LC#L0=L*>L/P
M%KO!$9_/1=IZ 6+8L,'XN$4.^+;(RYI0)'/%C^!!?./YAMIP;$W\BGMH ;>:
MD"2%D2'C9^.XP@*V$!"(7'L9M\O)7W &)YO\90%4N1SWD).5JV$/(7_9&O:P
M\815Z XN1WA9\_TRJV%+XR"XP\O:L#Y?G4WI"I/JT7,"=1F]H>G=K/H+XM!T
MNVA=#D4.;])?-B=L/?UE@L46M[3N1+<82>C;?ED><"YV208%6V$8ZAOFA-6.
M<E4!2!KYWHOT]GGG<TFC:PYD#(0@!0E(18P?0X(65# '>01"$@J(HDND(10-
MZ&MU3.'\(%._*"JPI#?5VDMXK$(0N!=L22#"&<7NW@I5P0UIB,/!8C][WGS\
M1>MK'RN%G>?Z H4-VGR]6T+33;N'N0S^= M>Q]M\1 7EN+52;G-U=2E'&4M\
MY'M!$Q2TDC%\!*\QVO'GW:" SOV8C#T2<[F\:,:!36= B1%H41!JY/:9E"WK
M%4/!!P>&)3Q]EF>4$S87M5;,DE<XU"KCMRSFYX A$BPO<H#O9'SQ%H'E]Q'B
M1WX^,0=]XE:LD52C$S]FL 4IA1C-\BQO98+P(B+T\QIF<S/-%F^[L0;R\QIB
MI""EYUCJ%%_5(C\P(C\R\@1B &ZZ5P93T"^"!3]ATAM&XB<?T2KB\S)-R!NM
M\1H\IP"OQU?I5(0C\@)%@ <- AD*2'?5AX-J$F8_(H8R(BGNAQAI2(9NX#ED
MI #H1X0QDG@0X1QD$'F3]W@%<B"2IR 9H670EP9 @7EO,"&;AR&=QV,[8B(;
M(EVJAS938(F>IR(C,P4 ,P:,R 9$(#]AH":P(3 )!@(VL$*!!"8*< ,X$4A5
M14=VD#HG]@()YE.OV!C"(B2\,3ZY. 1,@!UXU#\)\A@@8&M'4T=HD ;)V!O,
M*"-300=35F-"$AP-@HTR$@8TP(TO,!5G !38^#) T"E341E1T18C!@2[Z"E[
M<(ZSIHX5Z"BZZ(LNHS!  ":S%H_H6 ;TV'THAH_FF&"JHHHBR#C$:(S(8XX 
M)C!@LEP+"06_:(YC &X.]@(3*7:!-S)594OWHXJIDX\5LH\H%)(O<(N"8X[!
M.!4"$XPKJ8]VE 8J-%WV.)/+-9/16# @AC R^8SDQ1\"Z8QID)//N),? T?Z
M.$E.%(YLT"SY.#*3-'=.V6+FJ!Y-B94Q69+J095=&9,RHD7_R),'@X)_AA;[
M(C.'2 =5X&"UU7D:@Q:[U5MO"2(5T@9HT2[Z!S4:LI=?9E1=,EHG0HEX&4.G
MUQ:I5YB[@0=#5"Y;%)?)0CI*=I@RX!9OE%2S@X(+=8*%28GAJ"#7J"_:&##Z
M(H[DJ #Z\F-/@@?L$S@UTP9T,(1;@HIQI1')9FW+9A3#HAQN\ *?E3V:XED5
M04T8^5D E"Q,L7.W>6T(!R?+F9L)IV^&]9S8YIS5QIS,UFY$9UC,EQ-V%U#7
MF9O=>8-!09T(QXJ^XIW6QY/*5IW4UI[G&1KJ.4E>:)[,)I_DZ7KVB9[S&13/
M$G>E=I%[5P;&"21]4* :R 8@50;"N4!^4AG6J!O).2S0$CO#,FI%P7+^A =1
M(UG8<B(SD ,V4R]":09Z8#/4$UX*8 0OP =?\*(P>A+J<3).HSRNYP:.!%QF
M0!LMMQ=2)@2T,0:O-2CZ$INM&3!P@ <?D1(?,99P$"$* !2Y@Q;]!W;!L:,=
M47;M8R3@9R2+%EEWTFB>LE!X@*78D@=F.BR %EE3L*#CXZ52 !,X<'";-A;"
MTDU.&B$UV"Y/ZC1TA4/@9T/@UZ=BQZ=ZZA#M$J@G!7ZQ$E-EBI$@@*:0JHUJ
M^G%LNFYPZJ%R2J<4 S)ZFA>&ZJ>>M&Z"NBENT:@C(JD= 0*/NJJ4ZGOKHZ=_
M^A*#>JB>Y*;'$D=[<*48.2=?*GSM(P,WP*EV&J:R-J:.FJ:JBG> ]JMP0"_M
MDP/$VB!W*J:/1JAG$ZK"DJB;4JKC0Z@YH:UNX2VXZJVYFJR0NJSNLVF5N@?.
MJJG2VFR=:BZ?.JJ$.JOENJBF>JZIFJ:MBBVOVJQQVG_8(JS3ZJE.$ZXX1*B(
M"JC=JJ_"J)NH2GR;-6MBD >@$:M.(Z6Z$UG<LH9!\48YT2IY$4GK*;("F1.9
MN6A_Y5_:,I9=BJG\JB]_-( >JD2=]5E]82[,]FOTIB.C$T=$FHW8QB7]N'VV
M\B@C&RS8YUSL!RR9TJVSIE:#UH_6A5U0.&L+!3X*$FJQHR\>D11S8B0#IE_\
M90,'YBA((B2R!5SO@0=&P!("$[8D, 5<1093,*^GUE5U^1*+V9B9R&-WR1=C
M:6LQ$AP(9[2>TE;0PAKL(V6&YIO&0P)?&;:P(2-TJY66*X*2:P8D,)7F8CR7
MV[F?^Y2A*[:8.[F&L[FIZ[GO);H?X8*.^P:02[ICT&(50K=C )6M2P)S\+JN
M>[J4&S?"RY0Y!(#!TF"3.P>KJ[K"VY7T,KF@:T.MHB-T^[O"R[S'>JV3N[O9
M6RW!0K?&:T.ZFP?1Z[G:^U*3^Y4VM&C7D[/N!(Z) 3@$&K\TBQ)D8[\-5H,B
MH@! H):3UY;Z8A48N3[2:[KBRP;-Z[F:N[YR(#LD.!V/.QW\29X+VJ#EPBV9
MR2W]Z2I#=U;,9[+Q9B3:>58DC&ZZ6<*I(Z!=4J!],JD,6J >''=",CIO&[<M
M=X)T:[>.A+?SZK/YQ"8\IHBB>)J;.(GKMR.A.(H\O%F%IB/'AFJ(NQMR,K6R
M*\&T2\%-XK^@N(A 48JS27"QZVP9@QIDO%QD\* 4K,9T@#&R):1P%%L*0L2C
MN <3J0!V\9?!*<-C]<&ILXH'I\(V$Y'GYFY__!'@%\@HS,+U>YP7V1$+58LJ
MN6B[" +\N+U% 9,'\L/("#%2A9-:.;XGU2IR<)2>3#FE7)1?.;VCC"F&I2X4
MB\FW8[K@![J,*@6&E<K1N >I'%H//,OF2[T6^+)3:[RUK,#K-K$8:!+%2)$Y
MH<<Q/)RSW"Q3F2Q^[,O4C,R"K)6KC,+&V\V&["RXT\+2_,@$."AB!+];1%E1
M0L[KS#3XJ[.DR371#$#Z @2C0\?DR,;RP<9*Y$ #V <3 3 5X2QD[,;* <=I
M?,8BU".0(= $VA7RAJ%&L<1 T<0* ,1%$;1L(B+Z;#5'/)CK=\\/0P8?[=!D
M4'0TJ<(O\VVHS-(*LQZ\_)]$%W49V<3Q<<7TD<49T\19D#TZ0D4*HIT_\:Q[
M/)SZ,C&^=2 Z:!1<%1\^/<-$ESQ5LP?P1DE/[=2.]-/1&22E-4E9&C O,#HM
M&6 RTK:\>0:/QC@JH3N,@P=1@A:,L[>U&5<CV+C2PH"VLVAPK3MMC19CJ2?H
M-5ME?9:%S13^1-=ZK43WHM=6XH<E (B"Z'@7PHF4&*(Q4 ,X "">40,S,*<W
M$1K1Q5Z8. /2I0 H\ )A\ )ZD ;K 18"AR5KH(NZ408O4 <Q0 .JS09B( =K
M](QM  ?&E1AA A8, 0,"AQKV-V5;XAC)?159D0+^B]9@$T0Y80,C:P8\  /Y
M!0,Q,!,P8-KB'=XPP&'?;=XX4 3>/03J'0/LO=[M_=[N'=_T#=\.,=_VC=_N
MC=[H/:R?/=[G+5W=#0-%\-TW4 0Y< ,Q, ,^0 ,X$%0\8 02/N%S.N$4+ET8
MGN%BE>$<WN$>_N$@;N$27N$B/J<Q 0-!<. X0 0Q4 0^T(H*('M* S-L81<V
M<#91PP/JG>$#+ETMSN$][MT[CN%!_N,\/J<8;N1$CN0;KN1"?N1)/N3<C>1/
MON11#N4^+N5!+N7>K> V< -$@!=X[.+8'51" 3;^1 .B+0,XKMV??0-#<. '
M/@/J7> %'N<X8 3E+> P( 2R.!HQ8 ,-7F9$P ,W,.'29>$D/N(@WNB.#@.*
M#ND7?N@2[N/\X><(7B9H^^)V4>C2)>4QH.=)+NH^+@09'@.FCN$S( 14ONJM
MSNJJ_MU$[MZS/@2U?MK<3>L"KNL$WNN?[NN2/N02ON.A7NGKS=T^;NO#>NS+
M?NBA;NL2'NKJ[>Q&8.MX/ ,Q<>@R$>@O7A*%3NE(/N$[3NFB3NOEKNPF;NN?
M?>SK3NOMCN[,[N-&L*+E/NSR;@3$/@2AGNSAG>[A;>NT'O  /_#'+O#L3O#=
M3>XD3N\"+N&V[MTRD.U&L.V"G@3;'>JRSMT\$^Z,ON]&,*<S ._KON[+3O+2
MM>ZD?MI<OO(<SO(9[O(8GO+(WN\S/_(@#_+*+N^0CNOVWO /[]VD7B;9CN#Z
M5?&&SNB2CN\-;^SFSN_=[>X$;_ ?%?7Q_>NZ7O6]?O7'GO4/C_5>7_!13_ A
MS^P*X.\?K_'&+NY+C^0+'A.@7?0^8/'D#NT3KNQU#_9X+_5#(%8&G^0_O]ZZ
M[MZ![_#W_O#%;OCZCOB!__=:W_A[;_5=O_73KO86/OGVWO8)/O%P;_&5G_1*
MW_F._^MX'/FA[_>GGOC)/OC57OBL#_B*C_BGK^&\OO7\;OHQ?_:)OOJY3^68
MK^V;O]UT;MI+?_OE7N#S?O+0?O)SVNQ\/O/++O,P_^LOW_+A??:3;^OJ/0-G
M+^I)U/S,7_,5COP[+^3[GOND?NC+'MY%L.PK-/04'_='_^R2+@1*?^AXO/JT
MSOXY'^_\G_].__] C^DAN@!X[F:>_UMO8D7_&<#]=P ;( /<?]2.[M&_R2?_
M>I_FXW:<;]A)N!55!-3>NJ-Y(/ #BD D-P*5GPD,@20P!9[ $DCSQ K*TX P
M\/-ENS#W^PA?[OMY-I#VZ<#9QP/_WNB+?;:O]@G!'<CXBB 0I &2+PEJO1_8
MZSJ?$U1[%O#]]1<(M_H.'*13;Y\/"V:_(-#G0)X00'5>$ R&-R& QV#=JA.#
M9] ,]@PSF .$P,AK@V_0#8(\.#@'C8#-*P)WT.;1/#WXV5S@S=N#?S +7L%!
M* BCX.\[</)/PFD_"HC_B( !) (X8-GA,4C(_BBACR,"<>X29L+UM@G=6R=D
M;_IO_24[4;C>OERR,X7K[0;H/U5XVMS;#-!_KS#9Q4+ U^R,0/F3<#F ^^FY
M<H?M,M_[LWB'[^3U/'(GX"K<AN-^<VK'K3MEF Q-(#/T=<O0&4I#FO<,J^$T
MS O-D!J:0&0X_A)>^$-[HD[[*;T :/C*1((C>ACPZ.$^M:?Q&-ZQ.WONSM^-
M/;V7]\2>V#-[)FX %CMBA_3<VX8;@CT0" +$OW?H,AS2TWBG+N+YPD,X#AW"
MA4-[BB_?C3\'N  KH@(\=T8N& 9 MF<#1]_B\W6T3B**1'Y7!"I32!Q6)Q$A
M6L$19P4+XCRL"PN1VY6]G.#IYMR]"X<#D,"(.NXG_9;=N)-^,0_(4;GJQ_N,
MW?<X='^O(28Z(,?A/J )Y##:,"H^OV_(#N\>#(ASI Z/F<,#]PO5X>>C?&JO
MSO4ZL4@6QZ)9!(IH$=B)ONG'%C%<]%.+</$MRD4>I_N"W3]$BCZN%_J^=%@0
M"^*(8XEZKB#2P\$8]NHA C2,A!$Q%L;$V/>R'Y)SC'PN_241H[@(#2+;JP%N
M#R[40&6G!0DA9[2( -#=^;@_N.X4 !\DC>GM#=K!.A@'VQT<]'&OT;O%QIC@
M!F%C;92-MS$F++A6^ 53':13<K9PR(E%[Z87+Z"@BX00CMHM/SMX]I3CIU-R
M=X[(C3T!9QI?7:M+>>4ORU&_*S?J,ISV\XZP3L"%QUSW\Q3<SRL"8D4X@D0(
M: M77[2K?^T1X!7'KB@(WV-G5'H441*>Q?UH'F_=KOMYKD[5C<?L"/2VHULT
MD$!QP\W%MD@4B5Q=U'YL;S[^/FFGZHPBN"N&(6_#";\%6?WXX3BD<[[.)TJ_
M'4<B1R2&''<>$-\ED1WW\4!DVQ-6F8[;);CD*.64HA5DD'$101(X$/GIC)U8
M>8@M\N&)NA+IZWYBB.R)2/)(*DDBJ>>,7)#\'@^Q Y*Z&V?X8.+;2X<-TN'M
MPY#7XKK;)@1VZA$H"KOOX?P2'H@T?N[Q['U'_H!$PIRF@W_"D"YZ1YF7_IH?
MD=-P,^_?I3\)Q_X&()?DACQQYAG)0=G\"*6@]'Y0LOF%0WU7[WJ>BN1^<:Z]
MP<2]:/34W^X[?%QR_27#9H<BYYV($W%ALDPNO['7'K^BNFN2$ _,Y8 W:?%T
MGH.D<OUP_94]61@$:1\Q]'SF+^@9P5H9$'FEM?.5 I$(5LAQ>"O%(;';BL81
M3@:_AX?^6"2]BV^>,"I&0VF9#:>EX,.!N*_8)3DA,.2<HG<;BJ%N11D^/SGI
M<!Z8/)?J43TJ0#C'W4XETNMY#9(XCCYMQRH-78W4<APR+:Z\Z4C@&N( A'21
M<$[]2! (&7O=!RR8")-@*LR#N3 ?(\U#BG[Q408(B-DD,:-,T(Q8,N--Q^F8
M\1Z=@[1[(+/V?43O5CE$)NS;>B/S(Y(["T?NV&2*"W.KTNCEP)E9%_G>KAR(
MP;)7XDQ@R3._A\X4ECTST@G-"R?TSN'[XP\!HM!-O"'P CL@W;-W(2^_9#\\
MYQB'5=4TF)$0:UK-?K<UWYS6_)KMAVM^32T(YSZ>BAP"9A,/XKG,MD) 6[V<
M<T*R W9*4O?Q!IR>.YA^\-<QS+WI,/FFWNR;@/-O:CRL&.P.722L=H)QO+1-
MN% O+>7MXXBZ+U,6PVY8**]AM;R<T%!@<L/OU]T694:DF:UNR D]&+DJ^2(>
M9)%2<NFM0QR0%X2DB2R2E?-0RDX1.3M?9Y-DD:Q32"(]*?D/U>:!Q)'Y4BWB
MQ=PWY(:G=ZL+L*YTRLSCER8K(Y\DEGH.";9++#<Y[R2/8XK7,WM:3R+W#^UD
MTM.=NL\JODAZR>W*!+?P=/B.:3H\2H<V_UU]<V^2\>S=/UU( H< 5"P")')(
M?KP65_<H7*1,=&U2>2I+[+D]O6<"I(MI;P!:N *:)[UG WV@=1*">K<[61J1
MW0?T;T@NOZ2_RBCODB+;*Q.J<.*U(J.'"+<?'FR.QB]P&LQ9B34%9PM]H0G3
M;\)0A;D.<R+/4)-X<$5Y-\S(V02HW(N/DHY"1L#^AP4/9+HTHOZ1/')/7M<?
M3]YX#)!.M"B>.NB7Y+"=L)IX]=(^SK^O2"&K(R#\HJ>QW^%!$Y<+A5],L(.V
MT8P2 3]W"=FH=UNCE="-_L8=]R.!8T:THN23A +10Z?][)[\^XWED5]"T>HW
M1:G?/W1R!'*0W@!^V43/XA!5A/"Q N)1+,H7@>@&S(6,$.$=R/0W'/DCL&ND
MC31$ <@<,$IYWX!4$D-1YJE2'1G]F"@I)7)"H#SB/D*JZAA?R?)SE-3HB<,J
M>/?FGO-;?DL1V3DY?CGENJ.JTW)4;F!>.:C'[,S>W;-P3Q/_1;PKZD//',R(
M##6@)*R0-K?=KF+M$WY[3KJ<3!&X/=,?5#R78O)W KNP*5W.J614=:J.[?V\
MGW=.P2FO>WA!( 80@1L0!&Y";FMP#J'043EZ"D]'HQ <<NYT>X)3%LA056 (
MQ'7OM)W^SL!' C'<.?UY0W%5[M,AX$]I@+)TJ.ONQN$ M!FBI"2^,XV,;APJ
M/7&8YS1@216IZ@ZDACO^P!4CGD>5>P"SVB%.6Z?O6&>O>W@<)@C$(IE0%SPJ
M#3B?%^_O\<B3)^5FP#D-;T^5%1*Y.BE5!5R=O'$O[P.F1Z<X1MTB5_V &C&L
MHC[7A_R,W+3$=Q#R"J95H1="%0!H^*?WA0I6NKKWV5K<,B1Y>'54ZM4=J5].
M:+43ATRSK][5O;I(EY\7+:S<;;#R3X='X=AD"'VK-Q7XV<]@YPH+G&#MJS[1
M)][/4,E.T:EGO9^9]=.MNYYZ+5^@^/N-JA#!M:+("B\?8G7<F'W5<H*_V5KR
M4",8M:UA-(QZ43U86V<K,S2KN=/\<3S1"4*UW6J%?PL45SY,#0E,'Z8)[*WQ
MU#MF3>6W02DC99RN8O,$GD#F*EUOJW=]@2F5:!97$?I/,^"GS*N)U;"B5Q2(
M0?U;I1.'8M-K-M05*%-SGWV=H#$@M;K5X]HJ0QZ'&7:5];O95<SZZ33KIPN5
M"%;C33X2"5H+[/<8HRU.P-XY$ DUV9MC-:[E-<*=T JW8:EEYORPUM A3,L1
M6RU[GK&4K2&6Q()8%'O:SFJ'1:OP<+Q"5N3Z%QE=1,V3-S;'EM.[6$Y[K)W4
ML4FOI9X]%J<*PQQ_W6YX<7C>V%CD8W%LDP6R3O;']KJM.:STW/4KD,\QB:C*
M(_LH'V5=#:S_+6#*U_06WG) ]GNE ;*/5K]3.37;;'S-FJ^5=<K9+_ME82R,
MO;#DE;7NQ'!87U$@?=VN\]7/"EKTBE@+[:>,=EV.*W+9^]@932,6#(-J$ WV
M1DCK!7M&I66#<K#,9MH0M6G+Z,WKJI^MJ^Y6W$IJORN')82=L>UUMQG+^5YL
MASV3&M+4*4-9ZT2A(:T=@V2VS.;:$+5K2:DR]+4G#]CVN_<V;)DA_F2N-H 9
M)EOEMVS[7;/];ZB31Z+58YE?,6QDU9;L,[]$3?M&X-@I_CRPX); D<AQ&VZ_
MK;@MM^3VW!(XE(CGHJ:63'O5%CVRV@@W5QU>7>VJ7;70$EKT"F']JOJ\FWUV
M!')70:M2B5VBS;,T5M@AO?_V\+XLBXV*7O2W-MS@6OUP'WQ5?B-0USG<?J=Q
M]<O$[;CN[>;I4VM75S$A(3RU["_B/=;CNMD@'*0; HSRK[9+#A/RWJ=\([8X
M5ADJO1]9[^2I=OQTF[7<-DFT*6<1W?]$K8HVPRH\SY<,7>&LG+!--[ 2.%?H
M<WLFT-R96/?8'=*;>75UX$'LAS)VT:+:07@:\V9N+;5GU]2JW;1K\\SN'\R/
M2-3G&5/BF%]!&Y=EE!4.[WI8.FHMQ^JU3'VO#_!Z52K7544KX76*6'6J\KCT
MEP#KI%/UCD]UJ3I.(<A6K2URU;O5+M0U5\[I_38<YW5^S4_X045L-UG'H+E=
M=:=7"#Q;U3MK5Z_K)7:J]_%YM]CKXX* ##!\OE/(<<S<6WD1KMP[G0(.^*XW
ML%IXURVL9+(.DL<UU:;*=8FIY)6\596[U4E-.7B3G6D,O/_.2;K:M1IV,RR,
MY;!I=<3JNWP7^'+O5CV\5"[Z1M_'>TR](ZCCNC]39]K,8%D0DZ^EJ[:^5QV:
MU&^KW]Y;J 6!G'2B_LJ.*V73Z=8;K.O6P?;+&(@%X^V\M7?V;LAUU@1K@#TK
M!;; ZO0"JT<%F8'5*00>AU]PG]Z$5:EGL6!#U, =.$&BX J\@C$P"^[ 'UB]
MB940K.U(L _ "Q#NCZ*].SG@3"*XO)G#4R-R26:9!)G@U]-UPXI=5MS5&6-I
M:A'(<_]T1BK-I A_=V63J\+9D@B,PWW'_K(?OWMWBC$,2[V2&0^?G!FULI>P
M+A)='Z=R[6Z&S9*9-_&M.^QZ3CEKJ$RHSE#PF>!3"4"YVQ.VA9$U^"I?5HH@
MTZ.!A',*-]_Q2--FY&@GD7S$KQ,2PTYD9XC)&W#ED=).]Y5-@*=R+6^KO)&5
MCNHRXDU(;,WM_A5WG14/4T,]+.GX\&_TPU X$$_/08C?/AL2G*^4;O_FS4$;
M<'OQG\VVA,\6KMPW7#;E';V[>6GV6_(Y)+SUV.W)4\;]3@121B4L0>=DMO24
M#7<8!M,4BSF?X?>3G.30_GHW9!F+X9^X-(A5.&=6X0&G3[?PQX.*/VY= L ?
M*(_[WP,$C?9XYOU%$YSGVANV6[5'EKP=Q0Q:43TF75R.OI@7_]E!RT+!*]HD
M?)9552HX67Q.Z:9%-<BCKDE:R.V)?*.L1X:R(/G)WDDD*!;M'L@3=6)E"%0F
MKCB1:2R)2\B!-B;#9(&ID/VLN*-\#OBX(DTJR.I8I!'0PLAO-?X[H1QJVRZH
M38V?-@\FY:4L1I5R4^:P/(-LFEFZ"P/F5#FV>.+2;FIA?@C>GEP]AKOY^"O?
MXWI,CW??5^S'5-DJ V(XR2ZU9=3,FO"3VYKB=#N7'>R\S)UO65O.8EL(B]<R
MYUO#D&XKZ[PN+)#+,&,$>&1X,2IFFO?CSC!(U,*(+UNF8YYYA0WB+#V([0\'
MJ&7O:_P2W?K#??CS ^[/H&@066GWS)' DQ 3O]5\?S5>.3:?,6Z[_636.>)H
M[D@=MOWN_*E)8V<X3V$[W7$V0-0%9X_K/U6J$R['"J"_BF3OQU@)7T@NP!]Y
MRDKG:7<576#X!*#X9>(5U<O['5]N=P;+X'DLA\;')Y;QL>"CFR9V_?ECI%F5
M_;*&3:O?EZS*9X^(??EJ]36\%A6<2M_%RY_;KW]FJDFN3+3#JTQO>_/S_(/<
M>,6666(K2HD=*35\M'?VV@##%P0F=).KT+B7&E/? OM!::K95+HG-/A^Y^*[
MH?<SD6NJG54'.E\M-WU[7.']NVK5A')?#TV@XS,'7*M^-T?SNNB(GWMT>I6.
M/$X_S\*35R>5'-\#=>]7'7=7 ><4U2_S/75EXG 2Z%T:BR9<:(W+%U0 G\  
MS.Q(7BT\M&S2-?OE]@,VBH)^V0*F#23( !7TX-8T@# ;=@+*R("<$!-@ IIV
M"V\Z31]5F""G:0:4,6T*X$W' !54$M+TG+;3'*(MH&D1-:AGP-E(TX.Z+L#I
M\+(%.H39H!DB2E)+:A82J>V"4[73(>I1$.KP4A(2M:DNU:B:5*OJ1#VH75%^
MW18U8 O4F*.J #I$0^!P,L(X>(7@T *& UJ0 V/("!P/D% 2<EPP-6VVCL,@
M0>PG81DQ'A2G-Y;#*,@S&1@(G'[)<^)T2 +G<<>M!;$?%G!0L;]8U7:Z(84?
M:9U33!- X[$WRA6_8 WP 37@?%I3(S ^KALW_:\[#RHB01H YWSJ$(#7#Z[0
M<;GJ>>H&=@(<BC]7*'8X)V?E.!S#)MC<46$#.18:L1MVQ8;858YZ)FR+O;&K
M9_<<V++1P(6Y&E"97AQ-G-?EXDQ_ZAI@ ]"T:!-1,D ^G8TU/0-*PZ>F 9B:
M4K.Y\"*B/G7,A@DMFS2 :OE4J1_<#%!!9\/!@6HZO064-FG 8[%Z+O#LJ3T2
M9+7K.!N:S04XZJT=&EZ KK8-O1I1_.I@793.]*&.UW<Z4-N%G9W;@+;;'M01
M3TZ%ET=-I^GT@W/5.2%NQ^U6+9_LPJN."7CL;C?JO%VJ9_:HIMDP>V;?;9K!
M+6KVMF#3H-I.Y #&C9B.JM6> >.E+K@ &\"Y.?>#\]J_85<C!^4 ;OP)L 8;
M:D TP(##71(PHPI:VS/;4Q?N0*U-N<5W<]L[VU3/[,8-95P1V[83>9N#01(.
MAJ>U:9O."W'[:+?M5FV[(?>;%MIIVG&;ZKQMM&=VH7[4C1MF%^K[9KL;=Z'.
MV];;;.1M[2V^61'-P--K.WV'%_6MM].WVE[?JEHH+6\\3;F7=TX(459[D6Z+
M_=*Y/7>N#MU@.S=LAXP6K.N)V6[=;MIPY^[:+;<#':(NW*KZ%<*$YKV\RXSN
MQMUKVW@C:K]]M!,UI#[<39MP4VH'CKG-QNQNU-M[:9MOH82S]_;KAM]Z^WQO
MBY9=8T*UYN[?-N!S?VU>[:L).-@("@MN<@LK$VXV##<-* E.6P5Q,,B-!$%U
M[P[ABIK#@(1*[1#6M"RZU&_:!F3J2LVH@S;3%MIPVRZH.:M=IUFGUM[:GQIT
M4XD +J'8S^F&;))-DKR!,T"(W,#DN19.02U4!/5 %E0 TE(NPH\,F(Q(9-G6
MCUX@)8EA"JB*C! $RHSBP5L* H\/!G>2$?PV'K,91 5;W !M6L(-2!P: HH<
M,5"P/4 "D@ 9R @$JI^X@(F1!UB H]@O+/LNS( 7  -D "V_VS5 !WPV'2"T
MQ8 :< -WI QA"Q+0!U"0 O 57PYHBZ@@ @2&F$4#X@O.JQBON7 V^(4"J]5-
M' AHI0'C5;Y2#G<+;:)_>)7[\='J^&E(#=*!\J3R,2 &[@#N. -OP 40*!$4
M$ 9"03@("0%/- 33@!I4 VM00+$!"2P6L^(3# A$@ I2@2P4 2@ <V_''$\=
M24"KY*CBUAOV"XK;"A.A(ER$C. $?$(]V0EI#-S8DC)0$Q8ZS,7H76%1B(4&
M4<ESP ))$'"@0;2!A."G_&E-X ^\?+Q !->@&$SZWIOD?2$V?!2(,!G"!1G1
M#)4\FE-SD-#$!\PCUPZL@9X_!*' T(? 7; +[SQUH  Q8 +N0 J0%W"@G[3S
MK"[//<)#4  58G[LD;V3 !) 32)M,*"8]Z\7L'=F35OG.=NB#R2 _E4A)@)B
MN.MN0<WI];F>A [&&+CK.2&N[W7Y42$*.X&ZZYYM6]R P<[8Z\A9..QN/9DK
M=L*>*-8"4W#K_/HM4'8ST-B9PAUHZS9@L9/V2\(4T$!;U\RJ_2'XIO,!V6^ 
M"TC4FYVQEX 7<#Y.>P*P 2*A!L3VV1X]V$!MU]HE(;>O]MZ.VI'[<#\?KCT!
M8.[8+D:H6!7S% D@OU#WZV'=R8L"2  O0*"S 8+^$Q+ Z(D:/"@!S 'K_H_4
M^ZRI'ZCI@##V"D$;Y$!?\.[@7;R3]S!@WF\$?$\ ]3VHV_5_!-^3!%^_))V]
M&DT9_,Y9>$M\/_!^7<$G!OR>E'X$4W!A!GZ^"YPH<0<<^]^0 _A=%]&!!$ N
M8CMXOP-D@,3+'^J> %!\ H !":"0Y9OO#N-=0HQ78=\=Q9>;%W_CT<UW9V08
M7KZ3=C.SM]P&2VA-[,G:4(DP4M<7US\2*^I]J'D':7*<E(AU5QWP_8*Y,+]>
M%*(3:BL#7SW"@Z8)OS=22QC1\L,IHUUVJ6814-L8"/-G0<*#^#*O@]#Z43M.
MCMV?>'D4\.83@&.7\TH$2IAY.U_/T( "<.S88L_#@:_^Y\<\B(_IQ9W-/Z+>
M7C"*^_SA\!Z>*1AY^H3F\7QG__"2_M";=A31VC4"IO_TFOZJH?508WC.? FX
M\R5%J>/@Z+0MAKA3Y19DX-0?#%!/Y\]\@Q=.]_T/089S[L^GPS''9_[BF0-M
MDFT37H=7<>9>#)J#<^,5"Z4Y,G-P#D&;$Z\;D,V_TB*%,N&\*)VC.?;,S7D_
M3^>HO Z,@5\#(>BY0" (!@$A*(09T!"H^A0P BV WCL$B, 5-+IB, (3H0P@
M =\# E  %4 (AJ,)7(25<'Y> E" \W["VA@,$'$64(3A4 )O  WT!LR1T$'\
M08\*4R$CK/M[ A.^29GA]QG=5JQTLG #7@ .> &K$B;$ !V 7X9%&Y ,SN9S
M9 :[D=39R[#:%G/J431Q%+ 4/D)E"B^L$R0D<Y\JW2 "L4_G #TC0(75, =P
M0QLW.5 @,0",BF'02\#39PUMIIF0@:CO'K*(7[#ZVP'K:_U(WO4!$52?#B)(
MK-B,Y;3DT7H)4 &^H@7H_;W/]_N^W__[@#_P!WX7\!#P/A6@("#@]F *XA85
M#,=)D /L(TI0*RN )1I&4##EK*'Q/Y_U@"6* A-XZ"" #Q3^O"_X2[_I/_U_
M_P38?;Q?U"U#WR JS0)+,'4H@_?CM6T?_79@O^!TDX H*(,<&&.-B^*3 1>P
M&-))5%@45@8QG(^;<A8(_]T' = _^D/_*M EFE3]DOQ% 6,@_U]67TQ]&.@?
M?<-/!#>P$-6=/]Z7_M%?+,B!>D)4P@538!GR01JI"3;0 OP$[E /6X7@N+8R
M0/Q;O\Y'$7;#NO(2V'^^7\5W&9A_EHSN-_,9!0K"&- &Y %K  'H-!P5: &E
M<C_8=V* !(C[Z7XR@-1W&5 :M %GX1=8,EA"&I"$9#(OP6. ;5 &3<K4,A'@
M&V@!"M &4!N+11:QCO@8)V ;T/2=?^@?", $.'IDA#UQ$&@*!0.W(4\,':3>
M@;"$2!9A@JU 1B" N=\W,0-D!%8 XV<IN &J 4W'_*$%9\5/,#$\&@[%C5(P
M?( QA#5"W!1\XE\Z5_'-!SM@ @#]30%U@"W!+(R N1Y* #"@!6; @<!L3'3*
M17 P!T"!NA\-D!%@#N/#UU!Z= E3 8BP*&0$1T 0< 58,E9@;[ L-'^%GQL(
M OA_02#L9RY$#_<'6I"$A %PS-<P$4QT%1]9@1BL?D?"IE$4 !"RWT2@>^Q_
M6@(-(@),?6>? ,<;B !%H.=A+H@:K 'A5R%,,5:&].<A&"'/'S 8%) 5P<&/
MH >&$98=*8@60'\C"S&(]PD944%18"D$$9\@'/,W""FA1LY7(2@%9LS]YS3P
M+])@P7 'K#"]'_[7 @B!E0J*$*2L 6G=_$< XG^X7CEH!LQ_!HTX:/<9!:I"
M"S 1+'E4RH$0^24M$9^@)R?("R[ &=#_7036PD10%A03Y4+W%^ U%@\=YV(,
M*AA%00\(_:D0<EUE-Q%BA!IA]$=S=(0C0@D06@0.K& LZ#1$"&@&8*,J@  ^
M $S $)0$#F#!5P.( -+-Z&?182)9R^)2#((%L@5DP!2XA+W".L@F10<%'PV 
M$SH+KLU%0M+!!*8-4@@*'@ASP$>@?Z""J%]6J!5NA:>?:>0"S 1.%0YV/\R 
M4P:X01;N@TY %G@&?@U;0!= H5@:1\"2H&8<#!\!"@ *<GV@2PS0 @P!34 6
MD (0?T\  )$8K"L? 5-0%.P%TP'Y]P=.=8BA14 $?AF.@YKQ&#@&5F$8H(-(
M(WI@I7<"BH%10!-@)+"$]X?3L#&P <Y?$J#DV2D@ ,UPJ[T%FYN( @.LAJ]A
M-N46Q@C/'X"0$V0AU H*4!GX"6,!&2#=O "FX92 &JJ&F$ALZ!K"ABZ ;&B6
MU(8X@(B"&Q8%?%[NT"#XADB#&Y -UA.IX6M8'"*'F,A..!M6=J8A-4BM9(?<
M86=0'GZ'JYUIZ-=)?W7":K@3LH8W#FLH7:"'(,#SAQ\8"C$@;S@=-GWJ8<47
M_;6'V^%H !^>#=IASK <XGTQ04X@*<2 NZ%T6/%]%@"#'/ ;FH:.W7_X'KZ&
M$ER!*!\:B+0AWB?\F!QS!)!2EGP-@N$R@@_.@TX#H:'_-07 (680\/4&Y.&>
MIB%BB,?A?'@@%G$/SA'P(HJ!)>(]&&^@B 7#,_(%%@5_ WW2(M8'D-^CT1YF
M-B7?=N@D<HCE()MS-D !ZL&6\2E(@HB?C^B?I(-.0TJ8T-D+9P'G8AK*,Q\!
M>;@=,HFOH8QXJ]&']N$,P"UD 8L%[G 'O "&03!R)0:)18&6F _Z?C>*IK 2
MNA-BHAM %$P2O(69:!ZZB:PAM[<ALHD(XJ<&)Q**=P2)F"6>B%PB )A:R MD
M0%!WS(6$G&)(^/Q)?P0?9W$R$ =]XF!X%MQWA=_H!\9X!ZJ# P@!2H \8F+0
M!GP$2(&[< :P!3$%I2*#: J>( 2#U[P$: ;D-Q%,&>9?#T('N(H18._G- @9
MB4%1$-!LBM+?'G#6-( /8+*(.X!XG:*T"#\()5\&"&"S7("WH@28)'2*V>+_
ML2T("\Y'7D NKHO>8@WR>KP1X$< 0G!XBY%%7.=ZC B0A 7#+I*+Q=Q TQ5 
MB_LB^@<N9H#*XLT2,*)_Q1P& C!JA,6<C1"#,'8]8,+X,# 6:-WUT  JBWL 
MQT*EM _*1+4H+AIS%<)!H)U0#O>#=D+EE0LEHW=0U*@.VHD:D,6  *;A95!/
M*!,%8Z^'FAQX!X$0< 6,C(R-5##E080LH\I(2@2-FH++^#68AFN 87 %/"/4
M"LUX+>(83$T8(894C)^%E$$Y 'EI7A031CB-%\$R4C4H**P>AG(S:G@CW\20
M5-@ N%[GP=>5C6T,$J,B5(Q>XE30)82)E,/S%S=N%AW#1[ .5HW301#($ Z&
M=@$*P 0@ 2E 32 #U 0T 4A0$YP-+$"9L1  =U &:'#;A7H+@6U7$I $Y\1"
M0 -,CI%0O;<0T'M0QDP@$C NVP8WP>9PCINCB((GV'9/1@Z0'-X,(4%.H I]
MA:3CC(<G;(ZA07\Q.>()!<:C0.^ICF7"Z+A(_16U8YO'.YX39P+MB">\AE#&
M\)@3+(_U'K>WN16/C\A"\!J**)H9?W$[^'B:X^28 VR.;L'C^#HF.)ECS*8]
M2HXJBWI0.BZ-U:!A0"4FB2 #)_A)P'IH'9Z  XR.THKVZ.79C[1C<_@ZKHZ<
MHVWWX. )(0'V:-MI,.JC[9C9$(^B8TEP/(8&9@N4<3RZ!7,*[4C3&(_\P>LH
MBVB/OL+]*#L"=W:!KV#;Y8XA 91Q03XBR!SMN,E-CB(D\;A!AI MP/WXX%20
M#\X)R4UDD!0D0_"Q!(]VP6A /!Z//21PESY2&0KD3"@:N(XY 8Z')]![$*3K
MZ$ N.--C_CA YC;XXWZ!0!*1&.3F^."L2MKC[3@^;HX2)!6Y1<:.U.,-"=RY
M!=_C_YA?T8XXP>C(/W(+^:,)F4"V>>QC@^ ^5HG7BOS8Z1EZQYSY&!I@C@^.
MEQ=>') @0!H9&H07FV-.(#KF!'/;](@#%)!EI$W@2#($#PZ?=DZ8+2'D BD[
MVG9#9.DXP6F0D*3,IT)NCIDD+"?TG1,VI"@I.^I[T9_K>#8XC]'?_9@[XHZ1
MI&@P/4J/A^0*$3T*D="?+MDZ3HZI)!19$FR0C.0:.4,R!%"&)7E,:H^I9&4R
M.F:/W *.M[X]DZZCB!)>, 1_I.X'#=)[E^-^$$ER"%$D+1E> '>7(W#'+8R3
M461(4$/.D8]('5D&W)'PXR8H9>R1:)TE^4>^AH&D'W/,?3?UGO^82YJ3H@$G
MV4N&!!0D<+=.8I$HY ))08:2&>0,^1H6DP_EH^ Z7I&>9"&I0GJ0T9_E^"CP
MDM"?0?DHJ).UY!GY4;*0CP+RB$3&DOWD]5A+GI2;S>O8%FAMH@%!V4MBB*(!
M0!E,[A<SY$DI3>J2.>7T*!.RD2HE5!A%FI+!)/A82.*4O22]MT5JD;VD48DY
M4I0S'DQ 1AJ2O23K6$@:D?9D(8E/EI'N)#QI)<J3QA[]>,PM!).C[H@FZ),W
MPRUY/YZ39.4,:45"?VVE:  Z1I)Q9>=X2+8 S&,AF3K"E9LC'+E7II(M0$CP
M1X*1<.5:>53ZE"U -7E8@A/LY VY5?J/)4$'>4F&DK^"(YE(TI4CI&A 2<*5
MD*-FR4*V "(E#4E7A@3#I!,)5\Z5*Z0U259^D,!D8]E5R@'OXU?)-\Z/A5X]
M&5X@CR"E(%GR<0OY1;W72TZ2OF7)!T%>EJFD<"D:8)2^PFMH%Z21E:39$$Y:
MD(TE],=44I707V;)14:6%N5R:=%%DCCD$3DZ5I?/I$#943*0@F5(R4!>EM ?
M)-E2AI @ >>85Q:73.4&>4XZE\,D:1G]>9,KY$&Y/C*-[R1LB4?&C_,D_4@2
MPHU"8D)7)%H-H]_=2.K1)\_?$V ?:">< APP9(01!.3HB-W0COOC LDM:''G
MA&0IHDB/C"1>Z4(2E]%E26DFH)=09&C 86:23"0KLED&DRTFR^92FI@@P7X1
M8JJ4F%%KB5".E?>CB))C/H\:IM*G1H8$&^:+Z5KREX:!CNC)@)6?!'@QLB *
MW@$J^(RT!.#&-;$I(I47IEV@6VZ6%R9VR66RDM"?4LF*T'N=9%3I7#XXK0CM
M" U.CQ>F-4E?LB+O98G98G(8)"5#<#9DF=$?ENE-VI QHQM03\R6<I_?)AYH
M)Z@)R,C;%9A3@>1P+ 804F9%\",$@>N@?\&(P'-N@)4Q1@ ,(@CT*#O:F*&>
MK\!47IB,I"WYX'@VQ"/T)T."!+\C=ZE-RIC1I(^77+*9#$&(J4..F;MC!KEI
MZIBE8Y_Y9^J1X(5=(#)&F6,E_W9*GI6>I(@Y3$:40N5U\QKFDF0FG#D]PIBT
MXXTS.4J3MJ2(<E]\E[?EANDZ5I+ZW"R):\YXNB:3&6@*"[^FIE _BI&LR&69
M86Z5G\%GJ5S6F(CENYECA@;P)?%(LKV.TJ0^EQ-D4Y^E8DEGABF?)HFY8X:;
M@&:O.6@"FWB"-\EO0AF")&A).\J8R63P6!+D<-^EQ,F*&);%I>OX9'":U.:[
MF6:&, IG"7DSA)S,9&-)</*:C,;!:6[>D+1DFDEL1I65I8V#7IZ9ON.,*68.
MCS1AB;E5#H\B2KZ)3+(BBF4+:6WNE5ZDBLEI\IFXAY\I;AJ<Y>:9YRN0D?>F
MEHE6ZG-0QKUY3@J3K,A^84UBG6FFB )M7C?E);798SJ;D65@.3E&G7 EU+EG
MFIQ)YZXY3S*=4*:Y.6!^@XAF,W$^S FCG_)7W.F-6<-Z=WQL@HNF7W!EGIVT
MY)9Y=LJ4:^:^:5^&F8=GR;EC,I[[YLQYW!!KV"9#X&,VF\4E*WEO-I=(9;SF
M4Y9\D>>SR7;*C$MGRMETUI-FIUV0M4F=Q28I"1+<CV6GZ]ENN@5.QSG1;I:9
M;5[MJ7H*D'SEV3EVUI[< L1)5S:;,F:(24NNGFFG[7D_,I8#9]M9>@J:I^=8
M65YR;M-CP]ER6I6>)INI4=:>*J9M)T<^GOD>F\E1:AS1)B%9>UJ;9"1@*6:B
MC6IFZLF* '=WY?0)?Y:1)^?;:7K&G6=>PCDY@IJ48_!XW?R<QZ.]5FM&E-(F
M5(E!$J"3Y_$X<=)[8<JRZ6QZG8TE]#AQQH8W@YY9:\::+N:WV>;5G\8>W$EH
M;HJ&9=96$NB6$^7K66I:E,%G"?I2IJ"BY^.900:?R*5%N6^>E"_E[HE*1I>V
MII"93%:;)BAV&8+"GO2G\UEPWI\?J*D9;?*2).@1RD%:E&BF>-E0LB*$9#"Y
M55*?M*=%.7':=IEDFIAN$H]2Z.O(?F*7)R7U&6J>FF)H$$IZ#J'0)_YI6W*:
M"@Z&B5;>EK(C!IIX*BU+:+.9/$*@CZ=S>6MZF=$C-GE?NI!::.89/6J'>:8*
MB53^EK>F?@EN"J$H9QKZ@2Z1V.:%&1IDF'TEK1D^4I$+Z ^Y0$Z<KJ<-66%.
MG  H)FJ)PHX6YE;IB6ZBSN8.F6I*HC<#O5=DMJ"Y)B-J?SJB4>;<>6AB"0G=
M;G 94 YBI=U8=X*):,%\0&CF>\MG(>DZLIX*) 7*82:1KJ9%N7P4H]*D4\5&
MGII*Y&=S3MP$YP2.QX$VF41HE'DWSHTF#2JH8$X,\L18Z8J:#1AEPSEK\FO3
MIJM960:?R*;9&7R.GT2FD(E[HI#;PO18?&Z/ALRF6%Z.!"2E \J.AIH"J4!9
M7 J;UB@SVH]NH^/FDTEHVJ)>8$)7-R*($X.S #A\B<)HE$D_PI41CQNIZ>B/
M;^A"\%;Z"N0CE$%MZI]LI>1HDC:C*21;64&NI/UHGMEB=I!Y);6959*DA*5-
MZD?"E9@C3&IFHI,A3*"C/=JD[650ZGWRHS^I<[E#0I$])TOJ7-Z5V*A/FGM&
M?S-I8NDZ[J!D94IZE49_6>G-  .(G,5E>N*19I!8Z:S).W:6'.E8VEDBG>(A
M@-F!"@L.*;!9&\(+$>FCD9&:FQPI< <\0I$,9TAJ/JJ6::14BH\"D(#I7'F2
M!H^JY>PHF *,Q:@(>93:I% D#)D?+*;WI3:)DPZE+&E'&J;PI4CI5,IX+J6&
MJ5/*@'JEER516I7*!"2E/@>8HJ5IY6KJ>%:4K2E/RII6EJXI5DI(+H^]8UA*
MFWJE(B=<:=OMI7.E;ZJ)<J9(YQF*<N)I*F<8$?V9A"<!8I +U@M!!!]H*20!
M+@ 10/Q)BD0B_2(?C @E8EVJG$)_)J'6""V:A)7E$[E&,HFTGE!#!W@M)D9#
MP"UHAR'$U(("1(&YS5?WZXVGT* 4MQ!X)[3>9KG)V"DH ,:G\5V"#V9B<-/=
M!#* ?=I9X*=A(["!"GJG[D(8$-S,%B((1VI8(G-YI6ZY$%RHOX+(>9+* )6H
M"+F5ZJ29I8B*F<:DT* LR5G6I"QI\'A7TIF4:2\Y?R)SCZEHBEA^.2=J4JJB
M8J@YJF<:0WZ7H"6+BJ("GYQEC8JBX@D )8W:HPZFP2-;":-VIH\(0ZHGT)31
MY_,W.#H+T4*<6!M8"B+ /W@RF $BP*;XB7*6O:.&BG4B<[WC8<I[*JDQ*IZP
M;1:I2VIR!LSQE^*F2=B+XGTS8#KQ:(Q\FL(DL:7V!EUJ#2@_A*G2'WH)6I:I
M;^AX&6*FF3'J;\EMXJB-JHBYJ!JIBVA;6J>>$1C,@YJE^JE)R]!1RL D@2JX
M,:B*J> D6[E"]J45Y><(I"JF4"JT"$[>E:RJ3EI>(G,C:F9:E5*?C>KI"*MZ
MJ#Y>>$BG IH"IJ&I(GH%1,;H]P+^&'%BQ3>L[G]3W520%*R#!)^;X!),$ 1?
M@5(7X@%?7:UX&?B)G,(SLEA(&YEB45 AX 'A8_XHHLQU>$ (R47ZFO.=27@Z
MX'_!8I>@"%H*$\SE@@)T&=MI_D>L9C+P0L@"+S@-IZ+@^0+D 6>#3*AQ&G,#
M:ZB)7[R.<UT> $.2FL5:99<'7*(@*L/:KBXC?")BL!+T,/9$"\ :5!LO08[B
M%5"&12 <P )(JW0 "^"LIJQ$183";-2*RRJ+V$1XB^DJJP(^Z! (*QU0.WB+
M,^O2XBB0JS?%@%E'[*PN0K- L$8J-RM;8"SD 3G!T?I&3*S'2Z1B+K8*0"NQ
M(+2* 41KSRJ05*UA",(ZWC4+16NDTK2:BTMKTWHV/*U)J]0:M5*MEDG7.M?I
MK(;#'G"T.JQK*_CB*.BLS0+0:D,LK3]%2H.P4AEQ*].*M-:M @F5D;>FK4MK
MV^JW$G9V0.#:M*:M,VNK@+4>KE%KXAJT>JV-J[<XMTZM=NOML+/JK2<%WWJY
M]B_1'] :J12LG2;TA[<6#)FK35JSGJZM:ND:0@JN-JGAZBZTKBSIZTJWNJZS
MJUM@DTZN* +N.J2:KE"KZTI[[JXLZ=?JN1H.QBOT1[OVJGZF82 BNJ6T9:9:
M1$AYFL+*R+7XC$7CRQAN<HT@7J#V.J:,P0E$J   K4<KK;>ZPJU0*JMB%QRM
M@HS-B+XBHV>%\CK>,:\HC/SZOM*OW,;."KBVKS:C A :D*\,BOF*OKZ<]>O.
M>K\"L()>G5>S"JZTGNWZO\:O#6P8@;ZZ!;0>\(JUXJ_AS /KN^:O%6RA>> 1
M%:G%1'H)-A60('#A$_@%Q!\=<$DP""C!);%I6 1M0$V0!M!U&<&VFAC0=?9!
M8D#\L0%UQ!J1$:RL=80OL49\K,R@5) Z@!Q)*K:3' JM/J.WF.\1HF9#-0G%
M^A/M(FMH30HK_ 44NQ*TBTXL[?D*_15>[!)K-F"A*6I#<+7B#E*L-/JQS 5/
M+,*:A!0E&0<<"SPZD5?K@0#&@I#I28]YM8HB6>R[*3[B 'DL'0NG=9'.) TP
M=XJGR"G=-Q:,?B1L/7&E<A8\ 6]!_!U^^\>F,6;(?F=%(T&[!*,Y"I<1!):(
MEJIA& 80?O2C$AOJJ;)X10UQ4N 5.!YY&J*,CF=#+.MTU*,?;#\JRY:@)0>.
MEX2D#JULU(I7F(N^+!M+S$*OQND\:1(*-LDI*AC)Z@1(0+=:R=X!]*2@M\KJ
ML<'L&P'+^G@F(1)T3M2RW*S9P,?FLC->-RO(@K/]:&\#S,H?-8@VR\X>L^FL
M'@O/+J+)K+&WS-H,OJ8:"LFBL//!8'B7AA&I+!N[/XZQ\R4JZG3HI:<E(?K+
M#I^EYA1;[^6;>Z73X8>>E@VM-%J%LH8PI$5;2[J>!VUPV5YFM!.M=-EA.K2S
M1&.ISK:JUFPT2D[>EQ>JV6!*AIF$Y+)02_ZF5*EX^5NREP#"ZW@LUI*6*=+G
M4D*/\R7F1CM&L9ZH$[N#SK*T9[X7T8IOQ*,J:T.^EH^BG%AZ(J=5*M[WS$H!
MT:P\@REJBMOE6%@-GAMG86]3E'AY)RV.!YZD#BKMC)G3!K4O[1D[.LJT-J1)
MB#4>)U!MG%@H#J%4K1JJ5-XX6EP-<2]\M69A5.#,HK ZK-/PSP84X$:H-\>V
MJ@M!T&D]!I<.IVH)13XX&6!14ERBL:VHFGG(JI;.9$D@UI:1,FTTVM-:HQ>M
M. FKU7L[+6"I@LYPOF5C>X)ZLVX!47MDMH^P): XU8H=5:VE*,E&LWZ"'. G
M'GH"K3ZYV.)X>H(1F=M>M;SM1?#;GK1D[1=+W-H,QJT^^_P]LSL*]+$&Q'V?
M25(@.< +[.IJA[)NMVA!-W'@5;=""N6@BQ!\>PAI)YZFLM=)W=?'E(YD*?0'
MWKH*;0AK2*<)E/.ML4!^)I/.))21W[8AT&-)NV/RDXSD?QL45); &_%HX*:0
M5>C]Z-\2?,9"]JF(YIZ](PBPX,:5DJJ%"^$"N&3DJYD3++C0W[M9G"J=:"AK
MB..HH0VJ9C$VDG;=XR&)3CXX*^M\NXPD@O6$E1K-6@3/RD(0$K"73VB,2_#-
MN-9M?8CW7:EY*ADP%9B.L^K3.6W*#P#$CTO>UKA#;C3;LM*P?213F9_2CM\M
MP??D"KG0;,G:1X8$J.L3FN7""UON\X?5N@K^@Y&KG(*3S:79Z9WX$O-MF8OW
MG;E3KFXPV%Z*6D:4^5O.ESDM!ON&CJ0^;14J8N*TV^>K2>A"E^"G%MI+WH^"
M;E[)DV*;9.5=.:<ANL5F4-D]-I<8;5[JT;Z;Z8E(66^RE1UI2=!Q(I8Q@6:[
M6[*T'BV@V^>:H21N(TIN2K=6+0I[YFJU 6N%ZJAAFS5;O2=(NHFX[N099B*>
M+BVN"^PZL08H"IGKSI?.917*ZTJZ]6B8*4[JN*-C*IGK,KNC8S0ZT4*[0:UI
M6U*&FK=N4#MYCKANI[%G9F@T(JR&)^?!'W*?9Z ]YHP[8Y3)7."X4B64$2/4
MAT!;=ULA2 $MZ\WP2'JMCIZQ4>3]IPV"G)HTR@'N9*NH+%8()PD.D=ZFNZ$>
M%))>G(R:BL^Z;B2\?LLU<Y^FN$W!U(C:O!DZ ;PK49:!"QX*0#AVO.T#*V)?
M GHH0!'PU4D!'B^S!^BA-E7 RNOQ&K6BKJ.'VC@!,F_)NT;6O&8@B(<") $Y
M+[;048*\$QX*8 4$O9PET>OSJKPD[]%1IZ&\4@#2F^\ED38O"C %2+U[&LH+
M]#:]3^?FR/.&O!POR]L^@)9?;]'K%W*]OP*,:_.B-D_ RIOO=JCX9M5K!+B]
M[,JAJO2B=2DOW?L2Y'L]9]5+!.B]Z4G9Z_-NO?ANW1O-H;PXKTZ0[X:X=R\*
M( 0 OE)EXQOS*K[LRJ0&]4*^:D[C>P1 OE(<RCOR%KXOP4@I^):[0UYRDXJ,
M?E?J05"]NC W0_+XL<B4!*(X:YFL!P*OTOBK'J>G+KO[@9JYT:SJ>V6VH<P'
M[&LS/%X4RAA0^Q*\MZ_]:2>,CKIO+2JL>JO$@0DK*GZK\D$/"["&JU*?93@"
M?A91PFHP98  (@!&* +4!!1@+EAI'@AW1(E(5!P&?)P"\!&^A-TBY9!8&I;;
MY1O!CM".9*L^.?^.CO4O4-%!8I1]*V.+FMIN]=X;P3M>E@'PKQ!1]K_A[4=J
M'CXX!K"#,SI&E 9PE#8Y;I7'1 1:ZKZGYT0%W)'2::F'%WD<)L!EPHXK+-B_
M(J:;V0/>CAAH -Q,>I/OI@W!.W*: 3"I]CK&P"=%POENUL!JSO084<K %G!B
M1SMFP(\GQ1D::*% L% J!$/ _B_Y*-K4>TFP0%D#.\%-8M3:04K!J4<J205W
MM2?%_7NW1:TX7ET+*8J;('"QIH8:%MS$ #Q3;I7[HQK\_[:C_>C^NY0:JL-*
MK2F4AH\2\%**49ZBO&S[\UE2D7NI"?QJ H^D@0:*0DZZFRFG"0W:ESIPA]D#
M!Z5[<'1I!%>@'&4AF5GRCN(E%7P%&\+'G"8<7=".83"2*0=$M7>M'@D"XWIG
M\+V(9[AZ>-_T2RH6MELMA6FNMI*I9AMLZ9IQH8$2.0OSCG8F,@?<G0V\8T2I
M<8"4O#!,>8JJJ+RC":Q_[J7QJ""[&[VF4:50&L+ !2SDZ6B><K2! 4Q9#)\-
MJ:2TR0S#E(ME!=H+A\,=9(NI!?>T^4%3NI#.J=6@N&F+]K.<WWK@DHQ^\#!3
M* \S@T#K,#B&0*WZ\/GJ%D"MN0T#FMS)OL6O O!:(HV&P8(H;HJGY@RFZL)4
M"(KFHXD94 [0WWF[:%+$T=]&RI4&Q-]$28!7Z)8L[2^L)\AXGBG0D/N^ 3HC
MH0G]38V,[]H6&M0D6AO#V88L.*EC26!#1,1  L:*+=*[E0$IX6-PK$H $K D
M.#@M (1I>20&9M]TP!D("Z'='A!*&@L+S@![4N#$Q5Q]L>+:>45+4""=]@;=
MXBA(W%1\6[&\$&<X#7L 3DQ&2(SC;JM'^E:,[9_K=RO:#28L)M@W('7A!9Z6
M]+%LH2.@]OQE=<X"$CNNZ@DQPL *&.MVK%_.%P32Q5L 8\("Y %B@%OH CS&
MJ2%<LQC3 7S""\"8V*R#)+U7PE$O1HAE[#0 K<(*$UD27"82*UL M0HKX*--
M/,ITQGG 2W :WZ&C,5#1OUS&C'&H1QN_!#@>7!.IX,8^GFY<&X?"M"W2*&X&
MJ_U+XN%'_!KF+4BX\*8DD: ;,G^TJWC?KE@4H(B!(NG)+H*#0&(*2]&)Q=YB
M<+CD%7/EA77X#DJ,JS#"BA CO^UP2.@5_W[^H7:L7,2_OFHU"![KFL4<]+?,
MS'4'L=*I'CL37_$SZ!Y;"O!QVUD?=\?L<)6@"OL9!]YKJ1"'A-AQI?@?<\5@
M1GCLUPW(X7%;2AXCR!?KX8>+/AK@*.?R6L:6CP;ZIR4"B6%Q@(PD6HF&17QL
M(-_'%^L0T!2"@:#@&M -A@L50GX\\"[(JNLYF!V7R&#&B%PI\LCRP4Y\, [)
M&J&$?!90R#;RA1PX\'4FH=VR(C*#Y_'TVBGZR.+@@\P=A\>.77T<'LN, S*+
M/.0UR= O6C 9L+\LHA@LU8K(\N"/W!P'R(.BG)@B%\COQ(&\)&?(OZ@0<'S4
MR**PDJF,](!4,I\()(?'K-YC,!_#R4IR]G>Q3@:7(F$@L'[(MBV?G"97R7_R
MF @H#LH6LIQL*'_))8!I>)'4 73(:Y 1- %9'^3']I5]5!_:QQOL@T$ 9F Q
M/,@ZP.CW I@!=H$"DB%,!"#"16 XB!^A\M;7,.@6J\7H%RU^#.#Q;K#^>8LH
M0/TP!^#*:Q_7]]6A !*BU[BGCC/R0]4 ,K0/P#*.80>>!;[RP2A 3 6SA80R
M+%<:$F.AG"UOA,)R/2$P@,K)\JY\WI4>K_)K(/LARZ(RUV>6T!E<0IR<63PI
MV/*GR"ENRQ0!<.$MUQ/5,I'B+0;,$V.7,"Y[BQ:"V5?UV8+2B']'@[3+?:,'
M0@LNS%??BW O@HPFH8X8!L@31<$5@#J@!5MQJ_PJQ\JOP:P,?> 3MS*Z'"_O
MRG,)^_$K]R3!\H2R!Q3+K\&QK#+KRF' LMPLPQO3,;3,,VLJU?*]? <NC.LB
MO]PME\O+2+T<+EO* &.@ 2_CS%XCZ?$PUP_O\LT\*L<(X+*UC"]'!MDBP0P>
M$\RK<-.<,)?*#'/4C-Y1,!"S5R Q*\RF,J- A%S,3#+>=^YB!FZ#7>"RF<2?
M6M"@5N@@AZ /PH,$:OE!"9=-L8XE@2,;\+*-ZL?;6.1!?V'Q>MPE2!L1<ENL
M\\%^:#'T!P^+(O?PIC@WTW'D[N(L'E 'T!](Z ISS=V"YPS]F3, X]VHB[K,
MT=_=>&"FSG4G3@P[;\AVY]X),'JG ./SAQB( 77 &: BC _:24:@-<J$Q'-@
MPXXD><(AM0*A8KS?:>@,%.RK &,DFSM'QVM![_P[(Z7"\]Z2-4R1F,CR&-NV
MMW;*6/+,,L^;(OG,^"Z_YRK^R>6.SJ6B8?M@1IGD;N+1V&K&#N3@W! 4SN!S
MP#MWFH10@$<7_UF#(X(Q6!,TR.)@3> XGP4U09^L'DQU]T-H@2UPOQ*J@G &
M=G\B -N("SH:"LH:\6N$Q<QB4[ 11A9L8UA,?PP4E:;W:T;$OT+(\S$&A,N;
MXJZ2%8O+&O0] 1)VT-^IS<(V@H0C=(920BL()W2$G$(["- '"[T17H2J@KC<
M)_P:].[(9Z>PC?L@P=<3:!E<AGZ"L_ 6\HS=%]D\ ?..L$<&?'W&GE>1SRA[
M2-#WMLRE!6O&$( $) &@<@H0MXD!1F\*D%BB""A )*A&VP5L]''C9?R\H6%S
M ^9M<K6: V<X& %K  K >*@!)W,*4"; T5Y!0J<#I "2&EM@!*@!*( 9C49#
M 8:T6\!&+P%4 "6]R9F\9<8?'4AST71 "H &H ")=,C'2-/1:0$D+4FGT4()
M&WWT!I9PM!Q=)AQZ*( =;0;@T<P-*+A'EY9-:UKP29][K($HC0+X#YD?%[!=
M) :+="^WHD#2/ET+@$E# 7OA&0TJMP!6@ S0 B0!<V\;@ ($ >R-(7TVL-'[
MQ0R0 FS2>,$_[$MC&<#T='!'%YBV\B+]K)#3A4*@T\3E!*]<=QC>N!&IM"!-
MW( %?:H:O49C&6-!"H"Y<0ML-!P8'3 %709ID$2XTFZT9QM'_WZ+0@J@R6E3
MY<W9D%9$%S+?SA8&H !1;RN]38> !(1K(TP' 2G +2T$@!B.00J &='2<QID
M4$G#T4[ T#'3)0;"-'Z0H(X$<'3<\ON%TAXU$1 E) 6G-&6+ EATE?1]DU\U
MK1SU2\U&!P$@=?0@(8[2)+5)C5*#>9@1'!WQ3 PI@(C"1I<BCL%,+2&F 4,U
M@CI.+]0H0!-@&TB(AS0;K?#U!,8TRP8H+ IS@#^M50_5WT11+1,>:GE 4NU1
M,]6 0TC]5&_3)35J<U*K>U0U'1U6 Q!*=8#*&S0,#TP*< :$U7B!(1W-L=$Z
M-5;M44L*' &#XEB7U1##KG8&.-:HS5H=5V/4X/1M9U<C$4AU1VU)?]1]M5,]
M4I?4CN]4K5(;UC$ 5IT#T-)J06_#6'<98#5^($Z#4'!T@A#Q^89I-4?M3)P,
M7MTM/7XH"&3$9BU:J]0.06DM3D_44"$,P"VD%9MT;N/=# OG=!#0IY05#U]Q
MW1U,#,GT-YT6@-6K-"7-']#2S[0P+3-4FGV!A*A-LP#"-!10!3 !L'5[_5B_
MU^Z$?(T"T->C])L!2[/1T(?&5]"Q 94T+7T26!NHB!825V?71]S[FD\' < %
M&J >"--OQIHA(;X!<;17MV8 V()C"N &W*N0 5@ 6P\!]9T.0E_3<6Q&!8%@
M[]>@X&E0:1('FS47D/)6=5Q X2A,)P&\P1WM%ZX9SL9G_5C;V#, ?CU*=P=D
MX5F08TO4>@A*<,CU!1E!WA:H"0N9W$=YQG+7C_2-#7,YTYET-#U)4]/6-#:=
M FC3W+3*.UG3U;]U518@U-$2M94=K_%IV$X-XBADUU-0$&$$C-(+]AD"&XS3
MI1IH$*F<TS' *4U+FX:"'I(14><V'K4XO4G7!4CU36U8ER)MM0V >]@*HW5@
M4&:PT;^U!.?@0!E_-"2]'S#2!+75FV:LL)(U'!T$]!-^05S]6$,!/$U<W4BO
M*(_U(GWTL=&+=*R]62_2H_0B?4O7VB@ KMUKP]:\=K M3.O:O[:MG6L#V[=V
MLFWH_=J[MK+-;!?;T+:O36P+V\=VLVUK&]N_]B)UZ.73F7;5V8I$*K6T:;VG
ML=$+=J1]!J@'?ZHWC2*D!;;VK/UK5]O1]K =6,?;V/:T[6S;V]?VN_UL4]O[
M=K)=;R/;++:T#7#'V_ VOXUO$]S9MGF=97?; NRGEE?;F: V')U>)]89]KV*
M::8 J1N]]FN[VP*WM:UO']S"M@)0<-_; [?!77++VQZWR9URH]S%-FJC<B/<
>-------------------------------Cut-Here-------------------------------<

   ----------------------------------------------------------------------
  / e||)   Lyndon J Clarke    Edinburgh Parallel Computing Centre   e||) \ 
  \ c||c   Tel: 031 650 5021  Email: lyndon@epcc.edinburgh.ac.uk    c||c /
   ---------------------------------------------------------------------- 


From owner-mpi-comm@CS.UTK.EDU  Thu Feb 25 12:19:51 1993
Received: from CS.UTK.EDU by surfer.EPM.ORNL.GOV (5.61/1.34)
	id AA26012; Thu, 25 Feb 93 12:19:51 -0500
Received: from localhost by CS.UTK.EDU with SMTP (5.61++/2.8s-UTK)
	id AA06370; Thu, 25 Feb 93 12:18:21 -0500
X-Resent-To: mpi-comm@CS.UTK.EDU ; Thu, 25 Feb 1993 12:18:20 EST
Errors-To: owner-mpi-comm@CS.UTK.EDU
Received: from daedalus.epcc.ed.ac.uk by CS.UTK.EDU with SMTP (5.61++/2.8s-UTK)
	id AA06357; Thu, 25 Feb 93 12:18:10 -0500
From: lyndon@epcc.ed.ac.uk
Date: Thu, 25 Feb 93 17:17:58 GMT
Message-Id: <2160.9302251717@subnode.epcc.ed.ac.uk>
To: mpi-comm@cs.utk.edu
Subject: third part of document


>-------------------------------Cut-Here-------------------------------<
M3.MBW=4X7R!M"=FS[?T0"!P-9;F G&V9^JE.Y=8!$JUT,N0>,&HSGU:"W Q?
M74UY1V+0@-I&:2=3'@V7AD_#)65_,*=O/LPF1:NN;XC-4J5D)^?8$M:NA3:K
M"JU#[-7^+U+W_SMD+6*\V'R6?,_EX%(7H]==I.4%TIZ]]\L%WYZPI@PL;"Y#
M\6[*!V29\*AQJXCLI18RE?UQ_\_4(;KYB%Q()ND9^C!Z,E7XW-2X+"<&H!H\
MAR/*J5^U0UQE3F-M5LCVZ?)IC.2I[.!4M4IV35S8F'>%K>)XH6Y8(E8X?<A6
M5_6%%LT$J).U<./)\YU>WL[-+F'>J/_4/4R>)/\,.!6NS.9[:G]!9O.JD2DG
MG&M*B9N:\W[V/SP 5 4+B).>B[H4,]%GT;BA2Q"#)PVG!F0T[.//ES<MIK/>
MD$N_#>7*7^Z60WQ?E=\!]3H$N=;M*764C\8AF((8<4<#<II!4JYWG/2SL0F>
M:2W%D+3K[E.21LS=M1%G.*-VQMUU[IVW@ERS=<PU=ZES:$M"K(3(#!JSF8+\
MT<JSYEKYQ)?C0(M,-C/_O:2]9P(%+J 6[2SRHA)[;1N VEWX:=L9:PBG+8Q^
M3/&.51D\3>)YG\PW%""J0A2XX]UCJYJX4AN*:Q-+E]]V*$8E87R73MPOSM_^
MB_&[>F)[,C:P3B.LF()<U)+)#-G([;25_7@Z(!1[+DO%ALOR**KXR*LJ+KLN
MEZ'#KN*R+B'9Q#;+!1"$=O(V*V*19#0Q\7O$M?N^;5F(W5$05<EW;A,L[ON:
M7X6;AF-D,>*8I1;K#-P>?KVISV)/9+18UENXJ20J4ZW%<=_MJ+88R\8MKMQZ
MB[EZR^=.7K$WW%QOQM!9 65U.%UGKRHYVIM$(-U6C(LX\D?*+R#UK"D-?1<#
M3CNDW=YY<<$XEOKF0-Z2>Y.<Y=T)[KXXQ"A@%M6^?+')(=. <="X@SDTGABW
MC%^W!^,2Z2,5^4I77&&J2 .^#V,NJ"55L@GTF4 ;$*VW&./3H\-W8TQY+/NN
M>.G.R,:?,6Z61,E%+1EO?$_&1T*7+:U19;PU9-\>H%_&#\R8\=&W!UVZLQ'7
MC&&^*<44<D"7I-Q"7O*%C)6L<F42],"8@?N$MF%&H8N^2V/V:=-8 _@TSM-)
MC7^?Q]P.H"4R39 U?@(31C^M^+F(,R85R@ V-AI[ L?&#TRQ[SOT;)QHM>'^
M,%>$,&@@J:L2F+H/36+"G^?&1%R[,;9CRG8BUKZF$*_/>^-5#1+5\-I]%AS[
M?8O%Z-=EI?BY(IK%_?:]7YO%043'\<VVBF47D!P_?JN;EF/)+QI7 7WJHP/$
M<5_0I- YP!8 MM8%L(+Z24V<$ K0+$*5Z!,<!<W>G)$(;9KIHE#1] O[/?Y"
M.\.;U6.<Z*H4++@);/EI.VUL0DE1LV^(PR8W"LRA?LD8?=():\JJQ4QV1?Y&
MHZURJT/N9O:7I-H\;L*R,4BYT>/K+S%ZY(KR4^4V8<._D33RK_DW,)?^!7AV
MCU?1;LU+HL9U(+J-V^4&5<W'FYP&7K-4QAEJ"^U2*'6<P^$[&FJ5PR<5MLV1
MXS9T&<\0L_CNK(S52RO?,B_)0"$D)U*-I8E&%NNI)MN[&MWK<D<ZNPS<PT_6
MD%_)_^?P89<///L%+1>.@-/14&!\,^O1P]L8QK?Z/BVT?(&SJGSR*9Q:I3VJ
M[\BJYM6+85Q.E0P##0UB&+N6V(8F\K+-]A=R;"2,'%^9XDS)J9!QD28@P@M4
M>56_: NO] '6") $>)3"%>FU_T_9Y8J79HNRJPYO=8ZQ #[4!FXXTNK9E0J#
MI/=[_+$:(,OW?EMDS:EF9B>4ES=R,$[:]UF"/"1_Y:2 _\9ZE1Z8ENPKQ0XS
MAVO2F$\'J;?6++L?@J>V!6* )>9A+[Q4BAS3O3>^6_D#7M_G87T3-#VQA:.B
M#M=LVUM"]-Q9O9S:>TMGEV5\N&&08:.. -KIRS]OUO+2)\8.](0X+[>M^Q8N
M"@?3C\)KI@E2@N:9MMVP.=:M8&F9D/10J#@:O@($ >*'.1QS+VP.L;R65B][
M13]T5N2:[F)!=??_PR\3**1_M;VHG>W/(IVMW;W>+],$0F;+=-OD6?CI ZOA
MIB>?Q6-)(T3Y'(R3'B+W[9S.F<GZ9*BU13B<EK7"BA..,5!J[*33.QLN:"+'
M&I^]-+4%'7UW'2SGO''D-M.M2V)5(5G:+&WT;.K5;EXU?V?08_:N>Z-S%@T_
M 9S3\4.:\ALY)-R'.P>CA57!6+Y(F^XUP<<&XB\?>9=TJ^(&8,:9[:?9PU^"
M/Z&30N9DW7V3SG<];0L[A?/3(-2[].%/]5>@-C0J6F'%"[[>G\L0;@#9#9J.
MEP>A]&DV)6AR5#=Q!NXAAM>'P<0R,F NU3<<;;!FIC]])<?:7)"4V<CEI#+/
M]X9QB+T$W?1/AF9R#+6:I\-RRL'V'1C4T ,"K$_3?'5XBN%P+N7//<VD5C3N
M(%&@+ '$!9>Q_TE+DZ]&&!.M'ZNR<H[8]L<OC5+GHDN>[F#\*@P S^KZU#:G
MD:5W+KL%'DMX8?CF6>PAJS3,H,TPP1D ]\!BML@Z$J8#5]JX2EYM--SRX[4]
M>^_+3]HX]7_:Q/RA)>H6"=/-M,M:GU* U,9K3+2:[X ,8]>38\KQU"Q@,=%5
MI0V&%S8[\ \ULJ,#K2:J4TV:U&?,33&5B1JL/6DZY'#2SDL4@:AR$+II;!T*
MJ1O+H,MS7A[U27P&?$=W+EMOBIPQ01TU*]W2:U3_IJ74Q] ='C&RVBHP63U2
M\V"J56('Z3WA]7C,Y)Q"I>=XIYP'K\.VDS8C;=6&B>&M%+\)M;:3WRN.3JR]
M" .:1%ZYW(8U_\PI[D^#>8"U643D=,;5)\CM:?VJ $W31%>XWM%UM?:P3K3>
MI2O6NMDI[YU94-S?/=?6;+:!PL#F]'/ZS?#P-7UVF/V,W>HSX[IPMH?7,\:%
MY7(,-]2"()LCEK-$!2(.K5F]?%>\,1(7$XWW%3S;>E4UTM3O<Y8T_"S&)$6S
MU+ZDYN<P:43RI\KD7#\[.:?%[N>>*I13['#C&#O/GR>WOMZHYMFQ]39^"/^M
M54-QB & @5FU+;HCY@SK/<G!YM46X"(-6!NZ!?I:>7LV+,$ K\+Z^-IZPX.Z
M][S5E.FO[I>:+,>WIA</:W^N%6CW(<AZ%?@HS!*:ZX"UQ]L8+\%X8BNSADX;
M%0W7FULWY2&YQP>@;KY);VW0C,=-F\>:S9#S,[-AH#&W-[XJL7U@M7Q?/EE3
M--ESD#V6,>J:L B%CEFWKL&1XDC?9V:RGE!>!2/4F9ELW!SV+:H0!>@?[ER_
M&7R??=8:=>EZ_];C4S>O;XO&Z&)/( ,78?VQYH42 5K7L==0Z!5U<6V(F[=)
M5P_)7^,09O;:VO2I"6#N*9%Q@]24<"$5 MU4O#@I< F=.9R/(KM884P_9!C;
M7JN9IU"(,<$W>JME45];-A<I)4S?H>X8YA?UJEE_.<^3F>(QZJQ:,[U%?=<!
MX^87DDC6[#MSIVN5*T7<G9B $6LZY)91WC@IO+R90?,+*K\],H;Y74K\5&:>
MJ''!$.BM(>OD?MUYG6&'?1&=\.OLH8[TL)LV3E7B< '8;>-%]) 4;LP4'5O;
M:PR'61/JLR4ZN<>T=C[>;*^A<IHV'=_7$RVU5G52K5N=SDJ6VC8U:]U-)?=A
MV<"IO[=GG14NQ&>Z.[,=O;1I7+@+79/N"]>GPH^VG\7' .F8C_]UB$-/59.6
M?=FD!=C,L9TS#72+[N32<7FPP&,RXAYQQ?:?[@569>XWRF@JXNN7C]V!'0PJ
M?P&0A]R=*$-'']W[?>3V_EBPP6/@L> T.C"#3?X22FEIS%^4WYK0>2R$1?G]
M8*>_TV-7A'FC,BR/YF/GH\N_605^M%#TO=E!--C>;^38[]]D*,,SYUC_/4C_
M_9C5^M]@+K3TI4L!M,#VJQ-W;%C2-:V:E[DJ_N!N/R^-VF?D&T_-N_=%I0P!
M:2O.R@)E*4=3]P=D_2KZ_CS*C^8[M7UWGAQ/[B6_>R%I8E2NL<A94:?,O#EK
M-"]'F,IPH&3N9OUZU'"ZG%7/E\CQ)&HCE[>,]5,V?CBT,U=@LCW8&JQ"CBAW
M8E7!ZF N=#Z-;]I@A.V.B!4GYXTC*E1(;ISI_(_F7UW$9^<T+94X=.W<%>YV
M=XF[X,S[;(*CH\@2O!M229O$\D?'-<?Q3*S1)H]&L"'/'FUX+$2SX6C?'2@R
M["[&#AR4-C<1],S2UE9GV;!PJ3JWX3DQ3DQY+HYBDQN*UPZ*-A.3DU/$'8CF
M-F81C- JI2-TJ!E2C.QD'4FEVY3_*,W%1;P)W6K[;D*!SU &M(;T7<QUC1>?
M7BF\+&MW("X4K3VQG45^7/-I?#Z4W4V3"ENW"2'B K^21MPE-J\8^]RF"1"\
M:5:!4^SR:Q>3BAOX/1Q;K>MH[E<N-OPU%6W?U"_@5+V5KN@Z-A,QN?CKG$5K
MCO/#G6,Z*2Q2C0L9( JZW=IL2UC/<;!2!<A3FZO%?GM_%=AZ91_WCJMR!>0^
MH]&(Y^C:L0@V+#C^A6774@-SC-S ')#/.=?[Z^."U8S'@MP_(A"VX'G\?67O
MHX&BLVQVM"-[VHG]W5@&MTNYTU]9;A+3P:$#M$Q;(),^H-*IZ"BR)/!(VBQ:
MMU62<]^-&N37C&L2G?M",B_;-^<CSH:),>@^'-O.?N!,C52*GW7(LQT=L %B
M(N:^%S6O RD-W]@K/1V@ME?'J^TOXF_;M0W>U.+("1_9LFU$;L^OMNT9NFU;
M):N2CJ^+7V!.-<?;7O*1?A-\QN-L);?'^DLH[6_+?HW;L6SD]G=3PSW#G/X"
M$;#'V4K6"5*M"2O=[B!VMU44WVUHHA2'+MD<,FHR[$*6W^ULI:-6O#W'O&-?
MCI=+01_N-6:[V%E("OJX#RV_]&V K@ KM..HS6^[?OG;;CKZWG][G<C')?VR
MMD=I"81XY6>;@U@&+'*+>Y_<HS05@*@!+DA367$CN$.P<D0%VX);'ZW(Q6U#
MN'?'P[0)=[_P#=#;OG!O8,G<(!16=H<[RGTZ$/^RN<^__6CW)DU4TX$&;<*>
MN-?1X$WGY7+;".N$O6D.K1_;I,4;=[$4GYS37."-*W/<KAHS*(^[C!N+_G4N
M.-RC0N[T-GG/#'KDACX, -<%H9U/][%3&#C?QFPC7Z!"-1\G-VD;RDUVG7*[
M#5G'5FX!]YW[&1TC7707<G.B]$Z+*H.[S?W@9I1*N$7-<^XZ]_"7"YKA=M6L
M?F/;?.X/][ ;T)W<]B-F-EB2S]]#]\8R6YG9""Q&M[G'I=Y6Q#8QQIT87MXX
MM1<I)\TL+"?Q*CJ/Y+11/+&M+DW[G4-8G#E*I.>)6%>)HS0%,0%4.XQ=W7*S
M(^S#)6V$(I@[G[8W<,HU"?%S"N63F9HU3DN^MC%WE[O#TUMX'<LN GIJ,%[&
M\6JHVDQH,D(/#R&AI:_>'UJG'^$G[<0GH(=?/5JJ^;X\6X9;HGF9KQ=8CAYB
M6I/.9FKE7><.NRHEY#3C5W&R5J)Y6XO.)P:7)=CM^ 1YF(33H:YNTDLY7;2^
M92F@L&7LW4HFZRPB?CEZY*Z.T6KUY/@T6QP30%O(,7O/2=LOIR^GD/:TJU)+
M:,O(A>1-'YP8Q/?%0VWTCP'(/N1,JO;X:/L$SGJW >5WB.(]HC'4U?@%KN)I
MO!]K+P VIS:X8V<UC13K>@O*F=[+FY3X4AQ!S%=_;5>X1FHRK.9U[6T[%#7P
M=I>WJV)I8<:Y>GV"G"QZI&>V$F*ZJ_!&2RF2)/(9<3L$#L_";5!SJBUX=>J5
M.7RM(A6QPU?24<!W%G?_-C.[Q4_7[(6N:DP&J",X@P> ++9Z=_0R9B/)0WTW
M<?+:M,T4XD&T5PRSN:V=:^FV@6/!]A07_)Q^K5K[;>MH@-O%,1=7C2D^OMT$
M!MV_<,SI9@!VLEW'-(E:MO?8_F[UMFC[CUJ.'G*'MC7;A[19]Q\R#92!E0*J
M !BP?MP_*2;;=4QZ4P'D<57'5.ZS)*Y[V7WE/DLVNP>YP^U":20;][OF+O_^
M_.9>'+8G0'M3_!.8 QYC^C2_W49*;NI8*TS(WG4?CS6Y>VZ$HY\;EDWM'G$;
M$F]KS]]0=F P'LW<AO[6HSG<C.Y4=FE@^VOB1L(BNKV_9NX2>(L;X0E^O7[G
M<IV8RM3YKT$Z62I4S?]FV8X E\+ I^HV^OG,IMV)00>KF^SI=:TO]FMQ7A0X
M*#^K?MT.9K)ARO?0I%G:+XO/"(<<-7?; GQ>+B277(/5@0F\;J8PHNK0=GI7
M% F'6<>D3YBV-' )S6P,0?/#66_,P5VW]>CU+IPRP;/9!%3D\XJ6+FJ;ME%*
M1\VTB%48L0=2_PQ':W.&00W.D^4D-)Q62ZT!_()'2X?*06(6]A891RU08P@*
M?9&C/>H*WFURM?9)QBJ7'!]K3H#[&A.@3UJGHWQB^0+5W6R\G/E20GD&7#P?
M6\&<AC5#N.#T")X([_ANB1GA$D \=(XUCD96J)J^=Y'0Z[E9=7J:(8BY0:II
MIC6R>>"N'Y 1) Q _1.VID/AO%!?="D\*?RA&U6GPI6'2)"J*P!7$/[ [I\:
MPH>7B/!YF^V/GKC+0Y>&L.-U%L?;G?_81@P,/Q<2XH;AP;<CCC&<PKD,WH2+
MA;%\6&4E[2@-&CX*_[_5Z:CA=3EK.%[OWAC=U88K>E_AF,)".%+7B1P.)\M^
MY<!\KD$QWSG<PCVU=6;7E36 DKYV.(M/"3YD)!)G-M:E<T*4,UT6JWP?Y(>3
MPI&FIW"!^*!:=9DTI/96BA'B$;UON 6O(8[W)"F\G%.\@CR/L]]S(UO.W2V'
MAWN<SW!1^$F\$MYY7)?295'AADGB7K@[Z9,&9Y+*1V4=DV/1=R,4<6MUG E4
MNG^H#\>Z]G_4RLG55FO[%+GB0NYV<;97?JW6[+JR-7&N74,_-/O0VBP,=&N#
M0G_:8LX?KMO#<9O55@CZ4Y38P6\F-O/QM!B]$;'@:;1J@6TI+K&8L'TL=GYC
M<7MRESAFL:U2_LI$@JX%U_AP^43W'B!.0)G@$_9R]MS8<QO]:W_A!$BR4?KE
M*^G8(5)>9^3WUVF %7*;^2Z_2\3,+^D8=3S_WNV]\O*X/VN46C]OZ,#_.TM^
M!<0 [6_9W73@* FX"8 GN*G1/3]%KG7@_JC;SC1_8@'9(+;[-P7<*>@K!;%A
MA%"_NW&2*@:<=NPIU/RJ5-=KSU],MDKUE"T]=L$.8>W1\FAM=XZ-JEH:"&V#
M?WVEK5SR.-"IT"V/AHFNH\GCL0A)WO-W#*!.0SINQL4.G?%"X,PY\2N+2"*$
M-.NNT4V5I&8&WCG>[G2W20?D>T<:K^47-9[P4XW_L7FWQM_7^.FXX#VBW-'1
MQH5IL%^$ #N3M;W'FPY\H^O;1;_[0@\)IPVO94:'?VFB"0[:[_\1MS:-)H!#
M 7#'O-_Y5''<&\WY#61/P /<[@7GN*I OTH?'T?#J&6_XDY+)X <UZD0;*<D
M?DV%_G&B'(H8(5CN5$G&(PGDL&C*=IOT2<Z^%"J>QF>23#^%G_NPU9T:'QT_
MR#'9@NS4L7]PY'VZNY"'N6_C$?+87'3<VIU@#8"SR ?@%E7A>.[X\666' !R
MV#2_F#G@KW*\=6PW=1#H5Y_CDKDUN:,;NDDD5Y+7-YW:M>?W*(1-0"3?='=&
MQ:#DG&XIN4GT45XEIR(NR+'D?L!DSI8\=-PEKXZOQC%^R/'-[R!;ZDPFMY!S
M_S#D:/+X-Y]G3<[M#KZ>H]_DMU^+*HQ<=YR5M),/TR"Y>7+@L8+WX\<GSY'/
MVP#E[SM!>:G7P4'NG&_6;M!N=$FV29*<SI9]#I!SNSD,D/+*L:3\VY8T3$"S
MP86*HFZ_89*SO3TZN/S>G#LW0,-CIUM _9UO/&W_EF7C9?)3^9E<0ZXJ[Y&3
MN;4X*G(V(JP\V$V ''8[N+$,[\6AZ'8.R9>P/(XOQV]U+ @=^9B 1RXLQZ$V
MRPOES/*]J^%P(0B^S*Z!!B*0A7)N-]AY6" :)V]3RR?FH>XM]\28O#<Q+W7'
M%[SE_FYP^7>#,HN8()=[N'M_%/+9N+H<M9$AQXVWRSWD&W&P-"2A8[Z,QI"/
MN7G=>(%XN30:3EXOUT?K?@-S5H!\.:V49D8CK^16P'WES]%AXE8.9FXZ?G82
M0A_F3')CN4V <[.X79B'-B3:<YHA>9,<CEF5X2Y4S#O=^-2DWYJ#%ITM%YM/
M;*_DZX)Q;=><60NO;77?G,]T9O.,K<D\VHTR+Y4/T\SDMG%V.9I0 ^LNIXFV
M8:#=ME]Z.7K37@[AM@X$YG3'BTRY++]<V0W)]1\&S)]_._) N2TZ2"ZTKDP4
MRV6;67.%N0G1HX@U/ZH4RT&B-1NO.>37QRV+#IT?8,OF=^8$=N77U'WJKM6,
M:TWG<G/0<9)[9TA[AIWK>$O;)_-SN5,N70Y]&/ZUS'/C'?+)N1_Q2ZLSAV3'
MRGOFY=^?.8<M:,[W0YQ'2N-\BW.*>..\3XX'0)E'SH/EPG.R;7PS0 Z5.ZIH
MSD_$+)N?*L23W1VS>:V^N]]T3TMY]TJ/WLWNV\/F,Q;"/.N]MR-A-_D$M@.2
M#U/ W6DQ*M>SF_M>KDLW=.^*^&P.L>3S+7>>Y#K#S26N9(0(8+T6YET/GRV3
M5P&?"MVM6%D84HV:NXW39 >A>[R)LYZVFZN_>\S5J^"R0\\-[ P!-S??742@
M#:.TI9K^ IK.ZZ<UGA8"T$&;$6+XW 5Y$IY_1H9[/D>'-5/1YPPU'7RM9:$_
MBM%^35V\7IC [N<_S WOIW=I2)\ ,[^42^>4':72XBKHC6F0[$_\3XA 59Q:
M!JS9?6]5)@CP%XO0QJ!;&R. ML)%H=(WGT82ER('E@,USF;8Z@B[:E@7WDBG
M09NZCSF,4+!/5QG\9O;=?9V/YKV/@GG/DA88O]MB2:W8S6\L-ONU^ :M/$4O
MQBGFGD_WGCMYD!>,:!@$=2C56KQVMEB4C#Y%QVHZ$TF0O 5J*?DN+#<@2!Z>
M5I_ H[];GLB3.*Q\IKQIP:])*C_;W0WT*%H&[Y[^#".)-&XI3F P47-S;&#:
M! T"N9Y4V[Y<*PGC:+U)"MIX0-[<G) 266UC1<""))O0,4"V]]16UE%%;?0:
MON7>3UMC+G>9B\X*55UJ-M2H+W$T9>';:RM>17QO!QO%M\ ;AQK5@LX-I["!
M0;O5;DIJNAY:Q1RJ53BJ+G,XX_3&M DUJL>M/ER[*2ETUFPQ7=293LW1M4/C
M@L&@,Y)%BAJ50>KVKJ<_GBNX8X*Q76M.K+K/G@!2!&B9*<_[&WRW/-R8#JA;
M7,O5ZC1N>+IZ>2=6)H":J!$")665J;X<1A<W[!F_Y:R^\3H&:?(R7OJ_-7@B
MM$?*(, QNCNX</"NPY.:05DG!&L0H,W4YXGSZD(C'1UOD<.9 /:U$"@3.%NM
M**3BZF?#&E5<IXF,K"@R<1\%4 ;6-T,0+A#U>Q3"OENS5,O9]S'7]KVQPWUG
M1H/62\K\:>62RWLWSHOOM3/1CIN:C6F$*MB)5GX/QIG?HFC#>!8;T[8L-J0/
M;AGCG#@QMB>N8>C=LXR[T_&OM<Y"X",)/]&*P%:Z(@RPDFV2*),MCVTMMW.:
M^=31G7(_]N8W5.XZWJ#:NBM_^V]([F>@9R.,?0JNRL?1K&U=7>2\LJ[[6PF8
MYY[1:@Y/-G4\<&X['L&68"&EMG+$*H?MXP<FOY%;N=T\3'.$>I"UM$Y,RY6.
MLFNPGG(?[/J-E(W*566#QTO@*O!T$Q,V/.X"WW9#,OM:U>/)7L+/%5%8B:[K
MUOV(^075^AI15[=7UWS'E CK=9I^WXN;QAW JUQN:DJEE=(4.<6\0#XM7RZI
M)TWC[_/HHB4,44GCY9(WR+WDDW4(N:A\ I[:KG(ONS?KZYHG\1<1>YX;%ZT/
MS/VXI[R].IY;U'A2G9>WUL."PO$I *V\3EX<OV3KR27@?/(>^<</4 [_4[!3
MSL/JY_7@(O&Q$)PLEU?7>K%Y86<1^Q%1_1;U^YJWUV5"RSIXJ[39U U9OZ][
MRK_D$G#/.FQ\/@7@)OT"V'<C:#K/NH:]].NC&ZT/V'GKB($&WY"[;7); [)/
M;$-ID+1F=)][T(T$08'_NEOD9+7<;Q%@]PM;GY'/UFODR7$,>ZY[R)XTW[#O
MU?6K)W)"J$*MW?ET'$@K4W,;GL MY7D;O>ZJB=<L<USLW6]JN9W] &OY%;RN
M1*5*.+5->1\;_DU&#)6'R97C_?71[[*[5@-8\ 6:Z(3L,//0NFX]39Y@-ZVC
M' ?=^6L]]VH=V/U@U[)SV2?L0]'8.JY<O[XKMQY7P(?L!G:E.9+]TDX(O56R
MV26!YFYTIR306TG;?2@ZRUTUF,/U>I0\S_Y1R'1V%,GFX6^.>0F'6^XOF)UC
M"T3FF$-F[;A\O[W^=KM=UOWKEES4,:K]R XH9ZBB6L?DEG8R-T[ I'KF9JW/
MMC>!A'/<]M7++.DG:(#K@+Z>O'+B\6==8+Y;'R.<UI_FMG:$N>*$H'@DS\SZ
M6A-$47.0:!MUTVW'-I![O]NH&7,0.9%[Z7TVCZ^[SINHF[38N=O<WPTW)[C'
MSG'G341G>QNVQ\[_=HU+SBGMDW8B.W<]V^XW%SV^RM'<P/%)MFV[<#YN9S/ 
MN4O-_?+H ..\3SIMY[!CVWOK'W8.!KZ]47XBC@G@<C?GB9I:+XA*ZDUG!]\P
MB?CMW&\\]G(1V_%KQU,F.U'G1/>);9_=V/Y^HCEG>9?MI>VRK\0=TT=QC[:#
MRM?M*C7 @D=1$^=9Y["CCMWM2O-"=M$/!CBWD>*X#TWDSNCAN3S\X^YM5W"_
MR+?L5@!(Z9M'$MP 7[GKQL?1J78SNZ4=S9YV)]ORW%7L(LG#Z^=;*.%K57#X
MM6_M>9N_(=!=L5[9_AL&W)7<XN^W[Y=[<TQCM_&.:_^&"O?0\=N<]@P589L_
MN9OM*O>)>_X[LYX;)[ CV#/NH?67^[L=CLG  YQSVK_M!? F@/+<Z%5R=YZC
MW/E^H7=\G9V[Y1XYCXW#W'??AO=\>ZH7*G<FB/\FK<WJ>F.^^*,F+V!V<]Q$
MK0?;<'7B)I?T,(YI4QPS=:;?7FSRL2\;*H??"V:#L+<$.5G>'8%3]YT$1^I1
M"ZGI4R'G7.X/['Y,W$QSB)GH._&4U]'.U'=)7TS3>4^F>D]WWYROKP=) [M;
M/@_%?CHFZV-TZ(Q8JT^^HR^&1LHRY[)MT\=^OUTWO%FLAK6=M,5S">@Z%1/.
MW]U]^+U!,6=2^M>3;4TS7>&[R^:8^A(PA9L/+WH3_U3JU3FQK-OSH2[76[7[
MA'UT]%W2VW:.9"E/I(UVU^W3K9NT..22>[IGHZZ)5*KF1'6]S3_TYIC#,9\Z
MY'#IHH8HA!LP]>CE_*5K;D6\Y3N6'3$=0\>@V[\%U-&-RG1/[JB8GGXH=O02
M.*G.QMRH;4XY!9SW-GHW6M^6JLO\@M>W1\[;U:9W;3^]H]XS@+Q8KA3G)*C7
MJ^':2T CI#B3!9^8E<,'TV8DFIDZ?'<];)B!MGKEX:M\XDS_^\!0!5]+[*2;
MP3N(. $=*CF-;>/4YJVFGP&OTN)M'7L[$1JET0&NODTXZ;>#8+3OJDZARZHC
M/[?J(DJONNY[EMN)EVA':=:VQ_>"Z!T=6(DH8A[6XK]I??1A\1]=;QM(G[[/
MU8MOY6?I]_DY^Q[OV\3MXIYUO;C$P!SG,5!9(,<A.PMJQ3B8H4?.4D.7O*G>
M;R#;*DF>I(MX=.YO_[9IXX7</H8W3^=8&W]V!R,H8->28T34L7+<LZX"T#] 
M5*WLM=_7>YH;O4D%R (4(,V" ;F%91ZW7V>.)ZE^)7WC8<1%3Z44P_O\3:[7
M#:WK>>LDIC5^)3E>N"3ZV1B>#ASM.P^<W;W9V)F:_<AJ-$[SW6=T#PO\J]A%
MXU.5=^C>Y>BT?!UT7NHB9;\\,[JEXIAGQXE@%@G_XICQPC@9-Y$31\$R!0MH
M_B)Y1<;EW=-R7.B?^\E.&_VG(C6J)[<7AA<#!@&&&IJ"_S1\;!>:C[E/O&6.
MO2EI\/>GY)RP#7Q40M/=:3N&/^(=\:86\=<EW$S/!P]L$U_::Y=Z#AFVE/@V
M/T>)D'3S<9Y95 =X+OKM:=;RRVN\H<:V8*GR0@O$"M]UG6F<_#J9@C=7ZRRL
M/K=[2NK"ZHHW&NO.W5EWD-F&'K@>+59S,9JP95O2E1N?=^5,88!9S0AT_-*9
M6]N>3NHP:%QX=RLW5(50U,C,.V<B #9M[D6G1F?CY9&Z;T(^IG5U?IV4C06O
M]II ?&\+7ES8N\Q=O92."(5J?=5GA*S9_UQ)Y^:JI+% B=:V:F1WO:Q[Y<\A
M)UW4=T_6K.93 ]B4+YQV#.&N^7>(-AZ8,H]6@V:V]-+ADE97:ULW23=8]?,-
M&2,>34L9Y^J44H@"+2U3$':<XPBXL/Z.-<L3$%E=4N/3PM/H?,P1#4J=YP^"
M$2K6$VFQJHYXW2@1$WEJ^6R%DMW97"\\.Z^;A&=ZEV'LWMA0HD/M:KG=$O]5
M%N5$T](/*L8;J_GQ="Q#/=5W"@(U76ONKR:-/&9R +WSJT3J7&#BF6#-X^1T
M%S7RQ+0/9>[4+[=:?@+.]JCI$9_.[K)-40!N^"( !!-V _1;&H9 "H"7&Z6I
M19FS(U[>PK249CLR'3DGM1UVQ\S2Z>EY+SV6LWESV!Y-#0*XJ@R/7U@$_WI.
M&M6<:UT:?><'..@<G "JZ?AS3M7<W%S"<)F'51*^\^S**  M>/8.0RW'2ZU^
MUN9J.&\P^J!X>)GIJ['%T1)"9,9V,M@63;T4>%+P$\.R=P C9GW>7G>?5]C=
MDY.&'&HRH,!;!3@%H/F]WD2,/$/ WO-P<GAU3%>J"JD 2 Z#[N"0Z<V#QXQ/
M [_GD-#/P)2MHGT)/1, 8)&$BQYN^.@YO:M4__P])I>)TL#/\Z.VI\VV9F46
MU\J<,W3U'.7OQBP[#+YM-A2X].ICZ_YT">I1*\$C4-_'YE7-W<F;%PX894NG
MV@!S-\U'DB3TDD<M=VK+!$H#46U,//NY+B:T\;7&;&Z=B==L,3:R*WZH9X:.
MZX7</[<%(NTV&<A.]O)1YRW,IKD>:TI=.9A'O0&OK]<W374JHFA>PK&NS_I9
M"6EIMK]W/9S.*DNEOX@G2./5W=70.!]U>6B!!J5^ R>8%-S'9!(Y:/SEH?>Z
M4GEX:O%K4K<>9JQ [-?KB]G$Z]V?,?#V-FVQYX=^ZQ&OUM?R>0Z0$DU'E\4W
ML6GQA9HA7Z&&H):+'QS_?4/1TO<K[B\><V/XU5JCG^ULX%1OW+,.'.<8\%.-
MXTK?;VS[ID<4\/X9/]6SU]^/8?/2>( 7:E>T)ZB"D3G9C6RVNSP^Y'YZK/D5
M 9@ "_"4>QN@D\UV/T87!$<"9=)"X$A@J#Z%I8KVLB?RV#LO!_I80:\^MNK&
ME96-<;6!<\94;U=<[;&UYF;7U>4B)?A6T*Q=AL8VO+^#=M5D>*C-<EV_9 /4
M@,<+^_$%8.]NG&;Q'!TXC:MX<&#<7:(5!:J-X$LO5]V&>>%H)F^@:,^5C=KU
MR[/2@;F67G2.PV9H=0/Z(=U[<T*R&GTU5KR!+'J VTJ0D$7YG60Q@VZC+C7:
M>;F?4N0[N(ROFKP,QTU;?O[947F'6D;Y<5JE_<2:MB738%';M$5/QOUHO[P=
MA9US -<J9-$[CTQ)I8#R[0V7$_3@WS(PF S#"ZXND*'&%X'WS\=0+HT%%N0)
MJ=6$)CK)<FRYU$?S'M^G\'J-F]$3:!X:+NTV/%K&&K_5$N!SV__T_K *M>DA
MJ6-\NU5@]@Y^Z[QRO([> ,/.HX$Q;?H->UFN_FQGO8?UPE XO+'1[%N&54E3
MDC'?9-@-O=Y;@;QD1+ YNK?E1,U#8K+<44/_35DR.86:GGJWYHD=O_"6)-5[
M'8\J#D\1*0[_ .L6SV%_.7FRQ%XX&E?8(V\B-![8+\N*Q3RU>/9.KBE4K&TS
M3?F]?G5^X&H-RY>[K^%)%FO4"[Z_(M0F!YJQOW:32,/:[^L&-%D<7NS1-)+2
M\"^7Q$?\@E,\^XI\G\6?Y$(#_,M/30GG^;[\GEKWXG7V@W2G2L^^B\W43OQ&
M$A^#(%'M-U(0K294PPL:.,RX-,GOMW9S3'@1(*C>Z* %C7Q!J<.N42\$B$K>
M_#R5E;2_9,^/@9V M+&!>=""]$5F&05/K PU/ .8HX&P%%Z)X8&@;$BQ1--=
M+&U^9$F-)5^0E ^D1#K^\466:OO ^B419:GN7C!N!N?V,DY3YN049RF>W%E.
MW-S3:_1EJXI.U"NB3R_<)^O@N6&QEOP H5<^-BLOB&,1R,$-MJFO8WC!QOX8
M,PNKR"I-Y/&TE=Z#_QE>$UWQ7RF@8.!P.YK@:.$[Y!CY:+7TJ0PQF5^=E[J?
M":?(U. Q_'*TPPB'O$8*(4/CI7PC*"LP 2EB,_C@3#>->F@N=6>.4L?@Y:T3
M^%CQZ7QT/AKS*6Y1S-;?1QV'RNF&N8G><4O2M%&:%,^  7U"_%2.FL?0]\)#
M&NGYP>, \$VS%^**K]E(HIND#T&W[5X<C_ZG*4#_::38R6_!^"Z^<'S''_R2
MU5XA>_S%]BV.+LDI9=H[?LW.WDV/NX'\X#OYO6R?6OO8*KH_YB2_"E#)3R]>
M\E5>?<&PH $RZ.?9#LRMW@_KT_$UHK+.GJ_:O&0N[9^BO#FVO9O-;?_PM(IB
M[[*BXNN('F 2%UFU6S G336.SL'0KF./!$U=G<>B&</R=6>1_8_TKB\^Y#>[
MYJ3)I^88([CMU/KR[%UJ(]1T]^-JKL]T-:Q7%#D>##F>['LF'\O&R2>:%&Q&
MTE:\#M8[&F[4XC@_1_"Z&2%VM[S4X G P]@=W%G:_@##"6"9=I^1:M<<)''B
MD;.-'TK#KA760@B;@Z3M57=]D],7(0N>4!UA]NX%[+7S/^-J)EOYLVO8;P0;
ML\V3OL(.\.\O.@=-].P/325$#CD&??AOO?,$GP,3#*W2EWT9868?Y=CDNX$"
M4?-J9L;;7G;V?4H7RH7_;U5TLV&3\OO4?\"5AB,I (W&F:\2X &V40]S*0),
M :Y>#H[E[8< ./!9"W,6\?WGGV5W[KN5N\%2Q>^+-AC\$ULCP'.:"5 %. 4R
MTM#2IJ$!_]6PN+8EJ!H<O#FT+'4@M"6OH[@F).=[ZFF.%4@LI<-2.WH)==3@
M*">KG^JL=QF"'@U&MOM=@ENMY$.Y=JG789E-=*J ZD.+;?R7_4G.:!,@D.1)
M<.CX;W4[?EQ=D/[J_&P$]5'10_V!:%'_*9K]GAS3&)/ZD\.E/A-7CZW='-':
M'_>81\&H_FN[NTC)M^3__+#Z1\%-8!! "-#S) HZYVRE@NX+N';=,#C6C[A7
M.@N"4_ZX9*'F4SH0]62^[;6PYF.XO@//2M=)QO.66%ET83N&+H91L!I0"P-?
M9-V0$L[#K$>87I@>KN%B1D.[_T9:WMT>:KR7!>)FZ;BJB\:+(9+O0<_$$U#Z
MZ>*@3\+('&$>H6F4!M&QU EW(_E,^&=O.FWQ9.SV8!']B=9N?D#MT<A*1>E7
M&46-AEFU<>4UCE<=;.I>Y87.^,D:*V@W"IY(MOV=6GF10.OEIUDN8CI>CO5'
MU!"MC3JF,^1>5:VKOT$NJ/.W(?A^MXV?DDZBQL[.(8?S'M#JOB8NO1_I'<>R
M]]-WDKWY\*>:GHR1O1(OTO"_5Z6T=D\QO\^V"?#R]]D;__T+O^11P^^8-1O&
MQ9>^1T+Z9_.M*WW?1Q?G]V^![D,)?ZNPPH_5Q_!?T0G\YL3BSH?_QI_PM_;?
M?V& G'H&/@3NQ]]1S(J+!FJ4\D?WJ$T0OB_C]V#RU$B5\WZ]IY%2X9].A4<"
M"*;U'<68#_#;93_3I\7W;&YKH1I)'I)_IX^SM^+Z]'MRT>_K^S#>60RTY\==
MXIYUI8@( ?1A?B?-T^,$]$KT:'2+_,:19C9N)?#U=86,O\)W<!2Y7!8714?&
MK9N^\SL7X4$NS*<49\E1XM_/XUJ&?*YS8AS-2:R/QMND:ML#K,.(#-#'/LJW
MA=+DR4]YPM]?/B@6_:SG2AF# /FV>\A="/#S8^3:[?2(JTQ=N>'?E6NI2?P?
MY5'<*+_C,G$=>QS<SE//Q^OCCNBX/[G[_<1.-8B:Z1Z.$GE O^MO';B0KKW6
M[4.#O,([@'!04KG;8\M*<Q61"=?]8;]3#NDMT-#[..T_>>6@[::O,H#7 P@%
MB5^>GCD;,!I4X)BA-PIG1O.F8L)7D&2H\+_71UL:@_)^<3^>921OM<9Z=*@I
M03OHJE$1Z#X["MY?-4:A09&J'.AEHE(7HNYO1H%FQ"]OY590JW*P'0F&^ZNA
M(P.-467?7=J2N+LZ5%%27<%M2 "B6:=345! ?-([ U#B:2T]P0G]6A<X76"3
M5[UJ+EW@6YA'O4MG5OU"8SDG PY8 FJ#/_AW05M2!GP#80)O'LDZ_P%@2<$Y
MQ34N3WQ33F<0/0XY-$XR4(QHZQ\$.>Y/]W][3T)*B%EJ?WL<?V6)9+0\7%TG
M2G9&&5WW<[ U]R D;PQ04T 30^T^)'Z /=-^Q#]=/1I#>SNM.^%="WRQ7;4;
M.7?A2^A'0%"X7<16J'J/;XQ>YW3V=')0KGIP6CAI,%\=@'!AIT/\.>QL4G >
M@#X!2S9?2CQM46*,9^9TY4+H=+)DS$+G4@M>RS;\;&YFG3N\>A]"]6N9#7YG
M&'4X08QG&W4@;+1ID&E@==IRA5?U+L9W"W-!.5A8?U<7?59'93Q8<]!J4V^S
M0T(;:&LK"MUBD5?Y-!4XJ4OG2.11(7D4/IHUF%<L<<TAVG";4*6 UUYB;:A;
M#FBJ6X94$6@V 1A[]WHV=SD!^&*A5'-4$&R(> ]-'WBO>O!JQ&R7 :5+C5K?
M7UU\""H-7!U[#WNP2\L[N8 "0R5T+5^?>]12(7M:5$-JMSJE2_Q0)DU3-DE2
M'V(_&SM_,GW[2,!*31PL24T<(C@U>Y]HA'%7;+YX@W1($$]^C6-$?6=]9E*Z
M3G9_%G/830%>E0%[?U9[ 7E2?:YW6'8$2#0_C'^+7.U-CW\-2V%]M5]'>=%+
M>7Z:3'1??30X2KU\H4P-;3]P07!S-1)&4G@C1U,"%D0Y'T5M7T^"2;AP[D:W
M6,U]NW"D1E]1'SP4.K=,NUC'8$=:?![74BE/5SK<?I-6\7<98:8^;6B0.@-G
M"61?'L)+!5/40M%5+%"?9'MAH7X91AM:\6/C?<-J14R6?<EJ'F+#))Y]*8##
M; 5*8$8]7,D)_UB0/ZAG$CTS@&E__D(V@&=/.( \@7MDI'UQ422!'&0C4$& 
M0V!#@!0="4VR"! Z5CK4?C5BKSW^7DR XP4X 7M)6EIF<.0T,D<Z32T7+'XE
M3;QL*$VI>J<-K3?^'Q$]E#IH@&\>HX W38=LZ'P1?,ERE0F90TAUO#U+=4D[
M.5X0-DH;I0$V?.9+$7E=?-@.8W.7;3U\\4L%@"!LC'M&? @VYDN30P=H43&J
M<Z- FDV$:^]N3&.M9_-2#F/S7@4%'X L<74!7VFA1["!R%L&2&\&QX ?>X8U
M?H%C@("!WDPL-A-[P5LE>\-RCX'S2,1'1QR*@#M ,7U+:SU_S3UB'!\%FAI\
M=#E]?G2$8T5_@E_)8F0U=0'J@&)2?GPA2S%!@7Q6?GAV0G?R@+1HPT[A/(=1
M_$Z7-YIFY47.3H-_'')B2[A2DGSY@'!R:F[V-8E2YT6!.>E%^DZ04FY C4R?
M6.U([X%R?FQWVT4O<!]PUG6+"=%+MWS=@0Y!QUO5>+Q\R%:J?YY$S%+ 7/U3
M^FS$>6UE^W.O3[!0$TZ&6.ML!SM'7A>")$\(?Z]B)X%K=,$THX"W1U)J3EG/
M3&)A\3IZ:+]^P410.[P\D#115B):1SH=4Z-5Z6@;4[ Z5CL3@+\^>F1C5Q0$
M-#:56$)645]%<!AB/CIW-VE7(D88.R=]9$)Q>W)+^'3I-M1PJ$PG:9I(F&D0
M/5]_=GM*@6Q?^E N@-)!4(%G?\Y@4X$/ U6!25E7@==:68$">A='*UH:;UZ!
M&W]A@9ADW&W[+A=49H%)@)\_2X#^?SL;S6IP@10U34I*<JMHZWQM<-Y*FTN'
M4?5$GDO4'U5-%D^Q4"<#6$"-:L5=S$$-@(]J+VGG/]QL$TW15L9DGT<&@AIU
MAWA>6_-/4&J+0D50K'B:;0P[;G8]59]N+7R)@8M 5TI12B12"SS#2)2 )D#?
M-FAK U*_7IJ A&^-11QM[DF/:B5Y.'K1(3M"(WMZ17 [R$F+:D!O'(+20)@1
MU%Z;4,>"J8!A?&-M8WP/:&9QK%N9#2U+(E(L&U]\CE2*2CY\*DP47"M2E501
M8YQ']2X?!:&!K0C6@GU'@FBX5#ML\E"]5$%,:E]";$R!=WY+2F@C2%)=1ZV"
M:WR8<WIMR7?.1T(;3QOZ@G0TXX!5;+QX2W[G@*].I '9@8A?C6W5;=AX57ZO
M:)%RO'9-?79.<5(#=XEL>0$J0'=2T'/,=@55'U7^0WA<<%Z#?]9V941A /^!
ME5*P;8E_6WLN<O<U#URO4H$Y*%_P18]264EG01Q5=0!Y1/I5U4G)<2"#IWS)
M8RA5 GD$@J9<D7\T'>IHSG4C< =NR'4@@P>"CFW7>)%NF1O8;01I)TFI?^MN
MHDE)3EU8,DXD:TA&%5IP3VUEQD:O4+Y&&H+X7!R"&$J%/^=1)$^]6EEAK%'/
M@ M>#%7);+II7$WR6%5&-1_S2>9I=EU%<"53'$PS@B=EI3SX=^1PB%,<5.Q,
MACSD0HY@Z$BS.ZE6\3I @KA3)&1Y:!R"56>".11"TEV4@EQ&3D89.WY[#S5-
M@FM98&I+9:AYDF%E#XYMR%-T62N  FIO8TV!7H+N4U&!(DII?_ML:W]6@54\
M.8 J9UJ!*&GA1FV"+4YU>N9\$55Z3V>!DV=64VJ!NU5S9D^ SFIW8#9N'45(
M/X""7D<G#BYB15 B?5DVAX)E0PM2BH*K4(V")V-L9*Q,-D6)4_]WKV3U4L5,
M+'%%38]:1(.:@NIJ>G@/3>YJ1GEB1()7-G^0 DIR)6)O=B$*7&OV43!\&'UP
M=AI]0!LF?TE2T5U;3/5GM(*76[:"3W@R?^Y2KCK1@[N"^V,/"D&"Z$S^5BT\
MT6$:<7"#LE,T->!=NVMY1Y9PM&AB<6)\Q4/L4T-YRD,<!C1LL51)0Z.!=T[8
M@LM;_FO-6PYC 6P#7RQ(!&S+'E(YLH#W!1>$M50X;#-<V5:%:&=?HDWX0Q& 
M]U!N8XQH[X)^0^^#\X*)83I_)F(M>]R W5?-/4D;>0'#2+T<_H+0=TI^.7M'
M?VPT@0$%@Y) 6TRC-$YXT0+6;*%%4#V0-$,ZRCBT-#QZ.41\-1<#KC50-7@Y
MCS6#-4!F/65* !$T,#Q' #UZ935?(Z [; YJ;GA5WCU5($2 FS5$-8\UVH+(
M.^X]QSD_ CLXQD-I.9("QC@Q4BM)@#W_@M TX6<@-D4 GP.\,Y@_MT:"-/]3
MRT (-ALZT 'G OQ$0P ?*[,YOFAAA%@@%SX..38UR#N&-1%#!#9NA#%2IA%*
M958D_SM.92@ H#D09HHU5!^)-62$&#IF-3Y&'S_X-2,V&CA#(+ U2@ ]>J@-
M*#9-@5E/53P4-@ $)$=6+W@YQCG4/"P['C:H4W](T3RI0PLVE#FP 9Q/!D(D
M?7:$8'FH.7J$14A[&B0;P41_A'LA.3]# /I5@X27 86$;D#81GL!40**A,M/
MC82* A):D(1/9 DY(#;>-2L!C3KX ?L%_S<V.IR$:SES-38F>3Y*96@:1#KN
M-KN$%C9835, 7(33/!HVLSG#A)$\%#N1 UD$ GE"-3X\B@(B3AYY!S4/#'MK
MAC7T'NA6S(1I/,Z$L&9-7&PTT82I2KDYUH2T/QLF7V4I+U@ 6W95 #<_5@!%
M /D>%#SN/=N$UB%-0K98J W@A/Y,"#;60(<ZY82%4^>$4 *2A'M:! HR'4Y7
MD#4, <M@\81=.O$]M#7?!&U_=5_;5\Q'5 !1 M(R(!Z)!WT+,@*C [D%+3,H
+#<(%Z Q_"%@T"@ ]
 
end
>-------------------------------Cut-Here-------------------------------<

   ----------------------------------------------------------------------
  / e||)   Lyndon J Clarke    Edinburgh Parallel Computing Centre   e||) \ 
  \ c||c   Tel: 031 650 5021  Email: lyndon@epcc.edinburgh.ac.uk    c||c /
   ---------------------------------------------------------------------- 


From owner-mpi-comm@CS.UTK.EDU  Thu Feb 25 12:20:10 1993
Received: from CS.UTK.EDU by surfer.EPM.ORNL.GOV (5.61/1.34)
	id AA26029; Thu, 25 Feb 93 12:20:10 -0500
Received: from localhost by CS.UTK.EDU with SMTP (5.61++/2.8s-UTK)
	id AA06397; Thu, 25 Feb 93 12:18:57 -0500
X-Resent-To: mpi-comm@CS.UTK.EDU ; Thu, 25 Feb 1993 12:18:56 EST
Errors-To: owner-mpi-comm@CS.UTK.EDU
Received: from daedalus.epcc.ed.ac.uk by CS.UTK.EDU with SMTP (5.61++/2.8s-UTK)
	id AA06309; Thu, 25 Feb 93 12:17:22 -0500
From: lyndon@epcc.ed.ac.uk
Date: Thu, 25 Feb 93 17:17:14 GMT
Message-Id: <2156.9302251717@subnode.epcc.ed.ac.uk>
To: mpi-comm@cs.utk.edu
Subject: second part of document


>-------------------------------Cut-Here-------------------------------<
M(#?)K;\YTI"T."TE/@J'],.MM=75'0(M/04$ >KU:JTCI@ <-F6PZ#W6I4AC
ML!+$=!=!7!UG.]+M]FK=<=/;'S? [7*SW,+VO[URC]SY]M3]<F?=[_;5/7-S
MVVJTH_8HS 3@MIUI6EMJY+9ND";@'F^UB3U7)]WK7D> 3ZC1XP74O7%+W?YV
MU;UU]]M=-]9-<J_< ;?@K753W0+WV+UPE]UG WB3=N_<XG3/W79'!^I(W.T&
M9-5PM&FX;*3;4IO>+6OSW8?WUYULFQE^-\Q]<H?>@S?B+6]KVS0W"D #\-F6
M,*=]3HO3C70D+4T'W3GU;DAI>]-?*1Q= WC3201_4%5WVB@  QIQL]$QHU>P
M'! :MH) K56SVWLW'.UUI]Y9]]7-=9?>8/?TC7H'WM=WQWUU<]^ -_;==R?>
M"C<D_7LO.+W;"H&VY-5DYO$=28,%YC:ZW7Q[U%' P=!8C])&@.X-5QO24(;G
MC7&+W]>V]1U^:]^F]]\=<V_??O?W;7HS>ZTW?P!\RX3;-?NMM;G?0W?1?2TD
MUE- 'G"'H $;-FH#%F )Z7:HYG]SW-1W"0Y^Q]S5M@(N>B/@*S@ OH"7!@WX
M#?" (Q$E@03^>H_;[S?E#7>'X)0M]/UY2]\F>,OM@A/@+3@1'H1[WZIW]VUX
MO^#K=I;]W<S@F)M#(('_WCCXSPU-6^&)]=$[8KLV>.%F;3D0#7B&0-V#:]RR
M]D=!:Y_<2C@+OH07X8:W"KZ&O^'_-@.>3PLK,SAI,%Y(X#: ^ST%  I3!N;-
M1A\!PPE-C6>[W97WG^IT/]]D^!Q-2Q_@0S@<WHBGX0EX 9Z$_]IR^,(- \S@
M'<(_7'SS%WKXLH 8$-=F> [^=A=TN_>G-H+SW4HX)&Z$+]N,^"H^@!_ACKC 
M3;)MVPMW@HI^Q[O<@@2. [C? ET?7G3W!9H""^B'6[W7PD"H1B_4/K@:#7H_
MXJ^X&JZ*B])7MP%^>C/CK;B\/8NWWF[B#(XVBB@2> [@?IO5C8&6&HQ;#$IU
M,DZ"I^+,MAONC#?CU/@TKGT+X-4X.AZ/4^(Y 39^?K]">,R9D(MOX@[XSK95
M$R@;=AP-*)P%I39EW15<V!RV7Z!&$]3).!G CN/:T;@DGGV_X<^X/&YU2^2P
M>!Q>CW/;WCAU/1<(*_EXG%T2. JFQ9--%CQJII'8465OTA*<G<U,5W5<-C2=
M7H/9UW0VO4UWTV=V.%U):V:T]'3M9MMNBY2G9LE8V?D5=Y$6C-*!MF:3><,-
M/X:ZUWQOTG/!^IU/:\BC=?^- E@%Q5XH?4L7A)Q@7#U*Y\RW-!T3:5O>FS52
M($R_TGGW0TW1\=]6=4, 6YOEC[5@*$Q/W(]UL*A'NP "=:C-T_'?M#18+@->
M!$1W' U[NXFA05ZM=TK+ON%<;7GT"^GV8PV7V]Z3M# =\3D&,=T<0%_?TA*B
M I"0/PQ_M44 6ZL@70!>WK:IU8!Y0IX"C '#M!NP>3??M[2)'9=3$)NU"Q*8
M!]/+MFQ1,<3590 *8):SY"0!N"V7H]>WMS"]!)0!7<8M77$7V,'!.]=EC-(&
M0F ^QW6_JT%LWF.[#5L=F/=8OZLN]2A]&7SF,T!H#GOS:YJX<,V:U]*;-6(0
M:6L*7CDI#9O?TE/&K#AO4X#"-  1D%,&+0$;^)I;Y\SR;(Y5C])F>6Z>$@K3
M6'DZ)YJGY9AL8BU"= E+B#J=F\NKN_<F3;)IXO]L"@!6WPB8@O]@^4GHD'D:
M'484R_HW4+A9;^>C]&%.&L+>GT$-ODT+BK"UYP#FW=)WP$I@!E[><?D; %O+
MY:,T6DY+R]*K-5%]2]OENO1F+99O%V3Y8TTS= &;=?\P26S6(,;EK9U?WJ2=
M78BBU^7!S520SJ7;K;D9 'NCC2;Z;]Y&#]AJ^:$=78?;E_B2GDL[!GCY)JW@
M<.,&WY QFQO2H0$;C27 UCTVE+YE^ 11P68-.#00P0UKCMHTN:'T8\T;+.<H
M $]WFVS6JE!LKAN8#%.!A/A8&^DOMEV(:L=T\3ELGIL["&?()XZAV]A,ML;M
M V#<:<$MG8>;Z5K<GYUE6WA1 L4G!RS9Q34QW3=&VC3U8[U#X^:ZX>.,H6_G
M3?I_7I?GT3WZ8_VCN]5_:IE^.4IP?_0HG: JY?_X>7[\>>A\-'^ -HKJN?FG
MS7:+VE0&J7UFG]J485Q]2[/:4L:#K4T%.@\.\4U2C]()0K2>4B_;U'JJ#5MC
MZ^KT+6UC6^%+MG:N:JOG*SHI+2MNUO#Y*.V9W]*(@=)M H)Y8+5<OJ%G?EZ!
M0OZ:S^>],QH@3%.#/X(7'IQGUQ%/MXX"1 C.>;6ND*_9*$"7X%+[Z=EY?IZ0
M.P:+WV9-]1$:01U>'DB3U*@YQ%YT5^MP^ACP"@;D"OE7/F]CX:/TQ5)2G]<H
M@-&8= K9^73._%C3Y31[J.&<7^#80I8MFJ,M;'01  H:[ Q[#@=NF^RZ.<KN
M4?\$2GK-GL7 Z>_Z=M!E/-8^NP7N$=CIJC9J4Z<OZE@"!6&9P]:\<R@]2N\&
M5[MN[@8H,,*TS0ZG;];<[\BJ)C %FW76KIM?X/SY'<+_23?9M9MX-N35)'4@
M/7'?TCYQZ=:8;W69@TECISO6-#M' %Q<Z(\US(X"N!OGX/H'6F?9;&"5OED+
MAET";&V%_X''N*F-HC.)!370#5N#Z$YZ<6[UFN[)>HB"5-OM1C>&#K6GZ(3X
M#MX@%.E1@<&.L:?MFX::'KF;[K=ZI+ZBHS:4^T6P!N#EG7>:#N8Y<&QT\6ZY
MA^6?A;4QH\/FHW3FQ[+SV7C,4854%^ZDN)<.1U\&F[+.AZ'_Z7<TTXX:I-H"
M.]'WC"3L?OKU/DJO>])-0MX;EN<:N(1Z8+/M?KI6SBQ7!E.#V>>K2Y6:&;,>
M;@_K7WJYO5V<VY)?1)U=:W&]=)9M&K+I$G=PSJ73UZ1[=.@&Q-\)O(D]2F?F
MFSEQLUFWK :[?RZCV^NP^6.]&D@)L'4'/9O+[&"U^2ZQ6^MVH?O.YW7@<?3\
M3KAG[#P&[)U?"6UY-1"=&C3?#KGO8:?+"3*Z""^\P^TT_/E>%0K39ODM;;,W
MUU@[P;ZU?^47NP6/P3?7)#R8EYL[[EWXLHV%N^H*0N5^O.OPL@A2?06D &L&
MF!=(L^R<.8;NF?OGU#O-C'#0U(1[UQZW/.SS.<H.5D=\&'QCGK.[U.SY>HX"
M4 E]N)_NE:\H8/47;\4?\/)W1!VT0])X^6<#1S?G)[NYGEV/!D@U'\_(9_"7
M=WY%2[_ICKE]T#\@UH$\F#=*-P8H 7[^F/_G^'HZ;;8[Z;ZA=JZ_,^J;NYJN
MF<?1]<6:/DIK(W=T0@"@8PFI055(D%_R,5]>K:8GY <@[%V9]$%_=+,^@3_K
M$_=H;O"A\1:W0@Z5YS8-?""M=@?:O=SJKEZ'XCIB[(YT^P5U-]/]^RGS(&H-
MGD\OC8_!XOY8N_#F^F-ML\/P.3.>'9R3WHH\[(ZW#]/Z^YN.F<_F%8-O2Y"#
MU6!YSR[% ^CD_-)]=S\K0CM;SD93Y07Y59[0V]V N;O^MD/E<X&)KHXL(1_Z
M_1%?I_#KN\&^;,_NC[4O?TO#Y\$[%:^ZK_(EO%WXI!CNS?<[G\>C[S"\9[[!
MQ^^XO"!.2LOHI7S=+L7_[R"JV>U)A]OM=S>O'13B\W<H3G<K]( Y5.[9R-Y9
M-DE]NSG28'5PX :T +^LD +%Y]-T.9]W?"#I1/>7%]!+[W[ZS'['IX%(?40-
M5N?KY?S=711DV0B[P3ZAP^KU^DY_1]/P\@--#4F_\?"Z,J_9<-K1H0[>O9O8
M0O5V#E8?Z)!A,)V;8]#I^;V^I]\3FW4N_UB+?U9B\\V?6^D]_?M>NP_V;H!H
M'FI#]+<U&\W64_02(E1^XP#V;[K+_L[O'<>?(]'1-P@?/<8>RP_3,#Q8@+_/
MI\M!+.^UP^A]_59^?&#Q>'S$GFKCY1XY3M"[!>7Q DGN9 -U9 &W4&8T;@ @
M==V2Y]/-]#/M94_3U71-/F;?Y&;V-XUF[^04^^M-7;_9^56<?3;,V=I4G7U.
MJ]VT=STNBJ?U)O8LC7RKYD7+4UZJ!7W$-SO/I-N%/OIB<3(3Y"4][J#58P9@
M_<9>0;CV6D%@7]G[!?2U0UZG6_2.>5+0SM_2V6NJC5#'YSR]1-^>>P<8>ESO
MN0/=+0 6'HM<;YHX%W^AO^_;;3]]GQOJ@CU9OI4?ZM4(@*^V#^VT=,4MHQ?7
MK'P<G;'+Y2]^BW^X7P:KN0(_7JP[X#;O;*5SV&W\7 ];F^?;!:\HFL_52 @A
M#2*,UJNU64["@_*D-!@Q;W/EAGUO;Q>F$RS[$A_AU_+XN<4NOE/QON$_;^!7
MZ 0^)(V%1P:I^7>>IN75?CE:;[LO"O][A["/PX$).UB-$$CY>[9O'[5S"45\
M=2ZAHS:\<]6@OR_F=+I4 *@+\8\U2A_GZ^I5184MQ-_26W%ZWL3W]2RVG<_9
MD^AO=E[-V(OLROMI+J]CU;GY/7B'6/9V(1%?X,?18WW7GIH'^:[YI*^>8_G;
M@9\H3.?R87EMDZ+3+Z#[1 TX#W'EO>HYE)?DS'U&T+K5:N?B2EZH01DNN98]
M!,3DUSTTG=V+V60V3N[=Z^1($\7^>X_W0+EY/Y33V4;YG5U\J]1"=32OEW?H
MTCL?;=KDXFE!;FY\/^O)]R@"@C??TGU<5>R+'>@]2% HE :5R8/SRKDB1]QH
MG!8X^.HT$@%'_PB+GMGQ;1?\Q#,]#14F':EY5&!C2QE\.1NM C %9\ 8L&+S
M>9+#7ZT"C/P<OQV JKLB\5IA_O,Z 51 $7 $% %1;VA'65<!3L 00 4D 4\ 
MSNO)D]M( !20!#@!20 58&,OV=B"K!-\_OMUL<#O9BN*^[[$OTEK<=R"G?U)
M3_0QG9 _5'7K^72]OWPKY!XUC9ZA4])B>F)PEQO20C5$+]_+@!:#_N[+9_$U
M]G:Q4ROLD?G[_M7?TKL!8O#!/_HG=G NTX?U3?MP#WN/!@X[4PU T.<A/#__
MH;_K2,$9XJ.' 0_#C#["VX55H3\WO5<$H'5?_Y4'Y.=V.O>N>^9E_<ZN]P?W
ME?P2?_FOZ81[E5$UA $GX*X/F%/G1\7?+Q. V\RBII"C&-*A-H\/^O?]HG_%
M_EO !I=YG'_*^_J+/; /C7/Z6QW]XJ,G_DO!]=[**^15_:8!6S<03\I%H+]K
MZ70[AYWY!]-\]/<(V#L2M;*$2/<7V+P!EJ #EO)L?&DNF'_E1_HM/7&/TN:[
MU^*>-^D-GIHPV]_IDC\<3_F/#T8 :L[QOWGE0I8MQ/?_^C_[CAW K =)H^6Y
MZIQ_V;\925[-EY>;:R04=U!_4X'(7D4O5A>O@U!4#>QT$CY%'?$/@[:YD]'1
M<?)_(+^&WW%)1'$3Z-UP,(9R3*([0,4OE/;(0P'\[\H$)9RA'H7M^@?W8;(Q
M[,H;<+:US;B/DQ.JH=.8W1P%,Y(50LW'SA;$L^^\>60=33@WGZH@P<9&>\Q5
M_U  -, ^W7SJ9#8!_"P(\])\=KU;FJIO7J6D2PN@YE9GF3I(7E:M=V/:*,P=
M_&)X9X !(!*P]49A"\Q% 2-ZW+^[VSOO3D>02_7-YW1 6@$0(!BPZ#>GL-TX
M:D04V#5.CJ2FZ;<#G."4.:1^QK6QGA<.6157>Z=I4T@V%C6BW":G5#.W.>]9
MPN)=9ZLSH!F-DE;T^PQ@ B-^J(*)GPJP"! $8 )( 4B!1 "_T!"G]99_6_4=
MV@QK0 &6'4\@;8=!(\@E./ 8V(V_G2:PY]=FRVQT<78V%[6G0\HK"" %. )<
MO9 CK;<DP"1A0!!>@P5B_K)R<;5;8*!#?_-'<\AM GN!GL!I8"0PFC,*O ;2
M5)* ; ;G7W'-+]?5,]EYX%!V0< S@2[0"& -Y 5V ADUZD 00#"0XO<$6 +0
M_OIO^;0G0(0HW;9>8Z,5?9Y_ZIYJG8^H%]@'Y--D4\0.-[=^7WZEYD,(1.\-
M^XY[(KECWW*O!* HRPBHF 18\0)GWY4MVE?=Z[+-Y*Y]-KDRF[I-N@;>HZ7E
MX<!].4 Y&U%.@M,0M+(%!BB!<P$1Q< O;P.2(P*FYD)IZ;R%'QI !,BO@=D0
M^_(V*$!AH,W.QA;QL:RUZ4!^=#NPF@I@1F:RFK=A_,YV\@2:SLGO?G.[R:O]
M_%I^+[^.6EQEYE?SN_GE_!QZMC<H@!+@"?#SL[%]UCAL!X+ W+7@,H?:6 UX
MU::"XJQ]G!F-&,A-:_E) 50 @3D;FPI@R9;Y8J,Q!25K.0$D")KN*NCR@_FQ
MZ=)R;D&:#D'0NK8M*.&,;V2"+D&6('+/Z=>Z&0*>TY9Z=C>K'^=&PI9E,_NY
M][: ,3W:'KU.5E?22]OI[&Y_2KS-7X8/%+2RX_OQZ_A[MS1%'NHN9Y:;P\*!
MU?1Y< #DW6K-:)>P.[/A!C=KD@-873WOL6>&N-"9Z7)ND[L(VL$NI"=,\^=5
M[)88K+KY7TVOI1=I>_NQV"!HWJ]671;PUI>> PWB^?!N<#3>H,%.FB<;Y.W9
M_GZ#R[;@X$5OF/1MRZMA@58#Y8<[FJHND::Z\_!!^)Z#BXCH(-?NCO:;0VW(
MJ\ "6$#LH 3-OS:@@Z-!]%!SWL%:7T5 IE.9,_5YYB!IK$''P?6.CZ9?T,3)
MY7YW8#];G^UOA^8;BN+]['*#8,$D@)7.H]9 0+55A7Q$(#:P'&H#O!4!'*5)
M]KQ\Z$'1H)H/UJ<>X!5U^)B#8;FJ@OR/;+=+*WM(<?)J=3W.G\8NI]>9R_!=
M"*& ![TE763//H"0$\RI_X)S([WC ^BN3H-\&Q$:UBH#)4*!H)H@1;C?\XG-
MYUA" ;7'6F)@/O=5BP[9_9IT;SIRFE BK\:R&^LU?V!O,@$3G8CP=-?/>]>I
M(\8_P 4M1)&..;AL2PS2\42#Z#\!GPW/KE?68__-]*I"'S\>GQ=0!A05I.,M
MTV)X;L"LG.PN3F?HP]HM?BYOV;7P1I8.-O>J8:/-A4QY*PK4W#70["#)XP^4
M<-HV$K\4( K@"I $8 +\O48$63;4G8=OLF?\Z^GIZO( Y*CQ'VKC^( :& ND
MYTZ#?D(-X'M0,:A-B^19Y3!9G;NI'J/0JX:]0YKLXX:%'CR/VA/0E-?J$Q3N
MA[2 =\#-VIA@/N>KTXIX O-J$+WK'+O/8Q<[^.#AYVJ!\[]06@,01<?^XVG 
MZ3* 1SP6VV7@:\>A<P6"!0J$#STA46*M)W#D*Y9Y\*YSV<(57TFO#" YX CX
M?IJ%E0DTW:[.!D"0J^!MYQYK:+E8&D0MOA=J(ZI=]J9W^#D>W;@.M3$K5-NQ
M[0AWD"(9G]ONL<:R6T),#-YU+"' 7+].1N>0\_I9'J1_",-O8;V0"_@"#%% 
M]49V]AUH8)L-PJ:T:PB.^( VF @?H"4P"(@9@8"= ?^"@0Y+VH1M"C $B.A$
M],8(!#Z2X6S.'!A'L]AYUF!K,<(=VAA0JJ2TJP8N"Q6#VC5P(*$-_X!6"\71
M,<P >8#F6FS0=*>=ZQ#JYKQ_B\)182&)O,>RN=N< %\YXP45(*O05;@8M-U 
M1<0."PY+X *OEI,2I SR:31JYS1)@2)P$)>OLP&F]P1$@<"Z&.<&(9CT 0+V
M;E@G!C\C !MM4Q>TVZCU &!KE[C\"BHMRY86@@_Z! QI,#@4 (LP7M>?2PZN
M!GQ#M\&#7A!0,P/O8P>&!;&!C!K:(1X#*/C*$0:2 HN!QT!\H -O&3B.0+"-
M Y^!FK^M84S 3:0 \!K*#7V!-@%$T3QP%$@$J ($W82'D#2FFBR0#-!E<$6P
MT6QV=4#NH$^/[Q>["P(2541U[4!.H%2)47,^G!ZFO'Y^0;\4 #(PZX>K2ZF=
M_=2#%#[GWRTM(=#.F]!-VNQ]LKH9R3*O=I@^Q!W6Q9B'[L,B0!- @?CXFA]F
MV<8/S,+B&OZPU;<]!-3Q#[N$A**!G&_H66'TDQSB)P $@L-237GC;C,9+ 1^
MY"""QC[EWK,BV<=DT+*@)S2"T[TL6T=0)G=[H\EA^[A[(\'O7K>/EB:#0PGN
M^T*(4"$4(K\O,@@3!"S,!*])202;(,9/X<=&8_BUV9PJ:YN?X!"1&X@DC-VI
M'11%<QHH@Q7@VD'Q&PK>!"%X?D%P05-03(>A"Q;"!;$=#CO"8%:0D496,P+0
M_&Q^.#^=GU5N$S@6+ LB"7]V@;FFX/?O+9@"  S&!<%M:D3#(+^&EH8T)/C!
M!0")++_"8-3+A-<HE!#Q 1F#+T&$H!$Q,AA\*R'V^P9G6+:IG[ZNZF=B>_JU
M!Z=R^L(*7H)POP?*\]J)<D96#Y\8'9EOLS8RG!F&!LMV2+I G :PR<7;.QNF
M#:.&>[J67HR0K^>VB]EU&8Z#[RO7(4G'U!<5. ' \- ,'SVPVNJP\N<<7!B^
M"3=IHP%N7'<M9Y@\I*[A!-P"D4/A&\ /*C0TC!S]?&R"2$,I3NL-,VC.B^CQ
M^OA[CS4U@_]@+J?W0VW\!H. M1QSFNTP6$C[4QHZ\#QZ-+7BFBU1;>C-:PYV
M"#UP<$,0H-R0)&"[B2=.<*:()0&]8:OP[_5(+"@R>X2&H<!,(7G/DDB4*\IE
M$A.!-<*Y'"-P9ZA-87.$!K:(V;6B(>6PFR@30H[8V3:';38C@.<0=,A_&QU"
MTDJ'2+$C8.IPF:BYR\UQ"#%T[T0R(+!N%Z@^A!X&#H-OO$-1X# 0>"@_Q![^
MO(B'S4 XVA,P"A@-) /.!)J'/$4#XH(#[99 K!Y>#\&!VL/9W"P0=0A' Q_Z
MAN!X6+ZLG0?N A<$# R8 6V'S\-LH%E1'BA4+ + #]\,#D1(VM@06-.CNQ\"
M#F!KO+S]H2=C5O<_W/HEYDR :#?GH3MP?3C!>2HF$!>(38 &HE$1@@@V-*Q-
M$&.!6D7NH3#M@@BGRR#.[SB(!4&V29L&Z0-$S&P<?5J"4#GC7DIP)"<OF A6
M!+=G90\F PP1VD?=@\E9]SZ"8;:0H+8/CL;M4[/1TG9Q/D3D7F=1,AAG,QR&
M*)!3' )NP1$QBQBE. ,N$5>!(< GXK<MBQCQ"PI2_/Z"5T0.QA!GBTA%Y)8Y
M$BY^";^C(%/PC%@57/EA!06)5CDW8E<PCICQ"PL> :0 3P#K(1- Y<5A"P(<
MO3AL10"S8& N+<AANQ:<$9=U5L%$XAI1YE=%!-H%;AB#OT6$X)NMW^>Z*QP6
M GDH%T5RHGU/@,4DRN]1$#IY[KW3(#PO]]<_$ '!ZFQZ@SR*@&NO4/CU^_"!
M_=R)!SW9WJOO".3:V]'MV3"$S<']'I]N?*BUV_5E"_EHG)M-(9C'(6?B2R7V
M$W=Y83SC7>^O3N?;FR0T]O2%XD)[86?/D$:@TQ<B",>%@CYSH71N&9@NO*.1
M[UIX[L(&(+R0[<='4W"8Z'Z#4L,.'K1@-C?;X^NI!P>&[;Q1FE=Q0$=+>P+H
M[1)K?KD)8WIN@KBR<N?=$5N,;#\48UT.AH?7@P&Y&)US.J 5'ZC.1.>\6P.,
M[ZIXY+N;GI9Q-G=F5"76ZA1-'L8.W]<(MM8FS"A2\6!K#@)<U&0(/S<F=,X1
M",MN9<8SH_>0^">Y4P_FYBB+T,0&XY"0Q(A 6]R%Y1P("+J#@3JMT_?54R7*
M\Z9V L,WX]UNT3-*&^49[ )YE+\]HF*PUKAHU-4%!#L&>+F?H69F,&BEZ_RA
M!E%V^3L&X9[-B'?8&QVX&3]V[@3'W^+.B\<V5-_Y!'1WJL.[XJ=QKPA68]G9
M&;&%>,8CGDTQQVBY4Q)F_T(U>;7_W-F.-Z#KFZ_9Z:)VE<:BFP;0.=AH%.@-
M?PQIH;V?EY50J;A94^39![.-L#I2070NE <;X$V<^0)[HSC+6TW/ PA0A!,V
MA\!M>:!P8UU."HCE\S8.'<@ ]+5^'6S.(1?F0T4TUQ)\"8&"X5?@PC9GA*V%
M"\H Y[EGXK9NB",#I"9&=3B*6I'77S810* #%!!9#F5".#5PHAB136=/A*0I
M& %S9[]SXFE0G3C;Z^K]!AN*)46[P,R1=1*2TP$J!/<U%T7%849Q9[=1I*[E
M-I9UV40MCIPF4/,#O 2R33*'*,7.(0K@<WA+"QTJ.,"!,,7XX*:1IJB;L]+9
M%"-HL$,0XX=0><BR4>>A%0>+/L6Z8W.Q=TCQ^QT: XN*M#BY(E+1>.@,C!0F
M#X. K0B[8P'Q'5CO&B\D$-^*146Q8?UP>>=8O"OF#]5^W,85( #1%AA\X]P0
M$&^'C,= !]:QK<@$> (, 4J!*8!D3NNM0%=<PZ!!\8Z-YCK2VT% (6=3=/Z-
MT@J&U$*_'#TQ>!=K/#IN*LH,@0X!8B6P$!A\A ?V%DV(HL5]'VD1V4<1I.04
MD@I);I6LP6H1R_:2V[*]%FN((,'MGD@P)S>!VR&RT3IR/[F4X&Y1B.A;W-/D
M;:HR*$#?34W0N)CP0RXZ$1U^4<3>35"1BO@R!"[8V&X1ZT0.VU30--)=#"3&
M_,*+;T2OH!PQ@@<%* )@ :  3P I@- /!9 7[",B'=U$%IRD7R&0,&=@[/>I
M.<I]FL2VGI#/WR=/A*29&>V'H;@TXZ'P7?=E5/#%^-R&48%WW;Q0^=:HT^2Q
M;!!XASNX'&K#"F=,_-!) >-_-#:Y7_I/?!ADI!F"$4M],,:C3P^/-0$S]*BE
M\CAY/CH-G#+(.8=[J/ZL$FF%8 T"GZ%0N+?$:]+9&FV0*$.(@09P_0=[%.:!
M[IY^WR-P6TQ-,K?9<_&)!J^#LJ*HP'YH8)C+,\VY['J,"#9[G9&PI5=_?.6-
M$H&#ED=$WU[1A,<3V-M1"05':0 =1(5QF&BFV].X!V]\JS4U8VQ.%LCJ\^>A
M-B)$9*$U)![O*S!+] #R(+UZDX3_G68FFX=1]&UI%!N'CD"]4B0PNR8$!!Q6
M#B^!-X%,X-VQI^@)3$7N':%""@ 58#WP'HA5/-(5U]2,"KE;&NY1F,:\V,#-
MYYJ0G,=U36  ?0AZ)"SR!X:1CT>@'US1J#A7U*-)UFAI$\2\8G6N?ZAY]"LJ
M#^$"Z\#%HS$2&ZD 2""6 D^!08!48.BN]38$^.I)$"V/%,3(H@5QKTCWZT,R
MV3J(90)3C9RBLZCP RWVV8A]R+WEHVG1^2B_N6^@D:)[5K888O5QVG=]_+)E
M'[-]W3W:8O>QO$%6<\#E%L5]"D'UGEI@$T? D[C!WS9Y_,"\ !NM_I882-NU
M KF C4 K&X<@3G-\O"2&-P2,PL6,FMD "5)<M!UB_'*"3<2=8)NM)[B2!-Y,
M$86!T$60P"S"381-W!U2_%:'1$')P7P1++@4%"/"!0,#P43_XV$PIQ: )"_N
M_,R+Z$7K(>&HO8CSXK 1 =:+>4$HX'R1,I!'/$JJ0L!M<T$I0%T0YH<7U#^B
M /:"?40U!R%QYXAT[!#,;$@U*4D'7>_-'NEBBOI=!JE^"\8S =9/AIBCZ!XZ
MU 9WLD9QGHQPU,B98]GYAO9Z,CK4'$<@9T;0J_QA&25ZFT0YX-L0#PD9F H@
M[QQJ^CW:'[_QEJ:(%#-F,:QUNT+8FRK$8?<;G-!1'.F, +T:X4"/OY>;6R:"
MU7)Y]C\IH%AQUHB\FZO-"2MX(D@J9'IN]@C#X^6]&F>#SS_H() .IYC$N\#M
M#^T#?[\W35ZMPBBV2ZP)"3U] SG<'6(MUA@LE/4)AEAV2(&/WX.O8J<CI+&=
M]#IW5SX8WAW2U:CA2T-J"HYX%,+\ K@--UB#U$7Z'BR3<$)FCU702O>&[$*F
MYQA[M3Q'I"LQHA:SVT%<[W9W9;GK)&RM,PEP9"5F,0ARF3WB'=R1Q3AK3!3J
M$@]ZF4+"85[-.0B_D]_MAWB-I+S)'</Q:^C!N^'!#KU\O2V6'8A F+9,+#G.
M"",Y]L9NH?E$GH@S9"IR%&5"A[298QA2D922# +&;)P]ML-P8G1M:=@T!'KI
M$],+(T:FG5\@\T/@LQ4&)O=Y6D/,(F-PA1"&E%&*-BB*$+97#2)0ZNB)I#J"
M(G^&N0WU9#91P0%<[#H2#=\T)T44 .<P+;!2+#NV%-&._ARUXTSQ/<DZ=#L*
M$S^4.<5XUUY2&YEWS"_X)%.%OD-BX-\QKGA4-$T0'I6*R,.7(^*1A2!89$7^
M A\<R<CX(9^R&5E7K#SV)O6'T\C+6X)O!;EY_"L";=23A4JIXI<#4=E6= (8
M("EIR,!'H53/L,8!5"5.ZHB0P 4,73024DD4>.51%OF0=C\E)5!.* &^Z2PJ
M..Y;)4F19/(Q'RD17"$V'Z%L,A^9CU8$,3%]Y BZ%CV"V,?8HO9QMD@25-8U
M) -M#TFAG$*0M^AT)")*$B&#\4@D8DL2X8<3/.+H!'F"5QSFHN_&N:@"S$E^
M!FB"6D2?I IPAX9=Y*E9Y9B"'[^BX"N/5+=9&_FQ*_N(V4HT8O/0NZA(7$IR
M!>&(7\%.85C0"1 $6"#*%]&",KKZHAY1F+A_O/4@$K^+6D&'6B$Q,'A(S*N%
M)<>2=\&L)%J2D7843%+^%YU[CD&>#61PT4:M'"(ZZ"R#@#0L UY2,_A)=."%
MT@I[B#\)WW[OJ# 0E$/"UG8#M,9B6<#P2$EK1&VP]9AZYSSV7(:O-"E,A-7%
M_A!ZO#/?V1.(35?CTQ<*U>Z0P,2EW7R.(] X-#:N!BP\3<CQGQQ/F!8A6C:H
M#7.)]S\9D$^,C !B,YSQ$^MY'48/88OQL?:S).V]]F1T5<;V8%^O7T>I@]P)
M$]]R]$GB'VYP:)=YXZE]Z=!V9;FU7=K.EP>%G K,_^"%1LHZY))0R-@M; Y)
M$U.6,T"=H34Q5)=-]"R:(DF*_(&CC\XQ=I<T##RJ+".30$?#FM!QLT9T9"=&
MYM26L\8QX+KFY^,UU!JN ?.!G3SO'F6O&A%1>^NAYK2&_3](6KUJX2A,T]DA
M^N) @;DVGF9O.L )XB<>";6&8[Y8X\0-<Q-\6R%HXO:6?4.9#[.G<CE1S%4R
M[#9I4TH4Y7ZO.:60"T4&#C^*1+E6Q&81A#B4"P)^-LI]=,ILX/D2%,AWE$7:
M [.4X$ SX]/PUW@B5!/0[J)TS#6YFPG0J0)57$5*%=>*WDBBXJ)R\!C16RKJ
M#*6!#HZS8OJ249/ 9"M2$5U^4H"KXNJ14VA8NRFB+F-W33K>Y&;--QE'PP/@
MHNB.#K>H8NC1LP&^?&!"'B,AGDM&)0@2CK:JQ#Q2(RF5UDBBX5,Q4SG"I"IV
M*C^5D4<V8$2O5&G7.U4:XY2)>4@-I?ZN53E9W$.*+6.5O\=ZU_CR%+G ^RQ.
M!B.*]T@AHC[25WE:Q-OX)--J[0.6'&M1AGBLI"$:))65",D<8FWQRT%+6R&\
M**N7TLJ5(/EQ AFO(-RD)+.5Q$4E8OO1*O=^%&?%'U^15$0SXA>1>==?A ,T
M+/N/^D7P(E-RO!BPG"/V_!"+W!(I *;.^G?0TS_B*U<(IA'\(K]RO_BN9$LF
M,0.,;DPV)J[2Z?@S1# B A6,&\C$HZ@.DF;V<ZC=(4^4L;XG9%NPD;C!5 MI
M %EZ\3K;H+4Q86>D=#U*(>V3\S;>@O1N1R>I[.MY$J^,![W<'!LOWAA'<QO>
MZ[8Z5[M081\SI2@&=+?=)MU[MK]:8)E0@WEYA*WM(AN3ND9'89Q/XZC%XUEB
MZ !S.[IBH]X20CE,$C52,X68PK1(X\2 OD9ZHQ02,R> ;SIA9FHR13E',Q"&
M$C^#XT(^I.IN[>?F.3[(^,*6Y+O5'L:/< <O7/%-(4-_VKJ-TAVN0)F;\RH^
M(;V9@D8BH6$2PY<"<,BQ\)29.<F&'CGM)-ER=%%:$Q5%V<2OU-;1YNAUK.78
M)7.4.\>D(3CPYU@VA*.-+M.)N3W391J-Q9;/.^@A'85O6D2BW%?*^%BM)$4&
M?;*7BD K9?<22PFBPB82Y2"!(\7RI?PQYA.F'%.J%,>.+$71(3B0L9A/#,5!
M"[U_OC\OGS-QMA>GI(EQ!A>/4!M&C9O(;S-_S%,*,)F1!,SCH>%14!E\PVP0
M(].*8LV83P+QO"C!!"52'N%H%DQO9@;S#9"^XV"J,T-I9<4F#@W3&'E4,6J:
M,)61@,=DX.0QHM?"Y!&^,/N*X(8 H@E06M&_7&!.<.(5"41/Y0$RASEAVV&V
M&GN8'<P?9H&R22>-)&+V)]MYL$HPSTT3J4F]Z2R2;-)[O44H)L\&'QD15"&:
MY"HYD(22!22A'I?%?/91'Z5]U#[8HG8OC,E]3+.1,<%I/CD'7;@OC=FW6V,2
M&,V/$LCAXOK1)3G'_%8J%^^8X\KV91]S#G!__&0U( &#_,<T8B#S_SC(!%@.
M('E^4(#S8GIQ(+#(1 $0_2Z9M)KSH]*/)9?YHDM>(!.,*\M.8NN&=9E/HU)*
M[\Y^QTM7)A,/L\>S?-?)YA)RTP&V'4%/$>3:R\VA[FQ_Z[]=X4N/LR>:$ZI)
M]=Q[CTGG(&* 8^8;>OH)(1UU7@'7GG9.G/FU<_.\!KIR@4M5G@:0K/"?Y%#^
M?IY\]LPWW9GME"FV3&9Z# >7YT)_IMN0\5?(0R=B(AMU0D*YG"<13:>XW-"-
M$C61W U172#-O_F)[%Y:V68"G$J)XMHF<$-27)48#36'8LJ48ID2!6!V="FB
M .27^D3ZY700/W?5+,L5&^6.6KMWW;10F%9OM!'.2$ #<\IB)/00SGFG)%>^
M#Q&;B\K%YCGR4>G"[&7",".;P4@V29P3KMD6N-UD-G&8?,I1Y<+OL\G74UPF
M^!J;MS339J227(C$A$=^I72 WXW.XE>J9 &EC&*.%GN5M\V#8FXC>S?Q*U:V
M%JV/R,HOYG 3AUC<K*0=-X=JXKWPXP^1^%BR+#^>  -^Z4=TY;9RC^E^E$G"
M'Y&(>$QA8&23!0BKD2[F-!<<L<CM9KOR!SGR8PIR-Q^95$'Q)L22C5C>%$"6
M%S>!Q8@I !5 O1F8LQX&YJ8 0S\')'SSUHE^?&X^*6.;!,:O9.00JX*2S'7.
M<*!]DTQ!YK_2VOF4W 2^_+:=4<G '!2@O7DCF,UAJQR9?D0$8WYQVLE?="^\
M(PN"[,YUI^.&+KG)P:>E+$&9^LV84@WN4>@9A*/=#^YH5K[]I(?.HO>=E/$)
M"94_YDG\G-=OV.EE\,#E+0^<.CY'W_B.P1FOPPVJ(%6,<3SNG>6M6RBM,-%-
M!A!K+4/JW:+0")" ;!($ 7!>;ST(H4NM*"%0) #B]E8"#C8['0WK?F?C!'DB
M'#A\;+];&LDS>0GB[-B-TER>'S]>8722</?! UX^(OR%I;W+T4$PW6B)'#60
M_N!U(K6U'EZRZ>:@G/"Y-[<+1[JHY^^R7]C& ]M-)XE_4\^V8WEN[?GB)#(V
MX42%637/9?L/.O<O].I%[5I_$4H9XV31ZPGV+,^)U#9V*L^O7%Q-#^&DZUU6
M* !UK4-D(G%#-&>5>^!M&OUU.\^>IU@2Y_4!A*1Y@8:)MT?> G_,OU:VE-11
M /]J:0*L6L<3/4E1RZ;L*T^9<<.>W[U3O>GM#'K:];J- +V5 '_LB,?+;!18
MZ!X^";[J9$53[QEGO DF!F9LBT^Z)TVM6*C#8U*"VPIT@30C7_"R5>>U4W-:
M%J^%SD_?UO&!MP;:/!+>(=%\/KKNI-M0&NG+$[GI+&=S,CZ97:Q1YIEN(T5>
M<?)J@T\)%7QPNX>\TTB6^J1Y!:&78VX.EIEBG#) /TMZC,^Z)Z30-&?">S_H
M!UEL\L\X6E]2,C?WVPZ./#^8MS27IPYO3H.F.W(V"]]]UT]]H180R5CC#%S>
M]@B7/TZ"W%<.<4G\4URRV(Z0A[L2Y*OR82?VPS:H'"<XDIJ.IN022XE@S#KV
MYNPVF$N6C2K2(>?LK"=B%;UIM+2.(\&!=/G^@0#BY^)Z(#83FSPS(3?6HZ]!
MTH:9YSPCWKKPT!?^/(#&\ H'ACKBY;RP2,G?8U[6N_YV@[P/Y@!4G(GR9 TH
M.'>%+,\[&A=2 XIXC ]Y#0V>*DW%)@L"=?C)2PPM/X-%T$^"WN4S>AE\+ GX
M0)V;'Z7 S>T&J#EU?+^!(HERD1! H$@RT*$#)%_>'!-$MS6;(*$3$QKLI >^
M+V5^$S9;9.6Q,IF^VT7J%<.,C\@@!8+R)FB)/!**%GQTQ3A1U?QO$&H^O'^*
M,,.:-H$KCC>2"5!Z' *D'HV*#B:_)1SM,><6M)5M#2L3<X'*IIS3$X@,E80^
M,/64P4.Q85JS\&C].V F$58RCTO+)C;4@>D[/&$R(_6<H3A(YZ33?WC\B6'*
M::R?@TWHX33EMG;HW&PF.CV;1SI396@39@C$Y'/"UB2=K\JVH#L2Z1CQ6"YR
M%DV(@0Y(0J=SMBG%M&0TV:B8_,A'(-3FH&CJY&*B.KV8V#TP)JMSV[>0?'5F
M-LZ8RTV58'.S AF0;&/")=V=<4SV(T^MURD"A"(".[.;0L6<)+_&V"D/Y"*J
M #%"RTX^YG81VNG2DG;V*_F+XD7SYK53]QF5' @ O3AL6@#VHGOS2-F5I(DZ
M+ >>-]%*IA7Q8UG% BX.&#NBFTR39>O&%?')S&]B"L<+HDSBF]E/=$D";7/^
M&.-U;5!UVBEO":BYZ_RA.6F3/\CD0&(-<.F8$UPJ&0N7*E"[$ OT-,@!M%EN
MZ%R&J,I0VB\3XLCNZW_"U%1!7$4VVHKQ.@>8NV!>"PYYLTQLXYKSZCF? _]\
MUO!U];L9$ :MRS#!TTP*1D6@&D\FG0?.+7K0U,U1+5MV_+WCH(EN#E!I.BTT
M>%Z6P]"\Y9$P+/K*FTT*)C%"^,+_IST1-=>+3-CY/L^?W$G*0 [2T-?Q[#(6
M\3B&T0,[9&%TG#EWM%GN&<%M"T).T-ON?9=_4(Z.1<<$-$^.YC31HVEE2W!<
MUW2:-1\:I5*S+0"BPK(105.:TIK6V\"'%!K1:QTR)G%[X :W(6#2]VCIQ"]T
M([&C/$VIJ,SGIYDXU%XV.4.2#+LF#DBQ=J._J55N1YF4#L^P(YD2JFFFE&J2
M(]T*A,:1*"T-(X3Q)'!Z_;J:8\VW)MY1?3D(W"9J-_V.T=!DX#044+G6K &:
M+XMY*PK+9A!'Z=A6](9*'L=T=TTVFCB4LCBIA&QV?BR5N0W!I@B3L*D?O6&Z
M0_MOHDIX*)"ST.?H'&VB,R.="H(B)FKSB*G:9(IF*=^2"4&B'+\&MMG3]'0J
M'T&=+$0'3J #%QCY:H@.)(.;R<I5Y_:1(FK<;$B>!&6=ND5:)R*4-^<4?6.J
M'Y.((E'4(1W3UVG'/(F6-2E^)$^UPYN-N1@,3'96)[&+@3F>FG91C)AQ_"(^
MUD9^=U*C*""3X-E&;$H6,@F0V4XJ &(Q,,<M"<Q) <"=#$A&YMP1X!F/C&3N
MXY22_,6<9 <1D_D1)3#.(GR&B[9#S;H3*M<I54EZ,N.=B\1 G:'TO&E>+ (H
M2AF(@3G#X-<33\IAL_MQV/  <,%LBDV4DOF]4RE@JY".7PY#Z,_PRS$F+2UM
M,3.0"KT-I+2",TC*#"5>VC*CL+5AYYA3F*;\W,HA2!&<*L\%9X@S8]@EA/NE
MT99MT,ON:+YP>1=JHR=2^ 2<8SYRVO"MAL>^<W&>[I1TN43\7(;S76?V3,AA
M 6>#O#U J(VQN]!0HZ7Y19=J.40L**%Q7%?^U!=>_L"@)LI1HYNPPZDX\7'X
MYF1T>[TXGC0SQ8@Q9-P5/?%_ID_Z19]4B ?'L\XI,WVA&%/4H/MO_TDK/'QV
M[@)YSD%^Z5KO\2F04WD&EORE>3E[YO).>(B:XWDJ($>?.KRO5 =29$KX9'T^
M(YN YL&67N_N3PC>ZI/&/M6%/TY16NX3"I H163"_*Y>D8$LFV>N^7>[N]7Y
MXJJ&%,=>9MS.)S"WPVK^!I-U&#4Z7Q5/,#2S[-P)#)>F]TZG:=3K-CHN7!DR
M&EV#DR $'[L4VV@N3<T9/ZT%X\^&&ASM!;@0#(&22_MR@]#)WHES#"ID\_+M
M'B=WKLST7,KT^RGCTY=.)89_QTSS9SX3EL>+5']N0!,UA\A0&FIN[??^3,C%
M165V/;UVYH33#)G_C Y,/UV 8$'6HWLO %H#7(/F)]-SVL^OIP)TS=D 9:L=
MTV9[H%,):$=R [I)$_4Q.@M]%U"L&HNM6IH9K1GBU,"%^L+7) F4+7KC?(NF
M0'5[<M$^7.(R+UJ6VP?:"EZ FS8EYS;-Y5@#]%[J2MF*=+:8CW_T$LIA&*.A
M-#F7XL1\&DOS9[JUY'K"--.C,DU*FIS1FXEX5,IY#96?SDO/Y:@ %1$8?=@Q
M!2)H/4XHZ/]-"JHPK1&"V+A\NTS8X".2IZ'3.V;VV,)^XL]&';_4#)I?03_F
MU<QR0;PX*%30JP:KR^5Y(6"#]-/CGOV4_;@'S8/2#TNH[CTI \NP"XK\W!4&
M3MNGH<^;Z<_3Z%DZA0^&).&1L@BE(Y92%B$0M5YJ4T@P44?[*'JMZDB4LXZ"
M3\<+; X<X/W&2RFGJ>5D#K6A3M1.J/OR'NBY9*K]*=EH==.K)@F2JR DW>]M
M&71ILST5:L547A@:\H+R2P6(W W%XS(49I-&Y8;V'4N!O=!?J.<R&)I8(X8>
M@1IK L05PN>1T#E-N8XB.T>!T%#.YO#03UG #%1Z2,^ABB(:)BY4Y>)'[8;B
M.;^A*%+&)CJ2_9EY_'.^2*4; L0YS1YU0NH3[([.-2.8E32C(NO1L+;59#&.
M%8]N5SF^ICWTEO;7/(:BQB2DADHD8B,UV5D$T&R"*HV*BLXFXN_TCM8C%8?B
M0XV8=;\B:0<QB8J?V-J8$$T;)$0?*D'TTVG;C)(>]_)Q;ALK*7"S(!D1U9(R
M*W6(#,DR9@\13 J1E 26^^1]SSRA6THSU):!\T5^X)AOCKR?(8@J/FHX_ R<
M -U$I,5\9:A&CCD279,V_"*9GII0#4J4BJ@2513] =VH+U$E)!H@)KHG-;J!
MV#!^"3[] WW-P:E. ZM]"H^2<3:D**]TWNF4-&0.!+( -3\DP,&262:CN^6M
M!6=T8 00VT.5)LJO4?EA2I6B%[AL)<FF-"!1-0S&Y;1\*M6N(:J4"=K9B5ZZ
M4\4.\%39YF?@W-DDQ;EA(#^7&LB(IW[A<0E)RTSF&T^#,4+G8$+@]0B[BRH 
MZ"*C3$^]*1N-@A>*J],Y.%60>$+>Q/3/$CF76 X.25>?/(3S) DOU^C\]!=@
M[V8":+HG'H%/FL=C+%!^Y4 $EI^/H=3..W!O_-GP_")SHTXVFG4Q?6?[4P[0
M$\R<>\\-W\W.C>?ZK+M-&1@1&#K8)'^/,4H^O,"I"=%T2U4"GT-N=BE!DS;&
M&E^A,3OD)&=R:DE,^S'J)W&CQTR*@-F4^.=7]3-2/9V>,Z#!:JWQP;A*S/Z%
MZD1] ,)C70+U,4=9/4.8ZPAW,CSOUPO0NM9)2]-A^6B<6;WK%KVN;Q2'!%'&
M5G=ONCKA),LF+FIBXWJ2WO*:,4+:*:.0#D#J0Q:">5!SPS79JK9N78.#H?-=
M[P)II=3](:!.40@"U#]83(6>_T00X*?PO+H A0)" Y%WH;;,Y)EM-7I<W;^U
M[W1YTU6V(/&/0)DFW-8-(_-J$4?/Z?*3KU<0N@P<#%24#3LQ)&!4FK=B1)F^
MZW"CMKVTW5(@!6ER)*[V+F-SS='M'.DMN]J(A.%YOS"&@SY(T;1T[X?0I&@F
MZV(V#KL"*Q9H;Y>H8:,) ;J'M;^6GE<@.@=6C*LI3X6,;U,J:(UP;)=0/>;A
M\LQ_P\05'_0N/W@[#8/V!,9S@,M=7H8/=X 9H*FU[KJ+507B (R3LA:ZC*7A
M 2145J*#JC@S-UEB7=0%1V%X%L X9&B2L=IB=$^^ZQP$=R&V7=XN7G<X)9MZ
M[#R.$2G>9>LNF9-NC./A!OND DK3W([N71<<P!HRUK00$(-:7MCR0KC*K I%
M&\%V\5!#7T03^G#@^YRN]-RB;=%XG9I1-UAF%%!&*0%[RL^C8)+5I4?0>&7.
M$EMZ40BU!GYN]Z@/5=U%&D-I8+6$0!O22;A?'4%*Y_*E?<7;78(2[:?_B4B]
M +,I=L<6I>0R?/FSB1RN9$Z 1Y7;&OE4(OD=19_V'(&J0$MS(C@3/;I.M.>=
M+KV9;I7CWL_&:VA>?5UV!D.)I$I*H7) !X'Q/$_Z^=R47K_3 :2HN49ZTS_\
M!01JR9RZRR95?4@:@ <*B/:IPL"7'RU2#/ H/..M&8*CP[@7X7GPH.<VW38*
MT^QV78$&ZG8+X_E5^_+H'AX^0LN*Z2E/N<HP] UA-RZ'B**\&H/4J7(Y%!"9
M+_R7:@>IS7<#<BA4Q$K"+UMO]E:[4)U.FJ=O?5 61WN8>DAAFMQH\S=P=<QI
M "%##Q^[J.4//RB*T \^7/$8>(%]W,0UW7H^'&RV6VT"'%<JXJ*4B;C.H^;A
M6_N!NB$+J[&QE+I!50PZ\3Z3"M<0:J#&NM; HS$"!0X&/$=PX%:40UH-3><$
M)XFLRU66J\=TUE??BZB=*%N#]M(40/:SRY#SM,XM"LVK(5,#IH#NX,D8_+6*
M'8*M)D3N!D]5/JH0.99V(J-VW,M&H#J50Q#E+-5@>Q""AYJ;8Q+5?"H@?6J2
M';F<9TKQ*)N2?7I./%XN* VCBQX!(N9FT,E)G=MH-NJ<%]) :IZS=+EIE+NR
M-1%)51EE*!\5"<*I?&!^*GN>U,[6&R4/]S=:<U3B%?6'_4PF(V$U7J>X=!&.
M"P6(1QS.:RPUG1<@2%0N(T^D8K]&)0MSD@JI9)%6(P&=&T2F*(@JZ$,3-!Q.
M7Z.BUM==96VSM(@0!5;>;KX;@1L^#4!2B_G;G"%6^VR(LL6$9+,RFPI.PRUR
M4YF;Z;UOZB;N]0;-*T.FVT*1;(YB*13J+;E6/"+6;+:8W$HUJ77S66$2_;]*
M42MVHX.8J%5N,7E0734RR^0)#5C]G5OPXX=__">>)8$(.\:&:H;Q@D=2K=.T
M5,F;%-5#*7IS"E!+)0+<'], @;DP@'[U!60TA<"6YPH('[\$PE%2DGE2A:,M
M)L&;F!%-G%*29"A/"'C&<CZP'KL>;+;2O/&P[%>R+0L(>L'](]H(L+>#W<!&
M+[\<_-=/3;\O6,H1-=.1!%J2R-+,H% 5L* 5=9:Z-$F@6#Y)GY#0S.?.*[2"
M[.)U\KF?74M@? =;JS$65[%P6[D4WV+A,BDSI?W1TJ"-?0'Y8'K.:@@G5-K4
M60EV:UC4W)%0D:?+7(7*[.*,N==V0^%4$<E[7!3>8$.FD=.6GN2NE%H:K/P=
M":M&&D!,7= .-?<"8F;^URRF7\ >; LPQ_:_NPETZY29"02E:9;M8M$@H.==
M[_IUUXE(9/@P#6N!6\.&)V-S<MCB:H#5 S?^6Q0"$3RQNU5J8*G/]XICW1\*
M^(2KD3X+:]138_?EX=AQ! A\+3Q7:VORKIAE%,@U6C^4_KJK7 %!19G;<-AA
MLF1X:T[_W#DH"(NU%/^))U6&M%94XL2@N6;$<]E1&REI&="?7EK42C=7NQ N
M"MV"[%7LX%A@WD@O9;BJ0'>%"4USR%Y25(AWW-,(9 ^*J<*$XJIPH6CT/!+B
M8;N9;[KD)YSU(B5M;'Y:[]9TF%>^995P&$=HU0/V8$.F D+I*:!P:8H-K*H=
M9"]J"MF](4,1%TC><WLX,!6R4P",JAF-O9HSRX\"]L($,Z#ZSC?3>FIV):5I
MOU"&JM#A'RPQUBBB;+2>\T9_>M:*G4#U%_DBG;+BT=BGYD\;J ;P](DQ?,6*
M!FN/&U %X*AQC0,4>D8L>IIT"0&EP%ZQ8RJ[@_'E+U6,9A_ ZI+N;GKB&S4Z
M8PN?E[[=7J0NGHF M3:(/.-XKP)UK%Y4$(C:J[3!T< -W-:E:Y!4<[=L8]G-
MZ32(O,A\!O+N*$C]::Z1[DBRV()-)%0HM$-=3,DR9+$%<<+)[+$3)BN3)1RU
M !>JJD/5Y^S/W0A)>PPT$,)\_$%$8Y/N@6HWK=#A31%L?3NM;%%V\2,ARLUI
M,&N/4L#::@50&5LME&[PYP24)\JW[%$VV[AA=,M>8\6-C$)#:QX69$@J4%'R
M:X*)W]@U'1\S'+M8Y=!5V+2#X* [6I4!Z5D#=!%. 'E\;<&)[#I3%4N0[2EJ
M1B8X9T>4+,5/)=L+-(F@9W6HJD(#)#'"R_#'@QU"9@V!=L/T;.1+H<@W[ 0J
M.+)W^EE584PVH]H+U.*(-IZS+]F^(Q9@/ML"O+7&;?)JC=FH(;SN9(K::*O=
M  @7*49R%$\ L!K(&U#L/?5U"8$/)>IOZ !I9+"A9E]S9-5!@6^6^/>0U<-B
MZ"*KA5,^;$CQ[/B'5<,:[(ZJFS5!X>.T-1=5B(N6!U>)=#_QK/[NSOI_<[/V
M])IT+=H]*X9.&LF')4\>"<U\S;4F9C 1"_<R9:.] #<YCTM=:S41$@JI&8B"
MJ YI^Z;-1BAP=D@?M1W>8"L3Q];QJ)JK/.JF/(^N1Y.$DSZ.(8YP _C;NV4R
M8G5S407AH# -"V<^!-1X#3NQ:%IPH)HV EA<,X]BZ$J7GK_(7#QV[B@-O)@0
M(_&Q@=K6V]'KW@H_+:[539NM[5,?I^2.5L?I.XO&[A:N8->&Z]W/K,>)_<CF
MTS8ZZ-8FZISO%OIS7>;9)/&4ZUF&;)0&')B7+>C8UA!IELBO'EA-^>DZ!9<>
M]"BN=3%;*,:UUL-&U84*%=FSZX)##3;T/>J*& 4N:/%KBJ+66ZTV(L61S=7&
M/5V<M3UQ9HSPPV.);>G9,A>Q(\A(7C)G'0I+G4E*;<BUU$5A(+)639.WL7Y>
MU*@.5J_.;.IQ# =)F]929'%\C[_/9K74Y,F@C-V!U:Z0"[JE+!/RWA=1>[BN
M;^Z?:KL1HW#6Z4;&G--(;7RNYUH.*$!U(=N?9==>DZ0V[UJ*WX!V)ONLN'%(
M%S&VQ#-G[7PVWU-^2\?::@&;N-K>9:)5^4GU=(WN\[BUM<PZ[6>M,YH:3#T.
M<;*(:+HK9%A.8%MT:T*FVTAO&CSC+&T6=*=Y?=B> 7^QUM;LH2R0?;KI*X8V
MULB39-@CK'(@LI<MU+QB*L^ J5@TK>>R=-A83(V2[5IC?-4,'QF6'UH7T %J
M-NAIZM2Z0 ^UIWI"9*9R7T.==1K 3=R6LM7;W B>.@F2J<YJZ@UQ2ZJ0[)*6
M,<&/RDWQ(_%1(KGDM(\6UP*O+\K\:]-1/LJY@=DT!B5^ L0 7E-3RTD@A;P:
M2/-I7-NJ)BUMT\>*3=_Q86<DCAJHGF4S='N Q9 F-K-^&U(VFNGUD(J.$MVN
M45NW+=$')ETSE*IUI6#"T1Z3E%AD)JGV 9MG?!1J, ^ 4L!6ZHPD,."Z)702
M;R>V;L5':@H3'+I\7:6.0Y^OE]3A+7+DXFK9S)XF$'NAJ$?5HUU31_IZO-/>
M9HEWMD?B;.[Q9LG*Y#T21^&,CEC$ZBWPJ5>N93RR;P^+L%(^Y2@UN :\H[FF
M 1Z@NMLFG29V4=B)_<R"8I>%GM@EV_(O/>?7]&#:UI((F@T%YNLV@8N\;0(D
M :8 30!!:K,T15JQ(XOJ/8FRKD'A; I@#H "J$%F5J6?&L!_X(+.NB-PC=,M
M"E.QI4]D9BMV:\C7:M\2%ENX[=!;ZA'T[,?#;'123^NAM]<A9I#TM,G;"Z;V
M#058H;K H.-F"GMVI$NV;9^DS=1?)5G@Z%.9F+K:!,:OODUCY4/T_'J0G(CV
M;5V=9+7*!$94<#NMU+_B%X""_5>59$B4NEE/'<"V2<65;]*7J+-13LH2K9.N
M*\4 "E@;+",B LOF=,'R,J6 $UC2I7?S3XJ!?>WE:!\#2S:M2+2S"#M15942
M,EFEFT 2K!/ !#N?0L%RV%2PC$87[*[6!2NUA>2RV&2P1E$:['@S]MK(S9EE
M*P6#A%R7*N\6O GQ \(R$G5 *M4(W$RUDIN$I8FF_$*YJ=)4K*S2WP?&E<(N
M_3*BAD.H'WXS,FGU^W.,,GVK?EDV&HTS#$L:)!3697><05CE+!J6 ]=87<-B
M,QNYC[N8:S\Q#LMNG,."!\>EEM'D[!G617O*P_Z-%P!_OCEF;BW68">(E<36
M;PNQ6,!#+)TV"@FNU4UV]"YWBDG$*B1V#HF?F\3Z8]V&$=!+K&MMR,: 9.B5
M:G5 _EO\7R@6H)M/(\6Z_@:R3MC<I0HW%]E>Y=?MZ6*Q:LA9K#CW;F>+O41B
M+?MI+L)L(:P0-?>+9>B) >%I2+4"W0BT&)M*9>CR\F)VQ]AWXVRO(#2?0[ I
M:5EL;<ZX:!;A=<B(:!"P[=JQ($I_YJ61CTE2H]A!)^N?%#6\&F2RK0>8"Z31
M&^>9-L+5ZK7QS2K[K!0^(NF QLQ6J(P5LC?2Y0(6,5>MU,*VZNRN/TFUP],A
M*,&6>]FV0*&@SDHM_.F&!K%\NMGY'R#/\,?QK-@Q_L:N0D*67>LOUOB+18""
M</F?RK@Z[.<3LI?J&Q?V"=-^U4^A+J&OE_<:1!=V 'FI)MHUW6$/5RC3N:,Y
M;=-VJ3W4AHB2-F#VN3>2(K6RR8B'9G 5N+<5PUN^3BM_X\FM98A.0;!W:I!2
M2X6TQLM\;;^QV@B];-U%7*>CNU8(6^\MFR@3P$^<;?^C1QST92=7&;>CS+(-
M:BFXAEK@G*(6HFGK\_#%;-FY7$L.'NVU+)>G=3+N:4UW1$,<X)^V!QNIS:?]
M=IFV;=I#;4PS49M&6]2V&(F&8\\S(*06$T%OS;)-:EM]ZT1++2MS1S?;>VG>
M&.-\1DKTH'_PGCNJW>B.<D.FJ%I@;=)0C2HW;+?B N>2:5R*[=^K@DJK%=)6
M:X=X"+9)+@?5M$MF/:6F:I<]_-W!XL\UT'$0=!^N:U>J$-[8+;Q6/@NM9<AE
MV>RUMUK!J+6VN$H\?<QM:^EV++;5J,P6B:>;%-<>]WIO$%MXX&S7)2K@;;-A
M>"NHAM"0;;R60*NTD]8:>/&U*MM&W;[V@NO-_-?F[NYHM=&)[CDUW6:P70B:
MZ&I]L]F)3JKVOQCA9;=J7.<4.5XJXH7W4"/KR/+":S>VGMF&F^T&R^O W/ ^
M:]UH9C<?;ZV5(EN/S=>N;!N),4M3:NHR9D>W.^XJ8I.[[MPF[R-I'Z>S5<KZ
M(@>VZ%03&] V:A?EW7PJ#Z45GT>D;="'#;BT/?LU;>^H:;LQK+.QDDNU#3>:
M#T-]6-MVGM:V]9:Y;6DV 0F<G5O5X/-OC9O$='O8=ELN=@ LI4P@F<JV%= $
M416!0]1'Z#7OYQ,(#-1P&&JYD%LYS9PF0)KE%#L^7KN<X,"CWITOOO>E:UN6
M$V6NOKP6'E27/_CX.Q*V8O5W=\A;8!;QJ_FZG?:6;D6O:$U"ZMEO=;MG*]K*
M$[6A-1O#IN]P=DM3\5S.;\.(<\?D:J@V_EF<X]^::K-LOUMTIIC0@ O8O(96
M>]*AS-!JC_%5@HM+2[Z"(*&1S-<^)U^Q' I]/8:2!KZ]U=Z#+[/6=XB]Q:]I
M;Z^M%-QO+8NWRUK2A=6==,6W%U8D;?E60VAR1=^J5]6W<AKPG O7%QBH$?G"
M;Q.+_-YS;S]1W5MS+;)68M5U_5QE9O\VG[9BN\>*8@NZ?<0!KC"M@/O!%" ^
MZ%2OG5<.P='GL/C C>#*;VVW;#0&:5F4^(?7T^!R<#VXB+N[KI<UX$C"[<RU
M7$^XJ,U'8:CW&,JRR896>[N^R%M;*K]W5$E+J^'R2&^X/M+2Y@YWTIG:_.'&
M; B'0ESKJ[*F"NLDY54F<4^+[9OWS:RM;BN0G*;F;:U]$E&^[?KUU1GQV.+.
M.KNX=-^LTV;1P9$J/)/N.H^+]M3KIIOT)DGQHY69_/:8"]@Y;@$42>>"7;8-
M-)>%%-@][@46!OLN1;5N8'M_::!>X$C V+GPI?B]\E0 0+XW '=Q5RKO-.3J
M1 66F\!3X!# "G""3<&N8"6YH-\7K'(@!OL8T$[2]^Z+E])-+G_Q!ELI!>6:
M<D>YG]RQYRH7@)O*34IN<EFY9\G]XROW^9N*5:G.(IZ_L5\;VQ#@"= $\ S]
M1%$ 0='OYBQ7?'EW1?5:V; ;),F>*K?',G&7Y.7J-\L>ADA0HHS3*A?:+?3^
M"LFWRMS4+"#68 <A+'E"<[MPB3S3'347##>B,\7]/ZUR25I H="VAW%6#4/6
M:,>Y_5/;G^0.G?NU)7[^.(%[C%BYK$!WMPLKA*0%6'5S>49.8[4Q=YO/%>1A
M8H5IFEB9[\TWRT9?(Z?]5VV^!-TLFT$WXX::2\4BXB!I6U^DK& NR]B,/<YJ
M' ? TSL*92ZV ,K3\\46$("QS<)OB=\TL4H"#:Z"67FS3]K10??6U?I8^S+Z
M!X-IF3UM[-360SFK0YJJ!WFXACJ30>/4#ZIG;)C*5 N]$J*G[[LN=MKXI'Z2
M(O^K^L;4K,?4(]N+S;*%9'5Z_KS[;#:%41,00\BB $,#_-F5+ V8S#?H>])I
M<Z.-X,:BFPY(I1>$91:.^<+ \ET08"?6]]D3$%'NARZ[2+6IZ<R5$-NC14'"
MZ)29-]@2L 2XT'MO_$/>)@UK(+S=+3XVA?O_<_?F&7-V_\G[K/I-<#.+4,\F
M@@-K4E/6*B68D1@ C@2C@#>@/+S4G=J5N-L)GLT)?RRQP-,X'BG81MB(_?CJ
M[/)I%4=G\#46>4>QBUO,V-AVE5$^IHK6=KG;]=\" $>YOD\A7AYPH$N?]?^!
M8X]T#+OOK_U6/QC$4[5!9B.9=YN/7(+V%ZP*=K,.@Q_!R]G.Z3'X'RRYB\M>
MY5BF_SW?*)S.$:RCO>UQ@%&,?;MD\%%WS=?#"#9>6L%MJ3+,)W VL.<PHM(Q
M/_VGW:\!87_/&D%&."8B1K]&S, 1'82MF+<J9*V6];Y_Q6#18+,Q$03^M!@ 
M]XQT:8SJG\]R;"?+.]T=$[.J>D(4K13P2!CE;:[I+EVM#C[$J!-4VAA2S(&6
M)Y^>YTF#)E*0 5S+0P*SZ/B$G5HQL%_N'QB<W0:G3JEYB$A$&F9T=-#Z'-Z!
M &._^=C_:7:0'ZO#^PP$$R\#02'EVX52-\0^Z&765GNR,LB9*P^SSRNBB_-*
MA=VPN-AJ+I!3R5NPJ_S]&X6<VA2T43"Q18N:^P=68QFMBQ_+;GHOL[&OG!.>
M@U.Q"MT)XI%PO7H.EALB&$6'PE)5H1/@"4 $" )0 4AJOD\W*S=S=UO'; Y-
MAK.\"EG+[^7.!#PYM0(+T\*LID:QY:()N->BO:HV"_L+)KH*HALOP\<Y907W
M+I&F'CXH(\:/+$M&I?7Q]D:TFE7QX20W .P;7K0N3/F*%5/2SEF8OJ?#TR_8
M'767:F&1,/6S4[@H1 NWTO)I6UUX'6^/</G4O0)69-5V;<IXX:*PCBE\$VUX
MA_?!",=WI$_Q/GQ16SL\8.,+[-7M+".B!G@57NH:>7>0/X&YKB]3<3(3,-'U
MAHVYR=X)L$S7#]IVY472=X7 %('*7^OPL2M519U"Y4X>VM/(Y9;V0\ST>V+V
M^T!4WLK[3:% \:I']8[N=JN[OMW)J\#2">@ME9^^&1V\*;W$Z!CU RRAO=/J
M,NEYSUT;,6".>:FV2:3>9TD#?1NFW]W0;?,+SJ1V1Z>[.J!-KW571FQ8"^XR
M6]6CP3GO[IQW,CD"'A6N:ZBOFE3\,'LVDVHDGB=2=\F[^;3S;DSS['>I;>\N
M6T^#FUJ8I[P43LL"+L[)@&_!F#M%G2[88B)+=6 B@FN\1=MLI%:8[-?;5=IJ
M%=FTY%L69Z37$EGH!= ]@>^X,CII[RM$4)RU11.3#@6<A5I0+]A6U-L5[MA)
M>TD#@F+S\*(WGQ:WT+T6:J/#5\A;G7,83M?^&0I3[TR</CY\7Q(314P)?(58
M7X\J^M<3XN)VBAGJ5-8"_-JU4%R[K4,4;PL1!?Q:4]6OV%3";X(J6JD1C;^^
M>C.*AULB*E0.'T>7;-S>78>XET  P96S\;KE!/9R>C'%H3C.[:9887N<!=WN
M%(>UT$/2;7:3QFNZ'6!J>ZFA[M7#XY]F>GL+31<C1SZI=4V(;T0/=TO???G>
MB=FK\5Z>[P&W,5B\[;P>;].U?4<3J6(SDKKGS.$Z-OV<+E+)I@(@>XKOS=3<
MBTF/IL?LK2@5Z<LC;N=V67V6JM0[VL5W%UF?/)P^#,^W<][T;<YL?7LNMFR^
M;]N*B,R4+\=8D5<GGK?M;S7!,V!(6LV7#QS S?E6?'>^SK]Y;\\7@1M8G)%"
M#QFX1%\(KLR8@FOFTPXN".4),1V"7,NPH]IL')NB#MZL[=*Z[M8RUD@';N/-
M2%JXU-O7+0S71BK#U6&V'G>I/DQZ:-H7]WJO6OO.0'VXP-(@[N.V$/CE\-MX
M:8U[NV(HJ1(WRC:S0=[,;'B;TKTMYI64FFHLWMM>4\>86=SD9NLF(SI^3/Q^
M<:_%H0'I)IJ4C"N C4F61)>+4D18K0I0-LS&!7:Z<2=W<%S,KQP7DDM&W.#9
M<?VDP=]THNA7!=#'M9K^<3FPTHU\Y: T*5KMK*@2('6_5@ G@!"@O<D1\/U&
M<FM8941*KL^2]/M8P^3Z$8^B,]7E+V+UDUNQG/YV8IN_TM\F+#ZV^@O+%?Z&
M 5JY <_,%_>WG3?+?1P+<2/'M]S$KRZW*FK_O8I>_7ZYH+TO+$DW#41AM?-^
M''&9"5<BL#66S?=9:TSFYB+ M%B*KDC/QPD8!M<I@*?"?:K&I1_V_UDNM?#E
M87W#P$^*<%PT?TSXRPZ_=Q_"B#[5G==/XDMB7>[R,LFS).!\V@E8-^ !QL)1
M"%]_$E?Z[J=1@MS2>P&/TF[&_UQ/+%N09SR*_0NI7;&^ES=_PBIV7(Q;5>Q*
MB+N,A.$U[*&1+GO172SP%>]U3N"I;8,63CC6+?55=<=SYTQ>GOLSN*K2)4/"
M#9QS+MTS9 '5WM@<-)WV!,8"-UV[GMPS!;K3/0KV=!=^]E?['G<4J6;LO;L9
M=5&3.E8JLONS8W@TY1'"[9:]3MJI;E,7-ZIJ!;(V![5R_<RHG4D/\N?5Q0*N
M&#.%162YG.DSC,R?'$RF=8=_D#XOG]:X:TQ32R#'T2A B]F_Z%5OL[M6?9::
M=?=OI$BA;HG08"=40T?:ZN##3%TIX&!W8&B)O2?(^%+%I%6J+K34;<I*3>RZ
M(96RN4+'+J1W^)<-WMA1=E^'?%.M[)QP-3P"QL>J@O_ ?S5'I$!QL#@(EOF4
M%:>(?^)U[2+X/M<(3MM%@#?(D^!=H2/X<+KI>Y F"6W![6!(6C,8\CG,4YR 
MJ%1^HF"OWS1X#?R_305C@]-SK. GWZ!MW\A&BP7;=V?!]5D,<B<V[IH+'B9S
M G>'/<-OLIB8(=L/%@8K@XG!VUQC, ?YQ.IG$YMV&0)I,<)M<LO4XQD-IA:.
MDTW!\-S=;LBTECP_K@BKT81JWN"\:3CX*#@.1@4C5LW!V.1T\- 3!YQ-;N@&
M>3^@VN-Y<)&U'OR_E1LZ5>XV%$A?<(VWGQQF_">;82'! F$.,D&XVGCI.PA[
M@A?(JT&&<*_P<?H"+06O=C5IG)R"\F RG:S#0] "[MB%NKF-L/BG(]Q\H\YE
M/(')(V'/FDFX.3AXO+5Z*_-J\E6BG8\S,,$R *P> "?)QUC@7J-8!RDG<#+F
M5MV1A+L^G<]218ODHZEA2Q.S-.':98;1D=!6YF8J_R3 -5G%28EN::<*ZAL]
M?.9J+L@;@(8 .XRO&Q"F5F_"<UK=+&CR[<FR>?N-10N-/LX(,.& ?OQ_4ZQ>
M8EVMR3HL';B->:HL:)=V"7(4-L;Y0%!(?-<I=NUE3'V,>#FY8@QY,OGUU%@=
M=GM]XYV[K'/0?)<#VI@^_R004D#SG\;J?=Q?Q07VYO"?JE L8'.51>MH>D9(
M:%.-DT;5'U93M6QP_%IJ*-'*J($UP/MXK?SC_$+&7]%T436 <+QNL_R,K1_;
MA=2%8U;X,679!F!9)J4)/WF70[8FGXAVOT==]CVP8YFQ%64U7M(T-]<QU,VR
M[2YY'EB5<MC5 ]Q#3O!Z[?1W)4@U & 7M[JQ6DW>"_.Z&]E-8Y^5#QEX<L7:
MD+%S&$?IQL0Q14=!$%(\6(>C]66W6'?XM8IPA.])[_ZUS,'#WA(#;2C=,%*2
M"IJ$*341XVAW'5MI:K[EYK">_S=8HD/NXOND/1A^/6/,R\(6@ YO50)9U0Y>
M_.0YM<F_Y[*P!]#?W:[I1MBA!\5?< O9L]>W%-[M]W 'J84/\U\-/VGWO#7>
MB9G,>,>(A^2F3M,?CM7R#>.N&;OS7-[4.UN;5<]Y:+O,?+L?ZFM590QF5A^R
M.>@TH %GJ']8F?S1%2$&!O:5,37L\H#OLV:5:Q07+M]U0H8W<WO51?D!C.?F
MS/RWY.!.+-$3O?J_A2?[_U:V.3,.VZ+)3O>?1&TL(0X&R%P.6Q5/61"88R8P
>-------------------------------Cut-Here-------------------------------<


   ----------------------------------------------------------------------
  / e||)   Lyndon J Clarke    Edinburgh Parallel Computing Centre   e||) \ 
  \ c||c   Tel: 031 650 5021  Email: lyndon@epcc.edinburgh.ac.uk    c||c /
   ---------------------------------------------------------------------- 


From owner-mpi-comm@CS.UTK.EDU  Tue Mar  2 15:16:27 1993
Received: from CS.UTK.EDU by surfer.EPM.ORNL.GOV (5.61/1.34)
	id AA09733; Tue, 2 Mar 93 15:16:27 -0500
Received: from localhost by CS.UTK.EDU with SMTP (5.61++/2.8s-UTK)
	id AA24112; Tue, 2 Mar 93 15:14:04 -0500
X-Resent-To: mpi-comm@CS.UTK.EDU ; Tue, 2 Mar 1993 15:14:02 EST
Errors-To: owner-mpi-comm@CS.UTK.EDU
Received: from antares.mcs.anl.gov by CS.UTK.EDU with SMTP (5.61++/2.8s-UTK)
	id AA24104; Tue, 2 Mar 93 15:13:57 -0500
Received: from godzilla.mcs.anl.gov by antares.mcs.anl.gov with SMTP id AA26860
  (5.65c/IDA-1.4.4 for <mpi-comm@cs.utk.edu>); Tue, 2 Mar 1993 14:13:54 -0600
From: William Gropp <gropp@mcs.anl.gov>
Received: by godzilla.mcs.anl.gov (4.1/GeneV4)
	id AA08480; Tue, 2 Mar 93 14:13:52 CST
Date: Tue, 2 Mar 93 14:13:52 CST
Message-Id: <9303022013.AA08480@godzilla.mcs.anl.gov>
To: mpi-comm@cs.utk.edu
Subject: A proposal for buffer descriptors

The following postscript file contains a more detailed account of the buffer
descriptors that we discussed at the last meeting.  These allow one to send
non-contiguous structures of mixed typed data between heterogeneous machines.
Bill and Rusty

%!PS-Adobe-2.0
%%Creator: dvips, version 5.4 (C) 1986-90 Radical Eye Software
%%Title: bd.dvi
%%Pages: 8 1
%%BoundingBox: 0 0 612 792
%%EndComments
%%BeginProcSet: tex.pro
/TeXDict 200 dict def TeXDict begin /N /def load def /B{bind def}N /S /exch
load def /X{S N}B /TR /translate load N /isls false N /vsize 10 N /@rigin{
isls{[0 1 -1 0 0 0]concat}if 72 Resolution div 72 VResolution div neg scale
Resolution VResolution vsize neg mul TR}B /@letter{/vsize 10 N}B /@landscape{
/isls true N /vsize -1 N}B /@a4{/vsize 10.6929133858 N}B /@a3{/vsize 15.5531 N
}B /@ledger{/vsize 16 N}B /@legal{/vsize 13 N}B /@manualfeed{statusdict
/manualfeed true put}B /@copies{/#copies X}B /FMat[1 0 0 -1 0 0]N /FBB[0 0 0 0
]N /df{/sf 1 N /fntrx FMat N df-tail}B /dfs{div /sf X /fntrx[sf 0 0 sf neg 0 0
]N df-tail}B /df-tail{/nn 8 dict N nn begin /FontType 3 N /FontMatrix fntrx N
/FontBBox FBB N string /base X array /BitMaps X /BuildChar{CharBuilder}N
/Encoding IE N end dup{/foo setfont}2 array copy cvx N load 0 nn put /ctr 0 N[
}B /E{pop nn dup definefont setfont}B /ch-image{ch-data dup type /stringtype
ne{ctr get /ctr ctr 1 add N}if}B /ch-width{ch-data dup length 5 sub get}B
/ch-height{ch-data dup length 4 sub get}B /ch-xoff{128 ch-data dup length 3
sub get sub}B /ch-yoff{ch-data dup length 2 sub get 127 sub}B /ch-dx{ch-data
dup length 1 sub get}B /ctr 0 N /CharBuilder{save 3 1 roll S dup /base get 2
index get S /BitMaps get S get /ch-data X pop /ctr 0 N ch-dx 0 ch-xoff ch-yoff
ch-height sub ch-xoff ch-width add ch-yoff setcachedevice ch-width ch-height
true[1 0 0 -1 -.1 ch-xoff sub ch-yoff .1 add]{ch-image}imagemask restore}B /D{
/cc X dup type /stringtype ne{]}if nn /base get cc ctr put nn /BitMaps get S
ctr S sf 1 ne{dup dup length 1 sub dup 2 index S get sf div put}if put /ctr
ctr 1 add N}B /I{cc 1 add D}B /bop{userdict /bop-hook known{bop-hook}if /SI
save N @rigin 0 0 moveto}B /eop{clear SI restore showpage userdict /eop-hook
known{eop-hook}if}B /@start{userdict /start-hook known{start-hook}if
/VResolution X /Resolution X 1000 div /DVImag X /IE 256 array N 0 1 255{IE S 1
string dup 0 3 index put cvn put}for}B /p /show load N /RMat[1 0 0 -1 0 0]N
/BDot 8 string N /v{/ruley X /rulex X V}B /V{gsave TR -.1 -.1 TR rulex ruley
scale 1 1 false RMat{BDot}imagemask grestore}B /a{moveto}B /delta 0 N /tail{
dup /delta X 0 rmoveto}B /M{S p delta add tail}B /b{S p tail}B /c{-4 M}B /d{
-3 M}B /e{-2 M}B /f{-1 M}B /g{0 M}B /h{1 M}B /i{2 M}B /j{3 M}B /k{4 M}B /l{p
-4 w}B /m{p -3 w}B /n{p -2 w}B /o{p -1 w}B /q{p 1 w}B /r{p 2 w}B /s{p 3 w}B /t
{p 4 w}B /w{0 rmoveto}B /x{0 S rmoveto}B /y{3 2 roll p a}B /bos{/SS save N}B
/eos{clear SS restore}B end
%%EndProcSet
TeXDict begin 1000 300 300 @start /Fa 1 1 df<FFFFFF80FFFFFF8019027D8A20>0
D E /Fb 46 123 df<003FE3F801F03F1C03C03E3E07C07C3E0F807C3E0F807C1C0F807C000F80
7C000F807C000F807C000F807C00FFFFFFC0FFFFFFC00F807C000F807C000F807C000F807C000F
807C000F807C000F807C000F807C000F807C000F807C000F807C000F807C000F807C000F807C00
7FE1FFC07FE1FFC01F1D809C1C>11 D<78FCFCFCFC7806067D850D>46 D<00600001E0000FE000
FFE000F3E00003E00003E00003E00003E00003E00003E00003E00003E00003E00003E00003E000
03E00003E00003E00003E00003E00003E00003E00003E00003E0007FFF807FFF80111B7D9A18>
49 D<07F8001FFE00383F80780FC0FC07C0FC07E0FC03E0FC03E07803E00007E00007C00007C0
000F80001F00001E0000380000700000E0000180600300600600600800E01FFFC03FFFC07FFFC0
FFFFC0FFFFC0131B7E9A18>I<03F8001FFE003C1F003C0F807C07C07E07C07C07C03807C0000F
80000F80001E00003C0003F800001E00000F800007C00007C00007E03007E07807E0FC07E0FC07
E0FC07C0780F80781F001FFE0007F800131B7E9A18>I<000180000380000780000F80001F8000
3F80006F8000CF80008F80018F80030F80060F800C0F80180F80300F80600F80C00F80FFFFF8FF
FFF8000F80000F80000F80000F80000F80000F8001FFF801FFF8151B7F9A18>I<000380000003
80000007C0000007C0000007C000000FE000000FE000001FF000001BF000001BF0000031F80000
31F8000061FC000060FC0000E0FE0000C07E0000C07E0001803F0001FFFF0003FFFF8003001F80
03001F8006000FC006000FC00E000FE00C0007E0FFC07FFEFFC07FFE1F1C7E9B24>65
D<FFFFF800FFFFFF000FC01F800FC00FC00FC007C00FC007E00FC007E00FC007E00FC007E00FC0
07E00FC007C00FC00F800FC03F000FFFFE000FC00F800FC007C00FC007E00FC003E00FC003F00F
C003F00FC003F00FC003F00FC003F00FC007E00FC007E00FC01FC0FFFFFF00FFFFFC001C1C7E9B
22>I<001FE02000FFF8E003F80FE007C003E00F8001E01F0000E03E0000E03E0000607E000060
7C000060FC000000FC000000FC000000FC000000FC000000FC000000FC000000FC0000007C0000
607E0000603E0000603E0000C01F0000C00F80018007C0030003F80E0000FFFC00001FE0001B1C
7D9B22>I<FFFFF800FFFFFF000FC01FC00FC007E00FC001F00FC001F80FC000F80FC000FC0FC0
007C0FC0007C0FC0007E0FC0007E0FC0007E0FC0007E0FC0007E0FC0007E0FC0007E0FC0007E0F
C0007C0FC0007C0FC0007C0FC000F80FC000F80FC001F00FC007E00FC01FC0FFFFFF00FFFFF800
1F1C7E9B25>I<FFFFFF00FFFFFF000FC01F000FC007000FC003000FC003800FC003800FC18180
0FC181800FC181800FC180000FC380000FFF80000FFF80000FC380000FC180000FC180000FC180
600FC180600FC000E00FC000C00FC000C00FC001C00FC001C00FC003C00FC00F80FFFFFF80FFFF
FF801B1C7E9B1F>I<FFFFFF00FFFFFF000FC01F000FC007000FC003000FC003800FC003800FC0
01800FC181800FC181800FC180000FC180000FC380000FFF80000FFF80000FC380000FC180000F
C180000FC180000FC180000FC000000FC000000FC000000FC000000FC000000FC00000FFFF0000
FFFF0000191C7E9B1E>I<000FF008007FFE3801FC07F807E001F80F8000781F0000783F000038
3E0000387E0000187C000018FC000000FC000000FC000000FC000000FC000000FC000000FC007F
FFFC007FFF7C0001F87E0001F83E0001F83F0001F81F0001F80F8001F807E001F801FC07F8007F
FE78000FF818201C7D9B26>I<FFFFFFFF07E007E007E007E007E007E007E007E007E007E007E0
07E007E007E007E007E007E007E007E007E007E007E007E007E0FFFFFFFF101C7F9B12>73
D<FFFF00FFFF000FC0000FC0000FC0000FC0000FC0000FC0000FC0000FC0000FC0000FC0000FC0
000FC0000FC0000FC0000FC0000FC0030FC0030FC0030FC0070FC0070FC0060FC00E0FC01E0FC0
7EFFFFFEFFFFFE181C7E9B1D>76 D<FFC00003FFFFE00007FF0FE00007F00DF0000DF00DF0000D
F00DF0000DF00CF80019F00CF80019F00C7C0031F00C7C0031F00C3E0061F00C3E0061F00C1F00
C1F00C1F00C1F00C1F00C1F00C0F8181F00C0F8181F00C07C301F00C07C301F00C03E601F00C03
E601F00C01FC01F00C01FC01F00C01FC01F00C00F801F00C00F801F0FFC0701FFFFFC0701FFF28
1C7E9B2D>I<FFE003FFFFE003FF0FF000300FF800300DFC00300CFE00300C7E00300C3F00300C
1F80300C1FC0300C0FE0300C07F0300C03F0300C01F8300C01FC300C00FE300C007F300C003F30
0C001FB00C001FF00C000FF00C0007F00C0003F00C0001F00C0000F00C0000F0FFC00070FFC000
30201C7E9B25>I<003FE00001F07C0003C01E000F800F801F0007C01E0003C03E0003E07E0003
F07C0001F07C0001F0FC0001F8FC0001F8FC0001F8FC0001F8FC0001F8FC0001F8FC0001F8FC00
01F87C0001F07E0003F07E0003F03E0003E03F0007E01F0007C00F800F8003C01E0001F07C0000
3FE0001D1C7D9B24>I<FFFFF800FFFFFE000FC03F800FC00F800FC007C00FC007E00FC007E00F
C007E00FC007E00FC007E00FC007C00FC007C00FC00F800FC03F000FFFFC000FC000000FC00000
0FC000000FC000000FC000000FC000000FC000000FC000000FC000000FC000000FC00000FFFC00
00FFFC00001B1C7E9B21>I<FFFFF00000FFFFFE00000FC03F00000FC00F80000FC007C0000FC0
07E0000FC007E0000FC007E0000FC007E0000FC007E0000FC007C0000FC00F80000FC03E00000F
FFF000000FC07C00000FC03E00000FC03F00000FC01F80000FC01F80000FC01F80000FC01F8000
0FC01F80000FC01F80000FC01F81800FC01F81800FC00FC180FFFC07C300FFFC01FE00211C7E9B
24>82 D<07F8201FFEE03C07E07801E07000E0F000E0F00060F00060F80000FE0000FFE0007FFE
003FFF003FFF800FFFC007FFE0007FE00003F00001F00000F0C000F0C000F0C000E0E000E0F001
C0FC03C0EFFF0083FC00141C7D9B1B>I<7FFFFFE07FFFFFE0781F81E0701F80E0601F8060E01F
8070C01F8030C01F8030C01F8030C01F8030001F8000001F8000001F8000001F8000001F800000
1F8000001F8000001F8000001F8000001F8000001F8000001F8000001F8000001F8000001F8000
001F800007FFFE0007FFFE001C1C7E9B21>I<FFFC03FFFFFC03FF0FC000300FC000300FC00030
0FC000300FC000300FC000300FC000300FC000300FC000300FC000300FC000300FC000300FC000
300FC000300FC000300FC000300FC000300FC000300FC0003007C0003007C0006003E000E001F0
01C000FC0780007FFE00000FF800201C7E9B25>I<FFFC01FF80FFFC01FF800FC000180007E000
300007E000300007F000700003F000600003F800E00001F800C00001FC00C00000FC01800000FC
018000007E030000007E030000007F070000003F060000003F8E0000001F8C0000001FCC000000
0FD80000000FD800000007F000000007F000000007F000000003E000000003E000000001C00000
0001C00000211C7F9B24>I<FFFC01FF80FFFC01FF800FE000380007F000300003F800700003F8
00600001FC00C00000FE01C00000FE018000007F030000003F870000003F860000001FCE000000
0FFC0000000FF800000007F800000003F000000003F000000003F000000003F000000003F00000
0003F000000003F000000003F000000003F000000003F00000003FFF0000003FFF0000211C7F9B
24>89 D<0FF8001C1E003E0F803E07803E07C01C07C00007C0007FC007E7C01F07C03C07C07C07
C0F807C0F807C0F807C0780BC03E13F80FE1F815127F9117>97 D<FF0000FF00001F00001F0000
1F00001F00001F00001F00001F00001F00001F00001F3F801FE1E01F80701F00781F003C1F003C
1F003E1F003E1F003E1F003E1F003E1F003E1F003C1F003C1F00781F80701EC1E01C3F00171D7F
9C1B>I<03FC000E0E001C1F003C1F00781F00780E00F80000F80000F80000F80000F80000F800
007800007801803C01801C03000E0E0003F80011127E9115>I<000FF0000FF00001F00001F000
01F00001F00001F00001F00001F00001F00001F001F9F00F07F01C03F03C01F07801F07801F0F8
01F0F801F0F801F0F801F0F801F0F801F07801F07801F03C01F01C03F00F0FFE03F9FE171D7E9C
1B>I<01FC000F07001C03803C01C07801C07801E0F801E0F801E0FFFFE0F80000F80000F80000
7800007C00603C00601E00C00F038001FC0013127F9116>I<03F8F00E0F381E0F381C07303C07
803C07803C07803C07801C07001E0F000E0E001BF8001000001800001800001FFF001FFFC00FFF
E01FFFF07801F8F00078F00078F000787000707800F01E03C007FF00151B7F9118>103
D<1E003F003F003F003F001E00000000000000000000000000FF00FF001F001F001F001F001F00
1F001F001F001F001F001F001F001F001F00FFE0FFE00B1E7F9D0E>105
D<FF0000FF00001F00001F00001F00001F00001F00001F00001F00001F00001F00001F0FF81F0F
F81F03801F07001F0C001F18001F70001FF8001FFC001FBC001F3E001F1F001F0F001F0F801F07
C01F03E0FFC7FCFFC7FC161D7F9C19>107 D<FF00FF001F001F001F001F001F001F001F001F00
1F001F001F001F001F001F001F001F001F001F001F001F001F001F001F001F001F00FFE0FFE00B
1D7F9C0E>I<FF0FC07E00FF31E18F001F40F207801F80FC07C01F80FC07C01F00F807C01F00F8
07C01F00F807C01F00F807C01F00F807C01F00F807C01F00F807C01F00F807C01F00F807C01F00
F807C01F00F807C0FFE7FF3FF8FFE7FF3FF825127F9128>I<FF0FC0FF31E01F40F01F80F81F80
F81F00F81F00F81F00F81F00F81F00F81F00F81F00F81F00F81F00F81F00F81F00F8FFE7FFFFE7
FF18127F911B>I<01FC000F07801C01C03C01E07800F07800F0F800F8F800F8F800F8F800F8F8
00F8F800F87800F07800F03C01E01E03C00F078001FC0015127F9118>I<FF3F80FFE1E01F80F0
1F00781F007C1F003C1F003E1F003E1F003E1F003E1F003E1F003E1F003C1F007C1F00781F80F0
1FC1E01F3F001F00001F00001F00001F00001F00001F0000FFE000FFE000171A7F911B>I<FE3E
00FE47001E8F801E8F801E8F801F07001F00001F00001F00001F00001F00001F00001F00001F00
001F00001F0000FFF000FFF00011127F9114>114 D<1FD830786018E018E018F000FF807FE07F
F01FF807FC007CC01CC01CE01CE018F830CFC00E127E9113>I<0300030003000300070007000F
000F003FFCFFFC1F001F001F001F001F001F001F001F001F001F0C1F0C1F0C1F0C0F08079803F0
0E1A7F9913>I<FF07F8FF07F81F00F81F00F81F00F81F00F81F00F81F00F81F00F81F00F81F00
F81F00F81F00F81F00F81F01F80F01F80786FF01F8FF18127F911B>I<FF8FF8FEFF8FF8FE1F03
E0301F03E0301F83E0700F83F0600F86F06007C6F0C007CEF8C007EC79C003EC7D8003F83D8001
F83F0001F83F0001F01F0000F01E0000E00E0000E00E001F127F9122>119
D<FFC7FCFFC7FC1F81800F838007C70003EE0001FC0001F80000F800007C0000FE0001DF00039F
00070F800607C00C03E0FF07FCFF07FC16127F9119>I<FFC1FCFFC1FC1F00601F80E00F80C00F
C0C007C18007C18003E30003E30001F70001F60000FE0000FC0000FC0000780000780000300000
3000007000706000F86000F8C000F980007300003E0000161A7F9119>I<3FFF803C1F00303F00
303E00607C0060FC0060F80001F00003F00007E00007C1800F81801F81801F03803E03007E0700
7C0F00FFFF0011127F9115>I E /Fc 58 126 df<03800007E0000FE0001E70001C70001C7000
1C70001C77E01CE7E01DE7E00FC7000F8E000F0E001E0E003F1C007F1C00739C00E3F800E1F800
E0F1C0E0F1C071F9C07FFFC03F9F801E070013197F9816>38 D<00E001E0038007000E001C001C
0038003800700070007000E000E000E000E000E000E000E000E000E00070007000700038003800
1C001C000E000700038001E000E00B217A9C16>40 D<C000E000700038001C000E000E00070007
0003800380038001C001C001C001C001C001C001C001C001C0038003800380070007000E000E00
1C0038007000E000C0000A217B9C16>I<01C00001C00001C00001C00071C700F9CF807FFF001F
FC0007F00007F0001FFC007FFF00F9CF8071C70001C00001C00001C00001C00011127E9516>I<
387C7E7E3E0E1E1C78F060070B798416>44 D<70F8F8F8700505788416>46
D<03E0000FF8001FFC001E3C00380E00780F00700700700700E00380E00380E00380E00380E003
80E00380E00380E00380F00780700700700700780F003C1E001E3C001FFC000FF80003E0001119
7E9816>48 D<01800380038007800F807F80FF8073800380038003800380038003800380038003
80038003800380038003807FF87FFC7FF80E197C9816>I<07E0001FF8003FFC00783E00E00700
F00780F00380600380000380000380000700000700000E00001C0000380000700000E00001C000
0380000F00001E03803803807FFF80FFFF807FFF8011197E9816>I<07E0001FF8003FFC00781E
00780700300700000700000700000E00003E0007FC0007F00007FC00001E000007000003000003
80000380600380F00380E00700781E003FFC001FF80007E00011197E9816>I<007C0000FC0000
DC0001DC00039C00039C00071C000F1C000E1C001E1C003C1C00381C00781C00F01C00FFFFE0FF
FFE0FFFFE0001C00001C00001C00001C00001C0001FFC001FFC001FFC013197F9816>I<07F000
1FFC003FFE007C1F00F00780E00380E00380E003807007007C1F001FFC0007F0001FFC003C1E00
700700F00780E00380E00380E00380F007807007007C1F003FFE001FFC0007F00011197E9816>
56 D<70F8F8F870000000000000000070F8F8F8700512789116>58 D<387C7C7C380000000000
00000038787C7C3C1C1C3870E0400618799116>I<7FFF00FFFF80FFFF80000000000000000000
000000000000FFFF80FFFF807FFF00110B7E9116>61 D<7FF800FFFE007FFF001C0F001C07801C
03801C03801C03801C07801C07001FFF001FFE001FFE001C1F001C03801C03C01C01C01C01C01C
01C01C01C01C03C01C07807FFF80FFFF007FFC0012197F9816>66 D<7FF800FFFE007FFF001C0F
001C07801C03C01C01C01C01C01C01E01C00E01C00E01C00E01C00E01C00E01C00E01C00E01C00
E01C01C01C01C01C03C01C07801C0F807FFF00FFFE007FF8001319809816>68
D<7FFFC0FFFFC07FFFC01C01C01C01C01C01C01C01C01C00001C00001C1C001C1C001FFC001FFC
001FFC001C1C001C1C001C00001C00E01C00E01C00E01C00E01C00E07FFFE0FFFFE07FFFE01319
7F9816>I<7F1FC0FFBFE07F1FC01C07001C07001C07001C07001C07001C07001C07001FFF001F
FF001FFF001C07001C07001C07001C07001C07001C07001C07001C07001C07007F1FC0FFBFE07F
1FC013197F9816>72 D<FFFEFFFEFFFE0380038003800380038003800380038003800380038003
800380038003800380038003800380FFFEFFFEFFFE0F197D9816>I<FFC000FFC000FFC0001C00
001C00001C00001C00001C00001C00001C00001C00001C00001C00001C00001C00001C00001C00
001C00401C00E01C00E01C00E01C00E0FFFFE0FFFFE0FFFFE013197F9816>76
D<FC07E0FE0FE0FE0FE03A0B803B1B803B1B803B1B803B1B803B1B803BBB8039B38039B38039B3
8039B38039F38038E38038E380380380380380380380380380380380FE0FE0FE0FE0FE0FE01319
7F9816>I<7E1FC0FF3FE07F1FC01D07001D87001D87001D87001DC7001DC7001CC7001CC7001C
E7001CE7001CE7001C67001C67001C77001C77001C37001C37001C37001C17007F1F00FF9F007F
0F0013197F9816>I<1FFC003FFE007FFF00780F00F00780E00380E00380E00380E00380E00380
E00380E00380E00380E00380E00380E00380E00380E00380E00380F00780F00780780F007FFF00
3FFE001FFC0011197E9816>I<7FF800FFFE007FFF001C0F801C03801C03C01C01C01C01C01C01
C01C03C01C03801C0F801FFF001FFE001FF8001C00001C00001C00001C00001C00001C00001C00
007F0000FF80007F000012197F9816>I<7FE000FFF8007FFC001C1E001C0F001C07001C07001C
07001C07001C0F001C1E001FFC001FF8001FFC001C1C001C0E001C0E001C0E001C0E001C0E201C
0E701C0E707F07E0FF87E07F03C014197F9816>82 D<07E3001FFF003FFF00781F00F00700E007
00E00700E00000F000007800003F80001FF00007FC0000FE00000F000007000003800003806003
80E00380E00700F80F00FFFE00FFFC00C7F00011197E9816>I<7FFFE0FFFFE0FFFFE0E0E0E0E0
E0E0E0E0E0E0E0E000E00000E00000E00000E00000E00000E00000E00000E00000E00000E00000
E00000E00000E00000E00000E00007FC000FFE0007FC0013197F9816>I<FE0FE0FF1FE0FE0FE0
3803801C07001C07001C07001C07000E0E000E0E000E0E000E0E00060C00071C00071C00071C00
071C0003180003B80003B80003B80001B00001F00001F00000E00013197F9816>86
D<FFF0FFF0FFF0E000E000E000E000E000E000E000E000E000E000E000E000E000E000E000E000
E000E000E000E000E000E000E000E000E000E000FFF0FFF0FFF00C20789C16>91
D<FFF0FFF0FFF00070007000700070007000700070007000700070007000700070007000700070
0070007000700070007000700070007000700070FFF0FFF0FFF00C207F9C16>93
D<FFFF80FFFF80FFFF8011037E7E16>95 D<1FE0003FF0007FF800783C00300E00000E00000E00
03FE001FFE003E0E00700E00E00E00E00E00E00E00783E007FFFE03FE7E00F83E013127E9116>
97 D<7E0000FE00007E00000E00000E00000E00000E00000E3E000EFF000FFF800F83C00F00E0
0E00E00E00700E00700E00700E00700E00700E00700E00E00F01E00F83C00FFF800EFF00063C00
1419809816>I<03F80FFC1FFE3C1E780C7000E000E000E000E000E000F000700778073E0E1FFC
0FF803F010127D9116>I<003F00007F00003F0000070000070000070000070003C7000FF7001F
FF003C1F00780F00700700E00700E00700E00700E00700E00700E00700700F00700F003C1F001F
FFE00FE7F007C7E014197F9816>I<03E00FF81FFC3C1E780E7007E007FFFFFFFFFFFFE000E000
700778073C0F1FFE0FFC03F010127D9116>I<001F00007F8000FF8001E78001C30001C00001C0
007FFF00FFFF00FFFF0001C00001C00001C00001C00001C00001C00001C00001C00001C00001C0
0001C00001C0003FFE007FFF003FFE0011197F9816>I<03E3C007F7E00FFFE01C1CC0380E0038
0E00380E00380E00380E001C1C000FF8001FF0001BE0003800001800001FFC001FFF003FFF8078
03C0E000E0E000E0E000E0E000E07001C07C07C03FFF800FFE0003F800131C7F9116>I<7E0000
FE00007E00000E00000E00000E00000E00000E3C000EFE000FFF000F87800F03800E03800E0380
0E03800E03800E03800E03800E03800E03800E03800E03807FC7F0FFE7F87FC7F01519809816>
I<018003C003C0018000000000000000007FC07FC07FC001C001C001C001C001C001C001C001C0
01C001C001C001C07FFFFFFF7FFF101A7D9916>I<7E0000FE00007E00000E00000E00000E0000
0E00000E7FE00E7FE00E7FE00E0F000E1E000E3C000E78000EF0000FF0000FF8000FBC000F1E00
0E0E000E07000E07807F87F0FFCFF07F87F01419809816>107 D<FFC000FFC000FFC00001C000
01C00001C00001C00001C00001C00001C00001C00001C00001C00001C00001C00001C00001C000
01C00001C00001C00001C00001C000FFFF80FFFF80FFFF8011197E9816>I<F9C380FFEFC0FFFF
E03C78E03C78E03870E03870E03870E03870E03870E03870E03870E03870E03870E03870E0FE7C
F8FE7CF8FE3C781512809116>I<7E3C00FEFE007FFF000F87800F03800E03800E03800E03800E
03800E03800E03800E03800E03800E03800E03807FC7F0FFE7F87FC7F01512809116>I<03E000
0FF8001FFC003C1E00780F00700700E00380E00380E00380E00380E00380F00780700700780F00
3C1E001FFC000FF80003E00011127E9116>I<7E3E00FEFF007FFF800F83C00F00E00E00E00E00
700E00700E00700E00700E00700E00700E00E00F01E00F83C00FFF800EFF000E3C000E00000E00
000E00000E00000E00000E00007FC000FFE0007FC000141B809116>I<FF0FC0FF3FE0FF7FE007
F04007C000078000078000070000070000070000070000070000070000070000070000FFFC00FF
FC00FFFC0013127F9116>114 D<0FEC3FFC7FFCF03CE01CE01C70007F801FF007F8003C600EE0
0EF00EF81EFFFCFFF8C7E00F127D9116>I<0300000700000700000700000700007FFF00FFFF00
FFFF00070000070000070000070000070000070000070000070100070380070380070380078700
03FE0001FC0000F80011177F9616>I<7E1F80FE3F807E1F800E03800E03800E03800E03800E03
800E03800E03800E03800E03800E03800E03800E0F800FFFF007FBF803E3F01512809116>I<7F
1FC0FF1FE07F1FC01C07001E0F000E0E000E0E000E0E00071C00071C00071C00071C0003B80003
B80003B80001F00001F00000E00013127F9116>I<FF1FE0FFBFE0FF1FE0380380380380380380
38038038E38019F30019F30019B3001DB7001DB7001DB7001DB7000F1E000F1E000F1E0013127F
9116>I<7F1FC07F3FC07F1FC00F1C00073C0003B80003F00001F00000E00001E00001F00003B8
00073C00071C000E0E007F1FC0FF3FE07F1FC013127F9116>I<7F1FC0FF9FE07F1FC01C07000E
07000E0E000E0E00070E00071C00071C00039C00039C0003980001B80001B80000F00000F00000
F00000E00000E00000E00001C00079C0007BC0007F80003F00003C0000131B7F9116>I<3FFFC0
7FFFC07FFFC0700780700F00701E00003C0000780001F00003E0000780000F00001E01C03C01C0
7801C0FFFFC0FFFFC0FFFFC012127F9116>I<001F80007F8000FF8001E00001C00001C00001C0
0001C00001C00001C00001C00001C00001C00003C0007F8000FF0000FF00007F800003C00001C0
0001C00001C00001C00001C00001C00001C00001C00001C00001E00000FF80007F80001F801120
7E9C16>I<7C0000FF0000FF800003C00001C00001C00001C00001C00001C00001C00001C00001
C00001C00001E00000FF00007F80007F8000FF0001E00001C00001C00001C00001C00001C00001
C00001C00001C00001C00003C000FF8000FF00007C000011207E9C16>125
D E /Fd 59 123 df<007E1F0001C1B1800303E3C00703C3C00E03C1800E01C0000E01C0000E01
C0000E01C0000E01C0000E01C000FFFFFC000E01C0000E01C0000E01C0000E01C0000E01C0000E
01C0000E01C0000E01C0000E01C0000E01C0000E01C0000E01C0000E01C0000E01C0000E01C000
0E01C0007F87FC001A1D809C18>11 D<007E0001C1800301800703C00E03C00E01800E00000E00
000E00000E00000E0000FFFFC00E01C00E01C00E01C00E01C00E01C00E01C00E01C00E01C00E01
C00E01C00E01C00E01C00E01C00E01C00E01C00E01C07F87F8151D809C17>I<003F07E00001C0
9C18000380F018000701F03C000E01E03C000E00E018000E00E000000E00E000000E00E000000E
00E000000E00E00000FFFFFFFC000E00E01C000E00E01C000E00E01C000E00E01C000E00E01C00
0E00E01C000E00E01C000E00E01C000E00E01C000E00E01C000E00E01C000E00E01C000E00E01C
000E00E01C000E00E01C000E00E01C007FC7FCFF80211D809C23>14 D<6060F0F0F8F868680808
08080808101010102020404080800D0C7F9C15>34 D<004000800100020006000C000C00180018
00300030007000600060006000E000E000E000E000E000E000E000E000E000E000E000E0006000
60006000700030003000180018000C000C00060002000100008000400A2A7D9E10>40
D<800040002000100018000C000C000600060003000300038001800180018001C001C001C001C0
01C001C001C001C001C001C001C001C0018001800180038003000300060006000C000C00180010
002000400080000A2A7E9E10>I<01800180018001804182F18F399C0FF003C003C00FF0399CF1
8F4182018001800180018010127E9E15>I<60F0F0701010101020204080040C7C830C>44
D<FFE0FFE00B0280890E>I<60F0F06004047C830C>I<00010003000600060006000C000C000C00
18001800180030003000300060006000C000C000C0018001800180030003000300060006000C00
0C000C00180018001800300030003000600060006000C000C00010297E9E15>I<03C00C301818
300C300C700E60066006E007E007E007E007E007E007E007E007E007E007E007E007E007600660
06700E300C300C18180C3007E0101D7E9B15>I<030007003F00C7000700070007000700070007
0007000700070007000700070007000700070007000700070007000700070007000F80FFF80D1C
7C9B15>I<07C01830201C400C400EF00FF80FF807F8077007000F000E000E001C001C00380070
006000C00180030006010C01180110023FFE7FFEFFFE101C7E9B15>I<60F0F060000000000000
0000000060F0F06004127C910C>58 D<60F0F0600000000000000000000060F0F0701010101020
204080041A7C910C>I<000600000006000000060000000F0000000F0000000F00000017800000
178000001780000023C0000023C0000023C0000041E0000041E0000041E0000080F0000080F000
0180F8000100780001FFF80003007C0002003C0002003C0006003E0004001E0004001E000C001F
001E001F00FF80FFF01C1D7F9C1F>65 D<FFFFC00F00F00F00380F003C0F001C0F001E0F001E0F
001E0F001E0F001C0F003C0F00780F01F00FFFE00F00780F003C0F001E0F000E0F000F0F000F0F
000F0F000F0F000F0F001E0F001E0F003C0F0078FFFFE0181C7E9B1D>I<001F808000E0618001
801980070007800E0003801C0003801C00018038000180780000807800008070000080F0000000
F0000000F0000000F0000000F0000000F0000000F0000000F00000007000008078000080780000
80380000801C0001001C0001000E000200070004000180080000E03000001FC000191E7E9C1E>
I<FFFFC0000F00F0000F003C000F000E000F0007000F0007000F0003800F0003C00F0001C00F00
01C00F0001E00F0001E00F0001E00F0001E00F0001E00F0001E00F0001E00F0001E00F0001C00F
0001C00F0003C00F0003800F0007800F0007000F000E000F001C000F007000FFFFC0001B1C7E9B
20>I<FFFFF80F00780F00180F00080F00080F000C0F00040F00040F02040F02000F02000F0200
0F06000FFE000F06000F02000F02000F02000F02000F00000F00000F00000F00000F00000F0000
0F00000F8000FFF800161C7E9B1B>70 D<FFF3FFC00F003C000F003C000F003C000F003C000F00
3C000F003C000F003C000F003C000F003C000F003C000F003C000F003C000FFFFC000F003C000F
003C000F003C000F003C000F003C000F003C000F003C000F003C000F003C000F003C000F003C00
0F003C000F003C00FFF3FFC01A1C7E9B1F>72 D<FFF00F000F000F000F000F000F000F000F000F
000F000F000F000F000F000F000F000F000F000F000F000F000F000F000F000F000F00FFF00C1C
7F9B0F>I<FF8000FF800F8000F8000F8000F8000BC00178000BC00178000BC001780009E00278
0009E002780008F004780008F004780008F0047800087808780008780878000878087800083C10
7800083C107800083C107800081E207800081E207800081E207800080F407800080F4078000807
8078000807807800080780780008030078001C03007800FF8307FF80211C7E9B26>77
D<FF007FC00F800E000F8004000BC0040009E0040009E0040008F0040008F8040008780400083C
0400083C0400081E0400080F0400080F0400080784000807C4000803C4000801E4000801E40008
00F40008007C0008007C0008003C0008003C0008001C0008000C001C000C00FF8004001A1C7E9B
1F>I<FFFF800F00E00F00780F003C0F001C0F001E0F001E0F001E0F001E0F001E0F001C0F003C
0F00780F00E00FFF800F00000F00000F00000F00000F00000F00000F00000F00000F00000F0000
0F00000F0000FFF000171C7E9B1C>80 D<07E0801C1980300580700380600180E00180E00080E0
0080E00080F00000F800007C00007FC0003FF8001FFE0007FF0000FF80000F800007C00003C000
01C08001C08001C08001C0C00180C00180E00300D00200CC0C0083F800121E7E9C17>83
D<7FFFFFC0700F01C0600F00C0400F0040400F0040C00F0020800F0020800F0020800F0020000F
0000000F0000000F0000000F0000000F0000000F0000000F0000000F0000000F0000000F000000
0F0000000F0000000F0000000F0000000F0000000F0000000F0000001F800003FFFC001B1C7F9B
1E>I<FFF07FC00F000E000F0004000F0004000F0004000F0004000F0004000F0004000F000400
0F0004000F0004000F0004000F0004000F0004000F0004000F0004000F0004000F0004000F0004
000F0004000F0004000F0004000700080007800800038010000180100000C020000070C000001F
00001A1D7E9B1F>I<FFE00FF01F0003C00F0001800F0001000F800300078002000780020003C0
040003C0040003C0040001E0080001E0080001F0080000F0100000F0100000F830000078200000
782000003C4000003C4000003C4000001E8000001E8000001F8000000F0000000F000000060000
00060000000600001C1D7F9B1F>I<FFE0FFE0FF1F001F003C1E001E00180F001F00100F001F00
100F001F001007801F00200780278020078027802003C027804003C043C04003C043C04003E043
C04001E081E08001E081E08001E081E08000F100F10000F100F10000F100F100007900FA00007A
007A00007A007A00003E007C00003C003C00003C003C00003C003C000018001800001800180000
18001800281D7F9B2B>I<FEFEC0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0
C0C0C0C0C0C0C0C0C0C0C0FEFE07297C9E0C>91 D<08081010202040404040808080808080B0B0
F8F8787830300D0C7A9C15>I<FEFE060606060606060606060606060606060606060606060606
06060606060606060606060606FEFE0729809E0C>I<1FC000307000783800781C00301C00001C
00001C0001FC000F1C00381C00701C00601C00E01C40E01C40E01C40603C40304E801F87001212
7E9115>97 D<FC00001C00001C00001C00001C00001C00001C00001C00001C00001C00001C0000
1C7C001D86001E03001C01801C01C01C00C01C00E01C00E01C00E01C00E01C00E01C00E01C00C0
1C01C01C01801E030019060010F800131D7F9C17>I<07E00C301878307870306000E000E000E0
00E000E000E00060007004300418080C3007C00E127E9112>I<003F0000070000070000070000
070000070000070000070000070000070000070003E7000C1700180F00300700700700600700E0
0700E00700E00700E00700E00700E00700600700700700300700180F000C370007C7E0131D7E9C
17>I<03E00C301818300C700E6006E006FFFEE000E000E000E00060007002300218040C1803E0
0F127F9112>I<00F8018C071E061E0E0C0E000E000E000E000E000E00FFE00E000E000E000E00
0E000E000E000E000E000E000E000E000E000E000E000E007FE00F1D809C0D>I<00038003C4C0
0C38C01C3880181800381C00381C00381C00381C001818001C38000C300013C000100000300000
1800001FF8001FFF001FFF803003806001C0C000C0C000C0C000C06001803003001C0E0007F800
121C7F9215>I<FC00001C00001C00001C00001C00001C00001C00001C00001C00001C00001C00
001C7C001C87001D03001E03801C03801C03801C03801C03801C03801C03801C03801C03801C03
801C03801C03801C03801C0380FF9FF0141D7F9C17>I<18003C003C0018000000000000000000
000000000000FC001C001C001C001C001C001C001C001C001C001C001C001C001C001C001C001C
00FF80091D7F9C0C>I<FC00001C00001C00001C00001C00001C00001C00001C00001C00001C00
001C00001C3FC01C0F001C0C001C08001C10001C20001C40001CE0001DE0001E70001C78001C38
001C3C001C1C001C0E001C0F001C0F80FF9FE0131D7F9C16>107 D<FC001C001C001C001C001C
001C001C001C001C001C001C001C001C001C001C001C001C001C001C001C001C001C001C001C00
1C001C001C00FF80091D7F9C0C>I<FC7E07E0001C838838001D019018001E01E01C001C01C01C
001C01C01C001C01C01C001C01C01C001C01C01C001C01C01C001C01C01C001C01C01C001C01C0
1C001C01C01C001C01C01C001C01C01C001C01C01C00FF8FF8FF8021127F9124>I<FC7C001C87
001D03001E03801C03801C03801C03801C03801C03801C03801C03801C03801C03801C03801C03
801C03801C0380FF9FF014127F9117>I<03F0000E1C00180600300300700380600180E001C0E0
01C0E001C0E001C0E001C0E001C06001807003803003001806000E1C0003F00012127F9115>I<
FC7C001D86001E03001C01801C01C01C00C01C00E01C00E01C00E01C00E01C00E01C00E01C01C0
1C01C01C01801E03001D06001CF8001C00001C00001C00001C00001C00001C00001C0000FF8000
131A7F9117>I<03C1000C3300180B00300F00700700700700E00700E00700E00700E00700E007
00E00700600700700700300F00180F000C370007C7000007000007000007000007000007000007
00000700003FE0131A7E9116>I<FCE01D301E781E781C301C001C001C001C001C001C001C001C
001C001C001C001C00FFC00D127F9110>I<1F9030704030C010C010E010F8007F803FE00FF000
F880388018C018C018E010D0608FC00D127F9110>I<04000400040004000C000C001C003C00FF
E01C001C001C001C001C001C001C001C001C001C101C101C101C101C100C100E2003C00C1A7F99
10>I<FC1F801C03801C03801C03801C03801C03801C03801C03801C03801C03801C03801C0380
1C03801C03801C07800C07800E1B8003E3F014127F9117>I<FF07E03C03801C01001C01000E02
000E020007040007040007040003880003880003D80001D00001D00000E00000E00000E0000040
0013127F9116>I<FF3FCFE03C0F03801C0701801C0701001C0B01000E0B82000E0B82000E1182
000711C4000711C4000720C40003A0E80003A0E80003C0680001C0700001C07000018030000080
20001B127F911E>I<7F8FF00F03800F030007020003840001C80001D80000F000007000007800
00F800009C00010E00020E000607000403801E07C0FF0FF81512809116>I<FF07E03C03801C01
001C01000E02000E020007040007040007040003880003880003D80001D00001D00000E00000E0
0000E000004000004000008000008000F08000F10000F300006600003C0000131A7F9116>I<7F
FC70386038407040F040E041C003C0038007000F040E041C043C0C380870087038FFF80E127F91
12>I E /Fe 14 118 df<000FF83F00007FFDFFC001F81FE3E003E03F87E007C03F87E00F803F
07E00F803F03C00F801F00000F801F00000F801F00000F801F00000F801F00000F801F0000FFFF
FFFC00FFFFFFFC000F801F00000F801F00000F801F00000F801F00000F801F00000F801F00000F
801F00000F801F00000F801F00000F801F00000F801F00000F801F00000F801F00000F801F0000
0F801F00000F801F00000F801F00000F801F00007FF0FFF0007FF0FFF00023237FA221>11
D<387CFEFEFE7C3807077C8610>46 D<00180000780001F800FFF800FFF80001F80001F80001F8
0001F80001F80001F80001F80001F80001F80001F80001F80001F80001F80001F80001F80001F8
0001F80001F80001F80001F80001F80001F80001F80001F80001F8007FFFE07FFFE013207C9F1C
>49 D<FFFFFF8000FFFFFFE00007F001F80007F000FC0007F0007E0007F0007E0007F0007F0007
F0007F0007F0007F0007F0007F0007F0007F0007F0007E0007F000FE0007F000FC0007F003F800
07FFFFF00007FFFFF00007F001FC0007F0007E0007F0003F0007F0003F8007F0001F8007F0001F
C007F0001FC007F0001FC007F0001FC007F0001FC007F0001FC007F0003F8007F0003F8007F000
7F0007F001FE00FFFFFFF800FFFFFFC00022227EA128>66 D<00FF8007FFE00F83F01F03F03E03
F07E03F07C01E07C0000FC0000FC0000FC0000FC0000FC0000FC00007C00007E00007E00003E00
301F00600FC0E007FF8000FE0014167E9519>99 D<0001FE000001FE0000003E0000003E000000
3E0000003E0000003E0000003E0000003E0000003E0000003E0000003E0000003E0001FC3E0007
FFBE000F81FE001F007E003E003E007E003E007C003E00FC003E00FC003E00FC003E00FC003E00
FC003E00FC003E00FC003E00FC003E007C003E007C003E003E007E001E00FE000F83BE0007FF3F
C001FC3FC01A237EA21F>I<00FE0007FF800F87C01E01E03E01F07C00F07C00F8FC00F8FC00F8
FFFFF8FFFFF8FC0000FC0000FC00007C00007C00007E00003E00181F00300FC07003FFC000FF00
15167E951A>I<1C003E007F007F007F003E001C000000000000000000000000000000FF00FF00
1F001F001F001F001F001F001F001F001F001F001F001F001F001F001F001F001F001F00FFE0FF
E00B247EA310>105 D<00FE0007FFC00F83E01E00F03E00F87C007C7C007C7C007CFC007EFC00
7EFC007EFC007EFC007EFC007EFC007E7C007C7C007C3E00F81F01F00F83E007FFC000FE001716
7E951C>111 D<FF0FE000FF3FF8001FF07C001F803E001F001F001F001F801F001F801F000FC0
1F000FC01F000FC01F000FC01F000FC01F000FC01F000FC01F000FC01F001F801F001F801F803F
001FC03E001FE0FC001F3FF8001F0FC0001F0000001F0000001F0000001F0000001F0000001F00
00001F0000001F000000FFE00000FFE000001A207E951F>I<FE1F00FE3FC01E67E01EC7E01E87
E01E87E01F83C01F00001F00001F00001F00001F00001F00001F00001F00001F00001F00001F00
001F00001F0000FFF000FFF00013167E9517>114 D<0FF3003FFF00781F00600700E00300E003
00F00300FC00007FE0007FF8003FFE000FFF0001FF00000F80C00780C00380E00380E00380F007
00FC0E00EFFC00C7F00011167E9516>I<01800001800001800001800003800003800007800007
80000F80003F8000FFFF00FFFF000F80000F80000F80000F80000F80000F80000F80000F80000F
80000F80000F80000F81800F81800F81800F81800F81800F830007C30003FE0000F80011207F9F
16>I<FF01FE00FF01FE001F003E001F003E001F003E001F003E001F003E001F003E001F003E00
1F003E001F003E001F003E001F003E001F003E001F003E001F003E001F003E001F007E001F00FE
000F81BE0007FF3FC001FC3FC01A167E951F>I E end
%%EndProlog
%%BeginSetup
%%Feature: *Resolution 300
TeXDict begin @letter /letter where {pop letter} if
%%EndSetup
%%Page: 1 1
bop 210 105 a Fe(1.)18 b(Bu\013er)g(descriptors)210 216 y Fd(The)h
(message-passing)f(routines)h(describ)q(ed)h(ab)q(o)o(v)o(e)e(are)h
(su\016cien)o(t)g(to)f(write)h(relativ)o(ely)e(e\016cien)o(t)i(pro-)210
286 y(grams.)25 b(In)17 b(man)o(y)e(applications,)h(ho)o(w)o(ev)o(er,)h(the)h
(data)e(to)h(b)q(e)g(sen)o(t)h(or)e(receiv)o(ed)i(is)f(not)g(in)f(consequtiv)
o(e)210 355 y(lo)q(cations)11 b(in)g(memory)m(.)k(While)c(an)o(y)g(data,)g
(ho)o(w)o(ev)o(er)h(laid)f(out)h(in)f(memory)m(,)e(ma)o(y)g(b)q(e)k(sen)o(t)f
(or)g(receiv)o(ed)h(this)210 425 y(w)o(a)o(y)m(,)h(there)j(are)e(a)g(n)o(um)o
(b)q(er)g(of)f(sp)q(ecial)i(cases)h(for)d(whic)o(h)i(sp)q(ecial)f(arrangemen)
o(ts)g(ma)o(y)e(b)q(e)j(made)e(b)o(y)h(the)210 495 y(op)q(erating)e(system)g
(or)f(the)i(hardw)o(are.)k(These)c(include)f(constan)o(t,)g(non-unit)g
(strides)h(\(useful)f(for)g(sending)210 565 y(a)k(ro)o(w)g(from)e(a)i(F)m
(ortran)g(arra)o(y\),)g(scatter/gathers)i(\(useful)f(for)e(sparse)j(v)o
(ectors\),)g(and)d(non-con)o(tiguous)210 634 y(blo)q(c)o(ks)j(\(useful)g(for)
g(sending)g(structures)j(with)c(p)q(oin)o(ters\).)34 b(These)20
b(op)q(erations)g(ma)o(y)d(b)q(e)i(pro)o(vided)g(b)o(y)210
704 y(the)c(lo)o(w-lev)o(el)e(hardw)o(are)i(and)g(soft)o(w)o(are)g(b)q
(ecause)h(they)f(are)g(common)d(and)i(b)q(ecause)j(imp)q(ortan)o(t)c(p)q
(erfor-)210 774 y(mance)d(optimizations)e(can)j(b)q(e)g(made)e(for)h(them,)g
(particularly)g(the)h(elimination)d(of)i(unnecessary)i(memory)210
844 y(motion.)22 b(F)m(or)16 b(Unix)g(programmers,)e(the)j(non-con)o(tiguous)
e(blo)q(c)o(k)h(case)h(is)f(simply)e(the)j(analogue)e(of)g(the)210
913 y(routines)d Fc(readv)e Fd(and)g Fc(writev)p Fd(.)16 b(Sev)o(eral)c
(message-passing)e(implemen)o(tatio)o(ns)f(already)i(pro)o(vide)f(non-unit)
210 983 y(stride)h(v)o(ector)h(op)q(erations,)f(and)f(researc)o(h)j(w)o(ork)d
(with)g(scatter/gather)j(op)q(erations)d(has)h(sho)o(wn)g(that)g(these)210
1053 y(are)j(also)g(of)f(great)h(p)q(oten)o(tial)f(b)q(ene\014t.)272
1123 y(MPI)e(pro)o(vides)g(access)i(to)d(all)g(of)g(these)i(in)e(an)o(y)g
(com)o(bination)e(b)o(y)j(w)o(a)o(y)f(of)g(a)g(general)h(data-arrangemen)o(t)
210 1192 y(descriptor.)210 1319 y Fb(1.1.)16 b(Organization)210
1415 y Fd(A)i(data-arrangemen)o(t)e(is)i(de\014ned)h(in)e(2)g(steps:)27
b(\(1\))18 b(create)h(a)f(data-arrangemen)o(t)e(descriptor)j(and)f(\(2\))210
1485 y(add)13 b(descriptions)i(of)e(the)h(data)f(arrangemen)o(t)g(to)g(it.)k
(A)d(data-arrangemen)o(t)e(descriptor)j(is)e(created)i(with)210
1555 y Fc(MPI)p 279 1555 14 2 v 15 w(NewBD)p Fd(.)e(The)i(routines)g
Fc(MPI)p 741 1555 V 15 w(BDVec)p Fd(,)e Fc(MPI)p 957 1555 V
15 w(BDBlk)p Fd(,)h(and)g Fc(MPI)p 1255 1555 V 15 w(BDIdx)f
Fd(add)i(descriptions)g(for)f(non-unit)210 1624 y(stride)e(v)o(ectors,)h(blo)
q(c)o(ks,)e(and)h(indexed)g(v)o(ectors)g(\(these)i(are)d(describ)q(ed)j(in)d
(more)f(detail)h(on)h(the)g(man)e(pages)210 1694 y(for)17 b(these)i
(routines\).)29 b(A)17 b(send)h(or)f(receiv)o(e)i(op)q(eration)e(then)h(tak)o
(es)g(the)f(data-arrangemen)o(t)g(descriptor)210 1764 y(instead)d(of)f(the)i
(\(bu\013er,size\))g(that)f(the)h(send)g(and)e(receiv)o(e)j(routines)e(use)h
(for)e(con)o(tiguous)h(data.)210 1890 y Fb(1.2.)i(V)l(ectors)210
1987 y Fd(The)d(\\v)o(ector")g(data-arrangemen)o(t)f(allo)o(ws)f(sending)i
(and)g(receiving)g(of)f(non-con)o(tiguous)g(data)g(where)i(the)210
2057 y(elemen)o(ts)g(are)g(separated)h(b)o(y)f(a)f(constan)o(t)i(distance)g
(or)e(stride.)272 2126 y(T)m(o)g(add)h(a)g(v)o(ector)g(to)g(the)h(data)e
(arrangemen)o(t,)g(use)210 2222 y Fc(MPI_BDVec\()20 b(da,)h(buffer,)f
(elmlen,)h(stride,)f(elmcount,)g(datatype)g(\))210 2318 y Fd(The)14
b(parameters)g(are:)210 2415 y Fb(bu\013er)251 b Fd(p)q(oin)o(ter)14
b(to)g(bu\013er)210 2514 y Fb(elmlen)236 b Fd(size)15 b(of)e(eac)o(h)h
(elemen)o(t,)f(in)h(b)o(ytes)210 2614 y Fb(stride)254 b Fd(distance)15
b(b)q(et)o(w)o(een)g(successiv)o(e)h(elemen)o(ts,)d(in)h(b)o(ytes)p
eop
%%Page: 2 2
bop 210 105 a Fb(elmcoun)o(t)182 b Fd(n)o(um)o(b)q(er)13 b(of)h(elemen)o(ts)
210 208 y Fb(datat)o(yp)q(e)190 b Fd(datat)o(yp)q(e)14 b(\(e.g.,)f
Fc(MPI)p 932 208 14 2 v 15 w(INT)p Fd(\))272 311 y(F)m(or)h(example,)e(if)h
(a)h(F)m(ortran)f(arra)o(y)h(is)g(declared)g(as)210 414 y Fc(double)21
b(precision)e(a\(10,20\))210 517 y Fd(and)14 b(the)g(ro)o(w)g
Fc(a\(3,1:20\))e Fd(is)i(to)f(b)q(e)i(sen)o(t,)f(use)210 620
y Fc(bd)21 b(=)h(MPI_BDNew\(1\))210 690 y(MPI_BDVec\()e(bd,)h(a\(3,1\),)f(8,)
i(8*10,20)e(\))210 759 y(MPI_bsend\()g(to,)h(tag,)g(bd,)g(context)f(\))210
862 y Fd(Here)15 b(w)o(e)f(assume)g(that)g(a)f(double)h(precision)g(quan)o
(tit)o(y)f(tak)o(es)i(eigh)o(t)e(b)o(ytes.)210 990 y Fb(1.3.)j(Blo)q(c)o(ks)
210 1087 y Fd(Blo)q(c)o(ks)d(of)f(con)o(tiguous)g(data)g(ma)o(y)f(b)q(e)i
(added)g(to)f(the)h(data)f(arrangemen)o(t)g(with)g Fc(MPI)p
1564 1087 V 15 w(BDBlk)p Fd(.)17 b(The)c(format)210 1156 y(is)210
1259 y Fc(MPI_BDBlk\()20 b(bd,)h(buffer,)f(len,)h(datatype)f(\))272
1362 y Fd(Multiple)12 b(uses)i(of)e Fc(MPI)p 640 1362 V 15
w(BDBlk)g Fd(ma)o(y)e(b)q(e)j(used)h(to)e(send)i(complicated)d(data)h
(structures.)21 b(F)m(or)12 b(example,)210 1432 y(to)i(send)h(the)f
(structure)210 1535 y Fc(struct)21 b({)297 1605 y(int)g(n[3];)297
1674 y(double)g(a[4];)297 1744 y(char)65 b(s;)297 1814 y(})22
b(S;)210 1917 y Fd(w)o(e)14 b(can)g(use)h(the)f(follo)o(wing)e(co)q(de:)210
2020 y Fc(bd)21 b(=)h(MPI_BDNew\()e(3)h(\);)210 2090 y(MPI_BDBlk\()f(bd,)h
(&S.n[0],)f(3)i(*)f(sizeof\(int\),)85 b(MPI_INT)20 b(\);)210
2159 y(MPI_BDBlk\()g(bd,)h(&S.a,)86 b(4)22 b(*)f(sizeof\(double\),)e(MPI_DBL)
h(\);)210 2229 y(MPI_BDBlk\()g(bd,)h(&S.s,)86 b(sizeof\(char\),)150
b(MPI_OTHER)20 b(\);)210 2299 y(MPI_bsend\()g(to,)h(tag,)g(bd,)g(context)f
(\);)210 2402 y Fd(T)m(o)13 b(receiv)o(e)i(the)g(structure,)g(the)g(exact)f
(same)f(co)q(de)i(is)f(used,)g(with)g(the)g Fc(MPI)p 1432 2402
V 15 w(bsend)f Fd(replaced)i(with)210 2505 y Fc(MPI_brecv\()20
b(source,)g(tag,)h(bd,)g(context,)f(recv_handle)g(\);)p eop
%%Page: 3 3
bop 210 105 a Fb(1.4.)16 b(Indexed)210 202 y Fd(Another)e(t)o(yp)q(e)g(of)f
(non-con)o(tiguous)g(comm)o(unicatio)o(n)e(pattern)j(that)f(is)h(common)c(in)
j(applications)g(is)g(\\in-)210 271 y(dexed.")18 b(F)m(or)11
b(example,)f(if)g(elemen)o(ts)h(of)f(one)i(v)o(ector,)g(indexed)g(b)o(y)e
(another,)i(are)g(used.)18 b(These)12 b(are)g(de\014ned)210
341 y(with)i Fc(MPI)p 374 341 14 2 v 15 w(BDIdx)p Fd(.)j(The)d(format)e(is)
210 444 y Fc(MPI_BDIdx\()20 b(bd,)h(buffer,)f(idxarray,)g(numitems,)g
(datatype)g(\))p eop
%%Page: 4 4
bop 210 105 a Fb(NAME)314 175 y(MPI)p 413 175 15 2 v 17 w(NewBD)117
b Fd(Create)15 b(a)f(new)g(bu\013er)h(descriptor)210 245 y
Fb(SYNOPSIS)314 314 y Fd(MPI)p 397 314 13 2 v 15 w(BD)f(*MPI)p
589 314 V 15 w(NewBD\()h(n)o(umitems)c(\))314 384 y(in)o(t)i(n)o(umitems;)210
454 y Fb(INPUT)j(AR)o(GUMENTS)314 524 y Fd(n)o(umitesm)215
b(Maxim)o(um)10 b(n)o(um)o(b)q(er)j(of)h(bu\013er)h(descriptions)g(for)e(the)
i(bu\013er)f(descriptor.)210 593 y Fb(DESCRIPTION)314 663 y(MPI)p
413 663 15 2 v 17 w(NewBD)h Fd(creates)h(a)e(new)g(bu\013er)i(descriptor.)k
(The)15 b(v)n(alue)f(of)f Fc(numitems)g Fd(is)h(the)h(maxim)n(um)314
733 y(n)o(um)o(b)q(er)c(of)g(bu\013er)h(descriptions)h(that)e(can)h(b)q(e)g
(added)g(with)g(the)g(routines)g Fc(MPI)p 1574 733 14 2 v 15
w(BDVec)p Fd(,)e Fc(MPI)p 1787 733 V 16 w(BDBlk)p Fd(,)314
802 y(and)j Fc(MPI)p 463 802 V 16 w(BDIdx)p Fd(.)210 872 y
Fb(RETURN)j(V)-5 b(ALUE)314 942 y(MPI)p 413 942 15 2 v 17 w(NewBD)14
b Fd(returns)i(a)d(p)q(oin)o(ter)h(to)g(a)g(bu\013er)g(descriptor,)h(or)f(n)o
(ull)f(if)g(an)h(error)g(o)q(ccurs.)p eop
%%Page: 5 5
bop 210 105 a Fb(NAME)314 175 y(MPI)p 413 175 15 2 v 17 w(BD)o(V)l(ec)136
b Fd(Add)14 b(a)g(stride)g(v)o(ector)h(to)f(a)f(bu\013er)i(descriptor)210
245 y Fb(SYNOPSIS)314 314 y Fd(in)o(t)e(MPI)p 460 314 13 2
v 15 w(BD)o(V)m(ec\()i(b)q(d,)f(bu\013er,)g(elmlen,)e(stride,)i(elmcoun)o(t,)
e(datat)o(yp)q(e)j(\);)314 384 y(MPI)p 397 384 V 15 w(BD)f(b)q(d;)314
454 y(c)o(har)g(*bu\013er;)314 524 y(in)o(t)f(elmlen,)f(stride,)i(elmcoun)o
(t,)f(datat)o(yp)q(e;)210 593 y Fb(INPUT)j(AR)o(GUMENTS)314
663 y Fd(b)q(d)347 b(Data)13 b(bu\013er)314 733 y(bu\013er)290
b(p)q(oin)o(ter)14 b(to)g(bu\013er)314 802 y(elmlen)275 b(size)15
b(of)e(eac)o(h)h(elemen)o(t,)f(in)h(b)o(ytes)314 872 y(stride)293
b(distance)15 b(b)q(et)o(w)o(een)g(successiv)o(e)h(elemen)o(ts,)d(in)h(b)o
(ytes)314 942 y(elmcoun)o(t)228 b(n)o(um)o(b)q(er)13 b(of)h(elemen)o(ts)314
1012 y(datat)o(yp)q(e)234 b(datat)o(yp)q(e)14 b(\(e.g.,)f Fc(MPI)p
1055 1012 14 2 v 15 w(INT)p Fd(\))210 1081 y Fb(DESCRIPTION)314
1151 y(MPI)p 413 1151 15 2 v 17 w(BD)o(V)l(ec)d Fd(adds)g(a)g(description)h
(of)f(a)g(v)o(ector)h(\(with)f(non-unit-stride\))h(to)f(a)g(previously)g
(created)314 1221 y(bu\013er)15 b(descriptor.)210 1291 y Fb(RETURN)h(V)-5
b(ALUE)314 1360 y(MPI)p 413 1360 V 17 w(BD)o(V)l(ec)13 b Fd(returns)j(0,)d
(or)h Fa(\000)p Fd(1)g(if)f(an)g(error)i(o)q(ccurs.)p eop
%%Page: 6 6
bop 210 105 a Fb(NAME)314 175 y(MPI)p 413 175 15 2 v 17 w(BDBlk)137
b Fd(Add)14 b(a)g(con)o(tiguous)f(blo)q(c)o(k)h(to)g(a)f(bu\013er)i
(descriptor)210 245 y Fb(SYNOPSIS)314 314 y Fd(in)o(t)e(MPI)p
460 314 13 2 v 15 w(BDBlk\()h(b)q(d,)g(bu\013er,)g(len,)g(datat)o(yp)q(e)g
(\))314 384 y(MPI)p 397 384 V 15 w(BD)g(b)q(d;)314 454 y(c)o(har)g
(*bu\013er;)314 524 y(in)o(t)f(len,)h(datat)o(yp)q(e;)210 593
y Fb(INPUT)i(AR)o(GUMENTS)314 663 y Fd(b)q(d)347 b(Data)13
b(bu\013er)314 733 y(bu\013er)290 b(p)q(oin)o(ter)14 b(to)g(bu\013er)314
802 y(len)341 b(n)o(um)o(b)q(er)13 b(of)h(b)o(ytes)314 872
y(datat)o(yp)q(e)234 b(datat)o(yp)q(e)14 b(\(e.g.,)f Fc(MPI)p
1055 872 14 2 v 15 w(INT)p Fd(\))210 942 y Fb(DESCRIPTION)314
1012 y(MPI)p 413 1012 15 2 v 17 w(BDBlk)18 b Fd(adds)h(a)f(description)i(of)e
(a)h(con)o(tiguous)f(blo)q(c)o(k)h(to)f(a)h(previously)g(created)h(bu\013er)
314 1081 y(descriptor.)210 1151 y Fb(RETURN)c(V)-5 b(ALUE)314
1221 y(MPI)p 413 1221 V 17 w(BDBlk)13 b Fd(returns)i(0,)e(or)h
Fa(\000)p Fd(1)g(if)f(an)h(error)h(o)q(ccurs.)p eop
%%Page: 7 7
bop 210 105 a Fb(NAME)314 175 y(MPI)p 413 175 15 2 v 17 w(BDIdx)140
b Fd(Add)14 b(a)g(scatter/gather)h(to)f(a)g(bu\013er)h(descriptor)210
245 y Fb(SYNOPSIS)314 314 y Fd(in)o(t)e(MPI)p 460 314 13 2
v 15 w(BDIdx\()h(b)q(d,)g(bu\013er,)h(idxarra)o(y)m(,)d(n)o(umitems,)f(datat)
o(yp)q(e)j(\))314 384 y(MPI)p 397 384 V 15 w(BD)g(b)q(d;)314
454 y(c)o(har)g(*bu\013er;)314 524 y(in)o(t)f(idxarra)o(y[],)f(n)o(umitems,)f
(datat)o(yp)q(e;)210 593 y Fb(INPUT)16 b(AR)o(GUMENTS)314 663
y Fd(b)q(d)347 b(Data)13 b(bu\013er)314 733 y(bu\013er)290
b(p)q(oin)o(ter)14 b(to)g(bu\013er)314 802 y(idxarra)o(y)242
b(p)q(oin)o(ter)14 b(to)g(index)g(arra)o(y)314 872 y(n)o(umitems)215
b(n)o(um)o(b)q(er)13 b(of)h(elemen)o(ts)314 942 y(datat)o(yp)q(e)234
b(datat)o(yp)q(e)14 b(\(e.g.,)f Fc(MPI)p 1055 942 14 2 v 15
w(INT)p Fd(\))210 1012 y Fb(DESCRIPTION)314 1081 y(MPI)p 413
1081 15 2 v 17 w(BDIdx)d Fd(adds)g(a)h(description)g(of)f(a)g(scatter)i(or)e
(gather)h(blo)q(c)o(k)f(to)h(a)f(previously)g(created)i(bu\013er)314
1151 y(descriptor.)19 b(\(It)14 b(is)g(a)g(gather)g(when)g(used)h(in)e(a)h
(send)h(and)f(a)f(scatter)j(when)e(used)h(in)e(a)h(receiv)o(e.\))210
1221 y Fb(RETURN)i(V)-5 b(ALUE)314 1291 y(MPI)p 413 1291 V
17 w(BDBlk)13 b Fd(returns)i(0,)e(or)h Fa(\000)p Fd(1)g(if)f(an)h(error)h(o)q
(ccurs.)p eop
%%Page: 8 8
bop 210 105 a Fb(NAME)314 175 y(MPI)p 413 175 15 2 v 17 w(F)l(reeBD)120
b Fd(F)m(ree)15 b(a)e(bu\013er)i(descriptor)210 245 y Fb(SYNOPSIS)314
314 y Fd(in)o(t)e(MPI)p 460 314 13 2 v 15 w(F)m(reeBD\()i(b)q(d)f(\))314
384 y(MPI)p 397 384 V 15 w(BD)g(b)q(d;)210 454 y Fb(INPUT)i(AR)o(GUMENTS)314
524 y Fd(b)q(d)347 b(Data)13 b(bu\013er)210 593 y Fb(DESCRIPTION)314
663 y(MPI)p 413 663 15 2 v 17 w(F)l(reeBD)g Fd(frees)i(a)f(bu\013er)g
(descriptor)i(created)f(with)f Fc(MPI)p 1354 663 14 2 v 15
w(NewBD)p Fd(.)210 733 y Fb(RETURN)i(V)-5 b(ALUE)314 802 y(MPI)p
413 802 15 2 v 17 w(NewBD)14 b Fd(returns)i(0,)d(or)h Fa(\000)p
Fd(1)f(if)g(an)h(error)h(o)q(ccurs.)p eop
%%Trailer
end
userdict /end-hook known{end-hook}if
%%EOF
From owner-mpi-comm@CS.UTK.EDU  Tue Mar  2 16:03:25 1993
Received: from CS.UTK.EDU by surfer.EPM.ORNL.GOV (5.61/1.34)
	id AA10713; Tue, 2 Mar 93 16:03:25 -0500
Received: from localhost by CS.UTK.EDU with SMTP (5.61++/2.8s-UTK)
	id AA26723; Tue, 2 Mar 93 16:01:55 -0500
X-Resent-To: mpi-comm@CS.UTK.EDU ; Tue, 2 Mar 1993 16:01:54 EST
Errors-To: owner-mpi-comm@CS.UTK.EDU
Received: from antares.mcs.anl.gov by CS.UTK.EDU with SMTP (5.61++/2.8s-UTK)
	id AA26694; Tue, 2 Mar 93 16:01:49 -0500
Received: from donner.mcs.anl.gov by antares.mcs.anl.gov with SMTP id AA28558
  (5.65c/IDA-1.4.4 for <mpi-comm@cs.utk.edu>); Tue, 2 Mar 1993 15:01:47 -0600
Received: from localhost by donner.mcs.anl.gov (4.1/GCF-5.8)
	id AA00600; Tue, 2 Mar 93 15:01:45 CST
Message-Id: <9303022101.AA00600@donner.mcs.anl.gov>
To: mpi-comm@cs.utk.edu
Subject: Revised Multi-level MPI Suggestion
Date: Tue, 02 Mar 1993 15:01:44 -0600
From: Rusty Lusk <lusk@mcs.anl.gov>


     Before the last meeting we sent out a suggestion on how the potential
complexity of the evolving MPI library could be managed by dividing the
routines into layers.  The idea was to provide a very simple interface at the
highest layer, which we call Level 4, and provide all of the flexibility
necessary at lower levels, which we called 1 and 2.

     Since then the February meeting has taken place, and some of our thinking
has changed.  The basic idea still seems like a good one to us, so here is a
new proposal for multiple levels in MPI.  At the February meeting, Marc Snir's
detailed point-to-point proposal basically covered what we called level 1
(where there are a small number of routines, including "init" routines for
operations) and level 2 (where sets of the level 1 routines are bundled
together for efficiency, but almost all functionality is preserved).  There
also seemed to be general agreement that there was no need to have separate
routines for supporting communication among heterogeneous machines; rather,
contiguous buffers could be specified by (addr,datatype,numitems) instead of
(addr,len).  The concept of buffer-descriptor (details in another message)
would be used to describe noncontiguous buffers and buffers of mixed data
types.

     Therefore it seems unnecessary to have *two* higher levels, since one of
the differences between our level 3 and level 4 was the specification of data
types.  At the same time, it still seems useful to us to have a level of MPI
routines that are simpler than the full set specified in Marc's document.  We
therefore suggest here a level 3 for MPI that imposes a set of restrictions in
the interest of simplicity.  (So, for example, it will not use buffer
descriptors, but restrict users to contiguous buffers of data of the same
type.)  It corresponds roughly to "current practice", but adds thread safety
(no "last message" semantics).  It assumes the existence of only one default
"all" group and one "universal" context, so that these need not be part of the
calls.  It does include nonblocking sends and receives, but simplified
versions of wait, status, and probe.  Users requiring more flexibility can
use the routines of level 2 instead.

Level 3 MPI routines:  (syntax only specified for definiteness)

  numids()				returns number of processes
  myrank()      			returns caller's rank in group "all"

  bsend(dest,tag,buf,datatype,numitems)  blocking send (until buffer is empty)

  brecv(from,tag,buf,datatype,maxitems,  blocking receive, with separate 
        actual_from,actual_tag,		 output arguments to handle wild-card
        actual_numitems)		 input arguments

Note that lots of programs have been written with just these four calls.

  handle = nsend(dest,tag,buf,datatype,numitems)  non-blocking send

  handle = nrecv(from,tag,buf,datatype,maxitems,  non-blocking receive
        actual_from,actual_tag,		output arguments to handle wild-card
        actual_numitems)		input arguments

  status(handle)			check status of non-blocking operation
  wait(handle)				wait for a non-blocking operation

  probe(from,tag,actual_from,actual_tag,actual_length)  
 					look in queue for matching message,
					get length so can allocate buffer


This is a larger set than the "four-function" interface we proposed as level 4
earlier, but not much, and has the advantage that one can write correct
programs even on machines with no buffering.  It corresponds roughly to
current practice in that most existing programs can be easily converted to
this level.  It gains simplicity and ease of use by not offering access to
MPI's advanced features like noncontiguous buffers of various and mixed types,
explicit handle management, high-performance protocols, and elaborate status
and wait calls.  It has no explicit mention of groups or contexts.

The collective operations seem to be getting complicated too, and would
benefit from a restricted, simple level.  One way to do this would be to
add a (blocking) barrier and collective operations in their simplest forms,
without explicit mention of group-id's.

These Level 3 operations add nothing to MPI that cannot be done at lower
levels.  However, it seems to us that adopting these simplified versions into
the standard will make it easier for many people to use and hence pave the way
for its acceptance.

Any comments?

Bill Gropp & Rusty Lusk
From owner-mpi-comm@CS.UTK.EDU  Tue Mar  2 16:17:36 1993
Received: from CS.UTK.EDU by surfer.EPM.ORNL.GOV (5.61/1.34)
	id AA11504; Tue, 2 Mar 93 16:17:36 -0500
Received: from localhost by CS.UTK.EDU with SMTP (5.61++/2.8s-UTK)
	id AA27414; Tue, 2 Mar 93 16:16:32 -0500
X-Resent-To: mpi-comm@CS.UTK.EDU ; Tue, 2 Mar 1993 16:16:31 EST
Errors-To: owner-mpi-comm@CS.UTK.EDU
Received: from antares.mcs.anl.gov by CS.UTK.EDU with SMTP (5.61++/2.8s-UTK)
	id AA27402; Tue, 2 Mar 93 16:16:25 -0500
Received: from donner.mcs.anl.gov by antares.mcs.anl.gov with SMTP id AA29060
  (5.65c/IDA-1.4.4 for <mpi-comm@cs.utk.edu>); Tue, 2 Mar 1993 15:16:23 -0600
Received: by donner.mcs.anl.gov (4.1/GCF-5.8)
	id AA00668; Tue, 2 Mar 93 15:16:21 CST
Message-Id: <9303022116.AA00668@donner.mcs.anl.gov>
To: mpi-comm@cs.utk.edu
Subject: Task identifiers
Date: Tue, 02 Mar 93 15:16:20 CST
From: Rusty Lusk <lusk@mcs.anl.gov>

One issue that has been postponed several times is that of what
"process id's" will look like and what they will mean.  We would like
to offer a suggestion.  In this short note we discuss some of the
issues and make a concrete proposal.

Since the word "process" is so overloaded, we use the word "task" here
(possibly only a marginal improvement).

We define a task as a program unit that receives a message.  For most
systems, this is a single process.  In a multi-threaded environment,
this may be a process or a thread.  To allow a process to decide
whether to use threads to handle some operations, we believe that a
threads within a process should have the same task id; different
threads can be identifed by different tags, groups, or contexts.  For
example, an obvious way to provide a nonblocking user-defined
operation is to execute that operation in a separate thread.  This
should not require a separate task id.

The most important issue is whether the number of tasks is fixed or
not.  If the number is fixed, a sequential numbering of the tasks is
possible and simple.  However, the trend seems to be toward allowing
for the dynamic modificaiton of the number of tasks, and this is
impossible if a sequential numbering is used.  To avoid restricting
MPI to a fixed collection of tasks, we advocate using an opaque task
id.

This raises the issue of how the task ids of other processes are
determined.  We suggest that the rank of the task in a specified group
be used as a cannonical representation.  This rank is required to be
in the range 0 to (size of group)-1.  The usual arithmetic operations
can be performed on the rank.  For example, you can define your right
neighbor in a ring as ((myrank + 1) mod p), where p is the number of
tasks in the ring.

Proposal

In general, task ids should be an opaque type.  A routine gets its own
task id with MPI_MyTid.  To get the task ids of other tasks, an
application may use MPI_TidFromRank(group, rank).  A routine gets its
own rank with MPI_MyRank(group).  It is the task id that is used as a
source or destination in the point-to-point message-passing routines.
In Fortran it might as well be an integer.

Thus the new MPI routines being proposed are:

   MPI_MyTid()                          Get caller's task id
   MPI_MyRank(group)                    Get caller's rank in group
   MPI_TidFromRank(group,rank)          Get task id of a task from its
                                          rank in a group
   MPI_RankFromTid(tid,group)           Get rank in a group from a
                                          task id
       
An exception is made for the level 3 routines described in the recent
earlier message; these only have one group and we propose that task id
and rank in the "all" group be the same for them.  This is current
common practice.

Discussion

Note that since a task id is an opaque type, it cannot be sent to
another task and used as a task id on that other task.  Only the rank
is meaningful across tasks.

Making the task id an opaque type allows an implementation to optimize
the task ids.  For example, an implementation may choose to make the
task ids the physical node ids used by the hardware.  In addition, it
encourages users to use library routines to determine neighbors rather
than arithmetic on the task id (note that they can still get a
neighbor by adding one to their rank).  For example, the "best"
neighbor in a virtual ring depends on details of the underlying
hardware and software; calling a routine such as MPI_NbrInRing to get
the neighbor is a more portable way of getting a good neighbor than
MPI_RankToTask(MPI_MyRank(group)+1, group ).


Bill Gropp and Rusty Lusk
From owner-mpi-comm@CS.UTK.EDU  Tue Mar  2 16:33:15 1993
Received: from CS.UTK.EDU by surfer.EPM.ORNL.GOV (5.61/1.34)
	id AA12253; Tue, 2 Mar 93 16:33:15 -0500
Received: from localhost by CS.UTK.EDU with SMTP (5.61++/2.8s-UTK)
	id AA28299; Tue, 2 Mar 93 16:32:14 -0500
X-Resent-To: mpi-comm@CS.UTK.EDU ; Tue, 2 Mar 1993 16:32:13 EST
Errors-To: owner-mpi-comm@CS.UTK.EDU
Received: from antares.mcs.anl.gov by CS.UTK.EDU with SMTP (5.61++/2.8s-UTK)
	id AA28287; Tue, 2 Mar 93 16:32:04 -0500
Received: from donner.mcs.anl.gov by antares.mcs.anl.gov with SMTP id AA29509
  (5.65c/IDA-1.4.4 for <mpi-comm@cs.utk.edu>); Tue, 2 Mar 1993 15:32:01 -0600
Received: by donner.mcs.anl.gov (4.1/GCF-5.8)
	id AA00744; Tue, 2 Mar 93 15:31:59 CST
Message-Id: <9303022131.AA00744@donner.mcs.anl.gov>
To: mpi-comm@cs.utk.edu
Subject: MPI Job startup
Date: Tue, 02 Mar 93 15:31:58 CST
From: Rusty Lusk <lusk@mcs.anl.gov>


We feel that the MPI standard should provide enough information to
specify an entire, source-code portable program.  To do this, it is
necessary to specify how parallel programs start and end.  This is the
analogue of PROGRAM MAIN ... END in Fortran and main(argc,argv)
{...exit(rc); }.  This proposal does not deal with methods for
spawning tasks during the execution of an MPI program, or for handling
explicitly MIMD models (beyond the usual way of starting a Turing
machine on all nodes and sending the appropriate tape).  This is not
meant to suggest that MPI not have such interfaces, just that we are
only proposing an SPMD model at this time.

Issues

It should be possible to write a program that is source-language
portable to any system, particularly if it requires only a simple
interface to the operating system.  An example is an environment that
starts up a program with a fixed number of processors.  Without
something like this, it is not possible to write a portable MPI
program.

However, no standard should restrict programs to a particular
interface.  For example, some applications may want to dynamically
added and remove tasks during the execution of an application.  We
leave it to others on the committee to propse a mechanism for this
case.

Below, we discuss three different approaches; we note that all of
these have been tried in some existing system or systems.

The seemingly simplest approach is to use an explicit initialization
routine, MPI_Init.  There are several problems with this approach.
The major one is that the parallel part of the program is the code
that "follows" the MPI_Init.  This is potentially error prone;
further, it can be awkward to implement on some systems.  This is
the way p4 does it.

Another approach is to insist that the entire program be run in
parallel; a simple way to do this is to replace the "main" program
with a routine.  In C, this could be MPI_Main( argc, argv ).  The
linking step then provides a "main" that handles all appropriate
startup (including the processing of command line arguments where
appropriate for information on the number of tasks etc.) and then
calls the user's MPI_main routine.

Yet another approach is to provide a routine that runs a user-defined
routine in parallel.  For example, MPI_Call( argc, argv, routine ) can
be used to run routine( argc, argv ) in parallel.  A generalization of
this would allow the running of a particular routine on a defined
group: MPI_Call( groupid, argc, argv, routine ).  This is more
flexible than the MPI_Main approach but retains the simplicity of
running a well-defined program unit (the routine) in parallel.

All three of these approaches are currently in use.

These are not the most general methods.  For example, these provide no
mechanism for dynamically creating (remote spawn) tasks on other
processors.  Also, there is no direct support for MIMD programming.
Finally, there is no support for adding an already-running process to
a group of running processes.

Proposal

We propose the MPI_Call form.  A slight variation would allow the use
of a general argument descriptor instead of argc/argv.  This would
allow the more convenient passing arguments to the routine.

We have used this mechanism (in Bill's Chameleon system) to write
programs for nX, the CM-5, the nCube, and networks of workstations
using both p4 and PVM, and it has worked well for us.  The point is
that all source code is portable.  The only thing that is different
is the shell command by which you start your program.  

Note that in this case, program termination is handled by having (a)
the routine exit and (b) the calling routine exit.  Thus an MPI
program would look something like this:

   main(argc,argv)
   int argc; char **argv;
   {
       ret_code = MPI_Call( argc, argv, worker );
       exit( irc );
   }

   int worker( argc, argv )
   int argc; char **argv;
   {

       ...

       if (error condition) return 1;
       ...
       return 0;
   }

In Fortran it would like something like:

      program main
      external worker

      irc = MPI_call(worker)

      stop
      end

      integer function worker

      ...

      worker = 0
      return
      end

It may be useful to have a more drastic exit.  We suggest
MPI_exitall(code); the code here is an exit code that may be ignored
by the invoking environment (but UNIX-like environments should treat
it like exit(code)).

In the case of heterogeneous environments, it is necessary to specify the set
of workstations to be used.  Our only requirement is that this be done, in the
C/POSIX case, through command-line arguments (thus maintaining source-code
portability).  We could specify an extensible, common format for specifying
the machines, executables, and resource limits, but, to avoid additional
debate, we suggest only that the command line option -mpi be reserved
for future extensions.

Bill & Rusty
From owner-mpi-comm@CS.UTK.EDU  Tue Mar  2 18:09:29 1993
Received: from CS.UTK.EDU by surfer.EPM.ORNL.GOV (5.61/1.34)
	id AA15496; Tue, 2 Mar 93 18:09:29 -0500
Received: from localhost by CS.UTK.EDU with SMTP (5.61++/2.8s-UTK)
	id AA02859; Tue, 2 Mar 93 18:07:43 -0500
X-Resent-To: mpi-comm@CS.UTK.EDU ; Tue, 2 Mar 1993 18:07:41 EST
Errors-To: owner-mpi-comm@CS.UTK.EDU
Received: from fslg8.fsl.noaa.gov by CS.UTK.EDU with SMTP (5.61++/2.8s-UTK)
	id AA02851; Tue, 2 Mar 93 18:07:38 -0500
Received: by fslg8.fsl.noaa.gov (5.57/Ultrix3.0-C)
	id AA08222; Tue, 2 Mar 93 23:07:34 GMT
Received: by macaw.fsl.noaa.gov (4.1/SMI-4.1)
	id AA17367; Tue, 2 Mar 93 16:06:22 MST
Date: Tue, 2 Mar 93 16:06:22 MST
From: hender@macaw.fsl.noaa.gov (Tom Henderson)
Message-Id: <9303022306.AA17367@macaw.fsl.noaa.gov>
To: mpi-comm@cs.utk.edu
Subject: Re: Revised Multi-level MPI Suggestion


         A Suggestion for probe() in the New Rusty and Bill Scheme


I'm a bit confused about probe() in Rusty and Bill's latest proposal:  

...
>   probe(from,tag,actual_from,actual_tag,actual_length)  
>  					look in queue for matching message,
> 					get length so can allocate buffer
> 
...
> Any comments?
> 
> Bill Gropp & Rusty Lusk
> 

I believe that there was general agreement that probe() should provide the 
caller with a "handle" to avoid "hidden state" (the thread-safety issue).  
(The probe() in the current point-to-point proposal does this.)  Should the 
probe() proposed above return "handle"?:  

  handle = probe(from,tag,actual_from,actual_tag,actual_length)  

If so, we need to add a "recv()" that has "handle" as an argument at Level 3 
(basically precv() as I understand it).  (This "handle" was also occaisionally 
referred to as "lock" in the last meeting.)  Also, the current proposals all 
require that a receiving process know the data type(s) in an incoming message 
before that message is received.  This means that datatype can be included in 
probe() and "numitems" can be used instead of "length".  Syntax is then 
consistent with other routines in the new "Level 3".  

Here's a counter-proposal (in the spirit of Rusty and Bill's syntax):  

 handle = probe(from, tag, datatype, actual_from, actual_tag, actual_numitems) 

 precv(handle, buf)

The use of "handle" guarantees that input parameters to probe() do not need to 
be repeated in precv().  "maxitems" (as in brecv()) doesn't seem to be 
necessary since the caller will know how much memory is required before buf is 
specified.  

It might be a good idea to add "unlock(handle)" to Level 3.  (OR remove 
probe() from Level 3.)  

Of course my preference is to dump the whole mess, including buffer 
descriptor, into an opaque data structure (as in Leslie's and my "message 
capsule" proposal on Jan 15 in mpi-pt2pt  :-).  


Tom Henderson
NOAA Forecast Systems Lab
hender@fsl.noaa.gov
From owner-mpi-comm@CS.UTK.EDU  Wed Mar  3 16:35:49 1993
Received: from CS.UTK.EDU by surfer.EPM.ORNL.GOV (5.61/1.34)
	id AA11369; Wed, 3 Mar 93 16:35:49 -0500
Received: from localhost by CS.UTK.EDU with SMTP (5.61++/2.8s-UTK)
	id AA07168; Wed, 3 Mar 93 16:34:27 -0500
X-Resent-To: mpi-comm@CS.UTK.EDU ; Wed, 3 Mar 1993 16:34:25 EST
Errors-To: owner-mpi-comm@CS.UTK.EDU
Received: from daedalus.epcc.ed.ac.uk by CS.UTK.EDU with SMTP (5.61++/2.8s-UTK)
	id AA07160; Wed, 3 Mar 93 16:34:22 -0500
Date: Wed, 3 Mar 93 21:34:17 GMT
Message-Id: <6940.9303032134@subnode.epcc.ed.ac.uk>
From: L J Clarke <lyndon@epcc.ed.ac.uk>
Subject: Re: Task identifiers
To: Rusty Lusk <lusk@mcs.anl.gov>
In-Reply-To: Rusty Lusk's message of Tue, 02 Mar 93 15:16:20 CST
Reply-To: lyndon@epcc.ed.ac.uk
Cc: mpi-comm@cs.utk.edu

Question: How do Rusty and Bill write so many proposals?
Answer: Surely they never sleep:-)
(Oh well, perhaps I won't get featured on the jokes newsgroups after
all.)

But seriously, fellow committee members, I recall that the contexts
subcommittee is about to prepare one or more proposals which will have
considerable bearing on this subject, so perhaps we should again defer
"task identifiers" until this has happened.

One crucial point raised (again), which I do not see evidence of having
really been addressed, is whether MPI will provide a reasonable
interface for a static process model, or for a dynamic process model. 
We have to decide what we want to do here, and I think we ought to
clearly state this as potential future users whom I have spoken to are
asking just this kind of question. 

What are the arguments for and against a dynamic process model?

To get started:

a) The MPP programming world has a whole lot more experience with the
static model, and as such it is better aligned with common practice. 

b) We anticipate people moving toward use of a dynamic process model. 

c) There are a whole load of issues in the dynamic model which
complicate implementations and imply lesser efficiency.

d) In order for programs to be portable in the MPI + dynamic process
model, the interface to dynamic process control has to be uniform as
well as the interface to message passing. Would MPI really consider
addressing the question of a uniform interface to process control at
this point? At least in the static case the process creation is not
part of the program and we can "ignore" it.

         /--------------------------------------------------------\
    e||) | Lyndon J Clarke    Edinburgh Parallel Computing Centre | e||) 
    c||c | Tel: 031 650 5021  Email: lyndon@epcc.edinburgh.ac.uk  | c||c 
         \--------------------------------------------------------/


From owner-mpi-comm@CS.UTK.EDU  Wed Mar  3 17:06:06 1993
Received: from CS.UTK.EDU by surfer.EPM.ORNL.GOV (5.61/1.34)
	id AA12272; Wed, 3 Mar 93 17:06:06 -0500
Received: from localhost by CS.UTK.EDU with SMTP (5.61++/2.8s-UTK)
	id AA08663; Wed, 3 Mar 93 17:04:22 -0500
X-Resent-To: mpi-comm@CS.UTK.EDU ; Wed, 3 Mar 1993 17:04:20 EST
Errors-To: owner-mpi-comm@CS.UTK.EDU
Received: from Aurora.CS.MsState.Edu by CS.UTK.EDU with SMTP (5.61++/2.8s-UTK)
	id AA08641; Wed, 3 Mar 93 17:04:18 -0500
Received:  by Aurora.CS.MsState.Edu (4.1/6.0s-FWP);
	   id AA05267; Wed, 3 Mar 93 16:01:25 CST
Date: Wed, 3 Mar 93 16:01:25 CST
From: Tony Skjellum <tony@Aurora.CS.MsState.Edu>
Message-Id: <9303032201.AA05267@Aurora.CS.MsState.Edu>
To: lusk@mcs.anl.gov, lyndon@epcc.ed.ac.uk
Subject: Re: Task identifiers
Cc: mpi-comm@cs.utk.edu


I think that we agreed to defer dynamic issues to a future MPI standard
level, but I do agree that this is never guaranteed to happen, as Rusty
has said.  The lack of control for processes, and the lack of dynamic
group syntax/semantics worries me.  They will almost certainly appear as
non-portable extensions.

Perhaps the original N-month limit was too short to permit the best
possible standard.

- Tony
From owner-mpi-comm@CS.UTK.EDU  Thu Mar  4 08:24:07 1993
Received: from CS.UTK.EDU by surfer.EPM.ORNL.GOV (5.61/1.34)
	id AA27412; Thu, 4 Mar 93 08:24:07 -0500
Received: from localhost by CS.UTK.EDU with SMTP (5.61++/2.8s-UTK)
	id AA22467; Thu, 4 Mar 93 08:22:22 -0500
X-Resent-To: mpi-comm@CS.UTK.EDU ; Thu, 4 Mar 1993 08:22:15 EST
Errors-To: owner-mpi-comm@CS.UTK.EDU
Received: from gmdzi.gmd.de by CS.UTK.EDU with SMTP (5.61++/2.8s-UTK)
	id AA22379; Thu, 4 Mar 93 08:22:07 -0500
Received: from f1neuman.gmd.de (f1neuman) by gmdzi.gmd.de with SMTP id AA02215
  (5.65c/IDA-1.4.4 for <mpi-comm@cs.utk.edu>); Thu, 4 Mar 1993 14:20:32 +0100
Received: by f1neuman.gmd.de id AA16175; Thu, 4 Mar 1993 14:21:56 GMT
Date: Thu, 4 Mar 1993 14:21:56 GMT
From: Rolf.Hempel@gmd.de
Message-Id: <9303041421.AA16175@f1neuman.gmd.de>
To: mpi-comm@cs.utk.edu
Subject: Process ids
Cc: gmap10@f1neuman.gmd.de


recently there has been a discussion on process identifiers, groups,
and dynamic process creation. I would like to add a few comments.

1. It is not so much the dynamic creation of new processes which calls
   for something like opaque process ids, but rather the dynamic
   removal of processes. In the former case process ids can be added
   at the end (n, n+1, ...) without changing the 0,..,n-1 numbering
   of the existing processes. If a process terminates, however, there
   is a gap in the numbering scheme. On the other hand, the same gap
   occurs in the group ranking which also Bill and Rusty want to keep.
   So, I don't see how the opaque process ids resolve the problem.

2. As Bill and Rusty say at the end of their note, inquiries like
   "give me my right neighbor" should be done by using the process
   topology functions, and not on the ranks themselves. Only this
   way an optimization of the process ordering is possible. The
   ranks mainly serve to define the buffer ordering in collective
   communication.

3. At our last meeting we already saw that the MPI time schedule is
   becoming tight. I don't think it would be wise to deal with
   dynamic process creation in MPI-1, and as far as I remember there
   was already some consensus on that. Of course, in the design of the
   static interface we have to keep in mind that dynamic extensions
   will be added later. It should not be seen as a problem if on the
   basis of MPI-1 non-standard extensions will emerge. After all, only
   this kind of experimenting can make a later standardization
   possible.

Rolf Hempel
From owner-mpi-comm@CS.UTK.EDU  Sat Mar  6 15:38:10 1993
Received: from CS.UTK.EDU by surfer.EPM.ORNL.GOV (5.61/1.34)
	id AA03415; Sat, 6 Mar 93 15:38:10 -0500
Received: from localhost by CS.UTK.EDU with SMTP (5.61++/2.8s-UTK)
	id AA12502; Sat, 6 Mar 93 15:37:25 -0500
X-Resent-To: mpi-comm@CS.UTK.EDU ; Sat, 6 Mar 1993 15:37:24 EST
Errors-To: owner-mpi-comm@CS.UTK.EDU
Received: from daedalus.epcc.ed.ac.uk by CS.UTK.EDU with SMTP (5.61++/2.8s-UTK)
	id AA12470; Sat, 6 Mar 93 15:36:41 -0500
Date: Sat, 6 Mar 93 20:36:37 GMT
Message-Id: <390.9303062036@subnode.epcc.ed.ac.uk>
From: L J Clarke <lyndon@epcc.ed.ac.uk>
Subject: dynamic processes and dynamic groups
To: mpi-pt2pt@cs.utk.edu
Reply-To: lyndon@epcc.ed.ac.uk
Cc: mpi-comm@cs.utk.edu

Hi again

Well, we certainly are having some fun now in this discussion of static
vs dynamic processes in MPI.  This is as much about dynamic groups as
dynamic processes, and the latter part is really about MPI as a
standards committee.  I have a lot of sympathy with John Flower's
concerns. 

There appears to be reasonable consensus among those contributing to the
discussion that in a world process model where processes dynamically
appear and dissapear in an asynchronous fashion an enumeration of
processes is not a useful way of identifying processes - what sense
could we make of the enumeration? An opaque type process (or task)
identifier is better. 

The same considerations surely lead us to the observation that in a
world group model where processes dynamically join and leave groups in
an asynchronous fashion an enumeration of members of a group is not a
useful way of identifying members - what sense could we make of the
enumeration? Rolf previously pointed this out on mpi-comm - March 4,
subject "Process ids". 

What are asynchronously created (terminated) processes to do? I guess
they either join (leave) an existing group, or create (destroy) a group
for their own purposes.  The primitives for these two are really process
group resizing (or destruction/recreation) and process group creation
(termination).  I guess their must be heavyweight PVM users who have
other experiences of usage of dynamic process creation/termination -
Al?. 



These thoughts/questions, however interesting and discussion provoking
they may or may not be, do not take us any further on answering some of
the BIG questions about what MPI will be, regarding for example:

a) Process model; static v dynamic; ...
b) Group model; static v dynamic; ...

I've previously stated that I'd vote for static process model in (a). 
This "seemed to be" the intent of MPI (although I couldn't find it
written down and recorded as agreed), would be useful, and could be
agreed upon within the MPI time schedule.  This is not to say that I
think limitation to a static process model would be the most useful
thing upon which to agree to describe a 'de facto' standard.  I have
pretty well the same opinions regarding process groups. 

I'd like us all agree on how we're going to move forward and get the
details of the standard described, as I'm concerned that at the current
rate we may not.  I'll broadly support John Flower's suggestions,
primarily because I don't see any others, and I'll do my best to
implement whatever strategy we can agree on.  Final thought, perhaps we
should move the discussion of MPI strategy to mpi-comm. 

Best Wishes
Lyndon

         /--------------------------------------------------------\
    e||) | Lyndon J Clarke    Edinburgh Parallel Computing Centre | e||) 
    c||c | Tel: 031 650 5021  Email: lyndon@epcc.edinburgh.ac.uk  | c||c 
         \--------------------------------------------------------/


From owner-mpi-comm@CS.UTK.EDU  Mon Mar  8 08:01:03 1993
Received: from CS.UTK.EDU by surfer.EPM.ORNL.GOV (5.61/1.34)
	id AA04198; Mon, 8 Mar 93 08:01:03 -0500
Received: from localhost by CS.UTK.EDU with SMTP (5.61++/2.8s-UTK)
	id AA19241; Mon, 8 Mar 93 07:59:25 -0500
X-Resent-To: mpi-comm@CS.UTK.EDU ; Mon, 8 Mar 1993 07:59:24 EST
Errors-To: owner-mpi-comm@CS.UTK.EDU
Received: from marge.meiko.com by CS.UTK.EDU with SMTP (5.61++/2.8s-UTK)
	id AA19232; Mon, 8 Mar 93 07:59:19 -0500
Received: from hub.meiko.co.uk by marge.meiko.com with SMTP id AA03238
  (5.65c/IDA-1.4.4 for <mpi-comm@cs.utk.edu>); Mon, 8 Mar 1993 07:59:13 -0500
Received: from float.co.uk (float.meiko.co.uk) by hub.meiko.co.uk (4.1/SMI-4.1)
	id AA10283; Mon, 8 Mar 93 12:59:09 GMT
Date: Mon, 8 Mar 93 12:59:09 GMT
From: jim@meiko.co.uk (James Cownie)
Message-Id: <9303081259.AA10283@hub.meiko.co.uk>
Received: by float.co.uk (5.0/SMI-SVR4)
	id AA02380; Mon, 8 Mar 93 12:56:19 GMT
To: lusk@mcs.anl.gov
Cc: mpi-comm@cs.utk.edu
In-Reply-To: Rusty Lusk's message of Tue, 02 Mar 93 15:31:58 CST <9303022131.AA00744@donner.mcs.anl.gov>
Subject: MPI Job startup
Content-Length: 2990

> We feel that the MPI standard should provide enough information to
> specify an entire, source-code portable program.  
I agree.

MPI_INIT style
==============
> The seemingly simplest approach is to use an explicit initialization
> routine, MPI_Init.  There are several problems with this approach.
> The major one is that the parallel part of the program is the code
> that "follows" the MPI_Init.  This is potentially error prone;
> further, it can be awkward to implement on some systems.  This is
> the way p4 does it.
I agree that this is simplest. I also prefer it to the others. I don't
see the "major problem" outlined above. The whole of the code is
parallel even before the MPI_INIT, it's just that it can't communicate
yet. 

I'd expect code like this (given an I/O everywhere model) to execute
fine

int main(int argc,char ** argv)
{
    printf("Hello world\n");
}

and print as many "Hello world" messages as the number of nodes on
which I ran it.

It also seems to me to be quite an easy way to allow the dynamicness
everyone seems to want. The newly created process starts up, and then
attaches to the existing MPI environment at the time it calls MPI_INIT.
	
In my view, then, what happens is

1) By some unspecified means a number of processes start to execute
2) They decide to collaborate by executing MPI_INIT

[If dynamic process creation is permitted
2a) New processes are forked/execed
2b) The new processes join the existing collaboration by executing
    MPI_INIT
]

3) They each exit (by calling exit), or you can have a drastic exit if
   you like.

MPI_CALL style
==============
I don't think I understand what this is intended to mean, which may be
why I don't like it ! Therefore please can you explain it to me.

1) Is the idea that there is one user process which then executes
   MPI_CALL at which point all of the other processes are created,and
   magically arrive in a user subroutine, or do all the processes
   execute main ?

2) If all the processes execute main, what can they do before calling
   MPI_CALL ? 

3) What global state is accessible to the MPI_CALLed routine ?
e.g. (your example with minor change...)

   extern int foo;   /* Of course this could be an arbitrarily complex
                        data structure ! */
	
   main(argc,argv)
   int argc; char **argv;
   {
       foo = time();  /* Something which may differ on each node ! */

       ret_code = MPI_Call( argc, argv, worker );
       exit( irc );
   }

   int worker( argc, argv )
   int argc; char **argv;
   {
	
       printf("%d: %d\n", MPI_MYTID(), foo);
       ...

       if (error condition) return 1;
       ...
       return 0;
   }


At the moment I definitely prefer MPI_INIT !

-- Jim
James Cownie 
Meiko Limited			Meiko Inc.
650 Aztec West			Reservoir Place
Bristol BS12 4SD		1601 Trapelo Road
England				Waltham
				MA 02154

Phone : +44 454 616171		+1 617 890 7676
FAX   : +44 454 618188		+1 617 890 5042
E-Mail: jim@meiko.co.uk   or    jim@meiko.com




From owner-mpi-comm@CS.UTK.EDU  Mon Mar  8 09:19:50 1993
Received: from CS.UTK.EDU by surfer.EPM.ORNL.GOV (5.61/1.34)
	id AA05513; Mon, 8 Mar 93 09:19:50 -0500
Received: from localhost by CS.UTK.EDU with SMTP (5.61++/2.8s-UTK)
	id AA22555; Mon, 8 Mar 93 09:18:33 -0500
X-Resent-To: mpi-comm@CS.UTK.EDU ; Mon, 8 Mar 1993 09:18:28 EST
Errors-To: owner-mpi-comm@CS.UTK.EDU
Received: from [129.215.56.21] by CS.UTK.EDU with SMTP (5.61++/2.8s-UTK)
	id AA22546; Mon, 8 Mar 93 09:18:01 -0500
Date: Mon, 8 Mar 93 14:17:41 GMT
Message-Id: <1439.9303081417@subnode.epcc.ed.ac.uk>
From: L J Clarke <lyndon@epcc.ed.ac.uk>
Subject: Re: MPI Job startup
To: Rusty Lusk <lusk@mcs.anl.gov>, mpi-comm@cs.utk.edu
In-Reply-To: Rusty Lusk's message of Tue, 02 Mar 93 15:31:58 CST
Reply-To: lyndon@epcc.ed.ac.uk

Hi there

Spring has arrived in Scotland :-) For the thrid say this year we have
beautiful sunshine :-) The snow on the Caringorms is meling fast :-(

Now it's MPI job startup.  Thanks to Bill and Rusty for starting this
one off. 

The MPI_INIT style is familiar.  It makes it explicit that the bit of
the program before MPI_INIT is executing in parallel, and no MPI
services can be used before MPI_INIT.  As Jim correctly points out.  It
documents to the user what s/he is using.  The trouble is, that the user
will almost always end up calling MPI_INIT right after entry into main,
because what can the user usefully do before MPI_INIT? We should
consider providing this approach. 

I really don't like the MPI_CALL approach.  It serves to confuse the
user.  It looks like there is one main running, and the function
reference in MPI_CALL magically runs in parallel.  What of use can the
user do before MPI_CALL? It looks to the user like the static (global)
data is all accessible everywhere.  I don't think this is intended, and
I don't think this is what should be provided. 

What about the other approach, in which the user provides a "virtual
main" and the MPI library supplies a "actual main", which calls the
virtual main.  I guess the virtual main calls MPI_INIT and then calls
the actual main.  This removes the necessity for the user to call
MPI_INIT, and means that s/he cannot make the mistake of attempting to
use MPI services before they are available.  We *might* be able to get
this past C programmers.  I believe that we would have enormous problems
trying to get this past crusty fortran programmers --- "What, you mean I
have to write a subroutine instead of a program?". 

Wait up though, this is what is happening anyway.  Your process never
starts in your own main.  Your "actual main" is a "virtual main", and
the compiler/stdlib/runtime executes a preamble to main.

FOURTH suggestion
-----------------

There is no MPI initialisation procedure.  The user program is
"attatched to MPI" and can use MPI services as soon as the user program
starts to execute. 

This means that we require system vendors to embed any MPI
initialisation his/her implementation requires in the preamble before
main. 

Dead simple.

Lyndon

         /--------------------------------------------------------\
    e||) | Lyndon J Clarke    Edinburgh Parallel Computing Centre | e||) 
    c||c | Tel: 031 650 5021  Email: lyndon@epcc.edinburgh.ac.uk  | c||c 
         \--------------------------------------------------------/


From owner-mpi-comm@CS.UTK.EDU  Mon Mar  8 09:25:38 1993
Received: from CS.UTK.EDU by surfer.EPM.ORNL.GOV (5.61/1.34)
	id AA05746; Mon, 8 Mar 93 09:25:38 -0500
Received: from localhost by CS.UTK.EDU with SMTP (5.61++/2.8s-UTK)
	id AA22903; Mon, 8 Mar 93 09:24:39 -0500
X-Resent-To: mpi-comm@CS.UTK.EDU ; Mon, 8 Mar 1993 09:24:38 EST
Errors-To: owner-mpi-comm@CS.UTK.EDU
Received: from daedalus.epcc.ed.ac.uk by CS.UTK.EDU with SMTP (5.61++/2.8s-UTK)
	id AA22895; Mon, 8 Mar 93 09:24:31 -0500
Date: Mon, 8 Mar 93 14:24:19 GMT
Message-Id: <1449.9303081424@subnode.epcc.ed.ac.uk>
From: L J Clarke <lyndon@epcc.ed.ac.uk>
Subject: Re: MPI Job startup
To: lyndon@epcc.ed.ac.uk, Rusty Lusk <lusk@mcs.anl.gov>, mpi-comm@cs.utk.edu
In-Reply-To: L J Clarke's message of Mon, 8 Mar 93 14:17:41 GMT
Reply-To: lyndon@epcc.ed.ac.uk

Ooops - small oversight.

> This means that we require system vendors to embed any MPI
> initialisation his/her implementation requires in the preamble before
> main. 
> 

Not quite true, Lyndon, you missed something :-)

On the other hand all of the MPI service routines could do one check of
a static boolean to see if MPI has been initialised, and if not then
call an initialisation routine which inverts the static boolean. 

I just prefer if it happened for sure in the preamble.

Best Wishes
Lyndon

ps replying to my own mail, hmmm :-)

         /--------------------------------------------------------\
    e||) | Lyndon J Clarke    Edinburgh Parallel Computing Centre | e||) 
    c||c | Tel: 031 650 5021  Email: lyndon@epcc.edinburgh.ac.uk  | c||c 
         \--------------------------------------------------------/


From owner-mpi-comm@CS.UTK.EDU  Mon Mar  8 10:51:20 1993
Received: from CS.UTK.EDU by surfer.EPM.ORNL.GOV (5.61/1.34)
	id AA09115; Mon, 8 Mar 93 10:51:20 -0500
Received: from localhost by CS.UTK.EDU with SMTP (5.61++/2.8s-UTK)
	id AA28354; Mon, 8 Mar 93 10:50:07 -0500
X-Resent-To: mpi-comm@CS.UTK.EDU ; Mon, 8 Mar 1993 10:50:06 EST
Errors-To: owner-mpi-comm@CS.UTK.EDU
Received: from sol.cs.wmich.edu by CS.UTK.EDU with SMTP (5.61++/2.8s-UTK)
	id AA28346; Mon, 8 Mar 93 10:50:04 -0500
Received: from id.wmich.edu (id.cs.wmich.edu) by cs.wmich.edu (4.1/SMI-4.1)
	id AA00863; Mon, 8 Mar 93 10:49:41 EST
Date: Mon, 8 Mar 93 10:49:41 EST
From: john@cs.wmich.edu (John Kapenga)
Message-Id: <9303081549.AA00863@cs.wmich.edu>
To: mpi-comm@cs.utk.edu

hi;
To add to the "thread" on MPI init.

I think there should be some form of MPI init call before any
other MPI call. This allows MPI implementations over other
systems, without a small but built in overhead. I don't feel
religous about this though.

Assuming an MPI init call of some form is added, the only
questions I would have would be - 

1) Does each thread need to make the call - or is one call 
	per process OK? 
and
2) In the case of only requiring on call per process,
	Is it OK to make more than one call to the init routine -
	as in the case of each thread in a process making a
	call before starting.

If there is any state information kept on a per thread basis - than
one call per thread may be reasonable. I know we tried to keep all
state per thread information out (which I view as very reasonable),
but unless it is a 100% requirement, one MPI init call per
process may not be enough.

john
From owner-mpi-comm@CS.UTK.EDU  Mon Mar  8 15:11:52 1993
Received: from CS.UTK.EDU by surfer.EPM.ORNL.GOV (5.61/1.34)
	id AA17797; Mon, 8 Mar 93 15:11:52 -0500
Received: from localhost by CS.UTK.EDU with SMTP (5.61++/2.8s-UTK)
	id AA13204; Mon, 8 Mar 93 15:08:17 -0500
X-Resent-To: mpi-comm@CS.UTK.EDU ; Mon, 8 Mar 1993 15:08:15 EST
Errors-To: owner-mpi-comm@CS.UTK.EDU
Received: from pnlg.pnl.gov by CS.UTK.EDU with SMTP (5.61++/2.8s-UTK)
	id AA13156; Mon, 8 Mar 93 15:08:08 -0500
Received: from carbon.pnl.gov (130.20.188.38) by pnlg.pnl.gov; Mon, 8 Mar 93
 12:04 PST
Received: from sodium.pnl.gov by carbon.pnl.gov (4.1/SMI-4.1) id AA16386; Mon,
 8 Mar 93 12:02:56 PST
Received: by sodium.pnl.gov (4.1/SMI-4.0) id AA14497; Mon, 8 Mar 93 12:02:53 PST
Date: Mon, 8 Mar 93 12:02:53 PST
From: d39135@sodium.pnl.gov
Subject: RE: MPI Job startup
To: lusk@mcs.anl.gov, lyndon@epcc.ed.ac.uk, mpi-comm@cs.utk.edu
Cc: d39135@sodium.pnl.gov
Message-Id: <9303082002.AA14497@sodium.pnl.gov>
X-Envelope-To: mpi-comm@cs.utk.edu

Here are some comments I haven't seen yet about MPI job startup
suggestions.

Lyndon Clarke's FOURTH suggestion:

> There is no MPI initialisation procedure.  The user program is
> "attatched to MPI" and can use MPI services as soon as the user program
> starts to execute. 
> 
> This means that we require system vendors to embed any MPI
> initialisation his/her implementation requires in the preamble before
> main. 

This approach has the disadvantage that it requires intimate 
collaboration with the vendor's runtime language-support library.
The interfaces to those libraries are usually undocumented and subject
to change without notice.  This means that one needs vendor cooperation
to write and maintain an MPI implementation using this approach.

From the MPI user's standpoint, "FOURTH suggestion" seems
indistinguishable from the earlier proposal that there be no
explicit initialization call, and that initialization be done by
having each MPI routine check a static boolean.

A minor problem with the static boolean suggestion is that then the
initialization routine does not have access to those parts of the
environment passed as (argc,argv).  Such access is sometimes useful.

  (For example... TCGMSG's static process initializer uses
  command-line arguments to inform each process of its place in the
  grand scheme of things.  In C, the command-line arguments are
  accessible to TCGMSG because the application has to pass them to
  the TCGMSG initialization procedure.  (In Fortran, TCGMSG's
  initialization procedure is called without arguments, and it has
  to hunt up the argc and argv that presumably stored by Fortran
  initialization in global variables.  See above comments about
  undocumented interfaces.)

The MPI_Main approach (MPI does the initialization, user provides a 
subroutine) seems to have the disadvantage that it works for only
one package.  If MPI takes this approach, then I don't see how any
other package FOO can too, if an application wants to use both MPI
and FOO.

MPI_Call has the slight problem that if another package FOO adopts
the MPI_Call approach, then we end up with

    main (argc,argv)
    { MPI_main (argc,argv,myMPIinitializer); }

    myMPIinitializer (argc,argv)
    { FOO_main (argc,argv,myFOOinitializer); }

    myFOOinitializer (argc,argv)
    { myapplication (argc,argv); }

compared to

    main (argc,argv)
    { MPI_Init (argc,argv);
      FOO_Init (argc,argv);
      myapplication (argc,argv);
    }
    
Certainly this is not an enormous problem, but I don't see where
the extra complexity buys anything.

I like MPI_Init (augmented if necessary for dynamic processes).

--Rik Littlefield
From owner-mpi-comm@CS.UTK.EDU  Mon Mar  8 15:52:41 1993
Received: from CS.UTK.EDU by surfer.EPM.ORNL.GOV (5.61/1.34)
	id AA19445; Mon, 8 Mar 93 15:52:41 -0500
Received: from localhost by CS.UTK.EDU with SMTP (5.61++/2.8s-UTK)
	id AA18884; Mon, 8 Mar 93 15:51:31 -0500
X-Resent-To: mpi-comm@CS.UTK.EDU ; Mon, 8 Mar 1993 15:51:30 EST
Errors-To: owner-mpi-comm@CS.UTK.EDU
Received: from sampson.ccsf.caltech.edu by CS.UTK.EDU with SMTP (5.61++/2.8s-UTK)
	id AA18876; Mon, 8 Mar 93 15:51:28 -0500
Received: from elephant by sampson.ccsf.caltech.edu with SMTP id AA06355
  (5.65c/IDA-1.4.4 for mpi-comm@cs.utk.edu); Mon, 8 Mar 1993 12:51:24 -0800
Received: from lion.parasoft by elephant (4.1/SMI-4.1)
	id AA18286; Mon, 8 Mar 93 12:44:12 PST
Received: by lion.parasoft (4.1/SMI-4.1)
	id AA15256; Mon, 8 Mar 93 12:44:15 PST
Date: Mon, 8 Mar 93 12:44:15 PST
From: jwf@lion.Parasoft.COM (Jon Flower)
Message-Id: <9303082044.AA15256@lion.parasoft>
To: mpi-comm@cs.utk.edu
Subject: MPI_INIT


To throw in my two cents worth.....

The business with argc and argv (and, of course environ) has been
a thorn in the side of Express for many years. We've adopted a
standard two-faced approach in which C programmers get their
"main" routine renamed (silently) to exp_main which we then call
from our own main. In this case argc and argv get dealt with by
Express and passed to the main routine. This approach has the 
disease mentioned by Rik, that two or more different software
suppliers may want to pull the same trick causing confusion.

In fortran we went the way of MPI_INIT with no arguments. This
seems to work but has the difficulty that things beyond the
ken of the message passing system can be affected by it.

For example, the Express program

	program foo
	write(6,*) 'I have started'
	call kxinit		-- i.e., MPI_INIT
	write(6,*) 'Done with kxinit'
	stop
	end

is actually wrong because the I/O system needs to know parameters
that don't get set till the call to kxinit. We could, of course,
enforce the rule in MPI that only MPI routines are affected by the
MPI_INIT call and that, therefore, you can put anything you like
before the call to MPI_INIT as long as its name doesn't start
with MPI_!!!!! I dont think this is going to work in the long run
since it actively discourages library vendors from building their
codes with MPI routines!!!

Also, in Rik's example, I think the code has to look sort of
like

	main(argc, argv)
	int argc;
	char **argv;
	{
		MPI_INIT(&argc, &argv);
		FOO_INIT(&argc, &argv);
			/* etc... */

if we want to allow for the chance that it's actually MPI_INIT that
passes down the arguments....... this is pretty ugly......

My personal vote would be for making the user rename their top
level entry point:

	MPI_main(int argc, char **argv, char **environ)   in C
and     MPI_MAIN in fortran

Perhaps some compiler level support for potentially changing the
name of the entry point so that third party software vendors could
build their own "front-ends" that puts their own code first?? I appreciate
that this is definitately NOT current practice and has all sorts of
diseases of its own with different software suppliers providing layer
upon layer of "fake" compiler front-ends.

Another option that I would probably support would be bagging
argc/argv altogether at the MPI level. In this case a function call
with no arguments that had to be the first thing you did would be
OK -- if you do it wrong you probably get a core dump! Express' attempts
to deal with argc and argv date back to the days when hardware vendors
didn't provide these things and we wanted to ourselves. Now all the 
systems I know of start up C programs apropriately and the
need for Express (or some other system) to get in behind them is not
so crucial...?.... A slight counter-example to my own argument, 
however, is that some systems give you mangled argc/argv and 
particularly environ. This can lead to bizarre results. (Systems
which permit a remote host capability sometimes give you the 
environment that you would have had on the local host rather than
the one you actually have on the remote host.)
	
	Jon
From owner-mpi-comm@CS.UTK.EDU  Mon Mar  8 20:07:09 1993
Received: from CS.UTK.EDU by surfer.EPM.ORNL.GOV (5.61/1.34)
	id AA23824; Mon, 8 Mar 93 20:07:09 -0500
Received: from localhost by CS.UTK.EDU with SMTP (5.61++/2.8s-UTK)
	id AA02443; Mon, 8 Mar 93 20:06:01 -0500
X-Resent-To: mpi-comm@CS.UTK.EDU ; Mon, 8 Mar 1993 20:06:00 EST
Errors-To: owner-mpi-comm@CS.UTK.EDU
Received: from pnlg.pnl.gov by CS.UTK.EDU with SMTP (5.61++/2.8s-UTK)
	id AA02433; Mon, 8 Mar 93 20:05:58 -0500
Received: from carbon.pnl.gov (130.20.188.38) by pnlg.pnl.gov; Mon, 8 Mar 93
 17:01 PST
Received: from sodium.pnl.gov by carbon.pnl.gov (4.1/SMI-4.1) id AA17034; Mon,
 8 Mar 93 17:00:40 PST
Received: by sodium.pnl.gov (4.1/SMI-4.0) id AA15033; Mon, 8 Mar 93 17:00:38 PST
Date: Mon, 8 Mar 93 17:00:38 PST
From: d39135@sodium.pnl.gov
Subject: Re:  MPI_INIT
To: jwf@lion.Parasoft.COM, mpi-comm@cs.utk.edu
Cc: d39135@sodium.pnl.gov
Message-Id: <9303090100.AA15033@sodium.pnl.gov>
X-Envelope-To: mpi-comm@cs.utk.edu

Jon Flower says:

> Also, in Rik's example, I think the code has to look sort of
> like
> 
> 	main(argc, argv)
> 	int argc;
> 	char **argv;
> 	{
> 		MPI_INIT(&argc, &argv);
> 		FOO_INIT(&argc, &argv);
> 			/* etc... */

Yeah, sort of.  The example I showed was based on one version of
current practice (TCGMSG).  It doesn't let the INIT's alter the
argument list.  In general, this implies far worse ugliness than
Jon's example, because it requires that applications know enough
to ignore arguments intended for the INIT's.  

A better version of current practice is the X window system, one
of whose initializers looks like

  XtInitialize ( ... &argc, argv)

This allows deleting stuff from the argument list, but not adding.

Jon's syntax goes farther and allows both.

But maybe this is working the wrong issue.

I said:

> A minor problem with the static boolean suggestion is that then the
> initialization routine does not have access to those parts of the
> environment passed as (argc,argv).  Such access is sometimes useful.

It could also be said that the problem is with the (argc,argv) approach.

I defended the (argc,argv) approach, sort of, but I confess that
I don't like it very much precisely because it DOES prevent
calling the MPI initializer from inside some other routine.  I
ran afoul of this just a few days ago, when I tried to emulate
another package using TCGMSG, and discovered that my application
called the other package's initializer from several procedures
down.

What I would *really* like (putting on my user's hat),
is an explicit MPI_INIT with no arguments, like Jon suggests.

I guess this means that implementors have to find some way to
pass environment info other than through the argv list.  Can
anyone come up with a convincing reason why this is a big problem?

--Rik Littlefield
From owner-mpi-comm@CS.UTK.EDU  Tue Mar  9 00:01:42 1993
Received: from CS.UTK.EDU by surfer.EPM.ORNL.GOV (5.61/1.34)
	id AA27466; Tue, 9 Mar 93 00:01:42 -0500
Received: from localhost by CS.UTK.EDU with SMTP (5.61++/2.8s-UTK)
	id AA10468; Tue, 9 Mar 93 00:00:25 -0500
X-Resent-To: mpi-comm@CS.UTK.EDU ; Tue, 9 Mar 1993 00:00:24 EST
Errors-To: owner-mpi-comm@CS.UTK.EDU
Received: from Aurora.CS.MsState.Edu by CS.UTK.EDU with SMTP (5.61++/2.8s-UTK)
	id AA10455; Tue, 9 Mar 93 00:00:22 -0500
Received:  by Aurora.CS.MsState.Edu (4.1/6.0s-FWP);
	   id AA08899; Mon, 8 Mar 93 22:56:45 CST
Date: Mon, 8 Mar 93 22:56:45 CST
From: Tony Skjellum <tony@Aurora.CS.MsState.Edu>
Message-Id: <9303090456.AA08899@Aurora.CS.MsState.Edu>
To: jwf@lion.Parasoft.COM, mpi-comm@cs.utk.edu, d39135@sodium.pnl.gov
Subject: Re:  MPI_INIT; environment information

Guys,

What about using envp?  That would provide the Unix-compatible, open-ended
approach to passing information on the environment?  Info could be added etc,
as was suggested as a need.  This is a layerable-friendly approach.

ie, main(argc,argv,envp)
    int argc;
    char **argv;
    char **envp;

1) For Fortran, the getenv_() (or equivalent) call provides the interface.   
   C could use the direct interface to envp, or the getenv() call.  We could
   have mpi_getenv() to avoid conflicts with general system support, if 
   absolutely needed to avoid POSIX interactions.

2) Handling of argc/argv
  A) argc, argv is made accessible to C through standard access.  Made accessible
     to Fortran through accessor functions (eg, mpi_argc(), mpi_argv(i,string,maxlen)).

  B) argc, argv could be obliterated for both models (ie, left empty for C,
     inaccessible to Fortran).  All info through mpi_getenv().

May I throw in a comment about main precursors (niam() in the BBN parlance)?
This is great if supported by the linker, and a pain if not supported by the linker.
If niam() is absent, then the default niam() is added, which just calls main().
If niam() is present, then the user model can choose.  However, what if different
programs presume the abilility to use niam().  They would not stack up...

Without niam(), has to assume preprocessor substitution, or macro
substitution.  This requires that user uses an MPI-compatible make
procedure, or compiler pseudonym, other than naked cc/f**.  This turns
out to be a thorny problem to handle transparently.

Also, the execution model of the CM-5, for instance, does not [did not] require
main to exist at all.  Execution of arbitrary functions (not only main) is supported
by CMMD 2.0, specifically.  I don't know what CMMD 3.0 chooses to do, but you
get the idea.  main/program main access is an assumption true most everywhere,
but not everywhere.

- Tony
From owner-mpi-comm@CS.UTK.EDU  Tue Mar  9 15:24:37 1993
Received: from CS.UTK.EDU by surfer.EPM.ORNL.GOV (5.61/1.34)
	id AA13894; Tue, 9 Mar 93 15:24:37 -0500
Received: from localhost by CS.UTK.EDU with SMTP (5.61++/2.8s-UTK)
	id AA24607; Tue, 9 Mar 93 15:14:24 -0500
X-Resent-To: mpi-comm@CS.UTK.EDU ; Tue, 9 Mar 1993 15:14:22 EST
Errors-To: owner-mpi-comm@CS.UTK.EDU
Received: from fslg8.fsl.noaa.gov by CS.UTK.EDU with SMTP (5.61++/2.8s-UTK)
	id AA24595; Tue, 9 Mar 93 15:14:18 -0500
Received: by fslg8.fsl.noaa.gov (5.57/Ultrix3.0-C)
	id AA24881; Tue, 9 Mar 93 20:13:49 GMT
Received: by macaw.fsl.noaa.gov (4.1/SMI-4.1)
	id AA06208; Tue, 9 Mar 93 13:12:34 MST
Date: Tue, 9 Mar 93 13:12:34 MST
From: hender@macaw.fsl.noaa.gov (Tom Henderson)
Message-Id: <9303092012.AA06208@macaw.fsl.noaa.gov>
To: mpi-comm@cs.utk.edu
Subject: MPI Goals and Scope:  More Details Please?


As a potential user of MPI, the discussion of I/O below disturbs me a bit and 
leads to a whole bunch of questions...  

> > We feel that the MPI standard should provide enough information to
> > specify an entire, source-code portable program.  
> > Bill & Rusty

> I agree.
> 
> I'd expect code like this (given an I/O everywhere model) to execute
> fine
> 
> int main(int argc,char ** argv)
> {
>     printf("Hello world\n");
> }
> 
> and print as many "Hello world" messages as the number of nodes on
> which I ran it.
> 
> -- Jim

I also agree with Bill and Rusty's statement about portability.  

Jim's example brings up a whole bunch of interesting problems.  First, should 
the printf() really print one "Hello world" message per node (process)?  I can 
think of several places where I wouldn't expect that behavior (Express 
"single" I/O mode for example).  

The next problem is "ordering".  Suppose Jim's example is modified slightly:

int main (int argc, char **argv)
    {
    int me;

    MPI_INIT(???);              /* Yes, I'm casting my vote for MPI_INIT(). */

    me = MPI_MYRANK();          /* another guess at syntax */

    printf("Hello world from process %d\n", me);
    }

Now what happens?  Do we see first-come first-served?  Do we see the 
"intuitive" ordering?  Do we get an error message?  

At the last meeting a straw vote lead to the adoption of "one processor can do 
standard I/O".  If we do this, then users will use vendor-supplied 
"parallel I/O" routines to get decent performance.  We cannot claim that the 
MPI standard provides enough information to specify an entire, source-code 
portable program unless we include I/O.  I think that there is general 
agreement that "parallel I/O" will not be included in MPI-1.  Maybe we could 
re-state the portability goal:  

  The ultimate goal of the MPI standardization effort is to provide enough 
  information to specify an entire, source-code portable program.  

I certainly won't use MPI unless I believe that this will happen with some 
version of MPI.  

I think we should re-examine the scope of the MPI effort and write down what 
we want to accomplish with MPI-1, MPI-2, etc. in much more detail than is 
currently in the draft introduction.  John Flower has proposed one 
prioritization.  Here's another (from my perspective as a user):  

1)   Static process creation and identification (and associated environmental 
     inquiry routines).  
2)   Contexts.  
3)   Heterogeneous communication semantics (I think we already have this).  
     All communication routines should support heterogeneous communication.  
4)   Blocking send and receive, contiguous data.  
5)   Non-blocking send and receive, contiguous data (status(), wait(), 
     cancel()?).  
6)   Creation/destruction of "static" groups (by "static" I mean processes 
     cannot join/leave an existing group).  Grid/toroidal process topology 
     would go here if we decide to include it.  
7)   Blocking collective communication, contiguous data (broadcast, 
     multiple-broadcast, concatenate, barrier, etc.).  
8)   "Simple" commonly used blocking collective operations (sum, max, min, 
     etc.).  
9)   Blocking send and receive, strided data.  
10)  Non-blocking send and receive, strided data.  
11)  Blocking collective communication, strided data.  
12)  Blocking send and receive with buffer-descriptor.  
13)  Non-blocking send and receive with buffer-descriptor.  
14)  Blocking collective communication with buffer-descriptor.  
15)  "User-defined" blocking collective operations (Express "excombine()"
     style).  
16)  Probe (and associated "precv()" routines, if necessary).  
17)  Non-blocking collective communication, contiguous data, strided data, and 
     buffer-descriptor (and "multi-cancel()"?).  
18)  Definition of parallel I/O.  
19)  Blocking parallel I/O.  
20)  Non-blocking parallel I/O.  
21)  Additional environmental inquiry and "setting" routines for performance 
     optimization (suggestions for system buffering, relative 
     node/interconnect performance, etc.).  
22)  Dynamic process creation and identification.  
23)  Dynamic groups (processes can join/leave an existing group).  
24)  "Safe" send and receive.  
25)  Ready-send and ready-receive.  
26)  General process topologies.  
27)  Even more neat stuff.  

Once a detailed list like this is agreed on, we need to decide where to draw 
the line between MPI-1 and MPI-2 (and maybe MPI-3, etc.).  Various straw polls 
about I/O indicate that 18-20 will probably be in MPI-2.  I imagine an 
absolute minimum might be 1-5 for MPI-1.  Here's three proposals for the list 
above:  

                  MPI-1           MPI-2           MPI-3, etc.

"Ambitious"       1-17            18-26           27

"Less Ambitious"  1-14            15-23           24-27

"Conservative"    1-11            12-19           20-27

I share John Flower's "EXTREME concern" about the complexity of the current 
design.  I believe that the MPIF must agree on SOME prioritization list and 
explicitly decide what is going to be in MPI-1 as soon as possible.  I also 
feel strongly that we should decide what will be in future MPI versions to 
give potential users some confidence that MPI will eventually be useful for 
developing source-code portable programs.   

Tom Henderson  (a potential MPI user)
NOAA Forecast Systems Laboratory
hender@fsl.noaa.gov

(Thanks to Leslie Hart for some helpful suggestions.) 

From owner-mpi-comm@CS.UTK.EDU  Tue Mar  9 20:46:50 1993
Received: from CS.UTK.EDU by surfer.EPM.ORNL.GOV (5.61/1.34)
	id AA17983; Tue, 9 Mar 93 20:46:50 -0500
Received: from localhost by CS.UTK.EDU with SMTP (5.61++/2.8s-UTK)
	id AA10433; Tue, 9 Mar 93 20:45:22 -0500
X-Resent-To: mpi-comm@CS.UTK.EDU ; Tue, 9 Mar 1993 20:45:19 EST
Errors-To: owner-mpi-comm@CS.UTK.EDU
Received: from daedalus.epcc.ed.ac.uk by CS.UTK.EDU with SMTP (5.61++/2.8s-UTK)
	id AA10412; Tue, 9 Mar 93 20:45:16 -0500
Date: Wed, 10 Mar 93 01:45:05 GMT
Message-Id: <2554.9303100145@subnode.epcc.ed.ac.uk>
From: L J Clarke <lyndon@epcc.ed.ac.uk>
Subject: Re: MPI Goals and Scope:  More Details Please?
To: hender@macaw.fsl.noaa.gov (Tom Henderson), mpi-comm@cs.utk.edu
In-Reply-To: Tom Henderson's message of Tue, 9 Mar 93 13:12:34 MST
Reply-To: lyndon@epcc.ed.ac.uk

Hi all

There seems to be something to be discussed in what Tom is saying.  Here
is my 2 pennies worth.  Please understand my multicomputer world bias,
or flame me for it, whichever your prefer. 

> > > We feel that the MPI standard should provide enough information to
> > > specify an entire, source-code portable program.  
> > > Bill & Rusty
> 
> > I agree.

This is going to sound awful picky, but I'm afraid I gotta say that I
disagree with this.  It's a grand ambition, and its also a grand
challenge, in fact I conjecture that MPI is implicitly incapable of
completing the stated mission even given arbitrary time, and that it is
not a valid goal for MPI.  The goal requires MPI to describe a whole
raft of issues which are outwith MPI. 

I reckon John Flowers could spend the rest of his MPI time telling us
about his experiences in Parasoft and Express with the issues that MPI
cannot address!

So MPI needs a more restricted mission.  I'm too sleepy to try right now
to find a suitable modification of the above sentence which might serve
as a better mission for MPI. 


> 
> At the last meeting a straw vote lead to the adoption of "one processor can do 
> standard I/O".  If we do this, then users will use vendor-supplied 
> "parallel I/O" routines to get decent performance.  We cannot claim that the 
> MPI standard provides enough information to specify an entire, source-code 
> portable program unless we include I/O.  I think that there is general 
> agreement that "parallel I/O" will not be included in MPI-1.  

Don't you think it will be some time before the world is ready to even
think about standardisation of "parallel I/O".  I can't imagine trying
to do such a thing at the moment. 

> Maybe we could 
> re-state the portability goal:  

>   The ultimate goal of the MPI standardization effort is to provide enough 
>   information to specify an entire, source-code portable program.  

I have the same problem with this mission as that above.

> I certainly won't use MPI unless I believe that this will happen with some 
> version of MPI.  

I reckon you will, actually, because although it won't give you the
portability asked for above, it will be your best way of getting some
portability. 

> I think we should re-examine the scope of the MPI effort and write down what 
> we want to accomplish with MPI-1, MPI-2, etc. in much more detail than is 
> currently in the draft introduction.  

I concur, in an ambivalent fashion.  The introduction is vague, I'll
agree with that.  I think we are currently working out what we should be
doing, in a rather ad hoc fashion. 

> John Flower has proposed one 
> prioritization.  Here's another (from my perspective as a user):  

I'm going to walk down this list and give marks out of ten, with ten as
highest priority and 0 as lowest priority, from my point of view, and
some justification, from my point of view. 

> 1)   Static process creation and identification (and associated environmental 
>      inquiry routines).  

10 - bare minimum MPI can acheive without being complete waste of time.

> 2)   Contexts.  

9  - can get away with just tags but would impede library development.

> 3)   Heterogeneous communication semantics (I think we already have this).  
>      All communication routines should support heterogeneous communication.  

6  - static SPMD programs are most sensible in homogeneous machines.

> 4)   Blocking send and receive, contiguous data.  

10 - bare minimum MPI can acheive without being complete waste of time.

> 5)   Non-blocking send and receive, contiguous data (status(), wait(), 
>      cancel()?).  

10 - bare minimum MPI can acheive without being complete waste of time.

> 6)   Creation/destruction of "static" groups (by "static" I mean processes 
>      cannot join/leave an existing group).  Grid/toroidal process topology 
>      would go here if we decide to include it.  

8  - can get away with just tags but would impede library development.

> 7)   Blocking collective communication, contiguous data (broadcast, 
>      multiple-broadcast, concatenate, barrier, etc.).  

10 - bare minimum MPI can acheive without being complete waste of time.

> 8)   "Simple" commonly used blocking collective operations (sum, max, min, 
>      etc.).  

10 - bare minimum MPI can acheive without being complete waste of time.

> 9)   Blocking send and receive, strided data.  

8  - useful, but not essential.

> 10)  Non-blocking send and receive, strided data.  

8  - useful, bit not essential.

> 11)  Blocking collective communication, strided data.  

5  - makes collective communications too big.

> 12)  Blocking send and receive with buffer-descriptor.  

8  - useful, but not essential.

> 13)  Non-blocking send and receive with buffer-descriptor.  

8  - useful, but not essential.

> 14)  Blocking collective communication with buffer-descriptor.  

5  - makes collective communications too big.

> 15)  "User-defined" blocking collective operations (Express "excombine()"
>      style).  

10 - bare minimum MPI can acheive without being complete waste of time.

> 16)  Probe (and associated "precv()" routines, if necessary).  

0 (boy, am I biased! :-)

> 17)  Non-blocking collective communication, contiguous data, strided data, and 
>      buffer-descriptor (and "multi-cancel()"?).  

5  - makes collective communication to big, and has technical complications.

> 18)  Definition of parallel I/O.  

2  - too early to think about standardisation.

> 19)  Blocking parallel I/O.  

2  - too early to think about standardisation.

> 20)  Non-blocking parallel I/O.  

2  - too early to think about standardisation.

> 21)  Additional environmental inquiry and "setting" routines for performance 
>      optimization (suggestions for system buffering, relative 
>      node/interconnect performance, etc.).  

2  - useless without better knowledge of how to use them.

> 22)  Dynamic process creation and identification.  

6  - process group creation and resize is tractable model

> 23)  Dynamic groups (processes can join/leave an existing group).  

2  - asynchronous join/leave very experimental

6  - process group creation and resize is tractable model

> 24)  "Safe" send and receive.  

10  - bare minimum MPI can acheive without being complete waste of time.

> 25)  Ready-send and ready-receive.  

0   - what benefit except for some old machines?

> 26)  General process topologies.  

8   - if we have topologies at all, then should do this.

> 27)  Even more neat stuff.  

?   - ???

[stuff deleted]

I think you can see what my staged schedule would be from the above.

> 
> I share John Flower's "EXTREME concern" about the complexity of the current 
> design.  I believe that the MPIF must agree on SOME prioritization list and 
> explicitly decide what is going to be in MPI-1 as soon as possible.

I concur, ambivalently, as I think that it will yet take a little time
for a strong consensus to emerge.

I applaude efforts to generate such a consensus.

> I also 
> feel strongly that we should decide what will be in future MPI versions to 
> give potential users some confidence that MPI will eventually be useful for 
> developing source-code portable programs.   

I am again ambivalent.  I think it important to identify what items
should be suitable for future MPI, but I'm not at all confident that it
will be practical to commit ourselves to a schedule for trying to
standardise such items. It will be harder to agree on standards for the
items which are deferred.

Best Wishes
Lyndon


         /--------------------------------------------------------\
    e||) | Lyndon J Clarke    Edinburgh Parallel Computing Centre | e||) 
    c||c | Tel: 031 650 5021  Email: lyndon@epcc.edinburgh.ac.uk  | c||c 
         \--------------------------------------------------------/


From owner-mpi-comm@CS.UTK.EDU  Wed Mar 10 08:14:38 1993
Received: from CS.UTK.EDU by surfer.EPM.ORNL.GOV (5.61/1.34)
	id AA28523; Wed, 10 Mar 93 08:14:38 -0500
Received: from localhost by CS.UTK.EDU with SMTP (5.61++/2.8s-UTK)
	id AA11106; Wed, 10 Mar 93 08:13:23 -0500
X-Resent-To: mpi-comm@CS.UTK.EDU ; Wed, 10 Mar 1993 08:13:22 EST
Errors-To: owner-mpi-comm@CS.UTK.EDU
Received: from super.super.org by CS.UTK.EDU with SMTP (5.61++/2.8s-UTK)
	id AA11098; Wed, 10 Mar 93 08:13:21 -0500
Received: from b125.super.org by super.super.org (4.1/SMI-4.1)
	id AA20589; Wed, 10 Mar 93 08:13:19 EST
Received: by b125.super.org (4.1/SMI-4.1)
	id AA01744; Wed, 10 Mar 93 08:13:18 EST
Date: Wed, 10 Mar 93 08:13:18 EST
From: lederman@b125.super.org (Steve Huss-Lederman)
Message-Id: <9303101313.AA01744@b125.super.org>
To: mpi-comm@cs.utk.edu
Subject: MPI directions & priorities

I was in the process of composing a note to the committee about what
MPI-1 should compose and was letting it sit overnight when Tom sent
out his message.  Since he has done a nice job I will shorten my
comments.

At the last meeting there were several group and private discussions
about the growing complexity of MPI.  Al has posted his feeling that
point-to-point and collective communications get complex and untested
ideas added but other areas such as dynamic processes are not
considered.  Jon posted about the complexity and now Tom has started a
list of priorities.

I add my voice to these concerns.  I have been hesitant to post
because I don't want it to seem that I think MPI is hopeless.
However, I think it is clear that we cannot adequately complete all
the current proposals in 3 more meetings.  I would propose that we
continue the discussion concerning priorities via e-mail and begin the
next meeting with a whole group meeting to set our course.  At the
higher level we need to decide:

1) How long will the MPI-1 process be allowed to take?  Are we going
to stick to the 6 month deadline or try and extend it?

2) What is going to be in MPI-1?

3) Of the things we leave out of MPI-1 are they going to be proposed
for a later version of MPI?  Should we make sure that MPI-1 is
compatible with the future goals so that major changes in the base
routines is not needed later?

4) If we want to have MPI-#, what mechanism and time scale will be
used to get it done.

I think it is past time to find the forest for the trees.  Global
planning to focus our efforts now could significantly reduce our
discussions and efforts in the short term as deadlines approach.
Furthermore, with a global blueprint we might see a more even handed
approach to different aspects of the standard.  These are just some
thoughts.  I hope the discussion will continue.

Steve
From owner-mpi-comm@CS.UTK.EDU  Wed Mar 10 10:15:06 1993
Received: from CS.UTK.EDU by surfer.EPM.ORNL.GOV (5.61/1.34)
	id AA02371; Wed, 10 Mar 93 10:15:06 -0500
Received: from localhost by CS.UTK.EDU with SMTP (5.61++/2.8s-UTK)
	id AA16993; Wed, 10 Mar 93 10:13:23 -0500
X-Resent-To: mpi-comm@CS.UTK.EDU ; Wed, 10 Mar 1993 10:13:21 EST
Errors-To: owner-mpi-comm@CS.UTK.EDU
Received: from antares.mcs.anl.gov by CS.UTK.EDU with SMTP (5.61++/2.8s-UTK)
	id AA16985; Wed, 10 Mar 93 10:13:18 -0500
Received: from godzilla.mcs.anl.gov by antares.mcs.anl.gov with SMTP id AA03655
  (5.65c/IDA-1.4.4 for <mpi-comm@cs.utk.edu>); Wed, 10 Mar 1993 09:13:16 -0600
From: William Gropp <gropp@mcs.anl.gov>
Received: by godzilla.mcs.anl.gov (4.1/GeneV4)
	id AA05373; Wed, 10 Mar 93 09:13:13 CST
Date: Wed, 10 Mar 93 09:13:13 CST
Message-Id: <9303101513.AA05373@godzilla.mcs.anl.gov>
To: lederman@b125.super.org
Cc: mpi-comm@cs.utk.edu
In-Reply-To: Steve Huss-Lederman's message of Wed, 10 Mar 93 08:13:18 EST <9303101313.AA01744@b125.super.org>
Subject: MPI directions & priorities

One approach that we could take is to describe a set of MPI that is extensible
to the more elaborate facilities but does not yet specify them.  For example,
we could keep the goal of being "thread-safe" and resolve (at least in an
extensible way) the group/context/process-id issues, and then settle on, for
example, somethine like what Rusty and I have called level 3, plus some
collective communication routines.  This would not have everything that I would
want or even consider important, but would be a usable set for casual use.

This is a very different process than just defining a simple set of operations;
it MUST be possible to extend, in a consistent way, MPI to meet new needs.
I'd like to point out that many of the so-called new features are ones that
are in use in some (usually only one) system; in most cases they fulfill
a perceived need.  For MPI to be successful, it must not be incompatible with
these needs.  

I realize that the other side of this is that, by specifying only a subset of
desired functionality, there is the danger of mutually incompatible extensions.
We need to weigh this against the possibility that MPI will become too complex
to be accepted.

Bill
From owner-mpi-comm@CS.UTK.EDU  Wed Mar 10 10:24:04 1993
Received: from CS.UTK.EDU by surfer.EPM.ORNL.GOV (5.61/1.34)
	id AA02512; Wed, 10 Mar 93 10:24:04 -0500
Received: from localhost by CS.UTK.EDU with SMTP (5.61++/2.8s-UTK)
	id AA17488; Wed, 10 Mar 93 10:22:34 -0500
X-Resent-To: mpi-comm@CS.UTK.EDU ; Wed, 10 Mar 1993 10:22:33 EST
Errors-To: owner-mpi-comm@CS.UTK.EDU
Received: from antares.mcs.anl.gov by CS.UTK.EDU with SMTP (5.61++/2.8s-UTK)
	id AA17476; Wed, 10 Mar 93 10:22:29 -0500
Received: from godzilla.mcs.anl.gov by antares.mcs.anl.gov with SMTP id AA03990
  (5.65c/IDA-1.4.4 for <mpi-comm@cs.utk.edu>); Wed, 10 Mar 1993 09:22:24 -0600
From: William Gropp <gropp@mcs.anl.gov>
Received: by godzilla.mcs.anl.gov (4.1/GeneV4)
	id AA05385; Wed, 10 Mar 93 09:22:22 CST
Date: Wed, 10 Mar 93 09:22:22 CST
Message-Id: <9303101522.AA05385@godzilla.mcs.anl.gov>
To: lyndon@epcc.ed.ac.uk
Cc: hender@macaw.fsl.noaa.gov, mpi-comm@cs.utk.edu
In-Reply-To: L J Clarke's message of Wed, 10 Mar 93 01:45:05 GMT <2554.9303100145@subnode.epcc.ed.ac.uk>
Subject: MPI Goals and Scope:  More Details Please?

I'd like to clarify what we mean by

 > We feel that the MPI standard should provide enough information to
 > specify an entire, source-code portable program.  

This is NOT intended to mean that MPI must provide a way to specify ANY (or
even most) source-code portable parallel program.  Rather, given restrictions
strong enough to satisfy a 2/3rds majority ( :) ), a way to specify at least
one source-code portable program.  In the spirit of extensibility, whatever
mechanism is proposed for this simple interface should not preclude non-MPI
solutions for more demanding situations.
Bill
From owner-mpi-comm@CS.UTK.EDU  Wed Mar 10 11:33:20 1993
Received: from CS.UTK.EDU by surfer.EPM.ORNL.GOV (5.61/1.34)
	id AA03903; Wed, 10 Mar 93 11:33:20 -0500
Received: from localhost by CS.UTK.EDU with SMTP (5.61++/2.8s-UTK)
	id AA21975; Wed, 10 Mar 93 11:31:42 -0500
X-Resent-To: mpi-comm@CS.UTK.EDU ; Wed, 10 Mar 1993 11:31:41 EST
Errors-To: owner-mpi-comm@CS.UTK.EDU
Received: from Aurora.CS.MsState.Edu by CS.UTK.EDU with SMTP (5.61++/2.8s-UTK)
	id AA21960; Wed, 10 Mar 93 11:31:39 -0500
Received:  by Aurora.CS.MsState.Edu (4.1/6.0s-FWP);
	   id AA10050; Wed, 10 Mar 93 10:27:36 CST
Date: Wed, 10 Mar 93 10:27:36 CST
From: Tony Skjellum <tony@Aurora.CS.MsState.Edu>
Message-Id: <9303101627.AA10050@Aurora.CS.MsState.Edu>
To: lederman@b125.super.org, gropp@mcs.anl.gov
Subject: Re: MPI directions & priorities
Cc: mpi-comm@cs.utk.edu

We must agree to reconvene about extensions in future.  I also agree
that it would be preferable to specify a whole portable program, but I
think the I/O subject is hard to address right now...

- Tony

----- Begin Included Message -----

From owner-mpi-comm@CS.UTK.EDU Wed Mar 10 09:42:01 1993
X-Resent-To: mpi-comm@CS.UTK.EDU ; Wed, 10 Mar 1993 10:13:21 EST
From: William Gropp <gropp@mcs.anl.gov>
Date: Wed, 10 Mar 93 09:13:13 CST
To: lederman@b125.super.org
Cc: mpi-comm@cs.utk.edu
Subject: MPI directions & priorities
Content-Length: 1193

One approach that we could take is to describe a set of MPI that is extensible
to the more elaborate facilities but does not yet specify them.  For example,
we could keep the goal of being "thread-safe" and resolve (at least in an
extensible way) the group/context/process-id issues, and then settle on, for
example, somethine like what Rusty and I have called level 3, plus some
collective communication routines.  This would not have everything that I would
want or even consider important, but would be a usable set for casual use.

This is a very different process than just defining a simple set of operations;
it MUST be possible to extend, in a consistent way, MPI to meet new needs.
I'd like to point out that many of the so-called new features are ones that
are in use in some (usually only one) system; in most cases they fulfill
a perceived need.  For MPI to be successful, it must not be incompatible with
these needs.  

I realize that the other side of this is that, by specifying only a subset of
desired functionality, there is the danger of mutually incompatible extensions.
We need to weigh this against the possibility that MPI will become too complex
to be accepted.

Bill


----- End Included Message -----

From owner-mpi-comm@CS.UTK.EDU  Wed Mar 10 12:23:22 1993
Received: from CS.UTK.EDU by surfer.EPM.ORNL.GOV (5.61/1.34)
	id AA05096; Wed, 10 Mar 93 12:23:22 -0500
Received: from localhost by CS.UTK.EDU with SMTP (5.61++/2.8s-UTK)
	id AA24792; Wed, 10 Mar 93 12:22:05 -0500
X-Resent-To: mpi-comm@CS.UTK.EDU ; Wed, 10 Mar 1993 12:22:04 EST
Errors-To: owner-mpi-comm@CS.UTK.EDU
Received: from fslg8.fsl.noaa.gov by CS.UTK.EDU with SMTP (5.61++/2.8s-UTK)
	id AA24784; Wed, 10 Mar 93 12:22:01 -0500
Received: by fslg8.fsl.noaa.gov (5.57/Ultrix3.0-C)
	id AA26984; Wed, 10 Mar 93 17:21:17 GMT
Received: by macaw.fsl.noaa.gov (4.1/SMI-4.1)
	id AA07764; Wed, 10 Mar 93 10:20:02 MST
Date: Wed, 10 Mar 93 10:20:02 MST
From: hender@macaw.fsl.noaa.gov (Tom Henderson)
Message-Id: <9303101720.AA07764@macaw.fsl.noaa.gov>
To: mpi-comm@cs.utk.edu
Subject: Re: MPI Goals and Scope: More Details Please?
Cc: lyndon@epcc.edinburgh.ac.uk


Lyndon writes,

> Don't you think it will be some time before the world is ready to even
> think about standardisation of "parallel I/O".  I can't imagine trying
> to do such a thing at the moment. 

I agree.  I'm not proposing we do this now.  I'm proposing that we do it when 
it is as well understood as message passing is now.  I think "eventual 
standardization of parallel I/O" should be a stated goal to give potential MPI 
users confidence that MPI won't be just another message-passing library.  

> [stuff deleted...]
> 
> > I certainly won't use MPI unless I believe that this will happen with some 
> > version of MPI.  
> 
> I reckon you will, actually, because although it won't give you the
> portability asked for above, it will be your best way of getting some
> portability. 

I think Lyndon has a good point here.  I will use MPI if:

    A)  It gives me as much "portability" as existing solutions OR I believe 
        that this will eventually happen.  
    B)  It gives me equal or better "performance".  

I will borrow/build/buy whatever additional stuff I need to make my programs 
more "portable", if necessary (required for my current project).  I am hopeful 
that A will happen with some version of MPI.  Vendor participation gives me 
some confidence that B will happen.  

> > John Flower has proposed one 
> > prioritization.  Here's another (from my perspective as a user):  
> 
> I'm going to walk down this list and give marks out of ten, with ten as
> highest priority and 0 as lowest priority, from my point of view, and
> some justification, from my point of view. 
> 
> [list deleted...]

Thanks Lyndon, this is exactly what I was looking for.  At this point I feel 
it is extremely important that the MPIF come to some agreement about a list 
like this.  It is a lot more important than my actually liking what's on the 
list!  :)

> [stuff deleted...]
> 
> I am again ambivalent.  I think it important to identify what items
> should be suitable for future MPI, but I'm not at all confident that it
> will be practical to commit ourselves to a schedule for trying to
> standardise such items. It will be harder to agree on standards for the
> items which are deferred.
> 
> Best Wishes
> Lyndon
> 

I didn't mean to imply an absolute time-frame for the introduction of future 
MPI features.  (It doesn't make sense for the more "researchy" stuff.)  
Prioritization is more important to me than a strict schedule.  

Tom Henderson
NOAA Forecast Systems Laboratory
hender@fsl.noaa.gov


From owner-mpi-comm@CS.UTK.EDU  Wed Mar 10 12:32:07 1993
Received: from CS.UTK.EDU by surfer.EPM.ORNL.GOV (5.61/1.34)
	id AA05213; Wed, 10 Mar 93 12:32:07 -0500
Received: from localhost by CS.UTK.EDU with SMTP (5.61++/2.8s-UTK)
	id AA25472; Wed, 10 Mar 93 12:30:52 -0500
X-Resent-To: mpi-comm@CS.UTK.EDU ; Wed, 10 Mar 1993 12:30:51 EST
Errors-To: owner-mpi-comm@CS.UTK.EDU
Received: from daedalus.epcc.ed.ac.uk by CS.UTK.EDU with SMTP (5.61++/2.8s-UTK)
	id AA25460; Wed, 10 Mar 93 12:30:47 -0500
Date: Wed, 10 Mar 93 17:30:30 GMT
Message-Id: <3289.9303101730@subnode.epcc.ed.ac.uk>
From: L J Clarke <lyndon@epcc.ed.ac.uk>
Subject: Re: MPI Goals and Scope: More Details Please?
To: hender@macaw.fsl.noaa.gov (Tom Henderson), mpi-comm@cs.utk.edu
In-Reply-To: Tom Henderson's message of Wed, 10 Mar 93 10:20:02 MST
Reply-To: lyndon@epcc.ed.ac.uk
Cc: lyndon@epcc.edinburgh.ac.uk

> > I'm going to walk down this list and give marks out of ten, with ten as
> > highest priority and 0 as lowest priority, from my point of view, and
> > some justification, from my point of view. 
> > 
> > [list deleted...]
> 
> Thanks Lyndon, this is exactly what I was looking for.  

Oh, good, glad I did that then!

> At this point I feel 
> it is extremely important that the MPIF come to some agreement about a list 
> like this.  

AGREED!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

> 
> I didn't mean to imply an absolute time-frame for the introduction of future 
> MPI features.  (It doesn't make sense for the more "researchy" stuff.)  
> Prioritization is more important to me than a strict schedule.  

Sorry, Tom, I misread your email. 

It's over and out for a week from me, colleagues, as I'm visiting my
folks for the weekend and a couple of work meetings - surprise surprise,
one of them to talk about MPI to a potential user, urgle urgle urgle!
May your mail boxes be temporarily lighter ;-)

Best Wishes 
Lyndon

         /--------------------------------------------------------\
    e||) | Lyndon J Clarke    Edinburgh Parallel Computing Centre | e||) 
    c||c | Tel: 031 650 5021  Email: lyndon@epcc.edinburgh.ac.uk  | c||c 
         \--------------------------------------------------------/


From owner-mpi-comm@CS.UTK.EDU  Wed Mar 10 12:43:17 1993
Received: from CS.UTK.EDU by surfer.EPM.ORNL.GOV (5.61/1.34)
	id AA05464; Wed, 10 Mar 93 12:43:17 -0500
Received: from localhost by CS.UTK.EDU with SMTP (5.61++/2.8s-UTK)
	id AA26174; Wed, 10 Mar 93 12:41:59 -0500
X-Resent-To: mpi-comm@CS.UTK.EDU ; Wed, 10 Mar 1993 12:41:58 EST
Errors-To: owner-mpi-comm@CS.UTK.EDU
Received: from fslg8.fsl.noaa.gov by CS.UTK.EDU with SMTP (5.61++/2.8s-UTK)
	id AA26164; Wed, 10 Mar 93 12:41:55 -0500
Received: by fslg8.fsl.noaa.gov (5.57/Ultrix3.0-C)
	id AA27092; Wed, 10 Mar 93 17:41:49 GMT
Received: by macaw.fsl.noaa.gov (4.1/SMI-4.1)
	id AA07798; Wed, 10 Mar 93 10:40:35 MST
Date: Wed, 10 Mar 93 10:40:35 MST
From: hender@macaw.fsl.noaa.gov (Tom Henderson)
Message-Id: <9303101740.AA07798@macaw.fsl.noaa.gov>
To: mpi-comm@cs.utk.edu
Subject: Re: MPI Goals and Scope:  More Details Please?
Cc: gropp@mcs.anl.gov

Bill writes,

> I'd like to clarify what we mean by
> 
>  > We feel that the MPI standard should provide enough information to
>  > specify an entire, source-code portable program.  
> 
> This is NOT intended to mean that MPI must provide a way to specify ANY (or
> even most) source-code portable parallel program.  Rather, given restrictions
> strong enough to satisfy a 2/3rds majority ( :) ), a way to specify at least
> one source-code portable program.  In the spirit of extensibility, whatever
> mechanism is proposed for this simple interface should not preclude non-MPI
> solutions for more demanding situations.
> Bill
> 

Could you give an example of the one source-code portable program (or class of 
programs) you expect MPI to support in current and future versions?  I think 
that might help me understand your statement a bit better.  

Also, what do you mean by "non-MPI solution" and "demanding situations"?  

Thanks,

Tom Henderson
NOAA Forecast Systems Laboratory
hender@fsl.noaa.gov


From owner-mpi-comm@CS.UTK.EDU  Wed Mar 10 13:19:43 1993
Received: from CS.UTK.EDU by surfer.EPM.ORNL.GOV (5.61/1.34)
	id AA06396; Wed, 10 Mar 93 13:19:43 -0500
Received: from localhost by CS.UTK.EDU with SMTP (5.61++/2.8s-UTK)
	id AA28116; Wed, 10 Mar 93 13:18:26 -0500
X-Resent-To: mpi-comm@CS.UTK.EDU ; Wed, 10 Mar 1993 13:18:25 EST
Errors-To: owner-mpi-comm@CS.UTK.EDU
Received: from pnlg.pnl.gov by CS.UTK.EDU with SMTP (5.61++/2.8s-UTK)
	id AA28057; Wed, 10 Mar 93 13:18:02 -0500
Received: from carbon.pnl.gov (130.20.188.38) by pnlg.pnl.gov; Wed, 10 Mar 93
 10:10 PST
Received: from sodium.pnl.gov by carbon.pnl.gov (4.1/SMI-4.1) id AA22798; Wed,
 10 Mar 93 10:08:19 PST
Received: by sodium.pnl.gov (4.1/SMI-4.0) id AA20772; Wed, 10 Mar 93 10:08:13
 PST
Date: Wed, 10 Mar 93 10:08:13 PST
From: d39135@sodium.pnl.gov
Subject: implementation assumptions
To: d39135@sodium.pnl.gov, jim@meiko.co.uk, lyndon@epcc.edinburgh.ac.uk,
        mpi-comm@cs.utk.edu, mpi-context@cs.utk.edu, ranka@top.cis.syr.edu,
        tony@Aurora.CS.MsState.Edu
Message-Id: <9303101808.AA20772@sodium.pnl.gov>
X-Envelope-To: mpi-context@cs.utk.edu, mpi-comm@cs.utk.edu

In a discussion we are having within the contexts subcommittee, 
Tony Skjellum commented that:

> ...  I want to make sure that we do
> not provide illusory improvements to the standard, while letting other
> parts of it exceed ours in the unscalability department, or let
> implementations qualify as compliant, whose unscalability disables the
> implied scalability of our syntax/semantics...

I agree.  

This is why (I think) proposals should explicitly address performance.

If a proposal assumes that the cost of a particular function is
irrelevant, it should say that.

If a proposal assumes that a particular function is going to be
cheap, it should justify that assumption by naming a time/memory
price and outlining an implementation that can achieve it.

Sometimes the suggested implementation will reveal further
assumptions that have wide implications.

Ideally, each proposal will eventually evolve a set of bottom-line 
assumptions that are consistent and believable.

These comments are particularly addressed to those of us
beating on contexts and groups, where there seem to be lots of
subtle interactions.

But I am cross-posting them to the whole committee as food for thought...

--Rik ("The Skeptic") Littlefield
From owner-mpi-comm@CS.UTK.EDU  Wed Mar 10 13:22:14 1993
Received: from CS.UTK.EDU by surfer.EPM.ORNL.GOV (5.61/1.34)
	id AA06459; Wed, 10 Mar 93 13:22:14 -0500
Received: from localhost by CS.UTK.EDU with SMTP (5.61++/2.8s-UTK)
	id AA28196; Wed, 10 Mar 93 13:20:20 -0500
X-Resent-To: mpi-comm@CS.UTK.EDU ; Wed, 10 Mar 1993 13:20:18 EST
Errors-To: owner-mpi-comm@CS.UTK.EDU
Received: from fslg8.fsl.noaa.gov by CS.UTK.EDU with SMTP (5.61++/2.8s-UTK)
	id AA28188; Wed, 10 Mar 93 13:20:16 -0500
Received: by fslg8.fsl.noaa.gov (5.57/Ultrix3.0-C)
	id AA27261; Wed, 10 Mar 93 18:20:08 GMT
Received: by macaw.fsl.noaa.gov (4.1/SMI-4.1)
	id AA07839; Wed, 10 Mar 93 11:18:54 MST
Date: Wed, 10 Mar 93 11:18:54 MST
From: hender@macaw.fsl.noaa.gov (Tom Henderson)
Message-Id: <9303101818.AA07839@macaw.fsl.noaa.gov>
To: mpi-comm@cs.utk.edu
Subject: Re: MPI directions & priorities
Cc: lederman@b125.super.org


Steve writes,

> 1) How long will the MPI-1 process be allowed to take?  Are we going
> to stick to the 6 month deadline or try and extend it?

I'd like to stick to 6 months for MPI-1.  I'm willing to have less 
functionality in MPI-1 as long as there is a plan for further upgrade.  

> 2) What is going to be in MPI-1?

Good question.  :)

> 3) Of the things we leave out of MPI-1 are they going to be proposed
> for a later version of MPI?  Should we make sure that MPI-1 is
> compatible with the future goals so that major changes in the base
> routines is not needed later?

Yes and Yes.  

> 4) If we want to have MPI-#, what mechanism and time scale will be
> used to get it done.

Maybe next year we meet again for MPI-2?  We should have some experience with 
MPI-1 by then.  (...wait a minute, I only signed on for a six-month tour...)

> I think it is past time to find the forest for the trees.  Global
> planning to focus our efforts now could significantly reduce our
> discussions and efforts in the short term as deadlines approach.
> Furthermore, with a global blueprint we might see a more even handed
> approach to different aspects of the standard.  These are just some
> thoughts.  I hope the discussion will continue.

Me too.  

> Steve

Tom Henderson
NOAA Forecast Systems Laboratory
hender@fsl.noaa.gov


From owner-mpi-comm@CS.UTK.EDU  Wed Mar 10 13:22:55 1993
Received: from CS.UTK.EDU by surfer.EPM.ORNL.GOV (5.61/1.34)
	id AA06475; Wed, 10 Mar 93 13:22:55 -0500
Received: from localhost by CS.UTK.EDU with SMTP (5.61++/2.8s-UTK)
	id AA28313; Wed, 10 Mar 93 13:21:38 -0500
X-Resent-To: mpi-comm@CS.UTK.EDU ; Wed, 10 Mar 1993 13:21:37 EST
Errors-To: owner-mpi-comm@CS.UTK.EDU
Received: from fslg8.fsl.noaa.gov by CS.UTK.EDU with SMTP (5.61++/2.8s-UTK)
	id AA28305; Wed, 10 Mar 93 13:21:34 -0500
Received: by fslg8.fsl.noaa.gov (5.57/Ultrix3.0-C)
	id AA27273; Wed, 10 Mar 93 18:21:30 GMT
Received: by nipmuc.fsl.noaa.gov (4.1/SMI-4.1)
	id AA10163; Wed, 10 Mar 93 11:24:00 MST
Date: Wed, 10 Mar 93 11:24:00 MST
From: hart@nipmuc.fsl.noaa.gov (Leslie Hart)
Message-Id: <9303101824.AA10163@nipmuc.fsl.noaa.gov>
To: mpi-comm@cs.utk.edu
Subject: Re: MPI directions & priorities

Bill Gropp sez:
> One approach that we could take is to describe a set of MPI that is extensible
> to the more elaborate facilities but does not yet specify them.  For example,
> we could keep the goal of being "thread-safe" and resolve (at least in an
> extensible way) the group/context/process-id issues, and then settle on, for
> example, somethine like what Rusty and I have called level 3, plus some
> collective communication routines. This would not have everything that I would
> want or even consider important, but would be a usable set for casual use.
> 
> This is a very different process than just defining a simple set of operations;
> it MUST be possible to extend, in a consistent way, MPI to meet new needs.
> I'd like to point out that many of the so-called new features are ones that
> are in use in some (usually only one) system; in most cases they fulfill
> a perceived need.  For MPI to be successful, it must not be incompatible with
> these needs.  
> 
> I realize that the other side of this is that, by specifying only a subset of
> desired functionality, there is the danger of mutually incompatible extensions.
> We need to weigh this against the possibility that MPI will become too complex
> to be accepted.
>
> Bill

I agree with Bill, I think whatever we produce for MPI-1 should be extensible.  I
think we should consider carefully our semantics and syntax to not prohibit 
extensibility.  An approach that has been proposed by us (Tom Henderson and myself)
as well as by other people is opaque messages.  This allows an initial implementation
to support a relatively simple to use subset while allowing vendor extensions and 
future upgrades to MPI-1.  We could perhaps specify some core of MPI-1 (not a new
idea) as well as provide semantic and syntatical guidance to vendors for their 
extensions (e.g. a clue about MPI-2 if you will).  The opaque message object allows
these extensions to be put in place without an explosion of syntax.

Leslie Hart (hart@fsl.noaa.gov)

P.S  This may fit into Rusty & Bill's Level 1 or Level 2 proposal neatly.
From owner-mpi-comm@CS.UTK.EDU  Wed Mar 10 13:26:58 1993
Received: from CS.UTK.EDU by surfer.EPM.ORNL.GOV (5.61/1.34)
	id AA06583; Wed, 10 Mar 93 13:26:58 -0500
Received: from localhost by CS.UTK.EDU with SMTP (5.61++/2.8s-UTK)
	id AA28684; Wed, 10 Mar 93 13:25:59 -0500
X-Resent-To: mpi-comm@CS.UTK.EDU ; Wed, 10 Mar 1993 13:25:58 EST
Errors-To: owner-mpi-comm@CS.UTK.EDU
Received: from antares.mcs.anl.gov by CS.UTK.EDU with SMTP (5.61++/2.8s-UTK)
	id AA28669; Wed, 10 Mar 93 13:25:55 -0500
Received: from godzilla.mcs.anl.gov by antares.mcs.anl.gov with SMTP id AA10195
  (5.65c/IDA-1.4.4 for <mpi-comm@cs.utk.edu>); Wed, 10 Mar 1993 12:25:52 -0600
From: William Gropp <gropp@mcs.anl.gov>
Received: by godzilla.mcs.anl.gov (4.1/GeneV4)
	id AA22431; Wed, 10 Mar 93 12:25:51 CST
Date: Wed, 10 Mar 93 12:25:51 CST
Message-Id: <9303101825.AA22431@godzilla.mcs.anl.gov>
To: hender@macaw.fsl.noaa.gov
Cc: mpi-comm@cs.utk.edu
In-Reply-To: Tom Henderson's message of Wed, 10 Mar 93 10:40:35 MST <9303101740.AA07798@macaw.fsl.noaa.gov>
Subject: MPI Goals and Scope:  More Details Please?

   X-Resent-To: mpi-comm@CS.UTK.EDU ; Wed, 10 Mar 1993 12:41:58 EST
   Date: Wed, 10 Mar 93 10:40:35 MST
   From: hender@macaw.fsl.noaa.gov (Tom Henderson)

   Could you give an example of the one source-code portable program (or class of 
   programs) you expect MPI to support in current and future versions?  I think 
   that might help me understand your statement a bit better.  

Basically, SPMD programs that have "simple" I/O requirements.  For example,
we could ask the following:

   IF fprintf (C) or write (Fortran) are supported, THEN each use writes
   to the selected file, with NO guarentees on the ordering of output.
   Something similiar for fscanf/read .

Thus, we can now write the following two programs (using the MPI_main startup
approach):

    MPI_main()
    {
    printf( "Hello world\n" );
    }

and 

   MPI_main()
   {
   int i;
   for (i=0; i<MPI_numtids( MPI_GroupAll ); i++) {
	if (i == MPI_RankInGroup( MPI_MyTid(), MPI_GroupAll )) {
	    printf( "Hello world from task %d\n", i );
	    fflush( stdout );
            }
        MPI_barrier( MPI_GroupAll );
        }
    }

This second program could also be implemented by passing a token rather than
a barrier; I've used this for simplicity.

   Also, what do you mean by "non-MPI solution" and "demanding situations"?  

Everything else, such as dynamically creating new tasks, fully MPMD (multiple
Program multiple data) applications, etc.  
Bill
From owner-mpi-comm@CS.UTK.EDU  Wed Mar 10 13:32:57 1993
Received: from CS.UTK.EDU by surfer.EPM.ORNL.GOV (5.61/1.34)
	id AA06882; Wed, 10 Mar 93 13:32:57 -0500
Received: from localhost by CS.UTK.EDU with SMTP (5.61++/2.8s-UTK)
	id AA29062; Wed, 10 Mar 93 13:31:52 -0500
X-Resent-To: mpi-comm@CS.UTK.EDU ; Wed, 10 Mar 1993 13:31:50 EST
Errors-To: owner-mpi-comm@CS.UTK.EDU
Received: from fslg8.fsl.noaa.gov by CS.UTK.EDU with SMTP (5.61++/2.8s-UTK)
	id AA29049; Wed, 10 Mar 93 13:31:48 -0500
Received: by fslg8.fsl.noaa.gov (5.57/Ultrix3.0-C)
	id AA27297; Wed, 10 Mar 93 18:31:44 GMT
Received: by nipmuc.fsl.noaa.gov (4.1/SMI-4.1)
	id AA10237; Wed, 10 Mar 93 11:34:13 MST
Date: Wed, 10 Mar 93 11:34:13 MST
From: hart@nipmuc.fsl.noaa.gov (Leslie Hart)
Message-Id: <9303101834.AA10237@nipmuc.fsl.noaa.gov>
To: mpi-comm@cs.utk.edu
Subject: Re: MPI directions & priorities


> From: Tony Skjellum <tony@aurora.cs.msstate.edu>
> To: lederman@b125.super.org, gropp@mcs.anl.gov
> Subject: Re: MPI directions & priorities
> Cc: mpi-comm@cs.utk.edu
> 
> We must agree to reconvene about extensions in future.  I also agree
> that it would be preferable to specify a whole portable program, but I
> think the I/O subject is hard to address right now...
> 
> - Tony

I also understood that the process would be ongoing and hope that it
will continue to track existing practice.  I think some parts of the 
I/O subject are hard to address right now, but there is some existing
common practice.  Parasoft, Intel, nCUBE and TMC all have some sort of
parallel I/O specification.  There are ways to force the effect of
a printf or of an fseek/fread/fwrite to be deterministic.  I believe that
the common practice could be standardized, maybe not in the time frame for
MPI-1 but probably for MPI-2 (which is where it appeared in Tom's posting).

Regards,
Leslie
From owner-mpi-comm@CS.UTK.EDU  Wed Mar 10 14:03:55 1993
Received: from CS.UTK.EDU by surfer.EPM.ORNL.GOV (5.61/1.34)
	id AA07595; Wed, 10 Mar 93 14:03:55 -0500
Received: from localhost by CS.UTK.EDU with SMTP (5.61++/2.8s-UTK)
	id AA01003; Wed, 10 Mar 93 14:02:53 -0500
X-Resent-To: mpi-comm@CS.UTK.EDU ; Wed, 10 Mar 1993 14:02:52 EST
Errors-To: owner-mpi-comm@CS.UTK.EDU
Received: from sampson.ccsf.caltech.edu by CS.UTK.EDU with SMTP (5.61++/2.8s-UTK)
	id AA00994; Wed, 10 Mar 93 14:02:47 -0500
Received: from elephant by sampson.ccsf.caltech.edu with SMTP id AA08764
  (5.65c/IDA-1.4.4 for mpi-comm@cs.utk.edu); Wed, 10 Mar 1993 11:02:44 -0800
Received: from lion.parasoft by elephant (4.1/SMI-4.1)
	id AA26008; Wed, 10 Mar 93 10:55:24 PST
Received: by lion.parasoft (4.1/SMI-4.1)
	id AA26815; Wed, 10 Mar 93 10:55:34 PST
Date: Wed, 10 Mar 93 10:55:34 PST
From: jwf@lion.Parasoft.COM (Jon Flower)
Message-Id: <9303101855.AA26815@lion.parasoft>
To: mpi-comm@cs.utk.edu

To: mpi-comm@cs.utk.edu
Re: A way of prioritizing?

Something Bill said seemed to strike a chord in my mind:

> This is a very different process than just defining a simple 
> set of operations; it MUST be possible to extend, in a 
> consistent way, MPI to meet new needs.  I'd like to point 
> out that many of the so-called new features are ones that
> are in use in some (usually only one) system; in most cases 
> they fulfill a perceived need.  For MPI to be successful, 
> it must not be incompatible with these needs.

I also have the feeling that a lot of the things that we're
trying to put in MPI are really only based on experience
(or even need) on a single machine. Sometimes that machine
may even be "pre-history".

My question is: Is incorporating into MPI a feature that is
only based on a single machine any better than allowing a 
vendor-specific extension on that machine?

Take "ready-receive", for example. Adding this to MPI means
that users can justifiably put it in their portable codes. If
they do, however, what should they assume about it? That it's
faster or slower than the non-ready receive? I assume that
there will be systems in which it's slower than the non-ready
recv. because of the extra protocol that the application might
need to ensure that the ready-recv.'s don't crash. In this
case, are we expecting users to put code in their applications 
that can switch between ready-recv, and non-ready-recv semantics 
based on the hardware they're running on? Although I think 
there are some users who will do this (and I would encourage 
library developers to do so) I think this is far beyond the 
lengths that most users will go to.

So what am I suggesting? 

---------------------------------------------------------
My suggestion (which I expect to be roundly rejected) is 
that the MPI document ONLY contain the stuff that is current
practice. This includes EVERYTHING required to run at least
a common class of programs - i.e., MPI_INIT or some such.

These things should be designed to maximize ease of use and
learning and encourage portability.  By this I am including 
performance level portability. I would like to not have
things in the spec. that run well on some machines and 
poorly on others. I would include a requirement that a
conforming implementation include either documents or 
(preferably) programs from which a user could assess 
the performance of the various routines.

All the other things that are off-shoots of requirements 
for odd-machines or otherwise more advanced should go in
Appendices or "Annexes" (Ada notation(!)) ***AND WOULD NOT
BE REQUIRED BY A CONFORMING IMPLEMENTATION OF MPI ***.
---------------------------------------------------------

The effect I am after is that the core MPI standard is simple,
effective and encourages users to write code. The annexes 
essentially say to vendors; "If you want to support an 
advanced feature that will really help on your machine, 
please do it this way so that my programs that use it 
will be portable."

This is similar to Bill & Rusty's multi-level scenario except 
that I wouldn't make the lower levels compulsory.

My hope is that two things will happen if we adopt this
strategy:

    a) Details of things that go in Annexes can be 
       postponed or left vague, or even left to specially
       interested groups to define, but we will definitely
       have something that could be used by an application
       developer at the end of the six months.
    b) The MPI core would be smaller which will encourage
       users/vendors to make implementations, and to optimize
       the #$%$% out of them.

If this concept is acceptable I would suggest that someone
prepare a list of topics, in quite great detail, and we 
all give them grades out of ten (via e-mail), just as 
Lyndon did. Someone with experience with statistics 
could analyze the results and give us weighted rankings
at the next meeting. 

We could then prioritize according to this list and 
also make guided decisions as to what should go in the Annexes.
I would then suggest that we go back to the small sub-committee
approach to putting the Annexes together rather than our current
"committee-of-the-whole" style which seems to encourage hour-long
"arguments" followed by 35-0 votes!

	Jon Flower

p.s. Having suggested a pile of work I should say who's going to
     do it. In the absence of any volunteers I might be persuaded
     to come up with a list of issues on which we should score. I'm
     not sure my statistical skills amount to anything much more 
     that simple averages, so someone else could certainly do better
     than I.

     I would be very interested in working with a group/sub-committee
     trying to get up a set of MPI-compliant performance evaluation 
     standards.
From owner-mpi-comm@CS.UTK.EDU  Wed Mar 10 15:32:12 1993
Received: from CS.UTK.EDU by surfer.EPM.ORNL.GOV (5.61/1.34)
	id AA09642; Wed, 10 Mar 93 15:32:12 -0500
Received: from localhost by CS.UTK.EDU with SMTP (5.61++/2.8s-UTK)
	id AA07600; Wed, 10 Mar 93 15:30:40 -0500
X-Resent-To: mpi-comm@CS.UTK.EDU ; Wed, 10 Mar 1993 15:30:38 EST
Errors-To: owner-mpi-comm@CS.UTK.EDU
Received: from pnlg.pnl.gov by CS.UTK.EDU with SMTP (5.61++/2.8s-UTK)
	id AA07590; Wed, 10 Mar 93 15:30:35 -0500
Received: from carbon.pnl.gov (130.20.188.38) by pnlg.pnl.gov; Wed, 10 Mar 93
 12:29 PST
Received: from sodium.pnl.gov by carbon.pnl.gov (4.1/SMI-4.1) id AA24307; Wed,
 10 Mar 93 12:27:24 PST
Received: by sodium.pnl.gov (4.1/SMI-4.0) id AA21996; Wed, 10 Mar 93 12:27:21
 PST
Date: Wed, 10 Mar 93 12:27:21 PST
From: d39135@sodium.pnl.gov
Subject: RE: MPI directions & priorities
To: gropp@mcs.anl.gov, lederman@b125.super.org, tony@Aurora.CS.MsState.Edu
Cc: d39135@sodium.pnl.gov, mpi-comm@cs.utk.edu
Message-Id: <9303102027.AA21996@sodium.pnl.gov>
X-Envelope-To: mpi-comm@cs.utk.edu

> We must agree to reconvene about extensions in future.  I also agree
> that it would be preferable to specify a whole portable program, but I
> think the I/O subject is hard to address right now...
> 
> - Tony

I presume that Tony speaks of parallel I/O.  

I agree that parallel I/O is too hard for now.

But I think that we have to specify at least some minimum
serial I/O capability.  

I would buy off on something as simple as

 . there exists one process that can do serial I/O in the standard
   fashion for the language (e.g., printf() or WRITE(*,*) )

 . the tid of that process can be obtained from MPI (in any process)

Example:

   if (mytid == MPI_IOROOT())
   {  printf ("I'm the designated serial I/O process\n");
   }

--Rik Littlefield
From owner-mpi-comm@CS.UTK.EDU  Wed Mar 10 15:37:36 1993
Received: from CS.UTK.EDU by surfer.EPM.ORNL.GOV (5.61/1.34)
	id AA09805; Wed, 10 Mar 93 15:37:36 -0500
Received: from localhost by CS.UTK.EDU with SMTP (5.61++/2.8s-UTK)
	id AA08036; Wed, 10 Mar 93 15:36:28 -0500
X-Resent-To: mpi-comm@CS.UTK.EDU ; Wed, 10 Mar 1993 15:36:27 EST
Errors-To: owner-mpi-comm@CS.UTK.EDU
Received: from fslg8.fsl.noaa.gov by CS.UTK.EDU with SMTP (5.61++/2.8s-UTK)
	id AA08022; Wed, 10 Mar 93 15:36:25 -0500
Received: by fslg8.fsl.noaa.gov (5.57/Ultrix3.0-C)
	id AA27653; Wed, 10 Mar 93 20:36:21 GMT
Received: by macaw.fsl.noaa.gov (4.1/SMI-4.1)
	id AA08016; Wed, 10 Mar 93 13:35:06 MST
Date: Wed, 10 Mar 93 13:35:06 MST
From: hender@macaw.fsl.noaa.gov (Tom Henderson)
Message-Id: <9303102035.AA08016@macaw.fsl.noaa.gov>
To: jwf@lion.parasoft.com
Subject: Annexes, etc.
Cc: mpi-comm@cs.utk.edu


Jon,

> My suggestion (which I expect to be roundly rejected) is 
> that the MPI document ONLY contain the stuff that is current
> practice. This includes EVERYTHING required to run at least
> a common class of programs - i.e., MPI_INIT or some such.
> 
> These things should be designed to maximize ease of use and
> learning and encourage portability.  By this I am including 
> performance level portability. I would like to not have
> things in the spec. that run well on some machines and 
> poorly on others. I would include a requirement that a
> conforming implementation include either documents or 
> (preferably) programs from which a user could assess 
> the performance of the various routines.
> 
> All the other things that are off-shoots of requirements 
> for odd-machines or otherwise more advanced should go in
> Appendices or "Annexes" (Ada notation(!)) ***AND WOULD NOT
> BE REQUIRED BY A CONFORMING IMPLEMENTATION OF MPI ***.

Would the MPIF make any commitment to including "Annex" features in future 
MPI versions?  Would there be any future MPI versions?  Would you mind 
providing a bit more detail on what you feel are a "common class of 
programs"?  (Gee, I don't ask for much...  :-)  

> If this concept is acceptable I would suggest that someone
> prepare a list of topics, in quite great detail, and we 
> all give them grades out of ten (via e-mail), just as 
> Lyndon did. Someone with experience with statistics 
> could analyze the results and give us weighted rankings
> at the next meeting. 

What level of detail do you have in mind?  Could you give an example?  I like 
this idea.  Hashing this out over e-mail could save us a lot of pointless 
wrangling at the next meeting.  

Tom

P.S.  Jon, my apologies for mis-spellings in previous messages!  :)

From owner-mpi-comm@CS.UTK.EDU  Thu Mar 11 05:10:18 1993
Received: from CS.UTK.EDU by surfer.EPM.ORNL.GOV (5.61/1.34)
	id AA25347; Thu, 11 Mar 93 05:10:18 -0500
Received: from localhost by CS.UTK.EDU with SMTP (5.61++/2.8s-UTK)
	id AA11372; Thu, 11 Mar 93 05:08:22 -0500
X-Resent-To: mpi-comm@CS.UTK.EDU ; Thu, 11 Mar 1993 05:08:21 EST
Errors-To: owner-mpi-comm@CS.UTK.EDU
Received: from daedalus.epcc.ed.ac.uk by CS.UTK.EDU with SMTP (5.61++/2.8s-UTK)
	id AA11362; Thu, 11 Mar 93 05:08:16 -0500
Date: Thu, 11 Mar 93 10:07:58 GMT
Message-Id: <3792.9303111007@subnode.epcc.ed.ac.uk>
From: L J Clarke <lyndon@epcc.ed.ac.uk>
Subject: minutes?
To: mpi-comm@cs.utk.edu
Reply-To: lyndon@epcc.ed.ac.uk

I never saw any minutes for the February meeting yet, perhaps I've been
expecting them too early.  Please, can someone let me know when they are
expected to be circulated. 

Best Wishes
Lyndon


         /--------------------------------------------------------\
    e||) | Lyndon J Clarke    Edinburgh Parallel Computing Centre | e||) 
    c||c | Tel: 031 650 5021  Email: lyndon@epcc.edinburgh.ac.uk  | c||c 
         \--------------------------------------------------------/


From owner-mpi-comm@CS.UTK.EDU  Thu Mar 11 06:02:48 1993
Received: from CS.UTK.EDU by surfer.EPM.ORNL.GOV (5.61/1.34)
	id AA07862; Thu, 11 Mar 93 06:02:48 -0500
Received: from localhost by CS.UTK.EDU with SMTP (5.61++/2.8s-UTK)
	id AA18258; Thu, 11 Mar 93 06:01:26 -0500
X-Resent-To: mpi-comm@CS.UTK.EDU ; Thu, 11 Mar 1993 06:01:25 EST
Errors-To: owner-mpi-comm@CS.UTK.EDU
Received: from daedalus.epcc.ed.ac.uk by CS.UTK.EDU with SMTP (5.61++/2.8s-UTK)
	id AA18250; Thu, 11 Mar 93 06:01:20 -0500
Date: Thu, 11 Mar 93 11:01:15 GMT
Message-Id: <3852.9303111101@subnode.epcc.ed.ac.uk>
From: L J Clarke <lyndon@epcc.ed.ac.uk>
Subject: regarding discussion of directions and priorities
To: mpi-comm@cs.utk.edu
Reply-To: lyndon@epcc.ed.ac.uk

Dear MPI Colleagues

I am shortly to give a presentation regarding MPI to a potential end
user of some imprtance within the UK.  In preparation for this, I have
spent the last hour of this morning looking back over the discussions on
mpi-comm and various subcommittees. 

The single thing which most struck me was that since March 9 the content
on mpi-comm has been dominated by discussion of directions and
priorities for MPI.  I recorded 20 mail messages in total from 8
individuals.  There were preceeding discussions of this nature on
mpi-pt2pt dating from March 4.  The discussions indicate to me that
there are some rather concerned committee members. 

It would appear, to my mind at least, that different committee members
have different views of the extant directions and priorities of MPI, and
of desired directions and priorities for MPI.  I am sure that I have a
different view from some other members of MPI. 

In order to make satisfactory progress in the process of interface
definition, which is apparently not occuring at the moment, I believe
that there would indeed be advantage in describing and formally agreeing
the directions of MPI and a set of priorities within those directions. 
I applaude efforts to create consensus regarding directions and
priorities.  I also believe that, from the point of view of the
perception of MPI of individuals and organisations not directly involved
in the committee, there is advantage in publicising the agreed
directions of MPI. 

In order to make satisfactory progress in the process of determining
directions and priorities, I believe that there would be advantage in
describing and formally agreeing a framework within which we can agree
on such directions and priorities.  Sadly, I do not observe such a
framework in operation, and I am skeptical whether MPI can succeed
without such a framework. 

I would therefore suggest that the immediate priorities for MPI as as
follows: 

1. Discuss and establish framework within which directions for MPI are
assessed.

2. Discuss and establish directions for MPI within agreed framework.

3. Discuss and establish priorities for MPI within agreed directions.

4. Review proposals in all subcommittees within agreed priorities.

5. Extend and complete proposals as necessary within terms of 3 and 4.

As a suggestion, can we all describe what we mean by "common practice",
a starting point for framework discussion? Some of the 8 mentioned above
have already done this, to some extent, which I also applaud. 

It seems to me that time demands 1,2 and 3 must occur primarily by
email.  I would suggest that these should be formally accepted at the
beginning of the next meeting.  From a practical point of view, I
further suggest that the next meeting should call a meeting of the whole
committee for this purpose, and we should be prepared to hold said
meeting on the Wednesday morning, on order to allow the subcommittees to
make progress with 4 and 5. 

Now my taxi is waiting, and I must go off-line for a week.  I apologise
to you all that I will not be able to follow up this somewhat despondent
message for 6 days. Good luck!

Best Wishes
Lyndon

         /--------------------------------------------------------\
    e||) | Lyndon J Clarke    Edinburgh Parallel Computing Centre | e||) 
    c||c | Tel: 031 650 5021  Email: lyndon@epcc.edinburgh.ac.uk  | c||c 
         \--------------------------------------------------------/


From owner-mpi-comm@CS.UTK.EDU  Thu Mar 11 11:20:08 1993
Received: from CS.UTK.EDU by surfer.EPM.ORNL.GOV (5.61/1.34)
	id AA29874; Thu, 11 Mar 93 11:20:08 -0500
Received: from localhost by CS.UTK.EDU with SMTP (5.61++/2.8s-UTK)
	id AA01139; Thu, 11 Mar 93 11:17:49 -0500
X-Resent-To: mpi-comm@CS.UTK.EDU ; Thu, 11 Mar 1993 11:17:48 EST
Errors-To: owner-mpi-comm@CS.UTK.EDU
Received: from Aurora.CS.MsState.Edu by CS.UTK.EDU with SMTP (5.61++/2.8s-UTK)
	id AA01131; Thu, 11 Mar 93 11:17:47 -0500
Received:  by Aurora.CS.MsState.Edu (4.1/6.0s-FWP);
	   id AA13509; Thu, 11 Mar 93 10:13:56 CST
Date: Thu, 11 Mar 93 10:13:56 CST
From: Tony Skjellum <tony@Aurora.CS.MsState.Edu>
Message-Id: <9303111613.AA13509@Aurora.CS.MsState.Edu>
To: mpi-comm@cs.utk.edu, lyndon@epcc.ed.ac.uk
Subject: Re: minutes?


Yes, having the minutes is becoming essential.
- Tony

----- Begin Included Message -----


I never saw any minutes for the February meeting yet, perhaps I've been
expecting them too early.  Please, can someone let me know when they are
expected to be circulated. 

Best Wishes
Lyndon





----- End Included Message -----

From owner-mpi-comm@CS.UTK.EDU  Thu Mar 11 11:23:41 1993
Received: from CS.UTK.EDU by surfer.EPM.ORNL.GOV (5.61/1.34)
	id AA00145; Thu, 11 Mar 93 11:23:41 -0500
Received: from localhost by CS.UTK.EDU with SMTP (5.61++/2.8s-UTK)
	id AA01349; Thu, 11 Mar 93 11:21:30 -0500
X-Resent-To: mpi-comm@CS.UTK.EDU ; Thu, 11 Mar 1993 11:21:28 EST
Errors-To: owner-mpi-comm@CS.UTK.EDU
Received: from msr.EPM.ORNL.GOV by CS.UTK.EDU with SMTP (5.61++/2.8s-UTK)
	id AA01340; Thu, 11 Mar 93 11:21:27 -0500
Received: by msr.EPM.ORNL.GOV (5.67/1.34)
	id AA00895; Thu, 11 Mar 93 11:21:24 -0500
Date: Thu, 11 Mar 93 11:21:24 -0500
From: geist@msr.EPM.ORNL.GOV (Al Geist)
Message-Id: <9303111621.AA00895@msr.EPM.ORNL.GOV>
To: mpi-comm@cs.utk.edu
Subject: Re: Jon's suggestion


Jon writes:
> My suggestion (which I expect to be roundly rejected) is 
> that the MPI document ONLY contain the stuff that is current
> practice. This includes EVERYTHING required to run at least
> a common class of programs - i.e., MPI_INIT or some such.
> 
> These things should be designed to maximize ease of use and
> learning and encourage portability.  By this I am including 
> performance level portability. I would like to not have
> things in the spec. that run well on some machines and 
> poorly on others. I would include a requirement that a
> conforming implementation include either documents or 
> (preferably) programs from which a user could assess 
> the performance of the various routines.
> 
> All the other things that are off-shoots of requirements 
> for odd-machines or otherwise more advanced should go in

I do not reject this in fact I applaud your suggestion.
This may be the only way we can get MPI-1 off the ground.
I am a big advocate of maximizing ease of use
this is only way to get the large user base necessary
for MPI to become a standard.

Al Geist
From owner-mpi-comm@CS.UTK.EDU  Thu Mar 11 12:23:03 1993
Received: from CS.UTK.EDU by surfer.EPM.ORNL.GOV (5.61/1.34)
	id AA01995; Thu, 11 Mar 93 12:23:03 -0500
Received: from localhost by CS.UTK.EDU with SMTP (5.61++/2.8s-UTK)
	id AA04568; Thu, 11 Mar 93 12:19:59 -0500
X-Resent-To: mpi-comm@CS.UTK.EDU ; Thu, 11 Mar 1993 12:19:57 EST
Errors-To: owner-mpi-comm@CS.UTK.EDU
Received: from NA-GW.CS.YALE.EDU by CS.UTK.EDU with SMTP (5.61++/2.8s-UTK)
	id AA04559; Thu, 11 Mar 93 12:19:56 -0500
Received: from YOGI.NA.CS.YALE.EDU by CASPER.NA.CS.YALE.EDU via SMTP; Thu, 11 Mar 1993 12:19:53 -0500
Received: by YOGI.NA.CS.YALE.EDU (Sendmail-5.65c/res.client.cf-3.5)
	id AA21933; Thu, 11 Mar 1993 12:19:51 -0500
Date: Thu, 11 Mar 1993 12:19:51 -0500
From: berryman-harry@CS.YALE.EDU (Harry Berryman)
Message-Id: <199303111719.AA21933@YOGI.NA.CS.YALE.EDU>
To: mpi-comm@cs.utk.edu
Subject: Message Passing not for the masses


Al say's
  I do not reject this in fact I applaud your suggestion.
  This may be the only way we can get MPI-1 off the ground.
  I am a big advocate of maximizing ease of use
  this is only way to get the large user base necessary
  for MPI to become a standard.

\begin{flame}
I generally agree with Al, but not this time. While I tend to 
think that there should be some way to figure out how to use 
MPI in one sitting, I certainly do not think that we should 
be "maximizing ease of use" as the principle design goal. 
If I wanted things to be simple and slow, I'd be a Linda user.
Message passing is nasty. Message passing sucks. Message passing is
the way to get machines to go fast, at least for the time being.
\end{flame}

That being said,
even if MPI turns into a huge, ugly mass of routines, it should still 
be possible to isolate a few of these routines and present them 
as the "simple subset" for people who don't need to drive their 
communication costs down. I don't see "limiting the size of" being 
the same as "making easy to use". 

-scott berryman
From owner-mpi-comm@CS.UTK.EDU  Thu Mar 11 12:32:20 1993
Received: from CS.UTK.EDU by surfer.EPM.ORNL.GOV (5.61/1.34)
	id AA02217; Thu, 11 Mar 93 12:32:20 -0500
Received: from localhost by CS.UTK.EDU with SMTP (5.61++/2.8s-UTK)
	id AA05147; Thu, 11 Mar 93 12:30:50 -0500
X-Resent-To: mpi-comm@CS.UTK.EDU ; Thu, 11 Mar 1993 12:30:48 EST
Errors-To: owner-mpi-comm@CS.UTK.EDU
Received: from fslg8.fsl.noaa.gov by CS.UTK.EDU with SMTP (5.61++/2.8s-UTK)
	id AA05132; Thu, 11 Mar 93 12:30:46 -0500
Received: by fslg8.fsl.noaa.gov (5.57/Ultrix3.0-C)
	id AA29711; Thu, 11 Mar 93 17:30:24 GMT
Received: by nipmuc.fsl.noaa.gov (4.1/SMI-4.1)
	id AA05324; Thu, 11 Mar 93 10:32:53 MST
Date: Thu, 11 Mar 93 10:32:53 MST
From: hart@nipmuc.fsl.noaa.gov (Leslie Hart)
Message-Id: <9303111732.AA05324@nipmuc.fsl.noaa.gov>
To: mpi-comm@cs.utk.edu, geist@msr.epm.ornl.gov
Subject: Re: Jon's suggestion


> Jon writes:
> > My suggestion (which I expect to be roundly rejected) is 
> > that the MPI document ONLY contain the stuff that is current
> > practice. This includes EVERYTHING required to run at least
> > a common class of programs - i.e., MPI_INIT or some such.
> > 
> > These things should be designed to maximize ease of use and
> > learning and encourage portability.  By this I am including 
> > performance level portability. I would like to not have
> > things in the spec. that run well on some machines and 
> > poorly on others. I would include a requirement that a
> > conforming implementation include either documents or 
> > (preferably) programs from which a user could assess 
> > the performance of the various routines.
> > 
> > All the other things that are off-shoots of requirements 
> > for odd-machines or otherwise more advanced should go in
> 
> I do not reject this in fact I applaud your suggestion.
> This may be the only way we can get MPI-1 off the ground.
> I am a big advocate of maximizing ease of use
> this is only way to get the large user base necessary
> for MPI to become a standard.
> 
> Al Geist

I also agree.  I think that there is significant concern regarding
the near term and long term success of MPI.  I think some of the
concern can be aleviated if we settle on a goal that can be reached
by this summer.  It may be wise to set up some sort of electronic
straw poll procedure to help get us past some of the issues regarding
what should be in the first MPI, what are our goals for MPI-1, is there
going to be MPI-N (for N>1), what features are most important for MPI-1, etc.  
Perhaps we can use similar rules to those agreed upon in the first meeting.  
You must have been in Dallas for 2 of the last three meetings (1 of the 
first 2, I guess).  Calls for vote should be made through the committee 
chair (or someone appointed by the committee chair).  The votes will be 
counted over a three day period by the comittee chair (or the designee) 
and reported. (Only your "last" vote counts :-).  These will, of course, 
be straw polls and will be reported again at the beginning of the next 
Dallas meeting.

Regards,
Leslie Hart (hart@fsl.noaa.gov)

P.S. We may wish to use a separate mail list for voting (mpi-vote??) which 
     includes those eligible to vote via the voter elibibilty rules.
     Of course, votes for a particular topic should be clearly identified and
     the sense of the vote should be clear (i.e  yes or no).  The suggestion
     of electronic votes is important to me, but the mechanics is not
     that important.
> 
From owner-mpi-comm@CS.UTK.EDU  Thu Mar 11 13:04:39 1993
Received: from CS.UTK.EDU by surfer.EPM.ORNL.GOV (5.61/1.34)
	id AA03015; Thu, 11 Mar 93 13:04:39 -0500
Received: from localhost by CS.UTK.EDU with SMTP (5.61++/2.8s-UTK)
	id AA08235; Thu, 11 Mar 93 13:00:11 -0500
X-Resent-To: mpi-comm@CS.UTK.EDU ; Thu, 11 Mar 1993 13:00:08 EST
Errors-To: owner-mpi-comm@CS.UTK.EDU
Received: from antares.mcs.anl.gov by CS.UTK.EDU with SMTP (5.61++/2.8s-UTK)
	id AA08214; Thu, 11 Mar 93 13:00:05 -0500
Received: from jadoube.mcs.anl.gov by antares.mcs.anl.gov with SMTP id AA19857
  (5.65c/IDA-1.4.4 for <mpi-comm@cs.utk.edu>); Thu, 11 Mar 1993 12:00:02 -0600
From: David Levine <levine@mcs.anl.gov>
Received: by jadoube.mcs.anl.gov (4.1/GeneV4)
	id AA15971; Thu, 11 Mar 93 12:00:00 CST
Date: Thu, 11 Mar 93 12:00:00 CST
Message-Id: <9303111800.AA15971@jadoube.mcs.anl.gov>
To: berryman-harry@cs.yale.edu
Cc: mpi-comm@cs.utk.edu
In-Reply-To: Harry Berryman's message of Thu, 11 Mar 1993 12:19:51 -0500 <199303111719.AA21933@YOGI.NA.CS.YALE.EDU>
Subject: Message Passing not for the masses

   X-Resent-To: mpi-comm@CS.UTK.EDU ; Thu, 11 Mar 1993 12:19:57 EST
   Date: Thu, 11 Mar 1993 12:19:51 -0500
   From: berryman-harry@CS.YALE.EDU (Harry Berryman)


   Al say's
     I do not reject this in fact I applaud your suggestion.
     This may be the only way we can get MPI-1 off the ground.
     I am a big advocate of maximizing ease of use
     this is only way to get the large user base necessary
     for MPI to become a standard.

   \begin{flame}
   :
   Message passing is nasty. Message passing sucks. Message passing is
   the way to get machines to go fast, at least for the time being.
   \end{flame}

I'd like to add my two cents in agreement with this comment.  Message passing
is NOT for the masses.  Its just too hard and grungy.  My opinion is that
message passing is the assembly language of parallel programming and it will
evolve that way.  I think the "large user base necessary for MPI to become a
standard." will be *expert* users, vendors, and HPF compiler writers. If MPI
doesn`t support what they need it will not be useful (it may still, however,
become yet-another-standard.)

That said, I am in agreement that there should be an easy-to-use MPI layer and
a nice tutorial document for novice users, but don't handicap MPI to
accomodate novice users who will migrate away from message-passing as
higher-level software tools (HPF, MIMDizer, BlockComm, ....) become available.

--dave levine
From owner-mpi-comm@CS.UTK.EDU  Thu Mar 11 13:27:29 1993
Received: from CS.UTK.EDU by surfer.EPM.ORNL.GOV (5.61/1.34)
	id AA04067; Thu, 11 Mar 93 13:27:29 -0500
Received: from localhost by CS.UTK.EDU with SMTP (5.61++/2.8s-UTK)
	id AA09727; Thu, 11 Mar 93 13:26:20 -0500
X-Resent-To: mpi-comm@CS.UTK.EDU ; Thu, 11 Mar 1993 13:26:19 EST
Errors-To: owner-mpi-comm@CS.UTK.EDU
Received: from msr.EPM.ORNL.GOV by CS.UTK.EDU with SMTP (5.61++/2.8s-UTK)
	id AA09719; Thu, 11 Mar 93 13:26:17 -0500
Received: by msr.EPM.ORNL.GOV (5.67/1.34)
	id AA01747; Thu, 11 Mar 93 13:26:15 -0500
Date: Thu, 11 Mar 93 13:26:15 -0500
From: geist@msr.EPM.ORNL.GOV (Al Geist)
Message-Id: <9303111826.AA01747@msr.EPM.ORNL.GOV>
To: mpi-comm@cs.utk.edu
Subject: Re: Message Passing not for the masses


scott berryman flames...
>even if MPI turns into a huge, ugly mass of routines,

There are two problems with this argument.
a. at the rate we are going we will never be able to 
   agree on (or document) MPI so there wont be a subset.
b. existing packages like NX were not designed to spare performance
   yet it doesn't have 4 layers and 34 different send variants.
   Jon and my comment reflect the concern
   that we will not be able to define MPI-1 in any reasonable
   time frame if it is a huge, ugly mass of routines,

Al
From owner-mpi-comm@CS.UTK.EDU  Thu Mar 11 14:23:45 1993
Received: from CS.UTK.EDU by surfer.EPM.ORNL.GOV (5.61/1.34)
	id AA05158; Thu, 11 Mar 93 14:23:45 -0500
Received: from localhost by CS.UTK.EDU with SMTP (5.61++/2.8s-UTK)
	id AA12286; Thu, 11 Mar 93 14:21:53 -0500
X-Resent-To: mpi-comm@CS.UTK.EDU ; Thu, 11 Mar 1993 14:21:52 EST
Errors-To: owner-mpi-comm@CS.UTK.EDU
Received: from NA-GW.CS.YALE.EDU by CS.UTK.EDU with SMTP (5.61++/2.8s-UTK)
	id AA12277; Thu, 11 Mar 93 14:21:50 -0500
Received: from YOGI.NA.CS.YALE.EDU by CASPER.NA.CS.YALE.EDU via SMTP; Thu, 11 Mar 1993 14:21:48 -0500
Received: by YOGI.NA.CS.YALE.EDU (Sendmail-5.65c/res.client.cf-3.5)
	id AA22157; Thu, 11 Mar 1993 14:21:47 -0500
Date: Thu, 11 Mar 1993 14:21:47 -0500
From: berryman-harry@CS.YALE.EDU (Harry Berryman)
Message-Id: <199303111921.AA22157@YOGI.NA.CS.YALE.EDU>
To: mpi-comm@cs.utk.edu
Subject: Huge ugly mass of routines


Al Giest simmers...

   Jon and my comment reflect the concern
   that we will not be able to define MPI-1 in any reasonable
   time frame if it is a huge, ugly mass of routines,

At the risk of agreeing with you, there is a real danger at this point 
of the huge ugly mass of routines preventing us from do the job in the time 
alloted. This is a different concern than ease of use. What would you suggest
eliminating to simplify the standard? 

-scott

From owner-mpi-comm@CS.UTK.EDU  Thu Mar 11 14:37:30 1993
Received: from CS.UTK.EDU by surfer.EPM.ORNL.GOV (5.61/1.34)
	id AA05455; Thu, 11 Mar 93 14:37:30 -0500
Received: from localhost by CS.UTK.EDU with SMTP (5.61++/2.8s-UTK)
	id AA12897; Thu, 11 Mar 93 14:35:33 -0500
X-Resent-To: mpi-comm@CS.UTK.EDU ; Thu, 11 Mar 1993 14:35:31 EST
Errors-To: owner-mpi-comm@CS.UTK.EDU
Received: from chert.CS.ORST.EDU by CS.UTK.EDU with SMTP (5.61++/2.8s-UTK)
	id AA12882; Thu, 11 Mar 93 14:35:29 -0500
Received: from sycamore.CS.ORST.EDU by research.CS.ORST.EDU (4.1/1.30)
	id AA16681; Thu, 11 Mar 93 11:35:26 PST
From: pancake@chert.CS.ORST.EDU (Cherri Pancake)
Received: by sycamore.CS.ORST.EDU (4.1/CS-Client)
	id AA06719; Thu, 11 Mar 93 11:35:25 PST
Date: Thu, 11 Mar 93 11:35:25 PST
Message-Id: <9303111935.AA06719@sycamore.CS.ORST.EDU>
To: mpi-comm@cs.utk.edu
Subject: Response to Berryman's comments


Scott says (and I love his "\begin{flame}") --
        While I tend to 
        think that there should be some way to figure out how to use 
        MPI in one sitting, I certainly do not think that we should 
        be "maximizing ease of use" as the principle design goal. 
and then
        even if MPI turns into a huge, ugly mass of routines, it should still 
        be possible to isolate a few of these routines and present them 
        as the "simple subset" for people who don't need to drive their 
        communication costs down. I don't see "limiting the size of" being 
        the same as "making easy to use". 

It's certainly try that ease-of-use does not necessarily mean a small
number of routines.  Ease-of-use is more dependent on:
  a) If there are subsets, there must be subsets that can function as
        a reasonal mini-language, in the sense that applications can
        be developed using just those routines - and getting reasonable
        performance.
  b) There must be syntactic/semantic consistency both among routines
        in a subset and across subset boundaries.  Otherwise, users will
        not be able to learn subsets incrementally with any ease.
  c) Perhaps most importantly, the names of routines, order and type of
        arguments, and user-level semantics (by which I mean what can
        go wrong with respect to the user program) must be consistent
	and as simple as possible.

Cherri
From owner-mpi-comm@CS.UTK.EDU  Thu Mar 11 15:42:17 1993
Received: from CS.UTK.EDU by surfer.EPM.ORNL.GOV (5.61/1.34)
	id AA07612; Thu, 11 Mar 93 15:42:17 -0500
Received: from localhost by CS.UTK.EDU with SMTP (5.61++/2.8s-UTK)
	id AA15959; Thu, 11 Mar 93 15:40:41 -0500
X-Resent-To: mpi-comm@CS.UTK.EDU ; Thu, 11 Mar 1993 15:40:39 EST
Errors-To: owner-mpi-comm@CS.UTK.EDU
Received: from sampson.ccsf.caltech.edu by CS.UTK.EDU with SMTP (5.61++/2.8s-UTK)
	id AA15920; Thu, 11 Mar 93 15:40:35 -0500
Received: from elephant by sampson.ccsf.caltech.edu with SMTP id AA16701
  (5.65c/IDA-1.4.4 for mpi-comm@cs.utk.edu); Thu, 11 Mar 1993 12:40:32 -0800
Received: from lion.parasoft by elephant (4.1/SMI-4.1)
	id AA19196; Thu, 11 Mar 93 12:33:06 PST
Received: by lion.parasoft (4.1/SMI-4.1)
	id AA00810; Thu, 11 Mar 93 12:33:21 PST
Date: Thu, 11 Mar 93 12:33:21 PST
From: jwf@lion.Parasoft.COM (Jon Flower)
Message-Id: <9303112033.AA00810@lion.parasoft>
To: mpi-comm@cs.utk.edu
Subject: To fan the flames....


To add another layer of hypothetical justification to my
argument .......... I think that looking at what we can
achieve in the next few meetings is actually only a part
of the issue. Probably a larger part of my concern is how
long after we produce a draft some reasonably large
percentage of the vendors will actually be supporting
whatever it is we come up with. Having commitments from
vendors to support MPI1 is a long way from actually
having an implementation that "kicks #$%$%^$%" in our
hot little hands. (Cf. the vendor "acceptance" of OSF
for a good example.)

My biggest fear is that if MPI-1 is a massive system
then the first implementations might be a year after
we finish and the first "good" ones (i.e., that actually
use some of the really advanced and "neat" stuff that
we put into MPI-1 just for that purposes) may take
two or more years!! Is that worth it? I don't think
so.

Of course, I'm probably slandering the vendors and if
so I apologise. Perhaps they are better off than I 
think they are. My impression, however, is that they
are struggling to get other stuff solid which they
probably would be totally justified in thinking is
more important than implementing MPI.

Of course this argument doesn't include third parties,
either commercial or not, from implementing MPI
on top of other systems and giving them to the world.
This could clearly happen on a shorter time-scale.
However, I expect MPI to fail if this is the best we
can offer because people will still find it "convenient"
to use vendor specific alternatives that have higher
performance.

	Jon

p.s., Just for the sake of it someone asked for a 
definition of "common practice" - a term that I've
bandied about without justification. Without too much
thought I think a viable definition might be to take
the intersection of all the systems that are currently
in use to develop application codes. This is a
conceptual intersection, of course, not a strict 
one since all systems differ in details. This
differs in my mind from what we have in the current
MPI spec. which might be termed the transitive closure
of all the ideas in current use!!!
From owner-mpi-comm@CS.UTK.EDU  Thu Mar 11 18:15:01 1993
Received: from CS.UTK.EDU by surfer.EPM.ORNL.GOV (5.61/1.34)
	id AA10139; Thu, 11 Mar 93 18:15:01 -0500
Received: from localhost by CS.UTK.EDU with SMTP (5.61++/2.8s-UTK)
	id AA23334; Thu, 11 Mar 93 18:13:26 -0500
X-Resent-To: mpi-comm@CS.UTK.EDU ; Thu, 11 Mar 1993 18:13:25 EST
Errors-To: owner-mpi-comm@CS.UTK.EDU
Received: from sun2.nsfnet-relay.ac.uk by CS.UTK.EDU with SMTP (5.61++/2.8s-UTK)
	id AA23325; Thu, 11 Mar 93 18:13:18 -0500
Via: uk.ac.southampton.ecs; Thu, 11 Mar 1993 19:07:28 +0000
Via: brewery.ecs.soton.ac.uk; Thu, 11 Mar 93 18:08:41 GMT
From: Ian Glendinning <igl@ecs.soton.ac.uk>
Received: from holt.ecs.soton.ac.uk by brewery.ecs.soton.ac.uk;
          Thu, 11 Mar 93 18:16:56 GMT
Date: Thu, 11 Mar 93 18:16:58 GMT
Message-Id: <19579.9303111816@holt.ecs.soton.ac.uk>
To: mpi-comm@cs.utk.edu
Subject: Re: Jon's suggestion

> From: hart@gov.noaa.fsl.nipmuc (Leslie Hart)

> I also agree.  I think that there is significant concern regarding
> the near term and long term success of MPI.  I think some of the
> concern can be aleviated if we settle on a goal that can be reached
> by this summer.  It may be wise to set up some sort of electronic
> straw poll procedure to help get us past some of the issues regarding
> what should be in the first MPI, what are our goals for MPI-1, is there
> going to be MPI-N (for N>1), what features are most important for MPI-1, etc.  
I agree.  Just when I thought things were converging there's been a flurry
of alternative proposals.  For example, can we please agree *not* to address
concurrent I/O in MPI1, else we'll never get finished within the allotted
timescale.  On the other hand, I do think that we should decide to have an
MPI2, and that that would be the proper way to deal with such issues.  I
don't think concurrent I/O is an intractible problem, its just that to do a
reasonable job on will require more time than we've got right now.  Another
case in point is dynamic vs static process creation.  My vote is for static
now, dynamic later.  If we can agree that there will definitely be an MPI2,
then maybe we can keep everyone happy in the sense that their favourite
features *will* all be included, but in a staged fashion.
   Ian
--
I.Glendinning@ecs.soton.ac.uk        Ian Glendinning
Tel: +44 703 593368                  Dept of Electronics and Computer Science
Fax: +44 703 593045                  University of Southampton SO9 5NH England
From owner-mpi-comm@CS.UTK.EDU  Fri Mar 12 15:14:23 1993
Received: from CS.UTK.EDU by surfer.EPM.ORNL.GOV (5.61/1.34)
	id AA29560; Fri, 12 Mar 93 15:14:23 -0500
Received: from localhost by CS.UTK.EDU with SMTP (5.61++/2.8s-UTK)
	id AA20854; Fri, 12 Mar 93 15:12:27 -0500
X-Resent-To: mpi-comm@CS.UTK.EDU ; Fri, 12 Mar 1993 15:12:25 EST
Errors-To: owner-mpi-comm@CS.UTK.EDU
Received: from ocfmail.ocf.llnl.gov by CS.UTK.EDU with SMTP (5.61++/2.8s-UTK)
	id AA20838; Fri, 12 Mar 93 15:12:23 -0500
Received: from [134.9.250.226] (nessett.ocf.llnl.gov) by ocfmail.ocf.llnl.gov (4.1/SMI-4.0)
	id AA00567; Fri, 12 Mar 93 12:12:15 PST
Message-Id: <9303122012.AA00567@ocfmail.ocf.llnl.gov>
Date: Fri, 12 Mar 1993 12:20:03 -0800
To: mpi-comm@cs.utk.edu
From: nessett@ocfmail.ocf.llnl.gov (Dan Nessett)
X-Sender: nessett@ocfmail.llnl.gov
Subject: Buffer descriptors and the simple program
Cc: rathkopf@llnl.gov, mirin@llnl.gov, jlowens@llnl.gov, geltgroth@llnl.gov,
        tsw@llnl.gov, seager@llnl.gov, trj@llnl.gov, lstanberry@llnl.gov,
        bolstad@llnl.gov, zosel@llnl.gov, jbrown@nersc.gov, frobose@llnl.gov,
        hendrickson1@llnl.gov, batkinson@llnl.gov

I met with a number of application and system programmers here at the Lab
to get some feedback on the decisions made at the last MPI meeting. One
aspect that they felt uncomfortable with was being forced to use the buffer
descriptor routines (i.e., bd_create, bd_contiguous, bd_stride and bd_free)
in order to just send a simple message. The application programmers want
both simple send and receive primitives as well as more general primitives
based on buffer descriptors. For example, the Parallel Monte Carlo and
Atmospheric Chemistry codes they are working on would benefit from the more
general buffer descriptor based primitives, while the Atmospheric Dynamics
code uses only simple send and receive. The programmers that use only a
single contiguous buffer for their codes would be upset if MPI forced them
to make two bd calls to set up the descriptor and then another bd call to
free it. (BTW the last call could be eliminated if there were some way to
"clear" a buffer descriptor so it could be reused).

Dan Nessett

From owner-mpi-comm@CS.UTK.EDU  Fri Mar 12 15:52:31 1993
Received: from CS.UTK.EDU by surfer.EPM.ORNL.GOV (5.61/1.34)
	id AA00970; Fri, 12 Mar 93 15:52:31 -0500
Received: from localhost by CS.UTK.EDU with SMTP (5.61++/2.8s-UTK)
	id AA22518; Fri, 12 Mar 93 15:51:15 -0500
X-Resent-To: mpi-comm@CS.UTK.EDU ; Fri, 12 Mar 1993 15:51:14 EST
Errors-To: owner-mpi-comm@CS.UTK.EDU
Received: from antares.mcs.anl.gov by CS.UTK.EDU with SMTP (5.61++/2.8s-UTK)
	id AA22510; Fri, 12 Mar 93 15:51:09 -0500
Received: from godzilla.mcs.anl.gov by antares.mcs.anl.gov with SMTP id AA07519
  (5.65c/IDA-1.4.4 for <mpi-comm@cs.utk.edu>); Fri, 12 Mar 1993 14:51:06 -0600
From: William Gropp <gropp@mcs.anl.gov>
Received: by godzilla.mcs.anl.gov (4.1/GeneV4)
	id AA21843; Fri, 12 Mar 93 14:51:04 CST
Date: Fri, 12 Mar 93 14:51:04 CST
Message-Id: <9303122051.AA21843@godzilla.mcs.anl.gov>
To: nessett@ocfmail.ocf.llnl.gov
Cc: mpi-comm@cs.utk.edu, rathkopf@llnl.gov, mirin@llnl.gov, jlowens@llnl.gov,
        geltgroth@llnl.gov, tsw@llnl.gov, seager@llnl.gov, trj@llnl.gov,
        lstanberry@llnl.gov, bolstad@llnl.gov, zosel@llnl.gov,
        jbrown@nersc.gov, frobose@llnl.gov, hendrickson1@llnl.gov,
        batkinson@llnl.gov
In-Reply-To: Dan Nessett's message of Fri, 12 Mar 1993 12:20:03 -0800 <9303122012.AA00567@ocfmail.ocf.llnl.gov>
Subject: Buffer descriptors and the simple program

[ message about having to use the "bd_xxx" routines ]
This is what the level 2 (or 3, depending on where you draw the line) routines
are for.  Level 3 contains the "simple snd and receive" with contiguous
buffers, while level 1 has everything at the cost of greater complexity.
Bill
From owner-mpi-comm@CS.UTK.EDU  Tue Mar 16 15:54:42 1993
Received: from CS.UTK.EDU by surfer.EPM.ORNL.GOV (5.61/1.34)
	id AA29714; Tue, 16 Mar 93 15:54:42 -0500
Received: from localhost by CS.UTK.EDU with SMTP (5.61++/2.8s-UTK)
	id AA19013; Tue, 16 Mar 93 15:51:37 -0500
X-Resent-To: mpi-comm@CS.UTK.EDU ; Tue, 16 Mar 1993 15:51:36 EST
Errors-To: owner-mpi-comm@CS.UTK.EDU
Received: from rios2.EPM.ORNL.GOV by CS.UTK.EDU with SMTP (5.61++/2.8s-UTK)
	id AA19005; Tue, 16 Mar 93 15:51:34 -0500
Received: by rios2.epm.ornl.gov (AIX 3.2/UCB 5.64/4.03)
          id AA19519; Tue, 16 Mar 1993 15:51:33 -0500
Date: Tue, 16 Mar 1993 15:51:33 -0500
From: walker@rios2.epm.ornl.gov (David Walker)
Message-Id: <9303162051.AA19519@rios2.epm.ornl.gov>
To: mpi-comm@cs.utk.edu
Subject: MPI test implementation


An Argonne report by William Gropp and Ewing Lusk dated December 1992
("A Test Implementation of the MPI Draft Message-Passing Standard", ANL-92/47)
has recently been distributed. Please note that the MPI1 routines referred to
in this document are those in a draft paper that was circulated as a 
discussion document. Many of these routines differ from those in the final
version of MPI1, or are omitted. The final version of the MPI1 draft standard
may be obtained by sending the email message "send mpi1.ps from mpi" to
netlib@ornl.gov. For those of you interested in correctly referencing this
the bibtex item is as follows:

@techreport{MPI1,
        author  = "J. J. Dongarra and R. Hempel and A. J. G. Hey
                   and D. W. Walker",
        title   = "A Proposal for a User-Level, Message Passing Interface
                   in a Distributed Memory Environment",
        institution = "Oak Ridge National Laboratory",
        number  = "{TM}-12231",
	month   = "March",
        year    = 1993}

Regards,
David Walker.
From owner-mpi-comm@CS.UTK.EDU  Tue Mar 16 16:43:35 1993
Received: from CS.UTK.EDU by surfer.EPM.ORNL.GOV (5.61/1.34)
	id AA01882; Tue, 16 Mar 93 16:43:35 -0500
Received: from localhost by CS.UTK.EDU with SMTP (5.61++/2.8s-UTK)
	id AA22479; Tue, 16 Mar 93 16:41:45 -0500
X-Resent-To: mpi-comm@CS.UTK.EDU ; Tue, 16 Mar 1993 16:41:44 EST
Errors-To: owner-mpi-comm@CS.UTK.EDU
Received: from antares.mcs.anl.gov by CS.UTK.EDU with SMTP (5.61++/2.8s-UTK)
	id AA22461; Tue, 16 Mar 93 16:41:41 -0500
Received: from donner.mcs.anl.gov by antares.mcs.anl.gov with SMTP id AA13171
  (5.65c/IDA-1.4.4 for <mpi-comm@cs.utk.edu>); Tue, 16 Mar 1993 15:41:34 -0600
Message-Id: <199303162141.AA13171@antares.mcs.anl.gov>
To: walker@rios2.epm.ornl.gov (David Walker)
Cc: mpi-comm@cs.utk.edu
Subject: Re: MPI test implementation 
In-Reply-To: Your message of "Tue, 16 Mar 1993 15:51:33 EST."
             <9303162051.AA19519@rios2.epm.ornl.gov> 
Date: Tue, 16 Mar 1993 15:41:32 -0600
From: Rusty Lusk <lusk@mcs.anl.gov>


Thanks for setting the record straight.  That Tech. Report went into the
Argonne mill in early December, and we had no idea that it would take it this
long to be distributed and therefore how out-of-date it would be when it
finally did get mailed.

- Rusty
From owner-mpi-comm@CS.UTK.EDU  Tue Mar 16 20:54:58 1993
Received: from CS.UTK.EDU by surfer.EPM.ORNL.GOV (5.61/1.34)
	id AA06431; Tue, 16 Mar 93 20:54:58 -0500
Received: from localhost by CS.UTK.EDU with SMTP (5.61++/2.8s-UTK)
	id AA09400; Tue, 16 Mar 93 20:53:03 -0500
X-Resent-To: mpi-comm@CS.UTK.EDU ; Tue, 16 Mar 1993 20:53:01 EST
Errors-To: owner-mpi-comm@CS.UTK.EDU
Received: from iliamna.cse.ogi.edu by CS.UTK.EDU with SMTP (5.61++/2.8s-UTK)
	id AA09390; Tue, 16 Mar 93 20:53:00 -0500
Received: by iliamna.cse.ogi.edu (/\==/\ Smail3.1.25.1 #25.15)
	id <m0nYnJS-0002vyC@iliamna.cse.ogi.edu>; Tue, 16 Mar 93 17:52 PST
Message-Id: <m0nYnJS-0002vyC@iliamna.cse.ogi.edu>
Date: Tue, 16 Mar 93 17:52 PST
From: otto@iliamna.cse.ogi.edu (Steve Otto)
To: mpi-comm@cs.utk.edu
Subject: PostScript version of the current MPI Draft Document



	A (compressed) PostScript version of the current MPI Draft Document
	is available via anonyomous ftp at cse.ogi.edu:

	ftp cse.ogi.edu

	cd pub/otto
	binary
	get draft.ps.Z
	quit


	This should get you a copy.  You then need to uncompress it.
	All the source is there also if you are interested.


	--Steve Otto

From owner-mpi-comm@CS.UTK.EDU  Thu Mar 18 08:39:18 1993
Received: from CS.UTK.EDU by surfer.EPM.ORNL.GOV (5.61/1.34)
	id AA10600; Thu, 18 Mar 93 08:39:18 -0500
Received: from localhost by CS.UTK.EDU with SMTP (5.61++/2.8s-UTK)
	id AA04620; Thu, 18 Mar 93 08:36:29 -0500
X-Resent-To: mpi-comm@CS.UTK.EDU ; Thu, 18 Mar 1993 08:36:28 EST
Errors-To: owner-mpi-comm@CS.UTK.EDU
Received: from daedalus.epcc.ed.ac.uk by CS.UTK.EDU with SMTP (5.61++/2.8s-UTK)
	id AA04612; Thu, 18 Mar 93 08:36:21 -0500
Date: Thu, 18 Mar 93 13:36:16 GMT
Message-Id: <9166.9303181336@subnode.epcc.ed.ac.uk>
From: L J Clarke <lyndon@epcc.ed.ac.uk>
Subject: MINUTES!
To: mpi-comm@cs.utk.edu
In-Reply-To: David Walker's message of Wed, 17 Mar 1993 09:57:50 -0500
Reply-To: lyndon@epcc.ed.ac.uk

Hi all

On Thursday of last week I enquired about the minutes of the last meeting.

Dave Walker writes:

> The minutes of the last meeting in February are not yet available
> electronically, but should be soon.

I observe that subcommittee chairs have already circulated revised
"working documents" for subcommittees.  The minutes of previous meeting
are the primary reference for results of subcommittee straw polls which
must surely be the primary determinants of working document revisions.
It is now past time when the minutes were essential. 

Please, can these be distributed.

Best Wishes
Lyndon

         /--------------------------------------------------------\
    e||) | Lyndon J Clarke    Edinburgh Parallel Computing Centre | e||) 
    c||c | Tel: 031 650 5021  Email: lyndon@epcc.edinburgh.ac.uk  | c||c 
         \--------------------------------------------------------/


From owner-mpi-comm@CS.UTK.EDU  Thu Mar 18 11:18:58 1993
Received: from CS.UTK.EDU by surfer.EPM.ORNL.GOV (5.61/1.34)
	id AA14049; Thu, 18 Mar 93 11:18:58 -0500
Received: from localhost by CS.UTK.EDU with SMTP (5.61++/2.8s-UTK)
	id AA11559; Thu, 18 Mar 93 11:17:00 -0500
X-Resent-To: mpi-comm@CS.UTK.EDU ; Thu, 18 Mar 1993 11:16:59 EST
Errors-To: owner-mpi-comm@CS.UTK.EDU
Received: from daedalus.epcc.ed.ac.uk by CS.UTK.EDU with SMTP (5.61++/2.8s-UTK)
	id AA11550; Thu, 18 Mar 93 11:16:51 -0500
Date: Thu, 18 Mar 93 16:16:47 GMT
Message-Id: <9298.9303181616@subnode.epcc.ed.ac.uk>
From: L J Clarke <lyndon@epcc.ed.ac.uk>
Subject: Re:  AGENDA!
To: walker@rios2.epm.ornl.gov (David Walker)
In-Reply-To: David Walker's message of Thu, 18 Mar 1993 10:48:16 -0500
Reply-To: lyndon@epcc.ed.ac.uk
Cc: mpi-comm@cs.utk.edu

David writes:

> 
> I don't think Lyndon's suggestion to make the timetable session the first of
> the meeting is a good idea. How can a timetable be set if we don't know
> what's to be included, 
> and if we don't know how much of the current proposals
> are acceptable.
> 

I see your point on the matter of establishing a firm timetable.  It
seems to me, and there has been a fair bit of traffic on it, that we
need to establish boundaries for what will be in MPI.  It seems to me
that this needed to be the first thing to thrash out at the next
meeting.  I agree with you that timetables should be sorted out later. 

> We could move the session on contexts, groups etc. up front I guess.

This seems to mean that the context subcommittee has to come to the
"report and proposal to whole committee" stage without the opportunity
to meet.  My understanding was that we had intended to reach that stage
at the next meeting, after a subcommittee meeting.  Personally I can
handle doing this by email over the next 10 days, but I'm not sure that
the whole of the subcommittee can. 

Thanks for the comments, and pointing out my error in supposing that the
timetable could be determined at the beginning of the meeting. 

Best Wishes
Lyndon

         /--------------------------------------------------------\
    e||) | Lyndon J Clarke    Edinburgh Parallel Computing Centre | e||) 
    c||c | Tel: 031 650 5021  Email: lyndon@epcc.edinburgh.ac.uk  | c||c 
         \--------------------------------------------------------/


From owner-mpi-comm@CS.UTK.EDU  Thu Mar 18 12:54:40 1993
Received: from CS.UTK.EDU by surfer.EPM.ORNL.GOV (5.61/1.34)
	id AA15727; Thu, 18 Mar 93 12:54:40 -0500
Received: from localhost by CS.UTK.EDU with SMTP (5.61++/2.8s-UTK)
	id AA16896; Thu, 18 Mar 93 12:50:45 -0500
X-Resent-To: mpi-comm@CS.UTK.EDU ; Thu, 18 Mar 1993 12:50:43 EST
Errors-To: owner-mpi-comm@CS.UTK.EDU
Received: from fslg8.fsl.noaa.gov by CS.UTK.EDU with SMTP (5.61++/2.8s-UTK)
	id AA16880; Thu, 18 Mar 93 12:50:38 -0500
Received: by fslg8.fsl.noaa.gov (5.57/Ultrix3.0-C)
	id AA14802; Thu, 18 Mar 93 17:44:46 GMT
Received: by macaw.fsl.noaa.gov (4.1/SMI-4.1)
	id AA20644; Thu, 18 Mar 93 10:43:30 MST
Date: Thu, 18 Mar 93 10:43:30 MST
From: hender@macaw.fsl.noaa.gov (Tom Henderson)
Message-Id: <9303181743.AA20644@macaw.fsl.noaa.gov>
To: mpi-comm@cs.utk.edu
Subject: MPI Priorities and Scope:  Opinion Survey
Cc: jwf@lion.parasoft.com, lederman@b125.super.org, igl@ecs.soton.ac.uk,
        lyndon@epcc.ed.ac.uk


Hi all,

Steve Huss-Lederman writes:

> I would like to propose that we have a meeting of all participants at
> the start of the next meeting to settle the issue of what MPI-1 will
> cover.  Several mail messages have expressed concern that we cannot
> conclude by June if we try to incorporate everything that everyone
> wants.  Since the scope and time frame will effect most of the other
> discussions I think it would be best to begin with this.  My only
> concern is that it will take too long to decide the global picture.
> I would hope it could be done in 1-2 hours and help to refocus the
> group.

I fully support this idea.  Here's a proposal for an opinion survey that could 
shorten and focus the discussion.  This proposal originated with Jon Flower 
and has had input from Ian Glendinning, Steve Huss-Lederman, Leslie Hart, 
myself, and others.  If you think this is a good idea, please complete the 
survey and return to me at:  

    hender@fsl.noaa.gov

If you think this is a bad idea, please say so!  We will collect responses and 
distribute a summary via email before the next meeting if there is sufficient 
interest.  

Tom Henderson



-----------------------------------------------------------------------------


                     MPI PRIORITIES OPINION SURVEY


Several MPI committee members have expressed concern about the current and 
future directions of MPI.  The MPI committee began discussion using an 
existing document (Dongarra et al) as a starting point.  This document 
contains background rationale and a statement of direction for the MPI 
standardization effort.  Since these issues were consistent with the original 
MPI proposal, they have not recently been discussed in detail by the MPIF.  

The current MPI proposals are very different from the original MPI document.  
As a result, we feel that the original rationale and direction need to be 
re-examined.  In particular we need to prioritize and limit the issues that 
MPI will try to resolve so that 

    o the initial MPI standard document ("MPI-1") is delivered in a timely 
      fashion 
and 
    o the functions that it defines can (and will) be implemented
      on major platforms within a reasonable time frame.

To get discussion of these issues started, we propose an informal, email 
"opinion survey".  The objective of the survey is to find out which MPI 
features are most important.  High-priority features would be included in 
MPI-1.  Lower-priority features might be deferred to a later version of MPI.  
Some features might never be included.  The compiled results of this survey 
could be used as a basis for discussion at the next MPI meeting.  

***
This survey is in no way binding and is a completely unofficial "straw
poll" arranged by its authors for their own personal information.  It is not 
intended to distract attention from the current proposals.  Any data collected 
will be made available to the group at large if requested.  
***

Following is a ballot containing possible MPI features and goals.  Please rate 
each item (or sub-item) using the following rating scheme:  

  0        This feature should not appear in any version of MPI ever.  
  1-2      MPIF should consider including this feature in some future version 
           of MPI (after MPI-1).  
  3-4      This feature should be included as an Annex to MPI-1 for possible 
           inclusion in a future version of MPI.  
  5-6      This feature should be included as an Annex to MPI-1 for definite 
           inclusion in a future version of MPI.  
  7-10     This feature should be included in MPI-1.  

In this context an "Annex" is a part of the standard document that will not
be required by a conforming implementation of MPI.  Rather it should be
taken as a recommendation by the MPIF to vendors for the way in which
particular features should be implemented, if they are implemented at all.
This way features that are not usefully implementable on particular hardware
can be eliminated while machines that do support these features do so in
a portable manner.

When replying to the survey, please use the response form attached to the end 
of this message.  (This will make compilation of the results a lot less 
painful!)  :-)




          +-------------------------------------------------------+
          | POSSIBLE FEATURES FOR INITIAL AND FUTURE MPI VERSIONS |
          +-------------------------------------------------------+



Ordering is for convenience only.  This list is not meant to suggest any 
priority.  


    GENERAL FEATURES

1)  Routines for static process creation:
    A) Same program in every node.  
    B) Host-node programming model in which there is one "special node".  
    C) Static model but with potentially different programs in different groups 
       of nodes.
    D) Static model with a way to create more than one process per 
       processor. (Heavy duty processes, not threads).

2)  Routines for identification of statically created processes.
  
3)  Associated environmental inquiry routines.  

4)  Some way of avoiding message tag conflicts between independently 
    developed libraries and user code (contexts).  

5)  Heterogeneous communication.  
    A)  All communication routines should support heterogeneous 
        communication.  
    B)  A special set of communication routines should support heterogeneous 
        communication.  

6)  Creation/destruction of "static" groups (processes cannot join/leave an 
    existing group).  Groups are used to limit the scope of collective 
    operations.  
    A)  No logical process topology is associated with a group.  
    B)  Grid/toroidal process topology is associated with a group at the time 
        the group is created.  (The default "ALL" group has a default 
        topology.)  
    C)  General graph topology is also supported.  
    D)  Provide access to all relevant information (via topological 
        environmental inquiry routines) to allow users to define custom 
        topologies.  

7)  Support for communication between processes in different groups without 
    reference to the "ALL" group.  

8)  Dynamic groups (processes can join/leave an existing group while the total 
    number of processes remains static.)  

9)  Dynamic process creation and identification.  

10) Additional environmental inquiry and "setting" routines for performance 
    optimization.  
    A)  Inquire/suggest system buffering resource allocation.  
    B)  Inquire relative node performance.  
    C)  Inquire relative interconnect performance.  

11) Termination of programs.
    A)  Kill all others nodes.
    B)  Wait for all the other nodes to complete.
    C)  Automatically de-allocate resources.

12) Standard organization.
    A)  "Multi-level" organization of routines (users may use simple features 
        without having to understand all of MPI).  
    B)  Simple "core" standard with (optional) Annexes.
    C)  Simple "core" standard without Annexes.
    D)  Should an MPI "subset" be defined that can be quickly implemented as 
        a layer on top of existing systems?  (This question was inspired by 
        section 1.5 of Bill and Rusty's "A Test Implementation of the MPI 
        Draft Message-Passing Standard", ANL-92/47.)  

13) Should there be future version(s) of MPI (MPI-2, etc.) (yes/no)?  



    POINT-TO-POINT COMMUNICATION

14) Blocking send and receive.  
    A)  Contiguous data.  
    B)  Strided data.  
    C)  Buffer-descriptor (multiple data locations, multiple data types).  

15) Non-blocking receive.  
    A)  Contiguous data.  
    B)  Strided data.  
    C)  Buffer-descriptor (multiple data locations, multiple data types).  
    D)  Check for completion (status()).  
    E)  Wait for completion (wait()).  
    F)  Cancel operation (cancel()).  

16) Non-blocking send.  
    A)  Contiguous data.  
    B)  Strided data.  
    C)  Buffer-descriptor (multiple data locations, multiple data types).  
    D)  Check for completion (status()).  
    E)  Wait for completion (wait()).  
    F)  Cancel operation (cancel()).  

17) Low-level functionality (from Marc Snir's proposal) visible to users.  
    A)  Initialize.  
    B)  Start.  
    C)  Complete.  
    D)  Free.  

18) "SECURE" versions of send and receive as proposed by Lyndon Clarke on 
    3/3/93.  (Correct programs using SECURE routines are guaranteed to work 
    regardless of system buffering resources.)  

19) Ready-send.  

20) Ready-receive.  

21) Message handlers (a la iNTEL hrecv, TMC active messages, Express 
    exhandle).  
    A)  Simple definition sufficient to support anticipated MPI 
        requirements and make a self-consistent system.  
    B)  More advanced routines for remote procedure calls, etc...  

22) Additional point-to-point primitives.
    A)  Exchange between two processors.
    B)  "Shift-exchange":  read from one, send to another (superset of "A").
    C)  Contiguous data.  
    D)  Strided data.  
    E)  Buffer-descriptor (multiple data locations, multiple data types).  
    F)  Non-blocking versions?
    G)  Check for completion (status()).  
    H)  Wait for completion (wait()).  
    I)  Cancel operation (cancel()).  



    COLLECTIVE OPERATIONS

23) Blocking collective communication.  
    A)  Broadcast.  
    B)  Concatenate.  
    C)  Barrier.  
    D)  Sum.  
    E)  Extrema (max, min).
    F)  Average.  
    G)  Sum of squared differences (error).  
    H)  Should strided data be allowed for these operations?  
    I)  Should buffer-descriptor be allowed for these operations?  

24) "User-defined" blocking collective operations (Express "excombine()"
    style).  

25) Non-blocking collective communication, collective operations, and 
    user-defined operations (if this is desired, detailed ranking can be done 
    later).  

26) If any non-blocking collective operations are supported, what should 
    completion/cancel options be?  
    A)  Check for completion (status()).  
    B)  Wait for completion (wait()).  
    C)  "Multiple cancel" operation (cancel()).  

27) Should status()/wait()/cancel() syntax be consistent across all types of 
    non-blocking operations?  



    OTHER COMMUNICATION OPERATIONS

28) Probe (and associated "precv()" routines, if necessary).  



    I/O

29) Standard I/O is supported in the standard fashion for the language on one 
    process (no file I/O).  This process can be identified by an environmental 
    inquiry routine.  (This is the current proposal.)  

30) Serial I/O is supported in the standard fashion for the language on one 
    process.  This process can be identified by an environmental inquiry 
    routine.  (Rik Littlefield's proposal.)  

31) Multiplexed I/O similar to that currently provided in systems such as
    CMMD (TMC), VERTEX (nCUBE) and Express (ParaSoft).  Basically a way of
    defining the behavior of multi-node I/O statements which interact
    with a sequential device.  No special considerations for parallel I/O
    channels.

32) Blocking parallel I/O.  Intended to take advantage of parallel I/O
    channels, where available.

33) Non-blocking parallel I/O.  Intended to take advantage of parallel
    I/O channels, where available.



LANGUAGE BINDINGS

34) Ada

35) C

36) C++

37) Fortran 77

38) Fortran 90

39) Other



IMPLEMENTATION PERIOD 

There will be a delay between the generation of the standard and its 
implementation on various platforms.  If this delay is too long users will 
continue to rely more and more heavily on vendor routines and specialized 
calls and MPI will become less and less attractive, particularly if new 
technology such as Fortran 90/HPF becomes effective.

40) What is the maximum delay that you think MPI can stand and 
    still succeed (please feel free to comment if you wish)?



----------------------------------------------------------------------------


SURVEY RESPONSE FORM


1)  A)  
    B)  
    C)  
    D)  

2)  

3)  

4)  

5)  A)  
    B)  

6)  A)  
    B)  
    C)  
    D)  

7)  

8)  

9)  

10) A)  
    B)  
    C)  

11) A)  
    B)  
    C)  

12) A)  
    B)  
    C)  
    D)  

13) (yes/no)

14) A)  
    B)  
    C)  

15) A)  
    B)  
    C)  
    D)  
    E)  
    F)  

16) A)  
    B)  
    C)  
    D)  
    E)  
    F)  

17) A)  
    B)  
    C)  
    D)  

18) 

19) 

20) 

21) A)  
    B)  

22) A)  
    B)  
    C)  
    D)  
    E)  
    F)  
    G)  
    H)  
    I)  

23) A)  
    B)  
    C)  
    D)  
    E)  
    F)  
    G)  
    H)  
    I)  

24) 

25) 

26) A)  
    B)  
    C)  

27) 

28) 

29) 

30) 

31) 

32) 

33) 

34) 

35) 

36) 

37) 

38) 

39) 

40) (free form):  

Comments?  


From owner-mpi-comm@CS.UTK.EDU  Thu Mar 18 14:28:27 1993
Received: from CS.UTK.EDU by surfer.EPM.ORNL.GOV (5.61/1.34)
	id AA17761; Thu, 18 Mar 93 14:28:27 -0500
Received: from localhost by CS.UTK.EDU with SMTP (5.61++/2.8s-UTK)
	id AA22028; Thu, 18 Mar 93 14:22:46 -0500
X-Resent-To: mpi-comm@CS.UTK.EDU ; Thu, 18 Mar 1993 14:22:45 EST
Errors-To: owner-mpi-comm@CS.UTK.EDU
Received: from ssd.intel.com by CS.UTK.EDU with SMTP (5.61++/2.8s-UTK)
	id AA22020; Thu, 18 Mar 93 14:22:43 -0500
Received: from tualatin.SSD.intel.com by SSD.intel.com (4.1/SMI-4.1)
	id AA23272; Thu, 18 Mar 93 11:22:16 PST
Date: Thu, 18 Mar 93 11:22:16 PST
Message-Id: <9303181922.AA23272@SSD.intel.com>
Received: by tualatin.SSD.intel.com (4.1/SMI-4.0)
	id AA10070; Thu, 18 Mar 93 11:22:13 PST
From: Bob Knighten <knighten@SSD.intel.com>
Sender: knighten@SSD.intel.com
To: lyndon@epcc.ed.ac.uk
Cc: mpi-comm@cs.utk.edu
Subject: Re: MINUTES!
In-Reply-To: <9166.9303181336@subnode.epcc.ed.ac.uk>
References: <9166.9303181336@subnode.epcc.ed.ac.uk>
Reply-To: knighten@SSD.intel.com (Bob Knighten)

Yes, the minutes are late and yes, they will be available soon.  Rusty has
been traveling extensively since the meeting and now that I am supposed to
finish them I have had some personal emergencies and my company has decided
there are more important ways to spend my time.

That is just an explanation of the delay, I am well aware of the importance of
the minutes and will have them out shortly.

-- Bob

Robert L. Knighten	             | knighten@ssd.intel.com
Intel Supercomputer Systems Division | 
15201 N.W. Greenbrier Pkwy.	     | (503) 629-4315
Beaverton, Oregon  97006	     | (503) 629-9147 [FAX]
From owner-mpi-comm@CS.UTK.EDU  Thu Mar 25 10:48:01 1993
Received: from CS.UTK.EDU by surfer.EPM.ORNL.GOV (5.61/1.34)
	id AA17196; Thu, 25 Mar 93 10:48:01 -0500
Received: from localhost by CS.UTK.EDU with SMTP (5.61+IDA+UTK-930125/2.8s-UTK)
	id AA21805; Thu, 25 Mar 93 10:46:00 -0500
X-Resent-To: mpi-comm@CS.UTK.EDU ; Thu, 25 Mar 1993 10:45:59 EST
Errors-To: owner-mpi-comm@CS.UTK.EDU
Received: from daedalus.epcc.ed.ac.uk by CS.UTK.EDU with SMTP (5.61+IDA+UTK-930125/2.8s-UTK)
	id AA21766; Thu, 25 Mar 93 10:45:43 -0500
Date: Thu, 25 Mar 93 15:44:59 GMT
Message-Id: <18119.9303251544@subnode.epcc.ed.ac.uk>
From: L J Clarke <lyndon@epcc.ed.ac.uk>
Subject: Helpful Summary of Contexts Proposals
To: mpi-comm@cs.utk.edu, mpi-context@cs.utk.edu
Reply-To: lyndon@epcc.ed.ac.uk
Cc: tony@aurora.cs.msstate.edu, nbm@castle.ed.ac.uk, bobf@epcc.ed.ac.uk

Dear MPI Colleagues

I imagine that many of you have started or are about to start reading
the three contexts subcommittee proposals.  We have prepared a
comparative, and non judgmental, summary of the three proposals which
may be of some assistance to MPI.

The three proposals in the context subcommittee share common features,
and have differences both in concept and detail.  Two of these proposals
contain features which are "separable" and could equally appear as
components of one or more other proposals.  Hopefully the summary will:
(a) help us to discuss the important differnces between the proposals and
make agreements on how we should proceed with respect to those issues;
(b) help us to isolate the separable points and make separate
agreements on those issues.

I hope that the summary is both accurate and complete. Please make
corrections and additions if you discover such. I apologise in advance
for my errors, which are surely inevitable.

Best Wishes
Lyndon

----------------------------------------------------------------------

Summary of context subcommittee proposals
*****************************************

The three proposals in the context subcommittee share common features,
and have differences both in concept and detail.  Two of these proposals
contain features which are "separable" and could equally appear as
components of one or more other proposals.  This summary identifies
feature of proposals as: Common Features; Separable Features; Concept
Differences; Detail Differences. 

Common Features
===============

1. Process group management
---------------------------

In each proposal groups are created dynamically and have static
membership. In each proposal a group can be created as a partition of
an existing group and as a permutation of an existing group. Each
proposal allows (or suggests) that a group can be created as an
explicit list of processes.

2. Provision for point-to-point communication within group.
-----------------------------------------------------------

In each proposal point-to-point communcation of scope closed within a
group can be expressed in terms of a reference to a group coupled
with a process rank within the group.

3. Provision for collective communication within group.
------------------------------------------------------

In each proposal collective communication of scope closed within a
group can be expressed in terms of a reference to a group.

4. Opacity of group and process description.
--------------------------------------------

In each proposal the description of groups and processes is opaque.
Groups and processes are referred to by a handle like object.


Separable Features
==================

1. Tag usage in point-to-point communication.
---------------------------------------------

Proposal III describes tag selection for Receive in a two-integer form.
Proposals I and VII say nothing about tag usage.
   
This feature can be placed in all Proposals I, III and VII.

[Historical note: Tony did say to methat this would appear as an
appendix with our mutual recognition that it can equally appear as a
feature of any of the proposals.]

2. Tag usage in collective communication.
-----------------------------------------

Proposal III suggests that tag should be used as an argument to 
collective communication where this will assist debugging.
Proposals I and VII say nothing about usage.

This feature can be placed in all Proposals I, III and VII.

3. Context or Group cache
-------------------------

Proposal VII decribes a cache facility associated with contexts and groups.
Proposal III describes a similar cache facility associated with groups.

This feature can be placed in all Proposals I, III and VII.


4. Opaque object (descriptor) transmission.
-------------------------------------------

Proposal VII suggests that opaque object transmission can be 
provided by integration with transmission of typed data.
Proposal III suggests that opaque transmission is 
provided by a mechanism for flattening a descriptor into a
memory buffer.
These are just details of different ways of providing the feature.

This feature can be placed in Proposals III and VII.
This feature cannot be placed in Proposal I.

5. Context registry.
--------------------

Proposal III describes a context name registry service.
Proposal VII indicates that such a service would be useful.

This feature can be placed in Proposals III and VII.
This feature cannot be placed in Proposal I.

Concept Differences.
====================

1. Concept of CONTEXT and GROUP
-------------------------------

In Proposal I CONTEXT and GROUP are identical concepts and are not
distinguished.

In Proposal III CONTEXT is a lower degree concept that GROUP. The
GROUP concept inherits aspects of the CONTEXT concept.

In Proposal VII CONTEXT is a higher concept than GROUP. The CONTEXT
concept inherits aspects of the GROUP concept.

2. Scope of point-to-point communication.
-----------------------------------------

In Proposal I the scope of point-to-point communication is limited to
the CONTEXT. Processes which are members of distinct groups can only
communicate through a common ancestor group.

In Proposals III and VII the scope of point-to-point communciation is
not limited. Processes which are members of distinct groups can
communicate without reference to a common ancestor group.

3. Transmission of group or context.
------------------------------------

In Proposal I the CONTEXT cannot be transmitted from one process to
another.

In Proposals VII and III both CONTEXT and GROUP can be transmitted
from one process to another. In Proposal VII PROCESS can alo be
transmitted (Proposal III suggests such but makes no specific
provision, presumably a small oversight?)

Detail differences.
===================

1. Manifestation of context
---------------------------

In Proposals I and VII context is an opaque object.

In Proposal III context is an integer(?).

2. Deletion of group.
---------------------

In Proposals VII and III groups can be deleted.

In Proposal I there is no provision for group deletion (possibly a
small oversight?).

3. Duplication of group.
------------------------

In Proposals I and III a group there is explicit provision for
duplication of an existing group to form a new (distinct, homomorphic)
group.

In Proposal VII there is no such provision as similar funtionality is
provided by the context (although the provision for group partition,
permutation and definition can be used to create a snapshot copy of a
group).

4. Global shared variables.
---------------------------

Proposals I and VII do not require global shared variables.

Proposal III requires a global shared variable (which can be
implemented as such or of course in the traditional approach as a
global service process.)

3. Process identifier addressed communication.
----------------------------------------------

Proposal I does not make provision for process identifier addressed
communication.

Proposal III makes provision for process identifier addressed
communication within multiple distinct tag spaces.

Proposal VII makes provision for process identifier addressed
communication within a single distinct tag space.

5. Inter-group communication.
-----------------------------

Proposal I does not provide inter-group communication as it limits the
scope of point-to-point communication to be closed within a group.

Proposal VII provides inter-group communication in an addressing form
specified by sender (receiver) group, receiver (sender) group and
sender (receiver) rank.

Proposal III provides inter-group communication as process identifier
addressed communication.


----------------------------------------------------------------------


         /--------------------------------------------------------\
    e||) | Lyndon J Clarke    Edinburgh Parallel Computing Centre | e||) 
    c||c | Tel: 031 650 5021  Email: lyndon@epcc.edinburgh.ac.uk  | c||c 
         \--------------------------------------------------------/


From owner-mpi-comm@CS.UTK.EDU  Thu Mar 25 12:41:24 1993
Received: from CS.UTK.EDU by surfer.EPM.ORNL.GOV (5.61/1.34)
	id AA21413; Thu, 25 Mar 93 12:41:24 -0500
Received: from localhost by CS.UTK.EDU with SMTP (5.61+IDA+UTK-930125/2.8s-UTK)
	id AA26938; Thu, 25 Mar 93 12:40:11 -0500
X-Resent-To: mpi-comm@CS.UTK.EDU ; Thu, 25 Mar 1993 12:40:10 EST
Errors-To: owner-mpi-comm@CS.UTK.EDU
Received: from Aurora.CS.MsState.Edu by CS.UTK.EDU with SMTP (5.61+IDA+UTK-930125/2.8s-UTK)
	id AA26850; Thu, 25 Mar 93 12:39:35 -0500
Received:  by Aurora.CS.MsState.Edu (4.1/6.0s-FWP);
	   id AA07566; Thu, 25 Mar 93 11:33:39 CST
Date: Thu, 25 Mar 93 11:33:39 CST
From: Tony Skjellum <tony@Aurora.CS.MsState.Edu>
Message-Id: <9303251733.AA07566@Aurora.CS.MsState.Edu>
To: mpi-comm@cs.utk.edu, mpi-context@cs.utk.edu, lyndon@epcc.ed.ac.uk
Subject: Re: Helpful Summary of Contexts Proposals
Cc: tony@aurora.cs.msstate.edu, nbm@castle.ed.ac.uk, bobf@epcc.ed.ac.uk


Thank you for this additional work, Lyndon.  Why don't we include this
as the preface to our proposal?  It looks good, but I will have to read
it in detail, before rendering my complete view on this matter.

Who are these other, new cc people...
- Tony


----- Begin Included Message -----

From owner-mpi-comm@CS.UTK.EDU Thu Mar 25 10:07:51 1993
X-Resent-To: mpi-comm@CS.UTK.EDU ; Thu, 25 Mar 1993 10:45:59 EST
Date: Thu, 25 Mar 93 15:44:59 GMT
From: L J Clarke <lyndon@epcc.ed.ac.uk>
Subject: Helpful Summary of Contexts Proposals
To: mpi-comm@cs.utk.edu, mpi-context@cs.utk.edu
Reply-To: lyndon@epcc.ed.ac.uk
Cc: tony@aurora.cs.msstate.edu, nbm@castle.ed.ac.uk, bobf@epcc.ed.ac.uk
Content-Length: 8050

Dear MPI Colleagues

I imagine that many of you have started or are about to start reading
the three contexts subcommittee proposals.  We have prepared a
comparative, and non judgmental, summary of the three proposals which
may be of some assistance to MPI.

The three proposals in the context subcommittee share common features,
and have differences both in concept and detail.  Two of these proposals
contain features which are "separable" and could equally appear as
components of one or more other proposals.  Hopefully the summary will:
(a) help us to discuss the important differnces between the proposals and
make agreements on how we should proceed with respect to those issues;
(b) help us to isolate the separable points and make separate
agreements on those issues.

I hope that the summary is both accurate and complete. Please make
corrections and additions if you discover such. I apologise in advance
for my errors, which are surely inevitable.

Best Wishes
Lyndon

----------------------------------------------------------------------

Summary of context subcommittee proposals
*****************************************

The three proposals in the context subcommittee share common features,
and have differences both in concept and detail.  Two of these proposals
contain features which are "separable" and could equally appear as
components of one or more other proposals.  This summary identifies
feature of proposals as: Common Features; Separable Features; Concept
Differences; Detail Differences. 

Common Features
===============

1. Process group management
---------------------------

In each proposal groups are created dynamically and have static
membership. In each proposal a group can be created as a partition of
an existing group and as a permutation of an existing group. Each
proposal allows (or suggests) that a group can be created as an
explicit list of processes.

2. Provision for point-to-point communication within group.
-----------------------------------------------------------

In each proposal point-to-point communcation of scope closed within a
group can be expressed in terms of a reference to a group coupled
with a process rank within the group.

3. Provision for collective communication within group.
------------------------------------------------------

In each proposal collective communication of scope closed within a
group can be expressed in terms of a reference to a group.

4. Opacity of group and process description.
--------------------------------------------

In each proposal the description of groups and processes is opaque.
Groups and processes are referred to by a handle like object.


Separable Features
==================

1. Tag usage in point-to-point communication.
---------------------------------------------

Proposal III describes tag selection for Receive in a two-integer form.
Proposals I and VII say nothing about tag usage.
   
This feature can be placed in all Proposals I, III and VII.

[Historical note: Tony did say to methat this would appear as an
appendix with our mutual recognition that it can equally appear as a
feature of any of the proposals.]

2. Tag usage in collective communication.
-----------------------------------------

Proposal III suggests that tag should be used as an argument to 
collective communication where this will assist debugging.
Proposals I and VII say nothing about usage.

This feature can be placed in all Proposals I, III and VII.

3. Context or Group cache
-------------------------

Proposal VII decribes a cache facility associated with contexts and groups.
Proposal III describes a similar cache facility associated with groups.

This feature can be placed in all Proposals I, III and VII.


4. Opaque object (descriptor) transmission.
-------------------------------------------

Proposal VII suggests that opaque object transmission can be 
provided by integration with transmission of typed data.
Proposal III suggests that opaque transmission is 
provided by a mechanism for flattening a descriptor into a
memory buffer.
These are just details of different ways of providing the feature.

This feature can be placed in Proposals III and VII.
This feature cannot be placed in Proposal I.

5. Context registry.
--------------------

Proposal III describes a context name registry service.
Proposal VII indicates that such a service would be useful.

This feature can be placed in Proposals III and VII.
This feature cannot be placed in Proposal I.

Concept Differences.
====================

1. Concept of CONTEXT and GROUP
-------------------------------

In Proposal I CONTEXT and GROUP are identical concepts and are not
distinguished.

In Proposal III CONTEXT is a lower degree concept that GROUP. The
GROUP concept inherits aspects of the CONTEXT concept.

In Proposal VII CONTEXT is a higher concept than GROUP. The CONTEXT
concept inherits aspects of the GROUP concept.

2. Scope of point-to-point communication.
-----------------------------------------

In Proposal I the scope of point-to-point communication is limited to
the CONTEXT. Processes which are members of distinct groups can only
communicate through a common ancestor group.

In Proposals III and VII the scope of point-to-point communciation is
not limited. Processes which are members of distinct groups can
communicate without reference to a common ancestor group.

3. Transmission of group or context.
------------------------------------

In Proposal I the CONTEXT cannot be transmitted from one process to
another.

In Proposals VII and III both CONTEXT and GROUP can be transmitted
from one process to another. In Proposal VII PROCESS can alo be
transmitted (Proposal III suggests such but makes no specific
provision, presumably a small oversight?)

Detail differences.
===================

1. Manifestation of context
---------------------------

In Proposals I and VII context is an opaque object.

In Proposal III context is an integer(?).

2. Deletion of group.
---------------------

In Proposals VII and III groups can be deleted.

In Proposal I there is no provision for group deletion (possibly a
small oversight?).

3. Duplication of group.
------------------------

In Proposals I and III a group there is explicit provision for
duplication of an existing group to form a new (distinct, homomorphic)
group.

In Proposal VII there is no such provision as similar funtionality is
provided by the context (although the provision for group partition,
permutation and definition can be used to create a snapshot copy of a
group).

4. Global shared variables.
---------------------------

Proposals I and VII do not require global shared variables.

Proposal III requires a global shared variable (which can be
implemented as such or of course in the traditional approach as a
global service process.)

3. Process identifier addressed communication.
----------------------------------------------

Proposal I does not make provision for process identifier addressed
communication.

Proposal III makes provision for process identifier addressed
communication within multiple distinct tag spaces.

Proposal VII makes provision for process identifier addressed
communication within a single distinct tag space.

5. Inter-group communication.
-----------------------------

Proposal I does not provide inter-group communication as it limits the
scope of point-to-point communication to be closed within a group.

Proposal VII provides inter-group communication in an addressing form
specified by sender (receiver) group, receiver (sender) group and
sender (receiver) rank.

Proposal III provides inter-group communication as process identifier
addressed communication.


----------------------------------------------------------------------


         /--------------------------------------------------------\
    e||) | Lyndon J Clarke    Edinburgh Parallel Computing Centre | e||) 
    c||c | Tel: 031 650 5021  Email: lyndon@epcc.edinburgh.ac.uk  | c||c 
         \--------------------------------------------------------/




----- End Included Message -----



From owner-mpi-comm@CS.UTK.EDU  Thu Mar 25 14:01:25 1993
Received: from CS.UTK.EDU by surfer.EPM.ORNL.GOV (5.61/1.34)
	id AA23412; Thu, 25 Mar 93 14:01:25 -0500
Received: from localhost by CS.UTK.EDU with SMTP (5.61+IDA+UTK-930125/2.8s-UTK)
	id AA00787; Thu, 25 Mar 93 13:59:45 -0500
X-Resent-To: mpi-comm@CS.UTK.EDU ; Thu, 25 Mar 1993 13:59:44 EST
Errors-To: owner-mpi-comm@CS.UTK.EDU
Received: from Aurora.CS.MsState.Edu by CS.UTK.EDU with SMTP (5.61+IDA+UTK-930125/2.8s-UTK)
	id AA00747; Thu, 25 Mar 93 13:58:34 -0500
Received:  by Aurora.CS.MsState.Edu (4.1/6.0s-FWP);
	   id AA07654; Thu, 25 Mar 93 12:52:38 CST
Date: Thu, 25 Mar 93 12:52:38 CST
From: Tony Skjellum <tony@Aurora.CS.MsState.Edu>
Message-Id: <9303251852.AA07654@Aurora.CS.MsState.Edu>
To: mpi-comm@cs.utk.edu, mpi-context@cs.utk.edu, lyndon@epcc.ed.ac.uk
Subject: Re: Helpful Summary of Contexts Proposals
Cc: tony@aurora.cs.msstate.edu, nbm@castle.ed.ac.uk, bobf@epcc.ed.ac.uk

Lyndon, as you know I was immensely under the gun yesterday, and my
9-hour trip was quite an ordeal, but I did get the sub-committee's
proposal in on time, and it is basically quite good.  I do feel that it
is appropriate to include comparisons and even criticisms in the
conclusions, but it was not done evenly, since mine was last.  To this
extent, I see why you did not like that.  In same light, I can see why
we should drop your name and Rik's name from proposal III, as this
might unfairly indicate your support for proposal III (which is
admittedly, an extended version of the programming model I support
most, and is what Zipcode does, plus some additions).

Please restrain yourself from completely dominating this subcommittee, because
of the remarkable amount of time you are able to devote to it.  To be
fair, I cannot devote more than 2hr/day, and you are able to devote 
something like 12hr/day to it.  People at the SIAM meeting were overwhelmed
by the volume of mail you generate on different topics.  You are a star
performer, but you are also very demanding, and I must say that I have
had some aggravations in this last weeks, but not only from you.  I am trying
not to push my personal viewpoint too hard.  Please work from a viewpoint
of cooperation with me, as we move towards the meeting next week.  In this
vein, see next paragraph.

I will read your summary, but I already agree (note: agree) to drop all
conclusion comments from all three subproposals that are "judgemental"
(a loaded word).  Since we are making a report out of this, the
comparison should go in as latex.  I will give this to Otto today (I
will give it to him).  Do you want me to latex your contribution, or
will you (it is not too late there).  Tell me.

Ala Frankie & Johnny, I have to hang up now, since there is more mail
from you to read :-)...  I will not respond to that which is outdated by
this letter.  Please work on a latex version of your excellent new contribution,
which also makes our joint report much better.  I thank you.

PS For rest of committee, the new contribution by Lyndon does not invalidate
yesterday's tripartite proposal, it will merely be included in  it.  
----- Begin Included Message -----

From owner-mpi-comm@CS.UTK.EDU Thu Mar 25 10:07:51 1993
X-Resent-To: mpi-comm@CS.UTK.EDU ; Thu, 25 Mar 1993 10:45:59 EST
Date: Thu, 25 Mar 93 15:44:59 GMT
From: L J Clarke <lyndon@epcc.ed.ac.uk>
Subject: Helpful Summary of Contexts Proposals
To: mpi-comm@cs.utk.edu, mpi-context@cs.utk.edu
Reply-To: lyndon@epcc.ed.ac.uk
Cc: tony@aurora.cs.msstate.edu, nbm@castle.ed.ac.uk, bobf@epcc.ed.ac.uk
Content-Length: 8050

Dear MPI Colleagues

I imagine that many of you have started or are about to start reading
the three contexts subcommittee proposals.  We have prepared a
comparative, and non judgmental, summary of the three proposals which
may be of some assistance to MPI.

The three proposals in the context subcommittee share common features,
and have differences both in concept and detail.  Two of these proposals
contain features which are "separable" and could equally appear as
components of one or more other proposals.  Hopefully the summary will:
(a) help us to discuss the important differnces between the proposals and
make agreements on how we should proceed with respect to those issues;
(b) help us to isolate the separable points and make separate
agreements on those issues.

I hope that the summary is both accurate and complete. Please make
corrections and additions if you discover such. I apologise in advance
for my errors, which are surely inevitable.

Best Wishes
Lyndon

----------------------------------------------------------------------

Summary of context subcommittee proposals
*****************************************

The three proposals in the context subcommittee share common features,
and have differences both in concept and detail.  Two of these proposals
contain features which are "separable" and could equally appear as
components of one or more other proposals.  This summary identifies
feature of proposals as: Common Features; Separable Features; Concept
Differences; Detail Differences. 

Common Features
===============

1. Process group management
---------------------------

In each proposal groups are created dynamically and have static
membership. In each proposal a group can be created as a partition of
an existing group and as a permutation of an existing group. Each
proposal allows (or suggests) that a group can be created as an
explicit list of processes.

2. Provision for point-to-point communication within group.
-----------------------------------------------------------

In each proposal point-to-point communcation of scope closed within a
group can be expressed in terms of a reference to a group coupled
with a process rank within the group.

3. Provision for collective communication within group.
------------------------------------------------------

In each proposal collective communication of scope closed within a
group can be expressed in terms of a reference to a group.

4. Opacity of group and process description.
--------------------------------------------

In each proposal the description of groups and processes is opaque.
Groups and processes are referred to by a handle like object.


Separable Features
==================

1. Tag usage in point-to-point communication.
---------------------------------------------

Proposal III describes tag selection for Receive in a two-integer form.
Proposals I and VII say nothing about tag usage.
   
This feature can be placed in all Proposals I, III and VII.

[Historical note: Tony did say to methat this would appear as an
appendix with our mutual recognition that it can equally appear as a
feature of any of the proposals.]

2. Tag usage in collective communication.
-----------------------------------------

Proposal III suggests that tag should be used as an argument to 
collective communication where this will assist debugging.
Proposals I and VII say nothing about usage.

This feature can be placed in all Proposals I, III and VII.

3. Context or Group cache
-------------------------

Proposal VII decribes a cache facility associated with contexts and groups.
Proposal III describes a similar cache facility associated with groups.

This feature can be placed in all Proposals I, III and VII.


4. Opaque object (descriptor) transmission.
-------------------------------------------

Proposal VII suggests that opaque object transmission can be 
provided by integration with transmission of typed data.
Proposal III suggests that opaque transmission is 
provided by a mechanism for flattening a descriptor into a
memory buffer.
These are just details of different ways of providing the feature.

This feature can be placed in Proposals III and VII.
This feature cannot be placed in Proposal I.

5. Context registry.
--------------------

Proposal III describes a context name registry service.
Proposal VII indicates that such a service would be useful.

This feature can be placed in Proposals III and VII.
This feature cannot be placed in Proposal I.

Concept Differences.
====================

1. Concept of CONTEXT and GROUP
-------------------------------

In Proposal I CONTEXT and GROUP are identical concepts and are not
distinguished.

In Proposal III CONTEXT is a lower degree concept that GROUP. The
GROUP concept inherits aspects of the CONTEXT concept.

In Proposal VII CONTEXT is a higher concept than GROUP. The CONTEXT
concept inherits aspects of the GROUP concept.

2. Scope of point-to-point communication.
-----------------------------------------

In Proposal I the scope of point-to-point communication is limited to
the CONTEXT. Processes which are members of distinct groups can only
communicate through a common ancestor group.

In Proposals III and VII the scope of point-to-point communciation is
not limited. Processes which are members of distinct groups can
communicate without reference to a common ancestor group.

3. Transmission of group or context.
------------------------------------

In Proposal I the CONTEXT cannot be transmitted from one process to
another.

In Proposals VII and III both CONTEXT and GROUP can be transmitted
from one process to another. In Proposal VII PROCESS can alo be
transmitted (Proposal III suggests such but makes no specific
provision, presumably a small oversight?)

Detail differences.
===================

1. Manifestation of context
---------------------------

In Proposals I and VII context is an opaque object.

In Proposal III context is an integer(?).

2. Deletion of group.
---------------------

In Proposals VII and III groups can be deleted.

In Proposal I there is no provision for group deletion (possibly a
small oversight?).

3. Duplication of group.
------------------------

In Proposals I and III a group there is explicit provision for
duplication of an existing group to form a new (distinct, homomorphic)
group.

In Proposal VII there is no such provision as similar funtionality is
provided by the context (although the provision for group partition,
permutation and definition can be used to create a snapshot copy of a
group).

4. Global shared variables.
---------------------------

Proposals I and VII do not require global shared variables.

Proposal III requires a global shared variable (which can be
implemented as such or of course in the traditional approach as a
global service process.)

3. Process identifier addressed communication.
----------------------------------------------

Proposal I does not make provision for process identifier addressed
communication.

Proposal III makes provision for process identifier addressed
communication within multiple distinct tag spaces.

Proposal VII makes provision for process identifier addressed
communication within a single distinct tag space.

5. Inter-group communication.
-----------------------------

Proposal I does not provide inter-group communication as it limits the
scope of point-to-point communication to be closed within a group.

Proposal VII provides inter-group communication in an addressing form
specified by sender (receiver) group, receiver (sender) group and
sender (receiver) rank.

Proposal III provides inter-group communication as process identifier
addressed communication.


----------------------------------------------------------------------


         /--------------------------------------------------------\
    e||) | Lyndon J Clarke    Edinburgh Parallel Computing Centre | e||) 
    c||c | Tel: 031 650 5021  Email: lyndon@epcc.edinburgh.ac.uk  | c||c 
         \--------------------------------------------------------/




----- End Included Message -----

From owner-mpi-comm@CS.UTK.EDU  Fri Mar 26 18:57:02 1993
Received: from CS.UTK.EDU by surfer.EPM.ORNL.GOV (5.61/1.34)
	id AA28001; Fri, 26 Mar 93 18:57:02 -0500
Received: from localhost by CS.UTK.EDU with SMTP (5.61+IDA+UTK-930125/2.8s-UTK)
	id AA17683; Fri, 26 Mar 93 18:54:46 -0500
X-Resent-To: mpi-comm@CS.UTK.EDU ; Fri, 26 Mar 1993 18:54:44 EST
Errors-To: owner-mpi-comm@CS.UTK.EDU
Received: from iliamna.cse.ogi.edu by CS.UTK.EDU with SMTP (5.61+IDA+UTK-930125/2.8s-UTK)
	id AA17674; Fri, 26 Mar 93 18:54:43 -0500
Received: by iliamna.cse.ogi.edu (/\==/\ Smail3.1.25.1 #25.15)
	id <m0ncOET-0002vyC@iliamna.cse.ogi.edu>; Fri, 26 Mar 93 15:54 PST
Message-Id: <m0ncOET-0002vyC@iliamna.cse.ogi.edu>
Date: Fri, 26 Mar 93 15:54 PST
From: otto@iliamna.cse.ogi.edu (Steve Otto)
To: mpi-comm@cs.utk.edu
Subject: Draft available on netlib




	A PostScript version of the current MPI Draft Document
	is available on netlib.  It is called draft326.ps.z.uu and
	is a postscript, compressed, uuencoded file.  The size 
	is 1830521 bytes.

	send draft326.ps.z.uu from mpi

	will get the file, or you may want to pull it over using xnetlib.

	--Steve Otto

From owner-mpi-comm@CS.UTK.EDU  Fri Mar 26 19:42:13 1993
Received: from CS.UTK.EDU by surfer.EPM.ORNL.GOV (5.61/1.34)
	id AA28702; Fri, 26 Mar 93 19:42:13 -0500
Received: from localhost by CS.UTK.EDU with SMTP (5.61+IDA+UTK-930125/2.8s-UTK)
	id AA19291; Fri, 26 Mar 93 19:40:36 -0500
X-Resent-To: mpi-comm@CS.UTK.EDU ; Fri, 26 Mar 1993 19:40:33 EST
Errors-To: owner-mpi-comm@CS.UTK.EDU
Received: from wk46.nas.nasa.gov by CS.UTK.EDU with SMTP (5.61+IDA+UTK-930125/2.8s-UTK)
	id AA19262; Fri, 26 Mar 93 19:40:26 -0500
Received: by wk46.nas.nasa.gov (5.61/1.34)
	id AA15348; Fri, 26 Mar 93 16:40:19 -0800
Date: Fri, 26 Mar 93 16:40:19 -0800
From: barszcz@nas.nasa.gov (Eric Barszcz)
Message-Id: <9303270040.AA15348@wk46.nas.nasa.gov>
To: mpi-comm@cs.utk.edu
Subject: Multidisciplinary Position Paper

%!PS-Adobe-2.0
%%Creator: dvips, version 5.4 (C) 1986-90 Radical Eye Software
%%Pages: 10 1
%%BoundingBox: 0 0 612 792
%%EndComments
%%BeginProcSet: tex.pro
/TeXDict 200 dict def TeXDict begin /N /def load def /B{bind def}N /S /exch
load def /X{S N}B /TR /translate load N /isls false N /vsize 10 N /@rigin{
isls{[0 1 -1 0 0 0]concat}if 72 Resolution div 72 VResolution div neg scale
Resolution VResolution vsize neg mul TR}B /@letter{/vsize 10 N}B /@landscape{
/isls true N /vsize -1 N}B /@a4{/vsize 10.6929133858 N}B /@a3{/vsize 15.5531 N
}B /@ledger{/vsize 16 N}B /@legal{/vsize 13 N}B /@manualfeed{statusdict
/manualfeed true put}B /@copies{/#copies X}B /FMat[1 0 0 -1 0 0]N /FBB[0 0 0 0
]N /df{/sf 1 N /fntrx FMat N df-tail}B /dfs{div /sf X /fntrx[sf 0 0 sf neg 0 0
]N df-tail}B /df-tail{/nn 8 dict N nn begin /FontType 3 N /FontMatrix fntrx N
/FontBBox FBB N string /base X array /BitMaps X /BuildChar{CharBuilder}N
/Encoding IE N end dup{/foo setfont}2 array copy cvx N load 0 nn put /ctr 0 N[
}B /E{pop nn dup definefont setfont}B /ch-image{ch-data dup type /stringtype
ne{ctr get /ctr ctr 1 add N}if}B /ch-width{ch-data dup length 5 sub get}B
/ch-height{ch-data dup length 4 sub get}B /ch-xoff{128 ch-data dup length 3
sub get sub}B /ch-yoff{ch-data dup length 2 sub get 127 sub}B /ch-dx{ch-data
dup length 1 sub get}B /ctr 0 N /CharBuilder{save 3 1 roll S dup /base get 2
index get S /BitMaps get S get /ch-data X pop /ctr 0 N ch-dx 0 ch-xoff ch-yoff
ch-height sub ch-xoff ch-width add ch-yoff setcachedevice ch-width ch-height
true[1 0 0 -1 -.1 ch-xoff sub ch-yoff .1 add]{ch-image}imagemask restore}B /D{
/cc X dup type /stringtype ne{]}if nn /base get cc ctr put nn /BitMaps get S
ctr S sf 1 ne{dup dup length 1 sub dup 2 index S get sf div put}if put /ctr
ctr 1 add N}B /I{cc 1 add D}B /bop{userdict /bop-hook known{bop-hook}if /SI
save N @rigin 0 0 moveto}B /eop{clear SI restore showpage userdict /eop-hook
known{eop-hook}if}B /@start{userdict /start-hook known{start-hook}if
/VResolution X /Resolution X 1000 div /DVImag X /IE 256 array N 0 1 255{IE S 1
string dup 0 3 index put cvn put}for}B /p /show load N /RMat[1 0 0 -1 0 0]N
/BDot 8 string N /v{/ruley X /rulex X V}B /V{gsave TR -.1 -.1 TR rulex ruley
scale 1 1 false RMat{BDot}imagemask grestore}B /a{moveto}B /delta 0 N /tail{
dup /delta X 0 rmoveto}B /M{S p delta add tail}B /b{S p tail}B /c{-4 M}B /d{
-3 M}B /e{-2 M}B /f{-1 M}B /g{0 M}B /h{1 M}B /i{2 M}B /j{3 M}B /k{4 M}B /l{p
-4 w}B /m{p -3 w}B /n{p -2 w}B /o{p -1 w}B /q{p 1 w}B /r{p 2 w}B /s{p 3 w}B /t
{p 4 w}B /w{0 rmoveto}B /x{0 S rmoveto}B /y{3 2 roll p a}B /bos{/SS save N}B
/eos{clear SS restore}B end
%%EndProcSet
TeXDict begin 1000 300 300 @start /Fa 34 122 df<FFF0FFF0FFE00D037C8B11>45
D<000FC000106000603800801800801C01001C02201E02101E04101E04101E04101E08203C0820
3C0840380840780880F00700E00001C000030000060000180000200000C0000100000200000400
100800301000202000605F80C063FFC040FF80807F00801E0017227CA019>50
D<000FC000386000703000E03001C0380380380780380700380F00380F00380F00381E00781E00
781E00781E00F81E00F01C00F00E01F00E02F00605E00309E001F1E00003C00003C00003800007
00000700600E00F00C00F01800E0300080600041C0003F000015227BA019>57
D<0000030000000300000007000000070000000F0000000F0000001F0000002F0000002F000000
4F0000004F80000087800000878000010780000207800002078000040780000407800008078000
080780001007800030078000200780007FFF80004007C0008007C0008003C0010003C0030003C0
020003C0040003C0040003C00C0003C03C0007C0FF003FFC1E237DA224>65
D<00007F00800003808100000E00630000380027000070001F0000E0000E0001C0000E00038000
0E000700000E000F000004000E000004001E000004003C000004003C0000080078000000007800
0000007800000000F000000000F000000000F000000000F000000000F000000000E000000000E0
00002000E000002000E000004000E000004000F000008000700000800070000100003800020000
18000400001C0008000006003000000381C0000000FE000000212479A223>67
D<00FFFFFF000F000F000F0003000F0003001E0003001E0003001E0002001E0002003C0002003C
0002003C0102003C010000780200007802000078060000780E0000FFFC0000F00C0000F00C0000
F00C0001E0080001E0080001E0080001E0000003C0000003C0000003C0000003C0000007800000
0780000007800000078000000F800000FFFC000020227DA120>70 D<00007F0080000380810000
0E00630000380027000070001F0000E0000E0001C0000E000380000E000700000E000F00000400
0E000004001E000004003C000004003C00000800780000000078000000007800000000F0000000
00F000000000F000000000F000000000F0003FFC00E00001E000E00001E000E00001E000E00003
C000E00003C000F00003C000700003C0007000078000380007800018000F80001C001380000600
2300000381C1000000FE000000212479A226>I<00FFF87FFC000F000780000F000780000F0007
80001E000F00001E000F00001E000F00001E000F00003C001E00003C001E00003C001E00003C00
1E000078003C000078003C000078003C000078003C0000FFFFF80000F000780000F000780000F0
00780001E000F00001E000F00001E000F00001E000F00003C001E00003C001E00003C001E00003
C001E000078003C000078003C000078003C000078003C0000F8007C000FFF87FFC0026227DA124
>I<00FFF8000F00000F00000F00001E00001E00001E00001E00003C00003C00003C00003C0000
780000780000780000780000F00000F00000F00000F00001E00001E00001E00001E00003C00003
C00003C00003C0000780000780000780000780000F8000FFF80015227DA113>I<0007FFC00000
3C0000003C0000003C00000078000000780000007800000078000000F0000000F0000000F00000
00F0000001E0000001E0000001E0000001E0000003C0000003C0000003C0000003C00000078000
000780000007800000078000000F0000000F0000380F0000780F0000F81E0000F81E0000F03C00
00403800004070000021E000001F8000001A237CA11A>I<00FF800007FC000F80000F80000F80
001780000F80001780001780002F000013C0002F000013C0004F000013C0008F000023C0009E00
0023C0011E000023C0011E000023C0021E000043C0043C000043C0043C000043C0083C000041E0
083C000081E01078000081E02078000081E02078000081E04078000101E040F0000101E080F000
0101E100F0000101E100F0000200F201E0000200F201E0000200F401E0000200F801E0000400F8
03C0000400F003C0000400F003C0000C00E003C0001E00C007C000FFC0C07FFC002E227DA12C>
77 D<00FFFFE0000F0038000F001E000F000E001E0007001E0007001E0007001E0007003C000F
003C000F003C000F003C001E0078001E0078003C00780078007800E000F003C000FFFE0000F000
0000F0000001E0000001E0000001E0000001E0000003C0000003C0000003C0000003C000000780
00000780000007800000078000000F800000FFF8000020227DA121>80 D<0001F020000E0C4000
1802C0003001C0006001C000E0018000C0018001C0018001C0018003C0010003C0010003C00000
03C0000003E0000001F8000001FF000000FFE000007FF000001FF8000003FC0000007C0000003C
0000001E0000001E0000001E0020001C0020001C0020001C002000180060003800600030007000
60007000C000C8018000C607000081FC00001B247DA21B>83 D<1FFFFFF81E03C0381803C01830
03C01820078018200780184007801040078010400F0010800F0010800F0010000F0000001E0000
001E0000001E0000001E0000003C0000003C0000003C0000003C00000078000000780000007800
000078000000F0000000F0000000F0000000F0000001E0000001E0000001E0000001E0000003E0
0000FFFF00001D2277A123>I<01020408102020404080B8FCFCF870080F76A20F>96
D<00F8C00185C00705C00E03800E03801C03803C0380380700780700780700780700F00E00F00E
00F00E00F00E10F01C20701C20703C20305C40308C400F078014157B9419>I<03C03F80038003
80038007000700070007000E000E000E000E001C001CF81D0C1E0E3C0638073807380F700F700F
700F700FE01EE01EE01EE03CE038E038607060E031C01F0010237BA216>I<007E0001C1000301
800703800E07801C07803C0000380000780000780000780000F00000F00000F00000F00000F001
00700100700200300C001830000FC00011157B9416>I<00003C0003F800003800003800003800
00700000700000700000700000E00000E00000E00000E00001C000F9C00185C00705C00E03800E
03801C03803C0380380700780700780700780700F00E00F00E00F00E00F00E10F01C20701C2070
3C20305C40308C400F078016237BA219>I<00F803840E021C023C0238027804F018FFE0F000F0
00E000E000E000E000E002E0026004701830600F800F157A9416>I<00003E0000470000CF0001
8F000186000380000380000380000700000700000700000700000700000E0000FFF0000E00000E
00000E00001C00001C00001C00001C00001C000038000038000038000038000038000070000070
0000700000700000700000E00000E00000E00000E00000C00001C00001C000718000F18000F300
006200003C0000182D82A20F>I<001F180030B800E0B801C07001C0700380700780700700E00F
00E00F00E00F00E01E01C01E01C01E01C01E01C01E03800E03800E0780060B8006170001E70000
0700000700000E00000E00000E00701C00F01800F0300060E0003F8000151F7E9416>I<00F000
0FE00000E00000E00000E00001C00001C00001C00001C000038000038000038000038000070000
071F0007218007C0C00F00E00F00E00E00E00E00E01C01C01C01C01C01C01C01C0380380380380
380380380704700708700E08700E10700610E006206003C016237DA219>I<00C001E001C001C0
000000000000000000000000000000001C002300430043008700870087000E000E001C001C001C
00380038003840708070807080710032001C000C217BA00F>I<01E01FC001C001C001C0038003
800380038007000700070007000E000E000E000E001C001C001C001C0038003800380038007000
700070007100E200E200E200E200640038000B237CA20C>108 D<1C0F80F8002610C10C004760
66060087807807008780780700870070070087007007000E00E00E000E00E00E000E00E00E000E
00E00E001C01C01C001C01C01C001C01C01C001C01C03820380380384038038070403803807080
380380308070070031003003001E0024157B9428>I<1C0F002631C04740C08780E08780E08700
E08700E00E01C00E01C00E01C00E01C01C03801C03801C03801C0704380708380E08380E103806
107006203003C017157B941B>I<007E0001C3000381800701C00E01C01C01E03C01E03801E078
01E07801E07801E0F003C0F003C0F00380F00780700700700E00700C0030180018700007C00013
157B9419>I<01C1F002621804741C08780C08700E08700E08701E00E01E00E01E00E01E00E01E
01C03C01C03C01C03C01C07803807003807003C0E003C1C0072380071E000700000700000E0000
0E00000E00000E00001C00001C00001C0000FFC000171F7F9419>I<1C1F002620804741C08783
C08703C08701808700000E00000E00000E00000E00001C00001C00001C00001C00003800003800
0038000038000070000030000013157B9415>114 D<00FC000183000200800401800C03800C03
000C00000F00000FF00007FC0003FE00003E00000F00000700700700F00600F00600E004004008
002030001FC00011157D9414>I<00C001C001C001C001C003800380038003800700FFF8070007
000E000E000E000E001C001C001C001C003800380038003810702070207040708031001E000D1F
7C9E10>I<1E00602300E04380E04381C08381C08701C08701C00703800E03800E03800E03801C
07001C07001C07001C07081C0E10180E101C0E101C1E200C262007C3C016157B941A>I<1E0030
2300704380704380E08380E08700E08700E00701C00E01C00E01C00E01C01C03801C03801C0380
1C03801C07001C07001C07001C0F000C3E0003CE00000E00000E00001C00601C00F03800F03000
E0600080C0004380003E0000151F7B9418>121 D E /Fb 1 81 df<FFFFFFFFE0FFFFFFFFF070
00001FF078000001F03C000000781C000000180E0000000C0F0000000407000000040380000002
03C000000001E000000000E0000000007000000000780000000038000000001C000000001E0000
00000F000000000700000000038000000003800000000300000000070000000006000000000C00
0000001800000000380000000030000000006000000000C000000001C000000001800000020300
00000406000000040E0000000C0C00000018180000007830000001F07000001FF07FFFFFFFF0FF
FFFFFFE0272A7E7F2C>80 D E /Fc 3 21 df<FFFFFFFCFFFFFFFC1E027C8C27>0
D<C00003E0000770000E38001C1C00380E00700700E00381C001C38000E700007E00003C00003C
00007E0000E70001C3800381C00700E00E00701C003838001C70000EE00007C000031818799727
>2 D<0000000C0000003C000000F0000003C000000F0000003C000000F0000007C000001F0000
0078000001E00000078000001E00000078000000E0000000780000001E0000000780000001E000
0000780000001F00000007C0000000F00000003C0000000F00000003C0000000F00000003C0000
000C0000000000000000000000000000000000000000000000000000000000000000FFFFFFFCFF
FFFFFC1E277C9F27>20 D E /Fd 3 52 df<07C018303018701C600C600CE00EE00EE00EE00EE0
0EE00EE00EE00EE00E600C600C701C30181C7007C00F157F9412>48 D<0F8030E040708030C038
E0384038003800700070006000C00180030006000C08080810183FF07FF0FFF00D157E9412>50
D<0FE030306018701C701C001C00180038006007E000300018000C000E000EE00EE00EC00C4018
30300FE00F157F9412>I E /Fe 3 106 df<07F0000FE000F0001E0000B8001E0000B8002E0000
B8004E000138005C000138009C000138011C00011C011C00021C023800021C043800021C043800
021C083800041C107000040E107000040E207000040E407000080E40E000080E80E000080F00E0
00080700E000180601C000FE040FF80023177F9622>77 D<07F007F800F000C000B8008000B800
80009C0080011C0100011E0100010E0100010E0100020702000207020002038200020382000401
C4000401C4000400E4000400E4000800780008007800080038000800380018001000FE0010001D
177F961C>I<0300038003000000000000000000000000001C002400460046008C000C00180018
00180031003100320032001C0009177F960C>105 D E /Ff 9 84 df<0F00187F00380F00380E
00700E00700E00700E00E01C00E01C01C01C01801C0380380700380600380C0038180070300070
600070C000730000FC0000F0000015157D9418>23 D<003F0001FFC00381E00400400800001000
001000001000001060000B98000FF800100000200000400000400000400000800000C000804000
80600100380E001FFC0007E00013177F9517>34 D<70F8F8F87005057C840E>58
D<70F8FCFC7404040404080810102040060F7C840E>I<00007F00400003C0C080000E00218000
1C0013800070000F8000E000070001C0000700038000070007000007000F000002000E00000200
1E000002003C000002003C00000400780000000078000000007800000000F000000000F0000000
00F000000000F000000000F0003FFF00E00000F000E00000F000E00000F000E00001E000F00001
E000F00001E000700001E000700003C000380003C000180007C0000C0009C00006001180000380
E08000007F00000022247DA226>71 D<007FC00001FF0007C00003E00007C00005E00007C00005
E00009E0000BC00009E0000BC00009E00013C00009E00023C00011E00027800011E00047800011
E00047800011E00087800021E0010F000020F0010F000020F0020F000020F0040F000040F0041E
000040F0081E000040F0081E000040F0101E000080F0203C00008078203C00008078403C000080
78803C0001007880780001007900780001007900780001007A00780002007C00F00002007C00F0
0002003800F00006003800F0000F003001F000FFE0203FFF0030227EA12F>77
D<007FC003FF0007C000780007C000600005E000200009E000400009E000400008F000400008F0
00400010F800800010780080001078008000103C008000203C010000203E010000201E01000020
1E010000400F020000400F020000400F020000400782000080078400008007C400008003C40000
8003C400010001E800010001E800010001F800010000F800020000F00002000070000200007000
06000070000F00002000FFE000200028227EA127>I<007FFFF0000007801C000007800F000007
800700000F000380000F000380000F000380000F000380001E000780001E000780001E00078000
1E000F00003C000F00003C001E00003C003C00003C007000007801E000007FFF00000078000000
007800000000F000000000F000000000F000000000F000000001E000000001E000000001E00000
0001E000000003C000000003C000000003C000000003C000000007C0000000FFFC00000021227E
A11F>80 D<0003F010000E0C2000180260002001E0004000E000C000C0008000C0018000C00180
00C00380008003800080038000000380000003C0000001F0000001FE000000FFE000007FF00000
1FF8000001FC0000003C0000001C0000000E0000000E0000000E0020000C0020000C0020000C00
2000080060001800600010007000200070004000C8008000C603000081FC00001C247DA21E>83
D E /Fg 31 122 df<FFE0FFE00B0280890E>45 D<60F0F06004047C830C>I<030007003F00C7
000700070007000700070007000700070007000700070007000700070007000700070007000700
0700070007000F80FFF80D1C7C9B15>49 D<07C01830201C400C400EF00FF80FF807F807700700
0F000E000E001C001C00380070006000C00180030006010C01180110023FFE7FFEFFFE101C7E9B
15>I<00F0030C06040C0E181E301E300C700070006000E3E0E430E818F00CF00EE006E007E007
E007E007E007600760077006300E300C18180C3003E0101D7E9B15>54 D<03C00C301818300C70
0C600EE006E006E007E007E007E007E0076007700F300F18170C2707C700060006000E300C780C
78187010203030C00F80101D7E9B15>57 D<000600000006000000060000000F0000000F000000
0F00000017800000178000001780000023C0000023C0000023C0000041E0000041E0000041E000
0080F0000080F0000180F8000100780001FFF80003007C0002003C0002003C0006003E0004001E
0004001E000C001F001E001F00FF80FFF01C1D7F9C1F>65 D<001F808000E06180018019800700
07800E0003801C0003801C00018038000180780000807800008070000080F0000000F0000000F0
000000F0000000F0000000F0000000F0000000F000000070000080780000807800008038000080
1C0001001C0001000E000200070004000180080000E03000001FC000191E7E9C1E>67
D<FF007FC00F800E000F8004000BC0040009E0040009E0040008F0040008F8040008780400083C
0400083C0400081E0400080F0400080F0400080784000807C4000803C4000801E4000801E40008
00F40008007C0008007C0008003C0008003C0008001C0008000C001C000C00FF8004001A1C7E9B
1F>78 D<07E0801C1980300580700380600180E00180E00080E00080E00080F00000F800007C00
007FC0003FF8001FFE0007FF0000FF80000F800007C00003C00001C08001C08001C08001C0C001
80C00180E00300D00200CC0C0083F800121E7E9C17>83 D<7FFFFFC0700F01C0600F00C0400F00
40400F0040C00F0020800F0020800F0020800F0020000F0000000F0000000F0000000F0000000F
0000000F0000000F0000000F0000000F0000000F0000000F0000000F0000000F0000000F000000
0F0000000F0000000F0000001F800003FFFC001B1C7F9B1E>I<1FC000307000783800781C0030
1C00001C00001C0001FC000F1C00381C00701C00601C00E01C40E01C40E01C40603C40304E801F
870012127E9115>97 D<07E00C301878307870306000E000E000E000E000E000E0006000700430
0418080C3007C00E127E9112>99 D<003F00000700000700000700000700000700000700000700
00070000070000070003E7000C1700180F00300700700700600700E00700E00700E00700E00700
E00700E00700600700700700300700180F000C370007C7E0131D7E9C17>I<03E00C301818300C
700E6006E006FFFEE000E000E000E00060007002300218040C1803E00F127F9112>I<00F8018C
071E061E0E0C0E000E000E000E000E000E00FFE00E000E000E000E000E000E000E000E000E000E
000E000E000E000E000E000E007FE00F1D809C0D>I<00038003C4C00C38C01C3880181800381C
00381C00381C00381C001818001C38000C300013C0001000003000001800001FF8001FFF001FFF
803003806001C0C000C0C000C0C000C06001803003001C0E0007F800121C7F9215>I<FC00001C
00001C00001C00001C00001C00001C00001C00001C00001C00001C00001C7C001C87001D03001E
03801C03801C03801C03801C03801C03801C03801C03801C03801C03801C03801C03801C03801C
0380FF9FF0141D7F9C17>I<18003C003C0018000000000000000000000000000000FC001C001C
001C001C001C001C001C001C001C001C001C001C001C001C001C001C00FF80091D7F9C0C>I<FC
00001C00001C00001C00001C00001C00001C00001C00001C00001C00001C00001C3FC01C0F001C
0C001C08001C10001C20001C40001CE0001DE0001E70001C78001C38001C3C001C1C001C0E001C
0F001C0F80FF9FE0131D7F9C16>107 D<FC001C001C001C001C001C001C001C001C001C001C00
1C001C001C001C001C001C001C001C001C001C001C001C001C001C001C001C001C00FF80091D7F
9C0C>I<FC7E07E0001C838838001D019018001E01E01C001C01C01C001C01C01C001C01C01C00
1C01C01C001C01C01C001C01C01C001C01C01C001C01C01C001C01C01C001C01C01C001C01C01C
001C01C01C001C01C01C00FF8FF8FF8021127F9124>I<FC7C001C87001D03001E03801C03801C
03801C03801C03801C03801C03801C03801C03801C03801C03801C03801C03801C0380FF9FF014
127F9117>I<03F0000E1C00180600300300700380600180E001C0E001C0E001C0E001C0E001C0
E001C06001807003803003001806000E1C0003F00012127F9115>I<FC7C001D86001E03001C01
801C01C01C00C01C00E01C00E01C00E01C00E01C00E01C00E01C01C01C01C01C01801E03001D06
001CF8001C00001C00001C00001C00001C00001C00001C0000FF8000131A7F9117>I<FCE01D30
1E781E781C301C001C001C001C001C001C001C001C001C001C001C001C00FFC00D127F9110>
114 D<1F9030704030C010C010E010F8007F803FE00FF000F880388018C018C018E010D0608FC0
0D127F9110>I<04000400040004000C000C001C003C00FFE01C001C001C001C001C001C001C00
1C001C001C101C101C101C101C100C100E2003C00C1A7F9910>I<FC1F801C03801C03801C0380
1C03801C03801C03801C03801C03801C03801C03801C03801C03801C03801C07800C07800E1B80
03E3F014127F9117>I<FF3FCFE03C0F03801C0701801C0701001C0B01000E0B82000E0B82000E
1182000711C4000711C4000720C40003A0E80003A0E80003C0680001C0700001C0700001803000
008020001B127F911E>119 D<FF07E03C03801C01001C01000E02000E02000704000704000704
0003880003880003D80001D00001D00000E00000E00000E000004000004000008000008000F080
00F10000F300006600003C0000131A7F9116>121 D E /Fh 2 122 df<040004000400C460E4E0
3F800E003F80E4E0C4600400040004000B0D7E8D11>3 D<0C000C000C000C000C000C00FFC0FF
C00C000C000C000C000C000C000C000C000C000C000C000C000C000C000C000C000C000C000A1A
7E9310>121 D E /Fi 41 122 df<0007F80FF000007FFE7FFC0001F80FF80E0003E00FE01F00
07C01FC03F000F801F803F000F801F803F000F800F801E000F800F800C000F800F8000000F800F
8000000F800F8000000F800F800000FFFFFFFFFF00FFFFFFFFFF000F800F801F000F800F801F00
0F800F801F000F800F801F000F800F801F000F800F801F000F800F801F000F800F801F000F800F
801F000F800F801F000F800F801F000F800F801F000F800F801F000F800F801F000F800F801F00
0F800F801F000F800F801F000F800F801F007FF07FF0FFE07FF07FF0FFE02B237FA22F>14
D<387CFEFFFF7F3B03030706060C1C18702008117CA210>39 D<387CFEFEFE7C3807077C8610>
46 D<00180000780001F800FFF800FFF80001F80001F80001F80001F80001F80001F80001F800
01F80001F80001F80001F80001F80001F80001F80001F80001F80001F80001F80001F80001F800
01F80001F80001F80001F80001F8007FFFE07FFFE013207C9F1C>49 D<03FC000FFF003C1FC070
07E07C07F0FE03F0FE03F8FE03F8FE01F87C01F83803F80003F80003F00003F00007E00007C000
0F80001F00003E0000380000700000E01801C0180380180700180E00380FFFF01FFFF03FFFF07F
FFF0FFFFF0FFFFF015207D9F1C>I<00FE0007FFC00F07E01E03F03F03F03F81F83F81F83F81F8
1F03F81F03F00003F00003E00007C0001F8001FE0001FF000007C00001F00001F80000FC0000FC
3C00FE7E00FEFF00FEFF00FEFF00FEFF00FC7E01FC7801F81E07F00FFFC001FE0017207E9F1C>
I<0000E00001E00003E00003E00007E0000FE0001FE0001FE00037E00077E000E7E001C7E00187
E00307E00707E00E07E00C07E01807E03807E07007E0E007E0FFFFFEFFFFFE0007E00007E00007
E00007E00007E00007E00007E000FFFE00FFFE17207E9F1C>I<1000201E01E01FFFC01FFF801F
FF001FFE001FF8001BC00018000018000018000018000019FC001FFF001E0FC01807E01803E000
03F00003F00003F80003F83803F87C03F8FE03F8FE03F8FC03F0FC03F07007E03007C01C1F800F
FF0003F80015207D9F1C>I<001F8000FFE003F07007C0F00F01F81F01F83E01F83E01F87E00F0
7C00007C0000FC0800FC7FC0FCFFE0FD80F0FF00F8FE007CFE007CFC007EFC007EFC007EFC007E
7C007E7C007E7C007E3C007C3E007C1E00F80F00F00783E003FFC000FF0017207E9F1C>I<0000
70000000007000000000F800000000F800000000F800000001FC00000001FC00000003FE000000
03FE00000003FE00000006FF000000067F0000000E7F8000000C3F8000000C3F800000183FC000
00181FC00000381FE00000300FE00000300FE00000600FF000006007F00000E007F80000FFFFF8
0000FFFFF800018001FC00018001FC00038001FE00030000FE00030000FE000600007F00060000
7F00FFE00FFFF8FFE00FFFF825227EA12A>65 D<0003FE0080001FFF818000FF01E38001F8003F
8003E0001F8007C0000F800F800007801F800007803F000003803F000003807F000001807E0000
01807E00000180FE00000000FE00000000FE00000000FE00000000FE00000000FE00000000FE00
000000FE000000007E000000007E000001807F000001803F000001803F000003801F800003000F
8000030007C000060003F0000C0001F800380000FF00F000001FFFC0000003FE000021227DA128
>67 D<FFFFFF8000FFFFFFF00007F003FC0007F0007E0007F0003F0007F0001F8007F0000FC007
F00007E007F00007E007F00007F007F00003F007F00003F007F00003F007F00003F807F00003F8
07F00003F807F00003F807F00003F807F00003F807F00003F807F00003F807F00003F807F00003
F007F00003F007F00003F007F00007E007F00007E007F0000FC007F0001F8007F0003F0007F000
7E0007F003FC00FFFFFFF000FFFFFF800025227EA12B>I<FFFFFFFCFFFFFFFC07F000FC07F000
3C07F0001C07F0000C07F0000E07F0000E07F0000607F0180607F0180607F0180607F0180007F0
380007F0780007FFF80007FFF80007F0780007F0380007F0180007F0180007F0180307F0180307
F0000307F0000607F0000607F0000607F0000E07F0000E07F0001E07F0003E07F001FCFFFFFFFC
FFFFFFFC20227EA125>I<FFFF83FFFEFFFF83FFFE07F0001FC007F0001FC007F0001FC007F000
1FC007F0001FC007F0001FC007F0001FC007F0001FC007F0001FC007F0001FC007F0001FC007F0
001FC007F0001FC007FFFFFFC007FFFFFFC007F0001FC007F0001FC007F0001FC007F0001FC007
F0001FC007F0001FC007F0001FC007F0001FC007F0001FC007F0001FC007F0001FC007F0001FC0
07F0001FC007F0001FC007F0001FC0FFFF83FFFEFFFF83FFFE27227EA12C>72
D<FFFFE0FFFFE003F80003F80003F80003F80003F80003F80003F80003F80003F80003F80003F8
0003F80003F80003F80003F80003F80003F80003F80003F80003F80003F80003F80003F80003F8
0003F80003F80003F80003F80003F80003F800FFFFE0FFFFE013227FA115>I<FFFFE000FFFFE0
0007F0000007F0000007F0000007F0000007F0000007F0000007F0000007F0000007F0000007F0
000007F0000007F0000007F0000007F0000007F0000007F0000007F0000007F0000007F0000007
F0001807F0001807F0001807F0001807F0003807F0003807F0007007F0007007F000F007F001F0
07F007F0FFFFFFF0FFFFFFF01D227EA122>76 D<FFF000000FFFFFF800001FFF07F800001FE006
FC000037E006FC000037E006FC000037E0067E000067E0067E000067E0063F0000C7E0063F0000
C7E0061F800187E0061F800187E0060FC00307E0060FC00307E0060FC00307E00607E00607E006
07E00607E00603F00C07E00603F00C07E00601F81807E00601F81807E00601F81807E00600FC30
07E00600FC3007E006007E6007E006007E6007E006003FC007E006003FC007E006001F8007E006
001F8007E006001F8007E006000F0007E0FFF00F00FFFFFFF00600FFFF30227EA135>I<FFFFFF
00FFFFFFE007F007F007F001FC07F000FC07F0007E07F0007E07F0007F07F0007F07F0007F07F0
007F07F0007F07F0007E07F0007E07F000FC07F001FC07F007F007FFFFE007FFFF0007F0000007
F0000007F0000007F0000007F0000007F0000007F0000007F0000007F0000007F0000007F00000
07F0000007F00000FFFF8000FFFF800020227EA126>80 D<FFFFFE0000FFFFFFC00007F007F000
07F001F80007F000FC0007F0007E0007F0007F0007F0007F0007F0007F0007F0007F0007F0007F
0007F0007F0007F0007E0007F000FC0007F001F80007F007F00007FFFFC00007FFFF800007F00F
E00007F007F00007F003F80007F001FC0007F001FC0007F001FC0007F001FC0007F001FC0007F0
01FC0007F001FC0007F001FC0007F001FC0607F000FE0607F000FF0CFFFF803FF8FFFF800FF027
227EA12A>82 D<01FC0407FF8C1F03FC3C007C7C003C78001C78001CF8000CF8000CFC000CFC00
00FF0000FFE0007FFF007FFFC03FFFF01FFFF80FFFFC03FFFE003FFE0003FF00007F00003F0000
3FC0001FC0001FC0001FE0001EE0001EF0003CFC003CFF00F8C7FFE080FF8018227DA11F>I<07
FC001FFF803F07C03F03E03F01E03F01F01E01F00001F00001F0003FF003FDF01FC1F03F01F07E
01F0FC01F0FC01F0FC01F0FC01F07E02F07E0CF81FF87F07E03F18167E951B>97
D<FF000000FF0000001F0000001F0000001F0000001F0000001F0000001F0000001F0000001F00
00001F0000001F0000001F0000001F0FE0001F3FF8001FF07C001F801E001F001F001F000F801F
000F801F000FC01F000FC01F000FC01F000FC01F000FC01F000FC01F000FC01F000FC01F000F80
1F001F801F801F001FC03E001EE07C001C3FF800180FC0001A237EA21F>I<00FF8007FFE00F83
F01F03F03E03F07E03F07C01E07C0000FC0000FC0000FC0000FC0000FC0000FC00007C00007E00
007E00003E00301F00600FC0E007FF8000FE0014167E9519>I<0001FE000001FE0000003E0000
003E0000003E0000003E0000003E0000003E0000003E0000003E0000003E0000003E0000003E00
01FC3E0007FFBE000F81FE001F007E003E003E007E003E007C003E00FC003E00FC003E00FC003E
00FC003E00FC003E00FC003E00FC003E00FC003E007C003E007C003E003E007E001E00FE000F83
BE0007FF3FC001FC3FC01A237EA21F>I<00FE0007FF800F87C01E01E03E01F07C00F07C00F8FC
00F8FC00F8FFFFF8FFFFF8FC0000FC0000FC00007C00007C00007E00003E00181F00300FC07003
FFC000FF0015167E951A>I<003F8000FFC001E3E003C7E007C7E00F87E00F83C00F80000F8000
0F80000F80000F80000F8000FFFC00FFFC000F80000F80000F80000F80000F80000F80000F8000
0F80000F80000F80000F80000F80000F80000F80000F80000F80000F80000F80007FF8007FF800
13237FA211>I<03FC1E0FFF7F1F0F8F3E07CF3C03C07C03E07C03E07C03E07C03E07C03E03C03
C03E07C01F0F801FFF0013FC003000003000003800003FFF801FFFF00FFFF81FFFFC3800FC7000
3EF0001EF0001EF0001EF0001E78003C7C007C3F01F80FFFE001FF0018217E951C>I<FF000000
FF0000001F0000001F0000001F0000001F0000001F0000001F0000001F0000001F0000001F0000
001F0000001F0000001F07E0001F1FF8001F307C001F403C001F803E001F803E001F003E001F00
3E001F003E001F003E001F003E001F003E001F003E001F003E001F003E001F003E001F003E001F
003E001F003E001F003E00FFE1FFC0FFE1FFC01A237EA21F>I<1C003F007F007F007F003F001C
000000000000000000000000000000FF00FF001F001F001F001F001F001F001F001F001F001F00
1F001F001F001F001F001F001F001F00FFE0FFE00B247EA310>I<FF00FF001F001F001F001F00
1F001F001F001F001F001F001F001F001F001F001F001F001F001F001F001F001F001F001F001F
001F001F001F001F001F001F001F00FFE0FFE00B237EA210>108 D<FF07F007F000FF1FFC1FFC
001F303E303E001F403E403E001F801F801F001F801F801F001F001F001F001F001F001F001F00
1F001F001F001F001F001F001F001F001F001F001F001F001F001F001F001F001F001F001F001F
001F001F001F001F001F001F001F001F001F001F001F001F001F001F001F00FFE0FFE0FFE0FFE0
FFE0FFE02B167E9530>I<FF07E000FF1FF8001F307C001F403C001F803E001F803E001F003E00
1F003E001F003E001F003E001F003E001F003E001F003E001F003E001F003E001F003E001F003E
001F003E001F003E001F003E00FFE1FFC0FFE1FFC01A167E951F>I<00FE0007FFC00F83E01E00
F03E00F87C007C7C007C7C007CFC007EFC007EFC007EFC007EFC007EFC007EFC007E7C007C7C00
7C3E00F81F01F00F83E007FFC000FE0017167E951C>I<FF0FE000FF3FF8001FF07C001F803E00
1F001F001F001F801F001F801F000FC01F000FC01F000FC01F000FC01F000FC01F000FC01F000F
C01F000FC01F001F801F001F801F803F001FC03E001FE0FC001F3FF8001F0FC0001F0000001F00
00001F0000001F0000001F0000001F0000001F0000001F000000FFE00000FFE000001A207E951F
>I<00FE030007FF87000FC1C7001F006F003F003F007E003F007E001F007C001F00FC001F00FC
001F00FC001F00FC001F00FC001F00FC001F00FC001F007E001F007E001F003E003F001F007F00
0FC1DF0007FF9F0001FC1F0000001F0000001F0000001F0000001F0000001F0000001F0000001F
0000001F000000FFE00000FFE01B207E951E>I<FE1F00FE3FC01E67E01EC7E01E87E01E87E01F
83C01F00001F00001F00001F00001F00001F00001F00001F00001F00001F00001F00001F00001F
0000FFF000FFF00013167E9517>I<0FF3003FFF00781F00600700E00300E00300F00300FC0000
7FE0007FF8003FFE000FFF0001FF00000F80C00780C00380E00380E00380F00700FC0E00EFFC00
C7F00011167E9516>I<0180000180000180000180000380000380000780000780000F80003F80
00FFFF00FFFF000F80000F80000F80000F80000F80000F80000F80000F80000F80000F80000F80
000F81800F81800F81800F81800F81800F830007C30003FE0000F80011207F9F16>I<FF01FE00
FF01FE001F003E001F003E001F003E001F003E001F003E001F003E001F003E001F003E001F003E
001F003E001F003E001F003E001F003E001F003E001F003E001F007E001F00FE000F81BE0007FF
3FC001FC3FC01A167E951F>I<FFE7FF07F8FFE7FF07F81F007800C00F807801800F807C01800F
807C018007C07E030007C0DE030007E0DE070003E0DF060003E18F060001F18F0C0001F38F8C00
01FB079C0000FB07D80000FE03D800007E03F000007E03F000007C01F000003C01E000003800E0
00001800C00025167F9528>119 D<FFE01FE0FFE01FE00F8006000F8006000FC00E0007C00C00
07E01C0003E0180003E0180001F0300001F0300000F8600000F86000007CC000007CC000007FC0
00003F8000003F8000001F0000001F0000000E0000000E0000000C0000000C0000001800007818
0000FC380000FC300000FC60000069C000007F8000001F0000001B207F951E>121
D E /Fj 2 122 df<020002000200C218F2783AE00F800F803AE0F278C2180200020002000D0E
7E8E12>3 D<06000600060006000600060006000600FFF0FFF006000600060006000600060006
000600060006000600060006000600060006000600060006000C1D7E9611>121
D E /Fk 83 124 df<001F83E000706E3000C07C780180F8780380F07807007000070070000700
7000070070000700700007007000070070000700700007007000FFFFFFC0070070000700700007
007000070070000700700007007000070070000700700007007000070070000700700007007000
070070000700700007007000070070000700700007007000070078007FE3FF801D2380A21C>11
D<001FC0000070200000C010000180380003807800070078000700300007000000070000000700
000007000000070000000700000007000000FFFFF8000700780007003800070038000700380007
003800070038000700380007003800070038000700380007003800070038000700380007003800
07003800070038000700380007003800070038007FE1FF80192380A21B>I<001FD80000703800
00C078000180780003807800070038000700380007003800070038000700380007003800070038
000700380007003800FFFFF8000700380007003800070038000700380007003800070038000700
380007003800070038000700380007003800070038000700380007003800070038000700380007
00380007003800070038007FF3FF80192380A21B>I<000FC07F00007031C08000E00B00400180
1E00E003803E01E007003C01E007001C00C007001C000007001C000007001C000007001C000007
001C000007001C000007001C0000FFFFFFFFE007001C01E007001C00E007001C00E007001C00E0
07001C00E007001C00E007001C00E007001C00E007001C00E007001C00E007001C00E007001C00
E007001C00E007001C00E007001C00E007001C00E007001C00E007001C00E007001C00E07FF1FF
CFFE272380A229>I<7038F87CFC7EFC7E743A0402040204020402080408041008100820104020
0F0F7EA218>34 D<0780000C001840001C0018200018003010007800701C00F0006013FF6000E0
0800E000E00800C000E00801C000E008038000E008030000E008070000E0080E0000E0080C0000
60101C000070101800003010380000182070000018406000000780E03C000001C04200000180C1
00000381810000070380800006030080000E030040000C070040001C0700400038070040003007
0040007007004000E007004000C007004001C00300400180030080038003808007000181000600
00C1000E000042000C00003C0022287DA429>37 D<70F8FCFC7404040404080810102040060F7C
A20E>39 D<00200040008001000300060004000C000C0018001800300030003000700060006000
6000E000E000E000E000E000E000E000E000E000E000E000E000E000E000600060006000700030
0030003000180018000C000C0004000600030001000080004000200B327CA413>I<8000400020
00100018000C000400060006000300030001800180018001C000C000C000C000E000E000E000E0
00E000E000E000E000E000E000E000E000E000E000C000C000C001C00180018001800300030006
00060004000C00180010002000400080000B327DA413>I<000180000001800000018000000180
000001800000018000000180000001800000018000000180000001800000018000000180000001
80000001800000018000FFFFFFFEFFFFFFFE000180000001800000018000000180000001800000
018000000180000001800000018000000180000001800000018000000180000001800000018000
000180001F227D9C26>43 D<70F8FCFC7404040404080810102040060F7C840E>I<FFE0FFE00B
027F8B10>I<70F8F8F87005057C840E>I<00018000018000038000030000030000070000060000
0600000E00000C00000C00001C0000180000180000180000380000300000300000700000600000
600000E00000C00000C00001C0000180000180000380000300000300000700000600000600000E
00000C00000C00000C00001C0000180000180000380000300000300000700000600000600000E0
0000C00000C0000011317DA418>I<01F000071C000C06001803003803803803807001C07001C0
7001C07001C0F001E0F001E0F001E0F001E0F001E0F001E0F001E0F001E0F001E0F001E0F001E0
F001E0F001E0F001E07001C07001C07001C07803C03803803803801C07000C0600071C0001F000
13227EA018>I<008003800F80F380038003800380038003800380038003800380038003800380
03800380038003800380038003800380038003800380038003800380038007C0FFFE0F217CA018
>I<03F0000C1C001007002007804003C04003C08003E0F003E0F801E0F801E0F801E02003E000
03E00003C00003C0000780000700000E00001C0000180000300000600000C00001800001000002
00200400200800201800603000403FFFC07FFFC0FFFFC013217EA018>I<03F8000C1E00100700
2007804007C07807C07803C07807C03807C0000780000780000700000F00000E0000380003F000
001C00000F000007800007800003C00003C00003E02003E07003E0F803E0F803E0F003C04003C0
400780200780100F000C1C0003F00013227EA018>I<000200000600000E00000E00001E00001E
00002E00004E00004E00008E00008E00010E00020E00020E00040E00040E00080E00100E00100E
00200E00200E00400E00800E00FFFFF8000E00000E00000E00000E00000E00000E00000E00001F
0001FFF015217FA018>I<1000801E07001FFF001FFE001FF80013E00010000010000010000010
000010000010000010F800130E001407001803801003800001C00001C00001E00001E00001E000
01E07001E0F001E0F001E0E001C08001C04003C04003802007001006000C1C0003F00013227EA0
18>I<007E0001C1000300800601C00E03C01C03C0180180380000380000780000700000700000
F0F800F30C00F40600F40300F80380F801C0F001C0F001E0F001E0F001E0F001E0F001E07001E0
7001E07001E03801C03801C01803801C03000C0600070C0001F00013227EA018>I<4000006000
007FFFE07FFFC07FFFC0400080C001008001008002008002000004000008000008000010000030
0000200000600000600000600000E00000C00000C00001C00001C00001C00001C00003C00003C0
0003C00003C00003C00003C00003C00003C00001800013237DA118>I<01F800060E0008030010
01802001802000C06000C06000C06000C07000C07801803E01003F02001FC4000FF80003F80003
FC00067F00083F80100F803007C06001C06000E0C000E0C00060C00060C00060C0006060004060
00C03000801803000E0E0003F00013227EA018>I<01F000060C000C0600180700380380700380
700380F001C0F001C0F001C0F001E0F001E0F001E0F001E0F001E07001E07003E03803E01805E0
0C05E00619E003E1E00001C00001C00001C0000380000380300300780700780600700C00201800
1030000FC00013227EA018>I<70F8F8F870000000000000000000000070F8F8F87005157C940E>
I<FFFFFFFEFFFFFFFE000000000000000000000000000000000000000000000000000000000000
0000FFFFFFFEFFFFFFFE1F0C7D9126>61 D<07E01838201C400E800FF00FF00FF00F000F000E00
1C00380030006000C000C000800080018001000100010001000100010000000000000000000000
038007C007C007C0038010237DA217>63 D<0001800000018000000180000003C0000003C00000
03C0000005E0000005E000000DF0000008F0000008F0000010F800001078000010780000203C00
00203C0000203C0000401E0000401E0000401E0000800F0000800F0000FFFF0001000780010007
80030007C0020003C0020003C0040003E0040001E0040001E00C0000F00C0000F03E0001F8FF80
0FFF20237EA225>65 D<FFFFF8000F800E0007800780078003C0078003E0078001E0078001F007
8001F0078001F0078001F0078001F0078001E0078003E0078007C007800F8007803E0007FFFE00
07800780078003C0078001E0078001F0078000F0078000F8078000F8078000F8078000F8078000
F8078000F8078001F0078001F0078003E0078007C00F800F00FFFFFC001D227EA123>I<0007E0
100038183000E0063001C00170038000F0070000F00E0000701E0000701C0000303C0000303C00
00307C0000107800001078000010F8000000F8000000F8000000F8000000F8000000F8000000F8
000000F800000078000000780000107C0000103C0000103C0000101C0000201E0000200E000040
070000400380008001C0010000E0020000381C000007E0001C247DA223>I<FFFFF0000F801E00
07800700078003C0078001C0078000E0078000F007800078078000780780007C0780003C078000
3C0780003C0780003E0780003E0780003E0780003E0780003E0780003E0780003E0780003E0780
003E0780003C0780003C0780007C0780007807800078078000F0078000E0078001E0078003C007
8007000F801E00FFFFF8001F227EA125>I<FFFFFFC00F8007C0078001C0078000C00780004007
800040078000600780002007800020078000200780202007802000078020000780200007806000
0780E00007FFE0000780E000078060000780200007802000078020000780200807800008078000
08078000100780001007800010078000300780003007800070078000E00F8003E0FFFFFFE01D22
7EA121>I<FFFFFFC00F8007C0078001C0078000C0078000400780004007800060078000200780
00200780002007802020078020000780200007802000078060000780E00007FFE0000780E00007
806000078020000780200007802000078020000780000007800000078000000780000007800000
078000000780000007800000078000000FC00000FFFE00001B227EA120>I<0007F008003C0C18
00E0021801C001B8038000F8070000780F0000381E0000381E0000183C0000183C0000187C0000
087800000878000008F8000000F8000000F8000000F8000000F8000000F8000000F8000000F800
1FFF780000F8780000787C0000783C0000783C0000781E0000781E0000780F0000780700007803
8000B801C000B800E00318003C0C080007F00020247DA226>I<FFFC3FFF0FC003F0078001E007
8001E0078001E0078001E0078001E0078001E0078001E0078001E0078001E0078001E0078001E0
078001E0078001E0078001E007FFFFE0078001E0078001E0078001E0078001E0078001E0078001
E0078001E0078001E0078001E0078001E0078001E0078001E0078001E0078001E0078001E00FC0
03F0FFFC3FFF20227EA125>I<FFFC0FC007800780078007800780078007800780078007800780
07800780078007800780078007800780078007800780078007800780078007800780078007800F
C0FFFC0E227EA112>I<03FFF0001F00000F00000F00000F00000F00000F00000F00000F00000F
00000F00000F00000F00000F00000F00000F00000F00000F00000F00000F00000F00000F00000F
00000F00000F00000F00700F00F80F00F80F00F80E00F01E00401C0020380018700007C0001423
7EA119>I<FFFC03FF000FC000F800078000600007800040000780008000078001000007800200
0007800400000780080000078010000007802000000780400000078080000007818000000783C0
00000787E000000789E000000788F000000790F0000007A078000007C03C000007803C00000780
1E000007800F000007800F00000780078000078007C000078003C000078001E000078001E00007
8000F000078000F8000FC000FC00FFFC07FF8021227EA126>I<FFFE00000FC000000780000007
800000078000000780000007800000078000000780000007800000078000000780000007800000
078000000780000007800000078000000780000007800000078000000780000007800000078000
80078000800780008007800080078001800780018007800100078003000780030007800F000F80
3F00FFFFFF0019227EA11E>I<FFC00003FF0FC00003F007C00003E005E00005E005E00005E004
F00009E004F00009E004F00009E004780011E004780011E004780011E0043C0021E0043C0021E0
043C0021E0041E0041E0041E0041E0040F0081E0040F0081E0040F0081E004078101E004078101
E004078101E00403C201E00403C201E00401E401E00401E401E00401E401E00400F801E00400F8
01E00400F801E004007001E00E007001E01F007003F0FFE0203FFF28227EA12D>I<FF8007FF07
C000F807C0007005E0002004F0002004F0002004780020047C0020043C0020041E0020041F0020
040F002004078020040780200403C0200401E0200401E0200400F0200400F8200400782004003C
2004003E2004001E2004000F2004000F20040007A0040003E0040003E0040001E0040001E00400
00E00E0000601F000060FFE0002020227EA125>I<000FE00000783C0000E00E0003C007800780
03C00F0001E00E0000E01E0000F03C0000783C0000787C00007C7C00007C7800003C7800003CF8
00003EF800003EF800003EF800003EF800003EF800003EF800003EF800003EF800003E7800003C
7C00007C7C00007C3C0000783E0000F81E0000F00F0001E00F0001E0078003C003C0078000E00E
0000783C00000FE0001F247DA226>I<FFFFF0000F803C0007800F0007800780078007C0078003
C0078003E0078003E0078003E0078003E0078003E0078003E0078003C0078007C0078007800780
0F0007803C0007FFF0000780000007800000078000000780000007800000078000000780000007
8000000780000007800000078000000780000007800000078000000FC00000FFFC00001B227EA1
21>I<000FE00000783C0000E00E0003C00780078003C00F0001E00E0000E01E0000F03E0000F8
3C0000787C00007C7C00007C7800003C7800003CF800003EF800003EF800003EF800003EF80000
3EF800003EF800003EF800003EF800003E7800003C7C00007C7C00007C3C0000783C0000781E03
80F00E0420E00F0801E0078813C003C8178000E80E00007C3C02000FEC0200000C0200000C0200
000E0600000F0E000007FC000007FC000007F8000003F8000001E01F2D7DA226>I<FFFFE00000
0F803C000007800E00000780078000078007C000078003C000078003E000078003E000078003E0
00078003E000078003E000078003C000078007C000078007800007800E000007803C000007FFE0
00000780700000078038000007801C000007801E000007800E000007800F000007800F00000780
0F000007800F000007800F800007800F800007800F800007800F808007800FC080078007C0800F
C003C100FFFC01E2000000007C0021237EA124>I<03F0200C0C601802603001E07000E0600060
E00060E00060E00020E00020E00020F00000F000007800007F00003FF0001FFE000FFF0003FF80
003FC00007E00001E00000F00000F0000070800070800070800070800070C00060C00060E000C0
F000C0C80180C6070081FC0014247DA21B>I<7FFFFFF878078078600780184007800840078008
40078008C007800C80078004800780048007800480078004000780000007800000078000000780
000007800000078000000780000007800000078000000780000007800000078000000780000007
800000078000000780000007800000078000000780000007800000078000000FC00003FFFF001E
227EA123>I<FFFC07FF0FC000F807800070078000200780002007800020078000200780002007
800020078000200780002007800020078000200780002007800020078000200780002007800020
07800020078000200780002007800020078000200780002007800020078000200380004003C000
4003C0004001C0008000E000800060010000300600001C08000003F00020237EA125>I<FFF000
7FC01F80001F000F00000C000780000C000780000800078000080003C000100003C000100003E0
00300001E000200001E000200000F000400000F000400000F00040000078008000007800800000
7C018000003C010000003C010000001E020000001E020000001F020000000F040000000F040000
000F8C0000000788000000078800000003D000000003D000000003F000000001E000000001E000
000000C000000000C000000000C0000022237FA125>I<FFF03FFC03FE1F8007E000F80F0003C0
00700F0003C000200F0003C00020078001E00040078001E00040078001E0004003C002F0008003
C002F0008003C002F0008001E00478010001E00478010001E00478010000F0083C020000F0083C
020000F0083C020000F8183E06000078101E04000078101E0400007C101E0400003C200F080000
3C200F0800003C200F0800001E40079000001E40079000001E40079000000F8003E000000F8003
E000000F8003E00000070001C00000070001C00000070001C0000003000180000002000080002F
237FA132>I<7FF807FF0007E001F80003C000E00003E000C00001E000800000F001000000F803
00000078020000007C040000003E0C0000001E080000001F100000000FB000000007A000000007
C000000003E000000001E000000001F000000003F80000000278000000047C0000000C3E000000
081E000000101F000000300F80000020078000004007C00000C003E000008001E000010001F000
030000F000070000F8001F8001FC00FFE007FFC022227FA125>I<FFF0007FC01F80001F000F80
000C00078000080007C000180003E000100001E000200001F000200000F000400000F800C00000
7C008000003C010000003E010000001E020000001F040000000F84000000078800000007D80000
0003D000000003E000000001E000000001E000000001E000000001E000000001E000000001E000
000001E000000001E000000001E000000001E000000001E000000001E000000003E00000003FFF
000022227FA125>I<FEFEC0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0
C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0FEFE07317BA40E>91 D<080410082010201040204020
8040804080408040B85CFC7EFC7E7C3E381C0F0F7AA218>I<FEFE060606060606060606060606
060606060606060606060606060606060606060606060606060606060606060606FEFE07317FA4
0E>I<08102020404080808080B8FCFC7C38060F7DA20E>96 D<0FE0001838003C0C003C0E0018
070000070000070000070000FF0007C7001E07003C0700780700700700F00708F00708F00708F0
0F087817083C23900FC1E015157E9418>I<0E0000FE00001E00000E00000E00000E00000E0000
0E00000E00000E00000E00000E00000E00000E00000E1F000E61C00E80600F00300E00380E003C
0E001C0E001E0E001E0E001E0E001E0E001E0E001E0E001E0E001C0E003C0E00380F00700C8060
0C41C0083F0017237FA21B>I<01FE000703000C07801C0780380300780000700000F00000F000
00F00000F00000F00000F00000F000007000007800403800401C00800C010007060001F8001215
7E9416>I<0000E0000FE00001E00000E00000E00000E00000E00000E00000E00000E00000E000
00E00000E00000E001F8E00704E00C02E01C01E03800E07800E07000E0F000E0F000E0F000E0F0
00E0F000E0F000E0F000E07000E07800E03800E01801E00C02E0070CF001F0FE17237EA21B>I<
01FC000707000C03801C01C03801C07801E07000E0F000E0FFFFE0F00000F00000F00000F00000
F000007000007800203800201C00400E008007030000FC0013157F9416>I<003C00C6018F038F
030F070007000700070007000700070007000700FFF80700070007000700070007000700070007
0007000700070007000700070007000700070007807FF8102380A20F>I<00007001F198071E18
0E0E181C07001C07003C07803C07803C07803C07801C07001C07000E0E000F1C0019F000100000
1000001800001800001FFE000FFFC00FFFE03800F0600030400018C00018C00018C00018600030
6000303800E00E038003FE0015217F9518>I<0E0000FE00001E00000E00000E00000E00000E00
000E00000E00000E00000E00000E00000E00000E00000E1F800E60C00E80E00F00700F00700E00
700E00700E00700E00700E00700E00700E00700E00700E00700E00700E00700E00700E00700E00
700E0070FFE7FF18237FA21B>I<1C001E003E001E001C00000000000000000000000000000000
000E00FE001E000E000E000E000E000E000E000E000E000E000E000E000E000E000E000E000E00
0E00FFC00A227FA10E>I<01C003E003E003E001C00000000000000000000000000000000001E0
0FE001E000E000E000E000E000E000E000E000E000E000E000E000E000E000E000E000E000E000
E000E000E000E000E000E060E0F0C0F18061803E000B2C82A10F>I<0E0000FE00001E00000E00
000E00000E00000E00000E00000E00000E00000E00000E00000E00000E00000E03FC0E01F00E01
C00E01800E02000E04000E08000E10000E38000EF8000F1C000E1E000E0E000E07000E07800E03
C00E01C00E01E00E00F00E00F8FFE3FE17237FA21A>I<0E00FE001E000E000E000E000E000E00
0E000E000E000E000E000E000E000E000E000E000E000E000E000E000E000E000E000E000E000E
000E000E000E000E000E000E00FFE00B237FA20E>I<0E1FC07F00FE60E183801E807201C00F00
3C00E00F003C00E00E003800E00E003800E00E003800E00E003800E00E003800E00E003800E00E
003800E00E003800E00E003800E00E003800E00E003800E00E003800E00E003800E00E003800E0
0E003800E0FFE3FF8FFE27157F942A>I<0E1F80FE60C01E80E00F00700F00700E00700E00700E
00700E00700E00700E00700E00700E00700E00700E00700E00700E00700E00700E00700E0070FF
E7FF18157F941B>I<01FC000707000C01801800C03800E0700070700070F00078F00078F00078
F00078F00078F00078F000787000707800F03800E01C01C00E038007070001FC0015157F9418>
I<0E1F00FE61C00E80600F00700E00380E003C0E001C0E001E0E001E0E001E0E001E0E001E0E00
1E0E001E0E003C0E003C0E00380F00700E80E00E41C00E3F000E00000E00000E00000E00000E00
000E00000E00000E00000E0000FFE000171F7F941B>I<01F8200704600E02601C01603801E078
00E07800E0F000E0F000E0F000E0F000E0F000E0F000E0F000E07000E07800E03801E01C01E00C
02E0070CE001F0E00000E00000E00000E00000E00000E00000E00000E00000E00000E0000FFE17
1F7E941A>I<0E3CFE461E8F0F0F0F060F000E000E000E000E000E000E000E000E000E000E000E
000E000E000F00FFF010157F9413>I<0F8830786018C018C008C008E008F0007F803FE00FF001
F8003C801C800C800CC00CC008E018D0308FC00E157E9413>I<02000200020002000600060006
000E001E003E00FFF80E000E000E000E000E000E000E000E000E000E000E000E040E040E040E04
0E040E040708030801F00E1F7F9E13>I<0E0070FE07F01E00F00E00700E00700E00700E00700E
00700E00700E00700E00700E00700E00700E00700E00700E00700E00F00E00F006017003827800
FC7F18157F941B>I<FFC1FE1E00780E00300E00200E0020070040070040038080038080038080
01C10001C10000E20000E20000E20000740000740000380000380000380000100017157F941A>
I<FF8FF8FF1E01E03C1C01C0180E01C0180E01E0100E01E0100702602007027020070270200384
3040038438400384384001C8188001C81C8001C81C8000F00D0000F00F0000F00F000060060000
6006000060060020157F9423>I<FF83FE1F01F00E00C007008003810003830001C20000E40000
7800007800003800003C00004E00008E000187000103800201C00401E00C00E03E01F0FF03FE17
157F941A>I<FFC1FE1E00780E00300E00200E002007004007004003808003808003808001C100
01C10000E20000E20000E200007400007400003800003800003800001000001000002000002000
002000004000F04000F08000F180004300003C0000171F7F941A>I<3FFFC03803803007802007
00600E00401C00403C0040380000700000E00001E00001C0000380400700400F00400E00C01C00
80380080780180700780FFFF8012157F9416>I<FFFFFE1701808C18>I E
/Fl 23 123 df<000003800000000007C00000000007C0000000000FE0000000000FE000000000
0FE0000000001FF0000000001FF0000000003FF8000000003FF8000000003FF80000000073FC00
00000073FC00000000F3FE00000000E1FE00000000E1FE00000001C0FF00000001C0FF00000003
C0FF80000003807F80000007807FC0000007003FC0000007003FC000000E003FE000000E001FE0
00001E001FF000001C000FF000001FFFFFF000003FFFFFF800003FFFFFF80000780007FC000070
0003FC0000700003FC0000E00001FE0000E00001FE0001E00001FF0001C00000FF0001C00000FF
00FFFE001FFFFEFFFE001FFFFEFFFE001FFFFE2F297EA834>65 D<FFFFFFFFE0FFFFFFFFE0FFFF
FFFFE003FC001FE003FC0007F003FC0001F003FC0001F003FC0000F003FC00007003FC00007003
FC00007003FC01C07803FC01C03803FC01C03803FC01C03803FC03C00003FC03C00003FC0FC000
03FFFFC00003FFFFC00003FFFFC00003FC0FC00003FC03C00003FC03C00003FC01C00E03FC01C0
0E03FC01C00E03FC01C01C03FC00001C03FC00001C03FC00001C03FC00003C03FC00003803FC00
007803FC0000F803FC0001F803FC0003F803FC001FF8FFFFFFFFF0FFFFFFFFF0FFFFFFFFF02729
7DA82D>69 D<FFFE0000001FFFC0FFFE0000001FFFC0FFFF0000003FFFC003FF0000003FF00003
FF0000003FF00003BF80000077F00003BF80000077F000039FC00000E7F000039FC00000E7F000
038FE00001C7F000038FE00001C7F0000387F0000387F0000387F0000387F0000387F0000387F0
000383F8000707F0000383F8000707F0000381FC000E07F0000381FC000E07F0000380FE001C07
F0000380FE001C07F0000380FF003807F00003807F003807F00003807F003807F00003803F8070
07F00003803F807007F00003801FC0E007F00003801FC0E007F00003800FE1C007F00003800FE1
C007F00003800FE1C007F000038007F38007F000038007F38007F000038003FF0007F000038003
FF0007F000038001FE0007F000038001FE0007F000038000FC0007F000038000FC0007F000FFFE
00FC01FFFFC0FFFE007801FFFFC0FFFE007801FFFFC03A297DA841>77 D<FFFFFFF800FFFFFFFF
00FFFFFFFFC003FC003FE003FC000FF003FC0007F803FC0007FC03FC0003FC03FC0003FE03FC00
03FE03FC0003FE03FC0003FE03FC0003FE03FC0003FE03FC0003FE03FC0003FC03FC0007FC03FC
0007F803FC000FF003FC003FE003FFFFFF8003FFFFFE0003FC00000003FC00000003FC00000003
FC00000003FC00000003FC00000003FC00000003FC00000003FC00000003FC00000003FC000000
03FC00000003FC00000003FC00000003FC00000003FC000000FFFFF00000FFFFF00000FFFFF000
0027297DA82F>80 D<01FF800007FFF0000F81FC001FC0FE001FC07F001FC07F001FC03F800F80
3F8000003F8000003F8000003F80000FFF8000FFFF8007FC3F801FE03F803F803F807F803F807F
003F80FE003F80FE003F80FE003F80FE007F80FF007F807F00FFC03F83DFFC0FFF0FFC01FC03FC
1E1B7E9A21>97 D<001FF80000FFFE0003F01F000FE03F801FC03F803F803F803F803F807F801F
007F000000FF000000FF000000FF000000FF000000FF000000FF000000FF000000FF000000FF00
00007F0000007F8000003F8001C03FC001C01FC003C00FE0078003F01F0000FFFC00001FE0001A
1B7E9A1F>99 D<00003FF80000003FF80000003FF800000003F800000003F800000003F8000000
03F800000003F800000003F800000003F800000003F800000003F800000003F800000003F80000
0003F800001FE3F80000FFFBF80003F03FF8000FE00FF8001FC007F8003F8003F8003F8003F800
7F8003F8007F0003F800FF0003F800FF0003F800FF0003F800FF0003F800FF0003F800FF0003F8
00FF0003F800FF0003F800FF0003F8007F0003F8007F0003F8003F8003F8003F8007F8001FC00F
F8000FE01FF80003F03FFF8000FFF3FF80003FC3FF80212A7EA926>I<003FE00001FFF80003F0
7E000FE03F001FC01F803F800FC03F800FC07F000FC07F0007E0FF0007E0FF0007E0FF0007E0FF
FFFFE0FFFFFFE0FF000000FF000000FF000000FF0000007F0000007F8000003F8000E03F8001E0
1FC001C00FE003C003F81F8000FFFE00001FF0001B1B7E9A20>I<0007F0003FFC00FE3E01FC7F
03F87F03F87F07F07F07F03E07F00007F00007F00007F00007F00007F00007F000FFFFC0FFFFC0
FFFFC007F00007F00007F00007F00007F00007F00007F00007F00007F00007F00007F00007F000
07F00007F00007F00007F00007F00007F00007F00007F00007F0007FFF807FFF807FFF80182A7E
A915>I<00FF81F003FFE7FC0FC1FE7C1F80FC7C3F80FE7C3F007E107F007F007F007F007F007F
007F007F007F007F007F007F003F007E003F80FE001F80FC000FC1F8001FFFE00018FF80003800
00003C0000003C0000003E0000003FFFF8003FFFFF001FFFFFC00FFFFFE007FFFFF01FFFFFF07E
0007F87C0001F8F80001F8F80000F8F80000F8F80000F8FC0001F87E0003F03F0007E00FC01F80
03FFFE00007FF0001E287E9A22>I<07001FC01FE03FE03FE03FE01FE01FC00700000000000000
0000000000000000FFE0FFE0FFE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00F
E00FE00FE00FE00FE00FE00FE00FE00FE0FFFEFFFEFFFE0F2B7DAA14>105
D<FFE0FFE0FFE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE0
0FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00F
E0FFFEFFFEFFFE0F2A7DA914>108 D<FFC07F800FF000FFC1FFE03FFC00FFC783F0F07E000FCE
03F9C07F000FDC01FB803F000FF801FF003F800FF001FE003F800FF001FE003F800FF001FE003F
800FE001FC003F800FE001FC003F800FE001FC003F800FE001FC003F800FE001FC003F800FE001
FC003F800FE001FC003F800FE001FC003F800FE001FC003F800FE001FC003F800FE001FC003F80
0FE001FC003F800FE001FC003F800FE001FC003F800FE001FC003F80FFFE1FFFC3FFF8FFFE1FFF
C3FFF8FFFE1FFFC3FFF8351B7D9A3C>I<FFC07F0000FFC1FFC000FFC787E0000FCE07F0000FDC
03F8000FF803F8000FF003F8000FF003F8000FF003F8000FE003F8000FE003F8000FE003F8000F
E003F8000FE003F8000FE003F8000FE003F8000FE003F8000FE003F8000FE003F8000FE003F800
0FE003F8000FE003F8000FE003F8000FE003F800FFFE3FFF80FFFE3FFF80FFFE3FFF80211B7D9A
26>I<003FE00001FFFC0003F07E000FC01F801F800FC03F800FE03F0007E07F0007F07F0007F0
7F0007F0FF0007F8FF0007F8FF0007F8FF0007F8FF0007F8FF0007F8FF0007F8FF0007F87F0007
F07F0007F03F800FE03F800FE01F800FC00FC01F8007F07F0001FFFC00003FE0001D1B7E9A22>
I<FFE1FE0000FFE7FF8000FFFE07E0000FF803F8000FF001FC000FE001FE000FE000FE000FE000
FF000FE000FF000FE0007F800FE0007F800FE0007F800FE0007F800FE0007F800FE0007F800FE0
007F800FE0007F800FE0007F800FE000FF000FE000FF000FE000FE000FF001FE000FF003FC000F
F803F8000FFE0FE0000FEFFF80000FE1FC00000FE00000000FE00000000FE00000000FE0000000
0FE00000000FE00000000FE00000000FE00000000FE0000000FFFE000000FFFE000000FFFE0000
0021277E9A26>I<FFC1F0FFC7FCFFCE3E0FDC7F0FD87F0FF87F0FF07F0FF03E0FF0000FE0000F
E0000FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE0000F
E000FFFF00FFFF00FFFF00181B7E9A1C>114 D<03FE300FFFF03E03F07800F07000F0F00070F0
0070F80070FC0000FFE000FFFE007FFFC03FFFE01FFFF007FFF800FFFC0003FC0000FCE0007CE0
003CF0003CF0003CF80078FC0078FF01F0F7FFC0C1FF00161B7E9A1B>I<007000007000007000
00700000F00000F00000F00001F00003F00003F00007F0001FFFF0FFFFF0FFFFF007F00007F000
07F00007F00007F00007F00007F00007F00007F00007F00007F00007F00007F00007F03807F038
07F03807F03807F03807F03807F03803F87001F8F000FFE0001F8015267FA51B>I<FFE03FF800
FFE03FF800FFE03FF8000FE003F8000FE003F8000FE003F8000FE003F8000FE003F8000FE003F8
000FE003F8000FE003F8000FE003F8000FE003F8000FE003F8000FE003F8000FE003F8000FE003
F8000FE003F8000FE003F8000FE003F8000FE007F8000FE007F8000FE00FF80007E01FF80003F0
3BFF8001FFF3FF80003FC3FF80211B7D9A26>I<FFFC0FFF00FFFC0FFF00FFFC0FFF0007F003C0
0003F807800001FC07800000FE0F000000FF1E0000007F3C0000003FF80000001FF00000000FF0
0000000FF000000007F000000007F80000000FFC0000001FFE0000001EFE0000003C7F00000078
3F800000F01FC00001E01FE00001C00FE00003C007F000FFF01FFF80FFF01FFF80FFF01FFF8021
1B7F9A24>120 D<FFFE03FF80FFFE03FF80FFFE03FF8007F000700007F000700007F800F00003
F800E00003FC01E00001FC01C00001FC01C00000FE03800000FE038000007F070000007F070000
007F8F0000003F8E0000003FDE0000001FDC0000001FDC0000000FF80000000FF80000000FF800
000007F000000007F000000003E000000003E000000001C000000001C000000003800000000380
000038078000007C07000000FE0F000000FE0E000000FE1E000000FE3C0000007C780000003FE0
0000000FC000000021277F9A24>I<3FFFFF803FFFFF803F00FF803C00FF003801FE007803FC00
7807FC007007F800700FF000701FE000001FE000003FC000007F800000FF800000FF000001FE03
8003FC038003FC038007F803800FF007801FF007801FE007003FC00F007F801F00FF807F00FFFF
FF00FFFFFF00191B7E9A1F>I E end
%%EndProlog
%%BeginSetup
%%Feature: *Resolution 300
TeXDict begin @letter /letter where {pop letter} if
%%EndSetup
%%Page: 1 1
bop 432 658 a Fl(A)23 b(Mo)r(del)f(for)i(Executing)e(Multidisci)o(pl)o(i)o
(nary)663 732 y(and)i(Multizonal)d(Programs)391 841 y Fk(Eric)16
b(Barszcz)658 823 y Fj(\003)792 841 y Fk(Sisira)g(K.)g(W)l(eeratunga)1247
823 y Fj(y)1383 841 y Fk(Eddy)g(Pramono)1705 823 y Fj(y)719
960 y Fk(NAS)g(Applied)f(Researc)o(h)g(Branc)o(h)731 1018 y(NASA)g(Ames)f
(Researc)o(h)i(Cen)o(ter)788 1076 y(Mo\013ett)g(Field,)f(CA)h(94035)884
1240 y(Marc)o(h)g(26,)h(1993)941 1647 y Fi(Abstract)345 1733
y Fk(This)10 b(pap)q(er)i(presen)o(ts)e(the)h(mo)q(del)e(of)j(computing)d
(for)i(m)o(ultidiscipli)o(nary)d(and/or)271 1793 y(m)o(ultizonal)24
b(applications)i(on)h(parallel)e(mac)o(hines)f(b)q(eing)i(pursued)h(at)f
(NASA)271 1853 y(Ames)15 b(Researc)o(h)h(Cen)o(ter.)21 b(The)16
b(mo)q(del)f(describ)q(es)h(execution)f(on)i(a)g(parallel)f(ma-)271
1914 y(c)o(hine)c(with)h(some)f(n)o(um)o(b)q(er)g(of)h(pro)q(cessors,)i(eac)o
(h)d(with)h(lo)q(cal)g(memory)l(,)e(connected)271 1974 y(b)o(y)20
b(a)g(net)o(w)o(ork.)31 b(It)20 b(do)q(es)g(not)g(discuss)g(pro)q(cessor)h
(rates,)g(size)e(of)h(memory)l(,)d(net-)271 2034 y(w)o(ork)h(latency)l(,)g
(net)o(w)o(ork)f(bandwidth,)i(net)o(w)o(ork)e(connectivit)o(y)l(,)f(disk)i
(space,)g(I/O)271 2094 y(bandwidth)k(or)f(mass)f(storage.)36
b(It)20 b(also)h(do)q(es)h(not)f(discuss)g(language)g(and)h(dis-)271
2154 y(cipline)17 b(sp)q(eci\014c)g(algorithm)g(issues.)27
b(Mo)q(del)18 b(rationalit)o(y)f(and)i(functionalit)o(y)e(are)271
2214 y(presen)o(ted.)p 149 2594 719 2 v 205 2625 a Fh(\003)224
2640 y Fg(The)d(author)g(is)g(an)g(emplo)o(y)o(ee)e(of)i(NASA.)207
2675 y Fh(y)224 2690 y Fg(The)k(author)f(is)g(an)g(emplo)o(y)o(ee)f(of)h
(Computer)f(Sciences)j(Co.)28 b(This)17 b(w)o(ork)g(w)o(as)g(funded)g
(through)g(NASA)149 2740 y(con)o(tract)e(NAS)f(2-12961)p eop
%%Page: 2 2
bop 149 42 a Fi(1)56 b(In)n(tro)r(duction)149 151 y Fk(The)18
b(problem)e(domain)g(of)i(particular)f(in)o(terest)f(to)h(NASA)f(Ames)g
(Researc)o(h)g(Cen)o(ter)h(is)g(aero-)149 211 y(nautical)i(researc)o(h)g(and)
h(engineering.)29 b(Some)18 b(of)h(the)g(disciplines)f(in)o(v)o(olv)o(ed)f
(in)h(mo)q(deling)g(an)149 271 y(aircraft)h(though)h(its)e(\015igh)o(t)h(en)o
(v)o(elop)q(e)e(are)i(\015uid)g(dynamics,)e(structural)i(dynamics,)f(thermal)
149 332 y(analysis,)i(propulsion,)g(con)o(trol)f(theory)l(,)g
(electromagnetic)e(analysis,)j(and)f(acoustics.)31 b(All)18
b(of)149 392 y(the)c(computational)g(aeroscience)f(\(CAS\))h(grand)h(c)o
(hallenges)e(of)i(the)f(HPCC)g(program)g(in)o(v)o(olv)o(e)149
452 y(coupling)j(t)o(w)o(o)f(or)g(more)f(of)i(these)f(disciplines.)223
512 y(In)d(addition,)h(geometrically)d(complex)h(aircraft)i
(con\014gurations,)h(often)f(with)g(one)g(or)g(more)149 572
y(comp)q(onen)o(ts)d(in)f(relativ)o(e)f(motion)h(with)h(resp)q(ect)f(to)h
(others,)h(require)e(comp)q(osite)f(mesh)h(metho)q(d-)149 633
y(ologies)20 b(for)f(e\016cien)o(t)e(spatial)i(discretization)e([4].)29
b(A)19 b(m)o(ultizonal)d(application)j(meshes)e(indi-)149 693
y(vidual)j(comp)q(onen)o(ts)f(of)h(the)f(con\014guration)i(separately)f(and)g
(forms)f(a)h(comp)q(osite)f(mesh)f(b)o(y)149 753 y(o)o(v)o(erlapping)c(comp)q
(onen)o(t)f(meshes.)19 b(The)c(o)o(v)o(erlapping)e(meshes)g(in)o(teract)g
(through)j(data)f(in)o(ter-)149 813 y(p)q(olation)i(at)g(in)o(ter-mesh)d(b)q
(oundary)k(p)q(oin)o(ts)e([8].)223 873 y(Curren)o(tly)l(,)22
b(there)g(are)g(no)h(applications)f(that)h(com)o(bine)d(all)h(of)i(the)f
(disciplines.)38 b(Ho)o(w-)149 934 y(ev)o(er,)22 b(sev)o(eral)f(co)q(des)h
(exist)f(that)h(com)o(bine)e(at)i(least)f(t)o(w)o(o)h(of)g(these)f
(disciplines.)37 b(Some)20 b(ex-)149 994 y(amples)14 b(in)g(the)h
(aeronautical)g(domain)f(are)g(\015uid-thermal,)f(\015uid-structures,)i
(\015uid-acoustics,)149 1054 y(and)i(\015uid-electromagnetic.)j(A)o(t)15
b(NASA)h(Ames)e(Researc)o(h)i(Cen)o(ter,)f(\015uid-thermal)g([5],)h(\015uid-)
149 1114 y(structures)i([10],)e(and)i(m)o(ultizonal)d(\015uid)i(dynamics)f
([11])h(co)q(des)g(ha)o(v)o(e)g(b)q(een)g(implem)o(en)n(ted)d(on)149
1174 y(a)j(message)f(passing)h(parallel)e(computer,)g(the)h(In)o(tel)e
(iPSC/860.)223 1234 y(This)21 b(pap)q(er)i(presen)o(ts)e(the)g(mo)q(del)g(of)
h(computing)e(for)i(m)o(ultidiscipl)o(inary)d(and/or)k(m)o(ul-)149
1295 y(tizonal)g(applications)f(on)h(parallel)f(mac)o(hines)e(b)q(eing)j
(pursued)g(at)g(NASA)e(Ames)g(Researc)o(h)149 1355 y(Cen)o(ter.)40
b(The)22 b(mo)q(del)f(describ)q(es)i(execution)e(on)i(a)g(parallel)f(mac)o
(hine)e(with)i(some)g(n)o(um)o(b)q(er)149 1415 y(of)h(pro)q(cessors,)i(eac)o
(h)d(with)g(lo)q(cal)g(memory)l(,)f(connected)h(b)o(y)g(a)h(net)o(w)o(ork.)39
b(It)22 b(do)q(es)h(not)g(dis-)149 1475 y(cuss)c(pro)q(cessor)h(rates,)f
(size)e(of)i(memory)l(,)d(net)o(w)o(ork)i(latency)l(,)f(net)o(w)o(ork)h
(bandwidth,)i(net)o(w)o(ork)149 1535 y(connectivit)o(y)l(,)e(disk)i(space,)g
(I/O)g(bandwidth,)h(or)f(mass)f(storage.)33 b(It)20 b(also)g(do)q(es)g(not)h
(discuss)149 1596 y(language)d(and)f(discipline)d(sp)q(eci\014c)h(algorithm)h
(issues.)223 1656 y(The)g(pap)q(er)h(has)f(three)g(sections.)21
b(Section)16 b(2)g(describ)q(es)g(general)g(m)o(ultidisci)o(plinary)d(prob-)
149 1716 y(lem)24 b(c)o(haracteristics.)47 b(Section)25 b(3)h(discusses)f(p)q
(ossible)h(solution)f(approac)o(hes.)50 b(Section)24 b(4)149
1776 y(presen)o(ts)16 b(three)g(computational)f(mo)q(dels)h(and)g(their)g
(requiremen)o(ts.)149 1908 y Fi(2)56 b(Problem)17 b(Characteristics)149
2017 y Fk(A)i(m)o(ultidiscipli)o(nary)e(problem)g(is)i(comp)q(osed)g(of)h(a)g
(collection)d(of)j(t)o(w)o(o)f(or)h(more)e(in)o(teracting)149
2078 y(disciplines.)31 b(A)19 b(giv)o(en)g(discipline)f(ma)o(y)h(in)o(teract)
f(directly)g(with)i(one)g(or)g(more)f(of)h(the)g(other)149
2138 y(disciplines.)k(Also,)17 b(these)g(in)o(teractions)g(o)q(ccur)h(sim)o
(ultaneously)d(across)j(all)f(in)o(terdisciplinary)149 2198
y(b)q(oundaries.)30 b(Similar)16 b(remarks)i(apply)g(to)i(comp)q(onen)o(t)d
(meshes)h(in)g(a)h(m)o(ultizonal)d(computa-)149 2258 y(tion.)223
2318 y(A)11 b(m)o(ultidiscipli)o(nary)e(problem)i(is)h(naturally)g(decomp)q
(osed)f(in)o(to)h(di\013eren)o(t)g(in)o(teracting)f(dis-)149
2379 y(ciplines,)17 b(eac)o(h)h(of)h(whic)o(h)f(ma)o(y)f(mo)q(del)g(widely)h
(di\013eren)o(t)f(ph)o(ysical)h(phenomena.)27 b(Therefore,)149
2439 y(the)d(equations)f(used)h(to)f(describ)q(e)g(the)g(underlying)g(ph)o
(ysics)g(\(PDEs/ODEs)i(and/or)g(in)o(te-)149 2499 y(gral)19
b(equations\))f(v)m(ary)g(b)q(et)o(w)o(een)f(disciplines.)25
b(As)18 b(a)h(result,)e(the)h(computational)f(tec)o(hniques)149
2559 y(used)i(for)g(computer)e(sim)o(ulations)f(ma)o(y)h(ha)o(v)o(e)h(widely)
f(di\013eren)o(t)h(n)o(umerical)d(algorithm)j(c)o(har-)149
2619 y(acteristics,)c(data)h(structures,)f(and)h(computational)e(requiremen)o
(ts.)18 b(In)c(addition,)g(on)h(parallel)149 2680 y(computers)e(with)i(ph)o
(ysically)d(distributed)i(memory)l(,)d(the)j(ab)q(o)o(v)o(e)g(di\013erences)g
(ma)o(y)e(induce)i(dis-)149 2740 y(tinct)19 b(data)h(partitioning)f
(strategies)g(for)h(eac)o(h)e(discipline.)28 b(F)l(or)19 b(example,)e(some)i
(disciplines)1036 2864 y(2)p eop
%%Page: 3 3
bop 149 42 a Fk(ma)o(y)17 b(b)q(e)h(mo)q(deled)e(using)i(\014nite)f
(di\013erence)g(discretization)g(on)h(logically)f(structured)g(meshes)149
102 y(while)i(others)g(ma)o(y)f(use)h(a)g(\014nite)g(elemen)o(t)d
(discretization)i(on)h(unstructured)g(meshes.)29 b(Also,)149
162 y(the)23 b(computational)g(requiremen)n(ts)e(within)h(eac)o(h)h
(discipline)e(ma)o(y)g(v)m(ary)j(dynamically)c(due)149 222
y(to)g(solution)g(adaptiv)o(e)f(mesh)g(re\014nemen)o(t/coarsening,)f(mo)o
(ving)g(b)q(oundaries,)j(and)f(ev)o(olving)149 282 y(material)15
b(non-linearities,)g(etc.)149 415 y Fi(3)56 b(Solution)19 b(Approac)n(hes)149
525 y Fk(Giv)o(en)h(a)h(m)o(ultidiscipl)o(inary)d(and/or)j(m)o(ultizonal)e
(problem,)g(what)j(w)o(ould)e(b)q(e)h(the)f(b)q(est)h(ap-)149
585 y(proac)o(h)g(to)f(solving)g(it)g(on)g(a)h(parallel)e(computer?)32
b(On)20 b(a)g(serial)g(computer,)f(the)h(disciplines)149 645
y(and/or)15 b(comp)q(onen)o(t)c(meshes)h(m)o(ust)f(b)q(e)i(pro)q(cessed)g
(serially)l(.)19 b(This)13 b(is)g(accomplished)e(b)o(y)h(ha)o(ving)149
706 y(a)21 b(doubly)f(nested)g(lo)q(op.)34 b(The)21 b(outer)f(lo)q(op)h
(iterates)f(for)g(the)g(appropriate)h(n)o(um)o(b)q(er)d(of)j(time)149
766 y(steps)c(and)g(the)f(inner)f(lo)q(op)i(iterates)f(o)o(v)o(er)f(the)h
(disciplines)f(\(meshes\).)223 826 y(F)l(or)d(a)h(parallel)e(computer,)h(the)
g(disciplines)e(\(meshes\))h(ma)o(y)g(b)q(e)h(executed)f(in)h(parallel)g(or)h
(se-)149 886 y(quen)o(tially)l(.)19 b(In)14 b(the)g(parallel)f(execution)h
(mo)q(de,)f(eac)o(h)h(discipline)e(\(mesh\))h(ma)o(y)g(b)q(e)h(partitioned)
149 946 y(across)19 b(a)f(di\013eren)o(t)f(set)h(of)g(pro)q(cessors)h(and)g
(computation)e(pro)q(ceeds)h(in)f(parallel)g(within)h(dis-)149
1007 y(ciplines)i(\(meshes\))g(and)i(across)h(disciplines)c(\(meshes\).)36
b(Both)21 b(data)h(parallelism)e(and)i(task)149 1067 y(parallelism)f(are)h
(used.)40 b(In)23 b(the)f(sequen)o(tial)f(execution)g(mo)q(de,)i(eac)o(h)f
(discipline)f(\(mesh\))g(is)149 1127 y(partitioned)15 b(across)g(all)f(pro)q
(cessors)i(and)f(the)f(computation)f(pro)q(ceeds)i(in)f(parallel)g(within)g
(dis-)149 1187 y(ciplines)h(\(meshes\))g(but)h(sequen)o(tially)f(across)i
(disciplines)e(\(meshes\).)k(Only)d(data)h(parallelism)149
1247 y(is)f(used.)223 1307 y(The)k(decision)g(whether)g(or)h(not)f(to)h(use)g
(task)f(parallelism)e(across)k(disciplines)c(\(meshes\))149
1368 y(is)g(in\015uenced)e(b)o(y)h(sev)o(eral)f(factors:)24
b(memory)15 b(requiremen)o(t)o(s,)g(memory)f(e\016ciency)l(,)h(computa-)149
1428 y(tional)d(requiremen)o(ts,)d(Amdahl's)h(La)o(w,)j(soft)o(w)o(are)f
(engineering)f(issues,)i(and)f(m)o(ultidisci)o(plinary)149
1488 y(coupling)17 b(issues.)223 1548 y(In)g(the)g(discussion)g(b)q(elo)o(w)g
(when)g(comparing)g(t)o(w)o(o)g(approac)o(hes,)h(a)f(\014xed)g(n)o(um)o(b)q
(er)f(of)h(pro-)149 1608 y(cessors)f(and)f(a)g(\014xed)f(problem)f(size)h
(are)h(assumed.)20 b(A)14 b(\014xed)h(n)o(um)o(b)q(er)e(of)i(pro)q(cessors)h
(is)e(a)h(v)m(alid)149 1669 y(assumption)20 b(b)q(ecause)h(at)f(an)o(y)h
(instan)o(t,)f(the)g(goal)h(is)f(to)h(use)f(the)g(a)o(v)m(ailable)f
(resources)i(most)149 1729 y(e\016cien)o(tly)l(.)27 b(A)18
b(\014xed)h(problem)e(size)h(is)h(appropriate)g(b)q(ecause)h(once)e(the)h
(relev)m(an)o(t)f(ph)o(ysics)g(is)149 1789 y(resolv)o(ed)f(to)g(the)g
(desired)g(lev)o(el)e(of)j(accuracy)l(,)e(further)h(re\014nemen)o(t)e(\\w)o
(astes")k(computational)149 1849 y(resources)e(\(memory)c(and)k(CPU)f
(cycles\).)149 1977 y Fi(3.1)56 b(Memory)17 b(Requirem)o(en)n(ts)149
2069 y Fk(Memory)j(requiremen)o(ts)f(include)i(the)g(size)g(of)h(the)g
(executable)e(and)i(the)g(size)f(of)h(the)f(data.)149 2130
y(F)l(or)i(a)f(SIMD)g(mac)o(hine,)f(there)g(is)h(a)g(single)g(cop)o(y)f(of)i
(the)f(executable)e(and)j(the)f(disciplines)149 2190 y(are)d(pro)q(cessed)g
(sequen)o(tially)e(\(data)i(parallelism)d(only\).)29 b(On)18
b(a)h(MIMD)f(mac)o(hine,)f(there)h(are)149 2250 y(m)o(ultiple)g(copies)i(of)h
(the)f(executable.)33 b(If)20 b(the)g(disciplines)f(are)i(pro)q(cessed)g(in)f
(parallel)g(\(task)149 2310 y(and)i(data)g(parallelism\),)e(the)h(set)g(of)h
(pro)q(cessors)g(asso)q(ciated)g(with)f(a)h(discipline)d(only)i(need)149
2370 y(the)c(executable)f(for)i(that)f(discipline.)23 b(If)16
b(the)h(disciplines)f(are)h(pro)q(cessed)h(sequen)o(tially)d(\(data)149
2431 y(parallelism)j(only\),)j(eac)o(h)e(pro)q(cessor)j(needs)d(a)i(cop)o(y)f
(of)g(the)g(executable)f(for)h(all)g(disciplines.)149 2491
y(Dep)q(ending)g(on)f(the)g(amoun)o(t)f(of)h(lo)q(cal)g(memory)l(,)e(whether)
h(or)i(not)f(virtual)f(memory)e(is)j(sup-)149 2551 y(p)q(orted,)d(and)f(the)g
(parallel)f(I/O)h(bandwidth,)h(this)f(ma)o(y)e(or)i(ma)o(y)f(not)h(b)q(e)g
(an)h(issue.)k(Curren)o(tly)l(,)149 2611 y(most)13 b(massiv)o(ely)d(parallel)
i(pro)q(cessors)j(should)e(b)q(e)g(though)o(t)h(of)f(as)h(ph)o(ysical)e
(memory)e(mac)o(hines)149 2671 y(and)17 b(are)g(considered)e(suc)o(h)h(in)g
(this)g(pap)q(er.)1036 2864 y(3)p eop
%%Page: 4 4
bop 223 42 a Fk(The)19 b(memory)d(required)i(to)h(store)h(data)g(also)f(v)m
(aries.)30 b(On)19 b(a)h(SIMD)f(mac)o(hine,)e(since)h(the)149
102 y(amoun)o(t)d(of)g(data)h(for)g(eac)o(h)e(discipline)g(\(mesh\))f(v)m
(ary)l(,)i(some)f(data)i(structures)g(ma)o(y)d(b)q(e)i(padded)149
162 y(dep)q(ending)j(on)g(sp)q(eci\014c)g(mac)o(hine)d(or)j(compiler)d
(requiremen)o(ts)g([12].)25 b(Also,)18 b(temp)q(orary)f(v)m(ari-)149
222 y(ables)g(are)g(often)g(the)g(size)f(of)h(the)g(whole)f(mesh.)22
b(On)17 b(a)g(MIMD)f(mac)o(hine,)f(when)i(a)g(domain)f(is)149
282 y(partitioned)c(across)h(m)o(ultiple)c(pro)q(cessors,)14
b(some)d(data)h(are)g(often)h(duplicated)e(to)h(sa)o(v)o(e)g(comm)o(u-)149
342 y(nication)18 b(costs)g([2].)25 b(Also,)18 b(temp)q(orary)e(v)m
(ariables,)i(t)o(ypically)e(scalar)i(or)g(v)o(ector)e(temp)q(oraries,)149
403 y(and)k(small)e(global)h(data)h(structures)f(\(i.e.,)f(small)g(lo)q(ok)h
(up)h(tables\))f(are)g(replicated)f(to)h(a)o(v)o(oid)149 463
y(b)q(ottlenec)o(ks.)32 b(Bu\013er)20 b(space)g(is)g(also)h(needed)e(on)i
(eac)o(h)e(pro)q(cessor)i(to)g(bu\013er)f(messages)g(in)f(a)149
523 y(message)d(passing)h(en)o(vironmen)o(t.)223 583 y(If)f(the)h
(disciplines)f(\(meshes\))g(are)h(pro)q(cessed)h(in)e(parallel,)h(eac)o(h)f
(discipline)g(\(mesh\))g(has)h(a)149 643 y(b)q(etter)g(surface)f(to)h(v)o
(olume)d(ratio)j(for)g(its)f(data)h(implying)d(less)j(duplicated)e(data.)23
b(\(Assuming)149 704 y(a)18 b(\014xed)f(n)o(um)o(b)q(er)f(of)i(pro)q(cessors)
g(for)g(the)f(whole)g(application.\))25 b(Also,)17 b(the)g(memory)d(required)
149 764 y(for)23 b(temp)q(orary)f(v)m(ariables)g(dep)q(ends)h(up)q(on)g(the)f
(individual)g(discipline.)37 b(If)22 b(the)h(disciplines)149
824 y(\(meshes\))d(are)h(pro)q(cessed)g(sequen)o(tially)l(,)f(the)h(lo)q(cal)
g(memory)d(asso)q(ciated)k(with)e(a)i(pro)q(cessor)149 884
y(m)o(ust)17 b(b)q(e)h(shared)g(b)o(y)f(all)g(disciplines)f(\(meshes\).)24
b(This)18 b(implies)d(a)j(higher)f(surface)h(to)g(v)o(olume)149
944 y(ratio)f(for)f(eac)o(h)f(discipline)f(\(mesh\))h(since)g(eac)o(h)h
(discipline)e(\(mesh\))g(is)i(spread)g(o)o(v)o(er)g(more)e(pro-)149
1005 y(cessors.)21 b(This)13 b(in)g(turn)g(implies)d(more)i(duplicated)g
(data)i(to)f(a)o(v)o(oid)f(comm)o(unication.)17 b(Also,)c(the)149
1065 y(memory)j(requiremen)o(t)g(for)j(temp)q(orary)f(v)m(ariables)h(is)f
(dep)q(enden)o(t)h(on)g(the)f(discipline)f(\(mesh\))149 1125
y(with)g(the)f(largest)g(requiremen)o(ts.)149 1252 y Fi(3.2)56
b(Memory)17 b(E\016ciency)149 1344 y Fk(Greater)22 b(parallelism)e(implies)f
(more)h(memory)f(is)j(required)f(to)h(solv)o(e)f(the)h(application)f(e\016-)
149 1405 y(cien)o(tly)l(.)f(Let)c(memory)d(e\016ciency)h(b)q(e)j(de\014ned)f
(as)932 1531 y Ff(")955 1538 y Fe(M)1008 1531 y Fk(=)1072 1497
y Ff(M)1119 1504 y Fd(0)p 1065 1519 81 2 v 1065 1565 a Ff(M)1112
1572 y Fe(N)1151 1531 y Ff(;)149 1656 y Fk(where)24 b Ff(")321
1663 y Fe(M)383 1656 y Fk(is)g(the)f(memory)d(e\016ciency)l(,)j
Ff(M)1002 1663 y Fd(0)1045 1656 y Fk(is)h(amoun)o(t)e(of)i(the)f(memory)e
(required)h(to)i(\014t)149 1716 y(the)d(problem)d(on)j(the)f(smallest)f(n)o
(um)o(b)q(er)f(of)j(pro)q(cessors)h(\()p Ff(P)1311 1723 y Fd(0)1331
1716 y Fk(\),)f(and)g Ff(M)1531 1723 y Fe(N)1585 1716 y Fk(is)f(the)g(amoun)o
(t)g(of)149 1777 y(memory)12 b(used)j(on)g Ff(P)543 1784 y
Fe(N)592 1777 y Fk(pro)q(cessors)h(\()p Ff(P)873 1784 y Fd(0)907
1777 y Fc(\024)d Ff(P)990 1784 y Fe(N)1024 1777 y Fk(\).)21
b(Then)15 b(the)f(claim)f(is)h(that)h(memory)d(e\016ciency)149
1837 y(decreases)19 b(as)g(the)g(n)o(um)o(b)q(er)e(of)i(pro)q(cessors)h
(increase.)28 b(All)18 b(that)h(is)g(necessary)f(for)h(this)g(claim)149
1897 y(to)f(b)q(e)f(true)g(is)f(for)i(a)f(single)g(v)m(ariable/compiler)d
(temp)q(orary)j(to)g(b)q(e)g(replicated)f(across)i(t)o(w)o(o)f(or)149
1957 y(more)e(pro)q(cessors.)223 2017 y(As)f(an)h(example)e(of)i(ho)o(w)g
(memory)d(requiremen)o(ts)g(can)j(gro)o(w)g(with)g(increased)f(parallelism,)
149 2078 y(consider)h(a)g(32)8 b Fc(\002)g Fk(32)g Fc(\002)g
Fk(32)17 b(mesh.)i(\(F)l(airly)14 b(small)f(mesh)h(sizes)g(o)q(ccur)h
(frequen)o(tly)e(in)h(m)o(ultizonal)149 2138 y(applications.\))34
b(F)l(orm)19 b(an)i(indep)q(enden)o(t)e(scalar)i(tridiagonal)g(system)e(out)h
(of)h(eac)o(h)f(column.)149 2198 y(Then)i(there)f(are)h(32)547
2180 y Fd(2)589 2198 y Fk(indep)q(enden)o(t)f(tridiagonal)h(systems,)f(eac)o
(h)g(of)h(length)f(32.)38 b(Compare)149 2258 y(the)20 b(memory)c(requiremen)o
(ts)h(to)j(solv)o(e)f(the)g(systems)f(on)i(a)g(serial)f(mac)o(hine,)f(a)i
(single)f(v)o(ector)149 2318 y(pro)q(cessor,)j(and)e(a)h(parallel)e(v)o
(ector)g(mac)o(hine.)30 b(The)20 b(solution)g(tec)o(hnique)f(will)f(b)q(e)j
(Gaussian)149 2379 y(elimination)14 b(without)j(piv)o(oting)e(where)h(the)g
(input)g(ma)o(y)f(b)q(e)h(o)o(v)o(erwritten.)223 2439 y(On)g(a)h(serial)e
(mac)o(hine,)f(32)725 2421 y Fd(3)757 2439 y Fk(+)d(3)g Fc(\002)g
Fk(32)17 b(w)o(ords)g(are)f(required,)f(32)1430 2421 y Fd(3)1467
2439 y Fk(for)h(the)g(righ)o(t)g(hand)h(side)149 2499 y(and)i(3)13
b Fc(\002)f Fk(32)19 b(for)g(a)g(single)e(tridiagonal)i(system.)26
b(The)18 b(systems)f(are)h(formed)f(and)i(solv)o(ed)f(one)149
2559 y(at)f(a)g(time.)223 2619 y(On)g(a)i(single)e(v)o(ector)g(pro)q(cessor,)
i(32)910 2601 y Fd(3)942 2619 y Fk(+)13 b(3)f Fc(\002)g Fk(32)1128
2601 y Fd(2)1166 2619 y Fk(w)o(ords)19 b(are)f(required,)e(32)1645
2601 y Fd(3)1684 2619 y Fk(for)i(the)f(righ)o(t)149 2680 y(hand)f(side)f(and)
g(3)9 b Fc(\002)f Fk(32)588 2661 y Fd(2)623 2680 y Fk(to)16
b(form)e(32)h(indep)q(enden)o(t)f(tridiagonal)i(systems.)j(A)o(t)14
b(least)h(32)h(of)f(the)149 2740 y(systems)g(are)i(formed)e(at)h(a)h(time)d
(to)j(allo)o(w)f(for)g(v)o(ectorization)f(across)i(indep)q(enden)o(t)f
(systems.)1036 2864 y(4)p eop
%%Page: 5 5
bop 223 42 a Fk(On)13 b(a)h(32)h(no)q(de)f(parallel)f(v)o(ector)g(mac)o
(hine,)e(4)6 b Fc(\002)g Fk(32)1157 23 y Fd(3)1191 42 y Fk(w)o(ords)14
b(are)g(required,)f(32)1658 23 y Fd(3)1692 42 y Fk(for)h(the)f(righ)o(t)149
102 y(hand)20 b(side)f(and)h(3)13 b Fc(\002)g Fk(32)610 84
y Fd(3)650 102 y Fk(to)19 b(form)f(32)878 84 y Fd(2)918 102
y Fk(indep)q(enden)o(t)g(tridiagonal)i(systems.)28 b(Thirt)o(y)19
b(t)o(w)o(o)g(of)149 162 y(the)d(systems)f(are)i(formed)e(at)h(a)h(time)d(on)
j(eac)o(h)f(pro)q(cessor)h(to)f(allo)o(w)g(for)h(v)o(ectorization.)223
222 y(If)c(the)h(serial)g(mac)o(hine)e(has)j(a)f(memory)d(e\016ciency)h(of)j
(1)p Ff(:)p Fk(0,)f(then)g(the)g(single)g(v)o(ector)f(pro)q(ces-)149
282 y(sor)h(and)f(parallel)f(v)o(ector)g(mac)o(hine)e(ha)o(v)o(e)i(memory)e
(e\016ciencies)g(of)k(0)p Ff(:)p Fk(92)f(and)g(0)p Ff(:)p Fk(25)h(resp)q
(ectiv)o(ely)l(.)149 410 y Fi(3.3)56 b(Computational)18 b(Requirem)o(en)n(ts)
149 502 y Fk(Computational)d(requiremen)o(ts)d(for)j(di\013eren)o(t)e
(disciplines)g(and)j(di\013eren)o(t)e(meshes)f(v)m(ary)l(.)21
b(Also,)149 563 y(mesh)16 b(sizes)g(ma)o(y)g(v)m(ary)h(widely)f(in)g(m)o
(ultizonal)f(computations)h(yielding)g(v)o(ery)g(di\013eren)o(t)g(com-)149
623 y(putational)f(requiremen)n(ts)c(for)j(di\013eren)o(t)f(meshes.)19
b(This)14 b(leads)f(to)h(load)g(balancing)g(issues.)21 b(F)l(or)149
683 y(example,)14 b(computational)h(requiremen)o(ts)e(in)i(the)h(con)o(trols)
g(discipline)e(is)i(m)o(uc)o(h)d(smaller)h(than)149 743 y(the)i
(computational)g(requiremen)o(ts)d(to)k(compute)e(a)h(\015uid)g(\015o)o(w)h
(\014eld.)223 803 y(If)g(disciplines)f(\(meshes\))h(are)g(pro)q(cessed)i(in)e
(parallel)g(\(task)h(and)h(data)g(parallelism\))c(then)149
864 y(the)h(n)o(um)o(b)q(er)e(of)i(pro)q(cessors)h(assigned)f(to)g(eac)o(h)g
(discipline)d(\(mesh\))i(can)h(b)q(e)g(adjusted)g(to)g(com-)149
924 y(putationally)g(load)h(balance)f(the)g(application.)21
b(\(Sub)s(ject)16 b(to)g(memory)e(constrain)o(ts.\))223 984
y(If)i(disciplines)f(\(meshes\))g(are)i(pro)q(cessed)g(sequen)o(tially)d
(\(data)k(parallelism)c(only\),)i(for)h(dis-)149 1044 y(ciplines)d
(\(meshes\))h(with)g(small)f(memory)f(requiremen)n(ts)g(and)j(small)e
(computational)h(require-)149 1104 y(men)o(ts,)g(trying)h(to)h(use)g(all)f(a)
o(v)m(ailable)g(pro)q(cessors)i(ma)o(y)d(actually)h(slo)o(w)h(do)o(wn)g(the)f
(application)149 1165 y(due)h(to)g(the)g(decrease)f(in)g(the)h(computation)f
(to)h(comm)o(unicati)o(on)e(ratio.)23 b(If)16 b(the)h(computation)149
1225 y(asso)q(ciated)d(with)f(a)g(discipline)e(\(mesh\))g(is)h(unable)h(to)g
(use)g(all)f(a)o(v)m(ailable)g(pro)q(cessors,)i(then)f(some)149
1285 y(pro)q(cessors)18 b(will)d(b)q(e)h(idle)g(during)g(that)h(phase)f(of)h
(the)f(computation.)223 1345 y(Ho)q(c)o(kney)h(and)i(Jesshop)q(e)g([7])f
(discuss)g(trade)h(o\013s)g(in)f(algorithm)f(selection.)26
b(Whic)o(h)18 b(algo-)149 1405 y(rithm)c(is)i(\\b)q(est")h(dep)q(ends)f(up)q
(on)g(the)g(mac)o(hine)d(arc)o(hitecture,)h(actual)i(n)o(um)o(b)q(er)e(of)i
(pro)q(cessors)149 1466 y(b)q(eing)e(used,)f(and)h(the)f(problem)e(size.)19
b(An)13 b(algorithm)f(with)h(more)f(inheren)o(t)g(parallelism)f(migh)o(t)149
1526 y(not)20 b(execute)d(as)i(fast)g(as)h(an)f(algorithm)f(with)g(less)h
(inheren)o(t)e(parallelism)f(due)j(to)g(an)g(o)o(v)o(erall)149
1586 y(increase)d(in)g(op)q(erations.)149 1714 y Fi(3.4)56
b(Amdahl's)18 b(La)n(w)149 1806 y Fk(E\016ciency)c(also)i(v)m(aries)f(dep)q
(ending)h(on)f(whether)g(the)h(disciplines)d(\(meshes\))h(are)h(pro)q(cessed)
h(in)149 1866 y(parallel)g(or)g(sequen)o(tially)l(.)j(Amdahl's)14
b(La)o(w)j(sa)o(ys)f(that)h(sp)q(eedup)f(is)g(b)q(ounded)h(b)o(y)e(the)h
(fraction)149 1926 y(of)h(the)f(co)q(de)g(that)h(is)f(serial:)847
1998 y Ff(S)h Fc(\024)1069 1965 y Ff(N)p 951 1987 280 2 v 951
2033 a Fk(\()p Ff(N)g Fc(\000)11 b Fk(1\))p Ff(\027)j Fk(+)d(1)1236
1998 y Ff(;)149 2111 y Fk(where)18 b Ff(S)i Fk(is)e(the)f(sp)q(eedup,)h
Ff(N)23 b Fk(is)17 b(the)h(n)o(um)o(b)q(er)e(of)i(pro)q(cessors,)h(and)f
Ff(\027)j Fk(is)c(the)h(fraction)f(of)h(the)149 2171 y(co)q(de)f(that)g(is)f
(serial.)k(E\016ciency)l(,)14 b Ff(")p Fk(,)i(is)g(de\014ned)g(as)793
2302 y Ff(")d Fk(=)892 2269 y Ff(S)p 886 2291 45 2 v 886 2336
a(N)949 2302 y Fk(=)1133 2269 y(1)p 1006 2291 280 2 v 1006
2336 a(\()p Ff(N)j Fc(\000)11 b Fk(1\))p Ff(\027)k Fk(+)c(1)1290
2302 y Ff(:)149 2437 y Fk(Amdahl's)h(La)o(w)i(is)f(relev)m(an)o(t)f(since)h
(these)g(discussions)g(compare)g(and)h(con)o(trast)f(the)g(pro)q(cessing)149
2498 y(of)k(a)g(\014xed)f(n)o(um)o(b)q(er)e(of)j(m)o(ultiple)c(disciplines)h
(\(meshes\).)223 2558 y(If)k(the)h(disciplines)f(\(meshes\))f(are)i(pro)q
(cessed)h(in)f(parallel,)f(assume)h(that)g(the)g(n)o(um)o(b)q(er)f(of)149
2618 y(pro)q(cessors)j(assigned)e(to)h(eac)o(h)e(discipline)f(\(mesh\),)h
Ff(G)1190 2625 y Fe(i)1204 2618 y Fk(,)i(is)e(suc)o(h)h(that)g(there)g(is)f
(near)i(p)q(erfect)149 2678 y(load)c(balance)f(across)h(disciplines)d
(\(meshes\).)19 b(Giv)o(en)14 b(the)h(same)f(n)o(um)o(b)q(er)f(of)j(pro)q
(cessors)g(\()p Ff(N)j Fk(=)149 2705 y Fb(P)202 2738 y Ff(G)240
2745 y Fe(i)254 2738 y Fk(\),)14 b(pro)q(cessing)g(disciplines)d(\(meshes\))h
(sequen)o(tially)f(m)o(ust)h(ha)o(v)o(e)h(a)h(lo)o(w)o(er)e(e\016ciency)l(.)
18 b(Eac)o(h)1036 2864 y(5)p eop
%%Page: 6 6
bop 149 42 a Fk(discipline)13 b(\(mesh\))g(is)h(spread)h(o)o(v)o(er)f(more)f
(pro)q(cessors)j(and)f(Amdahl's)d(La)o(w)j(implies)d(e\016ciency)149
102 y(decreases)k(as)h(the)f(n)o(um)o(b)q(er)f(of)h(pro)q(cessors)i
(increases)e(for)g(a)h(\014xed)f(problem)e(size.)223 162 y(F)l(or)g(example,)
e(assume)i(that)h(a)g(m)o(ultizonal)d(application)i(has)h(t)o(w)o(o)g(iden)o
(tical)e(sized)g(meshes)149 222 y(with)g(the)g(same)f(computational)g(load)i
(for)f(eac)o(h.)20 b(F)l(urther,)13 b(assume)f(that)h(the)g(computation)f(on)
149 282 y(eac)o(h)k(is)f(99.9\045)h(parallel.)k(Giv)o(en)15
b(1000)i(pro)q(cessors,)g(if)e(the)g(meshes)g(are)g(pro)q(cessed)h(in)g
(parallel)149 342 y(\(500)g(pro)q(cessors)f(assigned)g(to)f(eac)o(h)f(mesh\))
g(then)h(the)g(e\016ciency)d(is)j(66)p Ff(:)p Fk(7\045.)21
b(If)13 b(the)h(meshes)f(are)149 403 y(pro)q(cessed)k(sequen)o(tially)e
(\(1000)j(pro)q(cessors)f(assigned)h(to)e(eac)o(h)g(mesh\))f(then)i(the)f
(e\016ciency)e(is)149 463 y(50)p Ff(:)p Fk(0\045.)21 b(This)14
b(means)e(that)i(pro)q(cessing)h(the)e(meshes)f(sequen)o(tially)f(will)i(tak)
o(e)g(33\045)h(longer)f(than)149 523 y(pro)q(cessing)k(them)e(in)h(parallel.)
223 583 y(Other)c(sources)h(of)g(ine\016ciency)d(are)i(an)h(increased)f(comm)
o(unication)e(to)j(computation)f(ratio)149 643 y(and)24 b(an)g(increase)f(in)
g(redundan)o(t)h(computations)f(as)h(the)f(p)q(ercen)o(tage)g(of)g
(duplicated)g(data)149 704 y(increases.)149 831 y Fi(3.5)56
b(Soft)n(w)n(are)20 b(Engineering)149 924 y Fk(Some)d(of)i(the)e(soft)o(w)o
(are)i(engineering)e(issues)h(are)g(mo)q(dularit)o(y)l(,)e(indep)q(endence,)h
(extensibilit)o(y)l(,)149 984 y(mo)q(di\014abilit)o(y)l(,)d(readabilit)o(y)l
(,)h(and)i(main)o(tainabilit)o(y)l(.)i(Soft)o(w)o(are)e(engineering)e(ma)o(y)
g(b)q(e)i(though)o(t)149 1044 y(of)h(as)f(complexit)o(y)d(managemen)o(t.)20
b(Tw)o(o)e(primary)d(w)o(a)o(ys)i(h)o(umans)f(deal)h(with)f(complexit)o(y)e
(are)149 1104 y(divide-and-conquer)22 b(and)h(abstraction.)41
b(The)23 b(trend)f(o)o(v)o(er)g(the)g(last)g(thirt)o(y)g(y)o(ears)g(in)g
(soft-)149 1165 y(w)o(are)17 b(engineering)f(has)h(b)q(een)g(to)o(w)o(ards)g
(greater)g(co)q(de)g(mo)q(dularit)o(y)e(and)i(greater)g(information)149
1225 y(hiding.)24 b(Structured)16 b(programming,)g(top-do)o(wn)i(design,)f
(program)g(mo)q(dules,)e(abstract)j(data)149 1285 y(structures,)c(ob)s(ject)g
(orien)o(ted)f(programming)f(are)i(all)g(examples)e(of)i(this)g(trend.)20
b(They)14 b(encour-)149 1345 y(age)i(the)e(partitioning)h(of)g(problems)f(in)
o(to)g(simpler)f(pieces,)g(in)o(terfaces)h(to)h(b)q(e)g(de\014ned,)g(and)g
(the)149 1405 y(impleme)o(n)o(tation)f(details)h(to)i(b)q(e)f(hidden)g(b)q
(ehind)g(the)g(in)o(terfaces.)149 1533 y Fi(3.6)56 b(Multidisciplinary)16
b(Coupling)149 1626 y Fk(The)d(principal)e(metho)q(ds)h(for)g(coupling)h(m)o
(ultiple)c(disciplines)h(are)j(global)f(explicit)f(in)o(tegration,)149
1686 y(global)18 b(implicit)c(in)o(tegration,)j(mo)q(dal)f(equation)i(in)o
(tegration,)e(and)i(partitioned)f(analysis)h([6].)149 1746
y(Global)c(explicit)d(in)o(tegration)h(applies)h(an)h(explicit)d(time)f(in)o
(tegration)j(algorithm)f(to)i(the)f(global)149 1806 y(set)19
b(of)g(equations.)29 b(Ho)o(w)o(ev)o(er,)17 b(stabilit)o(y)g(is)i(a)g
(concern)f(and)h(the)g(time)d(step)j(m)o(ust)e(b)q(e)i(c)o(hosen)149
1866 y(based)e(on)g(the)f(discipline)e(with)i(the)g(sti\013est)h(requiremen)n
(ts.)223 1926 y(Mo)q(dal)12 b(equation)f(in)o(tegration)h(represen)o(ts)f
(the)g(resp)q(onse)i(of)f(a)g(system)e(b)o(y)h(mo)q(des)h(go)o(v)o(erned)149
1987 y(b)o(y)g(mo)q(dal)g(equations)h(of)f(motion.)19 b(Ho)o(w)o(ev)o(er,)11
b(it)h(is)g(hard)h(to)g(determining)d(a)j(set)f(of)h(basis)f(mo)q(des)149
2047 y(for)17 b(a)g(nonlinear)f(system.)223 2107 y(Global)j(implicit)d
(coupling)i(sc)o(heme)f(is)i(used,)g(the)g(problem)f(can)h(b)q(e)g(expressed)
g(in)f(blo)q(c)o(k)149 2167 y(matrix)d(form)g(where)h(the)f(main)g(diagonal)i
(blo)q(c)o(ks)f(represen)o(t)f(the)h(individual)f(disciplines)f(and)149
2227 y(the)e(o\013-diagonal)i(blo)q(c)o(ks)d(represen)o(t)g(the)g(coupling)h
(b)q(et)o(w)o(een)f(the)g(disciplines.)19 b(Then)11 b(the)h(whole)149
2288 y(system)18 b(can)g(b)q(e)h(solv)o(ed)f(as)i(a)f(large)f(single)g
(matrix.)27 b(Ho)o(w)o(ev)o(er,)17 b(in)h(man)o(y)g(instances,)g(it)g(ma)o(y)
149 2348 y(not)c(b)q(e)g(p)q(ossible)g(to)g(directly)d(couple)i(t)o(w)o(o)h
(disciplines.)k(This)c(is)f(due)h(to)f(di\016culties)f(asso)q(ciated)149
2408 y(with)k(the)g(explicit)e(ev)m(aluation)i(of)g(o\013-diagonal)i(blo)q(c)
o(ks.)j(F)l(or)16 b(example,)e(it)h(w)o(ould)h(b)q(e)g(di\016cult)149
2468 y(to)j(directly)e(couple)h(a)h(particle)e(sim)o(ulation)g(of)i(a)f
(rare\014ed)h(gas)g(to)g(the)f(structural)h(and)g(ther-)149
2528 y(mal)d(analysis)h(of)g(the)g(b)q(o)q(dy)h(o)o(v)o(er)e(whic)o(h)g(it)g
(\015o)o(ws.)24 b(Ev)o(en)16 b(if)g(all)h(o\013-diagonal)i(coupling)d(terms)
149 2589 y(can)k(b)q(e)f(ev)m(aluated)g(explicitly)l(,)d(direct)i(in)o(v)o
(ersion)f(of)j(suc)o(h)e(a)i(large)f(sparse)g(matrix)f(w)o(ould)h(b)q(e)149
2649 y(prohibitiv)o(ely)14 b(exp)q(ensiv)o(e)h(in)h(terms)e(of)j(b)q(oth)g
(memory)c(and)j(CPU)h(time)c(for)k(problems)e(of)h(an)o(y)149
2709 y(consequence)i(to)h(the)f(aeronautics)h(comm)o(unit)o(y)-5
b(.)26 b(As)18 b(a)h(result,)f(it)g(is)h(necessary)f(to)h(resort)g(to)1036
2864 y(6)p eop
%%Page: 7 7
bop 149 42 a Fk(some)17 b(form)f(of)h(iterativ)o(e)e(solution)j(approac)o(h)f
(based)h(on)g(the)f(concept)f(of)i(sub-structuring)g(or)149
102 y(partitioned)g(analysis.)26 b(A)17 b(natural)h(form)f(of)h
(sub-structuring)g(across)h(discipline)d(b)q(oundaries)149
162 y(w)o(ould)24 b(b)q(e)f(inevitable)f(due)h(to)g(widely)f(di\013eren)o(t)h
(n)o(umerical)d(c)o(haracteristics)i(across)i(disci-)149 222
y(plines.)c(A)14 b(monolithic)e(iterativ)o(e)h(solv)o(er)g(is)i(unlik)o(ely)d
(to)i(b)q(e)h(able)f(to)h(cop)q(e)f(with)g(all)g(the)g(div)o(erse)149
282 y(disciplines)h(in)h(an)h(e\016cien)o(t)d(manner.)223 342
y(In)h(partitioned)f(analysis,)i(the)f(e\013ect)f(of)i(o\013-diagonal)h(blo)q
(c)o(ks)e(are)g(represen)o(ted)f(as)i(forcing)149 403 y(functions)23
b(on)g(the)g(righ)o(t)f(hand)i(side.)40 b(The)23 b(computation)f(of)h(these)f
(forcing)h(terms)e(w)o(ould)149 463 y(induce)13 b(in)o(ter-disciplinary)e
(comm)o(unication.)18 b(P)o(artitioned)13 b(analysis)g(leads)h(to)g(blo)q(c)o
(k)f(iterativ)o(e)149 523 y(metho)q(ds)k(\(blo)q(c)o(k)g(Jacobi,)g(blo)q(c)o
(k)g(Gauss-Seidel,)g(etc.\).)23 b(Also,)17 b(with)g(partitioned)g(analysis,)g
(it)149 583 y(is)i(easier)g(to)g(extend)f(the)h(application)f(to)h(include)f
(new)h(disciplines.)27 b(Ho)o(w)o(ev)o(er,)18 b(robust)h(and)149
643 y(e\016cien)o(t)c(m)o(ultidiscipl)o(inary)f(and/or)k(m)o(ultizonal)c
(coupling)i(tec)o(hniques)g(is)g(an)h(activ)o(e)e(area)j(of)149
704 y(researc)o(h.)223 764 y(P)o(ark)j(and)h(F)l(elippa)e([9])h(list)g(man)o
(y)e(of)j(the)f(problems)f(asso)q(ciated)i(with)g(global)f(implicit)149
824 y(coupling)16 b(and)h(the)f(adv)m(an)o(tages)i(of)e(partitioned)g
(analysis.)21 b(F)l(rom)15 b(a)i(soft)o(w)o(are)f(viewp)q(oin)o(t,)f(the)149
884 y(list)i(of)h(disadv)m(an)o(tages)g(of)g(direct)f(coupling)g(and)h(adv)m
(an)o(tages)h(of)e(partitioned)g(analysis)h(could)149 944 y(b)q(e)f(said)f
(ab)q(out)i(monolithic)c(programming)h(v)o(ersus)h(mo)q(dular)f(programming)g
(resp)q(ectiv)o(ely)l(.)149 1078 y Fi(4)56 b(Computational)18
b(Mo)r(dels)149 1187 y Fk(Giv)o(en)d(the)g(ab)q(o)o(v)o(e)h(considerations)g
(\(memory)c(requiremen)o(ts,)h(computational)h(requiremen)o(ts,)149
1247 y(Amdahl's)19 b(La)o(w,)j(soft)o(w)o(are)f(engineering,)f(and)i(m)o
(ultidisci)o(pli)o(nary)c(and/or)k(m)o(ultizonal)c(cou-)149
1307 y(pling\))d(the)f(most)g(\\natural")j(approac)o(h)e(to)g(implem)o(en)o
(ti)o(ng)e(a)i(m)o(ultidisci)o(plinary)d(and/or)k(m)o(ul-)149
1368 y(tizonal)i(application)g(on)h(parallel)e(pro)q(cessor)i(is)f
(partitioned)g(analysis)g(using)g(a)h(MIMD)e(st)o(yle)149 1428
y(of)i(execution)d(across)j(disciplines)e(\(meshes\).)24 b(This)18
b(allo)o(ws)g(n)o(umerical)e(algorithms)h(and)h(pro-)149 1488
y(grams)e(p)q(ertaining)g(to)g(individual)f(disciplines)f(to)j(b)q(e)f(dev)o
(elop)q(ed)f(and)h(tested)g(indep)q(enden)o(tly)l(.)149 1548
y(After)h(eac)o(h)g(program)h(has)g(b)q(een)g(v)m(alidated,)f(an)h
(additional)g(mo)q(dule)e(is)h(added)h(to)g(eac)o(h)f(that)149
1608 y(deals)g(with)f(the)g(required)f(in)o(terdisciplinary)e(\(in)o
(terzonal\))j(comm)o(uni)o(cation.)223 1669 y(Sev)o(eral)g(mo)q(dels)h(of)i
(computation)e(supp)q(ort)i(the)f(MIMD)f(st)o(yle)g(of)h(execution)f(across)i
(dis-)149 1729 y(ciplines.)24 b(Whic)o(h)17 b(one)g(is)h(b)q(est)g(dep)q
(ends)f(up)q(on)i(the)e(ph)o(ysical)g(problem,)f(solution)h(algorithm,)149
1789 y(hardw)o(are)f(resources,)g(and)g(op)q(erating)g(system)e(supp)q(ort)j
(a)o(v)m(ailable.)j(Belo)o(w)15 b(w)o(e)g(presen)o(t)f(three)149
1849 y(mo)q(dels)i(and)g(describ)q(e)g(the)g(functionalit)o(y)f(that)i(is)f
(desired)f(from)g(eac)o(h.)223 1909 y(The)h(discussions)g(assume)g(the)g
(follo)o(wing)f(de\014nitions:)21 b Ff(N)5 b(P)24 b Fk(equals)16
b(the)g(total)g(n)o(um)o(b)q(er)f(of)149 1970 y(pro)q(cessors)g(used,)f(a)g
(group)h Ff(G)714 1977 y Fe(i)742 1970 y Fk(is)f(the)g(set)f(of)h(pro)q
(cessors)h(assigned)g(to)f(a)g(particular)f(discipline,)149
2030 y Ff(N)5 b(G)17 b Fk(is)e(the)h(total)g(n)o(um)o(b)q(er)e(of)i(groups,)g
(and)h Ff(GS)1061 2037 y Fe(i)1091 2030 y Fk(is)e(the)h(n)o(um)o(b)q(er)e(of)
i(pro)q(cessors)h(in)e(group)i Ff(G)1919 2037 y Fe(i)1933 2030
y Fk(.)223 2090 y(In)c(all)f(of)i(the)f(mo)q(dels,)f(it)h(is)g(assumed)f
(that)i(the)f(user)g(has)h(the)f(option)h(to)g(con)o(trol)e(the)h(set)h(of)
149 2150 y(ph)o(ysical)g(pro)q(cessors)h(assigned)g(to)g(a)g(group)g(and)g
(the)f(data)i(la)o(y)o(out)d(on)i(that)g(set)f(of)h(pro)q(cessors.)149
2278 y Fi(4.1)56 b(Static)18 b(Mo)r(del)149 2370 y Fk(In)g(the)g(static)g(mo)
q(del,)f(all)h(resource)g(requiremen)o(ts)d(are)j(kno)o(wn)h(at)f(startup)h
(\(i.e.,)e Ff(N)5 b(P)i Fk(,)19 b Ff(N)5 b(G)p Fk(,)149 2431
y(and)18 b Ff(GS)313 2438 y Fe(i)345 2431 y Fk(are)f(all)f(kno)o(wn\).)24
b(F)l(unctional)16 b(requiremen)o(ts)e(are)j(that)g(the)g(n)o(um)o(b)q(er)e
(of)j(pro)q(cessors)149 2491 y(assigned)23 b(to)e(eac)o(h)g(discipline)f(is)h
(indep)q(enden)o(t)f(of)i(the)f(other)h(disciplines,)e(a)i(di\013eren)o(t)f
(exe-)149 2551 y(cutable)e(ma)o(y)f(b)q(e)i(loaded)g(in)o(to)f(eac)o(h)g
(group,)i(eac)o(h)e(group)i(has)f(its)f(o)o(wn)h(logical)f(n)o(um)o(b)q
(ering,)149 2611 y(global)f(op)q(erations)h(suc)o(h)e(as)h(SUM)f(or)g(MAX)g
(apply)g(to)h(the)f(lo)q(cal)g(group,)h(and)g(some)e(mec)o(ha-)149
2671 y(nism)f(is)i(pro)o(vided)e(to)i(establish)f(comm)o(unication)e(b)q(et)o
(w)o(een)h(an)i(individual)e(pro)q(cessor)j(in)e(one)149 2731
y(group)i(and)e(an)h(individual)e(pro)q(cessor)i(in)f(another)h(group.)1036
2864 y(7)p eop
%%Page: 8 8
bop 223 42 a Fk(The)12 b(logical)g(n)o(um)o(b)q(ering)f(within)h(a)h(group,)h
(global)e(op)q(erations)i(applying)f(only)f(to)h(the)f(lo)q(cal)149
102 y(group,)24 b(and)f(di\013eren)o(t)e(executables)g(all)g(supp)q(ort)i
(indep)q(enden)o(t)f(dev)o(elopmen)n(t)d(and)k(testing)149
162 y(of)g(disciplines.)36 b(The)22 b(indep)q(enden)o(t)f(assignmen)o(t)g(of)
h(pro)q(cessors)h(to)f(disciplines)e(allo)o(ws)i(the)149 222
y(application)f(to)g(b)q(e)f(statically)g(load)h(balanced.)34
b(P)o(oin)o(t)20 b(to)h(p)q(oin)o(t)f(comm)o(unication)e(b)q(et)o(w)o(een)149
282 y(groups)g(allo)o(w)e(coupling)h(information)e(to)i(b)q(e)f(passed)h
(directly)e(b)q(et)o(w)o(een)h(the)g(pro)q(cessors)h(that)149
342 y(need)f(to)h(kno)o(w)f(the)g(information.)223 403 y(Groups)j(are)f
(neither)f(created)h(nor)h(deleted)e(dynamically)l(.)24 b(Ev)o(erything)18
b(is)g(initialized)e(at)149 463 y(startup)25 b(and)f(con)o(tin)o(ues)f(un)o
(til)g(application)g(termination.)42 b(Curren)o(tly)l(,)24
b(there)f(are)h(sev)o(eral)149 523 y(applications)19 b([11)q(,)f(10)q(,)h(3])
f(using)i(this)f(mo)q(del)e(at)j(NASA)d(Ames)g(Researc)o(h)i(Cen)o(ter)f
(based)h(on)149 583 y(the)d(in)o(tercub)q(e)g(comm)o(uni)o(cation)e(soft)o(w)
o(are)i(dev)o(elop)q(ed)f(for)i(the)f(In)o(tel)e(iPSC/860)k([1].)223
643 y(There)11 b(are)h(sev)o(eral)f(problems)f(with)i(the)g(iPSC/860)h
(implem)o(en)o(tation)c(of)j(the)g(static)g(mo)q(del.)149 704
y(Debuggers)21 b(do)f(not)g(w)o(ork)f(for)h(m)o(ultiple)d(indep)q(enden)o(t)h
(groups)j(of)f(pro)q(cessors.)32 b(Groups)21 b(are)149 764
y(restricted)11 b(to)i(a)f(p)q(o)o(w)o(er-of-t)o(w)o(o)h(n)o(um)o(b)q(er)e
(of)h(pro)q(cessors)h(and)g(only)f(one)g(group)h(ma)o(y)e(b)q(e)h(assigned)
149 824 y(to)21 b(a)f(pro)q(cessor)i(thereb)o(y)d(limiti)o(ng)f(the)i(abilit)
o(y)f(to)h(load)h(balance)f(the)f(computation.)33 b(Also,)149
884 y(existing)24 b(batc)o(h)g(job)g(submission)g(soft)o(w)o(are,)h(Net)o(w)o
(ork)e(Queuing)h(System)f(\(NQS\),)g(do)h(not)149 944 y(supp)q(ort)18
b(this)e(st)o(yle)f(of)i(computation.)149 1072 y Fi(4.2)56
b(Dynamic)17 b(Mo)r(del)149 1165 y Fk(In)g(the)f(dynamic)f(mo)q(del,)g
(groups)i(ma)o(y)e(b)q(e)i(created)f(or)h(deleted)e(dynamically)l(.)20
b Ff(N)5 b(P)24 b Fk(and)17 b Ff(N)5 b(G)149 1225 y Fk(v)m(ary)19
b(dynamically)l(.)24 b Ff(GS)622 1232 y Fe(i)655 1225 y Fk(is)18
b(\014xed)f(at)i(group)g(creation.)26 b(F)l(unctional)18 b(requiremen)o(ts)d
(are)j(that)149 1285 y(the)c(n)o(um)o(b)q(er)e(of)i(pro)q(cessors)h(assigned)
f(to)h(eac)o(h)e(discipline)f(is)h(indep)q(enden)o(t)g(of)h(the)g(other)f
(disci-)149 1345 y(plines,)i(a)i(di\013eren)o(t)e(executable)g(ma)o(y)f(b)q
(e)i(loaded)h(in)o(to)e(eac)o(h)h(group,)g(eac)o(h)g(group)h(has)g(its)f(o)o
(wn)149 1405 y(logical)g(n)o(um)o(b)q(ering,)e(global)i(op)q(erations)h
(apply)f(to)h(the)e(lo)q(cal)h(group,)h(mec)o(hanism)o(s)d(for)i(group)149
1466 y(creation)j(and)f(deletion)g(are)g(needed,)g(and)h(some)e(mec)o(hanism)
e(to)k(establish)f(comm)o(unic)o(ation)149 1526 y(b)q(et)o(w)o(een)d(an)h
(individual)e(pro)q(cessor)j(in)e(one)g(group)i(and)f(an)g(individual)e(pro)q
(cessor)i(in)f(another)149 1586 y(group.)223 1646 y(The)k(reasoning)i(for)f
(the)g(functionalit)o(y)e(is)i(the)f(same)g(as)h(in)g(the)f(static)h(mo)q
(del)e(with)i(the)149 1706 y(additional)f(requiremen)n(ts)d(of)i(dynamic)f
(creation)h(and)g(deletion)g(of)g(groups.)28 b(The)19 b(size)e(of)h(an)149
1766 y(individual)23 b(group)h(is)f(\014xed)g(at)h(group)g(creation.)43
b(If)22 b(a)i(group)h(needs)e(increase)f(its)i(size,)f(a)149
1827 y(new)18 b(group)h(ma)o(y)d(b)q(e)i(created)g(and)g(the)g(relev)m(an)o
(t)f(information)g(copied)g(from)g(the)g(old)h(group.)149 1887
y(Then)f(the)g(old)g(group)g(name)f(is)h(reassigned)g(to)g(the)g(new)f(group)
i(and)f(the)g(old)g(group)h(deleted.)149 1947 y(The)i(create,)g(cop)o(y)f
(and)h(delete)e(approac)o(h)j(to)f(dynamic)e(group)i(size)f(is)h(acceptable)f
(b)q(ecause)149 2007 y(disciplines)d(often)h(assume)f(a)h(particular)f(data)i
(to)f(pro)q(cessor)h(la)o(y)o(out.)23 b(Adding)16 b(pro)q(cessors)j(to)149
2067 y(the)f(curren)o(t)e(group)j(w)o(ould)e(also)i(require)d(a)i(data)g
(reorganization.)26 b(Mo)o(ving)17 b(to)h(a)g(new)f(set)h(of)149
2128 y(pro)q(cessors)k(ma)o(y)c(ease)i(the)g(pro)q(cess.)33
b(This)20 b(form)f(of)h(pro)q(cess)h(migration)e(requires)g(that)h(the)149
2188 y(c)o(hange)d(in)f(lo)q(cation)g(of)h(the)f(group)h(b)q(e)f(transmitted)
f(to)i(all)f(groups)h(that)g(need)e(to)i(kno)o(w.)149 2316
y Fi(4.3)56 b(Hybrid)18 b(Mo)r(del)149 2408 y Fk(In)e(the)g(h)o(ybrid)g(mo)q
(del,)e(the)i(total)h(n)o(um)o(b)q(er)d(of)j(pro)q(cessors)g(used)g(b)o(y)e
(the)h(application,)g Ff(N)5 b(P)i Fk(,)16 b(is)149 2468 y(\014xed)k(at)f
(application)h(startup.)31 b(Ho)o(w)o(ev)o(er,)18 b(the)h(n)o(um)o(b)q(er)f
(of)i(groups,)h Ff(N)5 b(G)p Fk(,)20 b(and)g(their)f(sizes,)149
2528 y Ff(GS)217 2535 y Fe(i)232 2528 y Fk(,)j(v)m(ary)f(at)g(run)o(time.)33
b(F)l(unctional)21 b(requiremen)o(ts)d(are)j(that)g(the)g(n)o(um)o(b)q(er)e
(of)j(pro)q(cessors)149 2589 y(assigned)c(to)g(eac)o(h)e(discipline)f(is)i
(indep)q(enden)o(t)f(of)h(other)h(disciplines,)d(a)i(di\013eren)o(t)f
(executable)149 2649 y(ma)o(y)k(b)q(e)i(loaded)g(in)o(to)f(eac)o(h)g(group,)i
(eac)o(h)e(group)i(has)f(its)f(o)o(wn)h(logical)f(n)o(um)o(b)q(ering,)g
(global)149 2709 y(op)q(erations)k(apply)f(to)g(the)f(lo)q(cal)g(group,)j
(mec)o(hanisms)21 b(for)j(group)g(creation)g(and)g(deletion)1036
2864 y(8)p eop
%%Page: 9 9
bop 149 42 a Fk(are)17 b(needed,)e(and)i(some)f(mec)o(hanism)d(to)k
(establish)f(comm)o(unication)e(b)q(et)o(w)o(een)h(an)i(individual)149
102 y(pro)q(cessor)h(in)e(one)g(group)h(and)g(an)g(individual)e(pro)q(cessor)
i(in)f(another)h(group.)223 162 y(Ha)o(ving)h(a)h(\014xed)f(n)o(um)o(b)q(er)f
(of)i(pro)q(cessors)h(assigned)g(to)f(the)f(application)h(simpli\014es)d
(some)149 222 y(problems)d(and)h(creates)g(others.)20 b(Keeping)14
b(the)f(group)i(information)e(consisten)o(t)g(across)i(groups)149
282 y(is)h(simpli\014ed)e(b)q(ecause)j(it)e(is)h(a)h(b)q(ounded)g(problem)d
(and)j(tables)f(ma)o(y)f(b)q(e)h(k)o(ept)g(on)g(a)h(pro)q(cessor)149
342 y(basis)e(rather)f(than)h(a)g(group)g(basis.)21 b(Ho)o(w)o(ev)o(er,)12
b(what)j(happ)q(ens)g(when)f(a)h(group)g(is)f(created)f(and)149
403 y(there)19 b(are)g(no)g(idle)f(pro)q(cessors?)30 b(P)o(ossible)19
b(solutions)g(are)g(to)g(either)f(ab)q(ort)i(the)f(application,)149
463 y(inform)d(the)g(application)h(that)g(it)f(is)h(out)g(of)g(pro)q
(cessors,)h(or)f(allo)o(w)g(m)o(ultiple)c(groups)18 b(p)q(er)f(pro-)149
523 y(cessor)i(and)h(time)c(slice)i(and)h(share)g(lo)q(cal)g(memory)d(\(mem)o
(ory)g(slice\))i(across)h(groups.)30 b(Recall)149 583 y(that)17
b(parallel)f(pro)q(cessors)h(are)f(b)q(eing)h(considered)e(ph)o(ysical)h
(memory)d(mac)o(hines.)223 643 y(The)j(most)f(\015exible)g(solution)h(is)g
(informing)f(the)h(application)g(that)g(it)g(has)h(run)f(out)h(of)f(idle)149
704 y(pro)q(cessors)24 b(and)e(let)f(it)h(decide)f(if)g(it)h(w)o(an)o(ts)g
(to)g(memory)d(slice)i(or)h(ab)q(ort.)40 b(When)22 b(memory)149
764 y(slicing,)16 b(the)g(user)h(should)g(ha)o(v)o(e)f(the)h(option)g(to)g
(sp)q(ecify)f(a)i(logical)e(pro)q(cessor)i(la)o(y)o(out)e(and)h(the)149
824 y(set)i(of)g(ph)o(ysical)f(pro)q(cessors)i(that)f(are)g(to)g(b)q(e)g
(memory)d(sliced.)28 b(This)19 b(implies)d(the)i(abilit)o(y)g(of)149
884 y(an)f(application)f(to)h(in)o(terrogate)f(the)g(state)g(of)h(an)o(y)f
(pro)q(cessor.)223 944 y(With)j(mem)o(ory)e(slicing,)h(it)h(is)g(also)h
(desirable)e(to)i(ha)o(v)o(e)e(group)i(migration)e(as)i(an)g(option.)149
1005 y(This)e(is)f(an)h(issue)g(where)f(solution)h(adaptiv)o(e)f(algorithms)f
(are)i(used.)25 b(Assume)16 b(that)i(a)g(region)149 1065 y(needs)h
(re\014nemen)o(t.)27 b(Then)19 b(a)h(new)f(grid)g(with)g(greater)g
(re\014nemen)o(t)d(can)j(b)q(e)h(placed)e(o)o(v)o(er)g(the)149
1125 y(region.)32 b(The)19 b(new)h(grid)f(is)g(treated)h(as)g(a)g(logically)e
(separate)i(group.)32 b(In)19 b(other)h(places,)f(the)149 1185
y(grid)k(ma)o(y)d(b)q(e)i(coarsened.)40 b(In)21 b(those)i(places,)g(groups)g
(terminate.)37 b(As)22 b(groups)h(terminate,)149 1245 y(pro)q(cessors)c(ma)o
(y)c(b)q(ecome)h(idle)g(while)g(other)h(pro)q(cessors)i(are)e(memory)d
(slicing.)23 b(Under)16 b(these)149 1306 y(conditions,)g(the)g(user)h(ma)o(y)
d(w)o(an)o(t)i(groups)i(to)e(migrate)f(to)i(the)f(idle)f(pro)q(cessors.)223
1366 y(One)d(of)h(the)g(adv)m(an)o(tages)h(of)f(the)f(h)o(ybrid)g(mo)q(del)g
(is)g(that)i(it)e(could)g(b)q(e)h(submitted)e(as)j(a)f(batc)o(h)149
1426 y(job.)22 b(The)16 b(resources)h(required)e(are)h(\014xed)g(and)h(sp)q
(eci\014able)e(at)i(application)f(instan)o(tiation.)149 1559
y Fi(5)56 b(Conclusion)149 1669 y Fk(Based)22 b(on)f(memory)e(requiremen)n
(ts,)h(memory)e(e\016ciency)l(,)i(Amdahl's)f(La)o(w,)k(computational)149
1729 y(requiremen)o(ts,)d(computational)h(e\016ciency)l(,)f(soft)o(w)o(are)i
(engineering,)g(and)g(m)o(ultidisci)o(plinary)149 1789 y(\(m)o(ultizonal\))14
b(coupling)i(a)g(computing)f(mo)q(del)g(that)h(supp)q(orts)h(a)g(MIMD)e(st)o
(yle)g(of)h(computing)149 1849 y(across)i(disciplines)c(is)i(the)g(most)g
(natural.)223 1909 y(Three)c(computational)h(mo)q(dels)f(w)o(ere)g(in)o(tro)q
(duced.)20 b(The)13 b(static)g(mo)q(del)e(is)i(curren)o(tly)f(b)q(eing)149
1970 y(used)20 b(at)h(NASA)d(Ames)g(for)i(m)o(ultidiscipli)o(nary)d(and)k(m)o
(ultizonal)c(applications.)32 b(W)l(e)20 b(exp)q(ect)149 2030
y(to)k(mo)o(v)o(e)c(to)o(w)o(ards)j(the)g(h)o(ybrid)f(mo)q(del)f(in)h(the)h
(next)f(y)o(ear)g(to)h(supp)q(ort)h(solution)f(adaptiv)o(e)149
2090 y(metho)q(ds.)149 2223 y Fi(References)174 2333 y Fk([1])h(E.)15
b(Barszcz.)k(In)o(tercub)q(e)14 b(comm)o(unicati)o(on)f(for)j(the)f
(ipsc/860.)21 b(In)15 b Fa(Sc)n(alable)k(High)e(Perfor-)250
2393 y(manc)n(e)h(Computing)g(Confer)n(enc)n(e)g(`92)f(pr)n(o)n(c)n(e)n(e)n
(dings)p Fk(,)e(pages)i(307{313,)h(April)d(1992.)174 2495 y([2])24
b(E.)c(Barszcz,)h(T.)g(F.)f(Chan,)i(D.)f(C.)f(Jesp)q(ersen,)i(and)f(R.)g(S.)f
(T)l(uminaro.)34 b(Flo52)22 b(on)f(h)o(y-)250 2555 y(p)q(ercub)q(es:)27
b(P)o(erformance)18 b(and)h(mo)q(delling)f(of)i(a)f(m)o(ultigrid)e(euler)h
(co)q(de.)30 b Fa(International)250 2615 y(Journal)17 b(of)g(High)h(Sp)n(e)n
(e)n(d)f(Computing)p Fk(,)g(1\(3\):481{503,)h(1989.)1036 2864
y(9)p eop
%%Page: 10 10
bop 174 42 a Fk([3])24 b(E.)17 b(Barszcz,)g(S.)g(K.)h(W)l(eeratunga,)g(and)g
(R.)f(L.)h(Meaking.)25 b(Dynamic)16 b(o)o(v)o(erset)h(grid)h(com-)250
102 y(m)o(unication)c(on)j(distributed)f(memory)d(parallel)j(pro)q(cessors.)
23 b(T)l(o)17 b(b)q(e)g(presen)o(ted)e(at)i(11th)250 162 y(AIAA)d
(Computational)i(Fluid)g(Dynamics)e(Conference,)i(Orlando)g(Florida,)g(July)g
(1993.)174 264 y([4])24 b(J.)c(A.)g(Benek,)h(P)l(.)f(G.)h(Buning,)g(and)h(J.)
e(L.)h(Steger.)35 b(A)20 b(3-d)i(c)o(himera)d(grid)i(em)o(b)q(edding)250
324 y(tec)o(hnique.)k(American)15 b(Institute)j(of)g(Aeronautics)g(and)h
(Astronautics)f(pap)q(er)h(85-1523,)250 384 y(July)c(1985.)174
486 y([5])24 b(R.)11 b(F.)g(V)l(an)g(der)h(Wijngaart.)i(E\016cien)o(t)c
(implem)o(en)o(tation)f(of)i(a)h(3-dimensional)f(adi)h(metho)q(d)250
546 y(on)22 b(the)f(ipsc/860.)39 b(Submitted)20 b(to)i(Sup)q(erComputing)g
(`93",)h(NASA)e(Ames)f(Researc)o(h)250 606 y(Cen)o(ter,)15
b(Mo\013ett)h(Field,)f(CA)h(94035.)174 708 y([6])24 b(C.)f(A.)f(F)l(elippa)h
(and)g(T.)h(L.)f(Geers.)42 b(P)o(artitioned)23 b(analysis)g(for)h(coupled)e
(mec)o(hanical)250 768 y(systems.)31 b(College)20 b(of)g(Engineering)g(and)h
(Applied)e(Science,)g(Univ)o(ersit)o(y)e(of)k(Colorado,)250
828 y(Boulder,)15 b(CO)h(80309.)174 930 y([7])24 b(R.)19 b(W.)g(Ho)q(c)o
(kney)g(and)h(C.)g(R.)f(Jesshop)q(e.)32 b Fa(Par)n(al)r(lel)22
b(Coputers)p Fk(.)31 b(Adam)19 b(Hilger,)g(Bristol)250 990
y(and)e(Philadelphia,)e(2nd)h(edition,)g(1988.)174 1092 y([8])24
b(R.)16 b(L.)i(Meakin.)23 b(A)16 b(new)i(metho)q(d)e(for)i(establishing)f(in)
o(ter-grid)f(comm)o(unic)o(ation)f(among)250 1152 y(systems)k(of)i(o)o(v)o
(erset)e(grids.)35 b(American)18 b(Institute)i(of)g(Aeronautics)h(and)g
(Astronautics)250 1212 y(pap)q(er)c(91-1586,)h(June)e(1991.)174
1314 y([9])24 b(K.)e(C.)h(P)o(ark)h(and)f(C.)g(A.)g(F)l(elippa.)41
b(P)o(artitioned)23 b(analysis)g(of)h(coupled)e(systems.)41
b(In)250 1374 y(T.)18 b(Belytsc)o(hk)o(o)f(and)i(T.)f(J.)h(R.)f(Hughes,)h
(editors,)g Fa(Computational)h(Metho)n(ds)f(for)g(T)l(r)n(an-)250
1434 y(sient)d(A)o(nalysis)p Fk(,)f(c)o(hapter)f(3,)h(pages)g(157{219.)i
(Elsevier)d(Scienc)f(Publishers)h(B.V.,)f(North)250 1494 y(Holland,)i
(Amsterdam,)e(New)j(Y)l(ork,)f(and)i(Oxford,)f(1983.)149 1596
y([10])25 b(E.)14 b(Pramono)g(and)i(S.)e(K.)g(W)l(eeratunga.)19
b(Aero)q(elastic)13 b(computations)h(for)h(wings)g(through)250
1656 y(direct)27 b(coupling)h(on)h(distributed-mem)o(ory)d(mim)o(d)g
(parallel)h(computers.)56 b(W)l(ork)28 b(in)250 1716 y(progress)20
b(at)f(the)g(Applied)f(Researc)o(h)h(Branc)o(h,)g(NAS)f(System)g(Division,)h
(NASA)f(Ames)250 1777 y(Researc)o(h)d(Cen)o(ter,)g(Mo\013ett)i(Field,)d(CA)i
(94035.)149 1878 y([11])25 b(J.S.)13 b(Ry)o(an)g(and)h(S.)g(K.)f(W)l
(eeratunga.)k(P)o(arallel)c(computation)g(of)h(3-d)g(na)o(vier-stok)o(es)f
(\015o)o(w-)250 1939 y(\014eld)f(for)i(sup)q(ersonic)f(v)o(ehicles.)h
(American)d(Institute)i(of)g(Aeronautics)g(and)h(Astronautics)250
1999 y(pap)q(er)j(93-0064,)h(Jan)o(uary)f(1993.)149 2100 y([12])25
b(Thinking)c(Mac)o(hines)g(Corp)q(oration,)j(Cam)o(bridge,)d(MA.)36
b Fa(CM)22 b(F)l(ortr)n(an)g(Pr)n(o)n(gr)n(amming)250 2161
y(Guide)p Fk(,)16 b(v)o(ersion)f(1.0)i(edition,)e(Jan)o(uary)i(1991.)1024
2864 y(10)p eop
%%Trailer
end
userdict /end-hook known{end-hook}if
%%EOF

From owner-mpi-comm@CS.UTK.EDU  Sun Mar 28 16:01:54 1993
Received: from CS.UTK.EDU by surfer.EPM.ORNL.GOV (5.61/1.34)
	id AA16813; Sun, 28 Mar 93 16:01:54 -0500
Received: from localhost by CS.UTK.EDU with SMTP (5.61+IDA+UTK-930125/2.8s-UTK)
	id AA28455; Sun, 28 Mar 93 15:59:48 -0500
X-Resent-To: mpi-comm@CS.UTK.EDU ; Sun, 28 Mar 1993 15:59:47 EST
Errors-To: owner-mpi-comm@CS.UTK.EDU
Received: from [129.215.56.21] by CS.UTK.EDU with SMTP (5.61+IDA+UTK-930125/2.8s-UTK)
	id AA28447; Sun, 28 Mar 93 15:59:45 -0500
Date: Sun, 28 Mar 93 21:59:29 BST
Message-Id: <23593.9303282059@subnode.epcc.ed.ac.uk>
From: L J Clarke <lyndon@epcc.ed.ac.uk>
Subject: Re: Multidisciplinary Position Paper
To: barszcz@nas.nasa.gov (Eric Barszcz), mpi-comm@cs.utk.edu
In-Reply-To: Eric Barszcz's message of Fri, 26 Mar 93 16:40:19 -0800
Reply-To: lyndon@epcc.ed.ac.uk

Hi Eric

Thanks for mailing this. It's a good example of a "parallel module
graph" program.

Best Wishes
Lyndon

         /--------------------------------------------------------\
    e||) | Lyndon J Clarke    Edinburgh Parallel Computing Centre | e||) 
    c||c | Tel: 031 650 5021  Email: lyndon@epcc.edinburgh.ac.uk  | c||c 
         \--------------------------------------------------------/


From owner-mpi-comm@CS.UTK.EDU  Mon Mar 29 09:46:10 1993
Received: from CS.UTK.EDU by surfer.EPM.ORNL.GOV (5.61/1.34)
	id AA12851; Mon, 29 Mar 93 09:46:10 -0500
Received: from localhost by CS.UTK.EDU with SMTP (5.61+IDA+UTK-930125/2.8s-UTK)
	id AA22553; Mon, 29 Mar 93 09:43:12 -0500
X-Resent-To: mpi-comm@CS.UTK.EDU ; Mon, 29 Mar 1993 09:43:11 EST
Errors-To: owner-mpi-comm@CS.UTK.EDU
Received: from rios2.EPM.ORNL.GOV by CS.UTK.EDU with SMTP (5.61+IDA+UTK-930125/2.8s-UTK)
	id AA22526; Mon, 29 Mar 93 09:43:09 -0500
Received: by rios2.epm.ornl.gov (AIX 3.2/UCB 5.64/4.03)
          id AA16002; Mon, 29 Mar 1993 09:43:08 -0500
Date: Mon, 29 Mar 1993 09:43:08 -0500
From: walker@rios2.epm.ornl.gov (David Walker)
Message-Id: <9303291443.AA16002@rios2.epm.ornl.gov>
To: mpi-comm@cs.utk.edu
Subject: Revised agenda for MPI meeting


        Provisional Agenda for MPI Meeting, March 31-April 2, 1993

Wednesday
1:30-3:00   Intro to context sub-committee proposals - Skjellum (10 mins.)
            Proposal VII - Littlefield and Clarke present (30 mins.)
	    Discussion on VII - lead by Littlefield and Clarke (15 mins.)
	    Proposal I - Snir (30 mins.)
	    Discussion on I - lead by Snir (15 mins.)
	    Proposals III and VIII - Skjellum presents (30 mins.)
	    Discussion on III and VIII - lead by Skjellum and Sears (15 mins.)
	    Overall discussion, Recommendations, and Ranking poll (35 mins.)
3:30-6:00   Discussion of Snir, Gropp, Lusk point-to-point proposal (everyone)
            (Snir)
6:00-7:30   Unofficial dinner break
7:30-10:30  Break up for subcommittee meetings

Thursday
9:00-12:00  Continued discussion of Snir, Gropp, Lusk point-to-point proposal
	    (Snir)
            OR
            Discussion of Snir & Geist collection communication proposal
            (Otto)
12:00-1:30  Lunch (provided)
1:30-3:00   Discussion of Snir & Geist collection communication proposal
            (Otto)
3:00-6:00   Full group meeting for presentation of process topology
            subcommittee ideas and proposals.
            (Hempel)
6:00-8:00   Dinner (attendees pay, but hotel provides transport to area
                   restaurant)
8:00-10:00  Continued informal subcommittee meetings if necessary

Friday
9:00-11:00  Full group meeting with the intent of taking binding votes
            on point-to-point and collective communication proposals, or
            sending proposals back to subcommittees for revision.
            (Snir)
11:00-12:00 Full group meeting for defining timetable for producing MPI (or
            subset) by deadline in July.
            (Dongarra)

From owner-mpi-comm@CS.UTK.EDU  Mon Mar 29 18:14:27 1993
Received: from CS.UTK.EDU by surfer.EPM.ORNL.GOV (5.61/1.34)
	id AA27088; Mon, 29 Mar 93 18:14:27 -0500
Received: from localhost by CS.UTK.EDU with SMTP (5.61+IDA+UTK-930125/2.8s-UTK)
	id AA20945; Mon, 29 Mar 93 18:02:00 -0500
X-Resent-To: mpi-comm@CS.UTK.EDU ; Mon, 29 Mar 1993 18:01:59 EST
Errors-To: owner-mpi-comm@CS.UTK.EDU
Received: from fslg8.fsl.noaa.gov by CS.UTK.EDU with SMTP (5.61+IDA+UTK-930125/2.8s-UTK)
	id AA20937; Mon, 29 Mar 93 18:01:56 -0500
Received: by fslg8.fsl.noaa.gov (5.57/Ultrix3.0-C)
	id AA03153; Mon, 29 Mar 93 23:01:48 GMT
Received: by macaw.fsl.noaa.gov (4.1/SMI-4.1)
	id AA01225; Mon, 29 Mar 93 16:00:29 MST
Date: Mon, 29 Mar 93 16:00:29 MST
From: hender@macaw.fsl.noaa.gov (Tom Henderson)
Message-Id: <9303292300.AA01225@macaw.fsl.noaa.gov>
To: mpi-comm@cs.utk.edu
Subject: Resend of unofficial "opinion survey"


Hi everyone,

Some folks have requested that the unofficial "MPI Opinion Survey" be 
distributed again.  Here it is.  Please ignore if you don't need to see it 
again!  :-)

Tom


-----------------------------------------------------------------------------


Hi all,

Steve Huss-Lederman writes:

> I would like to propose that we have a meeting of all participants at
> the start of the next meeting to settle the issue of what MPI-1 will
> cover.  Several mail messages have expressed concern that we cannot
> conclude by June if we try to incorporate everything that everyone
> wants.  Since the scope and time frame will effect most of the other
> discussions I think it would be best to begin with this.  My only
> concern is that it will take too long to decide the global picture.
> I would hope it could be done in 1-2 hours and help to refocus the
> group.

I fully support this idea.  Here's a proposal for an opinion survey that could 
shorten and focus the discussion.  This proposal originated with Jon Flower 
and has had input from Ian Glendinning, Steve Huss-Lederman, Leslie Hart, 
myself, and others.  If you think this is a good idea, please complete the 
survey and return to me at:  

    hender@fsl.noaa.gov

If you think this is a bad idea, please say so!  We will collect responses and 
distribute a summary via email before the next meeting if there is sufficient 
interest.  

Tom Henderson



-----------------------------------------------------------------------------


                     MPI PRIORITIES OPINION SURVEY


Several MPI committee members have expressed concern about the current and 
future directions of MPI.  The MPI committee began discussion using an 
existing document (Dongarra et al) as a starting point.  This document 
contains background rationale and a statement of direction for the MPI 
standardization effort.  Since these issues were consistent with the original 
MPI proposal, they have not recently been discussed in detail by the MPIF.  

The current MPI proposals are very different from the original MPI document.  
As a result, we feel that the original rationale and direction need to be 
re-examined.  In particular we need to prioritize and limit the issues that 
MPI will try to resolve so that 

    o the initial MPI standard document ("MPI-1") is delivered in a timely 
      fashion 
and 
    o the functions that it defines can (and will) be implemented
      on major platforms within a reasonable time frame.

To get discussion of these issues started, we propose an informal, email 
"opinion survey".  The objective of the survey is to find out which MPI 
features are most important.  High-priority features would be included in 
MPI-1.  Lower-priority features might be deferred to a later version of MPI.  
Some features might never be included.  The compiled results of this survey 
could be used as a basis for discussion at the next MPI meeting.  

***
This survey is in no way binding and is a completely unofficial "straw
poll" arranged by its authors for their own personal information.  It is not 
intended to distract attention from the current proposals.  Any data collected 
will be made available to the group at large if requested.  
***

Following is a ballot containing possible MPI features and goals.  Please rate 
each item (or sub-item) using the following rating scheme:  

  0        This feature should not appear in any version of MPI ever.  
  1-2      MPIF should consider including this feature in some future version 
           of MPI (after MPI-1).  
  3-4      This feature should be included as an Annex to MPI-1 for possible 
           inclusion in a future version of MPI.  
  5-6      This feature should be included as an Annex to MPI-1 for definite 
           inclusion in a future version of MPI.  
  7-10     This feature should be included in MPI-1.  

In this context an "Annex" is a part of the standard document that will not
be required by a conforming implementation of MPI.  Rather it should be
taken as a recommendation by the MPIF to vendors for the way in which
particular features should be implemented, if they are implemented at all.
This way features that are not usefully implementable on particular hardware
can be eliminated while machines that do support these features do so in
a portable manner.

When replying to the survey, please use the response form attached to the end 
of this message.  (This will make compilation of the results a lot less 
painful!)  :-)




          +-------------------------------------------------------+
          | POSSIBLE FEATURES FOR INITIAL AND FUTURE MPI VERSIONS |
          +-------------------------------------------------------+



Ordering is for convenience only.  This list is not meant to suggest any 
priority.  


    GENERAL FEATURES

1)  Routines for static process creation:
    A) Same program in every node.  
    B) Host-node programming model in which there is one "special node".  
    C) Static model but with potentially different programs in different groups 
       of nodes.
    D) Static model with a way to create more than one process per 
       processor. (Heavy duty processes, not threads).

2)  Routines for identification of statically created processes.
  
3)  Associated environmental inquiry routines.  

4)  Some way of avoiding message tag conflicts between independently 
    developed libraries and user code (contexts).  

5)  Heterogeneous communication.  
    A)  All communication routines should support heterogeneous 
        communication.  
    B)  A special set of communication routines should support heterogeneous 
        communication.  

6)  Creation/destruction of "static" groups (processes cannot join/leave an 
    existing group).  Groups are used to limit the scope of collective 
    operations.  
    A)  No logical process topology is associated with a group.  
    B)  Grid/toroidal process topology is associated with a group at the time 
        the group is created.  (The default "ALL" group has a default 
        topology.)  
    C)  General graph topology is also supported.  
    D)  Provide access to all relevant information (via topological 
        environmental inquiry routines) to allow users to define custom 
        topologies.  

7)  Support for communication between processes in different groups without 
    reference to the "ALL" group.  

8)  Dynamic groups (processes can join/leave an existing group while the total 
    number of processes remains static.)  

9)  Dynamic process creation and identification.  

10) Additional environmental inquiry and "setting" routines for performance 
    optimization.  
    A)  Inquire/suggest system buffering resource allocation.  
    B)  Inquire relative node performance.  
    C)  Inquire relative interconnect performance.  

11) Termination of programs.
    A)  Kill all others nodes.
    B)  Wait for all the other nodes to complete.
    C)  Automatically de-allocate resources.

12) Standard organization.
    A)  "Multi-level" organization of routines (users may use simple features 
        without having to understand all of MPI).  
    B)  Simple "core" standard with (optional) Annexes.
    C)  Simple "core" standard without Annexes.
    D)  Should an MPI "subset" be defined that can be quickly implemented as 
        a layer on top of existing systems?  (This question was inspired by 
        section 1.5 of Bill and Rusty's "A Test Implementation of the MPI 
        Draft Message-Passing Standard", ANL-92/47.)  

13) Should there be future version(s) of MPI (MPI-2, etc.) (yes/no)?  



    POINT-TO-POINT COMMUNICATION

14) Blocking send and receive.  
    A)  Contiguous data.  
    B)  Strided data.  
    C)  Buffer-descriptor (multiple data locations, multiple data types).  

15) Non-blocking receive.  
    A)  Contiguous data.  
    B)  Strided data.  
    C)  Buffer-descriptor (multiple data locations, multiple data types).  
    D)  Check for completion (status()).  
    E)  Wait for completion (wait()).  
    F)  Cancel operation (cancel()).  

16) Non-blocking send.  
    A)  Contiguous data.  
    B)  Strided data.  
    C)  Buffer-descriptor (multiple data locations, multiple data types).  
    D)  Check for completion (status()).  
    E)  Wait for completion (wait()).  
    F)  Cancel operation (cancel()).  

17) Low-level functionality (from Marc Snir's proposal) visible to users.  
    A)  Initialize.  
    B)  Start.  
    C)  Complete.  
    D)  Free.  

18) "SECURE" versions of send and receive as proposed by Lyndon Clarke on 
    3/3/93.  (Correct programs using SECURE routines are guaranteed to work 
    regardless of system buffering resources.)  

19) Ready-send.  

20) Ready-receive.  

21) Message handlers (a la iNTEL hrecv, TMC active messages, Express 
    exhandle).  
    A)  Simple definition sufficient to support anticipated MPI 
        requirements and make a self-consistent system.  
    B)  More advanced routines for remote procedure calls, etc...  

22) Additional point-to-point primitives.
    A)  Exchange between two processors.
    B)  "Shift-exchange":  read from one, send to another (superset of "A").
    C)  Contiguous data.  
    D)  Strided data.  
    E)  Buffer-descriptor (multiple data locations, multiple data types).  
    F)  Non-blocking versions?
    G)  Check for completion (status()).  
    H)  Wait for completion (wait()).  
    I)  Cancel operation (cancel()).  



    COLLECTIVE OPERATIONS

23) Blocking collective communication.  
    A)  Broadcast.  
    B)  Concatenate.  
    C)  Barrier.  
    D)  Sum.  
    E)  Extrema (max, min).
    F)  Average.  
    G)  Sum of squared differences (error).  
    H)  Should strided data be allowed for these operations?  
    I)  Should buffer-descriptor be allowed for these operations?  

24) "User-defined" blocking collective operations (Express "excombine()"
    style).  

25) Non-blocking collective communication, collective operations, and 
    user-defined operations (if this is desired, detailed ranking can be done 
    later).  

26) If any non-blocking collective operations are supported, what should 
    completion/cancel options be?  
    A)  Check for completion (status()).  
    B)  Wait for completion (wait()).  
    C)  "Multiple cancel" operation (cancel()).  

27) Should status()/wait()/cancel() syntax be consistent across all types of 
    non-blocking operations?  



    OTHER COMMUNICATION OPERATIONS

28) Probe (and associated "precv()" routines, if necessary).  



    I/O

29) Standard I/O is supported in the standard fashion for the language on one 
    process (no file I/O).  This process can be identified by an environmental 
    inquiry routine.  (This is the current proposal.)  

30) Serial I/O is supported in the standard fashion for the language on one 
    process.  This process can be identified by an environmental inquiry 
    routine.  (Rik Littlefield's proposal.)  

31) Multiplexed I/O similar to that currently provided in systems such as
    CMMD (TMC), VERTEX (nCUBE) and Express (ParaSoft).  Basically a way of
    defining the behavior of multi-node I/O statements which interact
    with a sequential device.  No special considerations for parallel I/O
    channels.

32) Blocking parallel I/O.  Intended to take advantage of parallel I/O
    channels, where available.

33) Non-blocking parallel I/O.  Intended to take advantage of parallel
    I/O channels, where available.



LANGUAGE BINDINGS

34) Ada

35) C

36) C++

37) Fortran 77

38) Fortran 90

39) Other



IMPLEMENTATION PERIOD 

There will be a delay between the generation of the standard and its 
implementation on various platforms.  If this delay is too long users will 
continue to rely more and more heavily on vendor routines and specialized 
calls and MPI will become less and less attractive, particularly if new 
technology such as Fortran 90/HPF becomes effective.

40) What is the maximum delay that you think MPI can stand and 
    still succeed (please feel free to comment if you wish)?



----------------------------------------------------------------------------


SURVEY RESPONSE FORM


1)  A)  
    B)  
    C)  
    D)  

2)  

3)  

4)  

5)  A)  
    B)  

6)  A)  
    B)  
    C)  
    D)  

7)  

8)  

9)  

10) A)  
    B)  
    C)  

11) A)  
    B)  
    C)  

12) A)  
    B)  
    C)  
    D)  

13) (yes/no)

14) A)  
    B)  
    C)  

15) A)  
    B)  
    C)  
    D)  
    E)  
    F)  

16) A)  
    B)  
    C)  
    D)  
    E)  
    F)  

17) A)  
    B)  
    C)  
    D)  

18) 

19) 

20) 

21) A)  
    B)  

22) A)  
    B)  
    C)  
    D)  
    E)  
    F)  
    G)  
    H)  
    I)  

23) A)  
    B)  
    C)  
    D)  
    E)  
    F)  
    G)  
    H)  
    I)  

24) 

25) 

26) A)  
    B)  
    C)  

27) 

28) 

29) 

30) 

31) 

32) 

33) 

34) 

35) 

36) 

37) 

38) 

39) 

40) (free form):  

Comments?  
From owner-mpi-comm@CS.UTK.EDU  Tue Mar 30 00:51:17 1993
Received: from CS.UTK.EDU by surfer.EPM.ORNL.GOV (5.61/1.34)
	id AA02775; Tue, 30 Mar 93 00:51:17 -0500
Received: from localhost by CS.UTK.EDU with SMTP (5.61+IDA+UTK-930125/2.8s-UTK)
	id AA06540; Tue, 30 Mar 93 00:49:03 -0500
X-Resent-To: mpi-comm@CS.UTK.EDU ; Tue, 30 Mar 1993 00:49:02 EST
Errors-To: owner-mpi-comm@CS.UTK.EDU
Received: from Mail.Think.COM by CS.UTK.EDU with SMTP (5.61+IDA+UTK-930125/2.8s-UTK)
	id AA06532; Tue, 30 Mar 93 00:49:01 -0500
Received: from Basselope.Think.COM by mail.think.com; Tue, 30 Mar 93 00:48:58 -0500
From: Alan Mainwaring <amm@Think.COM>
Received: by basselope.think.com (4.1/Think-1.2)
	id AA15508; Tue, 30 Mar 93 00:48:57 EST
Date: Tue, 30 Mar 93 00:48:57 EST
Message-Id: <9303300548.AA15508@basselope.think.com>
To: mpi-comm@cs.utk.edu
In-Reply-To: <9303291443.AA16002@rios2.epm.ornl.gov>, "David Walker's message of Mon, 29 Mar 1993 09:43:08 -0500"
Subject: Revised agenda for MPI meeting

   Date: Mon, 29 Mar 1993 09:43:08 -0500
   From: walker@rios2.epm.ornl.gov (David Walker)


	   Provisional Agenda for MPI Meeting, March 31-April 2, 1993

   Wednesday
   1:30-3:00   Intro to context sub-committee proposals - Skjellum (10 mins.)
	       Proposal VII - Littlefield and Clarke present (30 mins.)
	       Discussion on VII - lead by Littlefield and Clarke (15 mins.)
	       Proposal I - Snir (30 mins.)
	       Discussion on I - lead by Snir (15 mins.)
	       Proposals III and VIII - Skjellum presents (30 mins.)
	       Discussion on III and VIII - lead by Skjellum and Sears (15 mins.)
	       Overall discussion, Recommendations, and Ranking poll (35 mins.)
   3:30-6:00   Discussion of Snir, Gropp, Lusk point-to-point proposal (everyone)
	       (Snir)
   6:00-7:30   Unofficial dinner break
   7:30-10:30  Break up for subcommittee meetings

   Thursday
   9:00-12:00  Continued discussion of Snir, Gropp, Lusk point-to-point proposal
	       (Snir)
	       OR
	       Discussion of Snir & Geist collection communication proposal
	       (Otto)
   12:00-1:30  Lunch (provided)
   1:30-3:00   Discussion of Snir & Geist collection communication proposal
	       (Otto)
   3:00-6:00   Full group meeting for presentation of process topology
	       subcommittee ideas and proposals.
	       (Hempel)
   6:00-8:00   Dinner (attendees pay, but hotel provides transport to area
		      restaurant)
   8:00-10:00  Continued informal subcommittee meetings if necessary

   Friday
   9:00-11:00  Full group meeting with the intent of taking binding votes
	       on point-to-point and collective communication proposals, or
	       sending proposals back to subcommittees for revision.
	       (Snir)
   11:00-12:00 Full group meeting for defining timetable for producing MPI (or
	       subset) by deadline in July.
	       (Dongarra)


After reviewing this schedule, we believe that the last item should be
moved so that it is the first order of business at this meeting.

If it is a goal for vendors to quickly implement and release MPI, then, it
is imperative that we understand what functionality must be included in MPI1,
and what functionality may be deferred to subsequent versions.  Without this
framework we seriously doubt that this process will yield a specification,
against which vendors can implement production software this year.

Respectfully,

Alan and Moose

From owner-mpi-comm@CS.UTK.EDU  Tue Mar 30 01:16:20 1993
Received: from CS.UTK.EDU by surfer.EPM.ORNL.GOV (5.61/1.34)
	id AA03507; Tue, 30 Mar 93 01:16:20 -0500
Received: from localhost by CS.UTK.EDU with SMTP (5.61+IDA+UTK-930125/2.8s-UTK)
	id AA07612; Tue, 30 Mar 93 01:15:09 -0500
X-Resent-To: mpi-comm@CS.UTK.EDU ; Tue, 30 Mar 1993 01:15:08 EST
Errors-To: owner-mpi-comm@CS.UTK.EDU
Received: from ssd.intel.com by CS.UTK.EDU with SMTP (5.61+IDA+UTK-930125/2.8s-UTK)
	id AA07555; Tue, 30 Mar 93 01:15:05 -0500
Received: from tualatin.SSD.intel.com by SSD.intel.com (4.1/SMI-4.1)
	id AA11172; Mon, 29 Mar 93 22:15:02 PST
Date: Mon, 29 Mar 93 22:15:02 PST
Message-Id: <9303300615.AA11172@SSD.intel.com>
Received: by tualatin.SSD.intel.com (4.1/SMI-4.0)
	id AA15164; Mon, 29 Mar 93 22:14:59 PST
From: Bob Knighten <knighten@SSD.intel.com>
Sender: knighten@SSD.intel.com
To: mpi-comm@cs.utk.edu
Subject: Re: Revised agenda for MPI meeting
In-Reply-To: <9303300548.AA15508@basselope.think.com>
References: <9303291443.AA16002@rios2.epm.ornl.gov>
	<9303300548.AA15508@basselope.think.com>
Reply-To: knighten@SSD.intel.com (Bob Knighten)

Alan Mainwaring writes:
  >    Date: Mon, 29 Mar 1993 09:43:08 -0500
  >    From: walker@rios2.epm.ornl.gov (David Walker)
  > 
  > 
  > 	   Provisional Agenda for MPI Meeting, March 31-April 2, 1993
  > 
  >    . . .
  > 
  > 
  > After reviewing this schedule, we believe that the last item should be
  > moved so that it is the first order of business at this meeting.
  > 
  > If it is a goal for vendors to quickly implement and release MPI, then, it
  > is imperative that we understand what functionality must be included in MPI1,
  > and what functionality may be deferred to subsequent versions.  Without this
  > framework we seriously doubt that this process will yield a specification,
  > against which vendors can implement production software this year.
  > 
  > Respectfully,
  > 
  > Alan and Moose
  > 

I strongly support this re-ordering of the agenda.

-- Bob

Robert L. Knighten	             | knighten@ssd.intel.com
Intel Supercomputer Systems Division | 
15201 N.W. Greenbrier Pkwy.	     | (503) 629-4315
Beaverton, Oregon  97006	     | (503) 629-9147 [FAX]
From owner-mpi-comm@CS.UTK.EDU  Tue Mar 30 10:35:53 1993
Received: from CS.UTK.EDU by surfer.EPM.ORNL.GOV (5.61/1.34)
	id AA12387; Tue, 30 Mar 93 10:35:53 -0500
Received: from localhost by CS.UTK.EDU with SMTP (5.61+IDA+UTK-930125/2.8s-UTK)
	id AA08221; Tue, 30 Mar 93 10:33:28 -0500
X-Resent-To: mpi-comm@CS.UTK.EDU ; Tue, 30 Mar 1993 10:33:28 EST
Errors-To: owner-mpi-comm@CS.UTK.EDU
Received: from super.super.org by CS.UTK.EDU with SMTP (5.61+IDA+UTK-930125/2.8s-UTK)
	id AA08206; Tue, 30 Mar 93 10:33:26 -0500
Received: from b125.super.org by super.super.org (4.1/SMI-4.1)
	id AA01022; Tue, 30 Mar 93 10:33:20 EST
Received: by b125.super.org (4.1/SMI-4.1)
	id AA03597; Tue, 30 Mar 93 10:33:19 EST
Date: Tue, 30 Mar 93 10:33:19 EST
From: lederman@b125.super.org (Steve Huss-Lederman)
Message-Id: <9303301533.AA03597@b125.super.org>
To: mpi-comm@cs.utk.edu
Subject: Re: Revised agenda for MPI meeting

In response to the recent message by Alan and Moose, I want to reiterate
that I support an early discussion of the goals and timetable for MPI.
This will allow the general framework to be set when we decide on how
to deal with specific proposals.

Given the fact that some of the MPI members are already on travel to
the meeting, I suspect that this change in agenda would have to be
dealt with at the start of the meeting tomorrow.

Steve
From owner-mpi-comm@CS.UTK.EDU  Tue Mar 30 10:42:09 1993
Received: from CS.UTK.EDU by surfer.EPM.ORNL.GOV (5.61/1.34)
	id AA12524; Tue, 30 Mar 93 10:42:09 -0500
Received: from localhost by CS.UTK.EDU with SMTP (5.61+IDA+UTK-930125/2.8s-UTK)
	id AA09326; Tue, 30 Mar 93 10:40:32 -0500
X-Resent-To: mpi-comm@CS.UTK.EDU ; Tue, 30 Mar 1993 10:40:30 EST
Errors-To: owner-mpi-comm@CS.UTK.EDU
Received: from cs.sandia.gov by CS.UTK.EDU with SMTP (5.61+IDA+UTK-930125/2.8s-UTK)
	id AA09303; Tue, 30 Mar 93 10:40:28 -0500
Received: from panther.cs.sandia.gov by cs.sandia.gov (4.1/SMI-4.1)
	id AA19731; Tue, 30 Mar 93 08:40:24 MST
Received: by panther.cs.sandia.gov (Smail3.1.28.1 #1)
	id m0ndiQJ-0016bbC; Tue, 30 Mar 93 08:40 MST
Message-Id: <m0ndiQJ-0016bbC@panther.cs.sandia.gov>
Date: Tue, 30 Mar 93 08:40 MST
From: srwheat@cs.sandia.gov (Stephen R. Wheat)
To: mpi-comm@cs.utk.edu
Subject: Re: Revised agenda for MPI meeting

I must disagree with the suggestion to change the schedule.  Without any
agreement to even basic, fundamental concepts how are we to decide what will
go into MPI1 and what won't.  I do indeed understand the desire to know
the scope of MPI1, but I really believe the scope depends on an agreed
method to achieve contexts, groups, etc.  It is those definitions that will
define how much work a given set of MPI routines will require.

Stephen
From owner-mpi-comm@CS.UTK.EDU  Tue Mar 30 10:48:58 1993
Received: from CS.UTK.EDU by surfer.EPM.ORNL.GOV (5.61/1.34)
	id AA12768; Tue, 30 Mar 93 10:48:58 -0500
Received: from localhost by CS.UTK.EDU with SMTP (5.61+IDA+UTK-930125/2.8s-UTK)
	id AA09919; Tue, 30 Mar 93 10:47:25 -0500
X-Resent-To: mpi-comm@CS.UTK.EDU ; Tue, 30 Mar 1993 10:47:23 EST
Errors-To: owner-mpi-comm@CS.UTK.EDU
Received: from rios2.EPM.ORNL.GOV by CS.UTK.EDU with SMTP (5.61+IDA+UTK-930125/2.8s-UTK)
	id AA09910; Tue, 30 Mar 93 10:47:23 -0500
Received: by rios2.epm.ornl.gov (AIX 3.2/UCB 5.64/4.03)
          id AA19794; Tue, 30 Mar 1993 10:47:22 -0500
Date: Tue, 30 Mar 1993 10:47:22 -0500
From: walker@rios2.epm.ornl.gov (David Walker)
Message-Id: <9303301547.AA19794@rios2.epm.ornl.gov>
To: mpi-comm@cs.utk.edu
Subject: Revised agenda for MPI meeting


I don't think it's a good idea to change the agenda. There seems little
point on talking aboutwhat should be in MPI until everyone knows what
has been proposed, particularly for contexts. Setting a timetable will be
very difficulty if we can't largely agree on point-to-point, collective
communication, and contexts, which is why these topics come first.

David
From owner-mpi-comm@CS.UTK.EDU  Tue Mar 30 10:51:19 1993
Received: from CS.UTK.EDU by surfer.EPM.ORNL.GOV (5.61/1.34)
	id AA12832; Tue, 30 Mar 93 10:51:19 -0500
Received: from localhost by CS.UTK.EDU with SMTP (5.61+IDA+UTK-930125/2.8s-UTK)
	id AA10133; Tue, 30 Mar 93 10:49:36 -0500
X-Resent-To: mpi-comm@CS.UTK.EDU ; Tue, 30 Mar 1993 10:49:34 EST
Errors-To: owner-mpi-comm@CS.UTK.EDU
Received: from fslg8.fsl.noaa.gov by CS.UTK.EDU with SMTP (5.61+IDA+UTK-930125/2.8s-UTK)
	id AA10095; Tue, 30 Mar 93 10:49:32 -0500
Received: by fslg8.fsl.noaa.gov (5.57/Ultrix3.0-C)
	id AB04355; Tue, 30 Mar 93 15:49:27 GMT
Received: by macaw.fsl.noaa.gov (4.1/SMI-4.1)
	id AA02302; Tue, 30 Mar 93 08:48:08 MST
Date: Tue, 30 Mar 93 08:48:08 MST
From: hender@macaw.fsl.noaa.gov (Tom Henderson)
Message-Id: <9303301548.AA02302@macaw.fsl.noaa.gov>
To: mpi-comm@cs.utk.edu
Subject: Re:  Revised agenda for MPI meeting


Alan Mainwaring writes,

> After reviewing this schedule, we believe that the last item should be
> moved so that it is the first order of business at this meeting.
> 
> If it is a goal for vendors to quickly implement and release MPI, then, it
> is imperative that we understand what functionality must be included in MPI1,
> and what functionality may be deferred to subsequent versions.  Without this
> framework we seriously doubt that this process will yield a specification,
> against which vendors can implement production software this year.
> 
> Respectfully,
> 
> Alan and Moose

I agree.  It would be very helpful if vendors would speak frankly about 
how long implementation might take during this discussion (wishful 
thinking?  :-).  

Tom Henderson
NOAA Forecast Systems Laboratory
hender@fsl.noaa.gov

From owner-mpi-comm@CS.UTK.EDU  Tue Mar 30 11:45:20 1993
Received: from CS.UTK.EDU by surfer.EPM.ORNL.GOV (5.61/1.34)
	id AA14240; Tue, 30 Mar 93 11:45:20 -0500
Received: from localhost by CS.UTK.EDU with SMTP (5.61+IDA+UTK-930125/2.8s-UTK)
	id AA12714; Tue, 30 Mar 93 11:43:42 -0500
X-Resent-To: mpi-comm@CS.UTK.EDU ; Tue, 30 Mar 1993 11:43:40 EST
Errors-To: owner-mpi-comm@CS.UTK.EDU
Received: from fslg8.fsl.noaa.gov by CS.UTK.EDU with SMTP (5.61+IDA+UTK-930125/2.8s-UTK)
	id AA12705; Tue, 30 Mar 93 11:43:38 -0500
Received: by fslg8.fsl.noaa.gov (5.57/Ultrix3.0-C)
	id AA04547; Tue, 30 Mar 93 16:43:34 GMT
Received: by nipmuc.fsl.noaa.gov (4.1/SMI-4.1)
	id AA08559; Tue, 30 Mar 93 09:46:14 MST
Date: Tue, 30 Mar 93 09:46:14 MST
From: hart@nipmuc.fsl.noaa.gov (Leslie Hart)
Message-Id: <9303301646.AA08559@nipmuc.fsl.noaa.gov>
To: mpi-comm@cs.utk.edu
Subject: Re: Revised agenda for MPI meeting

I strongly agree with Steve (see below) on both points.  I think that we need
to discuss MPI priorities early at the meeting (definitely not the 
last agenda item!).  I agree also since it is likely that a number of
people are already traveling, the agenda itself should be the first 
agenda item.

Regards,
Leslie Hart (hart@fsl.noaa.gov)

----- Begin Included Message -----

From: lederman@b125.super.org (Steve Huss-Lederman)

In response to the recent message by Alan and Moose, I want to reiterate
that I support an early discussion of the goals and timetable for MPI.
This will allow the general framework to be set when we decide on how
to deal with specific proposals.

Given the fact that some of the MPI members are already on travel to
the meeting, I suspect that this change in agenda would have to be
dealt with at the start of the meeting tomorrow.

Steve


----- End Included Message -----

From owner-mpi-comm@CS.UTK.EDU  Tue Mar 30 13:55:34 1993
Received: from CS.UTK.EDU by surfer.EPM.ORNL.GOV (5.61/1.34)
	id AA17414; Tue, 30 Mar 93 13:55:34 -0500
Received: from localhost by CS.UTK.EDU with SMTP (5.61+IDA+UTK-930125/2.8s-UTK)
	id AA19024; Tue, 30 Mar 93 13:53:52 -0500
X-Resent-To: mpi-comm@CS.UTK.EDU ; Tue, 30 Mar 1993 13:53:51 EST
Errors-To: owner-mpi-comm@CS.UTK.EDU
Received: from Aurora.CS.MsState.Edu by CS.UTK.EDU with SMTP (5.61+IDA+UTK-930125/2.8s-UTK)
	id AA19016; Tue, 30 Mar 93 13:53:50 -0500
Received:  by Aurora.CS.MsState.Edu (4.1/6.0s-FWP);
	   id AA14792; Tue, 30 Mar 93 12:43:16 CST
Date: Tue, 30 Mar 93 12:43:16 CST
From: Tony Skjellum <tony@Aurora.CS.MsState.Edu>
Message-Id: <9303301843.AA14792@Aurora.CS.MsState.Edu>
To: amm@Think.COM, mpi-comm@cs.utk.edu
Subject: Re:  Revised agenda for MPI meeting

I have also asked David to make this change.  I repeat that this
step is important, and I would not mind being delayed in my context
group's presentations, to make room for said discussion.  Please note,
however, contexts must finish by noon on Thursday, if the agenda is
changed, because I have to leave (unexpectedly) at 1pm on Thursday.

.	.	.	.	.	.	.	.	.      .
"There is no lifeguard at the gene pool." - C. H. Baldwin
Anthony Skjellum, MSU/ERC, (601)325-8435; FAX: 325-8997; tony@cs.msstate.edu

From owner-mpi-comm@CS.UTK.EDU  Tue Mar 30 16:15:17 1993
Received: from CS.UTK.EDU by surfer.EPM.ORNL.GOV (5.61/1.34)
	id AA20542; Tue, 30 Mar 93 16:15:17 -0500
Received: from localhost by CS.UTK.EDU with SMTP (5.61+IDA+UTK-930125/2.8s-UTK)
	id AA26319; Tue, 30 Mar 93 16:13:22 -0500
X-Resent-To: mpi-comm@CS.UTK.EDU ; Tue, 30 Mar 1993 16:13:20 EST
Errors-To: owner-mpi-comm@CS.UTK.EDU
Received: from cs.sandia.gov by CS.UTK.EDU with SMTP (5.61+IDA+UTK-930125/2.8s-UTK)
	id AA26310; Tue, 30 Mar 93 16:13:19 -0500
Received: from panther.cs.sandia.gov by cs.sandia.gov (4.1/SMI-4.1)
	id AA27775; Tue, 30 Mar 93 14:13:17 MST
Received: by panther.cs.sandia.gov (Smail3.1.28.1 #1)
	id m0ndncS-0016bbC; Tue, 30 Mar 93 14:13 MST
Message-Id: <m0ndncS-0016bbC@panther.cs.sandia.gov>
Date: Tue, 30 Mar 93 14:13 MST
From: srwheat@cs.sandia.gov (Stephen R. Wheat)
To: mpi-comm@cs.utk.edu
Subject: Re:  Revised agenda for MPI meeting

I too have other pressing matters that were neatly integrated with the original
schedule.  I must leave Wed at 4pm, to go elsewhere; I will be back Thursday
night.
 
I have used the agenda for its purpose, to make plans about.  These plans are
worthless if I cannot be at the context discussion.
 
I know this is my own problem for using the agenda for the purposes of what an
agenda is for.
 
Furthermore, I repeat that I believe it to be fruitless to discuss the MPI1
contents without agreement on context and group.

Stephen
From owner-mpi-comm@CS.UTK.EDU  Tue Apr  6 10:39:59 1993
Received: from CS.UTK.EDU by surfer.EPM.ORNL.GOV (5.61/1.34)
	id AA18806; Tue, 6 Apr 93 10:39:59 -0400
Received: from localhost by CS.UTK.EDU with SMTP (5.61+IDA+UTK-930125/2.8s-UTK)
	id AA23928; Tue, 6 Apr 93 10:38:00 -0400
X-Resent-To: mpi-comm@CS.UTK.EDU ; Tue, 6 Apr 1993 10:37:59 EDT
Errors-To: owner-mpi-comm@CS.UTK.EDU
Received: from super.super.org by CS.UTK.EDU with SMTP (5.61+IDA+UTK-930125/2.8s-UTK)
	id AA23920; Tue, 6 Apr 93 10:37:58 -0400
Received: from b125.super.org by super.super.org (4.1/SMI-4.1)
	id AA28082; Tue, 6 Apr 93 10:37:56 EDT
Received: by b125.super.org (4.1/SMI-4.1)
	id AA06018; Tue, 6 Apr 93 10:37:56 EDT
Date: Tue, 6 Apr 93 10:37:56 EDT
From: lederman@b125.super.org (Steve Huss-Lederman)
Message-Id: <9304061437.AA06018@b125.super.org>
To: mpi-comm@cs.utk.edu
Subject: subset subcommittee

Hello MPIers,

At the last MPI meeting, a group met to discuss the possibility of
creating a recommended subset of MPI for initial implementation.  The
idea was presented to the whole group and there were no objections.  I
have volunteered to coordinate this effort.

At the current time I am seeking input to the process and people
interested in joining/monitoring this new subcommittee (subset
subcommittee for lack of a better name).  Send me e-mail
(lederman@super.org) to sign up (and suggest a better name :-).  At
the end of this week I will send all the names of people to David to
create a new mail alias.  When it is formed you will receive an
initial message.  You can, of course, join at a later time.

Steve
From owner-mpi-comm@CS.UTK.EDU  Tue Apr  6 13:30:00 1993
Received: from CS.UTK.EDU by surfer.EPM.ORNL.GOV (5.61/1.34)
	id AA22321; Tue, 6 Apr 93 13:30:00 -0400
Received: from localhost by CS.UTK.EDU with SMTP (5.61+IDA+UTK-930125/2.8s-UTK)
	id AA02738; Tue, 6 Apr 93 13:28:41 -0400
X-Resent-To: mpi-comm@CS.UTK.EDU ; Tue, 6 Apr 1993 13:28:40 EDT
Errors-To: owner-mpi-comm@CS.UTK.EDU
Received: from daedalus.epcc.ed.ac.uk by CS.UTK.EDU with SMTP (5.61+IDA+UTK-930125/2.8s-UTK)
	id AA02729; Tue, 6 Apr 93 13:28:38 -0400
Date: Tue, 6 Apr 93 18:28:33 BST
Message-Id: <754.9304061728@subnode.epcc.ed.ac.uk>
From: L J Clarke <lyndon@epcc.ed.ac.uk>
Subject: interrupt driven 
To: mpi-comm@cs.utk.edu
Reply-To: lyndon@epcc.ed.ac.uk
Cc: mpi-pt2pt@cs.utk.edu

Dear MPI Colleagues

We have, reasonably in my opinion, decided not to provide interrupt
driven receive/send (as in Intel hrecv/hsend) in MPI, or active
messages. 

I have heard, can't recall from whom, that this carries the consequence
that we should not define any feature of MPI which asks for the
implementor of MPI to make use of interrupt driven receives, or active
messages. This seems to me to be a bogus argument.

In my mind the primary reason for not providing hrecv/hsend type
facilities is that it is very difficult to standardise these facilities
across different operating systems, particularly in terms of what the
handler procedure is and is not allowed to do (e.g., can it do I/O, can
it use MPI, ...).  It seems to me clear that on many (all) machines of
interest the system itself will be making use of similar facilities. 
Who would write MPI for CM-5 without using active messages? It seems to
me that for example non blocking communications really do ask for use of
interrupt/active messages. 

Is there agreement, disagreement, or what on this point? Please do let
me know. 

Best Wishes
Lyndon

         /--------------------------------------------------------\
    e||) | Lyndon J Clarke    Edinburgh Parallel Computing Centre | e||) 
    c||c | Tel: 031 650 5021  Email: lyndon@epcc.edinburgh.ac.uk  | c||c 
         \--------------------------------------------------------/


From owner-mpi-comm@CS.UTK.EDU  Wed Apr  7 13:50:56 1993
Received: from CS.UTK.EDU by surfer.EPM.ORNL.GOV (5.61/1.34)
	id AA18878; Wed, 7 Apr 93 13:50:56 -0400
Received: from localhost by CS.UTK.EDU with SMTP (5.61+IDA+UTK-930125/2.8s-UTK)
	id AA15424; Wed, 7 Apr 93 13:49:23 -0400
X-Resent-To: mpi-comm@CS.UTK.EDU ; Wed, 7 Apr 1993 13:49:22 EDT
Errors-To: owner-mpi-comm@CS.UTK.EDU
Received: from pnlg.pnl.gov by CS.UTK.EDU with SMTP (5.61+IDA+UTK-930125/2.8s-UTK)
	id AA15367; Wed, 7 Apr 93 13:48:34 -0400
Received: from carbon.pnl.gov (130.20.188.38) by pnlg.pnl.gov; Wed, 7 Apr 93
 10:48 PDT
Received: from sodium.pnl.gov by carbon.pnl.gov (4.1/SMI-4.1) id AA06918; Wed,
 7 Apr 93 10:46:30 PDT
Received: by sodium.pnl.gov (4.1/SMI-4.0) id AA17058; Wed, 7 Apr 93 10:46:26 PDT
Date: Wed, 7 Apr 93 10:46:26 PDT
From: rj_littlefield@pnlg.pnl.gov
Subject: Re:  interrupt driven
To: lyndon@epcc.ed.ac.uk, mpi-comm@cs.utk.edu
Cc: d39135@carbon.pnl.gov, mpi-pt2pt@cs.utk.edu
Message-Id: <9304071746.AA17058@sodium.pnl.gov>
X-Envelope-To: mpi-pt2pt@cs.utk.edu, mpi-comm@cs.utk.edu

Lyndon Clarke writes:

> We have, reasonably in my opinion, decided not to provide interrupt
> driven receive/send (as in Intel hrecv/hsend) in MPI, or active
> messages. 
> 
> I have heard, can't recall from whom, that this carries the consequence
> that we should not define any feature of MPI which asks for the
> implementor of MPI to make use of interrupt driven receives, or active
> messages. This seems to me to be a bogus argument.

I (Rik Littlefield) have regularly made arguments that are 
close enough to this to be worth clarifying or defending.

Think of the MPI specification as being divided into two parts:

  1) things you can implement with portable code, and
  2) things you can't.

My bias is to make the POTENTIALLY portable part of MPI as large as 
possible.  (I emphasize "potentially" to make it clear that I am
talking about interface definitions.  I encourage implementors to
do whatever they want internally.)

As an example, consider groups and collective communication.

All other factors being equal, I would strongly prefer a specification
that permitted groups and collective communication, including group
formation and disbanding, to be implemented using just the
standardized MPI point-to-point capabilities.

This sort of layerability potentially has several good effects.  Three
of these are 1) earlier widespread availability via porting, 2) better
focusing of vendor effort on tuning the point-to-point layer, and 3)
the capability to create portable MPI-plug-compatible implementations
that are tuned for different requirements, e.g., debugging versus
performance.

Of course, all other factors are not equal.  Strict layerability also
has some potentially bad effects.  Two of these (depending on where
you draw the line between layers) are 1) the loss of integrated syntax
(e.g., being able to use rank directly in the point-to-point calls),
and 2) loss of functionality that is not supported by lower layers
(e.g., asynchronous name servers).

Whether the good outweighs the bad is a matter of opinion.  

The applications that I deal with now and anticipate dealing with over
the lifetime of MPI-1 can be characterized as follows:

  . sensitive to performance, 
  . intended to run on lots of platforms,
  . not sensitive to syntax, and
  . not needing name server support.

Applications like these are best served by layerability.
Others' mileage may differ.

Lyndon continues:

> In my mind the primary reason for not providing hrecv/hsend type
> facilities is that it is very difficult to standardise these facilities
> across different operating systems, particularly in terms of what the
> handler procedure is and is not allowed to do (e.g., can it do I/O, can
> it use MPI, ...).  It seems to me clear that on many (all) machines of
> interest the system itself will be making use of similar facilities. 
> Who would write MPI for CM-5 without using active messages? It seems to
> me that for example non blocking communications really do ask for use of
> interrupt/active messages. 
> 
> Is there agreement, disagreement, or what on this point? Please do let
> me know. 

I agree that it is important to distinguish between exporting a
standardized hrecv/hsend and and exporting a standardized asynchronous
name server interface.  The former seems hopeless; the latter is
doable, but at the cost of potentially detracting from other features
such as performance and prompt widespread availability.

Thus, I do not agree that it is bogus to argue against requiring
asynchronous servers et.al. in MPI-1.

--Rik

----------------------------------------------------------------------
rj_littlefield@pnl.gov (alias 'd39135')   Rik Littlefield
Tel: 509-375-3927                         Pacific Northwest Lab, MS K1-87
Fax: 509-375-6631                         P.O.Box 999, Richland, WA  99352
From owner-mpi-comm@CS.UTK.EDU  Wed Apr  7 14:29:11 1993
Received: from CS.UTK.EDU by surfer.EPM.ORNL.GOV (5.61/1.34)
	id AA20295; Wed, 7 Apr 93 14:29:11 -0400
Received: from localhost by CS.UTK.EDU with SMTP (5.61+IDA+UTK-930125/2.8s-UTK)
	id AA17859; Wed, 7 Apr 93 14:27:46 -0400
X-Resent-To: mpi-comm@CS.UTK.EDU ; Wed, 7 Apr 1993 14:27:44 EDT
Errors-To: owner-mpi-comm@CS.UTK.EDU
Received: from arthur.cs.purdue.edu by CS.UTK.EDU with SMTP (5.61+IDA+UTK-930125/2.8s-UTK)
	id AA17851; Wed, 7 Apr 93 14:27:43 -0400
Received: from dragomirna.cs.purdue.edu by arthur.cs.purdue.edu (5.65c/PURDUE_CS-1.2)
	id <AA16237@arthur.cs.purdue.edu>; Wed, 7 Apr 1993 13:27:40 -0500
Received: by dragomirna.cs.purdue.edu (5.65c/PURDUE_CS-1.2)
	id <AA28416@dragomirna.cs.purdue.edu>; Wed, 7 Apr 1993 13:27:39 -0500
Date: Wed, 7 Apr 1993 13:27:39 -0500
From: dcm@cs.purdue.edu (Dan C Marinescu)
Message-Id: <199304071827.AA28416@dragomirna.cs.purdue.edu>
To: dcm@cs.purdue.edu, lyndon@epcc.ed.ac.uk, mpi-comm@cs.utk.edu
Subject: interrupt driven messages


Lyndon Clarke writes:


> We have, reasonably in my opinion, decided not to provide interrupt
> driven receive/send (as in Intel hrecv/hsend) in MPI, or active
> messages. 


 Interrupt driven messages are too important to be left out. 
 Any attempt made either by the application or by the
 compiler to cache data in the local storage of any compute node can
 only be effective if interrupt driven messages are supported.

 The interrupt handling procedure should allow both MPI and I/O.
 
 Indeed, this opens a Pandora box. For example how many such messages 
 should be queued for a suspended process, should one place a limit
 upon the size of an interrupt message and upon the time spent in
 the interrupt handling procedure and so on. 

 Yet it seems reasonable to expect that the standardization effort in 
 OS will make this task easier, for example one could expect that
 more vendors will base their OS on OSF/1. Moreover, interrupt driven
 messages are likely to be provided by most vendors.


 Dan Marinescu
From owner-mpi-comm@CS.UTK.EDU  Thu Apr  8 07:12:11 1993
Received: from CS.UTK.EDU by surfer.EPM.ORNL.GOV (5.61/1.34)
	id AA07522; Thu, 8 Apr 93 07:12:11 -0400
Received: from localhost by CS.UTK.EDU with SMTP (5.61+IDA+UTK-930125/2.8s-UTK)
	id AA05594; Thu, 8 Apr 93 07:10:15 -0400
X-Resent-To: mpi-comm@CS.UTK.EDU ; Thu, 8 Apr 1993 07:10:14 EDT
Errors-To: owner-mpi-comm@CS.UTK.EDU
Received: from daedalus.epcc.ed.ac.uk by CS.UTK.EDU with SMTP (5.61+IDA+UTK-930125/2.8s-UTK)
	id AA05576; Thu, 8 Apr 93 07:10:10 -0400
Date: Thu, 8 Apr 93 12:10:04 BST
Message-Id: <2092.9304081110@subnode.epcc.ed.ac.uk>
From: L J Clarke <lyndon@epcc.ed.ac.uk>
Subject: mpi-comm: various (long)
To: mpi-comm@cs.utk.edu
Reply-To: lyndon@epcc.ed.ac.uk

Dear MPI Colleagues

I am sending this letter to mpi-comm as it seems to cover issues in many
subcommittees and in particular: point-to-point, collective, context,
environmental.  This is a long, but I believe important, letter. 

The letter is a discussion of some issues primarily in point-to-point,
collective  and context, with some strong and powerful recommendations
for each of these subcommittees.

                      o--------------------o

1)  In  the recent  meeting  we  discussed and  narrowly  accepted  an
amendment to the  point-to-point  chapter which  included  secure (aka
synchronous, aka unbuffered) communication. 

Paul Pierce  made  the point that  providing  different point-to-point
procedures does not seem to be  the right model for this capability as
it has  a  microscopic effect  on  MPI  user software.  This  point is
actually well taken (by myself at least). Paul went on to suggest that
there should be application global control over whether point-to-point
communications are all secure (aka synchronous, aka unbuffered) or all
insecure (aka regular, aka asynchronous, aka buffered). I opposed this
suggestion as it does not respect the requirements of library writers.

There appeared to be  a number of people who were  concerned about the
geometric  increase  in  the number  of  point-to-point  communication
procedures.

The  discussion of secure  send and secure receive became messy, and I
promised to return some  more sane discussion of the point.

In this letter I will  later (after consideration  of some  issues  in
collective  communications   and   communication   contexts)  make   a
recommendation which: respects the well taken point of  Paul; provides
a mechanism for the global control suggested  by Paul while respecting
the independence  of library writers from user program writers; avoids
geometric  growth  in  the number of  point-to-point  procedures;  and
completely side-steps the secure send and secure receive issue.

2) The question of  whether collective communication  procedures do or
do  not  barrier  synchronise the group  has  been  raised a number of
times.  In the recent meeting this lead to Steve  Otto suggesting that
MPI user software  should be  written as  though these  operations  do
barrier synchronise although the  MPI implementation is not obliged to
make  the  operations  so  do. 

This is exactly analagous to the point-to-point insecure (aka regular,
...) communications which may or  may  not synchronise the  sender and
receiver depending  on  the  implementation (read depending  on system
buffering resource availability if you prefer). In order to write safe
(i.e. guaranteed portable)  programs with insecure  (aka regular, ...)
communications the MPI user software should be written as though these
communications were secure (aka synchronous, ...).

In  this  letter  I will  later (after consideration of some issues in
communication contexts) make a recommendation which: provides for both
secure (i.e. barrier synchronous) and insecure (i.e. may or may not be
barrier   synchronous   depending    on   implementation)   collective
communications;  and  avoids  geometric  growth  in   the   number  of
collective communication procedures.

3) In the  context subcommittee Mark Sears,  in  Proposal  VIII and in
presentation at the recent meeting, has pointed out that there are two
classes of MPI user libraries.  I will  discuss this (from my point of
view) briefly here for concreteness.

There is a class of libraries which accept context(s) from the  caller
and  use  these context(s)  for communication.  Note  that  since  the
library  uses the contexts(s) given by  the caller then it is  clearly
the  responsibility  of  the  caller  to  ensure  that  there  are  no
"dangling"  communications, either  in buffers or  nonblocking,  which
will interfere  with the communications of the  library, and it is the
responsibility of  the  library to ensure  that there are no  dangling
communications between calls to the library which  will interfere with
communications of the user.  Let me label this class as ClassA. 

There is a  class of libraries  which  create  context(s) for  library
private use and use only these context(s) for communication. Note that
since the library uses  private context(s) then the user does not have
any concern regarding dangling communications which may interfere with
the library communications, and equally the library may leave dangling
communications between library calls since  they cannot interfere with
the  user communications.  Let me  label this class as  ClassB. 

ClassA libraries will  generally operate within one (or more) group(s)
and accept  one (or  more)  group(s) from  the caller,  in addition to
context(s).  ClassB libraries will  also generally operate within  one
(or more) group(s) and accept one  (or more) group(s) from the caller,
but do not accept  context(s). This observation  suggests that context
and group should be different entities within MPI. (Whether we have an
object which  binds a group and a context is another issue to  which I
wish to return in a separate message of narrower circulation.)

Observe  that  the  (blocking)  collective  communications  which  are
described in  the  MPI  collective  communication  chapter  draft  are
conformant  with the ClassA library described  and s single group. The
kind  of libraries  which I  am  writing  (and I  suspect  also  Tony,
although  I am  not  sure)  are  conformant  with  the  ClassB library
described.

4)  I  now  make  a  recommendation  which  ties  together the  points
discussed above and delivers the promises  made. First we observe that
context is the MPI mechanism for distinguishing the communications  of
the user from (ClassB) libraries.

The recommendation is that secure or insecure modes of operation are a
a  property of the communication context. This applies equally to both
point-to-point communications.

In point-to-point communications  a secure context provides the secure
point-to-point  communication which I described at the recent meeting,
and   an  insecure   context  provides  the   inseure   point-to-point
communications  which is as discussed (regular) in the current chapter
draft. (The semantics and desirability of ready-receiver communication
in secure and insecure contexts is a subject to which I wish to return
in a separate message of narrower circulation.)

In  collective  communications  a  secure   context  provides  barrier
synchronisation  across  the group, and an insecure context may or may
not  provide  barrier synchronisation which  is  as  discussed in  the
recent meeting.

There should be an application global default context property, either
secure or insecure, which is specified by the user in an environmental
management procedure (perhaps as  argument to mpi_init()?).   Creation
of  context  should  specify  whether the  created context is to have:
default property; secure property; insecure property. It is possibe to
provide these capabilities in  terms of buffering  in  different ways.
One  possibility  is that  the property of a  context is the buffering
associated with that context, in which case a  secure context  is  one
with zero  associated  buffering.   Another  possibility is  that  the
property  of a  context  is  whether or  not  it  should use  whatever
buffering is available,  in which  case  a secure context is one which
does not use any buffering.  My preference is  for the latter since it
does not prescribe the description and association of buffering.

This recommendation does deliver  the promises  made. The requirements
of the (ClassB) library writer are  respected  while  providing global
control for  the  user program  writer. The capabilities  required are
provided  without  geometric  growth  of the number  of point-to-point
and/or collective communications. 

                      o--------------------o

Free beer to all who can demonstrate that they have read and considered
this (long long letter).

Comments, questions, (flames :-) please?!

Best Wishes
Lyndon

         /--------------------------------------------------------\
    e||) | Lyndon J Clarke    Edinburgh Parallel Computing Centre | e||) 
    c||c | Tel: 031 650 5021  Email: lyndon@epcc.edinburgh.ac.uk  | c||c 
         \--------------------------------------------------------/


From owner-mpi-comm@CS.UTK.EDU  Fri Apr  9 11:26:20 1993
Received: from CS.UTK.EDU by surfer.EPM.ORNL.GOV (5.61/1.34)
	id AA29024; Fri, 9 Apr 93 11:26:20 -0400
Received: from localhost by CS.UTK.EDU with SMTP (5.61+IDA+UTK-930125/2.8s-UTK)
	id AA23758; Fri, 9 Apr 93 11:24:22 -0400
X-Resent-To: mpi-comm@CS.UTK.EDU ; Fri, 9 Apr 1993 11:24:21 EDT
Errors-To: owner-mpi-comm@CS.UTK.EDU
Received: from daedalus.epcc.ed.ac.uk by CS.UTK.EDU with SMTP (5.61+IDA+UTK-930125/2.8s-UTK)
	id AA23750; Fri, 9 Apr 93 11:24:19 -0400
Date: Fri, 9 Apr 93 16:24:14 BST
Message-Id: <3171.9304091524@subnode.epcc.ed.ac.uk>
From: L J Clarke <lyndon@epcc.ed.ac.uk>
Subject: Re: mpi-comm: various (long)
To: lyndon@epcc.ed.ac.uk, mpi-comm@cs.utk.edu
In-Reply-To: L J Clarke's message of Thu, 8 Apr 93 12:10:04 BST
Reply-To: lyndon@epcc.ed.ac.uk

Dear MPI Colleagues

This message is short.  It is two little things which I forgot to say in
the "mpi-comm: various (long)" message.

We can loosely associate ClassA libraries as collections of procedures
for which one can use the substitution model of evaluation, and ClassB
procedures as encapsulated objects.

The argument lists of of ClassA and ClassB libraries differ primarily in
that ClassA libraries accept context(s) whereas ClassB libraries do not. 
This seems (to me) to convey just the right idea to the library user
regarding the responsibilities for management of contexts and messages
within those contexts. 

Best Wishes
Lyndon

         /--------------------------------------------------------\
    e||) | Lyndon J Clarke    Edinburgh Parallel Computing Centre | e||) 
    c||c | Tel: 031 650 5021  Email: lyndon@epcc.edinburgh.ac.uk  | c||c 
         \--------------------------------------------------------/


From owner-mpi-comm@CS.UTK.EDU  Tue Apr 20 16:21:16 1993
Received: from CS.UTK.EDU by surfer.EPM.ORNL.GOV (5.61/1.34)
	id AA08357; Tue, 20 Apr 93 16:21:16 -0400
Received: from localhost by CS.UTK.EDU with SMTP (5.61+IDA+UTK-930125/2.8s-UTK)
	id AA03609; Tue, 20 Apr 93 16:18:26 -0400
X-Resent-To: mpi-comm@CS.UTK.EDU ; Tue, 20 Apr 1993 16:18:25 EDT
Errors-To: owner-mpi-comm@CS.UTK.EDU
Received: from gstws.EPM.ORNL.GOV by CS.UTK.EDU with SMTP (5.61+IDA+UTK-930125/2.8s-UTK)
	id AA03601; Tue, 20 Apr 93 16:18:23 -0400
Received: by gstws.epm.ornl.gov (AIX 3.2/UCB 5.64/4.03)
          id AA14309; Tue, 20 Apr 1993 16:18:20 -0400
Date: Tue, 20 Apr 1993 16:18:20 -0400
From: geist@gstws.epm.ornl.gov (Al Geist)
Message-Id: <9304202018.AA14309@gstws.epm.ornl.gov>
To: mpi-comm@cs.utk.edu
Subject: 2nd draft of Collective Communication proposal



After studying the latest point-to-point draft by Marc
and the votes from the last meeting, I have revised the
original collective communication draft.

Comments can be directed to the mpi-collcomm committee.
Here is the LaTeX version, a postscript version will follow
in a separate message.

Al
                          -----------------------------
   __o        /\          Al Geist
 _`\<,_    /\/  \         Oak Ridge National Laboratory
(_)/ (_)  /      \        (615) 574-3153   gst@ornl.gov
* * * * * * * * * *       -----------------------------

%     MPI Authors:
% This is MY version of YOUR chapter.  It has a wrapper so that you
% should be able to simply LaTeX this.
%
% Please work from this text so that we are in synch.
%
% --Steve Otto

\documentstyle[twoside,11pt]{report}
\pagestyle{headings}
%\markright{ {\em Draft Document of the MPI Standard,\/ \today} }
\marginparwidth 0pt
\oddsidemargin=.25in
\evensidemargin  .25in
\marginparsep 0pt
\topmargin=-.5in
\textwidth=6.0in
\textheight=9.0in
\parindent=2em

%   ----------------------------------------------------------------------
%   mpi-macs.tex  --- man page macros,
%                discuss, missing, mpifunc macros
%
% ----------------------------------------------------------------------
% a couple of commands from Marc Snir, modified S. Otto

\newlength{\discussSpace}
\setlength{\discussSpace}{.7cm}

\newcommand{\discuss}[1]{\vspace{\discussSpace} {\small {\bf Discussion:} #1} \vspace{\discussSpace}
}

\newcommand{\missing}[1]{\vspace{\discussSpace} {\small {\bf Missing:} #1} \vspace{\discussSpace}
}

\newlength{\codeSpace}
\setlength{\codeSpace}{.3cm}

\newcommand{\mpifunc}[1]{\vspace{\codeSpace} {\bf #1} \vspace{\codeSpace} }

% -----------------------------------------------------------------------
%  A few commands to help in writing MPI man pages
%
\def\twoc#1#2{
\begin{list}
{\hbox to95pt{#1\hfil}}
{\setlength{\leftmargin}{120pt}
 \setlength{\labelwidth}{95pt}
 \setlength{\labelsep}{0pt}
 \setlength{\partopsep}{0pt}
 \setlength{\parskip}{0pt}
 \setlength{\topsep}{0pt}
}
\item
{#2}
\end{list}
}
\outer\long\def\onec#1{
\begin{list}
{}
{\setlength{\leftmargin}{25pt}
 \setlength{\labelwidth}{0pt}
 \setlength{\labelsep}{0pt}
 \setlength{\partopsep}{0pt}
 \setlength{\parskip}{0pt}
 \setlength{\topsep}{0pt}
}
\item
{#1}
\end{list}
}
\def\manhead#1{\noindent{\bf{#1}}}


\hyphenation{RE-DIS-TRIB-UT-ABLE sub-script mul-ti-ple}

\begin{document}

\setcounter{page}{1}
\pagenumbering{roman}

\title{ {\em D R A F T} \\ Document for a Standard Message-Passing Interface}

\author{Scott Berryman, {\em Yale Univ} \\
James Cownie, {\em Meiko Ltd} \\
Jack Dongarra, {\em Univ. of Tennessee and ORNL} \\
Al Geist, {\em ORNL} \\
Bill Gropp, {\em ANL} \\
Rolf Hempel, {\em GMD} \\
Bob Knighten, {\em Intel} \\
Rusty Lusk, {\em ANL} \\
Steve Otto, {\em Oregon Graduate Inst} \\
Tony Skjellum, {\em Missisippi State Univ} \\
Marc Snir, {\em IBM T. J. Watson} \\
David Walker, {\em ORNL} \\
Steve Zenith, {\em Kuck \& Associates}   } 

\date{April 20, 1993 \\
This work was supported by ARPA and NSF under contract number \#\#\#,
by the National Science Foundation Science and
Technology Center Cooperative Agreement No. CCR-8809615.
}

\maketitle
\hfuzz=5pt
%\tableofcontents

%\begin{abstract}
%We don't have an abstract yet.
%\end{abstract}

\setcounter{page}{1}
\pagenumbering{arabic}

\chapter{Collective Communication}
\label{sec:coll}

\begin{center}
Al Geist \\ Marc Snir
\end{center}

\section{Introduction}

This section is a draft of the current proposal for collective communication.
Collective communication is defined to be communication that involves
a group of processes.  Examples are broadcast and global sum.
A collective operation is executed by having all processes in the group call the
communication routine, with matching parameters.
Routines can (but are not required to) return as soon as their
participation in the collective communication is complete.  The completion
of a call indicates that the caller is now free to access the locations in the
communication buffer, or any other location that can be referenced by the
collective operation.  However, it does not indicate that other processes in
the group have started the operation (unless otherwise indicated in the
description of the operation).   However, the successful completion of
a collective communication call may depend on the execution of a matching call
at all processes in the group.

The syntax and semantics of the collective operations is
defined so as to be consistent with the syntax and semantics of the point to
point operations.

The reader is referred to the point-to-point communication section 
of the current MPI draft for information concerning communication buffers 
and their manipulations. 
The context section describes the formation,
manipulation, and query functions (such as group size) that are
available for groups and group objects.

The collective communication routines are built above the point-to-point
routines.  While vendors may optimize certain collective routines for
their architectures, a complete library of the collective communication
routines can be written entirely using point-to-point communication
functions.  We are using naive implementations of the collective calls in terms
of point to point operations in order to provide an operational definition of
their semantics.

The following communication functions are proposed.
\begin{itemize}
\item
Broadcast from one member to all members of a group.
\item
Barrier across all group members
\item
Gather data from all group members to one member.
\item
Scatter data from one member to all members of a group.
\item
Global operations such as sum, max, min, etc., were the result
is known by all group members and a variation where the result is
known by only one member. The ability to have user defined
global operations.
\item
Simultaneous shift of data around the group, the simplest example
being all members sending their data to (rank+1) with wrap around.
\item
Scan across all members of a group (also called parallel prefix).
\item
Broadcast from all members to all members of a group.
\item
Scatter data from all members to all members of a group
(also called complete exchange or index).
\end{itemize}

To simplify the collective communication interface it is
designed with two layers. The low level routines have all the
generality of, and make use of, the communication buffer routines
of the point-to-point section which allows arbitrarily complex
messages to be constructed. The second level routines are
similar to the upper level point-to-point routines in that they send
only a contiguous buffer.


\section{Group Functions}

A full description of the group formation and manipulation functions
can be found in the context chapter of the MPI document.
Here we describe only those group functions that are used in the
semantic description of the collective communication routines.

An initial group containing all processes is supplied by default in MPI.
MPI provides a procedure that returns the handle to this initial group.
The processes in the inital group each have a unique rank in the group
represented by integers (0, 1, 2, ..., [number-of-processes~-~1].

\mpifunc{MPI\_ALLGROUP(group)} 
Return the descriptor of the inital group containing all processes.
\begin{description}
\item[OUT group] handle to descriptor object of initial group.
\end{description}

\mpifunc{MPI\_RANK(group, rank)} 
Return the rank of the calling process within the specified group.
\begin{description}
\item[IN group] group handle
\item[OUT rank] integer
\end{description}


\mpifunc{MPI\_GSIZE(group, size)} 
Return the number of processes that belong to the specified group.
\begin{description}
\item[IN group] group handle
\item[OUT size] integer
\end{description}

\section{Communication Functions}

The proposed communication functions are divided into two layers.
The lowest level uses the same buffer descriptor objects
available in point-to-point to create noncontiguous, multiple data type
messages. The second level is similar to the block send/receive
point-to-point operations in that it supports only contiguous buffers of data.
For each communication operation, we list these two level of calls together.


\section{Synchronization}

\subsubsection*{Barrier synchronization}

\mpifunc{MPI\_BARRIER( group )} 

MPI\_BARRIER blocks the calling process until all group members have called
it; the call returns at any process only after all group members have
entered the call.
\begin{description}
\item[IN group] group handle
\end{description}

{\tt MPI\_BARRIER( group )}
is
\begin{verbatim}
MPI_CREATE_BUFFER(buffer_handle, MPI_BUFFER, MPI_PERSISTENT);
MPI_GSIZE( group, &size );
MPI_RANK( group, &rank );
if (rank==0)
{
   for (i=1; i < size; i++)
      MPI_RECV(buffer_handle, i, tag, group, return_handle);
   for (i=1; i < size; i++)
      MPI_SEND(buffer_handle, i, tag, group);
}
else
{
   MPI_SEND(buffer_handle, 0, tag, group);
   MPI_RECV(buffer_handle, 0, tag, group, return_handle);
}
MPI_FREE(buffer_handle);
\end{verbatim}

\discuss{ since tag was voted out in the last meeting, a "safe" tag
must be selected to use in the above description }

\section{Data move functions}

\subsubsection*{Broadcast}

\mpifunc{ MPI\_BCAST( buffer\_handle, group, root )} 

{\tt MPI\_BCAST} broadcasts a message from the process with rank {\tt root} to
all other processes
of the group. It is called by all members of group using the same arguments for
{\tt  group, and root}.
On return the contents of the buffer of the process with rank {\tt root}
is contained in buffer of all group members.
\begin{description}
\item[INOUT buffer\_handle]  Handle for buffer where from message is
sent or received.
\item[IN group] group handle
\item[IN root] rank of broadcast root (integer)
\end{description}


\mpifunc{ MPI\_BCASTC( buf, len, group, root )} 

{\tt MPI\_BCASTC} behaves like broadcast, restricted to a block buffer.
It is called by all processes with the same arguments for {\tt len, group}
and {\tt root}.
\begin{description}
\item[INOUT buffer]  Starting address of buffer (choice type)
\item[IN len] Number of words in buffer (integer)
\item[IN group] group handle
\item[in root] rank of broadcast root (integer)
\end{description}


{\tt  MPI\_BCAST( buffer\_handle, group, root )} 
is
\begin{verbatim}
MPI_GSIZE( group, &size );
MPI_RANK( group, &rank );
MPI_IRECV(handle, buffer_handle, root, tag, group, return_handle);
if (rank==root)
   for (i=0; i < size; i++)
      MPI_SEND(buffer_handle, i, tag, group);
MPI_WAIT(handle)
\end{verbatim}

\subsubsection*{Circular shift}

\mpifunc{MPI\_CSHIFT( inbuf, outbuf, group, shift)} 

Process with rank {\tt i} sends the data in its input buffer to
process with rank $\tt (i+ shift) \bmod  group\_size$, who receives the
data in its output buffer. All processes make the call with the same values for
{\tt group}, and {\tt shift}.  The {\tt shift} value can be positive, zero,
or negative.

\begin{description}
\item[IN inbuf] handle to input buffer descriptor
\item[OUT outbuf] handle to output buffer descriptor
\item[IN group] handle to group
\item[IN shift] integer
\end{description}

\mpifunc{MPI\_CSHIFT1( buf, group, shift)} 

Process with rank {\tt i} sends the data in its buffer to
process with rank $\tt (i+ shift) \bmod  group\_size$, who receives the
data in the same buffer. All processes make the call with the same values for
{\tt group}, and {\tt shift}.  The {\tt shift} value can be positive, zero,
or negative.

\begin{description}
\item[INOUT buf] handle to buffer descriptor
\item[IN group] handle to group
\item[IN shift] integer
\end{description}


\mpifunc{MPI\_CSHIFTC( inbuf, outbuf, len, group, shift)} 

Behaves like {\tt MPI\_CSHIFT}, with buffers restricted to be blocks of
numeric units.
All processes make the call with the same values for
{\tt len, group}, and {\tt shift}.
\begin{description}
\item[IN inbuf] initial location of input buffer
\item[OUT outbuf] initial location of output buffer
\item[IN len] number of entries in input (and output) buffers
\item[IN group] handle to group
\item[IN shift] integer
\end{description}


\mpifunc{MPI\_CSHIFTC1( buf, len, group, shift)} 

Behaves like {\tt MPI\_CSHIFT1}, with buffers restricted to be blocks of
numeric units.
All processes make the call with the same values for
{\tt len, group}, and {\tt shift}.
\begin{description}
\item[INOUT buf] initial location of buffer
\item[IN len] number of entries in input (and output) buffers
\item[IN group] handle to group
\item[IN shift] integer
\end{description}

{\tt MPI\_CSHIFT( inbuf, outbuf, group, shift)} 
is
\begin{verbatim}
MPI_GSIZE( group, &size );
MPI_RANK( group, &rank );
MPI_ISEND( handle, inbuf, mod(rank+shift, size), tag, group);
MPI_RECV( outbuf, mod(rank-shift,size), tag, group, return_handle)
MPI_WAIT(handle);
\end{verbatim}


\subsubsection*{End-off shift}

\mpifunc{MPI\_EOSHIFT( inbuf, outbuf, group, shift)} 

Process with rank {\tt i}, $\tt \max( 0, -shift) \le i < min( size, size -
shift)$, sends the data
in its input buffer to process with rank {\tt i+ shift}, who receives the data
in its output buffer.   The output buffer of processes which do not receive
data is left unchanged.   All processes
make the call with the same values for {\tt group}, and {\tt shift}.

\begin{description}
\item[IN inbuf] handle to input buffer descriptor
\item[OUT outbuf] handle to output buffer descriptor
\item[IN group] handle to group
\item[IN shift] integer
\end{description}

\mpifunc{MPI\_EOSHIFT1( buf, group, shift)} 

Process with rank {\tt i}, $\tt \max( 0, -shift) \le i < min( size, size -
shift)$, sends the data
in its buffer to process with rank {\tt i+ shift}, who receives the data
in the same buffer.   The output buffer of processes which do not receive
data is left unchanged.   All processes
make the call with the same values for {\tt group}, and {\tt shift}.

\begin{description}
\item[IN inbuf] handle to input buffer descriptor
\item[OUT outbuf] handle to output buffer descriptor
\item[IN group] handle to group
\item[IN shift] integer
\end{description}


\mpifunc{MPI\_EOSHIFTC( inbuf, outbuf, len, group, shift)} 

Behaves like {\tt MPI\_EOSHIFT}, with buffers restricted to be blocks of
numeric units.
All processes make the call with the same values for
{\tt len, group}, and {\tt shift}.
\begin{description}
\item[IN inbuf] initial location of input buffer
\item[OUT outbuf] initial location of output buffer
\item[IN len] number of entries in input (and output) buffers
\item[IN group] handle to group
\item[IN shift] integer
\end{description}

\mpifunc{MPI\_EOSHIFTC1( buf, len, group, shift)} 

Behaves like {\tt MPI\_EOSHIFT1}, with buffer restricted to be blocks of
numeric units.
All processes make the call with the same values for
{\tt len, group}, and {\tt shift}.
\begin{description}
\item[INOUT buf] initial location of buffer
\item[IN len] number of entries in input (and output) buffers
\item[IN group] handle to group
\item[IN shift] integer
\end{description}


\subsubsection*{Gather}

\mpifunc{MPI\_GATHER( inbuf, outbuf, group, root, return\_status) } 

Each process (including the root process) sends the content of its input
buffer to the root process.  The root process concatenates all the
incoming messages in the order of the senders' rank and places the
results in its output buffer.
It is called by all members of group using the same arguments for
{\tt group}, and {\tt root}.   The input buffer of each process may have
a different length.
\begin{description}
\item[IN inbuf] handle to input buffer descriptor
\item[OUT outbuf] handle to output buffer descriptor -- significant only at root
(choice)
\item[IN group] group handle
\item[IN root] rank of receiving process (integer)
\item[OUT return\_status] return status handle
\end{description}


\mpifunc{MPI\_GATHERC( inbuf, inlen, outbuf, group, root) } 

{\tt MPI\_GATHERC} behaves like {\tt MPI\_GATHER} restricted to block
buffers, and with the additional restriction that all input buffers should
have the same length.   All processes should provided the same values for
{\tt inlen, group}, and {\tt root} .
\begin{description}
\item[IN inbuf] first variable of input buffer (choice)
\item[IN inlen] Number of (word) variables in input buffer (integer)
\item[OUT outbuf] first variable of output buffer -- significant only at
root (choice)
\item[IN group] group handle
\item[IN root] rank of receiving process (integer)
\end{description}


{\tt MPI\_GATHERC( inbuf, inlen, outbuf, tag, group, root) } 
is
\begin{verbatim}
MPI_GSIZE( &size, group);
MPI_RANK( &rank, group);
MPI_ISENDC(handle, inbuf, inlen, root, tag, group);
if (rank==root)
   for (i=0; i < size; i++)
   {
      MPI_RECVC(outbuf, inlen, i, tag, group, return\_status);
      outbuf += inlen;
   }
MPI_WAIT(handle);
\end{verbatim}

\subsubsection*{Scatter}

\mpifunc{MPI\_SCATTER( list\_of\_inbufs, outbuf, group, root, return\_status)} 

The root process sends the content of its {\tt i}-th input buffer
to the process with rank {\tt i}; each process (including the root process)
stores the incoming message in its output buffer.
The routine is called by all members of the group using the same
arguments for {\tt group}, and {\tt root}.
\begin{description}
\item[IN list\_of\_inbufs] list of buffer descriptor handles
\item[OUT outbuf] buffer descriptor handle
\item[IN group] handle
\item[IN root]  rank of sending process (integer)
\item[OUT return\_status] return status handle
\end{description}


{\tt MPI\_SCATTER( list\_of\_inbufs, outbuf, group, root, return\_status)} 
is
\begin{verbatim}
MPI_GSIZE( group, &size );
MPI_RANK( group, &rank );
MPI_IRECV(handle, outbuf, root, tag, group);
if (rank=root)
   for (i=0; i < size; i++)
      MPI_SEND(inbuf[i], i, tag, group);
MPI_WAIT(handle, return\_status);
\end{verbatim}


\mpifunc{MPI\_SCATTERC( inbuf, outbuf, len, group, root)}


{\tt MPI\_SCATTERC} behaves like {\tt MPI\_SCATTER} restricted to block buffers,
and with the additional restriction that all output buffers have the same
length. The input buffer block of the root process is partitioned into
{\tt n} consecutive blocks,
each consisting of {\tt len} words.  The {\tt i}-th block is sent to the
{\tt i}-th process in the group and stored in its output buffer.
The routine is called by all members of the group using the same
arguments for {\tt group, len}, and {\tt root}.
\begin{description}
\item[IN inbuf] first entry in input buffer -- significant only at root
(choice).
\item[OUT outbuf] first entry in output buffer (choice).
\item[IN len]  number of entries to be stored in output buffer (integer)
\item[IN group] handle
\item[IN root]  rank of sending process (integer)
\end{description}


{\tt MPI\_SCATTERC( inbuf, outbuf, outlen, group, root) } 
is
\begin{verbatim}
MPI_GSIZE( &size, group);
MPI_RANK( &rank, group);
MPI_IRECVC( handle, outbuf, outlen, root, tag, group);
if (rank=root)
   for (i=0; i < size; i++)
   {
      MPI_SENDC(inbuf, outlen, i, tag, group, return\_status);
      inbuf += outlen;
   }
MPI_WAIT(handle);
\end{verbatim}

\subsubsection*{All-to-all scatter}

\mpifunc{MPI\_ALLSCATTER( list\_of\_inbufs, outbuf, group, return\_status)} 

Each process in the group sends its {\tt i}-th buffer in its input buffer list
to the process with rank {\tt i} (itself included); each process concatenates
the incoming messages in its output buffer, in the order of the senders' ranks.
The routine is called by all members of the group using the same
arguments for {\tt group}.
\begin{description}
\item[IN list\_of\_inbufs] list of buffer descriptor handles
\item[OUT outbuf] buffer descriptor handle
\item[IN group] handle
\item[OUT return\_status] return status handle
\end{description}


\mpifunc{MPI\_ALLSCATTERC( inbuf, outbuf, len, group)} 

{\tt MPI\_ALLSCATTERC} behaves like {\tt MPI\_ALLSCATTER} restricted to
block buffers,
and with the additional restriction that all blocks sent from one process
to another have
the same length. The input buffer block of each process is partitioned
into {\tt n} consecutive blocks,
each consisting of {\tt len} words.  The {\tt i}-th block is sent to the
{\tt it}-th process in the group.  Each process concatenates the incoming
messages, in the order of the senders' ranks, and store them in its output
buffer. The routine is called by all members of the group using the same
arguments for {\tt group}, and {\tt len}.
\begin{description}
\item[IN inbuf] first entry in input buffer (choice).
root (integer)
\item[OUT outbuf] first entry in output buffer (choice).
\item[IN len]  number of entries sent from each process to each other (integer).
\item[IN group] handle
\end{description}


{\tt MPI\_ALLSCATTERC( inbuf, outbuf, len, group)}  
is
\begin{verbatim}
MPI_GSIZE( group, &size );
MPI_RANK( group, &rank );
for (i=0; i < rank; i++)
   {
    MPI_IRECVC(recv_handles[i], outbuf, len, tag, group);
    outbuf += len;
   }
for (i=0; i < size; i++)
   {
    MPI_ISENDC(send_handle[i], inbuf, len, i, tag, group);
    inbuf += len;
   }
MPI_WAITALL(send_handle);
MPI_WAITALL(recv_handle);
\end{verbatim}

\subsubsection*{All-to-all broadcast}

\mpifunc{MPI\_ALLCAST( inbuf, outbuf, group, return\_status)} 

Each process in the group broadcasts its input buffer
to all processes (including itself);
each process concatenates
the incoming messages in its output buffer, in the order of the senders' ranks.
The routine is called by all members of the group using the same
arguments for {\tt group}.
\begin{description}
\item[IN inbuf] buffer descriptor handle for input buffer
\item[OUT outbuf] buffer descriptor handle for output buffer
\item[IN group] handle
\item[OUT return\_status] return status handle
\end{description}


\mpifunc{MPI\_ALLCASTC( inbuf, outbuf, len, group)} 

{\tt MPI\_ALLCASTC} behaves like {\tt MPI\_ALLCAST} restricted to
block buffers,
and with the additional restriction that all blocks sent from one process
to another have the same length.
The routine is called by all members of the group using the same
arguments for {\tt group}, and {\tt len}.
\begin{description}
\item[IN inbuf] first entry in input buffer (choice).
root (integer)
\item[OUT outbuf] first entry in output buffer (choice).
\item[IN len]  number of entries sent from each process to each other
(including itself).
\item[IN group] group handle
\end{description}


{\tt MPI\_ALLCASTC( inbuf, outbuf, len, group)}  
is
\begin{verbatim}
MPI_GSIZE( group, &size );
MPI_RANK( group, &rank );
for (i=0; i < rank; i++)
   {
    MPI_IRECVC(recv_handles[i], outbuf, len, tag, group);
    outbuf += len;
   }
for (i=0; i < size; i++)
   {
    MPI_ISENDC(send_handle[i], inbuf, len, i, tag, group);
   }
MPI_WAITALL(send_handle);
MPI_WAITALL(recv_handle);
\end{verbatim}


\section{Global Compute Operations}

\subsubsection*{Reduce}

\mpifunc{MPI\_REDUCE( inbuf, outbuf, group, root, op)} 

Combines the values provided in the input buffer of each process in the
group, using the operation {\tt op}, and returns the combined value in
the output buffer of the process with rank {\tt root}.
Each process can provide one value, or a sequence of values, in which case the
combine operation is executed pointwise on each entry of the sequence.
For example, if the operation is {\tt max} and input buffers contains two
floating point numbers, then outbuf(1) $=$ global max(inbuf(1)) and
outbuf(2) $=$ global max(inbuf(2)). All input
buffers should define sequences of equal length of entries of types
that match the type of the operands of {\tt op}.  The
output buffer should define a sequence of the same length of entries of
types that match the type of the result of {\tt op}.
(Note that,
here as for all other communication operations, the type of entries inserted in
a message depend on the information provided by the input buffer descriptor, and
not on the declarations of these variables in the calling program.   The types
of the variables in the calling program need not match the types defined by the
buffer descriptor, but in such case the outcome of a reduce operation may be
implementation dependent.)

The operation
defined by {\tt op} is associative and commutative, and the implementation can
take advantage of associativity and commutativity in order to change
order of evaluation.
The routine is called by all group members using the same arguments
for {\tt group, root} and {\tt op}.
\begin{description}
\item[IN inbuf] handle to input buffer
\item[OUT outbuf] handle to output buffer -- significant only at root
\item[IN group] handle to group
\item[IN root] rank of root process (integer)
\item[IN op] operation (status)
\end{description}

We list below the operations which are supported for Fortran, each with the
corresponding value of the {\tt op} parameter.
\begin{description}
\item[MPI\_IMAX] integer maximum
\item[MPI\_RMAX] real maximum
\item[MPI\_DMAX] double precision real maximum
\item[MPI\_IMIN] integer minimum
\item[MPI\_RMIN] real minimum
\item[MPI\_DMIN] double precision real minimum
\item[MPI\_ISUM] integer sum
\item[MPI\_RSUM] real sum
\item[MPI\_DSUM] double precision real sum
\item[MPI\_CSUM] complex sum
\item[MPI\_DCSUM] double precision complex sum
\item[MPI\_IPROD] integer product
\item[MPI\_RPROD] real product
\item[MPI\_DPROD] double precision real product
\item[MPI\_CPROD] complex product
\item[MPI\_DCPROD] double precision complex product
\item[MPI\_AND] logical and
\item[MPI\_IAND] integer (bit-wise) and
\item[MPI\_OR] logical or
\item[MPI\_IOR] integer (bit-wise) or
\item[MPI\_XOR] logical xor
\item[MPI\_IXOR] integer (bit-wise) xor
\item[MPI\_MAXLOC] rank of process with maximum integer value
\item[MPI\_MAXRLOC] rank of process with maximum real value
\item[MPI\_MAXDLOC] rank of process with maximum double precision real value
\item[MPI\_MINLOC] rank of process with minimum integer value
\item[MPI\_MINRLOC] rank of process with minimum real value
\item[MPI\_MINDLOC] rank of process with minimum double precision real value
\end{description}

\mpifunc{MPI\_REDUCEC( inbuf, outbuf, len, group, root, op)} 

Is same as {\tt MPI\_REDUCE}, restricted to a block buffer.
\begin{description}
\item[IN inbuf] first location in input buffer
\item[OUT outbuf] first location in output buffer -- significant only at root
\item[IN len] number of entries in input and output buffer (integer)
\item[IN group] handle to group
\item[IN root] rank of root process (integer)
\item[IN op] operation (status)
\end{description}


\mpifunc{MPI\_USER\_REDUCE( inbuf, outbuf, group, root, function)} 

Same as the reduce operation function above except that a user
supplied function is used.  {\tt function} is an associative and commutative
function with two arguments.  The types of the two arguments and of the
returned value of the function, and the types of all entries in the
input and output buffers all agree.  The output buffer has the same
length as the input buffer.
\begin{description}
\item[IN inbuf] handle to input buffer
\item[OUT outbuf] handle to output buffer -- significant only at root
\item[IN group] handle to group
\item[IN root] rank of root process (integer)
\item[IN function] user provided function
\end{description}

\mpifunc{MPI\_USER\_REDUCEC( inbuf, outbuf, len, group, root, function)}

Is same as {\tt MPI\_\_USER\_REDUCE}, restricted to a block buffer.
\begin{description}
\item[IN inbuf] first location in input buffer
\item[OUT outbuf] first location in output buffer -- significant only at root
\item[IN len] number of entries in input and output buffer (integer)
\item[IN group] handle to group
\item[IN root] rank of root process (integer)
\item[IN op] operation (status)
\end{description}


\discuss{

Do we also want a version of reduce that broadcasts the result to all processes
in the group?  (This can be achieved by a reduce followed by a broadcast, but a
combined function may be somewhat more efficient.)
These would be respectively:

\mpifunc{MPI\_GOP( inbuf, outbuf, group, op)}

\mpifunc{MPI\_GOPC( inbuf, outbuf, len, group, op)}

\mpifunc{MPI\_USER\_GOP( inbuf, outbuf, group, function)}

\mpifunc{MPI\_USER\_GOPC( inbuf, outbuf, len, group, function)}

Do we want a user provided {\em function} (two IN parameters, one OUT
value), or a user provided procedure that overwrites the second input
(ie. one IN param, one INOUT param, the equivalent of C {\tt a op= b}
type assignment)?  The second choice may allow a
more efficient implementation, without changing the semantics of the
MPI call.

}

\subsubsection*{Scan}

\mpifunc{ MPI\_SCAN( inbuf, outbuf, group, op )} 

MPI\_SCAN is used to perform a parallel prefix with respect to
an associative reduction operation on data distributed across the group.
The operation returns in the output buffer of the process with rank {\tt i} the
reduction of the values in the input buffers of processes with ranks {\tt
0,...,i}.  The type of operations supported and their semantic, and the
constraints on input and output buffers are as for {\tt MPI\_REDUCE}.
\begin{description}
\item[IN inbuf] handle to input buffer
\item[OUT outbuf] handle to output buffer
\item[IN group] handle to group
\item[IN op] operation (status)
\end{description}

\mpifunc{ MPI\_SCANC( inbuf, outbuf, len, group, op )} 
Same as {\tt MPI\_SCAN}, restricted to block buffers.

\begin{description}
\item[IN inbuf] first input buffer element (choice)
\item[OUT outbuf] first output buffer element (choice)
\item[IN len] number of entries in input and output buffer (integer)
\item[IN group] handle to group
\item[IN op] operation (status)
\end{description}


\mpifunc{ MPI\_USER\_SCAN( inbuf, outbuf, group, function )} 

Same as the scan operation function above except that a user
supplied function is used.  {\tt function} is an associative and commutative
function with two arguments.  The types of the two arguments and of the
returned values all agree.
\begin{description}
\item[IN inbuf] handle to input buffer
\item[OUT outbuf] handle to output buffer
\item[IN group] handle to group
\item[IN function] user provided function
\end{description}

\mpifunc{MPI\_USER\_SCANC( inbuf, outbuf, len, group, function)}

Is same as {\tt MPI\_USER\_SCAN}, restricted to a block buffer.
\begin{description}
\item[IN inbuf] first location in input buffer
\item[OUT outbuf] first location in output buffer
\item[IN len] number of entries in input and output buffer (integer)
\item[IN group] handle to group
\item[IN function] user provided function
\end{description}

\discuss{

Do we want scan operations executed by segments? (The HPF definition of prefix
and suffix operation might be handy -- in addition to the scanned vector of
values there is a mask that tells where segments start and end.)
}


\section{Correctness}

\discuss{ This is still very preliminary}

The semantics of the collective communication operations can be derived from
their operational definition in terms of  point-to-point communication.  It is
assumed that messages pertaining to one
operation cannot be confused with messages pertaining to another operation.
Also messages pertaining to two distinct occurrences of the same operation
cannot be confused, if the two occurrences have distinct parameters.
The relevant parameters for this purpose are {\tt group}, {\tt root} 
and {\tt op}.
messages pertaining to another occurrence of the same operation, with different
parameters.   The implementer can, of course, use another, more efficient
implementation, as long as it has the same effect.

\discuss{

This statement does not yet apply to the current, incomplete and
somewhat careless definitions I provided in this draft.

The definition above means that messages pertaining to a collective
communication carry information identifying the operation itself, and the
values of the {\tt group} and,
where relevant, {\tt root} or {\tt op} parameters.
Is this acceptable?

}


A few examples:

\begin{verbatim}
MPI_BCAST(buf, len, group, 0);
MPI_BCAST(buf, len, group, 1);
\end{verbatim}

Two consecutive broadcasts, in the same group, with the same tag, but different
roots.  Since the operations are distinguishable, messages from one broadcast
cannot be confused with messages from the other broadcast; the program is safe
and will execute as expected.

\begin{verbatim}
MPI_BCAST(buf, len, group, 0);
MPI_BCAST(buf, len, group, 0);
\end{verbatim}

Two consecutive broadcasts, in the same group, with the same tag and root.
Since point-to-point communication preserves the order of messages
here, too, messages from one broadcast will not be confused with messages from
the other broadcast; the program is safe and will execute as intended.

\begin{verbatim}
MPI_RANK(&rank, group)
if (rank==0)
  {
   MPI_BCASTC(buf, len, group, 0);
   MPI_SENDC(buf, len, 2, tag, group);
  }
elseif (rank==1)
  {
   MPI_RECVC(buf, len, MPI_DONTCARE, tag, group);
   MPI_BCASTC(buf, len, group, 0);
   MPI_RECVC(buf, len, MPI_DONTCARE, tag, group);
  }
else
  {
   MPI_SENDC(buf, len, 2, tag, group);
   MPI_BCASTC(buf, len, group, 0);
  }
\end{verbatim}

Process zero executes a broadcast followed by a send to process one;
process two executes a send to process one, followed by a broadcast;
and process one executes a receive, a broadcast and a receive.
A possible outcome is for the operations to be matched as illustrated by the
diagram below.

\begin{verbatim}


    0                       1                      2

                / - >  receive            / - send
              /                         /
broadcast   /         broadcast       /   broadcast
           /                        /
  send   -             receive  < -


\end{verbatim}

The reason is that broadcast is not a synchronous operation; the call at a
process may return before the other processes have entered the broadcast.
Thus, the message sent by process zero can arrive to process one before the
message sent by process two, and before the call to broadcast on process one.

\end{document}

From owner-mpi-comm@CS.UTK.EDU  Tue Apr 20 16:21:18 1993
Received: from CS.UTK.EDU by surfer.EPM.ORNL.GOV (5.61/1.34)
	id AA08359; Tue, 20 Apr 93 16:21:18 -0400
Received: from localhost by CS.UTK.EDU with SMTP (5.61+IDA+UTK-930125/2.8s-UTK)
	id AA03662; Tue, 20 Apr 93 16:19:33 -0400
X-Resent-To: mpi-comm@CS.UTK.EDU ; Tue, 20 Apr 1993 16:19:30 EDT
Errors-To: owner-mpi-comm@CS.UTK.EDU
Received: from gstws.EPM.ORNL.GOV by CS.UTK.EDU with SMTP (5.61+IDA+UTK-930125/2.8s-UTK)
	id AA03654; Tue, 20 Apr 93 16:19:25 -0400
Received: by gstws.epm.ornl.gov (AIX 3.2/UCB 5.64/4.03)
          id AA16360; Tue, 20 Apr 1993 16:19:21 -0400
Date: Tue, 20 Apr 1993 16:19:21 -0400
From: geist@gstws.epm.ornl.gov (Al Geist)
Message-Id: <9304202019.AA16360@gstws.epm.ornl.gov>
To: mpi-comm@cs.utk.edu
Subject: Postscript of Collective Communication chapter of MPI


%!PS-Adobe-2.0
%%Creator: dvips 5.47 Copyright 1986-91 Radical Eye Software
%%Title: cc.dvi
%%Pages: 17 1
%%BoundingBox: 0 0 612 792
%%EndComments
%%BeginProcSet: tex.pro
/TeXDict 200 dict def TeXDict begin /N /def load def /B{bind def}N /S /exch
load def /X{S N}B /TR /translate load N /isls false N /vsize 10 N /@rigin{
isls{[0 1 -1 0 0 0]concat}if 72 Resolution div 72 VResolution div neg scale
Resolution VResolution vsize neg mul TR matrix currentmatrix dup dup 4 get
round 4 exch put dup dup 5 get round 5 exch put setmatrix}N /@letter{/vsize 10
N}B /@landscape{/isls true N /vsize -1 N}B /@a4{/vsize 10.6929133858 N}B /@a3{
/vsize 15.5531 N}B /@ledger{/vsize 16 N}B /@legal{/vsize 13 N}B /@manualfeed{
statusdict /manualfeed true put}B /@copies{/#copies X}B /FMat[1 0 0 -1 0 0]N
/FBB[0 0 0 0]N /nn 0 N /IE 0 N /ctr 0 N /df-tail{/nn 8 dict N nn begin
/FontType 3 N /FontMatrix fntrx N /FontBBox FBB N string /base X array
/BitMaps X /BuildChar{CharBuilder}N /Encoding IE N end dup{/foo setfont}2
array copy cvx N load 0 nn put /ctr 0 N[}B /df{/sf 1 N /fntrx FMat N df-tail}
B /dfs{div /sf X /fntrx[sf 0 0 sf neg 0 0]N df-tail}B /E{pop nn dup definefont
setfont}B /ch-width{ch-data dup length 5 sub get}B /ch-height{ch-data dup
length 4 sub get}B /ch-xoff{128 ch-data dup length 3 sub get sub}B /ch-yoff{
ch-data dup length 2 sub get 127 sub}B /ch-dx{ch-data dup length 1 sub get}B
/ch-image{ch-data dup type /stringtype ne{ctr get /ctr ctr 1 add N}if}B /id 0
N /rw 0 N /rc 0 N /gp 0 N /cp 0 N /G 0 N /sf 0 N /CharBuilder{save 3 1 roll S
dup /base get 2 index get S /BitMaps get S get /ch-data X pop /ctr 0 N ch-dx 0
ch-xoff ch-yoff ch-height sub ch-xoff ch-width add ch-yoff setcachedevice
ch-width ch-height true[1 0 0 -1 -.1 ch-xoff sub ch-yoff .1 add]{ch-image}
imagemask restore}B /D{/cc X dup type /stringtype ne{]}if nn /base get cc ctr
put nn /BitMaps get S ctr S sf 1 ne{dup dup length 1 sub dup 2 index S get sf
div put}if put /ctr ctr 1 add N}B /I{cc 1 add D}B /bop{userdict /bop-hook
known{bop-hook}if /SI save N @rigin 0 0 moveto}N /eop{clear SI restore
showpage userdict /eop-hook known{eop-hook}if}N /@start{userdict /start-hook
known{start-hook}if /VResolution X /Resolution X 1000 div /DVImag X /IE 256
array N 0 1 255{IE S 1 string dup 0 3 index put cvn put}for}N /p /show load N
/RMat[1 0 0 -1 0 0]N /BDot 260 string N /rulex 0 N /ruley 0 N /v{/ruley X
/rulex X V}B /V statusdict begin /product where{pop product dup length 7 ge{0
7 getinterval(Display)eq}{pop false}ifelse}{false}ifelse end{{gsave TR -.1 -.1
TR 1 1 scale rulex ruley false RMat{BDot}imagemask grestore}}{{gsave TR -.1
-.1 TR rulex ruley scale 1 1 false RMat{BDot}imagemask grestore}}ifelse B /a{
moveto}B /delta 0 N /tail{dup /delta X 0 rmoveto}B /M{S p delta add tail}B /b{
S p tail}B /c{-4 M}B /d{-3 M}B /e{-2 M}B /f{-1 M}B /g{0 M}B /h{1 M}B /i{2 M}B
/j{3 M}B /k{4 M}B /w{0 rmoveto}B /l{p -4 w}B /m{p -3 w}B /n{p -2 w}B /o{p -1 w
}B /q{p 1 w}B /r{p 2 w}B /s{p 3 w}B /t{p 4 w}B /x{0 S rmoveto}B /y{3 2 roll p
a}B /bos{/SS save N}B /eos{clear SS restore}B end
%%EndProcSet
TeXDict begin 1000 400 400 @start /Fa 9 118 400 360 dfs[<7FFFF0FFFFF8FFFFF87F
FFF00000000000000000000000007FFFF0FFFFF8FFFFF87FFFF0>21 12
126 148 29 61 D[<1FF0003FFC007FFE00781F00300780000380000380007F8007FF801FFF80
3FC3807C0380F00380E00380E00380E00380F007807C1F803FFFFC1FFDFC07F0FC>22
21 125 148 29 97 D[<FE0000FE0000FE00000E00000E00000E00000E00000E00000E00000E3F
000EFFC00FFFE00FE1F00F80700F00780F00380E003C0E001C0E001C0E001C0E001C0E001C0F00
3C0F00380F00780F80F00FC3E00FFFC00EFF80067E00>22 30 127 157
29 I[<00F8FC03FFFE07FFFE0F8F8C0E03801E03C01C01C01C01C01C01C01E03C00E03800F8F80
0FFF001FFE001CF8001C00001C00001E00000FFF801FFFF03FFFF87C00FC70001CF0001EE0000E
E0000EE0000EF0001E78003C3F01F81FFFF00FFFE001FF00>23 33 127
148 29 103 D[<01F00007FC001FFF003E0F803C07807803C07001C0E000E0E000E0E000E0E000
E0E000E0E000E0F001E07001C07803C03C07803E0F801FFF0007FC0001F000>19
21 125 148 29 111 D[<FE3F00FEFFC0FFFFE00FE1F00F80700F00780F00380E003C0E001C0E
001C0E001C0E001C0E001C0F003C0F00380F00780F80F00FC3E00FFFC00EFF800E7E000E00000E
00000E00000E00000E00000E00000E00000E0000FFE000FFE000FFE000>22
32 127 148 29 I[<FF87F0FF9FF8FFBFFC03FC3C03F01803E00003C00003C00003C000038000
038000038000038000038000038000038000038000038000FFFF00FFFF80FFFF00>22
21 126 148 29 114 D[<00C00001C00001C00001C00001C00001C00001C0007FFFE0FFFFE0FF
FFE001C00001C00001C00001C00001C00001C00001C00001C00001C00001C00001C07001C07001
C07001C0F001E1E000FFE0007FC0003F00>20 28 127 155 29 116 D[<FE0FE0FE0FE0FE0FE0
0E00E00E00E00E00E00E00E00E00E00E00E00E00E00E00E00E00E00E00E00E00E00E00E00E01E0
0E01E00F07E007FFFE03FFFE01FCFE>23 21 127 148 29 I E /Fb 7 118
400 360 dfs[<007C01C2030307070E0F1C0F3C003800780078007800F000F000F000F000F001
70037006301C18380FC0>16 21 123 148 26 99 D[<00007C0000CE00019E00039E00038C0003
00000700000700000700000700000E00000E00000E00000E0001FFF001FFF0001C00001C00001C
00001C00001C0000380000380000380000380000380000700000700000700000700000700000E0
0000E00000E00000E00001C00001C00001C00001C000038000738000F30000F300006600003C00
00>23 45 130 162 17 102 D[<00E000E001E000C00000000000000000000000000000000000
001E00330063806380C380C700C70007000E000E000E001C001C001C40386038C070C070803180
31001E00>11 34 124 161 17 105 D[<1E07803318E063B06063E070C3C070C38070C3807007
00E00700E00700E00700E00E01C00E01C00E03820E03831C03861C07061C070C1C030838031818
01E0>24 21 124 148 31 110 D[<007C0001C6000303000603800E03C01C03C03C03C03803C0
7803C07803C07803C0F00780F00780F00780F00F00F00E00701E00701C003038001860000F8000
>18 21 123 148 28 I[<006000E000E000E000E001C001C001C001C00380FFF8FFF803800700
0700070007000E000E000E000E001C001C001C101C18383038303860186018C00F00>13
31 124 158 19 116 D[<0F003011807021C07061C0E0C1C0E0C380E0C380E00381C00701C007
01C00701C00E03800E03800E03840E03860E070C0C070C0E070C0E0B1806131003E1E0>23
21 124 148 30 I E /Fc 2 61 438 432 dfs[<78FCFCFEFE7A020202020404040810102040>
7 18 123 133 17 59 D[<00000000E000000003E00000000FC00000003F00000000FC00000003
F00000000FC00000003F00000000FC00000003F00000000FC00000003F00000000FC00000003F0
0000000FC00000003F00000000FC00000000F000000000FC000000003F000000000FC000000003
F000000000FC000000003F000000000FC000000003F000000000FC000000003F000000000FC000
000003F000000000FC000000003F000000000FC000000003E000000000E0>35
35 123 159 47 I E /Fd 46 124 400 360 dfs[<000FC0000078300000E0080001803C000380
7C0007007C0007007C0007003800070000000700000007000000070000000700000007000000FF
FFFC00FFFFFC0007003C0007001C0007001C0007001C0007001C0007001C0007001C0007001C00
07001C0007001C0007001C0007001C0007001C0007001C0007001C0007001C0007001C007FF1FF
C07FF1FFC0>26 35 128 162 31 12 D[<000FC03F00007031E0C000E00B802001803E00F00380
7E01F007007C01F007007C01F007003C00E007001C000007001C000007001C000007001C000007
001C000007001C0000FFFFFFFFF0FFFFFFFFF007001C00F007001C007007001C007007001C0070
07001C007007001C007007001C007007001C007007001C007007001C007007001C007007001C00
7007001C007007001C007007001C007007001C007007001C00707FF1FFC7FF7FF1FFC7FF>40
35 128 162 47 14 D[<701CF83EFC3FFC3F741D04010401040104010802080210041004200840
10>16 15 126 162 28 34 D[<001000200040008001000300060004000C001800180018003000
300030007000600060006000E000E000E000E000E000E000E000E000E000E000E000E000600060
00600070003000300030001800180018000C0004000600030001000080004000200010>12
50 125 164 21 40 D[<800040002000100008000C0006000200030001800180018000C000C000
C000E0006000600060007000700070007000700070007000700070007000700070006000600060
00E000C000C000C00180018001800300020006000C0008001000200040008000>12
50 125 164 21 I[<70F8FCFC7404040404080810102040>6 15 124 132
16 44 D[<FFF0FFF0>12 2 127 139 19 I[<70F8F8F870>5 5 124 132
16 I[<70F8F8F870000000000000000000000070F8F8F870>5 21 124 148
16 58 D[<07F000181C00200E00400700F00780F80780F80780F80780700780000F00000E0000
1C0000380000700000600000C00000800000800001800001000001000001000001000001000001
000000000000000000000000000000000003800007C00007C00007C000038000>17
35 125 162 27 63 D[<0007F008003FFC1800FC073801F001B803C000F8078000780F0000381E
0000183E0000183C0000187C0000087C00000878000008F8000000F8000000F8000000F8000000
F8000000F8000000F8000000F8000000780000007C0000087C0000083C0000083E0000081E0000
100F0000100780002003C0004001F0018000FC0700003FFE000007F000>29
34 125 161 40 67 D[<FFFFF800FFFFFE0007800F80078003C0078001E0078000F00780007807
8000780780003C0780003C0780001E0780001E0780001E0780001F0780001F0780001F0780001F
0780001F0780001F0780001F0780001F0780001F0780001E0780001E0780003E0780003C078000
3C07800078078000F0078001E0078003C007800F80FFFFFF00FFFFF800>32
34 126 161 42 I[<FFFFFFE0FFFFFFE0078003E0078000E00780006007800020078000300780
0030078000100780001007802010078020100780200007802000078060000780E00007FFE00007
FFE0000780E0000780600007802000078020000780200007802000078000000780000007800000
0780000007800000078000000780000007800000FFFE0000FFFE0000>28
34 126 161 37 70 D[<FFFC3FFFFFFC3FFF078001E0078001E0078001E0078001E0078001E007
8001E0078001E0078001E0078001E0078001E0078001E0078001E0078001E007FFFFE007FFFFE0
078001E0078001E0078001E0078001E0078001E0078001E0078001E0078001E0078001E0078001
E0078001E0078001E0078001E0078001E0078001E0FFFC3FFFFFFC3FFF>32
34 126 161 41 72 D[<FFFCFFFC07800780078007800780078007800780078007800780078007
8007800780078007800780078007800780078007800780078007800780078007800780FFFCFFFC
>14 34 126 161 20 I[<FF800001FF80FF800001FF8007800001F00005C00002F00005C00002
F00004E00004F00004E00004F00004E00004F00004700008F00004700008F00004380010F00004
380010F00004380010F000041C0020F000041C0020F000041C0020F000040E0040F000040E0040
F00004070080F00004070080F00004070080F00004038100F00004038100F00004038100F00004
01C200F0000401C200F0000400E400F0000400E400F0000400E400F00004007800F00004007800
F0001F003000F000FFE0301FFF80FFE0301FFF80>41 34 126 161 51 77
D[<FF8007FFFFC007FF07C000F805E0002004F0002004F0002004780020047C0020043C002004
1E0020041E0020040F002004078020040780200403C0200401E0200401E0200400F0200400F820
0400782004003C2004003C2004001E2004000F2004000F20040007A0040003E0040003E0040001
E0040001E0040000E01F000060FFE00060FFE00020>32 34 126 161 41
I[<000FF00000781E0000E0070003C003C0078001E00F0000F01E0000781E0000783C00003C3C
00003C7C00003E7800001E7800001EF800001FF800001FF800001FF800001FF800001FF800001F
F800001FF800001F7800001E7C00003E7C00003E3C00003C3E00007C1E0000781E0000780F0000
F0078001E003C003C000E0070000781E00000FF000>32 34 125 161 43
I[<FFFFF800FFFFFE0007801F00078007C0078003C0078001E0078001E0078001F0078001F007
8001F0078001F0078001F0078001E0078003E0078003C00780078007801F0007FFFC0007800000
078000000780000007800000078000000780000007800000078000000780000007800000078000
00078000000780000007800000FFFC0000FFFC0000>28 34 126 161 38
I[<7FFFFFFC7FFFFFFC7803C03C6003C00C4003C0044003C004C003C006C003C0068003C00280
03C0028003C0028003C0020003C0000003C0000003C0000003C0000003C0000003C0000003C000
0003C0000003C0000003C0000003C0000003C0000003C0000003C0000003C0000003C0000003C0
000003C0000003C0000003C00001FFFF8001FFFF80>31 34 126 161 40
84 D[<FFFC07FFFFFC07FF078000F8078000200780002007800020078000200780002007800020
078000200780002007800020078000200780002007800020078000200780002007800020078000
20078000200780002007800020078000200780002007800020078000200380004003C0004001C0
008000E0018000F00300003C0E00001FFC000007F000>32 34 126 161
41 I[<1FF000381C007C06007C07007C0380380380000380000380007F8007C3801E03803C0380
780380780380F00384F00384F00384F00784780B843C11C80FE0F0>22 21
126 148 28 97 D[<0E0000FE0000FE00001E00000E00000E00000E00000E00000E00000E0000
0E00000E00000E00000E00000E1F800E60E00E80300F00380E001C0E001E0E000E0E000F0E000F
0E000F0E000F0E000F0E000F0E000F0E000E0E001E0E001C0F00380C80700C60E0081F80>24
35 127 162 31 I[<01FE000707000C0F801C0F80380F80780700700000F00000F00000F00000
F00000F00000F00000F000007000007800403800401C00800C010007060001F800>18
21 126 148 24 I[<0000700007F00007F00000F0000070000070000070000070000070000070
00007000007000007000007001F8700706700E01701C00F0380070780070700070F00070F00070
F00070F00070F00070F00070F000707000707800703800701C00F00C017807067F01F87F>24
35 126 162 31 I[<01FC000707000C03801C01C03801C07800E07000E0F000E0FFFFE0F00000
F00000F00000F00000F000007000007800203800201C00400E008007030000FC00>19
21 127 148 24 I[<003E0000E30001C780038F80030F80070700070000070000070000070000
070000070000070000070000FFF800FFF800070000070000070000070000070000070000070000
0700000700000700000700000700000700000700000700000700000700007FF8007FF800>17
35 128 162 17 I[<01F078071D9C0E0E1C1C07001C07003C07803C07803C07803C07801C0700
1C07000E0E000F1C0019F0001000001000001800001C00001FFF000FFFE00FFFF03800F8600018
40001CC0000CC0000CC0000C6000186000183800700E01C001FE00>22 32
127 148 28 I[<0E000000FE000000FE0000001E0000000E0000000E0000000E0000000E000000
0E0000000E0000000E0000000E0000000E0000000E0000000E1F80000E60E0000E8070000F0038
000F0038000E0038000E0038000E0038000E0038000E0038000E0038000E0038000E0038000E00
38000E0038000E0038000E0038000E0038000E003800FFE3FF80FFE3FF80>25
35 127 162 31 I[<1C003E003E003E001C00000000000000000000000000000000000E00FE00
FE001E000E000E000E000E000E000E000E000E000E000E000E000E000E000E000E00FFC0FFC0>
10 34 127 161 16 I[<0E0000FE0000FE00001E00000E00000E00000E00000E00000E00000E00
000E00000E00000E00000E00000E03FC0E03FC0E01E00E01800E02000E04000E08000E10000E38
000EF8000F1C000E1E000E0E000E07000E07800E03C00E01C00E01E00E01F0FFE3FEFFE3FE>23
35 127 162 29 107 D[<0E00FE00FE001E000E000E000E000E000E000E000E000E000E000E00
0E000E000E000E000E000E000E000E000E000E000E000E000E000E000E000E000E000E000E00FF
E0FFE0>11 35 127 162 16 I[<0E1FC07F00FE60E18380FE807201C01F003C00E00F003C00E0
0E003800E00E003800E00E003800E00E003800E00E003800E00E003800E00E003800E00E003800
E00E003800E00E003800E00E003800E00E003800E00E003800E00E003800E0FFE3FF8FFEFFE3FF
8FFE>39 21 127 148 47 I[<0E1F8000FE60E000FE8070001F0038000F0038000E0038000E00
38000E0038000E0038000E0038000E0038000E0038000E0038000E0038000E0038000E0038000E
0038000E0038000E003800FFE3FF80FFE3FF80>25 21 127 148 31 I[<00FC000703800E01C0
1C00E0380070780078700038F0003CF0003CF0003CF0003CF0003CF0003CF0003C700038780078
3800701C00E00E01C007038000FC00>22 21 127 148 28 I[<0E1F80FE60E0FE80700F00380E
001C0E001E0E001E0E000F0E000F0E000F0E000F0E000F0E000F0E000F0E001E0E001E0E001C0F
00380E80700E60E00E1F800E00000E00000E00000E00000E00000E00000E00000E0000FFE000FF
E000>24 31 127 148 31 I[<01F8200704600E02601C01603801E07800E07800E0F000E0F000
E0F000E0F000E0F000E0F000E0F000E07000E07800E03801E01C01E00C02E0070CE001F0E00000
E00000E00000E00000E00000E00000E00000E00000E0000FFE000FFE>23
31 126 148 29 I[<0E1E00FE6300FE87801E87800F03000F00000E00000E00000E00000E0000
0E00000E00000E00000E00000E00000E00000E00000E00000E0000FFF000FFF000>17
21 127 148 22 I[<0FC4303C600CC00CC004C004E004F0007F803FF00FF800FC001E800E8006
C006C006C004E00CD81887E0>15 21 126 148 22 I[<02000200020002000200060006000600
0E001E003FF8FFF80E000E000E000E000E000E000E000E000E000E000E040E040E040E040E040E
040708030801F0>14 31 127 158 21 I[<0E003800FE03F800FE03F8001E0078000E0038000E
0038000E0038000E0038000E0038000E0038000E0038000E0038000E0038000E0038000E003800
0E0038000E0078000E0078000700BC0003833F8000FC3F80>25 21 127
148 31 I[<FFC1FEFFC1FE1E00700E00200E002007004007004003808003808003808001C10001
C10000E20000E20000E200007400007400003800003800003800001000>23
21 127 148 29 I[<FF8FF87F80FF8FF87F801E01C01E000E00C00C000E00E008000E01E00800
0701601000070170100007023030000382382000038238200001C418400001C41C400001C41C40
0000E80C800000E80E800000E80E80000070070000007007000000700700000020020000>33
21 127 148 40 I[<FF83FEFF83FE0F01E007008003810003830001C20000E400007800007000
003800003C00004E00008E000187000103800201C00601C01E00E0FF03FEFF03FE>23
21 127 148 29 I[<FFC1FEFFC1FE1E00700E00200E0020070040070040038080038080038080
01C10001C10000E20000E20000E200007400007400003800003800003800001000001000002000
002000002000F84000F84000F88000B980006300003E0000>23 31 127
148 29 I[<FFFFFF>24 1 128 140 28 123 D E /Fe 29 118 400 360
dfs[<000C0038007000E001C003C0038007800F000F001E001E003E003C003C007C007C007C00
7800F800F800F800F800F800F800F800F800F800F800F80078007C007C007C003C003C003E001E
001E000F000F000780038003C001C000E000700038000C>14 49 124 164
24 40 D[<C000700038001C000E000F000700078003C003C001E001E001F000F000F000F800F8
00F80078007C007C007C007C007C007C007C007C007C007C007C007800F800F800F800F000F001
F001E001E003C003C0078007000F000E001C0038007000C000>14 49 125
164 24 I[<3C007E00FF00FF00FF80FF807F803D800180018003000300070006000C001C003800
2000>9 18 124 135 18 44 D[<3C7EFFFFFFFF7E3C0000000000003C7EFFFFFFFF7E3C>8
22 124 149 18 58 D[<0001FF0040001FFFC1C0007F80F3C001FC001FC003F0000FC007E00007
C00FC00003C01FC00003C03F800001C03F800001C07F800000C07F000000C07F000000C0FF0000
0000FF00000000FF00000000FF00000000FF00000000FF00000000FF00000000FF000000007F00
0000007F000000C07F800000C03F800000C03F800001C01FC00001800FC000018007E000030003
F000060001FC001C00007F807800001FFFE0000001FF0000>34 34 125
161 46 67 D[<FFFFFF8000FFFFFFF80007F001FC0007F0007F0007F0003F8007F0000FC007F0
000FE007F00007E007F00007F007F00003F007F00003F807F00003F807F00003F807F00003FC07
F00003FC07F00003FC07F00003FC07F00003FC07F00003FC07F00003FC07F00003FC07F00003FC
07F00003F807F00003F807F00003F807F00007F007F00007F007F0000FE007F0000FC007F0001F
8007F0007F0007F001FE00FFFFFFF800FFFFFFC000>38 34 126 161 49
I[<FFFFFFFC00FFFFFFFC0007F000FC0007F0003E0007F0001E0007F0000E0007F000060007F0
00060007F000060007F00C030007F00C030007F00C030007F00C000007F01C000007F03C000007
FFFC000007FFFC000007F03C000007F01C000007F00C000007F00C000007F00C018007F00C0180
07F000018007F000030007F000030007F000030007F000070007F000070007F0000F0007F0001F
0007F000FE00FFFFFFFE00FFFFFFFE00>33 34 126 161 42 I[<0001FF0020001FFFE0E0007F
8079E001FC001FE003F80007E007E00003E00FC00001E01FC00001E03F800000E03F800000E07F
800000607F000000607F00000060FF00000000FF00000000FF00000000FF00000000FF00000000
FF00000000FF0007FFFEFF0007FFFE7F00000FE07F00000FE07F80000FE03F80000FE03F80000F
E01FC0000FE00FE0000FE007E0000FE003F8000FE001FC001FE0007F8073E0001FFFE1E00001FF
8060>39 34 125 161 50 71 D[<FFFFE0FFFFE003F80003F80003F80003F80003F80003F80003
F80003F80003F80003F80003F80003F80003F80003F80003F80003F80003F80003F80003F80003
F80003F80003F80003F80003F80003F80003F80003F80003F80003F80003F800FFFFE0FFFFE0>
19 34 127 161 24 73 D[<FFF000001FFEFFF800003FFE07F800003FC007F800003FC006FC00
006FC006FC00006FC0067E0000CFC0067E0000CFC0063F00018FC0063F00018FC0063F00018FC0
061F80030FC0061F80030FC0060FC0060FC0060FC0060FC00607E00C0FC00607E00C0FC00607E0
0C0FC00603F0180FC00603F0180FC00601F8300FC00601F8300FC00600FC600FC00600FC600FC0
0600FC600FC006007EC00FC006007EC00FC006003F800FC006003F800FC006001F000FC006001F
000FC006001F000FC0FFF00E01FFFEFFF00E01FFFE>47 34 125 161 60
77 D[<0007FE0000003FFFC00000FE07F00003F801FC0007F000FE000FE0007F001FC0003F801F
80001F803F80001FC03F80001FC07F00000FE07F00000FE07F00000FE0FF00000FF0FF00000FF0
FF00000FF0FF00000FF0FF00000FF0FF00000FF0FF00000FF0FF00000FF0FF00000FF07F00000F
E07F80001FE07F80001FE03F80001FC01FC0003F801FC0003F800FE0007F0007F000FE0003F801
FC0000FE07F000003FFFC0000007FE0000>36 34 125 161 48 79 D[<FFFFFF8000FFFFFFF000
07F003F80007F001FC0007F000FE0007F0007F0007F0007F0007F0007F8007F0007F8007F0007F
8007F0007F8007F0007F8007F0007F0007F0007F0007F000FE0007F001FC0007F003F80007FFFF
F00007FFFF800007F000000007F000000007F000000007F000000007F000000007F000000007F0
00000007F000000007F000000007F000000007F000000007F000000007F0000000FFFF800000FF
FF800000>33 34 126 161 43 I[<FFFFFF0000FFFFFFE00007F007F80007F001FC0007F000FE
0007F0007F0007F0007F8007F0007F8007F0007F8007F0007F8007F0007F8007F0007F8007F000
7F0007F000FE0007F001FC0007F007F80007FFFFE00007FFFF800007F00FE00007F007F00007F0
03F80007F001FC0007F001FC0007F001FC0007F001FC0007F001FE0007F001FE0007F001FE0007
F001FE0307F001FF0307F000FF0707F000FF8EFFFF803FFCFFFF800FF8>40
34 126 161 48 82 D[<01FE020007FFCE001F01FE003C007E003C001E0078000E0078000E00F8
000600F8000600FC000600FC000000FF000000FFF000007FFF80003FFFE0003FFFF8001FFFFC00
07FFFE0003FFFF00003FFF000001FF0000003F8000001F8000001F80C0000F80C0000F80C0000F
80E0000F00E0000F00F0001E00FC001C00FF807800E7FFF000807FC000>25
34 125 161 36 I[<FFFF801FFEFFFF801FFE07F00000C007F00000C007F00000C007F00000C0
07F00000C007F00000C007F00000C007F00000C007F00000C007F00000C007F00000C007F00000
C007F00000C007F00000C007F00000C007F00000C007F00000C007F00000C007F00000C007F000
00C007F00000C007F00000C007F00000C007F00001C003F000018003F800018001F800038000FC
000700007E000E00003F807C00000FFFF0000000FF8000>39 34 126 161
49 85 D[<FF800000FF8000001F8000001F8000001F8000001F8000001F8000001F8000001F80
00001F8000001F8000001F8000001F8000001F87F0001FBFFC001FF03E001FC01F001F800F801F
800FC01F8007C01F8007E01F8007E01F8007E01F8007E01F8007E01F8007E01F8007E01F8007C0
1F8007C01F800FC01F800F801FC01F001E707E001C3FFC00180FE000>27
35 126 162 36 98 D[<00FF8007FFE00F83F01F03F03E03F07E03F07C01E07C0000FC0000FC00
00FC0000FC0000FC0000FC00007C00007E00007E00003F00301F00600FC0E007FF8000FE00>20
22 126 149 28 I[<00FE0007FF800F83E01F01E03E00F07E00F07C00F8FC00F8FC0078FFFFF8
FFFFF8FC0000FC0000FC0000FC00007E00007E00183E00381F00300F80F003FFC000FF00>21
22 126 149 29 101 D[<001F8000FFE001F1F003E3F007E3F00FC3F00FC1E00FC0000FC0000F
C0000FC0000FC0000FC000FFFE00FFFE000FC0000FC0000FC0000FC0000FC0000FC0000FC0000F
C0000FC0000FC0000FC0000FC0000FC0000FC0000FC0000FC0000FC0000FC0007FFC007FFC00>
20 35 126 162 20 I[<00FE0F8003FF9FC00F83E3C01F01F3C01E00F0003E00F8003E00F8003E
00F8003E00F8003E00F8001E00F0001F01F0000F83E0000BFF800008FE00001800000018000000
1C0000001FFFE0001FFFFC000FFFFF0007FFFF001FFFFF807C001FC078000FC0F80007C0F80007
C0F80007C07C000F803E001F001F807E000FFFFC0001FFE000>26 33 127
149 32 I[<0E003F807F807F807F807F803F800E00000000000000000000000000FF80FF801F80
1F801F801F801F801F801F801F801F801F801F801F801F801F801F801F801F801F80FFF0FFF0>
12 36 126 163 17 105 D[<FF80FF801F801F801F801F801F801F801F801F801F801F801F801F
801F801F801F801F801F801F801F801F801F801F801F801F801F801F801F801F801F801F801F80
FFF0FFF0>12 35 126 162 17 108 D[<FF03F000FF0FFC001F187E001F203E001F403F001F40
3F001F803F001F803F001F803F001F803F001F803F001F803F001F803F001F803F001F803F001F
803F001F803F001F803F001F803F001F803F00FFF1FFE0FFF1FFE0>27 22
125 149 36 110 D[<00FF0007FFE00F81F01F00F83E007C7C003E7C003E7C003EFC003FFC003F
FC003FFC003FFC003FFC003FFC003F7C003E7E007E3E007C1F00F80F81F007FFE000FF00>24
22 126 149 32 I[<FF87F000FFBFFC001FF07E001FC01F001F800F801F800FC01F800FC01F80
07E01F8007E01F8007E01F8007E01F8007E01F8007E01F8007E01F8007C01F800FC01F800FC01F
801F801FC01F001FF07E001FBFFC001F8FE0001F8000001F8000001F8000001F8000001F800000
1F8000001F8000001F800000FFF00000FFF00000>27 32 126 149 36 I[<FF0F80FF1FE01F33
F01F63F01F43F01F43F01FC1E01F80001F80001F80001F80001F80001F80001F80001F80001F80
001F80001F80001F80001F8000FFF800FFF800>20 22 126 149 27 114
D[<07F9801FFF80380780700380F00180F00180F80000FF0000FFF8007FFE003FFF001FFF8007
FF80003FC0C007C0C003C0E003C0E003C0F00380FC0F00EFFE00C3F800>18
22 126 149 26 I[<00C00000C00000C00000C00001C00001C00003C00007C0000FC0001FC000
FFFF00FFFF000FC0000FC0000FC0000FC0000FC0000FC0000FC0000FC0000FC0000FC0000FC000
0FC1800FC1800FC1800FC1800FC18007C18007E30003FE0000FC00>17 32
127 159 24 I[<FF81FF00FF81FF001F803F001F803F001F803F001F803F001F803F001F803F00
1F803F001F803F001F803F001F803F001F803F001F803F001F803F001F803F001F803F001F807F
001F80FF000FC1BF0007FF3FE001FC3FE0>27 22 125 149 36 I E /Ff
65 126 438 432 dfs[<00F0000003F8000003FC000007FC0000071E00000F0E00000E0E00000E
0E00000E0E00000E0E00000E0E00000E1E7FC00E3CFFC00E7CFFC007787FC007F0380007F03800
07E0380007C070000F8070001F8070003FC0E0007DC0E00078E0E00078E1C000F071C000F07B80
00F03B8000F01F0000F01F01C0F00E01C0781F81C0787FC3C03FFBFF803FF1FF801FE0FF000780
3C00>26 37 126 164 31 38 D[<000F001F003E007C00F801F003E007C00F800F001E001E003C
003C003C00780078007800F000F000F000F000F000F000F000F000F000F000F000780078007800
3C003C003C001E001E000F000F8007C003E001F000F8007C003F001F000F>16
47 119 169 31 40 D[<7000F8007C003E001F000F8007C003E001F000F000780078003C003C00
3C001E001E001E000F000F000F000F000F000F000F000F000F000F000F001E001E001E003C003C
003C0078007800F001F003E007C00F801F003E007C00F8007000>16 47
123 169 31 I[<000E0000001F0000001F0000001F0000001F0000001F0000001F0000001F0000
001F0000001F0000001F00007FFFFF80FFFFFFC0FFFFFFC0FFFFFFC07FFFFF80001F0000001F00
00001F0000001F0000001F0000001F0000001F0000001F0000001F0000001F0000000E0000>26
27 126 159 31 43 D[<1C003F007F007F807F803F801F8007800F800F001F007E00FC00F80060
00>9 15 117 134 31 I[<7FFFFEFFFFFFFFFFFFFFFFFF7FFFFE>24 5 125
148 31 I[<387CFEFEFE7C38>7 7 116 134 31 I[<00000E00001F00001F00003F00003E0000
7E00007C00007C0000FC0000F80001F80001F00003F00003E00007E00007C0000FC0000F80000F
80001F80001F00003F00003E00007E00007C0000FC0000F80001F80001F00001F00003F00003E0
0007E00007C0000FC0000F80001F80001F00003F00003E00003E00007E00007C0000FC0000F800
00F80000700000>24 47 125 169 31 I[<007E0001FF8003FFC007FFE00FC3F01F00F81E0078
3E007C3C003C7C003E78001E78001E78001EF0000FF0000FF0000FF0000FF0000FF0000FF0000F
F0000FF0000FF0000FF8001F78001E78001E78001E7C003E3C003C3E007C1F00F81F81F80FC3F0
07FFE003FFC001FF80007E00>24 37 125 164 31 I[<00700000700000F00000F00001F00003
F00007F0007FF000FFF000FEF000F8F00000F00000F00000F00000F00000F00000F00000F00000
F00000F00000F00000F00000F00000F00000F00000F00000F00000F00000F00000F00000F00000
F00000F0007FFFE0FFFFF0FFFFF07FFFE0>20 37 122 164 31 I[<00FE0003FFC00FFFE01FFF
F83E03FC7C007C78003EF0001EF0000FF8000FF8000F70000F00000F00000F00001E00001E0000
1E00003C00007C0000F80001F00003E00007C0000F80001F00003E00007C0001F80003F00007C0
000F800F1F000F3E000F7FFFFFFFFFFFFFFFFF7FFFFF>24 37 125 164
31 I[<1C3E7F7F7F3E1C0000000000000000000000001C3E7E7F7F3F1F0F1F1E3E7CF8F060>8
34 117 153 31 59 D[<00000E00001F00007F0000FF0003FE0007FC001FF0003FE000FF8001FF
0007FC000FF8003FE0007FC000FF0000FE0000FF00007FC0003FE0000FF80007FC0001FF0000FF
80003FE0001FF00007FC0003FE0000FF00007F00001F00000E>24 31 125
161 31 I[<7FFFFF80FFFFFFC0FFFFFFC0FFFFFFC07FFFFF800000000000000000000000000000
0000000000007FFFFF80FFFFFFC0FFFFFFC0FFFFFFC07FFFFF80>26 15
126 153 31 I[<700000F80000FE0000FF00007FC0003FE0000FF80007FC0001FF0000FF80003F
E0001FF00007FC0003FE0000FF00007F0000FF0003FE0007FC001FF0003FE000FF8001FF0007FC
000FF8003FE0007FC000FF0000FE0000F80000700000>24 31 125 161
31 I[<001E0000003F0000003F0000003F00000073800000738000007380000073800000738000
00F3C00000F3C00000F3C00000E1C00001E1E00001E1E00001E1E00001E1E00001E1E00003C0F0
0003C0F00003C0F00003C0F00007C0F80007FFF80007FFF80007FFF80007FFF8000F003C000F00
3C000F003C000F003C000F003C001E001E00FFC0FFC0FFE1FFC0FFE1FFC0FFC0FFC0>26
37 126 164 31 65 D[<FFFFC000FFFFF000FFFFF800FFFFFC000F007E000F003E000F001F000F
000F000F000F000F000F000F000F000F000F000F001F000F001E000F003E000F00FC000FFFF800
0FFFE0000FFFF8000FFFFC000F003E000F001F000F000F000F000F800F0007800F0007800F0007
800F0007800F0007800F000F800F000F000F001F000F007E00FFFFFE00FFFFFC00FFFFF800FFFF
E000>25 37 126 164 31 I[<001F81C0007FE1C001FFFBC003FFFFC007F03FC00FC01FC01F80
0FC01F0007C03E0007C03C0003C07C0003C0780003C0780003C078000000F0000000F0000000F0
000000F0000000F0000000F0000000F0000000F0000000F00000007800000078000000780003C0
7C0003C03C0003C03E0003C01F0007801F8007800FC00F0007F03F0003FFFE0001FFFC00007FF0
00001FC000>26 37 126 164 31 I[<7FFF8000FFFFE000FFFFF8007FFFFC000F00FE000F003E
000F001F000F000F800F000F800F0007800F0007C00F0003C00F0003C00F0003E00F0001E00F00
01E00F0001E00F0001E00F0001E00F0001E00F0001E00F0001E00F0001E00F0003E00F0003C00F
0003C00F0003C00F0007C00F000F800F000F800F001F000F003E000F00FE007FFFFC00FFFFF800
FFFFF0007FFF8000>27 37 127 164 31 I[<FFFFFF80FFFFFF80FFFFFF80FFFFFF800F000780
0F0007800F0007800F0007800F0007800F0007800F0000000F0000000F0000000F03C0000F03C0
000F03C0000FFFC0000FFFC0000FFFC0000FFFC0000F03C0000F03C0000F03C0000F0000000F00
00000F0000000F0001E00F0001E00F0001E00F0001E00F0001E00F0001E00F0001E0FFFFFFE0FF
FFFFE0FFFFFFE0FFFFFFE0>27 37 126 164 31 I[<FFFFFFC0FFFFFFC0FFFFFFC0FFFFFFC00F
0003C00F0003C00F0003C00F0003C00F0003C00F0003C00F0000000F0000000F0000000F01E000
0F01E0000F01E0000FFFE0000FFFE0000FFFE0000FFFE0000F01E0000F01E0000F01E0000F0000
000F0000000F0000000F0000000F0000000F0000000F0000000F0000000F0000000F000000FFF8
0000FFFC0000FFFC0000FFF80000>26 37 126 164 31 I[<003F070000FFC70001FFEF0007FF
FF0007E0FF000F807F001F003F001E001F003E001F003C000F007C000F0078000F0078000F00F8
000000F0000000F0000000F0000000F0000000F0000000F0000000F001FFC0F001FFE0F001FFE0
F801FFC078000F0078000F0078001F003C001F003E001F001E001F001F003F000F807F0007E0FF
0007FFFF0001FFEF0000FFCF00003F0F00>27 37 126 164 31 I[<7FE07FE0FFF0FFF0FFF0FF
F07FE07FE00F000F000F000F000F000F000F000F000F000F000F000F000F000F000F000F000F00
0F000F000F000F000F000F000F000FFFFF000FFFFF000FFFFF000FFFFF000F000F000F000F000F
000F000F000F000F000F000F000F000F000F000F000F000F000F000F000F000F000F000F000F00
0F000F007FE07FE0FFF0FFF0FFF0FFF07FE07FE0>28 37 127 164 31 I[<7FFFF8FFFFFCFFFF
FC7FFFF80078000078000078000078000078000078000078000078000078000078000078000078
000078000078000078000078000078000078000078000078000078000078000078000078000078
000078000078000078000078007FFFF8FFFFFCFFFFFC7FFFF8>22 37 124
164 31 I[<7FC07FC0FFE0FFC0FFE0FFC07FC07FC00E001C000E0038000E0078000E00F0000E00
E0000E01C0000E03C0000E0780000E0700000E0E00000E1E00000E3C00000E3E00000E7F00000E
F700000EE780000FC380000FC1C0000F81C0000F00E0000E00E0000E0070000E0070000E003800
0E0038000E001C000E001C000E000E000E000E007FC01FE0FFE03FE0FFE03FE07FC01FE0>27
37 127 164 31 75 D[<7FFC0000FFFE0000FFFE00007FFC000007800000078000000780000007
800000078000000780000007800000078000000780000007800000078000000780000007800000
078000000780000007800000078000000780000007800000078000000780000007800000078001
80078003C0078003C0078003C0078003C0078003C0078003C07FFFFFC0FFFFFFC0FFFFFFC07FFF
FFC0>26 37 126 164 31 I[<FE0007F0FF000FF0FF000FF0FF801FF01D801B801D801B801DC0
3B801DC03B801CC033801CE073801CE073801CE073801C6063801C70E3801C70E3801C30C3801C
39C3801C39C3801C39C3801C1983801C1983801C1F83801C0F03801C0F03801C0603801C000380
1C0003801C0003801C0003801C0003801C0003801C0003801C000380FF801FF0FF801FF0FF801F
F0FF801FF0>28 37 127 164 31 I[<7F00FF80FF81FFC0FF81FFC07FC0FF800EC01C000EC01C
000EE01C000E601C000E601C000E701C000E701C000E301C000E381C000E381C000E381C000E18
1C000E1C1C000E1C1C000E0C1C000E0E1C000E0E1C000E061C000E071C000E071C000E071C000E
031C000E039C000E039C000E019C000E019C000E01DC000E00DC000E00DC007FC0FC00FFE07C00
FFE07C007FC03C00>26 37 126 164 31 I[<03FFC01FFFF83FFFFC3FFFFC7E007E7C003E7800
1E78001EF8001FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF000
0FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF8001F78001E78001E7C003E7F00
FE3FFFFC3FFFFC1FFFF803FFC0>24 37 125 164 31 I[<FFFFC000FFFFF000FFFFF800FFFFFC
000F007E000F003F000F001F000F000F000F0007800F0007800F0007800F0007800F0007800F00
07800F000F000F001F000F003F000F007E000FFFFC000FFFF8000FFFF0000FFFC0000F0000000F
0000000F0000000F0000000F0000000F0000000F0000000F0000000F0000000F0000000F000000
FFF00000FFF00000FFF00000FFF00000>25 37 126 164 31 I[<7FFF0000FFFFE000FFFFF000
7FFFF8000F01FC000F007E000F001E000F001F000F000F000F000F000F000F000F000F000F001F
000F001E000F007E000F01FC000FFFF8000FFFF0000FFFE0000FFFF0000F01F8000F0078000F00
7C000F003C000F003C000F003C000F003C000F003C000F003C000F003C000F003C780F003C780F
003E787FE01FF0FFF01FF0FFF00FE07FE003C0>29 37 127 164 31 82
D[<01FC1C07FF9C0FFFFC3FFFFC3E03FC7C00FC78007CF0003CF0003CF0003CF0003CF0000078
00007C00003E00003FE0001FFE0007FFC001FFF0001FF80001FC00007C00001E00001E00000F00
000F70000FF0000FF0000FF0001FF8001EFC003EFF00FCFFFFF8FFFFF0E3FFE0E0FF80>24
37 125 164 31 I[<7FFFFFC0FFFFFFC0FFFFFFC0FFFFFFC0F01E03C0F01E03C0F01E03C0F01E
03C0F01E03C0F01E03C0001E0000001E0000001E0000001E0000001E0000001E0000001E000000
1E0000001E0000001E0000001E0000001E0000001E0000001E0000001E0000001E0000001E0000
001E0000001E0000001E0000001E0000001E0000001E000003FFF00007FFF80007FFF80003FFF0
00>26 37 126 164 31 I[<FFF0FFF0FFF0FFF0FFF0FFF0FFF0FFF00F000F000F000F000F000F
000F000F000F000F000F000F000F000F000F000F000F000F000F000F000F000F000F000F000F00
0F000F000F000F000F000F000F000F000F000F000F000F000F000F000F000F000F000F000F000F
000F000F000F0007801E0007801E0007C03E0003C03C0003F0FC0001FFF80000FFF000007FE000
001F8000>28 37 127 164 31 I[<7FC03FE0FFE07FF0FFE07FF07FC03FE00F000F000F000F00
0F000F000F000F0007801E0007801E0007801E0007801E0003C03C0003C03C0003C03C0003C03C
0003E07C0001E0780001E0780001E0780001E0780000F0F00000F0F00000F0F00000F0F0000070
E0000079E0000079E0000079E0000039C0000039C0000039C0000039C000001F8000001F800000
1F8000000F0000>28 37 127 164 31 I[<FF000FF0FF801FF0FF801FF0FF000FF0380001C038
0001C0380001C0380001C0380001C01C0003801C0003801C0003801C0003801C0003801C000380
1C0F03801C1F83800E1F87000E1F87000E3FC7000E39C7000E39C7000E39C7000E39C7000E30C7
000670E6000670E6000670E6000770EE0007606E0007606E0007606E0007606E0003E07C0003C0
3C0003C03C0003C03C00>28 37 127 164 31 I[<3FFFFF7FFFFF7FFFFF7FFFFF78001E78003C
78007C7800787800F07801F00001E00003E00003C0000780000F80000F00001E00003E00003C00
007C0000780000F00001F00001E00003C00007C00007800F0F800F0F000F1E000F3E000F3C000F
78000FFFFFFFFFFFFFFFFFFFFFFFFF>24 37 125 164 31 90 D[<FFFFFFFFFFFFFFFFF000F000
F000F000F000F000F000F000F000F000F000F000F000F000F000F000F000F000F000F000F000F0
00F000F000F000F000F000F000F000F000F000F000F000F000F000F000F000F000F000FFFFFFFF
FFFFFFFF>16 47 116 169 31 I[<700000F80000F80000FC00007C00007E00003E00003E0000
3F00001F00001F80000F80000FC00007C00007E00003E00003F00001F00001F00001F80000F800
00FC00007C00007E00003E00003F00001F00001F80000F80000F80000FC00007C00007E00003E0
0003F00001F00001F80000F80000FC00007C00007C00007E00003E00003F00001F00001F00000E
>24 47 125 169 31 I[<FFFFFFFFFFFFFFFF000F000F000F000F000F000F000F000F000F000F
000F000F000F000F000F000F000F000F000F000F000F000F000F000F000F000F000F000F000F00
0F000F000F000F000F000F000F000F000F000FFFFFFFFFFFFFFFFF>16 47
126 169 31 I[<7FFFFEFFFFFFFFFFFFFFFFFF7FFFFE>24 5 125 126 31
95 D[<07FC00001FFF00003FFFC0003FFFE0003E03F0001C01F0000000F8000000780000007800
00007800007FF80003FFF8000FFFF8003FE078007E00780078007800F0007800F0007800F00078
00F00078007800F8007E03F8003FFFFFE03FFFFFE00FFE3FE003F00FE0>27
26 125 153 31 97 D[<FF800000FF800000FF800000FF80000007800000078000000780000007
8000000780000007800000078000000783E000079FF80007BFFE0007FFFF0007F83F0007E00F80
07C0078007C003C0078003C0078003E0078001E0078001E0078001E0078001E0078001E0078001
E0078003E0078003C007C007C007C0078007E00F8007F83F0007FFFE0007BFFC00079FF8000387
E000>27 37 127 164 31 I[<007FC001FFF007FFF80FFFF81F80F83E00703C00007800007800
00F80000F00000F00000F00000F00000F00000F00000F800007800007C00783E00783F00F81FC1
F00FFFE007FFE001FF80007E00>21 26 123 153 31 I[<0007FC000007FC000007FC000007FC
0000003C0000003C0000003C0000003C0000003C0000003C0000003C0000FC3C0003FF3C0007FF
BC000FFFFC001F81FC003E00FC003C007C007C003C0078003C00F8003C00F0003C00F0003C00F0
003C00F0003C00F0003C00F0003C00F8003C0078007C0078007C003C00FC003E01FC001F83FC00
1FFFFFE007FFBFE003FE3FE000F83FE0>27 37 126 164 31 I[<007F0001FFC007FFE00FFFF0
1F81F83F00783C003C7C003C78001E78001EFFFFFEFFFFFEFFFFFEFFFFFEF00000F00000780000
7800007C001E3E001E1F803E1FE07C0FFFF803FFF001FFE0003F80>23 26
125 153 31 I[<0001F80007FC000FFE001FFE003E3E007C1C0078000078000078000078000078
007FFFFCFFFFFCFFFFFCFFFFFC0078000078000078000078000078000078000078000078000078
000078000078000078000078000078000078000078000078000078007FFFF87FFFF87FFFF87FFF
F8>23 37 126 164 31 I[<00FC0F8003FF3FC007FFFFE00FFFFFE00F87E1C01F03E0001E01E0
003C00F0003C00F0003C00F0003C00F0003C00F0003C00F0001E01E0001F03E0000F87C0000FFF
C0001FFF80001FFF00001CFC00001C0000001C0000000E0000000FFFE0001FFFF8003FFFFE003C
001F007800078070000380E00001C0E00001C0E00001C0E00001C0700003807C000F803F003F00
1FFFFE000FFFFC0003FFF000007F8000>27 40 126 153 31 I[<FF800000FF800000FF800000
FF800000078000000780000007800000078000000780000007800000078000000787E000079FF0
0007BFF80007FFFC0007F83C0007E01E0007C01E0007C01E0007801E0007801E0007801E000780
1E0007801E0007801E0007801E0007801E0007801E0007801E0007801E0007801E0007801E0007
801E00FFFC7FF0FFFC7FF0FFFC7FF0FFFC7FF0>28 37 127 164 31 I[<00300000780000FC00
00FC000078000030000000000000000000000000000000000000007FFC007FFC007FFC007FFC00
003C00003C00003C00003C00003C00003C00003C00003C00003C00003C00003C00003C00003C00
003C00003C00003C00003C00003C007FFFFCFFFFFEFFFFFE7FFFFC>23 38
124 165 31 I[<FF000000FF000000FF000000FF00000007000000070000000700000007000000
070000000700000007000000070FFF80070FFF80070FFF80070FFF800700F0000701E0000703C0
0007078000070F0000071E0000073C0000077E0000077F000007E7800007E3800007C1C0000781
E0000700E00007007000070078000700380007001C00FFF8FFE0FFF8FFE0FFF8FFE0FFF8FFE0>
27 37 126 164 31 107 D[<FFFC00FFFC00FFFC00FFFC00003C00003C00003C00003C00003C00
003C00003C00003C00003C00003C00003C00003C00003C00003C00003C00003C00003C00003C00
003C00003C00003C00003C00003C00003C00003C00003C00003C00003C00003C00FFFFFFFFFFFF
FFFFFFFFFFFF>24 37 125 164 31 I[<FC781E00FDFC7F00FFFEFF80FFFFFF801F0FC3C01E07
81C01E0781C01E0781C01C0701C01C0701C01C0701C01C0701C01C0701C01C0701C01C0701C01C
0701C01C0701C01C0701C01C0701C01C0701C01C0701C01C0701C0FF8FE3F8FF9FE7F8FF9FE7F8
FF8FE3F8>29 26 128 153 31 I[<FF87E000FF9FF000FFBFF800FFFFFC0007F83C0007E01E00
07C01E0007C01E0007801E0007801E0007801E0007801E0007801E0007801E0007801E0007801E
0007801E0007801E0007801E0007801E0007801E0007801E00FFFC7FF0FFFC7FF0FFFC7FF0FFFC
7FF0>28 26 127 153 31 I[<00FC0003FF0007FF801FFFE01F87E03E01F07C00F87800787800
78F0003CF0003CF0003CF0003CF0003CF0003CF0003CF8007C7800787C00F87C00F83E01F01F87
E01FFFE007FF8003FF0000FC00>22 26 124 153 31 I[<FF83E000FF9FF800FFBFFE00FFFFFF
0007F83F0007E00F8007C0078007C003C0078003C0078003E0078001E0078001E0078001E00780
01E0078001E0078001E0078003E0078003C007C007C007C0078007E00F8007F83F0007FFFE0007
BFFC00079FF8000787E00007800000078000000780000007800000078000000780000007800000
0780000007800000FFFC0000FFFC0000FFFC0000FFFC0000>27 39 127
153 31 I[<FFE07E00FFE1FF80FFE7FFC0FFEFFFC001FF87C001FE038001FC000001F8000001F0
000001F0000001F0000001E0000001E0000001E0000001E0000001E0000001E0000001E0000001
E0000001E0000001E0000001E00000FFFFF000FFFFF000FFFFF000FFFFF000>26
26 126 153 31 114 D[<03FC700FFFF03FFFF07FFFF07C03F0F801F0F000F0F000F0F000F07C
00007FE0001FFF0007FFC000FFE00003F00000F870003CF0003CF0003CF8003CFC007CFF01F8FF
FFF0FFFFF0E7FFC0E1FE00>22 26 124 153 31 I[<0070000000F0000000F0000000F0000000
F0000000F0000000F000007FFFFE00FFFFFE00FFFFFE00FFFFFE0000F0000000F0000000F00000
00F0000000F0000000F0000000F0000000F0000000F0000000F0000000F0000000F0000000F007
8000F0078000F0078000F0078000F80F00007C1F00007FFE00003FFC00001FF8000007E000>25
33 127 160 31 I[<FF83FE00FF83FE00FF83FE00FF83FE0007801E0007801E0007801E000780
1E0007801E0007801E0007801E0007801E0007801E0007801E0007801E0007801E0007801E0007
801E0007801E0007803E0007803E0007C0FE0003FFFFF003FFFFF001FF9FF0007E1FF0>28
26 127 153 31 I[<7FE07FE0FFF0FFF0FFF0FFF07FE07FE007000E0007000E0007801E000380
1C0003801C0003C03C0001C0380001C0380001E0780000E0700000E0700000E070000070E00000
70E0000070E0000039C0000039C0000039C000001F8000001F8000001F8000000F0000>28
26 127 153 31 I[<7FF0FFC07FF1FFE07FF1FFE07FF0FFC003C0380001E0700000E0F0000070
E0000079C000003FC000001F8000000F0000000E0000000F0000001F8000003B80000039C00000
70E00000E0F00001E0700001C0380003801C007FE07FE0FFF0FFF0FFF0FFF07FE07FE0>28
26 127 153 31 120 D[<3FFFFF807FFFFF807FFFFF807FFFFF8078003F0078007E007800FC00
7801F8000003F0000007E000000FC000001F8000003F0000007E000000FC000001F8000003F000
0007E007800FC007801F8007803F0007807E000780FFFFFF80FFFFFF80FFFFFF80FFFFFF80>25
26 126 153 31 122 D[<00007F0003FF000FFF001FFF001F00003C00003C00003C00003C0000
3C00003C00003C00003C00003C00003C00003C00003C00003C00003C00007C0000F8007FF800FF
E000FFC000FFE0007FF80000F800007C00003C00003C00003C00003C00003C00003C00003C0000
3C00003C00003C00003C00003C00003C00003C00001F00001FFF000FFF0003FF00007F>24
47 125 169 31 I[<7E0000FFC000FFF000FFF80000F800003C00003C00003C00003C00003C00
003C00003C00003C00003C00003C00003C00003C00003C00003C00003E00001F00001FFE0007FF
0003FF0007FF001FFE001F00003E00003C00003C00003C00003C00003C00003C00003C00003C00
003C00003C00003C00003C00003C00003C0000F800FFF800FFF000FFC0007E0000>24
47 125 169 31 125 D E /Fg 47 123 438 432 dfs[<0001FF81FE00001FFFEFFF80007F80FF
87C000FC00FE0FE001F801FE0FE003F801FC0FE007F001FC0FE007F001FC07C007F001FC000007
F001FC000007F001FC000007F001FC000007F001FC000007F001FC000007F001FC0000FFFFFFFF
F800FFFFFFFFF800FFFFFFFFF80007F001FC000007F001FC000007F001FC000007F001FC000007
F001FC000007F001FC000007F001FC000007F001FC000007F001FC000007F001FC000007F001FC
000007F001FC000007F001FC000007F001FC000007F001FC000007F001FC000007F001FC000007
F001FC000007F001FC000007F001FC000007F001FC00007FFF1FFFE0007FFF1FFFE0007FFF1FFF
E000>43 42 127 169 41 11 D[<00030007000E001C0038007000F001E003C003C007C007800F
800F001F001F003F003E003E007E007E007E007C007C00FC00FC00FC00FC00FC00FC00FC00FC00
FC00FC00FC00FC007C007C007E007E007E003E003E003F001F001F000F000F80078007C003C003
C001E000F000700038001C000E00070003>16 60 122 172 27 40 D[<8000C000E00070003800
1C001E000F000780078007C003C003E001E001F001F001F800F800F800FC00FC00FC007C007C00
7E007E007E007E007E007E007E007E007E007E007E007E007C007C00FC00FC00FC00F800F801F8
01F001F001E003E003C007C0078007800F001E001C0038007000E000C0008000>15
60 123 172 27 I[<1C007F007F00FF80FFC0FFC07FC07FC01CC000C000C00180018001800300
030006000C00180030002000>10 21 123 136 19 44 D[<FFFF80FFFF80FFFF80FFFF80FFFF80
FFFF80>17 6 127 144 23 I[<000E00001E00007E0007FE00FFFE00FFFE00F8FE0000FE0000FE
0000FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE
0000FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE
0000FE007FFFFE7FFFFE7FFFFE>23 39 123 166 34 49 D[<000003800000000007C000000000
07C0000000000FE0000000000FE0000000000FE0000000001FF0000000001FF0000000003FF800
0000003FF8000000003FF80000000073FC0000000073FC00000000F3FE00000000E1FE00000000
E1FE00000001C0FF00000001C0FF00000003C0FF80000003807F80000007807FC0000007003FC0
000007003FC000000E003FE000000E001FE000001E001FF000001C000FF000001FFFFFF000003F
FFFFF800003FFFFFF80000780007FC0000700003FC0000700003FC0000E00001FE0000E00001FE
0001E00001FF0001C00000FF0001C00000FF00FFFE001FFFFEFFFE001FFFFEFFFE001FFFFE>47
41 126 168 53 65 D[<FFFFFFF80000FFFFFFFF8000FFFFFFFFC00003F8001FF00003F8000FF8
0003F80007FC0003F80003FC0003F80003FC0003F80003FE0003F80001FE0003F80001FE0003F8
0001FE0003F80003FE0003F80003FC0003F80003FC0003F80007F80003F8000FF00003F8001FE0
0003F800FFC00003FFFFFE000003FFFFFFE00003F80007F00003F80003FC0003F80001FE0003F8
0001FE0003F80000FF0003F80000FF0003F80000FF8003F80000FF8003F80000FF8003F80000FF
8003F80000FF8003F80000FF8003F80000FF0003F80001FF0003F80003FE0003F80007FC0003F8
001FF800FFFFFFFFF000FFFFFFFFC000FFFFFFFE0000>41 41 125 168
50 I[<00003FF001800003FFFE0380000FFFFF8780003FF007DF8000FF8001FF8001FE00007F80
03FC00003F8007F000001F800FF000000F801FE0000007801FE0000007803FC0000007803FC000
0003807FC0000003807F80000003807F8000000000FF8000000000FF8000000000FF8000000000
FF8000000000FF8000000000FF8000000000FF8000000000FF8000000000FF80000000007F8000
0000007F80000000007FC0000003803FC0000003803FC0000003801FE0000003801FE000000700
0FF00000070007F000000E0003FC00001E0001FE00003C0000FF8000F800003FF007E000000FFF
FFC0000003FFFF000000003FF80000>41 41 124 168 51 I[<FFFFFFF80000FFFFFFFF8000FF
FFFFFFE00003FC001FF80003FC0007FC0003FC0001FE0003FC0000FF0003FC00007F8003FC0000
3FC003FC00001FC003FC00001FE003FC00001FE003FC00000FF003FC00000FF003FC00000FF003
FC00000FF003FC00000FF803FC00000FF803FC00000FF803FC00000FF803FC00000FF803FC0000
0FF803FC00000FF803FC00000FF803FC00000FF803FC00000FF803FC00000FF003FC00000FF003
FC00000FF003FC00001FE003FC00001FE003FC00001FC003FC00003FC003FC00007F8003FC0000
7F0003FC0001FE0003FC0003FC0003FC001FF800FFFFFFFFE000FFFFFFFF8000FFFFFFFC0000>
45 41 125 168 54 I[<FFFFFFFFE0FFFFFFFFE0FFFFFFFFE003FC001FE003FC0007F003FC0001
F003FC0001F003FC0000F003FC00007003FC00007003FC00007003FC01C07803FC01C03803FC01
C03803FC01C03803FC03C00003FC03C00003FC0FC00003FFFFC00003FFFFC00003FFFFC00003FC
0FC00003FC03C00003FC03C00003FC01C00E03FC01C00E03FC01C00E03FC01C01C03FC00001C03
FC00001C03FC00001C03FC00003C03FC00003803FC00007803FC0000F803FC0001F803FC0003F8
03FC001FF8FFFFFFFFF0FFFFFFFFF0FFFFFFFFF0>39 41 125 168 46 I[<FFFFFFFFC0FFFFFF
FFC0FFFFFFFFC003FC003FC003FC000FE003FC0003E003FC0001E003FC0001E003FC0000E003FC
0000E003FC0000E003FC0000F003FC03807003FC03807003FC03807003FC03800003FC07800003
FC07800003FC1F800003FFFF800003FFFF800003FFFF800003FC1F800003FC07800003FC078000
03FC03800003FC03800003FC03800003FC03800003FC00000003FC00000003FC00000003FC0000
0003FC00000003FC00000003FC00000003FC00000003FC000000FFFFFC0000FFFFFC0000FFFFFC
0000>36 41 125 168 44 I[<00007FE003000003FFFC0700001FFFFF0F00003FF00FFF0000FF
8001FF0001FE0000FF0003F800003F0007F000003F000FF000001F001FE000000F001FE000000F
003FC000000F003FC0000007007FC0000007007F80000007007F8000000000FF8000000000FF80
00000000FF8000000000FF8000000000FF8000000000FF8000000000FF8000000000FF80000000
00FF8001FFFFF87F8001FFFFF87F8001FFFFF87FC00000FF003FC00000FF003FC00000FF001FE0
0000FF001FE00000FF000FF00000FF0007F00000FF0003F80000FF0001FE0000FF0000FF8001FF
00003FF007BF00001FFFFF1F000003FFFE0F0000007FF00300>45 41 124
168 55 I[<FFFFF01FFFFEFFFFF01FFFFEFFFFF01FFFFE03FC00007F8003FC00007F8003FC0000
7F8003FC00007F8003FC00007F8003FC00007F8003FC00007F8003FC00007F8003FC00007F8003
FC00007F8003FC00007F8003FC00007F8003FC00007F8003FC00007F8003FC00007F8003FFFFFF
FF8003FFFFFFFF8003FFFFFFFF8003FC00007F8003FC00007F8003FC00007F8003FC00007F8003
FC00007F8003FC00007F8003FC00007F8003FC00007F8003FC00007F8003FC00007F8003FC0000
7F8003FC00007F8003FC00007F8003FC00007F8003FC00007F8003FC00007F8003FC00007F80FF
FFF01FFFFEFFFFF01FFFFEFFFFF01FFFFE>47 41 125 168 55 I[<FFFFFCFFFFFCFFFFFC01FE
0001FE0001FE0001FE0001FE0001FE0001FE0001FE0001FE0001FE0001FE0001FE0001FE0001FE
0001FE0001FE0001FE0001FE0001FE0001FE0001FE0001FE0001FE0001FE0001FE0001FE0001FE
0001FE0001FE0001FE0001FE0001FE0001FE0001FE0001FE00FFFFFCFFFFFCFFFFFC>22
41 126 168 26 I[<FFFFF001FFFCFFFFF001FFFCFFFFF001FFFC03FC00001E0003FC00003C00
03FC0000780003FC0000F00003FC0001E00003FC0003C00003FC0007000003FC001E000003FC00
3C000003FC0078000003FC00F0000003FC01E0000003FC0380000003FC07C0000003FC1FC00000
03FC3FE0000003FC7FF0000003FCFFF8000003FDE7F8000003FF83FC000003FF01FE000003FE01
FF000003FC00FF000003FC007F800003FC003FC00003FC003FC00003FC001FE00003FC000FF000
03FC000FF80003FC0007F80003FC0003FC0003FC0001FE0003FC0001FF0003FC0000FF0003FC00
007F80FFFFF00FFFFEFFFFF00FFFFEFFFFF00FFFFE>47 41 125 168 55
75 D[<FFFFFC0000FFFFFC0000FFFFFC000003FC00000003FC00000003FC00000003FC00000003
FC00000003FC00000003FC00000003FC00000003FC00000003FC00000003FC00000003FC000000
03FC00000003FC00000003FC00000003FC00000003FC00000003FC00000003FC00000003FC0000
0003FC00000003FC0001C003FC0001C003FC0001C003FC0001C003FC0003C003FC00038003FC00
038003FC00078003FC00078003FC000F8003FC000F8003FC001F8003FC007F8003FC01FF00FFFF
FFFF00FFFFFFFF00FFFFFFFF00>34 41 125 168 42 I[<FFFE0000001FFFC0FFFE0000001FFF
C0FFFF0000003FFFC003FF0000003FF00003FF0000003FF00003BF80000077F00003BF80000077
F000039FC00000E7F000039FC00000E7F000038FE00001C7F000038FE00001C7F0000387F00003
87F0000387F0000387F0000387F0000387F0000383F8000707F0000383F8000707F0000381FC00
0E07F0000381FC000E07F0000380FE001C07F0000380FE001C07F0000380FF003807F00003807F
003807F00003807F003807F00003803F807007F00003803F807007F00003801FC0E007F0000380
1FC0E007F00003800FE1C007F00003800FE1C007F00003800FE1C007F000038007F38007F00003
8007F38007F000038003FF0007F000038003FF0007F000038001FE0007F000038001FE0007F000
038000FC0007F000038000FC0007F000FFFE00FC01FFFFC0FFFE007801FFFFC0FFFE007801FFFF
C0>58 41 125 168 66 I[<FFFC0000FFFEFFFE0000FFFEFFFF0000FFFE03FF8000038003FF80
00038003BFC0000380039FE0000380039FF0000380038FF80003800387F80003800383FC000380
0381FE0003800381FF0003800380FF80038003807FC0038003803FC0038003801FE0038003800F
F0038003800FF80380038007FC0380038003FC0380038001FE0380038000FF0380038000FF8380
0380007FC3800380003FE3800380001FE3800380000FF38003800007FB8003800007FF80038000
03FF8003800001FF8003800000FF80038000007F80038000007F80038000003F80038000001F80
038000000F80FFFE00000780FFFE00000380FFFE00000380>47 41 125
168 55 I[<0000FFE000000007FFFC0000003FC07F8000007F001FC00001FC0007F00003F80003
F80007F00001FC000FF00001FE001FE00000FF001FE00000FF003FC000007F803FC000007F807F
C000007FC07F8000003FC07F8000003FC07F8000003FC0FF8000003FE0FF8000003FE0FF800000
3FE0FF8000003FE0FF8000003FE0FF8000003FE0FF8000003FE0FF8000003FE0FF8000003FE0FF
8000003FE07F8000003FC07FC000007FC07FC000007FC03FC000007F803FC000007F801FE00000
FF001FE00000FF000FF00001FE0007F00001FC0003F80003F80001FC0007F00000FF001FE00000
3FC07F8000000FFFFE00000000FFE00000>43 41 124 168 53 I[<FFFFFFF800FFFFFFFF00FF
FFFFFFC003FC003FE003FC000FF003FC0007F803FC0007FC03FC0003FC03FC0003FE03FC0003FE
03FC0003FE03FC0003FE03FC0003FE03FC0003FE03FC0003FE03FC0003FC03FC0007FC03FC0007
F803FC000FF003FC003FE003FFFFFF8003FFFFFE0003FC00000003FC00000003FC00000003FC00
000003FC00000003FC00000003FC00000003FC00000003FC00000003FC00000003FC00000003FC
00000003FC00000003FC00000003FC00000003FC000000FFFFF00000FFFFF00000FFFFF00000>
39 41 125 168 48 I[<FFFFFFE00000FFFFFFFE0000FFFFFFFF800003FC007FE00003FC000FF0
0003FC0007F80003FC0007FC0003FC0003FC0003FC0003FE0003FC0003FE0003FC0003FE0003FC
0003FE0003FC0003FE0003FC0003FE0003FC0003FC0003FC0007F80003FC0007F80003FC001FE0
0003FC007FC00003FFFFFE000003FFFFF0000003FC00FC000003FC007F000003FC003F800003FC
003F800003FC001FC00003FC001FE00003FC001FE00003FC001FE00003FC001FE00003FC001FE0
0003FC001FF00003FC001FF00003FC001FF00003FC001FF00703FC001FF80703FC000FF80703FC
0007F80EFFFFF003FE1CFFFFF001FFF8FFFFF0003FF0>48 41 125 168
53 82 D[<007F806003FFF0E007FFF9E00F807FE01F001FE03E0007E07C0003E07C0001E0FC00
01E0FC0001E0FC0000E0FE0000E0FE0000E0FF000000FFC000007FFE00007FFFE0003FFFFC001F
FFFE000FFFFF8007FFFFC003FFFFE000FFFFE00007FFF000007FF000000FF8000007F8000003F8
600001F8E00001F8E00001F8E00001F8F00001F0F00001F0F80003F0FC0003E0FF0007C0FFE01F
80F3FFFF00E0FFFE00C01FF000>29 41 124 168 39 I[<7FFFFFFFFFC07FFFFFFFFFC07FFFFF
FFFFC07F803FC03FC07E003FC007C078003FC003C078003FC003C070003FC001C0F0003FC001E0
F0003FC001E0E0003FC000E0E0003FC000E0E0003FC000E0E0003FC000E0E0003FC000E000003F
C0000000003FC0000000003FC0000000003FC0000000003FC0000000003FC0000000003FC00000
00003FC0000000003FC0000000003FC0000000003FC0000000003FC0000000003FC0000000003F
C0000000003FC0000000003FC0000000003FC0000000003FC0000000003FC0000000003FC00000
00003FC0000000003FC00000007FFFFFE000007FFFFFE000007FFFFFE000>43
40 126 167 49 I[<FFFFF001FFFCFFFFF001FFFCFFFFF001FFFC03FC0000070003FC00000700
03FC0000070003FC0000070003FC0000070003FC0000070003FC0000070003FC0000070003FC00
00070003FC0000070003FC0000070003FC0000070003FC0000070003FC0000070003FC00000700
03FC0000070003FC0000070003FC0000070003FC0000070003FC0000070003FC0000070003FC00
00070003FC0000070003FC0000070003FC0000070003FC0000070003FC0000070003FC00000700
01FC00000E0001FE00000E0000FE00001C00007E00001C00007F00003800003FC000F000000FF0
07E0000007FFFFC0000001FFFF000000001FF80000>46 41 125 168 54
I[<7FFFF81FFFF07FFFF81FFFF07FFFF81FFFF001FF0000780000FF8000F000007FC001E00000
7FC001C000003FE003C000001FF0078000000FF80F0000000FF80E00000007FC1E00000003FE3C
00000003FE7800000001FF7000000000FFF0000000007FE0000000007FC0000000003FE0000000
001FF0000000001FF0000000001FF8000000001FFC000000003FFE000000007BFE00000000F1FF
00000000E0FF80000001E0FFC0000003C07FC0000007803FE0000007001FF000000F001FF00000
1E000FF800003C0007FC0000380003FE0000780003FE0000F00001FF0000E00000FF80FFFF801F
FFFEFFFF801FFFFEFFFF801FFFFE>47 41 126 168 53 88 D[<3FFFFFFF803FFFFFFF803FFFFF
FF803FF000FF003F8001FE003F0003FE003E0003FC003C0007F8007C000FF80078000FF0007800
1FE00070003FE00070003FC00070007F80007000FF80000000FF00000001FE00000003FE000000
03FC00000007F80000000FF80000000FF00000001FE00000003FE00000003FC001C0007F8001C0
00FF8001C000FF0001C001FE0001C003FE0003C003FC0003C007F80003C00FF80007800FF00007
801FE0000F803FE0001F803FC0007F807F8001FF80FFFFFFFF80FFFFFFFF80FFFFFFFF80>34
41 124 168 43 90 D[<01FF800007FFF0000F81F8001FC07E001FC07E001FC03F000F803F8007
003F8000003F8000003F8000003F80000FFF8000FFFF8007FC3F800FE03F803F803F803F003F80
7F003F80FE003F80FE003F80FE003F80FE003F807E007F807F00DF803F839FFC0FFF0FFC01FC03
FC>30 27 126 154 33 97 D[<FFE0000000FFE0000000FFE00000000FE00000000FE00000000F
E00000000FE00000000FE00000000FE00000000FE00000000FE00000000FE00000000FE0000000
0FE00000000FE00000000FE1FE00000FE7FF80000FFE07E0000FF801F0000FF000F8000FE000FC
000FE000FE000FE0007F000FE0007F000FE0007F000FE0007F800FE0007F800FE0007F800FE000
7F800FE0007F800FE0007F800FE0007F800FE0007F000FE0007F000FE0007F000FE000FE000FE0
00FC000FF001F8000FF803F0000F9E07E0000F07FF80000E01FC0000>33
42 126 169 39 I[<001FF80000FFFE0003F01F0007E03F800FC03F801F803F803F801F007F80
0E007F0000007F000000FF000000FF000000FF000000FF000000FF000000FF000000FF0000007F
0000007F0000007F8000003F8001C01F8001C00FC0038007E0070003F01E0000FFFC00001FE000
>26 27 126 154 31 I[<00003FF80000003FF80000003FF800000003F800000003F800000003
F800000003F800000003F800000003F800000003F800000003F800000003F800000003F8000000
03F800000003F800001FE3F80000FFFBF80003F03FF80007E00FF8000FC007F8001F8003F8003F
8003F8007F0003F8007F0003F8007F0003F800FF0003F800FF0003F800FF0003F800FF0003F800
FF0003F800FF0003F800FF0003F8007F0003F8007F0003F8007F0003F8003F8003F8001F8003F8
000F8007F80007C00FF80003F03BFF8000FFF3FF80003FC3FF80>33 42
126 169 39 I[<003FE00001FFF80003F07E0007C01F000F801F801F800F803F800FC07F000FC0
7F0007C07F0007E0FF0007E0FF0007E0FFFFFFE0FFFFFFE0FF000000FF000000FF0000007F0000
007F0000007F0000003F8000E01F8000E00FC001C007E0038003F81F0000FFFE00001FF000>27
27 126 154 32 I[<0007F0003FFC00FE3E01F87F03F87F03F07F07F07F07F03E07F00007F000
07F00007F00007F00007F00007F000FFFFC0FFFFC0FFFFC007F00007F00007F00007F00007F000
07F00007F00007F00007F00007F00007F00007F00007F00007F00007F00007F00007F00007F000
07F00007F00007F0007FFF807FFF807FFF80>24 42 126 169 21 I[<00FF81F003FFE7F80FC1
FE7C1F80FC7C1F007C383F007E107F007F007F007F007F007F007F007F007F007F007F007F003F
007E001F007C001F80FC000FC1F8001FFFE00018FF800038000000380000003C0000003E000000
3FFFF8001FFFFF001FFFFF800FFFFFC007FFFFE01FFFFFF03E0007F07C0001F8F80000F8F80000
F8F80000F8F80000F87C0001F03C0001E01F0007C00FC01F8003FFFE00007FF000>30
40 126 154 34 I[<FFE0000000FFE0000000FFE00000000FE00000000FE00000000FE0000000
0FE00000000FE00000000FE00000000FE00000000FE00000000FE00000000FE00000000FE00000
000FE00000000FE07F00000FE1FFC0000FE787E0000FEE03F0000FF803F0000FF803F8000FF003
F8000FF003F8000FE003F8000FE003F8000FE003F8000FE003F8000FE003F8000FE003F8000FE0
03F8000FE003F8000FE003F8000FE003F8000FE003F8000FE003F8000FE003F8000FE003F8000F
E003F8000FE003F800FFFE3FFF80FFFE3FFF80FFFE3FFF80>33 42 125
169 39 I[<07000FC01FE03FE03FE03FE01FE00FC007000000000000000000000000000000FFE0
FFE0FFE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00F
E00FE00FE00FE0FFFEFFFEFFFE>15 43 125 170 20 I[<FFE00000FFE00000FFE000000FE000
000FE000000FE000000FE000000FE000000FE000000FE000000FE000000FE000000FE000000FE0
00000FE000000FE01FFC0FE01FFC0FE01FFC0FE007800FE00F000FE01E000FE03C000FE078000F
E0E0000FE3C0000FE7C0000FEFE0000FFFE0000FFFF0000FF3F8000FE3F8000FC1FC000FC0FE00
0FC07F000FC07F000FC03F800FC01FC00FC00FC00FC00FE0FFFC3FFEFFFC3FFEFFFC3FFE>31
42 126 169 37 107 D[<FFE0FFE0FFE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE0
0FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00F
E00FE00FE00FE00FE00FE0FFFEFFFEFFFE>15 42 125 169 20 I[<FFC07F0000FFC1FFC000FF
C787E0000FCE03F0000FD803F0000FD803F8000FF003F8000FF003F8000FE003F8000FE003F800
0FE003F8000FE003F8000FE003F8000FE003F8000FE003F8000FE003F8000FE003F8000FE003F8
000FE003F8000FE003F8000FE003F8000FE003F8000FE003F8000FE003F800FFFE3FFF80FFFE3F
FF80FFFE3FFF80>33 27 125 154 39 110 D[<003FE00001FFFC0003F07E000FC01F801F800F
C03F800FE03F0007E07F0007F07F0007F07F0007F0FF0007F8FF0007F8FF0007F8FF0007F8FF00
07F8FF0007F8FF0007F8FF0007F87F0007F07F0007F03F800FE03F800FE01F800FC00FC01F8007
F07F0001FFFC00003FE000>29 27 126 154 34 I[<FFE1FE0000FFE7FF8000FFFE07E0000FF8
03F0000FF001F8000FE000FC000FE000FE000FE000FF000FE0007F000FE0007F000FE0007F800F
E0007F800FE0007F800FE0007F800FE0007F800FE0007F800FE0007F800FE0007F000FE000FF00
0FE000FF000FE000FE000FE001FC000FF001F8000FF803F0000FFE0FE0000FE7FF80000FE1FC00
000FE00000000FE00000000FE00000000FE00000000FE00000000FE00000000FE00000000FE000
00000FE0000000FFFE000000FFFE000000FFFE000000>33 39 126 154
39 I[<FFC1F0FFC7FCFFCE3E0FD87F0FD87F0FF07F0FF03E0FF01C0FE0000FE0000FE0000FE000
0FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE000FFFF00
FFFF00FFFF00>24 27 126 154 28 114 D[<03FE300FFFF01E03F03800F0700070F00070F000
70F80070FC0000FFE0007FFE007FFF803FFFE01FFFF007FFF800FFF80003FC0000FC60007CE000
3CF0003CF00038F80038FC0070FF01E0F7FFC0C1FF00>22 27 126 154
27 I[<00700000700000700000700000F00000F00000F00001F00003F00003F00007F0001FFFF0
FFFFF0FFFFF007F00007F00007F00007F00007F00007F00007F00007F00007F00007F00007F000
07F00007F00007F03807F03807F03807F03807F03807F03803F03803F87001F86000FFC0001F80
>21 38 127 165 27 I[<FFE03FF800FFE03FF800FFE03FF8000FE003F8000FE003F8000FE003
F8000FE003F8000FE003F8000FE003F8000FE003F8000FE003F8000FE003F8000FE003F8000FE0
03F8000FE003F8000FE003F8000FE003F8000FE003F8000FE003F8000FE003F8000FE003F8000F
E007F80007E007F80007E00FF80003F03BFF8001FFF3FF80003FC3FF80>33
27 125 154 39 I[<FFFE03FF80FFFE03FF80FFFE03FF8007F000700007F000700007F800F000
03F800E00003FC01E00001FC01C00001FC01C00000FE03800000FE038000007F070000007F0700
00007F8F0000003F8E0000003FDE0000001FDC0000001FDC0000000FF80000000FF80000000FF8
00000007F000000007F000000003E000000003E000000001C000000001C0000000038000000003
80000038078000007C07000000FE0F000000FE0E000000FE1E000000FE3C0000007C780000003F
E00000000FC0000000>33 39 127 154 37 121 D[<3FFFFF803FFFFF803F007F003C00FE0038
01FE007803FC007803F8007007F800700FF000700FE000001FC000003FC000007F8000007F0000
00FF000001FE038001FC038003F8038007F803800FF007800FE007801FE007003FC00F003F801F
007F007F00FFFFFF00FFFFFF00>25 27 126 154 31 I E /Fh 25 87 438
432 dfs[<387C7EFC7C38>7 6 123 133 17 46 D[<0000C0000180000780007F8007F7800787
80000780000F00000F00000F00000F00000F00000F00001E00001E00001E00001E00001E00001E
00003C00003C00003C00003C00003C00003C0000780000780000780000780000780000780000F0
0000F00000F00000F00000F00000F00001F000FFFFE0FFFFE0>19 40 122
167 30 49 D[<0003FC00000FFF00003C0F80006007C0008003E001E003E001F003E003F003E0
03F003E001E003E000C007E0000007C0000007C000000F8000001F0000001E00000038000000E0
00001FE0000000780000001C0000001E0000000F0000000F8000000F8000000FC000000FC00000
0FC018000FC07C000FC07C000F80FC001F80FC001F80F8001F0040003E0040003E0020007C0038
00F8001E03E00007FFC00000FE0000>27 41 125 167 30 51 D[<00C000C000F0078000FFFF00
00FFFE0001FFF80001FFE000011F00000100000001000000010000000200000002000000020000
000200000002000000021F800004E0E000050070000600380004003C0000003C0000001E000000
1E0000001E0000001E0000003E0000003E0070003E00F8003E00F8003E00F8007C00F0007C0080
0078008000F8008000F000C001E0004003C00060078000381F00000FFC000007F00000>26
41 123 167 30 53 D[<0000FC000007FF00000F0180003C01C0007003C000E007C001C007C003
C0078007800000070000000F0000001F0000001E0000003E0000003E0000003C1F80007C606000
7C8038007D001C00FA001C00FA001E00FC000F00FC000F00F8000F00F8000F00F8001F00F0001F
00F0001F00F0001F00F0001F00F0001E00F0003E00F0003C00F0003C0070007800700070003800
E0003C01C0001E0780000FFE000003F80000>26 41 123 167 30 I[<080000000C0000001FFF
FFC01FFFFFC01FFFFF803FFFFF8020000100600002004000040040000800800010008000200000
004000000040000000800000010000000200000006000000040000000800000018000000380000
00300000007000000060000000E0000000E0000001E0000001C0000003C0000003C0000007C000
0007800000078000000F8000000F8000000F8000000F8000001F0000001F0000001F0000000E00
0000>26 42 120 168 30 I[<0000003000000000300000000070000000007000000000F00000
0000F800000001F800000001F800000002F800000002F800000004FC0000000C7C000000087C00
0000107C000000107C000000207C000000203E000000403E000000403E000000803E000000803E
000001003F000001001F000002001F000002001F000004001F000004001F80000FFFFF80000FFF
FF800010000F800010000F800020000F8000200007C000400007C000C00007C000800007C00180
0007C001000007E003800003E00FC00007E0FFF000FFFFFFF000FFFF>40
42 126 169 46 65 D[<01FFFFFF0003FFFFFFC0000FC003F0000F8000F8000F8000FC000F8000
7C000F80007E000F80007E001F00003E001F00003E001F00007E001F00007E001F00007C001F00
00FC003E0000F8003E0001F0003E0003E0003E0007C0003E001F00003FFFFC00007C000F80007C
0007C0007C0003F0007C0001F0007C0000F8007C0000F800F80000FC00F80000FC00F80000FC00
F80000FC00F80000FC00F80000F801F00001F801F00001F801F00003F001F00007E001F0000FC0
01F0001F8003F0007F00FFFFFFFC00FFFFFFE000>39 41 126 168 43 I[<00000FF00100007F
FE030001FC07070007E0018E001F80005E003E00003E007C00003E00F800001E01F000001E03E0
00000C07C000000C07C000000C0F8000000C1F8000000C1F0000000C3F000000083F000000007E
000000007E000000007E000000007E00000000FC00000000FC00000000FC00000000FC00000000
FC00000000FC00000000FC00000000FC000000207C000000207C000000207C000000403E000000
403E000000801E000000801F000001000F8000020007C000040003E000180001F0003000007E01
E000003FFF80000007FC0000>40 43 122 169 44 I[<01FFFFFF800003FFFFFFE000000FC003
F800000F80007C00000F80003E00000F80001F00000F80000F80000F80000780001F000007C000
1F000007C0001F000003E0001F000003E0001F000003E0001F000003E0003E000003F0003E0000
03F0003E000003F0003E000003F0003E000003F0003E000003F0007C000003E0007C000007E000
7C000007E0007C000007E0007C000007C0007C000007C000F800000FC000F800000F8000F80000
1F8000F800001F0000F800001F0000F800003E0001F000007C0001F00000F80001F00001F00001
F00003E00001F00007C00001F0001F800003F000FE0000FFFFFFF80000FFFFFFC00000>44
41 126 168 47 I[<01FFFFFFFF03FFFFFFFF000FC0007F000F80000F000F800007000F800007
000F800003000F800003001F000003001F000003001F000001001F000001001F000801001F0008
01003E001000003E001000003E001000003E003000003E00F000003FFFF000007FFFE000007C00
E000007C006000007C006000007C002000007C00200200F800400400F800400400F800000400F8
00000800F800000800F800001801F000001001F000003001F000003001F000007001F00000E001
F00003E003F0000FE0FFFFFFFFC0FFFFFFFFC0>40 41 126 168 42 I[<01FFFFFFFE03FFFFFF
FE000FC0007E000F80001E000F80000E000F800006000F800006000F800006001F000006001F00
0006001F000002001F000002001F001002001F001002003E002000003E002000003E002000003E
006000003E01E000003FFFE000007FFFC000007C01C000007C00C000007C00C000007C00400000
7C00400000F800800000F800800000F800000000F800000000F800000000F800000001F0000000
01F000000001F000000001F000000001F000000001F000000003F0000000FFFFE00000FFFFE000
00>39 41 126 168 40 I[<00000FF00100007FFE030001FC07070007E0018E001F80005E003E
00003E007C00003E00F800001E01F000001E03E000000C07C000000C07C000000C0F8000000C1F
8000000C1F0000000C3F000000083F000000007E000000007E000000007E000000007E00000000
FC00000000FC00000000FC00000000FC00000000FC0001FFFFFC0001FFFFFC000003F0FC000003
E07C000003E07C000003E07C000003E03E000003E03E000007C01F000007C01F000007C00F8000
07C007C0000FC003E00013C001F8002380007E01C180003FFF00800007FC0000>40
43 122 169 48 I[<01FFFF03FFFE03FFFF07FFFE000FC0001F80000F80001F00000F80001F00
000F80001F00000F80001F00000F80001F00001F00003E00001F00003E00001F00003E00001F00
003E00001F00003E00001F00003E00003E00007C00003E00007C00003E00007C00003E00007C00
003E00007C00003FFFFFFC00007FFFFFF800007C0000F800007C0000F800007C0000F800007C00
00F800007C0000F80000F80001F00000F80001F00000F80001F00000F80001F00000F80001F000
00F80001F00001F00003E00001F00003E00001F00003E00001F00003E00001F00003E00001F000
03E00003F00007E000FFFF81FFFF00FFFF81FFFF00>47 41 126 168 46
I[<03FFFF03FFFF000FC0000F80000F80000F80000F80000F80001F00001F00001F00001F0000
1F00001F00003E00003E00003E00003E00003E00003E00007C00007C00007C00007C00007C0000
7C0000F80000F80000F80000F80000F80000F80001F00001F00001F00001F00001F00001F00003
F000FFFFC0FFFFC0>24 41 126 168 22 I[<01FFFF800003FFFF8000000FC00000000F800000
000F800000000F800000000F800000000F800000001F000000001F000000001F000000001F0000
00001F000000001F000000003E000000003E000000003E000000003E000000003E000000003E00
0000007C000000007C000000007C000000007C000000007C000000007C00002000F800004000F8
00004000F800004000F800008000F800008000F800018001F000018001F000030001F000030001
F000070001F0000E0001F0003E0003F001FE00FFFFFFFC00FFFFFFFC00>35
41 126 168 38 76 D[<01FF80000007FF8003FFC000000BFF80000BC000000FE000000BC00000
17C000000BC0000017C0000009E0000027C0000009E0000027C0000009E0000047C0000011E000
004F80000011E000008F80000010F000010F80000010F000010F80000010F000020F80000010F0
00020F800000207800041F000000207800041F000000207800081F000000207800081F00000020
7800101F000000203C00201F000000403C00203E000000403C00403E000000403C00403E000000
401E00803E000000401E00803E000000401E01003E000000801E01007C000000801E02007C0000
00800F04007C000000800F04007C000000800F08007C000000800F08007C00000100079000F800
000100079000F80000010007A000F80000010007A000F80000010007C000F800000300038000F8
00000FC0038001F80000FFF803007FFFC000FFF803007FFFC000>57 41
126 168 56 I[<01FFC0003FFE03FFC0007FFE000FE00007E0000BF00003800009F00001000009
F80001000008F80001000008FC00010000107C00020000107E00020000103E00020000103F0002
0000101F00020000101F80020000200F80040000200FC00400002007C00400002007E004000020
03E00400002003F00400004001F00800004001F80800004000F80800004000FC08000040007C08
000040007E08000080003E10000080003F10000080001F10000080001F90000080000F90000080
0007D00001000007E00001000003E00001000003E00001000001E00001000001E00003000000E0
000FC00000C000FFF800004000FFF800004000>47 41 126 168 46 I[<00001FF0000000F03C
000003C00700000F0003C0001E0001E0003C0000F000F80000F001F000007801E000007C03C000
007C07C000003C0F8000003E0F8000003E1F0000003E1F0000003E3F0000003F3E0000003F7E00
00003F7E0000003F7E0000003F7E0000003FFC0000007EFC0000007EFC0000007EFC0000007EFC
0000007CFC000000FCFC000000FCFC000000F8FC000001F87C000001F07C000003F07C000003E0
3E000007C03E00000F801E00000F001F00001E000F80003C00078000780003C000F00000F003C0
00007C0F0000000FF80000>40 43 122 169 47 I[<01FFFFFF0003FFFFFFE0000FC003F0000F
8000F8000F80007C000F80003E000F80003F000F80003F001F00003F001F00003F001F00003F00
1F00003F001F00003F001F00007E003E00007E003E00007C003E0000F8003E0001F0003E0007E0
003E001F80007FFFFC00007C000000007C000000007C000000007C000000007C00000000F80000
0000F800000000F800000000F800000000F800000000F800000001F000000001F000000001F000
000001F000000001F000000001F000000003F0000000FFFF800000FFFF800000>40
41 126 168 42 I[<01FFFFFC000003FFFFFF8000000FC00FE000000F8001F000000F8000F800
000F80007C00000F80007C00000F80007E00001F00007E00001F00007E00001F00007E00001F00
007E00001F00007E00001F0000FC00003E0000F800003E0001F800003E0001E000003E0003C000
003E000F0000003E007C0000007FFFE00000007C00700000007C003C0000007C001E0000007C00
0F0000007C000F000000F8000F800000F8000F800000F8000F800000F8000F800000F8000F8000
00F8000F800001F0001F800001F0001F800001F0001F800001F0001F804001F0001F804001F000
1F808003F0000FC080FFFF8007C100FFFF8003C20000000000FC00>42 42
126 168 45 82 D[<0001FC020007FF06001E038E003800DC0070007C00E0003C01E0001C03C0
001C03C0001C0380000807800008078000080780000807C0000807C0000007E0000003F0000003
FE000001FFE00001FFFE0000FFFF00003FFF80000FFFC00000FFE000000FE0000003F0000001F0
000001F0000001F0200000F0200000F0200000F0200000E0600001E0600001E0700001C0700003
C0780007807C000700E6001E00E3C07C00C1FFF000803FC000>31 43 125
169 33 I[<1FFFFFFFFE3FFFFFFFFE3F003F007E38003E001E30003E000C20003E000460003E00
0440003E000440007C000440007C000480007C000480007C000480007C000480007C00040000F8
00000000F800000000F800000000F800000000F800000000F800000001F000000001F000000001
F000000001F000000001F000000001F000000003E000000003E000000003E000000003E0000000
03E000000003E000000007C000000007C000000007C000000007C000000007C000000007C00000
000FC000000FFFFFC0001FFFFFC000>39 41 121 168 44 I[<7FFFC00FFF80FFFFC01FFF8003
F00001F80003E00000E00003E00000400003E00000400003E00000400003E00000400007C00000
800007C00000800007C00000800007C00000800007C00000800007C0000080000F80000100000F
80000100000F80000100000F80000100000F80000100000F80000100001F00000200001F000002
00001F00000200001F00000200001F00000200001F00000200003E00000400003E00000400003E
00000400003E00000400003E00000800003E00000800003E00001800001E00001000001E000020
00000F00006000000F0000C0000007800180000003C00700000001F01C000000007FF800000000
1FC0000000>41 42 120 168 46 I[<FFFF0003FFC0FFFE0003FFC00FE00000FC0007C0000070
0007C00000200007E00000400003E00000400003E00000800003E00000800003E00001000001F0
0001000001F00002000001F00006000001F00004000001F80008000000F80008000000F8001000
0000F80010000000F80020000000FC00200000007C00400000007C00400000007C00800000007C
01800000003E01000000003E02000000003E02000000003E04000000003F04000000001F080000
00001F08000000001F10000000001F10000000001FA0000000000FC0000000000FC0000000000F
80000000000F80000000000700000000000700000000000600000000000600000000>42
42 120 168 46 I E /Fi 3 21 438 432 dfs[<FFFFFFFFE0FFFFFFFFE0FFFFFFFFE0>35
3 123 143 47 0 D[<007C0001FF0007FFC00FFFE01FFFF03FFFF83FFFF87FFFFC7FFFFCFFFFFE
FFFFFEFFFFFEFFFFFEFFFFFEFFFFFEFFFFFE7FFFFC7FFFFC3FFFF83FFFF81FFFF00FFFE007FFC0
01FF00007C00>23 25 125 154 30 15 D[<000000006000000001E000000007E00000001F8000
00007E00000001F800000007E00000001F800000007E00000001F800000007E00000001F800000
007E00000001F800000007E00000001F800000007E00000000F800000000F8000000007E000000
001F8000000007E000000001F8000000007E000000001F8000000007E000000001F8000000007E
000000001F8000000007E000000001F8000000007E000000001F8000000007C000000001E00000
0000E0000000000000000000000000000000000000000000000000000000000000000000000000
0000000000000000007FFFFFFFC0FFFFFFFFE0FFFFFFFFE0>35 48 123
165 47 20 D E /Fj 35 123 576 432 dfs[<1C003E007F00FF80FF80FF807F003E001C00>9
9 123 136 25 46 D[<000E00001E00007E0007FE00FFFE00FFFE00F8FE0000FE0000FE0000FE
0000FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE
0000FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE
007FFFFE7FFFFE7FFFFE>23 39 123 166 45 49 D[<00FF800003FFF0000FFFFC001F03FE0038
00FF007C007F80FE003FC0FF003FC0FF003FE0FF001FE0FF001FE07E001FE03C003FE000003FE0
00003FC000003FC000007F8000007F000000FE000000FC000001F8000003F0000003E000000780
00000F0000001E0000003C00E0007000E000E000E001C001C0038001C0070001C00FFFFFC01FFF
FFC03FFFFFC07FFFFFC0FFFFFF80FFFFFF80FFFFFF80>27 39 125 166
45 I[<007F800003FFF00007FFFC000F81FE001F00FF003F80FF003F807F803F807F803F807F80
1F807F800F007F800000FF000000FF000000FE000001FC000001F8000007F00000FFC00000FFF0
000001FC0000007E0000007F0000007F8000003FC000003FC000003FE000003FE03C003FE07E00
3FE0FF003FE0FF003FE0FF003FC0FF007FC07E007F807C007F003F01FE001FFFFC0007FFF00000
FF8000>27 39 125 166 45 I[<00000E0000001E0000003E0000007E000000FE000000FE0000
01FE000003FE0000077E00000E7E00000E7E00001C7E0000387E0000707E0000E07E0000E07E00
01C07E0003807E0007007E000E007E000E007E001C007E0038007E0070007E00E0007E00FFFFFF
F8FFFFFFF8FFFFFFF80000FE000000FE000000FE000000FE000000FE000000FE000000FE000000
FE00007FFFF8007FFFF8007FFFF8>29 39 126 166 45 I[<0C0003000F803F000FFFFE000FFF
FC000FFFF8000FFFF0000FFFE0000FFFC0000FFE00000E0000000E0000000E0000000E0000000E
0000000E0000000E7FC0000FFFF8000F80FC000E003E000C003F0000001F8000001FC000001FC0
00001FE000001FE018001FE07C001FE0FE001FE0FE001FE0FE001FE0FE001FC0FC001FC078003F
8078003F803C007F001F01FE000FFFF80003FFF00000FF8000>27 39 125
166 45 I[<0007F000003FFC0000FFFE0001FC0F0003F01F8007E03F800FC03F801FC03F801F80
3F803F801F003F8000007F0000007F0000007F000000FF000000FF0FC000FF3FF800FF707C00FF
C03E00FFC03F00FF801F80FF801FC0FF001FC0FF001FE0FF001FE0FF001FE07F001FE07F001FE0
7F001FE07F001FE03F001FE03F001FC01F801FC01F803F800FC03F0007E07E0003FFFC0000FFF0
00003FC000>27 39 125 166 45 I[<380000003E0000003FFFFFF03FFFFFF03FFFFFF07FFFFF
E07FFFFFC07FFFFF807FFFFF0070000E0070000E0070001C00E0003800E0007000E000E0000000
E0000001C000000380000007800000078000000F0000000F0000001F0000001F0000003F000000
3E0000003E0000007E0000007E0000007E0000007E000000FE000000FE000000FE000000FE0000
00FE000000FE000000FE000000FE0000007C000000380000>28 41 124
168 45 I[<00003FF001800003FFFE0380000FFFFF8780003FF007DF8000FF8001FF8001FE0000
7F8003FC00003F8007F000001F800FF000000F801FE0000007801FE0000007803FC0000007803F
C0000003807FC0000003807F80000003807F8000000000FF8000000000FF8000000000FF800000
0000FF8000000000FF8000000000FF8000000000FF8000000000FF8000000000FF80000000007F
80000000007F80000000007FC0000003803FC0000003803FC0000003801FE0000003801FE00000
07000FF00000070007F000000E0003FC00001E0001FE00003C0000FF8000F800003FF007E00000
0FFFFFC0000003FFFF000000003FF80000>41 41 124 168 67 67 D[<FFFFFFF80000FFFFFFFF
8000FFFFFFFFE00003FC001FF80003FC0007FC0003FC0001FE0003FC0000FF0003FC00007F8003
FC00003FC003FC00001FC003FC00001FE003FC00001FE003FC00000FF003FC00000FF003FC0000
0FF003FC00000FF003FC00000FF803FC00000FF803FC00000FF803FC00000FF803FC00000FF803
FC00000FF803FC00000FF803FC00000FF803FC00000FF803FC00000FF803FC00000FF003FC0000
0FF003FC00000FF003FC00001FE003FC00001FE003FC00001FC003FC00003FC003FC00007F8003
FC00007F0003FC0001FE0003FC0003FC0003FC001FF800FFFFFFFFE000FFFFFFFF8000FFFFFFFC
0000>45 41 125 168 71 I[<FFFFFFFFC0FFFFFFFFC0FFFFFFFFC003FC003FC003FC000FE003
FC0003E003FC0001E003FC0001E003FC0000E003FC0000E003FC0000E003FC0000F003FC038070
03FC03807003FC03807003FC03800003FC07800003FC07800003FC1F800003FFFF800003FFFF80
0003FFFF800003FC1F800003FC07800003FC07800003FC03800003FC03800003FC03800003FC03
800003FC00000003FC00000003FC00000003FC00000003FC00000003FC00000003FC00000003FC
00000003FC000000FFFFFC0000FFFFFC0000FFFFFC0000>36 41 125 168
57 70 D[<00007FE003000003FFFC0700001FFFFF0F00003FF00FFF0000FF8001FF0001FE0000
FF0003F800003F0007F000003F000FF000001F001FE000000F001FE000000F003FC000000F003F
C0000007007FC0000007007F80000007007F8000000000FF8000000000FF8000000000FF800000
0000FF8000000000FF8000000000FF8000000000FF8000000000FF8000000000FF8001FFFFF87F
8001FFFFF87F8001FFFFF87FC00000FF003FC00000FF003FC00000FF001FE00000FF001FE00000
FF000FF00000FF0007F00000FF0003F80000FF0001FE0000FF0000FF8001FF00003FF007BF0000
1FFFFF1F000003FFFE0F0000007FF00300>45 41 124 168 72 I[<FFFFFCFFFFFCFFFFFC01FE
0001FE0001FE0001FE0001FE0001FE0001FE0001FE0001FE0001FE0001FE0001FE0001FE0001FE
0001FE0001FE0001FE0001FE0001FE0001FE0001FE0001FE0001FE0001FE0001FE0001FE0001FE
0001FE0001FE0001FE0001FE0001FE0001FE0001FE0001FE00FFFFFCFFFFFCFFFFFC>22
41 126 168 35 73 D[<0000FFE000000007FFFC0000003FC07F8000007F001FC00001FC0007F0
0003F80003F80007F00001FC000FF00001FE001FE00000FF001FE00000FF003FC000007F803FC0
00007F807FC000007FC07F8000003FC07F8000003FC07F8000003FC0FF8000003FE0FF8000003F
E0FF8000003FE0FF8000003FE0FF8000003FE0FF8000003FE0FF8000003FE0FF8000003FE0FF80
00003FE0FF8000003FE07F8000003FC07FC000007FC07FC000007FC03FC000007F803FC000007F
801FE00000FF001FE00000FF000FF00001FE0007F00001FC0003F80003F80001FC0007F00000FF
001FE000003FC07F8000000FFFFE00000000FFE00000>43 41 124 168
69 79 D[<007F806003FFF0E007FFF9E00F807FE01F001FE03E0007E07C0003E07C0001E0FC00
01E0FC0001E0FC0000E0FE0000E0FE0000E0FF000000FFC000007FFE00007FFFE0003FFFFC001F
FFFE000FFFFF8007FFFFC003FFFFE000FFFFE00007FFF000007FF000000FF8000007F8000003F8
600001F8E00001F8E00001F8E00001F8F00001F0F00001F0F80003F0FC0003E0FF0007C0FFE01F
80F3FFFF00E0FFFE00C01FF000>29 41 124 168 51 83 D[<01FF800007FFF0000F81F8001FC0
7E001FC07E001FC03F000F803F8007003F8000003F8000003F8000003F80000FFF8000FFFF8007
FC3F800FE03F803F803F803F003F807F003F80FE003F80FE003F80FE003F80FE003F807E007F80
7F00DF803F839FFC0FFF0FFC01FC03FC>30 27 126 154 44 97 D[<FFE0000000FFE0000000FF
E00000000FE00000000FE00000000FE00000000FE00000000FE00000000FE00000000FE0000000
0FE00000000FE00000000FE00000000FE00000000FE00000000FE1FE00000FE7FF80000FFE07E0
000FF801F0000FF000F8000FE000FC000FE000FE000FE0007F000FE0007F000FE0007F000FE000
7F800FE0007F800FE0007F800FE0007F800FE0007F800FE0007F800FE0007F800FE0007F000FE0
007F000FE0007F000FE000FE000FE000FC000FF001F8000FF803F0000F9E07E0000F07FF80000E
01FC0000>33 42 126 169 51 I[<001FF80000FFFE0003F01F0007E03F800FC03F801F803F80
3F801F007F800E007F0000007F000000FF000000FF000000FF000000FF000000FF000000FF0000
00FF0000007F0000007F0000007F8000003F8001C01F8001C00FC0038007E0070003F01E0000FF
FC00001FE000>26 27 126 154 41 I[<00003FF80000003FF80000003FF800000003F8000000
03F800000003F800000003F800000003F800000003F800000003F800000003F800000003F80000
0003F800000003F800000003F800001FE3F80000FFFBF80003F03FF80007E00FF8000FC007F800
1F8003F8003F8003F8007F0003F8007F0003F8007F0003F800FF0003F800FF0003F800FF0003F8
00FF0003F800FF0003F800FF0003F800FF0003F8007F0003F8007F0003F8007F0003F8003F8003
F8001F8003F8000F8007F80007C00FF80003F03BFF8000FFF3FF80003FC3FF80>33
42 126 169 51 I[<003FE00001FFF80003F07E0007C01F000F801F801F800F803F800FC07F00
0FC07F0007C07F0007E0FF0007E0FF0007E0FFFFFFE0FFFFFFE0FF000000FF000000FF0000007F
0000007F0000007F0000003F8000E01F8000E00FC001C007E0038003F81F0000FFFE00001FF000
>27 27 126 154 43 I[<0007F0003FFC00FE3E01F87F03F87F03F07F07F07F07F03E07F00007
F00007F00007F00007F00007F00007F000FFFFC0FFFFC0FFFFC007F00007F00007F00007F00007
F00007F00007F00007F00007F00007F00007F00007F00007F00007F00007F00007F00007F00007
F00007F00007F00007F0007FFF807FFF807FFF80>24 42 126 169 28 I[<FFE0000000FFE000
0000FFE00000000FE00000000FE00000000FE00000000FE00000000FE00000000FE00000000FE0
0000000FE00000000FE00000000FE00000000FE00000000FE00000000FE07F00000FE1FFC0000F
E787E0000FEE03F0000FF803F0000FF803F8000FF003F8000FF003F8000FE003F8000FE003F800
0FE003F8000FE003F8000FE003F8000FE003F8000FE003F8000FE003F8000FE003F8000FE003F8
000FE003F8000FE003F8000FE003F8000FE003F8000FE003F8000FE003F800FFFE3FFF80FFFE3F
FF80FFFE3FFF80>33 42 125 169 51 104 D[<07000FC01FE03FE03FE03FE01FE00FC0070000
00000000000000000000000000FFE0FFE0FFE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE0
0FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE0FFFEFFFEFFFE>15
43 125 170 27 I[<FFE0FFE0FFE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE0
0FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00F
E00FE00FE00FE00FE0FFFEFFFEFFFE>15 42 125 169 27 108 D[<FFC07F800FF000FFC1FFE0
3FFC00FFC383F0707E000FC603F8C07F000FCC01F9803F000FD801FF003F800FF001FE003F800F
F001FE003F800FE001FC003F800FE001FC003F800FE001FC003F800FE001FC003F800FE001FC00
3F800FE001FC003F800FE001FC003F800FE001FC003F800FE001FC003F800FE001FC003F800FE0
01FC003F800FE001FC003F800FE001FC003F800FE001FC003F800FE001FC003F800FE001FC003F
80FFFE1FFFC3FFF8FFFE1FFFC3FFF8FFFE1FFFC3FFF8>53 27 125 154
80 I[<FFC07F0000FFC1FFC000FFC787E0000FCE03F0000FD803F0000FD803F8000FF003F8000F
F003F8000FE003F8000FE003F8000FE003F8000FE003F8000FE003F8000FE003F8000FE003F800
0FE003F8000FE003F8000FE003F8000FE003F8000FE003F8000FE003F8000FE003F8000FE003F8
000FE003F800FFFE3FFF80FFFE3FFF80FFFE3FFF80>33 27 125 154 51
I[<003FE00001FFFC0003F07E000FC01F801F800FC03F800FE03F0007E07F0007F07F0007F07F
0007F0FF0007F8FF0007F8FF0007F8FF0007F8FF0007F8FF0007F8FF0007F8FF0007F87F0007F0
7F0007F03F800FE03F800FE01F800FC00FC01F8007F07F0001FFFC00003FE000>29
27 126 154 45 I[<FFE1FE0000FFE7FF8000FFFE07E0000FF803F0000FF001F8000FE000FC00
0FE000FE000FE000FF000FE0007F000FE0007F000FE0007F800FE0007F800FE0007F800FE0007F
800FE0007F800FE0007F800FE0007F800FE0007F000FE000FF000FE000FF000FE000FE000FE001
FC000FF001F8000FF803F0000FFE0FE0000FE7FF80000FE1FC00000FE00000000FE00000000FE0
0000000FE00000000FE00000000FE00000000FE00000000FE00000000FE0000000FFFE000000FF
FE000000FFFE000000>33 39 126 154 51 I[<FFC1F0FFC7FCFFCE3E0FD87F0FD87F0FF07F0F
F03E0FF01C0FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE0000F
E0000FE0000FE0000FE0000FE000FFFF00FFFF00FFFF00>24 27 126 154
37 114 D[<03FE300FFFF01E03F03800F0700070F00070F00070F80070FC0000FFE0007FFE007F
FF803FFFE01FFFF007FFF800FFF80003FC0000FC60007CE0003CF0003CF00038F80038FC0070FF
01E0F7FFC0C1FF00>22 27 126 154 36 I[<00700000700000700000700000F00000F00000F0
0001F00003F00003F00007F0001FFFF0FFFFF0FFFFF007F00007F00007F00007F00007F00007F0
0007F00007F00007F00007F00007F00007F00007F00007F03807F03807F03807F03807F03807F0
3803F03803F87001F86000FFC0001F80>21 38 127 165 36 I[<FFE03FF800FFE03FF800FFE0
3FF8000FE003F8000FE003F8000FE003F8000FE003F8000FE003F8000FE003F8000FE003F8000F
E003F8000FE003F8000FE003F8000FE003F8000FE003F8000FE003F8000FE003F8000FE003F800
0FE003F8000FE003F8000FE003F8000FE007F80007E007F80007E00FF80003F03BFF8001FFF3FF
80003FC3FF80>33 27 125 154 51 I[<FFFE03FF80FFFE03FF80FFFE03FF8007F000700007F0
00700007F800F00003F800E00003FC01E00001FC01C00001FC01C00000FE03800000FE03800000
7F070000007F070000007F8F0000003F8E0000003FDE0000001FDC0000001FDC0000000FF80000
000FF80000000FF800000007F000000007F000000003E000000003E000000001C00000>33
27 127 154 48 I[<FFFE03FF80FFFE03FF80FFFE03FF8007F000700007F000700007F800F000
03F800E00003FC01E00001FC01C00001FC01C00000FE03800000FE038000007F070000007F0700
00007F8F0000003F8E0000003FDE0000001FDC0000001FDC0000000FF80000000FF80000000FF8
00000007F000000007F000000003E000000003E000000001C000000001C0000000038000000003
80000038078000007C07000000FE0F000000FE0E000000FE1E000000FE3C0000007C780000003F
E00000000FC0000000>33 39 127 154 48 121 D[<3FFFFF803FFFFF803F007F003C00FE0038
01FE007803FC007803F8007007F800700FF000700FE000001FC000003FC000007F8000007F0000
00FF000001FE038001FC038003F8038007F803800FF007800FE007801FE007003FC00F003F801F
007F007F00FFFFFF00FFFFFF00>25 27 126 154 41 I E /Fk 70 124
438 432 dfs[<0007F81F80003C067060007003E0F000E007C1F001C00FC1F003C00F80E00780
078040078007800007800780000780078000078007800007800780000780078000078007800007
800780000780078000FFFFFFFF00FFFFFFFF000780078000078007800007800780000780078000
078007800007800780000780078000078007800007800780000780078000078007800007800780
000780078000078007800007800780000780078000078007800007800780000780078000078007
80000780078000078007C000FFF87FFE00FFF87FFE00>36 42 127 169
35 11 D[<0007F800003C06000070010000E0070001C00F8003C00F8007800F80078007000780
000007800000078000000780000007800000078000000780000007800000FFFFFF80FFFFFF8007
800F80078007800780078007800780078007800780078007800780078007800780078007800780
078007800780078007800780078007800780078007800780078007800780078007800780078007
800780078007800780FFF87FFCFFF87FFC>30 42 127 169 33 I[<0007F980003C0780007007
8000E00F8001C00F8003C00F800780078007800780078007800780078007800780078007800780
0780078007800780078007800780FFFFFF80FFFFFF800780078007800780078007800780078007
800780078007800780078007800780078007800780078007800780078007800780078007800780
0780078007800780078007800780078007800780078007800780078007800780FFFCFFFCFFFCFF
FC>30 42 127 169 33 I[<0003F803FC00001E061E030000700138008000E003F0038001C007
E007C003C007E007C0078007C007C0078003C00380078003C00000078003C00000078003C00000
078003C00000078003C00000078003C00000078003C00000078003C00000FFFFFFFFFFC0FFFFFF
FFFFC0078003C007C0078003C003C0078003C003C0078003C003C0078003C003C0078003C003C0
078003C003C0078003C003C0078003C003C0078003C003C0078003C003C0078003C003C0078003
C003C0078003C003C0078003C003C0078003C003C0078003C003C0078003C003C0078003C003C0
078003C003C0078003C003C0078003C003C0FFFC7FFE7FFEFFFC7FFE7FFE>47
42 127 169 51 I[<78FCFCFEFE7A020202020404040810102040>7 18
123 169 17 39 D[<0004000800100020004000C0018003000300060006000E000C001C001800
38003800380030007000700070007000F000F000E000E000E000E000E000E000E000E000E000E0
00E000F000F0007000700070007000300038003800380018001C000C000E000600060003000300
018000C000400020001000080004>14 61 123 172 23 I[<800040002000100008000C000600
030003000180018001C000C000E0006000700070007000300038003800380038003C003C001C00
1C001C001C001C001C001C001C001C001C001C003C003C00380038003800380030007000700070
006000E000C001C0018001800300030006000C0008001000200040008000>14
61 125 172 23 I[<000038000000003800000000380000000038000000003800000000380000
000038000000003800000000380000000038000000003800000000380000000038000000003800
0000003800000000380000000038000000003800000000380000FFFFFFFFFEFFFFFFFFFEFFFFFF
FFFE00003800000000380000000038000000003800000000380000000038000000003800000000
380000000038000000003800000000380000000038000000003800000000380000000038000000
00380000000038000000003800000000380000>39 41 125 162 47 43
D[<78FCFCFEFE7A020202020404040810102040>7 18 123 133 17 I[<FFFEFFFEFFFE>15
3 127 142 20 I[<78FCFCFCFC78>6 6 123 133 17 I[<00000600000E00000E00001C00001C
00001C0000380000380000380000700000700000E00000E00000E00001C00001C00001C0000380
000380000380000700000700000700000E00000E00000E00001C00001C00001C00003800003800
00700000700000700000E00000E00000E00001C00001C00001C000038000038000038000070000
0700000700000E00000E00000E00001C00001C0000380000380000380000700000700000700000
E00000E00000C00000>23 60 125 172 30 I[<007F000001C1C0000780F0000F0078000E0038
001C001C003C001E003C001E003C001E0078000F0078000F0078000F0078000F00F8000F80F800
0F80F8000F80F8000F80F8000F80F8000F80F8000F80F8000F80F8000F80F8000F80F8000F80F8
000F80F8000F80F8000F80F8000F8078000F0078000F0078000F0078000F003C001E003C001E00
3C001E001C001C000E0038000F0078000780F00001C1C000007F0000>25
41 126 167 30 I[<00100000700001F0000FF000FEF000F0F00000F00000F00000F00000F000
00F00000F00000F00000F00000F00000F00000F00000F00000F00000F00000F00000F00000F000
00F00000F00000F00000F00000F00000F00000F00000F00000F00000F00000F00000F00000F000
00F00001F8007FFFE07FFFE0>19 40 123 167 30 I[<00FE0007FF800E07E01803F02001F820
00F840007C40007CF8007EFC007EFC003EFC003EFC003E78007E00007E00007C00007C0000F800
00F80001F00001E00003C0000780000700000E00001C0000380000700000600000C00001800203
00020600040C000418000410000C3FFFFC7FFFF8FFFFF8FFFFF8>23 40
125 167 30 I[<007F000003FFC0000701F0000C00F80010007C001C007C003E007E003E003E00
3E003E001E003E000C007E0000007C0000007C00000078000000F0000000E0000001C000000700
0000FF00000001E0000000F0000000780000003C0000003E0000001F0000001F0000001F800000
1F8030001F8078001F80FC001F80FC001F80FC001F00F8001F0040003F0040003E0030007C0018
00F8000F01F00003FFC000007F0000>25 41 126 167 30 I[<00006000000060000000E00000
01E0000001E0000003E0000003E0000005E0000009E0000009E0000011E0000021E0000021E000
0041E0000081E0000081E0000101E0000201E0000201E0000401E0000801E0000801E0001001E0
003001E0002001E0004001E000C001E000FFFFFF80FFFFFF800001E0000001E0000001E0000001
E0000001E0000001E0000001E0000001E0000003F000007FFF80007FFF80>25
40 126 167 30 I[<1800181F00F01FFFE01FFFC01FFF801FFF0011F800100000100000100000
100000100000100000100000100000107E001183801600C01800E010007000007800003C00003C
00003C00003E00003E00003E70003EF8003EF8003EF8003EF8003C80003C40007C400078200078
3000F01801E00E07C007FF0001FC00>23 41 125 167 30 I[<000FE000003FF80000F81C0001
E00C0003801E0007803E000F003E000E001C001E0000001C0000003C0000003C0000007C000000
7800000078000000F83F0000F840E000F9807000F9003800FA001C00FC001E00FC001E00FC000F
00F8000F00F8000F80F8000F80F8000F80F8000F8078000F8078000F8078000F807C000F803C00
0F003C000F001C001E001E001E000E003C000700780003C0F00001FFC000007F0000>25
41 126 167 30 I[<20000000380000003FFFFF803FFFFF803FFFFF007FFFFF00600002004000
040040000400400008008000100080002000000020000000400000008000000080000001000000
030000000200000006000000060000000C0000000C0000001C0000001C0000001C000000380000
00380000003800000078000000780000007800000078000000F8000000F8000000F8000000F800
0000F8000000F8000000F8000000F8000000700000>25 42 125 168 30
I[<007F000001FFC0000381F000060078000C003C001C001C0018000E0038000E0038000E0038
000E003C000E003C000E003E001C001F8018001FC038000FF0600007F8C00003FF800001FF0000
007FC00000FFE000030FF8000603FC001C01FE0038007E0030003F0070000F0070000780E00007
80E0000380E0000380E0000380E0000380F0000300700007007800060038000C001E0038000F80
F00003FFE000007F0000>25 41 126 167 30 I[<007F000001FFC00007C1E0000F0070001E00
38001C003C003C001C0078001E0078001E00F8000F00F8000F00F8000F00F8000F00F8000F80F8
000F80F8000F80F8000F8078000F8078001F803C001F803C001F801C002F800E004F800700CF80
03810F80007E0F8000000F0000000F0000000F0000001E0000001E0000001E0000003C001C003C
003E0078003E0070003C00E0001801C0001C0780000FFE000003F80000>25
41 126 167 30 I[<78FCFCFCFC78000000000000000000000000000078FCFCFCFC78>6
26 123 153 17 I[<78FCFCFCFC78000000000000000000000000000070F8FCFCFC7C04040404
0808081010202040>6 38 123 153 17 I[<FFFFFFFFFEFFFFFFFFFE7FFFFFFFFE000000000000
000000000000000000000000000000000000000000000000000000000000000000000000000000
7FFFFFFFFEFFFFFFFFFEFFFFFFFFFE>39 15 125 149 47 61 D[<000018000000001800000000
18000000003C000000003C000000003C000000007E000000007E00000000FF000000009F000000
009F000000011F800000010F800000010F8000000207C000000207C000000207C000000403E000
000403E000000403E000000801F000000801F000001801F800001000F800001000F800002000FC
000020007C00003FFFFC00007FFFFE000040003E000040003E000080001F000080001F00008000
1F000100000F800100000F800100000F8002000007C007000007C01F80000FE0FFF000FFFFFFF0
00FFFF>40 42 126 169 46 65 D[<FFFFFF8000FFFFFFF00007E000FC0003E0007E0003E0003F
0003E0001F8003E0000F8003E0000F8003E0000FC003E0000FC003E0000FC003E0000FC003E000
0FC003E0000F8003E0001F8003E0001F0003E0003E0003E0007C0003E001F80003FFFFE00003E0
00F80003E0003E0003E0001F0003E0000F8003E00007C003E00007E003E00003E003E00003F003
E00003F003E00003F003E00003F003E00003F003E00003F003E00007E003E00007E003E0000FC0
03E0001F8003E0003F0007E000FE00FFFFFFF800FFFFFFE000>36 41 126
168 43 I[<0000FF00100007FFE030001FC07830003E000C7000F80006F001F00003F003E00001
F007C00000F00F800000700F800000701F000000303F000000303E000000303E000000107E0000
00107E000000107C00000000FC00000000FC00000000FC00000000FC00000000FC00000000FC00
000000FC00000000FC00000000FC000000007C000000007E000000007E000000103E000000103E
000000103F000000101F000000200F800000200F8000006007C000004003E000008001F0000180
00F8000300003E000E00001FC038000007FFE0000000FF8000>36 43 125
169 44 I[<FFFFFFFF80FFFFFFFF8007E0001F8003E000078003E00001C003E00000C003E00000
C003E000004003E000004003E000004003E000004003E000002003E001002003E001002003E001
000003E001000003E003000003E003000003E00F000003FFFF000003FFFF000003E00F000003E0
03000003E003000003E001000003E001001003E001001003E001001003E000001003E000002003
E000002003E000002003E000002003E000006003E000006003E00000E003E00001E003E00003C0
07E0001FC0FFFFFFFFC0FFFFFFFFC0>36 41 126 168 42 69 D[<FFFFFFFF00FFFFFFFF0007E0
003F0003E000070003E000038003E000018003E000018003E000008003E000008003E000008003
E000008003E000004003E002004003E002004003E002000003E002000003E002000003E0060000
03E00E000003FFFE000003FFFE000003E00E000003E006000003E002000003E002000003E00200
0003E002000003E002000003E000000003E000000003E000000003E000000003E000000003E000
000003E000000003E000000003E000000003E000000007F0000000FFFFE00000FFFFE00000>34
41 126 168 40 I[<0000FF00100007FFE030001FC07830003E000C7000F80006F001F00003F0
03E00001F007C00000F00F800000700F800000701F000000303F000000303E000000303E000000
107E000000107E000000107C00000000FC00000000FC00000000FC00000000FC00000000FC0000
0000FC00000000FC00000000FC00000000FC0000FFFF7C0000FFFF7E000003F07E000001F03E00
0001F03E000001F03F000001F01F000001F00F800001F00F800001F007C00001F003E00001F001
F00002F000F80002F0003E000C70001FC038300007FFE0100000FF8000>40
43 125 169 48 I[<FFFF81FFFFFFFF81FFFF07F0000FE003E00007C003E00007C003E00007C0
03E00007C003E00007C003E00007C003E00007C003E00007C003E00007C003E00007C003E00007
C003E00007C003E00007C003E00007C003E00007C003E00007C003FFFFFFC003FFFFFFC003E000
07C003E00007C003E00007C003E00007C003E00007C003E00007C003E00007C003E00007C003E0
0007C003E00007C003E00007C003E00007C003E00007C003E00007C003E00007C003E00007C003
E00007C007F0000FE0FFFF81FFFFFFFF81FFFF>40 41 126 168 46 I[<FFFF80FFFF8007F000
03E00003E00003E00003E00003E00003E00003E00003E00003E00003E00003E00003E00003E000
03E00003E00003E00003E00003E00003E00003E00003E00003E00003E00003E00003E00003E000
03E00003E00003E00003E00003E00003E00003E00003E00003E00007F000FFFF80FFFF80>17
41 126 168 22 I[<FFE0000003FFC0FFE0000003FFC007E0000003F80002F0000005F00002F0
000005F0000278000009F0000278000009F0000278000009F000023C000011F000023C000011F0
00021E000021F000021E000021F000021E000021F000020F000041F000020F000041F000020780
0081F0000207800081F0000207800081F0000203C00101F0000203C00101F0000203E00201F000
0201E00201F0000201E00201F0000200F00401F0000200F00401F0000200F00401F00002007808
01F0000200780801F00002003C1001F00002003C1001F00002003C1001F00002001E2001F00002
001E2001F00002000F4001F00002000F4001F00002000F4001F0000200078001F0000700078001
F0000F80030003F800FFF803007FFFC0FFF803007FFFC0>50 41 126 168
56 77 D[<FFE0001FFFFFF0001FFF03F80001F002F80000E0027C000040027E000040023E0000
40021F000040021F800040020F8000400207C000400207E000400203E000400201F000400201F8
00400200F8004002007C004002007E004002003E004002001F004002001F804002000F80400200
07C040020003E040020003E040020001F040020000F840020000F8400200007C400200003E4002
00003E400200001F400200000FC00200000FC002000007C002000003C002000003C007000001C0
0F800000C0FFF80000C0FFF8000040>40 41 126 168 46 I[<0001FF0000000F01E000003C00
78000078003C0000E0000E0001E0000F0003C000078007800003C00F800003E01F000001F01F00
0001F03E000000F83E000000F87E000000FC7E000000FC7C0000007C7C0000007CFC0000007EFC
0000007EFC0000007EFC0000007EFC0000007EFC0000007EFC0000007EFC0000007EFC0000007E
7C0000007C7E000000FC7E000000FC7E000000FC3E000000F83F000001F81F000001F01F000001
F00F800003E007800003C007C00007C003E0000F8000F0001E000078003C00003C007800000F01
E0000001FF0000>39 43 125 169 47 I[<FFFFFF8000FFFFFFF00007E000FC0003E0003E0003
E0001F0003E0000F8003E0000FC003E00007C003E00007E003E00007E003E00007E003E00007E0
03E00007E003E00007E003E00007C003E0000FC003E0000F8003E0001F0003E0003E0003E001F8
0003FFFFE00003E000000003E000000003E000000003E000000003E000000003E000000003E000
000003E000000003E000000003E000000003E000000003E000000003E000000003E000000003E0
00000003E000000003E000000007F0000000FFFF800000FFFF800000>35
41 126 168 42 I[<FFFFFE000000FFFFFFC0000007E003F0000003E000FC000003E0003E0000
03E0001F000003E0001F800003E0000F800003E0000FC00003E0000FC00003E0000FC00003E000
0FC00003E0000FC00003E0000FC00003E0000F800003E0001F000003E0001E000003E0003C0000
03E000F8000003E003E0000003FFFE00000003E00780000003E001E0000003E000F0000003E000
78000003E0007C000003E0003C000003E0003E000003E0003E000003E0003E000003E0003E0000
03E0003F000003E0003F000003E0003F000003E0003F000003E0003F008003E0003F808003E000
1F808007F0000F8100FFFF8007C100FFFF8003C20000000000FC00>41 42
126 168 45 82 D[<00FE010003FF83000F81E3001E0037003C001F0038000F00780007007000
0700F0000300F0000300F0000300F0000100F8000100F8000100FC0000007C0000007F0000003F
E000001FFF00000FFFE00007FFF80003FFFC00007FFE000007FF0000007F0000001F8000000F80
000007C0000007C0800003C0800003C0800003C0800003C0C00003C0C0000380C0000380E00007
80F0000700F8000E00EE001C00C3C07800C1FFF000803FC000>26 43 125
169 33 I[<7FFFFFFFF87FFFFFFFF87C007C00F870007C003860007C001840007C000840007C00
08C0007C000CC0007C000C80007C000480007C000480007C000480007C000480007C000400007C
000000007C000000007C000000007C000000007C000000007C000000007C000000007C00000000
7C000000007C000000007C000000007C000000007C000000007C000000007C000000007C000000
007C000000007C000000007C000000007C000000007C000000007C000000007C000000007C0000
0000FE000000FFFFFE0000FFFFFE00>38 41 126 168 44 I[<FFFE03FFF803FFC0FFFE03FFF8
03FFC00FE0003F80007E0007C0001F0000180003E0001F0000180003E0000F8000100003E0000F
8000100001F0000F8000200001F0000FC000200001F0000FC000200000F8000FC000400000F800
13E000400000F80013E000400000FC0013E000C000007C0033F0008000007C0021F0008000007E
0021F0008000003E0021F8010000003E0040F8010000003E0040F8010000001F0040F802000000
1F00807C020000001F00807C020000000F80807C040000000F81003E040000000F81003E040000
0007C1003E0800000007C2001F0800000007C2001F0800000003E2001F1000000003E4000F9000
000003E4000F9000000001F4000FA000000001F80007E000000001F80007E000000000F80007C0
00000000F00003C000000000F00003C00000000070000380000000006000018000000000600001
8000000000600001800000>58 42 127 168 62 87 D[<FF80FF80FF80E000E000E000E000E000
E000E000E000E000E000E000E000E000E000E000E000E000E000E000E000E000E000E000E000E0
00E000E000E000E000E000E000E000E000E000E000E000E000E000E000E000E000E000E000E000
E000E000E000E000E000E000E000E000E000E000FF80FF80FF80>9 60 122
172 17 91 D[<FF80FF80FF800380038003800380038003800380038003800380038003800380
038003800380038003800380038003800380038003800380038003800380038003800380038003
800380038003800380038003800380038003800380038003800380038003800380038003800380
03800380FF80FF80FF80>9 60 127 172 17 93 D[<01FC00000E0780001001C0003C00E0003E
00F0003E0078001C00780008007800000078000000780000007800007FF80003E078000F807800
1F0078003E0078007C00780078007820F8007820F8007820F8007820F800F8207C00F8203C013C
401F063FC007F80F00>27 26 126 153 30 97 D[<07800000FF800000FF8000000F8000000780
000007800000078000000780000007800000078000000780000007800000078000000780000007
800000078000000783F000078C1C0007B0070007A0038007C003C0078001E0078001E0078000F0
078000F0078000F8078000F8078000F8078000F8078000F8078000F8078000F8078000F0078000
F0078001F0078001E0078001C007C003C00740078007200E0006181C000407E000>29
42 127 169 33 I[<007F8001C0700780080F003C1E007C3C007C3C00387C0010780000F80000
F80000F80000F80000F80000F80000F80000F800007800007C00003C00043C00041E00080F0010
07802001C0C0007F00>22 26 126 153 27 I[<00000F000001FF000001FF0000001F0000000F
0000000F0000000F0000000F0000000F0000000F0000000F0000000F0000000F0000000F000000
0F0000000F00003F0F0001C0CF0003802F000F001F001E001F001C000F003C000F007C000F0078
000F0078000F00F8000F00F8000F00F8000F00F8000F00F8000F00F8000F00F8000F0078000F00
78000F003C000F003C000F001E001F000E002F0007004F8001C18FF8007E0FF8>29
42 126 169 33 I[<007E0003C3800700E00E00F01C00703C00783C003878003C78003CF8003C
F8003CFFFFFCF80000F80000F80000F80000F800007800007C00003C00043C00041E00080E0010
07002001C0C0007F00>22 26 126 153 27 I[<001F000070C000E1E001C3E003C3E00381C007
8080078000078000078000078000078000078000078000078000078000FFFE00FFFE0007800007
800007800007800007800007800007800007800007800007800007800007800007800007800007
800007800007800007800007800007800007800007C000FFFE00FFFE00>19
42 127 169 18 I[<0000078001FC1840070721C00E03C1C01E03C0803C01E0003C01E0007C01
F0007C01F0007C01F0007C01F0007C01F0003C01E0003C01E0001E03C0000E0380001707000011
FC0000300000003000000030000000380000001C0000001FFFC0000FFFF80007FFFC001C003E00
30000F007000070060000380E0000380E0000380E0000380E0000380700007007000070038000E
000C0018000780F00000FF8000>26 40 126 154 30 I[<07800000FF800000FF8000000F8000
000780000007800000078000000780000007800000078000000780000007800000078000000780
000007800000078000000783F800078C1C0007900E0007A0070007A0078007C0078007C0078007
800780078007800780078007800780078007800780078007800780078007800780078007800780
07800780078007800780078007800780078007800780078007800780FFFCFFFCFFFCFFFC>30
42 127 169 33 I[<07000F801F801F800F800700000000000000000000000000000000000000
07807F807F800F8007800780078007800780078007800780078007800780078007800780078007
800780078007800780FFF8FFF8>13 41 127 168 17 I[<007800FC00FC00FC00FC0078000000
000000000000000000000000000000007C07FC07FC007C003C003C003C003C003C003C003C003C
003C003C003C003C003C003C003C003C003C003C003C003C003C003C003C003C003C003C003C00
3C7038F838F870F07060C01F80>14 53 130 168 18 I[<07800000FF800000FF8000000F8000
000780000007800000078000000780000007800000078000000780000007800000078000000780
0000078000000780000007807FF007807FF007801F8007801C0007801800078020000780400007
808000078100000782000007870000079F800007A7800007C7C0000783E0000781E0000781F000
0780F8000780780007807C0007803E0007801E0007801F0007801F80FFFC7FF8FFFC7FF8>29
42 127 169 32 I[<0780FF80FF800F8007800780078007800780078007800780078007800780
078007800780078007800780078007800780078007800780078007800780078007800780078007
8007800780078007800780FFFCFFFC>14 42 127 169 17 I[<0781F800FC00FF860E030700FF
98070C03800FA0079003C007A003D001E007C003E001E007C003E001E0078003C001E0078003C0
01E0078003C001E0078003C001E0078003C001E0078003C001E0078003C001E0078003C001E007
8003C001E0078003C001E0078003C001E0078003C001E0078003C001E0078003C001E0078003C0
01E0078003C001E0078003C001E0FFFC7FFE3FFFFFFC7FFE3FFF>48 26
127 153 52 I[<0783F800FF8C1C00FF900E000FA0070007A0078007C0078007C0078007800780
078007800780078007800780078007800780078007800780078007800780078007800780078007
80078007800780078007800780078007800780078007800780FFFCFFFCFFFCFFFC>30
26 127 153 33 I[<007F000001C1C000070070000E0038001C001C003C001E003C001E007800
0F0078000F00F8000F80F8000F80F8000F80F8000F80F8000F80F8000F80F8000F80F8000F8078
000F0078000F003C001E003C001E001E003C000E0038000700700001C1C000007F0000>25
26 126 153 30 I[<0783F000FF8C1C00FFB00F0007A0078007C003C0078003E0078001E00780
01F0078001F0078000F8078000F8078000F8078000F8078000F8078000F8078000F8078000F007
8001F0078001F0078001E0078003C007C003C007C0078007A00E0007983C000787E00007800000
078000000780000007800000078000000780000007800000078000000780000007800000FFFC00
00FFFC0000>29 38 127 153 33 I[<003F008001E0C180038021800F0013801E000B801E000F
803C0007807C0007807C00078078000780F8000780F8000780F8000780F8000780F8000780F800
0780F80007807C0007807C0007803C0007803E000F801E000F800F0017800780278001E0C78000
7F0780000007800000078000000780000007800000078000000780000007800000078000000780
000007800000FFFC0000FFFC>30 38 126 153 32 I[<0787C0FF98E0FF91F00FA1F007C1F007
C0E007C00007800007800007800007800007800007800007800007800007800007800007800007
800007800007800007800007800007C000FFFE00FFFE00>20 26 127 153
23 I[<07F8401C06C03001C06000C06000C0E00040E00040F00040F800007E00007FF0003FFE00
0FFF0003FF80003FC00007C08001E08001E0C000E0C000E0C000E0E000C0F001C0F80180C40700
83F800>19 26 126 153 24 I[<00800000800000800000800001800001800001800003800003
80000780000F80001FFF80FFFF8007800007800007800007800007800007800007800007800007
800007800007800007800007800007804007804007804007804007804007804007804003C08001
C08000E100003E00>18 37 127 164 23 I[<07800780FF80FF80FF80FF800F800F8007800780
078007800780078007800780078007800780078007800780078007800780078007800780078007
80078007800780078007800780078007800780078007800F8007800F800380178001C027C000E0
47FC003F87FC>30 26 127 153 33 I[<FFF00FF8FFF00FF80F8003C0078003800780010003C0
020003C0020003E0020001E0040001E0040000F0080000F0080000F81800007810000078100000
3C2000003C2000003E6000001E4000001E4000000F8000000F8000000700000007000000070000
00020000>29 26 127 153 32 I[<FFF1FFC1FFFFF1FFC1FF0F803E00780F001E003007801E00
2007801E002007801F002003C03F004003C027004003C027804001E067808001E043808001E043
C08000F081C10000F081C10000F881E300007900E200007900E200007D00F600003E007400003E
007400001E007800001C003800001C003800000C0030000008001000>40
26 127 153 44 I[<FFF03FF0FFF03FF00FC01F8007C00E0003C0080001E0180000F0100000F8
200000784000003C8000001F8000001F0000000F000000078000000BC000001BE0000011E00000
20F0000040780000807C0001803C0001001E0007000F001F801F80FFC07FF8FFC07FF8>29
26 127 153 32 I[<FFF00FF8FFF00FF80F8003C0078003800780010003C0020003C0020003E0
020001E0040001E0040000F0080000F0080000F818000078100000781000003C2000003C200000
3E6000001E4000001E4000000F8000000F80000007000000070000000700000002000000020000
0004000000040000000400000008000070080000F8100000F8100000F8200000F0400000608000
001F000000>29 38 127 153 32 I[<7FFFF87800F06001F04001E04003C0C007C0800780800F
00801F00001E00003C00007C0000780000F00001F00001E00403C00407C0040780040F000C1F00
081E00083C00187C00387800F8FFFFF8>22 26 126 153 27 I[<FFFFFFF8>29
1 128 144 30 I E /Fl 12 119 995 432 dfs[<00003FF001800003FFFE0380000FFFFF8780
003FF007DF8000FF8001FF8001FE00007F8003FC00003F8007F000001F800FF000000F801FE000
0007801FE0000007803FC0000007803FC0000003807FC0000003807F80000003807F8000000000
FF8000000000FF8000000000FF8000000000FF8000000000FF8000000000FF8000000000FF8000
000000FF8000000000FF80000000007F80000000007F80000000007FC0000003803FC000000380
3FC0000003801FE0000003801FE0000007000FF00000070007F000000E0003FC00001E0001FE00
003C0000FF8000F800003FF007E000000FFFFFC0000003FFFF000000003FF80000>41
41 124 168 115 67 D[<01FF800007FFF0000F81F8001FC07E001FC07E001FC03F000F803F80
07003F8000003F8000003F8000003F80000FFF8000FFFF8007FC3F800FE03F803F803F803F003F
807F003F80FE003F80FE003F80FE003F80FE003F807E007F807F00DF803F839FFC0FFF0FFC01FC
03FC>30 27 126 154 76 97 D[<001FF80000FFFE0003F01F0007E03F800FC03F801F803F803F
801F007F800E007F0000007F000000FF000000FF000000FF000000FF000000FF000000FF000000
FF0000007F0000007F0000007F8000003F8001C01F8001C00FC0038007E0070003F01E0000FFFC
00001FE000>26 27 126 154 71 99 D[<003FE00001FFF80003F07E0007C01F000F801F801F80
0F803F800FC07F000FC07F0007C07F0007E0FF0007E0FF0007E0FFFFFFE0FFFFFFE0FF000000FF
000000FF0000007F0000007F0000007F0000003F8000E01F8000E00FC001C007E0038003F81F00
00FFFE00001FF000>27 27 126 154 74 101 D[<07000FC01FE03FE03FE03FE01FE00FC00700
0000000000000000000000000000FFE0FFE0FFE00FE00FE00FE00FE00FE00FE00FE00FE00FE00F
E00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE0FFFEFFFEFFFE>15
43 125 170 46 105 D[<FFE0FFE0FFE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE0
0FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00F
E00FE00FE00FE00FE00FE0FFFEFFFEFFFE>15 42 125 169 46 108 D[<FFC07F800FF000FFC1
FFE03FFC00FFC383F0707E000FC603F8C07F000FCC01F9803F000FD801FF003F800FF001FE003F
800FF001FE003F800FE001FC003F800FE001FC003F800FE001FC003F800FE001FC003F800FE001
FC003F800FE001FC003F800FE001FC003F800FE001FC003F800FE001FC003F800FE001FC003F80
0FE001FC003F800FE001FC003F800FE001FC003F800FE001FC003F800FE001FC003F800FE001FC
003F80FFFE1FFFC3FFF8FFFE1FFFC3FFF8FFFE1FFFC3FFF8>53 27 125
154 138 I[<FFC07F0000FFC1FFC000FFC787E0000FCE03F0000FD803F0000FD803F8000FF003
F8000FF003F8000FE003F8000FE003F8000FE003F8000FE003F8000FE003F8000FE003F8000FE0
03F8000FE003F8000FE003F8000FE003F8000FE003F8000FE003F8000FE003F8000FE003F8000F
E003F8000FE003F800FFFE3FFF80FFFE3FFF80FFFE3FFF80>33 27 125
154 88 I[<003FE00001FFFC0003F07E000FC01F801F800FC03F800FE03F0007E07F0007F07F00
07F07F0007F0FF0007F8FF0007F8FF0007F8FF0007F8FF0007F8FF0007F8FF0007F8FF0007F87F
0007F07F0007F03F800FE03F800FE01F800FC00FC01F8007F07F0001FFFC00003FE000>29
27 126 154 78 I[<00700000700000700000700000F00000F00000F00001F00003F00003F000
07F0001FFFF0FFFFF0FFFFF007F00007F00007F00007F00007F00007F00007F00007F00007F000
07F00007F00007F00007F00007F03807F03807F03807F03807F03807F03803F03803F87001F860
00FFC0001F80>21 38 127 165 62 116 D[<FFE03FF800FFE03FF800FFE03FF8000FE003F800
0FE003F8000FE003F8000FE003F8000FE003F8000FE003F8000FE003F8000FE003F8000FE003F8
000FE003F8000FE003F8000FE003F8000FE003F8000FE003F8000FE003F8000FE003F8000FE003
F8000FE003F8000FE007F80007E007F80007E00FF80003F03BFF8001FFF3FF80003FC3FF80>33
27 125 154 88 I[<FFFE03FF80FFFE03FF80FFFE03FF8007F000700007F000700007F800F000
03F800E00003FC01E00001FC01C00001FC01C00000FE03800000FE038000007F070000007F0700
00007F8F0000003F8E0000003FDE0000001FDC0000001FDC0000000FF80000000FF80000000FF8
00000007F000000007F000000003E000000003E000000001C00000>33 27
127 154 83 I E /Fm 8 117 829 432 dfs[<000E00001E00007E0007FE00FFFE00FFFE00F8FE
0000FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE
0000FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE
0000FE0000FE0000FE007FFFFE7FFFFE7FFFFE>23 39 123 166 65 49
D[<00003FF001800003FFFE0380000FFFFF8780003FF007DF8000FF8001FF8001FE00007F8003
FC00003F8007F000001F800FF000000F801FE0000007801FE0000007803FC0000007803FC00000
03807FC0000003807F80000003807F8000000000FF8000000000FF8000000000FF8000000000FF
8000000000FF8000000000FF8000000000FF8000000000FF8000000000FF80000000007F800000
00007F80000000007FC0000003803FC0000003803FC0000003801FE0000003801FE0000007000F
F00000070007F000000E0003FC00001E0001FE00003C0000FF8000F800003FF007E000000FFFFF
C0000003FFFF000000003FF80000>41 41 124 168 96 67 D[<01FF800007FFF0000F81F8001F
C07E001FC07E001FC03F000F803F8007003F8000003F8000003F8000003F80000FFF8000FFFF80
07FC3F800FE03F803F803F803F003F807F003F80FE003F80FE003F80FE003F80FE003F807E007F
807F00DF803F839FFC0FFF0FFC01FC03FC>30 27 126 154 63 97 D[<003FE00001FFF80003F0
7E0007C01F000F801F801F800F803F800FC07F000FC07F0007C07F0007E0FF0007E0FF0007E0FF
FFFFE0FFFFFFE0FF000000FF000000FF0000007F0000007F0000007F0000003F8000E01F8000E0
0FC001C007E0038003F81F0000FFFE00001FF000>27 27 126 154 61 101
D[<FFE0000000FFE0000000FFE00000000FE00000000FE00000000FE00000000FE00000000FE0
0000000FE00000000FE00000000FE00000000FE00000000FE00000000FE00000000FE00000000F
E07F00000FE1FFC0000FE787E0000FEE03F0000FF803F0000FF803F8000FF003F8000FF003F800
0FE003F8000FE003F8000FE003F8000FE003F8000FE003F8000FE003F8000FE003F8000FE003F8
000FE003F8000FE003F8000FE003F8000FE003F8000FE003F8000FE003F8000FE003F8000FE003
F800FFFE3FFF80FFFE3FFF80FFFE3FFF80>33 42 125 169 73 104 D[<FFE1FE0000FFE7FF80
00FFFE07E0000FF803F0000FF001F8000FE000FC000FE000FE000FE000FF000FE0007F000FE000
7F000FE0007F800FE0007F800FE0007F800FE0007F800FE0007F800FE0007F800FE0007F800FE0
007F000FE000FF000FE000FF000FE000FE000FE001FC000FF001F8000FF803F0000FFE0FE0000F
E7FF80000FE1FC00000FE00000000FE00000000FE00000000FE00000000FE00000000FE0000000
0FE00000000FE00000000FE0000000FFFE000000FFFE000000FFFE000000>33
39 126 154 73 112 D[<FFC1F0FFC7FCFFCE3E0FD87F0FD87F0FF07F0FF03E0FF01C0FE0000F
E0000FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE0000F
E0000FE000FFFF00FFFF00FFFF00>24 27 126 154 54 114 D[<007000007000007000007000
00F00000F00000F00001F00003F00003F00007F0001FFFF0FFFFF0FFFFF007F00007F00007F000
07F00007F00007F00007F00007F00007F00007F00007F00007F00007F00007F03807F03807F038
07F03807F03807F03803F03803F87001F86000FFC0001F80>21 38 127
165 52 116 D E /Fn 36 119 400 300 dfs[<0007800000001C600380003010078000601007
8000E010038000C010010001C07001000380F002000380F0020003806004000700000800070000
10000700006000073C00A00007E20310000781041000070108080007011008000F022008001F84
2008001C782C08003C003E080038003E080078001C0800780000080078000008007000001000F0
00001000700000200070000020007800004000380000800038000100001C000200000E000C0000
0380700000007F800000>33 37 123 163 49 38 D[<70F8F8F0E0>5 5
122 132 20 46 D[<0000030000000300000007000000070000000F0000000F0000001F000000
2F0000002F0000004F0000004F8000008780000087800001078000020780000207800004078000
0407800008078000080780001007800030078000200780007FFF80004007C0008007C0008003C0
010003C0030003C0020003C0040003C0040003C00C0003C03C0007C0FF003FFC>30
35 125 162 48 65 D[<00FFFFE0000F0038000F001C000F001E001E000E001E000F001E000F00
1E000F003C000E003C001E003C001E003C003C00780078007800F0007801E00078078000FFFF80
00F001E000F000F000F0007801E0007801E0003801E0003C01E0003C03C0007803C0007803C000
7803C000F0078000F0078001E0078003C0078007000F801E00FFFFF000>32
34 125 161 45 I[<00FFFFF000000F003C00000F000E00000F000700001E000380001E000380
001E0001C0001E0001C0003C0001C0003C0001E0003C0001E0003C0001E000780001E000780001
E000780001E000780001E000F00003C000F00003C000F00003C000F00003C001E000078001E000
078001E000070001E0000F0003C0000E0003C0001C0003C0003C0003C000380007800070000780
00E000078001C00007800700000F801C0000FFFFF00000>35 34 125 161
49 68 D[<00007F00800003808100000E00630000380027000070001F0000E0000E0001C0000E
000380000E000700000E000F000004000E000004001E000004003C000004003C00000800780000
000078000000007800000000F000000000F000000000F000000000F000000000F0003FFC00E000
01E000E00001E000E00001E000E00003C000E00003C000F00003C000700003C000700007800038
0007800018000F80001C0013800006002300000381C1000000FE000000>33
36 121 162 51 71 D[<00FFF8000F00000F00000F00001E00001E00001E00001E00003C00003C
00003C00003C0000780000780000780000780000F00000F00000F00000F00001E00001E00001E0
0001E00003C00003C00003C00003C0000780000780000780000780000F8000FFF800>21
34 125 161 25 73 D[<0007FFC000003C0000003C0000003C0000007800000078000000780000
0078000000F0000000F0000000F0000000F0000001E0000001E0000001E0000001E0000003C000
0003C0000003C0000003C00000078000000780000007800000078000000F0000000F0000380F00
00780F0000F81E0000F81E0000F03C0000403800004070000021E000001F800000>26
35 124 161 35 I[<00FFF807FC000F0001E0000F0001C0000F000100001E000200001E000400
001E001000001E002000003C004000003C008000003C010000003C040000007808000000781800
00007838000000787C000000F0BC000000F23C000000F41E000000F81E000001F01F000001E00F
000001E00F000001E00F800003C007800003C007800003C003C00003C003C000078003C0000780
01E000078001E000078001E0000F8001F000FFF80FFE00>38 34 125 161
49 I[<00FFFC00000F8000000F0000000F0000001E0000001E0000001E0000001E0000003C0000
003C0000003C0000003C00000078000000780000007800000078000000F0000000F0000000F000
0000F0000001E0000001E0000001E0002001E0002003C0004003C0004003C0008003C000800780
0180078001000780030007800F000F803E00FFFFFE00>27 34 125 161
41 I[<00FF800007FC000F80000F80000F80001780000F80001780001780002F000013C0002F00
0013C0004F000013C0008F000023C0009E000023C0011E000023C0011E000023C0021E000043C0
043C000043C0043C000043C0083C000041E0083C000081E01078000081E02078000081E0207800
0081E04078000101E040F0000101E080F0000101E100F0000101E100F0000200F201E0000200F2
01E0000200F401E0000200F801E0000400F803C0000400F003C0000400F003C0000C00E003C000
1E00C007C000FFC0C07FFC00>46 34 125 161 59 I[<00FF000FFC000F8001E0000F80018000
0FC000800013C001000013C001000011E001000011E001000021E002000020F002000020F00200
0020F0020000407804000040780400004078040000403C040000803C080000803E080000801E08
0000801E080001001F100001000F100001000F10000100079000020007A000020007A000020003
E000020003E000040003C000040001C000040001C0000C0001C0001E00008000FFC0008000>38
34 125 161 48 I[<0000FE0000078380000C00E0003800700070003800E0003801C0001C0380
001C0700001C0F00001E1E00001E1C00001E3C00001E3C00001E7800001E7800001E7800001EF0
00003CF000003CF000003CF0000078F0000078E0000078E00000F0E00000F0E00001E0E00001C0
F00003C0F00007807000070078000E0038001C001C0038000E00E0000703800001FC0000>31
36 121 162 49 I[<00FFFFC0000F0070000F003C000F001C001E000E001E000E001E000F001E
000F003C001E003C001E003C001E003C003C0078003800780070007801E00078078000FFFC0000
F00E0000F0070000F0038001E003C001E003C001E003C001E003C003C0078003C0078003C00780
03C0078007800F0007800F0107800F01078007020F800702FFF8038C000000F0>32
35 125 161 48 82 D[<0001F020000E0C40001802C0003001C0006001C000E0018000C0018001
C0018001C0018003C0010003C0010003C0000003C0000003E0000001F8000001FF000000FFE000
007FF000001FF8000003FC0000007C0000003C0000001E0000001E0000001E0020001C0020001C
0020001C00200018006000380060003000700060007000C000C8018000C607000081FC0000>27
36 125 162 36 I[<1FFFFFF81E03C0381803C0183003C0182007801820078018400780104007
8010400F0010800F0010800F0010000F0000001E0000001E0000001E0000001E0000003C000000
3C0000003C0000003C00000078000000780000007800000078000000F0000000F0000000F00000
00F0000001E0000001E0000001E0000001E0000003E00000FFFF0000>29
34 119 161 47 I[<3FFE03FF03C0007803C0006003C000200780004007800040078000400780
00400F0000800F0000800F0000800F0000801E0001001E0001001E0001001E0001003C0002003C
0002003C0002003C0002007800040078000400780004007800040070000800F0000800F0001000
7000100070002000700040003000400038018000180200000E0C000003F00000>32
35 119 161 48 I[<FFF03FF80FF81F0007C003C01E00078001801E00078001001E0007800200
1E000F8002001E000F8004001F00178004001F00178008000F00278008000F00278010000F0047
8010000F00C78020000F00878020000F01078040000F010780C0000F02078080000F0207810000
0F04078100000F0407C200000F0807C200000F0803C400000F1003C400000F1003C800000F2003
C800000F2003D000000F4003D000000FC003E000000F8003E000000F0003C000000F0003800000
0E00038000000E00030000000C00030000000C0002000000>45 35 118
161 65 87 D[<FFF001FF1F8000780F0000600F0000400F8000C0078000800780010007C00200
03C0060003C0040003E0080001E0100001E0200001F0600000F0400000F0800000F9000000FB00
00007A0000007C00000078000000780000007800000078000000F0000000F0000000F0000000F0
000001E0000001E0000001E0000001E0000003E000003FFC0000>32 34
118 161 48 89 D[<00F8C00185C00705C00E03800E03801C03803C0380380700780700780700
780700F00E00F00E00F00E00F00E10F01C20701C20703C20305C40308C400F0780>20
21 123 148 33 97 D[<007E0001C1000301800703800E07801C07803C00003800007800007800
00780000F00000F00000F00000F00000F00100700100700200300C001830000FC000>17
21 123 148 29 99 D[<00003C0003F80000380000380000380000700000700000700000700000
E00000E00000E00000E00001C000F9C00185C00705C00E03800E03801C03803C03803807007807
00780700780700F00E00F00E00F00E00F00E10F01C20701C20703C20305C40308C400F0780>22
35 123 162 33 I[<00F803840E021C023C0238027804F018FFE0F000F000E000E000E000E000
E002E0026004701830600F80>15 21 122 148 29 I[<00003E0000470000CF00018F00018600
0380000380000380000700000700000700000700000700000E0000FFF0000E00000E00000E0000
1C00001C00001C00001C00001C0000380000380000380000380000380000700000700000700000
700000700000E00000E00000E00000E00000C00001C00001C000718000F18000F300006200003C
0000>24 45 130 162 20 I[<001F180030B800E0B801C07001C0700380700780700700E00F00
E00F00E00F00E01E01C01E01C01E01C01E01C01E03800E03800E0780060B8006170001E7000007
00000700000E00000E00000E00701C00F01800F0300060E0003F8000>21
31 126 148 29 I[<00C001E001C001C0000000000000000000000000000000001C0023004300
43008700870087000E000E001C001C001C00380038003840708070807080710032001C00>11
33 123 160 20 105 D[<00F0000FE00000E00000E00000E00001C00001C00001C00001C00003
80000380000380000380000700000701E0070210070C700E10F00E10F00E20600E40001D80001E
00001FC0001C7000383800383800381C00381C20703840703840703840701880E01880600F00>
20 35 125 162 29 107 D[<01E01FC001C001C001C0038003800380038007000700070007000E
000E000E000E001C001C001C001C0038003800380038007000700070007100E200E200E200E200
64003800>11 35 124 162 16 I[<1C0F002631C04740C08780E08780E08700E08700E00E01C0
0E01C00E01C00E01C01C03801C03801C03801C0704380708380E08380E103806107006203003C0
>22 21 123 148 36 110 D[<007E0001C3000381800701C00E01C01C01E03C01E03801E07801
E07801E07801E0F003C0F003C0F00380F00780700700700E00700C0030180018700007C000>19
21 123 148 33 I[<01C1F002621804741C08780C08700E08700E08701E00E01E00E01E00E01E
00E01E01C03C01C03C01C03C01C07803807003807003C0E003C1C0072380071E00070000070000
0E00000E00000E00000E00001C00001C00001C0000FFC000>23 31 127
148 33 I[<1C1F002620804741C08783C08703C08701808700000E00000E00000E00000E00001C
00001C00001C00001C0000380000380000380000380000700000300000>18
21 123 148 28 114 D[<00FC000183000200800401800C03800C03000C00000F00000FF00007
FC0003FE00003E00000F00000700700700F00600F00600E004004008002030001FC000>17
21 125 148 27 I[<00C001C001C001C001C003800380038003800700FFF8070007000E000E00
0E000E001C001C001C001C003800380038003810702070207040708031001E00>13
31 124 158 21 I[<1E00602300E04380E04381C08381C08701C08701C00703800E03800E0380
0E03801C07001C07001C07001C07081C0E10180E101C0E101C1E200C262007C3C0>21
21 123 148 35 I[<1E03802307C04387C04383C08381C08700C08700C00700800E00800E0080
0E00801C01001C01001C01001C02001C02001C04001C08001C08000C300003C000>18
21 123 148 29 I E /Fo 54 122 400 300 dfs[<0000C018000000C018000000C01800000180
300000018030000001803000000180300000030060000003006000000300600000030060000003
006000000600C000000600C000000600C000000600C000000C018000FFFFFFFFC0FFFFFFFFC000
180300000018030000001803000000180300000030060000003006000000300600000030060000
FFFFFFFFC0FFFFFFFFC000600C000000C018000000C018000000C018000000C018000001803000
0001803000000180300000018030000003006000000300600000030060000003006000000600C0
00000600C000000600C00000>34 45 125 162 55 35 D[<70F8FCFC7404040404080810102040
>6 15 124 132 19 44 D[<FFE0FFE0>11 2 127 139 21 I[<70F8F8F870>5
5 124 132 19 I[<01F000071C000C06001803003803803803807001C07001C07001C07001C0F0
01E0F001E0F001E0F001E0F001E0F001E0F001E0F001E0F001E0F001E0F001E0F001E0F001E0F0
01E07001C07001C07001C07803C03803803803801C07000C0600071C0001F000>19
34 126 160 32 48 D[<008003800F80F380038003800380038003800380038003800380038003
80038003800380038003800380038003800380038003800380038003800380038007C0FFFE>15
33 124 160 32 I[<03F0000C1C001007002007804003C04003C08003E0F003E0F801E0F801E0
F801E02003E00003E00003C00003C0000780000700000E00001C0000180000300000600000C000
0180000100000200200400200800201800603000403FFFC07FFFC0FFFFC0>19
33 126 160 32 I[<03F8000C1E001007002007804007C07807C07803C07807C03807C0000780
000780000700000F00000E0000380003F000001C00000F000007800007800003C00003C00003E0
2003E07003E0F803E0F803E0F003C04003C0400780200780100F000C1C0003F000>19
34 126 160 32 I[<1000801E07001FFF001FFE001FF80013E000100000100000100000100000
10000010000010F800130E001407001803801003800001C00001C00001E00001E00001E00001E0
7001E0F001E0F001E0E001C08001C04003C04003802007001006000C1C0003F000>19
34 126 160 32 53 D[<007E0001C1000300800601C00E03C01C03C01801803800003800007800
00700000700000F0F800F30C00F40600F40300F80380F801C0F001C0F001E0F001E0F001E0F001
E0F001E07001E07001E07001E03801C03801C01803801C03000C0600070C0001F000>19
34 126 160 32 I[<01F800060E000803001001802001802000C06000C06000C06000C07000C0
7801803E01003F02001FC4000FF80003F80003FC00067F00083F80100F803007C06001C06000E0
C000E0C00060C00060C00060C000606000406000C03000801803000E0E0003F000>19
34 126 160 32 56 D[<01F000060C000C0600180700380380700380700380F001C0F001C0F001
C0F001E0F001E0F001E0F001E0F001E07001E07003E03803E01805E00C05E00619E003E1E00001
C00001C00001C0000380000380300300780700780600700C002018001030000FC000>19
34 126 160 32 I[<0001800000018000000180000003C0000003C0000003C0000005E0000005
E000000DF0000008F0000008F0000010F800001078000010780000203C0000203C0000203C0000
401E0000401E0000401E0000800F0000800F0000FFFF000100078001000780030007C0020003C0
020003C0040003E0040001E0040001E00C0000F00C0000F03E0001F8FF800FFF>32
35 126 162 49 65 D[<FFFFF8000F800E0007800780078003C0078003E0078001E0078001F007
8001F0078001F0078001F0078001F0078001E0078003E0078007C007800F8007803E0007FFFE00
07800780078003C0078001E0078001F0078000F0078000F8078000F8078000F8078000F8078000
F8078000F8078001F0078001F0078003E0078007C00F800F00FFFFFC00>29
34 126 161 47 I[<0007E0100038183000E0063001C00170038000F0070000F00E0000701E00
00701C0000303C0000303C0000307C0000107800001078000010F8000000F8000000F8000000F8
000000F8000000F8000000F8000000F800000078000000780000107C0000103C0000103C000010
1C0000201E0000200E000040070000400380008001C0010000E0020000381C000007E000>28
36 125 162 47 I[<FFFFF0000F801E0007800700078003C0078001C0078000E0078000F00780
0078078000780780007C0780003C0780003C0780003C0780003E0780003E0780003E0780003E07
80003E0780003E0780003E0780003E0780003E0780003C0780003C0780007C0780007807800078
078000F0078000E0078001E0078003C0078007000F801E00FFFFF800>31
34 126 161 49 I[<FFFFFFC00F8007C0078001C0078000C00780004007800040078000600780
0020078000200780002007802020078020000780200007802000078060000780E00007FFE00007
80E000078060000780200007802000078020000780200007800000078000000780000007800000
07800000078000000780000007800000078000000FC00000FFFE0000>27
34 126 161 43 70 D[<0007F008003C0C1800E0021801C001B8038000F8070000780F0000381E
0000381E0000183C0000183C0000187C0000087800000878000008F8000000F8000000F8000000
F8000000F8000000F8000000F8000000F8001FFF780000F8780000787C0000783C0000783C0000
781E0000781E0000780F00007807000078038000B801C000B800E00318003C0C080007F000>32
36 125 162 51 I[<FFFC3FFF0FC003F0078001E0078001E0078001E0078001E0078001E00780
01E0078001E0078001E0078001E0078001E0078001E0078001E0078001E0078001E007FFFFE007
8001E0078001E0078001E0078001E0078001E0078001E0078001E0078001E0078001E0078001E0
078001E0078001E0078001E0078001E0078001E00FC003F0FFFC3FFF>32
34 126 161 49 I[<03FFF0001F00000F00000F00000F00000F00000F00000F00000F00000F00
000F00000F00000F00000F00000F00000F00000F00000F00000F00000F00000F00000F00000F00
000F00000F00000F00700F00F80F00F80F00F80E00F01E00401C0020380018700007C000>20
35 126 161 33 74 D[<FFFC03FF000FC000F80007800060000780004000078000800007800100
000780020000078004000007800800000780100000078020000007804000000780800000078180
00000783C000000787E000000789E000000788F000000790F0000007A078000007C03C00000780
3C000007801E000007800F000007800F00000780078000078007C000078003C000078001E00007
8001E000078000F000078000F8000FC000FC00FFFC07FF80>33 34 126
161 51 I[<FFFE00000FC000000780000007800000078000000780000007800000078000000780
000007800000078000000780000007800000078000000780000007800000078000000780000007
800000078000000780000007800000078000800780008007800080078000800780018007800180
07800100078003000780030007800F000F803F00FFFFFF00>25 34 126
161 40 I[<FFC00003FF0FC00003F007C00003E005E00005E005E00005E004F00009E004F00009
E004F00009E004780011E004780011E004780011E0043C0021E0043C0021E0043C0021E0041E00
41E0041E0041E0040F0081E0040F0081E0040F0081E004078101E004078101E004078101E00403
C201E00403C201E00401E401E00401E401E00401E401E00400F801E00400F801E00400F801E004
007001E00E007001E01F007003F0FFE0203FFF>40 34 126 161 60 I[<FF8007FF07C000F807
C0007005E0002004F0002004F0002004780020047C0020043C0020041E0020041F0020040F0020
04078020040780200403C0200401E0200401E0200400F0200400F8200400782004003C2004003E
2004001E2004000F2004000F20040007A0040003E0040003E0040001E0040001E0040000E00E00
00601F000060FFE00020>32 34 126 161 49 I[<000FE00000783C0000E00E0003C007800780
03C00F0001E00E0000E01E0000F03C0000783C0000787C00007C7C00007C7800003C7800003CF8
00003EF800003EF800003EF800003EF800003EF800003EF800003EF800003EF800003E7800003C
7C00007C7C00007C3C0000783E0000F81E0000F00F0001E00F0001E0078003C003C0078000E00E
0000783C00000FE000>31 36 125 162 51 I[<FFFFF0000F803C0007800F0007800780078007
C0078003C0078003E0078003E0078003E0078003E0078003E0078003E0078003C0078007C00780
078007800F0007803C0007FFF00007800000078000000780000007800000078000000780000007
800000078000000780000007800000078000000780000007800000078000000FC00000FFFC0000
>27 34 126 161 44 I[<FFFFE000000F803C000007800E00000780078000078007C000078003
C000078003E000078003E000078003E000078003E000078003E000078003C000078007C0000780
07800007800E000007803C000007FFE000000780700000078038000007801C000007801E000007
800E000007800F000007800F000007800F000007800F000007800F800007800F800007800F8000
07800F808007800FC080078007C0800FC003C100FFFC01E2000000007C00>33
35 126 161 48 82 D[<03F0200C0C601802603001E07000E0600060E00060E00060E00020E000
20E00020F00000F000007800007F00003FF0001FFE000FFF0003FF80003FC00007E00001E00000
F00000F0000070800070800070800070800070C00060C00060E000C0F000C0C80180C6070081FC
00>20 36 125 162 36 I[<7FFFFFF87807807860078018400780084007800840078008C00780
0C8007800480078004800780048007800400078000000780000007800000078000000780000007
800000078000000780000007800000078000000780000007800000078000000780000007800000
0780000007800000078000000780000007800000078000000FC00003FFFF00>30
34 126 161 47 I[<FFF03FFC03FE1F8007E000F80F0003C000700F0003C000200F0003C00020
078001E00040078001E00040078001E0004003C002F0008003C002F0008003C002F0008001E004
78010001E00478010001E00478010000F0083C020000F0083C020000F0083C020000F8183E0600
0078101E04000078101E0400007C101E0400003C200F0800003C200F0800003C200F0800001E40
079000001E40079000001E40079000000F8003E000000F8003E000000F8003E00000070001C000
00070001C00000070001C000000300018000000200008000>47 35 127
161 67 87 D[<7FFFFE7E003E78003C7000786000784000F0C000F0C001E08003C08003C08007
80000780000F00001F00001E00003C00003C0000780000780000F00001F00001E00103C00103C0
010780010780030F00031E00021E00023C00063C000E78001EF8007EFFFFFE>24
34 125 161 40 90 D[<0FE0001838003C0C003C0E0018070000070000070000070000FF0007C7
001E07003C0700780700700700F00708F00708F00708F00F087817083C23900FC1E0>21
21 126 148 32 97 D[<0E0000FE00001E00000E00000E00000E00000E00000E00000E00000E00
000E00000E00000E00000E00000E1F000E61C00E80600F00300E00380E003C0E001C0E001E0E00
1E0E001E0E001E0E001E0E001E0E001E0E001C0E003C0E00380F00700C80600C41C0083F00>23
35 127 162 36 I[<01FE000703000C07801C0780380300780000700000F00000F00000F00000
F00000F00000F00000F000007000007800403800401C00800C010007060001F800>18
21 126 148 29 I[<0000E0000FE00001E00000E00000E00000E00000E00000E00000E00000E0
0000E00000E00000E00000E001F8E00704E00C02E01C01E03800E07800E07000E0F000E0F000E0
F000E0F000E0F000E0F000E0F000E07000E07800E03800E01801E00C02E0070CF001F0FE>23
35 126 162 36 I[<01FC000707000C03801C01C03801C07801E07000E0F000E0FFFFE0F00000
F00000F00000F00000F000007000007800203800201C00400E008007030000FC00>19
21 127 148 29 I[<003C00C6018F038F030F070007000700070007000700070007000700FFF8
07000700070007000700070007000700070007000700070007000700070007000700070007807F
F8>16 35 128 162 20 I[<00007001F198071E180E0E181C07001C07003C07803C07803C0780
3C07801C07001C07000E0E000F1C0019F0001000001000001800001800001FFE000FFFC00FFFE0
3800F0600030400018C00018C00018C000186000306000303800E00E038003FE00>21
33 127 149 32 I[<0E0000FE00001E00000E00000E00000E00000E00000E00000E00000E0000
0E00000E00000E00000E00000E1F800E60C00E80E00F00700F00700E00700E00700E00700E0070
0E00700E00700E00700E00700E00700E00700E00700E00700E00700E00700E0070FFE7FF>24
35 127 162 36 I[<1C001E003E001E001C00000000000000000000000000000000000E00FE00
1E000E000E000E000E000E000E000E000E000E000E000E000E000E000E000E000E000E00FFC0>
10 34 127 161 19 I[<01C003E003E003E001C00000000000000000000000000000000001E00F
E001E000E000E000E000E000E000E000E000E000E000E000E000E000E000E000E000E000E000E0
00E000E000E000E000E060E0F0C0F18061803E00>11 44 130 161 20 I[<0E0000FE00001E00
000E00000E00000E00000E00000E00000E00000E00000E00000E00000E00000E00000E03FC0E01
F00E01C00E01800E02000E04000E08000E10000E38000EF8000F1C000E1E000E0E000E07000E07
800E03C00E01C00E01E00E00F00E00F8FFE3FE>23 35 127 162 35 I[<0E00FE001E000E000E
000E000E000E000E000E000E000E000E000E000E000E000E000E000E000E000E000E000E000E00
0E000E000E000E000E000E000E000E000E000E00FFE0>11 35 127 162
19 I[<0E1FC07F00FE60E183801E807201C00F003C00E00F003C00E00E003800E00E003800E00E
003800E00E003800E00E003800E00E003800E00E003800E00E003800E00E003800E00E003800E0
0E003800E00E003800E00E003800E00E003800E00E003800E0FFE3FF8FFE>39
21 127 148 56 I[<0E1F80FE60C01E80E00F00700F00700E00700E00700E00700E00700E0070
0E00700E00700E00700E00700E00700E00700E00700E00700E00700E0070FFE7FF>24
21 127 148 36 I[<01FC000707000C01801800C03800E0700070700070F00078F00078F00078
F00078F00078F00078F000787000707800F03800E01C01C00E038007070001FC00>21
21 127 148 32 I[<0E1F00FE61C00E80600F00700E00380E003C0E001C0E001E0E001E0E001E
0E001E0E001E0E001E0E001E0E003C0E003C0E00380F00700E80E00E41C00E3F000E00000E0000
0E00000E00000E00000E00000E00000E00000E0000FFE000>23 31 127
148 36 I[<0E3CFE461E8F0F0F0F060F000E000E000E000E000E000E000E000E000E000E000E00
0E000E000F00FFF0>16 21 127 148 25 114 D[<0F8830786018C018C008C008E008F0007F80
3FE00FF001F8003C801C800C800CC00CC008E018D0308FC0>14 21 126
148 25 I[<02000200020002000600060006000E001E003E00FFF80E000E000E000E000E000E00
0E000E000E000E000E000E040E040E040E040E040E040708030801F0>14
31 127 158 25 I[<0E0070FE07F01E00F00E00700E00700E00700E00700E00700E00700E0070
0E00700E00700E00700E00700E00700E00700E00F00E00F006017003827800FC7F>24
21 127 148 36 I[<FFC1FE1E00780E00300E00200E0020070040070040038080038080038080
01C10001C10000E20000E20000E200007400007400003800003800003800001000>23
21 127 148 35 I[<FF8FF8FF1E01E03C1C01C0180E01C0180E01E0100E01E010070260200702
70200702702003843040038438400384384001C8188001C81C8001C81C8000F00D0000F00F0000
F00F00006006000060060000600600>32 21 127 148 47 I[<FFC1FE1E00780E00300E00200E
002007004007004003808003808003808001C10001C10000E20000E20000E20000740000740000
3800003800003800001000001000002000002000002000004000F04000F08000F180004300003C
0000>23 31 127 148 35 121 D E /Fp 20 118 400 360 dfs[<FFFFF8FFFFF8FFFFF8FFFFF8
>21 4 127 148 29 45 D[<FFFFFFFF800000FFFFFFFFF0000003FC0003FC000001F800007F00
0001F800001F800001F8000007C00001F8000003F00001F8000001F80001F8000000F80001F800
00007C0001F80000003E0001F80000003F0001F80000001F0001F80000001F8001F80000000F80
01F80000000FC001F80000000FC001F800000007E001F800000007E001F800000007E001F80000
0007F001F800000003F001F800000003F001F800000003F001F800000003F801F800000003F801
F800000003F801F800000003F801F800000003F801F800000003F801F800000003F801F8000000
03F801F800000003F801F800000003F801F800000003F801F800000003F801F800000003F001F8
00000003F001F800000003F001F800000007F001F800000007E001F800000007E001F800000007
E001F80000000FC001F80000000FC001F80000001F8001F80000001F8001F80000003F0001F800
00003E0001F80000007E0001F8000000FC0001F8000001F80001F8000003F00001F8000007E000
01F800000F800001F800003F000003FC0001FC0000FFFFFFFFF00000FFFFFFFF800000>53
59 124 186 68 68 D[<FFFFF0FFFFF003FC0001F80001F80001F80001F80001F80001F80001F8
0001F80001F80001F80001F80001F80001F80001F80001F80001F80001F80001F80001F80001F8
0001F80001F80001F80001F80001F80001F80001F80001F80001F80001F80001F80001F80001F8
0001F80001F80001F80001F80001F80001F80001F80001F80001F80001F80001F80001F80001F8
0001F80001F80001F80001F80001F80001F80001F80003FC00FFFFF0FFFFF0>20
59 124 186 31 73 D[<FFF8000000001FFF80FFFC000000003FFF8003FC000000003FE00001FC
000000003FC00001BE000000006FC00001BE000000006FC00001BE000000006FC000019F000000
00CFC000019F00000000CFC000019F00000000CFC000018F800000018FC000018F800000018FC0
000187C00000030FC0000187C00000030FC0000187C00000030FC0000183E00000060FC0000183
E00000060FC0000183E00000060FC0000181F000000C0FC0000181F000000C0FC0000181F00000
0C0FC0000180F80000180FC0000180F80000180FC00001807C0000300FC00001807C0000300FC0
0001807C0000300FC00001803E0000600FC00001803E0000600FC00001803E0000600FC0000180
1F0000C00FC00001801F0000C00FC00001801F0000C00FC00001800F8001800FC00001800F8001
800FC000018007C003000FC000018007C003000FC000018007C003000FC000018003E006000FC0
00018003E006000FC000018003E006000FC000018001F00C000FC000018001F00C000FC0000180
01F00C000FC000018000F818000FC000018000F818000FC0000180007C30000FC0000180007C30
000FC0000180007C30000FC0000180003E60000FC0000180003E60000FC0000180003E60000FC0
000180001FC0000FC0000180001FC0000FC0000180001FC0000FC00003C0000F80000FC00007E0
000F80000FC0000FF0000700001FE000FFFF00070007FFFF80FFFF00070007FFFF80>65
59 124 186 81 77 D[<FFFFFFFF0000FFFFFFFFE00003FC0003F80001F800007E0001F800003F
0001F800000F8001F8000007C001F8000007E001F8000003F001F8000003F001F8000003F801F8
000001F801F8000001FC01F8000001FC01F8000001FC01F8000001FC01F8000001FC01F8000001
FC01F8000001FC01F8000001F801F8000003F801F8000003F001F8000003F001F8000007E001F8
000007C001F800000F8001F800003F0001F800007C0001F80003F00001FFFFFFC00001F8000000
0001F80000000001F80000000001F80000000001F80000000001F80000000001F80000000001F8
0000000001F80000000001F80000000001F80000000001F80000000001F80000000001F8000000
0001F80000000001F80000000001F80000000001F80000000001F80000000001F80000000001F8
0000000001F80000000001F80000000001F80000000001F80000000001F80000000003FC000000
00FFFFF0000000FFFFF0000000>46 59 124 186 60 80 D[<000FF00080007FFE018001F00F81
8003C001C380070000E3800E000037801C00003F803C00001F803800000F807800000F80700000
07807000000780F000000380F000000380F000000380F000000380F000000180F800000180F800
000180FC000001807C000000007E000000003F000000003FC00000001FF00000000FFF0000000F
FFF0000007FFFF000001FFFFC00000FFFFF000003FFFFC000003FFFE0000007FFF00000007FF00
0000007F800000001FC00000000FC000000007E000000003E000000003E000000001F0C0000001
F0C0000001F0C0000000F0C0000000F0C0000000F0E0000000F0E0000000F0E0000000E0F00000
00E0F0000001E0F8000001C0F8000001C0FC00000380FE00000780F700000700E1C0001E00E0F0
003C00C07E00F000C00FFFE0008001FF0000>36 61 124 187 49 83 D[<003F80000001C0F000
00030038000004001C00000C001E000018000F00001C000F80003E000780003F0007C0003F0007
C0003F0007C0001E0007C000000007C000000007C000000007C00000003FC000000FE7C000007E
07C00001F007C00007E007C0000F8007C0001F0007C0003F0007C0003E0007C0007E0007C0007C
0007C060FC0007C060FC0007C060FC0007C060FC000FC060FC000FC0607C000FC0607E0017C060
3E0023E0C01F0041F18007C180FF0000FE003E00>35 37 124 164 43 97
D[<0007F800003C0E0000F0018001E000C003C00060078000300F0000701F0000F81F0001F83E
0001F83E0001F87E0000F07C0000007C000000FC000000FC000000FC000000FC000000FC000000
FC000000FC000000FC000000FC0000007C0000007C0000007E0000003E0000003E00000C1F0000
0C1F0000180F8000180780003003C0006001E000C000F00180003C0E000007F800>30
37 125 164 39 99 D[<0000000700000000FF00000007FF00000007FF000000003F000000001F
000000001F000000001F000000001F000000001F000000001F000000001F000000001F00000000
1F000000001F000000001F000000001F000000001F000000001F000000001F000000001F000000
001F000000001F000003F81F00001E061F000070019F0001E000DF0003C0007F000780003F000F
80003F000F00001F001F00001F003E00001F003E00001F007E00001F007C00001F007C00001F00
FC00001F00FC00001F00FC00001F00FC00001F00FC00001F00FC00001F00FC00001F00FC00001F
00FC00001F007C00001F007C00001F007E00001F003E00001F003E00001F001E00001F001F0000
1F000F00003F000780007F0003C0005F0001E0009F0000F0031F80003C0E1FFC0007F01FFC>38
60 125 187 49 I[<000FF00000383C0000E00F0001C00780038003C0078001E00F0001F01F00
00F01E0000F83E0000F83E0000F87C00007C7C00007C7C00007CFC00007CFC00007CFFFFFFFCFC
000000FC000000FC000000FC000000FC000000FC0000007C0000007C0000007E0000003E000000
3E00000C1E00000C1F0000180F0000180780003003C0006001E000C000F00180003C0E000007F8
00>30 37 125 164 39 I[<0000FC000003830000070380000E07C0001E0FC0003C0FC0007C0F
C0007C07800078000000F8000000F8000000F8000000F8000000F8000000F8000000F8000000F8
000000F8000000F8000000F8000000F8000000F8000000F80000FFFFFC00FFFFFC0000F8000000
F8000000F8000000F8000000F8000000F8000000F8000000F8000000F8000000F8000000F80000
00F8000000F8000000F8000000F8000000F8000000F8000000F8000000F8000000F8000000F800
0000F8000000F8000000F8000000F8000000F8000000F8000000F8000000F8000000F8000000F8
000000F8000001FC00003FFFF0003FFFF000>26 60 127 187 27 I[<00000007C0000FE01860
003838207000F01E40F001E00F80F003C007806007C007C0000F8003E0000F8003E0000F8003E0
001F8003F0001F8003F0001F8003F0001F8003F0001F8003F0001F8003F0000F8003E0000F8003
E0000F8003E00007C007C00003C007800001E00F000003F01E00000238380000060FE000000400
00000004000000000C000000000C000000000E000000000E000000000700000000078000000003
FFFF000003FFFFF00001FFFFFC0000FFFFFE00078000FF000E00001F801C000007C038000003C0
78000003C070000001E0F0000001E0F0000001E0F0000001E0F0000001E0F0000001E078000003
C038000003803C000007801E00000F000700001C0003C0007800007803C000000FFE0000>36
56 126 165 43 I[<038007C00FE00FE00FE007C0038000000000000000000000000000000000
0000000000000000000000E01FE0FFE0FFE007E003E003E003E003E003E003E003E003E003E003
E003E003E003E003E003E003E003E003E003E003E003E003E003E003E003E003E003E003E003E0
07F0FFFFFFFF>16 57 126 184 23 105 D[<00E01FC0007F00001FE060780181E000FFE1803C
0600F000FFE2001E0800780007E4001F10007C0003E4001F10007C0003E8000F20003C0003F000
0FC0003E0003F0000FC0003E0003F0000FC0003E0003E0000F80003E0003E0000F80003E0003E0
000F80003E0003E0000F80003E0003E0000F80003E0003E0000F80003E0003E0000F80003E0003
E0000F80003E0003E0000F80003E0003E0000F80003E0003E0000F80003E0003E0000F80003E00
03E0000F80003E0003E0000F80003E0003E0000F80003E0003E0000F80003E0003E0000F80003E
0003E0000F80003E0003E0000F80003E0003E0000F80003E0003E0000F80003E0003E0000F8000
3E0003E0000F80003E0003E0000F80003E0007F0001FC0007F00FFFF83FFFE0FFFF8FFFF83FFFE
0FFFF8>61 37 125 164 74 109 D[<00E03FC0001FE0C0F000FFE1007800FFE2003C0007E400
3E0003E8001E0003E8001E0003F0001F0003F0001F0003F0001F0003E0001F0003E0001F0003E0
001F0003E0001F0003E0001F0003E0001F0003E0001F0003E0001F0003E0001F0003E0001F0003
E0001F0003E0001F0003E0001F0003E0001F0003E0001F0003E0001F0003E0001F0003E0001F00
03E0001F0003E0001F0003E0001F0003E0001F0003E0001F0003E0001F0007F0003F80FFFF87FF
FCFFFF87FFFC>38 37 125 164 49 I[<0007F00000003C1E000000F007800001C001C0000380
00E000078000F0000F000078001E00003C001E00003C003E00003E003E00003E007C00001F007C
00001F007C00001F00FC00001F80FC00001F80FC00001F80FC00001F80FC00001F80FC00001F80
FC00001F80FC00001F80FC00001F807C00001F007C00001F007C00001F003E00003E003E00003E
001E00003C001F00007C000F00007800078000F00003C001E00001C001C00000F0078000003C1E
00000007F00000>33 37 125 164 43 I[<00E0FC001FE10600FFE20F00FFE41F8007E81F8003
E81F8003F00F0003F0060003F0000003F0000003E0000003E0000003E0000003E0000003E00000
03E0000003E0000003E0000003E0000003E0000003E0000003E0000003E0000003E0000003E000
0003E0000003E0000003E0000003E0000003E0000003E0000003E0000003E0000003E0000007F0
0000FFFFC000FFFFC000>25 37 125 164 33 114 D[<00FF02000700C6000C002E0010001E00
30001E0060000E0060000E00E0000600E0000600E0000600F0000600F8000600FC0000007F0000
003FF000003FFF80001FFFE00007FFF00001FFFC00003FFE000001FE0000003F00C0001F00C000
0F80C0000780E0000380E0000380E0000380E0000380F0000300F0000300F8000700F8000600E4
000C00E2001800C1807000807F8000>25 37 125 164 34 I[<00180000001800000018000000
1800000018000000380000003800000038000000380000007800000078000000F8000000F80000
01F8000003F8000007F800001FFFFE00FFFFFE0000F8000000F8000000F8000000F8000000F800
0000F8000000F8000000F8000000F8000000F8000000F8000000F8000000F8000000F8000000F8
000000F8000000F8000000F8000000F8000000F8018000F8018000F8018000F8018000F8018000
F8018000F8018000F8018000F801800078018000780300007C0300003C0200001E0600000F0C00
0003F000>25 53 127 180 33 I[<00E00007001FE000FF00FFE007FF00FFE007FF0007E0003F
0003E0001F0003E0001F0003E0001F0003E0001F0003E0001F0003E0001F0003E0001F0003E000
1F0003E0001F0003E0001F0003E0001F0003E0001F0003E0001F0003E0001F0003E0001F0003E0
001F0003E0001F0003E0001F0003E0001F0003E0001F0003E0001F0003E0001F0003E0001F0003
E0003F0003E0003F0001E0003F0001E0005F0001F0009F0000F0009F000078011F80001C061FFC
0007F81FFC>38 37 125 164 49 I E /Fq 5 85 691 432 dfs[<0000001C000000001C000000
003C000000003C000000007C00000000FC00000000FC00000001FC00000001FC000000037C0000
00037C000000067C0000000E7C0000000C7C000000187C000000187C000000307C000000307E00
0000603E000000603E000000C03E000001C03E000001803E000003003E000003003E000006003E
000006003E00000FFFFE00000FFFFE000018003E000038003E000030003E000060003E00006000
3E0000C0003F0000C0001F000180001F000380001F000380001F000FC0003F00FFF007FFF8FFF0
07FFF0>37 42 124 169 70 65 D[<003FFFFF8000003FFFFFF0000001F801F8000001F0007C00
0001F0003E000001F0001F000001F0000F000003E0000F800003E0000F800003E0000F800003E0
0007800007C00007C00007C00007C00007C00007C00007C0000FC0000F80000FC0000F80000FC0
000F80000FC0000F80000FC0001F00000F80001F00001F80001F00001F80001F00001F80003E00
001F00003E00003F00003E00003E00003E00003E00007C00007C00007C00007C00007C0000F800
007C0000F80000F80001F00000F80003E00000F80003C00000F80007800001F0000F000001F000
3E000001F0007C000003F003F000007FFFFFC00000FFFFFE000000>42 41
124 168 72 68 D[<003FFFFFFF003FFFFFFF0001F8003F0001F0000F0001F0000E0001F0000E
0001F000060003E000060003E000060003E0000E0003E0000C0007C0000C0007C0180C0007C018
0C0007C01800000F803000000F803000000F807000000F80F000001FFFE000001FFFE000001F01
E000001F00E000003E00C000003E00C000003E00C000003E00C000007C018000007C000000007C
000000007C00000000F800000000F800000000F800000000F800000001F000000001F000000001
F000000003F00000007FFFC00000FFFFC00000>40 41 124 168 62 70
D[<003FFFFE00003FFFFFC00001F803F00001F001F80001F000F80001F0007C0001F0007C0003
E0007E0003E0007E0003E0007E0003E0007E0007C000FC0007C000FC0007C000F80007C001F800
0F8001F0000F8003E0000F8007C0000F800F00001F007C00001FFFE000001F00E000001F007800
003E003C00003E003C00003E003E00003E003E00007C003E00007C003E00007C003E00007C003E
0000F8007E0000F8007E0000F8007E0000F8007E0001F0007E0601F0007E0601F0007E0603F000
7E0C7FFF803E08FFFF801E1000000007E0>39 42 124 168 70 82 D[<0FFFFFFFF80FFFFFFFF8
1F803E01F81E007C00781C007C003038007C003038007C00303000F800303000F800306000F800
306000F800606001F00060C001F00060C001F000600001F000000003E000000003E000000003E0
00000003E000000007C000000007C000000007C000000007C00000000F800000000F800000000F
800000000F800000001F000000001F000000001F000000001F000000003E000000003E00000000
3E000000003E000000007C000000007C000000007C00000000FC000000FFFFF80000FFFFF80000
>37 41 117 168 69 84 D E end
%%EndProlog
%%BeginSetup
%%Feature: *Resolution 400
TeXDict begin 
%%EndSetup
%%Page: 0 1
bop 1060 927 a Fq(D)34 b(R)g(A)h(F)g(T)299 1049 y Fp(Do)r(cumen)n(t)30
b(for)g(a)g(Standard)h(Message-P)n(assi)q(ng)i(In)n(terface)913
1308 y Fo(Scott)23 b(Berryman,)c Fn(Y)-5 b(ale)25 b(Univ)933
1386 y Fo(James)c(Co)n(wnie,)g Fn(Meiko)j(Ltd)632 1463 y Fo(Jac)n(k)e
(Dongarra,)i Fn(Univ.)32 b(of)23 b(T)-5 b(ennesse)m(e)26 b(and)f(ORNL)1068
1541 y Fo(Al)c(Geist,)f Fn(ORNL)1060 1618 y Fo(Bill)e(Gropp,)k
Fn(ANL)1023 1696 y Fo(Rolf)f(Hemp)r(el,)c Fn(GMD)1016 1773
y Fo(Bob)22 b(Knigh)n(ten,)e Fn(Intel)1049 1851 y Fo(Rust)n(y)i(Lusk,)f
Fn(ANL)818 1928 y Fo(Stev)n(e)h(Otto,)f Fn(Or)m(e)m(gon)k(Gr)m(aduate)f(Inst)
771 2006 y Fo(T)-5 b(on)n(y)21 b(Skjellum,)c Fn(Missisippi)k(State)26
b(Univ)871 2083 y Fo(Marc)c(Snir,)e Fn(IBM)j(T.)g(J.)f(Watson)992
2161 y Fo(Da)n(vid)g(W)-5 b(alk)n(er,)19 b Fn(ORNL)835 2238
y Fo(Stev)n(e)i(Zenith,)f Fn(Kuck)26 b(&)e(Asso)m(ciates)1099
2404 y Fo(April)c(20,)h(1993)116 2482 y(This)g(w)n(ork)h(w)n(as)h(supp)r
(orted)h(b)n(y)d(ARP)-5 b(A)21 b(and)i(NSF)e(under)h(con)n(tract)i(n)n(um)n
(b)r(er)c(###,)f(b)n(y)i(the)256 2559 y(National)h(Science)e(F)-5
b(oundation)23 b(Science)d(and)j(T)-5 b(ec)n(hnology)21 b(Cen)n(ter)h(Co)r
(op)r(erativ)n(e)867 2636 y(Agreemen)n(t)f(No.)28 b(CCR-8809615.)p
eop
%%Page: 1 2
bop 100 477 a Fm(Chapter)44 b(1)100 756 y Fl(Colle)o(c)o(ti)n(v)l(e)k(Com)n
(m)-10 b(uni)n(c)o(ati)o(on)1189 1054 y Fk(Al)20 b(Geist)1168
1129 y(Marc)g(Snir)100 1331 y Fj(1.1)94 b(In)m(tro)s(duction)100
1469 y Fk(This)28 b(section)h(is)f(a)g(draft)j(of)e(the)g(curren)n(t)i(prop)r
(osal)g(for)e(collectiv)n(e)f(comm)n(unication.)51 b(Collectiv)n(e)100
1545 y(comm)n(unication)15 b(is)f(de\014ned)k(to)d(b)r(e)g(comm)n(unication)g
(that)i(in)n(v)n(olv)n(es)f(a)f(group)i(of)f(pro)r(cesses.)26
b(Examples)100 1620 y(are)20 b(broadcast)j(and)e(global)f(sum.)26
b(A)18 b(collectiv)n(e)i(op)r(eration)i(is)d(executed)i(b)n(y)f(ha)n(ving)h
(all)e(pro)r(cesses)h(in)100 1695 y(the)k(group)i(call)e(the)g(comm)n
(unication)g(routine,)i(with)e(matc)n(hing)h(parameters.)38
b(Routines)24 b(can)h(\(but)100 1770 y(are)f(not)g(required)i(to\))e(return)j
(as)c(so)r(on)h(as)f(their)h(participation)k(in)23 b(the)h(collectiv)n(e)g
(comm)n(unication)100 1846 y(is)i(complete.)43 b(The)27 b(completion)f(of)h
(a)f(call)g(indicates)i(that)g(the)f(caller)f(is)g(no)n(w)h(free)g(to)g
(access)f(the)100 1921 y(lo)r(cations)j(in)g(the)g(comm)n(unication)f
(bu\013er,)k(or)d(an)n(y)g(other)i(lo)r(cation)e(that)h(can)f(b)r(e)f
(referenced)j(b)n(y)100 1996 y(the)26 b(collectiv)n(e)e(op)r(eration.)43
b(Ho)n(w)n(ev)n(er,)26 b(it)f(do)r(es)g(not)h(indicate)g(that)h(other)f(pro)r
(cesses)g(in)f(the)g(group)100 2072 y(ha)n(v)n(e)c(started)i(the)d(op)r
(eration)j(\(unless)e(otherwise)g(indicated)i(in)d(the)h(description)h(of)f
(the)g(op)r(eration\).)100 2147 y(Ho)n(w)n(ev)n(er,)i(the)h(successful)f
(completion)g(of)g(a)f(collectiv)n(e)h(comm)n(unication)f(call)g(ma)n(y)f
(dep)r(end)k(on)e(the)100 2222 y(execution)f(of)f(a)g(matc)n(hing)g(call)f
(at)h(all)f(pro)r(cesses)h(in)g(the)g(group.)221 2299 y(The)g(syn)n(tax)h
(and)f(seman)n(tics)g(of)g(the)g(collectiv)n(e)f(op)r(erations)k(is)19
b(de\014ned)k(so)e(as)f(to)h(b)r(e)f(consisten)n(t)100 2374
y(with)h(the)g(syn)n(tax)h(and)g(seman)n(tics)e(of)h(the)h(p)r(oin)n(t)g(to)f
(p)r(oin)n(t)h(op)r(erations.)221 2452 y(The)e(reader)h(is)e(referred)j(to)e
(the)g(p)r(oin)n(t-to-p)r(oin)o(t)k(comm)n(unication)19 b(section)i(of)e(the)
i(curren)n(t)h(MPI)100 2527 y(draft)g(for)e(information)i(concerning)g(comm)n
(unication)d(bu\013ers)j(and)e(their)h(manipulations.)28 b(The)20
b(con-)100 2602 y(text)d(section)h(describ)r(es)f(the)h(formation,)g
(manipulation,)h(and)f(query)g(functions)h(\(suc)n(h)f(as)f(group)i(size\))
100 2677 y(that)j(are)f(a)n(v)m(ailable)h(for)f(groups)i(and)f(group)h(ob)s
(jects.)221 2754 y(The)31 b(collectiv)n(e)g(comm)n(unication)g(routines)j
(are)d(built)i(ab)r(o)n(v)n(e)f(the)g(p)r(oin)n(t-to-p)r(oin)n(t)k(routines.)
100 2830 y(While)17 b(v)n(endors)h(ma)n(y)e(optimize)f(certain)j(collectiv)n
(e)f(routines)i(for)e(their)h(arc)n(hitectures,)j(a)16 b(complete)g(li-)100
2905 y(brary)22 b(of)e(the)h(collectiv)n(e)e(comm)n(unication)h(routines)i
(can)e(b)r(e)g(written)i(en)n(tirely)f(using)g(p)r(oin)n(t-to-p)r(oin)n(t)100
2980 y(comm)n(unication)28 b(functions.)51 b(W)-5 b(e)27 b(are)h(using)h
(naiv)n(e)f(implemen)n(tations)g(of)g(the)h(collectiv)n(e)e(calls)g(in)100
3056 y(terms)f(of)i(p)r(oin)n(t)h(to)e(p)r(oin)n(t)i(op)r(erations)h(in)d
(order)i(to)f(pro)n(vide)h(an)f(op)r(erational)i(de\014nition)g(of)d(their)
100 3131 y(seman)n(tics.)221 3208 y(The)21 b(follo)n(wing)h(comm)n(unication)
e(functions)k(are)d(prop)r(osed.)191 3340 y Fi(\017)31 b Fk(Broadcast)22
b(from)f(one)g(mem)n(b)r(er)d(to)j(all)f(mem)n(b)r(ers)f(of)i(a)f(group.)191
3472 y Fi(\017)31 b Fk(Barrier)22 b(across)f(all)f(group)j(mem)n(b)r(ers)191
3605 y Fi(\017)31 b Fk(Gather)21 b(data)i(from)d(all)g(group)j(mem)n(b)r(ers)
18 b(to)j(one)g(mem)n(b)r(er.)1285 3771 y(1)p eop
%%Page: 2 3
bop 100 -134 a Fk(2)968 b Fh(CHAPTER)17 b(1.)48 b(COLLECTIVE)17
b(COMMUNICA)-5 b(TION)191 60 y Fi(\017)31 b Fk(Scatter)22 b(data)g(from)f
(one)g(mem)n(b)r(er)d(to)j(all)g(mem)n(b)r(ers)d(of)j(a)g(group.)191
183 y Fi(\017)31 b Fk(Global)20 b(op)r(erations)j(suc)n(h)e(as)f(sum,)f(max,)
g(min,)g(etc.,)h(w)n(ere)g(the)i(result)f(is)f(kno)n(wn)h(b)n(y)g(all)f
(group)252 258 y(mem)n(b)r(ers)d(and)k(a)f(v)m(ariation)i(where)e(the)h
(result)g(is)f(kno)n(wn)h(b)n(y)f(only)h(one)f(mem)n(b)r(er.)25
b(The)20 b(abilit)n(y)252 333 y(to)h(ha)n(v)n(e)g(user)h(de\014ned)h(global)e
(op)r(erations.)191 456 y Fi(\017)31 b Fk(Sim)n(ultaneous)20
b(shift)f(of)f(data)i(around)h(the)e(group,)i(the)e(simplest)e(example)g(b)r
(eing)i(all)f(mem)n(b)r(ers)252 531 y(sending)k(their)g(data)g(to)f
(\(rank+1\))i(with)e(wrap)h(around.)191 653 y Fi(\017)31 b
Fk(Scan)21 b(across)h(all)e(mem)n(b)r(ers)e(of)j(a)g(group)i(\(also)e(called)
f(parallel)i(pre\014x\).)191 776 y Fi(\017)31 b Fk(Broadcast)22
b(from)f(all)f(mem)n(b)r(ers)e(to)j(all)f(mem)n(b)r(ers)f(of)i(a)f(group.)191
899 y Fi(\017)31 b Fk(Scatter)c(data)f(from)f(all)f(mem)n(b)r(ers)f(to)i(all)
f(mem)n(b)r(ers)f(of)i(a)g(group)i(\(also)f(called)f(complete)f(ex-)252
974 y(c)n(hange)e(or)f(index\).)221 1092 y(T)-5 b(o)21 b(simplify)f(the)h
(collectiv)n(e)g(comm)n(unication)g(in)n(terface)j(it)d(is)f(designed)j(with)
e(t)n(w)n(o)h(la)n(y)n(ers.)30 b(The)100 1168 y(lo)n(w)c(lev)n(el)f(routines)
k(ha)n(v)n(e)e(all)e(the)i(generalit)n(y)h(of,)g(and)f(mak)n(e)e(use)h(of,)i
(the)f(comm)n(unication)f(bu\013er)100 1243 y(routines)c(of)f(the)g(p)r(oin)n
(t-to-p)r(oin)n(t)k(section)20 b(whic)n(h)h(allo)n(ws)f(arbitrarily)j
(complex)c(messages)f(to)j(b)r(e)f(con-)100 1318 y(structed.)29
b(The)20 b(second)g(lev)n(el)f(routines)j(are)d(similar)f(to)i(the)g(upp)r
(er)i(lev)n(el)d(p)r(oin)n(t-to-p)r(oin)n(t)24 b(routines)d(in)100
1394 y(that)h(they)g(send)f(only)g(a)g(con)n(tiguous)i(bu\013er.)100
1583 y Fj(1.2)94 b(Group)32 b(F)-8 b(unctions)100 1719 y Fk(A)22
b(full)h(description)i(of)e(the)g(group)i(formation)f(and)f(manipulation)i
(functions)g(can)e(b)r(e)f(found)j(in)e(the)100 1794 y(con)n(text)j(c)n
(hapter)g(of)f(the)f(MPI)e(do)r(cumen)n(t.)38 b(Here)24 b(w)n(e)f(describ)r
(e)i(only)f(those)h(group)h(functions)h(that)100 1869 y(are)21
b(used)h(in)e(the)i(seman)n(tic)e(description)j(of)e(the)g(collectiv)n(e)g
(comm)n(unication)g(routines.)221 1944 y(An)h(initial)g(group)j(con)n
(taining)g(all)c(pro)r(cesses)i(is)e(supplied)j(b)n(y)f(default)h(in)e(MPI.)e
(MPI)h(pro)n(vides)100 2020 y(a)f(pro)r(cedure)j(that)f(returns)h(the)e
(handle)h(to)e(this)h(initial)f(group.)30 b(The)20 b(pro)r(cesses)g(in)h(the)
g(inital)f(group)100 2095 y(eac)n(h)30 b(ha)n(v)n(e)g(a)g(unique)g(rank)h(in)
e(the)h(group)i(represen)n(ted)h(b)n(y)d(in)n(tegers)h(\(0,)h(1,)f(2,)g(...,)
f([n)n(um)n(b)r(er-of-)100 2170 y(pro)r(cesses)21 b(-)g(1].)221
2293 y Fg(MPI)p 365 2293 21 3 v 26 w(ALLGR)n(OUP\(group\))f
Fk(Return)k(the)f(descriptor)h(of)f(the)f(inital)h(group)h(con)n(taining)h
(all)100 2415 y(pro)r(cesses.)100 2534 y Fg(OUT)d(group)32
b Fk(handle)22 b(to)f(descriptor)j(ob)s(ject)e(of)f(initial)g(group.)221
2700 y Fg(MPI)p 365 2700 V 26 w(RANK\(group,)i(rank\))e Fk(Return)h(the)g
(rank)f(of)g(the)g(calling)g(pro)r(cess)g(within)h(the)f(sp)r(eci-)100
2822 y(\014ed)g(group.)100 2941 y Fg(IN)i(group)32 b Fk(group)23
b(handle)100 3063 y Fg(OUT)f(rank)31 b Fk(in)n(teger)221 3229
y Fg(MPI)p 365 3229 V 26 w(GSIZE\(group,)25 b(size\))20 b Fk(Return)j(the)e
(n)n(um)n(b)r(er)h(of)g(pro)r(cesses)f(that)i(b)r(elong)f(to)f(the)h(sp)r
(ec-)100 3352 y(i\014ed)f(group.)100 3470 y Fg(IN)i(group)32
b Fk(group)23 b(handle)100 3593 y Fg(OUT)f(size)30 b Fk(in)n(teger)p
eop
%%Page: 3 4
bop 100 -134 a Fh(1.3.)47 b(COMMUNICA)-5 b(TION)17 b(FUNCTIONS)1283
b Fk(3)100 60 y Fj(1.3)94 b(Comm)-6 b(uni)n(cati)o(on)27 b(F)-8
b(unctions)100 196 y Fk(The)15 b(prop)r(osed)i(comm)n(unication)e(functions)j
(are)d(divided)h(in)n(to)g(t)n(w)n(o)g(la)n(y)n(ers.)26 b(The)15
b(lo)n(w)n(est)h(lev)n(el)e(uses)h(the)100 271 y(same)j(bu\013er)j
(descriptor)h(ob)s(jects)f(a)n(v)m(ailable)f(in)f(p)r(oin)n(t-to-p)r(oin)o(t)
24 b(to)19 b(create)i(noncon)n(tiguou)q(s,)i(m)n(ultiple)100
346 y(data)k(t)n(yp)r(e)g(messages.)40 b(The)26 b(second)g(lev)n(el)g(is)f
(similar)f(to)i(the)g(blo)r(c)n(k)g(send/receiv)n(e)i(p)r(oin)n(t-to-p)r(oin)
n(t)100 422 y(op)r(erations)h(in)e(that)h(it)f(supp)r(orts)i(only)e(con)n
(tiguous)j(bu\013ers)e(of)f(data.)47 b(F)-5 b(or)26 b(eac)n(h)i(comm)n
(unication)100 497 y(op)r(eration,)23 b(w)n(e)d(list)h(these)g(t)n(w)n(o)g
(lev)n(el)f(of)h(calls)f(together.)100 689 y Fj(1.4)94 b(Sync)m(hronization)
100 825 y Fg(Barrier)25 b(sync)n(hronization)100 987 y(MPI)p
244 987 21 3 v 25 w(BARRIER\()c(group)k(\))221 1110 y Fk(MPI)p
345 1110 19 3 v 21 w(BARRIER)18 b(blo)r(c)n(ks)k(the)h(calling)e(pro)r(cess)i
(un)n(til)g(all)e(group)j(mem)n(b)r(ers)19 b(ha)n(v)n(e)k(called)f(it;)g(the)
100 1185 y(call)e(returns)k(at)d(an)n(y)g(pro)r(cess)g(only)g(after)i(all)d
(group)j(mem)n(b)r(ers)18 b(ha)n(v)n(e)k(en)n(tered)h(the)e(call.)100
1311 y Fg(IN)i(group)32 b Fk(group)23 b(handle)221 1437 y Ff(MPI)p
318 1437 20 3 v 26 w(BARRIER)q(\()37 b(group)f(\))21 b Fk(is)100
1564 y Ff(MPI_CR)q(E)q(A)q(TE)q(_)q(B)q(U)q(FF)q(E)q(R)q(\()q(b)q(uf)q(f)q(e)
q(r)q(_h)q(a)q(n)q(d)q(l)q(e,)37 b(MPI_BU)q(F)q(F)q(ER)q(,)g(MPI_PE)q(R)q(SI)
q(S)q(T)q(E)q(NT)q(\))q(;)100 1639 y(MPI_GS)q(I)q(Z)q(E\()g(group,)g(&size)f
(\);)100 1714 y(MPI_RA)q(N)q(K)q(\()g(group,)h(&rank)f(\);)100
1789 y(if)d(\(rank)q(==)q(0)q(\))100 1865 y({)195 1940 y(for)i(\(i=1;)h(i)c
(<)h(size;)j(i++\))291 2015 y(MPI_RE)q(C)q(V\()q(b)q(u)q(f)q(f)q(er)q(_)q(h)q
(a)q(nd)q(l)q(e)q(,)h(i,)c(tag,)i(group,)i(return)q(_)q(ha)q(n)q(d)q(l)q(e\))
q(;)195 2091 y(for)e(\(i=1;)h(i)c(<)h(size;)j(i++\))291 2166
y(MPI_SE)q(N)q(D\()q(b)q(u)q(f)q(f)q(er)q(_)q(h)q(a)q(nd)q(l)q(e)q(,)h(i,)c
(tag,)i(group\))q(;)100 2241 y(})100 2316 y(else)100 2392 y({)195
2467 y(MPI_S)q(EN)q(D)q(\()q(b)q(uf)q(f)q(e)q(r)q(_)q(ha)q(n)q(d)q(l)q(e,)i
(0,)d(tag,)h(group\))q(;)195 2542 y(MPI_R)q(EC)q(V)q(\()q(b)q(uf)q(f)q(e)q(r)
q(_)q(ha)q(n)q(d)q(l)q(e,)i(0,)d(tag,)h(group,)h(return)q(_)q(h)q(a)q(n)q(dl)
q(e)q(\))q(;)100 2617 y(})100 2693 y(MPI_FR)q(E)q(E)q(\(b)q(u)q(f)q(f)q(er)q
(_)q(h)q(a)q(n)q(dl)q(e)q(\))q(;)221 2929 y Fe(Discussion:)45
b Fd(since)17 b(tag)g(w)n(as)g(v)n(oted)h(out)f(in)f(the)i(last)f(meeting,)f
(a)h("safe")f(tag)h(m)n(ust)g(b)r(e)g(selected)i(to)e(use)100
3004 y(in)h(the)h(ab)r(o)n(v)n(e)g(description)100 3307 y Fj(1.5)94
b(Data)30 b(mo)m(v)m(e)e(functions)100 3443 y Fg(Broadcast)100
3605 y(MPI)p 244 3605 21 3 v 25 w(BCAST\()21 b(bu\013er)p 738
3605 V 25 w(handle,)i(group,)j(ro)r(ot)f(\))p eop
%%Page: 4 5
bop 100 -134 a Fk(4)968 b Fh(CHAPTER)17 b(1.)48 b(COLLECTIVE)17
b(COMMUNICA)-5 b(TION)221 60 y Ff(MPI)p 318 60 20 3 v 26 w(BCAST)20
b Fk(broadcasts)g(a)d(message)f(from)h(the)g(pro)r(cess)h(with)g(rank)g
Ff(root)i Fk(to)e(all)e(other)j(pro)r(cesses)100 135 y(of)25
b(the)h(group.)41 b(It)25 b(is)f(called)h(b)n(y)g(all)f(mem)n(b)r(ers)f(of)i
(group)i(using)f(the)f(same)e(argumen)n(ts)j(for)g Ff(group,)100
211 y(and)34 b(root)p Fk(.)c(On)21 b(return)j(the)d(con)n(ten)n(ts)i(of)e
(the)h(bu\013er)g(of)f(the)g(pro)r(cess)h(with)f(rank)g Ff(root)j
Fk(is)c(con)n(tained)100 286 y(in)h(bu\013er)h(of)f(all)f(group)j(mem)n(b)r
(ers.)100 422 y Fg(INOUT)f(bu\013er)p 542 422 21 3 v 25 w(handle)29
b Fk(Handle)21 b(for)h(bu\013er)h(where)e(from)f(message)f(is)h(sen)n(t)i(or)
f(receiv)n(ed.)100 558 y Fg(IN)i(group)32 b Fk(group)23 b(handle)100
694 y Fg(IN)g(ro)r(ot)33 b Fk(rank)22 b(of)f(broadcast)i(ro)r(ot)f(\(in)n
(teger\))221 877 y Fg(MPI)p 365 877 V 26 w(BCASTC\()e(buf,)j(len,)g(group,)i
(ro)r(ot)h(\))221 1002 y Ff(MPI)p 318 1002 20 3 v 26 w(BCASTC)33
b Fk(b)r(eha)n(v)n(es)c(lik)n(e)f(broadcast,)34 b(restricted)d(to)e(a)f(blo)r
(c)n(k)h(bu\013er.)53 b(It)28 b(is)g(called)h(b)n(y)g(all)100
1078 y(pro)r(cesses)21 b(with)g(the)h(same)c(argumen)n(ts)23
b(for)e Ff(len,)35 b(group)25 b Fk(and)d Ff(root)p Fk(.)100
1214 y Fg(INOUT)g(bu\013er)30 b Fk(Starting)24 b(address)e(of)f(bu\013er)h
(\(c)n(hoice)g(t)n(yp)r(e\))100 1350 y Fg(IN)h(len)30 b Fk(Num)n(b)r(er)20
b(of)h(w)n(ords)h(in)e(bu\013er)j(\(in)n(teger\))100 1486 y
Fg(IN)g(group)32 b Fk(group)23 b(handle)100 1622 y Fg(in)f(ro)r(ot)33
b Fk(rank)22 b(of)f(broadcast)j(ro)r(ot)d(\(in)n(teger\))221
1758 y Ff(MPI)p 318 1758 V 26 w(BCAST\()36 b(buffer)p 753 1758
V 28 w(handle)q(,)h(group,)f(root)f(\))21 b Fk(is)100 1896
y Ff(MPI_GS)q(I)q(Z)q(E\()37 b(group,)g(&size)f(\);)100 1972
y(MPI_RA)q(N)q(K)q(\()g(group,)h(&rank)f(\);)100 2047 y(MPI_IR)q(E)q(C)q(V\()
q(h)q(a)q(n)q(dl)q(e)q(,)h(buffer)q(_h)q(a)q(n)q(d)q(l)q(e,)g(root,)f(tag,)f
(group,)i(return)q(_h)q(a)q(n)q(d)q(l)q(e\))q(;)100 2122 y(if)c(\(rank)q(==)q
(r)q(o)q(o)q(t\))195 2197 y(for)i(\(i=0;)h(i)c(<)h(size;)j(i++\))291
2273 y(MPI_SE)q(N)q(D\()q(b)q(u)q(f)q(f)q(er)q(_)q(h)q(a)q(nd)q(l)q(e)q(,)h
(i,)c(tag,)i(group\))q(;)100 2348 y(MPI_WA)q(I)q(T)q(\(h)q(a)q(n)q(d)q(le)q
(\))100 2524 y Fg(Circular)23 b(shift)100 2690 y(MPI)p 244
2690 21 3 v 25 w(CSHIFT\()f(in)n(buf,)h(outbuf,)h(group,)h(shift\))221
2816 y Fk(Pro)r(cess)30 b(with)h(rank)h Ff(i)f Fk(sends)g(the)g(data)h(in)f
(its)f(input)j(bu\013er)f(to)f(pro)r(cess)h(with)f(rank)g(\()p
Ff(i)22 b Fk(+)100 2891 y Ff(shift)p Fk(\))f(mo)r(d)16 b Ff(group)p
592 2891 20 3 v 27 w(size)p Fk(,)22 b(who)c(receiv)n(es)h(the)g(data)g(in)g
(its)f(output)j(bu\013er.)28 b(All)17 b(pro)r(cesses)i(mak)n(e)e(the)100
2966 y(call)k(with)g(the)h(same)e(v)m(alues)h(for)h Ff(group)p
Fk(,)j(and)d Ff(shift)p Fk(.)33 b(The)21 b Ff(shift)k Fk(v)m(alue)c(can)g(b)r
(e)h(p)r(ositiv)n(e,)f(zero,)h(or)100 3042 y(negativ)n(e.)100
3197 y Fg(IN)h(in)n(buf)29 b Fk(handle)23 b(to)e(input)h(bu\013er)h
(descriptor)100 3333 y Fg(OUT)f(outbuf)30 b Fk(handle)23 b(to)e(output)i
(bu\013er)g(descriptor)100 3469 y Fg(IN)g(group)32 b Fk(handle)23
b(to)e(group)100 3605 y Fg(IN)i(shift)30 b Fk(in)n(teger)p
eop
%%Page: 5 6
bop 100 -134 a Fh(1.5.)47 b(D)n(A)-5 b(T)g(A)19 b(MO)n(VE)g(FUNCTIONS)1463
b Fk(5)221 60 y Fg(MPI)p 365 60 21 3 v 26 w(CSHIFT1\()22 b(buf,)h(group,)j
(shift\))221 189 y Fk(Pro)r(cess)19 b(with)i(rank)g Ff(i)f
Fk(sends)h(the)g(data)g(in)f(its)g(bu\013er)i(to)e(pro)r(cess)h(with)f(rank)i
(\()p Ff(i)13 b Fk(+)f Ff(shift)p Fk(\))22 b(mo)r(d)100 264
y Ff(group)p 259 264 20 3 v 27 w(size)p Fk(,)g(who)e(receiv)n(es)f(the)h
(data)g(in)g(the)f(same)f(bu\013er.)28 b(All)18 b(pro)r(cesses)i(mak)n(e)e
(the)i(call)e(with)i(the)100 339 y(same)f(v)m(alues)h(for)i
Ff(group)p Fk(,)i(and)e Ff(shift)p Fk(.)31 b(The)20 b Ff(shift)25
b Fk(v)m(alue)20 b(can)h(b)r(e)g(p)r(ositiv)n(e,)g(zero,)g(or)g(negativ)n(e.)
100 512 y Fg(INOUT)h(buf)30 b Fk(handle)22 b(to)f(bu\013er)i(descriptor)100
662 y Fg(IN)g(group)32 b Fk(handle)23 b(to)e(group)100 813
y Fg(IN)i(shift)30 b Fk(in)n(teger)221 1033 y Fg(MPI)p 365
1033 21 3 v 26 w(CSHIFTC\()21 b(in)n(buf,)h(outbuf,)i(len,)f(group,)i
(shift\))221 1161 y Fk(Beha)n(v)n(es)j(lik)n(e)e Ff(MPI)p 675
1161 20 3 v 26 w(CSHIFT)q Fk(,)k(with)d(bu\013ers)i(restricted)g(to)f(b)r(e)e
(blo)r(c)n(ks)h(of)h(n)n(umeric)f(units.)47 b(All)100 1237
y(pro)r(cesses)21 b(mak)n(e)e(the)j(call)e(with)h(the)g(same)e(v)m(alues)i
(for)g Ff(len,)35 b(group)q Fk(,)24 b(and)d Ff(shift)q Fk(.)100
1387 y Fg(IN)i(in)n(buf)29 b Fk(initial)21 b(lo)r(cation)h(of)f(input)i
(bu\013er)100 1537 y Fg(OUT)f(outbuf)30 b Fk(initial)21 b(lo)r(cation)h(of)f
(output)j(bu\013er)100 1687 y Fg(IN)f(len)30 b Fk(n)n(um)n(b)r(er)21
b(of)g(en)n(tries)h(in)f(input)i(\(and)f(output\))i(bu\013ers)100
1837 y Fg(IN)f(group)32 b Fk(handle)23 b(to)e(group)100 1987
y Fg(IN)i(shift)30 b Fk(in)n(teger)221 2184 y Fg(MPI)p 365
2184 21 3 v 26 w(CSHIFTC1\()21 b(buf,)j(len,)e(group,)k(shift\))221
2313 y Fk(Beha)n(v)n(es)g(lik)n(e)e Ff(MPI)p 671 2313 20 3
v 25 w(CSHIFT)q(1)q Fk(,)29 b(with)c(bu\013ers)h(restricted)h(to)e(b)r(e)f
(blo)r(c)n(ks)h(of)g(n)n(umeric)g(units.)40 b(All)100 2389
y(pro)r(cesses)21 b(mak)n(e)e(the)j(call)e(with)h(the)g(same)e(v)m(alues)i
(for)g Ff(len,)35 b(group)q Fk(,)24 b(and)d Ff(shift)q Fk(.)100
2539 y Fg(INOUT)h(buf)30 b Fk(initial)21 b(lo)r(cation)g(of)g(bu\013er)100
2689 y Fg(IN)i(len)30 b Fk(n)n(um)n(b)r(er)21 b(of)g(en)n(tries)h(in)f(input)
i(\(and)f(output\))i(bu\013ers)100 2839 y Fg(IN)f(group)32
b Fk(handle)23 b(to)e(group)100 2989 y Fg(IN)i(shift)30 b Fk(in)n(teger)221
3139 y Ff(MPI)p 318 3139 V 26 w(CSHIFT\()37 b(inbuf,)g(outbuf)q(,)f(group,)h
(shift\))25 b Fk(is)100 3295 y Ff(MPI_GS)q(I)q(Z)q(E\()37 b(group,)g(&size)f
(\);)100 3371 y(MPI_RA)q(N)q(K)q(\()g(group,)h(&rank)f(\);)100
3446 y(MPI_IS)q(E)q(N)q(D\()h(handle)q(,)g(inbuf,)f(mod\(ra)q(n)q(k)q(+)q(sh)
q(i)q(f)q(t)q(,)g(size\),)h(tag,)e(group\))q(;)100 3521 y(MPI_RE)q(C)q(V)q
(\()h(outbuf)q(,)h(mod\(ra)q(nk)q(-)q(s)q(h)q(i)q(ft)q(,)q(s)q(i)q(ze)q(\))q
(,)g(tag,)e(group,)i(return_)q(h)q(a)q(n)q(d)q(le)q(\))100
3596 y(MPI_WA)q(I)q(T)q(\(h)q(a)q(n)q(d)q(le)q(\))q(;)p eop
%%Page: 6 7
bop 100 -134 a Fk(6)968 b Fh(CHAPTER)17 b(1.)48 b(COLLECTIVE)17
b(COMMUNICA)-5 b(TION)100 60 y Fg(End-o\013)23 b(shift)100
222 y(MPI)p 244 222 21 3 v 25 w(EOSHIFT\()f(in)n(buf,)g(outbuf,)i(group,)i
(shift\))221 344 y Fk(Pro)r(cess)21 b(with)h(rank)h Ff(i)p
Fk(,)f(max)o(\()p Ff(0)p Fc(;)10 b Fi(\000)p Ff(shif)q(t)q
Fk(\))23 b Fi(\024)18 b Ff(i)i Fc(<)e Ff(min)p Fk(\()p Ff(si)q(z)q(e)q
Fc(;)10 b Ff(s)q(iz)q(e)19 b Fi(\000)14 b Ff(shift)q Fk(\),)25
b(sends)e(the)f(data)100 420 y(in)17 b(its)f(input)j(bu\013er)g(to)e(pro)r
(cess)g(with)g(rank)h Ff(i+)34 b(shift)p Fk(,)20 b(who)d(receiv)n(es)g(the)h
(data)g(in)f(its)f(output)k(bu\013er.)100 495 y(The)j(output)j(bu\013er)f(of)
e(pro)r(cesses)g(whic)n(h)h(do)g(not)g(receiv)n(e)f(data)h(is)e(left)i(unc)n
(hanged.)37 b(All)22 b(pro)r(cesses)100 570 y(mak)n(e)d(the)j(call)e(with)h
(the)g(same)e(v)m(alues)h(for)i Ff(group)p Fk(,)i(and)e Ff(shift)p
Fk(.)100 707 y Fg(IN)h(in)n(buf)29 b Fk(handle)23 b(to)e(input)h(bu\013er)h
(descriptor)100 831 y Fg(OUT)f(outbuf)30 b Fk(handle)23 b(to)e(output)i
(bu\013er)g(descriptor)100 954 y Fg(IN)g(group)32 b Fk(handle)23
b(to)e(group)100 1078 y Fg(IN)i(shift)30 b Fk(in)n(teger)221
1262 y Fg(MPI)p 365 1262 V 26 w(EOSHIFT1\()22 b(buf,)h(group,)j(shift\))221
1385 y Fk(Pro)r(cess)21 b(with)h(rank)h Ff(i)p Fk(,)f(max)o(\()p
Ff(0)p Fc(;)10 b Fi(\000)p Ff(shif)q(t)q Fk(\))23 b Fi(\024)18
b Ff(i)i Fc(<)e Ff(min)p Fk(\()p Ff(si)q(z)q(e)q Fc(;)10 b
Ff(s)q(iz)q(e)19 b Fi(\000)14 b Ff(shift)q Fk(\),)25 b(sends)e(the)f(data)100
1460 y(in)e(its)h(bu\013er)h(to)e(pro)r(cess)h(with)g(rank)h
Ff(i+)33 b(shift)p Fk(,)24 b(who)d(receiv)n(es)f(the)h(data)h(in)e(the)h
(same)e(bu\013er.)29 b(The)100 1535 y(output)24 b(bu\013er)f(of)e(pro)r
(cesses)g(whic)n(h)h(do)f(not)h(receiv)n(e)f(data)h(is)e(left)i(unc)n
(hanged.)31 b(All)20 b(pro)r(cesses)h(mak)n(e)100 1610 y(the)g(call)f(with)i
(the)f(same)e(v)m(alues)h(for)i Ff(group)p Fk(,)i(and)e Ff(shift)p
Fk(.)100 1747 y Fg(IN)h(in)n(buf)29 b Fk(handle)23 b(to)e(input)h(bu\013er)h
(descriptor)100 1871 y Fg(OUT)f(outbuf)30 b Fk(handle)23 b(to)e(output)i
(bu\013er)g(descriptor)100 1995 y Fg(IN)g(group)32 b Fk(handle)23
b(to)e(group)100 2118 y Fg(IN)i(shift)30 b Fk(in)n(teger)221
2302 y Fg(MPI)p 365 2302 V 26 w(EOSHIFTC\()20 b(in)n(buf,)j(outbuf,)h(len,)e
(group,)k(shift\))221 2425 y Fk(Beha)n(v)n(es)g(lik)n(e)e Ff(MPI)p
671 2425 20 3 v 25 w(EOSHIF)q(T)q Fk(,)k(with)d(bu\013ers)h(restricted)h(to)e
(b)r(e)g(blo)r(c)n(ks)g(of)g(n)n(umeric)g(units.)40 b(All)100
2500 y(pro)r(cesses)21 b(mak)n(e)e(the)j(call)e(with)h(the)g(same)e(v)m
(alues)i(for)g Ff(len,)35 b(group)q Fk(,)24 b(and)d Ff(shift)q
Fk(.)100 2622 y Fg(IN)i(in)n(buf)29 b Fk(initial)21 b(lo)r(cation)h(of)f
(input)i(bu\013er)100 2745 y Fg(OUT)f(outbuf)30 b Fk(initial)21
b(lo)r(cation)h(of)f(output)j(bu\013er)100 2869 y Fg(IN)f(len)30
b Fk(n)n(um)n(b)r(er)21 b(of)g(en)n(tries)h(in)f(input)i(\(and)f(output\))i
(bu\013ers)100 2993 y Fg(IN)f(group)32 b Fk(handle)23 b(to)e(group)100
3117 y Fg(IN)i(shift)30 b Fk(in)n(teger)221 3285 y Fg(MPI)p
365 3285 21 3 v 26 w(EOSHIFTC1\()21 b(buf,)j(len,)e(group,)k(shift\))221
3408 y Fk(Beha)n(v)n(es)f(lik)n(e)f Ff(MPI)p 670 3408 20 3
v 25 w(EOSHIF)q(T)q(1)p Fk(,)29 b(with)24 b(bu\013er)i(restricted)g(to)f(b)r
(e)f(blo)r(c)n(ks)g(of)g(n)n(umeric)g(units.)39 b(All)100 3483
y(pro)r(cesses)21 b(mak)n(e)e(the)j(call)e(with)h(the)g(same)e(v)m(alues)i
(for)g Ff(len,)35 b(group)q Fk(,)24 b(and)d Ff(shift)q Fk(.)100
3605 y Fg(INOUT)h(buf)30 b Fk(initial)21 b(lo)r(cation)g(of)g(bu\013er)p
eop
%%Page: 7 8
bop 100 -134 a Fh(1.5.)47 b(D)n(A)-5 b(T)g(A)19 b(MO)n(VE)g(FUNCTIONS)1463
b Fk(7)100 60 y Fg(IN)23 b(len)30 b Fk(n)n(um)n(b)r(er)21 b(of)g(en)n(tries)h
(in)f(input)i(\(and)f(output\))i(bu\013ers)100 182 y Fg(IN)f(group)32
b Fk(handle)23 b(to)e(group)100 303 y Fg(IN)i(shift)30 b Fk(in)n(teger)100
461 y Fg(Gather)100 623 y(MPI)p 244 623 21 3 v 25 w(GA)-6 b(THER\()21
b(in)n(buf,)i(outbuf,)h(group,)h(ro)r(ot,)h(return)p 1643 623
V 26 w(status\))221 746 y Fk(Eac)n(h)d(pro)r(cess)h(\(including)h(the)f(ro)r
(ot)g(pro)r(cess\))g(sends)g(the)g(con)n(ten)n(t)h(of)f(its)f(input)i
(bu\013er)f(to)g(the)100 821 y(ro)r(ot)f(pro)r(cess.)32 b(The)22
b(ro)r(ot)h(pro)r(cess)f(concatenates)j(all)c(the)i(incoming)f(messages)e(in)
i(the)h(order)g(of)g(the)100 896 y(senders')18 b(rank)h(and)f(places)f(the)h
(results)g(in)f(its)g(output)j(bu\013er.)28 b(It)17 b(is)g(called)g(b)n(y)g
(all)g(mem)n(b)r(ers)e(of)i(group)100 971 y(using)k(the)f(same)e(argumen)n
(ts)j(for)f Ff(group)p Fk(,)k(and)c Ff(root)p Fk(.)30 b(The)20
b(input)h(bu\013er)h(of)e(eac)n(h)g(pro)r(cess)g(ma)n(y)e(ha)n(v)n(e)100
1047 y(a)j(di\013eren)n(t)i(length.)100 1163 y Fg(IN)g(in)n(buf)29
b Fk(handle)23 b(to)e(input)h(bu\013er)h(descriptor)100 1284
y Fg(OUT)f(outbuf)30 b Fk(handle)23 b(to)e(output)i(bu\013er)g(descriptor)g
({)e(signi\014can)n(t)i(only)e(at)g(ro)r(ot)h(\(c)n(hoice\))100
1406 y Fg(IN)h(group)32 b Fk(group)23 b(handle)100 1527 y Fg(IN)g(ro)r(ot)33
b Fk(rank)22 b(of)f(receiving)g(pro)r(cess)h(\(in)n(teger\))100
1649 y Fg(OUT)g(return)p 475 1649 V 26 w(status)32 b Fk(return)23
b(status)f(handle)221 1812 y Fg(MPI)p 365 1812 V 26 w(GA)-6
b(THER)n(C\()20 b(in)n(buf,)j(inlen,)e(outbuf,)j(group,)i(ro)r(ot\))221
1934 y Ff(MPI)p 318 1934 20 3 v 26 w(GATHERC)j Fk(b)r(eha)n(v)n(es)c(lik)n(e)
f Ff(MPI)p 1027 1934 V 25 w(GATHER)k Fk(restricted)f(to)d(blo)r(c)n(k)g
(bu\013ers,)j(and)e(with)g(the)f(addi-)100 2010 y(tional)g(restriction)h
(that)g(all)d(input)j(bu\013ers)g(should)f(ha)n(v)n(e)g(the)g(same)d(length.)
35 b(All)22 b(pro)r(cesses)h(should)100 2085 y(pro)n(vided)g(the)f(same)d(v)m
(alues)h(for)i Ff(inlen,)37 b(group)p Fk(,)24 b(and)d Ff(root)j
Fk(.)100 2201 y Fg(IN)f(in)n(buf)29 b Fk(\014rst)22 b(v)m(ariable)g(of)f
(input)i(bu\013er)f(\(c)n(hoice\))100 2322 y Fg(IN)h(inlen)29
b Fk(Num)n(b)r(er)20 b(of)h(\(w)n(ord\))i(v)m(ariables)e(in)g(input)i
(bu\013er)f(\(in)n(teger\))100 2444 y Fg(OUT)g(outbuf)30 b
Fk(\014rst)22 b(v)m(ariable)g(of)f(output)j(bu\013er)e({)f(signi\014can)n(t)i
(only)e(at)g(ro)r(ot)h(\(c)n(hoice\))100 2565 y Fg(IN)h(group)32
b Fk(group)23 b(handle)100 2687 y Fg(IN)g(ro)r(ot)33 b Fk(rank)22
b(of)f(receiving)g(pro)r(cess)h(\(in)n(teger\))221 2803 y Ff(MPI)p
318 2803 V 26 w(GATHERC)q(\()37 b(inbuf,)g(inlen,)f(outbuf)q(,)h(tag,)e
(group,)i(root\))56 b Fk(is)100 2919 y Ff(MPI_GS)q(I)q(Z)q(E\()37
b(&size,)g(group\))q(;)100 2994 y(MPI_RA)q(N)q(K)q(\()f(&rank,)h(group\))q(;)
100 3069 y(MPI_IS)q(E)q(N)q(DC)q(\()q(h)q(a)q(nd)q(l)q(e)q(,)g(inbuf,)f
(inlen,)h(root,)f(tag,)f(group\))q(;)100 3145 y(if)e(\(rank)q(==)q(r)q(o)q(o)
q(t\))195 3220 y(for)i(\(i=0;)h(i)c(<)h(size;)j(i++\))195 3295
y({)291 3371 y(MPI_RE)q(C)q(VC)q(\()q(o)q(u)q(t)q(bu)q(f)q(,)h(inlen,)f(i,)e
(tag,)h(group,)i(return)q(\\_)q(s)q(t)q(a)q(tu)q(s)q(\))q(;)291
3446 y(outbuf)g(+=)c(inlen;)195 3521 y(})100 3596 y(MPI_WA)q(I)q(T)q(\(h)q(a)
q(n)q(d)q(le)q(\))q(;)p eop
%%Page: 8 9
bop 100 -134 a Fk(8)975 b Fh(CHAPTER)17 b(1.)41 b(COLLECTIVE)17
b(COMMUNICA)-5 b(TION)100 60 y Fg(Scatter)100 222 y(MPI)p 244
222 21 3 v 25 w(SCA)f(TTER\()21 b(list)p 745 222 V 24 w(of)p
824 222 V 26 w(in)n(bufs,)i(outbuf,)h(group,)i(ro)r(ot,)g(return)p
1899 222 V 26 w(status\))221 345 y Fk(The)21 b(ro)r(ot)g(pro)r(cess)g(sends)g
(the)g(con)n(ten)n(t)j(of)d(its)f Ff(i)p Fk(-th)i(input)g(bu\013er)h(to)e
(the)g(pro)r(cess)g(with)g(rank)g Ff(i)p Fk(;)100 420 y(eac)n(h)h(pro)r(cess)
f(\(including)j(the)d(ro)r(ot)i(pro)r(cess\))f(stores)g(the)f(incoming)g
(message)e(in)i(its)g(output)j(bu\013er.)100 495 y(The)19 b(routine)h(is)e
(called)h(b)n(y)g(all)f(mem)n(b)r(ers)e(of)j(the)h(group)h(using)e(the)g
(same)e(argumen)n(ts)j(for)g Ff(group)p Fk(,)i(and)100 571
y Ff(root)p Fk(.)100 696 y Fg(IN)h(list)p 302 696 V 25 w(of)p
382 696 V 26 w(in)n(bufs)30 b Fk(list)20 b(of)h(bu\013er)h(descriptor)i
(handles)100 822 y Fg(OUT)e(outbuf)30 b Fk(bu\013er)23 b(descriptor)g(handle)
100 948 y Fg(IN)g(group)32 b Fk(handle)100 1073 y Fg(IN)23
b(ro)r(ot)33 b Fk(rank)22 b(of)f(sending)h(pro)r(cess)f(\(in)n(teger\))100
1199 y Fg(OUT)h(return)p 475 1199 V 26 w(status)32 b Fk(return)23
b(status)f(handle)221 1325 y Ff(MPI)p 318 1325 20 3 v 26 w(SCATTER)q(\()37
b(list)p 754 1325 V 26 w(of)p 842 1325 V 25 w(inbufs)q(,)f(outbuf)q(,)h
(group,)f(root,)g(return)p 1976 1325 V 28 w(status)q(\))25
b Fk(is)100 1451 y Ff(MPI_GS)q(I)q(Z)q(E\()37 b(group,)g(&size)f(\);)100
1526 y(MPI_RA)q(N)q(K)q(\()g(group,)h(&rank)f(\);)100 1601
y(MPI_IR)q(E)q(C)q(V\()q(h)q(a)q(n)q(dl)q(e)q(,)h(outbuf)q(,)f(root,)g(tag,)f
(group\))q(;)100 1676 y(if)e(\(rank)q(=r)q(o)q(o)q(t)q(\))195
1752 y(for)i(\(i=0;)h(i)c(<)h(size;)j(i++\))291 1827 y(MPI_SE)q(N)q(D\()q(i)q
(n)q(b)q(u)q(f[)q(i)q(])q(,)g(i,)e(tag,)h(group\))q(;)100 1902
y(MPI_WA)q(I)q(T)q(\(h)q(a)q(n)q(d)q(le)q(,)i(return)q(\\)q(_s)q(t)q(a)q(t)q
(u)q(s\))q(;)221 2075 y Fg(MPI)p 365 2075 21 3 v 26 w(SCA)-6
b(TTER)n(C\()19 b(in)n(buf,)k(outbuf,)h(len,)e(group,)k(ro)r(ot\))221
2198 y Ff(MPI)p 318 2198 20 3 v 26 w(SCATTER)q(C)i Fk(b)r(eha)n(v)n(es)c(lik)
n(e)e Ff(MPI)p 1055 2198 V 25 w(SCATTE)q(R)27 b Fk(restricted)f(to)d(blo)r(c)
n(k)g(bu\013ers,)i(and)f(with)f(the)h(ad-)100 2273 y(ditional)j(restriction)h
(that)f(all)e(output)k(bu\013ers)e(ha)n(v)n(e)f(the)g(same)e(length.)43
b(The)26 b(input)h(bu\013er)g(blo)r(c)n(k)100 2348 y(of)d(the)h(ro)r(ot)f
(pro)r(cess)h(is)e(partitioned)k(in)n(to)e Ff(n)f Fk(consecutiv)n(e)h(blo)r
(c)n(ks,)g(eac)n(h)f(consisting)i(of)e Ff(len)h Fk(w)n(ords.)100
2424 y(The)19 b Ff(i)p Fk(-th)i(blo)r(c)n(k)f(is)f(sen)n(t)h(to)g(the)g
Ff(i)p Fk(-th)h(pro)r(cess)f(in)f(the)h(group)i(and)e(stored)h(in)e(its)h
(output)i(bu\013er.)29 b(The)100 2499 y(routine)e(is)c(called)h(b)n(y)h(all)f
(mem)n(b)r(ers)e(of)j(the)g(group)h(using)f(the)g(same)e(argumen)n(ts)j(for)f
Ff(group,)37 b(len)p Fk(,)100 2574 y(and)22 b Ff(root)p Fk(.)100
2700 y Fg(IN)h(in)n(buf)29 b Fk(\014rst)22 b(en)n(try)h(in)e(input)h
(bu\013er)h({)d(signi\014can)n(t)k(only)d(at)g(ro)r(ot)g(\(c)n(hoice\).)100
2826 y Fg(OUT)h(outbuf)30 b Fk(\014rst)22 b(en)n(try)h(in)e(output)i
(bu\013er)g(\(c)n(hoice\).)100 2951 y Fg(IN)g(len)30 b Fk(n)n(um)n(b)r(er)21
b(of)g(en)n(tries)h(to)f(b)r(e)g(stored)h(in)f(output)j(bu\013er)e(\(in)n
(teger\))100 3077 y Fg(IN)h(group)32 b Fk(handle)100 3203 y
Fg(IN)23 b(ro)r(ot)33 b Fk(rank)22 b(of)f(sending)h(pro)r(cess)f(\(in)n
(teger\))221 3328 y Ff(MPI)p 318 3328 V 26 w(SCATTER)q(C)q(\()37
b(inbuf,)f(outbu)q(f,)h(outlen)q(,)g(group,)f(root\))56 b Fk(is)100
3454 y Ff(MPI_GS)q(I)q(Z)q(E\()37 b(&size,)g(group\))q(;)100
3530 y(MPI_RA)q(N)q(K)q(\()f(&rank,)h(group\))q(;)100 3605
y(MPI_IR)q(E)q(C)q(VC)q(\()g(handle)q(,)f(outbuf)q(,)h(outlen)q(,)f(root,)g
(tag,)f(group)q(\);)p eop
%%Page: 9 10
bop 100 -134 a Fh(1.5.)41 b(D)n(A)-5 b(T)g(A)18 b(MO)n(VE)h(FUNCTIONS)1470
b Fk(9)100 60 y Ff(if)33 b(\(rank)q(=r)q(o)q(o)q(t)q(\))195
135 y(for)i(\(i=0;)h(i)c(<)h(size;)j(i++\))195 211 y({)291
286 y(MPI_SE)q(N)q(DC)q(\()q(i)q(n)q(b)q(uf)q(,)h(outlen)q(,)f(i,)e(tag,)h
(group,)i(return)q(\\_)q(s)q(t)q(a)q(tu)q(s)q(\))q(;)291 361
y(inbuf)f(+=)d(outlen)q(;)195 437 y(})100 512 y(MPI_WA)q(I)q(T)q(\(h)q(a)q(n)
q(d)q(le)q(\))q(;)100 671 y Fg(All-to-all)23 b(scatter)100
833 y(MPI)p 244 833 21 3 v 25 w(ALLSCA)-6 b(TTER\()20 b(list)p
881 833 V 25 w(of)p 961 833 V 26 w(in)n(bufs,)j(outbuf,)h(group,)h(return)p
1865 833 V 26 w(status\))221 955 y Fk(Eac)n(h)g(pro)r(cess)g(in)f(the)h
(group)h(sends)f(its)g Ff(i)p Fk(-th)h(bu\013er)g(in)e(its)h(input)h
(bu\013er)g(list)e(to)h(the)g(pro)r(cess)100 1031 y(with)18
b(rank)g Ff(i)g Fk(\(itself)g(included\);)j(eac)n(h)d(pro)r(cess)g
(concatenates)h(the)g(incoming)d(messages)g(in)h(its)h(output)100
1106 y(bu\013er,)j(in)e(the)g(order)i(of)e(the)g(senders')h(ranks.)28
b(The)19 b(routine)i(is)d(called)h(b)n(y)g(all)f(mem)n(b)r(ers)f(of)i(the)g
(group)100 1181 y(using)j(the)f(same)e(argumen)n(ts)j(for)g
Ff(group)p Fk(.)100 1303 y Fg(IN)h(list)p 302 1303 V 25 w(of)p
382 1303 V 26 w(in)n(bufs)30 b Fk(list)20 b(of)h(bu\013er)h(descriptor)i
(handles)100 1427 y Fg(OUT)e(outbuf)30 b Fk(bu\013er)23 b(descriptor)g
(handle)100 1550 y Fg(IN)g(group)32 b Fk(handle)100 1674 y
Fg(OUT)22 b(return)p 475 1674 V 26 w(status)32 b Fk(return)23
b(status)f(handle)221 1843 y Fg(MPI)p 365 1843 V 26 w(ALLSCA)-6
b(TTER)n(C)o(\()20 b(in)n(buf,)i(outbuf,)i(len,)f(group\))221
1965 y Ff(MPI)p 318 1965 20 3 v 26 w(ALLSCAT)q(T)q(E)q(R)q(C)29
b Fk(b)r(eha)n(v)n(es)e(lik)n(e)e Ff(MPI)p 1158 1965 V 25 w(ALLSCA)q(T)q(TE)q
(R)30 b Fk(restricted)e(to)d(blo)r(c)n(k)h(bu\013ers,)i(and)e(with)100
2041 y(the)f(additional)i(restriction)h(that)e(all)e(blo)r(c)n(ks)h(sen)n(t)g
(from)g(one)g(pro)r(cess)g(to)g(another)i(ha)n(v)n(e)f(the)f(same)100
2116 y(length.)j(The)18 b(input)i(bu\013er)h(blo)r(c)n(k)d(of)h(eac)n(h)g
(pro)r(cess)g(is)e(partitioned)22 b(in)n(to)e Ff(n)e Fk(consecutiv)n(e)i(blo)
r(c)n(ks,)f(eac)n(h)100 2191 y(consisting)26 b(of)g Ff(len)g
Fk(w)n(ords.)42 b(The)24 b Ff(i)p Fk(-th)j(blo)r(c)n(k)e(is)f(sen)n(t)i(to)f
(the)h Ff(it)p Fk(-th)h(pro)r(cess)f(in)f(the)g(group.)43 b(Eac)n(h)100
2267 y(pro)r(cess)24 b(concatenates)h(the)f(incoming)e(messages,)g(in)h(the)g
(order)i(of)e(the)h(senders')g(ranks,)g(and)h(store)100 2342
y(them)18 b(in)g(its)g(output)k(bu\013er.)28 b(The)18 b(routine)j(is)d
(called)g(b)n(y)h(all)f(mem)n(b)r(ers)e(of)j(the)g(group)i(using)e(the)g
(same)100 2417 y(argumen)n(ts)j(for)g Ff(group)p Fk(,)i(and)e
Ff(len)p Fk(.)100 2539 y Fg(IN)h(in)n(buf)29 b Fk(\014rst)22
b(en)n(try)h(in)e(input)h(bu\013er)h(\(c)n(hoice\).)29 b(ro)r(ot)21
b(\(in)n(teger\))100 2662 y Fg(OUT)h(outbuf)30 b Fk(\014rst)22
b(en)n(try)h(in)e(output)i(bu\013er)g(\(c)n(hoice\).)100 2786
y Fg(IN)g(len)30 b Fk(n)n(um)n(b)r(er)21 b(of)g(en)n(tries)h(sen)n(t)g(from)e
(eac)n(h)i(pro)r(cess)f(to)g(eac)n(h)g(other)i(\(in)n(teger\).)100
2910 y Fg(IN)g(group)32 b Fk(handle)221 3031 y Ff(MPI)p 318
3031 V 26 w(ALLSCAT)q(T)q(E)q(R)q(C)q(\()k(inbuf,)h(outbuf)q(,)f(len,)g
(group\))25 b Fk(is)100 3153 y Ff(MPI_GS)q(I)q(Z)q(E\()37 b(group,)g(&size)f
(\);)100 3228 y(MPI_RA)q(N)q(K)q(\()g(group,)h(&rank)f(\);)100
3304 y(for)e(\(i=0;)i(i)d(<)f(rank;)k(i++\))195 3379 y({)227
3454 y(MPI_IR)q(E)q(C)q(V)q(C\()q(r)q(e)q(c)q(v)q(_h)q(a)q(n)q(d)q(le)q(s)q
([)q(i)q(])q(,)g(outbuf)q(,)h(len,)e(tag,)g(group\))q(;)227
3530 y(outbuf)i(+=)c(len;)195 3605 y(})p eop
%%Page: 10 11
bop 100 -134 a Fk(10)945 b Fh(CHAPTER)17 b(1.)41 b(COLLECTIVE)17
b(COMMUNICA)-5 b(TION)100 60 y Ff(for)34 b(\(i=0;)i(i)d(<)f(size;)k(i++\))195
135 y({)227 211 y(MPI_IS)q(E)q(N)q(D)q(C\()q(s)q(e)q(n)q(d)q(_h)q(a)q(n)q(d)q
(le)q([)q(i)q(])q(,)g(inbuf,)h(len,)e(i,)f(tag,)h(group\))q(;)227
286 y(inbuf)h(+=)e(len;)195 361 y(})100 437 y(MPI_WA)q(I)q(T)q(AL)q(L)q(\()q
(s)q(en)q(d)q(_)q(h)q(a)q(nd)q(l)q(e)q(\))q(;)100 512 y(MPI_WA)q(I)q(T)q(AL)q
(L)q(\()q(r)q(ec)q(v)q(_)q(h)q(a)q(nd)q(l)q(e)q(\))q(;)100
671 y Fg(All-to-all)23 b(broadcast)100 833 y(MPI)p 244 833
21 3 v 25 w(ALLCAST\()e(in)n(buf,)i(outbuf,)h(group,)h(return)p
1497 833 V 26 w(status\))221 955 y Fk(Eac)n(h)19 b(pro)r(cess)g(in)f(the)h
(group)i(broadcasts)g(its)e(input)h(bu\013er)h(to)d(all)g(pro)r(cesses)h
(\(including)i(itself)5 b(\);)100 1031 y(eac)n(h)24 b(pro)r(cess)h
(concatenates)h(the)e(incoming)g(messages)e(in)h(its)h(output)j(bu\013er,)f
(in)e(the)g(order)i(of)e(the)100 1106 y(senders')19 b(ranks.)27
b(The)18 b(routine)i(is)d(called)g(b)n(y)h(all)g(mem)n(b)r(ers)d(of)j(the)g
(group)i(using)f(the)f(same)e(argumen)n(ts)100 1181 y(for)22
b Ff(group)p Fk(.)100 1303 y Fg(IN)h(in)n(buf)29 b Fk(bu\013er)23
b(descriptor)g(handle)g(for)f(input)g(bu\013er)100 1427 y Fg(OUT)g(outbuf)30
b Fk(bu\013er)23 b(descriptor)g(handle)g(for)f(output)h(bu\013er)100
1550 y Fg(IN)g(group)32 b Fk(handle)100 1674 y Fg(OUT)22 b(return)p
475 1674 V 26 w(status)32 b Fk(return)23 b(status)f(handle)221
1843 y Fg(MPI)p 365 1843 V 26 w(ALLCASTC\()e(in)n(buf,)i(outbuf,)i(len,)f
(group\))221 1965 y Ff(MPI)p 318 1965 20 3 v 26 w(ALLCAST)q(C)28
b Fk(b)r(eha)n(v)n(es)c(lik)n(e)e Ff(MPI)p 1055 1965 V 25 w(ALLCAS)q(T)27
b Fk(restricted)f(to)d(blo)r(c)n(k)g(bu\013ers,)i(and)f(with)f(the)h(ad-)100
2041 y(ditional)g(restriction)h(that)e(all)f(blo)r(c)n(ks)h(sen)n(t)g(from)f
(one)g(pro)r(cess)h(to)g(another)i(ha)n(v)n(e)e(the)g(same)d(length.)100
2116 y(The)f(routine)h(is)e(called)h(b)n(y)g(all)f(mem)n(b)r(ers)e(of)j(the)h
(group)h(using)e(the)g(same)e(argumen)n(ts)j(for)g Ff(group)p
Fk(,)i(and)100 2191 y Ff(len)p Fk(.)100 2313 y Fg(IN)h(in)n(buf)29
b Fk(\014rst)22 b(en)n(try)h(in)e(input)h(bu\013er)h(\(c)n(hoice\).)29
b(ro)r(ot)21 b(\(in)n(teger\))100 2437 y Fg(OUT)h(outbuf)30
b Fk(\014rst)22 b(en)n(try)h(in)e(output)i(bu\013er)g(\(c)n(hoice\).)100
2560 y Fg(IN)g(len)30 b Fk(n)n(um)n(b)r(er)21 b(of)g(en)n(tries)h(sen)n(t)g
(from)e(eac)n(h)i(pro)r(cess)f(to)g(eac)n(h)g(other)i(\(including)g(itself)5
b(\).)100 2684 y Fg(IN)23 b(group)32 b Fk(group)23 b(handle)221
2806 y Ff(MPI)p 318 2806 V 26 w(ALLCAST)q(C)q(\()37 b(inbuf,)f(outbu)q(f,)h
(len,)e(group\))25 b Fk(is)100 2927 y Ff(MPI_GS)q(I)q(Z)q(E\()37
b(group,)g(&size)f(\);)100 3003 y(MPI_RA)q(N)q(K)q(\()g(group,)h(&rank)f(\);)
100 3078 y(for)e(\(i=0;)i(i)d(<)f(rank;)k(i++\))195 3153 y({)227
3228 y(MPI_IR)q(E)q(C)q(V)q(C\()q(r)q(e)q(c)q(v)q(_h)q(a)q(n)q(d)q(le)q(s)q
([)q(i)q(])q(,)g(outbuf)q(,)h(len,)e(tag,)g(group\))q(;)227
3304 y(outbuf)i(+=)c(len;)195 3379 y(})100 3454 y(for)h(\(i=0;)i(i)d(<)f
(size;)k(i++\))195 3530 y({)227 3605 y(MPI_IS)q(E)q(N)q(D)q(C\()q(s)q(e)q(n)q
(d)q(_h)q(a)q(n)q(d)q(le)q([)q(i)q(])q(,)g(inbuf,)h(len,)e(i,)f(tag,)h
(group\))q(;)p eop
%%Page: 11 12
bop 100 -134 a Fh(1.6.)47 b(GLOBAL)19 b(COMPUTE)f(OPERA)-5
b(TIONS)1171 b Fk(11)195 60 y Ff(})100 135 y(MPI_WA)q(I)q(T)q(AL)q(L)q(\()q
(s)q(en)q(d)q(_)q(h)q(a)q(nd)q(l)q(e)q(\))q(;)100 211 y(MPI_WA)q(I)q(T)q(AL)q
(L)q(\()q(r)q(ec)q(v)q(_)q(h)q(a)q(nd)q(l)q(e)q(\))q(;)100
407 y Fj(1.6)94 b(Global)29 b(Comput)o(e)d(Op)s(erations)100
544 y Fg(Reduce)100 708 y(MPI)p 244 708 21 3 v 25 w(REDUCE\()21
b(in)n(buf,)h(outbuf,)i(group,)i(ro)r(ot,)g(op\))221 831 y
Fk(Com)n(bines)d(the)h(v)m(alues)f(pro)n(vided)j(in)d(the)h(input)i(bu\013er)
f(of)e(eac)n(h)h(pro)r(cess)g(in)g(the)g(group,)i(using)100
906 y(the)c(op)r(eration)j Ff(op)p Fk(,)d(and)h(returns)i(the)d(com)n(bined)g
(v)m(alue)f(in)h(the)g(output)j(bu\013er)f(of)e(the)g(pro)r(cess)g(with)100
982 y(rank)h Ff(root)p Fk(.)33 b(Eac)n(h)21 b(pro)r(cess)h(can)g(pro)n(vide)i
(one)e(v)m(alue,)g(or)g(a)f(sequence)h(of)g(v)m(alues,)g(in)f(whic)n(h)i
(case)e(the)100 1057 y(com)n(bine)e(op)r(eration)j(is)c(executed)j(p)r(oin)n
(t)n(wise)f(on)g(eac)n(h)g(en)n(try)h(of)f(the)g(sequence.)27
b(F)-5 b(or)20 b(example,)e(if)h(the)100 1132 y(op)r(eration)25
b(is)d Ff(max)j Fk(and)f(input)h(bu\013ers)g(con)n(tains)f(t)n(w)n(o)g
(\015oating)h(p)r(oin)n(t)f(n)n(um)n(b)r(ers,)h(then)f(outbuf\(1\))j(=)100
1208 y(global)19 b(max\(in)n(buf\(1\)\))j(and)d(outbuf\(2\))j(=)c(global)h
(max\(in)n(buf\(2\)\).)30 b(All)17 b(input)j(bu\013ers)f(should)h(de\014ne)
100 1283 y(sequences)e(of)g(equal)g(length)h(of)f(en)n(tries)h(of)f(t)n(yp)r
(es)g(that)i(matc)n(h)d(the)i(t)n(yp)r(e)f(of)g(the)g(op)r(erands)i(of)e
Ff(op)p Fk(.)28 b(The)100 1358 y(output)g(bu\013er)e(should)h(de\014ne)f(a)e
(sequence)i(of)f(the)g(same)e(length)k(of)e(en)n(tries)h(of)f(t)n(yp)r(es)g
(that)i(matc)n(h)100 1433 y(the)e(t)n(yp)r(e)g(of)g(the)h(result)f(of)g
Ff(op)p Fk(.)40 b(\(Note)25 b(that,)i(here)f(as)e(for)h(all)g(other)h(comm)n
(unication)e(op)r(erations,)100 1509 y(the)e(t)n(yp)r(e)g(of)f(en)n(tries)h
(inserted)h(in)e(a)g(message)f(dep)r(end)i(on)g(the)g(information)h(pro)n
(vided)g(b)n(y)f(the)g(input)100 1584 y(bu\013er)e(descriptor,)h(and)e(not)f
(on)h(the)f(declarations)i(of)e(these)h(v)m(ariables)f(in)g(the)g(calling)g
(program.)28 b(The)100 1659 y(t)n(yp)r(es)19 b(of)f(the)h(v)m(ariables)f(in)g
(the)h(calling)f(program)h(need)g(not)g(matc)n(h)f(the)h(t)n(yp)r(es)f
(de\014ned)i(b)n(y)f(the)g(bu\013er)100 1734 y(descriptor,)32
b(but)e(in)e(suc)n(h)h(case)f(the)g(outcome)g(of)g(a)g(reduce)i(op)r(eration)
g(ma)n(y)d(b)r(e)h(implemen)n(tation)100 1810 y(dep)r(enden)n(t.\))221
1886 y(The)22 b(op)r(eration)i(de\014ned)g(b)n(y)e Ff(op)h
Fk(is)e(asso)r(ciativ)n(e)h(and)h(comm)n(utativ)n(e,)e(and)i(the)g(implemen)n
(tation)100 1961 y(can)h(tak)n(e)h(adv)m(an)n(tage)h(of)e(asso)r(ciativit)n
(y)h(and)g(comm)n(utativit)n(y)f(in)g(order)i(to)e(c)n(hange)h(order)h(of)e
(ev)m(alu-)100 2036 y(ation.)41 b(The)24 b(routine)j(is)d(called)h(b)n(y)g
(all)g(group)i(mem)n(b)r(ers)22 b(using)k(the)f(same)e(argumen)n(ts)j(for)g
Ff(group,)100 2112 y(root)d Fk(and)f Ff(op)p Fk(.)100 2241
y Fg(IN)h(in)n(buf)29 b Fk(handle)23 b(to)e(input)h(bu\013er)100
2370 y Fg(OUT)g(outbuf)30 b Fk(handle)23 b(to)e(output)i(bu\013er)g({)d
(signi\014can)n(t)k(only)d(at)g(ro)r(ot)100 2498 y Fg(IN)i(group)32
b Fk(handle)23 b(to)e(group)100 2627 y Fg(IN)i(ro)r(ot)33 b
Fk(rank)22 b(of)f(ro)r(ot)h(pro)r(cess)f(\(in)n(teger\))100
2756 y Fg(IN)i(op)31 b Fk(op)r(eration)23 b(\(status\))221
2885 y(W)-5 b(e)27 b(list)f(b)r(elo)n(w)h(the)h(op)r(erations)h(whic)n(h)f
(are)f(supp)r(orted)j(for)e(F)-5 b(ortran,)31 b(eac)n(h)c(with)h(the)f
(corre-)100 2960 y(sp)r(onding)c(v)m(alue)d(of)i(the)f Ff(op)h
Fk(parameter.)100 3089 y Fg(MPI)p 244 3089 V 25 w(IMAX)31 b
Fk(in)n(teger)22 b(maxim)n(um)100 3218 y Fg(MPI)p 244 3218
V 25 w(RMAX)29 b Fk(real)21 b(maxim)n(um)100 3347 y Fg(MPI)p
244 3347 V 25 w(DMAX)30 b Fk(double)22 b(precision)g(real)f(maxim)n(um)100
3476 y Fg(MPI)p 244 3476 V 25 w(IMIN)31 b Fk(in)n(teger)23
b(minim)n(um)100 3605 y Fg(MPI)p 244 3605 V 25 w(RMIN)30 b
Fk(real)21 b(minim)n(um)p eop
%%Page: 12 13
bop 100 -134 a Fk(12)938 b Fh(CHAPTER)17 b(1.)48 b(COLLECTIVE)17
b(COMMUNICA)-5 b(TION)100 60 y Fg(MPI)p 244 60 21 3 v 25 w(DMIN)30
b Fk(double)23 b(precision)f(real)f(minim)n(um)100 185 y Fg(MPI)p
244 185 V 25 w(ISUM)31 b Fk(in)n(teger)22 b(sum)100 310 y Fg(MPI)p
244 310 V 25 w(RSUM)29 b Fk(real)21 b(sum)100 435 y Fg(MPI)p
244 435 V 25 w(DSUM)30 b Fk(double)22 b(precision)g(real)f(sum)100
560 y Fg(MPI)p 244 560 V 25 w(CSUM)29 b Fk(complex)20 b(sum)100
685 y Fg(MPI)p 244 685 V 25 w(DCSUM)29 b Fk(double)22 b(precision)g(complex)e
(sum)100 810 y Fg(MPI)p 244 810 V 25 w(IPR)n(OD)29 b Fk(in)n(teger)22
b(pro)r(duct)100 935 y Fg(MPI)p 244 935 V 25 w(RPR)n(OD)28
b Fk(real)21 b(pro)r(duct)100 1060 y Fg(MPI)p 244 1060 V 25
w(DPR)n(OD)28 b Fk(double)22 b(precision)g(real)f(pro)r(duct)100
1185 y Fg(MPI)p 244 1185 V 25 w(CPR)n(OD)28 b Fk(complex)19
b(pro)r(duct)100 1310 y Fg(MPI)p 244 1310 V 25 w(DCPR)n(OD)27
b Fk(double)22 b(precision)h(complex)c(pro)r(duct)100 1435
y Fg(MPI)p 244 1435 V 25 w(AND)29 b Fk(logical)21 b(and)100
1560 y Fg(MPI)p 244 1560 V 25 w(IAND)30 b Fk(in)n(teger)22
b(\(bit-wise\))g(and)100 1685 y Fg(MPI)p 244 1685 V 25 w(OR)29
b Fk(logical)21 b(or)100 1810 y Fg(MPI)p 244 1810 V 25 w(IOR)30
b Fk(in)n(teger)22 b(\(bit-wise\))g(or)100 1935 y Fg(MPI)p
244 1935 V 25 w(X)n(OR)29 b Fk(logical)21 b(xor)100 2060 y
Fg(MPI)p 244 2060 V 25 w(IX)n(OR)29 b Fk(in)n(teger)23 b(\(bit-wise\))f(xor)
100 2185 y Fg(MPI)p 244 2185 V 25 w(MAXLOC)29 b Fk(rank)22
b(of)f(pro)r(cess)g(with)g(maxim)n(um)c(in)n(teger)22 b(v)m(alue)100
2310 y Fg(MPI)p 244 2310 V 25 w(MAXRLOC)28 b Fk(rank)22 b(of)f(pro)r(cess)g
(with)g(maxim)n(um)c(real)k(v)m(alue)100 2435 y Fg(MPI)p 244
2435 V 25 w(MAXDLOC)28 b Fk(rank)22 b(of)f(pro)r(cess)g(with)g(maxim)n(um)c
(double)23 b(precision)f(real)f(v)m(alue)100 2560 y Fg(MPI)p
244 2560 V 25 w(MINLOC)29 b Fk(rank)22 b(of)f(pro)r(cess)h(with)f(minim)n(um)
c(in)n(teger)22 b(v)m(alue)100 2685 y Fg(MPI)p 244 2685 V 25
w(MINRLOC)29 b Fk(rank)22 b(of)f(pro)r(cess)g(with)g(minim)n(um)c(real)k(v)m
(alue)100 2810 y Fg(MPI)p 244 2810 V 25 w(MINDLOC)29 b Fk(rank)22
b(of)f(pro)r(cess)g(with)g(minim)n(um)c(double)22 b(precision)g(real)f(v)m
(alue)221 2982 y Fg(MPI)p 365 2982 V 26 w(REDUCEC\()e(in)n(buf,)k(outbuf,)h
(len,)f(group,)i(ro)r(ot,)h(op\))221 3105 y Fk(Is)20 b(same)f(as)h
Ff(MPI)p 610 3105 20 3 v 26 w(REDUCE)q Fk(,)k(restricted)f(to)e(a)f(blo)r(c)n
(k)h(bu\013er.)100 3230 y Fg(IN)i(in)n(buf)29 b Fk(\014rst)22
b(lo)r(cation)g(in)f(input)h(bu\013er)100 3355 y Fg(OUT)g(outbuf)30
b Fk(\014rst)22 b(lo)r(cation)g(in)f(output)i(bu\013er)g({)e(signi\014can)n
(t)i(only)e(at)g(ro)r(ot)100 3480 y Fg(IN)i(len)30 b Fk(n)n(um)n(b)r(er)21
b(of)g(en)n(tries)h(in)f(input)i(and)f(output)h(bu\013er)g(\(in)n(teger\))100
3605 y Fg(IN)g(group)32 b Fk(handle)23 b(to)e(group)p eop
%%Page: 13 14
bop 100 -134 a Fh(1.6.)47 b(GLOBAL)19 b(COMPUTE)f(OPERA)-5
b(TIONS)1171 b Fk(13)100 60 y Fg(IN)23 b(ro)r(ot)33 b Fk(rank)22
b(of)f(ro)r(ot)h(pro)r(cess)f(\(in)n(teger\))100 183 y Fg(IN)i(op)31
b Fk(op)r(eration)23 b(\(status\))221 350 y Fg(MPI)p 365 350
21 3 v 26 w(USER)p 583 350 V 23 w(REDUCE\()e(in)n(buf,)h(outbuf,)i(group,)i
(ro)r(ot,)g(function\))221 472 y Fk(Same)e(as)g(the)h(reduce)g(op)r(eration)i
(function)g(ab)r(o)n(v)n(e)f(except)f(that)h(a)e(user)h(supplied)h(function)h
(is)100 548 y(used.)g Ff(functi)q(o)q(n)21 b Fk(is)c(an)g(asso)r(ciativ)n(e)h
(and)g(comm)n(utativ)n(e)f(function)j(with)d(t)n(w)n(o)h(argumen)n(ts.)28
b(The)17 b(t)n(yp)r(es)100 623 y(of)j(the)h(t)n(w)n(o)f(argumen)n(ts)i(and)f
(of)f(the)g(returned)k(v)m(alue)19 b(of)i(the)f(function,)j(and)e(the)f(t)n
(yp)r(es)h(of)f(all)f(en)n(tries)100 698 y(in)25 b(the)h(input)h(and)f
(output)i(bu\013ers)f(all)d(agree.)41 b(The)25 b(output)j(bu\013er)f(has)f
(the)f(same)f(length)i(as)f(the)100 773 y(input)e(bu\013er.)100
893 y Fg(IN)g(in)n(buf)29 b Fk(handle)23 b(to)e(input)h(bu\013er)100
1016 y Fg(OUT)g(outbuf)30 b Fk(handle)23 b(to)e(output)i(bu\013er)g({)d
(signi\014can)n(t)k(only)d(at)g(ro)r(ot)100 1139 y Fg(IN)i(group)32
b Fk(handle)23 b(to)e(group)100 1262 y Fg(IN)i(ro)r(ot)33 b
Fk(rank)22 b(of)f(ro)r(ot)h(pro)r(cess)f(\(in)n(teger\))100
1385 y Fg(IN)i(function)30 b Fk(user)22 b(pro)n(vided)h(function)221
1552 y Fg(MPI)p 365 1552 V 26 w(USER)p 583 1552 V 23 w(REDUCEC\()d(in)n(buf,)
i(outbuf,)i(len,)f(group,)i(ro)r(ot,)i(function\))221 1674
y Fk(Is)20 b(same)f(as)h Ff(MPI)p 610 1674 20 3 v 636 1674
V 49 w(USER)p 783 1674 V 26 w(REDUCE)q Fk(,)k(restricted)f(to)e(a)f(blo)r(c)n
(k)h(bu\013er.)100 1794 y Fg(IN)i(in)n(buf)29 b Fk(\014rst)22
b(lo)r(cation)g(in)f(input)h(bu\013er)100 1917 y Fg(OUT)g(outbuf)30
b Fk(\014rst)22 b(lo)r(cation)g(in)f(output)i(bu\013er)g({)e(signi\014can)n
(t)i(only)e(at)g(ro)r(ot)100 2039 y Fg(IN)i(len)30 b Fk(n)n(um)n(b)r(er)21
b(of)g(en)n(tries)h(in)f(input)i(and)f(output)h(bu\013er)g(\(in)n(teger\))100
2162 y Fg(IN)g(group)32 b Fk(handle)23 b(to)e(group)100 2285
y Fg(IN)i(ro)r(ot)33 b Fk(rank)22 b(of)f(ro)r(ot)h(pro)r(cess)f(\(in)n
(teger\))100 2408 y Fg(IN)i(op)31 b Fk(op)r(eration)23 b(\(status\))221
2629 y Fe(Discussion:)221 2695 y Fd(Do)e(w)n(e)h(also)d(w)n(an)n(t)i(a)g(v)n
(ersion)f(of)g(reduce)i(that)f(broadcasts)f(the)h(result)f(to)h(all)e(pro)r
(cesses)i(in)f(the)h(group?)100 2762 y(\(This)12 b(can)h(b)r(e)f(ac)n(hiev)n
(ed)i(b)n(y)f(a)g(reduce)g(follo)n(w)n(ed)f(b)n(y)h(a)f(broadcast,)h(but)f(a)
h(com)n(bined)e(function)h(ma)n(y)g(b)r(e)h(somewhat)100 2828
y(more)18 b(e\016cien)n(t.\))25 b(These)19 b(w)n(ould)f(b)r(e)g(resp)r(ectiv)
n(ely:)221 2942 y Fe(MPI)p 352 2942 V 24 w(GOP\()23 b(in)n(buf,)c(outbuf,)g
(group,)f(op\))221 3103 y(MPI)p 352 3103 V 24 w(GOPC\()23 b(in)n(buf,)c
(outbuf,)g(len,)i(group,)d(op\))221 3264 y(MPI)p 352 3264 V
24 w(USER)p 551 3264 V 22 w(GOP\()k(in)n(buf,)e(outbuf,)f(group,)f
(function\))221 3425 y(MPI)p 352 3425 V 24 w(USER)p 551 3425
V 22 w(GOPC\()k(in)n(buf,)e(outbuf,)f(len,)i(group,)d(function\))221
3538 y Fd(Do)g(w)n(e)h(w)n(an)n(t)g(a)f(user)g(pro)n(vided)f
Fb(function)g Fd(\(t)n(w)n(o)j(IN)e(parameters,)f(one)h(OUT)g(v)m(alue\),)g
(or)f(a)h(user)g(pro)n(vided)100 3605 y(pro)r(cedure)i(that)h(o)n(v)n
(erwrites)h(the)f(second)g(input)e(\(ie.)31 b(one)21 b(IN)g(param,)d(one)i
(INOUT)i(param,)c(the)k(equiv)m(alen)n(t)p eop
%%Page: 14 15
bop 100 -134 a Fk(14)938 b Fh(CHAPTER)17 b(1.)48 b(COLLECTIVE)17
b(COMMUNICA)-5 b(TION)100 60 y Fd(of)24 b(C)h Fa(a)k(op=)g(b)c
Fd(t)n(yp)r(e)g(assignmen)n(t\)?)42 b(The)25 b(second)f(c)n(hoice)i(ma)n(y)e
(allo)n(w)f(a)i(more)e(e\016cien)n(t)j(implemen)n(tation,)100
127 y(without)18 b(c)n(hanging)f(the)i(seman)n(tics)g(of)f(the)h(MPI)f(call.)
100 396 y Fg(Scan)100 557 y(MPI)p 244 557 21 3 v 25 w(SCAN\()k(in)n(buf,)g
(outbuf,)i(group,)i(op)e(\))221 680 y Fk(MPI)p 345 680 19 3
v 21 w(SCAN)16 b(is)g(used)i(to)g(p)r(erform)g(a)f(parallel)h(pre\014x)h
(with)f(resp)r(ect)g(to)f(an)h(asso)r(ciativ)n(e)g(reduction)100
755 y(op)r(eration)k(on)e(data)h(distributed)i(across)d(the)g(group.)29
b(The)19 b(op)r(eration)j(returns)h(in)c(the)h(output)j(bu\013er)100
830 y(of)d(the)f(pro)r(cess)h(with)g(rank)g Ff(i)g Fk(the)f(reduction)k(of)c
(the)h(v)m(alues)f(in)g(the)h(input)h(bu\013ers)g(of)f(pro)r(cesses)f(with)
100 906 y(ranks)k Ff(0,...,)q(i)q Fk(.)34 b(The)22 b(t)n(yp)r(e)h(of)f(op)r
(erations)i(supp)r(orted)i(and)d(their)g(seman)n(tic,)f(and)h(the)f
(constrain)n(ts)100 981 y(on)f(input)i(and)f(output)h(bu\013ers)g(are)e(as)f
(for)i Ff(MPI)p 1225 981 20 3 v 25 w(REDUC)q(E)p Fk(.)100 1099
y Fg(IN)h(in)n(buf)29 b Fk(handle)23 b(to)e(input)h(bu\013er)100
1222 y Fg(OUT)g(outbuf)30 b Fk(handle)23 b(to)e(output)i(bu\013er)100
1344 y Fg(IN)g(group)32 b Fk(handle)23 b(to)e(group)100 1467
y Fg(IN)i(op)31 b Fk(op)r(eration)23 b(\(status\))221 1633
y Fg(MPI)p 365 1633 21 3 v 26 w(SCANC\()h(in)n(buf,)j(outbuf,)h(len,)f
(group,)j(op)d(\))c Fk(Same)g(as)g Ff(MPI)p 1984 1633 20 3
v 26 w(SCAN)p Fk(,)j(restricted)g(to)100 1755 y(blo)r(c)n(k)21
b(bu\013ers.)100 1888 y Fg(IN)i(in)n(buf)29 b Fk(\014rst)22
b(input)h(bu\013er)g(elemen)n(t)d(\(c)n(hoice\))100 2010 y
Fg(OUT)i(outbuf)30 b Fk(\014rst)22 b(output)i(bu\013er)f(elemen)n(t)d(\(c)n
(hoice\))100 2133 y Fg(IN)j(len)30 b Fk(n)n(um)n(b)r(er)21
b(of)g(en)n(tries)h(in)f(input)i(and)f(output)h(bu\013er)g(\(in)n(teger\))100
2255 y Fg(IN)g(group)32 b Fk(handle)23 b(to)e(group)100 2378
y Fg(IN)i(op)31 b Fk(op)r(eration)23 b(\(status\))221 2557
y Fg(MPI)p 365 2557 21 3 v 26 w(USER)p 583 2557 V 23 w(SCAN\()f(in)n(buf,)g
(outbuf,)i(group,)i(function)d(\))221 2680 y Fk(Same)16 b(as)h(the)h(scan)f
(op)r(eration)j(function)g(ab)r(o)n(v)n(e)e(except)g(that)g(a)f(user)h
(supplied)h(function)h(is)c(used.)100 2755 y Ff(functi)q(o)q(n)29
b Fk(is)24 b(an)h(asso)r(ciativ)n(e)g(and)h(comm)n(utativ)n(e)e(function)j
(with)e(t)n(w)n(o)h(argumen)n(ts.)40 b(The)25 b(t)n(yp)r(es)g(of)100
2830 y(the)c(t)n(w)n(o)h(argumen)n(ts)g(and)g(of)f(the)g(returned)j(v)m
(alues)d(all)f(agree.)100 2949 y Fg(IN)j(in)n(buf)29 b Fk(handle)23
b(to)e(input)h(bu\013er)100 3072 y Fg(OUT)g(outbuf)30 b Fk(handle)23
b(to)e(output)i(bu\013er)100 3194 y Fg(IN)g(group)32 b Fk(handle)23
b(to)e(group)100 3316 y Fg(IN)i(function)30 b Fk(user)22 b(pro)n(vided)h
(function)221 3482 y Fg(MPI)p 365 3482 V 26 w(USER)p 583 3482
V 23 w(SCANC\()e(in)n(buf,)h(outbuf,)i(len,)f(group,)j(function\))221
3605 y Fk(Is)20 b(same)f(as)h Ff(MPI)p 610 3605 20 3 v 26 w(USER)p
760 3605 V 26 w(SCAN)p Fk(,)j(restricted)g(to)e(a)g(blo)r(c)n(k)g(bu\013er.)p
eop
%%Page: 15 16
bop 100 -134 a Fh(1.7.)47 b(CORRECTNESS)1733 b Fk(15)100 60
y Fg(IN)23 b(in)n(buf)29 b Fk(\014rst)22 b(lo)r(cation)g(in)f(input)h
(bu\013er)100 180 y Fg(OUT)g(outbuf)30 b Fk(\014rst)22 b(lo)r(cation)g(in)f
(output)i(bu\013er)100 300 y Fg(IN)g(len)30 b Fk(n)n(um)n(b)r(er)21
b(of)g(en)n(tries)h(in)f(input)i(and)f(output)h(bu\013er)g(\(in)n(teger\))100
420 y Fg(IN)g(group)32 b Fk(handle)23 b(to)e(group)100 540
y Fg(IN)i(function)30 b Fk(user)22 b(pro)n(vided)h(function)221
754 y Fe(Discussion:)221 830 y Fd(Do)e(w)n(e)h(w)n(an)n(t)f(scan)g(op)r
(erations)e(executed)k(b)n(y)f(segmen)n(ts?)31 b(\(The)21 b(HPF)g
(de\014nition)e(of)h(pre\014x)h(and)f(su\016x)100 905 y(op)r(eration)f(migh)n
(t)i(b)r(e)g(handy)f({)h(in)f(addition)g(to)h(the)h(scanned)f(v)n(ector)i(of)
e(v)m(alues)g(there)h(is)f(a)f(mask)h(that)g(tells)100 980
y(where)e(segmen)n(ts)g(start)g(and)e(end.\))100 1279 y Fj(1.7)94
b(Correctness)100 1525 y Fe(Discussion:)46 b Fd(This)18 b(is)f(still)g(v)n
(ery)j(preliminary)221 1710 y Fk(The)25 b(seman)n(tics)g(of)h(the)g
(collectiv)n(e)f(comm)n(unication)h(op)r(erations)h(can)f(b)r(e)f(deriv)n(ed)
i(from)e(their)100 1785 y(op)r(erational)i(de\014nition)g(in)d(terms)f(of)h
(p)r(oin)n(t-to-p)r(oin)o(t)k(comm)n(unication.)38 b(It)24
b(is)f(assumed)h(that)h(mes-)100 1861 y(sages)c(p)r(ertaining)j(to)d(one)h
(op)r(eration)h(cannot)h(b)r(e)c(confused)k(with)d(messages)e(p)r(ertaining)
24 b(to)e(another)100 1936 y(op)r(eration.)29 b(Also)18 b(messages)f(p)r
(ertaining)22 b(to)d(t)n(w)n(o)h(distinct)g(o)r(ccurrences)h(of)e(the)g(same)
f(op)r(eration)j(can-)100 2011 y(not)h(b)r(e)e(confused,)j(if)e(the)g(t)n(w)n
(o)h(o)r(ccurrences)h(ha)n(v)n(e)e(distinct)i(parameters.)28
b(The)21 b(relev)m(an)n(t)h(parameters)100 2086 y(for)f(this)g(purp)r(ose)h
(are)e Ff(group)p Fk(,)k Ff(root)f Fk(and)e Ff(op)p Fk(.)28
b(messages)18 b(p)r(ertaining)23 b(to)e(another)h(o)r(ccurrence)g(of)f(the)
100 2162 y(same)h(op)r(eration,)28 b(with)d(di\013eren)n(t)h(parameters.)39
b(The)25 b(implemen)n(ter)e(can,)i(of)g(course,)h(use)e(another,)100
2237 y(more)c(e\016cien)n(t)h(implemen)n(tation,)f(as)g(long)i(as)e(it)h(has)
g(the)g(same)e(e\013ect.)221 2414 y Fe(Discussion:)221 2480
y Fd(This)c(statemen)n(t)i(do)r(es)d(not)i(y)n(et)h(apply)d(to)i(the)g
(curren)n(t,)g(incomplete)f(and)g(somewhat)f(careless)i(de\014nitions)100
2546 y(I)i(pro)n(vided)g(in)g(this)g(draft.)221 2613 y(The)j(de\014nition)e
(ab)r(o)n(v)n(e)i(means)e(that)i(messages)f(p)r(ertaining)e(to)j(a)f
(collectiv)n(e)i(comm)n(unication)c(carry)i(in-)100 2679 y(formation)c(iden)n
(tifying)h(the)i(op)r(eration)d(itself,)h(and)h(the)h(v)m(alues)f(of)f(the)j
Fa(group)e Fd(and,)f(where)i(relev)m(an)n(t,)f Fa(root)h Fd(or)100
2746 y Fa(op)g Fd(parameters.)k(Is)18 b(this)g(acceptable?)221
2931 y Fk(A)i(few)g(examples:)100 3055 y Ff(MPI_BC)q(A)q(S)q(T\()q(b)q(u)q(f)
q(,)36 b(len,)f(group,)i(0\);)100 3131 y(MPI_BC)q(A)q(S)q(T\()q(b)q(u)q(f)q
(,)f(len,)f(group,)i(1\);)221 3255 y Fk(Tw)n(o)18 b(consecutiv)n(e)i
(broadcasts,)i(in)d(the)g(same)d(group,)21 b(with)e(the)h(same)c(tag,)k(but)g
(di\013eren)n(t)h(ro)r(ots.)100 3330 y(Since)h(the)h(op)r(erations)h(are)e
(distinguishable,)k(messages)20 b(from)h(one)h(broadcast)j(cannot)f(b)r(e)d
(confused)100 3405 y(with)g(messages)e(from)h(the)i(other)g(broadcast;)h(the)
f(program)g(is)e(safe)g(and)i(will)e(execute)h(as)f(exp)r(ected.)100
3530 y Ff(MPI_BC)q(A)q(S)q(T\()q(b)q(u)q(f)q(,)36 b(len,)f(group,)i(0\);)100
3605 y(MPI_BC)q(A)q(S)q(T\()q(b)q(u)q(f)q(,)f(len,)f(group,)i(0\);)p
eop
%%Page: 16 17
bop 100 -134 a Fk(16)938 b Fh(CHAPTER)17 b(1.)48 b(COLLECTIVE)17
b(COMMUNICA)-5 b(TION)221 60 y Fk(Tw)n(o)26 b(consecutiv)n(e)h(broadcasts,)j
(in)c(the)h(same)d(group,)29 b(with)d(the)h(same)d(tag)j(and)g(ro)r(ot.)44
b(Since)100 135 y(p)r(oin)n(t-to-p)r(oin)o(t)22 b(comm)n(unication)c(preserv)
n(es)i(the)g(order)g(of)e(messages)f(here,)j(to)r(o,)f(messages)d(from)i(one)
100 211 y(broadcast)j(will)c(not)j(b)r(e)e(confused)j(with)d(messages)f(from)
h(the)h(other)h(broadcast;)i(the)d(program)h(is)d(safe)100
286 y(and)22 b(will)d(execute)i(as)g(in)n(tended.)100 428 y
Ff(MPI_RA)q(N)q(K)q(\(&)q(r)q(a)q(n)q(k,)37 b(group\))100 503
y(if)c(\(rank)q(==)q(0)q(\))164 578 y({)195 653 y(MPI_B)q(CA)q(S)q(T)q(C)q
(\(b)q(u)q(f)q(,)k(len,)e(group,)h(0\);)195 729 y(MPI_S)q(EN)q(D)q(C)q(\()q
(bu)q(f)q(,)h(len,)e(2,)e(tag,)i(group\))q(;)164 804 y(})100
879 y(elseif)i(\(rank=)q(=1)q(\))164 955 y({)195 1030 y(MPI_R)q(EC)q(V)q(C)q
(\()q(bu)q(f)q(,)g(len,)e(MPI_DO)q(N)q(TC)q(A)q(R)q(E)q(,)h(tag,)f(group\))q
(;)195 1105 y(MPI_B)q(CA)q(S)q(T)q(C)q(\(b)q(u)q(f)q(,)i(len,)e(group,)h
(0\);)195 1180 y(MPI_R)q(EC)q(V)q(C)q(\()q(bu)q(f)q(,)h(len,)e(MPI_DO)q(N)q
(TC)q(A)q(R)q(E)q(,)h(tag,)f(group\))q(;)164 1256 y(})100 1331
y(else)164 1406 y({)195 1481 y(MPI_S)q(EN)q(D)q(C)q(\()q(bu)q(f)q(,)i(len,)e
(2,)e(tag,)i(group\))q(;)195 1557 y(MPI_B)q(CA)q(S)q(T)q(C)q(\(b)q(u)q(f)q(,)
i(len,)e(group,)h(0\);)164 1632 y(})221 1774 y Fk(Pro)r(cess)23
b(zero)g(executes)h(a)f(broadcast)k(follo)n(w)n(ed)d(b)n(y)g(a)f(send)h(to)g
(pro)r(cess)g(one;)h(pro)r(cess)f(t)n(w)n(o)g(ex-)100 1849
y(ecutes)f(a)f(send)h(to)g(pro)r(cess)g(one,)g(follo)n(w)n(ed)g(b)n(y)g(a)f
(broadcast;)k(and)e(pro)r(cess)f(one)g(executes)f(a)h(receiv)n(e,)100
1924 y(a)29 b(broadcast)i(and)f(a)f(receiv)n(e.)52 b(A)27 b(p)r(ossible)j
(outcome)e(is)g(for)i(the)g(op)r(erations)h(to)e(b)r(e)g(matc)n(hed)g(as)100
2000 y(illustrated)23 b(b)n(y)e(the)h(diagram)e(b)r(elo)n(w.)227
2292 y Ff(0)733 b(1)701 b(2)609 2442 y(/)33 b(-)f(>)65 b(receiv)q(e)386
b(/)33 b(-)g(send)545 2518 y(/)797 b(/)100 2593 y(broadc)q(a)q(s)q(t)100
b(/)287 b(broadc)q(a)q(s)q(t)227 b(/)96 b(broadc)q(a)q(s)q(t)450
2668 y(/)764 b(/)164 2743 y(send)98 b(-)415 b(receiv)q(e)68
b(<)33 b(-)221 3036 y Fk(The)20 b(reason)g(is)f(that)i(broadcast)i(is)18
b(not)j(a)e(sync)n(hronous)k(op)r(eration;)g(the)d(call)f(at)h(a)f(pro)r
(cess)h(ma)n(y)100 3111 y(return)27 b(b)r(efore)e(the)g(other)h(pro)r(cesses)
e(ha)n(v)n(e)h(en)n(tered)i(the)d(broadcast.)40 b(Th)n(us,)26
b(the)f(message)d(sen)n(t)j(b)n(y)100 3186 y(pro)r(cess)e(zero)g(can)g(arriv)
n(e)h(to)f(pro)r(cess)g(one)g(b)r(efore)h(the)f(message)e(sen)n(t)j(b)n(y)f
(pro)r(cess)g(t)n(w)n(o,)g(and)h(b)r(efore)100 3261 y(the)d(call)f(to)i
(broadcast)h(on)e(pro)r(cess)h(one.)p eop
%%Trailer
end
userdict /end-hook known{end-hook}if
%%EOF
From owner-mpi-comm@CS.UTK.EDU  Wed Apr 21 11:56:15 1993
Received: from CS.UTK.EDU by surfer.EPM.ORNL.GOV (5.61/1.34)
	id AA01628; Wed, 21 Apr 93 11:56:15 -0400
Received: from localhost by CS.UTK.EDU with SMTP (5.61+IDA+UTK-930125/2.8s-UTK)
	id AA29787; Wed, 21 Apr 93 11:53:34 -0400
X-Resent-To: mpi-comm@CS.UTK.EDU ; Wed, 21 Apr 1993 11:53:27 EDT
Errors-To: owner-mpi-comm@CS.UTK.EDU
Received: from almaden.ibm.com by CS.UTK.EDU with SMTP (5.61+IDA+UTK-930125/2.8s-UTK)
	id AA29755; Wed, 21 Apr 93 11:52:26 -0400
Message-Id: <9304211552.AA29755@CS.UTK.EDU>
Received: from almaden.ibm.com by almaden.ibm.com (IBM VM SMTP V2R2)
   with BSMTP id 2750; Wed, 21 Apr 93 08:52:59 PDT
Date: Wed, 21 Apr 93 08:44:31 PDT
From: "Ching-Tien (Howard) Ho" <ho@almaden.ibm.com>
To: mpi-comm@cs.utk.edu
Subject: the CCL paper by Bala et al.

Hi,
  This is the postscript file of the CCL paper
I brought to the last MPI meeting (same version),
in case you missed a copy then.
It has appeared as an IBM Research Report RJ 9284, April 1993.
Let me know if you prefer to have a Latex file of it.
All comments are welcome.

Regards,

-- Howard

%!PS-Adobe-2.0
%%Creator: dvips 5.47 (RS/6000 1.0) Copyright 1986-91 Radical Eye Software
%%Title: CCL.dvi
%%Pages: 24 1
%%BoundingBox: 0 0 612 792
%%EndComments
%%BeginProcSet: tex.pro
/TeXDict 250 dict def TeXDict begin /N /def load def /B{bind def}N /S /exch
load def /X{S N}B /TR /translate load N /isls false N /vsize 10 N /@rigin{
isls{[0 1 -1 0 0 0]concat}if 72 Resolution div 72 VResolution div neg scale
Resolution VResolution vsize neg mul TR matrix currentmatrix dup dup 4 get
round 4 exch put dup dup 5 get round 5 exch put setmatrix}N /@letter{/vsize 10
N}B /@landscape{/isls true N /vsize -1 N}B /@a4{/vsize 10.6929133858 N}B /@a3{
/vsize 15.5531 N}B /@ledger{/vsize 16 N}B /@legal{/vsize 13 N}B /@manualfeed{
statusdict /manualfeed true put}B /@copies{/#copies X}B /FMat[1 0 0 -1 0 0]N
/FBB[0 0 0 0]N /nn 0 N /IE 0 N /ctr 0 N /df-tail{/nn 8 dict N nn begin
/FontType 3 N /FontMatrix fntrx N /FontBBox FBB N string /base X array
/BitMaps X /BuildChar{CharBuilder} N /Encoding IE N end dup{/foo setfont}2
array copy cvx N load 0 nn put /ctr 0 N[}B /df{/sf 1 N /fntrx FMat N df-tail}
B /dfs{div /sf X /fntrx[sf 0 0 sf neg 0 0]N df-tail}B /E{pop nn dup definefont
setfont}B /ch-width{ch-data dup length 5 sub get} B /ch-height{ch-data dup
length 4 sub get} B /ch-xoff{128 ch-data dup length 3 sub get sub} B /ch-yoff{
ch-data dup length 2 sub get 127 sub} B /ch-dx{ch-data dup length 1 sub get} B
/ch-image{ch-data dup type /stringtype ne{ctr get /ctr ctr 1 add N}if}B /id 0
N /rw 0 N /rc 0 N /gp 0 N /cp 0 N /G 0 N /sf 0 N /CharBuilder{save 3 1 roll S
dup /base get 2 index get S /BitMaps get S get /ch-data X pop /ctr 0 N ch-dx 0
ch-xoff ch-yoff ch-height sub ch-xoff ch-width add ch-yoff setcachedevice
ch-width ch-height true[1 0 0 -1 -.1 ch-xoff sub ch-yoff .1 add]{ch-image}
imagemask restore}B /D{/cc X dup type /stringtype ne{]}if nn /base get cc ctr
put nn /BitMaps get S ctr S sf 1 ne{dup dup length 1 sub dup 2 index S get sf
div put}if put /ctr ctr 1 add N}B /I{cc 1 add D}B /bop{userdict /bop-hook
known{bop-hook}if /SI save N @rigin 0 0 moveto}N /eop{clear SI restore
showpage userdict /eop-hook known{eop-hook}if}N /@start{userdict /start-hook
known{start-hook}if /VResolution X /Resolution X 1000 div /DVImag X /IE 256
array N 0 1 255{IE S 1 string dup 0 3 index put cvn put} for}N /p /show load N
/RMat[1 0 0 -1 0 0]N /BDot 260 string N /rulex 0 N /ruley 0 N /v{/ruley X
/rulex X V}B /V statusdict begin /product where{pop product dup length 7 ge{0
7 getinterval(Display)eq}{pop false}ifelse}{false}ifelse end{{gsave TR -.1 -.1
TR 1 1 scale rulex ruley false RMat{BDot}imagemask grestore}}{{gsave TR -.1
-.1 TR rulex ruley scale 1 1 false RMat{BDot}imagemask grestore}}ifelse B /a{
moveto}B /delta 0 N /tail{dup /delta X 0 rmoveto}B /M{S p delta add tail}B /b{
S p tail}B /c{-4 M}B /d{-3 M}B /e{-2 M}B /f{-1 M}B /g{0 M}B /h{1 M}B /i{2 M}B
/j{3 M}B /k{4 M}B /w{0 rmoveto}B /l{p -4 w}B /m{p -3 w}B /n{p -2 w}B /o{p -1 w
}B /q{p 1 w}B /r{p 2 w}B /s{p 3 w}B /t{p 4 w}B /x{0 S rmoveto}B /y{3 2 roll p
a}B /bos{/SS save N}B /eos{clear SS restore}B end
%%EndProcSet
%%BeginProcSet: special.pro
TeXDict begin /SDict 200 dict N SDict begin /@SpecialDefaults{/hs 612 N /vs
792 N /ho 0 N /vo 0 N /hsc 1 N /vsc 1 N /ang 0 N /CLIP false N /BBcalc false N
/p 3 def}B /@scaleunit 100 N /@hscale{@scaleunit div /hsc X}B /@vscale{
@scaleunit div /vsc X}B /@hsize{/hs X /CLIP true N}B /@vsize{/vs X /CLIP true
N}B /@hoffset{/ho X}B /@voffset{/vo X}B /@angle{/ang X}B /@rwi{10 div /rwi X}
B /@llx{/llx X}B /@lly{/lly X}B /@urx{/urx X}B /@ury{/ury X /BBcalc true N}B
/magscale true def end /@MacSetUp{userdict /md known{userdict /md get type
/dicttype eq{md begin /letter{}N /note{}N /legal{}N /od{txpose 1 0 mtx
defaultmatrix dtransform S atan/pa X newpath clippath mark{transform{
itransform moveto}}{transform{itransform lineto}}{6 -2 roll transform 6 -2
roll transform 6 -2 roll transform{itransform 6 2 roll itransform 6 2 roll
itransform 6 2 roll curveto}}{{closepath}}pathforall newpath counttomark array
astore /gc xdf pop ct 39 0 put 10 fz 0 fs 2 F/|______Courier fnt invertflag{
PaintBlack}if}N /txpose{pxs pys scale ppr aload pop por{noflips{pop S neg S TR
pop 1 -1 scale}if xflip yflip and{pop S neg S TR 180 rotate 1 -1 scale ppr 3
get ppr 1 get neg sub neg ppr 2 get ppr 0 get neg sub neg TR}if xflip yflip
not and{pop S neg S TR pop 180 rotate ppr 3 get ppr 1 get neg sub neg 0 TR}if
yflip xflip not and{ppr 1 get neg ppr 0 get neg TR}if}{noflips{TR pop pop 270
rotate 1 -1 scale}if xflip yflip and{TR pop pop 90 rotate 1 -1 scale ppr 3 get
ppr 1 get neg sub neg ppr 2 get ppr 0 get neg sub neg TR}if xflip yflip not
and{TR pop pop 90 rotate ppr 3 get ppr 1 get neg sub neg 0 TR}if yflip xflip
not and{TR pop pop 270 rotate ppr 2 get ppr 0 get neg sub neg 0 S TR}if}
ifelse scaleby96{ppr aload pop 4 -1 roll add 2 div 3 1 roll add 2 div 2 copy
TR .96 dup scale neg S neg S TR}if}N /cp{pop pop showpage pm restore}N end}if}
if}N /normalscale{Resolution 72 div VResolution 72 div neg scale magscale{
DVImag dup scale}if}N /psfts{S 65536 div N}N /startTexFig{/psf$SavedState save
N userdict maxlength dict begin /magscale false def normalscale currentpoint
TR /psf$ury psfts /psf$urx psfts /psf$lly psfts /psf$llx psfts /psf$y psfts
/psf$x psfts currentpoint /psf$cy X /psf$cx X /psf$sx psf$x psf$urx psf$llx
sub div N /psf$sy psf$y psf$ury psf$lly sub div N psf$sx psf$sy scale psf$cx
psf$sx div psf$llx sub psf$cy psf$sy div psf$ury sub TR /showpage{}N
/erasepage{}N /copypage{}N /p 3 def @MacSetUp}N /doclip{psf$llx psf$lly
psf$urx psf$ury currentpoint 6 2 roll newpath 4 copy 4 2 roll moveto 6 -1 roll
S lineto S lineto S lineto closepath clip newpath moveto}N /endTexFig{end
psf$SavedState restore}N /@beginspecial{SDict begin /SpecialSave save N gsave
normalscale currentpoint TR @SpecialDefaults}N /@setspecial{CLIP{newpath 0 0
moveto hs 0 rlineto 0 vs rlineto hs neg 0 rlineto closepath clip}if ho vo TR
hsc vsc scale ang rotate BBcalc{rwi urx llx sub div dup scale llx neg lly neg
TR}if /showpage{}N /erasepage{}N /copypage{}N newpath}N /@endspecial{grestore
clear SpecialSave restore end}N /@defspecial{SDict begin}N /@fedspecial{end}B
/li{lineto}B /rl{rlineto}B /rc{rcurveto}B /np{/SaveX currentpoint /SaveY X N 1
setlinecap newpath}N /st{stroke SaveX SaveY moveto}N /fil{fill SaveX SaveY
moveto}N /ellipse{/endangle X /startangle X /yrad X /xrad X /savematrix matrix
currentmatrix N TR xrad yrad scale 0 0 1 startangle endangle arc savematrix
setmatrix}N end
%%EndProcSet
TeXDict begin 1000 300 300 @start /Fa 1 108 df<3C000C000C00180018001800187031
903230340038007F00618061906190C1A0C0C00C117E9010>107 D E /Fb
6 116 df<07C00C20107020706000C000C000C00080008000C010C02060C03F000C0E7E8D0F>
99 D<00180038001000000000000000000000000001C0022004300430086000600060006000C0
00C000C000C001800180018001806300E300C60078000D1D80960E>106
D<1F0006000600060006000C000C000C000C00181C1866188E190C32003C003F00318060C060C4
60C460C8C0C8C0700F177E9612>I<383C0044C6004702004602008E06000C06000C06000C0C00
180C00180C40181840181880300880300F00120E7F8D15>110 D<38F04518463846308C000C00
0C000C001800180018001800300030000D0E7F8D10>114 D<07C00C201870187038001E000FC0
03E000606060E060C0C0C1803F000C0E7E8D10>I E /Fc 18 122 df<03CC0E2E181C381C301C
701CE038E038E038E038C072C072C07260F261341E180F107C8F14>97 D<7E000E000E000E001C
001C001C001C00380038003BC03C307830701870187018E038E038E038E038C070C060C0E060C0
63801E000D1A7C9912>I<01F006080C181838301070006000E000E000E000E000E008E0106020
30C01F000D107C8F12>I<001F80000380000380000380000700000700000700000700000E0000
0E0003CE000E2E00181C00381C00301C00701C00E03800E03800E03800E03800C07200C07200C0
720060F2006134001E1800111A7C9914>I<01E006181C08380870087010FFE0E000E000E000E0
00E0086010602030C01F000D107C8F12>I<00F300038B800607000E07000C07001C0700380E00
380E00380E00380E00301C00301C00301C00183C0018780007B800003800003800007000607000
E0E000C1C0007F000011177E8F12>103 D<1F8000038000038000038000070000070000070000
0700000E00000E00000E7C000F86001E07001E07001C07001C0700380E00380E00380E00381C00
701C80701C80703880703900E01900600E00111A7E9914>I<030706000000000000384C4E8E9C
9C1C3838707272E2E4643808197C980C>I<1F8003800380038007000700070007000E000E000E
0E0E131C271C431C801F003C003F8039C038E070E270E270E270E4E0646038101A7E9912>107
D<3F0707070E0E0E0E1C1C1C1C3838383870707070E4E4E4E46830081A7D990A>I<307C005986
009E07009E07009C07009C0700380E00380E00380E00381C00701C80701C80703880703900E019
00600E0011107C8F16>110 D<01F006180C0C180E300E700E600EE00EE00EE00CE01CE018E030
606030C01F000F107C8F14>I<030F000590C009E0C009C06009C06009C0600380E00380E00380
E00380E00701C00701800703800703000E8E000E78000E00000E00001C00001C00001C00001C00
00FF00001317808F14>I<30F059189E389C189C009C0038003800380038007000700070007000
E00060000D107C8F10>114 D<03E004300830187018601C001F801FC00FE000E00060E060E060
80C041803E000C107D8F10>I<06000E000E000E000E001C001C00FFC01C003800380038003800
7000700070007000E100E100E100E200640038000A177C960D>I<38064C074E0E8E0E9C0E9C0E
1C1C381C381C381C7039703970393079389A0F0C10107C8F15>I<38064C074E0E8E0E9C0E9C0E
1C1C381C381C381C703870387038307838F00F700070006060E0E1C0C18047003C0010177C8F13
>121 D E /Fd 19 120 df<00FC000182000703000607000E02000E00000E00000E00000E0000
0E0000FFFF000E07000E07000E07000E07000E07000E07000E07000E07000E07000E07000E0700
0E07000E07000E07007F0FE0131A809915>12 D<60F0F06004047D830B>46
D<0FC21836200E6006C006C002C002C002E00070007E003FE01FF807FC003E000E000700038003
80038003C002C006E004D81887E0101A7E9915>83 D<3F8070C070E020700070007007F01C7030
707070E070E071E071E0F171FB1E3C10107E8F13>97 D<07F80C1C381C30087000E000E000E000
E000E000E0007000300438080C1807E00E107F8F11>99 D<007E00000E00000E00000E00000E00
000E00000E00000E00000E00000E0003CE000C3E00380E00300E00700E00E00E00E00E00E00E00
E00E00E00E00E00E00600E00700E00381E001C2E0007CFC0121A7F9915>I<07C01C3030187018
600CE00CFFFCE000E000E000E0006000300438080C1807E00E107F8F11>I<01F0031807380E10
0E000E000E000E000E000E00FFC00E000E000E000E000E000E000E000E000E000E000E000E000E
000E007FE00D1A80990C>I<FC00001C00001C00001C00001C00001C00001C00001C00001C0000
1C00001CF8001D0C001E0E001E0E001C0E001C0E001C0E001C0E001C0E001C0E001C0E001C0E00
1C0E001C0E001C0E00FF9FC0121A7F9915>104 D<18003C003C00180000000000000000000000
0000FC001C001C001C001C001C001C001C001C001C001C001C001C001C001C00FF80091A80990A
>I<FC7C1F001D8E63801E0781C01E0781C01C0701C01C0701C01C0701C01C0701C01C0701C01C
0701C01C0701C01C0701C01C0701C01C0701C01C0701C0FF9FE7F81D107F8F20>109
D<FCF8001D0C001E0E001E0E001C0E001C0E001C0E001C0E001C0E001C0E001C0E001C0E001C0E
001C0E001C0E00FF9FC012107F8F15>I<07E01C38300C700E6006E007E007E007E007E007E007
6006700E381C1C3807E010107F8F13>I<FCE01D701E701E201C001C001C001C001C001C001C00
1C001C001C001C00FFC00C107F8F0F>114 D<1F2060E04020C020C020F0007F003FC01FE000F0
80708030C030C020F0408F800C107F8F0F>I<0400040004000C000C001C003C00FFC01C001C00
1C001C001C001C001C001C001C201C201C201C201C200E4003800B177F960F>I<FC7E001C0E00
1C0E001C0E001C0E001C0E001C0E001C0E001C0E001C0E001C0E001C0E001C0E001C1E000C2E00
07CFC012107F8F15>I<FF1F803C06001C04001C04001E0C000E08000E08000710000710000790
0003A00003A00001C00001C00001C00000800011107F8F14>I<FF3F9F803C0E0700380E06001C
1604001C1704001E170C000E2308000E2388000F239800074190000741D00003C1E0000380E000
0380E0000180C0000100400019107F8F1C>I E /Fe 2 51 df<0C003C00CC000C000C000C000C
000C000C000C000C000C000C000C000C00FF8009107E8F0F>49 D<1F00618040C08060C0600060
006000C00180030006000C00102020207FC0FFC00B107F8F0F>I E /Ff
4 52 df<003000003000003000003000003000003000003000003000003000003000003000FFFF
FCFFFFFC0030000030000030000030000030000030000030000030000030000030000030001618
7E931B>43 D<03000700FF00070007000700070007000700070007000700070007000700070007
000700070007007FF00C157E9412>49 D<0F8030E040708030C038E03840380038007000700060
00C00180030006000C08080810183FF07FF0FFF00D157E9412>I<0FE030306018701C701C001C
00180038006007E000300018000C000E000EE00EE00EC00C401830300FE00F157F9412>I
E /Fg 8 83 df<07F0001FFE00383F007C1F80FE0FC0FE0FC0FE0FE0FE07E07C07E03807E0000F
E0000FC0000FC0001F80001F00003E0000780000F00000E00001C0000380600700600E00601C00
E01FFFC03FFFC07FFFC0FFFFC0FFFFC0131D7D9C1A>50 D<FFFFFE0000FFFFFFC00007E007F000
07E001F80007E000FC0007E0007E0007E0003F0007E0003F0007E0001F8007E0001F8007E0001F
8007E0001FC007E0001FC007E0001FC007E0001FC007E0001FC007E0001FC007E0001FC007E000
1FC007E0001FC007E0001F8007E0001F8007E0001F8007E0003F0007E0003F0007E0007E0007E0
00FC0007E001F80007E007F000FFFFFFC000FFFFFE0000221F7E9E28>68
D<FFFFFFE0FFFFFFE007E007E007E001E007E000E007E0006007E0007007E0003007E0003007E0
603007E0603007E0600007E0E00007E1E00007FFE00007FFE00007E1E00007E0E00007E0600007
E0600007E0600007E0000007E0000007E0000007E0000007E0000007E0000007E0000007E00000
FFFF8000FFFF80001C1F7E9E21>70 D<0007FC0200003FFF0E0000FE03DE0003F000FE0007E000
3E000FC0001E001F80001E003F00000E003F00000E007F000006007E000006007E00000600FE00
000000FE00000000FE00000000FE00000000FE00000000FE003FFFE0FE003FFFE07E00007E007E
00007E007F00007E003F00007E003F00007E001F80007E000FC0007E0007E0007E0003F000FE00
00FE01FE00003FFF8E000007FC0600231F7D9E29>I<FFFFFFFF07E007E007E007E007E007E007
E007E007E007E007E007E007E007E007E007E007E007E007E007E007E007E007E007E007E007E0
07E0FFFFFFFF101F7E9E14>73 D<FFE000003FF8FFF000007FF807F000007F0006F80000DF0006
F80000DF0006F80000DF00067C00019F00067C00019F00063E00031F00063E00031F00061F0006
1F00061F00061F00060F800C1F00060F800C1F000607C0181F000607C0181F000607C0181F0006
03E0301F000603E0301F000601F0601F000601F0601F000600F8C01F000600F8C01F0006007D80
1F0006007D801F0006003F001F0006003F001F0006003F001F0006001E001F00FFF01E03FFF8FF
F00C03FFF82D1F7E9E32>77 D<001FF80000FFFF0001F81F8007E007E00FC003F01F8001F81F00
00F83F0000FC7F0000FE7E00007E7E00007EFE00007FFE00007FFE00007FFE00007FFE00007FFE
00007FFE00007FFE00007FFE00007F7E00007E7F0000FE7F0000FE3F0000FC3F8001FC1F8001F8
0FC003F007E007E001F81F8000FFFF00001FF800201F7D9E27>79 D<FFFFF80000FFFFFF000007
E01FC00007E007E00007E003F00007E003F00007E003F80007E003F80007E003F80007E003F800
07E003F00007E003F00007E007E00007E01FC00007FFFF000007FFFC000007E03E000007E01F00
0007E00F800007E00F800007E00FC00007E00FC00007E00FC00007E00FE00007E00FE00007E00F
E00007E00FE03007E007F03007E003F860FFFF01FFC0FFFF007F80241F7E9E27>82
D E /Fh 61 122 df<001000000800000400000600000200000300000300000300000100000180
000180000180000180000180000180000180000380000380000380000300000300000300000700
000700000600000600000E00000C00000C00001C0000180000380000300000700000600000E000
00C0000180000100000300000600000C0000180000300000600000800000112E80A113>41
D<1C3C3C3C3C040408081020204080060E7D840E>44 D<7FF0FFE07FE00C037D8A10>I<70F8F8
F0E005057B840E>I<00000040000000C000000180000001800000030000000300000006000000
060000000C0000001800000018000000300000003000000060000000C0000000C0000001800000
018000000300000003000000060000000C0000000C000000180000001800000030000000300000
0060000000C0000000C0000001800000018000000300000003000000060000000C0000000C0000
001800000018000000300000003000000060000000C0000000C0000000800000001A2D7FA117>
I<000F800030E000E07001C0700380300380380700380F00780F00780E00781E00781E00703C00
F03C00F03C00F03C00F07801E07801E07801E07801C07003C0F003C0F00380F00780F007007007
00700E00701C003038001870000FC000151F7C9D17>I<000200020006000E003C00DC031C001C
0038003800380038007000700070007000E000E000E000E001C001C001C001C003800380038003
800780FFF80F1E7B9D17>I<001F000061800080E00100E00200700220700420700410700820F0
0820F00820F00840E00881E00703C0000380000700000C00001800006000008000030000040000
0800401000401000802001807E030047FF0041FE0080FC00807800141F7C9D17>I<001F800060
E00080700100300200380420380420380410380420700460700380600000E00001C000030000FE
00001C00000600000700000780000780000780300780780780780780F00F00800F00401E00401C
0040380020E0001F8000151F7C9D17>I<0000600000E00000E00000E00001C00001C00001C000
0380000380000300000700000700000600000E00000C0000180000180000300000300000630000
C700008700010700030700060E00040E00080E003F8E00607C00801FC0001C00001C0000380000
380000380000380000700000700000600013277E9D17>I<00C06000FFC001FF8001FE00010000
010000020000020000020000020000040000047800058C000606000C0700080700000780000780
000780000780000F00700F00F00F00F00E00E01E00801C0080380080300040600061C0001F0000
131F7B9D17>I<08E0100BF01017F8201FF8603E19C0380E802000806001004003008003000006
00000E00000C00001C00001C0000380000380000700000700000F00000F00001E00001E00001E0
0003C00003C00003C00007C000078000078000030000141F799D17>55 D<001F000061800080C0
0100600300600600600600600600600E00C00F00800F818007C30007E40003F80001F80003FC00
047E00183F00300F00200700600700C00300C00300C00300800600800600C00C00C00800403000
3060001F8000131F7B9D17>I<001F0000718000C0C00180C00380E00700E00F00E00F01E01E01
E01E01E01E01E01E01C01C03C01C03C01C03C01C07C01C0F800C0F8006378003C700000F00000E
00000E00001C00601C00F03800F07000E0600080C0004380003E0000131F7B9D17>I<070F1F1F
0E0000000000000000000070F8F8F0E008147B930E>I<00000200000006000000060000000E00
00001E0000001E0000003F0000002F0000004F0000004F0000008F0000010F0000010F0000020F
0000020F0000040F00000C0F0000080F0000100F0000100F0000200F80003FFF800040078000C0
07800080078001000780010007800200078002000780060007801E000F80FF807FF81D207E9F22
>65 D<01FFFFC0001E00F0001E0078001E0038001E003C003C003C003C003C003C003C003C003C
0078007800780078007800F0007801E000F0078000FFFE0000F00F8000F003C001E001C001E001
E001E001E001E001E003C001E003C001E003C001E003C001C0078003C00780078007800F000780
1E000F007800FFFFE0001E1F7D9E20>I<0000FE0200078186001C004C0038003C0060003C00C0
001C01C0001803800018070000180F0000181E0000101E0000103C0000003C0000007800000078
0000007800000078000000F0000000F0000000F0000000F0000000F00000807000008070000080
700001003800010038000200180004000C001800060020000381C00000FE00001F217A9F21>I<
01FFFF80001E00E0001E0070001E0038001E001C003C001C003C000E003C000E003C000E007800
0E0078000E0078000E0078000E00F0001E00F0001E00F0001E00F0001E01E0003C01E0003C01E0
003C01E0007803C0007003C0007003C000E003C001C0078001C00780038007800E0007801C000F
007000FFFFC0001F1F7D9E22>I<01FFFFFE001E001C001E000C001E0004001E0004003C000400
3C0004003C0004003C00040078080800780800007808000078180000F0300000FFF00000F03000
00F0300001E0200001E0200001E0200001E0001003C0002003C0002003C0004003C00040078000
800780018007800100078007000F001F00FFFFFE001F1F7D9E1F>I<01FFFFFC001E0038001E00
18001E0008001E0008003C0008003C0008003C0008003C00080078001000780800007808000078
080000F0100000F0300000FFF00000F0300001E0200001E0200001E0200001E0200003C0000003
C0000003C0000003C00000078000000780000007800000078000000F800000FFF800001E1F7D9E
1E>I<0000FC040007030C001C00980030007800E0007801C00038038000300380003007000030
0E0000301E0000201E0000203C0000003C00000078000000780000007800000078000000F00000
00F000FFF0F0000780F0000780F0000F0070000F0070000F0070000F0070001E0038001E001800
3E001C002E000E00CC000383040000FC00001E217A9F23>I<01FFF3FFE0001F003E00001E003C
00001E003C00001E003C00003C007800003C007800003C007800003C007800007800F000007800
F000007800F000007800F00000F001E00000FFFFE00000F001E00000F001E00001E003C00001E0
03C00001E003C00001E003C00003C007800003C007800003C007800003C007800007800F000007
800F000007800F000007800F00000F801F0000FFF1FFE000231F7D9E22>I<01FFF0001F00001E
00001E00001E00003C00003C00003C00003C0000780000780000780000780000F00000F00000F0
0000F00001E00001E00001E00001E00003C00003C00003C00003C0000780000780000780000780
000F8000FFF800141F7D9E12>I<001FFF0000F80000F00000F00000F00001E00001E00001E000
01E00003C00003C00003C00003C0000780000780000780000780000F00000F00000F00000F0000
1E00001E00301E00781E00F83C00F83C00F0780080700040E00021C0001F000018207D9E18>I<
01FFF800001F0000001E0000001E0000001E0000003C0000003C0000003C0000003C0000007800
0000780000007800000078000000F0000000F0000000F0000000F0000001E0000001E0000001E0
000001E0008003C0010003C0010003C0030003C00200078006000780060007800C0007801C000F
007800FFFFF800191F7D9E1D>76 D<01FE00007FC0001E0000FC00001E0000F800001700017800
00170001780000270002F00000270004F00000270004F00000270008F00000470009E000004700
11E00000470021E00000470021E00000870043C00000838043C00000838083C00000838083C000
0103810780000103820780000103820780000103840780000203840F00000203880F0000020390
0F00000203900F00000401E01E00000401E01E00000401C01E00000C01801E00001C01803E0000
FF8103FFC0002A1F7D9E29>I<01FF007FE0001F000F00001F0004000017800400001780040000
278008000023C008000023C008000023C008000041E010000041E010000041F010000040F01000
0080F0200000807820000080782000008078200001003C400001003C400001003C400001001E40
0002001E800002001E800002000F800002000F800004000F0000040007000004000700000C0007
00001C00020000FF80020000231F7D9E22>I<0001FC0000070700001C01C0003000E000E00060
01C000700380007007800038070000380E0000381E0000381C0000383C0000383C000038780000
78780000787800007878000078F00000F0F00000F0F00000E0F00001E0F00001C0F00003C07000
03807000070078000F0038001E0038003C001C0070000E00E0000783800001FC00001D217A9F23
>I<01FFFF80001E00E0001E0070001E0038001E003C003C003C003C003C003C003C003C003C00
78007800780078007800F0007800E000F003C000F00F0000FFFC0000F0000001E0000001E00000
01E0000001E0000003C0000003C0000003C0000003C00000078000000780000007800000078000
000F800000FFF000001E1F7D9E1F>I<01FFFF00001E03C0001E00E0001E0070001E0078003C00
78003C0078003C0078003C0078007800F0007800F0007801E0007801C000F0070000F01E0000FF
F00000F0380001E01C0001E01E0001E00E0001E00F0003C01E0003C01E0003C01E0003C01E0007
803C0007803C0807803C0807803C100F801C10FFF00C20000007C01D207D9E21>82
D<0007E040001C18C0003005800060038000C0038001C001800180010003800100038001000380
01000380000003C0000003C0000003F8000001FF800001FFE000007FF000001FF0000001F80000
00780000007800000038000000380020003800200038002000300060007000600060006000E000
7000C000E8038000C606000081F800001A217D9F1A>I<0FFFFFF01E0780E01807802010078020
20078020200F0020600F0020400F0020400F0020801E0040001E0000001E0000001E0000003C00
00003C0000003C0000003C00000078000000780000007800000078000000F0000000F0000000F0
000000F0000001E0000001E0000001E0000001E0000003E00000FFFF00001C1F789E21>I<7FFC
1FF807C003C00780010007800100078001000F0002000F0002000F0002000F0002001E0004001E
0004001E0004001E0004003C0008003C0008003C0008003C000800780010007800100078001000
78001000F0002000F0002000F0002000F0004000F0004000700080007001000030020000380400
000C18000007E000001D20779E22>I<FFF007FC0F8000E00F0000C00F0000800F0001000F0001
000F0002000F0004000F0004000F80080007800800078010000780200007802000078040000780
400007808000078100000781000007C2000003C2000003C4000003C8000003C8000003D0000003
D0000003E0000003C0000003C000000380000001800000010000001E20779E22>I<FFF1FFC0FF
801F003E001C001F003C0018001F003C0010000F003C0010000F003C0020000F003C0020000F00
3E0040000F003E00C0000F005E0080000F005E0100000F009E0100000F019E0200000F011E0200
000F021E0400000F021E0400000F041E0800000F041E0800000F081E1000000F081E3000000F10
1E2000000F101E4000000F201E4000000F601E8000000FC01E80000007801F00000007801F0000
0007001E00000007001E00000006000C0000000600080000000400080000002920779E2D>I<00
FFF07FE0000F801F00000F001C00000F801000000780300000078020000007C040000003C08000
0003C100000003E200000001E400000001EC00000001F800000000F000000000F800000000F800
000000F8000000017C000000023C000000063C000000043E000000081E000000101E000000201F
000000400F000000800F000001800F8000010007800007000780001F000FC000FFC07FF800231F
7E9E22>I<00F1800389C00707800E03801C03803C0380380700780700780700780700F00E00F0
0E00F00E00F00E20F01C40F01C40703C40705C40308C800F070013147C9317>97
D<07803F8007000700070007000E000E000E000E001C001C001CF01D0C3A0E3C0E380F380F700F
700F700F700FE01EE01EE01EE01CE03CE038607060E031C01F0010207B9F15>I<007E0001C100
0300800E07801E07801C07003C0200780000780000780000F00000F00000F00000F00000F00000
70010070020030040018380007C00011147C9315>I<0000780003F80000700000700000700000
700000E00000E00000E00000E00001C00001C000F1C00389C00707800E03801C03803C03803807
00780700780700780700F00E00F00E00F00E00F00E20F01C40F01C40703C40705C40308C800F07
0015207C9F17>I<007C01C207010E011C013C013802780C7BF07C00F000F000F000F000700070
0170023804183807C010147C9315>I<00007800019C00033C00033C000718000700000700000E
00000E00000E00000E00000E0001FFE0001C00001C00001C00001C000038000038000038000038
0000380000700000700000700000700000700000700000E00000E00000E00000E00000C00001C0
0001C0000180003180007B0000F300006600003C00001629829F0E>I<003C6000E27001C1E003
80E00700E00F00E00E01C01E01C01E01C01E01C03C03803C03803C03803C03803C07003C07001C
0F001C17000C2E0003CE00000E00000E00001C00001C00301C00783800F0700060E0003F800014
1D7E9315>I<01E0000FE00001C00001C00001C00001C000038000038000038000038000070000
070000071E000763000E81800F01C00E01C00E01C01C03801C03801C03801C0380380700380700
380700380E10700E20700C20701C20700C40E00CC060070014207D9F17>I<00C001E001E001C0
00000000000000000000000000000E003300230043804300470087000E000E000E001C001C001C
003840388030807080310033001C000B1F7C9E0E>I<01E0000FE00001C00001C00001C00001C0
000380000380000380000380000700000700000703C00704200E08E00E11E00E21E00E40C01C80
001D00001E00001FC00038E000387000387000383840707080707080707080703100E03100601E
0013207D9F15>107 D<03C01FC0038003800380038007000700070007000E000E000E000E001C
001C001C001C0038003800380038007000700070007100E200E200E200E200640038000A207C9F
0C>I<1C0F80F0002630C318004740640C004780680E004700700E004700700E008E00E01C000E
00E01C000E00E01C000E00E01C001C01C038001C01C038001C01C038001C01C070803803807100
3803806100380380E10038038062007007006600300300380021147C9325>I<1C0F802630C047
40604780604700704700708E00E00E00E00E00E00E00E01C01C01C01C01C01C01C038438038838
03083807083803107003303001C016147C931A>I<007C0001C3000301800E01C01E01C01C01E0
3C01E07801E07801E07801E0F003C0F003C0F003C0F00780F00700700F00700E00301800187000
07C00013147C9317>I<01C1E002621804741C04781C04701E04701E08E01E00E01E00E01E00E0
1E01C03C01C03C01C03C01C0380380780380700380E003C1C0072380071E000700000700000E00
000E00000E00000E00001C00001C0000FFC000171D809317>I<00F0400388C00705800E03801C
03803C0380380700780700780700780700F00E00F00E00F00E00F00E00F01C00F01C00703C0070
5C0030B8000F380000380000380000700000700000700000700000E00000E0000FFE00121D7C93
15>I<1C1E002661004783804787804707804703008E00000E00000E00000E00001C00001C0000
1C00001C000038000038000038000038000070000030000011147C9313>I<00FC030206010C03
0C070C060C000F800FF007F803FC003E000E700EF00CF00CE008401020601F8010147D9313>I<
018001C0038003800380038007000700FFF007000E000E000E000E001C001C001C001C00380038
0038003820704070407080708031001E000C1C7C9B0F>I<0E00C03300E02301C04381C04301C0
4701C08703800E03800E03800E03801C07001C07001C07001C07101C0E20180E20180E201C1E20
0C264007C38014147C9318>I<0E03803307802307C04383C04301C04700C08700800E00800E00
800E00801C01001C01001C01001C02001C02001C04001C04001C08000E300003C00012147C9315
>I<0E00C1C03300E3C02301C3E04381C1E04301C0E04701C060870380400E0380400E0380400E
0380401C0700801C0700801C0700801C0701001C0701001C0602001C0F02000C0F04000E130800
03E1F0001B147C931E>I<0383800CC4401068E01071E02071E02070C040E00000E00000E00000
E00001C00001C00001C00001C040638080F38080F38100E5810084C60078780013147D9315>I<
0E00C03300E02301C04381C04301C04701C08703800E03800E03800E03801C07001C07001C0700
1C07001C0E00180E00180E001C1E000C3C0007DC00001C00001C00003800F03800F07000E06000
C0C0004380003E0000131D7C9316>I E /Fi 14 113 df<FFFFFFC0FFFFFFC01A027C8B23>0
D<70F8F8F87005057C8D0D>I<400004C0000C6000183000301800600C00C00601800303000186
0000CC0000780000300000300000780000CC000186000303000601800C00C01800603000306000
18C0000C40000416187A9623>I<00020000000600000006000000060000000600000006000000
0600000006000000060000000600000006000000060000000600000006000000060000FFFFFFF0
FFFFFFF00006000000060000000600000006000000060000000600000006000000060000000600
0000060000000600000006000000060000FFFFFFF0FFFFFFF01C207D9E23>6
D<03C00FF01FF83FFC7FFE7FFEFFFFFFFFFFFFFFFFFFFFFFFF7FFE7FFE3FFC1FF80FF003C01012
7D9317>15 D<000000C0000003C000000F0000003C000000F0000003C00000070000001C000000
78000001E00000078000001E00000078000000E0000000780000001E0000000780000001E00000
00780000001C0000000700000003C0000000F00000003C0000000F00000003C0000000C0000000
000000000000000000000000000000000000000000000000007FFFFF80FFFFFFC01A247C9C23>
20 D<0FC000101FF000103FF80010703E0030E00F0070C007C0E08001FFC08000FF8080003F00
00000000000000000FC000101FF000103FF80010703E0030E00F0070C007C0E08001FFC08000FF
8080003F001C147D9523>25 D<003FF800FFF803C0000700000C00001800003000003000006000
00600000C00000C00000C00000FFFFF8FFFFF8C00000C00000C000006000006000003000003000
001800000C000007000003C00000FFF8003FF8151C7C981E>50 D<00FE0003FF800F01E01C0070
30001860000C60000CC00006C00006C00006C00006C00006C00006C00006C00006C00006C00006
C00006C00006C00006C00006C00006C00006C00006C00006C00006C00006400002171C7D9A1E>
92 D<7FE0FFE0C000C000C000C000C000C000C000C000C000C000C000C000C000C000C000C000
C000C000C000C000C000C000C000C000C000C000C000C000C000C000C000C000C000C000C000C0
00C000C000C000C000C000C000C00040000B2E78A114>100 D<FFE0FFE0006000600060006000
600060006000600060006000600060006000600060006000600060006000600060006000600060
006000600060006000600060006000600060006000600060006000600060006000600060006000
200B2E80A114>I<000F0038006000E001C001C001C001C001C001C001C001C001C001C001C001
C001C001C001C0038007001E00F8001E000700038001C001C001C001C001C001C001C001C001C0
01C001C001C001C001C001C000E000600038000F102D7DA117>I<F8001E000700038001C001C0
01C001C001C001C001C001C001C001C001C001C001C001C001C000E000600038000F0038006000
E001C001C001C001C001C001C001C001C001C001C001C001C001C001C001C0038007001E00F800
102D7DA117>I<0000000008000000001800000000300000000030000000006000000000600000
0000C000000000C000000001800000000180000000030000000003000000000600000000060000
00000C000000000C00000000180000000018000000003000000000300000000060000000006000
000000C000060000C0001E000180002F000180004F000300008780030000078006000003C00600
0003C00C000003C00C000001E018000001E018000000F030000000F03000000078600000007860
0000003CC00000003CC00000001F800000001F800000000F000000000F00000000060000000006
000000252E7E8126>112 D E /Fj 22 117 df<70F8FCFC74040404080810102040060E7C840D>
59 D<000100030003000600060006000C000C000C001800180018003000300030006000600060
00C000C000C00180018001800300030003000600060006000C000C000C00180018001800300030
003000600060006000C000C000C000102D7DA117>61 D<E0000000780000001E00000007800000
01E0000000780000001C0000000700000003C0000000F00000003C0000000F00000003C0000003
C000000F0000003C000000F0000003C00000070000001C00000078000001E00000078000001E00
000078000000E00000001A1A7C9723>I<0000FE0200078186001C004C0038003C0060003C00C0
001C01C0001803800018070000180F0000181E0000101E0000103C0000003C0000007800000078
0000007800000078000000F0000000F0000000F0000000F0000000F00000807000008070000080
700001003800010038000200180004000C001800060020000381C00000FE00001F217E9F20>67
D<00007E0100038183000E00460038002E0070001E00E0000E01C0000C0380000C0700000C0F00
000C1E0000081E0000083C0000003C00000078000000780000007800000078000000F0000000F0
007FFCF00001E0F00001E0F00003C0700003C0700003C0700003C038000780380007801C000F80
0C000B80060033000380C100007F000020217E9F24>71 D<0001FC0000070700001C01C0003000
E000E0006001C000700380007007800038070000380E0000381E0000381C0000383C0000383C00
003878000078780000787800007878000078F00000F0F00000F0F00000E0F00001E0F00001C0F0
0003C0700003807000070078000F0038001E0038003C001C0070000E00E0000783800001FC0000
1D217E9F23>79 D<00FFFFC0000F0070000F0038000F001C000F001E001E001E001E001E001E00
1E001E001E003C003C003C003C003C0078003C0070007800E000780380007FFE000078000000F0
000000F0000000F0000000F0000001E0000001E0000001E0000001E0000003C0000003C0000003
C0000003C0000007C00000FFFC00001F1F7E9E1D>I<0007E0800018118000300B000060070000
C0070001C0030001800200038002000380020003800200038000000380000003C0000003F80000
03FF800001FFC00000FFE000003FF0000003F0000000F000000070000000700000007000200070
0020007000200060006000E0006000C0006001C00070018000E8030000C60E000081F800001921
7D9F1C>83 D<0FFFFFFC1E03C0381803C0181003C0082003C00820078008600780084007800840
078008800F0010000F0000000F0000000F0000001E0000001E0000001E0000001E0000003C0000
003C0000003C0000003C00000078000000780000007800000078000000F0000000F0000000F000
0000F0000001F000007FFFC0001E1F7F9E1B>I<00FFF83FF8000FC00F80000F80060000078004
000007C008000003C010000003C020000003E040000001E080000001F100000000F300000000F6
00000000FC0000000078000000007C000000007C000000007C00000000BE000000011E00000002
1E000000061F0000000C0F000000080F800000100780000020078000004007C000008003C00001
0003E000030003E0000F0007E000FFE01FFE00251F7F9E26>88 D<FFF801FF0F8000780F800060
0780004007C0008007C0018003C0010003E0020003E0040001E0080001F0180000F0100000F020
0000F8400000788000007D0000007D0000003E0000003C0000003C000000380000007800000078
0000007800000070000000F0000000F0000000F0000000F0000001E000003FFF0000201F7F9E1A
>I<00007C0000CE00019E00039E00030C000700000700000700000700000E00000E00000E0000
FFF0000E00000E00001C00001C00001C00001C00001C0000380000380000380000380000380000
700000700000700000700000700000E00000E00000E00000E00000C00001C000318000798000F3
00006200003C000017297E9F16>102 D<00E001E001E000C00000000000000000000000000000
0E00130023804380438043808700070007000E000E001C001C001C20384038403840388019000E
000B1F7E9E10>105 D<0000C00001E00001E00001C00000000000000000000000000000000000
00000000001E00006300004380008380010380010380020700000700000700000700000E00000E
00000E00000E00001C00001C00001C00001C000038000038000038000038000070000070003070
0078E000F1C0006380003E00001328819E13>I<01E0000FE00001C00001C00001C00001C00003
80000380000380000380000700000700000701E00706100E08700E10F00E20F00E40601C80001D
00001E00001FC000387000383800383800381C20703840703840703840701880E01880600F0014
207E9F18>I<1E07C07C00231861860023A032030043C034030043803803804380380380870070
07000700700700070070070007007007000E00E00E000E00E00E000E00E00E000E00E01C101C01
C01C201C01C038201C01C038401C01C0184038038018801801800F0024147E9328>109
D<1E07802318C023A06043C0704380704380708700E00700E00700E00700E00E01C00E01C00E01
C00E03821C03841C07041C07081C03083803101801E017147E931B>I<03C1E004621804741C08
781C08701E08701E10E01E00E01E00E01E00E01E01C03C01C03C01C03C01C03803807803807003
80E003C1C0072380071E000700000700000E00000E00000E00000E00001C00001C0000FFC00017
1D819317>112 D<00F0400388C00705800E03801C03803C0380380700780700780700780700F0
0E00F00E00F00E00F00E00F01C00F01C00703C00705C0030B8000F380000380000380000700000
700000700000700000E00000E0000FFE00121D7E9314>I<1E1E0023210023C38043C780438780
4383008700000700000700000700000E00000E00000E00000E00001C00001C00001C00001C0000
38000018000011147E9315>I<007C018203010603060706060E00078007F803FC01FE001F0007
7007F006F006E004400820301FC010147E9315>I<00C000E001C001C001C001C003800380FFF8
038007000700070007000E000E000E000E001C001C001C001C10382038203820384018800F000D
1C7F9B10>I E /Fk 45 123 df<000FF000007FFC0001F80E0003E01F0007C03F000F803F000F
803F000F801E000F800C000F8000000F8000000F8000000F800000FFFFFF00FFFFFF000F801F00
0F801F000F801F000F801F000F801F000F801F000F801F000F801F000F801F000F801F000F801F
000F801F000F801F000F801F000F801F000F801F000F801F000F801F007FF0FFE07FF0FFE01B23
7FA21F>12 D<387CFEFEFE7C3807077C8610>46 D<00180000780001F800FFF800FFF80001F800
01F80001F80001F80001F80001F80001F80001F80001F80001F80001F80001F80001F80001F800
01F80001F80001F80001F80001F80001F80001F80001F80001F80001F80001F8007FFFE07FFFE0
13207C9F1C>49 D<03FC000FFF003C1FC07007E07C07F0FE03F0FE03F8FE03F8FE01F87C01F838
03F80003F80003F00003F00007E00007C0000F80001F00003E0000380000700000E01801C01803
80180700180E00380FFFF01FFFF03FFFF07FFFF0FFFFF0FFFFF015207D9F1C>I<00FE0007FFC0
0F07E01E03F03F03F03F81F83F81F83F81F81F03F81F03F00003F00003E00007C0001F8001FE00
01FF000007C00001F00001F80000FC0000FC3C00FE7E00FEFF00FEFF00FEFF00FEFF00FC7E01FC
7801F81E07F00FFFC001FE0017207E9F1C>I<0000E00001E00003E00003E00007E0000FE0001F
E0001FE00037E00077E000E7E001C7E00187E00307E00707E00E07E00C07E01807E03807E07007
E0E007E0FFFFFEFFFFFE0007E00007E00007E00007E00007E00007E00007E000FFFE00FFFE1720
7E9F1C>I<1000201E01E01FFFC01FFF801FFF001FFE001FF8001BC00018000018000018000018
000019FC001FFF001E0FC01807E01803E00003F00003F00003F80003F83803F87C03F8FE03F8FE
03F8FC03F0FC03F07007E03007C01C1F800FFF0003F80015207D9F1C>I<000070000000007000
000000F800000000F800000000F800000001FC00000001FC00000003FE00000003FE00000003FE
00000006FF000000067F0000000E7F8000000C3F8000000C3F800000183FC00000181FC0000038
1FE00000300FE00000300FE00000600FF000006007F00000E007F80000FFFFF80000FFFFF80001
8001FC00018001FC00038001FE00030000FE00030000FE000600007F000600007F00FFE00FFFF8
FFE00FFFF825227EA12A>65 D<FFFFFF8000FFFFFFE00007F001F80007F000FC0007F0007E0007
F0007E0007F0007F0007F0007F0007F0007F0007F0007F0007F0007F0007F0007E0007F000FE00
07F000FC0007F003F80007FFFFF00007FFFFF00007F001FC0007F0007E0007F0003F0007F0003F
8007F0001F8007F0001FC007F0001FC007F0001FC007F0001FC007F0001FC007F0001FC007F000
3F8007F0003F8007F0007F0007F001FE00FFFFFFF800FFFFFFC00022227EA128>I<0003FE0080
001FFF818000FF01E38001F8003F8003E0001F8007C0000F800F800007801F800007803F000003
803F000003807F000001807E000001807E00000180FE00000000FE00000000FE00000000FE0000
0000FE00000000FE00000000FE00000000FE000000007E000000007E000001807F000001803F00
0001803F000003801F800003000F8000030007C000060003F0000C0001F800380000FF00F00000
1FFFC0000003FE000021227DA128>I<FFFFFF8000FFFFFFF00007F003FC0007F0007E0007F000
3F0007F0001F8007F0000FC007F00007E007F00007E007F00007F007F00003F007F00003F007F0
0003F007F00003F807F00003F807F00003F807F00003F807F00003F807F00003F807F00003F807
F00003F807F00003F807F00003F007F00003F007F00003F007F00007E007F00007E007F0000FC0
07F0001F8007F0003F0007F0007E0007F003FC00FFFFFFF000FFFFFF800025227EA12B>I<0003
FE0040001FFFC0C0007F00F1C001F8003FC003F0000FC007C00007C00FC00003C01F800003C03F
000001C03F000001C07F000000C07E000000C07E000000C0FE00000000FE00000000FE00000000
FE00000000FE00000000FE00000000FE00000000FE000FFFFC7E000FFFFC7F00001FC07F00001F
C03F00001FC03F00001FC01F80001FC00FC0001FC007E0001FC003F0001FC001FC003FC0007F80
E7C0001FFFC3C00003FF00C026227DA12C>71 D<FFFFE0FFFFE003F80003F80003F80003F80003
F80003F80003F80003F80003F80003F80003F80003F80003F80003F80003F80003F80003F80003
F80003F80003F80003F80003F80003F80003F80003F80003F80003F80003F80003F80003F800FF
FFE0FFFFE013227FA115>73 D<FFFFE000FFFFE00007F0000007F0000007F0000007F0000007F0
000007F0000007F0000007F0000007F0000007F0000007F0000007F0000007F0000007F0000007
F0000007F0000007F0000007F0000007F0000007F0001807F0001807F0001807F0001807F00038
07F0003807F0007007F0007007F000F007F001F007F007F0FFFFFFF0FFFFFFF01D227EA122>76
D<FFF000000FFFFFF800001FFF07F800001FE006FC000037E006FC000037E006FC000037E0067E
000067E0067E000067E0063F0000C7E0063F0000C7E0061F800187E0061F800187E0060FC00307
E0060FC00307E0060FC00307E00607E00607E00607E00607E00603F00C07E00603F00C07E00601
F81807E00601F81807E00601F81807E00600FC3007E00600FC3007E006007E6007E006007E6007
E006003FC007E006003FC007E006001F8007E006001F8007E006001F8007E006000F0007E0FFF0
0F00FFFFFFF00600FFFF30227EA135>I<FFF8001FFEFFFC001FFE07FC0000C007FE0000C006FF
0000C0067F8000C0063FC000C0061FE000C0060FE000C0060FF000C00607F800C00603FC00C006
01FE00C00600FE00C00600FF00C006007F80C006003FC0C006001FE0C006000FF0C0060007F0C0
060007F8C0060003FCC0060001FEC0060000FFC00600007FC00600007FC00600003FC00600001F
C00600000FC006000007C006000003C006000003C0FFF00001C0FFF00000C027227EA12C>I<00
07FC0000003FFF800000FC07E00003F001F80007E000FC000FC0007E001F80003F001F80003F00
3F00001F803F00001F807F00001FC07E00000FC07E00000FC0FE00000FE0FE00000FE0FE00000F
E0FE00000FE0FE00000FE0FE00000FE0FE00000FE0FE00000FE0FE00000FE07E00000FC07F0000
1FC07F00001FC03F00001F803F80003F801F80003F000FC0007E0007E000FC0003F001F80000FC
07E000003FFF80000007FC000023227DA12A>I<FFFFFF00FFFFFFE007F007F007F001FC07F000
FC07F0007E07F0007E07F0007F07F0007F07F0007F07F0007F07F0007F07F0007E07F0007E07F0
00FC07F001FC07F007F007FFFFE007FFFF0007F0000007F0000007F0000007F0000007F0000007
F0000007F0000007F0000007F0000007F0000007F0000007F0000007F00000FFFF8000FFFF8000
20227EA126>I<FFFFFE0000FFFFFFC00007F007F00007F001F80007F000FC0007F0007E0007F0
007F0007F0007F0007F0007F0007F0007F0007F0007F0007F0007F0007F0007E0007F000FC0007
F001F80007F007F00007FFFFC00007FFFF800007F00FE00007F007F00007F003F80007F001FC00
07F001FC0007F001FC0007F001FC0007F001FC0007F001FC0007F001FC0007F001FC0007F001FC
0607F000FE0607F000FF0CFFFF803FF8FFFF800FF027227EA12A>82 D<01FC0407FF8C1F03FC3C
007C7C003C78001C78001CF8000CF8000CFC000CFC0000FF0000FFE0007FFF007FFFC03FFFF01F
FFF80FFFFC03FFFE003FFE0003FF00007F00003F00003FC0001FC0001FC0001FE0001EE0001EF0
003CFC003CFF00F8C7FFE080FF8018227DA11F>I<7FFFFFFF807FFFFFFF807E03F80F807803F8
07807003F803806003F80180E003F801C0E003F801C0C003F800C0C003F800C0C003F800C0C003
F800C00003F800000003F800000003F800000003F800000003F800000003F800000003F8000000
03F800000003F800000003F800000003F800000003F800000003F800000003F800000003F80000
0003F800000003F800000003F800000003F800000003F8000003FFFFF80003FFFFF80022227EA1
27>I<FFFF803FFCFFFF803FFC07F000018007F000018007F000018007F000018007F000018007
F000018007F000018007F000018007F000018007F000018007F000018007F000018007F0000180
07F000018007F000018007F000018007F000018007F000018007F000018007F000018007F00001
8007F000018007F000018007F000018003F000030003F800030001F800060000FC000E00007E00
1C00003F80F800000FFFE0000001FF000026227EA12B>I<07FC001FFF803F07C03F03E03F01E0
3F01F01E01F00001F00001F0003FF003FDF01FC1F03F01F07E01F0FC01F0FC01F0FC01F0FC01F0
7E02F07E0CF81FF87F07E03F18167E951B>97 D<FF000000FF0000001F0000001F0000001F0000
001F0000001F0000001F0000001F0000001F0000001F0000001F0000001F0000001F0FE0001F3F
F8001FF07C001F801E001F001F001F000F801F000F801F000FC01F000FC01F000FC01F000FC01F
000FC01F000FC01F000FC01F000FC01F000F801F001F801F801F001FC03E001EE07C001C3FF800
180FC0001A237EA21F>I<00FF8007FFE00F83F01F03F03E03F07E03F07C01E07C0000FC0000FC
0000FC0000FC0000FC0000FC00007C00007E00007E00003E00301F00600FC0E007FF8000FE0014
167E9519>I<0001FE000001FE0000003E0000003E0000003E0000003E0000003E0000003E0000
003E0000003E0000003E0000003E0000003E0001FC3E0007FFBE000F81FE001F007E003E003E00
7E003E007C003E00FC003E00FC003E00FC003E00FC003E00FC003E00FC003E00FC003E00FC003E
007C003E007C003E003E007E001E00FE000F83BE0007FF3FC001FC3FC01A237EA21F>I<00FE00
07FF800F87C01E01E03E01F07C00F07C00F8FC00F8FC00F8FFFFF8FFFFF8FC0000FC0000FC0000
7C00007C00007E00003E00181F00300FC07003FFC000FF0015167E951A>I<003F8000FFC001E3
E003C7E007C7E00F87E00F83C00F80000F80000F80000F80000F80000F8000FFFC00FFFC000F80
000F80000F80000F80000F80000F80000F80000F80000F80000F80000F80000F80000F80000F80
000F80000F80000F80000F80007FF8007FF80013237FA211>I<03FC1E0FFF7F1F0F8F3E07CF3C
03C07C03E07C03E07C03E07C03E07C03E03C03C03E07C01F0F801FFF0013FC0030000030000038
00003FFF801FFFF00FFFF81FFFFC3800FC70003EF0001EF0001EF0001EF0001E78003C7C007C3F
01F80FFFE001FF0018217E951C>I<FF000000FF0000001F0000001F0000001F0000001F000000
1F0000001F0000001F0000001F0000001F0000001F0000001F0000001F07E0001F1FF8001F307C
001F403C001F803E001F803E001F003E001F003E001F003E001F003E001F003E001F003E001F00
3E001F003E001F003E001F003E001F003E001F003E001F003E001F003E00FFE1FFC0FFE1FFC01A
237EA21F>I<1C003F007F007F007F003F001C000000000000000000000000000000FF00FF001F
001F001F001F001F001F001F001F001F001F001F001F001F001F001F001F001F001F00FFE0FFE0
0B247EA310>I<FF000000FF0000001F0000001F0000001F0000001F0000001F0000001F000000
1F0000001F0000001F0000001F0000001F0000001F00FF801F00FF801F0038001F0060001F01C0
001F0380001F0700001F0E00001F1C00001F7E00001FFF00001FCF00001F0F80001F07C0001F03
E0001F01E0001F01F0001F00F8001F007C001F003C00FFE0FFC0FFE0FFC01A237EA21E>107
D<FF00FF001F001F001F001F001F001F001F001F001F001F001F001F001F001F001F001F001F00
1F001F001F001F001F001F001F001F001F001F001F001F001F001F00FFE0FFE00B237EA210>I<
FF07F007F000FF1FFC1FFC001F303E303E001F403E403E001F801F801F001F801F801F001F001F
001F001F001F001F001F001F001F001F001F001F001F001F001F001F001F001F001F001F001F00
1F001F001F001F001F001F001F001F001F001F001F001F001F001F001F001F001F001F001F001F
001F00FFE0FFE0FFE0FFE0FFE0FFE02B167E9530>I<FF07E000FF1FF8001F307C001F403C001F
803E001F803E001F003E001F003E001F003E001F003E001F003E001F003E001F003E001F003E00
1F003E001F003E001F003E001F003E001F003E001F003E00FFE1FFC0FFE1FFC01A167E951F>I<
00FE0007FFC00F83E01E00F03E00F87C007C7C007C7C007CFC007EFC007EFC007EFC007EFC007E
FC007EFC007E7C007C7C007C3E00F81F01F00F83E007FFC000FE0017167E951C>I<FF0FE000FF
3FF8001FF07C001F803E001F001F001F001F801F001F801F000FC01F000FC01F000FC01F000FC0
1F000FC01F000FC01F000FC01F000FC01F001F801F001F801F803F001FC03E001FE0FC001F3FF8
001F0FC0001F0000001F0000001F0000001F0000001F0000001F0000001F0000001F000000FFE0
0000FFE000001A207E951F>I<00FE030007FF87000FC1C7001F006F003F003F007E003F007E00
1F007C001F00FC001F00FC001F00FC001F00FC001F00FC001F00FC001F00FC001F007E001F007E
001F003E003F001F007F000FC1DF0007FF9F0001FC1F0000001F0000001F0000001F0000001F00
00001F0000001F0000001F0000001F000000FFE00000FFE01B207E951E>I<FE1F00FE3FC01E67
E01EC7E01E87E01E87E01F83C01F00001F00001F00001F00001F00001F00001F00001F00001F00
001F00001F00001F00001F0000FFF000FFF00013167E9517>I<0FF3003FFF00781F00600700E0
0300E00300F00300FC00007FE0007FF8003FFE000FFF0001FF00000F80C00780C00380E00380E0
0380F00700FC0E00EFFC00C7F00011167E9516>I<018000018000018000018000038000038000
0780000780000F80003F8000FFFF00FFFF000F80000F80000F80000F80000F80000F80000F8000
0F80000F80000F80000F80000F81800F81800F81800F81800F81800F830007C30003FE0000F800
11207F9F16>I<FF01FE00FF01FE001F003E001F003E001F003E001F003E001F003E001F003E00
1F003E001F003E001F003E001F003E001F003E001F003E001F003E001F003E001F003E001F007E
001F00FE000F81BE0007FF3FC001FC3FC01A167E951F>I<FFE01FE0FFE01FE00F8006000F8006
000FC00E0007C00C0007E01C0003E0180003E0180001F0300001F0300000F8600000F86000007C
C000007CC000007FC000003F8000003F8000001F0000001F0000000E0000000E00001B167F951E
>I<FFE7FF07F8FFE7FF07F81F007800C00F807801800F807C01800F807C018007C07E030007C0
DE030007E0DE070003E0DF060003E18F060001F18F0C0001F38F8C0001FB079C0000FB07D80000
FE03D800007E03F000007E03F000007C01F000003C01E000003800E000001800C00025167F9528
>I<7FFFF07FFFF07C03E07007C0600FC0E01F80C01F00C03E00C07E0000FC0000F80001F00003
F03007E03007C0300F80701F80703F00603E00E07C03E0FFFFE0FFFFE014167E9519>122
D E /Fl 61 126 df<007000F001E003C007800F001E001C00380038007000700070007000E000
E000E000E000E000E000E000E0007000700070007000380038001C001E000F00078003C001F000
F000700C24799F18>40 D<6000F00078003C001E000F000780038001C001C000E000E000E000E0
0070007000700070007000700070007000E000E000E000E001C001C0038007800F001E003C0078
00F00060000C247C9F18>I<01C00001C00001C00001C000C1C180F1C780F9CF807FFF001FFC00
07F00007F0001FFC007FFF00F9CF80F1C780C1C18001C00001C00001C00001C00011147D9718>
I<1C3E7E7F3F1F070E1E7CF860080C788518>44 D<7FFF00FFFF80FFFF807FFF0011047D8F18>
I<01F00007FC000FFE001F1F001C07003803807803C07001C07001C0E000E0E000E0E000E0E000
E0E000E0E000E0E000E0E000E0E000E0F001E07001C07001C07803C03803801C07001F1F000FFE
0007FC0001F000131C7E9B18>48 D<01800380038007800F803F80FF80FB804380038003800380
03800380038003800380038003800380038003800380038003807FFCFFFE7FFC0F1C7B9B18>I<
03F0000FFE003FFF007C0F807003C0E001C0F000E0F000E06000E00000E00000E00001C00001C0
0003C0000780000F00001E00003C0000780000F00001E00007C0000F80001E00E03C00E07FFFE0
FFFFE07FFFE0131C7E9B18>I<07F8001FFE003FFF007807807803C07801C03001C00001C00003
C0000380000F0003FF0003FE0003FF000007800003C00001C00000E00000E00000E0F000E0F000
E0F001C0F003C07C07803FFF001FFE0003F800131C7E9B18>I<001F00003F0000770000770000
E70001E70001C7000387000787000707000E07001E07003C0700380700780700F00700FFFFF8FF
FFF8FFFFF8000700000700000700000700000700000700007FF000FFF8007FF0151C7F9B18>I<
1FFF803FFF803FFF803800003800003800003800003800003800003800003800003BF8003FFE00
3FFF003C07801803C00001C00000E00000E06000E0F000E0F000E0E001C07003C07C0F803FFF00
1FFC0003F000131C7E9B18>I<007E0001FF0007FF800F83C01E03C01C03C03801803800007000
00700000E1F800E7FE00FFFF00FE0780F803C0F001C0F000E0E000E0F000E07000E07000E07000
E03801C03C03C01E07800FFF0007FE0001F800131C7E9B18>I<3078FCFC783000000000000000
003078FCFC78300614779318>58 D<183C7E7E3C180000000000000000183C7E7E3E1E0E1C3C78
F060071A789318>I<000300000780001F80003F00007E0001FC0003F00007E0001FC0003F0000
7E0000FC0000FC00007E00003F00001FC00007E00003F00001FC00007E00003F00001F80000780
00030011187D9918>I<7FFFC0FFFFE0FFFFE0FFFFE0000000000000000000000000FFFFE0FFFF
E0FFFFE07FFFC0130C7E9318>I<00700000F80000F80000D80000D80001DC0001DC0001DC0001
8C00038E00038E00038E00038E000306000707000707000707000707000FFF800FFF800FFF800E
03800E03801C01C01C01C07F07F0FF8FF87F07F0151C7F9B18>65 D<FFFC00FFFF00FFFF801C03
C01C01C01C00E01C00E01C00E01C00E01C01E01C01C01C07C01FFF801FFF001FFFC01C03C01C00
E01C00F01C00701C00701C00701C00701C00F01C00E01C03E0FFFFC0FFFF80FFFE00141C7F9B18
>I<00F8E003FEE007FFE00F07E01E03E03C01E03800E07000E07000E0700000E00000E00000E0
0000E00000E00000E00000E00000E000007000007000E07000E03800E03C00E01E01C00F07C007
FF8003FE0000F800131C7E9B18>I<7FF800FFFE007FFF001C0F801C03C01C03C01C01E01C00E0
1C00E01C00F01C00701C00701C00701C00701C00701C00701C00701C00701C00F01C00E01C00E0
1C01E01C01C01C03C01C0F807FFF00FFFE007FF800141C7F9B18>I<FFFFF0FFFFF0FFFFF01C00
701C00701C00701C00701C00001C00001C0E001C0E001C0E001FFE001FFE001FFE001C0E001C0E
001C0E001C00001C00001C00381C00381C00381C00381C0038FFFFF8FFFFF8FFFFF8151C7F9B18
>I<01F1C003FDC00FFFC01F0FC01C03C03803C03801C07001C07001C0700000E00000E00000E0
0000E00000E00000E00FF0E01FF0E00FF07001C07001C07003C03803C03803C01C07C01F0FC00F
FFC003FDC001F1C0141C7E9B18>71 D<7F07F0FF8FF87F07F01C01C01C01C01C01C01C01C01C01
C01C01C01C01C01C01C01C01C01FFFC01FFFC01FFFC01C01C01C01C01C01C01C01C01C01C01C01
C01C01C01C01C01C01C01C01C07F07F0FF8FF87F07F0151C7F9B18>I<7FFF00FFFF807FFF0001
C00001C00001C00001C00001C00001C00001C00001C00001C00001C00001C00001C00001C00001
C00001C00001C00001C00001C00001C00001C00001C00001C0007FFF00FFFF807FFF00111C7D9B
18>I<7FE000FFE0007FE0000E00000E00000E00000E00000E00000E00000E00000E00000E0000
0E00000E00000E00000E00000E00000E00000E00000E00000E00700E00700E00700E00700E0070
7FFFF0FFFFF07FFFF0141C7F9B18>76 D<FC01F8FE03F8FE03F83B06E03B06E03B06E03B06E03B
8EE03B8EE0398CE0398CE039DCE039DCE039DCE038D8E038D8E038F8E03870E03870E03800E038
00E03800E03800E03800E03800E0FE03F8FE03F8FE03F8151C7F9B18>I<7E07F0FF0FF87F07F0
1D81C01D81C01D81C01DC1C01CC1C01CC1C01CE1C01CE1C01CE1C01C61C01C71C01C71C01C31C0
1C39C01C39C01C39C01C19C01C19C01C1DC01C0DC01C0DC01C0DC07F07C0FF87C07F03C0151C7F
9B18>I<0FF8003FFE007FFF00780F00700700F00780E00380E00380E00380E00380E00380E003
80E00380E00380E00380E00380E00380E00380E00380E00380E00380E00380F00780700700780F
007FFF003FFE000FF800111C7D9B18>I<FFFE00FFFF80FFFFC01C03C01C01E01C00E01C00701C
00701C00701C00701C00701C00E01C01E01C03C01FFFC01FFF801FFE001C00001C00001C00001C
00001C00001C00001C00001C0000FF8000FF8000FF8000141C7F9B18>I<7FFFF8FFFFF8FFFFF8
E07038E07038E07038E07038007000007000007000007000007000007000007000007000007000
00700000700000700000700000700000700000700000700000700007FF0007FF0007FF00151C7F
9B18>84 D<FF07F8FF07F8FF07F81C01C01C01C01C01C01C01C00E03800E03800E03800E03800F
0780070700070700070700070700038E00038E00038E00038E00018C0001DC0001DC0001DC0000
D80000F80000F800007000151C7F9B18>86 D<7F8FE07F9FE07F8FE00E07000F0700070E00078E
00039C0003DC0001F80001F80000F00000F00000700000F00000F80001F80001DC00039E00038E
00070F000707000E07800E03801E03C07F07F0FF8FF87F07F0151C7F9B18>88
D<FFF8FFF8FFF8E000E000E000E000E000E000E000E000E000E000E000E000E000E000E000E000
E000E000E000E000E000E000E000E000E000E000E000E000E000E000FFF8FFF8FFF80D24779F18
>91 D<FFF8FFF8FFF8003800380038003800380038003800380038003800380038003800380038
003800380038003800380038003800380038003800380038003800380038FFF8FFF8FFF80D247F
9F18>93 D<7FFF00FFFF80FFFF807FFF0011047D7F18>95 D<1FE0003FF8007FFC00781E00300E
0000070000070000FF0007FF001FFF007F0700780700E00700E00700E00700F00F00781F003FFF
F01FFBF007E1F014147D9318>97 D<7E0000FE00007E00000E00000E00000E00000E00000E0000
0E3E000EFF800FFFC00FC1E00F80E00F00700E00700E00380E00380E00380E00380E00380E0038
0F00700F00700F80E00FC1E00FFFC00EFF80063E00151C809B18>I<01FE0007FF001FFF803E07
80380300700000700000E00000E00000E00000E00000E00000E000007000007001C03801C03E03
C01FFF8007FF0001FC0012147D9318>I<001F80003F80001F8000038000038000038000038000
038003E3800FFB801FFF803C1F80380F80700780700380E00380E00380E00380E00380E00380E0
0380700780700780380F803C1F801FFFF00FFBF803E3F0151C7E9B18>I<01F00007FC001FFE00
3E0F00380780700380700380E001C0E001C0FFFFC0FFFFC0FFFFC0E000007000007001C03801C0
3E03C01FFF8007FF0001FC0012147D9318>I<001F80007FC000FFE000E1E001C0C001C00001C0
0001C0007FFFC0FFFFC0FFFFC001C00001C00001C00001C00001C00001C00001C00001C00001C0
0001C00001C00001C00001C00001C0007FFF007FFF007FFF00131C7F9B18>I<01E1F007FFF80F
FFF81E1E301C0E003807003807003807003807003807001C0E001E1E001FFC001FF80039E00038
00001C00001FFE001FFFC03FFFE07801F0700070E00038E00038E00038E000387800F07E03F01F
FFC00FFF8001FC00151F7F9318>I<7E0000FE00007E00000E00000E00000E00000E00000E0000
0E3E000EFF800FFFC00FC1C00F80E00F00E00E00E00E00E00E00E00E00E00E00E00E00E00E00E0
0E00E00E00E00E00E00E00E07FC3FCFFE7FE7FC3FC171C809B18>I<03800007C00007C00007C0
000380000000000000000000000000007FC000FFC0007FC00001C00001C00001C00001C00001C0
0001C00001C00001C00001C00001C00001C00001C00001C00001C000FFFF00FFFF80FFFF00111D
7C9C18>I<FE0000FE0000FE00000E00000E00000E00000E00000E00000E3FF00E7FF00E3FF00E
07800E0F000E1E000E3C000E78000EF0000FF8000FFC000F9C000F0E000E0F000E07000E03800E
03C0FFC7F8FFC7F8FFC7F8151C7F9B18>107 D<7FE000FFE0007FE00000E00000E00000E00000
E00000E00000E00000E00000E00000E00000E00000E00000E00000E00000E00000E00000E00000
E00000E00000E00000E00000E00000E0007FFFC0FFFFE07FFFC0131C7E9B18>I<7CE0E000FFFB
F8007FFFF8001F1F1C001E1E1C001E1E1C001C1C1C001C1C1C001C1C1C001C1C1C001C1C1C001C
1C1C001C1C1C001C1C1C001C1C1C001C1C1C001C1C1C007F1F1F00FFBFBF807F1F1F0019148193
18>I<7E3E00FEFF807FFFC00FC1C00F80E00F00E00E00E00E00E00E00E00E00E00E00E00E00E0
0E00E00E00E00E00E00E00E00E00E07FC3FCFFE7FE7FC3FC1714809318>I<01F0000FFE001FFF
003E0F803803807001C07001C0E000E0E000E0E000E0E000E0E000E0F001E07001C07803C03C07
803E0F801FFF000FFE0001F00013147E9318>I<7E3E00FEFF807FFFC00FC1E00F80E00F00700E
00700E00380E00380E00380E00380E00380E00380F00700F00700F80E00FC1E00FFFC00EFF800E
3E000E00000E00000E00000E00000E00000E00000E00007FC000FFE0007FC000151E809318>I<
7F87E0FF9FF07FBFF803F87803F03003E00003C00003C000038000038000038000038000038000
0380000380000380000380007FFE00FFFF007FFE0015147F9318>114 D<07F7003FFF007FFF00
780F00E00700E00700E007007C00007FE0001FFC0003FE00001F00600780E00380E00380F00380
F80F00FFFF00FFFC00E7F00011147D9318>I<0180000380000380000380000380007FFFC0FFFF
C0FFFFC00380000380000380000380000380000380000380000380000380000380400380E00380
E00380E001C1C001FFC000FF80003E0013197F9818>I<7E07E0FE0FE07E07E00E00E00E00E00E
00E00E00E00E00E00E00E00E00E00E00E00E00E00E00E00E00E00E00E00E01E00F03E007FFFC03
FFFE01FCFC1714809318>I<7F8FF0FF8FF87F8FF01E03C00E03800E03800E0380070700070700
070700038E00038E00038E00038E0001DC0001DC0001DC0000F80000F80000700015147F9318>
I<FF8FF8FF8FF8FF8FF83800E03800E03800E01C01C01C01C01C71C01CF9C01CF9C01CD9C01CD9
C00DDD800DDD800DDD800D8D800F8F800F8F8007070015147F9318>I<7F8FF07F9FF07F8FF007
0700078E00039E0001DC0001F80000F80000700000F00000F80001DC00039E00038E000707000F
07807F8FF0FF8FF87F8FF015147F9318>I<7F8FF0FF8FF87F8FF00E01C00E03800E0380070380
070700070700038700038600038E0001CE0001CE0000CC0000CC0000DC00007800007800007800
00700000700000700000F00000E00079E0007BC0007F80003F00001E0000151E7F9318>I<3FFF
F07FFFF07FFFF07001E07003C0700780000F00001E00003C0000F80001F00003C0000780000F00
701E00703C0070780070FFFFF0FFFFF0FFFFF014147F9318>I<0007E0001FE0007FE000780000
E00000E00000E00000E00000E00000E00000E00000E00000E00000E00000E00001E0007FC000FF
8000FF80007FC00001E00000E00000E00000E00000E00000E00000E00000E00000E00000E00000
E00000E000007800007FE0001FE00007E013247E9F18>I<7C0000FF0000FFC00003C00000E000
00E00000E00000E00000E00000E00000E00000E00000E00000E00000E00000F000007FC0003FE0
003FE0007FC000F00000E00000E00000E00000E00000E00000E00000E00000E00000E00000E000
00E00003C000FFC000FF00007C000013247E9F18>125 D E /Fm 30 121
df<000E00001E00007E0007FE00FFFE00FFFE00F8FE0000FE0000FE0000FE0000FE0000FE0000
FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE0000
FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE007FFFFE7FFFFE7F
FFFE17277BA622>49 D<00FF800003FFF0000FFFFC001F03FE003800FF007C007F80FE003FC0FF
003FC0FF003FE0FF001FE0FF001FE07E001FE03C003FE000003FE000003FC000003FC000007F80
00007F000000FE000000FC000001F8000003F0000003E00000078000000F0000001E0000003C00
E0007000E000E000E001C001C0038001C0070001C00FFFFFC01FFFFFC03FFFFFC07FFFFFC0FFFF
FF80FFFFFF80FFFFFF801B277DA622>I<007F800003FFF00007FFFC000F81FE001F00FF003F80
FF003F807F803F807F803F807F801F807F800F007F800000FF000000FF000000FE000001FC0000
01F8000007F00000FFC00000FFF0000001FC0000007E0000007F0000007F8000003FC000003FC0
00003FE000003FE03C003FE07E003FE0FF003FE0FF003FE0FF003FC0FF007FC07E007F807C007F
003F01FE001FFFFC0007FFF00000FF80001B277DA622>I<00000E0000001E0000003E0000007E
000000FE000000FE000001FE000003FE0000077E00000E7E00000E7E00001C7E0000387E000070
7E0000E07E0000E07E0001C07E0003807E0007007E000E007E000E007E001C007E0038007E0070
007E00E0007E00FFFFFFF8FFFFFFF8FFFFFFF80000FE000000FE000000FE000000FE000000FE00
0000FE000000FE000000FE00007FFFF8007FFFF8007FFFF81D277EA622>I<0C0003000F803F00
0FFFFE000FFFFC000FFFF8000FFFF0000FFFE0000FFFC0000FFE00000E0000000E0000000E0000
000E0000000E0000000E0000000E7FC0000FFFF8000F80FC000E003E000C003F0000001F800000
1FC000001FC000001FE000001FE018001FE07C001FE0FE001FE0FE001FE0FE001FE0FE001FC0FC
001FC078003F8078003F803C007F001F01FE000FFFF80003FFF00000FF80001B277DA622>I<1C
003E007F00FF80FF80FF807F003E001C000000000000000000000000000000000000001C003E00
7F00FF80FF80FF807F003E001C00091B7B9A13>58 D<000003800000000007C00000000007C000
0000000FE0000000000FE0000000000FE0000000001FF0000000001FF0000000003FF800000000
3FF8000000003FF80000000073FC0000000073FC00000000F3FE00000000E1FE00000000E1FE00
000001C0FF00000001C0FF00000003C0FF80000003807F80000007807FC0000007003FC0000007
003FC000000E003FE000000E001FE000001E001FF000001C000FF000001FFFFFF000003FFFFFF8
00003FFFFFF80000780007FC0000700003FC0000700003FC0000E00001FE0000E00001FE0001E0
0001FF0001C00000FF0001C00000FF00FFFE001FFFFEFFFE001FFFFEFFFE001FFFFE2F297EA834
>65 D<00003FF001800003FFFE0380000FFFFF8780003FF007DF8000FF8001FF8001FE00007F80
03FC00003F8007F000001F800FF000000F801FE0000007801FE0000007803FC0000007803FC000
0003807FC0000003807F80000003807F8000000000FF8000000000FF8000000000FF8000000000
FF8000000000FF8000000000FF8000000000FF8000000000FF8000000000FF80000000007F8000
0000007F80000000007FC0000003803FC0000003803FC0000003801FE0000003801FE000000700
0FF00000070007F000000E0003FC00001E0001FE00003C0000FF8000F800003FF007E000000FFF
FFC0000003FFFF000000003FF8000029297CA832>67 D<00007FE003000003FFFC0700001FFFFF
0F00003FF00FFF0000FF8001FF0001FE0000FF0003F800003F0007F000003F000FF000001F001F
E000000F001FE000000F003FC000000F003FC0000007007FC0000007007F80000007007F800000
0000FF8000000000FF8000000000FF8000000000FF8000000000FF8000000000FF8000000000FF
8000000000FF8000000000FF8001FFFFF87F8001FFFFF87F8001FFFFF87FC00000FF003FC00000
FF003FC00000FF001FE00000FF001FE00000FF000FF00000FF0007F00000FF0003F80000FF0001
FE0000FF0000FF8001FF00003FF007BF00001FFFFF1F000003FFFE0F0000007FF003002D297CA8
36>71 D<FFFFFCFFFFFCFFFFFC01FE0001FE0001FE0001FE0001FE0001FE0001FE0001FE0001FE
0001FE0001FE0001FE0001FE0001FE0001FE0001FE0001FE0001FE0001FE0001FE0001FE0001FE
0001FE0001FE0001FE0001FE0001FE0001FE0001FE0001FE0001FE0001FE0001FE0001FE0001FE
00FFFFFCFFFFFCFFFFFC16297EA81A>73 D<FFFFFC0000FFFFFC0000FFFFFC000003FC00000003
FC00000003FC00000003FC00000003FC00000003FC00000003FC00000003FC00000003FC000000
03FC00000003FC00000003FC00000003FC00000003FC00000003FC00000003FC00000003FC0000
0003FC00000003FC00000003FC00000003FC00000003FC0001C003FC0001C003FC0001C003FC00
01C003FC0003C003FC00038003FC00038003FC00078003FC00078003FC000F8003FC000F8003FC
001F8003FC007F8003FC01FF00FFFFFFFF00FFFFFFFF00FFFFFFFF0022297DA829>76
D<FFFFFFF800FFFFFFFF00FFFFFFFFC003FC003FE003FC000FF003FC0007F803FC0007FC03FC00
03FC03FC0003FE03FC0003FE03FC0003FE03FC0003FE03FC0003FE03FC0003FE03FC0003FE03FC
0003FC03FC0007FC03FC0007F803FC000FF003FC003FE003FFFFFF8003FFFFFE0003FC00000003
FC00000003FC00000003FC00000003FC00000003FC00000003FC00000003FC00000003FC000000
03FC00000003FC00000003FC00000003FC00000003FC00000003FC00000003FC000000FFFFF000
00FFFFF00000FFFFF0000027297DA82F>80 D<FFFFFFE00000FFFFFFFE0000FFFFFFFF800003FC
007FE00003FC000FF00003FC0007F80003FC0007FC0003FC0003FC0003FC0003FE0003FC0003FE
0003FC0003FE0003FC0003FE0003FC0003FE0003FC0003FE0003FC0003FC0003FC0007F80003FC
0007F80003FC001FE00003FC007FC00003FFFFFE000003FFFFF0000003FC00FC000003FC007F00
0003FC003F800003FC003F800003FC001FC00003FC001FE00003FC001FE00003FC001FE00003FC
001FE00003FC001FE00003FC001FF00003FC001FF00003FC001FF00003FC001FF00703FC001FF8
0703FC000FF80703FC0007F80EFFFFF003FE1CFFFFF001FFF8FFFFF0003FF030297DA834>82
D<007F806003FFF0E007FFF9E00F807FE01F001FE03E0007E07C0003E07C0001E0FC0001E0FC00
01E0FC0000E0FE0000E0FE0000E0FF000000FFC000007FFE00007FFFE0003FFFFC001FFFFE000F
FFFF8007FFFFC003FFFFE000FFFFE00007FFF000007FF000000FF8000007F8000003F8600001F8
E00001F8E00001F8E00001F8F00001F0F00001F0F80003F0FC0003E0FF0007C0FFE01F80F3FFFF
00E0FFFE00C01FF0001D297CA826>I<01FF800007FFF0000F81F8001FC07E001FC07E001FC03F
000F803F8007003F8000003F8000003F8000003F80000FFF8000FFFF8007FC3F800FE03F803F80
3F803F003F807F003F80FE003F80FE003F80FE003F80FE003F807E007F807F00DF803F839FFC0F
FF0FFC01FC03FC1E1B7E9A21>97 D<001FF80000FFFE0003F01F0007E03F800FC03F801F803F80
3F801F007F800E007F0000007F000000FF000000FF000000FF000000FF000000FF000000FF0000
00FF0000007F0000007F0000007F8000003F8001C01F8001C00FC0038007E0070003F01E0000FF
FC00001FE0001A1B7E9A1F>99 D<00003FF80000003FF80000003FF800000003F800000003F800
000003F800000003F800000003F800000003F800000003F800000003F800000003F800000003F8
00000003F800000003F800001FE3F80000FFFBF80003F03FF80007E00FF8000FC007F8001F8003
F8003F8003F8007F0003F8007F0003F8007F0003F800FF0003F800FF0003F800FF0003F800FF00
03F800FF0003F800FF0003F800FF0003F8007F0003F8007F0003F8007F0003F8003F8003F8001F
8003F8000F8007F80007C00FF80003F03BFF8000FFF3FF80003FC3FF80212A7EA926>I<003FE0
0001FFF80003F07E0007C01F000F801F801F800F803F800FC07F000FC07F0007C07F0007E0FF00
07E0FF0007E0FFFFFFE0FFFFFFE0FF000000FF000000FF0000007F0000007F0000007F0000003F
8000E01F8000E00FC001C007E0038003F81F0000FFFE00001FF0001B1B7E9A20>I<0007F0003F
FC00FE3E01F87F03F87F03F07F07F07F07F03E07F00007F00007F00007F00007F00007F00007F0
00FFFFC0FFFFC0FFFFC007F00007F00007F00007F00007F00007F00007F00007F00007F00007F0
0007F00007F00007F00007F00007F00007F00007F00007F00007F00007F00007F0007FFF807FFF
807FFF80182A7EA915>I<07000FC01FE03FE03FE03FE01FE00FC0070000000000000000000000
00000000FFE0FFE0FFE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00F
E00FE00FE00FE00FE00FE00FE0FFFEFFFEFFFE0F2B7DAA14>105 D<FFE0FFE0FFE00FE00FE00F
E00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE0
0FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE0FFFEFFFEFFFE0F2A7DA914
>108 D<FFC07F800FF000FFC1FFE03FFC00FFC383F0707E000FC603F8C07F000FCC01F9803F00
0FD801FF003F800FF001FE003F800FF001FE003F800FE001FC003F800FE001FC003F800FE001FC
003F800FE001FC003F800FE001FC003F800FE001FC003F800FE001FC003F800FE001FC003F800F
E001FC003F800FE001FC003F800FE001FC003F800FE001FC003F800FE001FC003F800FE001FC00
3F800FE001FC003F800FE001FC003F80FFFE1FFFC3FFF8FFFE1FFFC3FFF8FFFE1FFFC3FFF8351B
7D9A3A>I<FFC07F0000FFC1FFC000FFC787E0000FCE03F0000FD803F0000FD803F8000FF003F8
000FF003F8000FE003F8000FE003F8000FE003F8000FE003F8000FE003F8000FE003F8000FE003
F8000FE003F8000FE003F8000FE003F8000FE003F8000FE003F8000FE003F8000FE003F8000FE0
03F8000FE003F800FFFE3FFF80FFFE3FFF80FFFE3FFF80211B7D9A26>I<003FE00001FFFC0003
F07E000FC01F801F800FC03F800FE03F0007E07F0007F07F0007F07F0007F0FF0007F8FF0007F8
FF0007F8FF0007F8FF0007F8FF0007F8FF0007F8FF0007F87F0007F07F0007F03F800FE03F800F
E01F800FC00FC01F8007F07F0001FFFC00003FE0001D1B7E9A22>I<FFE1FE0000FFE7FF8000FF
FE07E0000FF803F0000FF001F8000FE000FC000FE000FE000FE000FF000FE0007F000FE0007F00
0FE0007F800FE0007F800FE0007F800FE0007F800FE0007F800FE0007F800FE0007F800FE0007F
000FE000FF000FE000FF000FE000FE000FE001FC000FF001F8000FF803F0000FFE0FE0000FE7FF
80000FE1FC00000FE00000000FE00000000FE00000000FE00000000FE00000000FE00000000FE0
0000000FE00000000FE0000000FFFE000000FFFE000000FFFE00000021277E9A26>I<FFC1F0FF
C7FCFFCE3E0FD87F0FD87F0FF07F0FF03E0FF01C0FE0000FE0000FE0000FE0000FE0000FE0000F
E0000FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE000FFFF00FFFF00FFFF0018
1B7E9A1C>114 D<03FE300FFFF01E03F03800F0700070F00070F00070F80070FC0000FFE0007F
FE007FFF803FFFE01FFFF007FFF800FFF80003FC0000FC60007CE0003CF0003CF00038F80038FC
0070FF01E0F7FFC0C1FF00161B7E9A1B>I<00700000700000700000700000F00000F00000F000
01F00003F00003F00007F0001FFFF0FFFFF0FFFFF007F00007F00007F00007F00007F00007F000
07F00007F00007F00007F00007F00007F00007F00007F03807F03807F03807F03807F03807F038
03F03803F87001F86000FFC0001F8015267FA51B>I<FFE03FF800FFE03FF800FFE03FF8000FE0
03F8000FE003F8000FE003F8000FE003F8000FE003F8000FE003F8000FE003F8000FE003F8000F
E003F8000FE003F8000FE003F8000FE003F8000FE003F8000FE003F8000FE003F8000FE003F800
0FE003F8000FE003F8000FE007F80007E007F80007E00FF80003F03BFF8001FFF3FF80003FC3FF
80211B7D9A26>I<FFFC0FFF00FFFC0FFF00FFFC0FFF0007F003C00003F807800001FC07800000
FE0F000000FF1E0000007F3C0000003FF80000001FF00000000FF00000000FF000000007F00000
0007F80000000FFC0000001FFE0000001EFE0000003C7F000000783F800000F01FC00001E01FE0
0001C00FE00003C007F000FFF01FFF80FFF01FFF80FFF01FFF80211B7F9A24>120
D E /Fn 82 128 df<001F83E000F06E3001C078780380F8780300F03007007000070070000700
700007007000070070000700700007007000FFFFFF800700700007007000070070000700700007
007000070070000700700007007000070070000700700007007000070070000700700007007000
070070000700700007007000070070007FE3FF001D20809F1B>11 D<003F0000E0C001C0C00381
E00701E00701E0070000070000070000070000070000070000FFFFE00700E00700E00700E00700
E00700E00700E00700E00700E00700E00700E00700E00700E00700E00700E00700E00700E00700
E00700E07FC3FE1720809F19>I<003FE000E0E001C1E00381E00700E00700E00700E00700E007
00E00700E00700E00700E0FFFFE00700E00700E00700E00700E00700E00700E00700E00700E007
00E00700E00700E00700E00700E00700E00700E00700E00700E00700E07FE7FE1720809F19>I<
001F81F80000F04F040001C07C06000380F80F000300F00F000700F00F00070070000007007000
000700700000070070000007007000000700700000FFFFFFFF0007007007000700700700070070
070007007007000700700700070070070007007007000700700700070070070007007007000700
70070007007007000700700700070070070007007007000700700700070070070007007007007F
E3FE3FF02420809F26>I<70F8F8F8F8F8F8F87070707070707070707020202020200000000000
70F8F8F87005217CA00D>33 D<7038F87CFC7EFC7E743A04020402040208040804100810082010
40200F0E7E9F17>I<70F8FCFC74040404080810102040060E7C9F0D>39
D<0020004000800100020006000C000C00180018003000300030007000600060006000E000E000
E000E000E000E000E000E000E000E000E000E0006000600060007000300030003000180018000C
000C000600020001000080004000200B2E7DA112>I<800040002000100008000C000600060003
00030001800180018001C000C000C000C000E000E000E000E000E000E000E000E000E000E000E0
00E000C000C000C001C001800180018003000300060006000C00080010002000400080000B2E7D
A112>I<0006000000060000000600000006000000060000000600000006000000060000000600
00000600000006000000060000000600000006000000060000FFFFFFF0FFFFFFF0000600000006
000000060000000600000006000000060000000600000006000000060000000600000006000000
0600000006000000060000000600001C207D9A23>43 D<70F8FCFC74040404080810102040060E
7C840D>I<FFC0FFC00A027F8A0F>I<70F8F8F87005057C840D>I<000100030003000600060006
000C000C000C00180018001800300030003000600060006000C000C000C0018001800180030003
0003000600060006000C000C000C00180018001800300030003000600060006000C000C000C000
102D7DA117>I<03F0000E1C001C0E00180600380700700380700380700380700380F003C0F003
C0F003C0F003C0F003C0F003C0F003C0F003C0F003C0F003C0F003C0F003C0F003C07003807003
807003807807803807001806001C0E000E1C0003F000121F7E9D17>I<018003800F80F3800380
038003800380038003800380038003800380038003800380038003800380038003800380038003
8003800380038007C0FFFE0F1E7C9D17>I<03F0000C1C00100E00200700400780800780F007C0
F803C0F803C0F803C02007C00007C0000780000780000F00000E00001C00003800007000006000
00C0000180000300000600400C00401800401000803FFF807FFF80FFFF80121E7E9D17>I<03F0
000C1C00100E00200F00780F80780780780780380F80000F80000F00000F00000E00001C000038
0003F000003C00000E00000F000007800007800007C02007C0F807C0F807C0F807C0F007804007
80400F00200E001C3C0003F000121F7E9D17>I<000600000600000E00000E00001E00002E0000
2E00004E00008E00008E00010E00020E00020E00040E00080E00080E00100E00200E00200E0040
0E00C00E00FFFFF0000E00000E00000E00000E00000E00000E00000E0000FFE0141E7F9D17>I<
1803001FFE001FFC001FF8001FE00010000010000010000010000010000010000011F000161C00
180E001007001007800003800003800003C00003C00003C07003C0F003C0F003C0E00380400380
400700200600100E000C380003E000121F7E9D17>I<007C000182000701000E03800C07801C07
80380300380000780000700000700000F1F000F21C00F40600F80700F80380F80380F003C0F003
C0F003C0F003C0F003C07003C07003C07003803803803807001807000C0E00061C0001F000121F
7E9D17>I<4000007FFFC07FFF807FFF8040010080020080020080040000080000080000100000
200000200000400000400000C00000C00001C00001800003800003800003800003800007800007
8000078000078000078000078000078000030000121F7D9D17>I<03F0000C0C00100600300300
2001806001806001806001807001807803003E03003F06001FC8000FF00003F80007FC000C7E00
103F00300F806003804001C0C001C0C000C0C000C0C000C0C000806001802001001002000C0C00
03F000121F7E9D17>I<03F0000E18001C0C00380600380700700700700380F00380F00380F003
C0F003C0F003C0F003C0F003C07007C07007C03807C0180BC00E13C003E3C00003800003800003
80000700300700780600780E00700C002018001070000FC000121F7E9D17>I<70F8F8F8700000
000000000000000070F8F8F87005147C930D>I<70F8F8F8700000000000000000000070F0F8F8
78080808101010202040051D7C930D>I<7FFFFFE0FFFFFFF00000000000000000000000000000
000000000000000000000000000000000000FFFFFFF07FFFFFE01C0C7D9023>61
D<000100000003800000038000000380000007C0000007C0000007C0000009E0000009E0000009
E0000010F0000010F0000010F00000207800002078000020780000403C0000403C0000403C0000
801E0000801E0000FFFE0001000F0001000F0001000F00020007800200078002000780040003C0
0E0003C01F0007E0FFC03FFE1F207F9F22>65 D<FFFFE0000F80380007801E0007801F0007800F
0007800F8007800F8007800F8007800F8007800F8007800F0007801F0007801E0007803C0007FF
F00007803C0007801E0007800F0007800F8007800780078007C0078007C0078007C0078007C007
8007C00780078007800F8007800F0007801F000F803C00FFFFF0001A1F7E9E20>I<000FC04000
7030C001C009C0038005C0070003C00E0001C01E0000C01C0000C03C0000C07C0000407C000040
78000040F8000000F8000000F8000000F8000000F8000000F8000000F8000000F8000000F80000
00780000007C0000407C0000403C0000401C0000401E0000800E000080070001000380020001C0
040000703800000FC0001A217D9F21>I<FFFFE0000F803C0007801E0007800700078003800780
03C0078001E0078001E0078001F0078000F0078000F0078000F8078000F8078000F8078000F807
8000F8078000F8078000F8078000F8078000F8078000F0078000F0078000F0078001E0078001E0
078003C0078003800780070007800E000F803C00FFFFE0001D1F7E9E23>I<FFFFFF000F800F00
078003000780030007800100078001800780008007800080078000800780808007808000078080
00078080000781800007FF80000781800007808000078080000780800007808000078000200780
002007800020078000400780004007800040078000C0078000C0078001800F800F80FFFFFF801B
1F7E9E1F>I<FFFFFF000F800F0007800300078003000780010007800180078000800780008007
80008007800080078080000780800007808000078080000781800007FF80000781800007808000
078080000780800007808000078000000780000007800000078000000780000007800000078000
00078000000FC00000FFFE0000191F7E9E1E>I<000FE0200078186000E004E0038002E0070001
E00F0000E01E0000601E0000603C0000603C0000207C00002078000020F8000000F8000000F800
0000F8000000F8000000F8000000F8000000F8007FFCF80003E0780001E07C0001E03C0001E03C
0001E01E0001E01E0001E00F0001E0070001E0038002E000E0046000781820000FE0001E217D9F
24>I<FFF8FFF80F800F8007800F0007800F0007800F0007800F0007800F0007800F0007800F00
07800F0007800F0007800F0007800F0007800F0007FFFF0007800F0007800F0007800F0007800F
0007800F0007800F0007800F0007800F0007800F0007800F0007800F0007800F0007800F000780
0F000F800F80FFF8FFF81D1F7E9E22>I<FFFC0FC0078007800780078007800780078007800780
0780078007800780078007800780078007800780078007800780078007800780078007800FC0FF
FC0E1F7F9E10>I<0FFFC0007C00003C00003C00003C00003C00003C00003C00003C00003C0000
3C00003C00003C00003C00003C00003C00003C00003C00003C00003C00003C00003C00003C0020
3C00F83C00F83C00F83C00F0380040780040700030E0000F800012207E9E17>I<FFFC0FFC0FC0
03E007800180078001000780020007800400078008000780100007802000078040000780800007
8100000783000007878000078F80000793C0000791E00007A1E00007C0F0000780F00007807800
07803C0007803C0007801E0007801E0007800F000780078007800780078007C00FC007E0FFFC3F
FC1E1F7E9E23>I<FFFE000FC00007800007800007800007800007800007800007800007800007
800007800007800007800007800007800007800007800007800007800007800207800207800207
800207800607800407800407800C07801C0F807CFFFFFC171F7E9E1C>I<FF80001FF80F80001F
800780001F0005C0002F0005C0002F0005C0002F0004E0004F0004E0004F000470008F00047000
8F000470008F000438010F000438010F000438010F00041C020F00041C020F00041C020F00040E
040F00040E040F00040E040F000407080F000407080F000407080F000403900F000403900F0004
01E00F000401E00F000401E00F000E00C00F001F00C01F80FFE0C1FFF8251F7E9E2A>I<FF803F
F807C007C007C0038005E0010005E0010004F001000478010004780100043C0100043C0100041E
0100040F0100040F010004078100040781000403C1000401E1000401E1000400F1000400F10004
00790004003D0004003D0004001F0004001F0004000F0004000700040007000E0003001F000300
FFE001001D1F7E9E22>I<001F800000F0F00001C0380007801E000F000F000E0007001E000780
3C0003C03C0003C07C0003E0780001E0780001E0F80001F0F80001F0F80001F0F80001F0F80001
F0F80001F0F80001F0F80001F0F80001F0780001E07C0003E07C0003E03C0003C03C0003C01E00
07800E0007000F000F0007801E0001C0380000F0F000001F80001C217D9F23>I<FFFFE0000F80
780007801C0007801E0007800F0007800F8007800F8007800F8007800F8007800F8007800F8007
800F0007801E0007801C000780780007FFE0000780000007800000078000000780000007800000
07800000078000000780000007800000078000000780000007800000078000000FC00000FFFC00
00191F7E9E1F>I<FFFF80000F80F0000780780007803C0007801E0007801E0007801F0007801F
0007801F0007801F0007801E0007801E0007803C00078078000780F00007FF80000781C0000780
E0000780F0000780700007807800078078000780780007807C0007807C0007807C0007807C0407
807E0407803E040FC01E08FFFC0F10000003E01E207E9E21>82 D<07E0800C1980100780300380
600180600180E00180E00080E00080E00080F00000F000007800007F00003FF0001FFC000FFE00
03FF00001F800007800003C00003C00001C08001C08001C08001C08001C0C00180C00380E00300
F00600CE0C0081F80012217D9F19>I<7FFFFFE0780F01E0600F0060400F0020400F0020C00F00
30800F0010800F0010800F0010800F0010000F0000000F0000000F0000000F0000000F0000000F
0000000F0000000F0000000F0000000F0000000F0000000F0000000F0000000F0000000F000000
0F0000000F0000000F0000000F0000001F800007FFFE001C1F7E9E21>I<FFFC3FF80FC007C007
800380078001000780010007800100078001000780010007800100078001000780010007800100
078001000780010007800100078001000780010007800100078001000780010007800100078001
000780010007800100038002000380020001C0020001C0040000E008000070180000382000000F
C0001D207E9E22>I<FFF003FE1F8000F80F0000600F800060078000400780004003C0008003C0
008003C0008001E0010001E0010001F0010000F0020000F0020000F80600007804000078040000
3C0800003C0800003C0800001E1000001E1000001F3000000F2000000F20000007C0000007C000
0007C000000380000003800000038000000100001F207F9E22>I<FFF07FF81FF01F800FC007C0
0F00078003800F00078001000F0007C00100078007C00200078007C00200078007C0020003C009
E0040003C009E0040003C009E0040003E010F00C0001E010F0080001E010F0080001F020780800
00F02078100000F02078100000F0403C10000078403C20000078403C20000078C03E2000003C80
1E4000003C801E4000003C801E4000001F000F8000001F000F8000001F000F8000001E00078000
000E00070000000E00070000000C000300000004000200002C207F9E2F>I<7FFFF87C00F87000
F06001E04001E0C003C0C003C0800780800F80800F00001E00001E00003C00003C0000780000F8
0000F00001E00001E00003C00403C0040780040F80040F000C1E000C1E00083C00183C00187800
38F801F8FFFFF8161F7D9E1C>90 D<FEFEC0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0
C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0FEFE072D7CA10D>I<0804100820102010402040
20804080408040B85CFC7EFC7E7C3E381C0F0E7B9F17>I<FEFE06060606060606060606060606
06060606060606060606060606060606060606060606060606060606FEFE072D7FA10D>I<1FE0
00303000781800781C00300E00000E00000E00000E0000FE00078E001E0E00380E00780E00F00E
10F00E10F00E10F01E10781E103867200F83C014147E9317>97 D<0E0000FE00000E00000E0000
0E00000E00000E00000E00000E00000E00000E00000E00000E3E000EC3800F01C00F00E00E00E0
0E00700E00700E00780E00780E00780E00780E00780E00780E00700E00700E00E00F00E00D01C0
0CC300083E0015207F9F19>I<03F80E0C1C1E381E380C70007000F000F000F000F000F000F000
70007000380138011C020E0C03F010147E9314>I<000380003F80000380000380000380000380
00038000038000038000038000038000038003E380061B801C0780380380380380700380700380
F00380F00380F00380F00380F00380F003807003807003803803803807801C07800E1B8003E3F8
15207E9F19>I<03F0000E1C001C0E00380700380700700700700380F00380F00380FFFF80F000
00F00000F000007000007000003800801800800C010007060001F80011147F9314>I<007C00C6
018F038F07060700070007000700070007000700FFF00700070007000700070007000700070007
000700070007000700070007000700070007007FF01020809F0E>I<0000E003E3300E3C301C1C
30380E00780F00780F00780F00780F00780F00380E001C1C001E380033E0002000002000003000
003000003FFE001FFF800FFFC03001E0600070C00030C00030C00030C000306000603000C01C03
8003FC00141F7F9417>I<0E0000FE00000E00000E00000E00000E00000E00000E00000E00000E
00000E00000E00000E3E000E43000E81800F01C00F01C00E01C00E01C00E01C00E01C00E01C00E
01C00E01C00E01C00E01C00E01C00E01C00E01C00E01C00E01C0FFE7FC16207F9F19>I<1C001E
003E001E001C000000000000000000000000000E007E000E000E000E000E000E000E000E000E00
0E000E000E000E000E000E000E000E000E00FFC00A1F809E0C>I<00E001F001F001F000E00000
00000000000000000000007007F000F00070007000700070007000700070007000700070007000
700070007000700070007000700070007000706070F060F0C061803F000C28829E0E>I<0E0000
FE00000E00000E00000E00000E00000E00000E00000E00000E00000E00000E00000E0FF00E03C0
0E03000E02000E04000E08000E10000E30000E70000EF8000F38000E1C000E1E000E0E000E0700
0E07800E03800E03C00E03E0FFCFF815207F9F18>I<0E00FE000E000E000E000E000E000E000E
000E000E000E000E000E000E000E000E000E000E000E000E000E000E000E000E000E000E000E00
0E000E000E00FFE00B20809F0C>I<0E1F01F000FE618618000E81C81C000F00F00E000F00F00E
000E00E00E000E00E00E000E00E00E000E00E00E000E00E00E000E00E00E000E00E00E000E00E0
0E000E00E00E000E00E00E000E00E00E000E00E00E000E00E00E000E00E00E00FFE7FE7FE02314
7F9326>I<0E3E00FE43000E81800F01C00F01C00E01C00E01C00E01C00E01C00E01C00E01C00E
01C00E01C00E01C00E01C00E01C00E01C00E01C00E01C0FFE7FC16147F9319>I<01F800070E00
1C03803801C03801C07000E07000E0F000F0F000F0F000F0F000F0F000F0F000F07000E07000E0
3801C03801C01C0380070E0001F80014147F9317>I<0E3E00FEC3800F01C00F00E00E00E00E00
F00E00700E00780E00780E00780E00780E00780E00780E00700E00F00E00E00F01E00F01C00EC3
000E3E000E00000E00000E00000E00000E00000E00000E00000E0000FFE000151D7F9319>I<03
E0800619801C05803C0780380380780380700380F00380F00380F00380F00380F00380F0038070
03807803803803803807801C0B800E138003E38000038000038000038000038000038000038000
0380000380003FF8151D7E9318>I<0E78FE8C0F1E0F1E0F0C0E000E000E000E000E000E000E00
0E000E000E000E000E000E000E00FFE00F147F9312>I<1F9030704030C010C010C010E0007800
7F803FE00FF00070803880188018C018C018E030D0608F800D147E9312>I<0200020002000600
06000E000E003E00FFF80E000E000E000E000E000E000E000E000E000E000E000E080E080E080E
080E080610031001E00D1C7F9B12>I<0E01C0FE1FC00E01C00E01C00E01C00E01C00E01C00E01
C00E01C00E01C00E01C00E01C00E01C00E01C00E01C00E01C00E03C00603C0030DC001F1FC1614
7F9319>I<FF83F81E01E01C00C00E00800E00800E008007010007010003820003820003820001
C40001C40001EC0000E80000E80000700000700000700000200015147F9318>I<FF9FE1FC3C07
80701C0300601C0380200E0380400E0380400E03C0400707C0800704C0800704E0800388610003
88710003C8730001D0320001D03A0000F03C0000E01C0000E01C0000601800004008001E147F93
21>I<7FC3FC0F01E00701C007018003810001C20000E40000EC00007800003800003C00007C00
004E000087000107000303800201C00601E01E01E0FF07FE1714809318>I<FF83F81E01E01C00
C00E00800E00800E008007010007010003820003820003820001C40001C40001EC0000E80000E8
00007000007000007000002000002000004000004000004000F08000F08000F100006200003C00
00151D7F9318>I<3FFF380E200E201C40384078407000E001E001C00380078007010E011E011C
0338027006700EFFFE10147F9314>I<FFFFFC1601808C17>I<FFFFFFFFFFF02C01808C2D>I<30
307878F87C787830300E057C9E17>127 D E /Fo 49 123 df<007E0001C1800301800703C00E
03C00E01800E00000E00000E00000E00000E0000FFFFC00E01C00E01C00E01C00E01C00E01C00E
01C00E01C00E01C00E01C00E01C00E01C00E01C00E01C00E01C00E01C00E01C07F87F8151D809C
17>12 D<003F07E00001C09C18000380F018000701F03C000E01E03C000E00E018000E00E00000
0E00E000000E00E000000E00E000000E00E00000FFFFFFFC000E00E01C000E00E01C000E00E01C
000E00E01C000E00E01C000E00E01C000E00E01C000E00E01C000E00E01C000E00E01C000E00E0
1C000E00E01C000E00E01C000E00E01C000E00E01C000E00E01C007FC7FCFF80211D809C23>14
D<004000800100020006000C000C0018001800300030007000600060006000E000E000E000E000
E000E000E000E000E000E000E000E000600060006000700030003000180018000C000C00060002
000100008000400A2A7D9E10>40 D<800040002000100018000C000C0006000600030003000380
01800180018001C001C001C001C001C001C001C001C001C001C001C001C0018001800180038003
000300060006000C000C00180010002000400080000A2A7E9E10>I<60F0F07010101010202040
80040C7C830C>44 D<FFE0FFE00B0280890E>I<60F0F06004047C830C>I<03C00C301818300C30
0C700E60066006E007E007E007E007E007E007E007E007E007E007E007E007E00760066006700E
300C300C18180C3007E0101D7E9B15>48 D<030007003F00C70007000700070007000700070007
000700070007000700070007000700070007000700070007000700070007000F80FFF80D1C7C9B
15>I<00F0030C06040C0E181E301E300C700070006000E3E0E430E818F00CF00EE006E007E007
E007E007E007600760077006300E300C18180C3003E0101D7E9B15>54 D<4000007FFF807FFF00
7FFF0040020080040080040080080000100000100000200000600000400000C00000C00001C000
018000018000038000038000038000038000078000078000078000078000078000078000030000
111D7E9B15>I<03C00C301818300C700C600EE006E006E007E007E007E007E0076007700F300F
18170C2707C700060006000E300C780C78187010203030C00F80101D7E9B15>57
D<60F0F0600000000000000000000060F0F06004127C910C>I<00060000000600000006000000
0F0000000F0000000F00000017800000178000001780000023C0000023C0000023C0000041E000
0041E0000041E0000080F0000080F0000180F8000100780001FFF80003007C0002003C0002003C
0006003E0004001E0004001E000C001F001E001F00FF80FFF01C1D7F9C1F>65
D<FFFFC00F00F00F00380F003C0F001C0F001E0F001E0F001E0F001E0F001C0F003C0F00780F01
F00FFFE00F00780F003C0F001E0F000E0F000F0F000F0F000F0F000F0F000F0F001E0F001E0F00
3C0F0078FFFFE0181C7E9B1D>I<001F808000E0618001801980070007800E0003801C0003801C
00018038000180780000807800008070000080F0000000F0000000F0000000F0000000F0000000
F0000000F0000000F0000000700000807800008078000080380000801C0001001C0001000E0002
00070004000180080000E03000001FC000191E7E9C1E>I<FFFFFC0F003C0F000C0F00040F0004
0F00060F00020F00020F02020F02000F02000F02000F06000FFE000F06000F02000F02000F0200
0F02010F00010F00020F00020F00020F00060F00060F000C0F003CFFFFFC181C7E9B1C>69
D<FFF00F000F000F000F000F000F000F000F000F000F000F000F000F000F000F000F000F000F00
0F000F000F000F000F000F000F000F00FFF00C1C7F9B0F>73 D<FFF8000F80000F00000F00000F
00000F00000F00000F00000F00000F00000F00000F00000F00000F00000F00000F00000F00000F
00000F00080F00080F00080F00180F00180F00100F00300F00700F01F0FFFFF0151C7E9B1A>76
D<FF8000FF800F8000F8000F8000F8000BC00178000BC00178000BC001780009E002780009E002
780008F004780008F004780008F0047800087808780008780878000878087800083C107800083C
107800083C107800081E207800081E207800081E207800080F407800080F407800080780780008
07807800080780780008030078001C03007800FF8307FF80211C7E9B26>I<003F800000E0E000
0380380007001C000E000E001C0007003C00078038000380780003C0780003C0700001C0F00001
E0F00001E0F00001E0F00001E0F00001E0F00001E0F00001E0F00001E0700001C0780003C07800
03C0380003803C0007801C0007000E000E0007001C000380380000E0E000003F80001B1E7E9C20
>79 D<FFFF800F00E00F00780F003C0F001C0F001E0F001E0F001E0F001E0F001E0F001C0F003C
0F00780F00E00FFF800F00000F00000F00000F00000F00000F00000F00000F00000F00000F0000
0F00000F0000FFF000171C7E9B1C>I<FFFF00000F01E0000F0078000F003C000F001C000F001E
000F001E000F001E000F001E000F001C000F003C000F0078000F01E0000FFF00000F03C0000F00
E0000F00F0000F0078000F0078000F0078000F0078000F0078000F0078000F0078100F0078100F
0038100F003C20FFF01C20000007C01C1D7E9B1F>82 D<07E0801C1980300580700380600180E0
0180E00080E00080E00080F00000F800007C00007FC0003FF8001FFE0007FF0000FF80000F8000
07C00003C00001C08001C08001C08001C0C00180C00180E00300D00200CC0C0083F800121E7E9C
17>I<FFE0FFE0FF1F001F003C1E001E00180F001F00100F001F00100F001F001007801F002007
80278020078027802003C027804003C043C04003C043C04003E043C04001E081E08001E081E080
01E081E08000F100F10000F100F10000F100F100007900FA00007A007A00007A007A00003E007C
00003C003C00003C003C00003C003C00001800180000180018000018001800281D7F9B2B>87
D<1FC000307000783800781C00301C00001C00001C0001FC000F1C00381C00701C00601C00E01C
40E01C40E01C40603C40304E801F870012127E9115>97 D<FC00001C00001C00001C00001C0000
1C00001C00001C00001C00001C00001C00001C7C001D86001E03001C01801C01C01C00C01C00E0
1C00E01C00E01C00E01C00E01C00E01C00C01C01C01C01801E030019060010F800131D7F9C17>
I<07E00C301878307870306000E000E000E000E000E000E00060007004300418080C3007C00E12
7E9112>I<003F0000070000070000070000070000070000070000070000070000070000070003
E7000C1700180F00300700700700600700E00700E00700E00700E00700E00700E0070060070070
0700300700180F000C370007C7E0131D7E9C17>I<03E00C301818300C700E6006E006FFFEE000
E000E000E00060007002300218040C1803E00F127F9112>I<00F8018C071E061E0E0C0E000E00
0E000E000E000E00FFE00E000E000E000E000E000E000E000E000E000E000E000E000E000E000E
000E007FE00F1D809C0D>I<00038003C4C00C38C01C3880181800381C00381C00381C00381C00
1818001C38000C300013C0001000003000001800001FF8001FFF001FFF803003806001C0C000C0
C000C0C000C06001803003001C0E0007F800121C7F9215>I<FC00001C00001C00001C00001C00
001C00001C00001C00001C00001C00001C00001C7C001C87001D03001E03801C03801C03801C03
801C03801C03801C03801C03801C03801C03801C03801C03801C03801C0380FF9FF0141D7F9C17
>I<18003C003C0018000000000000000000000000000000FC001C001C001C001C001C001C001C
001C001C001C001C001C001C001C001C001C00FF80091D7F9C0C>I<FC001C001C001C001C001C
001C001C001C001C001C001C001C001C001C001C001C001C001C001C001C001C001C001C001C00
1C001C001C00FF80091D7F9C0C>108 D<FC7E07E0001C838838001D019018001E01E01C001C01
C01C001C01C01C001C01C01C001C01C01C001C01C01C001C01C01C001C01C01C001C01C01C001C
01C01C001C01C01C001C01C01C001C01C01C001C01C01C00FF8FF8FF8021127F9124>I<FC7C00
1C87001D03001E03801C03801C03801C03801C03801C03801C03801C03801C03801C03801C0380
1C03801C03801C0380FF9FF014127F9117>I<03F0000E1C00180600300300700380600180E001
C0E001C0E001C0E001C0E001C0E001C06001807003803003001806000E1C0003F00012127F9115
>I<FC7C001D86001E03001C01801C01C01C00C01C00E01C00E01C00E01C00E01C00E01C00E01C
01C01C01C01C01801E03001D06001CF8001C00001C00001C00001C00001C00001C00001C0000FF
8000131A7F9117>I<03C1000C3300180B00300F00700700700700E00700E00700E00700E00700
E00700E00700600700700700300F00180F000C370007C700000700000700000700000700000700
000700000700003FE0131A7E9116>I<FCE01D301E781E781C301C001C001C001C001C001C001C
001C001C001C001C001C00FFC00D127F9110>I<1F9030704030C010C010E010F8007F803FE00F
F000F880388018C018C018E010D0608FC00D127F9110>I<04000400040004000C000C001C003C
00FFE01C001C001C001C001C001C001C001C001C001C101C101C101C101C100C100E2003C00C1A
7F9910>I<FC1F801C03801C03801C03801C03801C03801C03801C03801C03801C03801C03801C
03801C03801C03801C07800C07800E1B8003E3F014127F9117>I<FF07E03C03801C01001C0100
0E02000E020007040007040007040003880003880003D80001D00001D00000E00000E00000E000
00400013127F9116>I<FF3FCFE03C0F03801C0701801C0701001C0B01000E0B82000E0B82000E
1182000711C4000711C4000720C40003A0E80003A0E80003C0680001C0700001C0700001803000
008020001B127F911E>I<7F8FF00F03800F030007020003840001C80001D80000F00000700000
780000F800009C00010E00020E000607000403801E07C0FF0FF81512809116>I<FF07E03C0380
1C01001C01000E02000E020007040007040007040003880003880003D80001D00001D00000E000
00E00000E000004000004000008000008000F08000F10000F300006600003C0000131A7F9116>
I<7FFC70386038407040F040E041C003C0038007000F040E041C043C0C380870087038FFF80E12
7F9112>I E /Fp 7 117 df<00038000000380000007C0000007C0000007C000000FE000000FE0
00001FF000001BF000001BF0000031F8000031F8000061FC000060FC0000E0FE0000C07E0000C0
7E0001803F0001FFFF0003FFFF8003001F8003001F8006000FC006000FC00E000FE00C0007E0FF
C07FFEFFC07FFE1F1C7E9B24>65 D<0FF8001C1E003E0F803E07803E07C01C07C00007C0007FC0
07E7C01F07C03C07C07C07C0F807C0F807C0F807C0780BC03E13F80FE1F815127F9117>97
D<FF0000FF00001F00001F00001F00001F00001F00001F00001F00001F00001F00001F3F801FE1
E01F80701F00781F003C1F003C1F003E1F003E1F003E1F003E1F003E1F003E1F003C1F003C1F00
781F80701EC1E01C3F00171D7F9C1B>I<03FC000E0E001C1F003C1F00781F00780E00F80000F8
0000F80000F80000F80000F800007800007801803C01801C03000E0E0003F80011127E9115>I<
FE3E00FE47001E8F801E8F801E8F801F07001F00001F00001F00001F00001F00001F00001F0000
1F00001F00001F0000FFF000FFF00011127F9114>114 D<1FD830786018E018E018F000FF807F
E07FF01FF807FC007CC01CC01CE01CE018F830CFC00E127E9113>I<0300030003000300070007
000F000F003FFCFFFC1F001F001F001F001F001F001F001F001F001F0C1F0C1F0C1F0C0F080798
03F00E1A7F9913>I E /Fq 3 122 df<FFFFF0FFFFF014027D881B>0 D<020002000200C218F2
783AE00F800F803AE0F278C2180200020002000D0E7E8E12>3 D<060006000600060006000600
06000600FFF0FFF006000600060006000600060006000600060006000600060006000600060006
000600060006000C1D7E9611>121 D E /Fr 51 122 df<70F8FCFC7404040404080810102040
060F7C840E>44 D<FFE0FFE00B027F8B10>I<70F8F8F87005057C840E>I<01F000071C000C0600
1803003803803803807001C07001C07001C07001C0F001E0F001E0F001E0F001E0F001E0F001E0
F001E0F001E0F001E0F001E0F001E0F001E0F001E0F001E07001C07001C07001C07803C0380380
3803801C07000C0600071C0001F00013227EA018>48 D<008003800F80F3800380038003800380
038003800380038003800380038003800380038003800380038003800380038003800380038003
8003800380038007C0FFFE0F217CA018>I<03F0000C1C001007002007804003C04003C08003E0
F003E0F801E0F801E0F801E02003E00003E00003C00003C0000780000700000E00001C00001800
00300000600000C0000180000100000200200400200800201800603000403FFFC07FFFC0FFFFC0
13217EA018>I<1000801E07001FFF001FFE001FF80013E0001000001000001000001000001000
0010000010F800130E001407001803801003800001C00001C00001E00001E00001E00001E07001
E0F001E0F001E0E001C08001C04003C04003802007001006000C1C0003F00013227EA018>53
D<007E0001C1000300800601C00E03C01C03C0180180380000380000780000700000700000F0F8
00F30C00F40600F40300F80380F801C0F001C0F001E0F001E0F001E0F001E0F001E07001E07001
E07001E03801C03801C01803801C03000C0600070C0001F00013227EA018>I<01F800060E0008
03001001802001802000C06000C06000C06000C07000C07801803E01003F02001FC4000FF80003
F80003FC00067F00083F80100F803007C06001C06000E0C000E0C00060C00060C00060C0006060
00406000C03000801803000E0E0003F00013227EA018>56 D<01F000060C000C06001807003803
80700380700380F001C0F001C0F001C0F001E0F001E0F001E0F001E0F001E07001E07003E03803
E01805E00C05E00619E003E1E00001C00001C00001C0000380000380300300780700780600700C
002018001030000FC00013227EA018>I<0001800000018000000180000003C0000003C0000003
C0000005E0000005E000000DF0000008F0000008F0000010F800001078000010780000203C0000
203C0000203C0000401E0000401E0000401E0000800F0000800F0000FFFF000100078001000780
030007C0020003C0020003C0040003E0040001E0040001E00C0000F00C0000F03E0001F8FF800F
FF20237EA225>65 D<FFFFF8000F800E0007800780078003C0078003E0078001E0078001F00780
01F0078001F0078001F0078001F0078001E0078003E0078007C007800F8007803E0007FFFE0007
800780078003C0078001E0078001F0078000F0078000F8078000F8078000F8078000F8078000F8
078000F8078001F0078001F0078003E0078007C00F800F00FFFFFC001D227EA123>I<0007E010
0038183000E0063001C00170038000F0070000F00E0000701E0000701C0000303C0000303C0000
307C0000107800001078000010F8000000F8000000F8000000F8000000F8000000F8000000F800
0000F800000078000000780000107C0000103C0000103C0000101C0000201E0000200E00004007
0000400380008001C0010000E0020000381C000007E0001C247DA223>I<FFFFF0000F801E0007
800700078003C0078001C0078000E0078000F007800078078000780780007C0780003C0780003C
0780003C0780003E0780003E0780003E0780003E0780003E0780003E0780003E0780003E078000
3E0780003C0780003C0780007C0780007807800078078000F0078000E0078001E0078003C00780
07000F801E00FFFFF8001F227EA125>I<FFFFFFC00F8007C0078001C0078000C0078000400780
004007800060078000200780002007800020078020200780200007802000078020000780600007
80E00007FFE0000780E00007806000078020000780200007802000078020080780000807800008
078000100780001007800010078000300780003007800070078000E00F8003E0FFFFFFE01D227E
A121>I<FFFC3FFF0FC003F0078001E0078001E0078001E0078001E0078001E0078001E0078001
E0078001E0078001E0078001E0078001E0078001E0078001E0078001E007FFFFE0078001E00780
01E0078001E0078001E0078001E0078001E0078001E0078001E0078001E0078001E0078001E007
8001E0078001E0078001E0078001E00FC003F0FFFC3FFF20227EA125>72
D<FFFC0FC007800780078007800780078007800780078007800780078007800780078007800780
07800780078007800780078007800780078007800780078007800FC0FFFC0E227EA112>I<03FF
F0001F00000F00000F00000F00000F00000F00000F00000F00000F00000F00000F00000F00000F
00000F00000F00000F00000F00000F00000F00000F00000F00000F00000F00000F00000F00700F
00F80F00F80F00F80E00F01E00401C0020380018700007C00014237EA119>I<FFFC03FF000FC0
00F800078000600007800040000780008000078001000007800200000780040000078008000007
8010000007802000000780400000078080000007818000000783C000000787E000000789E00000
0788F000000790F0000007A078000007C03C000007803C000007801E000007800F000007800F00
000780078000078007C000078003C000078001E000078001E000078000F000078000F8000FC000
FC00FFFC07FF8021227EA126>I<FFC00003FF0FC00003F007C00003E005E00005E005E00005E0
04F00009E004F00009E004F00009E004780011E004780011E004780011E0043C0021E0043C0021
E0043C0021E0041E0041E0041E0041E0040F0081E0040F0081E0040F0081E004078101E0040781
01E004078101E00403C201E00403C201E00401E401E00401E401E00401E401E00400F801E00400
F801E00400F801E004007001E00E007001E01F007003F0FFE0203FFF28227EA12D>77
D<FF8007FF07C000F807C0007005E0002004F0002004F0002004780020047C0020043C0020041E
0020041F0020040F002004078020040780200403C0200401E0200401E0200400F0200400F82004
00782004003C2004003E2004001E2004000F2004000F20040007A0040003E0040003E0040001E0
040001E0040000E00E0000601F000060FFE0002020227EA125>I<000FE00000783C0000E00E00
03C00780078003C00F0001E00E0000E01E0000F03C0000783C0000787C00007C7C00007C780000
3C7800003CF800003EF800003EF800003EF800003EF800003EF800003EF800003EF800003EF800
003E7800003C7C00007C7C00007C3C0000783E0000F81E0000F00F0001E00F0001E0078003C003
C0078000E00E0000783C00000FE0001F247DA226>I<FFFFF0000F803C0007800F000780078007
8007C0078003C0078003E0078003E0078003E0078003E0078003E0078003E0078003C0078007C0
0780078007800F0007803C0007FFF0000780000007800000078000000780000007800000078000
0007800000078000000780000007800000078000000780000007800000078000000FC00000FFFC
00001B227EA121>I<FFFFE000000F803C000007800E00000780078000078007C000078003C000
078003E000078003E000078003E000078003E000078003E000078003C000078007C00007800780
0007800E000007803C000007FFE000000780700000078038000007801C000007801E000007800E
000007800F000007800F000007800F000007800F000007800F800007800F800007800F80000780
0F808007800FC080078007C0800FC003C100FFFC01E2000000007C0021237EA124>82
D<03F0200C0C601802603001E07000E0600060E00060E00060E00020E00020E00020F00000F000
007800007F00003FF0001FFE000FFF0003FF80003FC00007E00001E00000F00000F00000708000
70800070800070800070C00060C00060E000C0F000C0C80180C6070081FC0014247DA21B>I<7F
FFFFF87807807860078018400780084007800840078008C007800C800780048007800480078004
800780040007800000078000000780000007800000078000000780000007800000078000000780
000007800000078000000780000007800000078000000780000007800000078000000780000007
80000007800000078000000FC00003FFFF001E227EA123>I<FFF0007FC01F80001F000F00000C
000780000C000780000800078000080003C000100003C000100003E000300001E000200001E000
200000F000400000F000400000F000400000780080000078008000007C018000003C010000003C
010000001E020000001E020000001F020000000F040000000F040000000F8C0000000788000000
078800000003D000000003D000000003F000000001E000000001E000000000C000000000C00000
0000C0000022237FA125>86 D<FFF03FFC03FE1F8007E000F80F0003C000700F0003C000200F00
03C00020078001E00040078001E00040078001E0004003C002F0008003C002F0008003C002F000
8001E00478010001E00478010001E00478010000F0083C020000F0083C020000F0083C020000F8
183E06000078101E04000078101E0400007C101E0400003C200F0800003C200F0800003C200F08
00001E40079000001E40079000001E40079000000F8003E000000F8003E000000F8003E0000007
0001C00000070001C00000070001C0000003000180000002000080002F237FA132>I<FFF0007F
C01F80001F000F80000C00078000080007C000180003E000100001E000200001F000200000F000
400000F800C000007C008000003C010000003E010000001E020000001F040000000F8400000007
8800000007D800000003D000000003E000000001E000000001E000000001E000000001E0000000
01E000000001E000000001E000000001E000000001E000000001E000000001E000000001E00000
0003E00000003FFF000022227FA125>89 D<0FE0001838003C0C003C0E00180700000700000700
00070000FF0007C7001E07003C0700780700700700F00708F00708F00708F00F087817083C2390
0FC1E015157E9418>97 D<0E0000FE00001E00000E00000E00000E00000E00000E00000E00000E
00000E00000E00000E00000E00000E1F000E61C00E80600F00300E00380E003C0E001C0E001E0E
001E0E001E0E001E0E001E0E001E0E001E0E001C0E003C0E00380F00700C80600C41C0083F0017
237FA21B>I<01FE000703000C07801C0780380300780000700000F00000F00000F00000F00000
F00000F00000F000007000007800403800401C00800C010007060001F80012157E9416>I<0000
E0000FE00001E00000E00000E00000E00000E00000E00000E00000E00000E00000E00000E00000
E001F8E00704E00C02E01C01E03800E07800E07000E0F000E0F000E0F000E0F000E0F000E0F000
E0F000E07000E07800E03800E01801E00C02E0070CF001F0FE17237EA21B>I<01FC000707000C
03801C01C03801C07801E07000E0F000E0FFFFE0F00000F00000F00000F00000F0000070000078
00203800201C00400E008007030000FC0013157F9416>I<00007001F198071E180E0E181C0700
1C07003C07803C07803C07803C07801C07001C07000E0E000F1C0019F000100000100000180000
1800001FFE000FFFC00FFFE03800F0600030400018C00018C00018C000186000306000303800E0
0E038003FE0015217F9518>103 D<0E0000FE00001E00000E00000E00000E00000E00000E0000
0E00000E00000E00000E00000E00000E00000E1F800E60C00E80E00F00700F00700E00700E0070
0E00700E00700E00700E00700E00700E00700E00700E00700E00700E00700E00700E00700E0070
FFE7FF18237FA21B>I<1C001E003E001E001C00000000000000000000000000000000000E00FE
001E000E000E000E000E000E000E000E000E000E000E000E000E000E000E000E000E000E00FFC0
0A227FA10E>I<0E0000FE00001E00000E00000E00000E00000E00000E00000E00000E00000E00
000E00000E00000E00000E03FC0E01F00E01C00E01800E02000E04000E08000E10000E38000EF8
000F1C000E1E000E0E000E07000E07800E03C00E01C00E01E00E00F00E00F8FFE3FE17237FA21A
>107 D<0E00FE001E000E000E000E000E000E000E000E000E000E000E000E000E000E000E000E
000E000E000E000E000E000E000E000E000E000E000E000E000E000E000E000E00FFE00B237FA2
0E>I<0E1FC07F00FE60E183801E807201C00F003C00E00F003C00E00E003800E00E003800E00E
003800E00E003800E00E003800E00E003800E00E003800E00E003800E00E003800E00E003800E0
0E003800E00E003800E00E003800E00E003800E00E003800E0FFE3FF8FFE27157F942A>I<0E1F
80FE60C01E80E00F00700F00700E00700E00700E00700E00700E00700E00700E00700E00700E00
700E00700E00700E00700E00700E00700E0070FFE7FF18157F941B>I<01FC000707000C018018
00C03800E0700070700070F00078F00078F00078F00078F00078F00078F000787000707800F038
00E01C01C00E038007070001FC0015157F9418>I<0E1F00FE61C00E80600F00700E00380E003C
0E001C0E001E0E001E0E001E0E001E0E001E0E001E0E001E0E003C0E003C0E00380F00700E80E0
0E41C00E3F000E00000E00000E00000E00000E00000E00000E00000E00000E0000FFE000171F7F
941B>I<0E3CFE461E8F0F0F0F060F000E000E000E000E000E000E000E000E000E000E000E000E
000E000F00FFF010157F9413>114 D<0F8830786018C018C008C008E008F0007F803FE00FF001
F8003C801C800C800CC00CC008E018D0308FC00E157E9413>I<02000200020002000600060006
000E001E003E00FFF80E000E000E000E000E000E000E000E000E000E000E000E040E040E040E04
0E040E040708030801F00E1F7F9E13>I<0E0070FE07F01E00F00E00700E00700E00700E00700E
00700E00700E00700E00700E00700E00700E00700E00700E00700E00F00E00F006017003827800
FC7F18157F941B>I<FFC1FE1E00780E00300E00200E0020070040070040038080038080038080
01C10001C10000E20000E20000E20000740000740000380000380000380000100017157F941A>
I<FF8FF8FF1E01E03C1C01C0180E01C0180E01E0100E01E0100702602007027020070270200384
3040038438400384384001C8188001C81C8001C81C8000F00D0000F00F0000F00F000060060000
6006000060060020157F9423>I<FF83FE1F01F00E00C007008003810003830001C20000E40000
7800007800003800003C00004E00008E000187000103800201C00401E00C00E03E01F0FF03FE17
157F941A>I<FFC1FE1E00780E00300E00200E002007004007004003808003808003808001C100
01C10000E20000E20000E200007400007400003800003800003800001000001000002000002000
002000004000F04000F08000F180004300003C0000171F7F941A>I E /Fs
25 122 df<78FCFCFCFC780000000000000000000000000000000000000078FCFCFCFC78061F7A
9E12>58 D<00000300000000000300000000000300000000000780000000000780000000000FC0
000000000FC0000000000FC00000000017E00000000013E00000000013E00000000023F0000000
0021F00000000021F00000000040F80000000040F80000000040F800000000807C00000000807C
00000001807E00000001003E00000001003E00000002003F00000002001F00000002001F000000
04000F80000004000F80000004000F800000080007C00000080007C00000180007E000001FFFFF
E000001FFFFFE00000200003F00000200001F00000200001F00000400001F80000400000F80000
400000F800008000007C00008000007C00008000007C00010000003E00010000003E0003000000
3F00030000001F00070000001F001F8000003F80FFE00003FFFCFFE00003FFFC2E327EB132>65
D<00003FE0010001FFF8030007F01E03001F800307003E000087007800004F00F000002F01E000
001F03C000000F078000000F0F800000070F000000071F000000031E000000033E000000033C00
0000017C000000017C000000017C000000017800000000F800000000F800000000F800000000F8
00000000F800000000F800000000F800000000F800000000F800000000F800000000F800000000
78000000007C000000007C000000017C000000013C000000013E000000011E000000011F000000
020F000000020F80000006078000000403C000000801E000000800F00000100078000020003E00
00C0001F8003800007F00F000001FFFC0000003FE00028337CB130>67 D<FFFFC00000FFFFC000
0007F000000003E000000003E000000003E000000003E000000003E000000003E000000003E000
000003E000000003E000000003E000000003E000000003E000000003E000000003E000000003E0
00000003E000000003E000000003E000000003E000000003E000000003E000000003E000000003
E000000003E000000003E000000003E000000003E000000003E000000003E000004003E0000040
03E000004003E000004003E000008003E000008003E000008003E000008003E000018003E00001
8003E000038003E000038003E000078003E0000F0003E0003F0007E000FF00FFFFFFFF00FFFFFF
FF0022317CB029>76 D<FFFFFFC000FFFFFFF80007E0007E0003E0001F0003E000078003E00003
C003E00001E003E00001F003E00001F003E00000F003E00000F803E00000F803E00000F803E000
00F803E00000F803E00000F803E00000F003E00001F003E00001E003E00003E003E00003C003E0
00078003E0001F0003E0007C0003FFFFF00003E000000003E000000003E000000003E000000003
E000000003E000000003E000000003E000000003E000000003E000000003E000000003E0000000
03E000000003E000000003E000000003E000000003E000000003E000000003E000000003E00000
0003E000000007F0000000FFFF800000FFFF80000025317CB02D>80 D<007F802001FFE02007C0
78600F001C601E0006E03C0003E0380001E0780000E0700000E070000060F0000060F0000060F0
000020F0000020F0000020F8000020F80000007C0000007E0000003F0000003FC000001FF80000
0FFF800007FFF80003FFFC0000FFFF00000FFF800000FFC000001FE0000007E0000003F0000001
F0000000F0000000F8000000F88000007880000078800000788000007880000078C0000078C000
0070E00000F0E00000E0F00000E0F80001C0EC000380C7000700C1F01E00807FFC00800FF0001D
337CB125>83 D<7FFFFFFFFFE07FFFFFFFFFE07E000F8007E078000F8001E070000F8000E06000
0F80006040000F80002040000F800020C0000F800030C0000F80003080000F80001080000F8000
1080000F80001080000F80001080000F80001080000F80001000000F80000000000F8000000000
0F80000000000F80000000000F80000000000F80000000000F80000000000F80000000000F8000
0000000F80000000000F80000000000F80000000000F80000000000F80000000000F8000000000
0F80000000000F80000000000F80000000000F80000000000F80000000000F80000000000F8000
0000000F80000000000F80000000000F80000000000F80000000000F80000000000F8000000000
0F80000000000F80000000001FC00000000FFFFF8000000FFFFF80002C317EB030>I<00FE0000
0303C0000C00E00010007000100038003C003C003E001C003E001E003E001E0008001E0000001E
0000001E0000001E00000FFE0000FC1E0003E01E000F801E001F001E003E001E003C001E007C00
1E00F8001E04F8001E04F8001E04F8003E04F8003E0478003E047C005E043E008F080F0307F003
FC03E01E1F7D9E21>97 D<07800000FF800000FF8000000F800000078000000780000007800000
078000000780000007800000078000000780000007800000078000000780000007800000078000
0007800000078000000781FC0007860700078801C0079000E007A0007007C00078078000380780
003C0780003C0780001E0780001E0780001F0780001F0780001F0780001F0780001F0780001F07
80001F0780001F0780001F0780001E0780003E0780003C0780003C0780007807C00070072000F0
072001E00618038006060F000401F80020327EB125>I<003F8000E0600380180700040F00041E
001E1C003E3C003E7C003E7C0008780000F80000F80000F80000F80000F80000F80000F80000F8
0000F800007800007C00007C00003C00011E00011E00020F000207000403801800E060003F8018
1F7D9E1D>I<000001E000003FE000003FE0000003E0000001E0000001E0000001E0000001E000
0001E0000001E0000001E0000001E0000001E0000001E0000001E0000001E0000001E0000001E0
000001E0001F81E000F061E001C019E0078005E00F0003E00E0003E01E0001E03C0001E03C0001
E07C0001E0780001E0F80001E0F80001E0F80001E0F80001E0F80001E0F80001E0F80001E0F800
01E0F80001E0780001E0780001E03C0001E03C0001E01C0001E01E0003E00E0005E0070009E003
8011F000E061FF003F81FF20327DB125>I<003F800000E0E0000380380007003C000E001E001E
001E001C000F003C000F007C000F0078000F8078000780F8000780F8000780FFFFFF80F8000000
F8000000F8000000F8000000F8000000F8000000780000007C0000003C0000003C0000801E0000
800E0001000F0002000780020001C00C0000F03000001FC000191F7E9E1D>I<0007E0001C1000
383800707C00E07C01E07C01C03803C00003C00003C00003C00003C00003C00003C00003C00003
C00003C00003C00003C000FFFFC0FFFFC003C00003C00003C00003C00003C00003C00003C00003
C00003C00003C00003C00003C00003C00003C00003C00003C00003C00003C00003C00003C00003
C00003C00003C00003C00003C00003C00007E0007FFF007FFF0016327FB114>I<07000F801F80
1F800F800700000000000000000000000000000000000000000000000780FF80FF800F80078007
800780078007800780078007800780078007800780078007800780078007800780078007800780
0780078007800FC0FFF8FFF80D307EAF12>105 D<0780FF80FF800F8007800780078007800780
078007800780078007800780078007800780078007800780078007800780078007800780078007
800780078007800780078007800780078007800780078007800780078007800780078007800FC0
FFFCFFFC0E327EB112>108 D<0780FE001FC000FF83078060F000FF8C03C18078000F9001E200
3C0007A001E4003C0007A000F4001E0007C000F8001E0007C000F8001E00078000F0001E000780
00F0001E00078000F0001E00078000F0001E00078000F0001E00078000F0001E00078000F0001E
00078000F0001E00078000F0001E00078000F0001E00078000F0001E00078000F0001E00078000
F0001E00078000F0001E00078000F0001E00078000F0001E00078000F0001E00078000F0001E00
078000F0001E00078000F0001E000FC001F8003F00FFFC1FFF83FFF0FFFC1FFF83FFF0341F7E9E
38>I<0780FE0000FF83078000FF8C03C0000F9001E00007A001E00007A000F00007C000F00007
C000F000078000F000078000F000078000F000078000F000078000F000078000F000078000F000
078000F000078000F000078000F000078000F000078000F000078000F000078000F000078000F0
00078000F000078000F000078000F000078000F000078000F0000FC001F800FFFC1FFF80FFFC1F
FF80211F7E9E25>I<001FC00000F0780001C01C00070007000F0007801E0003C01C0001C03C00
01E03C0001E0780000F0780000F0780000F0F80000F8F80000F8F80000F8F80000F8F80000F8F8
0000F8F80000F8F80000F8780000F07C0001F03C0001E03C0001E01E0003C01E0003C00F000780
07800F0001C01C0000F07800001FC0001D1F7E9E21>I<0781FC00FF860700FF8803C00F9001E0
07A000F007C00078078000780780003C0780003C0780003E0780001E0780001F0780001F078000
1F0780001F0780001F0780001F0780001F0780001F0780001F0780003E0780003E0780003C0780
007C0780007807C000F007A000F007A001E00798038007860F000781F800078000000780000007
80000007800000078000000780000007800000078000000780000007800000078000000FC00000
FFFC0000FFFC0000202D7E9E25>I<0783E0FF8C18FF907C0F907C07A07C07C03807C00007C000
07C000078000078000078000078000078000078000078000078000078000078000078000078000
0780000780000780000780000780000780000780000FC000FFFE00FFFE00161F7E9E19>114
D<01FC100E03301800F0300070600030E00030E00010E00010E00010F00010F800007E00003FF0
001FFF000FFFC003FFE0003FF00001F80000F880003C80003C80001CC0001CC0001CE0001CE000
18F00038F00030CC0060C301C080FE00161F7E9E1A>I<00400000400000400000400000400000
C00000C00000C00001C00001C00003C00007C0000FC0001FFFE0FFFFE003C00003C00003C00003
C00003C00003C00003C00003C00003C00003C00003C00003C00003C00003C00003C00003C00003
C01003C01003C01003C01003C01003C01003C01003C01001C02001E02000E0400078C0001F0014
2C7FAB19>I<078000F000FF801FF000FF801FF0000F8001F000078000F000078000F000078000
F000078000F000078000F000078000F000078000F000078000F000078000F000078000F0000780
00F000078000F000078000F000078000F000078000F000078000F000078000F000078000F00007
8000F000078001F000078001F000078001F000038002F00003C004F00001C008F800007030FF80
001FC0FF80211F7E9E25>I<FFF801FF80FFF801FF800FC0007C00078000380007C000300003C0
00200003C000200001E000400001E000400001F000400000F000800000F0008000007801000000
78010000007C010000003C020000003C020000001E040000001E040000001F040000000F080000
000F080000000790000000079000000007D000000003E000000003E000000001C000000001C000
000001C000000000800000211F7F9E23>I<FFF801FF80FFF801FF800FC0007C00078000380007
C000300003C000200003C000200001E000400001E000400001F000400000F000800000F0008000
00780100000078010000007C010000003C020000003C020000001E040000001E040000001F0400
00000F080000000F080000000790000000079000000007D000000003E000000003E000000001C0
00000001C000000001C00000000080000000008000000001000000000100000000010000000002
000000000200000000040000007004000000F80C000000F808000000F810000000703000000030
400000001F80000000212D7F9E23>121 D E end
%%EndProlog
%%BeginSetup
%%Feature: *Resolution 300
TeXDict begin
%%EndSetup
%%Page: 1 1
bop 384 339 a Fs(CCL:)21 b(A)h(P)n(ortable)g(and)f(T)-6 b(unable)21
b(Collectiv)n(e)160 431 y(Comm)n(unication)f(Library)i(for)f(Scalable)g(P)n
(arallel)h(Computers)209 588 y Fr(V)l(asan)o(th)17 b(Bala)495
570 y Fq(y)571 588 y Fr(Jehosh)o(ua)g(Bruc)o(k)910 570 y Fq(\003)985
588 y Fr(Rob)q(ert)f(Cypher)1305 570 y Fq(\003)1381 588 y Fr(P)o(ablo)h
(Elustondo)1733 570 y Fq(\003)348 647 y Fr(Alex)e(Ho)523 629
y Fq(\003)599 647 y Fr(Ching-Tien)i(Ho)918 629 y Fq(\003)994
647 y Fr(Shlomo)e(Kipnis)1306 629 y Fq(y)1382 647 y Fr(Marc)h(Snir)1595
629 y Fq(y)725 763 y Fr(IBM)f(Researc)o(h)g(Division)1218 745
y Fq(\003)694 821 y Fr(Almaden)f(Researc)o(h)i(Cen)o(ter)800
879 y(650)i(Harry)e(Road)759 937 y(San)h(Jose,)f(CA)g(95120)932
995 y(and)725 1054 y(IBM)f(Researc)o(h)g(Division)1218 1036
y Fq(y)657 1112 y Fr(T.J.)h(W)l(atson)h(Researc)o(h)f(Cen)o(ter)830
1170 y(P)l(.O.)f(Bo)o(x)h(218)660 1228 y(Y)l(orkto)o(wn)g(Heigh)o(ts,)f(NY)g
(10598)880 1410 y Fp(Abstract)250 1504 y Fo(A)g(collectiv)o(e)f(comm)o
(unication)e(library)h(for)i(parallel)e(computers)i(includes)g(frequen)o(tly)
g(used)188 1554 y(op)q(erations)j(suc)o(h)h(as)f(broadcast,)i(reduce,)g
(scatter,)h(gather,)e(concatenate,)h(sync)o(hronize,)g(and)188
1604 y(shift.)g(Suc)o(h)15 b(a)f(library)g(pro)o(vides)g(users)i(with)f(a)f
(con)o(v)o(enien)o(t)h(programmi)o(ng)d(in)o(terface,)i(e\016cien)o(t)188
1653 y(comm)o(unicatio)o(n)e(op)q(erations,)j(and)f(the)i(adv)n(an)o(tage)e
(of)g(p)q(ortabilit)o(y)m(.)19 b(A)c(library)f(of)g(this)h(nature,)188
1703 y(the)e(Collectiv)o(e)g(Comm)o(unicati)o(on)d(Library)j(\(CCL\),)g(in)o
(tended)h(for)e(the)i(line)f(of)f(scalable)h(parallel)188 1753
y(computer)g(pro)q(ducts)h(b)o(y)f(IBM,)g(has)g(b)q(een)h(designed.)k(CCL)13
b(is)g(part)g(of)g(the)g(parallel)f(application)188 1803 y(programmi)o(ng)g
(in)o(terface)k(of)e(the)i(recen)o(tly)g(announced)f(IBM)h(9076)e(Scalable)g
(PO)o(WERparallel)188 1853 y(System)j(1)h(\(SP1\).)30 b(In)18
b(this)g(pap)q(er,)h(w)o(e)f(examine)f(sev)o(eral)h(issues)h(related)g(to)f
(the)g(functional-)188 1902 y(it)o(y)m(,)13 b(correctness,)k(and)e(p)q
(erformance)f(of)g(a)h(p)q(ortable)g(collectiv)o(e)f(comm)o(unication)d
(library)j(while)188 1952 y(fo)q(cusing)i(on)f(three)j(no)o(v)o(el)d(asp)q
(ects)j(in)d(the)i(design)f(and)g(implemen)o(tatio)o(n)d(of)j(CCL:)f(\(i\))h
(the)g(in-)188 2002 y(tro)q(duction)g(of)e(pro)q(cess)k(groups,)d(\(ii\))g
(the)h(de\014nition)f(of)g(seman)o(tics)g(that)h(ensures)h(correctness,)188
2052 y(and)e(\(iii\))g(the)h(design)g(of)f(new)h(and)f(tunable)h(algorithms)d
(based)j(on)f(a)h(realistic)f(p)q(oin)o(t-to-p)q(oin)o(t)188
2102 y(comm)o(unicatio)o(n)c(mo)q(del.)960 2727 y Fn(1)p eop
%%Page: 2 2
bop 74 157 a Fm(1)69 b(In)n(tro)r(duction)74 290 y Fn(The)13
b(need)h(for)f(collectiv)o(e)i(comm)o(unication)f(arises)f(frequen)o(tly)g
(in)h(parallel)h(computation.)k(Collectiv)o(e)74 346 y(comm)o(unication)g(op)
q(erations)f(simplify)i(the)e(programming)f(of)h(applications)h(for)f
(parallel)h(comput-)74 403 y(ers,)c(facilitate)h(the)f(implemen)o(tation)h
(of)e(e\016cien)o(t)i(comm)o(unication)g(sc)o(hemes)f(on)g(v)m(arious)g(mac)o
(hines,)74 459 y(promote)d(the)g(p)q(ortabilit)o(y)i(of)e(applications)i
(across)e(di\013eren)o(t)g(arc)o(hitectures,)h(and)g(re\015ect)f(conceptual)
74 516 y(grouping)k(of)f(pro)q(cesses.)20 b(In)c(particular,)g(collectiv)o(e)
h(comm)o(unication)f(is)g(extensiv)o(ely)h(used)f(in)g(man)o(y)74
572 y(scien)o(ti\014c)f(applications)h(for)c(whic)o(h)j(the)f(in)o(terlea)o
(ving)g(of)f(stages)g(of)g(lo)q(cal)i(computations)e(with)h(stages)74
629 y(of)h(global)h(comm)o(unication)g(is)f(p)q(ossible)i(\(see)f([20)o(]\).)
74 716 y(This)21 b(pap)q(er)g(discusses)g(issues)g(related)f(to)g(the)g
(design)h(and)g(implemen)o(tation)g(of)f(a)g(p)q(ortable)g(and)74
773 y(tunable)15 b(Collectiv)o(e)g(Comm)o(unication)f(Library)g(\(CCL\).)f
(This)h(library)h(is)f(in)o(tended)h(for)e(distributed-)74
829 y(memory)h(parallel)j(computers)e(where)g(explicit)i(comm)o(unication)f
(among)e(pro)q(cesses)h(is)g(ac)o(hiev)o(ed)h(via)74 885 y(message-passing.)
32 b(In)20 b(addition)g(to)f(p)q(oin)o(t)h(to)e(p)q(oin)o(t)i(comm)o
(unication)g(op)q(erations,)g(suc)o(h)f(as)g Fl(send)74 942
y Fn(and)i Fl(receive)p Fn(,)f(users)g(can)h(program)e(using)i(CCL)g
(routines)g(for)e(collectiv)o(e)k(op)q(erations.)35 b(The)21
b(set)74 998 y(of)e(collectiv)o(e)h(comm)o(unication)g(op)q(erations)f(in)h
(CCL)e(consists)i(of)e(the)h(follo)o(wing)h(routines:)27 b
Fl(bcast)74 1055 y Fn(|)21 b(one-to-all)g(broadcast,)f Fl(reduce)f
Fn(|)i(all-to-one)g(reduction,)h Fl(combine)d Fn(|)h(all-to-all)i(reduction,)
74 1111 y Fl(scatter)13 b Fn(|)g(one-to-all)i(p)q(ersonalized)g(comm)o
(unication,)f Fl(gather)f Fn(|)h(all-to-one)g(p)q(ersonalized)i(com-)74
1168 y(m)o(unication,)c Fl(concat)d Fn(|)i(all-to-all)g(broadcast,)g
Fl(index)e Fn(|)i(all-to-all)g(p)q(ersonalized)h(comm)o(unication\),)74
1224 y Fl(prefix)j Fn(|)i(scanned)g(reduction,)g Fl(shift)e
Fn(|)i(one-to-one)f(cyclic)i(p)q(erm)o(utation,)e(and)g Fl(sync)p
Fn(|barrier)74 1281 y(sync)o(hronization.)29 b(A)18 b(complete)h(listing)h
(with)e(brief)h(descriptions)g(of)f(the)g(functionalit)o(y)h(of)e(all)i(the)
74 1337 y(CCL)c(routines)h(is)g(pro)o(vided)g(in)g(the)f(App)q(endix.)74
1425 y(The)j(library)g(w)o(as)f(designed)i(for)e(the)h(new)f(IBM)h(line)h(of)
f(scalable)g(parallel)i(computers.)26 b(\(The)18 b(\014rst)74
1481 y(computer)c(of)g(this)g(line)i(of)e(pro)q(ducts,)g(the)g(IBM)h(9076)d
(Scalable)k(PO)o(WERparallel)g(System)e(1)g(\(SP1\),)74 1538
y(has)j(b)q(een)h(announced)f(recen)o(tly)l(.\))25 b(Most)16
b(of)g(CCL)h(is)h(implemen)o(ted)g(as)e(part)g(of)h(the)g(parallel)h(appli-)
74 1594 y(cation)e(programming)e(in)o(terface)i(of)e(SP1.)74
1682 y(A)f(ma)s(jor)f(goal)h(in)h(the)f(design)i(of)d(CCL)i(w)o(as)e(the)h
(creation)h(of)e(a)h(truly)h(p)q(ortable)f(library)h(that)f(can)g(run)74
1738 y(correctly)h(and)f(e\016cien)o(tly)i(on)e(a)h(wide)g(range)f(of)g
(parallel)i(and)e(distributed)i(computer)f(arc)o(hitectures,)74
1795 y(regardless)i(of)f(the)g(top)q(ology)g(of)g(the)h(in)o(terconnection)h
(net)o(w)o(ork)d(and)h(the)h(sp)q(eeds)g(of)f(the)h(pro)q(cessors)74
1851 y(and)e(the)g(comm)o(unication)h(net)o(w)o(ork.)k(Also,)14
b(CCL)g(can)g(b)q(e)h(easily)g(implemen)o(ted)h(on)e(top)f(of)h(message-)74
1907 y(passing)k(libraries)g(suc)o(h)f(as)g(IBM)g(EUI)g([21],)f(IBM)h(VIPER)h
(Op)q(erating)g(System)f([18)o(,)f(23],)g(P)o(arasoft)74 1964
y(Express)f([30)o(],)g(and)g(ONRL)i(PVM)e([6)o(].)74 2052 y(F)l(or)d
(simplicit)o(y)j(and)e(clarit)o(y)g(of)f(the)g(discussion)j(in)e(this)g(pap)q
(er,)g(w)o(e)g(only)g(address)f(scenarios)h(in)h(whic)o(h)74
2108 y(dynamic)23 b(pro)q(cess)f(creation)g(or)g(deletion)h(in)g(run-time)f
(is)h(not)e(p)q(ermitted.)41 b(The)22 b(CCL)g(routines)74 2164
y(can)f(either)h(op)q(erate)e(o)o(v)o(er)g(the)h(en)o(tire)g(set)g(of)f(pro)q
(cesses)i(that)e(are)g(created)h(at)f(the)h(b)q(eginning)i(of)74
2221 y(an)d(application)i(or)d(o)o(v)o(er)g(user-sp)q(eci\014ed)j(groups)e
(of)f(pro)q(cesses.)35 b(F)l(or)19 b(example,)i(a)f(user)g(can)g(view)74
2277 y(sev)o(eral)12 b(pro)q(cesses)f(as)g(forming)g(a)g(t)o(w)o
(o-dimensional)h(arra)o(y)e(and)i(p)q(erforming)g(indep)q(enden)o(t)h
(broadcast)74 2334 y(op)q(erations)i(in)g(di\013eren)o(t)g(columns)h(of)e
(this)h(arra)o(y)l(.)k(Moreo)o(v)o(er,)13 b(the)i(CCL)f(routines)h(can)g
(also)g(op)q(erate)74 2390 y(on)g(groups)f(of)h(pro)q(cesses)g(that)f(are)h
(determined)h(dynamically)l(,)g(namely)l(,)g(in)f(run-time.)21
b(T)l(o)15 b(facilitate)74 2447 y(the)d(use)g(of)f(suc)o(h)h(groups)f(of)g
(pro)q(cesses,)h(CCL)g(includes)h(routines)f(that)f(enable)i(the)e
(de\014nition)j(and)d(the)74 2503 y(handling)18 b(of)e(dynamic)h(Pro)q(cess)f
(Groups.)22 b(Section)17 b(2)f(examines)h(issues)g(related)g(to)e(pro)q(cess)
i(groups)74 2560 y(in)f(CCL.)960 2727 y(2)p eop
%%Page: 3 3
bop 74 157 a Fn(CCL)19 b(is)h(a)f(soft)o(w)o(are)e(la)o(y)o(er)i(that)g(can)g
(sit)h(on)f(top)g(of)f(p)q(oin)o(t-to-p)q(oin)o(t)i(comm)o(unication.)33
b(A)19 b(crucial)74 214 y(step)g(in)h(the)f(design)h(of)f(CCL)g(w)o(as)f(to)g
(de\014ne)i(a)f(simple)i(and)e(realistic)h(mo)q(del)g(for)e(the)i(underlying)
74 270 y(p)q(oin)o(t-to-p)q(oin)o(t)f(comm)o(unication.)28
b(This)19 b(allo)o(ws)f(CCL)f(to)h(b)q(e)g(b)q(oth)g(p)q(ortable)g(and)g
(e\016cien)o(t)h(o)o(v)o(er)e(a)74 327 y(wide)c(range)f(of)g(parallel)i(mac)o
(hines.)20 b(This)13 b(mo)q(del)g(is)g(discussed)h(in)f(Section)g(3.)19
b(In)12 b(particular,)i(Section)74 383 y(3)f(examines)h(sev)o(eral)g
(fundamen)o(tal)f(issues)i(related)e(to)g(the)g(seman)o(tics)h(of)f
(collectiv)o(e)i(comm)o(unication)74 439 y(op)q(erations)g(o)o(v)o(er)g(Pro)q
(cess)g(Groups.)74 527 y(F)l(or)g(CCL)g(to)f(b)q(e)i(scalable)g(and)f
(e\016cien)o(t)h(on)f(a)g(v)m(ariet)o(y)g(of)g(parallel)h(mac)o(hines,)g(it)f
(is)h(imp)q(ortan)o(t)e(that)74 583 y(the)19 b(algorithms)g(designed)i(for)d
(collectiv)o(e)j(comm)o(unication)e(op)q(erations)h(are)e(tunable)i(and)f
(exploit)74 640 y(the)h(c)o(haracteristics)h(of)e(the)h(particular)h
(parallel)h(computer)e(in)h(a)e(w)o(a)o(y)g(that)h(is)g(hidden)i(from)d(the)
74 696 y(user.)h(In)c(Section)g(4,)e(w)o(e)h(address)g(issues)h(related)g(to)
e(the)h(design)i(of)d(tunable)i(algorithms)f(for)g(collec-)74
753 y(tiv)o(e)j(comm)o(unication)g(op)q(erations)g(in)g(CCL.)f(Finally)l(,)j
(in)e(Section)g(5)g(w)o(e)f(presen)o(t)g(some)g(concluding)74
809 y(remarks.)74 982 y Fm(2)69 b(Pro)r(cess)23 b(Groups)h(in)e(CCL)74
1115 y Fn(Pro)q(cess)12 b(Groups)f(is)h(a)g(mec)o(hanism)g(for)f(grouping)h
(pro)q(cesses)g(in)o(to)g(logical)h(sets)e(and)h(for)f(manipulating)74
1171 y(and)19 b(comm)o(unicating)h(among)e(pro)q(cesses)i(in)f(suc)o(h)h
(sets.)31 b(This)19 b(section)h(describ)q(es)g(the)f(concept)h(of)74
1228 y(Pro)q(cess)15 b(Groups)f(in)i(CCL,)e(whic)o(h)i(is)f(based)g(on)g(a)f
(similar)i(concept)g(that)e(w)o(as)g(presen)o(ted)h(in)h([2)o(].)j(\(In)74
1284 y(the)c(IBM)h(EUI)f(do)q(cumen)o(tation)h([21)o(],)f(Pro)q(cess)g
(Groups)f(are)h(called)i(T)l(ask)e(Groups.\))74 1435 y Fk(2.1)56
b(De\014ning)18 b(Pro)r(cess)g(Groups)74 1552 y Fn(A)13 b(Pro)q(cess)g(Group)
g(is)h(an)f(ordered)g(set)g(of)g(pro)q(cesses)g(that)g(has)g(a)g(system-wide)
g(unique)i(name.)k(It)13 b(can)74 1609 y(b)q(e)j(op)q(erated)e(up)q(on)i(as)e
(a)g(single)j(ob)s(ject.)i(Eac)o(h)14 b(Pro)q(cess)h(Group)f(is)h(iden)o
(ti\014ed)i(b)o(y)e(a)f(unique)j(Pro)q(cess)74 1665 y(Group)f(Iden)o
(ti\014er)i(\(PGID\))d(in)i(an)f(application)i(program.)k(All)17
b(the)g(pro)q(cesses)f(that)g(are)g(created)g(at)74 1721 y(the)d
(initialization)i(of)d(an)g(application)i(b)q(elong)g(to)d(the)i
(prede\014ned)h(Pro)q(cess)e(Group)g Fl(ALL)p Fn(.)g(In)h(addition,)74
1778 y(eac)o(h)i(pro)q(cess)h(has)f(a)f(unique)j(Pro)q(cess)e(Iden)o
(ti\014er)h(\(PID\))f(named)g Fl(mypid)g Fn(whic)o(h)h(could)g(b)q(e)f(iden)o
(ti\014ed)74 1834 y(with)h(the)f(singleton)h(set)f(consisting)h(only)g(of)f
(that)f(pro)q(cess.)74 1922 y(There)e(are)f(t)o(w)o(o)f(mec)o(hanisms)i(in)h
(CCL)e(for)g(de\014ning)i(new)f(Pro)q(cess)f(Groups.)19 b(One)12
b(mec)o(hanism)g(can)g(b)q(e)74 1978 y(used)g(to)f(de\014ne)i(a)f(new)g(Pro)q
(cess)f(Group)h(b)o(y)f(pro)o(viding)i(an)e(explicit)j(list)f(of)e(pro)q
(cess)h(iden)o(ti\014ers)h(\(PIDs\))74 2035 y(that)h(comprise)h(the)g(new)g
(Pro)q(cess)f(Group.)20 b(This)15 b(mec)o(hanism)g(requires)g(eac)o(h)g(mem)o
(b)q(er)g(pro)q(cess)g(of)f(a)74 2091 y(to-b)q(e-formed)j(new)f(Pro)q(cess)g
(Group)g(to)g(kno)o(w)g(the)g(PIDs)h(of)e(all)j(the)e(pro)q(cesses)h(that)e
(are)h(mem)o(b)q(ers)74 2148 y(of)f(this)g(group.)k(Using)d(this)f(mec)o
(hanism,)h(all)f(the)g(pro)q(cesses)h(that)e(comprise)h(a)g(new)g(Pro)q(cess)
g(Group)74 2204 y(m)o(ust)g(call)h(the)f Fl(group\(\))g Fn(routine:)146
2290 y Fl(pgid)23 b(=)h(group\(size,)e(list,)h(label\);)74
2377 y Fn(The)18 b(usage)g(of)g Fl(label)f Fn(will)i(b)q(ecome)g(clear)f
(later.)28 b(The)18 b(call)i(to)d Fl(group\(\))g Fn(m)o(ust)g(b)q(e)i(made)f
(b)o(y)f(eac)o(h)74 2433 y(mem)o(b)q(er)d(pro)q(cess)f(of)g(the)g(to-b)q
(e-formed)g(Pro)q(cess)g(Group,)g(and)h(eac)o(h)f(mem)o(b)q(er)g(pro)q(cess)h
(m)o(ust)e(supply)74 2490 y(the)19 b(same)g(list)g(of)g(PIDs)g(and)g(in)h
(the)f(same)f(order.)31 b(Pro)q(cesses)19 b(that)f(b)q(elong)i(to)e(the)h
(new)h(Pro)q(cess)74 2546 y(Group)e(obtain)g(a)f(unique)i(PGID)f(for)f(this)h
(group.)27 b(Pro)q(cesses)18 b(that)f(do)h(not)f(wish)i(to)e(b)q(e)h(part)f
(of)h(a)74 2602 y(new)e(Pro)q(cess)f(Group)g(do)g(not)g(call)h(the)f
Fl(group\(\))f Fn(routine.)960 2727 y(3)p eop
%%Page: 4 4
bop 74 157 a Fn(The)17 b(other)f(mec)o(hanism)h(for)f(de\014ning)h(new)g(Pro)
q(cess)f(Groups)g(in)i(CCL)e(is)h(b)o(y)f(partitioning)i(existing)74
214 y(Pro)q(cess)d(Groups)f(according)h(to)f(some)g(criteria.)20
b(This)15 b(mec)o(hanism)g(do)q(es)g(not)f(require)i(the)e(mem)o(b)q(ers)74
270 y(of)i(a)f(to-b)q(e-formed)i(Pro)q(cess)e(Group)h(to)f(kno)o(w)h(the)g
(PIDs)g(of)g(all)h(the)f(pro)q(cesses)g(that)f(will)j(comprise)74
327 y(this)g(group.)28 b(When)18 b(partitioning)g(an)g(existing)h(Pro)q(cess)
f(Group)f Fl(G)p Fn(,)g(sev)o(eral)h(new)g(Pro)q(cess)g(Groups)74
383 y(are)13 b(created)h(as)f(follo)o(ws.)20 b(Ev)o(ery)13
b(pro)q(cess)h(in)g(the)g(group)f Fl(G)g Fn(supplies)j(a)d(lo)q(cal)i(in)o
(teger)f(v)m(alue)h(to)e Fl(myval)p Fn(.)74 439 y(All)h(the)e(pro)q(cesses)h
(that)e(supply)j(the)e(same)g(v)m(alue)i(to)d Fl(myval)h Fn(are)g(made)g(mem)
o(b)q(ers)g(of)g(the)h(same)f(newly)74 496 y(partitioned)j(Pro)q(cess)g
(Group.)k(The)c(partitioning)g(of)f(an)h(existing)g(Pro)q(cess)g(Group)f(is)h
(p)q(erformed)g(b)o(y)74 552 y(the)g Fl(partition\(\))f Fn(routine:)146
640 y Fl(pgid)23 b(=)h(partition\(G,)e(myval,)h(key\);)74 728
y Fn(The)c(call)g(to)e Fl(partition\(\))g Fn(m)o(ust)h(b)q(e)h(made)f(b)o(y)g
(ev)o(ery)g(mem)o(b)q(er)g(of)g(the)h(existing)g(Pro)q(cess)f(Group)74
784 y Fl(G)p Fn(.)e(No)g(mem)o(b)q(er)h(of)f(the)g(existing)i(group)e
Fl(G)g Fn(returns)g(from)g(this)h(call)h(un)o(til)f(all)g(pro)q(cesses)g(in)h
(group)e Fl(G)74 841 y Fn(ha)o(v)o(e)i(made)h(the)g(call.)32
b(\(In)19 b(that)f(sense,)h(the)g(call)h(to)e Fl(partition\(\))f
Fn(imp)q(oses)j(an)e(implicit)j(barrier)74 897 y(sync)o(hronization)h(on)e
(the)h(mem)o(b)q(ers)g(of)f Fl(G)p Fn(\).)g(This)h(call)h(results)f(in)h
(partitioning)f(the)g(mem)o(b)q(ers)g(of)74 954 y(group)16
b Fl(G)f Fn(in)o(to)h(as)f(man)o(y)g(new)h(groups)f(as)g(the)h(n)o(um)o(b)q
(er)g(of)f(distinct)i(in)o(teger)f(v)m(alues)h(supplied)h(b)o(y)d(the)74
1010 y(mem)o(b)q(er)h(pro)q(cesses.)74 1098 y(A)e(pro)q(cess)g(can)g
(participate)h(in)f(sev)o(eral)g Fl(group\(\))f Fn(or)h Fl(partition\(\))e
Fn(calls)j(and,)f(th)o(us,)f(b)q(e)i(a)e(mem)o(b)q(er)74 1154
y(of)h(sev)o(eral)h(di\013eren)o(t)f(Pro)q(cess)g(Groups.)19
b(Eac)o(h)c(call)g(to)f Fl(group\(\))f Fn(or)h Fl(partition\(\))f
Fn(ma)o(y)g(corresp)q(ond)74 1211 y(to)19 b(creating)h(Pro)q(cess)f(Groups)h
(based)f(on)h(a)f(new)h(criterion.)34 b(Eac)o(h)19 b(suc)o(h)h(call,)i
(therefore,)e(creates)74 1267 y(unique)d(PGIDs)e(for)f(the)i(resultan)o(t)f
(groups.)74 1355 y(All)20 b(the)e(pro)q(cesses)g(that)g(b)q(elong)h(to)e(a)h
(particular)h(Pro)q(cess)f(Group)g Fl(G)p Fn(,)f(regardless)h(of)g(whether)g
(the)74 1411 y(group)e(w)o(as)e(created)i(b)o(y)g(calling)h
Fl(group\(\))e Fn(or)g Fl(partition\(\))p Fn(,)f(are)i(rank)o(ed)f(from)g(0)h
(to)f Fj(n)10 b Fi(\000)h Fn(1,)k(where)74 1467 y Fj(n)21 b
Fn(is)h(the)f(size)h(of)f(the)g(group.)37 b(The)22 b(ranking)f(of)g(the)g
(pro)q(cesses)g(in)h(a)f(Pro)q(cess)g(Group)g(that)f(w)o(as)74
1524 y(created)14 b(b)o(y)g(a)f(call)i(to)e Fl(group\(\))g
Fn(is)h(the)g(same)f(as)h(the)g(order)f(of)h(the)f(PIDs)h(in)h(the)f(list)g
(supplied)i(to)d(the)74 1580 y Fl(group\(\))i Fn(call.)24 b(The)16
b(ranking)g(of)g(the)g(pro)q(cesses)g(in)h(a)f(Pro)q(cess)g(Group)f(that)h(w)
o(as)f(created)h(b)o(y)g(a)f(call)74 1637 y(to)j Fl(partition\(\))g
Fn(is)h(determined)h(b)o(y)f(the)g(additional)i(parameter,)d
Fl(key)p Fn(,)h(that)f(is)i(supplied)h(to)d(the)74 1693 y Fl(partition\(\))f
Fn(call)i(as)f(an)g(input)h(argumen)o(t.)27 b(Ties)19 b(in)g(the)f(ranking)g
(as)g(a)g(consequence)h(of)f(calling)74 1750 y Fl(partition\(\))c
Fn(are)h(to)f(b)q(e)i(brok)o(en)f(b)o(y)g(pro)q(cesses')h(ranking)f(in)h(the)
f(paren)o(t)g(group.)74 1837 y(F)l(or)i(example,)i(supp)q(ose)f(that)f(there)
h(are)f(7)g(pro)q(cesses,)h(with)g(PID's)f(from)g(0)g(to)g(6)h(\(this)f(is)h
(the)g Fl(ALL)74 1894 y Fn(group\).)27 b(F)l(or)17 b(con)o(v)o(enience,)i(w)o
(e)f(refer)f(to)g(a)g(pro)q(cess)h(with)g(an)g(ev)o(en)g(\(resp.)27
b(o)q(dd\))18 b(PID)f(as)h(an)f Fh(even)74 1950 y Fn(\(resp.)34
b Fh(o)n(dd)p Fn(\))19 b(pro)q(cess.)34 b(Supp)q(ose)21 b(that)e(w)o(e)h(w)o
(an)o(t)e(to)h(create)h(the)g(follo)o(wing)g(t)o(w)o(o)f(t)o(yp)q(es)h(of)f
(groups)74 2007 y(while)i(main)o(taining)g(the)f(original)g(ordering:)29
b Fj(G)20 b Fn(in)g(eac)o(h)g(ev)o(en)g(pro)q(cess)g(is)g(de\014ned)h(as)e
(the)h(group)74 2063 y(that)c(consists)h(of)f(all)h(ev)o(en)g(pro)q(cesses)g
(and)g Fj(G)f Fn(in)h(eac)o(h)g(o)q(dd)g(pro)q(cess)f(is)h(de\014ned)h(as)e
(the)h(group)f(that)74 2120 y(consists)g(of)f(all)h(o)q(dd)g(pro)q(cesses.)22
b(There)15 b(are)h(t)o(w)o(o)e(w)o(a)o(ys)g(to)h(do)h(it.)21
b(The)16 b(\014rst)f(\(the)g(static\))g(is)h(to)f(ha)o(v)o(e)74
2176 y(the)g(follo)o(wing)h(co)q(de:)146 2264 y Fl(EXAMPLE)23
b(1:)146 2320 y(if)g(\(pid_is_even\(\)\))f({)217 2377 y(label)i(=)f(EVEN;)217
2433 y(G)h(=)g(group\(4,)f([0,2,4,6],)f(label\);)146 2490 y(})146
2546 y(else)h({)217 2602 y(label)h(=)f(ODD;)960 2727 y Fn(4)p
eop
%%Page: 5 5
bop 217 157 a Fl(G)24 b(=)g(group\(3,)f([1,3,5],)f(label\);)146
214 y(})74 305 y Fn(The)16 b(second)f(approac)o(h)g(\(the)g(dynamic\))h(is)g
(to)e(use)i Fl(partition)p Fn(.)i(The)e(co)q(de)f(in)i(this)e(case)g(is:)146
397 y Fl(G)23 b(=)h(partition\(ALL,)e(is_mypid_odd,)g(key\);)74
489 y Fn(Consider)d(another)e(example)i(where)f(all)h(pro)q(cesses)f(are)g
(partitioned)g(in)o(to)g(t)o(w)o(o)f(groups)g(dep)q(ending)74
545 y(on)e(some)g(lo)q(cally)i(computed)f(v)m(alue)g(\(temp)q(erature\).)j
(The)d(co)q(de)f(lo)q(oks)h(lik)o(e:)146 637 y Fl(EXAMPLE)23
b(2:)146 693 y(if)g(\(temperature)g(<)g(BOILING\))217 750 y(myval)h(=)f
(COLD;)146 806 y(else)217 863 y(myval)h(=)f(HOT;)146 919 y(key)g(=)h
(temperature;)146 976 y(G)f(=)h(partition\(ALL,)e(myval,)h(key\);)74
1067 y Fn(In)16 b(this)f(example,)h(eac)o(h)f(of)f(the)h(t)o(w)o(o)f(newly)i
(formed)f(groups)f(is)i(sorted)e(according)i(to)e(the)h(ascending)74
1124 y(order)g(of)g Fl(key)p Fn(,)f(whic)o(h)i(w)o(as)f(assigned)g(the)h(in)o
(teger)f(v)m(alue)i(of)d(temp)q(erature.)74 1211 y(CCL)j(also)g(pro)o(vides)g
(utilit)o(y)i(routines)e(for)f(pro)q(cesses)i(to)e(determine)i(the)f(size)h
(of)e(a)h(Pro)q(cess)g(Group)74 1268 y(\()p Fl(getsize\(G\))p
Fn(\),)f(to)i(obtain)h(the)g(list)h(of)e(PIDs)g(in)i(a)e(giv)o(en)h(Pro)q
(cess)g(Group)f(\()p Fl(getmembers\(G\))p Fn(\),)e(to)74 1324
y(query)f(the)f(rank)g(of)g(a)g(pro)q(cess)h(in)g(a)f(Pro)q(cess)h(Group)f
(\()p Fl(getrank\(G,)22 b(pid\))p Fn(\),)13 b(and)i(to)e(query)i(the)f(PID)74
1381 y(of)j(a)g(pro)q(cess)h(with)f(a)h(giv)o(en)f(rank)g(in)i(a)e(Pro)q
(cess)g(Group)g(\()p Fl(getpid\(G,)22 b(rank\))p Fn(\).)k(Finally)l(,)19
b(the)e(user)74 1437 y(can)d(call)i Fl(getlabel\(G\))c Fn(to)i(obtain)g(the)g
Fl(label)g Fn(supplied)i(to)e Fl(group\(\))f Fn(and)h(the)g
Fl(my)p 1550 1437 15 2 v 17 w(val)g Fn(supplied)i(to)74 1494
y Fl(partition\(\))p Fn(.)74 1646 y Fk(2.2)56 b(Using)18 b(Pro)r(cess)g
(Groups)74 1763 y Fn(Once)f(established,)g(Pro)q(cess)f(Groups)f(allo)o(w)h
(en)o(tire)g(collections)i(of)d(pro)q(cesses)h(to)f(b)q(e)i(iden)o(ti\014ed)g
(and)74 1819 y(manipulated)k(in)f(a)g(single)g(call.)34 b(Note)20
b(that)e(when)i(di\013eren)o(t)g(actions)g(are)f(required)h(for)f(di\013eren)
o(t)74 1876 y(disjoin)o(t)f(groups,)e(the)h(user)g(can)g(use)g
Fl(label)f Fn(to)g(distinguish)j(groups.)24 b(F)l(or)16 b(example,)i(the)f
(follo)o(wing)74 1932 y(co)q(de)f(ma)o(y)e(follo)o(w)i(the)f(co)q(de)h(of)f
(Example)g(1)g(ab)q(o)o(v)o(e.)146 2024 y Fl(if)23 b(\(getlabel\(G\))g(==)g
(EVEN\))g({)217 2080 y(code-segment-1;)146 2137 y(})146 2193
y(else)47 b({)217 2250 y(code-segment-2;)146 2306 y(})74 2398
y Fn(As)15 b(another)g(example,)h(the)f(follo)o(wing)h(co)q(de)g(ma)o(y)e
(follo)o(w)i(the)f(co)q(de)h(of)e(Example)i(2)f(ab)q(o)o(v)o(e.)146
2490 y Fl(if)23 b(\(getlabel\(G\))g(==)g(COLD\))g({)217 2546
y(code-segment-1;)146 2602 y(})960 2727 y Fn(5)p eop
%%Page: 6 6
bop 146 157 a Fl(else)23 b({)217 214 y(code-segment-2;)146
270 y(})74 365 y Fn(A)e(group-wide)h(transaction)f(of)f(particular)i(in)o
(terest)f(is)h(collectiv)o(e)g(comm)o(unication)g(o)o(v)o(er)e(all)i(the)74
421 y(mem)o(b)q(ers)15 b(of)f(a)h(Pro)q(cess)f(Group.)19 b(F)l(or)c(example,)
g(a)f(group-wide)i(reduction)f(op)q(eration,)g(whic)o(h)g(tak)o(es)74
478 y(the)g(PGID)g(of)g(a)g(Pro)q(cess)g(Group)g(as)g(a)g(parameter,)f(can)h
(b)q(e)h(written)f(as:)146 573 y Fl(combine\(G,)22 b(rfunc\(\),)h(data,)g
(result\);)74 668 y Fn(Suc)o(h)15 b(a)e(routine)i(could)g(implemen)o(t)g(a)e
(reduction,)i(using)g(a)e(supplied)k(asso)q(ciativ)o(e)d(function)h
Fl(rfunc\(\))74 724 y Fn(to)21 b(com)o(bine)i(data)e(from)g(the)h(mem)o(b)q
(ers)g(of)g(Pro)q(cess)f(Group)h Fl(G)p Fn(,)f(and)h(return)g(the)g(\014nal)h
(result)f(of)74 781 y(the)17 b(reduction)h(to)f(eac)o(h)g(mem)o(b)q(er)g(in)h
(the)f(bu\013er)g Fl(result)p Fn(.)24 b(All)19 b(pro)q(cesses)e(in)h(the)f
(group)g(mak)o(e)f(the)74 837 y(call)k(with)f(the)g(same)f(actual)h
(parameters)f Fl(G)g Fn(and)h Fl(rfunc\(\))p Fn(.)29 b(Similarly)l(,)22
b(a)c(group-wide)h(broadcast)74 894 y(op)q(eration)d(can)f(b)q(e)h(written)f
(as:)146 989 y Fl(bcast\(G,)23 b(orig,)g(data\);)74 1084 y
Fn(This)14 b(routine)f(w)o(ould)g(implemen)o(t)h(a)f(broadcast)f(comm)o
(unication)h(from)f(a)h(particular)g(mem)o(b)q(er)g(of)f(the)74
1140 y(Pro)q(cess)j(Group)f Fl(G)p Fn(,)f(whose)i(PID)f(is)h
Fl(orig)p Fn(,)f(to)f(all)j(of)e(the)g(other)g(mem)o(b)q(ers)h(of)f
Fl(G)p Fn(.)g(All)h(pro)q(cesses)g(in)g(the)74 1196 y(group)g(mak)o(e)g(the)g
(call)h(with)g(the)f(same)g(actual)g(parameters)g Fl(G)g Fn(and)g
Fl(orig)p Fn(.)74 1284 y(A)j(participating)h(pro)q(cess)f(can)h(pro)q(ceed)f
(past)g(the)g(call)h(to)e(the)h(collectiv)o(e)i(comm)o(unication)f(imme-)74
1341 y(diately)i(after)e(it)h(has)f(\014nished)i(its)f(participation)h(in)g
(it)e(\(ev)o(en)h(though)g(the)f(comm)o(unication)i(as)e(a)74
1397 y(whole)e(ma)o(y)e(still)i(b)q(e)g(in)g(progress\).)k(F)l(or)16
b(example)g(in)h(a)f(grid-t)o(yp)q(e)h(problem)f(domain,)g(consider)h(the)74
1453 y(sequence)g(of)d(calls:)146 1548 y Fl(row_pgid)23 b(=)g
(partition\(grid_pgid,)e(row_id,)i(key\))146 1605 y(col_pgid)g(=)g
(partition\(grid_pgid,)e(col_id,)i(key\))146 1661 y(bcast\(row_pgid,)f
(orig1,)h(data1\);)146 1718 y(bcast\(col_pgid,)f(orig2,)h(data2\);)74
1813 y Fn(where)12 b Fl(row)p 277 1813 15 2 v 17 w(pgid)e Fn(and)i
Fl(col)p 557 1813 V 17 w(pgid)e Fn(represen)o(t)i(t)o(w)o(o)e(Pro)q(cess)h
(Groups)g(for)g(eac)o(h)g(of)g(the)h(pro)q(cesses)f(in)o(v)o(ok-)74
1869 y(ing)17 b(the)f(t)o(w)o(o)e Fl(partition\(\))h Fn(calls.)23
b(Since)17 b Fl(row)p 910 1869 V 17 w(pgid)e Fn(and)h Fl(col)p
1199 1869 V 17 w(pgid)f Fn(are)h(not)g(disjoin)o(t,)g(the)g(second)74
1926 y(broadcast)c(op)q(eration)h(ma)o(y)f(b)q(e)i(partially)g(completed)g
(in)f(parallel)i(with)e(the)g(\014rst)f(one.)20 b(The)13 b(program)74
1982 y(execution)g(order)f(guaran)o(tees)f(that)h(the)g(pro)q(cesses)g(in)h
Fl(row)p 1102 1982 V 17 w(pgid)f Fi(\\)g Fl(col)p 1341 1982
V 17 w(pgid)f Fn(will)j(reac)o(h)e(the)g(second)74 2038 y(broadcast)18
b(only)i(after)e(they)h(\014nish)h(their)f(participation)h(in)g(the)f
(\014rst)g(broadcast.)30 b(CCL)19 b(prev)o(en)o(ts)74 2095
y(p)q(ossible)e(mixing)f(of)f(messages)f(b)q(et)o(w)o(een)i(the)f(t)o(w)o(o)f
(broadcast)g(op)q(erations)h(b)o(y)g(using)h(seman)o(tics)f(and)74
2151 y(prop)q(erties)22 b(describ)q(ed)h(in)f(Section)g(3)f(so)g(that)g(the)g
(underlying)i(comm)o(unication)f(subsystem)f(can)74 2208 y(distinguish)c(b)q
(et)o(w)o(een)f(the)f(t)o(w)o(o)f(messages.)74 2361 y Fk(2.3)56
b(Unique)18 b(Pro)r(cess)g(Groups)h(Iden)n(ti\014ers)74 2478
y Fn(The)h(actual)f(v)m(alue)i(of)e(a)g(PGID)g(is)h(determined)g(b)o(y)g
(CCL,)f(and)g(user)h(co)q(de)g(that)e(dep)q(ends)j(on)e(the)74
2534 y(actual)e(v)m(alue)g(of)f(a)g(PGID)g(\(suc)o(h)h(as)f(branc)o(hing)h
(based)g(on)f(the)g(v)m(alue)i(of)e(a)g(PGID\))g(is)g(not)g(allo)o(w)o(ed.)74
2591 y(That)h(is,)i(suc)o(h)f(co)q(de)g(ma)o(y)f(op)q(erate)g(correctly)h
(with)g(one)g(implemen)o(tation)h(of)e(CCL)h(and)g(not)f(with)960
2727 y(6)p eop
%%Page: 7 7
bop 74 157 a Fn(another.)19 b(On)c(the)g(other)f(hand,)h(the)g(user)f(is)h
(allo)o(w)o(ed)g(to)f(c)o(hec)o(k)h(equalit)o(y)g(of)f(PGIDs)h(and)f(to)g
(include)74 214 y(PGIDs)e(in)h(messages)e(sen)o(t)h(from)f(one)i(pro)q(cess)f
(to)f(another.)19 b(As)12 b(a)g(result,)g(CCL)g(m)o(ust)g(guaran)o(tee)f
(that)74 270 y(all)19 b(the)f(pro)q(cesses)h(in)f(a)g(single)h(Pro)q(cess)f
(Group)g(use)g(the)g(same)g(system-wide)h(unique)g(PGID,)e(and)74
327 y(that)c(distinct)j(Pro)q(cess)e(Groups)f(ha)o(v)o(e)h(distinct)h(PGIDs)f
(\(whether)g(or)f(not)h(they)g(ha)o(v)o(e)f(an)o(y)h(pro)q(cesses)74
383 y(in)i(common\).)74 471 y(W)l(e)h(no)o(w)e(describ)q(e)j(a)e(simple)i
(mec)o(hanism)f(for)f(generating)g(PGIDs)g(that)f(are)h(system-wide)h
(unique.)74 527 y(Eac)o(h)c(pro)q(cess)g(main)o(tains)h(a)e(lo)q(cal)i(coun)o
(ter,)f(whic)o(h)h(is)g(initialized)i(to)c(0.)19 b(Logically)l(,)c(a)e(PGID)f
(consists)74 583 y(of)g(t)o(w)o(o)g(\014elds:)19 b Fl(\(counter,)k(pid\))p
Fn(.)18 b(When)13 b(a)g(new)g(Pro)q(cess)f(Group)g(is)h(created,)g(the)g(pro)
q(cess)g(that)f(has)74 640 y(rank)17 b(0)h(in)g(this)g(group)g(determines)g
(the)g(PGID)f(b)o(y)h(pairing)g(its)g(lo)q(cal)h(coun)o(ter)e(and)h(its)g
(PID.)f(This)74 696 y(pro)q(cess)h(broadcasts)f(the)g(v)m(alue)i(of)e(the)h
(PGID)f(to)g(all)h(the)g(pro)q(cesses)g(in)g(the)g(Pro)q(cess)f(Group,)g(and)
74 753 y(it)e(then)g(incremen)o(ts)g(its)g(lo)q(cal)h(coun)o(ter.)k(This)15
b(sc)o(heme)g(guaran)o(tees)f(system-wide)h(uniqueness)h(of)f(all)74
809 y(the)g(PGIDs)g(in)h(CCL.)74 897 y(The)j(implemen)o(tation)h(of)e(the)h
(ab)q(o)o(v)o(e)g(mec)o(hanism)g(in)g(CCL)g(is)g(sligh)o(tly)h(di\013eren)o
(t.)31 b(Because)19 b(most)74 953 y(existing)i(comm)o(unication)f(subsystems)
g(ha)o(v)o(e)f(relativ)o(ely)i(large)f(start-up)f(costs)h(compared)f(to)g
(the)74 1010 y(transfer)d(times,)h(CCL)g(app)q(ends)h(the)f(v)m(alue)h(of)e
(the)h(lo)q(cal)h(coun)o(ter)f(of)f(eac)o(h)h(pro)q(cess)g(to)f(the)h(con)o
(trol)74 1066 y(information)e(comm)o(unicated)f(during)i(the)e(setup)h(of)e
(a)h(Pro)q(cess)h(Group.)k(This)c(eliminates)h(the)e(extra)74
1123 y(comm)o(unication)h(steps)g(needed)h(for)e(broadcasting)g(the)h(PID)g
(and)f(the)h(coun)o(ter)f(of)h(the)f(pro)q(cess)h(with)74 1179
y(rank)f(0,)g(since)h(eac)o(h)f(pro)q(cess)g(has)g(all)h(the)f(information)h
(needed)g(to)e(calculate)j(the)e(PGID)f(of)h(the)g(new)74 1236
y(Pro)q(cess)h(Group)g(to)g(whic)o(h)h(it)f(b)q(elongs.)74
1388 y Fk(2.4)56 b(Common)17 b(Group)h(Structure)g(Routines)74
1505 y Fn(Recen)o(tly)l(,)25 b(a)d(set)g(of)g(Common)g(Group)g(Structure)g
(\(CGS\))g(routines)g(has)h(b)q(een)g(prop)q(osed)g(as)f(an)74
1562 y(extension)c(to)f(CCL)g([8].)25 b(The)18 b(CGS)f(routines)h(mak)o(e)e
(use)i(of)f(pro)q(cess)h(group)f(routines)g(for)g(de\014ning)74
1618 y(pro)q(cess)i(groups)g(that)f(arise)h(in)h(algorithms)f(with)g(grid)h
(and)f(h)o(yp)q(ercub)q(e)i(structures.)30 b(Once)20 b(these)74
1675 y(grid-structured)j(and)f(h)o(yp)q(ercub)q(e-structured)h(groups)f(ha)o
(v)o(e)f(b)q(een)i(de\014ned,)i(the)d(standard)f(CCL)74 1731
y(routines)g(can)g(b)q(e)g(used)g(within)g(the)g(structured)f(groups)h(to)e
(p)q(erform)i(collectiv)o(e)h(comm)o(unication)74 1788 y(op)q(erations.)27
b(The)18 b(CGS)f(routines)h(also)f(include)j(utilities)g(for)c(con)o(v)o
(erting)i(b)q(et)o(w)o(een)g(1-dimensional)74 1844 y(and)e
(higher-dimensional)i(addresses.)74 1932 y(As)k(an)h(example,)h(the)f
Fg(F)o(ORM2DGRID)f Fn(routine)h(tak)o(es)e(an)h(existing)i(group,)f(views)g
(it)g(as)f(an)74 1988 y Fj(X)14 b Fi(\002)e Fj(Y)27 b Fn(2D-grid)17
b(\(where)f Fj(X)k Fn(and)d Fj(Y)27 b Fn(are)17 b(sp)q(eci\014ed)i(b)o(y)d
(the)h(user\),)g(and)f(partitions)h(it)g(in)o(to)g(a)f(set)h(of)74
2045 y(nono)o(v)o(erlapping)j(groups)f(corresp)q(onding)h(to)f(the)g(columns)
h(of)f(a)g(t)o(w)o(o-dimensional)h(grid)f(and)h(also)74 2101
y(in)o(to)e(a)f(set)g(of)g(nono)o(v)o(erlapping)h(groups)g(corresp)q(onding)g
(to)f(the)g(ro)o(ws)g(of)g(a)g(t)o(w)o(o-dimensional)i(grid.)74
2158 y(Th)o(us,)c(eac)o(h)g(pro)q(cess)h(receiv)o(es)g(t)o(w)o(o)e(new)h
(PGIDs,)g(one)g(for)g(the)g(column)h(in)g(whic)o(h)g(it)g(is)f(lo)q(cated)h
(and)74 2214 y(one)f(for)g(the)g(ro)o(w)g(in)h(whic)o(h)g(it)f(is)h(lo)q
(cated)g(in)g(the)f(t)o(w)o(o-dimensional)h(grid.)74 2388 y
Fm(3)69 b(Seman)n(tic)21 b(Issues)i(in)f(CCL)74 2521 y Fn(This)e(section)f
(discusses)h(sev)o(eral)f(issues)h(related)f(to)f(the)h(seman)o(tics)g(of)f
(p)q(oin)o(t-to-p)q(oin)o(t)i(comm)o(uni-)74 2577 y(cation)g(and)g(of)f
(collectiv)o(e)j(comm)o(unication)e(op)q(erations)g(on)g(Pro)q(cess)f
(Groups.)33 b(These)20 b(issues)h(are)960 2727 y(7)p eop
%%Page: 8 8
bop 74 157 a Fn(fundamen)o(tal)16 b(to)e(the)i(design)g(of)f(CCL)g(and)g(of)g
(similar)h(libraries.)74 310 y Fk(3.1)56 b(Send)18 b(and)i(Receiv)n(e)c
(Seman)n(tics)74 427 y Fn(In)21 b(order)f(for)g(CCL)g(to)g(b)q(e)h(p)q
(ortable,)g(it)g(is)g(imp)q(ortan)o(t)e(that)h(it)g(is)h(based)g(on)f(a)g
(simple)i(mo)q(del)f(of)74 483 y(p)q(oin)o(t-to-p)q(oin)o(t)16
b(comm)o(unication)g(that)e(is)i(a)o(v)m(ailable)h(on)e(a)g(wide)h(range)f
(of)g(mac)o(hines.)74 571 y(The)f(basic)h(mo)q(del)f(of)g(p)q(oin)o(t-to-p)q
(oin)o(t)g(comm)o(unication)h(consists)f(of)f(a)h(single)h
Fl(send)e Fn(op)q(eration)h(and)g(a)74 627 y(single)i Fl(receive)d
Fn(op)q(eration.)20 b(It)14 b(is)h(assumed)f(that)g(a)g(pro)q(cess)g(can)h
(send/receiv)o(e)g(to/from)e(an)o(y)h(other)74 684 y(pro)q(cess)g(in)g(the)g
(parallel)h(mac)o(hine.)20 b(Namely)l(,)14 b(there)f(is)h(no)g(notion)f(of)g
(a)h(top)q(ology)f(at)f(this)i(lev)o(el.)21 b(This)74 740 y(mo)q(del)14
b(is)f(called)i(a)d(fully-connected)j(mo)q(del.)20 b(In)14
b(addition)g(it)f(is)g(assumed)g(that)f(the)h(send)h(and)f(receiv)o(e)74
797 y(op)q(erations)i(ha)o(v)o(e)g(the)h(follo)o(wing)f(four)g(prop)q
(erties:)74 884 y(\(1\))h(The)h(op)q(erations)g(are)f(blo)q(c)o(king,)i
(namely)l(,)g(a)e Fh(blo)n(cking)h(send)j Fn(op)q(eration)d(and)g(a)g
Fh(blo)n(cking)f(r)n(e)n(c)n(eive)74 941 y Fn(op)q(eration)e(are)g(used.)20
b(The)14 b(blo)q(c)o(king)i(send)f(op)q(eration)f(is)g(a)g
Fl(send)g Fn(that)f(do)q(es)h(not)g(return)g(to)f(the)h(user)74
997 y(un)o(til)k(the)g(message)e(has)h(b)q(een)i(copied)f(out)f(of)f(the)i
(user's)f(bu\013er.)25 b(It)17 b(should)i(b)q(e)e(p)q(oin)o(ted)h(out)f(that)
74 1054 y Fh(blo)n(cking)e(send)20 b Fn(is)c(di\013eren)o(t)g(from)f
Fh(synchr)n(onous)h(send)f Fn(in)h(whic)o(h)h(the)f Fl(send)f
Fn(do)q(es)h(not)f(return)g(to)g(the)74 1110 y(user)g(un)o(til)h(a)f(matc)o
(hing)g Fl(receive)f Fn(op)q(eration)h(has)g(b)q(een)h(issued.)1217
1094 y Ff(1)1258 1110 y Fn(The)f(blo)q(c)o(king)h(receiv)o(e)g(op)q(eration)
74 1167 y(is)g(a)f Fl(receive)g Fn(that)g(do)q(es)g(not)h(return)f(to)g(the)g
(user)h(un)o(til)h(the)e(requested)h(message)f(has)h(arriv)o(ed)f(and)74
1223 y(has)g(b)q(een)i(placed)f(in)g(the)f(user's)g(bu\013er.)74
1311 y(\(2\))20 b(The)g(receiv)o(e)i(op)q(eration)f(is)g(a)f
Fh(r)n(e)n(c)n(eive-by-sour)n(c)n(e)p Fn(,)g(where)h(the)f(receiv)o(er)h(sp)q
(eci\014es)i(the)d(desired)74 1367 y(source)e(of)f(the)h(message.)27
b(Only)19 b(a)f(message)f(from)g(the)h(sp)q(eci\014ed)i(source)d(can)h(b)q(e)
h(deliv)o(ered)g(to)e(the)74 1424 y(receiv)o(er.)26 b(The)17
b(desired)h(source)f(m)o(ust)f(alw)o(a)o(ys)g(b)q(e)i(sp)q(eci\014ed)h(and)e
(the)g(use)g(of)f(a)h(wildcard)h(v)m(alue)g(for)74 1480 y(the)d(source)h
(parameter)e(is)i(not)f(allo)o(w)o(ed.)74 1568 y(\(3\))g(P)o(oin)o(t-to-p)q
(oin)o(t)h(comm)o(unication)h(b)q(et)o(w)o(een)f(an)o(y)g(t)o(w)o(o)f(pro)q
(cesses)h(is)h(required)g(to)f(b)q(e)g(FIF)o(O)g(suc)o(h)74
1624 y(that)j(m)o(ultiple)i(messages)e(sen)o(t)g(from)g(one)h(pro)q(cess)f
(to)g(another)g(are)g(receiv)o(ed)i(in)f(the)g(same)f(order)74
1681 y(in)h(whic)o(h)h(they)e(w)o(ere)g(sen)o(t.)33 b(Ho)o(w)o(ev)o(er,)19
b(the)g Fl(send)g Fn(and)h Fl(receive)e Fn(op)q(erations)i(are)f(async)o
(hronous,)74 1737 y(in)i(the)f(sense)h(that)e(no)h(b)q(ounds)h(are)e(assumed)
h(on)g(the)g(relativ)o(e)h(sp)q(eeds)g(of)e(the)i(pro)q(cesses)f(or)f(the)74
1794 y(time)c(required)g(to)e(pass)h(messages)g(b)q(et)o(w)o(een)g(pro)q
(cesses.)20 b(F)l(urthermore,)13 b(the)h(basic)h(mo)q(del)g(mak)o(es)f(no)74
1850 y(assumptions)j(regarding)g(whether)g(or)g(not)f(the)h(system)g(pro)o
(vides)g(bu\013ering)g(of)g(messages)f(b)q(et)o(w)o(een)74
1906 y(a)j(sender)g(and)g(a)g(receiv)o(er.)31 b(Th)o(us,)20
b(a)e(blo)q(c)o(king)j(send)e(op)q(eration)g(ma)o(y)f(or)h(ma)o(y)f(not)g
(blo)q(c)o(k)i(un)o(til)g(a)74 1963 y(matc)o(hing)15 b(receiv)o(e)i(is)e
(issued.)74 2050 y(\(4\))g(Di\013eren)o(t)g Fl(send)g Fn(op)q(erations)h
(issued)h(from)d(m)o(ultiple)k(source)d(pro)q(cesses)h(to)f(a)h(single)h
(destination)74 2107 y(pro)q(cess)i(are)e Fh(non-interfering)p
Fn(.)28 b(This)19 b(means)f(that)f(the)h(existence)i(of)d(messages)h(that)g
(the)g(receiv)o(er)74 2163 y(do)q(es)e(not)f(wish)h(to)f(select)h(\(b)q
(ecause)g(these)g(messages)f(do)g(not)g(matc)o(h)g(the)h(source)f(\014eld)i
(sp)q(eci\014ed)h(b)o(y)74 2220 y(the)g Fl(receive)e Fn(op)q(eration\))i
(cannot)f(prev)o(en)o(t)g(the)h(reception)g(of)f(a)h(message)f(that)f(the)i
(receiv)o(er)g(do)q(es)74 2276 y(wish)d(to)g(receiv)o(e.)20
b(F)l(or)14 b(example,)i(if)f(pro)q(cesses)g(1)f(through)h
Fj(n)9 b Fi(\000)h Fn(1)k(eac)o(h)h(sends)g(a)g(message)f(to)g(pro)q(cess)74
2333 y(0)h(and)h(if)g(pro)q(cess)g(0)f(issues)h(a)g Fl(receive)e
Fn(in)j(order)e(to)g(receiv)o(e)h(a)f(message)g(from)g(pro)q(cess)h
Fj(n)11 b Fi(\000)f Fn(1,)15 b(then)74 2389 y(this)g Fl(receive)e
Fn(op)q(eration)i(will)h(get)d(the)i(message)f(sen)o(t)g(from)f(pro)q(cess)i
Fj(n)8 b Fi(\000)h Fn(1)14 b(ev)o(en)h(if)f(all)i(of)e(the)g(other)74
2446 y(messages)20 b(w)o(ere)h(sen)o(t)f(earlier.)38 b(While)22
b(this)f(non-in)o(terference)h(prop)q(ert)o(y)e(seems)h(v)o(ery)g(natural,)g
(it)74 2502 y(could)f(b)q(e)g(violated)f(b)o(y)g(a)g(system)f(that)g(stores)h
(messages)f(in)i(bu\013ers)e(on)h(the)g(receiv)o(er)h(side,)g(since)p
74 2542 718 2 v 126 2569 a Fe(1)143 2584 y Fd(Some)14 b(researc)o(hers)g(use)
f(the)g(term)g Fc(blo)n(cking)e(send)k Fd(to)e(indicate)i(what)e(w)o(e)g(ha)o
(v)o(e)g(de\014ned)h(as)g Fc(synchr)n(onou)o(s)d(send)p Fd(.)960
2727 y Fn(8)p eop
%%Page: 9 9
bop 74 157 a Fn(suc)o(h)21 b(bu\013ers)g(could)g(b)q(e)h(\014lled)g(b)o(y)f
(messages)f(other)g(than)g(the)h(one)g(that)f(the)g(receiv)o(er)i(selects)f
(to)74 214 y(receiv)o(e.)74 301 y(P)o(arallel)c(co)q(de)f(that)g(uses)g
(message-passing)g(comm)o(unication)g(with)g(these)g(four)g(prop)q(erties)g
(is)h Fh(r)n(ac)n(e-)74 358 y(fr)n(e)n(e)p Fn(:)g(there)10
b(is)h(a)f(unique)i(p)q(ossible)g(matc)o(hing)e(of)g(sends)h(to)e(receiv)o
(es,)j(and)e(a)g(unique)i(p)q(ossible)g(successful)74 414 y(execution,)i
(indep)q(enden)o(t)g(of)e(the)g(relativ)o(e)g(sp)q(eeds)h(of)f(the)g(pro)q
(cesses)g(and)h(the)f(comm)o(unication)h(in)f(the)74 471 y(system.)18
b(Co)q(de)11 b(that)f(is)h(written)f(to)g(b)q(e)h(p)q(ortable)g(mak)o(es)f
(no)g(assumption)h(on)g(the)f(amoun)o(t)g(of)g(bu\013ering)74
527 y(pro)o(vided)k(b)o(y)f(the)g(comm)o(unication)h(system;)f(it)h(needs)g
(to)e(w)o(ork)g(ev)o(en)i(if)f(eac)o(h)h(send)f(op)q(eration)h(blo)q(c)o(ks)
74 583 y(un)o(til)k(a)f(matc)o(hing)h(receiv)o(e)g(is)f(executed)i(\(i.e.,)e
(comm)o(unication)h(is)f(sync)o(hronous\).)26 b(The)17 b(execution)74
640 y(of)e(suc)o(h)g Fh(safe)f Fn(co)q(de)i(is)f(deterministic:)22
b(if)15 b(the)g(program)f(deadlo)q(c)o(ks)i(on)f(some)f(implemen)o(tation,)i
(then)74 696 y(it)g(alw)o(a)o(ys)e(deadlo)q(c)o(ks.)74 784
y(Although)k(the)g(basic)h(mo)q(del)g(of)e(p)q(oin)o(t-to-p)q(oin)o(t)h(comm)
o(unication)h(de\014ned)g(ab)q(o)o(v)o(e)e(is)i(su\016cien)o(t)f(for)74
840 y(implemen)o(ting)12 b(all)g(of)e(the)g(CCL)h(routines,)g(the)g(actual)f
(implemen)o(tation)i(of)e(CCL)g(uses)h(t)o(w)o(o)e(additional)74
897 y(features)j(that)g(are)g(found)h(in)g(man)o(y)f(systems.)19
b(These)13 b(t)o(w)o(o)e(features)h(are)g(a)g Fl(send-receive)f
Fn(op)q(eration)74 953 y(and)18 b(the)g(usage)g(of)f(message)g(tags)686
937 y Ff(2)705 953 y Fn(.)27 b(W)l(e)18 b(next)g(discuss)h(these)f(t)o(w)o(o)
e(additional)k(features)d(and)h(their)74 1010 y(merits)d(in)h(implemen)o
(ting)i(CCL.)74 1097 y(The)f Fl(send-receive)e Fn(op)q(eration)i(sim)o
(ultaneously)h(sends)f(a)f(message)g(to)g(one)h(pro)q(cess)g(and)g(receiv)o
(es)74 1154 y(a)22 b(message)g(from)f(another)h(pro)q(cess)h(without)f
(requiring)i(additional)f(bu\013er)g(space)f(for)g(either)h(of)74
1210 y(the)17 b(messages.)25 b(CCL)17 b(uses)h(the)f Fl(send-receive)e
Fn(op)q(eration)j(for)e(implemen)o(ting)j Fl(shift)d Fn(op)q(erations)74
1267 y(within)23 b(Pro)q(cess)f(Groups.)38 b(The)22 b Fl(shift)f
Fn(op)q(eration)h(ma)o(y)f(create)g(a)g(cycle)i(of)e(pro)q(cesses,)i(eac)o(h)
f(of)74 1323 y(whic)o(h)c(is)g(sending)h(a)e(message)g(to)g(its)h(successor)f
(in)i(the)e(cycle)i(and)e(receiving)i(a)f(message)f(from)f(its)74
1380 y(predecessor)h(in)g(the)f(cycle.)24 b(If)17 b(a)f Fl(send-receive)e
Fn(op)q(eration)i(is)h(not)f(used,)h(then)f(the)g Fl(send)g
Fn(and)g(the)74 1436 y Fl(receive)f Fn(op)q(erations)h(m)o(ust)f(b)q(e)h
(paired)g(carefully)h(to)e(a)o(v)o(oid)g(deadlo)q(c)o(ks.)22
b(\(A)16 b(deadlo)q(c)o(k)g(can)g(o)q(ccur)g(if)74 1493 y Fl(send)d
Fn(op)q(erations)h(are)f(forced)h(to)f(w)o(ait)g(for)g(matc)o(hing)h
Fl(receive)e Fn(op)q(erations)i(that)f(are)g(nev)o(er)h(issued.\))74
1549 y(F)l(or)i(example,)h(to)e(a)o(v)o(oid)h(deadlo)q(c)o(ks)h(in)g
Fl(shift)f Fn(op)q(erations,)g(one)g(can)h(pair)f(the)h Fl(send)e
Fn(and)i Fl(receive)74 1606 y Fn(op)q(erations,)k(if)g(the)f(cycle)i(is)e(of)
g(ev)o(en)g(length,)i(as)e(follo)o(ws.)35 b(Pro)q(cesses)20
b(in)h(ev)o(en)f(p)q(ositions)h(in)g(the)74 1662 y(cycle)16
b(w)o(ould)f(p)q(erform)g(a)f Fl(send)g Fn(follo)o(w)o(ed)h(b)o(y)g(a)f
Fl(receive)p Fn(,)f(while)k(pro)q(cesses)e(in)g(o)q(dd)g(p)q(ositions)h(in)f
(the)74 1718 y(cycle)h(w)o(ould)f(p)q(erform)f(a)h Fl(receive)e
Fn(follo)o(w)o(ed)i(b)o(y)g(a)f Fl(send)p Fn(.)19 b(\(Cycles)c(of)g(o)q(dd)g
(lengths)g(can)g(b)q(e)g(handled)74 1775 y(similarly)l(.\))33
b(Although)19 b(suc)o(h)g(an)g(algorithm)g(is)g(p)q(ossible)i(in)f(CCL,)e
(since)i(eac)o(h)f(pro)q(cess)g(kno)o(ws)f(its)74 1831 y(p)q(osition)c(in)f
(the)g(cycle,)h(it)f(is)g(m)o(uc)o(h)f(simpler)i(and)f(more)f(e\016cien)o(t)h
(to)f(use)h(a)f Fl(send-receive)f Fn(op)q(eration)74 1888 y(for)k(implemen)o
(ting)i(the)e Fl(shift)p Fn(.)74 1975 y(Some)f(p)q(oin)o(t-to-p)q(oin)o(t)h
(comm)o(unication)g(libraries)h(allo)o(w)e(the)g(use)h(of)f(wildcard)h(v)m
(alues)g(in)g(the)f(source)74 2032 y(parameter)h(of)g(a)h(receiv)o(e)g(call.)
23 b(Ev)o(en)16 b(if)g(wildcard)h(v)m(alues)g(are)e(not)g(used)i(in)f(the)g
(implemen)o(tation)h(of)74 2088 y(CCL,)h(there)h(is)g(still)h(the)f(risk)g
(that)f(a)g(message)g(sen)o(t)g(as)g(part)g(of)h(the)f(implemen)o(tation)i
(of)e(a)g(CCL)74 2145 y(call)i(will)g(b)q(e)g(mistak)o(enly)f(receiv)o(ed)h
(b)o(y)f(a)f(user)h(receiv)o(e)h(with)f(a)f(wildcard)i(source.)31
b(An)19 b(additional)74 2201 y(mec)o(hanism)e(is)g(needed)h(to)e(distinguish)
j(CCL)d(messages)g(from)g(user)h(messages.)23 b(Message)16
b(tags)f(can)74 2258 y(pro)o(vide)j(suc)o(h)g(mec)o(hanism.)27
b(These)18 b(are)f(v)m(alues)i(that)e(are)g(app)q(ended)i(to)e(the)g(con)o
(ten)o(t)g(of)g(p)q(oin)o(t-to-)74 2314 y(p)q(oin)o(t)f(messages.)k(T)l(ags)
15 b(are)g(t)o(ypically)h(used)g(to)f(distinguish)j(b)q(et)o(w)o(een)d
(di\013eren)o(t)h(t)o(yp)q(es)f(of)g(messages)74 2371 y(in)f(an)g
(application,)h(as)e(w)o(ell)h(as)f(b)q(et)o(w)o(een)h(m)o(ultiple)h
(messages)e(sen)o(t)g(to)f(a)h(destination)i(from)d(the)i(same)74
2427 y(source.)34 b(Eac)o(h)19 b Fl(send)g Fn(op)q(eration)h(sp)q(eci\014es)i
(a)d(v)m(alue)i(in)g(the)f(tag)e(\014eld)j(of)f(the)f(message,)i(and)e(eac)o
(h)74 2483 y Fl(receive)14 b Fn(op)q(eration)i(sp)q(eci\014es)h(a)e(desired)h
(tag)e(v)m(alue)j(to)d(b)q(e)i(matc)o(hed)f(with)h(the)f(receiv)o(ed)h
(message.)p 74 2523 718 2 v 126 2550 a Fe(2)143 2566 y Fd(Some)e(researc)o
(hers)g(use)f(the)g(term)g Fc(typ)n(e)h Fd(instead)h(of)d Fc(tag)p
Fd(.)960 2727 y Fn(9)p eop
%%Page: 10 10
bop 74 157 a Fn(W)l(e)21 b(assume)f(that)f(a)h(mec)o(hanism)h(is)g(a)o(v)m
(ailable)h(to)e(allo)q(cate)h(tag)f(ranges)g(to)f(v)m(arious)i(libraries,)i
(so)74 214 y(that)16 b(user)i(messages)e(and)h(messages)g(generated)g(b)o(y)g
(CCL)g(ha)o(v)o(e)f(disjoin)o(t)i(tag)e(ranges.)25 b(If)17
b(wildcard)74 270 y(tag)f(v)m(alues)i(are)f(allo)o(w)o(ed)g(in)h(receiv)o(e)g
(op)q(erations,)f(one)g(also)g(need)h(to)f(mak)o(e)f(sure)h(that)f(user)i
(receiv)o(e)74 327 y(op)q(erations)j(cannot)f(matc)o(h)f(tag)h(v)m(alues)h
(used)g(b)o(y)f(CCL.)g(This)h(can)g(b)q(e)g(ac)o(hiev)o(ed)g(either)g(with)g
(an)74 383 y(include/exclu)q(de)c(mec)o(hanism)d(for)f(wildcard)h(tag)f
(ranges,)g(as)g(pro)o(vided)i(b)o(y)e(Express)h([30)o(])f(or)g(with)h(an)74
439 y(additional)j(con)o(text)d(mec)o(hanism,)i(as)f(pro)o(vided)h(b)o(y)f
(Zip)q(co)q(de)i([28)o(].)74 592 y Fk(3.2)56 b(Implem)o(en)n(tation)16
b(Correctness)74 709 y Fn(There)i(are)f(man)o(y)g(issues)h(related)g(to)f(a)g
(correct)g(implemen)o(tation)h(of)f(CCL.)h(These)f(issues)i(include,)74
766 y(for)f(example,)i(separating)f(user)g(p)q(oin)o(t-to-p)q(oin)o(t)g
(messages)f(from)g(CCL)h(p)q(oin)o(t-to-p)q(oin)o(t)g(messages,)74
822 y(guaran)o(teeing)11 b(that)g(the)g(correct)g(messages)g(b)q(e)h(deliv)o
(ered)h(for)d(collectiv)o(e)j(comm)o(unication)f(op)q(erations)74
879 y(in)g(o)o(v)o(erlapping)f(Pro)q(cess)f(Groups,)h(and)g(distinguishing)i
(b)q(et)o(w)o(een)e(messages)f(that)g(b)q(elong)h(to)f(di\013eren)o(t)74
935 y(collectiv)o(e)17 b(comm)o(unication)f(op)q(erations)f(in)h(the)g(same)f
(group.)74 1023 y(First,)h(the)h(seman)o(tics)g(of)f(CCL)g(assume)h(that)e
(eac)o(h)i(CCL)f(routine)h(b)q(e)h(view)o(ed)f(as)f(a)g(barrier)h(b)o(y)f
(the)74 1079 y(user.)26 b(Namely)l(,)18 b(a)e(pro)q(cess)i(can)f(return)g
(from)f(a)h(CCL)g(routine)h(only)f(after)g(all)h(other)e(participating)74
1136 y(pro)q(cesses)k(called)i(this)e(routine.)35 b(Therefore,)20
b(in)h(a)f(correct)f(program,)h(an)o(y)f(CCL)h(op)q(eration)g(that)74
1192 y(in)o(v)o(olv)o(es)15 b(pro)q(cesses)h Fj(p)e Fn(and)h
Fj(q)i Fn(should)f(b)q(e)f(called)h(in)g(the)f(same)f(order)h(b)o(y)g(pro)q
(cesses)g Fj(p)f Fn(and)h Fj(q)r Fn(,)g(and)g(no)74 1248 y(p)q(oin)o(t-to-p)q
(oin)o(t)h(comm)o(unication)g(b)q(et)o(w)o(een)f(pro)q(cesses)h
Fj(p)f Fn(and)g Fj(q)i Fn(should)f(o)o(v)o(erlap)f(a)g(CCL)g(op)q(eration.)74
1336 y(The)j(correctness)f(of)g(the)h(CCL)f(implemen)o(tation)i(is)f(based)g
(on)f(the)h(follo)o(wing)g(3)f(prop)q(erties)h(of)f(the)74
1393 y(p)q(oin)o(t-to-p)q(oin)o(t)f(comm)o(unication.)130 1517
y(1.)22 b(The)15 b(p)q(oin)o(t-to-p)q(oin)o(t)h(comm)o(unication)g(supp)q
(orts)f(receiv)o(e-b)o(y-source)i(op)q(erations.)130 1611 y(2.)22
b(The)15 b(p)q(oin)o(t-to-p)q(oin)o(t)h(comm)o(unication)g(is)g(FIF)o(O)f
(and)g(non-in)o(terfering.)130 1705 y(3.)22 b(A)13 b(collectiv)o(e)i(comm)o
(unication)e(algorithm)g(in)h(CCL)f(is)g(kno)o(wn)g(to)f(all)i(participating)
g(pro)q(cesses.)188 1762 y(In)k(particular,)f(for)g(a)g(sp)q(eci\014c)i
(collectiv)o(e)f(comm)o(unication)g(op)q(eration)g(o)o(v)o(er)e(a)h(giv)o(en)
g(pro)q(cess)188 1818 y(group)e(with)h(kno)o(wn)g(source)g(and)g(destination)
h(pro)q(cesses)f(\(if)g(applicable\))i(and)e(message)f(size,)188
1874 y(a)h(\014xed)h(algorithm)f(is)h(c)o(hosen)g(that)e(is)i(kno)o(wn)f(to)g
(all)h(the)f(pro)q(cesses.)24 b(Consequen)o(tly)l(,)17 b(at)f(an)o(y)188
1931 y(giv)o(en)f(p)q(oin)o(t)h(in)f(the)g(algorithm,)g(eac)o(h)g(pro)q(cess)
g(kno)o(ws)g(exactly)g(to)f(whic)o(h)i(pro)q(cess)f(a)g(message)188
1987 y(should)j(b)q(e)h(sen)o(t)e(or)g(from)g(whic)o(h)h(pro)q(cess)g(a)f
(message)g(should)i(b)q(e)f(receiv)o(ed.)28 b(Therefore,)17
b(the)188 2044 y(sequence)f(of)f(steps)g(for)g(implemen)o(ting)i(eac)o(h)e
(CCL)g(op)q(eration)h(is)f(w)o(ell)i(de\014ned.)74 2169 y(The)j(foregoing)f
(3)g(prop)q(erties)h(guaran)o(tee)f(that)f(the)i(messages)f(receiv)o(ed-b)o
(y-source)i(b)o(y)e(an)o(y)g(giv)o(en)74 2225 y(pro)q(cess)e(are)f(receiv)o
(ed)i(in)f(the)g(exact)f(same)h(order)f(for)g(an)o(y)g(giv)o(en)h(execution)h
(of)e(a)g(CCL)h(algorithm.)74 2282 y(This)k(order)f(is)g(main)o(tained)h(in)g
(the)f(presence)h(of)f(other)f(comm)o(unication,)j(lik)o(e)f(p)q(oin)o
(t-to-p)q(oin)o(t)g(or)74 2338 y(other)15 b(CCL)h(calls.)22
b(The)16 b(k)o(ey)f(issue)i(is)f(that)f(the)h(FIF)o(O)f(prop)q(ert)o(y)g(b)q
(et)o(w)o(een)h(source)g(and)g(destination)74 2395 y(is)j(main)o(tained)g(b)o
(y)g(main)o(taining)g(the)f(order)g(b)q(et)o(w)o(een)h(CCL)f(calls)i(and)e
(not)g(allo)o(wing)i(in)o(terference)74 2451 y(b)q(et)o(w)o(een)c(CCL)f
(calls)h(and)g(p)q(oin)o(t-to-p)q(oin)o(t)f(calls.)949 2727
y(10)p eop
%%Page: 11 11
bop 74 157 a Fk(3.3)56 b(Barrier)17 b(Seman)n(tics)74 274 y
Fn(As)e(discussed)i(ab)q(o)o(v)o(e,)d(for)h(program)f(correctness,)h(eac)o(h)
g(CCL)g(op)q(eration)g(should)h(b)q(e)g(view)o(ed)g(as)f(im-)74
331 y(p)q(osing)h(a)e(barrier)h(sync)o(hronization)h(on)f(its)g(participan)o
(ts.)20 b(Ho)o(w)o(ev)o(er,)14 b(from)g(the)h(p)q(erformance)g(p)q(oin)o(t)74
387 y(of)g(view,)g(imp)q(osing)h(a)e(barrier)h(sync)o(hronization)h(on)f(all)
h(the)e(participan)o(ts)i(in)f(CCL)g(op)q(erations)g(ma)o(y)74
443 y(ha)o(v)o(e)j(a)g(negativ)o(e)h(e\013ect)f(on)g(p)q(erformance.)30
b(T)l(o)18 b(address)g(this)h(problem,)g(CCL)g(allo)o(ws)f(t)o(w)o(o)f(mo)q
(des)74 500 y(of)h(op)q(eration:)26 b Fh(b)n(arrier)19 b(mo)n(de)j
Fn(and)d Fh(non-b)n(arrier)f(mo)n(de)p Fn(.)30 b(Selection)20
b(b)q(et)o(w)o(een)e(these)h(t)o(w)o(o)e(mo)q(des)h(is)74 556
y(done)h(globally)h(at)d(the)i(b)q(eginning)h(of)e(an)h(application.)31
b(F)l(or)18 b(ob)o(vious)g(reasons,)h(the)f(default)h(mo)q(de)74
613 y(is)f(the)f(barrier)h(mo)q(de.)26 b(When)18 b(a)f(CCL)g(op)q(eration)h
(is)g(executed)g(in)g(barrier)g(mo)q(de,)g(no)f(pro)q(cess)g(can)74
669 y(complete)g(its)g(call)h(to)e(the)h(routine)g(un)o(til)g(all)h(the)f
(pro)q(cesses)g(in)g(the)g(relev)m(an)o(t)g(Pro)q(cess)g(Group)f(ha)o(v)o(e)
74 726 y(executed)h(their)g(\(corresp)q(onding\))f(calls)h(to)f(the)g(same)g
(routine.)22 b(Therefore,)16 b(when)h(an)f(op)q(eration)g(is)74
782 y(executed)j(in)f(barrier)g(mo)q(de,)f(there)h(m)o(ust)f(exist)h(some)f
(p)q(oin)o(t)h(in)g(time)g(at)f(whic)o(h)h(all)h(the)e(pro)q(cesses)74
839 y(in)g(the)f(group)f(are)h Fh(simultane)n(ously)e Fn(executing)j(the)f
(same)g(op)q(eration.)22 b(In)16 b(con)o(trast,)e(when)i(an)g(op)q(er-)74
895 y(ation)h(is)g(executed)h(in)f(non-barrier)g(mo)q(de,)g(eac)o(h)g(pro)q
(cess)g(blo)q(c)o(ks)g(only)g(un)o(til)h(it)f(has)g(completed)g(its)74
952 y(participation)h(in)g(the)f(op)q(eration.)26 b(Notice)17
b(that)g(the)g(role)g(of)g(eac)o(h)g(pro)q(cess)g(ma)o(y)g(dep)q(end)h(not)f
(only)74 1008 y(on)e(the)h(seman)o(tics)f(of)g(the)g(op)q(eration)g(but)h
(also)f(on)g(the)g(sp)q(eci\014c)i(algorithm)f(used)f(to)g(implemen)o(t)h
(it.)74 1096 y(The)d(di\013erences)h(b)q(et)o(w)o(een)f(the)f(t)o(w)o(o)g(mo)
q(des)g(ma)o(y)g(imply)i(di\013erences)g(in)f(the)g(b)q(eha)o(vior)g(of)f(an)
h(applica-)74 1152 y(tion)g(program.)18 b(In)c(a)f(non-barrier)g(mo)q(de,)g
(pro)q(cesses)h(ma)o(y)e(return)h(more)g(quic)o(kly)h(from)e(calls)i(to)e
(CCL)74 1209 y(routines,)19 b(resulting)g(in)h(a)d(b)q(etter)i(p)q
(erformance.)29 b(Ho)o(w)o(ev)o(er,)17 b(there)i(is)f(also)h(some)f(danger)g
(in)h(using)74 1265 y(non-barrier)14 b(mo)q(de)f(routines)h(as)f(in)h(some)f
(of)g(CCL)g(routines)g(the)h(role)f(of)g(eac)o(h)g(pro)q(cess)h(dep)q(ends)h
(also)74 1321 y(on)h(the)f(particular)i(algorithm)e(used)i(to)e(implemen)o(t)
h(the)g(routine.)22 b(As)15 b(long)h(as)g(the)f(user's)h(program)74
1378 y(is)i(correct,)g(and)f(no)h(wildcard)h(p)q(oin)o(t-to-p)q(oin)o(t)f
(comm)o(unication)h(is)f(used,)g(then)g(non-barrier)g(mo)q(de)74
1434 y(routines)h(will)i(op)q(erate)e(in)h(an)e(implemen)o(tation-indep)r
(ende)q(n)o(t)j(manner)e(\(as)f(argued)h(in)h(the)f(ab)q(o)o(v)o(e)74
1491 y(subsection\).)h(Ho)o(w)o(ev)o(er,)14 b(if)g(wildcard)i(p)q(oin)o
(t-to-p)q(oin)o(t)f(comm)o(unication)g(is)g(used,)g(then)g(the)f(b)q(eha)o
(vior)74 1547 y(of)h(a)f(non-barrier)i(mo)q(de)f(routine)h(can)f(b)q(e)g
(implemen)o(tation-dep)q(end)q(en)o(t.)22 b(As)15 b(an)g(example,)h(consider)
74 1604 y(the)e(follo)o(wing)h(piece)h(of)e(co)q(de,)h(in)g(whic)o(h)g
Fl(G)f Fn(is)h(the)f(group)g(iden)o(ti\014er)i(of)e(a)g(Pro)q(cess)g(Group)g
(consisting)74 1660 y(of)i(pro)q(cesses)h Fl(a)p Fn(,)f Fl(b)p
Fn(,)g(and)g Fl(c)p Fn(.)23 b(In)17 b(this)f(example,)h(eac)o(h)g
Fl(brecv)e Fn(is)i(a)f(blo)q(c)o(king)i(receiv)o(e)f(op)q(eration)f(with)74
1717 y(a)f(wildcard)i(source)e(parameter.)193 1805 y Fl(process)23
b(a)334 b(process)23 b(b)334 b(process)23 b(c)193 1862 y(---------)333
b(---------)g(---------)193 1918 y(bsend\(c\))906 b(brecv\(*\))193
1975 y(bcast\(G\))357 b(bcast\(G\))g(bcast\(G\))742 2031 y(bsend\(c\))g
(brecv\(*\))74 2176 y Fn(Assume)17 b(that)e(the)h(source)g(of)g(the)g
Fl(bcast)g Fn(op)q(eration)g(is)g(pro)q(cess)h Fl(b)p Fn(.)22
b(If)17 b(barrier)f(seman)o(tics)g(are)g(used)74 2233 y(for)d(the)h
(broadcast)g(op)q(eration,)g(then)g(the)g(\014rst)g(receiv)o(e)g(of)g(pro)q
(cess)g Fl(c)g Fn(will)h(receiv)o(e)g(the)f(message)g(sen)o(t)74
2289 y(b)o(y)i(pro)q(cess)g Fl(a)p Fn(,)g(and)g(the)g(second)g(receiv)o(e)h
(of)e(pro)q(cess)h Fl(c)g Fn(will)i(receiv)o(e)f(the)f(message)f(send)h(b)o
(y)g(pro)q(cess)74 2346 y Fl(b)p Fn(.)38 b(On)22 b(the)f(other)g(hand,)i(if)f
(pro)q(cess)g Fl(b)f Fn(can)g(exit)h(the)f(broadcast)g(call)h(b)q(efore)g
(pro)q(cess)g Fl(c)f Fn(starts)74 2402 y(executing)d(the)f(broadcast,)f(then)
i(it)f(is)g(p)q(ossible)i(for)d(the)h(messages)g(to)f(b)q(e)i(receiv)o(ed)g
(in)g(the)f(rev)o(erse)74 2458 y(order:)j(pro)q(cess)15 b Fl(c)f
Fn(receiv)o(es)i(b)q(efore)f(the)g(broadcast)f(the)h(message)f(that)g
Fl(b)h Fn(sen)o(t)g(after)f(the)h(broadcast,)74 2515 y(and)h(receiv)o(es)g
(after)e(the)h(broadcast)g(the)g(message)g(that)f Fl(a)h Fn(sen)o(t)g(b)q
(efore)h(the)f(broadcast!)74 2602 y(In)f(summary)l(,)f(non-barrier)h(mo)q(de)
g(routines)f(ma)o(y)g(exhibit)i(a)e(di\013eren)o(t)h(b)q(eha)o(vior)f(than)h
(barrier)f(mo)q(de)949 2727 y(11)p eop
%%Page: 12 12
bop 74 157 a Fn(routines,)14 b(when)f(nondeterministic)i(comm)o(unication)f
(op)q(erations)f(are)f(allo)o(w)o(ed.)20 b(F)l(urthermore,)12
b(ev)o(en)74 214 y(if)k(only)f(deterministic)i(comm)o(unication)f(op)q
(erations)g(are)e(used,)i(a)e(co)q(de)i(that)f(w)o(ould)g(deadlo)q(c)o(k)h
(with)74 270 y(barrier)23 b(mo)q(de)g(routines)g(ma)o(y)f(complete)h
(successfully)i(on)e(some)f(executions)i(when)f(non-barrier)74
327 y(mo)q(de)17 b(routines.)26 b(Therefore,)16 b(barrier)i(mo)q(de)f(should)
h(b)q(e)f(used)h(when)f(debugging)h(co)q(de)f(\(that)f(is,)i(in)74
383 y(iden)o(tifying)h(bugs)f(that)f(ma)o(y)f(not)h(b)q(e)h(caugh)o(t)f(in)h
(non-barrier)g(mo)q(de\).)27 b(Once)18 b(a)f(co)q(de)h(is)g(kno)o(wn)f(to)74
439 y(op)q(erate)h(correctly)g(in)h(barrier)g(mo)q(de,)g(it)f(is)h(p)q
(ossible)g(to)f(switc)o(h)g(to)g(non-barrier)h(mo)q(de)f(for)f(b)q(etter)74
496 y(p)q(erformance)22 b(\(pro)o(vided)g(that)e(the)i(barrier)f(mo)q(de)h
(is)g(not)f(required)h(for)f(the)g(correctness)g(of)g(the)74
552 y(program\).)e(Finally)l(,)e(notice)e(that)g(it)h(is)f(alw)o(a)o(ys)g(p)q
(ossible)i(to)e(use)g(an)g(explicit)j(sync)o(hronization)e(\(i.e.,)74
609 y(to)f(call)h(the)f(routine)h Fl(sync)p Fn(\))e(when)i(a)f(barrier)g(is)h
(needed.)74 696 y(Some)d(CCL)g(op)q(erations)f(ha)o(v)o(e)h(seman)o(tics)g
(that)f(imply)i(a)e(barrier,)h(while)h(others)e(do)h(not.)19
b(Op)q(erations)74 753 y(that)g(imply)h(a)f(barrier)h(are)e
Fl(combine)p Fn(,)h Fl(concat)p Fn(,)g Fl(index)p Fn(,)g(and)h
Fl(sync)p Fn(.)31 b(Th)o(us,)20 b(the)f(implemen)o(tation)74
809 y(of)g(these)g(op)q(erations)g(is)g(the)h(same)e(for)h(barrier)g(and)g
(for)f(non-barrier)i(mo)q(des.)31 b(Other)19 b(op)q(erations)74
866 y(that)d(do)h(not)f(imply)i(a)e(barrier)h(are)f Fl(bcast)p
Fn(,)g Fl(reduce)p Fn(,)g Fl(scatter)p Fn(,)f Fl(gather)p Fn(,)h
Fl(prefix)p Fn(,)g(and)h Fl(shift)p Fn(.)23 b(In)74 922 y(non-barrier)15
b(mo)q(de,)g(the)g(latter)f(op)q(erations)h(\(except)g Fl(shift)p
Fn(\))e(are)i(implemen)o(ted)h(with)f(a)f(fan-in)i(tree)74
979 y(to)i(a)g(particular)i(destination)f(or)f(a)g(fan-out)h(tree)f(from)g(a)
g(particular)i(source.)30 b(F)l(or)18 b(implemen)o(ting)74
1035 y(these)k(op)q(erations)g(in)h(barrier)f(mo)q(de,)h(w)o(e)f(use)g(t)o(w)
o(o)f(in)o(ternal)h(partial)h(sync)o(hronization)f(routines:)74
1092 y Fl(sync-in\(dest,G\))11 b Fn(whic)o(h)k(builds)g(a)e(fan-in)h(tree)g
(in)g(the)f(group)g Fl(G)h Fn(that)e(con)o(v)o(erges)h(at)g(pro)q(cess)g
Fl(dest)p Fn(,)74 1148 y(and)g Fl(sync-out\(src,G\))d Fn(whic)o(h)j(builds)h
(a)e(fan-out)g(tree)g(in)h(the)f(group)g Fl(G)g Fn(that)g(div)o(erges)h(from)
e(pro)q(cess)74 1205 y Fl(src)p Fn(.)22 b(A)16 b(barrier)g(mo)q(de)h(for)e
(the)h(latter)g(op)q(erations)g(is)h(implemen)o(ted)h(b)o(y)e(p)q(erforming)g
(a)g Fl(sync-in\(\))74 1261 y Fn(b)q(efore)f(a)f(fan-out)h(t)o(yp)q(e)f(op)q
(eration)h(\(lik)o(e)g Fl(bcast)f Fn(and)h Fl(scatter)p Fn(\),)e(or)h(b)o(y)h
(p)q(erforming)g(a)f Fl(sync-out\(\))74 1317 y Fn(after)d(a)h(fan-in)g(t)o
(yp)q(e)g(op)q(eration)g(\(lik)o(e)h Fl(reduce)p Fn(,)e Fl(gather)p
Fn(,)g(and)h Fl(prefix)p Fn(\).)18 b(Notice)12 b(that)f(for)g(the)h
Fl(prefix)74 1374 y Fn(op)q(eration,)18 b(the)g(fan-out)f(tree)g(is)h(ro)q
(oted)g(at)e(the)i(highest)g(rank)o(ed)g(pro)q(cess)g(in)g(the)g(group.)26
b(Finally)l(,)74 1430 y(regarding)d(the)f(Pro)q(cess)g(Group)g(creation)h(op)
q(erations,)h Fl(partition\(\))c Fn(implies)25 b(a)d(barrier)g(mo)q(de)74
1487 y(within)17 b(the)e(paren)o(t)g(group)g(while)h Fl(group\(\))e
Fn(do)q(es)i(not.)74 1640 y Fk(3.4)56 b(Dev)n(elop)17 b(and)j(Run)e(Mo)r(des)
74 1757 y Fn(In)h(addition)g(to)f(the)g(c)o(hoice)h(b)q(et)o(w)o(een)f
(barrier)g(and)h(non-barrier)f(mo)q(des,)h(the)f(user)h(can)f(select)h(b)q
(e-)74 1813 y(t)o(w)o(een)d Fh(develop)i Fn(and)e Fh(run)k
Fn(mo)q(des.)i(In)16 b Fh(develop)g Fn(mo)q(de,)g(CCL)g(p)q(erforms)g(more)f
(detailed)j(consistency)74 1869 y(c)o(hec)o(kings)f(of)e(the)h(parameters)f
(that)h(the)g(user)g(sp)q(eci\014es)i(for)d(CCL)h(calls.)23
b(This)16 b(increases)h(the)f(o)o(v)o(er-)74 1926 y(head)h(of)g(the)g(CCL)g
(op)q(erations)g(and)g(ma)o(y)f(require)h(more)g(comm)o(unication)g(b)q(et)o
(w)o(een)h(pro)q(cesses.)25 b(In)74 1982 y Fh(run)17 b Fn(mo)q(de,)f(man)o(y)
g(of)g(the)h(consistency)g(c)o(hec)o(kings)g(are)f(suppressed,)h(and)g(only)g
(c)o(hec)o(kings)g(that)f(are)74 2039 y(required)22 b(b)o(y)e(the)g(seman)o
(tics)h(of)f(the)g(op)q(erations)h(are)f(p)q(erformed.)35 b(The)21
b(default)g(in)g(CCL)g(is)f Fh(run)74 2095 y Fn(mo)q(de)d(and)g(the)g(mo)q
(de)g(can)g(b)q(e)g(c)o(hanged)g(b)o(y)g(the)g(user.)24 b(Examples)18
b(of)e(consistency)i(c)o(hec)o(kings)f(that)74 2152 y(are)g(done)g(only)h(in)
f Fh(develop)g Fn(mo)q(de)h(are)e(c)o(hec)o(king)i(the)f(correctness)g(of)f
(the)h(source,)h(the)f(destination)74 2208 y(and)d(the)g(message)g(length)g
(supplied)j(to)c(a)h(CCL)f(routine,)i(as)e(w)o(ell)i(as)f(c)o(hec)o(king)h
(the)f(mem)o(b)q(ership)h(list)74 2265 y(of)g(a)g(Pro)q(cess)g(Group)g(to)f
(b)q(e)i(v)m(alid.)74 2418 y Fk(3.5)56 b(No)18 b(T)-5 b(ags)20
b(for)e(CCL)i(Routines)74 2534 y Fn(In)i(certain)g(comm)o(unication)g
(libraries,)i(the)d(predominan)o(t)g(mec)o(hanism)h(for)f(matc)o(hing)g
(incoming)74 2591 y(messages)d(to)f(receiv)o(e)j(op)q(erations)e(is)h
Fh(matching)g(by)g(tag)p Fn(,)g(rather)e(than)h Fh(matching)h(by)g(sour)n(c)n
(e)p Fn(.)29 b(This)949 2727 y(12)p eop
%%Page: 13 13
bop 74 157 a Fn(suggests)17 b(a)g(v)o(ersion)h(of)f(CCL)g(where)h(the)f(user)
h(is)g(required)g(to)f(pro)o(vide)h(a)f(tag)g(for)g(eac)o(h)g(CCL)h(call;)74
214 y(this)d(approac)o(h)e(is)i(follo)o(w)o(ed,)f(for)f(example,)i(b)o(y)e
(Express)h([30)o(].)19 b(The)c(requiremen)o(t)f(on)g(tags)f(is)h(that)g(all)
74 270 y(pro)q(cesses)i(that)e(execute)i(a)f(collectiv)o(e)i(comm)o
(unication)f(call)g(pro)o(vide)g(the)f(same)g(tag)f(v)m(alue.)74
358 y(Assume)19 b(that)g(only)g(blo)q(c)o(king)i(p)q(oin)o(t-to-p)q(oin)o(t)e
(comm)o(unications)h(are)f(used,)h(and)f(that)g(all)h(receiv)o(e)74
414 y(op)q(erations)e(matc)o(h)g(incoming)h(messages)e(b)o(y)h(tag,)f(with)i
(no)f(wildcards.)29 b(F)l(urther)18 b(assume)f(that)h(no)74
471 y(t)o(w)o(o)c(messages)g(with)h(the)g(same)g(tag)f(can)h(b)q(e)h(sim)o
(ultaneously)g(w)o(aiting)f(to)f(b)q(e)i(receiv)o(ed)g(b)o(y)f(the)g(same)74
527 y(receiv)o(er.)20 b(Then)14 b(the)f(co)q(de)h(is)g Fh(r)n(ac)n(e-fr)n(e)n
(e)p Fn(.)k(It)13 b(follo)o(ws)g(that)g(CCL)g(can)h(b)q(e)g(implemen)o(ted)g
(using)g(receiv)o(e-)74 583 y(b)o(y-tag,)h(pro)o(vided)h(that)f(the)h(user)g
(guaran)o(tees)f(that)g(the)h(same)f(tag)g(v)m(alue)i(is)f(nev)o(er)g(sim)o
(ultaneously)74 640 y(used)g(b)o(y)f(t)o(w)o(o)f(op)q(erations)h(that)g(in)o
(v)o(olv)o(e)h(a)e(common)h(pro)q(cess.)74 728 y(This)d(condition)g(ma)o(y)e
(b)q(e)h(a)o(wkw)o(ard)f(to)g(ful\014ll.)21 b(F)l(urthermore,)11
b(the)g(e\016cien)o(t)g(implemen)o(tation)h(of)f(some)74 784
y(collectiv)o(e)16 b(comm)o(unication)f(op)q(erations)g(\(suc)o(h)f(as)g(an)h
(ascend)f(comm)o(unication)i(on)e(a)g(tree\))g(requires)74
840 y(matc)o(hing)i(b)o(y)g(more)f(than)h(tag;)f(e.g.,)g(using)h
Fl(\(source,)23 b(tag\))15 b Fn(to)h(select)g(incoming)h(messages.)22
b(But,)74 897 y(then,)15 b(matc)o(hing-b)o(y-source)h(is)g(su\016cien)o(t,)f
(and)h(the)f(tag)f(is)i(sup)q(er\015uous.)74 1071 y Fm(4)69
b(P)n(erformance)23 b(Issues)g(in)f(CCL)74 1204 y Fn(This)14
b(section)f(discusses)h(sev)o(eral)f(p)q(erformance)g(issues)h(and)f(describ)
q(es)h(some)f(of)f(the)h(algorithms)g(used)74 1260 y(in)19
b(CCL.)e(The)h(design)h(of)e(comm)o(unication)i(algorithms)f(for)f(CCL)h
(attempts)e(to)i(address)f(b)q(oth)h(the)74 1317 y(e\016ciency)j(and)e(the)h
(p)q(ortabilit)o(y)g(of)f(the)g(comm)o(unication)h(op)q(erations.)32
b(In)20 b(the)g(discussion)h(of)d(the)74 1373 y(comm)o(unication)e
(algorithms)f(in)h(this)g(section,)f(w)o(e)g(assume)g(one)h(pro)q(cess)f(p)q
(er)h(pro)q(cessor.)74 1526 y Fk(4.1)56 b(Comm)n(unication)16
b(Mo)r(del)74 1643 y Fn(In)j(designing)g(algorithms)f(for)f(the)h(CCL)g(op)q
(erations,)g(w)o(e)f(assume)h(a)f(mo)q(del)i(of)f(a)f(fully-connected)74
1699 y(message-passing)j(system)f(in)h(whic)o(h)g(eac)o(h)g(pro)q(cess)g(can)
f(comm)o(unicate)h(directly)h(with)f(an)o(y)f(other)74 1756
y(pro)q(cess)d(and)g(ev)o(ery)g(pair)h(of)e(pro)q(cesses)h(are)g(equally)h
(distan)o(t.)22 b(W)l(e)16 b(also)g(assume)g(that)f(eac)o(h)h(pro)q(cess)74
1812 y(can)f(send)h(one)f(message)g(and,)g(sim)o(ultaneously)l(,)h(receiv)o
(e)g(another)f(message)g(in)h(the)f(same)g(comm)o(uni-)74 1869
y(cation)h(step.)j(\(This)d(is)g(usually)g(done)g(using)g(a)f
Fl(send-receive)e Fn(op)q(eration)j(found)f(in)h(man)o(y)f(parallel)74
1925 y(systems.\))j(In)12 b(most)e(existing)j(message-passing)e(parallel)i
(systems,)e(the)h(time)f(for)g(sending)h(an)g Fj(m)p Fn(-b)o(yte)74
1982 y(message)j(from)f(pro)q(cess)h Fj(p)g Fn(to)f(pro)q(cess)h
Fj(q)r Fn(,)g(without)g(congestion,)g(can)g(b)q(e)g(mo)q(deled)i(as)d
Fj(T)19 b Fn(=)13 b Fj(t)1709 1989 y Fb(s)1737 1982 y Fn(+)d
Fj(mt)1838 1989 y Fb(c)1856 1982 y Fn(,)74 2038 y(where)i Fj(t)218
2045 y Fb(s)249 2038 y Fn(is)g(the)g(o)o(v)o(erhead)g(\(start-up)f(time\))h
(asso)q(ciated)g(with)g(eac)o(h)g(send)h(and/or)e(receiv)o(e)i(op)q(eration,)
74 2095 y(and)g Fj(t)176 2102 y Fb(c)207 2095 y Fn(is)g(the)g(comm)o
(unication)h(time)f(for)f(sending)j(eac)o(h)e(additional)h(b)o(yte)f(\(or)f
(an)o(y)g(appropriate)h(data)74 2151 y(unit\).)74 2239 y(Suc)o(h)25
b(a)e(fully-connected)k(mo)q(del)d(addresses)g(emerging)h(trends)f(in)g(man)o
(y)g(mo)q(dern)g(distributed-)74 2295 y(memory)g(parallel)i(computers)f(and)f
(message-passing)h(comm)o(unication)g(en)o(vironmen)o(ts.)48
b(These)74 2352 y(trends)16 b(are)f(eviden)o(t)i(in)g(systems)e(suc)o(h)h(as)
f(Thinking)j(Mac)o(hines')d(CM-5)h([29)o(],)f(In)o(tel's)h(P)o(aragon)e([31)o
(],)74 2408 y(NCUBE's)19 b(nCUBE/2)h([27)o(],)f(MIT's)g(J-Mac)o(hine)i([14)o
(],)f(IBM's)f(V)l(ulcan)i([7)o(,)e(32],)h(and)f(the)h(recen)o(tly)74
2465 y(announced)e(IBM's)e(Scalable)i(PO)o(WERparallel)g(System)f(1)f
(\(SP1\),)f(and)i(in)g(en)o(vironmen)o(ts)g(suc)o(h)g(as)74
2521 y(Express)g([30)o(],)g(P)l(ARMA)o(CS)h([24)o(],)e(PICL)i([22)o(],)f(Zip)
q(co)q(de)i([28)o(])d(and)i(V)l(en)o(us)g([2)o(].)25 b(These)18
b(systems)e(and)74 2577 y(en)o(vironmen)o(ts)k(generally)h(ignore)f(the)g(sp)
q(eci\014c)i(structure)e(and)g(top)q(ology)f(of)h(the)g(comm)o(unication)949
2727 y(13)p eop
%%Page: 14 14
bop 74 157 a Fn(net)o(w)o(ork)18 b(and)h(assume)g(a)g(fully-connected)j
(collection)e(of)f(pro)q(cesses,)h(in)g(whic)o(h)g(eac)o(h)f(pro)q(cess)g
(can)74 214 y(comm)o(unicate)d(directly)g(with)g(an)o(y)f(other)g(pro)q(cess)
g(b)o(y)g(sending)i(and)e(receiving)i(messages.)j(The)15 b(fact)74
270 y(that)j(the)h(mo)q(del)h(do)q(es)f(not)f(assume)h(an)o(y)f(single)i(top)
q(ology)e(mak)o(es)g(it)h(more)g(general)g(and)g(\015exible.)74
327 y(This)14 b(mo)q(del,)f(for)g(instance,)h(allo)o(ws)f(the)f(creation)i
(of)e(algorithms)h(that)f(are)g(p)q(ortable)i(b)q(et)o(w)o(een)f(di\013er-)74
383 y(en)o(t)g(mac)o(hines,)g(that)f(can)h(op)q(erate)f(within)i(arbitrary)e
(and)h(dynamic)g(subsets)g(of)f(pro)q(cesses,)h(and)g(that)74
439 y(can)18 b(op)q(erate)g(in)g(the)g(presence)h(of)e(faults)h(\(assuming)f
(connectivit)o(y)i(is)f(main)o(tained\).)28 b(In)19 b(addition,)74
496 y(algorithms)14 b(dev)o(elop)q(ed)i(for)e(this)h(mo)q(del)g(can)f(also)h
(b)q(e)f(helpful)j(in)e(designing)h(algorithms)e(for)g(sp)q(eci\014c)74
552 y(top)q(ologies.)74 640 y(T)l(o)k(examine)h(the)g(p)q(erformance)f(of)g
(comm)o(unication)h(algorithms,)g(w)o(e)f(de\014ne)h(the)f(follo)o(wing)h
(three)74 696 y(complexit)o(y)d(measures:)142 776 y Fi(\017)23
b Fj(C)220 783 y Ff(1)240 776 y Fn(:)18 b(the)13 b(n)o(um)o(b)q(er)f(of)g
(comm)o(unication)h(steps)f(required)h(b)o(y)f(an)g(algorithm.)19
b Fj(C)1534 783 y Ff(1)1566 776 y Fn(is)13 b(an)f(imp)q(ortan)o(t)188
833 y(measure)k(when)h(the)f(comm)o(unication)h(start-up)f(time)g(is)h(high)g
(relativ)o(e)g(to)e(the)i(transfer)e(time)188 889 y(of)d(one)h(unit)g(of)f
(data)g(and)h(the)f(message)g(size)i(p)q(er)f(send/receiv)o(e)h(op)q(eration)
e(is)h(relativ)o(ely)h(small.)142 977 y Fi(\017)23 b Fj(C)220
984 y Ff(2)240 977 y Fn(:)j(the)18 b(amoun)o(t)g(of)f(data)h(\(in)h(the)f
(appropriate)g(unit)h(of)f(comm)o(unication:)27 b(b)o(ytes,)18
b(\015its,)h(or)188 1034 y(pac)o(k)o(ets\))d(transferred)h(in)i(sequence)f(b)
o(y)g(an)o(y)f(pro)q(cess.)27 b Fj(C)1217 1041 y Ff(2)1255
1034 y Fn(is)18 b(an)f(imp)q(ortan)o(t)h(measure)f(when)188
1090 y(the)e(start-up)g(time)g(is)h(small)g(compared)f(to)g(the)g(message)g
(size.)142 1178 y Fi(\017)23 b Fj(C)220 1185 y Ff(3)240 1178
y Fn(:)29 b(the)20 b(total)f(amoun)o(t)g(of)g(data)g(comm)o(unicated)h(o)o(v)
o(er)f(the)h(net)o(w)o(ork)e(\(in)j(the)f(appropriate)188 1235
y(unit)c(of)f(comm)o(unication:)20 b(b)o(ytes,)15 b(\015its,)g(or)g(pac)o(k)o
(ets\).)k(Measures)c Fj(C)1386 1242 y Ff(1)1422 1235 y Fn(and)g
Fj(C)1542 1242 y Ff(2)1577 1235 y Fn(do)h(not)e(address)188
1291 y(the)f(issue)h(of)f(load)h(on)f(the)h(net)o(w)o(ork.)k
Fj(C)878 1298 y Ff(3)911 1291 y Fn(also)c(considers)g(the)f(fact)g(that)g
(comm)o(unicating)h(more)188 1347 y(data)g(o)o(v)o(er)h(the)g(net)o(w)o(ork)f
(causes)h(the)h(net)o(w)o(ork)e(to)g(b)q(ecome)i(more)f(congested.)74
1458 y(Th)o(us,)g(under)h(the)g(fully-connected)i(mo)q(del,)e(an)f(algorithm)
h(has)f(an)g(estimated)h(time)g(complexit)o(y)g(of)74 1514
y Fj(T)k Fn(=)14 b Fj(C)202 1521 y Ff(1)222 1514 y Fj(t)238
1521 y Fb(s)267 1514 y Fn(+)d Fj(C)345 1521 y Ff(2)365 1514
y Fj(t)381 1521 y Fb(c)399 1514 y Fn(.)21 b(The)16 b(term)g
Fj(C)669 1521 y Ff(3)705 1514 y Fn(do)q(es)g(not)f(a\013ect)g(the)h
(complexit)o(y)h(here,)e(but)h(ma)o(y)f(b)q(e)i(helpful)h(in)74
1570 y(estimating)d(the)g(congestion)f(b)q(eha)o(vior)h(of)g(a)f(real)h
(parallel)h(mac)o(hine.)k(F)l(or)14 b(instance,)h(one)g(can)g(mo)q(del)74
1627 y Fj(T)27 b Fn(=)21 b Fj(C)216 1634 y Ff(1)236 1627 y
Fj(t)252 1634 y Fb(s)284 1627 y Fn(+)14 b Fj(C)365 1634 y Ff(2)385
1627 y Fj(t)401 1634 y Fb(c)432 1627 y Fn(+)g Fj(f)5 b Fn(\()p
Fj(C)558 1634 y Ff(3)578 1627 y Fn(\),)20 b(where)g(the)g(function)h
Fj(f)k Fn(can)20 b(b)q(e)h(deriv)o(ed)g(for)f(a)f(giv)o(en)i(mac)o(hine)g(b)o
(y)74 1683 y(curv)o(e-\014tting)16 b(exp)q(erimen)o(tal)g(results.)74
1771 y(It)f(should)h(b)q(e)f(noted)g(that)f(there)h(are)f(more)h(detailed)h
(comm)o(unication)g(mo)q(dels,)f(suc)o(h)g(as)f(the)h(P)o(ostal)74
1827 y(mo)q(del)f([3)o(])f(and)f(the)h(LogP)g(mo)q(del)g([13],)f(whic)o(h)i
(further)e(tak)o(e)g(in)o(to)h(accoun)o(t)f(that)g(a)h(receiving)h(pro)q
(cess)74 1884 y(generally)22 b(completes)f(its)f Fl(receive)g
Fn(op)q(eration)g(later)h(than)f(the)g(corresp)q(onding)i(sending)f(pro)q
(cess)74 1940 y(\014nishes)c(its)e Fl(send)f Fn(op)q(eration.)20
b(Ho)o(w)o(ev)o(er,)14 b(designing)i(e\016cien)o(t)g(algorithms)f(for)f
(these)i(mo)q(dels)f(seems)74 1997 y(to)f(b)q(e)h(more)f(complicated.)21
b(Another)14 b(imp)q(ortan)o(t)g(issue)i(is)f(the)f(uniformit)o(y)h(of)f(the)
h(implemen)o(tation.)74 2053 y(F)l(or)20 b(example,)i(in)g(the)e(LogP)g(mo)q
(del,)j(the)d(collectiv)o(e)i(comm)o(unication)g(algorithms)e(are)g(designed)
74 2110 y(based)c(on)g Fj(P)23 b Fn(\(the)15 b(n)o(um)o(b)q(er)i(of)e(pro)q
(cessors\).)21 b(The)c(optimal)f(algorithms)g(for)f(t)o(w)o(o)g(distinct)i(v)
m(alues)g(of)74 2166 y Fj(P)23 b Fn(are)17 b(sometimes)g(v)o(ery)f
(di\013eren)o(t.)25 b(This)18 b(presen)o(ts)f(a)f(c)o(hallenge)i(if)g(the)f
(goal)f(is)i(to)e(supp)q(ort)h(collec-)74 2223 y(tiv)o(e)i(comm)o(unication)g
(algorithms)g(for)e(v)m(arious)i(sizes)h(pro)q(cess)f(groups)f(using)h(the)g
(same)f(collectiv)o(e)74 2279 y(comm)o(unication)e(library)l(.)74
2429 y Fk(4.2)56 b(T)-5 b(unable)19 b(Algorithms)74 2546 y
Fn(One)12 b(goal)f(in)h(the)f(design)h(of)f(the)g(algorithms)g(for)g(CCL)g(w)
o(as)f(that)h(they)g(b)q(e)h(tunable,)g(that)f(is,)h(that)e(they)74
2602 y(exhibit)17 b(a)d(trade-o\013)g(b)q(et)o(w)o(een)h(the)g(di\013eren)o
(t)g(comm)o(unication)h(complexit)o(y)f(measures.)20 b(This)15
b(goal)g(is)949 2727 y(14)p eop
%%Page: 15 15
bop 74 157 a Fn(imp)q(ortan)o(t)15 b(for)g(suc)o(h)h(a)f(library)h(to)f(b)q
(e)h(b)q(oth)g(p)q(ortable)g(and)g(e\016cien)o(t.)21 b(In)16
b(the)g(follo)o(wing)g(discussion,)74 214 y(w)o(e)f(use)g Fj(n)g
Fn(to)f(denote)h(the)f(n)o(um)o(b)q(er)h(of)g(pro)q(cesses)g(\(pro)q
(cessors\))f(in)o(v)o(olv)o(ed)h(in)h(a)e(CCL)h(op)q(eration,)f(and)74
270 y(w)o(e)k(use)h Fj(m)f Fn(to)g(denote)h(the)f(size)h(of)f(data)g(eac)o(h)
g(pro)q(cess)h(has)f(initially)l(.)33 b(All)19 b(CCL)g(routines)f(can)h(b)q
(e)74 327 y(implemen)o(ted)g(with)e Fj(C)482 334 y Ff(1)517
327 y Fn(=)f Fi(d)p Fn(log)647 337 y Ff(2)674 327 y Fj(n)p
Fi(e)h Fn(comm)o(unication)h(steps,)e(whic)o(h)i(is)f(optimal)h(for)e(this)h
(measure.)74 383 y(\(The)c Fl(shift)f Fn(routine)h(can)g(b)q(e)g(implemen)o
(ted)h(optimally)g(in)f(one)g(comm)o(unication)h(step,)e(b)o(y)h(using)g(the)
74 439 y Fl(send-receive)g Fn(op)q(eration.\))19 b(Ho)o(w)o(ev)o(er,)13
b(when)h(designing)i(an)e(algorithm)g(to)g(minimize)i Fj(C)1672
446 y Ff(1)1692 439 y Fn(,)e(some)g(of)74 496 y(the)j(corresp)q(onding)g
(terms)f(for)g Fj(C)678 503 y Ff(2)715 496 y Fn(or)g Fj(C)804
503 y Ff(3)840 496 y Fn(ma)o(y)g(not)g(b)q(e)i(optimal.)24
b(In)17 b(general,)g(there)g(are)f(tradeo\013s)74 552 y(b)q(et)o(w)o(een)g
Fj(C)282 559 y Ff(1)317 552 y Fn(and)f Fj(C)437 559 y Ff(2)458
552 y Fn(,)f(or)h(b)q(et)o(w)o(een)h Fj(C)749 559 y Ff(1)784
552 y Fn(and)f Fj(C)904 559 y Ff(3)925 552 y Fn(.)74 640 y(As)k(an)h
(example,)g(consider)h(the)e Fl(index)f Fn(op)q(eration.)33
b(A)19 b(straigh)o(tforw)o(ard)e(implemen)o(tation)k(of)d(the)74
696 y Fl(index)11 b Fn(op)q(eration)g(can)g(b)q(e)h(ac)o(hiev)o(ed)g(with)g
Fj(C)852 703 y Ff(1)885 696 y Fn(=)h Fj(n)r Fi(\000)r Fn(1)e(comm)o
(unication)h(steps)f(and)h Fj(C)1573 703 y Ff(2)1606 696 y
Fn(=)h Fj(m)p Fn(\()p Fj(n)r Fi(\000)r Fn(1\))p Fj(=n)74 753
y Fn(units)22 b(of)g(data.)38 b(This)22 b(is)h(simply)f(b)o(y)g(sending)h
(the)e(data)g(directly)i(from)e(source)h(to)f(destination.)74
809 y(Namely)l(,)15 b(eac)o(h)g(pro)q(cess)g(sends)h Fj(m=n)e
Fn(units)i(of)e(data)g(to)h Fj(n)9 b Fi(\000)h Fn(1)15 b(other)f(pro)q
(cesses.)20 b(Another)15 b(approac)o(h)74 866 y(is)g(b)o(y)f(using)h(a)e
(di\013eren)o(t)i(radix)f(for)g(represen)o(ting)g(the)g(PIDs)g(of)g(the)g
(pro)q(cesses)h(\(the)f(straigh)o(tforw)o(ard)74 922 y(approac)o(h)20
b(is)g(using)g(a)g(radix)g Fj(n)g Fn(represen)o(tation\).)33
b(In)21 b(the)f(case)g(of)f(a)g(radix)h(2)g(represen)o(tation)g(w)o(e)74
979 y(get)g Fj(C)187 986 y Ff(1)228 979 y Fn(=)h Fi(d)p Fn(log)8
b Fj(n)p Fi(e)20 b Fn(comm)o(unication)h(steps)f(and)g Fj(C)1003
986 y Ff(2)1044 979 y Fi(\031)h Fn(\()p Fj(m)8 b Fn(log)g Fj(n)p
Fn(\))p Fj(=)p Fn(2)19 b(units)i(of)e(data.)34 b(In)20 b(general,)74
1035 y(b)o(y)e(c)o(ho)q(osing)g(an)g(appropriate)f(radix)h
Fj(r)q Fn(,)g(the)g Fl(index)f Fn(op)q(eration)h(can)f(b)q(e)i(implemen)o
(ted)g(with)f Fj(C)1796 1042 y Ff(1)1833 1035 y Fi(\031)74
1092 y Fn(\()p Fj(r)8 b Fi(\000)f Fn(1\))h(log)270 1103 y Fb(r)297
1092 y Fj(n)14 b Fn(comm)o(unication)h(steps)e(and)i(with)f
Fj(C)988 1099 y Ff(2)1021 1092 y Fi(\031)f Fn(\()p Fj(m)p Fn(\()p
Fj(r)7 b Fi(\000)g Fn(1\))h(log)1322 1103 y Fb(r)1349 1092
y Fj(n)p Fn(\))p Fj(=r)14 b Fn(units)h(of)e(data.)19 b(Hence,)74
1148 y(it)c(is)f(p)q(ossible)i(to)e(implemen)o(t)h(a)f(parameterized)g
(algorithm)h(whic)o(h)g(can)f(b)q(e)h(tuned)f(according)h(to)e(the)74
1205 y(start-up)h(time)h Fj(t)367 1212 y Fb(s)386 1205 y Fn(,)f(p)q(er-b)o
(yte)h(transfer)e(time)i Fj(t)879 1212 y Fb(c)897 1205 y Fn(,)f(the)h
(message)f(size)h Fj(m)p Fn(,)f(and)h(p)q(ossibly)h(the)e(n)o(um)o(b)q(er)h
(of)74 1261 y(\\parallel)i(p)q(orts")d(that)h(can)g(supp)q(ort)g(concurren)o
(t)h(sends)f(and)h(receiv)o(es)g(e\013ectiv)o(ely)g(\(see)f([12)o(]\).)74
1349 y(As)20 b(a)f(second)i(example,)g(consider)g(the)f(broadcasting)g
(problem.)34 b(The)20 b(algorithm)g(for)f(the)h Fl(bcast)74
1405 y Fn(routine)g(is)g(straigh)o(tforw)o(ard)d(when)j(the)g(size)g(of)f
(the)h(data)f(is)h Fj(m)f Fn(=)i(1,)e(that)g(is,)i(when)f(the)f(source)74
1461 y(of)e(the)g(broadcast)g(has)g(one)g(item)g(to)g(broadcast.)25
b(In)18 b(this)f(case,)h(a)e(divide-and-conque)q(r)k(algorithm)74
1518 y(pro)o(vides)15 b(an)g(optimal)g(solution,)g(also)g(kno)o(wn)g(as)f
Fh(r)n(e)n(cursive)h(doubling)p Fn(.)k(Ho)o(w)o(ev)o(er,)14
b(the)h(broadcasting)74 1574 y(problem)f(b)q(ecomes)f(m)o(uc)o(h)g(more)g
(complicated)h(when)f(there)g(are)g Fj(m)f(>)h Fn(1)g(units)h(of)e(data)g(to)
h(broadcast.)74 1631 y(In)19 b(this)f(case,)h(a)e(lo)o(w)o(er)h(b)q(ound)h
(on)f(the)g(time)g(is)h Fi(d)p Fn(log)8 b Fj(n)p Fi(e)g Fj(t)1102
1638 y Fb(s)1133 1631 y Fn(+)k(\()p Fj(m)g Fn(+)g Fi(d)p Fn(log)d
Fj(n)p Fi(e)j(\000)g Fn(1\))p Fj(t)1547 1638 y Fb(c)1564 1631
y Fn(.)29 b(The)18 b(common)74 1687 y(divide-and-conquer)f(algorithm)d(based)
g(on)g(a)g(binomial)i(tree)e(tak)o(es)f Fi(d)p Fn(log)c Fj(n)p
Fi(e)f Fn(\()p Fj(t)1464 1694 y Fb(s)1490 1687 y Fn(+)g Fj(mt)1589
1694 y Fb(c)1607 1687 y Fn(\))13 b(time,)i(whic)o(h)74 1744
y(ma)o(y)j(b)q(e)h(far)e(from)h(optimal.)29 b(When)19 b Fj(n)f
Fn(is)h(a)f(p)q(o)o(w)o(er)g(of)g(t)o(w)o(o,)f(an)h(algorithm)g(based)h(on)f
(log)9 b Fj(n)18 b Fn(edge-)74 1800 y(disjoin)o(t)e(spanning)h(trees)e(on)g
(a)g(\(log)8 b Fj(n)p Fn(\)-cub)q(e)16 b(is)g(giv)o(en)g(in)g([26)o(,)f(25].)
20 b(This)c(algorithm)f(requires)h Fj(C)1800 1807 y Ff(2)1833
1800 y Fn(=)74 1857 y Fj(m)c Fn(+)h(log)8 b Fj(n)13 b Fi(\000)f
Fn(1,)19 b(whic)o(h)g(is)g(optimal,)h(and)e(tak)o(es)g Fj(T)24
b Fn(=)18 b(\()1081 1823 y Fi(p)p 1119 1823 74 2 v 34 x Fj(mt)1175
1864 y Fb(c)1205 1857 y Fn(+)1252 1822 y Fi(p)p 1290 1822 129
2 v 35 x Fn(log)8 b Fj(nt)1399 1864 y Fb(s)1419 1857 y Fn(\))1437
1840 y Ff(2)1474 1857 y Fn(time.)30 b(F)l(or)18 b(arbitrary)74
1913 y(v)m(alues)g(of)f Fj(n)p Fn(,)h(an)f(algorithm)g(based)g(on)g(the)g
(generalized)i(Fib)q(onacci)g(trees)e(w)o(as)f(giv)o(en)h(in)h([10)o(])f
(with)74 1970 y Fj(C)106 1977 y Ff(2)149 1970 y Fi(\024)24
b Fj(m)14 b Fn(+)h(log)8 b Fj(n)15 b Fn(+)f(3)8 b(log)g(log)g
Fj(n)15 b Fn(+)g(15.)38 b(More)21 b(recen)o(tly)l(,)i(an)f(algorithm)f(based)
h(on)f(edge-disjoin)o(t)74 2026 y(spanning)g(trees)e(of)g(cascaded)g
(decreasing-size)j(h)o(yp)q(ercub)q(es)f(w)o(as)d(giv)o(en)i([4)o(])f(with)h
(nearly)g(optimal)74 2082 y Fj(C)106 2089 y Ff(2)139 2082 y
Fn(=)13 b Fj(m)6 b Fn(+)g Fi(d)q Fn(log)i Fj(n)p Fi(e)q Fn(.)19
b(The)13 b Fl(reduce)g Fn(op)q(eration)g(is)h(usually)h(implemen)o(ted)g(in)f
(a)f(similar)h(manner)g(to)e(the)74 2139 y Fl(bcast)j Fn(op)q(eration)g(b)o
(y)g(rev)o(ersing)h(the)f(\015o)o(w)g(of)f(the)i(messages.)74
2227 y(As)11 b(another)f(example,)j(consider)e(the)g Fl(combine)f
Fn(and)h Fl(prefix)f Fn(op)q(erations.)19 b(These)11 b(op)q(erations)g
(exhibit)74 2283 y(an)17 b(in)o(teresting)g(trade-o\013)f(b)q(et)o(w)o(een)h
(measures)f Fj(C)954 2290 y Ff(1)991 2283 y Fn(and)h Fj(C)1113
2290 y Ff(3)1133 2283 y Fn(.)24 b(On)17 b(one)g(hand,)g(these)g(op)q
(erations)f(can)74 2339 y(b)q(e)22 b(implemen)o(ted)h(with)f
Fj(C)559 2346 y Ff(1)602 2339 y Fn(=)h(2)8 b Fi(d)p Fn(log)g
Fj(n)p Fi(e)22 b Fn(and)f Fj(C)972 2346 y Ff(3)1016 2339 y
Fn(=)i Fj(O)q Fn(\()p Fj(mn)p Fn(\))e(using)h(a)f(reduction)h(tree)f(follo)o
(w)o(ed)74 2396 y(b)o(y)c(a)f(broadcast)f(tree.)24 b(On)17
b(the)f(other)g(hand,)h(these)g(op)q(erations)g(can)f(b)q(e)h(implemen)o(ted)
h(with)f Fj(C)1798 2403 y Ff(1)1833 2396 y Fn(=)74 2452 y Fi(d)p
Fn(log)9 b Fj(n)p Fi(e)i Fn(and)g Fj(C)335 2459 y Ff(3)368
2452 y Fn(=)i Fj(O)q Fn(\()p Fj(mn)8 b Fn(log)f Fj(n)p Fn(\))k(using)h(a)e
(butter\015y-t)o(yp)q(e)h(or)g(circulan)o(t-graph-t)o(yp)q(e)h(comm)o
(unication)74 2509 y(pattern.)41 b(In)23 b(fact,)g(h)o(ybrid)g(algorithms)f
(for)f(these)i(op)q(erations)f(exist.)42 b(F)l(or)21 b(instance,)k(a)d(h)o
(ybrid)74 2565 y(algorithm)c(for)f(the)h Fl(combine)f Fn(op)q(eration)h
(requires)h Fj(C)1034 2572 y Ff(1)1071 2565 y Fn(=)e Fi(d)p
Fn(log)9 b Fj(n)p Fi(e)j Fn(+)g Fj(k)19 b Fn(comm)o(unication)g(steps)e(and)
949 2727 y(15)p eop
%%Page: 16 16
bop 74 157 a Fn(comm)o(unicates)16 b Fj(C)401 164 y Ff(3)433
157 y Fn(=)d Fj(m)534 139 y Fb(n)p 526 146 37 2 v 526 175 a
Ff(2)544 166 y Fa(k)568 157 y Fn(\(log)8 b Fj(n)i Fn(+)h(2)758
141 y Fb(k)q Ff(+1)834 157 y Fi(\000)f Fj(k)i Fi(\000)e Fn(2\))15
b(units)h(of)e(data)h(\(see)g([1)o(]\).)74 245 y(The)k Fl(scatter)e
Fn(and)i Fl(gather)e Fn(op)q(erations)h(resem)o(ble)h(the)g
Fl(bcast)e Fn(and)i Fl(reduce)e Fn(op)q(erations)i(in)g(their)74
301 y(functionalit)o(y)l(.)h(Ho)o(w)o(ev)o(er,)12 b(in)h(terms)e(of)h(their)g
(p)q(erformance,)h(these)f(op)q(erations)g(can)g(b)q(e)h(implemen)o(ted)74
358 y(with)e Fj(C)205 365 y Ff(1)238 358 y Fn(=)h Fi(d)q Fn(log)c
Fj(n)p Fi(e)j Fn(comm)o(unication)f(steps)h(and)f Fj(C)966
365 y Ff(3)999 358 y Fi(\031)j Fn(\()p Fj(m)8 b Fn(log)f Fj(n)p
Fn(\))p Fj(=)p Fn(2)j(units)h(of)e(data,)i(or,)f(alternativ)o(ely)l(,)74
414 y(they)j(can)h(b)q(e)g(implemen)o(ted)h(with)e Fj(C)716
421 y Ff(1)749 414 y Fn(=)g Fj(n)6 b Fi(\000)g Fn(1)14 b(comm)o(unication)g
(steps)f(and)g Fj(C)1453 421 y Ff(3)1486 414 y Fn(=)g Fj(m)p
Fn(\()p Fj(n)6 b Fi(\000)g Fn(1\))p Fj(=n)13 b Fn(units)74
471 y(of)i(data.)74 558 y(Finally)l(,)i(consider)g(the)f Fl(concat)f
Fn(op)q(eration.)21 b(The)16 b(next)g(subsection)h(outlines)g(an)f(algorithm)
f(for)g(the)74 615 y Fl(concat)j Fn(op)q(eration)g(that)g(is)h(optimal)g(in)g
(all)h(the)e(three)h(complexit)o(y)g(measures,)g(hence,)h(it)e(enables)74
671 y(go)q(o)q(d)d(p)q(erformance)h(o)o(v)o(er)e(a)h(v)m(ariet)o(y)g(of)g
(parallel)i(mac)o(hines.)74 824 y Fk(4.3)56 b(An)19 b(Optimal)e(Algorithm)f
(for)j(Concatenation)74 941 y Fn(Here,)f(w)o(e)g(outline)g(an)g(algorithm)f
(for)g(the)h Fl(concat)f Fn(op)q(eration)h(whic)o(h)g(is)g(optimal)g(with)g
(resp)q(ect)g(to)74 997 y(measures)13 b Fj(C)299 1004 y Ff(1)319
997 y Fn(,)g Fj(C)377 1004 y Ff(2)411 997 y Fn(and)g Fj(C)529
1004 y Ff(3)549 997 y Fn(.)19 b(In)14 b(the)f Fl(concat)f Fn(\(all-to-all)j
(broadcast\))d(op)q(eration)h(among)f Fj(n)h Fn(pro)q(cesses,)74
1054 y(eac)o(h)k(pro)q(cess)g(has)f(a)g(\014xed-size)j(message)d(\(also)g
(called)i(a)f Fh(data)h(blo)n(ck\))f Fn(that)f(it)h(needs)g(to)f(broadcast)74
1110 y(to)e(the)g(other)g Fj(n)8 b Fi(\000)h Fn(1)k(pro)q(cesses.)20
b(Th)o(us,)14 b(at)g(the)g(end,)h(eac)o(h)f(pro)q(cess)h(has)f(all)h
Fj(n)f Fn(data)g(blo)q(c)o(ks.)20 b(Because)74 1167 y Fj(n)c
Fn(need)g(not)f(necessarily)i(b)q(e)g(a)e(p)q(o)o(w)o(er)g(of)g(t)o(w)o(o,)f
(the)h(simple)i(optimal)f(algorithm)g(for)f(concatenation,)74
1223 y(whic)o(h)h(is)g(based)f(on)h(a)e(butter\015y-t)o(yp)q(e)i(comm)o
(unication)g(pattern,)e(cannot)h(b)q(e)h(directly)h(used.)74
1311 y(The)i(optimal)g(algorithm)f(for)g(the)h Fl(concat)e
Fn(op)q(eration)i(is)g(based)g(on)f(the)h(structure)f(of)g(a)g(circulan)o(t)
74 1367 y(graph.)h(A)14 b Fh(cir)n(culant)h(gr)n(aph)j Fj(G)p
Fn(\()p Fj(n;)8 b(S)s Fn(\))k(is)j(c)o(haracterized)g(b)o(y)f(t)o(w)o(o)e
(parameters:)19 b(the)14 b(n)o(um)o(b)q(er)g(of)g(no)q(des)74
1424 y Fj(n)p Fn(,)h(and)g(a)f(set)h(of)f(in)o(teger)h(o\013sets)f
Fj(S)s Fn(.)19 b(The)c(no)q(des)h(of)e(the)h(graph)g(are)f(lab)q(eled)j(from)
d(0)g(through)h Fj(n)10 b Fi(\000)f Fn(1.)74 1480 y(Eac)o(h)20
b(no)q(de)h Fj(i)f Fn(is)g(connected)h(to)f(no)q(des)g(of)g(the)g(form)g
(\(\()p Fj(i)12 b Fi(\006)i Fj(s)p Fn(\))e(mo)q(d)h Fj(n)p
Fn(\))20 b(for)g(all)h Fj(s)g Fi(2)g Fj(S)h Fn(\(see)f([17)o(]\).)74
1537 y(Circulan)o(t)f(graphs)e(are)g(an)h(imp)q(ortan)o(t)f(class)h(of)g(net)
o(w)o(orks)e(whic)o(h)j(can)f(b)q(e)g(used)g(as)g(fault-toleran)o(t)74
1593 y(net)o(w)o(orks)g(for)h(man)o(y)g(other)f(net)o(w)o(orks)h([9)o(,)g(16)
o(].)35 b(W)l(e)20 b(use)h(a)f(circulan)o(t)h(graph)f(with)g(p)q(o)o(w)o
(er-of-t)o(w)o(o)74 1649 y(o\013sets)c Fj(S)i Fn(=)d Fi(f)p
Fn(1)p Fj(;)8 b Fn(2)p Fj(;)g Fn(4)p Fj(;)g Fi(\001)f(\001)g(\001)t
Fj(;)h Fn(2)566 1633 y Fb(k)q Fq(\000)p Ff(1)632 1649 y Fi(g)p
Fn(,)16 b(where)h Fj(k)g Fn(=)e Fi(d)q Fn(log)8 b Fj(n)p Fi(e)p
Fn(,)17 b(as)g(a)f(structure)h(for)f(the)h Fl(concat)f Fn(algorithm)74
1706 y([11)o(])f(\(see)g(Figure)h(1\).)74 1794 y(The)g(algorithm)f(consists)g
(of)g Fj(k)h Fn(steps.)k(In)c(step)f(0,)g(eac)o(h)g(pro)q(cess)g
Fj(i)g Fn(sends)h(its)f(data)g(blo)q(c)o(k)h(to)e(pro)q(cess)74
1850 y(\()p Fj(i)c Fi(\000)g Fn(1\))i(mo)q(d)h Fj(n)p Fn(,)i(receiv)o(es)i(a)
e(data)f(blo)q(c)o(k)i(from)f(pro)q(cess)h(\()p Fj(i)9 b Fn(+)i(1\))h(mo)q(d)
h Fj(n)p Fn(,)i(and)g(app)q(ends)i(the)e(receiv)o(ed)74 1906
y(data)f(blo)q(c)o(k)h(to)f(its)g(curren)o(t)g(data.)19 b(In)c(general,)g(in)
g(step)g Fj(j)s Fn(,)e(for)h(0)e Fi(\024)h Fj(j)i Fi(\024)e
Fj(k)c Fi(\000)g Fn(2,)14 b(eac)o(h)g(pro)q(cess)h Fj(i)f Fn(sends)74
1963 y(all)j(its)f(curren)o(t)g(cum)o(ulated)h(2)606 1946 y
Fb(j)640 1963 y Fn(data)f(blo)q(c)o(ks)g(to)g(pro)q(cess)g(\()p
Fj(i)10 b Fi(\000)h Fn(2)1212 1946 y Fb(j)1230 1963 y Fn(\))i(mo)q(d)f
Fj(n)p Fn(,)k(receiv)o(es)h(2)1607 1946 y Fb(j)1641 1963 y
Fn(data)f(blo)q(c)o(ks)74 2019 y(from)f(pro)q(cess)i(\()p Fj(i)10
b Fn(+)h(2)455 2003 y Fb(j)473 2019 y Fn(\))h(mo)q(d)h Fj(n)p
Fn(,)j(and)g(app)q(ends)h(the)g(receiv)o(ed)g(data)e(to)h(its)g(cum)o(ulated)
h(data)e(blo)q(c)o(ks.)74 2076 y(In)h(the)f(last)g(step,)g(step)g
Fj(k)10 b Fi(\000)h Fn(1,)j(eac)o(h)h(pro)q(cess)g Fj(i)g Fn(sends)h(only)f
(the)g(last)g Fj(n)10 b Fi(\000)g Fn(2)1411 2059 y Fb(k)q Fq(\000)p
Ff(1)1493 2076 y Fn(blo)q(c)o(ks)15 b(of)g(data)f(that)74 2132
y(it)j(cum)o(ulated)g(to)e(pro)q(cess)h(\()p Fj(i)11 b Fi(\000)g
Fn(2)672 2116 y Fb(k)q Fq(\000)p Ff(1)738 2132 y Fn(\))h(mo)q(d)h
Fj(n)p Fn(,)j(and)h(it)f(receiv)o(es)h(the)f(same)g(n)o(um)o(b)q(er)h(of)e
(data)h(blo)q(c)o(ks)74 2189 y(from)f(pro)q(cess)g(\()p Fj(i)10
b Fn(+)g(2)452 2172 y Fb(k)q Fq(\000)p Ff(1)518 2189 y Fn(\))i(mo)q(d)h
Fj(n)p Fn(.)20 b(Figure)c(2)f(presen)o(ts)g(an)g(example)h(of)f(this)g
(algorithm.)74 2276 y(In)22 b(general,)i(all)e(the)g(homogeneous)g(op)q
(erations)f(\(op)q(erations)h(for)f(whic)o(h)i(there)e(is)h(no)g(notion)g(of)
74 2333 y(a)16 b(distinct)i(source)f(and/or)f(destination,)h([19)o(]\))f(in)h
(CCL,)f(can)h(b)q(e)g(implemen)o(ted)h(with)f(the)g(minimal)74
2389 y(n)o(um)o(b)q(er)11 b(of)f(start-ups)g(\()p Fi(d)p Fn(log)e
Fj(n)p Fi(e)j Fn(comm)o(unication)g(steps\))f(using)i(the)e(same)g(circulan)o
(t)i(graph)e(structure.)74 2446 y(Examples)19 b(of)e(other)h(suc)o(h)g(op)q
(erations)h(are)e Fl(combine)p Fn(,)h Fl(index)p Fn(,)f(and)i
Fl(sync)p Fn(.)28 b(An)18 b(algorithm)g(for)f(the)74 2502 y
Fl(combine)f Fn(op)q(eration)h(with)g Fj(T)22 b Fn(=)16 b Fi(d)p
Fn(log)8 b Fj(n)p Fi(e)g Fn(\()p Fj(t)843 2509 y Fb(s)873 2502
y Fn(+)k Fj(mt)976 2509 y Fb(c)993 2502 y Fn(\),)17 b(whic)o(h)h(is)f
(optimal)h(with)f(resp)q(ect)g(to)g Fj(C)1741 2509 y Ff(1)1778
2502 y Fn(\(and)74 2559 y(also)e(to)g Fj(C)253 2566 y Ff(2)288
2559 y Fn(when)h Fj(m)c Fn(=)h(1\),)i(app)q(ears)g(in)h([5)o(].)949
2727 y(16)p eop
%%Page: 17 17
bop 74 157 a Fk(4.4)56 b(Sp)r(ecialized)16 b(Algorithms)74
274 y Fn(F)l(or)g(certain)g(CCL)h(op)q(erations,)f(the)g(b)q(est-kno)o(wn)g
(algorithms)h(for)e(the)h(case)h(when)f Fj(n)h Fn(is)f(a)g(p)q(o)o(w)o(er)g
(of)74 331 y(2)f(ma)o(y)g(p)q(erform)f(b)q(etter)i(than)f(algorithms)g(for)f
(the)i(general)f(case.)20 b(Since,)d(in)f(man)o(y)e(situations,)i
Fj(n)f Fn(is)74 387 y(a)h(p)q(o)o(w)o(er)f(of)g(2,)h(it)g(is)g(w)o(orth)o
(while)g(to)f(implemen)o(t)j(this)e(case)g(separately)l(.)22
b(F)l(or)15 b(instance,)h(the)g Fl(concat)74 443 y Fn(algorithm)f(for)g
Fj(n)g Fn(that)f(is)i(a)f(p)q(o)o(w)o(er)f(of)h(t)o(w)o(o)f(can)h(use)g(a)g
(w)o(ell-kno)o(wn)h(h)o(yp)q(ercub)q(e)h(recursiv)o(e)e(exc)o(hange)74
500 y(algorithm)j(whic)o(h)h(eliminates)h(shifting)g(lo)q(cal)f(arra)o(ys)e
(at)g(the)i(end)f(of)g(the)h(op)q(eration.)29 b(As)18 b(another)74
556 y(example,)f(when)g Fj(n)g Fn(is)f(a)g(p)q(o)o(w)o(er)g(of)g(t)o(w)o(o,)f
(the)h Fl(bcast)g Fn(algorithm)g(describ)q(ed)j(in)e([25)o(])f(is)h(substan)o
(tially)74 613 y(simpler,)23 b(in)f(terms)e(of)g(lo)q(cal)i(data)e
(structures)g(and)h(con)o(trol,)g(than)g(the)f(algorithm)h(for)f(arbitrary)74
669 y(v)m(alues)d(of)d Fj(n)i Fn(describ)q(ed)h(in)f([4)o(].)74
844 y Fm(5)69 b(Conclusions)74 976 y Fn(W)l(e)16 b(ha)o(v)o(e)f(describ)q(ed)
i(the)e(main)h(issues)g(that)f(w)o(e)g(ha)o(v)o(e)g(encoun)o(tered)h(in)h
(designing)f(and)g(implemen)o(t-)74 1033 y(ing)i(a)e(Collectiv)o(e)j(Comm)o
(unication)e(Library)g(\(CCL\))g(for)f(the)h(recen)o(tly)h(announced)g(IBM)f
(Scalable)74 1089 y(PO)o(WERparalel)d(System)f(1,)g(\(SP1\).)18
b(W)l(e)13 b(ha)o(v)o(e)f(fo)q(cused)i(on)f(three)g(no)o(v)o(el)g(asp)q(ects)
g(in)h(the)e(design)i(and)74 1146 y(implemen)o(tation)21 b(of)d(CCL:)h(the)g
(in)o(tro)q(duction)i(of)d(pro)q(cess)i(groups,)f(de\014nition)i(of)e(seman)o
(tics)g(that)74 1202 y(ensures)f(correctness)f(and)h(the)f(design)i(of)e(no)o
(v)o(el)g(algorithms)h(based)g(on)f(a)g(realistic)i(p)q(oin)o(t-to-p)q(oin)o
(t)74 1259 y(comm)o(unication)c(mo)q(del.)21 b(Eac)o(h)14 b(of)g(these)h(no)o
(v)o(el)f(asp)q(ects)h(suggests)f(in)o(teresting)h(a)o(v)o(en)o(ues)f(for)g
(further)74 1315 y(learning)j(and)e(researc)o(h.)74 1468 y
Fk(Ac)n(kno)n(wledgemen)n(ts)74 1585 y Fn(W)l(e)d(thank)g(the)g(follo)o(wing)
h(p)q(eople:)19 b(Dan)12 b(F)l(ry)o(e)f(for)h(his)g(v)m(aluable)i(commen)o
(ts)d(and)h(help)i(in)e(revising)h(the)74 1641 y(CCL)j(seman)o(tics)f(as)h
(part)f(of)g(the)g(sp)q(ec)i(in)f([21)o(],)f(Magda)g(Konstan)o(tinidou)h(for)
f(her)h(con)o(tributions)g(to)74 1698 y(the)c(initial)h(stage)e(of)g(the)h
(CCL)f(design,)i(Eric)f(Leu)g(for)f(his)h(commen)o(ts)f(on)h(a)f(draft)g(of)g
(this)h(pap)q(er,)g(man)o(y)74 1754 y(in)o(ternal)17 b(and)f(external)h
(review)o(ers)f(of)f([21])g(for)h(their)g(v)m(aluable)i(commen)o(ts)d(to)h
(the)g(CCL)g(seman)o(tics,)74 1811 y(and)g(Dragutin)e(P)o(etk)o(o)o(vic)h
(for)g(his)h(constan)o(t)e(supp)q(ort)h(and)h(help.)949 2727
y(17)p eop
%%Page: 18 18
bop 74 157 a Fm(App)r(endix:)30 b(List)23 b(of)g(CCL)f(routines)74
290 y Fn(CCL)14 b(consists)f(of)g(t)o(w)o(o)f(parts,)h(the)h(collectiv)o(e)h
(comm)o(unication)f(routines)g(\()p Fl(CC)f Fn(part\))f(and)i(the)f(pro)q
(cess)74 346 y(group)k(routines)h(\()p Fl(PG)e Fn(part)g(whic)o(h)i(is)g
(called)h Fl(TG)e Fn(for)f(task)g(group)h(in)h(the)f(EUI)h(do)q(cumen)o(t.\))
25 b(The)18 b Fl(CC)74 403 y Fn(routines)d(pro)o(vide)g(users)g(with)f(the)h
(functionalit)o(y)g(of)f(op)q(erations)h(in)o(v)o(olving)h(collectiv)o(e)g
(comm)o(unica-)74 459 y(tion.)23 b(The)17 b Fl(PG)f Fn(routines)g(pro)o(vide)
h(users)f(with)h(the)f(functionalit)o(y)i(of)d(sp)q(ecifying)k(and)d
(manipulating)74 516 y(groups.)74 603 y(The)g(a)o(v)m(ailable)g
Fl(CC)f Fn(routines)h(are:)74 691 y Fl(bcast\(\))p Fn(:)23
b(Single)c(source)e(broadcast,)f(i.e.,)h(broadcast)g(a)f(message)h(from)f
(one)i(pro)q(cess)f(to)f(all)i(tasks)74 747 y(in)e(a)f(group.)74
835 y Fl(reduce\(\))p Fn(:)k(Apply)c(an)g(asso)q(ciativ)o(e)g(\(but)f(not)g
(necessarily)i(comm)o(utativ)o(e\))d(reduction)j(op)q(eration)f(on)74
891 y(all)h(the)g(pro)q(cesses)f(in)h(a)f(group,)g(and)g(place)h(the)f
(reduction)i(result)e(in)h(one)g(user-sp)q(eci\014ed)h(pro)q(cess.)74
979 y Fl(combine\(\))p Fn(:)25 b(Apply)20 b(an)e(asso)q(ciativ)o(e)h(\(but)f
(not)h(necessarily)g(comm)o(utativ)o(e\))f(reduction)h(op)q(eration)74
1035 y(on)e(all)h(the)f(pro)q(cesses)g(in)h(a)e(group,)h(and)g(place)h(the)f
(reduction)h(result)f(in)h(eac)o(h)f(of)f(the)h(pro)q(cesses)h(in)74
1092 y(the)d(group.)74 1179 y Fl(scatter\(\))p Fn(:)k(Distribute)d(distinct)g
(messages)f(from)f(a)h(single)i(source)e(to)f(eac)o(h)i(pro)q(cess)f(in)h(a)f
(group.)74 1267 y Fl(gather\(\))p Fn(:)23 b(Gather)17 b(distinct)i(messages)e
(from)f(eac)o(h)i(pro)q(cess)f(in)i(a)e(group)g(to)g(a)g(single)i
(destination)74 1323 y(pro)q(cess.)74 1411 y Fl(concat\(\))p
Fn(:)25 b(Concatenate)18 b(to)f(all)i(pro)q(cesses)g(in)g(a)f(group.)29
b(Eac)o(h)18 b(pro)q(cess)g(in)h(a)f(group)g(p)q(erforms)g(a)74
1467 y Fl(bcast)d Fn(within)h(the)f(group.)74 1555 y Fl(index\(\))p
Fn(:)k(Eac)o(h)c(task)g(in)h(a)e(group)h(p)q(erforms)g(a)g
Fl(scatter)f Fn(op)q(eration.)74 1643 y Fl(prefix\(\))p Fn(:)19
b(P)o(arallel)d(pre\014x)g(op)q(eration.)k(It)15 b(is)h(sometimes)f(called)i
Fl(scan)p Fn(.)74 1730 y Fl(shift\(\))p Fn(:)i(Shift)d(data)e(up)i(or)f(do)o
(wn)g(some)g(n)o(um)o(b)q(er)g(of)g(steps)g(in)h(a)f(group.)74
1818 y Fl(sync\(\))p Fn(:)k(Barrier)c(sync)o(hronization)i(in)f(a)f(group.)74
1905 y(The)h Fl(PG)e Fn(routines)i(are)f(summarized)h(b)q(elo)o(w.)74
1993 y Fl(group\(\))p Fn(:)h(Create)11 b(a)g(\(static\))g(pro)q(cess)h(group)
f(b)o(y)h(explicitly)i(sp)q(ecifying)g(the)d(pro)q(cesses)h(participating)74
2049 y(in)k(the)f(group.)74 2137 y Fl(partition\(\))p Fn(:)23
b(De\014ne)c(a)e(\(dynamic\))h(pro)q(cess)g(group)f(b)o(y)h(partitioning)h
(an)e(existing)i(group)e(based)74 2193 y(on)e(a)g(lo)q(cally)i(supplied)h(in)
o(teger)d(lab)q(el.)74 2281 y Fl(getsize\(\))p Fn(:)k(Get)14
b(the)i(size)g(\(the)f(n)o(um)o(b)q(er)g(of)g(pro)q(cesses\))g(of)g(an)g
(existing)h(pro)q(cess)g(group.)74 2369 y Fl(getmembers\(\))p
Fn(:)i(Get)d(the)g(ordered)h(arra)o(y)e(of)g(pro)q(cess)i(ids)g(of)f(an)g
(existing)h(pro)q(cess)f(group.)74 2456 y Fl(getrank\(\))p
Fn(:)k(Get)14 b(the)i(rank)f(of)f(a)h(pro)q(cess)h(in)g(a)f(pro)q(cess)g
(group.)74 2544 y Fl(getpid\(\))p Fn(:)k(Get)c(the)g(pro)q(cess)g(id)h(of)f
(the)g(pro)q(cess)h(with)f(a)g(certain)h(rank)f(in)h(a)f(pro)q(cess)g(group.)
949 2727 y(18)p eop
%%Page: 19 19
bop 74 157 a Fl(getlabel\(\))p Fn(:)20 b(Get)c(the)g(lab)q(el)i(\(whic)o(h)e
(w)o(as)g(supplied)i(b)o(y)e(a)g(user)g(when)g(the)h(group)e(w)o(as)h
(formed\))f(of)74 214 y(an)g(existing)h(pro)q(cess)g(group.)949
2727 y(19)p eop
%%Page: 20 20
bop 74 157 a Fm(References)97 277 y Fn([1])22 b(A.)14 b(Aggarw)o(al)g(and)g
(S.)h(Kipnis,)h(\\Message-Time)f(T)l(radeo\013)f(for)g(Com)o(bining)h(Data)f
(in)h(Message-)168 334 y(P)o(assing)g(Systems",)f Fh(IBM)i(R)n(ese)n(ar)n(ch)
f(R)n(ep)n(ort)p Fn(,)g(R)o(C-18349,)e(Septem)o(b)q(er)j(1992.)97
428 y([2])22 b(V.)d(Bala)h(and)f(S.)h(Kipnis,)i(\\Pro)q(cess)d(Groups:)29
b(a)19 b(mec)o(hanism)h(for)f(the)h(co)q(ordination)g(of)f(and)168
484 y(comm)o(unication)c(among)e(pro)q(cesses)i(in)g(the)g(V)l(en)o(us)g
(collectiv)o(e)h(comm)o(unication)f(library",)f Fh(Pr)n(o-)168
541 y(c)n(e)n(e)n(dings)g(of)i(the)h(7th)g(International)e(Par)n(al)r(lel)g
(Pr)n(o)n(c)n(essing)f(Symp)n(osium)p Fn(,)h(IEEE,)g(April)h(1993.)97
634 y([3])22 b(A.)d(Bar-No)o(y)f(and)i(S.)f(Kipnis,)j(\\Designing)e
(broadcasting)f(algorithms)h(in)g(the)f(p)q(ostal)h(mo)q(del)168
691 y(for)f(message-passing)g(systems",)h(to)f(app)q(ear)h(in)h
Fh(Mathematic)n(al)f(Systems)f(The)n(ory)p Fn(.)g(Also)h(ap-)168
747 y(p)q(eared)15 b(in)g Fh(Pr)n(o)n(c)n(e)n(e)n(dings)e(of)j(the)g(4th)g(A)
o(nnual)f(A)o(CM)f(Symp)n(osium)i(on)f(Par)n(al)r(lel)g(A)o(lgorithms)h(and)
168 804 y(A)o(r)n(chite)n(ctur)n(es)p Fn(,)d(June)k(1992,)c(pp.)j(11{22.)97
898 y([4])22 b(A.)34 b(Bar-No)o(y)g(and)h(S.)f(Kipnis,)41 b(\\Broadcasting)35
b(m)o(ultiple)h(messages)e(in)i(sim)o(ultaneous)168 954 y(send/receiv)o(e)18
b(systems",)e(to)g(app)q(ear)h(in)h Fh(Discr)n(ete)f(Applie)n(d)h
(Mathematics)p Fn(.)e(Also)h(app)q(eared)h(as)168 1010 y Fh(IBM)d(R)n(ese)n
(ar)n(ch)h(R)n(ep)n(ort)p Fn(,)e(R)o(C-18352,)g(Septem)o(b)q(er)i(1992.)97
1104 y([5])22 b(A.)15 b(Bar-No)o(y)l(,)f(S.)i(Kipnis,)h(and)e(B.)g(Sc)o(hieb)
q(er,)i(\\An)f(optimal)g(algorithm)f(for)g(computing)h(census)168
1161 y(functions)h(in)g(message-passing)g(systems",)e(to)h(app)q(ear)h(in)g
Fh(Par)n(al)r(lel)g(Pr)n(o)n(c)n(essing)e(L)n(etters)p Fn(.)g(Also)168
1217 y(app)q(eared)g(as)g Fh(IBM)h(R)n(ese)n(ar)n(ch)f(R)n(ep)n(ort)p
Fn(,)g(R)o(C-18527,)f(No)o(v)o(em)o(b)q(er)g(1992.)97 1311
y([6])22 b(A.)17 b(Beguelin,)i(J.)f(Dongarra,)e(A.)h(Geist,)g(R.)h(Manc)o
(hek,)f(and)h(V.)f(Sunderam,)h(\\A)f(user's)g(guide)168 1367
y(to)e(PVM)g(P)o(arallel)i(Virtual)f(Mac)o(hine",)g Fh(ORNL)g(T)m(e)n(chnic)n
(al)e(R)n(ep)n(ort)p Fn(,)i(ORNL/TM-11826,)e(Ma)o(y)168 1424
y(1992.)97 1518 y([7])22 b(J.)16 b(Bruc)o(k,)g(R.)g(Cypher,)g(L.)g(Gra)o(v)m
(ano,)f(A.)h(Ho,)f(C.)h(T.)f(Ho,)h(S.)g(Kipnis,)h(S.)f(Konstan)o(tinidou,)h
(M.)168 1574 y(Snir)g(and)g(E.)g(Upfal,)g(\\Surv)o(ey)g(of)f(routing)h
(issues)g(for)f(the)h(V)l(ulcan)h(parallel)h(computer",)d Fh(IBM)168
1631 y(R)n(ese)n(ar)n(ch)f(R)n(ep)n(ort)p Fn(,)g(RJ-8839,)g(June)h(1992.)97
1724 y([8])22 b(J.)c(Bruc)o(k,)h(R.)g(Cypher,)g(P)l(.)f(Elustondo,)i(A.)e
(Ho,)h(and)f(C.T.)g(Ho,)h(\\A)f(Prop)q(osal)g(for)g(Common)168
1781 y(Group)13 b(Structures)g(in)i(a)e(Collectiv)o(e)i(Comm)o(unication)e
(Library",)h Fh(IBM)g(R)n(ese)n(ar)n(ch)g(R)n(ep)n(ort)p Fn(,)g(RJ-)168
1837 y(9421,)f(Marc)o(h)i(1993.)97 1931 y([9])22 b(J.)g(Bruc)o(k,)i(R.)e
(Cypher,)i(and)f(C.T.)e(Ho,)i(\\E\016cien)o(t)g(fault-toleran)o(t)f(mesh)g
(and)h(h)o(yp)q(ercub)q(es)168 1988 y(arc)o(hitectures",)g
Fh(Pr)n(o)n(c)n(e)n(e)n(dings)d(of)j(the)g(1992)g(International)e(Symp)n
(osium)i(on)f(F)m(ault-T)m(oler)n(ant)168 2044 y(Computing)p
Fn(,)14 b(pp.)i(162{169.)74 2138 y([10])22 b(J.)16 b(Bruc)o(k,)h(R.)g
(Cypher,)g(and)g(C.T.)f(Ho,)g(\\Multiple)j(message)d(broadcasting)h(with)g
(generalized)168 2194 y(Fib)q(onacci)f(trees",)e Fh(Pr)n(o)n(c)n(e)n(e)n
(dings)f(of)j(the)g(4th)g(IEEE)f(Symp)n(osium)h(on)f(Par)n(al)r(lel)g(and)h
(Distribute)n(d)168 2251 y(Pr)n(o)n(c)n(essing)p Fn(,)c(Decem)o(b)q(er)k
(1992,)d(pp.)j(424{431.)74 2345 y([11])22 b(J.)16 b(Bruc)o(k,)g(C.T.)f(Ho,)g
(and)h(S.)g(Kipnis,)i(\\Concatenating)e(data)f(optimally)i(in)g
(message-passing)168 2401 y(systems",)d Fh(IBM)h(R)n(ese)n(ar)n(ch)h(R)n(ep)n
(ort)p Fn(,)e(RJ-9191,)h(Jan)o(uary)g(1993.)74 2495 y([12])22
b(J.)g(Bruc)o(k,)i(R.)e(Cypher,)i(C.T.)d(Ho,)i(and)g(S.)f(Kipnis,)k
(\\E\016cien)o(t)c(algorithms)g(for)g(the)g(index)168 2551
y(op)q(eration)15 b(in)h(message-passing)f(systems",)f Fh(IBM)i(R)n(ese)n(ar)
n(ch)f(R)n(ep)n(ort)p Fn(,)g(in)h(preparation.)949 2727 y(20)p
eop
%%Page: 21 21
bop 74 157 a Fn([13])22 b(D.)16 b(Culler,)k(R.)d(Karp,)h(D.)f(P)o(atterson,)g
(A.)g(Saha)o(y)l(,)g(K.E.)h(Sc)o(hauser,)g(E.)f(San)o(tos,)g(R.)h(Subramo-)
168 214 y(nian,)g(and)g(T.)e(v)o(on)i(Eic)o(k)o(en,)g(\\LogP:)e(to)o(w)o
(ards)g(a)h(realistic)i(mo)q(del)f(of)f(parallel)i(computation",)168
270 y Fh(Pr)n(o)n(c)n(e)n(e)n(dings)c(of)k(the)f(4th)h(SIGPLAN)d(Symp)n
(osium)j(on)f(Principles)f(and)h(Pr)n(actic)n(es)f(of)h(Par)n(al)r(lel)168
327 y(Pr)n(o)n(gr)n(amming)p Fn(,)c(A)o(CM,)g(Ma)o(y)g(1993.)74
420 y([14])22 b(W.)14 b(J.)h(Dally)l(,)g(A.)g(Chien,)g(S.)g(Fisk)o(e,)g(W.)f
(Horw)o(at,)f(J.)i(Keen,)h(M.)e(Lariv)o(ee,)h(R.)g(Lethin,)h(P)l(.)f(Nuth,)
168 477 y(S.)d(Wills,)j(P)l(.)d(Carric)o(k,)h(and)g(G.)f(Fyler)h(\\The)g
(J-Mac)o(hine:)20 b(a)12 b(\014ne-grain)i(concurren)o(t)f(computer",)168
533 y Fh(Information)j(Pr)n(o)n(c)n(essing)d(89)p Fn(,)j(Elsevier)g(Science)h
(Publishers,)g(IFIP)l(,)e(1989,)f(pp.)h(1147{1153.)74 627 y([15])22
b(J.)11 b(Dongarra,)g(R.)h(Hemp)q(el,)i(A.)d(Hey)l(,)i(and)f(D.)f(W)l(alk)o
(er,)h(\\A)g(Prop)q(osal)g(for)f(a)h(user-lev)o(el,)i(message-)168
684 y(passing)23 b(in)o(terface)g(in)h(a)f(distributed)h(memory)e(en)o
(vironmen)o(t",)j Fh(ORNL)e(T)m(e)n(chnic)n(al)e(R)n(ep)n(ort)p
Fn(,)168 740 y(ORNL/TM-12231,)14 b(Octob)q(er)h(1992.)74 834
y([16])22 b(S.)f(Dutt)f(and)i(J.)f(P)l(.)g(Ha)o(y)o(es,)h(\\Designing)g
(fault-toleran)o(t)f(systems)g(using)h(automorphisms",)168
890 y Fh(Journal)16 b(of)g(Par)n(al)r(lel)g(and)g(Distribute)n(d)h(Computing)
p Fn(,)d(V)l(ol.)i(12,)e(1991,)g(pp.)h(249{268.)74 984 y([17])22
b(B.)11 b(Elspas)i(and)f(J.)g(T)l(urner,)h(\\Graphs)e(with)i(circulan)o(t)g
(adjacency)f(matrices",)g Fh(Journal)i(of)f(Com-)168 1041 y(binatorial)j(The)
n(ory)p Fn(,)e(No.)h(9,)f(1970,)g(pp.)h(297{307.)74 1134 y([18])22
b(B.)h(G.)f(Fitc)o(h)i(and)f(M.)g(E.)g(Giampapa,)h(\\The)g(V)l(ulcan)g(Op)q
(eration)h(En)o(vironmen)o(t:)36 b(a)23 b(brief)168 1191 y(o)o(v)o(erview)14
b(and)h(status)e(rep)q(ort",)h Fh(Pr)n(o)n(c)n(e)n(e)n(dings)f(of)j(the)g
(5th)g(Workshop)g(on)g(Use)f(of)h(Par)n(al)r(lel)e(Pr)n(o-)168
1247 y(c)n(essors)h(in)g(Mete)n(or)n(olo)n(gy)p Fn(,)f(ECMWF,)g(No)o(v)o(em)o
(b)q(er)h(1992.)74 1341 y([19])22 b(G.)13 b(F)l(o)o(x)h(and)h(W.)e(F)l
(urmanski,)i(\\Optimal)g(comm)o(unication)g(algorithms)g(for)e(regular)i
(decomp)q(o-)168 1398 y(sitions)e(on)f(the)g(h)o(yp)q(ercub)q(e",)i
Fh(Pr)n(o)n(c)n(e)n(e)n(dings)e(of)h(the)h(3r)n(d)g(Confer)n(enc)n(e)e(on)h
(Hyp)n(er)n(cub)n(e)g(Concurr)n(ent)168 1454 y(Computers)j(and)g(Applic)n
(ations)p Fn(,)e(A)o(CM,)g(1988,)g(pp.)h(648{713.)74 1548 y([20])22
b(G.)17 b(F)l(o)o(x,)g(M.)g(Johnson,)i(G.)e(Lyzenga,)h(S.)g(Otto,)g(J.)f
(Salmon,)i(and)f(D.)f(W)l(alk)o(er,)h Fh(Solving)f(Pr)n(ob-)168
1604 y(lems)e(on)g(Concurr)n(ent)g(Pr)n(o)n(c)n(essors,)f(V)m(olume)h(I:)g
(Gener)n(al)g(T)m(e)n(chniques)f(and)h(R)n(e)n(gular)h(Pr)n(oblems)p
Fn(,)168 1661 y(Pren)o(tice-Hall,)g(Englew)o(o)q(o)q(d)g(Cli\013s,)f(New)g
(Jersey)l(,)h(1988.)74 1755 y([21])22 b(D.)c(F)l(ry)o(e,)h(R.)f(Bry)o(an)o
(t,)h(C.T.)f(Ho,)h(P)l(.)f(de)h(Jong,)h(R.)f(La)o(wrence,)g(and)g(M.)f(Snir,)
j(\\An)d(External)168 1811 y(User)c(In)o(terface)g(for)f(Scalable)j(P)o
(arallel)f(Systems:)k(F)o(OR)l(TRAN)c(In)o(terface",)f Fh(T)m(e)n(chnic)n(al)
f(R)n(ep)n(ort)p Fn(,)168 1867 y(IBM)i(Highly)h(P)o(arallel)h(Sup)q
(ercomputing)f(Systems)f(Lab)q(oratory)l(,)g(No)o(v)o(em)o(b)q(er)f(1992.)74
1961 y([22])22 b(G.)g(A.)h(Geist,)h(M.)f(T.)f(Heath,)j(B.)e(W.)f(P)o(eyton,)i
(and)g(P)l(.)e(H.)h(W)l(orley)l(,)i(\\A)e(user's)g(guide)h(to)168
2018 y(PICL:)c(a)h(P)o(ortable)f(Instrumen)o(ted)h(Comm)o(unication)g
(Library",)g Fh(ORNL)g(T)m(e)n(chnic)n(al)e(R)n(ep)n(ort)p
Fn(,)168 2074 y(ORNL/TM-11616,)14 b(Octob)q(er)h(1990.)74 2168
y([23])22 b(M.)11 b(E.)g(Giampapa,)h(B.)g(G.)f(Fitc)o(h,)h(G.)f(R.)h(Irwin,)h
(and)f(D.)f(G.)g(Shea,)i(\\V)l(ulcan)g(op)q(erating)f(en)o(viron-)168
2224 y(men)o(t:)27 b(programmer's)17 b(reference",)j Fh(Internal)e(Memor)n
(andum)p Fn(,)i(IBM)g(T.J.)e(W)l(atson)g(Researc)o(h)168 2281
y(Cen)o(ter,)c(Marc)o(h)h(1991.)74 2375 y([24])22 b(R.)d(Hemp)q(el,)i(\\The)d
(ANL/GMD)h(macros)f(\(P)l(ARMA)o(CS\))g(in)i(F)o(OR)l(TRAN)g(for)e(p)q
(ortable)i(par-)168 2431 y(allel)h(programming)e(using)h(the)f(message)g
(passing)h(programming)f(mo)q(del,)i(user's)e(guide)h(and)168
2488 y(reference)c(man)o(ual",)g Fh(T)m(e)n(chnic)n(al)e(Memor)n(andum)p
Fn(,)j(Gesellsc)o(haft)f(f)q(\177)-24 b(ur)16 b(Mathematik)f(und)i(Daten-)168
2544 y(v)o(erab)q(eitung)e(m)o(bH,)g(W)l(est)g(German)o(y)l(.)949
2727 y(21)p eop
%%Page: 22 22
bop 74 157 a Fn([25])22 b(C.T.)e(Ho,)j(\\Optimal)g(broadcasting)f(on)g(SIMD)g
(h)o(yp)q(ercub)q(es)h(without)f(indirect)i(addressing)168
214 y(capabilit)o(y",)c Fh(Journal)f(of)h(Par)n(al)r(lel)e(and)i(Distribute)n
(d)f(Computing)p Fn(,)g(V)l(ol.)g(13,)f(No.)g(2,)h(Octob)q(er)168
270 y(1991,)13 b(pp.)j(246{255.)74 364 y([26])22 b(S.)13 b(L.)h(Johnsson)g
(and)g(C.T.)f(Ho,)g(\\Spanning)i(graphs)e(for)h(optim)o(um)f(broadcasting)h
(and)g(p)q(erson-)168 420 y(alized)19 b(comm)o(unication)g(in)g(h)o(yp)q
(ercub)q(es",)g Fh(IEEE)f(T)m(r)n(ansactions)f(on)i(Computers)p
Fn(,)f(V)l(ol.)g(C-38,)168 477 y(No.)c(9,)h(Septem)o(b)q(er)h(1989,)d(pp)j
(1249{1268.)74 571 y([27])22 b(J.)f(F.)g(P)o(almer)g(\\The)h(NCUBE)f(family)h
(of)f(parallel)i(sup)q(ercomputers",)g Fh(Pr)n(o)n(c)n(e)n(e)n(dings)d(of)i
(the)168 627 y(International)15 b(Confer)n(enc)n(e)f(on)i(Computer)h(Design)p
Fn(,)d(IEEE,)h(1986.)74 721 y([28])22 b(A.)e(Skjellum)i(and)e(A.)g(P)l(.)g
(Leung,)i(\\Zip)q(co)q(de:)32 b(a)20 b(p)q(ortable)h(m)o(ulticomputer)g(comm)
o(unication)168 777 y(library)e(atop)e(the)h(Reactiv)o(e)h(Kernel",)h
Fh(Pr)n(o)n(c)n(e)n(e)n(dings)d(of)i(the)g(5th)h(Distribute)n(d)f(Memory)g
(Com-)168 834 y(puting)d(Confer)n(enc)n(e)p Fn(,)d(IEEE,)i(April)h(1990,)e
(pp.)h(328{337.)74 928 y([29])22 b Fh(Conne)n(ction)j(Machine)h(CM-5)h(T)m(e)
n(chnic)n(al)d(Summary)p Fn(,)30 b(Thinking)e(Mac)o(hines)g(Corp)q(oration,)
168 984 y(1991.)74 1078 y([30])22 b Fh(Expr)n(ess)15 b(3.0)i(Intr)n(o)n
(ductory)f(Guide)p Fn(,)f(P)o(arasoft)f(Corp)q(oration,)g(1990.)74
1172 y([31])22 b Fh(Par)n(agon)16 b(XP/S)f(Overview)p Fn(,)g(In)o(tel)h(Corp)
q(oration,)e(1991.)74 1266 y([32])22 b(\\V)l(ulcan)12 b(system)e(summary",)h
Fh(Internal)f(Memor)n(andum)p Fn(,)i(IBM)f(T.J.)g(W)l(atson)f(Researc)o(h)h
(Cen)o(ter.)949 2727 y(22)p eop
%%Page: 23 23
bop 353 679 a
 19537183 19800310 7762247 25786449 27299430 45586759 startTexFig
353 679 a
%%BeginDocument: Figs/circ16.ps

50 dict begin

/arrowHeight 8 def
/arrowWidth 4 def
/none null def
/numGraphicParameters 17 def
/stringLimit 65535 def

/Begin {
save
numGraphicParameters dict begin
} def

/End {
end
restore
} def

/SetB {
dup type /nulltype eq {
pop
false /brushRightArrow idef
false /brushLeftArrow idef
true /brushNone idef
} {
/brushDashOffset idef
/brushDashArray idef
0 ne /brushRightArrow idef
0 ne /brushLeftArrow idef
/brushWidth idef
false /brushNone idef
} ifelse
} def

/SetCFg {
/fgblue idef
/fggreen idef
/fgred idef
} def

/SetCBg {
/bgblue idef
/bggreen idef
/bgred idef
} def

/SetF {
/printSize idef
/printFont idef
} def

/SetP {
dup type /nulltype eq {
pop true /patternNone idef
} {
/patternGrayLevel idef
patternGrayLevel -1 eq {
/patternString idef
} if
false /patternNone idef
} ifelse
} def

/BSpl {
0 begin
storexyn
newpath
n 1 gt {
0 0 0 0 0 0 1 1 true subspline
n 2 gt {
0 0 0 0 1 1 2 2 false subspline
1 1 n 3 sub {
/i exch def
i 1 sub dup i dup i 1 add dup i 2 add dup false subspline
} for
n 3 sub dup n 2 sub dup n 1 sub dup 2 copy false subspline
} if
n 2 sub dup n 1 sub dup 2 copy 2 copy false subspline
patternNone not brushLeftArrow not brushRightArrow not and and { ifill } if
brushNone not { istroke } if
0 0 1 1 leftarrow
n 2 sub dup n 1 sub dup rightarrow
} if
end
} dup 0 4 dict put def

/Circ {
newpath
0 360 arc
patternNone not { ifill } if
brushNone not { istroke } if
} def

/CBSpl {
0 begin
dup 2 gt {
storexyn
newpath
n 1 sub dup 0 0 1 1 2 2 true subspline
1 1 n 3 sub {
/i exch def
i 1 sub dup i dup i 1 add dup i 2 add dup false subspline
} for
n 3 sub dup n 2 sub dup n 1 sub dup 0 0 false subspline
n 2 sub dup n 1 sub dup 0 0 1 1 false subspline
patternNone not { ifill } if
brushNone not { istroke } if
} {
Poly
} ifelse
end
} dup 0 4 dict put def

/Elli {
0 begin
newpath
4 2 roll
translate
scale
0 0 1 0 360 arc
patternNone not { ifill } if
brushNone not { istroke } if
end
} dup 0 1 dict put def

/Line {
0 begin
2 storexyn
newpath
x 0 get y 0 get moveto
x 1 get y 1 get lineto
brushNone not { istroke } if
0 0 1 1 leftarrow
0 0 1 1 rightarrow
end
} dup 0 4 dict put def

/MLine {
0 begin
storexyn
newpath
n 1 gt {
x 0 get y 0 get moveto
1 1 n 1 sub {
/i exch def
x i get y i get lineto
} for
patternNone not brushLeftArrow not brushRightArrow not and and { ifill } if
brushNone not { istroke } if
0 0 1 1 leftarrow
n 2 sub dup n 1 sub dup rightarrow
} if
end
} dup 0 4 dict put def

/Poly {
3 1 roll
newpath
moveto
-1 add
{ lineto } repeat
closepath
patternNone not { ifill } if
brushNone not { istroke } if
} def

/Rect {
0 begin
/t exch def
/r exch def
/b exch def
/l exch def
newpath
l b moveto
l t lineto
r t lineto
r b lineto
closepath
patternNone not { ifill } if
brushNone not { istroke } if
end
} dup 0 4 dict put def

/Text {
ishow
} def

/idef {
dup where { pop pop pop } { exch def } ifelse
} def

/ifill {
0 begin
gsave
patternGrayLevel -1 ne {
fgred bgred fgred sub patternGrayLevel mul add
fggreen bggreen fggreen sub patternGrayLevel mul add
fgblue bgblue fgblue sub patternGrayLevel mul add setrgbcolor
eofill
} {
eoclip
originalCTM setmatrix
pathbbox /t exch def /r exch def /b exch def /l exch def
/w r l sub ceiling cvi def
/h t b sub ceiling cvi def
/imageByteWidth w 8 div ceiling cvi def
/imageHeight h def
bgred bggreen bgblue setrgbcolor
eofill
fgred fggreen fgblue setrgbcolor
w 0 gt h 0 gt and {
l b translate w h scale
w h true [w 0 0 h neg 0 h] { patternproc } imagemask
} if
} ifelse
grestore
end
} dup 0 8 dict put def

/istroke {
gsave
brushDashOffset -1 eq {
[] 0 setdash
1 setgray
} {
brushDashArray brushDashOffset setdash
fgred fggreen fgblue setrgbcolor
} ifelse
brushWidth setlinewidth
originalCTM setmatrix
stroke
grestore
} def

/ishow {
0 begin
gsave
fgred fggreen fgblue setrgbcolor
/fontDict printFont findfont printSize scalefont dup setfont def
/descender fontDict begin 0 [FontBBox] 1 get FontMatrix end
transform exch pop def
/vertoffset 0 descender sub printSize sub printFont /Courier ne
printFont /Courier-Bold ne and { 1 add } if def {
0 vertoffset moveto show
/vertoffset vertoffset printSize sub def
} forall
grestore
end
} dup 0 3 dict put def

/patternproc {
0 begin
/patternByteLength patternString length def
/patternHeight patternByteLength 8 mul sqrt cvi def
/patternWidth patternHeight def
/patternByteWidth patternWidth 8 idiv def
/imageByteMaxLength imageByteWidth imageHeight mul
stringLimit patternByteWidth sub min def
/imageMaxHeight imageByteMaxLength imageByteWidth idiv patternHeight idiv
patternHeight mul patternHeight max def
/imageHeight imageHeight imageMaxHeight sub store
/imageString imageByteWidth imageMaxHeight mul patternByteWidth add string def
0 1 imageMaxHeight 1 sub {
/y exch def
/patternRow y patternByteWidth mul patternByteLength mod def
/patternRowString patternString patternRow patternByteWidth getinterval def
/imageRow y imageByteWidth mul def
0 patternByteWidth imageByteWidth 1 sub {
/x exch def
imageString imageRow x add patternRowString putinterval
} for
} for
imageString
end
} dup 0 12 dict put def

/min {
dup 3 2 roll dup 4 3 roll lt { exch } if pop
} def

/max {
dup 3 2 roll dup 4 3 roll gt { exch } if pop
} def

/arrowhead {
0 begin
transform originalCTM itransform
/taily exch def
/tailx exch def
transform originalCTM itransform
/tipy exch def
/tipx exch def
/dy tipy taily sub def
/dx tipx tailx sub def
/angle dx 0 ne dy 0 ne or { dy dx atan } { 90 } ifelse def
gsave
originalCTM setmatrix
tipx tipy translate
angle rotate
newpath
0 0 moveto
arrowHeight neg arrowWidth 2 div lineto
arrowHeight neg arrowWidth 2 div neg lineto
closepath
patternNone not {
originalCTM setmatrix
/padtip arrowHeight 2 exp 0.25 arrowWidth 2 exp mul add sqrt brushWidth mul
arrowWidth div def
/padtail brushWidth 2 div def
tipx tipy translate
angle rotate
padtip 0 translate
arrowHeight padtip add padtail add arrowHeight div dup scale
arrowheadpath
ifill
} if
brushNone not {
originalCTM setmatrix
tipx tipy translate
angle rotate
arrowheadpath
istroke
} if
grestore
end
} dup 0 9 dict put def

/arrowheadpath {
newpath
0 0 moveto
arrowHeight neg arrowWidth 2 div lineto
arrowHeight neg arrowWidth 2 div neg lineto
closepath
} def

/leftarrow {
0 begin
y exch get /taily exch def
x exch get /tailx exch def
y exch get /tipy exch def
x exch get /tipx exch def
brushLeftArrow { tipx tipy tailx taily arrowhead } if
end
} dup 0 4 dict put def

/rightarrow {
0 begin
y exch get /tipy exch def
x exch get /tipx exch def
y exch get /taily exch def
x exch get /tailx exch def
brushRightArrow { tipx tipy tailx taily arrowhead } if
end
} dup 0 4 dict put def

/midpoint {
0 begin
/y1 exch def
/x1 exch def
/y0 exch def
/x0 exch def
x0 x1 add 2 div
y0 y1 add 2 div
end
} dup 0 4 dict put def

/thirdpoint {
0 begin
/y1 exch def
/x1 exch def
/y0 exch def
/x0 exch def
x0 2 mul x1 add 3 div
y0 2 mul y1 add 3 div
end
} dup 0 4 dict put def

/subspline {
0 begin
/movetoNeeded exch def
y exch get /y3 exch def
x exch get /x3 exch def
y exch get /y2 exch def
x exch get /x2 exch def
y exch get /y1 exch def
x exch get /x1 exch def
y exch get /y0 exch def
x exch get /x0 exch def
x1 y1 x2 y2 thirdpoint
/p1y exch def
/p1x exch def
x2 y2 x1 y1 thirdpoint
/p2y exch def
/p2x exch def
x1 y1 x0 y0 thirdpoint
p1x p1y midpoint
/p0y exch def
/p0x exch def
x2 y2 x3 y3 thirdpoint
p2x p2y midpoint
/p3y exch def
/p3x exch def
movetoNeeded { p0x p0y moveto } if
p1x p1y p2x p2y p3x p3y curveto
end
} dup 0 17 dict put def

/storexyn {
/n exch def
/y n array def
/x n array def
n 1 sub -1 0 {
/i exch def
y i 3 2 roll put
x i 3 2 roll put
} for
} def




Begin
[ 0.9 0 0 0.9 0 0 ] concat
/originalCTM matrix currentmatrix def

Begin %I Elli
1 0 0 [] 0 SetB
0 0 0 SetCFg
1 1 1 SetCBg
0 SetP
[ 1 0 0 1 -31.2139 101.893 ] concat
332 642 4 4 Elli
End

Begin %I Elli
1 0 0 [] 0 SetB
0 0 0 SetCFg
1 1 1 SetCBg
0 SetP
[ 1 0 0 1 110.786 -40.107 ] concat
332 642 4 4 Elli
End

Begin %I Elli
1 0 0 [] 0 SetB
0 0 0 SetCFg
1 1 1 SetCBg
0 SetP
[ 1 0 0 1 70.107 61.2139 ] concat
332 642 4 4 Elli
End

Begin %I Elli
1 0 0 [] 0 SetB
0 0 0 SetCFg
1 1 1 SetCBg
0 SetP
[ 1 0 0 1 26.107 89.3209 ] concat
332 642 4 4 Elli
End

Begin %I Elli
1 0 0 [] 0 SetB
0 0 0 SetCFg
1 1 1 SetCBg
0 SetP
[ 1 0 0 1 99.3209 15 ] concat
332 642 4 4 Elli
End

Begin %I Elli
1 0 0 [] 0 SetB
0 0 0 SetCFg
1 1 1 SetCBg
0 SetP
[ 1 0 0 -1 -31.2139 1101.89 ] concat
332 642 4 4 Elli
End

Begin %I Elli
1 0 0 [] 0 SetB
0 0 0 SetCFg
1 1 1 SetCBg
0 SetP
[ 1 0 0 -1 70.107 1142.57 ] concat
332 642 4 4 Elli
End

Begin %I Elli
1 0 0 [] 0 SetB
0 0 0 SetCFg
1 1 1 SetCBg
0 SetP
[ 1 0 0 -1 26.107 1114.47 ] concat
332 642 4 4 Elli
End

Begin %I Elli
1 0 0 [] 0 SetB
0 0 0 SetCFg
1 1 1 SetCBg
0 SetP
[ 1 0 0 -1 99.3209 1188.79 ] concat
332 642 4 4 Elli
End

Begin %I Elli
1 0 0 [] 0 SetB
0 0 0 SetCFg
1 1 1 SetCBg
0 SetP
[ -1 0 0 1 490.786 -40.107 ] concat
332 642 4 4 Elli
End

Begin %I Elli
1 0 0 [] 0 SetB
0 0 0 SetCFg
1 1 1 SetCBg
0 SetP
[ -1 0 0 1 531.465 61.2139 ] concat
332 642 4 4 Elli
End

Begin %I Elli
1 0 0 [] 0 SetB
0 0 0 SetCFg
1 1 1 SetCBg
0 SetP
[ -1 0 0 1 575.465 89.3209 ] concat
332 642 4 4 Elli
End

Begin %I Elli
1 0 0 [] 0 SetB
0 0 0 SetCFg
1 1 1 SetCBg
0 SetP
[ -1 0 0 1 502.251 15 ] concat
332 642 4 4 Elli
End

Begin %I Elli
1 0 0 [] 0 SetB
0 0 0 SetCFg
1 1 1 SetCBg
0 SetP
[ -1 0 0 -1 531.465 1142.57 ] concat
332 642 4 4 Elli
End

Begin %I Elli
1 0 0 [] 0 SetB
0 0 0 SetCFg
1 1 1 SetCBg
0 SetP
[ -1 0 0 -1 575.465 1114.47 ] concat
332 642 4 4 Elli
End

Begin %I Elli
1 0 0 [] 0 SetB
0 0 0 SetCFg
1 1 1 SetCBg
0 SetP
[ -1 0 0 -1 502.251 1188.79 ] concat
332 642 4 4 Elli
End

Begin %I Text
0 0 0 SetCFg
/Helvetica-Bold 14 SetF
[ 1 0 0 1 296.428 762 ] concat
[
(0)
] Text
End

Begin %I Text
0 0 0 SetCFg
/Helvetica-Bold 14 SetF
[ 1 0 0 1 363 744 ] concat
[
(1)
] Text
End

Begin %I Text
0 0 0 SetCFg
/Helvetica-Bold 14 SetF
[ 1 0 0 1 407 717 ] concat
[
(2)
] Text
End

Begin %I Text
0 0 0 SetCFg
/Helvetica-Bold 14 SetF
[ 1 0 0 1 435.107 671.893 ] concat
[
(3)
] Text
End

Begin %I Text
0 0 0 SetCFg
/Helvetica-Bold 14 SetF
[ 1 0 0 1 452 606.572 ] concat
[
(4)
] Text
End

Begin %I Text
0 0 0 SetCFg
/Helvetica-Bold 14 SetF
[ 1 0 0 1 443 549 ] concat
[
(5)
] Text
End

Begin %I Text
0 0 0 SetCFg
/Helvetica-Bold 14 SetF
[ 1 0 0 1 407 496 ] concat
[
(6)
] Text
End

Begin %I Text
0 0 0 SetCFg
/Helvetica-Bold 14 SetF
[ 1 0 0 1 363 469 ] concat
[
(7)
] Text
End

Begin %I Text
0 0 0 SetCFg
/Helvetica-Bold 14 SetF
[ 1 0 0 1 296.428 449.786 ] concat
[
(8)
] Text
End

Begin %I Text
0 0 0 SetCFg
/Helvetica-Bold 14 SetF
[ 1 0 0 1 230 469 ] concat
[
(9)
] Text
End

Begin %I Text
0 0 0 SetCFg
/Helvetica-Bold 14 SetF
[ 1 0 0 1 177 496 ] concat
[
(10)
] Text
End

Begin %I Text
0 0 0 SetCFg
/Helvetica-Bold 14 SetF
[ 1 0 0 1 151 540 ] concat
[
(11)
] Text
End

Begin %I Text
0 0 0 SetCFg
/Helvetica-Bold 14 SetF
[ 1 0 0 1 133 606.428 ] concat
[
(12)
] Text
End

Begin %I Text
0 0 0 SetCFg
/Helvetica-Bold 14 SetF
[ 1 0 0 1 151 673 ] concat
[
(13)
] Text
End

Begin %I Text
0 0 0 SetCFg
/Helvetica-Bold 14 SetF
[ 1 0 0 1 177 717 ] concat
[
(14)
] Text
End

Begin %I Text
0 0 0 SetCFg
/Helvetica-Bold 14 SetF
[ 1 0 0 1 221 744 ] concat
[
(15)
] Text
End

Begin %I Line
1 0 0 [] 0 SetB
0 0 0 SetCFg
1 1 1 SetCBg
0 SetP
[ 1 0 0 1 -11 14 ] concat
313 729 370 716 Line
End

Begin %I Line
1 0 0 [] 0 SetB
0 0 0 SetCFg
1 1 1 SetCBg
0 SetP
[ 1 0 0 1 -11 14 ] concat
370 716 414 688 Line
End

Begin %I Line
1 0 0 [] 0 SetB
0 0 0 SetCFg
1 1 1 SetCBg
0 SetP
[ 1 0 0 1 -11 14 ] concat
414 688 444 641 Line
End

Begin %I Line
1 0 0 [] 0 SetB
0 0 0 SetCFg
1 1 1 SetCBg
0 SetP
[ 1 0 0 1 -11 14 ] concat
443 643 455 588 Line
End

Begin %I Line
1 0 0 [] 0 SetB
0 0 0 SetCFg
1 1 1 SetCBg
0 SetP
[ 1 0 0 1 -11 14 ] concat
455 588 443 533 Line
End

Begin %I Line
1 0 0 [] 0 SetB
0 0 0 SetCFg
1 1 1 SetCBg
0 SetP
[ 1 0 0 1 -11 14 ] concat
443 533 412 486 Line
End

Begin %I Line
1 0 0 [] 0 SetB
0 0 0 SetCFg
1 1 1 SetCBg
0 SetP
[ 1 0 0 1 -11 14 ] concat
412 487 370 458 Line
End

Begin %I Line
1 0 0 [] 0 SetB
0 0 0 SetCFg
1 1 1 SetCBg
0 SetP
[ 1 0 0 1 -11 14 ] concat
370 458 313 446 Line
End

Begin %I Line
1 0 0 [] 0 SetB
0 0 0 SetCFg
1 1 1 SetCBg
0 SetP
[ 1 0 0 1 -11 14 ] concat
313 446 256 458 Line
End

Begin %I Line
1 0 0 [] 0 SetB
0 0 0 SetCFg
1 1 1 SetCBg
0 SetP
[ 1 0 0 1 -11 14 ] concat
256 458 211 486 Line
End

Begin %I Line
1 0 0 [] 0 SetB
0 0 0 SetCFg
1 1 1 SetCBg
0 SetP
[ 1 0 0 1 -11 14 ] concat
211 486 182 532 Line
End

Begin %I Line
1 0 0 [] 0 SetB
0 0 0 SetCFg
1 1 1 SetCBg
0 SetP
[ 1 0 0 1 -11 14 ] concat
182 533 171 588 Line
End

Begin %I Line
1 0 0 [] 0 SetB
0 0 0 SetCFg
1 1 1 SetCBg
0 SetP
[ 1 0 0 1 -11 14 ] concat
170 588 182 643 Line
End

Begin %I Line
1 0 0 [] 0 SetB
0 0 0 SetCFg
1 1 1 SetCBg
0 SetP
[ 1 0 0 1 -11 14 ] concat
182 643 211 689 Line
End

Begin %I Line
1 0 0 [] 0 SetB
0 0 0 SetCFg
1 1 1 SetCBg
0 SetP
[ 1 0 0 1 -11 14 ] concat
211 689 255 718 Line
End

Begin %I Line
1 0 0 [] 0 SetB
0 0 0 SetCFg
1 1 1 SetCBg
0 SetP
[ 1 0 0 1 -11 14 ] concat
313 729 455 587 Line
End

Begin %I Line
1 0 0 [] 0 SetB
0 0 0 SetCFg
1 1 1 SetCBg
0 SetP
[ 1 0 0 1 -11 14 ] concat
369 716 443 531 Line
End

Begin %I Line
1 0 0 [] 0 SetB
0 0 0 SetCFg
1 1 1 SetCBg
0 SetP
[ 1 0 0 1 -11 14 ] concat
413 688 413 487 Line
End

Begin %I Line
1 0 0 [] 0 SetB
0 0 0 SetCFg
1 1 1 SetCBg
0 SetP
[ 1 0 0 1 -11 14 ] concat
443 643 369 459 Line
End

Begin %I Line
1 0 0 [] 0 SetB
0 0 0 SetCFg
1 1 1 SetCBg
0 SetP
[ 1 0 0 1 -11 14 ] concat
455 588 312 447 Line
End

Begin %I Line
1 0 0 [] 0 SetB
0 0 0 SetCFg
1 1 1 SetCBg
0 SetP
[ 1 0 0 1 -11 14 ] concat
443 533 255 459 Line
End

Begin %I Line
1 0 0 [] 0 SetB
0 0 0 SetCFg
1 1 1 SetCBg
0 SetP
[ 1 0 0 1 -11 14 ] concat
414 486 210 487 Line
End

Begin %I Line
1 0 0 [] 0 SetB
0 0 0 SetCFg
1 1 1 SetCBg
0 SetP
[ 1 0 0 1 -11 14 ] concat
370 458 182 533 Line
End

Begin %I Line
1 0 0 [] 0 SetB
0 0 0 SetCFg
1 1 1 SetCBg
0 SetP
[ 1 0 0 1 -11 14 ] concat
313 446 171 588 Line
End

Begin %I Line
1 0 0 [] 0 SetB
0 0 0 SetCFg
1 1 1 SetCBg
0 SetP
[ 1 0 0 1 -11 14 ] concat
255 459 182 643 Line
End

Begin %I Line
1 0 0 [] 0 SetB
0 0 0 SetCFg
1 1 1 SetCBg
0 SetP
[ 1 0 0 1 -11 14 ] concat
211 485 211 688 Line
End

Begin %I Line
1 0 0 [] 0 SetB
0 0 0 SetCFg
1 1 1 SetCBg
0 SetP
[ 1 0 0 1 -11 14 ] concat
183 532 256 718 Line
End

Begin %I Line
1 0 0 [] 0 SetB
0 0 0 SetCFg
1 1 1 SetCBg
0 SetP
[ 1 0 0 1 -11 14 ] concat
256 718 313 730 Line
End

Begin %I Line
1 0 0 [] 0 SetB
0 0 0 SetCFg
1 1 1 SetCBg
0 SetP
[ 1 0 0 1 -11 14 ] concat
172 588 313 730 Line
End

Begin %I Line
1 0 0 [] 0 SetB
0 0 0 SetCFg
1 1 1 SetCBg
0 SetP
[ 1 0 0 1 -11 14 ] concat
183 643 370 717 Line
End

Begin %I Line
1 0 0 [] 0 SetB
0 0 0 SetCFg
1 1 1 SetCBg
0 SetP
[ 1 0 0 1 -11 14 ] concat
212 689 413 688 Line
End

Begin %I Line
1 0 0 [] 0 SetB
0 0 0 SetCFg
1 1 1 SetCBg
0 SetP
[ 1 0 0 1 -11 14 ] concat
256 717 443 643 Line
End

End %I eop

showpage


end
%%EndDocument
 353 679 a
 endTexFig
349 2031 a Fn(Figure)15 b(1:)20 b(A)15 b(circulan)o(t)h(graph)f(with)h(16)e
(no)q(des)i(and)f(o\013sets)f(1)h(and)h(4.)949 2727 y(23)p
eop
%%Page: 24 24
bop -92 619 a
 33564236 36585014 1184071 1512980 35719495 39469056 startTexFig
-92 619 a
%%BeginDocument: Figs/concat.ps

/Times-Roman findfont 12 scalefont setfont
407.929993 448.610016 moveto
(After round 2) stringwidth pop 2.0 div -1 mul -4.000000 rmoveto
(After round 2) show

190.970001 448.610016 moveto
(After round 1) stringwidth pop 2.0 div -1 mul -4.000000 rmoveto
(After round 1) show

407.929993 575.169983 moveto
(After round 0) stringwidth pop 2.0 div -1 mul -4.000000 rmoveto
(After round 0) show

0.400000 setlinewidth
newpath 109.609993 674.609985 moveto
 109.609993 584.210022 lineto
 127.689995 584.210022 lineto
 127.689995 674.609985 lineto
closepath stroke

newpath 109.609993 656.530029 moveto
closepath stroke

newpath 109.609993 656.530029 moveto
 127.689995 656.530029 lineto
stroke

newpath 109.609993 638.450012 moveto
 127.689995 638.450012 lineto
stroke

newpath 109.609993 620.369995 moveto
 127.689995 620.369995 lineto
stroke

newpath 109.609993 602.289978 moveto
 127.689995 602.289978 lineto
stroke

newpath 145.770004 674.609985 moveto
 145.770004 584.210022 lineto
 163.850006 584.210022 lineto
 163.850006 674.609985 lineto
closepath stroke

newpath 145.770004 656.530029 moveto
closepath stroke

newpath 145.770004 656.530029 moveto
 163.850006 656.530029 lineto
stroke

newpath 145.770004 638.450012 moveto
 163.850006 638.450012 lineto
stroke

newpath 145.770004 620.369995 moveto
 163.850006 620.369995 lineto
stroke

newpath 145.770004 602.289978 moveto
 163.850006 602.289978 lineto
stroke

newpath 181.930008 602.289978 moveto
 200.010010 602.289978 lineto
stroke

newpath 181.930008 620.369995 moveto
 200.010010 620.369995 lineto
stroke

newpath 181.930008 638.450012 moveto
 200.010010 638.450012 lineto
stroke

newpath 181.930008 656.530029 moveto
 200.010010 656.530029 lineto
stroke

newpath 181.930008 656.530029 moveto
closepath stroke

newpath 181.930008 674.609985 moveto
 181.930008 584.210022 lineto
 200.010010 584.210022 lineto
 200.010010 674.609985 lineto
closepath stroke

newpath 218.089996 674.609985 moveto
 218.089996 584.210022 lineto
 236.169998 584.210022 lineto
 236.169998 674.609985 lineto
closepath stroke

newpath 218.089996 656.530029 moveto
closepath stroke

newpath 218.089996 656.530029 moveto
 236.169998 656.530029 lineto
stroke

newpath 218.089996 638.450012 moveto
 236.169998 638.450012 lineto
stroke

newpath 218.089996 620.369995 moveto
 236.169998 620.369995 lineto
stroke

newpath 218.089996 602.289978 moveto
 236.169998 602.289978 lineto
stroke

newpath 254.250000 602.289978 moveto
 272.330017 602.289978 lineto
stroke

newpath 254.250000 620.369995 moveto
 272.330017 620.369995 lineto
stroke

newpath 254.250000 638.450012 moveto
 272.330017 638.450012 lineto
stroke

newpath 254.250000 656.530029 moveto
 272.330017 656.530029 lineto
stroke

newpath 254.250000 656.530029 moveto
closepath stroke

newpath 254.250000 674.609985 moveto
 254.250000 584.210022 lineto
 272.330017 584.210022 lineto
 272.330017 674.609985 lineto
closepath stroke

118.650002 683.650024 moveto
(P0) stringwidth pop 2.0 div -1 mul -4.000000 rmoveto
(P0) show

154.809998 683.650024 moveto
(P1) stringwidth pop 2.0 div -1 mul -4.000000 rmoveto
(P1) show

190.970001 683.650024 moveto
(P2) stringwidth pop 2.0 div -1 mul -4.000000 rmoveto
(P2) show

227.130005 683.650024 moveto
(P3) stringwidth pop 2.0 div -1 mul -4.000000 rmoveto
(P3) show

263.290009 683.650024 moveto
(P4) stringwidth pop 2.0 div -1 mul -4.000000 rmoveto
(P4) show

/Times-Roman findfont 8 scalefont setfont
118.650002 665.570007 moveto
(0) stringwidth pop 2.0 div -1 mul -2.400000 rmoveto
(0) show

154.809998 665.570007 moveto
(1) stringwidth pop 2.0 div -1 mul -2.400000 rmoveto
(1) show

190.970001 665.570007 moveto
(2) stringwidth pop 2.0 div -1 mul -2.400000 rmoveto
(2) show

227.130005 665.570007 moveto
(3) stringwidth pop 2.0 div -1 mul -2.400000 rmoveto
(3) show

263.290009 665.570007 moveto
(4) stringwidth pop 2.0 div -1 mul -2.400000 rmoveto
(4) show

newpath 326.570007 674.609985 moveto
 326.570007 584.210022 lineto
 344.649994 584.210022 lineto
 344.649994 674.609985 lineto
closepath stroke

newpath 326.570007 656.530029 moveto
closepath stroke

newpath 326.570007 656.530029 moveto
 344.649994 656.530029 lineto
stroke

newpath 326.570007 638.450012 moveto
 344.649994 638.450012 lineto
stroke

newpath 326.570007 620.369995 moveto
 344.649994 620.369995 lineto
stroke

newpath 326.570007 602.289978 moveto
 344.649994 602.289978 lineto
stroke

newpath 362.730011 674.609985 moveto
 362.730011 584.210022 lineto
 380.809998 584.210022 lineto
 380.809998 674.609985 lineto
closepath stroke

newpath 362.730011 656.530029 moveto
closepath stroke

newpath 362.730011 656.530029 moveto
 380.809998 656.530029 lineto
stroke

newpath 362.730011 638.450012 moveto
 380.809998 638.450012 lineto
stroke

newpath 362.730011 620.369995 moveto
 380.809998 620.369995 lineto
stroke

newpath 362.730011 602.289978 moveto
 380.809998 602.289978 lineto
stroke

newpath 398.890015 602.289978 moveto
 416.970001 602.289978 lineto
stroke

newpath 398.890015 620.369995 moveto
 416.970001 620.369995 lineto
stroke

newpath 398.890015 638.450012 moveto
 416.970001 638.450012 lineto
stroke

newpath 398.890015 656.530029 moveto
 416.970001 656.530029 lineto
stroke

newpath 398.890015 656.530029 moveto
closepath stroke

newpath 398.890015 674.609985 moveto
 398.890015 584.210022 lineto
 416.970001 584.210022 lineto
 416.970001 674.609985 lineto
closepath stroke

newpath 435.049988 674.609985 moveto
 435.049988 584.210022 lineto
 453.130005 584.210022 lineto
 453.130005 674.609985 lineto
closepath stroke

newpath 435.049988 656.530029 moveto
closepath stroke

newpath 435.049988 656.530029 moveto
 453.130005 656.530029 lineto
stroke

newpath 435.049988 638.450012 moveto
 453.130005 638.450012 lineto
stroke

newpath 435.049988 620.369995 moveto
 453.130005 620.369995 lineto
stroke

newpath 435.049988 602.289978 moveto
 453.130005 602.289978 lineto
stroke

newpath 471.209991 602.289978 moveto
 489.290009 602.289978 lineto
stroke

newpath 471.209991 620.369995 moveto
 489.290009 620.369995 lineto
stroke

newpath 471.209991 638.450012 moveto
 489.290009 638.450012 lineto
stroke

newpath 471.209991 656.530029 moveto
 489.290009 656.530029 lineto
stroke

newpath 471.209991 656.530029 moveto
closepath stroke

newpath 471.209991 674.609985 moveto
 471.209991 584.210022 lineto
 489.290009 584.210022 lineto
 489.290009 674.609985 lineto
closepath stroke

335.610016 665.570007 moveto
(0) stringwidth pop 2.0 div -1 mul -2.400000 rmoveto
(0) show

371.769989 665.570007 moveto
(1) stringwidth pop 2.0 div -1 mul -2.400000 rmoveto
(1) show

407.929993 665.570007 moveto
(2) stringwidth pop 2.0 div -1 mul -2.400000 rmoveto
(2) show

444.089996 665.570007 moveto
(3) stringwidth pop 2.0 div -1 mul -2.400000 rmoveto
(3) show

480.250000 665.570007 moveto
(4) stringwidth pop 2.0 div -1 mul -2.400000 rmoveto
(4) show

335.610016 647.489990 moveto
(1) stringwidth pop 2.0 div -1 mul -2.400000 rmoveto
(1) show

371.769989 647.489990 moveto
(2) stringwidth pop 2.0 div -1 mul -2.400000 rmoveto
(2) show

407.929993 647.489990 moveto
(3) stringwidth pop 2.0 div -1 mul -2.400000 rmoveto
(3) show

444.089996 647.489990 moveto
(4) stringwidth pop 2.0 div -1 mul -2.400000 rmoveto
(4) show

480.250000 647.489990 moveto
(0) stringwidth pop 2.0 div -1 mul -2.400000 rmoveto
(0) show

newpath 109.609993 548.049988 moveto
 109.609993 457.649994 lineto
 127.689995 457.649994 lineto
 127.689995 548.049988 lineto
closepath stroke

newpath 109.609993 529.970032 moveto
closepath stroke

newpath 109.609993 529.970032 moveto
 127.689995 529.970032 lineto
stroke

newpath 109.609993 511.890015 moveto
 127.689995 511.890015 lineto
stroke

newpath 109.609993 493.809998 moveto
 127.689995 493.809998 lineto
stroke

newpath 109.609993 475.730011 moveto
 127.689995 475.730011 lineto
stroke

newpath 145.770004 548.049988 moveto
 145.770004 457.649994 lineto
 163.850006 457.649994 lineto
 163.850006 548.049988 lineto
closepath stroke

newpath 145.770004 529.970032 moveto
closepath stroke

newpath 145.770004 529.970032 moveto
 163.850006 529.970032 lineto
stroke

newpath 145.770004 511.890015 moveto
 163.850006 511.890015 lineto
stroke

newpath 145.770004 493.809998 moveto
 163.850006 493.809998 lineto
stroke

newpath 145.770004 475.730011 moveto
 163.850006 475.730011 lineto
stroke

newpath 181.930008 475.730011 moveto
 200.010010 475.730011 lineto
stroke

newpath 181.930008 493.809998 moveto
 200.010010 493.809998 lineto
stroke

newpath 181.930008 511.890015 moveto
 200.010010 511.890015 lineto
stroke

newpath 181.930008 529.970032 moveto
 200.010010 529.970032 lineto
stroke

newpath 181.930008 529.970032 moveto
closepath stroke

newpath 181.930008 548.049988 moveto
 181.930008 457.649994 lineto
 200.010010 457.649994 lineto
 200.010010 548.049988 lineto
closepath stroke

newpath 218.089996 548.049988 moveto
 218.089996 457.649994 lineto
 236.169998 457.649994 lineto
 236.169998 548.049988 lineto
closepath stroke

newpath 218.089996 529.970032 moveto
closepath stroke

newpath 218.089996 529.970032 moveto
 236.169998 529.970032 lineto
stroke

newpath 218.089996 511.890015 moveto
 236.169998 511.890015 lineto
stroke

newpath 218.089996 493.809998 moveto
 236.169998 493.809998 lineto
stroke

newpath 218.089996 475.730011 moveto
 236.169998 475.730011 lineto
stroke

newpath 254.250000 475.730011 moveto
 272.330017 475.730011 lineto
stroke

newpath 254.250000 493.809998 moveto
 272.330017 493.809998 lineto
stroke

newpath 254.250000 511.890015 moveto
 272.330017 511.890015 lineto
stroke

newpath 254.250000 529.970032 moveto
 272.330017 529.970032 lineto
stroke

newpath 254.250000 529.970032 moveto
closepath stroke

newpath 254.250000 548.049988 moveto
 254.250000 457.649994 lineto
 272.330017 457.649994 lineto
 272.330017 548.049988 lineto
closepath stroke

118.650002 539.010010 moveto
(0) stringwidth pop 2.0 div -1 mul -2.400000 rmoveto
(0) show

154.809998 539.010010 moveto
(1) stringwidth pop 2.0 div -1 mul -2.400000 rmoveto
(1) show

190.970001 539.010010 moveto
(2) stringwidth pop 2.0 div -1 mul -2.400000 rmoveto
(2) show

227.130005 539.010010 moveto
(3) stringwidth pop 2.0 div -1 mul -2.400000 rmoveto
(3) show

263.290009 539.010010 moveto
(4) stringwidth pop 2.0 div -1 mul -2.400000 rmoveto
(4) show

118.650002 520.929993 moveto
(1) stringwidth pop 2.0 div -1 mul -2.400000 rmoveto
(1) show

154.809998 520.929993 moveto
(2) stringwidth pop 2.0 div -1 mul -2.400000 rmoveto
(2) show

190.970001 520.929993 moveto
(3) stringwidth pop 2.0 div -1 mul -2.400000 rmoveto
(3) show

227.130005 520.929993 moveto
(4) stringwidth pop 2.0 div -1 mul -2.400000 rmoveto
(4) show

263.290009 520.929993 moveto
(0) stringwidth pop 2.0 div -1 mul -2.400000 rmoveto
(0) show

118.650002 502.849976 moveto
(2) stringwidth pop 2.0 div -1 mul -2.400000 rmoveto
(2) show

118.650002 484.769989 moveto
(3) stringwidth pop 2.0 div -1 mul -2.400000 rmoveto
(3) show

154.809998 502.849976 moveto
(3) stringwidth pop 2.0 div -1 mul -2.400000 rmoveto
(3) show

154.809998 484.769989 moveto
(4) stringwidth pop 2.0 div -1 mul -2.400000 rmoveto
(4) show

190.970001 502.849976 moveto
(4) stringwidth pop 2.0 div -1 mul -2.400000 rmoveto
(4) show

190.970001 484.769989 moveto
(0) stringwidth pop 2.0 div -1 mul -2.400000 rmoveto
(0) show

227.130005 502.849976 moveto
(0) stringwidth pop 2.0 div -1 mul -2.400000 rmoveto
(0) show

227.130005 484.769989 moveto
(1) stringwidth pop 2.0 div -1 mul -2.400000 rmoveto
(1) show

263.290009 502.849976 moveto
(1) stringwidth pop 2.0 div -1 mul -2.400000 rmoveto
(1) show

263.290009 484.769989 moveto
(2) stringwidth pop 2.0 div -1 mul -2.400000 rmoveto
(2) show

newpath 326.570007 548.049988 moveto
 326.570007 457.649994 lineto
 344.649994 457.649994 lineto
 344.649994 548.049988 lineto
closepath stroke

newpath 326.570007 529.970032 moveto
closepath stroke

newpath 326.570007 529.970032 moveto
 344.649994 529.970032 lineto
stroke

newpath 326.570007 511.890015 moveto
 344.649994 511.890015 lineto
stroke

newpath 326.570007 493.809998 moveto
 344.649994 493.809998 lineto
stroke

newpath 326.570007 475.730011 moveto
 344.649994 475.730011 lineto
stroke

newpath 362.730011 548.049988 moveto
 362.730011 457.649994 lineto
 380.809998 457.649994 lineto
 380.809998 548.049988 lineto
closepath stroke

newpath 362.730011 529.970032 moveto
closepath stroke

newpath 362.730011 529.970032 moveto
 380.809998 529.970032 lineto
stroke

newpath 362.730011 511.890015 moveto
 380.809998 511.890015 lineto
stroke

newpath 362.730011 493.809998 moveto
 380.809998 493.809998 lineto
stroke

newpath 362.730011 475.730011 moveto
 380.809998 475.730011 lineto
stroke

newpath 398.890015 475.730011 moveto
 416.970001 475.730011 lineto
stroke

newpath 398.890015 493.809998 moveto
 416.970001 493.809998 lineto
stroke

newpath 398.890015 511.890015 moveto
 416.970001 511.890015 lineto
stroke

newpath 398.890015 529.970032 moveto
 416.970001 529.970032 lineto
stroke

newpath 398.890015 529.970032 moveto
closepath stroke

newpath 398.890015 548.049988 moveto
 398.890015 457.649994 lineto
 416.970001 457.649994 lineto
 416.970001 548.049988 lineto
closepath stroke

newpath 435.049988 548.049988 moveto
 435.049988 457.649994 lineto
 453.130005 457.649994 lineto
 453.130005 548.049988 lineto
closepath stroke

newpath 435.049988 529.970032 moveto
closepath stroke

newpath 435.049988 529.970032 moveto
 453.130005 529.970032 lineto
stroke

newpath 435.049988 511.890015 moveto
 453.130005 511.890015 lineto
stroke

newpath 435.049988 493.809998 moveto
 453.130005 493.809998 lineto
stroke

newpath 435.049988 475.730011 moveto
 453.130005 475.730011 lineto
stroke

newpath 471.209991 475.730011 moveto
 489.290009 475.730011 lineto
stroke

newpath 471.209991 493.809998 moveto
 489.290009 493.809998 lineto
stroke

newpath 471.209991 511.890015 moveto
 489.290009 511.890015 lineto
stroke

newpath 471.209991 529.970032 moveto
 489.290009 529.970032 lineto
stroke

newpath 471.209991 529.970032 moveto
closepath stroke

newpath 471.209991 548.049988 moveto
 471.209991 457.649994 lineto
 489.290009 457.649994 lineto
 489.290009 548.049988 lineto
closepath stroke

335.610016 539.010010 moveto
(0) stringwidth pop 2.0 div -1 mul -2.400000 rmoveto
(0) show

371.769989 539.010010 moveto
(1) stringwidth pop 2.0 div -1 mul -2.400000 rmoveto
(1) show

407.929993 539.010010 moveto
(2) stringwidth pop 2.0 div -1 mul -2.400000 rmoveto
(2) show

444.089996 539.010010 moveto
(3) stringwidth pop 2.0 div -1 mul -2.400000 rmoveto
(3) show

480.250000 539.010010 moveto
(4) stringwidth pop 2.0 div -1 mul -2.400000 rmoveto
(4) show

335.610016 520.929993 moveto
(1) stringwidth pop 2.0 div -1 mul -2.400000 rmoveto
(1) show

371.769989 520.929993 moveto
(2) stringwidth pop 2.0 div -1 mul -2.400000 rmoveto
(2) show

407.929993 520.929993 moveto
(3) stringwidth pop 2.0 div -1 mul -2.400000 rmoveto
(3) show

444.089996 520.929993 moveto
(4) stringwidth pop 2.0 div -1 mul -2.400000 rmoveto
(4) show

480.250000 520.929993 moveto
(0) stringwidth pop 2.0 div -1 mul -2.400000 rmoveto
(0) show

335.610016 502.849976 moveto
(2) stringwidth pop 2.0 div -1 mul -2.400000 rmoveto
(2) show

335.610016 484.769989 moveto
(3) stringwidth pop 2.0 div -1 mul -2.400000 rmoveto
(3) show

371.769989 502.849976 moveto
(3) stringwidth pop 2.0 div -1 mul -2.400000 rmoveto
(3) show

371.769989 484.769989 moveto
(4) stringwidth pop 2.0 div -1 mul -2.400000 rmoveto
(4) show

407.929993 502.849976 moveto
(4) stringwidth pop 2.0 div -1 mul -2.400000 rmoveto
(4) show

407.929993 484.769989 moveto
(0) stringwidth pop 2.0 div -1 mul -2.400000 rmoveto
(0) show

444.089996 502.849976 moveto
(0) stringwidth pop 2.0 div -1 mul -2.400000 rmoveto
(0) show

444.089996 484.769989 moveto
(1) stringwidth pop 2.0 div -1 mul -2.400000 rmoveto
(1) show

480.250000 502.849976 moveto
(1) stringwidth pop 2.0 div -1 mul -2.400000 rmoveto
(1) show

480.250000 484.769989 moveto
(2) stringwidth pop 2.0 div -1 mul -2.400000 rmoveto
(2) show

335.610016 466.690002 moveto
(4) stringwidth pop 2.0 div -1 mul -2.400000 rmoveto
(4) show

371.769989 466.690002 moveto
(0) stringwidth pop 2.0 div -1 mul -2.400000 rmoveto
(0) show

407.929993 466.690002 moveto
(1) stringwidth pop 2.0 div -1 mul -2.400000 rmoveto
(1) show

444.089996 466.690002 moveto
(2) stringwidth pop 2.0 div -1 mul -2.400000 rmoveto
(2) show

480.250000 466.690002 moveto
(3) stringwidth pop 2.0 div -1 mul -2.400000 rmoveto
(3) show

/Times-Roman findfont 12 scalefont setfont
335.610016 683.650024 moveto
(P0) stringwidth pop 2.0 div -1 mul -4.000000 rmoveto
(P0) show

371.769989 683.650024 moveto
(P1) stringwidth pop 2.0 div -1 mul -4.000000 rmoveto
(P1) show

407.929993 683.650024 moveto
(P2) stringwidth pop 2.0 div -1 mul -4.000000 rmoveto
(P2) show

444.089996 683.650024 moveto
(P3) stringwidth pop 2.0 div -1 mul -4.000000 rmoveto
(P3) show

480.250000 683.650024 moveto
(P4) stringwidth pop 2.0 div -1 mul -4.000000 rmoveto
(P4) show

newpath 109.609993 421.489990 moveto
 109.609993 331.089996 lineto
 127.689995 331.089996 lineto
 127.689995 421.489990 lineto
closepath stroke

newpath 109.609993 403.410004 moveto
closepath stroke

newpath 109.609993 403.410004 moveto
 127.689995 403.410004 lineto
stroke

newpath 109.609993 385.330017 moveto
 127.689995 385.330017 lineto
stroke

newpath 109.609993 367.250000 moveto
 127.689995 367.250000 lineto
stroke

newpath 109.609993 349.170013 moveto
 127.689995 349.170013 lineto
stroke

/Times-Roman findfont 8 scalefont setfont
118.650002 412.450012 moveto
(0) stringwidth pop 2.0 div -1 mul -2.400000 rmoveto
(0) show

118.650002 394.369995 moveto
(1) stringwidth pop 2.0 div -1 mul -2.400000 rmoveto
(1) show

118.650002 376.290009 moveto
(2) stringwidth pop 2.0 div -1 mul -2.400000 rmoveto
(2) show

118.650002 358.209991 moveto
(3) stringwidth pop 2.0 div -1 mul -2.400000 rmoveto
(3) show

118.650002 340.130005 moveto
(4) stringwidth pop 2.0 div -1 mul -2.400000 rmoveto
(4) show

154.809998 340.130005 moveto
(4) stringwidth pop 2.0 div -1 mul -2.400000 rmoveto
(4) show

154.809998 358.209991 moveto
(3) stringwidth pop 2.0 div -1 mul -2.400000 rmoveto
(3) show

154.809998 376.290009 moveto
(2) stringwidth pop 2.0 div -1 mul -2.400000 rmoveto
(2) show

154.809998 394.369995 moveto
(1) stringwidth pop 2.0 div -1 mul -2.400000 rmoveto
(1) show

154.809998 412.450012 moveto
(0) stringwidth pop 2.0 div -1 mul -2.400000 rmoveto
(0) show

newpath 145.770004 349.170013 moveto
 163.850006 349.170013 lineto
stroke

newpath 145.770004 367.250000 moveto
 163.850006 367.250000 lineto
stroke

newpath 145.770004 385.330017 moveto
 163.850006 385.330017 lineto
stroke

newpath 145.770004 403.410004 moveto
 163.850006 403.410004 lineto
stroke

newpath 145.770004 403.410004 moveto
closepath stroke

newpath 145.770004 421.489990 moveto
 145.770004 331.089996 lineto
 163.850006 331.089996 lineto
 163.850006 421.489990 lineto
closepath stroke

newpath 181.930008 421.489990 moveto
 181.930008 331.089996 lineto
 200.010010 331.089996 lineto
 200.010010 421.489990 lineto
closepath stroke

newpath 181.930008 403.410004 moveto
closepath stroke

newpath 181.930008 403.410004 moveto
 200.010010 403.410004 lineto
stroke

newpath 181.930008 385.330017 moveto
 200.010010 385.330017 lineto
stroke

newpath 181.930008 367.250000 moveto
 200.010010 367.250000 lineto
stroke

newpath 181.930008 349.170013 moveto
 200.010010 349.170013 lineto
stroke

190.970001 412.450012 moveto
(0) stringwidth pop 2.0 div -1 mul -2.400000 rmoveto
(0) show

190.970001 394.369995 moveto
(1) stringwidth pop 2.0 div -1 mul -2.400000 rmoveto
(1) show

190.970001 376.290009 moveto
(2) stringwidth pop 2.0 div -1 mul -2.400000 rmoveto
(2) show

190.970001 358.209991 moveto
(3) stringwidth pop 2.0 div -1 mul -2.400000 rmoveto
(3) show

190.970001 340.130005 moveto
(4) stringwidth pop 2.0 div -1 mul -2.400000 rmoveto
(4) show

227.130005 340.130005 moveto
(4) stringwidth pop 2.0 div -1 mul -2.400000 rmoveto
(4) show

227.130005 358.209991 moveto
(3) stringwidth pop 2.0 div -1 mul -2.400000 rmoveto
(3) show

227.130005 376.290009 moveto
(2) stringwidth pop 2.0 div -1 mul -2.400000 rmoveto
(2) show

227.130005 394.369995 moveto
(1) stringwidth pop 2.0 div -1 mul -2.400000 rmoveto
(1) show

227.130005 412.450012 moveto
(0) stringwidth pop 2.0 div -1 mul -2.400000 rmoveto
(0) show

newpath 218.089996 349.170013 moveto
 236.169998 349.170013 lineto
stroke

newpath 218.089996 367.250000 moveto
 236.169998 367.250000 lineto
stroke

newpath 218.089996 385.330017 moveto
 236.169998 385.330017 lineto
stroke

newpath 218.089996 403.410004 moveto
 236.169998 403.410004 lineto
stroke

newpath 218.089996 403.410004 moveto
closepath stroke

newpath 218.089996 421.489990 moveto
 218.089996 331.089996 lineto
 236.169998 331.089996 lineto
 236.169998 421.489990 lineto
closepath stroke

newpath 254.250000 421.489990 moveto
 254.250000 331.089996 lineto
 272.330017 331.089996 lineto
 272.330017 421.489990 lineto
closepath stroke

newpath 254.250000 403.410004 moveto
closepath stroke

newpath 254.250000 403.410004 moveto
 272.330017 403.410004 lineto
stroke

newpath 254.250000 385.330017 moveto
 272.330017 385.330017 lineto
stroke

newpath 254.250000 367.250000 moveto
 272.330017 367.250000 lineto
stroke

newpath 254.250000 349.170013 moveto
 272.330017 349.170013 lineto
stroke

263.290009 412.450012 moveto
(0) stringwidth pop 2.0 div -1 mul -2.400000 rmoveto
(0) show

263.290009 394.369995 moveto
(1) stringwidth pop 2.0 div -1 mul -2.400000 rmoveto
(1) show

263.290009 376.290009 moveto
(2) stringwidth pop 2.0 div -1 mul -2.400000 rmoveto
(2) show

263.290009 358.209991 moveto
(3) stringwidth pop 2.0 div -1 mul -2.400000 rmoveto
(3) show

263.290009 340.130005 moveto
(4) stringwidth pop 2.0 div -1 mul -2.400000 rmoveto
(4) show

/Times-Roman findfont 16 scalefont setfont
299.450012 629.409973 moveto
(==>) stringwidth pop 2.0 div -1 mul -5.600000 rmoveto
(==>) show

299.450012 502.849976 moveto
(==>) stringwidth pop 2.0 div -1 mul -5.600000 rmoveto
(==>) show

516.409973 629.409973 moveto
(==>) stringwidth pop 2.0 div -1 mul -5.600000 rmoveto
(==>) show

516.409973 502.849976 moveto
(==>) stringwidth pop 2.0 div -1 mul -5.600000 rmoveto
(==>) show

/Times-Roman findfont 12 scalefont setfont
190.970001 575.169983 moveto
(Initial) stringwidth pop 2.0 div -1 mul -4.000000 rmoveto
(Initial) show

190.970001 322.050018 moveto
(After local shift) stringwidth pop 2.0 div -1 mul -4.000000 rmoveto
(After local shift) show

showpage
%%EndDocument
 -92 619 a
 endTexFig
286 2090 a Fn(Figure)15 b(2:)20 b(Example)c(of)e(the)i(concatenation)f
(algorithm)g(with)h(5)f(pro)q(cessors.)949 2727 y(24)p eop
%%Trailer
end
userdict /end-hook known{end-hook}if
%%EOF

From owner-mpi-comm@CS.UTK.EDU  Wed Apr 21 16:18:14 1993
Received: from CS.UTK.EDU by surfer.EPM.ORNL.GOV (5.61/1.34)
	id AA08358; Wed, 21 Apr 93 16:18:14 -0400
Received: from localhost by CS.UTK.EDU with SMTP (5.61+IDA+UTK-930125/2.8s-UTK)
	id AA19305; Wed, 21 Apr 93 16:16:14 -0400
X-Resent-To: mpi-comm@CS.UTK.EDU ; Wed, 21 Apr 1993 16:16:12 EDT
Errors-To: owner-mpi-comm@CS.UTK.EDU
Received: from hub.meiko.co.uk by CS.UTK.EDU with SMTP (5.61+IDA+UTK-930125/2.8s-UTK)
	id AA19245; Wed, 21 Apr 93 16:16:00 -0400
Received: from float.co.uk (float.meiko.co.uk) by hub.meiko.co.uk with SMTP id AA06389
  (5.65c/IDA-1.4.4 for mpi-comm@cs.utk.edu); Wed, 21 Apr 1993 21:15:48 +0100
Date: Wed, 21 Apr 1993 21:15:48 +0100
From: James Cownie <jim@meiko.co.uk>
Message-Id: <199304212015.AA06389@hub.meiko.co.uk>
Received: by float.co.uk (5.0/SMI-SVR4)
	id AA04899; Wed, 21 Apr 93 20:11:18 GMT
To: mpi-comm@cs.utk.edu
Cc: ajgh@ecs.soton.ac.uk
Subject: Meeting in Europe ?
Content-Length: 944

Gentle people,

At the last MPI meeting we agreed to have a meeting in August (and
possibly even September as well).

After this decision had been taken, various people approached me and
asked whether we could have one of these meetings in Europe. (Not only
Rolf and Lyndon !).

I have since spoken to Professor Hey, who has kindly offered to host
the meeting at Southampton and handle local arrangements if we were to
decide to hold a meeting in Europe.

Since the arrangements for these meetings are still fluid, now is the
time to make this decision, therefore would you care to think about
this now. I guess we should aim to make a decision at the next meeting.

-- Jim
James Cownie 
Meiko Limited			Meiko Inc.
650 Aztec West			Reservoir Place
Bristol BS12 4SD		1601 Trapelo Road
England				Waltham
				MA 02154

Phone : +44 454 616171		+1 617 890 7676
FAX   : +44 454 618188		+1 617 890 5042
E-Mail: jim@meiko.co.uk   or    jim@meiko.com

From owner-mpi-comm@CS.UTK.EDU  Wed Apr 21 16:34:03 1993
Received: from CS.UTK.EDU by surfer.EPM.ORNL.GOV (5.61/1.34)
	id AA08835; Wed, 21 Apr 93 16:34:03 -0400
Received: from localhost by CS.UTK.EDU with SMTP (5.61+IDA+UTK-930125/2.8s-UTK)
	id AA20629; Wed, 21 Apr 93 16:32:23 -0400
X-Resent-To: mpi-comm@CS.UTK.EDU ; Wed, 21 Apr 1993 16:32:18 EDT
Errors-To: owner-mpi-comm@CS.UTK.EDU
Received: from Mail.Think.COM by CS.UTK.EDU with SMTP (5.61+IDA+UTK-930125/2.8s-UTK)
	id AA20616; Wed, 21 Apr 93 16:32:16 -0400
Received: from Electryon.Think.COM by mail.think.com; Wed, 21 Apr 93 16:32:14 -0400
From: Adam Greenberg <moose@Think.COM>
Received: by electryon.think.com (4.1/Think-1.2)
	id AA24033; Wed, 21 Apr 93 16:32:08 EDT
Date: Wed, 21 Apr 93 16:32:08 EDT
Message-Id: <9304212032.AA24033@electryon.think.com>
To: jim@meiko.co.uk
Cc: mpi-comm@cs.utk.edu, ajgh@ecs.soton.ac.uk
In-Reply-To: <199304212015.AA06389@hub.meiko.co.uk> "jim@meiko.co.uk"
Subject: Meeting in Europe ?

   Date: Wed, 21 Apr 1993 21:15:48 +0100
   From: James Cownie <jim@meiko.co.uk>

   Gentle people,

   At the last MPI meeting we agreed to have a meeting in August (and
   possibly even September as well).

   After this decision had been taken, various people approached me and
   asked whether we could have one of these meetings in Europe. (Not only
   Rolf and Lyndon !).

   I have since spoken to Professor Hey, who has kindly offered to host
   the meeting at Southampton and handle local arrangements if we were to
   decide to hold a meeting in Europe.

   Since the arrangements for these meetings are still fluid, now is the
   time to make this decision, therefore would you care to think about
   this now. I guess we should aim to make a decision at the next meeting.

Heh.  I'm fully willing to go to Europe.  However, even if Europe is not the
eventual venue, somewhere (anywhere?) other than a hotel isolated in North
Dallas is to be desired.

moose
From owner-mpi-comm@CS.UTK.EDU  Wed Apr 21 16:42:21 1993
Received: from CS.UTK.EDU by surfer.EPM.ORNL.GOV (5.61/1.34)
	id AA08999; Wed, 21 Apr 93 16:42:21 -0400
Received: from localhost by CS.UTK.EDU with SMTP (5.61+IDA+UTK-930125/2.8s-UTK)
	id AA21293; Wed, 21 Apr 93 16:40:53 -0400
X-Resent-To: mpi-comm@CS.UTK.EDU ; Wed, 21 Apr 1993 16:40:50 EDT
Errors-To: owner-mpi-comm@CS.UTK.EDU
Received: from ocfmail.ocf.llnl.gov by CS.UTK.EDU with SMTP (5.61+IDA+UTK-930125/2.8s-UTK)
	id AA21278; Wed, 21 Apr 93 16:40:48 -0400
Received: from [134.9.250.226] (nessett.ocf.llnl.gov) by ocfmail.ocf.llnl.gov (4.1/SMI-4.0)
	id AA09476; Wed, 21 Apr 93 13:40:32 PDT
Message-Id: <9304212040.AA09476@ocfmail.ocf.llnl.gov>
Date: Wed, 21 Apr 1993 13:50:13 -0800
To: James Cownie <jim@meiko.co.uk>
From: nessett@ocfmail.ocf.llnl.gov (Dan Nessett)
X-Sender: nessett@ocfmail.llnl.gov
Subject: Re: Meeting in Europe ?
Cc: mpi-comm@cs.utk.edu

Because of budgetary cuts, foreign travel has been restricted recently for
us at LLNL. So, I couldn't make it to a meeting held outside the US.

Dan

From owner-mpi-comm@CS.UTK.EDU  Wed Apr 21 17:27:29 1993
Received: from CS.UTK.EDU by surfer.EPM.ORNL.GOV (5.61/1.34)
	id AA10298; Wed, 21 Apr 93 17:27:29 -0400
Received: from localhost by CS.UTK.EDU with SMTP (5.61+IDA+UTK-930125/2.8s-UTK)
	id AA24631; Wed, 21 Apr 93 17:26:14 -0400
X-Resent-To: mpi-comm@CS.UTK.EDU ; Wed, 21 Apr 1993 17:26:13 EDT
Errors-To: owner-mpi-comm@CS.UTK.EDU
Received: from gw1.fsl.noaa.gov by CS.UTK.EDU with SMTP (5.61+IDA+UTK-930125/2.8s-UTK)
	id AA24623; Wed, 21 Apr 93 17:26:11 -0400
Received: by gw1.fsl.noaa.gov (5.57/Ultrix3.0-C)
	id AA16165; Wed, 21 Apr 93 21:26:08 GMT
Received: by macaw.fsl.noaa.gov (4.1/SMI-4.1)
	id AA26045; Wed, 21 Apr 93 15:24:44 MDT
Date: Wed, 21 Apr 93 15:24:44 MDT
From: hender@macaw.fsl.noaa.gov (Tom Henderson)
Message-Id: <9304212124.AA26045@macaw.fsl.noaa.gov>
To: mpi-comm@cs.utk.edu
Subject: Re: Meeting in Europe ?


> Heh.  I'm fully willing to go to Europe.  However, even if Europe is not the
> eventual venue, somewhere (anywhere?) other than a hotel isolated in North
> Dallas is to be desired.
> 
> moose

I'll second this.  If this is a subcommittee meeting, you've got two votes 
from this organization!  

Tom Henderson
NOAA Forecast Systems Laboratory


From owner-mpi-comm@CS.UTK.EDU  Wed Apr 21 23:13:08 1993
Received: from CS.UTK.EDU by surfer.EPM.ORNL.GOV (5.61/1.34)
	id AA15052; Wed, 21 Apr 93 23:13:08 -0400
Received: from localhost by CS.UTK.EDU with SMTP (5.61+IDA+UTK-930125/2.8s-UTK)
	id AA14845; Wed, 21 Apr 93 23:10:44 -0400
X-Resent-To: mpi-comm@CS.UTK.EDU ; Wed, 21 Apr 1993 23:10:42 EDT
Errors-To: owner-mpi-comm@CS.UTK.EDU
Received: from THIALFI.CS.CORNELL.EDU by CS.UTK.EDU with SMTP (5.61+IDA+UTK-930125/2.8s-UTK)
	id AA14828; Wed, 21 Apr 93 23:10:40 -0400
Received: from CLOYD.CS.CORNELL.EDU by thialfi.cs.cornell.edu (5.67/I-1.99D)
	id AA15605; Wed, 21 Apr 93 23:10:34 -0400
Received: from ELLI.CS.CORNELL.EDU by cloyd.cs.cornell.edu (5.67/I-1.99D)
	id AA15802; Wed, 21 Apr 93 23:10:42 -0400
From: elster@cs.cornell.edu (Anne C. Elster)
Date: Wed, 21 Apr 93 23:10:31 -0400
Message-Id: <9304220310.AA21130@elli.cs.cornell.edu>
Received: by elli.cs.cornell.edu (5.67/N-0.13)
	id AA21130; Wed, 21 Apr 93 23:10:31 -0400
To: mpi-comm@cs.utk.edu
Subject:  Re: Meeting in Europe ?

James Cownie writes:

>At the last MPI meeting we agreed to have a meeting in August (and
>possibly even September as well).
>
>After this decision had been taken, various people approached me and
>asked whether we could have one of these meetings in Europe. (Not only
>Rolf and Lyndon !).
>


Hear, hear! If MPI is supposed to be a truely INTERNATIONAL forum,
I think it is indeed appropriate to schedule at least one of the
meetings outside the U.S.  Now, if the organizers (Jack/David) would
still sponsor at least some of the airfare for those of us (academics)
they now support, there is no way you can keep me away from the meeting! :-)


Adam Greenberg follows up:

> Heh.  I'm fully willing to go to Europe.  However, even if Europe is not the
> eventual venue, somewhere (anywhere?) other than a hotel isolated in North
> Dallas is to be desired.
>
> moose

No kidding!  Hmmm ..  maybe the HPF peope picked the local to make sure
people didn't feel like taking some sessions off to explore less technical
things ... ;-) (devious smile)


							Anne

-------------------------------------------------------------------------------
Anne C. Elster			   |  (607) 254-8653 [off]   255-6236 [FAX]
Space Plasma Physics		   |
School of Electrical Engineering   |  (607) 272-2986 [home/answ.mach]
Cornell University, 351 Theory Ctr.|
Ithaca, NY 14853		   |   e-mail:  elster@cs.cornell.edu
USA				   |	        na.elster@na-net.ornl.gov

From owner-mpi-comm@CS.UTK.EDU  Thu Apr 22 01:46:33 1993
Received: from CS.UTK.EDU by surfer.EPM.ORNL.GOV (5.61/1.34)
	id AA16636; Thu, 22 Apr 93 01:46:33 -0400
Received: from localhost by CS.UTK.EDU with SMTP (5.61+IDA+UTK-930125/2.8s-UTK)
	id AA23870; Thu, 22 Apr 93 01:45:06 -0400
X-Resent-To: mpi-comm@CS.UTK.EDU ; Thu, 22 Apr 1993 01:45:05 EDT
Errors-To: owner-mpi-comm@CS.UTK.EDU
Received: from gmdzi.gmd.de by CS.UTK.EDU with SMTP (5.61+IDA+UTK-930125/2.8s-UTK)
	id AA23857; Thu, 22 Apr 93 01:45:02 -0400
Received: from f1neuman.gmd.de (f1neuman) by gmdzi.gmd.de with SMTP id AA07638
  (5.65c/IDA-1.4.4 for <mpi-comm@cs.utk.edu>); Thu, 22 Apr 1993 07:44:53 +0200
Received: by f1neuman.gmd.de id AA15494; Thu, 22 Apr 1993 07:44:49 GMT
Date: Thu, 22 Apr 1993 07:44:49 GMT
From: Rolf.Hempel@gmd.de
Message-Id: <9304220744.AA15494@f1neuman.gmd.de>
To: mpi-comm@cs.utk.edu
Subject: Re: Meeting in Europe ?
Cc: gmap10@f1neuman.gmd.de


It's an excellent idea to hold one of the meetings in Europe. If you
need an additional reason to accept it, here it is: in August and
probably also in September it's a lot cooler in Europe (especially in
England) than at Dallas.

Rolf Hempel
From owner-mpi-comm@CS.UTK.EDU  Thu Apr 22 04:53:44 1993
Received: from CS.UTK.EDU by surfer.EPM.ORNL.GOV (5.61/1.34)
	id AA21419; Thu, 22 Apr 93 04:53:44 -0400
Received: from localhost by CS.UTK.EDU with SMTP (5.61+IDA+UTK-930125/2.8s-UTK)
	id AA09250; Thu, 22 Apr 93 04:52:12 -0400
X-Resent-To: mpi-comm@CS.UTK.EDU ; Thu, 22 Apr 1993 04:52:11 EDT
Errors-To: owner-mpi-comm@CS.UTK.EDU
Received: from [129.215.56.21] by CS.UTK.EDU with SMTP (5.61+IDA+UTK-930125/2.8s-UTK)
	id AA09242; Thu, 22 Apr 93 04:52:06 -0400
Date: Thu, 22 Apr 93 09:51:46 BST
Message-Id: <6797.9304220851@subnode.epcc.ed.ac.uk>
From: L J Clarke <lyndon@epcc.ed.ac.uk>
Subject: Re: Meeting in Europe ?
To: James Cownie <jim@meiko.co.uk>, mpi-comm@cs.utk.edu
In-Reply-To: James Cownie's message of Wed, 21 Apr 1993 21:15:48 +0100
Reply-To: lyndon@epcc.ed.ac.uk
Cc: ajgh@ecs.soton.ac.uk

Jim writes:

> 
> At the last MPI meeting we agreed to have a meeting in August (and
> possibly even September as well).
> 
> After this decision had been taken, various people approached me and
> asked whether we could have one of these meetings in Europe. (Not only
> Rolf and Lyndon !).

I solid proposal if ever I heard one indeed! My support can be assumed.

> I have since spoken to Professor Hey, who has kindly offered to host
> the meeting at Southampton and handle local arrangements if we were to
> decide to hold a meeting in Europe.

Southampton would be fine.  We could probably hold one here in Edinburgh
(much prettier town than Southampton, imho :-).  Of course I'd just love
that. 

Best Wishes
Lyndon

         /--------------------------------------------------------\
    e||) | Lyndon J Clarke    Edinburgh Parallel Computing Centre | e||) 
    c||c | Tel: 031 650 5021  Email: lyndon@epcc.edinburgh.ac.uk  | c||c 
         \--------------------------------------------------------/




>From owner-mpi-comm@CS.UTK.EDU Wed May 12 04:35:20 1993
Received: from convex.convex.com by mozart.convex.com (5.64/1.28)
	id AA17462; Wed, 12 May 93 04:35:17 -0500
Received: from CS.UTK.EDU by convex.convex.com (5.64/1.35)
	id AA12711; Wed, 12 May 93 04:36:28 -0500
Received: from localhost by CS.UTK.EDU with SMTP (5.61+IDA+UTK-930125/2.8s-UTK)
	id AA12047; Wed, 12 May 93 05:14:29 -0400
X-Resent-To: mpi-comm@CS.UTK.EDU ; Wed, 12 May 1993 05:14:28 EDT
Errors-To: owner-mpi-comm@CS.UTK.EDU
Received: from THIALFI.CS.CORNELL.EDU by CS.UTK.EDU with SMTP (5.61+IDA+UTK-930125/2.8s-UTK)
	id AA12017; Wed, 12 May 93 05:14:25 -0400
Received: from CLOYD.CS.CORNELL.EDU by thialfi.cs.cornell.edu (5.67/I-1.99D)
	id AA18254; Wed, 12 May 93 05:14:13 -0400
Received: from ELLI.CS.CORNELL.EDU by cloyd.cs.cornell.edu (5.67/I-1.99D)
	id AA14805; Wed, 12 May 93 05:14:13 -0400
From: elster@cs.cornell.edu (Anne C. Elster)
Date: Wed, 12 May 93 05:14:09 -0400
Message-Id: <9305120914.AA19664@elli.cs.cornell.edu>
Received: by elli.cs.cornell.edu (5.67/N-0.13)
	id AA19664; Wed, 12 May 93 05:14:09 -0400
To: mpi-comm@cs.utk.edu
Subject: MPI_LOAD_INFO sugestion
Cc: elster@cs.cornell.edu
Status: R



As much as I hate to expand the number of fuctions in MPI,
I think this function is a MUST the way I see parallel
computing in teh future.

Below is a latex-version of the write-up I will be bringing to
the meeting today. (Yes, yes, I know I should have discussed
this long time ago, but ...). I will bring hard-copies to the meeting,
so that people can start thinking about it.

	Hope you like the idea!


- -------------------------------------------------------------------------------
Anne C. Elster			   |  (607) 254-8653 [off]   255-6236 [FAX]
Xerox Design Research Institute	   |  (607) 272-2986 [home/answ.mach]
Cornell University, 502 Theory Ctr.|
Ithaca, NY 14853		   |   e-mail:  elster@cs.cornell.edu
USA				   |	        na.elster@na-net.ornl.gov


\documentstyle[fullpage,12pt]{article}
\baselineskip=12pt
\oddsidemargin -0.6in

\begin{document}


\setlength{\parskip}{1ex}
% \maketitle

%\pagestyle{empty}


\begin{center}
{\large MPI\_LOAD\_INFO: Implementing load-balanced applications
		on distributed-memory systems}

Anne C. Elster\\
\small Cornell University, Ithaca NY 14853

\date{\today}

\end{center}


\footnotesize

\subsection*{Motivation}

Currently, most parallelized algorithms for distributed memory machines
assume that they will run on a homogeneous set of processors.
(I.e. that each node in the parallel system has approximately
the same computing power and I/O speed.)
The main focus in parallel computing has thus far been to minimize
communication over-head and achieve a load-balance for the
particular algorithm or application.

However, as each computational node a parallel system become more complex, 
their individual processor/node performance characteristics will tend to
deviate more as some nodes perform I/O while others concentrate on
system tasks, etc.
This behavior has so far been addressed through multi-tasking on
large shared-memory systems such as a network of IBM 3090s, however,
no simple, straight-forward solutions exist currently
for the distributed memory cases.


It is, however, this authors belief that load-balancing application
at the ``load-info'' level (i.e. based on each node's dynamic load at
run-time) will become very important in the future -- especially
if there were mechanisms built into MPI that would facilitate
such implementations.

\subsection*{Current options}

The current options for getting load-info read into
a Fortran or C application on Unix-based systems are
not wonderful:


System load is typically from the OS-side done by {\bf reading kernel
memory (-kmem)}. This will, however, usually require {\em setgid}
permissions and grubbing through kernel symbol tables.
This  brute-force approach might fork and exec something with the required
kmem permissions.

Another alternative is to use {\bf rstat} which  does not require
such permission, but unfortunately, is not available on all systems.
Rstat typically gives you statistics from a remote kernel
that should be current disregarding network delay.

The third approach I can think of is to use the output from 
{\bf uptime}. In C, this could possibly be done though
 fscanf on the return value of popen.


\subsection*{MPI suggestion}

Since I fond none of the previous methods very programmer-friendly,
my suggestion  is to add a {\bf MPI\_LOAD\_INFO} that would return
the desired information. In the point-to-point case, this would
be similar to what one could get from $rstat$, whereas in the
collective sense, one could be gathering information on a whole
process group (or nodes within a context?) . I see the latter
as VERY useful. 

Clearly the specific format of the info. to be received via
such an MPI call needs to be discussed.

If the feed-back on this suggestion is positive, this author
would gladly write up a more detailed proposal for such a feature.


Anne C. Elster
Cornell Univ.




\end{document}

>From weeks@mozart.convex.com Wed Jun  9 14:59:20 1993
Return-Path: <weeks@mozart.convex.com>
Received: from ens.ens-lyon.fr by lip.ens-lyon.fr (4.1/SMI-4.1)
	id AA15025; Wed, 9 Jun 93 14:59:18 +0200
Received: from convex.convex.com by ens.ens-lyon.fr (4.1/SMI-4.1)
	id AA12536; Wed, 9 Jun 93 14:58:20 +0200
Received: from mozart.convex.com by convex.convex.com (5.64/1.35)
	id AA01415; Wed, 9 Jun 93 07:57:31 -0500
Received: by mozart.convex.com (5.64/1.28)
	id AA27552; Wed, 9 Jun 93 07:59:43 -0500
Date: Wed, 9 Jun 93 07:59:43 -0500
From: weeks@mozart.convex.com (Dennis Weeks)
Message-Id: <9306091259.AA27552@mozart.convex.com>
To: Jack.Dongarra@lip.ens-lyon.fr
Subject: May 12 mpi mail #4
Status: R

Another one from Steve Otto (initial verbosity deleted so I could print the
LaTeX file --DW):

\documentstyle[twoside,11pt]{report}
%\pagestyle{headings}
%%\markright{ {\em Draft Document of the MPI Standard,\/ \today} }

\marginparwidth 0pt
\oddsidemargin=.25in
\evensidemargin  .25in
\marginparsep 0pt
\topmargin=-.5in
\textwidth=6.0in
\textheight=9.0in
\parindent=2em

%   ----------------------------------------------------------------------
%   mpi-macs.tex  --- man page macros,
%                discuss, missing, mpifunc macros
%
% ----------------------------------------------------------------------
% a couple of commands from Marc Snir, modified S. Otto

\newlength{\discussSpace}
\setlength{\discussSpace}{.7cm}

\newcommand{\discuss}[1]{\vspace{\discussSpace} {\small {\bf Discussion:} #1} \vspace{\discussSpace}
}

\newcommand{\missing}[1]{\vspace{\discussSpace} {\small {\bf Missing:} #1} \vspace{\discussSpace}
}

\newlength{\codeSpace}
\setlength{\codeSpace}{.3cm}

\newcommand{\mpifunc}[1]{\vspace{\codeSpace} {\bf #1} \vspace{\codeSpace} }

% -----------------------------------------------------------------------
%  A few commands to help in writing MPI man pages
%
\def\twoc#1#2{
\begin{list}
{\hbox to95pt{#1\hfil}}
{\setlength{\leftmargin}{120pt}
 \setlength{\labelwidth}{95pt}
 \setlength{\labelsep}{0pt}
 \setlength{\partopsep}{0pt}
 \setlength{\parskip}{0pt}
 \setlength{\topsep}{0pt}
}
\item
{#2}
\end{list}
}
\outer\long\def\onec#1{
\begin{list}
{}
{\setlength{\leftmargin}{25pt}
 \setlength{\labelwidth}{0pt}
 \setlength{\labelsep}{0pt}
 \setlength{\partopsep}{0pt}
 \setlength{\parskip}{0pt}
 \setlength{\topsep}{0pt}
}
\item
{#1}
\end{list}
}
\def\manhead#1{\noindent{\bf{#1}}}

\hyphenation{RE-DIS-TRIB-UT-ABLE sub-script mul-ti-ple}

\begin{document}

\setcounter{page}{1}
\pagenumbering{roman}

\title{ {\em D R A F T} \\ Proposal VIII for contexts and groups}

\author{Mark P. Sears, {\em Sandia National Laboratories}
}

\maketitle
\hfuzz=5pt
%\tableofcontents

%\begin{abstract}
%We don't have an abstract yet.
%\end{abstract}

\setcounter{page}{1}
\pagenumbering{arabic}

\label{sec:context}

%======================================================================%
% BEGIN "Proposal VIII"
%
% written by Mark P. Sears
%            Sandia National Laboratories
%            March 30, 1993
%

% I defined these because the discuss macro wont let me
% use \verb or verbatim environment.

\def\dishdr{\vspace{\discussSpace} \begingroup\setlength{\parindent}{0pt}
\setlength{\parskip}{0pt}\leftskip=.6cm \small {\bf Discussion: }}

\def\disend{\par\vspace{\discussSpace} \endgroup\par }

% end of macro definitions

\chapter{Contexts and Groups -- Proposal VIII}
\begin{center}
{Mark P. Sears, Sandia National Laboratories}
\end{center}

\section{Introduction and motivation.}

\dishdr
March 30 draft -- handed out at MPI meeting

April 13 draft -- modifications to context allocation scheme, added
         discussion of limitations, interaction with pt2pt draft,
         some reorganization.

May 11 draft -- added getgroupcontext function which allows the
         allocation of a dynamic context within a group.

On reading this proposal, anything in the discussion sections is
considered to be commentary, is open to debate and is probably
not part of the proposal as it would go into the MPI document as a whole.
\disend

The MPI committee has determined that message passing common practice
needs to be extended to satisfy two objectives. The first of these is
to add facilities which allow development and use of independent software
modules (libraries and other third party software). The primary need
here is seen to be enabling the establishment of independent communication
environment, or context, for independent software components.
 The second objective is to
add capabilities, especially for collective communications, which allow
the software developer to use subsets, or groups, of the processes in the
parallel task in a convenient way. The purpose of this chapter is to
define these concepts more precisely. The development of these ideas
follows primarily from the principle that context and group concepts should
be as orthogonal as possible, in order to make them easy to understand
and implement.

The remainder of this chapter defines the terms {\bf process},
 {\bf parallel task}, {\bf process address},  {\bf context},
 {\bf group }, and {\bf topology}  as they are used in this document.
In addition this chapter describes the MPI functions needed to assign,
create, and manipulate contexts and groups, and describes the overall syntax
needed to define point to point and collective communications. Later
chapters in the document contain precise descriptions of 
point to point and collective communication functions syntax and
semantics.

In the following, a {\bf global quantity}
 is one which is defined and can be used
in the same way on every process of the parallel task. For example, it
can be sent as part of a message from one process to another and used
on the second process in the same way as on the first. A {\bf local quantity}
is defined only on the process which creates it and cannot be sent
(in a meaningful way) to another process. Process addresses, tag values,
and context values are global quantitites; groups are local quantities.
Similarly a {\bf global call} or {\bf group call} is a function call
executed (loosely) synchronously on all processes or all processes
which are members of a group. A {\bf local call} is a function call
executed on a single process independent of any execution on other
processes.

\dishdr
This proposal differs from the other context-group proposals in that
context and group are held to be orthogonal and distinct entities. It
is closest in flavor to Proposal III, where context is a low level
concept, but here the definition of group is unrelated to the definition
of context. In this proposal, groups have no context or tags associated
with them, default or otherwise.

\begin{enumerate}

\item  The purpose of contexts is to promote software modularity by
allowing the construction of independent tag spaces. A context is an
integer-valued extension to the tag field which must match exactly between
sender and receiver of point-to-point communications.

\item In this proposal, contexts are global and there is no concept of a
process ``belonging'' to a context. Contexts are also anticipated to
be a scarce resource. Context allocation is a rare event, typically limited
to program startup.

\item The purpose of groups is to provide tools for management of subsets
of processes in a parallel task. A group is defined abstractly as an
ordered set of unique integers (the elements). Group as a type is a pointer
to an object which defines the mapping between rank and the elements
of the group, and is a locally defined opaque type. Note that a group
can be considered as a ``collection of processes'' only insofar as the
elements of the group are process addresses.

\item As defined in this proposal, groups contain no context or tag
information, nor is a facility for caching user defined information
provided. This implies that context and tag must be specified in addition
to group for collective communication functions.
This accords with the goal of MPI as specifying a lower
level implementation that can be used to create different kinds of higher level
implementations.

\end{enumerate}

This proposal is distinguished from proposal III by a much more
complete orthogonalization of the concepts of group and context,
as well as specifying group at a lower, more fundamental level than
proposal III. The advantages of this lower level definition are
primarily ease of implementation and understanding and 
additional flexibility in creating higher level functionality. In addition,
because groups use no context or tag resources, they are limited only
by available memory and CPU.

\disend

\section{Parallel task and process models.}

An MPI program or {\bf parallel task} consists of a set of {\bf
processes}, each executing independent code in an independent address
space. The model of a process is similar to that of UNIX.
A process can be single threaded or multithreaded, and
in a multithreaded environment, MPI makes no distinction between the
several threads of a process.
Messages can be sent and received between
processes, but there is no mechanism to specify the receiving
thread or obtain the sending thread of a message.

The set of processes in a parallel task is fixed. Each process is
addressed by its rank in the task, which is fixed and assigned in an
implementation defined way when the parallel task is created. The
assignment of processes to processors is also implementation defined, and
MPI defines a method (described below) to return a description of
the process assignment, or {\bf global topology}.

The process address of a process is an integer defined globally
within the parallel task, which can be sent in messages to any
other process and used with the same meaning on any other process.

In addition to the processes in a parallel task, an MPI implementation
may also allow communication with a {\bf host process}, if it exists.
The host process
is not considered part of the parallel task, but point to point
communications with it are allowed. The host process may send to or
receive messages from any process in the parallel task. The process
address of the host process is an integer defined globally within
the parallel task, but is not a valid rank in the parallel task.
A routine, \verb+MPI_gethost+, returns the host address if available,
or returns the constant \verb+MPI_NOHOST+ if there is no host process.
An MPI implementation may support a limited subset of point-to-point
communications with a host process.

The creation and termination of processes and parallel tasks is not
defined within MPI. 

\dishdr
This section does not differ greatly from other proposals.
This section would modify section 1.3 of the draft Point to Point communication
document, mostly in regard to the question of how processes are
addressed.

I have expanded on the host process stuff a little from the discussion
at the last meeting. The committee agreed (I think) to include the
possibility of a host process.

I feel it is unfortunate but necessary to postpone any discussion of
communication between parallel tasks to MPI 2.0. Some of the possible
properties that such communication might have are:

\begin{itemize}
\item A process may belong to at most one parallel task.
\item Process addressing must be extended to allow for the inclusion
 of a parallel task identifier.
\item Inter-task communication requires a session layer which intra-task
communication does not.
\end{itemize}

but all this remains open to debate.

% i want to think about this a little:
%
% Inter-task communication can be added to the above proposal as follows.
% Each parallel task has a system-wide unique identifier. The definition
% of a process address is widened to include both a task id and the process
% rank within the task. In other words process-address = (task-id, rank).
% The result must be encodable in an integer. No changes would be made
% to the syntax or semantics of point-to-point communications, except that
%
%

The concept of dynamic parallel tasks, tasks where the number of processes
belonging to the task changes over time, is also full of difficulties
and should also be postponed to MPI 2.0, along with any discussion of the
means by which parallel tasks are created or destroyed. Note that it would
be quite useful to define these things. 

\disend

\section{Contexts.}

The purpose of contexts is to promote software modularity by
allowing the construction of independent tag spaces. A context is an
integer-valued extension to the tag field which must match exactly between
sender and receiver of point-to-point communications. By specifying 
a unique context in addition to tag and other features of a message,
the communication between sender and receiver is made independent of
other communications which use different contexts. In the following,
context values are assigned or allocated by various software components,
but they are not pushed or popped during program execution. This more
static model avoids the state associated with such a stack mechanism.
Contexts as described here do not provide a mechanism
for a software component to protect contexts that it has allocated
or assigned from misuse. The only protection is that software components
which use different contexts are free to use tags within those contexts
with a guarantee of no interference.

A {\bf context} or {\bf context value} is an integer in a range
\verb+[0..MPI_MAXCONTEXT]+ which is part of the message envelope.
The sender and receiver of the message must specify exactly matching context
values; no wildcard filtering on the context part of a message envelope is
allowed. Filtering of messages based on sender address and/or tag
is discussed further in the section on point to point communications.

The number of available context values, \verb+MPI_NUMCONTEXTS+, is an
implementation-defined quantity. This proposal recommends a minimum
number of 256, although implementations allowing a greater or lesser
number of context values are allowed.

\dishdr

There has been considerable discussion on the network about the
number of available context values. One proposal (by Rik Littlefield) is
that MPI should go ahead and specify that context and tag are both
32 bit qtys and that the implementor should provide for the possibility of
contexts and tags anywhere in this space. I think these limits
are too generous. The other side (e.g. Peter
Rigsbee) is to not specify any hard limits and let the marketplace decide.
I don't quite agree with this either, since other standards (e.g. Fortran
77) {\it do} specify limits for some things.

Perhaps the committee could decide that there is a lower limit (say
256, my original estimate of 16 was seen by many as too small and I
have altered it (see above)) for compliance,
and a recommended number of $2^{16}$ or $2^{32}$.
 Then we could identify compliant
implementations (satisfies the lower limit) and strongly compliant
implementations (satisfies the recommended limit). I propose that
this point be left up for grabs and discussed further by the environmental
subcommittee.

The above statement specifies that there exists an implementation defined
limit on the size of the context space. But it does not specify that there
is a limit on the number of contexts in the space that can be used at any
one time. Should we specify the existence of such a limit? I don't think
so.

\disend

There exists a predefined and allocated context value,
\verb+MPI_DEFAULTCONTEXT+ which does not need to be allocated or opened
and cannot be freed or closed. This context value is intended for
initialization purposes and is free for use by all software components.

Context values may either be assigned statically or allocated dynamically,
and so we refer to them as static contexts and dynamic contexts. Since
context values are integers, it is not appropriate to speak of contexts
being created or destroyed. 

 Static
context values are chosen by the programmer and should lie in the
range \verb+[0, MPI_STATICCONTEXTLIMIT]+, where \verb+MPI_STATICCONTEXTLIMIT+
is an implementation-defined constant. Dynamic context values will be
allocated outside this range, within the limit \verb+MPI_CONTEXTLIMIT+
mentioned previously.

\dishdr
A problem could arise when a static context value is used which would normally
be allocated by the dynamic allocation routines. Here we only specify
an administrative solution, because that might be the intended program
behavior.  Generally, we adhere to the notion of allowing
any reasonable use of context values rather than specifing strong limitations.
\disend

Static context values must be opened before use and can be closed when
no longer needed. The routine
\begin{verbatim}
    void MPI_opencontext(int context)
\end{verbatim}
is a local operation that specifies that the context can be used in sending
 and  receiving messages.

The routine
\begin{verbatim}
    void MPI_closecontext(int context)
\end{verbatim}
is a local operation that specifies that the context is no longer needed
and no further messages will be sent or received using the context value.

Dynamic context values can be allocated with the routine
\begin{verbatim}
    int MPI_getcontext()
\end{verbatim}
which returns a context value and
which must be called synchronously by all processes in the parallel
task before messages can be sent or received with the context.

Dynamic context values can be freed with the routine
\begin{verbatim}
    void MPI_freecontext(int context-value)
\end{verbatim}
which is a local operation and which signals to MPI that the
given context value will no longer be used.

In addition, dynamic context values can be allocated within a group
with the routine
\begin{verbatim}
    int MPI_getgroupcontext(Group g)
\end{verbatim}
This routine must be called synchronously by all processes which are
members of the group. It will allocate a context value which has not
been previously allocated on any of the processes in the group, so the
context value is guaranteed to be unique within the group.
Note that if there are two groups which do not intersect then the
same context value may be allocated on each. Note also that it is
possible for a context value to be allocated in a group and sent to
a process not in the group which then opens the context and uses it for
communications. There is no guarantee of uniqueness on the second
process. Finally, there is no coupling of the context with the
group. It is not possible to get the group that was used to allocate
the context, nor is the context associated with the group in any way.

\dishdr
The getgroupcontext function is a collective communication operation. Here
it has been specified without reference to a predecessor context or a set
of tags, which means that it must be implemented using context and
tags internal to the implementation. The semantics needs to be refined
to handle the possibility of multithreading (programmer must mutex other
threads).

Both the getcontext and getgroupcontext functions give the user a lot of
flexibility and a lot of room to hang himself or herself.

\disend

\dishdr
The original version of this proposal only allowed for dynamic global
context values. After discussion, I have modified the proposal to
allow for statically and dynamically allocated contexts, as well as
contexts which are allocated only within a group.

Internally, MPI implementations may need to set up private data structures
or other resources (queues, buffers, etc.) in order to send and receive
messages with a particular context value. The \verb+MPI_getcontext()+ routine
is the appropriate entry point for such setup to occur. Some implementations
will simply set up resources for all possible context values at program
initiation.

% Deleted:
% Obviously, there are many possible schemes for context allocation and
%  deallocation. The scheme proposed here avoids the need and overhead 
% of a complex server. Another option is to avoid the allocation problem
% altogether, have only static allocation
% (as for Fortran unit numbers or TCP/IP ports), and have a routine
% \verb+MPI_opencontext(int context-value)+ which initializes use of the
% context.
% Fancier context allocation could be built on top of such a proposal.

It may be necessary for some MPI implementations to preallocate other
context values for internal use. Such context values would not be accessible
by user code.

\disend

\section{Groups.}

The purpose of groups is to provide tools for management of subsets
of processes in a parallel task. A group is defined abstractly as an
ordered set of unique integers (the elements); this abstract definition
allows groups to be constructed in many different ways and allows the
definition of a group as an explicit list (e.g. 7,4,13) or a computational
rule (e.g. processes with odd addresses). Groups as program objects may
be defined by MPI or may be developed as third party software.

A {\bf group} is a one-to-one mapping from the integers
$(0, 1, ..., N-1)$ to another set of integers, the {\bf elements} of the group.
The number of elements $N$ is the {\bf order} of the group. The {\bf range}
of the group is an upper limit on the size of any element. Note that
a group is not an ``array of integers'', although that is one possible
implementation. 

An ordered collection of processes is said to be a group if each element of
the group defines a process address, or rank in the parallel task. A process
belongs to a group if its address is an element of the group.

In the following, the opaque type {\tt MPIGroup} is intended to be thought of
as a pointer to one of many possible group structures. This {\bf group identifier}
is local to a process and may not be legitimately passed from one process
to another.

\dishdr
It would not be too difficult to define functions \verb+MPI_getgroupdsc()+
and \linebreak[4]
\verb+MPI_bldgroupfromdsc()+ which would compute an ASCII description of a 
group or build a group from its ASCII description. Such functions would
ease the problem of sending groups in messages.

\disend

Groups are defined only by construction in a process, so the
correct method of passing a group from one process to another is to pass
the information needed to construct it. Group construction and destruction
is therefore local to a process, and is independent of whether the process
belongs to the group or not.

There may be many classes of groups, some defined by MPI and some defined
as user extensions. Any group class must define the following methods:
\begin{verbatim}
    int MPI_grouporder(MPIGroup g)               -- compute order of a group.
    int MPI_grouprange(MPIGroup g)               -- compute range of a group.
    int MPI_groupelement(MPIGroup g, int rank)   -- compute element given rank.
    int MPI_grouprank(MPIGroup g, int element)   -- compute rank of element.
    int MPI_groupiselement(MPIGroup g, int element)  -- membership predicate.
    MPIGroup MPI_copygroup(MPIGroup g)           -- make a copy of a group.
    void MPI_freegroup(MPIGroup g)               -- group destructor.
\end{verbatim}

\dishdr The public definition of a group would contain a class member
defining all of these operations, so, for example, \verb+MPI_grouporder+ would
simply execute the function \verb+group->class->order+. In order for the group
concept to be user extensible, some common definition of the basic
group object and class object needs to be established. This definition is
properly done by the binding committee. Thus, although {\bf MPIGroup} is an opaque
type it is not entirely hidden -- a sophisticated user can get at it and
create new group types.

\disend

In addition, each class of groups must define a group constructor. The
constructor takes as parameters the information needed to construct the
group and returns the opaque group identifier.
>From the point of view of this proposal, group construction and use
are inexpensive operations, limited only by memory and CPU resources.

\dishdr For example, let us define a simple class of groups, which we
call {\bf linear} groups. For such a group, we define the mapping from
rank to element to be the function $(start + delta * rank)$, so the
parameters needed to create the group are the order and the constants
$start, delta$. The group constructor would then be defined as
\begin{verbatim}
      MPIGroup MPI_makelineargroup(int order, int start, int delta).
\end{verbatim}

Another simple class would be a {\bf list} group, for which the
construction parameters are the order of the group and a list of the
elements. The constructor is
\begin{verbatim}
      MPIGroup MPI_makelistgroup(int order, int *elements).
\end{verbatim}

Note that in the first case, there is probably no need for any
communication to create the group. In the second case, the list
might have to be distributed using communications, but the group
construction is purely local to each process.

\disend

\section{Using groups in point-to-point communications.}

Groups can be used to simplify point-to-point communication. A process
in a group can be defined either by its process address (equivalent to
the rank in the task) or by its rank in the group. A typical call to
send a message using a (group,rank) address might have the form
\begin{verbatim}
  MPI_send(buffer, length, MPI_groupelement(group, rank), tag, context)
\end{verbatim}

Note that in order for a process to send a message to a
process in another group using the second process' group rank, it must
construct a local copy of the group.

Since a group defines an order for its elements, it is easy to
compute the preceding and following processes of a particular process in
a group. The
preceding and following processes (elements) of the current process
are given by
\begin{verbatim}
   my_rank = MPI_grouprank(group, my_pid)  
   pid_precede = MPI_groupelement(group, my_rank-1)
   pid_follow = MPI_groupelement(group, my_rank+1).
\end{verbatim}
modulo boundary conditions.

\dishdr Two and three dimensional generalizations are straightforward but
require additional functions specific to particular types of groups
(e.g. Cartesian groups).

\disend

\section{Groups and collective communication.}

Groups are the primary method of organizing collective communication
operations. All collective communication operations have the form
\begin{verbatim}
   void MPI_xxx(group, context, ...)
\end{verbatim}
Such functions must be called by all of the processes in the group
in order to complete successfully.

\dishdr 

Previously I proposed that collective communication routines be passed
both a context and one or more tags. But a much cleaner solution is to
pass the routine just a context under the assumption that the routine
may make any use of tags within the context that it likes.

Groups may contain private (internal to MPI) information about
methods and data to accelerate common collective communication operations.
For example, a group implementation may include a private copy of a
spanning tree to be used for fast broadcasting. Such information is
implementation dependent and not normally accessible to a user. The
definition of a group should contain a hook for the collective comm routines
to hang such data.

\disend

\section{Topology.}

There are several meanings for the term topology as used in MPI. The first
meaning is associated with the global topology or assignment of processes
to processors in a particular network. Such a topology might be classified
as a hypercube, mesh, or general network topology. Information about the
global topology is returned by the routine
\begin{verbatim}
  char *MPI_globaltopology()
\end{verbatim}
which returns a string containing a description of the global topology. The
form of this string is generally {\it topology-class parameter ...}.

\dishdr For example, various implementations might return strings like
\begin{verbatim}
       N 564         -- a random (Ethernet) network with 564 processes.
       H 5           -- a 5 dimensional hypercube.
       R 2 16 13     -- a two dimensional mesh, 16 by 13.
\end{verbatim}

\disend

The second type of topology is that internal to a group.
Since, in this proposal, groups are ordered sets and therefore have
an implicitly defined  (one dimensional) topology, there is no need
for independent topology routines.
A different ordering can be selected by building a different group. For
example, to select a Gray ordering instead of a natural ordering (useful
on a hypercube for some applications), one would build a permutation group
implementing the Gray ordering. Alternatively, one could impose a Gray ordering
on an existing group by a group composition operation.

Third, we define a {\bf virtual topology} as a method of referring to
elements of a group other than by straightforward rank. For example,
we might want to think of a group as a rectangle or higher order
Cartesian object, and reference elements by x-rank, y-rank, etc. Another
example might be a tree virtual topology, where we would refer to
elements in terms of parent, sibling and child. Virtual topologies
can be implemented by layering on top of MPI.

\section{Contexts, groups, and third party software.}

>From the point of view of this proposal, there are two kinds of third party
or library software, i.e. software written to use MPI but intended for use
in turn by other
applications. The first type is similar to the MPI collective communication
operations as described above. This type uses the contexts and tag space
provided by whatever software calls it. The second type, typically associated
with much more complex functions, establishes and manages its own context
and tag spaces. MPI must be careful to support both possibilities.

Library software of the first kind, including MPI collective communications,
might benefit from the specification of some sort of ``tag manager'' so that
only context would need to be provided. This proposal does not attempt to
answer this question.

\section{Cache facility.}

This proposal does not define a cache facility for adding information to
groups or contexts. Such a facility, although it has attractive features,
is more appropriately layered on top of MPI.

\section{Modifications to other documents.}

The discussions in the current point-to-point document (sections 1.3 and\
1.4 of the May 9 draft would be deleted).

All of the collective communication routines would be modified to
conform to the guideline that a collective communication routine is
passed a group and context value separately.

\section{Subsets of MPI.}

Because this proposal maintains a strong orthogonality between the
context and group concepts, it is easy to eliminate all collective
communication operations (indeed all group operations) from MPI in
order to generate a useful subset. The mechanisms for managing context
are simple and do not require a server concept.

\end{document}

>From weeks@mozart.convex.com Wed Jun  9 15:02:26 1993
Return-Path: <weeks@mozart.convex.com>
Received: from ens.ens-lyon.fr by lip.ens-lyon.fr (4.1/SMI-4.1)
	id AA15054; Wed, 9 Jun 93 15:02:23 +0200
Received: from convex.convex.com by ens.ens-lyon.fr (4.1/SMI-4.1)
	id AA12599; Wed, 9 Jun 93 15:01:00 +0200
Received: from mozart.convex.com by convex.convex.com (5.64/1.35)
	id AA01533; Wed, 9 Jun 93 08:00:15 -0500
Received: by mozart.convex.com (5.64/1.28)
	id AA27965; Wed, 9 Jun 93 08:02:23 -0500
Date: Wed, 9 Jun 93 08:02:23 -0500
From: weeks@mozart.convex.com (Dennis Weeks)
Message-Id: <9306091302.AA27965@mozart.convex.com>
To: Jack.Dongarra@lip.ens-lyon.fr
Subject: May 12 mpi mail #5
Status: R

Another LaTeX source with initial verbosity deleted ...

\documentstyle[twoside]{report}
\pagestyle{headings}
%\markright{ {\em Draft Document of the MPI Standard,\/ \today} }
\marginparwidth 0pt
\oddsidemargin=.25in
\evensidemargin  .25in
\marginparsep 0pt
\topmargin=-.5in
\textwidth=6.0in
\textheight=9.0in
\parindent=2em

%   ----------------------------------------------------------------------
%   mpi-macs.tex  --- man page macros,
%                discuss, missing, mpifunc macros
%
% ----------------------------------------------------------------------
% a couple of commands from Marc Snir, modified S. Otto

\newlength{\discussSpace}
\setlength{\discussSpace}{.7cm}

\newcommand{\discuss}[1]{\vspace{\discussSpace}
{\small {\bf Discussion:} #1} \vspace{\discussSpace}
}

\newcommand{\missing}[1]{\vspace{\discussSpace}
{\small {\bf Missing:} #1} \vspace{\discussSpace}
}

\newcommand{\implement}[1]{\vspace{\discussSpace}
{\small {\bf Implementation note:} #1} \vspace{\discussSpace} }

\newlength{\codeSpace}
\setlength{\codeSpace}{.3cm}

\newcommand{\mpifunc}[1]{\vspace{\codeSpace} {\bf #1} \vspace{\codeSpace} }

% -----------------------------------------------------------------------
%  A few commands to help in writing MPI man pages
%
\def\twoc#1#2{
\begin{list}
{\hbox to95pt{#1\hfil}}
{\setlength{\leftmargin}{120pt}
 \setlength{\labelwidth}{95pt}
 \setlength{\labelsep}{0pt}
 \setlength{\partopsep}{0pt}
 \setlength{\parskip}{0pt}
 \setlength{\topsep}{0pt}
}
\item
{#2}
\end{list}
}
\outer\long\def\onec#1{
\begin{list}
{}
{\setlength{\leftmargin}{25pt}
 \setlength{\labelwidth}{0pt}
 \setlength{\labelsep}{0pt}
 \setlength{\partopsep}{0pt}
 \setlength{\parskip}{0pt}
 \setlength{\topsep}{0pt}
}
\item
{#1}
\end{list}
}
\def\manhead#1{\noindent{\bf{#1}}}


\hyphenation{RE-DIS-TRIB-UT-ABLE sub-script mul-ti-ple}

\begin{document}

\setcounter{page}{1}
\pagenumbering{roman}

\title{ {\em D R A F T} \\ Document for a Standard Message-Passing Interface}

\author{Scott Berryman, {\em Yale Univ} \\
James Cownie, {\em Meiko Ltd} \\
Jack Dongarra, {\em Univ. of Tennessee and ORNL} \\
Al Geist, {\em ORNL} \\
Bill Gropp, {\em ANL} \\
Rolf Hempel, {\em GMD} \\
Bob Knighten, {\em Intel} \\
Rusty Lusk, {\em ANL} \\
Steve Otto, {\em Oregon Graduate Inst} \\
Tony Skjellum, {\em Missisippi State Univ} \\
Marc Snir, {\em IBM T. J. Watson} \\
David Walker, {\em ORNL} \\
Steve Zenith, {\em Kuck \& Associates}    }

\date{May 9, 1993 \\
This work was supported by ARPA and NSF under contract number \#\#\#,
by the National Science Foundation Science and
Technology Center Cooperative Agreement No. CCR-8809615.
}

\maketitle
\hfuzz=5pt
%\tableofcontents

%\begin{abstract}
%We don't have an abstract yet.
%\end{abstract}

\setcounter{page}{1}
\pagenumbering{arabic}

\chapter{Point to Point Communication}
\label{sec:pt2pt}

\begin{center}
Marc Snir \\ William Gropp and Ewing Lusk
\end{center}

\section{Introduction}

This section is a draft of the current proposal for point-to-point
communication.  It does not yet include a description of the Fortran 77
and C bindings.

I have tried to indicate, wherever appropriate, gaps and unresolved issues,
using small type.

\discuss{
The following sections of the introduction contain general information
on the design of MPI procedures.   The material should be moved to a general
introduction for the entire document.
The actual binding of these objects in Fortran and C will be discussed in
the language binding subcommittee.

}

\section{Data Types}

\subsection{Handle}

MPI procedures use at various places {\em handles}.  Handles
are used to access opaque objects.  Such object
can be created, updated and destroyed only by by calling suitable MPI
procedures, and providing the handle as parameter. Opaque
objects hide from the user the internal representation used for
various
MPI objects, thus allowing to have similar calls in C and Fortran, allowing to
overcome problems with the typing rules in these languages, and allowing for
future extension of their functionality.
The mechanism for opaque objects used here loosely follows the POSIX Fortran
binding standard.

An opaque object can be {\em persistent} or {\em ephemeral}.  A persistent
object persists until destroyed by an explicit operation.  An ephemeral object
is good for a single use; thus an ephemeral object associated with a
communication operation disappears once this operation is completed (or once
this object is not needed anymore for the completion of the operation).


Opaque object are created by calls that are specific to each object type.  They
are destroyed by a call to {\tt MPI\_FREE}.  Additional MPI functions are
available to access and update specific opaque objects.

\mpifunc{MPI\_FREE(handle)}
\begin{description}
\item[IN handle] handle to object
\end{description}

Mark the handle for destruction.  The object can destroyed as soon as there
there is no pending operation that is using this object.   This is equivalent to
changing the persistence of the handle from {\tt persistent} to {\tt ephemeral}.
For example, if a communication object is freed, after the communication started
but before it completed, then the pending operation is not affected; one can use
the handle in calls to {\tt MPI\_WAIT} or {\tt MPI\_STATUS}.  However, once the
operation completes, it is erroneous to reuse the freed handle for a new
communication.

\discuss{

An alternative design point was discussed, whereby it is the user responsibility
to free a handle only if there are no pending operations on this handle.
The current design was deemed more elegant.  Note
that it is not necessary to destroy the handle as soon as it is not needed
anymore.  A valid implementation may just mark freed handles and garbage collect
them periodically.

On the other hand, some objects, such as buffer descriptor objects,
can be used by several distinct concurrent
communication operations.  Thus, to find out whether such object can
be freed, one would need a reference count of pending operations.  This
complication was not observed at our last meeting, and may be a
good argument to reconsider the current definition of {\tt MPI\_FREE}.

We do not have yet a mechanism to control where from storage is allocated for
opaque objects.   Some believe it is desirable to allow the user to control
this allocation.

I now have a generic {\tt MPI\_FREE} function for all kinds of opaque objects.
Any reason to have specialized functions for each kind of object, as for {\tt
CREATE}?


}


\mpifunc{MPI\_ASSOCIATED(handle, type)} \begin{description}
\item[IN handle] handle to object
\item[OUT type] state
\end{description}

Returns the type of the object the handle is currently associated with, if
such exists.  Returns the special type {\tt MPI\_NULL} if the handle is
not currently associated with any object.

MPI may provide predefined opaque objects and predefined, static handles to
these objects.  Such objects may not be destroyed.

\subsection{Array of handles}
An MPI call may need a parameter that is an {\em array of handles}.
The array-of-handles object is not self-delimiting; it does not carry
information on the number of entries in the array.  This information has to be
provided by an additional {\tt len} parameter, whenever a list-of-handles
parameter is used.

\discuss{

The reason for not having self-delimiting arrays is that records are not
first-class citizens in Fortran and that having an array where one entry encodes
length, whereas the other entries encode handles was deemed to be too
error-prone.   This line of argumentation really implies that we do not view
array-of-handles as an opaque object, and that we expect the user to build these
objects explicitly, not via MPI calls.   The alternative is for array-of-handles
to be an opaque object, manipulated via s set of MPI calls.

}


\subsection{State}

MPI procedures use at various places arguments with {\em state} types.  The
values of such data type are all identified by names, and no operation is
defined on them. For example, the {\tt MPI\_APPEND} routine has a
state type parameter with values {\tt MPI\_INT, MPI\_REAL,} etc.

\subsection{Named constants}

MPI procedures sometimes assign a special meaning to a special value of a
basic type parameter; e.g. {\tt tag} is an integer valued parameter of
point-to-point communication operations, with a special {\tt DONTCARE} value.
Such parameters will have a range of regular values, which is a proper
subrange
of the range of values of the corresponding basic type; special values (such as
DONTCARE) will be outside the regular range.   The range of regular values can
be queried, and sometimes set, using environment inquiry or environment setting
functions (Section~\ref{sec:inquiry}).

\discuss{

Need to agree on a language mechanism for named constants.

Implementers should detect, whenever possible,
illegal uses of ``special values''.  Thus,
the use of the {\tt DONTCARE} value to tag a message sent will be flagged as
an error.

}

\subsection{Choice}

MPI functions sometimes use parameters with a {\em choice} (or union) data
type.  I.e., distinct calls to the same routine may pass by reference actual
parameters of different types. The mechanism for providing such
parameters will differ from language to language.

\discuss{

The Fortran 77 standard specifies that the type of actual arguments need to
agree with the type of dummy arguments; no construct equivalent to C pointers is
available.  Thus, it would seem that there is no standard conforming mechanism
to support choice parameters.
However, most Fortran compiler either don't check type
consistency of calls to external routines, or support a special mechanism to
link foreign (e.g., C) routines.  I suggest that we accept this nonconformity
with Fortran 77 standard.  I.e., we accept that the same routine may be passed
an actual parameter of a different type at distinct calls.

Generic routines can be used in Fortran 90 to provide a standard
conforming solution.  This solution will be consistent with our nonstandard
conforming Fortran 77 solution.

}



\section{Processes}

\discuss{This material belongs to an introduction or environment section}

An MPI program is executed by several autonomous processes that each execute
their own code, in a MIMD style. The codes executed by each process need not be
identical.  The processes communicate via calls to MPI communication primitives.
Typically, each processor executes in its own address space, although
shared-memory implementations of MPI are possible.
This document specifies the behavior of a parallel program assuming that only
MPI calls are used for communication.  The interaction of an MPI program with
other possible means of communication (e.g., shared memory) is not specified.
In particular, it is assumed that message buffers at distinct
processors are disjoint.

MPI does not specify the execution model for each process.  A process can be
sequential, or can be multithreaded, with threads possibly executing
concurrently.  Care has been taken to make MPI ``thread-safe'', by avoiding the
use of implicit global states.

The initial allocation of processes to an MPI computation and their
binding to physical processors is not specified by the
program itself.  It is expected that vendors will provide mechanisms to do so
either at load time or at run time.   Such mechanisms will allow the
specification of the initial number of required processes, the
code to be executed by each initial process, and the allocation of processes to
processors.  Also, the current proposal does not provide for dynamic creation or
deletion of processes during program execution (the total number of processes
is fixed),  although it is intended to be
consistent with such extension.   Finally, the current proposal does not specify
a naming scheme for processes.  We propose to always identify processes
according to their relative rank in a context (group), so that, effectively,
processes are identified by consecutive integers.


\subsection{Error Handling}

\discuss{ Material of this section should be moved to a general introduction
section.  This material has not yet been approved by MPIF}

MPI provides the user with reliable message transmission:
A message sent is always received
correctly, and the user does not need to check for transmission errors,
time-outs, or other error conditions.  In
other words, MPI does not provide mechanisms for
dealing with failures in the
communication system.
Where the MPI implementation is built on an unreliable underlying
mechanism, then it is the job of the implementer of the MPI subsystem
to insulate the user from this unreliability, or to reflect unrecoverable
errors as global
program failures.  Similarly MPI itself provides no mechanisms for
handling node failures.

Of course, MPI programs may still be erroneous.  A {\bf program error} can
occur when an MPI call is called with an incorrect parameter (non-existing
destination in a send operation, buffer too small in a receive operation, etc.)
This type of error would occur in any implementation.
In addition, a {\bf resource error} may occur when a program exceeds the amount
of available system resources (number of pending messages, system buffers,
etc.).   The occurrence of this type of error depends on the amount of
available resources in the system and the resource allocation mechanism used;
this may differ from system to system.   The recommended implementation profile
provides several mechanisms to alleviate the portability problem this
represents.  One can also write {\bf safe} programs, that are not subject to
resource errors.

All MPI procedure calls return an error parameter that indicates successful
completion of the operation, or the error condition that occurred, otherwise.

The recommended implementation profile in a POSIX environment is for any MPI
routine that encounters a recoverable error to generate an {\em MPI
error signal}, using a special signal value.  The default handler for
this signal terminates the execution of all involved processes, with a suitable
error message being returned to the user.  However, the user can provide his or
her own signal handling routine.  In particular, the user can
specify a ``noop'' signal handler, thus relegating all error handling to the
user code, using the error parameters returned by the MPI calls.

MPI calls may initiate operations that continue
asynchronously after the call returned.  Thus, the operation may return with a
code indicating successful completion, yet later cause an error exception to be
raised.  If there is a subsequent call that relates to the same operation (e.g.,
a call that verifies that an asynchronous operation has completed) then the
error parameter associated with this call will be used to indicate the nature
of the error.  In a few cases, the error may occur after all calls that
relate to the operation have completed, so that no error parameter can be used
to indicate the nature of the error (e.g., an error in
a send with the ready mode).  In such cases, an error will be undetected, if
the user disabled the MPI error signal.

\discuss{
The alternative choice is to have fatal and non-fatal signals.

One might want different signals for different modules.

The details of such proposal need be elaborated in an appropriate
``profile'' subcommittee.
}

\section{Messages}

A message consists of an {\em envelope} and {\em data}.

\subsection{Data}

The data part of a message consists of a sequence of values, each of a basic
datatype in the host language.  Thus, in Fortran 77, a message consists of
a sequence of values that are each of type {\tt INTEGER}, {\tt REAL}, {\tt
DOUBLE PRECISION}, {\tt COMPLEX}, {\tt DOUBLE PRECISION COMPLEX}, {\tt LOGICAL},
or (length 1) {\tt CHARACTER}.
A message may also contain a value of type {\tt BYTE}, which consists of 8
binary digits.   A byte is different from a character.
Different machines may
have different representations for the same character, or may use more than one byte
to represent a character.  On the other hand, a byte has the same binary value
on any machine.
A message may mix values of different types.

\missing{

Need to agree on the C types (including handling of signed/unsigned),
and on Fortran 90 types (including handling of kinds).

}

\subsection{Envelope}
\label{subsec:envelope}

The following information is associated with each message:
\begin{description}
\item[source] The rank of the sending process
\item[destination] The rank of the receiving process
\item[tag] User defined
\item[context]  handle
\end{description}

The range of valid values for the {\bf
source} and {\bf destination} fields is {\tt 0 ... n-1}, where
{\tt n} is the number of processes in the specified context.
{\tt source = destination} is allowed:  a process can send a message
to itself.

The ranges
of valid values for {\tt tag} is implementation dependent, and
can be found by calling a suitable query function, as described in
Section~\ref{sec:inquiry}.

The {\tt tag} field can be arbitrarily set by the application, and can be used
to distinguish different messages.


{\tt Context} should be a context shared by both
source and destination.


The actual mechanism used to associate an envelope with a message
is implementation dependent; some of the information (e.g., {\bf
sender} or {\bf receiver}) may be implicit,  and need not be
explicitly carried by a message.

\section{Communication Buffers}
\label{subsec:buffers}

The basic point to point communication operations are {\bf send} and {\bf
receive}. A {\bf send} operation creates a message; the message data is
taken from the {\bf send buffer}.  A {\bf receive} operation consumes a
message; the message data is put into the {\bf receive buffer}.  The
specification of send or receive buffers uses the same syntax.

\subsection{Communication buffer components}

A buffer consists of a sequence of {\bf buffer components}.  Each
component consists of a sequence of (not necessarily distinct)
variables of the same basic datatype.  The datatype of such a variable is
specified by a state parameter.  The possible values for Fortran are
{\tt MPI\_INT}, {\tt MPI\_REAL}, {\tt MPI\_DOUBLE},
{\tt MPI\_COMPLEX}, {\tt MPI\_DCOMPLEX}, {\tt MPI\_LOGICAL},
{\tt MPI\_CHAR} and {\tt MPI\_BYTE}, corresponding to datatypes
{\tt INTEGER}, {\tt REAL}, {\tt
DOUBLE PRECISION}, {\tt COMPLEX}, {\tt DOUBLE PRECISION COMPLEX}, {\tt LOGICAL},
{\tt CHARACTER} and to untyped {\tt BYTE}.  The possible values for C are
{\tt MPI\_CHAR}, {\tt MPI\_SHORT}, {\tt MPI\_INT}, {\tt MPI\_LONG}, {\tt
MPI\_FLOAT}, {\tt MPI\_DOUBLE} and {\tt MPI\_BYTE}.

\discuss{

May need to take care of kinds in Fortran 90 and of signed/unsigned in C.  More
elaborate definitions belong to the language binding.

}

There are five kinds of buffer components:

\subsubsection{Contiguous component}

A sequence of contiguous values of the same basic type,
specified by
\begin{description}
\item[start]
Initial element
\item[count]
Number of elements  ($\tt count \ge 0$)
\item[datatype]
Type of elements
\end{description}

Thus, if {\tt A} is an array of integers, then {\tt A(1), 4, MPI\_INT} is
the buffer component with entries {\tt A(1), A(2), A(3), A(4)}.

\subsubsection{Vector component}

A sequence of equally spaced and equally sized blocks of elements of the same
basic type, specified by
\begin{description}
\item[start]
Initial element
\item[count]
Number of elements ($\tt count \ge 0$)
\item[stride]
Number of elements between the start of each block
\item[lenblk]
Number of elements in each block  ($\tt lenblk > 0$)
\item[datatype]
Type of elements
\end{description}

Assume that an element of type {\tt datatype} occupies {\tt m} bytes.  Then, in
a byte addressable machine, the
buffer component described by these five parameters consists of the {\tt
count} variables at addresses
{\tt start, start+m, ... , start+m*(lenblk-1),
start+m*stride,} \\
{\tt start+m*(stride+1), ..., start+m*(stride+lenblk-1), ...}.
For example, if {\tt A} is an array of integers, then
\begin{itemize}
\item
{\tt A(1), 5, 3, 2, MPI\_INT} is the buffer component with entries
{\tt A(1), A(2), A(4), A(5), A(7)}.
\item
{\tt A(1), 5, 0, 2, MPI\_INT} is the buffer component with entries
{\tt A(1), A(2), A(1), A(2), A(1)}.
\item
{\tt A(10), 5, -1, 2, MPI\_INT} is the buffer component with entries
{\tt A(10), A(11), A(9), A(10), A(8)}.
\end{itemize}

{\tt Contiguous} is a special case of {\tt vector}.
A vector buffer component can be used to extract an arbitrary
submatrix of a two-dimensional matrix.

\subsubsection{Indexed component}

A sequence of elements of the same basic type, specified by
\begin{description}
\item[start]
initial element
\item[count]
Number of elements  ($\tt count \ge 0$)
\item[array\_of\_indices]
Array of displacements of the elements in the buffer components, relative to
the initial element.
\item[datatype]
Type of elements
\end{description}

For example, if {\tt A} is an array of integers, and {\tt I} is an array with
values {\tt  2, -1, 2, 1} then
{\tt A(3), 4, I, MPI\_INT} is the buffer component with entries
{\tt A(5), A(2), A(5), A(4)}.

{\tt Vector} can be thought of as a special case of {\tt indexed} in which the
indices are generated with a constant stride.


\subsubsection{Heterogeneous vector (hvector) component}

Same as {\tt vector}, except that {\tt stride} is given in multiple of bytes,
rather than multiples of elements:

\begin{description}
\item[start]
Initial element
\item[count]
Number of elements ($\tt count \ge 0$)
\item[stride]
Number of bytes between the start of each block
\item[lenblk]
Number of elements in each block  ($\tt lenblk > 0$)
\item[datatype]
Type of elements
\end{description}

Assume that an element of type {\tt datatype} occupies {\tt m} bytes.  Then, in
a byte addressable machine, the
buffer component described by these five parameters consists of the {\tt
count} variables at addresses {\tt start, start+m, ... , start+m*(lenblk-1),
start+stride, start+stride+m, ..., start+stride+m*(lenblk-1), ...}.

Consider a C array declared as

\begin{verbatim}
struct {
   char info[3];
   short number;
   double val;
       }   a[100]
\end{verbatim}

Assume that all structure components are byte aligned, a {\tt short}
occupies two bytes, and a {\tt double} occupies eight bytes.
Then the buffer component {\tt \&a, 100, 13, 2, MPI\_CHAR} extracts the first
two characters of each structure.  The buffer component
{\tt \&(a.number), 100, 13, 1, MPI\_SHORT} extracts the {\tt short} field
of each structure; and the buffer component {\tt \&(a.val), 100, 13, 1}
extracts the {\tt double} field of each structure.
Thus, heterogeneous vectors can be used to extract vectors of homogeneous values
from heterogeneous data.

{\tt Vector} is a special case of {\tt heterogeneous vector}.

\subsubsection{Heterogeneous indexed (hindexed) component}

Same as indexed, except that displacements are in bytes, rather than multiples
of element size.

\begin{description}
\item[start]
initial element
\item[count]
Number of elements  ($\tt count \ge 0$)
\item[array\_of\_indices]
Array of byte displacements of the elements in the buffer components, relative
to the initial element.
\item[datatype]
Type of elements
\end{description}

For example, if {\tt a} is the C array of the previous example, and
{\tt I} is an array with values {\tt  0, 13, 13, 27, 26} then
{\tt \&a, 5, I, MPI\_CHAR} is the buffer component with entries
{\tt a[0].info[0], a[1].info[0], a[1].info[0], a[1].info[1], a[1].info[0]}.

Like {\tt heterogeneous vector}, {\tt heterogeneous indexed} extends the {\tt
indexed} facility so as to allow the extraction of homogeneous data from a
heterogeneous layout.

\discuss{

The use of displacements in indexed buffer components has the same effect as
indirect addressing into an array with initial index zero.   I.e., if {\tt a} is
an array with initial index zero, then a buffer component defined by
parameters  {\tt a[0], N, i, type} extract the elements {\tt a[i[0]], a[i[1]],
..., a[i[n]]}. This fits well C usage but ill-fits Fortran usage (initial index
one).
We took a decision of principle to force ``start from zero'' index
arithmetic on Fortran users, rather than have different index arithmetic in the C
and Fortran binding of MPI.

The use of both buffer components with byte and element size displacements is
motivated by the observation that some applications require the more general
byte displacement, but that most applications would use element size
displacement, which is much more natural and convenient (and machine
independent).  Thus, rather than forcing all users to do byte arithmetics, we
decided to provide separately the more advanced function to ``expert
programmers''.

Leslie Hart proposes to replace ``heterogeneous'' with ``general''.


}

\subsection{Buffer operations}

A buffer is described by an opaque {\bf buffer descriptor}
object accessed via a {\bf buffer handle}.
Such an object is created by {\tt MPI\_CREATE\_BUFFER}. It is
associated with successive buffer components by calling in succession one of the
functions {\tt MPI\_APPEND\_xxx}, where {\tt xxx} identifies the type of
buffer component appended to the buffer.
It becomes available for use in communication operations once committed by the
function {\tt MPI\_COMMIT\_BUFFER}.   Once committed, the descriptor cannot be
modified any more.

Note that the commit operation does not create yet a message, and
does not bind the data to be sent.  It is a commit for the buffer descriptor,
not a commit for the buffer content.
A buffer descriptor is destroyed after the completion of the first communication
operation that uses it, if it is ephemeral, or after it is freed by a call to
{\tt MPI\_FREE} and any pending communication operation that uses it has
completed, if it is persistent.   After the buffer descriptor object has been
destroyed, the handle is undefined.


\mpifunc{MPI\_CREATE\_BUFFER( buffer, persistence )}

Create a new buffer descriptor object.
The parameters are:
\begin{description}
\item[OUT buffer]
buffer handle
\item[IN persistence]
buffer persistence (state type with possible values {\tt MPI\_PERSISTENT} or
{\tt MPI\_EPHEMERAL}).
\end{description}

\discuss{

May want to provide information on maximum object size, and perhaps user space
for the object.

Leslie Hart proposes {\tt MPI\_CREATE\_BUFFER\_DESC}, rather than {\tt
MPI\_CREATE\_BUFFER}.  More accurate, but longer.   Perhaps {\tt
MPI\_CREATE\_BUFDESC}?

}

\mpifunc{MPI\_APPEND\_CONTIGUOUS( buffer, start, count, datatype)}

Append a block component to buffer.
The parameters are:
\begin{description}
\item[INOUT buffer]
buffer handle
\item[IN start]
buffer component initial element (choice)
\item[IN count]
Number of elements (integer)
\item[IN datatype]
datatype identifier (status)
\end{description}


\mpifunc{MPI\_APPEND\_VEC( buffer, count, stride, lenblk, datatype )}

Append a vector buffer component to buffer.
The parameters are:
\begin{description}
\item[INOUT buffer]
buffer handle
\item[IN start]
buffer component initial element (choice)
\item[IN count]
Number of elements (integer)
\item[IN stride]
Number of elements between the start of each block (integer)
\item[IN lenblk]
Number of elements in each block (integer)
\item[IN datatype]
datatype identifier (status)
\end{description}

\mpifunc{MPI\_APPEND\_INDEXED( buffer, start, count, array\_of\_indices, datatype)}


Append an indexed buffer component to buffer.
The parameters are:
\begin{description}
\item[INOUT buffer]
buffer handle
\item[IN start]
initial position for indexing (choice)
\item[IN count]
Number of elements (integer)
\item[IN array\_of\_indices]
array of displacements of entries relative to start (array of integers)
\item[IN datatype]
datatype identifier (status)
\end{description}

The index values used to create this component are the values provided at
the call; subsequent updates of the array of indices will not affect the buffer
descriptor component.

\mpifunc{MPI\_APPEND\_HVEC( buffer, start, count, stride, lenblk, datatype )}

Append a heterogeneous vector buffer component to buffer.
The parameters are:
\begin{description}
\item[INOUT buffer]
buffer handle
\item[IN start]
buffer component initial element (choice)
\item[IN count]
Number of elements (integer)
\item[IN stride]
Number of bytes between the start of each block (integer)
\item[IN lenblk]
Number of elements in each block (integer)
\item[IN datatype]
datatype identifier (status)
\end{description}


\mpifunc{MPI\_APPEND\_HINDEXED( buffer, start, count, array\_of\_indices,
datatype)}


Append an heterogeneous indexed buffer component to buffer.
The parameters are:
\begin{description}
\item[INOUT buffer]
buffer handle
\item[IN start]
initial position for indexing (choice)
\item[IN count]
Number of elements (integer)
\item[IN array\_of\_indices]
array of byte displacements of entries relative to start (array of integers)
\item[IN datatype]
datatype identifier (status)
\end{description}

\mpifunc{MPI\_COMMIT\_BUFFER( bufferin )}

Commit a buffer descriptor object.  The object cannot be changed anymore after
it is committed.   A buffer descriptor object can be used for communication only
after it is committed.
The parameters are:
\begin{description}
\item[INOUT buffer]
buffer descriptor handle
\end{description}

\discuss{

The commit function may do preprocessing of the buffer descriptor to simplify
its use and commit resources in the communication subsystem for its
use.  The commit function may generate a new object and, hence, modify
the object handle.

The current proposal does not allow to create a buffer descriptor, use it in a
communication after committed, then modify it partially and use it for another
communication -- a new buffer descriptor has to be created.  Of course, the same
buffer descriptor can be reused many times in successive communications that
send data from the same buffers; e.g., a new send with a buffer descriptor
handle can be initiated once the previous send with this handle has completed.

}

Example 1: \\
Consider the following fragment of Fortran code


\begin{verbatim}
DOUBLE PRECISION A(10,20)
INTEGER B, C(5,10)
INTEGER BH
...
CALL MPI_CREATE_BUFFER(BH, MPI_PERSISTENT)
CALL MPI_APPEND_BLOCK (BH, B, 1, MPI_INT)
CALL MPI_APPEND_VEC (BH, A(1,3), 11, 4, 2, MPI_DOUBLE)
CALL MPI_APPEND_INDEX(BH, C(3,7), (4,2,1), MPI_INT)
\end{verbatim}

Then the buffer associated with the handle {\tt BH} consists of the sequence of
variables

{\tt B, A(1,3), A(2,3), A(5,3), A(6,3), A(9,3), A(10,3),  A(3,4), A(4,4),
A(7,4), A(8,4), A(1,5), C(2,8), C(5,7), C(4,7)}.

A message created from this buffer will consist of a sequence of one integer,
followed by eleven double precision reals, followed by three integers.

Example 2: \\
Suppose one has an array of data declared in C as

\begin{verbatim}
struct {
   int type;
   double position[3];
   double velocity[3];
       } particle[1000]
\end{verbatim}

and one wants to transfer in one message the number of particles of type 1, the
number of particles of type 2, and the positions of all the particles of these
two types.  The following code fragment creates a suitable buffer descriptor.

\begin{verbatim}
int count1 = 0;
int count2 = 0;
...
mpi_create_buffer( &handle, MPI_PERSISTENT);
mpi_append_contiguous( &handle, &count1, MPI_INT);
mpi_append_contiguous( &handle, &count2, MPI_INT);
for (i=0; i<1000; i++) {
   if (particle[i].type == 1) {
      count1++;
      mpi_append_contiguous( &handle, &particle[i].position, 3, MPI_DOUBLE);
      }
   elseif (particle[i].type == 2) {
      count2++;
      mpi_append_contiguous( &handle, &particle[i].position, 3, MPI_DOUBLE);
      }
   }
mpi_commit_buffer(handle)
...
\end{verbatim}

The buffer descriptor handle can now be used to send (repeatedly) the particle
counts for type 1 and 2, and the positions of the particles with these two
types, as long as the types of the particles is not modified.

Suppose the incoming data is to be stored at the receiver into the two
count variables {\tt count1} and {\tt count2}
and into the {\tt position} components of the initial entries of the array of
particles.   The following code generates a suitable buffer descriptor for the
receive operation (we assume 4 bytes for integer and 8 bytes for double).


\begin{verbatim}
...
mpi_create_buffer( &handle, MPI_PERSISTENT);
mpi_append_contiguous( &handle, &count1, MPI_INT);
mpi_append_contiguous( &handle, &count2, MPI_INT);
mpi_append_hvec( &handle, &particle[0].position, 1000, 52, 3, MPI_DOUBLE);
mpi_commit_buffer( &handle)
...
\end{verbatim}


A buffer handle can be used for communication, even if it is not associated
with any  variables (i.e., even if it was not set by any {\tt MPI\_APPEND\_xxx}
call).
Such a handle is associated with an empty buffer, and a message created from it
contains no data.   The handle still need be committed before it is used.



The same entry may appear more than once in a buffer component, and distinct
buffer components may overlap.  If a buffer descriptor with replicated
entries is used to receive a message, then the final value of an entry
that occurs more than once in the buffer descriptor is undefined.

\discuss{

It is not clear to me that overlaps have any useful purpose, and they may
complicate implementation.  But we had an overwhelming vote in favor of this
feature.

}

\subsection{Type Matching and Data Conversion}

\subsubsection{Type matching}

One can think of message transmission as consisting of three phases:
\begin{enumerate}
\item
Data is pulled out of the send buffer and a message is assembled
\item
A message is transferred from sender to receiver
\item
Data is pulled from the incoming message and disassembled into the receive
buffer
\end{enumerate}

Type matching has to be observed at each of these three phases:  The type
of each variable in the sender buffer has to match
the type of the corresponding entry in the buffer descriptor; the type of an
entry in the buffer
descriptor used to send a message has to match the type of the corresponding
entry in the buffer descriptor used to receive the message; and the type of each
variable in the receive buffer has to match the corresponding entry in the
buffer descriptor for this buffer.   A program that fails to observe these
three rules is erroneous.

To define type matching more precisely, we need to deal with two issues:
matching of types of the host language with buffer descriptor types; and
matching of buffer descriptor types at sender and receiver.
We restrict ourselves to the case where the sending and receiving programs are
written in the same language.

The type of an entry in the sender buffer descriptor matches the type of an
entry in the receiver buffer descriptor if they have identical names:  {\tt
MPI\_INT} matches {\tt MPI\_INT}, {\tt MPI\_REAL} matches {\tt MPI\_REAL}, and
so on.

The type of a variable in a host program matches the type of the entry in a
buffer descriptor if the name of the buffer descriptor entry type corresponds to
the basic type of the host program variable:   an entry with type name {\tt
MPI\_INT} matches a Fortran variable of type {\tt INTEGER}, an entry with
type name  {\tt MPI\_REAL} matches a Fortran variable of type {\tt REAL}, and so
on.  There is one exception to this last rule:  An entry with type name {\tt
MPI\_BYTE} can be used to match
any byte of storage (on a byte-addressable machine),
irrespective of the datatype of the variable that contains this byte.  The value
of the message entry will be the binary value of the corresponding byte in
memory.

We thus have two cases:
\begin{itemize}
\item
Communication of typed values (e.g., with datatype different from {\tt
MPI\_BYTE}, where the datatypes of the corresponding entries in the sender
program, in the sender
buffer descriptor, in the receiver buffer descriptor and in the receiver program
should all match.
\item
Communication of untyped values (e.g., of datatype {\tt MPI\_BYTE}, where the
the corresponding entries in the sender and the receiver buffer
descriptors have both datatype {\tt MPI\_BYTE}.  In this case, there are no
requirements on the datatypes of the corresponding entries in the sender and the
receiver programs, nor is it required that they be the same.
\end{itemize}

\subsection{Data conversion}

We use the following terminology:
\begin{description}
\item[type conversion] changes the datatype of a value, e.g. by rounding a
{\tt REAL} to an {\tt INTEGER}.
\item[representation conversion] changes the binary representation of a value,
e.g. from Hex floating point to IEEE floating point.
\end{description}

Representation conversion
is needed when data is moved across machines that use different binary encodings
for the same datatype.  Representation conversion preserves, to the greatest
possible extend, the {\bf value}  represented.  However, rounding errors and
overflow and underflow exceptions may occur during floating point conversions;
conversion of integers may also lead to exceptions when a value that
can represented in one system cannot be represented in the other
system.
MPI does not specify rules for representation conversion.

The type matching rules imply that MPI communication never entails type
conversion.  On the other hand, MPI requires that a representation conversion be
performed when a typed value is transferred across environments that use
different representations for the datatype of this value.  An exception
occurring during representation conversion results in a failure of the
communication; an error occurs either in the send operation, or the receive
operation, or both.

If a value sent in a message is untyped (i.e., of type {\tt MPI\_BYTE}),
then the binary representation of the byte stored at the receiver is
identical to the binary representation of the byte loaded at the sender.  This
holds true, whether sender and receiver run in the same or in distinct
environments; no representation conversion is required.

Note that no conversions ever occur when an MPI program executes in
a homogeneous system, where all processes run in the same environment.
Also note the different behavior of {\tt MPI\_BYTE} and of {\tt MPI\_CHAR}.
A buffer descriptor entry with datatype of {\tt MPI\_CHAR} can only match
a Fortran variable of type {\tt CHAR}; and representation conversion may occur
when values of type {\tt MPI\_CHAR} are transferred., e.g., from an EBCDIC
encoding to an ASCII encoding.


Consider the following examples.

\begin{verbatim}
!  FIRST EXAMPLE
INTEGER A(100)
...
CALL MPI_CREATE_BUFFER(BH, MPI_PERSISTENT)
CALL MPI_APPEND_CONTIGUOUS (BH, A(1), 1, MPI_CHAR)
\end{verbatim}

This program is erroneous, since the type of the buffer descriptor does not
match the type of the variable in the buffer.  The behavior or this program is
undefined.   A desirable behavior is for that error to be detected
(at compile time or run time) and result in an error condition.


\begin{verbatim}
!  SECOND EXAMPLE
INTEGER A(100)
...
CALL MPI_CREATE_BUFFER(BH, MPI_PERSISTENT)
CALL MPI_APPEND_CONTIGUOUS (BH, A(1), 1, MPI_BYTE)
\end{verbatim}

This program is correct.  The byte that will be
transmitted in a message created with this buffer descriptor is
the first byte in the storage occupied by {\tt A(1)}.  The
value of this byte is implementation dependent, and will vary according to the
number of bytes used to store
Fortran variables of type {\tt INTEGER} and the byte ordering on the host
machine.




\begin{verbatim}
!  THIRD EXAMPLE
INTEGER A(100)
...
CALL MPI_CREATE_BUFFER(BH1, MPI_PERSISTENT)
CALL MPI_APPEND_CONTIGUOUS (BH1, A(1), 1, MPI_INTEGER)
...
CALL MPI_CREATE_BUFFER(BH2, MPI_PERSISTENT)
CALL MPI_APPEND_CONTIGUOUS (BH2, A(1), 4, MPI_BYTE)
\end{verbatim}

Consider the following three cases:
\begin{enumerate}
\item
A message is sent using buffer descriptor handle {\tt BH1} and received using
buffer descriptor handle {\tt BH2}.   The program is erroneous, since the sender
and receiver buffer descriptors don't match.  The behavior of the program is
undefined, and a possible (desirable but unlikely) behavior is for an error
condition to occur.
\item
Both sender and receiver use buffer descriptor handle {\tt BH1}.
The program is correct, and an integer value is transmitted from sender to
receiver.  The value assigned to {\tt A(1)} at the receiver is identical
to the value of {\tt A(1)} at the sender,
but the binary representation of this value may be different, if
sender and receiver run in different environments.
\item
Both sender and receiver use buffer descriptor handle {\tt BH2}.  The program is
correct.  Assume that both sender and receiver use four bytes to store
integers.  Then the
value stored in {\tt A(1)} at the receiver has the same binary representation as
the value of {\tt A(1} at the sender.  If the same byte ordering and
the same encoding of integer values is used at both ends then
{\tt A(1)} at the receiver is set to the value of {\tt A(1)} at the
sender; otherwise the same 32 bits may encode different values.
\end{enumerate}

\implement{

The current definition does not require messages to carry type information.
A message can be composed and sent using
only the information in the sender buffer descriptor, and can be
received and stored using only the information in the receiver buffer
descriptor.  If messages are sent between different machines then one can either
use a ``universal'' data encoding for messages, use knowledge of the receiver
environment in order to convert data at the sender, or use knowledge of the
sender environment in order to convert data at the receiver.   In either case
the local buffer descriptor can be used to derive the types of the values
transferred.  However, additional
type information carried by messages can provide better error detection.
It is possible to add always such additional type information, for better
error
checking, or add it when running in ``debug'' mode, where some performance is
sacrificed for added error checking, etc.


}

\discuss{

There is no agreement yet on the need for a definition and, if needed, on the
right definition of type matching and conversion between programs written in
different languages.   The natural interpretation of ``send from C and
receive in Fortran'' is either ``send from C, receive in C and convert to
Fortran'', or ``convert to Fortran, send from Fortran and receive in
Fortran''.  However, the correspondence between Fortran types and C types
is implementation dependent.  Thus, the diagram shown below is not commutative,
and the two interpretations of C to Fortran communication may lead to different
results.

\begin{tabular}{c c c}
machine 1 & & machine 2 \\
& send & \\
C program & $\rightarrow$ & C program \\
& & \\
$\downarrow$ & & $\downarrow$ \\
& send & \\
Fortran program & $\rightarrow$ & Fortran program
\end{tabular}

A good solution would make this diagram commutative.   Otherwise, one needs to
pick one of the two paths as the canonical definition of interlanguage
communication.  If the upper path is chosen (message carries sender datatypes),
then the receiver of a message needs
to know the language the message was sent from; if the lower path is chosen,
(message carries receiver datatypes), then
the sender needs to know the language the message is received into.

A possible solution (proposed by Danny Nessett) is to leave to the user the
choice of specifying whether to send ``Fortran datatypes'' or ``C datatypes'',
in the above situation.   One would still require exact matching of send buffer
descriptors and receive buffer descriptors.  However, a Fortran program could
use a buffer descriptor with ``C datatypes'', and vice versa.  The standard
would specify which matching of Fortran and C datatypes are legal.   For
example, it would be correct to send a Fortran variable of type {\tt REAL} using
a buffer descriptor of type {\tt MPI\_FLOAT}.  Data conversion might be required
if C float numbers and Fortran real numbers do not use the same presentation.

Another (non)solution is to ignore the issue and let the behavior
of C to Fortran communication be undefined.  The user can always match language
at sending and receiving end if he or she is willing
to struggle with the issue of calling MPI C functions from
Fortran or vice-versa.

}

\section{Receive Criteria}

The selection of a message by a receive operation is done uniquely
according to the value of the message envelope.  The receive operation specifies
an {\bf envelope pattern}; a message can be received by that receive operation
only if its envelope matches that pattern.
A pattern specifies
values for the {\tt source}, {\tt tag} and {\tt context} fields of
the message envelope.  In addition, the value for the {\tt dest} field is set,
implicitly, to be equal to the receiving process id.
The receiver may specify a {\tt DONTCARE} value for {\tt source}, or {\tt tag},
indicating that any source and/or tag are acceptable.   It cannot specify a
DONTCARE value for {\tt context} or {\tt dest}.
Thus, a message can be received by a receive
operation only if it is addressed
to the receiving task, has a matching context, has matching source unless
source=DONTCARE in the pattern, and has a matching tag unless tag=DONTCARE in
the pattern.   DONTCARE values for source or tag are specified via a named
constant for source dontcare and a named constant for tag dontcare.


The length of the received message must be less then or equal the length of the
receive buffer.  I.e., all incoming data must fit, without truncation, into the
receive buffer.  It is erroneous to receive a message which length exceed the
receive buffer, and the outcome of program where this occurs is undetermined.

\section{Communication Mode}

A send operation can occur in one of three modes:
\begin{description}
\item[STANDARD]
The send may start whether or not a matching receive has been posted.
\item[READY]
The send may start only if a matching receive has been posted.
\item[SECURE]
The send operation will not complete successfully until it is guaranteed that
the message sent will be received.
\end{description}

The start and completion of a {\bf standard} send does not depend on the status
of a matching receive.

A {\bf ready send} can start only if a matching receive is already posted;
otherwise the operation is erroneous and its outcome is undefined.  In some
systems, this allows the removal of a hand-shake
operation that is otherwise required, and results in improved
performance. Its completion does not depend on the
status of a matching receive.

A {\bf secure send}  will complete if a matching receive is posted, and the
receive operation is committed to receive the message sent by the secure send.
(I.e., the send and receive operations have already been matched, the
receive operation has already started and cannot be cancelled anymore.)
The start of a secure send does not depend on the status of a matching receive.

A receive operation can occur in one of two modes: {\bf STANDARD} and {\bf
SECURE}.   A secure send can be matched only by a {\bf secure receive}; a
program where a secure send can be matched by a standard receive is
erroneous and its
behavior is undefined.  The secure receive can be posted either before or
after the matching send.

A standard send and a ready send can both be matched only by a {\bf standard
receive}; a program where a secure receive can match a nonsecure send is
erroneous and its behavior is undefined.  The receive has to be posted ahead of
the send for a ready send and can be posted either before or after the send is
posted for a standard send.

\discuss{

I got criticisms about the previous notation (REGULAR) and the current one
(STANDARD). I can also try NORMAL, DEFAULT, ... We should probably vote, at some
point.   Also, Lyndon proposes to use SYNCHRONOUS, rather than secure, since the
other modes can also offer secure communication with the right use.
}

\implement{

The current definition assumes it is the user responsibility to
prevent matching of a regular send with a secure receive and
vice-versa.  Otherwise, messages need be tagged as standard or secure.

Assume an implementation of MPI communication that avoids retries.  What
protocols can be used?  Since a receive may have a wildcard source field, the
first step in the protocol must be executed by the sender.

For a ready send, this first step may involve sending the data, since the
receiver
is guaranteed to have space to store it.   The protocol is send, possibly
followed by an ack-send.

The protocol for secure send is likely to be the following:
The sender sends a request-to-send message.
The receiver stores this request (which contains a copy of the message
envelope).  When a matching receive is posted, the receiver sends back an
acknowledge, and the sender now sends the message.  The protocol is (req,
ack-req, send), possibly followed by an ack-send.

What protocol is used for standard sends?
Either the second protocol (req, ack-req, send) or a mix of the first and the
second (e.g. first used for short messages, second for long messages).

When the receiver does not wildcard the source field then the protocol
can be reversed:  The receiver sends a clear-to-send message, and the
sender can proceed with the short protocol if it has a clear-to-send
when the send is executed.

What do we gain from the ``secure receive''?  Some optimizations for
regular receives (e.g., in a regular receive of a short message the
receiver knows the short protocol will be used, and need not check for
a request-to-send).  Q: is that enough justification for the secure
receive?

A counter argument (Leslie Hart) is that one could conceive of an implementation
where a regular receive reserves buffer space, so that a program that use
regular receives is not safe, even if only secure sends are used.
I doubt this is a strong argument.  On the other hand, it indicates that, if the
expectation is that programs written using only secure sends are safe,
then this is an additional correctness condition on the implementation that need
be made explicit.



}

\section{Communication Objects}



An opaque communication object identifies various properties of a communication
operation, such as the buffer descriptor that is associated with it, its
context, the tag and destination parameters to be used for a send, or the tag
and source parameters to be used for a receive.  In addition, this object stores
information about the status of the last communication  operation that was
performed with this object.  This object is accessed using a communication
handle.

One can consider
communication operations to consist of the following suboperations:

\begin{description}
\item[INIT(operation, params, handle)]
Process provides all relevant parameters for its participation in the
communication operation (type of operation, data buffer, tag, participants,
etc.). An object is created that identifies the operation.
\item[START(handle)]
The communication operation is started
\item[COMPLETE(handle)]
The communication operation is completed.
\item[FREE(handle)]
The communication object, and associated resources are freed.
\end{description}
Correct invocation of these suboperations is a sequence of the form
\[ \bf INIT \ (START \ COMPLETE )^* \ FREE .\]
I.e., an object needs be created before communication occurs; it can be reused
only after the previous use has completed; and it needs to be freed eventually
(of course, one can assume that all objects are freed at program termination,
by default).

The above scenario pertains to {\em persistent} objects.  One can also create
{\em ephemeral} objects.  Such an object persists only until the communication
operation is completed, at which point it is destroyed.  Thus the correct
invocation of suboperations with an ephemeral object is
{\bf INIT START COMPLETE}.


A user may directly invoke these suboperations.  This would allow the
amortization of
the overhead of setting up a communication over many successive uses of the same
handle, and allows the overlap of communication and computation.   Simpler
communication operations combine several of these suboperations into one
operation, thus simplifying the use of communication primitives.
Thus, one only needs to specify
precisely the semantics of these suboperations in order to specify the semantics
of MPI point to point communication operations.

We say that a communication operation (send or receive) is {\bf posted} once
a {\bf start} suboperation has been invoked; the operation is {\bf completed}
once the {\bf complete} suboperation has completed.  A send and a receive
operation
{\bf match} if the receive pattern specified by the receive matches the message
envelope created by the send.

\subsection{Communication Object Creation}

\discuss{  This section has not yet been approved}

An object for a send operation is created by a call to {\bf MPI\_INIT\_SEND}.
A call to {\bf MPI\_INIT\_RECV} is similarly used for creating an object for a
receive operation.   The creation of a communication object is a local operation
that need not involve communication with a remote process.

\mpifunc{MPI\_INIT\_SEND (handle, buffer\_handle, dest, tag, context, mode,
persistence)}

Creates a send communication object.  Parameters are
\begin{description}
\item[OUT handle] message handle.  The handle should not be associated with any
object before the call.
\item[IN buffer\_handle] handle to send buffer descriptor
\item[IN dest] rank in context of destination (integer)
\item[IN tag] user tag for messages sent with this handle (integer)
\item[IN context] context of messages sent with this handle
\item[IN mode] send mode (state type, with three values: {\tt MPI\_STANDARD},
{\tt MPI\_READY} and {\tt MPI\_SECURE})
\item[IN persistence] handle persistence (state type, with two values: {\tt
MPI\_PERSISTENT} and {\tt MPI\_EPHEMERAL})
\end{description}

\mpifunc{MPI\_INIT\_RECV (handle, buffer\_handle, source, tag, context, mode,
persistence)}

Create a receive handle.  Parameters are
\begin{description}
\item[OUT handle] message handle.  The handle should not be associated with any
object before the call.
\item[IN buffer\_handle] handle to receive buffer descriptor.
\item[IN source] rank in context of source, or {\tt MPI\_ANY\_SOURCE} (integer).
\item[IN tag] user tag for messages received with this handle, or {\tt
MPI\_ANY\_TAG} (integer).
\item[IN context] context of messages received with this handle.
\item[IN mode] receive mode (state type, with two values: {\tt MPI\_STANDARD},
and {\tt MPI\_SECURE})
\item[IN persistence] handle persistence (state type, with two values: {\tt
MPI\_PERSISTENT} and {\tt MPI\_EPHEMERAL})
\end{description}

See Section~\ref{subsec:envelope} for a discussion of source, tag and context.

\discuss{
I have not included proposals for partially specified message handles, that
some peoples seem to desire.

I have merged all handle setup into one call.

The functions {\tt MPI\_INIT\_SEND} and {\tt MPI\_INIT\_RECV} have the same
list of parameters.  Jim Cownie suggests to have only one function with an
extra argument.



Ephemeral ``persistent handles'' are not terribly useful as such.  But their
existence allow us to describe all the higher level send/receive
operations in terms of basic operations on handles.

}




\subsection{Communication Start}

\mpifunc{MPI\_START(handle)}
\begin{description}
\item[IN handle] communication handle
\end{description}

The {\tt MPI\_START} function starts the execution of a communication operation
(send or receive).  A sender should not update the send buffer after a
send operation has started until after it has completed.  A receiver should
not access the receive buffer after a receive operation was started until
after it has
completed.  A program that does not satisfy these conditions is erroneous and
its outcome is undetermined.


\subsection{Communication Completion}
\label{subsec:complete_ops}

\mpifunc{MPI\_WAIT ( handle, return\_status\_handle)}
\begin{description}
\item[IN handle]  communication handle
\item[IN return\_handle] handle that is associated with return status object.
the return status object is updated by call.
\end{description}

A call to {\bf MPI\_WAIT} returns when the send operation
identified by {\tt handle} is complete.
The completion of a send operation indicates that the sender is now free to
update the locations in the send buffer, or any other location that can be
referenced by the send operation.  However, it does not indicate that the
message has been received; rather it may have been buffered by the communication
subsystem.

The completion of a receive operation indicates that the receiver is now free to
access the locations in the receive buffer, which contain the received message,
or any other location that can be referenced by the receive operation.  It does
not indicate that the matching send operation has completed.

The call returns a handle to an opaque object that contains information on
the completed operation -- the {\bf return status} object.

\mpifunc{MPI\_STATUS (handle, flag, return\_handle)}
\begin{description}
\item[IN handle]  communication handle
\item[OUT flag] logical
\item[OUT return\_handle] handle that is associated with return status
object.
\end{description}

A call to {\bf MPI\_STATUS} returns {\tt flag=true} if the
operation identified by {\tt handle} is complete.  In such case, the return
handle points to an opaque object that contains information on the completed
operation.  It returns
{\tt flag=false}, otherwise. In such case, the value of the return handle is
undefined.

A call to {\tt MPI\_WAIT} blocks only the executing thread.  If the
executing process is multithreaded, then other threads within the process can be
scheduled for execution.

The use of a blocking receive operation ({\tt
MPI\_WAIT}) allows the operating system to deschedule the blocked thread
and schedule another thread for execution, if such is available.  The use of
a nonblocking receive operation ({\tt MPI\_STATUS}) allows the user to
schedule alternative activities within a single thread of execution.

The intended implementation of {\tt MPI\_STATUS} is for that operation
to return as soon as possible.  However, if repeatedly called for an operation
that is enabled, it must eventually succeed.

The return status object for a send operation carries no information.  The
return status object for a receive operation carries information on the source,
tag and length of the received message.  These fields are required because the
receive operation may have specified {\tt DONTCARE} in either source or tag
field, and the message may have been shorter than the receive buffer.

\mpifunc{MPI\_QUERY( handle, count, source, tag)}
\begin{description}
\item[IN handle] handle to return status object
\item[OUT count] number of elements received.
\item[OUT source] rank of message sender in message context (integer).
\item[OUT tag] tag of received message (integer).
\end{description}

\mpifunc{MPI\_CREATE\_STATUS( handle)}

Creates a new return status object.
\begin{description}
\item[OUT handle] handle to return status object.
\end{description}

\discuss{

The use of a return status object, rather than a list of parameters may simplify
the use of MPI routines, if the values stored in the object are seldom checked.
A predefined  return status object should be provided, to ease programming.
The main reason for the use of a return-status object is that one wants
to be able to use the same {\tt MPI\_WAIT} and {\tt MPI\_STATUS} calls
for checking on different types of operations, e.g. both sends and
receives, and perhaps new operations in the future.  These different
operations return different information (albeit we could decree that a
send returns the same information as a receive).

The issue of memory allocation for return\_status handles is not yet
solved.  There is a desire that the user will be able to allocate
space for them (e.g., on the stack).

We return number of elements received, rather than bytes received
because ``number of elements'' is closer to the application semantic
level (user does not need to be aware of the size of elements), and is
more invariant.
The return status object returns the number of {\bf elements}
received.  If there was no truncation, then this is equal to the
number of elements sent.  On the other hand, the number of bytes
collected from the sender memory, the number of bytes sent over the
wire, and the number of bytes stored in the receiver memory may all be
different, in a heterogeneous environment.
The number of elements sent can be computed
form the send buffer descriptor; the number of elements received can
be computed from the receive buffer descriptor and the length (in
bytes) of the received message.

{\tt MPI\_STATUS} and {\tt MPI\_QUERY} are not good names -- they can be easily
confused.  Leslie Hart suggests {\tt MPI\_TEST} or {\tt MPI\_CHECK} for the
first.  Perhaps we should replace {\tt MPI\_STATUS} with {\tt MPI\_TEST}
and {\tt MPI\_QUERY} with {\tt MPI\_STATUS}.

}

\subsection{Multiple Completions}

It is convenient to be able to wait for the completion of any or all the
operations in a set, rather than having to wait for a specific message.
A call to {\tt MPI\_WAITANY} or {\tt MPI\_STATUSANY} can be used to wait for the
completion of one out of several operations; a call to {\tt MPI\_WAITALL} can be
used to wait for all pending operations in a list.

\mpifunc{MPI\_WAITANY ( list\_of\_handles, count, index, return\_handle)}

Blocks until one of the operations associated with the communication
handles in the array has completed.  Returns the index of that handle in the
array, and returns the status of that operation in the object associated with
the return\_handle.  The parameters are:

\begin{description}
\item[IN list\_of\_handles] list of handles to communication objects.
\item[IN count] list length (integer)
\item[OUT index] index of handle for operation that completed (integer).
\item[OUT return\_handle] handle that is associated with return status
object.  Set to return status of operation that completed.
\end{description}

The successful execution of {\tt MPI\_WAITANY(list\_of\_handles, index,
return\_handle)} has the same effect as the successful execution of {\tt
MPI\_WAIT(handle[i], return\_handle)}, where {\tt i} is the value
returned by {\tt index} and {\tt handle[i]} is the {\tt i}-th handle in the
list, and the cancellation of all remaining wait operations.

If more then one operation is enabled and can terminate, one is arbitrarily
chosen (subject to the restrictions on operation termination order,
and fairness, see Section~\ref{subsec:correct}).


{\tt MPI\_WAITANY ( list\_of\_handles, count, index, return\_status\_handle)}
is
\begin{verbatim}
   {MPI_WAIT (handle[0], return_handle); index = 0} || ...
||
   {MPI_WAIT (handle[count-1], return_handle); index = count-1}
\end{verbatim}

(``$||$'' indicates choice; one of the alternatives is chosen,
nondeterministically.)

\mpifunc{MPI\_STATUSANY ( list\_of\_handles, count, index, return\_handle)}

Causes either one or none of the operations associated with the communication
handles to return.   In the former case, it has the same return semantics as a
call to {\tt MPI\_WAIT\_ANY}.  In the latter case, it returns a value of --1 in
{\tt index} and {\tt return\_handle} is undefined.
The parameters are:

\begin{description}
\item[IN list\_of\_handles] list of handles to communication objects.
\item[IN count] list length (integer)
\item[OUT index] index of handle for operation that completed, or -1 if none
completed (integer).
\item[OUT return\_handle] handle that is associated with return status
object.  Set to return status of operation that completed, if any; undefined
when {\tt index = -1}.
\end{description}

\mpifunc{MPI\_WAITALL(list\_of\_handles, count, list\_of\_return\_handles)}

Blocks until all communication operations associated with handles in the list
complete, and return the status of all these operations.
The parameters are:

\begin{description}
\item[IN list\_of\_handles] list of handles to communication objects.
\item[IN count] lists length (integer)
\item[OUT list\_of\_return\_handles]  Must have the same length as the
first list.  Each return status object is set to the return status of the
corresponding operation in the first list.
\end{description}

\discuss{

The fairness requirement given in Section~\ref{subsec:correct} implies
that the use of {\tt WAIT\_ANY} cannot lead to starvation:  If the
sending process has issued a send complete operation, and the receiving
process repeatedly post a receive for the message sent, then that
message must be eventually received.  Section~\ref{subsec:correct} has
not yet been discussed.  The fairness requirement can be attacked
either for being too weak (eventually is not good enough), or too
strong (hard to implement).  In the later case, if the requirement of
fairness is dropped from MPI implementations, then some mechanism need
be provided to the user to achieve fairness by his or her own devices.
One such proposal is to be able to specify a rotating priority order
on the operations posted by a {\tt MPI\_WAITANY}:  search the list
sequentially, starting from a user specified position.

}

\section{Blocking Communication}

Blocking send and receive operations combine all communication suboperations
into
one call.  The operation returns only when the communication completes and no
communication object persists after the call completed.  However, the buffer
descriptor object needs be created ahead of the call.

We use the following naming convention for such operations:

\[
\left[ \begin{array}{c} - \\ \bf R \\ \bf S \end{array} \right]
\left[ \begin{array}{c} \bf SEND \\ \bf RECV \end{array} \right]
\]

The first letter (void, {\bf R}  or {\bf S}) indicates the start mode (standard,
ready, or secure).  Only two of the combinations (standard and secure)
are meaningful for receives.

\mpifunc{MPI\_SEND (buffer\_handle, dest, tag, context)}
is
\begin{verbatim}
MPI_INIT_SEND(handle, buffer_handle, dest, tag, context, MPI_STANDARD,
MPI_EPHEMERAL)
MPI_START(handle)
MPI_WAIT(handle, null)
\end{verbatim}


\mpifunc{MPI\_RSEND (buffer\_handle, dest, tag, context)}
is
\begin{verbatim}
MPI_INIT_SEND(handle, buffer_handle, dest, tag, context, MPI_READY, MPI_EPHEMERAL)
MPI_START(handle)
MPI_WAIT(handle, null)
\end{verbatim}


\mpifunc{MPI\_SSEND (buffer\_handle, dest, tag, context)}
is
\begin{verbatim}
MPI_INIT_SEND(handle, buffer_handle, dest, tag, context, MPI_SECURE, MPI_EPHEMERAL)
MPI_START(handle)
MPI_WAIT(handle, null)
\end{verbatim}

\mpifunc{MPI\_RECV(buffer\_handle, source, tag, context,
return\_handle)}
is
\begin{verbatim}
MPI_INIT_RECV(handle, buffer_handle, source, tag, context, MPI_STANDARD, MPI_EPHEMERAL)
MPI_START(handle)
MPI_WAIT(handle,return_handle)
\end{verbatim}

\mpifunc{MPI\_SRECV(buffer\_handle, source, tag, context,
return\_handle)}
is
\begin{verbatim}
MPI_INIT_RECV(handle, buffer_handle, source, tag, context, MPI_SECURE, MPI_EPHEMERAL)
MPI_START(handle)
MPI_WAIT(handle,return_handle)
\end{verbatim}

\implement{

While these functions can be implemented via calls to functions that
implement suboperations, as described in this subsection, an efficient
implementation may optimize away these multiple calls, provided it does not
change the behavior of correct programs.

}

\discuss{

We use a different function name, rather than an additional mode parameter, in
order to save on an additional parameter (performance and user convenience).
Lyndon and perhaps other prefer fewer functions and an additional parameter.

}

\section{Nonblocking Communication}

Nonblocking send and receive operations combine the first two
suboperations ({\tt INIT} and {\tt START}) into one call.
They use ephemeral communication objects, so that the operation is completed,
and the associated resources are freed, by using one of the functions {\tt
MPI\_WAIT, MPI\_STATUS, MPI\_WAITANY, MPI\_STATUSANY}, or {\tt MPI\_WAITALL}.
Here, too, a buffer object has to be created ahead of the communication
initiation operation.

We use the same naming convention as for blocking operations:  a prefix of
{\bf R} ({\bf S}) indicates the {\tt READY} ({\bf SECURE}) mode.
In addition, a prefix of {\bf I} is
used to indicate {\em immediate} (i.e., nonblocking) execution.


\mpifunc{MPI\_ISEND (handle, buffer\_handle, dest, tag, context)}
is
\begin{verbatim}
MPI_INIT_SEND(handle, buffer_handle, dest, tag, context, MPI_STANDARD, MPI_EPHEMERAL)
MPI_START(handle)
\end{verbatim}

\mpifunc{MPI\_IRSEND (handle, buffer\_handle, dest, tag, context)}
is
\begin{verbatim}
MPI_INIT_SEND(handle, buffer_handle, dest, tag, context, MPI_READY, MPI_EPHEMERAL)
MPI_START(handle)
\end{verbatim}

\mpifunc{MPI\_ISSEND (handle, buffer\_handle, dest, tag, context)}
is
\begin{verbatim}
MPI_INIT_SEND(handle, buffer_handle, dest, tag, context, MPI_SECURE, MPI_EPHEMERAL)
MPI_START(handle)
\end{verbatim}

\mpifunc{MPI\_IRECV(handle, buffer\_handle, source, tag, context, return\_status\_handle)}
is
\begin{verbatim}
MPI_INIT_RECV(handle, buffer_handle, source, tag, context, MPI_STANDARD, MPI_EPHEMERAL)
MPI_START(handle)
\end{verbatim}

\mpifunc{MPI\_ISRECV(handle, buffer\_handle, source, tag, context, return\_status\_handle)}
is
\begin{verbatim}
MPI_INIT_RECV(handle, buffer_handle, source, tag, context, MPI_SECURE, MPI_EPHEMERAL)
MPI_START(handle)
\end{verbatim}

\section{Contiguous Block Communication Operations}

The most frequent type of buffer used is a buffer with one contiguous component.
We specialize the functions in
the two previous subsections to this case, thus avoiding the need for the
creation of a buffer descriptor object.  We use the same naming scheme used
in the previous subsections, and append a {\bf C} in the function name, for {\tt
CONTIGUOUS}.


\mpifunc{MPI\_SENDC (start, count, datatype, dest, tag, context)}
is
\begin{verbatim}
MPI_CREATE_BUFFER( buffer_handle, MPI_EPHEMERAL)
MPI_APPEND( buffer_handle, start, count, datatype)
MPI_SEND (buffer_handle, count, dest, tag, context)
\end{verbatim}

\mpifunc{MPI\_RSENDC (handle, start, count, datatype, dest, tag, context)}
is
\begin{verbatim}
MPI_CREATE_BUFFER( buffer_handle, MPI_EPHEMERAL)
MPI_APPEND( buffer_handle, start, count, datatype)
MPI_RSEND( buffer_handle, count, dest, tag, context)
\end{verbatim}

\mpifunc{MPI\_SSENDC (handle, start, count, datatype, dest, tag, context)}
is
\begin{verbatim}
MPI_CREATE_BUFFER( buffer_handle, MPI_EPHEMERAL)
MPI_APPEND( buffer_handle, start, count, datatype)
MPI_SSEND( buffer_handle, count, dest, tag, context)
\end{verbatim}

\mpifunc{MPI\_RECVC (start, count, datatype, source, tag, context,
return\_status\_handle)}
is
\begin{verbatim}
MPI_CREATE_BUFFER( buffer_handle, MPI_EPHEMERAL)
MPI_APPEND( buffer_handle, start, count, datatype)
MPI_RECV( buffer_handle, source, tag, context, return_status_handle)
\end{verbatim}


\mpifunc{MPI\_SRECVC (start, count, datatype, source, tag, context,
return\_status\_handle)}
is
\begin{verbatim}
MPI_CREATE_BUFFER( buffer_handle, MPI_EPHEMERAL)
MPI_APPEND( buffer_handle, start, count, datatype)
MPI_SRECV( buffer_handle, source, tag, context, return_status_handle)
\end{verbatim}

\mpifunc{MPI\_ISENDC (handle, start, count, datatype, dest, tag, context)}
is
\begin{verbatim}
MPI_CREATE_BUFFER( buffer_handle, MPI_EPHEMERAL)
MPI_APPEND( buffer_handle, start, count, datatype)
MPI_ISEND( handle, buffer_handle, dest, tag, context)
\end{verbatim}

\mpifunc{MPI\_IRSENDC (handle, start, count, datatype, dest, tag, context)}
is
\begin{verbatim}
MPI_CREATE_BUFFER( buffer_handle, MPI_EPHEMERAL)
MPI_APPEND( buffer_handle, start, count, datatype)
MPI_IRSEND( handle, buffer_handle, dest, tag, context)
\end{verbatim}

\mpifunc{MPI\_ISSENDC (handle, start, count, datatype, dest, tag, context)}
is
\begin{verbatim}
MPI_CREATE_BUFFER( buffer_handle, MPI_EPHEMERAL)
MPI_APPEND( buffer_handle, start, count, datatype)
MPI_ISSEND( handle, buffer_handle, dest, tag, context)
\end{verbatim}


\mpifunc{MPI\_IRECVC(handle, start, count, datatype, source, tag, context,
return\_status\_handle)}
is
\begin{verbatim}
MPI_CREATE_BUFFER (buffer_handle, MPI_EPHEMERAL)
MPI_APPEND( buffer_handle, start, count, datatype)
MPI_IRECV( handle, buffer_handle, source, tag, context)
\end{verbatim}


\mpifunc{MPI\_ISRECVC(handle, start, count, datatype, source, tag, context,
return\_status\_handle)}
is
\begin{verbatim}
MPI_CREATE_BUFFER( buffer_handle, MPI_EPHEMERAL)
MPI_APPEND( buffer_handle, start, count, datatype)
MPI_ISRECV( handle, buffer_handle, source, tag, context)
\end{verbatim}


\section{Probe and Cancel}

The {\tt MPI\_PROBE} operation allows incoming messages to be checked for,
without
actually receiving them.  The user can then decide where to receive them, based
on the information returned by the probe (basically, the information on the
message envelope).  An additional function, {\tt MPI\_GET\_LEN} allows
the amount of storage needed to receive the message to be computed, when this
length is not readily computed from the information returned by
{\tt MPI\_PROBE}.

The {\tt MPI\_CANCEL} operation allows pending communications to be cancelled.
This
is required for cleanup.   Posting a send or a receive ties user resources (send
or receive buffers), and a cancel may be needed to free these resources
gracefully.

\mpifunc{MPI\_PROBE( source, tag, context, flag, datatype, return\_status)}

\begin{description}
\item[IN source] rank in context of source, or {\tt MPI\_ANY\_SOURCE} (integer).
\item[IN tag] user tag for messages received with this handle, or {\tt
MPI\_ANY\_TAG} (integer).
\item[IN context] context of messages received with this handle.
\item[OUT flag] (logical)
\item[IN type] assumed type of data in message (status variable).
\item[OUT return\_handle] handle that is associated with return status
object.
\end{description}

{\tt MPI\_PROBE} returns {\tt flag = true} if there is a message
that can be received and that matches the pattern specified by the
parameters {\tt source}, {\tt tag}, and {\tt context}.
It returns {\tt flag = false}, otherwise. If {\tt MPI\_PROBE} returns
{\tt flag = true}, then the length, source and tag
of the message matched are returned in the return status object.  These are the
same values that would have been returned by a call to {\tt MPI\_RECV} or to
{\tt MPI\_SRECV} executed at the same point in the program (with a caveat
concerning length; see below).
These values can be decoded from the return status object using the {\tt
MPI\_RETURN\_STAT} function.  The value returned in the return status object is
undefined if {\tt flag=false}.

The length value returned by the return status object is (correctly) the number
of elements in the message, provided that all elements in the message are of the
type specified by the {\tt type} parameter; otherwise the length value returned
is undefined.

A subsequent
receive executed with the same context, and the source and tag
returned by the call to {\tt MPI\_PROBE} will receive the message
that was matched by the probe, if no other intervening receive occurred after
the probe.  If the receiving process is multithreaded, it is the user
responsibility to ensure that the last condition holds.

\discuss{

Do we want {\tt MPI\_PROBE} to return mode (standard or secure)?
If yes, we need to carry mode information with messages (it's deja vu all over
again).  If not, then it is up to the user to encode this information (in the
tag) so that receiver can decide whether to use a secure or standard send.

MPI guarantees that successive messages sent from a source to a destination
within the same context are received in the order they are sent.  Thus,  MPI
must support, either explicitly or implicitly, a FIFO structure to
manage messages between each pair of messages, for each context. {\tt
MPI\_PROBE} returns information on the first matching message in this FIFO; this
will also be the message received by the first subsequent receive with the same
source, tag and context as the message matched by {\tt MPI\_PROBE}.


Message passing in MPI can be implemented without appending
type information to messages.  A message is merely a string of bytes and the
interpretation of these bytes
into a sequence of typed elements is done using the information in
the buffer descriptors at each end.
The ability to use such implementation strategy is deemed to be an
important goal. In such implementation, when a message arrives,
it is not be known how many elements it contains, or even how much storage is
needed to receive that message (because of possible representation
conversion in a
heterogeneous environment).  The probe function cannot use a buffer descriptor;
this defeats the purpose of probing in order to decide where to receive a
message.  Therefore, probe cannot, in general, return correct
length information.   Still, it is often the case that probe is used to decide
how much storage to allocate in order to receive a message.  Encoding such
information in the message tag is deemed to be too awkward, and it is deemed
important for {\tt MPI\_PROBE} to return some useful size information.
The current definition of {\tt MPI\_PROBE} is a compromise between these two
goals.   For the most common case of messages where all entries have the
same type {\tt MPI\_PROBE} returns the correct length information; the more
esoteric case is handled by the {\tt MPI\_GET\_LEN} that is described below.
The current solution saves us the need for one additional word per message that
would otherwise be needed to transfer the message length (in elements) with the
message.

There was a request for a blocking probe function.

}

\mpifunc{MPI\_GET\_LEN( count, return\_status, buffer\_descriptor)}

Computes the number of elements that were to be received, if the message
that is associated with the return status handle would be received in the
buffer associated with the buffer descriptor handle.
\begin{description}
\item[OUT count] number of elements that were to be received (integer)
\item[IN return\_status] handle to return status descriptor
\item[IN buffer\_descriptor] handle to buffer descriptor
\end{description}

\discuss {

In order to support this function, an additional field is needed in the
return status object, i.e., number of bytes in the incoming message matched by
probe, or value of datatype parameter provided by probe (unless we add this
parameter to the {\tt MPI\_GET\_LEN} function, which is too ugly to bear).

}

\mpifunc{MPI\_CANCEL( handle, flag)}

\begin{description}
\item [IN handle] handle to communication object
\item[OUT flag] (logical)
\end{description}

A call to {\tt MPI\_CANCEL} cancels a pending communication operation
(send or receive).  The call returns {\tt flag = true} if the cancel
operation succeeded, {\tt flag = false} otherwise.  It must be the
case that either the cancel operation succeeds or that the pending
communication operation completes (but not both).
If a communication operation was cancelled successfully, the effect is
as if this operation was never executed.
If a send was cancelled successfully then the message sent will not be
received, the receive buffer of any posted receive for that message
will not be altered, and any such receive has to be satisfied
by another send; if a receive was cancelled successfully, then the
receive buffer posted will not be altered, and any send
matching this receive has to be satisfied by another receive.

\implement{

There is not expectation that a cancel operation will be fast.

}

\section{Correctness}
\label{subsec:correct}

\discuss{The material in this section has not yet been discussed by MPIF.
Some or all of it is likely to move to Section~\ref{sec:formal}.
It is incorporated here for completeness.}

\subsection{Order}

MPI preserves the order of messages within the same context, between any fixed
pair of
processes. In other words, if process A executes two successive send {\tt start}
suboperations within the same context,
process B executes two successive receive {\tt start} operations, and both
receives
match either sends, then the first receive will receive the message sent by the
first send, and the second receive will receive the message sent by the second
send.  Thus, if a two messages from the same source can satisfy a pending
receive, the first message sent is accepted; if a message can satisfy two
pending receives, the first receive posted is satisfied.

The last paragraph assumes that the send {\tt start} operations are ordered by
the
program order at process A, and the receive {\tt start} operations are ordered
by the
program order at process B.  If a process is multithreaded and the operations
are executed by distinct threads, then the semantics of the threaded system may
not define an order between the two operations, in which case the condition is
void.

\subsection{Progress and Fairness}

We can model the execution of MPI programs as an interaction between executing
processes that execute each their own program, and the {\bf communication
subsystem}.  The communication subsystem may have various constraints on the
amount of resources it can use.  E.g.:

Bounds on the number and total sizes of active communication objects.
Such bound can be global, per node, or per pair of communicating nodes.

Bounds on the number and total sizes of messages buffered in the system.  Such
bound can, again, be global, per node, or per pair of communicating node.  In
addition, a message may be buffered at the sender, at the receiver, at both, or
perhaps at another place altogether.

Thus, it will be difficult to set rules on resource management of the
communication subsystem.   However, it is generally expected that implementers
will provide information on the mechanism used for resource allocation, and that
query and set functions will allow to query and possibly control the amount
of available resources.

We provide in this section a set of minimal requirements on the communication
subsystem.  Programs that execute on any subsystem that fulfils these minimal
requirements are {\bf safe} and will port to any MPI implementation.
{\bf Unsafe} programs may execute on some MPI implementations, depending on the
amount of available resources and the implementation used for the MPI
communication subsystem.  Finally {\bf  erroneous} programs never execute
correctly.  (While it is desirable to detect erroneous programs, it is not
possible to do so at compile time, and often prohibitive to do so a run time.
Thus, the document does not specify a behavior for erroneous programs, although
the desired behavior is to return a useful error message.)

\begin{enumerate}
\item
If a process executes an {\tt INIT}  operation,
then the operation eventually succeeds, or a {\em resource exception} occurs.
The standard does not specify when a resource exception is allowed to occur.  It
is expected that an operational definition will be made available, in the form
of test programs that have to execute with no resource exceptions.
It is highly desirable to have generous bounds on the number of
concurrently active communication objects each process may have, so that,
in practice, {\tt INIT} operations will always be guaranteed to succeed.
\item
Each process can initiate a communication operation for each active
communication object. I.e. correct {\tt START} operations always succeed
(eventually).
\item
A send operation is {\bf enabled} if the sending process has issued a
{\tt COMPLETE} operation and the receiving process has issued a {\tt
START} operation for a matching receive.  Symmetrically,
a receive operation is {\bf enabled} if the receiving process has issued
a {\tt COMPLETE} operation and the sending process has issued a {\tt
START} operation for a matching send.
An enabled operation may become {\bf disabled} either because it completes
successfully or, in the case of a receive, because the matching message is
successfully received by another receive operation or, in the case of
a send, because the matching receive successfully receives another
message.

{\bf An enabled operation either completes successfully or becomes permanently
disabled.}

I.e., an enabled operation either eventually succeeds, or becomes
disabled (progress); and an operation cannot be enabled infinitely many
times without ever succeeding (fairness).

\item
A {\tt FREE} operation always succeeds (eventually).
\end{enumerate}


The four conditions guarantee progress in the communication subsystem.  The
third condition guarantee (weak) fairness among competing communication
requests.


Examples (involving two processors with ranks 0 and 1)

The following program is safe, and should always succeed.
\begin{verbatim}

CALL MPI_RANK(rank, context)
IF (rank.EQ.0) THEN
   CALL MPI_SENDC(sendbuf, count, 1, tag, context)
   CALL MPI_RECVC(recvbuf, count, 1, tag, context)
ELSE    ! rank.EQ.1
   CALL MPI_RECVC(recvbuf, count, 0, tag, context)
   CALL MPI_SENDC(sendbuf, count, 0, tag, context)
END IF
\end{verbatim}



The following program is erroneous, and should always fail.

\begin{verbatim}

CALL MPI_RANK(rank, context)
IF (rank.EQ.0) THEN
   CALL MPI_RECVC(recvbuf, count, 1, tag, context)
   CALL MPI_SENDC(sendbuf, count, 1, tag, context)
ELSE    ! rank.EQ.1
   CALL MPI_RECVC(recvbuf, count, 0, tag, context)
   CALL MPI_SENDC(sendbuf, count, 0, tag, context)
END IF
\end{verbatim}

The receive operation of the first process must complete before its send, and
can complete only if the matching send
of the second processor is executed; the receive operation of the second
process must complete before its send and
can complete only if the matching send of the first process is executed.
This program will deadlock.

The following
program is unsafe, and may succeed or fail, depending on implementation.

\begin{verbatim}

CALL MPI_RANK(rank, context)
IF (rank.EQ.0) THEN
   CALL MPI_SENDC(sendbuf, count, 1, tag, context)
   CALL MPI_RECVC(recvbuf, count, 1, tag, context)
ELSE    ! rank.EQ.1
   CALL MPI_SENDC(sendbuf, count, 0, tag, context)
   CALL MPI_RECVC(recvbuf, count, 0, tag, context)
END IF

\end{verbatim}

The message sent by each process has to be copied out before the send operation
returns and the receive operation starts.  For the program to complete, it is
necessary that at least one of the two messages sent is buffered out of
either processes' address space.  Thus, this program can
succeed only if the communication system has sufficient
buffer space to buffer {\tt count} words of data.

If additional requirements will become part of the standard (e.g., bounds
on the minimal number of concurrently active handles that need be supported,
then further programs become safe.

\section{Missing}
\paragraph*{send-receive}

a function of the form  (for blocking communication)

{\tt MPI\_SEND\_RECV( send\_buffer, destination, recv\_buffer, source,
tag, context)}

It may be superfluous because the collective communication shift has similar
functionality.  Yet it allows to generate more easily communication patterns
that would lead to deadlock if implemented naively, with blocking communication.

An important variant is the case where {\tt send\_buffer = recv\_buffer}  (this
can either be a subcase of the general send\_recv function, or a separate
function, if send buffer and receive buffer are required to be disjoint in
the general function).  This introduces new functionality that is not available,
otherwise, and which seems to be often required.

An {\tt exchange} is the special case where source = destination.
\end{document}


>From weeks@mozart.convex.com Wed Jun  9 15:10:24 1993
Return-Path: <weeks@mozart.convex.com>
Received: from ens.ens-lyon.fr by lip.ens-lyon.fr (4.1/SMI-4.1)
	id AA15090; Wed, 9 Jun 93 15:10:24 +0200
Received: from convex.convex.com by ens.ens-lyon.fr (4.1/SMI-4.1)
	id AA12755; Wed, 9 Jun 93 15:10:03 +0200
Received: from mozart.convex.com by convex.convex.com (5.64/1.35)
	id AA01731; Wed, 9 Jun 93 08:09:24 -0500
Received: by mozart.convex.com (5.64/1.28)
	id AA29119; Wed, 9 Jun 93 08:11:37 -0500
Date: Wed, 9 Jun 93 08:11:37 -0500
From: weeks@mozart.convex.com (Dennis Weeks)
Message-Id: <9306091311.AA29119@mozart.convex.com>
To: Jack.Dongarra@lip.ens-lyon.fr
Subject: May 14 mpi mail #1 of 1
Status: R

>From snir@watson.ibm.com Fri May 14 00:15:16 1993
Received: from convex.convex.com by mozart.convex.com (5.64/1.28)
	id AA28640; Fri, 14 May 93 00:14:55 -0500
Received: from watson.ibm.com by convex.convex.com (5.64/1.35)
	id AA02615; Fri, 14 May 93 00:15:01 -0500
Message-Id: <9305140515.AA02615@convex.convex.com>
Received: from YKTVMV by watson.ibm.com (IBM VM SMTP V2R3) with BSMTP id 1089;
   Fri, 14 May 93 01:14:38 EDT
Date: Fri, 14 May 93 01:14:38 EDT
From: "Marc Snir" <snir@watson.ibm.com>
To: weeks@convex.com, tony@cs.msstate.edu
Status: R

%     MPI Authors:
% This is MY version of YOUR chapter.  It has a wrapper so that you
% should be able to simply LaTeX this.
%
% Please work from this text so that we are in synch.
%
% --Steve Otto

\documentstyle[twoside]{article}
\pagestyle{headings}
%\markright{ {\em Draft Document of the MPI Standard,\/ \today} }
\marginparwidth 0pt
\oddsidemargin=.25in
\evensidemargin  .25in
\marginparsep 0pt
\topmargin=-.5in
\textwidth=6.0in
\textheight=9.0in
\parindent=2em

%   ----------------------------------------------------------------------
%   mpi-macs.tex  --- man page macros,
%                discuss, missing, mpifunc macros
%
% ----------------------------------------------------------------------
% a couple of commands from Marc Snir, modified S. Otto

\newlength{\discussSpace}
\setlength{\discussSpace}{.7cm}

\newcommand{\discuss}[1]{\vspace{\discussSpace} {\small {\bf Discussion:} #1} \vspace{\discussSpace}
}

\newcommand{\missing}[1]{\vspace{\discussSpace} {\small {\bf Missing:} #1} \vspace{\discussSpace}
}

\newcommand{\implement}[1]{\vspace{\discussSpace}
{\small {\bf Implementation note:} #1} \vspace{\discussSpace} }

\newlength{\codeSpace}
\setlength{\codeSpace}{.3cm}

\newcommand{\mpifunc}[1]{\vspace{\codeSpace} {\bf #1} \vspace{\codeSpace} }

% -----------------------------------------------------------------------
%  A few commands to help in writing MPI man pages
%
\def\twoc#1#2{
\begin{list}
{\hbox to95pt{#1\hfil}}
{\setlength{\leftmargin}{120pt}
 \setlength{\labelwidth}{95pt}
 \setlength{\labelsep}{0pt}
 \setlength{\partopsep}{0pt}
 \setlength{\parskip}{0pt}
 \setlength{\topsep}{0pt}
}
\item
{#2}
\end{list}
}
\outer\long\def\onec#1{
\begin{list}
{}
{\setlength{\leftmargin}{25pt}
 \setlength{\labelwidth}{0pt}
 \setlength{\labelsep}{0pt}
 \setlength{\partopsep}{0pt}
 \setlength{\parskip}{0pt}
 \setlength{\topsep}{0pt}
}
\item
{#1}
\end{list}
}
\def\manhead#1{\noindent{\bf{#1}}}


\hyphenation{RE-DIS-TRIB-UT-ABLE sub-script mul-ti-ple}

\begin{document}

\setcounter{page}{1}
\pagenumbering{roman}

\title{ {\em D R A F T} \\ Maps, Groups and Contexts }

\author{
Lyndon Clarke, Mark Sears, Tony Skjellum, Marc Snir}


\date{May 13, 1993}

\maketitle
\hfuzz=5pt
%\tableofcontents

%\begin{abstract}
%We don't have an abstract yet.
%\end{abstract}

\setcounter{page}{1}
\pagenumbering{arabic}
\section{Introduction}

Goals

Assumptions (closed universe -- to be extended later)

Main objects: Maps and communicators


\section{Maps}

A {\bf map} is a one-to one-mapping $f: 0...m-1 \rightarrow 0...n-1$.  A
possible representation for such map is a list of $m$ integers in the range
$0...n-1$; it is often convenient to think of a map as being such list.
Another possible representation is as an algorithmic specification of
the map (e.g., hash function).  We represent a map by an opaque map object.

A {\bf group} is an ordered set of processes (where
a process is a primitive of MPI discussed elsewhere).
Each process in a group is
associated with a {\bf rank}, starting from zero.
We shall use maps in order to represent groups.
If processes
are numbered from $0$ to $n-1$, then a map $f: 0...m-1 \rightarrow 0...n-1$
represents a subset group of $m$ processes.  Note that a map, by itself, does
not represent a group; it does so only relative to a pre-defined
containing group.

\section{Context}
A {\bf context} is the MPI mechanism for partitioning communication
space.  A send made in a context cannot be received in another context.
Contexts are identified in MPI using {\bf context\_id}'s.

\section{Context ID's}
A {\bf context\_id} is a integer-like type that can be shared between
processes in MPI.

\section{Communicators}
All MPI communication (point to point and collective)
functions use {\bf communicators} {this replaces the word {\bf context}
everywhere in
current pt2pt and collcomm drafts} to provide a context
for the communication.  Communicators
bring together the concepts of group and context.

The source and destination
of a message is identified by the rank of that process within the group, and
communication using this communicator is restricted to processes within this
group.
Thus, the communicator restricts the ``spatial'' scope of communication,
and provides local process addressing.

\discuss{
The current communicators correspond to C1 objects in the previous draft.
Future extensions are expected to include C2 objects, that encapsulate two
groups: the sender group and the receiver group.
}

Communicators are represented by opaque {\bf communicator objects}.  Such
objects are opaque, and cannot be transferred from one node to another.
However, communicator objects can be identified
using {\bf context\_id}'s; these can be
communicated across processes.

\discuss{ Is the datatype of context\_id's {\tt INTEGER} or MPI-defined?}

Let {\tt comm} be a communicator that is associated with a group $G$ of size
$n$, and let $f:0..m-1 \rightarrow 0..n-1$ be a map.  Then
the pair {\tt (comm, f)}
defines a subgroup {\tt G(comm,f)} of $G$, namely the subgroup of processes
with ranks $f(0),...,f(m-1)$.
We say that {\tt map} is the map of the subgroup
{\tt G(comm,f)} within {\tt comm}.

An initial communicator {\tt MPI\_COMM\_INIT}
is defined when the program starts.
its associated group contains all processes that start the computation.

\section{Operations on maps}

\mpifunc{domain = MPI\_MAP\_DOMAIN(map)}

\begin{description}
\item[IN map] handle to map object
\item[OUT domain] domain of map (integer) -- the domain is the set $0...{\tt
domain} -1$.
\end{description}

\mpifunc{element = MPI\_MAP\_ELEMENT( map, rank)}

\begin{description}
\item[IN map] handle to map object
\item[IN rank] map argument (integer)
\item[OUT element] value of map  on argument {\tt rank} (integer)
\end{description}

\mpifunc{rank = MPI\_MAP\_RANK( map, element)}

\begin{description}
\item[IN map] handle to map object
\item[IN element] element in range of map
\item[OUT rank] inverse image of element, MPI\_INVALID\_ELEMENT
results if element is not in
range
\end{description}

\mpifunc{MPI\_MAP\_FLATTEN(map, array\_of\_integer, domain)}

\begin{description}
\item[IN map] handle to map object
\item[OUT array\_of\_integer]  list of values in the range of {\tt map}
\item[OUT domain] length of returned list -1 (integer).
\end{description}

\discuss{Definition of ``mpi\_map\_flatten'' is not definitive.}

\section{Map constructors}
The map constructors may be either local or may require communication.

\subsection{Local map constructors}

The execution of the following operation does not require interprocess
communication.  Examples of local map constructors are as follows:

\mpifunc{MPI\_MAP\_BUILD(map, array\_of\_integer)}

\begin{description}
\item[OUT map] handle to map object
\item[IN array\_of\_integer]  list of values in the range of {\tt map}
\item[IN domain] length of returned list -1 (integer).
\end{description}

\discuss{Syntax may change, (see also ``flatten'')}

\mpifunc{MPI\_MAP\_CONCAT(map1, map2, mapout)}
\begin{description}
\item[IN map1] map object handle
\item[IN map2] map object handle
\item[OUT mapout] map object handle
\end{description}
If map1 and map2 are distinct, then is the concatenation of
the maps.  $f(i) = f_1(1) \rm{if} i \le {\rm dom}(f_1), {\rm else}
= f_2(i-{\rm dom}(f_1))$.

\subsection{Collective map constructors}

The execution of the following operations require collective communication
within a group.   Examples are as follows:

\mpifunc{MPI\_MAP\_SPLIT(comm, mapin, key, index, mapout)}

This is a collective function that is called by all processes in the group
associated with  {\tt (comm, mapin)}.
All calling processes provide the same
values for the parameters {\tt comm} and {\tt mapin}.   A separate group of
processes is formed for each distinct value of {\tt key}, with the processes
ordered according to the value of {\tt index}.
Each process in such group is
returned in {\tt mapout} the map of this group within {\tt comm}.

\begin{description}
\item[IN comm] communicator object handle
\item[IN mapin] map object handle
\item[IN key] (integer)
\item[IN index] (integer)
\item[OUT mapout] map object handle
\end{description}

\section{Operations on communicators}

\mpifunc{MPI\_ALLOC\_CONTEXT(comm, map, array\_of\_contextids, len)}

Allocates an array of contextids.  This is a collective operation that is
executed by all processes in the group defined by {\tt (comm, map)}.  The
context\_ids that are returned are unique within the group associated with
{\tt (comm, map)}.

The array returned is the same on all processes that call the function
(same order, same number of elements).

\begin{description}
\item[IN comm] communicator object handle
\item[IN map] map object handle
\item[OUT array\_of\_contextids]
\item[IN len] number of context\_id's to allocate
\end{description}

\mpifunc{MPI\_MAKE\_COMM(comm, map, context\_id, newcomm)}

Creates a new communicator object, which is associated with the group defined by
{\tt (comm, map)}, and the contextid {\tt contextid}.  The operation does not
require communication.
However, the new communicator object should not be used
for communication between two processes unless they both have called the
function.

It is erroneous to invoke this function twice in the same process
with the same context\_id (unless the context\_id has been freed).

\discuss{Mark Sears disagrees with this!}

\begin{description}
\item[IN comm] communicator object handle
\item[IN map] map object handle
\item[IN contextid] contextid
\item[OUT newcomm] communicator object handle
\end{description}

\mpifunc{MPI\_SAFEMAKE\_COMM(comm, map, newcomm)}

is

\begin{verbatim}
MPI_ALLOC_CONTEXT(comm, map, context_id, 1);
MPI_MAKE_COMM(comm, map, context_id, newcomm);
``MPI_SYNCH(comm,map)''  /* by which we mean a synchronization operation
                       in the subgroup defined by (comm,map) */
\end{verbatim}

\discuss{ {\tt MPI\_SYNCH(comm,map)} is important to bootstrap -- but can be
coded using point-to-point.}

{\tt MPI\_SAFEMAKE\_COMM} creates a new communicator
object and synchronizes all
processes in the group associated with this object.  Thus, when this call
returns, the new communicator can be safely used.

\mpifunc{MPI\_MAP(comm, subcomm, map)}

Returns a map such that {\tt (comm, map)} is the group associated with {\tt
subcomm} ({\em i.e.},
returns the indices in the group associated
with {\tt comm} for all the processes
in the group associated with {\tt subcomm}).

\begin{description}
\item[IN comm] communicator object handle
\item[IN subcomm] communicator object handle
\item[OUT map] map object handle
\end{description}

\mpifunc{MPI\_CONTEXTID(comm, contextid)}

Returns the context\_id associated with the communicator {\tt comm}.


\begin{description}
\item[IN comm] communicator object handle
\item[OUT contextid] contextid
\end{description}


\discuss{Possible addition of functions are as follows:
{\tt MPI\_PARENT(comm)} returns the communicator used to create
{\tt comm};
}








\end{document}




>From weeks@mozart.convex.com Wed Jun  9 15:10:57 1993
Return-Path: <weeks@mozart.convex.com>
Received: from ens.ens-lyon.fr by lip.ens-lyon.fr (4.1/SMI-4.1)
	id AA15095; Wed, 9 Jun 93 15:10:53 +0200
Received: from convex.convex.com by ens.ens-lyon.fr (4.1/SMI-4.1)
	id AA12679; Wed, 9 Jun 93 15:06:13 +0200
Received: from mozart.convex.com by convex.convex.com (5.64/1.35)
	id AA01598; Wed, 9 Jun 93 08:04:35 -0500
Received: by mozart.convex.com (5.64/1.28)
	id AA28422; Wed, 9 Jun 93 08:06:42 -0500
Date: Wed, 9 Jun 93 08:06:42 -0500
From: weeks@mozart.convex.com (Dennis Weeks)
Message-Id: <9306091306.AA28422@mozart.convex.com>
To: Jack.Dongarra@lip.ens-lyon.fr
Subject: May 12 mpi mail #6
Status: R

A postscript file from snir or otto (I think this is different from the LaTeX
source I forwarded just before this one...)

%!PS-Adobe-2.0
%%Creator: dvips 5.47 Copyright 1986-91 Radical Eye Software
%%Title: PT2PT-V3.DVI.*
%%Pages: 29 1
%%BoundingBox: 0 0 612 792
%%EndComments
%%BeginProcSet: texc.pro
/TeXDict 250 dict def TeXDict begin /N /def load def /B{bind def}N /S /exch
load def /X{S N}B /TR /translate load N /isls false N /vsize 10 N /@rigin{
isls{[0 1 -1 0 0 0]concat}if 72 Resolution div 72 VResolution div neg scale
Resolution VResolution vsize neg mul TR matrix currentmatrix dup dup 4 get
round 4 exch put dup dup 5 get round 5 exch put setmatrix}N /@letter{/vsize 10
N}B /@landscape{/isls true N /vsize -1 N}B /@a4{/vsize 10.6929133858 N}B /@a3{
/vsize 15.5531 N}B /@ledger{/vsize 16 N}B /@legal{/vsize 13 N}B /@manualfeed{
statusdict /manualfeed true put}B /@copies{/#copies X}B /FMat[1 0 0 -1 0 0]N
/FBB[0 0 0 0]N /nn 0 N /IE 0 N /ctr 0 N /df-tail{/nn 8 dict N nn begin
/FontType 3 N /FontMatrix fntrx N /FontBBox FBB N string /base X array
/BitMaps X /BuildChar{CharBuilder} N /Encoding IE N end dup{/foo setfont}2
array copy cvx N load 0 nn put /ctr 0 N[}B /df{/sf 1 N /fntrx FMat N df-tail}
B /dfs{div /sf X /fntrx[sf 0 0 sf neg 0 0]N df-tail}B /E{pop nn dup definefont
setfont}B /ch-width{ch-data dup length 5 sub get} B /ch-height{ch-data dup
length 4 sub get} B /ch-xoff{128 ch-data dup length 3 sub get sub} B /ch-yoff{
ch-data dup length 2 sub get 127 sub} B /ch-dx{ch-data dup length 1 sub get} B
/ch-image{ch-data dup type /stringtype ne{ctr get /ctr ctr 1 add N}if}B /id 0
N /rw 0 N /rc 0 N /gp 0 N /cp 0 N /G 0 N /sf 0 N /CharBuilder{save 3 1 roll S
dup /base get 2 index get S /BitMaps get S get /ch-data X pop /ctr 0 N ch-dx 0
ch-xoff ch-yoff ch-height sub ch-xoff ch-width add ch-yoff setcachedevice
ch-width ch-height true[1 0 0 -1 -.1 ch-xoff sub ch-yoff .1 add]/id ch-image N
/rw ch-width 7 add 8 idiv string N /rc 0 N /gp 0 N /cp 0 N{rc 0 ne{rc 1 sub
/rc X rw}{G}ifelse}imagemask restore}B /G{{id gp get /gp gp 1 add N dup 18 mod
S 18 idiv pl S get exec}loop}B /adv{cp add /cp X}B /chg{rw cp id gp 4 index
getinterval putinterval dup gp add /gp X adv}B /nd{/cp 0 N rw exit}B /lsh{rw
cp 2 copy get dup 0 eq{pop 1}{dup 255 eq{pop 254}{dup dup add 255 and S 1 and
or}ifelse}ifelse put 1 adv}B /rsh{rw cp 2 copy get dup 0 eq{pop 128}{dup 255
eq{pop 127}{dup 2 idiv S 128 and or}ifelse}ifelse put 1 adv}B /clr{rw cp 2
index string putinterval adv}B /set{rw cp fillstr 0 4 index getinterval
putinterval adv}B /fillstr 18 string 0 1 17{2 copy 255 put pop}for N /pl[{adv
1 chg}bind{adv 1 chg nd}bind{1 add chg}bind{1 add chg nd}bind{adv lsh}bind{
adv lsh nd}bind{adv rsh}bind{adv rsh nd}bind{1 add adv}bind{/rc X nd}bind{1
add set}bind{1 add clr}bind{adv 2 chg}bind{adv 2 chg nd}bind{pop nd}bind]N /D{
/cc X dup type /stringtype ne{]}if nn /base get cc ctr put nn /BitMaps get S
ctr S sf 1 ne{dup dup length 1 sub dup 2 index S get sf div put}if put /ctr
ctr 1 add N}B /I{cc 1 add D}B /bop{userdict /bop-hook known{bop-hook}if /SI
save N @rigin 0 0 moveto}N /eop{clear SI restore showpage userdict /eop-hook
known{eop-hook}if}N /@start{userdict /start-hook known{start-hook}if
/VResolution X /Resolution X 1000 div /DVImag X /IE 256 array N 0 1 255{IE S 1
string dup 0 3 index put cvn put} for}N /p /show load N /RMat[1 0 0 -1 0 0]N
/BDot 260 string N /rulex 0 N /ruley 0 N /v{/ruley X /rulex X V}B /V
statusdict begin /product where{pop product dup length 7 ge{0 7 getinterval
(Display)eq}{pop false}ifelse}{false}ifelse end{{gsave TR -.1 -.1 TR 1 1 scale
rulex ruley false RMat{BDot}imagemask grestore}}{{gsave TR -.1 -.1 TR rulex
ruley scale 1 1 false RMat{BDot}imagemask grestore}}ifelse B /a{moveto}B
/delta 0 N /tail{dup /delta X 0 rmoveto}B /M{S p delta add tail}B /b{S p tail}
B /c{-4 M}B /d{-3 M}B /e{-2 M}B /f{-1 M}B /g{0 M}B /h{1 M}B /i{2 M}B /j{3 M}B
/k{4 M}B /w{0 rmoveto}B /l{p -4 w}B /m{p -3 w}B /n{p -2 w}B /o{p -1 w}B /q{p 1
w}B /r{p 2 w}B /s{p 3 w}B /t{p 4 w}B /x{0 S rmoveto}B /y{3 2 roll p a}B /bos{
/SS save N}B /eos{clear SS restore}B end
%%EndProcSet
TeXDict begin 1000 300 300 @start /Fa 6 54 df<EAFFE0A3EAE000B3B3B3B3B3A3EAFFE0
A30B63768116>20 D<EAFFE0A31200B3B3B3B3B3A312FFA30B63808116>I<EAFFFCA3EAE000B3
B3B3B10E4A73801C>50 D<EAFFFCA3EA001CB3B3B3B10E4A80801C>I<12E0B3B3B3B1EAFFFCA3
0E4A73811C>I<131CB3B3B3B1EAFFFCA30E4A80811C>I E /Fb 1 4 df<12041206A2EAC660EA
F7E0EA3F80EA1F00EA3F80EAF7E0EAC660EA0600A212040B0D7E8D11>3
D E /Fc 2 36 df<1560A28181A2150EB71280A2C8EA0E001518A25D5DA2210E7E8F26>33
D<1203B3A7EA8304EAE31CEA7B78EA1FE0EA0FC0EA0780EA03007E0E217E9913>35
D E /Fd 2 63 df<127012F8A3127005057D840C>58 D<12E01278121EEA0780EA01E0EA007813
1EEB0780EB01E0EB0078141EEC0780A2EC1E001478EB01E0EB0780011EC7FC1378EA01E0EA0780
001EC8FC127812E019187D9520>62 D E /Fe 4 107 df<B61280A219027D8A20>0
D<EA07E0EA1FF8EA3FFCEA7FFEA2B5FCA6EA7FFEA2EA3FFCEA1FF8EA07E010107E9115>15
D<12C012F0123C120FEA03C0EA00F0133C130FEB03C0EB00F0143C140FEC0380EC0F00143C14F0
EB03C0010FC7FC133C13F0EA03C0000FC8FC123C12F012C0C9FCA7B61280A219227D9920>21
D<12C0B3B3A502297B9E0C>106 D E /Ff 36 122 df<1238127C127EA2123E121EA2127C12F8
1260070A7A8414>44 D<127012F8A312700505798414>46 D<EA07C0EA0FE0EA1FF0EA3C78EA38
38EA701CA2EAE00EA8EAF01EEA701CA2EA3838EA3C78EA1FF0EA0FE0EA07C00F177E9614>48
D<12035AA25A123FB4FC12F712471207ACEAFFF0A30C177C9614>I<EA01C0487EA21360A2EA07
70A4EA0630EA0E38A5EA1FFCA3EA1C1CEA3C1E38FE3F80A311177F9614>65
D<EAFFF813FE7FEA1C0FEB0380A4EB0700133FEA1FFEA27FEA1C07EB0380A41307EB0F00B5FC5B
5B1117809614>I<EA03C6EA0FFE121FEA3E3EEA3C1EEA780E127012F0EAE000A7EAF00E127012
78EA3C1EEA3E3CEA1FF8EA0FF0EA03C00F177E9614>I<EAFFE013F87FEA383E131E7F7FA2EB03
80A7130714005B131E133EEAFFFC5B13E011177F9614>I<B51280A3EA1C03A490C7FC1338A2EA
1FF8A3EA1C38A290C7FCEB01C0A4B5FCA31217809614>I<B51280A3EA1C03A490C7FC1338A2EA
1FF8A3EA1C38A290C7FCA5B47EA311177F9614>I<EA03C6EA0FFE121FEA3E3EEA3C1EEA780E12
7012F048C7FCA4EB7F80A338F00E001270EA781E123CEA3E3EEA1FFE120FEA03CE11177F9614>
I<38FE3F80A338380E00A7EA3FFEA3EA380EA738FE3F80A311177F9614>I<EAFFFEA3EA0380B1
EAFFFEA30F177E9614>I<EAFE7FA3EA383C137813F0A2EA39E0EA3BC01380EA3FC0A213E0123E
EA3CF0EA387013781338133CA2EAFE3FA310177F9614>75 D<EAFFC0A3001CC7FCADEB0380A4B5
FCA311177F9614>I<38FE0FE0A3383B1B80A413BBA2EA39B3A313F3EA38E3A21303A538FE0FE0
A31317809614>I<38FE3F80A3383B0E00A4138E1239A213CEA31238A213EE136EA4EAFE3EA311
177F9614>I<EA1FF0EA7FFCA2EA701CEAF01EEAE00EADEAF01EEA783CEA7FFCA2EA1FF00F177E
9614>I<EAFFF813FE7FEA1C0FEB07801303A41307EB0F00EA1FFF5B13F8001CC7FCA6B47EA311
17809614>I<EA1FF0EA7FFCA2EA783CEAF01EEAE00EACEAE3CEEAF3DEEA79FC127FA2EA1FF0EA
00781338133C131C131E0F1C7E9614>I<EAFFE07F7FEA383C7F130EA3131E5BEA3FF85B7FEA38
3C131CA41480EB1DC0EAFE1F130FEB070012177F9614>I<EA0FCCEA3FFC127FEAF87CEAF03CEA
E01CA2EAF000A2127EEA3FE0EA0FF8EA01FCEA003C131E130E12E0A2EAF01EEAF83CEAFFFC13F8
EAC7E00F177E9614>I<B51280A3EAE1C3A43801C000ADEA0FF8A311177F9614>I<38FF8FF8A338
1C01C0AEEA1E03000E1380EA0F073807FF006C5AEA00F81517819614>I<38FE3F80A338380E00
A26C5AA56C5AA4EA0630EA0770A3EA0360A213E0A26C5A11177F9614>I<38FE0FE0A338380380
A50018130013E3EA1DF7A213B7A5EA0DB6A21316EA0F1EA31317809614>I<38FE3F80A3383C1E
00EA1C1CEA1E3CEA0E38A26C5AA2EA036013E0A26C5AA7EA07F0A311177F9614>89
D<EAFFE0A3EAE000B3A5EAFFE0A30B1D799914>91 D<EAFFE0A31200B3A512FFA30B1D7F9914>
93 D<EA1FC0EA7FF07FEA783CEA301CEA00FC120F123FEA7F1C12F012E0133CEAF07C387FFF80
A2EA1F8F11107E8F14>97 D<EA07E0EA1FF8EA3FFCEA7C3CEA781EEAF00EEAFFFEA3EAE000EAF0
0E1278EA7E1EEA3FFCEA0FF8EA03E00F107E8F14>101 D<1203EA0780A2EA0300C7FCA4EAFF80
A31203AAEAFFFEA30F187D9714>105 D<EAFCF8EAFFFE7FEA1F0FEA1E07121CA838FF9FE0A313
10808F14>110 D<EAFCFCB47E7F381F0780EA1E03001C13C01301A4EA1E03EB0780EA1F0FEBFF
005BEA1CF890C7FCA5B47EA31218808F14>112 D<1207A5EAFFFCA3EA0700A6130EA3139E13FC
EA03F8EA00E00F157F9414>116 D<38FF3F80A3381C1C00A2120E5BA212071330A2EA0370A26C
5AA35BA3EA7B80127F90C7FC127E123C11187F8F14>121 D E /Fg 29 86
df<1230127812F81278127005057D840C>46 D<13181370EA03F0120FEA1C701200A213E0A6EA
01C0A6EA0380A61207EAFFF8A20D1C7C9B15>49 D<137E3801FF80380387C0EA0603EB01E0120F
A2121FA2120E1200EB03C0A2EB0780EB0F00130E5B5B13605BEA038038070180120E381C030012
30EA7FFF485AA2131C7E9B15>I<137C48B4FC38038780EA0603000F13C0A3380E078012001400
130E133CEA01F8485AEA001C7F130FA4127012F8A2EAF01E12E05BEA7078EA3FE0EA0F80121D7D
9B15>I<EB01C0EB03801307130FA2131B1333EB770013E713C7EA0187EA03071207EA0E0E120C
121812301260387FFFE0B512C038001C00A5133C3803FF80A2131C7E9B15>I<380601C03807FF
80140013FC0006C7FCA25AA413F8EA0FFCEA1F0EEA1C0F7F121800001380A3EB0F00127012F013
0EEAE01EEAC01CEA6038EA70F0EA3FE0EA0F80121D7D9B15>I<1218383FFFC0A21480EA700138
6003001306485AC65A5BA25B5B12015B1203A248C7FCA25A120EA2121EA35AA31218121D7B9B15
>55 D<137C48B4FC38038780EA0703120EEB01C0A2381E0380A2EB0700EA0F8613DCEA07F81203
487EEA0E7E487EEA380F12707F12E0A31306130EEA701CEA3878EA1FF0EA0FC0121D7D9B15>I<
13F8EA03FCEA070EEA0E07121CA2003C138012381278A4130F1400A2EA381F5BEA1FEFEA0FDEEA
001E131CA2EA603812F05B485AEAC3C0EA7F80003EC7FC111D7C9B15>I<14301470A214F08013
01A2EB0378A21306147CEB0C3CA21318A21330A2497EA2EBFFFEA23801801EA23803001F801206
120F397FC0FFF012FF1C1D7F9C1F>65 D<380FFFFC14FF3900F00780EC03C0A2EC01E0A2D801E0
13C01403A2EC0780EC1F00EBFFFC5AEBC03E140FEC0780A3EA0780A4EC0F00141E380F007CB55A
14E01B1C7E9B1D>I<903807F030EB1FFC90387C0E603901F003E0EA03C038078001EA0F00000E
1300001E14C05AA25A1500A25AA5EC0180EC03001270127814066C5B001C131C000F5B3807C0E0
6CB45AD8007EC7FC1C1E7C9C1E>I<380FFFFCECFF803900F007C0EC01E0EC00F015701578485A
1538A3153C1538485A1578A3157015F0484813E0140115C0EC03801407EC0E00380F007CB512F0
14C01E1C7E9B20>I<000FB512E0A23800F003EC01C01400A33801E060A31500EBE1E013FF485B
13C113C0A215C0ECC18038078001A2EC0300A25C140E380F003EB512FE5C1B1C7E9B1C>I<000F
B512C0A23800F007EC03801401A3EA01E01461A2EC600014E013E148B45AA213C113C0A3380781
800180C7FCA5120FEAFFFC5B1A1C7E9B1B>I<903807F030EB1FFC90387C0E603901F003E0EA03
C038078001EA0F00000E1300001E14C05AA25A1500A25AA3ECFFF0A2EC0F80150012701278A27E
001C5B000F133E3807C0F63803FFC2C66CC7FC1C1E7C9C21>I<390FFF9FFE143F3900F003C0A5
3901E00780A590B5FC481400EBC00FA53807801EA6000F133E39FFF3FFE015C01F1C7E9B1F>I<
380FFF80A23800F000A5485AA6485AA6485AA6120FEAFFF8A2111C7F9B0F>I<3801FFF0A23800
0F00A5131EA65BA65BA2127012F8A2485A485AEAE1C0EA7F80001FC7FC141D7E9B15>I<390FFF
87FEA23900F003E0EC0180EC030014065C48485A14705CEBE1C013E313E73803CDE013D9EBF1F0
13E013C01478EA078080A280A280000FEB1F8039FFF87FF013F01F1C7E9B20>I<380FFFC0A238
00F000A5485AA6485AA41406140CEA0780A2141C141814381478380F01F8B512F0A2171C7E9B1A
>I<D80FFCEB0FFCA20000EC1F80A2153713DE1567D8019EEB6F0015CFA2EC018F138FEC030FD8
030F131E1406A2EB078CA2149800065C14B0A2EB03E0A214C0001E147C3AFFE387FFC001C31480
261C7E9B26>I<390FF80FFEA23900FC01E0EC00C0A213DEA239018F0180A214811387A2EB83C1
390303C300EB01E3A3EB00F3A20006137EA2143EA3141E001E131C38FFE00C13C01F1C7E9B1F>
I<EB07F0EB3FFCEBF81E3801E0073903C00380D8070013C0481301001E14E0121C003C13001238
007814F0A348EB01E0A4EC03C0A30070EB0780007814005C6C131E5C6C5B380F83E03803FF80C6
48C7FC1C1E7C9C20>I<380FFFFC14FF3900F00F80140315C01401A23801E003A315801407EC0F
003803C03EEBFFF814E001C0C7FCA3485AA6120FEAFFF85B1A1C7E9B1C>I<380FFFF814FE3900
F00F80140315C01401A23801E003A3EC0780EC0F00143E3803FFF85CEBC07880A2143E3807803C
A51518000F1430EAFFF89038F01FE0C7EA07C01D1D7E9B1F>82 D<EB3F0CEBFFCC3801C1F83803
0078481338120EA3001E13301400A26C7E13F86CB4FC6C13806C13C038003FE0130313011300A2
1260A3EB01C0127038F8038038FE0F00EACFFEEA83F8161E7E9C17>I<001FB512F05A383C0781
0038EB806012701260A2EB0F0012C0A200001400A3131EA65BA6137C381FFFE0A21C1C7C9B1E>
I<39FFF8FFE0A2390F001E00140CA4001E5BA6485BA6485BA300385BA2383C0180D81C03C7FCEA
0E0EEA07FCEA01F01B1D7A9B1F>I E /Fh 53 122 df<90381FE1F890B512FC3903F03F3E3807
C07EEB807C000F141C1500A5B612C0A2390F807C00AE397FE1FFC0A21F1D809C1C>11
D<EB1FFC13FF3803F07CEA07C01380120FA6B512FCA2380F807CAE397FF3FF80A2191D809C1B>
13 D<13301360EA01C0EA038013005A120E121E121C123CA212381278A312F85AA97E1278A312
38123CA2121C121E120E7E7E1380EA01C0EA006013300C297D9E13>40 D<12C0126012387E120C
120E7E1380120313C0A2120113E0A313F01200A9120113E0A313C01203A2138012071300120E12
0C121C5A12605A0C297D9E13>I<1238127C12FE12FFA2127F123B120312071206A2120C121812
301220080F7D860D>44 D<EAFFE0A40B047F8A10>I<1238127C12FEA3127C123807077D860D>I<
EA0FF0EA3FFCEA703EEAF03F12F8A3EA203EEA007C13F813F0EA01C0A21380A5C7FCA4EA0380EA
07C0EA0FE0A3EA07C0EA0380101D7D9C17>63 D<EB0380A2497EA3497EA2497E131BA2EB31F8A2
EB61FC1360EBE0FEEBC07EA248487E90B5FC481480EB001FA20006EB0FC0A2000E14E0000C1307
39FFC07FFEA21F1C7E9B24>65 D<B512F814FF390FC01F80EC0FC0A215E0A515C0EC1F8090B512
005C9038C03F80EC0FC0EC07E0A215F0A515E0140FEC1FC0B61280ECFC001C1C7E9B22>I<9038
1FE0209038FFF8E03803F80F3807E007380FC001EA1F8048C7FCA2007E1460A212FE1500A7007E
1460A27E15C06C7E390FC001803907E003003803F80E3800FFFCEB1FE01B1C7D9B22>I<B512F8
14FF390FC01FC0EC07E0EC03F0EC01F8A2EC00FCA315FEA815FCA3EC01F8A2EC03F0EC07E0EC1F
C0B6120014F81F1C7E9B25>I<B6FCA2380FC01F1407801580A2EBC181A3EC800013C313FFA213
C313C1A21560A29038C000E015C0A21401A21403EC0F80B6FCA21B1C7E9B1F>I<B6FCA2380FC0
1F1407801580A21401EBC181A2EC8000A213C313FFA213C313C1A401C0C7FCA6B5FCA2191C7E9B
1E>I<90380FF00890387FFE383901FC07783907E001F8380FC0004848137848C71238A2481418
127E12FE1500A5EC7FFFA2007EEB01F8127F7EA2EA1F80EA0FC0EA07F03801FC0739007FFE7890
380FF818201C7D9B26>I<39FFFC3FFFA2390FC003F0AA90B5FCA2EBC003AC39FFFC3FFFA2201C
7E9B25>I<B5FCA2EA07E0B3A6B5FCA2101C7F9B12>I<B5FCA2EA0FC0AF1403A31407A21406140E
141E147EB512FEA2181C7E9B1D>76 D<D8FFC0EB03FF6D5B000F15F0D80DF0130DA3D80CF81319
A2017C1331A26D1361A26D13C1A390380F8181A2903807C301A2EB03E6A2EB01FCA3EB00F8A23A
FFC0701FFFA2281C7E9B2D>I<39FFE003FFA2390FF000307FEA0DFCEA0CFE137E7FEB1F8014C0
EB0FE0EB07F01303EB01F814FCEB00FE147F143FEC1FB015F0140F1407140314011400A2D8FFC0
13701530201C7E9B25>I<EB3FE03801FFFC3803F07E390FC01F80391F800FC0EB00074814E048
14F0007E1303A200FE14F8A8007E14F0A2007F13076C14E0EB800F001F14C0390FC01F803903F0
7E006CB45A38003FE01D1C7D9B24>I<B512F814FE390FC03F80141FEC0FC015E0A615C0EC1F80
143F9038FFFE0014F801C0C7FCAAEAFFFCA21B1C7E9B21>I<EB3FE03801FFFC3803F07E390FC0
1F80391F800FC0A2393F0007E04814F0007E1303A200FE14F8A8007E14F0A2007F1307D83F0F13
E0EB9FCF391FB0EFC0390FF07F800003EB7E006CB45A39003FF808EB003CEC3FF8A2141F15F014
0FEC07E0EC03C01D247D9B24>I<B512F014FE380FC03F6E7E6E7E81A55D4A5A4AC7FCEBFFFE14
F0EBC0F8147C80143FA381A3EDC180EC1FE33AFFFC0FFF00EC03FE211C7E9B24>I<3807F86038
1FFEE0EA3C07EA7801EA700012F01460A26C130012FEEAFFE0EA7FFE6C7E1480000F13C06C13E0
EA007FEB03F01301130012C0A214E07E38F001C0EAFC0338EFFF00EAC3FC141C7D9B1B>I<007F
B512E0A238781F81007013800060146000E0147000C01430A400001400B03807FFFEA21C1C7E9B
21>I<39FFFC03FFA2390FC00030B3120715606C6C13E03901F001C03900FC078090387FFE00EB
0FF8201C7E9B25>I<3AFFFC01FF80A23A0FC00018006C6C5BA26D1370000314606D13E000015C
7F0000495AA2D97E03C7FCA2EB7F07EB3F06148EEB1F8C14CCEB0FD8A2EB07F0A36D5AA26D5AA2
211C7F9B24>I<3BFFFC7FFE0FFCA23B0FC007E000C081D9E003130100071680EC07F8D803F0EC
0300A29039F80CFC0700011506EC1CFE9039FC187E0E0000150CEC387F90397E303F18A290397F
601FB8013F14B002E013F0ECC00F011F5CA26D486C5AA2EC00036D5CA22E1C7F9B31>I<397FFE
1FFEA23907F001803803F8036C6C48C7FC000013066D5AEB7F1C6D5A14B0EB1FE0130FA26D7E6D
7E1307497EEB0CFEEB187EEB387F496C7EEB601F01C07F00016D7E496C7EEA03003AFFF03FFF80
A2211C7F9B24>I<3AFFFC01FF80A23A0FE00038006C6C13306C6C137015606C6C5B3800FE015D
D97F03C7FCEB3F871486EB1FCEEB0FFC5C13076D5AAAEB3FFFA2211C7F9B24>I<EA0FF8EA1FFE
383E1F80130714C0121C1200EA03FF121FEA3F87EA7E0712FCA3130FEA7E1F383FFBF8EA0FE115
127F9117>97 D<B4FCA2121FA9EB1FC0EBFFE0EBC1F81300147CA2147EA6147CA2EB80F8EBC1F0
381C7FE038181F80171D7F9C1B>I<EA03FCEA0FFEEA1F1F123E127C130E00FCC7FCA6127C387E
0180EA3E03381F0700EA0FFEEA03F811127E9115>I<EB0FF0A21301A9EA03F1EA0FFFEA1F07EA
3E01127CA212FCA6127CA2EA3E03EA1F0F380FFDFEEA03F1171D7E9C1B>I<EA01FCEA0FFF381F
0F80383E07C0EA7C0314E012FCB5FCA200FCC7FCA3127C007E1360003E13C0EA1F81380FFF00EA
01FC13127F9116>I<133F3801FF803803E7C0EA07C7EA0F87EB8380EB8000A5EAFFF8A2EA0F80
AEEA7FF8A2121D809C0F>I<3803F0F0380FFFF8383E1F38383C0F30007C1380A4003C1300EA3E
1FEA1FFCEA33F00030C7FC12707EEA3FFF14C06C13E04813F0387801F838F00078A3007813F038
3E03E0381FFFC03803FE00151B7F9118>I<B4FCA2121FA9EB1FC0EB7FE0EBE1F0EB80F8A21300
AB38FFE7FFA2181D7F9C1B>I<121E123FA25A7EA2121EC7FCA5B4FCA2121FAEEAFFE0A20B1E7F
9D0E>I<B4FCA2121FA9EB0FF8A2EB0380EB0700130C5B137013F87F13BC133E7F7F1480EB07C0
EB03E038FFC7FCA2161D7F9C19>107 D<B4FCA2121FB3A7EAFFE0A20B1D7F9C0E>I<39FF1FC0FE
90387FE3FF3A1FE1F70F80903980FC07C0A2EB00F8AB3AFFE7FF3FF8A225127F9128>I<38FF1F
C0EB7FE0381FE1F0EB80F8A21300AB38FFE7FFA218127F911B>I<EA01FC380FFF80381F07C038
3E03E0387C01F0A200FC13F8A6007C13F0A2383E03E0381F07C0380FFF803801FC0015127F9118
>I<38FF1FC0EBFFE0381FC1F8130014FC147C147EA6147C14FCEB80F8EBC1F0EB7FE0EB1F8090
C7FCA6EAFFE0A2171A7F911B>I<EAFE3E137F381ECF80EA1F8FA2EB070090C7FCAAEAFFF0A211
127F9114>114 D<EA1FD8EA3FF8EA7038EAE018A2EAF000EAFF80EA7FE013F0EA1FF8EA07FCEA
007CEAC01CA212E0EAF038EAFFF0EACFC00E127E9113>I<1203A35AA25AA2123FEAFFFCA2EA1F
00A9130CA4EA0F98EA07F0EA03E00E1A7F9913>I<38FF07F8A2EA1F00AC1301EA0F03EBFEFFEA
03F818127F911B>I<38FFC1FCA2381F0060EB80E0000F13C013C03807C180A23803E300A2EA01
F6A213FE6C5AA21378A2133016127F9119>I<38FFC7FCA2381F8180EA0F833807C700EA03EEEA
01FC5B1200137C13FEEA01DFEA039F38070F80380607C0380C03E038FF07FCA216127F9119>
120 D<38FFC1FCA2381F0060EB80E0000F13C013C03807C180A23803E300A2EA01F6A213FE6C5A
A21378A21330A25B1270EAF8E0EAC0C0EAE380007FC7FC123E161A7F9119>I
E /Fi 74 126 df<126012F0AF12601200A4126012F0A212600419779816>33
D<EA03C0487E120FEA1EF0EA1C70A3EBF7E013E7121D381FC7006C5A130E121FEA3F1EEA7F9CEA
F3BCEAE3F812E1EBF1C012E0EAF1F9EA7FFF383F9F80381F0F0013197F9816>38
D<13E01201EA07C013005A121E5A123812781270A312F05AA77E1270A312781238123C7E7E7E13
C0EA01E012000B217A9C16>40 D<12E07E127C121C121E7EEA0780120313C01201A313E01200A7
120113C0A3120313801207EA0F00121E121C127C12F05A0B217C9C16>I<EA01C0A4EA71C738F9
CF80387FFF00EA1FFCEA07F0A2EA1FFCEA7FFF38F9CF803871C700EA01C0A411127E9516>I<EA
01C0A8B51280A33801C000A811137E9516>I<1238127C127EA2123E120E121E123C127C12F812
60070B798416>I<B51280A311037E8D16>I<127012F8A312700505788416>I<EA03E0EA0FF848
7EEA1E3CEA380EEA780FEA7007A238E00380A8EAF00700701300A2EA780FEA3C1E6C5AEA1FFC6C
5AEA03E011197E9816>48 D<EA018012031207A2121F127F12FF12731203AEEA7FF813FC13F80E
197C9816>I<EA07E0EA1FF8EA7FFEEA783FEAF00FEB07801303A21200A2130714005B131E5B5B
5BEA03E0EA078048C7FC381E0380123CEA7FFFB5FC7E11197E9816>I<EA07E0EA1FFCEA7FFEEA
781F7F7F12005BA2133EEA07FC5B7FEA001E130714801303A212F013071400EAF81FEA7FFE6C5A
EA07E011197E9816>I<137C13FC13DC1201EA039CA2EA071C120F120E121E123C1238127812F0
B512E0A338001C00A53801FFC0A313197F9816>I<EA3FFEA30038C7FCA7EA3FF013FC7FEA3C0F
EA3007000013801303126012F01307EB0F006C5AEA7FFEEA1FF8EA07E011197E9816>I<13F8EA
03FEEA0FFFEA1F0F123E123CEA78060070C7FC12F0EAF7F8EAFFFEA2EAF80F38F00780A2EAE003
12F0A21270EA7807EB0F006C5AEA1FFEEA0FF8EA03E011197E9816>I<12E0B51280A338E00F00
131EC65A13381378137013F05B12015B12035BA3120790C7FCA7111A7E9916>I<EA07F0EA1FFC
487EEA7C1F38F00780EAE003A338700700EA7C1FEA1FFCEA07F0EA1FFCEA3C1EEA700700F01380
EAE003A3EAF00700701300EA7C1FEA3FFE6C5AEA07F011197E9816>I<EA03E0EA0FF8EA3FFCEA
7C1EEA780F487E12E01480A21303EAF007A2EA780FEA3FFFA2EA0FF3EA00071400EA300FEA780E
131E137CEA7FF8EA3FE0EA0F8011197E9816>I<1238127CA312381200A81238127CA3123C121C
123C123812F812F012600618799116>59 D<EB03801307131FEB3E0013FCEA03F0485AEA1F8000
3EC7FC12FC12F012FC123E6C7EEA07E06C7EEA00FC133EEB1F801307130311157E9616>I<EA7F
FFB51280A2C8FCA5B51280A26C1300110B7E9116>I<13E0487EA213B0A2EA03B8A31318EA071C
A5EA0E0EA2EA0FFEA2487EEA1C07A3387F1FC000FF13E0007F13C013197F9816>65
D<EA7FF8EAFFFE6C7EEA1C0FEB07801303A313071400EA1FFF5BA2EA1C1FEB038014C01301A413
03EB0780EA7FFFB51200EA7FFC12197F9816>I<3801F180EA07FF5AEA1F0FEA3C071278130312
7000F0C7FC5AA77E387003801278A2EA3C07381F0F00EA0FFE6C5AEA01F011197E9816>I<EA7F
F8EAFFFE6C7EEA1C0FEB0780EB03C01301A214E01300A8EB01C0A21303EB0780130F387FFF0048
5AEA7FF81319809816>I<387FFFC0B5FC7EEA1C01A490C7FCA2131CA2EA1FFCA3EA1C1CA290C7
FC14E0A5EA7FFFB5FC7E13197F9816>I<B512E0A3EA1C00A41400A2131CA2EA1FFCA3EA1C1CA2
90C7FCA6B47E7F5B13197F9816>I<EA03E348B4FC121FEA3E1FEA3C0F12787F127000F0C7FC5A
A4EB3F80EB7FC0EB3F8038F007001270EA780FA2123CEA3E1F6CB4FC1207EA03E712197E9816>
I<387F1FC038FFBFE0387F1FC0381C0700A7EA1FFFA3EA1C07A9387F1FC038FFBFE0387F1FC013
197F9816>I<EAFFFEA3EA0380B3EAFFFEA30F197D9816>I<387F0FE038FF8FF0387F0FE0381C07
80EB0F00131E131C133C5B5BEA1DE07F121F7F1338EA1E3C131CEA1C1E7F7F14801303387F07E0
38FF8FF0387F07E01419809816>75 D<EAFFC0A3001CC7FCAE144014E0A4B5FCA313197F9816>
I<38FC07E0EAFE0FA2383A0B80EA3B1BA413BBA2EA39B3A413F3EA38E3A21303A538FE0FE0A313
197F9816>I<387E1FC038FF3FE0387F1FC0381D07001387A313C7A2121CA213E7A31367A21377
A21337A31317EA7F1FEAFF9FEA7F0F13197F9816>I<EA1FFC487E487EEA780F38F00780EAE003
AEEAF007A238780F00EA7FFF6C5A6C5A11197E9816>I<EA7FF8EAFFFE6C7E381C0F80130314C0
1301A313031480130F381FFF005B13F8001CC7FCA7127F487E6CC7FC12197F9816>I<EA1FFC48
7E487EEA780F38F00780EAE003AD13E312E1EAF0F738787F00EA7FFF6C5A6C5AEA001C131E130E
130F7FA2111F7E9816>I<EA7FE0EAFFF86C7EEA1C1E7F7FA45B131EEA1FFC5B7FEA1C3E130EA4
14201470A2387F0FF038FF87E0387F03C014197F9816>I<EA07E3EA1FFF127FEA781F487E487E
A290C7FC7E1278EA7F80EA1FF0EA07FCC67E130FEB07801303A212E0A2EAF00738F80F00EAFFFE
5BEAC7F011197E9816>I<387FFFE0B5FCA2EAE0E0A400001300AFEA07FC487E6C5A13197F9816>
I<387F07F038FF8FF8387F07F0381C01C0B0EA1E03000E1380EA0F8F3807FF006C5AEA00F81519
809816>I<38FE0FE0EAFF1FEAFE0F38380380381C0700A4EA0E0EA4EA060CEA071CA4EA031813
B8A3EA01B013F0A26C5A13197F9816>I<38FC07E0EAFE0FEAFC07387001C0A300301380EA3803
A313E3EA39F3A213B300191300A61313EA1B1BEA0F1EA2EA0E0E13197F9816>I<387F1F80133F
131F380E1E00131CEA073C1338EA03B813F012015B120012017F120313B81207131CA2EA0E0EA2
487E387F1FC000FF13E0007F13C013197F9816>I<38FE0FE0EAFF1FEAFE0F381C0700A2EA0E0E
A26C5AA3EA03B8A2EA01F0A26C5AA8EA03F8487E6C5A13197F9816>I<EAFFF0A3EAE000B3A8EA
FFF0A30C20789C16>91 D<EAFFF0A3EA0070B3A8EAFFF0A30C207F9C16>93
D<B51280A311037E7E16>95 D<EA1FE0EA7FF87FEA783CEA301EEA000E133EEA07FE123FEA7FCE
EAF80E12E0A2EAF01EEAF83E387FFFE0EA3FF7EA0FC313127E9116>97 D<127E12FE127E120EA4
133EEBFF80000F13C0EB83E01301EB00F0120E1470A4000F13F014E01381EB83C013FF000E1300
EA067C1419809816>I<EA03F8EA0FFE121FEA3C1EEA780CEA700012F05AA47EEA70071278EA3E
0FEA1FFEEA0FFCEA03F010127D9116>I<133F5B7F1307A4EA03E7EA0FFF123FEA3C1F487E1270
EAF00712E0A46C5AA2EA781FEA7C3F383FFFE0381FF7F03807C7E014197F9816>I<EA07E0EA0F
F8EA1FFCEA3C3EEA780EEA700FEAF007B5FCA3EAE0007EEA70071278EA3E1FEA1FFEEA0FFCEA03
F010127D9116>I<131FEB7F8013FFEA01E7EBC30013C0A2EA7FFFB5FCA2EA01C0ACEA3FFE487E
6C5A11197F9816>I<3803E3C0380FFFE05A381E3CC0383C1E00EA380EA3EA3C1E6C5AEA1FFC48
5AEA3BE00038C7FC123CEA1FFC48B4FC4813C0EA780338F001E0EAE000A3EAF001387C07C0383F
FF80380FFE00EA03F8131C7F9116>I<127E12FE127E120EA4137CEA0FFF148013871303A2120E
A9387FC7F038FFE7F8387FC7F01519809816>I<EA0180EA03C0A2EA0180C7FCA4EA7FC0A31201
ACEA7FFFB5FC7E101A7D9916>I<127E12FE127E120EA4EB7FE0A3EB0F00131E5B5B5BEA0FF8A2
13BC131EEA0E0E130FEB0780387F87F0EAFFCFEA7F871419809816>107
D<EAFFC0A31201B3B51280A311197E9816>I<38FBC78038FFEFC0EBFFE0EA3E7CEA3C78EA3870
AA38FE7CF8A31512809116>I<EA7E7CB5FC6C1380EA0F871303A2120EA9387FC7F038FFE7F838
7FC7F01512809116>I<EA03E0EA0FF8487EEA3C1E487EEA700738E00380A5EAF00700701300EA
780FEA3C1EEA1FFC6C5AEA03E011127E9116>I<EA7E3E38FEFF80007F13C0380F83E01301EB00
F0120E1470A4000F13F014E01381EB83C013FF000E1300137C90C7FCA6EA7FC0487E6C5A141B80
9116>I<38FF0F80EB3FE013FFEA07F1EBE0C0EBC0005BA290C7FCA7EAFFFCA313127F9116>114
D<EA0FECEA3FFC127FEAF03CEAE01CA2EAF000EA7F80EA1FF0EA07FCEA003EEAE00EA212F0EAF8
1EEAFFFC13F8EAC7E00F127D9116>I<12035AA4EA7FFFB5FCA20007C7FCA75BEB0380A2130713
873803FF005BEA00F811177F9616>I<387E1F80EAFE3FEA7E1FEA0E03AA1307EA0F0FEBFFF06C
13F83803F3F01512809116>I<387F1FC000FF13E0007F13C0381C0700EA1E0FEA0E0EA36C5AA4
EA03B8A3EA01F0A26C5A13127F9116>I<387F1FC0133F131F380F1C00EA073CEA03B813F01201
6C5A12017FEA03B8EA073C131CEA0E0E387F1FC038FF3FE0387F1FC013127F9116>120
D<387F1FC038FF9FE0387F1FC0381C0700120E130EA212075BA2EA039CA21398EA01B8A2EA00F0
A35BA3485A1279127BEA7F806CC7FC123C131B7F9116>I<EB1F80137FEA01FFEBE0005BA91203
EA7F8048C7FCA26C7EEA03C01201A97FEBFF80EA007F131F11207E9C16>123
D<12E0B3AE0320779C16>I<12FCB4FC13C012031201A97F6CB4FCEB7F80A2EBFF00EA01E05BA9
120312FF90C7FC12FC11207E9C16>I E /Fj 23 122 df<3801FFE0A238003C00A45BA45BA448
5AA4485AA4485AA4EAFFF0A2131C7E9B10>73 D<48B4EB03FE1507D8003F14C0150F151BA2016F
EB3780EB67801567A201C7EBCF00EC818FA2EC830FD80187131E1486A2148C390307983CA214B0
EB03F00006495AA214C0000E138039FFC38FFF140F271C7E9B25>77 D<3801FFFEECFF8039003C
03C0EC01E0A31378A315C0EBF0031580EC0700141E3801FFFC14F001E0C7FCA2485AA4485AA4EA
FFF0A21B1C7E9B1C>80 D<EA03CCEA07FCEA0E7CEA183CEA383812301270A2EAE070A3137113E3
A212E1EA63E6EA7E7CEA3C3810127B9115>97 D<EA01F0EA07F8EA0E18EA1C3CEA3878EA3030EA
7000A25AA513101338EA70F0EA3FC0EA1F000E127B9113>99 D<EB1F80133F13071400A4130EA4
EA03DCEA07FCEA0E7CEA183CEA383812301270A2485AA313715BA212E1EA63E6EA7E7CEA3C3811
1D7B9C15>I<EA01E0EA07F8EA0E18121C123812701370EA7FE0EAFF80EAE000A41310EA6038EA
70F0EA3FC0EA1F000D127B9113>I<EB03C0EB07E0EB0CF0EB1DE0EB1CC014005BA53803FF805A
38007000A45BA5485AA5485AA448C7FC126712F612FE5A12781425819C0D>I<EB798013FFEA01
CFEA0307000713001206120EA2EA1C0EA45BA2133CEA0C7CEA0FF8EA07B8EA0038A25B1260EAF0
E012F1EAFF806CC7FC111A7E9113>I<EA0FC0121F12035BA448C7FCA4EA0E78EA0FFC138E130E
121E121CA3485AA3EB3840007013C0A2EB7180A238E03F00EA601E121D7D9C15>I<13C0EA01E0
13C01380C7FCA6120E123FEA33801263EAC700A21207120EA35A1340EA38C0A3EA3980EA3F0012
1E0B1C7D9B0D>I<EA1F80123F12071300A4120EA45AA45AA45AA3127212E6A4127C1238091D7C
9C0B>108 D<391E1F07C0393F3F8FE0396761D8703863C1F038C781E0A2380701C0A2390E0380
E0A3EC81C2391C0701C6A2EC038CA239380E01F839180600F01F127D9122>I<EA1E1EEA3F7F38
67E380EA63C3EAC78313031207A2380E0700A3EB0E10001C1330A2EB1C60A238380FC038180780
14127D9117>I<EA01E0EA07F8EA0E1C121CEA380CEA300E1270A2EAE01CA31338A213701360EA
71C0EA3F80EA1E000F127B9115>I<EA0787380FDF803819F9C0EA18E0003113E013C01201A238
0381C0A31480EA070314001387138EEA0EFC137090C7FCA25AA4B47EA2131A7F9115>I<EA1E3C
EA3F7EEA67C3EA6387EAC78F130FEA07061300120EA45AA45A121810127D9112>114
D<EA01F0EA07F8EA0E18133CEA1C781330EA1E00EA1FC0EA0FE0EA07F01200EA2078EA707012F0
A2EAE0E0EA7FC0EA1F000E127D9111>I<13C01201A3EA0380A4EAFFE0A2EA0700A2120EA45AA3
1320EA3860A213C0A2EA1F80EA0F000B1A7D990E>I<380F0180EA1F8312331263EB870012C3EA
0707A2EA0E0EA31420380C1C60121C120C380E3CC0380FEF803803C70013127D9116>I<EA0F03
EA1F871233EA6383A212C3EA0703A2EA0E06A31304130C121CEA0E181330EA07E0EA03C010127D
9113>I<EA0F1EEA1FBFEA31E3EA61E713CF12C1EA01C613C0EA0380A3EA7381EAF703A2EAE706
EACF8EEA7DFCEA70F010127D9113>120 D<380F0180EA1F8312331263EB870012C3EA0707A2EA
0E0EA4EA0C1C121C120CEA0E3CEA0FF81203EA0038A2EA3070EA786013E0EA71C0EA3F80001EC7
FC111A7D9114>I E /Fk 42 122 df<903807F83F017FB512C03A01FC0FE3E03903F01FC7EA07
E0D80FC01387ED83C0ED8000A6B612FCA2390FC01F80B2397FF8FFF8A223237FA221>11
D<1238127C12FEA3127C123807077C8610>46 D<13181378EA01F812FFA21201B3A7387FFFE0A2
13207C9F1C>49 D<EA03FCEA0FFF383C1FC0387007E0007C13F0EAFE0314F8A21301127CEA3803
120014F0A2EB07E014C0EB0F80EB1F00133E13385BEBE018EA01C0EA0380EA0700000E1338380F
FFF05A5A5AB5FCA215207D9F1C>I<EA01FE3807FFC0380F07E0381E03F0123FEB01F813811301
EA1F03000C13F0120014E0EB07C0EB1F803801FE007F380007C0EB01F014F8EB00FCA214FE127C
A212FEA214FCEA7C01007813F8383C07F0380FFFC03803FE0017207E9F1C>I<14E013011303A2
1307130F131FA21337137713E7EA01C71387EA03071207120E120C12181238127012E0B512FEA2
380007E0A7EBFFFEA217207E9F1C>I<00101320381E01E0381FFFC0148014005B13F8EA1BC000
18C7FCA4EA19FCEA1FFF381E0FC0381807E01303000013F0A214F8A21238127C12FCA214F012F8
386007E0003013C0381C1F80380FFF00EA03F815207D9F1C>I<13FE3803FFC0380703E0380E00
F05A1478123C123E123F1380EBE0F0381FF9E0EBFFC06C13806C13C06C13E04813F0381E7FF838
3C1FFCEA7807EB01FEEAF000143E141EA2141C7E007813387E381F01F0380FFFC0000113001720
7E9F1C>56 D<1470A214F8A3497EA2497EA3EB06FF80010E7FEB0C3FA201187F141F01387FEB30
0FA201607F140701E07F90B5FCA239018001FCA200038090C7FCA20006147FA23AFFE00FFFF8A2
25227EA12A>65 D<B67E15E03907F001F86E7E157EA2157FA5157E15FE5DEC03F890B55AA29038
F001FCEC007E811680151F16C0A6ED3F80A2ED7F00EC01FEB612F815C022227EA128>I<D903FE
138090381FFF819038FF01E33901F8003FD803E0131F4848130F48481307121F48C71203A24814
01127EA200FE91C7FCA8127EED0180127F7E15036C6C1400120F6C6C1306D803F05B6C6C13386C
B413F090381FFFC0D903FEC7FC21227DA128>I<B67E15F03907F003FCEC007E81ED1F80ED0FC0
ED07E0A216F01503A316F8A916F0A3ED07E0A2ED0FC0ED1F80ED3F00157EEC03FCB612F0158025
227EA12B>I<B612FCA23807F000153C151C150C150EA215061418A3150014381478EBFFF8A2EB
F07814381418A21503A214001506A3150EA2151E153EEC01FCB6FCA220227EA125>I<B612F8A2
3807F001EC007815381518151CA2150CA21418A21500A214381478EBFFF8A2EBF07814381418A4
91C7FCA8B512E0A21E227EA123>I<B53883FFFEA23A07F0001FC0AD90B6FCA29038F0001FAFB5
3883FFFEA227227EA12C>72 D<D8FFF0EC0FFF6D5C000716E0D806FC1437A3017E1467A26D14C7
A290391F800187A290390FC00307A3903807E006A2903803F00CA2903801F818A3903800FC30A2
EC7E60A2EC3FC0A2EC1F80A3EC0F00D8FFF091B5FC140630227EA135>77
D<D8FFF8EB1FFE7F0007EC00C07FEA06FF6D7E6D7E6D7E130F806D7E6D7E6D7E130080EC7F80EC
3FC0EC1FE0EC0FF0140715F8EC03FCEC01FEEC00FF157FA2153F151F150F15071503A2D8FFF013
01150027227EA12C>I<EB07FC90383FFF809038FC07E03903F001F848486C7E4848137E48487F
A248C7EA1F80A24815C0007E140FA200FE15E0A9007E15C0007F141FA26C15806D133F001F1500
6C6C137E6C6C5B6C6C485A3900FC07E090383FFF80D907FCC7FC23227DA12A>I<B6FC15E03907
F007F0EC01FC1400157EA2157FA5157EA215FC1401EC07F090B512E0150001F0C7FCADB57EA220
227EA126>I<3801FC043807FF8C381F03FC383C007C007C133C0078131CA200F8130CA27E1400
B4FC13E06CB4FC14C06C13F06C13F86C13FC000313FEEA003FEB03FFEB007F143FA200C0131FA3
6C131EA26C133C12FCB413F838C7FFE00080138018227DA11F>83 D<007FB61280A2397E03F80F
00781407007014030060140100E015C0A200C01400A400001500B3A20003B512F8A222227EA127
>I<EA07FC381FFF80383F0FC0EB07E0130314F0121E1200A213FF1207EA1FC3EA3F03127E12FC
A4EA7E07EB1DF8381FF8FF3807E07F18167E951B>97 D<B47EA2121FABEB8FE0EBBFF8EBF07CEB
C01EEB801FEC0F80A215C0A81580141F1500EBC03EEB607C381E3FF8381C0FC01A237EA21F>I<
EBFF80000713E0380F83F0EA1F03123E127E387C01E090C7FC12FCA6127C127EA2003E13306C13
60380FC0E03807FF803800FE0014167E9519>I<EB03FEA2EB007EABEA01FCEA07FF380F81FEEA
1F00003E137E127E127C12FCA8127CA27E001E13FEEA0F833907FF7FC0EA01FC1A237EA21F>I<
13FE3807FF80380F87C0381E01E0003E13F0EA7C0014F812FCA2B5FCA200FCC7FCA3127CA2127E
003E13186C1330380FC0703803FFC0C6130015167E951A>I<EB3F80EBFFC03801F3E0EA03E7EA
07C7120FEBC3C0EBC000A6EAFFFCA2EA0FC0B2EA7FFCA213237FA211>I<3801FE1F0007B51280
380F87E7EA1F03391E01E000003E7FA5001E5BEA1F03380F87C0EBFF80D819FEC7FC0018C8FC12
1CA2381FFFE014F86C13FE80123F397C003F8048131F140FA3007CEB1F00007E5B381F80FC6CB4
5A000113C019217F951C>I<B47EA2121FABEB87E0EB9FF8EBB8FCEBE07CEBC07EA21380AE39FF
F1FFC0A21A237EA21F>I<120E121FEA3F80A3EA1F00120EC7FCA7EAFF80A2121FB2EAFFF0A20C
247FA30F>I<131C133E137FA3133E131C1300A7EA03FFA2EA003FB3A5127812FC133E137EEA78
FCEA7FF0EA1FC0102E83A311>I<EAFF80A2121FB3ADEAFFF0A20C237FA20F>108
D<3AFF87F00FE090399FFC3FF83A1FB87E70FC9039E03EC07C9039C03F807EA201801300AE3BFF
F1FFE3FFC0A22A167E952F>I<38FF87E0EB9FF8381FB8FCEBE07CEBC07EA21380AE39FFF1FFC0
A21A167E951F>I<13FE3807FFC0380F83E0381E00F0003E13F848137CA300FC137EA7007C137C
A26C13F8381F01F0380F83E03807FFC03800FE0017167E951C>I<38FF8FE0EBBFF8381FF07CEB
C03E497E1580A2EC0FC0A8EC1F80A2EC3F00EBC03EEBE0FCEBBFF8EB8FC00180C7FCA8EAFFF0A2
1A207E951F>I<EAFF1FEB3FC0381F67E013C7A3EB83C0EB8000ADEAFFF8A213167E9517>114
D<EA07F3EA1FFFEA780FEA7007EAF003A26CC7FCB4FC13F0EA7FFC6C7E6C7E120738003F80EAC0
0F130712E0A200F01300EAFC1EEAEFFCEAC7F011167E9516>I<13C0A41201A212031207120F12
1FB5FCA2EA0FC0ABEBC180A51207EBE300EA03FEC65A11207F9F16>I<38FF83FEA2381F807EAF
14FEA2EA0F833907FF7FC0EA01FC1A167E951F>I<39FFF01FE0A2390FC00600A2EBE00E000713
0CEBF01C0003131813F800015BA26C6C5AA2EB7EC0A2137F6D5AA26DC7FCA2130EA21B167F951E
>I<39FFF01FE0A2390FC00600A2EBE00E0007130CEBF01C0003131813F800015BA26C6C5AA2EB
7EC0A2137F6D5AA26DC7FCA2130EA2130CA25B1278EAFC3813305BEA69C0EA7F80001FC8FC1B20
7F951E>121 D E /Fl 71 124 df<EB7C3C3801FEFE38038FCF38070F8F000E1306EB0700A5B5
12F0A2380E0700AC387F0FF0A2181A809916>11 D<137CEA01FEEA0387485A120E130690C7FCA4
B5FCA2EA0E07AC387F0FE0A2131A809915>I<137F485AEA038FEA070FEA0E07A6B5FCA2EA0E07
AC387F9FE0A2131A809915>I<90383E0F803901FF7FC0390383F0E0380707C1000E1381903803
80C01500A4B612E0A2380E0380AC397F8FE3FCA21E1A809920>I<EA60C0EAF1E0EAF9F01278EA
1830A3EA3060EA70E0EAE1C0EA40800C0B7F9913>34 D<126012F012F812781218A31230127012
E01240050B7D990B>39 D<13C0EA0180EA03001206120E120C5A1238A212301270A21260A212E0
AA1260A21270A212301238A212187E120E12067EEA0180EA00C00A267E9B0F>I<12C012607E7E
121C120C7E1207A27E1380A21201A213C0AA1380A21203A213005AA212065A121C12185A5A5A0A
267E9B0F>I<126012F0A212701230A31260A212C01240040B7D830B>44
D<EAFFC0A30A0380880D>I<126012F0A2126004047D830B>I<130CA2131C1318A213381330A213
701360A213E013C0A212011380A2120313005A1206A2120E120CA2121C1218A212381230A21270
1260A212E05AA20E257E9B13>I<EA0780EA1FE0EA3870EA3030EA7038EA6018A2EAE01CACEA60
18A2EA7038EA3030EA3870EA1FE0EA07800E1A7E9813>I<12035AB4FCA21207B3EAFFF0A20C19
7D9813>I<EA0F80EA1FE0EA30F0EA6078EAF038EAF83CA2131C1270EA003CA213381370A213E0
EA01C0EA0380EA0700EA0E0C120C1218EA3018EA7FF812FFA20E197E9813>I<EA0F80EA1FE0EA
38F0EA7070EA7878133813781230EA0070A213E0EA0FC01380EA00E013701338133CA2127012F8
A2EAF038EA6078EA70F0EA3FE0EA0F800E1A7E9813>I<1260EA7FFEA213FCEA600CEAC0181330
A2EA006013C0A21201A2EA0380A41207A8EA03000F1A7E9813>55 D<EA0780EA1FE0EA3870EA30
30EA6038EAE018A2131CA5EA603C1270EA307CEA3FDCEA1F9CEA0018A21338EA3030EA78701360
EA71C0EA3F80EA1F000E1A7E9813>57 D<126012F0A212601200A8126012F0A2126004107D8F0B
>I<126012F0A212601200A8126012F0A212701230A31260A212C0124004177D8F0B>I<EA1F80EA
3FE0EA7070EAE03812F0A21260EA007013E0EA01C0EA03801300A21206A5C7FCA41206120FA212
060D1A7E9912>63 D<130C131EA3133FA3497E1367A3EBC3C0A3380181E0A348B47EA213000006
1378A3487F121E39FF81FFC0A21A1B7F9A1D>65 D<B5128014E0380F00F01478143CA5147814F0
EBFFE0A2EB01F0EB0078143C141EA5143CA214F8B512F014C0171A7F991B>I<EB3F023801FFC6
3803E0EE3807003E000E131E5A003C130E123800781306127012F01400A6140612701278123800
3C130C121C6C13186C13303803E0E03801FFC038003F00171C7E9A1C>I<B57E14E0380F00F014
388080A2140F801580A81500A25C140E5C143C14F8B512E01480191A7F991D>I<B512F8A2380F
007814381418141C140C1303A214005B13FFA213077FA214061300140CA3141CA21478B512F8A2
171A7F991A>I<B512F0A2EA0F001470143014381418A213061400A2130E13FEA2130E1306A390
C7FCA6EAFFF8A2151A7F9919>I<EB3F023801FFC63803E0EE3807003E000E131E5A003C130E12
3800781306127012F091C7FCA5903803FFC0A23970001E0012781238123C121C7E3807803E3803
E0763801FFE2D8003FC7FC1A1C7E9A1E>I<39FFF3FFC0A2390F003C00A9EBFFFCA2EB003CAB39
FFF3FFC0A21A1A7F991D>I<EAFFF0A2EA0F00B3A4EAFFF0A20C1A7F990E>I<EA0FFFA2EA0078B1
127012F8A3EAF0F0EA70E0EA3FC0EA0F80101B7F9914>I<EAFFF8A2000FC7FCAE1430A31470A2
146014E01303B5FCA2141A7F9918>76 D<39FF8001FF6D5A000F14F0A2380DE006A3380CF00CA3
EB7818A3EB3C30A3EB1E60A3EB0FC0A3EB0780121E39FFC78FFFEBC30F201A7F9923>I<B4EBFF
C07F000FEB1E00EBC00CEA0DE0A2EA0CF013F81378133C133E131E130FA2EB078CEB03CCA2EB01
ECEB00FCA2147CA2143C001E131CEAFFC0140C1A1A7F991D>I<137F3801FFC03807C1F0380F00
78001E7F001C131C487F0078130FA200707F00F01480A80078EB0F00A36C131E001C131C001E13
3C6C5B3807C1F03801FFC06C6CC7FC191C7E9A1E>I<B5128014E0380F00F014781438143CA514
38147814F0EBFFE0148090C7FCA9EAFFF0A2161A7F991A>I<137F3801FFC03807C1F0380F0078
001E7F001C131C003C131E487FA200707F00F01480A80070140000785BA2383C1C1E381C3E1C38
1E633C380F61F83807E1F03901FFC080EA007F130014E1ECFF0080143E141C19227E9A1E>I<EA
FFFEEBFFC0380F01E06D7E14701478A4147014F0495AEBFFC05CEB03C06D7E6D7EA615C0A238FF
F078EC3F80C7EA0F001A1B7F991C>I<EA07C2EA1FF6EA383EEA701EEA600E12E01306A3EAF000
1278EA7F80EA3FF0EA1FF8EA0FFCEA01FEEA001E130F130712C0A312E01306EAF00EEAFC1CEACF
F8EA83E0101C7E9A15>I<007FB5FCA238781E0F00601303A200E0148000C01301A3000090C7FC
AF3803FFF0A2191A7F991C>I<39FFF0FFC0A2390F001E00140CB17E6D5A12036D5A3801E0E038
007FC0011FC7FC1A1B7F991D>I<3AFFC7FF1FF0A23A1E00F803C091387801806CEC0300A214FC
5DD807801306EB819EA2D803C15B13C3140F01E3131C000114189038E60798A2D800F613B001FE
13F0EBFC03017C5BA2EB7801A201385BEB3000241B7F9927>87 D<39FFE01FF0A2390F800F0000
0713066C6C5A13E000015BEBF038000013306D5A137CEB3CC0133F6D5AA26DC7FCA9EBFFF0A21C
1A80991D>89 D<EA1020EA3870EA70E0EA60C0EAC180A3EAF1E0EAF9F01278EA30600C0B7B9913
>92 D<EA3F80EAFFC0EAF0E0137012601200EA0FF0123FEA787012E0A21373A2EA70F3EA7FFEEA
3E3C10107E8F13>97 D<12FCA2121CA813F8EA1FFE130F381C0380A2EB01C0A6EB0380A2381F0F
00EA1BFEEA18F8121A7F9915>I<EA07F0EA0FFCEA3C3C1230EA7018EAE000A61270EA380CEA3C
18EA0FF8EA07E00E107F8F11>I<137EA2130EA8EA07CEEA1FFEEA3C1EEA700EA212E0A6127013
1EEA3C3E381FFFC0EA07CF121A7F9915>I<EA07C0EA1FF0EA3838EA7018131CEAFFFCA2EAE000
A41270EA300CEA3C18EA0FF0EA07E00E107F8F11>I<13F8EA01FCEA03BCEA073CEA0E181300A5
EAFFC0A2EA0E00ACEA7FE0A20E1A80990C>I<130EEA079FEA1FF7EA3877EA7038A5EA3870EA3F
E0EA7780EA7000A2EA3FF013FC13FEEA700FEAE007A3EA700EEA781EEA1FF8EA07E010197F9013
>I<12FCA2121CA813F8EA1FFC131EEA1E0E121CAA38FF9FC0A2121A7F9915>I<1218123CA21218
C7FCA612FCA2121CACEAFF80A2091A80990A>I<13C0EA01E0A2EA00C01300A6EA07E0A21200B0
126012F0EAF1C0EA7F80EA3E000B2183990C>I<12FCA2121CA8EB7F80A2EB3C0013305B5B121D
EA1FE0121EEA1C70137813387F131E38FF3FC0A2121A7F9914>I<12FCA2121CB3A4EAFF80A209
1A80990A>I<38FCFC3F39FDFE7F80391F0FC3C0381E0781001C1301AA39FF9FE7F8A21D107F8F
20>I<EAFCF8B47EEA1F1EEA1E0E121CAA38FF9FC0A212107F8F15>I<EA07E0EA1FF8EA381CEA70
0EEA6006EAE007A6EA700EA2EA3C3CEA1FF8EA07E010107F8F13>I<EAFCF8EAFFFEEA1F0F381C
07801303EB01C0A6EB03801307381F0F0013FEEA1CF890C7FCA5B47EA212177F8F15>I<EA07C6
EA1FF6EA3C3EEA781EEA700E12E0A61270EA781EEA3C3EEA1FEEEA07CEEA000EA5EB7FC0A21217
7F8F14>I<EAFDE0EAFFF0EA1F70EA1E20EA1C00AAEAFFC0A20C107F8F0F>I<EA1F20EA7FE01270
EAE060A2EAF000127FEA3FC0EA1FE0EA01F0EAC070A212E0EAF0E0EAFFC0EA8F800C107F8F0F>
I<120CA4121CA2123CEAFFC0A2EA1C00A71360A5EA0FC0EA07800B177F960F>I<EAFC7EA2EA1C
0EAA131E133E380FFFC0EA07CF12107F8F15>I<38FF3F80A2381C0E00130CA26C5AA21338EA07
30A213F06C5AA26C5AA311107F8F14>I<39FF3F9F80A239381E0E00381C3E0C13361337000E5B
13631498000713B013C114F0A2380380E0A319107F8F1C>I<387F1FC0A2380E1E00EA071CEA03
B813B0EA01E012007F1201EA03B8EA071C1206EA0E0E38FF1FE0A21310808F14>I<38FF3F80A2
381C0E00130CA26C5AA21338EA0730A213F06C5AA26C5AA35BA2126100F3C7FC12C712FE127811
177F8F14>I<EA7FF8A2EA7070EA60E0126113C0EA63801207EA0F18120E121CEA3C38EA3830EA
7070EAFFF0A20D107F8F11>I<B512C0A21202808A13>I E /Fm 18 118
df<127812FCA412781200A5127812FCA4127806117D900C>58 D<EA0FF0EA3FFCEA703EEAF81F
A3EA703EEA007E13F8EA01E013C0EA03801300A4C7FCA4EA0780EA0FC0A4EA0780101A7E9915>
63 D<B512F014FC380FC03FEC0F80EC07C0EC03E0A2EC01F0A215F8A815F0A2140315E0EC07C0
EC0F80EC3F00B512FE14F01D1A7E9922>68 D<EAFFFCA2EA0FC0B3A4EAFFFCA20E1A7F9911>73
D<D8FFC0EB1FF86D133F000F1580A2D80DF0136FA2D80CF813CFA290387C018FA390383E030FA2
EB1F06A2EB0F8CA3EB07D8A2EB03F0A2EB01E0A2D8FFC1EBFFF8EBC0C0251A7E992A>77
D<EA0FF0EA1FFCEA3E3E131E131F121C1200EA07FF121FEA7E1F127C12F8A3EA7C3F383FEFE0EA
0F8713117F9015>97 D<EA03FCEA0FFEEA1E1F123C127CEA780E00F8C7FCA51278127C383C0180
381F0300EA0FFEEA03F811117F9014>99 D<EA03F0EA0FFCEA1E1E487E487E148012F8B5FCA200
F8C7FCA21278127C383C0180381F0300EA0FFEEA03F811117F9014>101
D<3807E3C0381FFFE0EA3C3C38381CC038781E00A4EA381CEA3C3CEA3FF8EA37E00070C7FCA2EA
3FFEEBFF806C13C0127F38F003E01301A3387C07C0383FFF803807FC0013197F9016>103
D<121E123FA4121EC7FCA4127FA2121FADEAFFC0A20A1B809A0C>105 D<B4FCA2121FB3A4EAFF
E0A20B1A80990C>108 D<39FF1F81F890387FE7FE391FE3EE3E903881F81FA2EB01F0AA3AFFE7
FE7FE0A223117F9026>I<EAFF1FEB7FC0EA1FC3EB83E0A21303AA38FFE7FCA216117F9019>I<EA
03F8EA0FFE383E0F80EA3C07387803C0A200F813E0A6007813C0EA7C07383E0F80380FFE00EA03
F813117F9016>I<EAFF3FEBFFC0381FC3F0130014F8147CA6147814F814F0EBC3E0EBFFC0EB3F
0090C7FCA5EAFFE0A216187F9019>I<EA1FB0EA3FF0EA7070EAE030A2EAF800EAFFC0EA7FF0EA
3FF8EA1FFC1201EAC03C131C12E0EAF038EAFFF0EACFC00E117F9011>115
D<1203A35AA25A123FEAFFF0A2EA1F00A81318A5EA0FF0EA03E00D187F9711>I<38FF1FE0A2EA
1F03AB1307130F380FFFFCEA03F316117F9019>I E /Fn 42 122 df<903901FF81FF011F01EF
13C0903A7F80FF87E0D9FE01EB0FF03903FC03FE13F8D807F013FCA2EE07E0020190C7FCA6B712
F8A32707F001FCC7FCB3A33A7FFF1FFFE0A32C2A7FA928>11 D<121C127FEAFF80A5EA7F00121C
09097B8813>46 D<EB3F803801FFF03807E0FC380FC07E48487EA2393F001F80A24814C0A44814
E0AF6C14C0A46C1480A2391F803F00A2380FC07E6C6C5A3801FFF038003F801B277DA622>48
D<13075B137FEA07FFB5FCA212F8C6FCB3AB007F13FEA317277BA622>I<EBFF80000713F0001F
13FC383F03FFD87C001380007FEB7FC0EAFF80EC3FE0A3141FEA7F00001C133FC7FC15C0A2EC7F
80A2ECFF00495A5CEB03F0495A495A495A90383E00E05B13789038F001C0EA01C0EA038048B5FC
5A5A5A481480B6FCA31B277DA622>I<EB7F803801FFF0000713FC380F81FE381F80FF487E9038
E07F80A5381FC0FFD807001300C7FC495AEB03F8495AEBFFC014F0EB01FC6DB4FCEC7F8015C014
3F15E0121EEA7F80A2EAFFC0A315C0147FD87F801380387E00FF6C481300380FFFFC000313F0C6
13801B277DA622>I<14075C5C5C5C5CA25B5B497E130F130E131C1338137013F013E0EA01C0EA
0380EA07005A120E5A5A5A5AB612F8A3C71300A7017F13F8A31D277EA622>I<000C1303380F80
3FEBFFFEA25C5C14E05C49C7FC000EC8FCA6EB7FC0380FFFF8EB80FC380E007F000C1480C7123F
15C0A215E0A2123E127FEAFF80A315C01300007E137F007814806CEBFF00381F01FE380FFFF800
0313E0C690C7FC1B277DA622>I<EB07F0EB3FFCEBFFFE3801FC0F3807F01F390FE03F80EBC07F
121FEA3F80A2007FEB3F00EB001E91C7FCA25AEB0FC0EB3FF8EB70FEEBE03F01C013809038801F
C0A3010013E0A47EA4D83F8013C0A2001FEB3F80EA0FC03907E0FF003803FFFCC613F0EB3FC01B
277DA622>I<1238123E003FB512F0A315E04814C01580A215003870001E5C5C48137014F0495A
C6485A13075C130F91C7FC5B5BA3137EA213FEA41201A86C5A13781C297CA822>I<EB3FC03801
FFF04813FC380FC07EEB003F001E7F1580003E130FA2123F1380EBE01F01F81300EBFE3F381FFF
7E14F86C5B6C13FC6C7F6C7F00071480D81F9F13C0EA3F07D87E0313E0EA7C0000FC133F48131F
1407A21403A26C14C0007C1307007E14806C130F391FC03F00380FFFFC000313F038007FC01B27
7DA622>I<EB7F803801FFF000077F380FE0FE381FC07E48487ED87F001380A248EB1FC0A415E0
A46C133FA3383F807F001F13FF380FE1DF3803FF9F38007E1F130015C0A2120F381F803FD83FC0
1380A2EC7F00A2EB80FE381F01FC495A380FFFE06C1380D801FEC7FC1B277DA622>I<B612FCED
FF8016E03A03FC001FF0ED07F8821503A2821501A315035EA24B5A4B5A4B5AED7FC090B6C7FC16
E09039FC0007F0ED03FC6F7EA26F7EA21780A617005D4B5A15074B5AB712F016C04BC7FC29297D
A831>66 D<91393FF00180903903FFFE07010FEBFF8F90393FF007FF9038FF80014848C7127FD8
07FC143F49141F4848140F485A003F15075B007F1503A3484891C7FCAB6C7EEE0380A2123F7F00
1F15076C6C15006C6C5C6D141ED801FE5C6C6C6C13F890393FF007F0010FB512C0010391C7FC90
38003FF829297CA832>I<B612F8EDFF8016E03A03FE001FF8ED07FCED01FE6F7EEE7F80EE3FC0
161F17E0A2EE0FF0A417F8AA17F0A3EE1FE0A217C0163FEE7F801700ED01FE4B5AED1FF8B712E0
168003FCC7FC2D297DA835>I<B512FEA300011300B3B1B512FEA317297FA81A>73
D<B592383FFFC0A26E5C0003EFF000A2D9BFC014EFA2D99FE0EB01CFA2D98FF0EB038FA3D987F8
EB070FA2D983FC130EA2D981FE131CA3D980FF1338A291387F8070A291383FC0E0A391381FE1C0
A291380FF380A2913807FF00A36E5AA26E5AA26E5AD8FFFE0203B512C0A215703A297DA841>77
D<B5ECFFFE80A200036DEB03808080EBBFF8EB9FFC138FEB87FE8001831380018113C01380EC7F
E015F0EC3FF8EC1FFCEC0FFE1407EC03FF16836E13C36E13E3157FED3FF3ED1FFB16FF81818181
A281167F163F161F160FEAFFFE160716032F297DA836>I<ECFFE0010713FC90393FC07F809039
7F001FC0D801FCEB07F048486D7E48486D7E000F8148486D7EA24848EC7F80A2007F16C049143F
A300FF16E0AA007F16C06D147FA2003F1680A26C6CECFF00A26C6C495A00075D6C6C495A6C6C49
5A6CB4EB1FE090393FC07F8090260FFFFEC7FC010013E02B297CA834>I<B612F815FF16C03A03
FE003FE0ED0FF0ED07F816FC150316FEA716FC150716F8ED0FF0ED3FE090B61280EDFE0049C8FC
B0B512F8A327297DA82F>I<B612E015FE6F7E3A03FE007FE0ED0FF06F7E82150382A65E4B5AA2
ED1FE0ED7FC090B500FEC7FC5D9038FE01FF9138007FC082153F82151FA81707A2ED0FF8170FB5
39F807FE1E923801FFFC9238003FF030297DA834>82 D<007FB712C0A39039807FC03FD87C0014
0700781503A20070150100F016E0A2481500A5C71500B3A490B612E0A32B287EA730>84
D<48B47E000F13F0381F81FC486C7E147FA2EC3F80A2EA0F00C7FCA2EB0FFF90B5FC3807FC3FEA
1FE0EA3F80127F130012FEA3147F7E6CEBFFC0393F83DFFC380FFF0F3801FC031E1B7E9A21>97
D<EAFFE0A3120FACEBE1FE9038E7FF809038FE07E09038F803F8496C7E496C7EA2157FA21680A9
16005D5D7F4A5A6D485A90389E07E090380FFF80260E01FCC7FC212A7EA926>I<EB1FF0EBFFFE
3803F03F390FE07F80EA1FC0EA3F80A2127F9038001E004890C7FCA97E7F003FEB01C013C0001F
1303390FE007803903F01F003800FFFCEB1FE01A1B7E9A1F>I<EC3FF8A31403ACEB1FE3EBFFFB
3803F03F380FE00F381FC007383F8003A2127F13005AA97EA2EA3F801407381FC00F380FE01F3A
03F03FFF803800FFF3EB3FC3212A7EA926>I<EB3FE03801FFF83803F07E380FE03F391FC01F80
393F800FC0A2EA7F00EC07E05AA390B5FCA290C8FCA47E7F003F14E01401D81FC013C0380FE003
3903F81F803900FFFE00EB1FF01B1B7E9A20>I<9038FF81F00003EBE7FC390FC1FE7C391F80FC
FC003FEBFE7C9038007E3848EB7F00A66C137EEB80FE001F5B380FC1F8381FFFE0001813800038
C8FC123CA2123E383FFFF814FF6C14C06C14E06C14F0121F397E0007F8007C13015A1400A36C13
01007EEB03F06CEB07E0390FC01F803903FFFE0038007FF01E287E9A22>103
D<1207EA1FC013E0123FA3121F13C0EA0700C7FCA7EAFFE0A3120FB3A3EAFFFEA30F2B7DAA14>
105 D<EB0380EB0FE0EB1FF0A5EB0FE0EB038090C7FCA7EBFFF0A31307B3A9127E12FFA2EB0FE0
A2EB1FC0387E3F80383FFE00EA07F0143785AA15>I<EAFFE0A3120FACEC1FFCA3EC07C0EC0F80
EC1E00147C5CEBE1F0EBE3E0EBE7C0EBEFE0EBFFF0A280EBF3FCEBE1FE13C080EC7F80143F15C0
EC1FE0EC0FF039FFFC3FFEA31F2A7EA924>I<EAFFE0A3120FB3B2EAFFFEA30F2A7DA914>I<3BFF
C07F800FF0903AC1FFE03FFC903AC783F0F07E3B0FCE03F9C07F903ADC01FB803F01F8D9FF0013
8001F05BA301E05BAF3CFFFE1FFFC3FFF8A3351B7D9A3A>I<38FFC07F9038C1FFC09038C787E0
390FCE07F09038DC03F813F813F0A313E0AF3AFFFE3FFF80A3211B7D9A26>I<EB3FE03801FFFC
3803F07E390FC01F80391F800FC0003F14E0EB00074814F0A34814F8A86C14F0A2393F800FE0A2
001F14C0390FC01F803907F07F003801FFFC38003FE01D1B7E9A22>I<38FFE1FE9038E7FF8090
38FE07E0390FF803F8496C7E01E07F140081A2ED7F80A9EDFF00A25DEBF0014A5A01F85B9038FE
0FE09038EFFF80D9E1FCC7FC01E0C8FCA9EAFFFEA321277E9A26>I<38FFC3F0EBCFFCEBDC7E38
0FD8FF13F85BA3EBE03C1400AFB5FCA3181B7E9A1C>114 D<3803FE30380FFFF0EA3E03EA7800
127000F01370A27E6C1300EAFFE013FE387FFFC06C13E06C13F0000713F8C613FC1303130000E0
137C143C7EA26C13787E38FF01F038F7FFC000C11300161B7E9A1B>I<1370A413F0A312011203
A21207381FFFF0B5FCA23807F000AD1438A73803F870000113F03800FFE0EB1F8015267FA51B>
I<39FFE03FF8A3000F1303B11407A2140F0007131F3A03F03BFF803801FFF338003FC3211B7D9A
26>I<3AFFFE03FF80A33A07F0007000A26D13F000035CEBFC0100015CA26C6C485AA2D97F07C7
FCA2148FEB3F8E14DEEB1FDCA2EB0FF8A36D5AA26D5AA26D5A211B7F9A24>I<3AFFFE03FF80A3
3A07F0007000A26D13F000035CEBFC0100015CA26C6C485AA2D97F07C7FCA2148FEB3F8E14DEEB
1FDCA2EB0FF8A36D5AA26D5AA26D5AA2495AA2EA3807007C90C8FCEAFE0F130E131E5BEA7C78EA
3FE0EA0FC021277F9A24>121 D E /Fo 74 124 df<EB3F0F9038FFBF803903C3F3C0380703E3
ECC180390E01C000A6B512FCA2380E01C0AE387F87FCA21A1D809C18>11
D<133FEBFF803803C1C0EA0703A2380E018090C7FCA5B512C0A2EA0E01AE387F87F8A2151D809C
17>I<EB3FC013FFEA03C3EA07031301120EA6B5FCA2EA0E01AE387FCFF8A2151D809C17>I<9038
3F03F09038FFCFF83903C0FC1C390701F03CA2390E00E01892C7FCA5B612FCA2390E00E01CAE3A
7FC7FCFF80A2211D809C23>I<EA7070EAF8F8EAFCFCA2EA7C7CEA0C0CA3EA1818A2EA3030EA60
60EA40400E0D7F9C15>34 D<127012F812FCA2127C120CA31218A2123012601240060D7D9C0C>
39 D<13C0EA0180EA03001206120E120C121C121812381230A21270A21260A212E0AC1260A212
70A21230A212381218121C120C120E12067EEA0180EA00C00A2A7D9E10>I<12C012607E7E121C
120C120E120612077EA21380A21201A213C0AC1380A21203A21300A25A1206120E120C121C1218
5A5A5A0A2A7E9E10>I<127012F012F8A212781218A31230A2127012601240050D7D840C>44
D<EAFFE0A30B0380890E>I<127012F8A3127005057D840C>I<1303A213071306A2130E130C131C
1318A213381330A213701360A213E013C0A21201138012031300A25A1206A2120E120CA2121C12
18A21238123012701260A212E05AA210297E9E15>I<EA03C0EA0FF0EA1C38EA381CA2EA700EA3
EAF00FADEA700EA3EA381CA2EA1C38EA0FF0EA07E0101D7E9B15>I<12035A123FB4FC12C71207
B3A3EAFFF8A20D1C7C9B15>I<EA07C0EA1FF0EA3878EA603C131E12F0EAF80FA312701200130E
131E131C133C1378137013E0EA01C0EA0380EA0700EA0E03120C1218EA3006EA7FFE12FFA2101C
7E9B15>I<EA07E0EA1FF0EA3838EA301CEA781EA312381200133C13381370EA07E0A2EA003813
1C131E130E130FA2127012F8A2130EEAF01EEA601CEA3838EA1FF0EA07C0101D7E9B15>I<131C
A2133C137CA213DC1201139C1203EA071C1206120E120C121812381230126012E0B512C0A23800
1C00A63801FFC0A2121C7F9B15>I<EA300CEA3FFC13F813E0EA3000A6EA33E0EA37F0EA3C38EA
381CEA301E130EEA000FA4127012F0A2EAE00EEA601E131CEA3878EA1FF0EA07C0101D7E9B15>
I<13F0EA03FCEA070CEA0E0EEA1C1E1238130CEA78001270A2EAF3F0EAF7F8EAFC1CEAF81E130E
12F0130FA51270A2130E1238131CEA1C38EA0FF0EA03E0101D7E9B15>I<1260387FFF80A21400
EA6003EAC0065BA2C65A5BA25BA25BA21201A2485AA41207A76CC7FC111D7E9B15>I<EA03E0EA
0FF0EA1C38EA381CEA300E1270A31278131C123EEA3FB8EA1FE0EA07F0EA0FF8EA1CFCEA387EEA
701E130F12E01307A4EA700E130CEA3C3CEA1FF0EA07E0101D7E9B15>I<EA03C0EA0FF0EA1C38
EA381C1278EA700E12F0A2130FA51270131F1278EA383FEA1FEFEA0FCFEA000EA3EA301C127813
38EA7030EA30F0EA3FC0EA0F80101D7E9B15>I<127012F8A312701200A8127012F8A312700512
7D910C>I<127012F8A312701200A8127012F012F8A212781218A31230A2127012601240051A7D
910C>I<007FB512C0B612E0C9FCA8B612E06C14C01B0C7E8F20>61 D<1306130FA3497EA4EB33
C0A3EB61E0A3EBC0F0A338018078A2EBFFF8487FEB003CA200067FA3001F131F39FFC0FFF0A21C
1D7F9C1F>65 D<B512C014F0380F00F8143C141C141EA4141C143C1478EBFFF014E0EB00F8143C
141EA2140FA5141E143E147CB512F814C0181C7E9B1D>I<90381F8080EBFFE13803F033380780
1B380F000F001E1307001C1303123C5A1401127012F091C7FCA70070EB01801278A27E001CEB03
00121E6C13066C6C5A3803F0383800FFF0EB1F80191E7E9C1E>I<B512C014F0380F007C141E80
80EC038015C0A2140115E0A815C0A2140315801407EC0F00141E147CB512F014C01B1C7E9B20>
I<B512FCA2380F007C141C140C140E14061303A314005B13FFA213077FA21403A213001406A314
0E141E147CB512FCA2181C7E9B1C>I<B512F8A2380F007814381418141C140CA21303A21400A2
5B13FFA213077FA490C7FCA6EAFFF8A2161C7E9B1B>I<90381F8080EBFFE13803F0333807801B
380F000F001E1307001C1303123C5A1401127012F091C7FCA5ECFFF0A20070EB07801278A27E12
1C121E7E3807800F3803F0393800FFF090381FC0001C1E7E9C21>I<39FFF3FFC0A2390F003C00
AAEBFFFCA2EB003CAC39FFF3FFC0A21A1C7E9B1F>I<EAFFF0A2EA0F00B3A6EAFFF0A20C1C7F9B
0F>I<EAFFF8A2000FC7FCAF1418A414381430147014F01301B5FCA2151C7E9B1A>76
D<B46CEBFF806D5A000FECF800A2390DE00378A3380CF006A3EB780CA3EB3C18A3EB1E30A3EB0F
60A3EB07C0A3381E03803AFFC387FF80A2211C7E9B26>I<B4EBFFC07F000FEB1E00EBC00CA2EA
0DE0EA0CF0A21378A2133C131EA2130FA2EB078C14CC1303EB01ECA2EB00FCA2147C143CA2001E
131CEAFFC0140C1A1C7E9B1F>I<EB3F80EBFFE03803E0F83807803C380E000E001E130F48EB07
8000381303007814C0A20070130100F014E0A80078EB03C0A36CEB0780A26CEB0F006C131E6C6C
5A3803E0F83800FFE0EB3F801B1E7E9C20>I<B5128014E0380F00F01438143C141EA6143C1438
14F0EBFFE0148090C7FCAAEAFFF0A2171C7E9B1C>I<B5FC14E0380F00F01438143C80A55C1438
14F0EBFFE05CEB01E06D7E1478A71530143839FFF03C60EC1FE0C7EA07C01C1D7E9B1F>82
D<3807E080EA1FF9EA3C1FEA7007130312E01301A36CC7FCA2127CEA7FC0EA3FF8EA1FFEEA07FF
C61380130FEB03C0A2130112C0A300E01380130300F01300EAFC0EEACFFCEA83F8121E7E9C17>
I<007FB512C0A238780F03007013010060130000E014E000C01460A400001400B03803FFFCA21B
1C7F9B1E>I<39FFF0FFC0A2390F001E00140CB36C5B138000035BEA01C03800E0E0EB7FC0011F
C7FC1A1D7E9B1F>I<3AFFE0FFE1FFA23A1F001E007C6C1530143FA20180147000079038678060
A32603C0E713C0ECC3C0A2D801E0EBC1809038E181E1A3D800F3EBF3001400A2017B13F6017E13
7EA3013C133CA3011C133801181318281D7F9B2B>87 D<397FF0FFC0A23907C03E0000031338EB
E03000011370EBF06000005B1379EB7D80013FC7FC7FA27F80131FEB3BC0EB33E01371EB61F0EB
C0F800011378EB807C3803003C487F380F801F39FFE0FFF0A21C1C7F9B1F>I<39FFF00FFCA239
078003C001C0138000031400EBE006EA01F000005BEBF81CEB7818EB7C38EB3C306D5A131F6D5A
A26D5AAAEB7FF8A21E1C809B1F>I<EA0808EA1818EA3030EA6060A2EAC0C0A3EAF8F8EAFCFCA2
EA7C7CEA38380E0D7B9C15>92 D<EA0FE0EA1FF8EA3C3C7FEA180E1200131EEA07FE121FEA3E0E
127812F01460A2131EEA783E383FFFC0381F878013127F9115>97 D<12FCA2121CA9137EEA1DFF
381F8780381E01C0001C13E0130014F0A614E01301001E13C0381F07803819FF00EA187C141D7F
9C17>I<EA03F0EA0FF8EA1E3C1238EA7818EA700012F0A612781306123CEA1E0CEA0FF8EA03E0
0F127F9112>I<EB1F80A21303A9EA03E3EA0FFBEA1E0FEA3807EA7803127012F0A612701278EA
3807EA1E1F380FFBF0EA07E3141D7F9C17>I<EA03E0EA0FF0EA1C38EA381CEA781EEA700EEAFF
FEA2EAF000A41270EA7806123CEA1E0CEA0FF8EA03E00F127F9112>I<1378EA01FCEA039EEA07
1EEA0E0C1300A6EAFFE0A2EA0E00AEEA7FE0A20F1D809C0D>I<EB03803807E7C0EA0FFDEA3C3D
38381C00EA781EA4EA381CEA3C3CEA3FF0EA37E00070C7FCA21230EA3FFC6CB4FC481380EA7007
38E001C0A438700380383C0F00EA1FFEEA07F8121C7F9215>I<12FCA2121CA9137CEA1DFFEA1F
07381E0380A2121CAB38FF9FF0A2141D7F9C17>I<1218123C127C123C1218C7FCA612FCA2121C
AEEAFF80A2091D7F9C0C>I<EA01C0EA03E0A3EA01C0C7FCA6EA0FE0A21200B31260EAF1C0A2EA
7F80EA3E000B25839C0D>I<12FCA2121CA9EB7FC0A2EB3E0013185B5B5BEA1DE0121FEA1E70EA
1C781338133C131C7F130F38FF9FE0A2131D7F9C16>I<12FCA2121CB3A7EAFF80A2091D7F9C0C>
I<39FC7E07E039FDFF9FF8391F83B838391E01E01CA2001C13C0AB3AFF8FF8FF80A221127F9124
>I<EAFC7CEAFDFFEA1F07381E0380A2121CAB38FF9FF0A214127F9117>I<EA03F0EA0FFCEA1E1E
EA380700781380EA700300F013C0A600701380EA780700381300EA1E1EEA0FFCEA03F012127F91
15>I<EAFC7EEAFDFF381F8780381E03C0381C01E0A2EB00F0A6EB01E0A2381E03C0381F078038
1DFF00EA1C7C90C7FCA6B47EA2141A7F9117>I<3803E180EA0FF9EA1E1FEA3C071278130312F0
A612781307123CEA1E1FEA0FFBEA07E3EA0003A6EB1FF0A2141A7F9116>I<EAFDE0EAFFF0EA1F
78121E1330EA1C00ABEAFFC0A20D127F9110>I<EA1F90EA3FF0EA7070EAE030A3EAF800EA7F80
EA3FE0EA0FF0EA00F8EAC038A212E0A2EAF070EADFE0EA8FC00D127F9110>I<120CA5121CA212
3CEAFFE0A2EA1C00A81330A5EA1E60EA0FC0EA07800C1A7F9910>I<38FC1F80A2EA1C03AC1307
EA0C0F380FFBF0EA03E314127F9117>I<38FF0FE0A2381C0780EB0300EA0E06A36C5AA2131CEA
0398A213F86C5AA26C5AA313127F9116>I<39FF3FCFE0A2391C0F0780EC0300131F380E1B0614
86A2EB318E000713CCA213603803E0F8A33801C070A31B127F911E>I<387F8FF0A2380F078038
070600EA038EEA01DC13D8EA00F01370137813F8EA01DCEA038E130EEA0607380F038038FF8FF8
A21512809116>I<38FF0FE0A2381C0780EB0300EA0E06A36C5AA2131CEA0398A213F86C5AA26C
5AA35BA3EAF180A200C7C7FC127E123C131A7F9116>I<EA7FFCA2EA7838EA7070EA60F013E0EA
61C01263EA0380EA070C120F120EEA1C1CEA3C181238EA7078EAFFF8A20E127F9112>I<B512F0
A21402808B15>I E /Fp 10 118 df<DC7FFE140E030FB500E0133E92B600F8137E020303FE13
FE021FEDFF81027FD9F80113E391B53980003FF7010301FCC7EA07FF4901F08049491400490180
157F4990C9123F4948161F4948160F485B4818074A1603485B481801A2485B1900A2485B1A7E5A
A391CCFCA2B5FCAD7EA2801A3EA27EA26C7FA21A7E6C6D177CA26C19FC6C6D17F86E16016CF003
F06C7F6D6CEE07E06D6CEE0FC06D6DED1F806D01E0ED7F006D6D15FE6D01FCEC03FC0100D9FF80
EB0FF86E01F8EBFFF0021F90B612C0020393C7FC020015FC030F14E09226007FFEC8FC474979C7
56>67 D<B97E18FC18FF19C019F0D8001F902680000F13FC05017F716C7E7213807213C0841AE0
A27213F0A31AF8A81AF0A34E13E0A21AC04E1380604E13004D485A050F13F892B75A19C04EC7FC
18F003C0CAFCB3A9B712F8A545477CC651>80 D<903807FFFE017FEBFFE048B612F84815FE4890
39001FFF8003077F48D980017F6F7FA2707EA2707E6C90C7FC6C5A6C5AC9FCA40207B5FC91B6FC
130F013FEBF03F3901FFFE004813F04813C04890C7FC485A485A485AA212FF5BA3167FA26D14FF
6C6CEB01EF003F140301FF90380FCFFF6C9026C07F8F13F8000790B5000713FC6CECFC03C66CEB
F0010107903980007FF8362E7DAD3A>97 D<91381FFFC049B512FC010714FF011F158090267FFC
0113C0EBFFF048D9C00313E04813804813005A485AA248486D13C06F1380007FED7F0093C7FC5B
A212FFAA127F7FA3123F6D15F8121F16016C6C15F06C6D13036C6DEB07E06C6DEB0FC06C01F8EB
3F80903A7FFE01FF00011FB55A010714F8010114E0D9001F90C7FC2D2E7CAD35>99
D<13FCEA03FF4813804813C014E05AA67E14C06C13806C1300EA00FC90C7FCABEB7FC0B5FCA512
037EB3B0B6FCA518497CC820>105 D<90287FC001FFC0ECFFE0B5010F01F8010713FC033F01FE
011F13FF92B6017F809126C1FE07902680FF037F9126C3F0039026C1F8017F00039026C7C00190
26E3E0007F6CD9CF00ECE78002DE03EFC7FC02DC6D01FE6E7E14FC4A5DA24A5DA24A5DB3A8B6D8
C07F9026FFE03FB512F0A55C2E7CAD63>109 D<903A7FC001FFC0B5010F13F8033F13FE92B6FC
9126C1FE077F9126C3F0037F00039026C7C0017F6CEBCF0014DE02DC6D7F14FC5CA25CA25CB3A8
B6D8C07FEBFFE0A53B2E7CAD42>I<EC0FFF91B512F0010714FE011F6E7E90263FFC037F903AFF
E0007FF0480180EB1FF84890C76C7E48486E7E000F824980001F1780003F17C04980A2007F17E0
A300FF17F0AA007F17E0A46C6C4A13C0A2001F17806D5C000F17006C6C4A5A6C6D495A6C6D495A
6C6D495A903A7FFC03FFE0011FB6128001074AC7FC010014F0020F90C8FC342E7DAD3B>I<EB01
F0A61303A31307A3130FA2131F133FA2137FEA01FF5A000F90B512C0B7FCA4C601F0C7FCB3A5ED
01F0A91503D97FF813E01507D93FFC13C090391FFE1F806DB5FC6D1400010113FC9038003FF024
427EC12E>116 D<D97FE0EC3FF0B5EC7FFFA5000315016C81B3A85EA35E5E6CED0F7F6E131F01
7F023E7F90273FFE01FCEBFFE06DB512F86D14F0010314C09039003FFE003B2E7CAD42>I
E /Fq 8 117 df<140F5C147FEB03FF131FB6FCA313E7EA0007B3B3A7007FB612E0A4233879B7
32>49 D<DB1FFE14E00203B5EAC001021FECF803027FECFE07903B01FFFC00FF0F010701C0EB1F
DF4990C7EA07FFD93FFC804948804948804849157F4849153F4849151FA24890C9120FA2484816
07A2485AA2007F1703A34993C7FC12FFAD127F7FF001E0A2123FA26C7E18036C6C17C018076C7F
F00F806C7F6C6DED1F006C6D153E6D6C5D6D6C5DD90FFFEC03F06D01E0EB0FE0010101FCEB7FC0
6D6CB6C7FC021F14FC020314E09126001FFEC8FC3B3D7ABB48>67 D<EB1FFF48B512F0000714FC
390FF807FF001F01017F6D6C7F6F7EA282153F6C5A6C5AEA01C0C8FCA2EC07FF0103B5FC131F90
B5123F000313C0000F1300EA1FFC485A485A5B12FF5BA3157FA26C6C13FF6D5A6C6C4813FC3B1F
FC0FDFFFF00007B5120F0001EBFC0739003FF0012C267DA530>97 D<903801FFC0011F13F8017F
13FE9038FFC1FF00039038007F80D807FCEB1FC0484814E0ED0FF0485A003FEC07F8A2485AED03
FCA212FFA290B6FCA301E0C8FCA5127FA27F003F153CA26C6C147C000F15786C6C14F86C6CEB01
F06C6CEB07E06C9038E03FC0013FB51200010F13FC010013E026267DA52D>101
D<13FFB5FCA412077EB0ED7FC0913803FFF8020F13FE91381F03FFEC3C01027814804A7E4A14C0
5CA25CA291C7FCB3A4B5D8FC3F13FFA4303C7CBB37>104 D<9039FF01FF80B5000F13F0023F13
FC9138FE03FFDAF00113C000039039E0007FE0028014F0EE3FF891C7121F17FC160F17FEA3EE07
FFAAEE0FFEA3EE1FFCA217F86EEB3FF06E137F6EEBFFE06E481380DAFC07130091383FFFFC020F
13F0020190C7FC91C9FCADB512FCA430377DA537>112 D<9038FE03F000FFEB0FFE91383FFF80
91387C7FC014F00007ECFFE06C6C5A5CA25CED7FC0ED3F80ED0E0091C8FCB3A3B512FEA423267D
A529>114 D<EB0780A5130FA4131FA2133FA2137F13FF5A1207001FEBFFF8B6FCA30001EB8000
B3153CA86C147814C0017F13F8ECE1F090381FFFE0010713C0010113001E377EB627>116
D E /Fr 36 119 df<EB078090391FE003809038387007EB703001E0130301C014000001137090
3880F0061203EC600C48C75A5D15E090383C01F09038FE03B89038C30618EB830C903803181C39
0F06300CEA1F86381DFC36393CF03F183838001F0078130E1400A200705C12F000705C12785D00
38495A003C49C7FC6C130E380F807C3803FFF038007F8021257BA325>38
D<127012F8A212F012E005057A840F>46 D<14035CA25C1580141FA214371477146714C7A2EB01
87A2EB0307A21306130E130C1318A2133090383FFFC05BEB600313C012011380EA0300A21206A2
121E39FFC03FFC13801E237DA224>65 D<90B512E015F890380F003C151E131E150E150FA24913
0E151EA2153C49137815F0EC01E090387FFFC090B5FC9038F003E0EC00F01578485A1538153CA2
48481378A315F039078001E01403EC07C0EC1F00B512FE14F020227DA122>I<90B512F015FC90
380F003E150F011EEB0780150316C015015B16E0A35BA449EB03C0A44848EB0780A216005D4848
130E5D153C5D48485B4A5AEC0780021FC7FCB512FC14F023227DA125>68
D<91387E0180903903FF810090380F80C390383E00670178133F49133ED801C0131E485A120748
C7121C120E121E5A15185A92C7FCA25AA4EC3FFC5AEC01E0A26C495AA312700078495A1238003C
130F6C131B260FC0F3C7FC3803FFC1C690C8FC212479A226>71 D<EBFFF8A2EB0F00A2131EA45B
A45BA45BA4485AA4485AA4485AA4EAFFF8A215227DA113>73 D<903807FFC04913809038003C00
A25CA45CA4495AA4495AA4495AA449C7FCA212381278EAF81EA2485AEA6078EA70F0EA3FE0EA1F
801A237CA11A>I<9039FFF80FFCA290390F0007C01600011E130E5D5D1560495B4A5A4AC7FC14
0E495A5C147814FCEBF1BCEBF33CEBFE1E13FC3801F01F497EA2813803C007A26E7EA2EA07806E
7EA28139FFF80FFEA226227DA125>I<EBFFFCA2010FC7FCA2131EA45BA45BA45BA4485A1560A2
15C0485AA2EC0180A238078003EC07005C147FB512FEA21B227DA11F>I<D9FFC0EB0FFCA2010F
EC1F801637011BEC3F00166FA216CF0133EB019EA2ED031EEB31E00161EB063CA2150C151801C1
5C1530A21560D80181495AA2ECE180EB80F13A0300F301E014F6A214FC00064A5A14F8A2001F13
F03AFFE0E07FFCA22E227DA12C>I<01FFEB1FFC1480010FEB03C01680D91BC01300A3EB19E001
311306A2EB30F0A201605B1478A3496C5AA3141ED801805BA2140FA2D803005BEC07E0A300065C
1403A2121F39FFE00180A226227DA124>I<14FE903807FF8090380F03E090383C00F001701378
4913384848133C4848131C48C7FC48141E121EA25AA25AA348143CA31578A34814F0A26CEB01E0
15C01403EC07800078EB0F00141E6C5B6C13F8380F83E03807FF80D801FCC7FC1F2479A225>I<
90B512C015F090380F0078153C011E131E150EA349131EA3153C491338157815F0EC03C090B512
005CEBF00FEC07803901E003C0A43903C00780A43907800F001503A2EC0706D8FFF8138EEC03FC
C7EA01F020237DA124>82 D<903801F06090380FFC4090381E0EC0EB3807EB700301E0138013C0
1201A2D803801300A26DC7FCA27FEA01F813FF6C13E06D7EEB1FF8EB03FCEB007C143C80A30030
131CA31418007013385C00781360387C01C038EF0380D8C7FFC7FCEA81FC1B247DA21B>I<001F
B512F8A2391E03C07800381438EB0780123000601430A2EB0F0012C0A3D8001E1300A45BA45BA4
5BA4485AA31203B57E91C7FC1D2277A123>I<393FFE07FFA23903C000F015E0484813C0A4390F
000180A4001EEB0300A4481306A4485BA4485BA25C12705C5C6C485A49C7FCEA1E0EEA0FFCEA03
F0202377A124>I<3BFFF03FF81FF8D9E07FEB3FF03B1F0007800780001E010FEB03001606141F
5E14375E14675E14C75E381F0187000F5DEB0307ED818013060383C7FC130C158613180138138C
0130139C0160139815B801C013B015E013805D13005D120E92C8FC120C2D2376A131>87
D<39FFF003FFA2000FC712F015E090388001C000071480EC0300EBC0060003130E5CEBE0180001
5B5CEBF0E000005BEBF18001FBC7FC13FF137E137C1378A45BA4485AA4EA3FFE5B202276A124>
89 D<EBF8C0EA01FDEA078F380F0780120E121CEA3C03383807001278A3EAF00EA214101418EB
1C30EA703C137C3838FC60383FCFC0380F078015157B9419>97 D<137E48B4FC3803C380EA0703
EA0E07121C003CC7FC12381278A35AA45BEA7003130EEA383CEA1FF0EA0FC011157B9416>99
D<143CEB03F8A2EB0038A21470A414E0A4EB01C013F9EA01FDEA078F380F0780120E121CEA3C03
383807001278A3EAF00EA214101418EB1C30EA703C137C3838FC60383FCFC0380F078016237BA2
19>I<13F8EA03FCEA0F0EEA1E06123C1238EA780CEAF038EAFFF01380EAF0005AA413021306EA
701C1378EA3FE0EA0F800F157A9416>I<143C147F14CF1301EB03861480A3EB0700A5130EEBFF
F0A2EB0E00A25BA55BA55BA55BA45B1201A2EA718012F390C7FC127E123C182D82A20F>I<EB1F
18EB3FB8EBF1F83801E0F013C0EA038000071370EB00E05AA3381E01C0A4EB0380EA0E07130FEA
071FEBFF00EA01E7EA0007A2130EA3EA701CEAF0385BEA7FE0EA3F80151F7E9416>I<136013F0
13E0A21300A8120EEA1F801233126312C3A3EA0700A2120EA35A13201330EA3860A213C01239EA
1F80EA0E000C217CA00F>105 D<13F0EA0FE0A21200A2485AA4485AA448C7FCEB01E0EB07F0EB
0E30380E1870EB30F01360EBC060381D8000121F13E0EA1CF0EA3838133CEB1C20143038703860
A21440EB18C038E01F8038600F0014237DA216>107 D<EA01E0EA1FC0A21201A2EA0380A4EA07
00A4120EA45AA45AA45AA212711380EAE300A312E6127E123C0B237CA20C>I<381E0780383F1F
E0EA63B8EBE070EAC3C0A21380000713E01300A3380E01C0A214C2EB0383001C1386EB0706140C
EB0318003813F0381801E018157C941B>110 D<137E48B4FC3803C380380701C0120E001C13E0
123CA21278A338F003C0A21480130700701300130E5B6C5AEA1FF0EA07C013157B9419>I<3803
C1F03807E3F8380C761C137C3818781E1370A2EA00E0A43801C03CA314780003137014F014E0EB
E3C038077F80EB1E0090C7FCA2120EA45AA2EAFFC0A2171F7F9419>I<381E0F80383F1FC03863
B0E013E0EAC3C1A2EB80C00007130090C7FCA3120EA45AA45A121813157C9415>114
D<13FC48B4FC38038380EA0703EA0E07A2EB0200000FC7FC13F0EA07FC6C7EEA007E130FA2EA70
07EAF00EA2485AEA7038EA3FF0EA1FC011157D9414>I<13C01201A4EA0380A4EA0700EAFFF8A2
EA0700120EA45AA45AA213101318EA7030A21360EA71C0EA3F80EA1E000D1F7C9E10>I<000F13
30381F8070EA31C0006113E012C1EAC380A2380381C0EA0701A3380E0380A214841486EB070CA2
130FEB1F183807F3F03803E1E017157C941A>I<380F01C0381F83E0EA31C3EA61C1EAC1C0EAC3
80A2000313C0EA0700A3380E0180A3EB0300A213061304EA0F1CEA07F8EA01E013157C9416>I
E /Fs 53 122 df<ECC018A301011338EC8030A301031370EC0060A34913E001065BA3EB0E0101
0C5BB712C0A226001803C7FCA3EB3807EB3006A4B712C0A22600600CC7FCEBE01CEBC018A30001
1338EB8030A300031370EB0060A34813E000065BA2222D7DA229>35 D<127012F812FCA2127C12
0CA41218A21230A212601240060F7C840E>44 D<EAFFE0A30B037F8B10>I<127012F8A3127005
057C840E>I<EA01F0EA07FCEA0E0E487E38380380A2007813C0EA7001A300F013E0AE007013C0
A3EA780300381380A2381C0700EA0E0EEA07FCEA01F013227EA018>48 D<EA01801203120F12FF
12F31203B3A8EAFFFEA20F217CA018>I<EA03F0EA0FFCEA1C1F383007801270007813C0A21303
EA380712001480A2EB0F00130E133CEA03F8A2EA001E7FEB078014C0130314E01220127012F8A2
00F013C01260EB07801230381C1F00EA0FFCEA03F013227EA018>51 D<00101380EA1C07381FFF
005B5B13F00018C7FCA613F8EA1BFEEA1F0F381C0780EA180314C0EA000114E0A4126012F0A214
C0EAC0031260148038300700EA1C1EEA0FFCEA03F013227EA018>53 D<137E48B4FC3803C18038
0701C0EA0E03121CEB018048C7FCA2127812701320EAF1FCEAF3FEEAF60738FC038000F813C013
0112F014E0A51270A3003813C0130300181380381C0700EA0E0EEA07FCEA01F013227EA018>I<
EA01F0EA07FCEA0E0F38180780EA3803383001C01270A31278EB0380123E383F0700EA1FCEEA0F
FCEA03F87FEA0F7F381C3F80EA380F387007C0130338E001E01300A5387001C0A238380380381E
0F00EA0FFEEA03F013227EA018>56 D<EA01F0EA07FCEA0E0E487E383803801278127038F001C0
A314E0A5127013031278EA3807EA1C0DEA0FF9EA07F1380081C0130113031480A2383007001278
130EEA701C6C5AEA1FF0EA0FC013227EA018>I<497E497EA3497EA3497E130CA2EB1CF8EB1878
A2EB383C1330A2497EA3497EA348B51280A2EB800739030003C0A30006EB01E0A3000EEB00F000
1F130139FFC00FFFA220237EA225>65 D<B512F814FE3907800F80EC07C0EC03E0140115F0A515
E01403EC07C0EC0F8090B512005C9038801F80EC07C0EC03E0EC01F0140015F8A6EC01F0140315
E0EC0FC0B6120014FC1D227EA123>I<90380FE01090383FF8309038F81C703801E0063903C003
F03807800148C7FC121E003E1470123C127C15301278A212F81500A700781430A2127CA2003C14
60123E121E6C14C06C7E3903C001803901E003003800F80EEB3FF8EB0FE01C247DA223>I<B512
F014FE3807801FEC07C01403EC01E0EC00F015F81578157C153CA3153EA9153CA2157C1578A215
F0EC01E01403EC07C0EC1F00B512FE14F81F227EA125>I<B612C0A23807800F14031401140015
E0A21560A21460A21500A214E0138113FFA2138113801460A491C7FCA8EAFFFEA21B227EA120>
70 D<903807F00890383FFC189038FC0E383801E0033903C001F83807800048C71278121E1538
5AA2007C14181278A212F81500A6EC1FFF1278007CEB0078A2123CA27EA27E6C7E6C6C13F83801
F0013900FC079890383FFE08903807F80020247DA226>I<39FFFC3FFFA239078001E0AD90B5FC
A2EB8001AF39FFFC3FFFA220227EA125>I<3803FFF0A238000F00B3A6127012F8A3EAF01EEA60
1CEA3878EA1FF0EA07C014237EA119>74 D<39FFFC07FFA239078001F015C05D4AC7FC14065C5C
14385C5CEB81C0EB8380EB87C080138DEB98F013B0EBE078497E13808080A26E7E8114036E7EA2
6E7E4A7E3AFFFC07FF80A221227EA126>I<EAFFFEA2EA0780B3EC0180A41403A215005CA25C14
3FB6FCA219227EA11E>I<D8FFC0EB03FF6D5B000715E0A2D806F0130DA301781319A36D1331A3
6D1361A36D13C1A29038078181A3903803C301A3EB01E6A3EB00FCA31478EA1F80D8FFF0EB3FFF
143028227EA12D>I<39FF800FFF13C00007EB01F89038E000607F12061378A27F133E131E7FA2
EB078014C01303EB01E0A2EB00F01478A2143CA2141E140FA2EC07E0A214031401A2381F8000EA
FFF0156020227EA125>I<EB0FE0EB7FFCEBF83E3903E00F8039078003C0390F0001E0A2001EEB
00F0003E14F8003C1478007C147CA20078143CA200F8143EA9007C147CA3003C1478003E14F800
1E14F06CEB01E0EB80033907C007C03903E00F803900F83E00EB7FFCEB0FE01F247DA226>I<B5
12F014FC3807803FEC0F801407EC03C0A215E0A515C0A2EC0780140FEC3F00EBFFFC14F00180C7
FCADEAFFFCA21B227EA121>I<B512E014F83807803E140F6E7E816E7EA64A5A5D4AC7FC143EEB
FFF85CEB80788080140E140FA481A3ED818015C114073AFFFC03E300EC01FEC8127C21237EA124
>82 D<3803F020380FFC60381C0EE0EA3803EA7001A2EAE000A21460A36C1300A21278127FEA3F
F0EA1FFE6C7E0003138038003FC0EB07E01301EB00F0A2147012C0A46C136014E06C13C0EAF801
38EF038038C7FF00EA81FC14247DA21B>I<007FB512F8A2387C07800070143800601418A200E0
141C00C0140CA500001400B3A20003B5FCA21E227EA123>I<3BFFF03FFC07FEA23B0F0007C001
F00203EB00E01760D807806D13C0A33B03C007F001801406A216032701E00C781300A33A00F018
3C06A3903978383E0CEC301EA2161C90393C600F18A390391EC007B0A3010F14E0EC8003A36D48
6C5AA32F237FA132>87 D<387FFFFEA2EB003C007C137C0070137814F84813F0EB01E0EAC00314
C01307148038000F005B131E133E133C5B13F85B0001130313E0EA03C012071380000F13071300
001E1306003E130E003C131E007C133E007813FEB5FCA218227DA11E>90
D<EA0FE0EA1FF8EA3C1C7FEA18071200A25BEA03FF120FEA3F07127C127812F01418A2130F1278
387C3FB8383FF3F0380FC3C015157E9418>97 D<120E12FEA2121E120EAAEB1F80EB7FE0380FC0
F0EB0078000E1338143C141C141EA7141C143C000F1338EB8070EBC1F0380C7FC0EB1F0017237F
A21B>I<EA01FEEA07FF380F0780121C383803000078C7FC127012F0A7127814C07E381E018038
0F0300EA07FEEA01F812157E9416>I<14E0130FA213011300AAEA03F0EA07FEEA1F07EA3C01EA
38001278127012F0A712701278EA3801EA3C03381E0EF0380FFCFEEA03F017237EA21B>I<EA01
FCEA07FF380F0780381C03C0EA3801007813E0EA7000B5FCA200F0C7FCA5127814607E6C13C038
0F83803807FF00EA00FC13157F9416>I<133C13FEEA01CFEA038FA2EA0700A9EAFFF8A2EA0700
B1EA7FF8A2102380A20F>I<14F03801F1F83807FFB8380F1F38381E0F00EA1C07003C1380A500
1C1300EA1E0FEA0F1EEA1FFCEA19F00018C7FCA2121CEA1FFF6C13C04813E0383801F038700070
481338A400701370007813F0381E03C0380FFF803801FC0015217F9518>I<120E12FEA2121E12
0EAAEB1F80EB7FC0380FC1E0EB80F0EB0070120EAE38FFE7FFA218237FA21B>I<121C121E123E
121E121CC7FCA8120E12FEA2121E120EAFEAFFC0A20A227FA10E>I<EA01C0EA03E0A3EA01C0C7
FCA8EA01E0120FA212011200B3A4EA60C012F11380EA7F00123E0B2C82A10F>I<120E12FEA212
1E120EAAEB0FFCA2EB07E0EB0380EB0700130E13185B137813F8EA0F9C131EEA0E0E7F1480EB03
C0130114E014F038FFE3FEA217237FA21A>I<120E12FEA2121E120EB3ABEAFFE0A20B237FA20E>
I<390E1FC07F3AFE7FE1FF809039C0F303C03A1F807E01E0390F003C00000E1338AE3AFFE3FF8F
FEA227157F942A>I<380E1F8038FE7FC038FFC1E0381F80F0380F0070120EAE38FFE7FFA21815
7F941B>I<EA01FCEA07FF380F0780381C01C0383800E0007813F00070137000F01378A7007013
70007813F0003813E0381C01C0380F07803807FF00EA01FC15157F9418>I<380E1F8038FE7FE0
38FFC1F0380F0078120E143CA2141EA7143CA2000F1378EB8070EBC1F0380E7FC0EB1F0090C7FC
A8EAFFE0A2171F7F941B>I<EA0E3CEAFEFEEAFFCFEA1F8FEA0F061300120EADEAFFF0A210157F
9413>114 D<EA0F88EA3FF8EA7078EAE0381318A3EAF000127FEA3FE0EA1FF0EA01F8EA003CEA
C01CA212E0A2EAF018EAF878EADFF0EA8FC00E157E9413>I<1206A5120EA3121E123EEAFFF8A2
EA0E00AA130CA51308EA0718EA03F0EA01E00E1F7F9E13>I<000E137038FE07F0A2EA1E00000E
1370AC14F01301380703783803FE7FEA01F818157F941B>I<38FFC3FEA2381E00F8000E1360A2
6C13C0A338038180A213C300011300A2EA00E6A3137CA31338A217157F941A>I<39FF8FF9FFA2
391E01C07CD81C031338000EEBE030A2EB06600007EB7060A2130E39038C30C01438139C3901D8
1980141DA2EBF00F00001400A2497EEB600620157F9423>I<38FFC3FEA2381E00F8000E1360A2
6C13C0A338038180A213C300011300A2EA00E6A3137CA31338A21330A213701360A2EAF0C012F1
EAF380007FC7FC123E171F7F941A>121 D E /Ft 20 118 df<B51280A311037F9016>45
D<B612E015FC3907E0007F0003EC0F806F7EED01E06F7E1678167C82A282A2EE0F80A217C0A216
07A217E0AB17C0A3160F1780A3EE1F00A2163E5E167816F84B5AED07E0ED0F800007027FC7FCB6
12FC15E02B317CB033>68 D<B51280A23807F0006C5AB3B3A7487EB51280A211317DB017>73
D<D8FFF0ED7FF86D15FF0007170000035E017CEC01BEA36DEC033EA36D1406A36D6C130CA36D6C
1318A36D6C1330A36D6C1360A216C06D7EA291387C0180A391383E0300A3EC1F06A3EC0F8CA3EC
07D8A3EC03F0A3486C6C5AD80FC0157FD8FFFC91380FFFF8EC00C035317CB03D>77
D<B612C015F83907E000FE0003141FED0F80ED07C0ED03E016F01501A216F8A616F0A2150316E0
ED07C0ED0F80ED1F0015FE90B512F815C001E0C8FCB3A2487EB57EA225317CB02D>80
D<90387F80203901FFE0603807C0F8390F001CE0001E130F481307003813030078130112701400
12F0A21560A37E1500127C127E7E13C0EA1FF86CB47E6C13F86C7FC613FF010F1380010013C0EC
1FE01407EC03F01401140015F8A200C01478A57E15706C14F015E07E6CEB01C06CEB038039E780
070038C1F01E38C07FFC38800FF01D337CB125>83 D<EA01FE380FFFC0381C03E0383C00F0003E
137880141C0008131EC7FCA4EB01FE133F3801FF1EEA07F0EA0F80EA1F00123E5AA248140CA314
3EA2007C137E6CEBDF1C391F038FB8390FFF07F03903F803C01E1F7D9E21>97
D<EB3FC0EBFFF83803E01C3807801E380F003E121EA2481308007C1300A2127812F8A9127CA36C
1303121E001F1306380F800E3807C01C3803F0383800FFE0EB3F80181F7D9E1D>99
D<EC01E0143FA214031401AFEB3F81EBFFE13803E0793807800D380F0007001E130314015A127C
A2127812F8A91278127CA2123C003E1303001E13076C130F3807801D3903E071F03901FFE1FF38
003F0120327DB125>I<EB3F80EBFFE03803E0F83807803C48487E121E805A127C158000781307
12F8B6FCA200F8C8FCA61278127C123CEC01807E6CEB0300EB80063807C00E3801F03C3800FFF0
EB1FC0191F7E9E1D>I<EB03E0EB1FF8EB3C38EB707C13F0EA01E014383803C000ACB512C0A238
03C000B3A8487EEA7FFFA216327FB114>I<15F090387F03F83901FFCF1C3803C1FC390780F818
390F00780048137C001E133C003E133EA7001E133C001F137C6C13786C6C5A380FC1E0380DFFC0
D81C7FC7FC0018C8FCA2121CA2121E380FFFF814FF6C14804814C0391E0007E00038EB01F048EB
00701578481438A500701470007814F06CEB01E06CEB03C03907C01F003801FFFC38003FE01E2F
7E9F21>I<1207EA0F80121FA2120FEA0700C7FCABEA078012FFA2120F1207B3A6EA0FC0EAFFF8
A20D307EAF12>105 D<260781FEEB3FC03BFF87FF80FFF0903A8E07C1C0F83B0F9803E3007C27
07B001E6133C9026E000FC7F495BA3495BB3486C486C133F3CFFFC1FFF83FFF0A2341F7E9E38>
109 D<380781FE39FF87FF8090388E07C0390F9803E03807B0019038E000F05BA35BB3486C487E
3AFFFC1FFF80A2211F7E9E25>I<EB1FC0EBFFF83801E03C3807800F390F000780001EEB03C0A2
48EB01E0A248EB00F0A300F814F8A8007814F0007C1301003C14E0A26CEB03C0A26CEB07803907
C01F003801F07C6CB45AEB1FC01D1F7E9E21>I<380783E038FF8FF8EB9C7CEA0FB0EA07F0EBE0
38EBC000A35BB3487EEAFFFEA2161F7E9E19>114 D<3801FC10380FFF30381E03F0EA38004813
705A1430A37E6C1300127EEA3FF06CB4FC6C1380000313E038003FF0EB03F8EB007800C0133CA2
141C7EA27E14186C13386C137038EF01E038C3FFC03880FE00161F7E9E1A>I<13C0A51201A312
03A21207120F121FB512E0A23803C000B01430A83801E060A23800F0C0EB7F80EB1F00142C7FAB
19>I<D8078013F000FF131FA2000F130100071300B31401A2140300031307EBC00E3901F03CF8
3A00FFF0FF80EB3FC0211F7E9E25>I E /Fu 5 85 df<1630167016F0A21501A21503A2150715
0FA2151B821531A2156115E115C1EC0181A2EC0301A21406A2140C141C14181430A202607FA2EC
C000A249B5FC5B91C7FC1306A25BA25BA25B1370136013E01201000381D80FF01301D8FFFE9038
3FFFF0A22C337CB235>65 D<010FB6FC17C0903A003F8007F0EE01F892C7127C177E4A143E8314
7E188002FE140FA24A15C0A21301A25CA21303171F5CA2130718804A143FA2130F18004A5CA201
1F157E17FE4A5CA2013F4A5A5F91C712034C5A495D160F017E4A5A4CC7FC01FE147E16F849495A
ED07E00001EC3F80B600FEC8FC15F032317CB036>68 D<010FB612FEA29039003F8000173E92C7
121EA24A140CA2147EA214FEA25CA20101151CEEC0184A1400A201031301A202F05B1503010713
0F91B5FC93C7FCECE00F010F7FA2ECC006A2011F130EA2EC800C92C8FC133FA291C9FCA25BA213
7EA213FEA25BA21201B512FCA22F317CB02F>70 D<010FB512F816FF903A003F801FC0EE07E092
380003F0EE01F84AEB00FCA2147EA214FE16015CA2010115F816034A14F0EE07E01303EE0F804A
EB3F00167E0107EB03F891B512E016809138E007C0010FEB03F015014A6C7EA2011F80A25CA201
3F1301A21400A249495AA2137E170601FE150E170C5B171C000102011338B539F000FC70EE7FE0
C9EA1F802F327CB034>82 D<0007B712F8A23A0FE007F00101801400D80E00491370121E001C13
0F121800385CA20030011F1460127000605CA2023F14E000E016C0C790C8FCA25CA2147EA214FE
A25CA21301A25CA21303A25CA21307A25CA2130FA25CA2131FA25C133F497E007FB512C0A22D31
74B033>84 D E end
%%EndProlog
%%BeginSetup
%%Feature: *Resolution 300
TeXDict begin
%%EndSetup
%%Page: 0 1
bop 795 707 a Fu(D)26 b(R)g(A)f(F)h(T)225 798 y Ft(Do)r(cumen)n(t)20
b(for)i(a)f(Standard)g(Message-P)n(assing)f(In)n(terface)685
981 y Fs(Scott)c(Berryman,)e Fr(Y)l(ale)19 b(Univ)700 1039
y Fs(James)c(Co)o(wnie,)h Fr(Meiko)i(Ltd)474 1097 y Fs(Jac)o(k)e(Dongarra,)i
Fr(Univ.)23 b(of)17 b(T)l(ennesse)n(e)j(and)d(ORNL)801 1155
y Fs(Al)f(Geist,)f Fr(ORNL)795 1213 y Fs(Bill)f(Gropp,)j Fr(ANL)767
1271 y Fs(Rolf)f(Hemp)q(el,)e Fr(GMD)762 1329 y Fs(Bob)i(Knigh)o(ten,)g
Fr(Intel)786 1387 y Fs(Rust)o(y)g(Lusk,)h Fr(ANL)614 1445 y
Fs(Stev)o(e)e(Otto,)h Fr(Or)n(e)n(gon)h(Gr)n(aduate)g(Inst)578
1504 y Fs(T)l(on)o(y)g(Skjellum,)c Fr(Missisippi)j(State)j(Univ)653
1562 y Fs(Marc)d(Snir,)g Fr(IBM)h(T.)g(J.)g(Watson)744 1620
y Fs(Da)o(vid)f(W)l(alk)o(er,)f Fr(ORNL)626 1678 y Fs(Stev)o(e)g(Zenith,)g
Fr(Kuck)k(&)f(Asso)n(ciates)844 1796 y Fs(Ma)o(y)e(9,)g(1993)87
1854 y(This)g(w)o(ork)g(w)o(as)h(supp)q(orted)g(b)o(y)f(ARP)l(A)g(and)g(NSF)g
(under)g(con)o(tract)g(n)o(um)o(b)q(er)f(###,)g(b)o(y)g(the)192
1912 y(National)h(Science)f(F)l(oundation)i(Science)e(and)i(T)l(ec)o(hnology)
f(Cen)o(ter)f(Co)q(op)q(erativ)o(e)650 1970 y(Agreemen)o(t)f(No.)21
b(CCR-8809615.)p eop
%%Page: 1 2
bop 75 359 a Fq(Chapter)32 b(1)75 570 y Fp(P)m(oin)m(t)41 b(to)f(P)m(oin)m(t)
h(Comm)m(unication)884 789 y Fo(Marc)15 b(Snir)684 838 y(William)10
b(Gropp)j(and)h(Ewing)f(Lusk)75 991 y Fn(1.1)70 b(In)n(tro)r(duction)75
1088 y Fo(This)17 b(section)h(is)e(a)h(draft)g(of)f(the)i(curren)o(t)g(prop)q
(osal)f(for)g(p)q(oin)o(t-to-p)q(oin)o(t)e(comm)o(unication.)24
b(It)17 b(do)q(es)h(not)f(y)o(et)75 1137 y(include)d(a)g(description)g(of)f
(the)i(F)m(ortran)f(77)f(and)h(C)f(bindings.)158 1190 y(I)h(ha)o(v)o(e)g
(tried)g(to)g(indicate,)f(wherev)o(er)i(appropriate,)f(gaps)g(and)f(unresolv)
o(ed)i(issues,)g(using)e(small)f(t)o(yp)q(e.)158 1321 y Fm(Discussion:)38
b Fl(The)13 b(follo)o(wing)j(sections)f(of)f(the)g(in)o(tro)q(duction)i(con)o
(tain)f(general)g(information)h(on)e(the)g(design)h(of)75 1367
y(MPI)h(pro)q(cedures.)27 b(The)16 b(material)i(should)g(b)q(e)e(mo)o(v)o(ed)
g(to)g(a)g(general)h(in)o(tro)q(duction)i(for)d(the)g(en)o(tire)h(do)q(cumen)
o(t.)27 b(The)75 1413 y(actual)14 b(binding)i(of)d(these)g(ob)r(jects)g(in)h
(F)m(ortran)g(and)f(C)g(will)h(b)q(e)g(discussed)h(in)e(the)h(language)h
(binding)g(sub)q(committee.)75 1648 y Fn(1.2)70 b(Data)23 b(T)n(yp)r(es)75
1753 y Fk(1.2.1)55 b(Handle)75 1835 y Fo(MPI)17 b(pro)q(cedures)j(use)e(at)f
(v)n(arious)g(places)h Fj(hand)r(les)p Fo(.)28 b(Handles)18
b(are)g(used)g(to)f(access)i(opaque)e(ob)r(jects.)30 b(Suc)o(h)75
1885 y(ob)r(ject)20 b(can)g(b)q(e)g(created,)i(up)q(dated)e(and)f(destro)o(y)
o(ed)i(only)d(b)o(y)h(b)o(y)h(calling)e(suitable)h(MPI)h(pro)q(cedures,)i
(and)75 1934 y(pro)o(viding)14 b(the)i(handle)f(as)g(parameter.)21
b(Opaque)16 b(ob)r(jects)g(hide)g(from)d(the)j(user)g(the)g(in)o(ternal)e
(represen)o(tation)75 1984 y(used)20 b(for)f(v)n(arious)f(MPI)i(ob)r(jects,)h
(th)o(us)e(allo)o(wing)e(to)i(ha)o(v)o(e)g(similar)e(calls)i(in)f(C)h(and)g
(F)m(ortran,)h(allo)o(wing)d(to)75 2034 y(o)o(v)o(ercome)f(problems)g(with)h
(the)g(t)o(yping)f(rules)i(in)e(these)j(languages,)d(and)h(allo)o(wing)e(for)
h(future)i(extension)g(of)75 2084 y(their)13 b(functionalit)o(y)m(.)j(The)e
(mec)o(hanism)c(for)j(opaque)g(ob)r(jects)h(used)g(here)g(lo)q(osely)e(follo)
o(ws)g(the)h(POSIX)h(F)m(ortran)75 2134 y(binding)f(standard.)158
2186 y(An)i(opaque)h(ob)r(ject)g(can)f(b)q(e)h Fj(p)n(ersistent)f
Fo(or)g Fj(ephemer)n(al)p Fo(.)22 b(A)15 b(p)q(ersisten)o(t)i(ob)r(ject)f(p)q
(ersists)h(un)o(til)e(destro)o(y)o(ed)75 2236 y(b)o(y)h(an)g(explicit)g(op)q
(eration.)25 b(An)17 b(ephemeral)e(ob)r(ject)j(is)e(go)q(o)q(d)g(for)g(a)g
(single)g(use;)h(th)o(us)g(an)f(ephemeral)g(ob)r(ject)75 2286
y(asso)q(ciated)i(with)g(a)f(comm)o(unicatio)o(n)e(op)q(eration)i(disapp)q
(ears)i(once)f(this)g(op)q(eration)f(is)h(completed)f(\(or)g(once)75
2336 y(this)d(ob)r(ject)h(is)e(not)h(needed)i(an)o(ymore)c(for)i(the)g
(completion)e(of)h(the)i(op)q(eration\).)158 2389 y(Opaque)i(ob)r(ject)g(are)
g(created)h(b)o(y)e(calls)g(that)g(are)h(sp)q(eci\014c)g(to)g(eac)o(h)f(ob)r
(ject)i(t)o(yp)q(e.)25 b(They)17 b(are)g(destro)o(y)o(ed)75
2438 y(b)o(y)d(a)f(call)h(to)f Fi(MPI)p 363 2438 14 2 v 15
w(FREE)p Fo(.)g(Additional)f(MPI)j(functions)f(are)g(a)o(v)n(ailable)e(to)h
(access)j(and)e(up)q(date)h(sp)q(eci\014c)g(opaque)75 2488
y(ob)r(jects.)158 2576 y Fh(MPI)p 257 2576 15 2 v 17 w(FREE\(handle\))75
2704 y(IN)h(handle)j Fo(handle)14 b(to)g(ob)r(ject)965 2828
y(1)p eop
%%Page: 2 3
bop 75 -100 a Fo(2)733 b Fg(CHAPTER)14 b(1.)31 b(POINT)15 b(TO)f(POINT)g
(COMMUNICA)m(TION)158 45 y Fo(Mark)e(the)h(handle)g(for)f(destruction.)18
b(The)13 b(ob)r(ject)g(can)g(destro)o(y)o(ed)h(as)e(so)q(on)h(as)f(there)i
(there)f(is)g(no)f(p)q(ending)75 95 y(op)q(eration)g(that)g(is)g(using)g
(this)g(ob)r(ject.)18 b(This)12 b(is)g(equiv)n(alen)o(t)g(to)g(c)o(hanging)f
(the)i(p)q(ersistence)i(of)c(the)i(handle)f(from)75 145 y Fi(persistent)c
Fo(to)i Fi(ephemeral)p Fo(.)15 b(F)m(or)9 b(example,)g(if)g(a)h(comm)o
(unication)d(ob)r(ject)j(is)g(freed,)i(after)e(the)g(comm)o(unication)75
195 y(started)15 b(but)f(b)q(efore)h(it)f(completed,)f(then)h(the)h(p)q
(ending)f(op)q(eration)g(is)f(not)h(a\013ected;)h(one)g(can)f(use)h(the)f
(handle)75 244 y(in)f(calls)g(to)g Fi(MPI)p 334 244 14 2 v
15 w(WAIT)f Fo(or)h Fi(MPI)p 565 244 V 15 w(STATUS)p Fo(.)f(Ho)o(w)o(ev)o
(er,)h(once)h(the)g(op)q(eration)f(completes,)g(it)g(is)g(erroneous)h(to)f
(reuse)75 294 y(the)h(freed)h(handle)f(for)g(a)f(new)h(comm)o(unication.)158
426 y Fm(Discussion:)158 475 y Fl(An)f(alternativ)o(e)i(design)f(p)q(oin)o(t)
g(w)o(as)f(discussed,)h(whereb)o(y)g(it)f(is)h(the)e(user)i(resp)q(onsibili)q
(t)o(y)i(to)d(free)f(a)h(handle)i(only)f(if)75 520 y(there)h(are)g(no)g(p)q
(ending)i(op)q(erations)g(on)e(this)h(handle.)24 b(The)15 b(curren)o(t)g
(design)h(w)o(as)f(deemed)g(more)g(elegan)o(t.)24 b(Note)15
b(that)75 566 y(it)f(is)g(not)f(necessary)i(to)e(destro)o(y)h(the)g(handle)h
(as)e(so)q(on)h(as)g(it)f(is)h(not)g(needed)g(an)o(ymore.)19
b(A)13 b(v)n(alid)i(implemen)o(tation)i(ma)o(y)75 612 y(just)c(mark)g(freed)g
(handles)i(and)f(garbage)g(collect)g(them)f(p)q(erio)q(dical)q(ly)n(.)158
660 y(On)k(the)f(other)h(hand,)h(some)f(ob)r(jects,)h(suc)o(h)f(as)g
(bu\013er)g(descriptor)i(ob)r(jects,)e(can)g(b)q(e)g(used)g(b)o(y)g(sev)o
(eral)h(distinct)75 706 y(concurren)o(t)c(comm)o(unication)i(op)q(erations.)j
(Th)o(us,)13 b(to)g(\014nd)h(out)f(whether)h(suc)o(h)g(ob)r(ject)f(can)g(b)q
(e)h(freed,)f(one)g(w)o(ould)h(need)75 752 y(a)f(reference)h(coun)o(t)g(of)f
(p)q(ending)j(op)q(erations.)j(This)c(complication)h(w)o(as)d(not)h(observ)o
(ed)g(at)g(our)f(last)h(meeting,)h(and)f(ma)o(y)75 797 y(b)q(e)f(a)g(go)q(o)q
(d)h(argumen)o(t)g(to)f(reconsider)i(the)e(curren)o(t)g(de\014nition)j(of)d
Ff(MPI)p 1130 797 12 2 v 13 w(FREE)p Fl(.)158 846 y(W)m(e)h(do)f(not)h(ha)o
(v)o(e)g(y)o(et)g(a)f(mec)o(hanism)i(to)f(con)o(trol)g(where)g(from)f
(storage)h(is)g(allo)q(cated)i(for)d(opaque)i(ob)r(jects.)j(Some)75
892 y(b)q(eliev)o(e)d(it)e(is)h(desirable)h(to)e(allo)o(w)h(the)g(user)f(to)g
(con)o(trol)h(this)g(allo)q(cation.)158 941 y(I)e(no)o(w)h(ha)o(v)o(e)g(a)g
(generic)h Ff(MPI)p 576 941 V 13 w(FREE)d Fl(function)j(for)e(all)i(kinds)g
(of)f(opaque)g(ob)r(jects.)18 b(An)o(y)12 b(reason)i(to)e(ha)o(v)o(e)i(sp)q
(ecialized)75 987 y(functions)h(for)d(eac)o(h)i(kind)g(of)f(ob)r(ject,)g(as)g
(for)g Ff(CREATE)p Fl(?)158 1158 y Fh(MPI)p 257 1158 15 2 v
17 w(ASSOCIA)l(TED\(handle,)h(t)o(yp)q(e\))75 1286 y(IN)i(handle)j
Fo(handle)14 b(to)g(ob)r(ject)75 1382 y Fh(OUT)i(t)o(yp)q(e)k
Fo(state)158 1474 y(Returns)c(the)f(t)o(yp)q(e)g(of)f(the)i(ob)r(ject)f(the)h
(handle)e(is)h(curren)o(tly)h(asso)q(ciated)f(with,)f(if)g(suc)o(h)i(exists.)
21 b(Returns)75 1524 y(the)14 b(sp)q(ecial)h(t)o(yp)q(e)f Fi(MPI)p
444 1524 14 2 v 15 w(NULL)f Fo(if)g(the)i(handle)e(is)h(not)g(curren)o(tly)h
(asso)q(ciated)f(with)g(an)o(y)f(ob)r(ject.)158 1577 y(MPI)18
b(ma)o(y)e(pro)o(vide)h(prede\014ned)j(opaque)d(ob)r(jects)i(and)f
(prede\014ned,)i(static)e(handles)g(to)f(these)i(ob)r(jects.)75
1627 y(Suc)o(h)14 b(ob)r(jects)h(ma)o(y)d(not)i(b)q(e)h(destro)o(y)o(ed.)75
1760 y Fk(1.2.2)55 b(Arra)n(y)19 b(of)g(handles)75 1843 y Fo(An)14
b(MPI)h(call)f(ma)o(y)e(need)j(a)f(parameter)g(that)g(is)h(an)f
Fj(arr)n(ay)g(of)i(hand)r(les)p Fo(.)k(The)14 b(arra)o(y-of-handles)g(ob)r
(ject)h(is)f(not)75 1893 y(self-delimiting;)9 b(it)i(do)q(es)i(not)f(carry)g
(information)d(on)i(the)i(n)o(um)o(b)q(er)e(of)g(en)o(tries)i(in)e(the)i
(arra)o(y)m(.)j(This)c(information)75 1942 y(has)i(to)g(b)q(e)g(pro)o(vided)g
(b)o(y)g(an)f(additional)f Fi(len)i Fo(parameter,)f(whenev)o(er)i(a)f
(list-of-handles)e(parameter)i(is)g(used.)158 2074 y Fm(Discussion:)158
2123 y Fl(The)d(reason)g(for)g(not)g(ha)o(ving)h(self-delimiti)q(ng)i(arra)o
(ys)d(is)h(that)f(records)g(are)g(not)g(\014rst-class)h(citizens)g(in)g(F)m
(ortran)f(and)75 2168 y(that)h(ha)o(ving)i(an)f(arra)o(y)f(where)h(one)f(en)o
(try)h(enco)q(des)g(length,)g(whereas)g(the)f(other)h(en)o(tries)g(enco)q(de)
g(handles)h(w)o(as)e(deemed)75 2214 y(to)k(b)q(e)g(to)q(o)g(error-prone.)27
b(This)17 b(line)g(of)f(argumen)o(tation)i(really)g(implies)g(that)e(w)o(e)g
(do)g(not)g(view)h(arra)o(y-of-handles)h(as)75 2260 y(an)f(opaque)g(ob)r
(ject,)h(and)f(that)f(w)o(e)g(exp)q(ect)h(the)g(user)g(to)f(build)j(these)e
(ob)r(jects)f(explicitl)q(y)m(,)k(not)c(via)i(MPI)e(calls.)29
b(The)75 2305 y(alternativ)o(e)15 b(is)f(for)e(arra)o(y-of-handles)k(to)c(b)q
(e)i(an)f(opaque)h(ob)r(ject,)f(manipulated)j(via)e(s)f(set)g(of)g(MPI)g
(calls.)75 2521 y Fk(1.2.3)55 b(State)75 2604 y Fo(MPI)14 b(pro)q(cedures)i
(use)e(at)f(v)n(arious)g(places)h(argumen)o(ts)f(with)g Fj(state)g
Fo(t)o(yp)q(es.)19 b(The)14 b(v)n(alues)f(of)g(suc)o(h)h(data)g(t)o(yp)q(e)g
(are)75 2654 y(all)f(iden)o(ti\014ed)h(b)o(y)g(names,)e(and)i(no)g(op)q
(eration)g(is)f(de\014ned)i(on)f(them.)k(F)m(or)13 b(example,)f(the)j
Fi(MPI)p 1589 2654 V 15 w(APPEND)e Fo(routine)75 2704 y(has)h(a)g(state)g(t)o
(yp)q(e)h(parameter)e(with)h(v)n(alues)f Fi(MPI)p 864 2704
V 16 w(INT,)20 b(MPI)p 1054 2704 V 16 w(REAL,)12 b Fo(etc.)p
eop
%%Page: 3 4
bop 75 -100 a Fg(1.3.)31 b(PR)o(OCESSES)1437 b Fo(3)75 45 y
Fk(1.2.4)55 b(Named)18 b(constan)n(ts)75 124 y Fo(MPI)e(pro)q(cedures)j
(sometimes)14 b(assign)i(a)g(sp)q(ecial)g(meaning)e(to)i(a)g(sp)q(ecial)g(v)n
(alue)g(of)f(a)h(basic)g(t)o(yp)q(e)h(parameter;)75 173 y(e.g.)i
Fi(tag)14 b Fo(is)g(an)g(in)o(teger)g(v)n(alued)g(parameter)g(of)g(p)q(oin)o
(t-to-p)q(oin)o(t)f(comm)o(unicatio)o(n)f(op)q(erations,)i(with)g(a)g(sp)q
(ecial)75 223 y Fi(DONTCARE)g Fo(v)n(alue.)24 b(Suc)o(h)17
b(parameters)f(will)f(ha)o(v)o(e)h(a)g(range)g(of)f(regular)h(v)n(alues,)g
(whic)o(h)g(is)g(a)g(prop)q(er)h(subrange)75 273 y(of)f(the)h(range)g(of)f(v)
n(alues)h(of)f(the)h(corresp)q(onding)h(basic)f(t)o(yp)q(e;)h(sp)q(ecial)f(v)
n(alues)f(\(suc)o(h)i(as)f(DONTCARE\))f(will)75 323 y(b)q(e)f(outside)f(the)h
(regular)f(range.)19 b(The)c(range)f(of)g(regular)g(v)n(alues)g(can)g(b)q(e)h
(queried,)f(and)g(sometimes)f(set,)h(using)75 373 y(en)o(vironmen)o(t)f
(inquiry)g(or)h(en)o(vironmen)o(t)f(setting)h(functions)g(\(Section)g
Fh(??)p Fo(\).)158 502 y Fm(Discussion:)158 549 y Fl(Need)f(to)g(agree)g(on)h
(a)f(language)i(mec)o(hanism)f(for)f(named)h(constan)o(ts.)158
595 y(Implemen)o(ters)j(should)g(detect,)f(whenev)o(er)g(p)q(ossible,)i
(illegal)g(uses)e(of)f(\\sp)q(ecial)j(v)n(alues".)25 b(Th)o(us,)16
b(the)g(use)g(of)f(the)75 641 y Ff(DONTCARE)10 b Fl(v)n(alue)k(to)f(tag)g(a)g
(message)h(sen)o(t)f(will)h(b)q(e)g(\015agged)g(as)f(an)g(error.)75
845 y Fk(1.2.5)55 b(Choice)75 924 y Fo(MPI)15 b(functions)h(sometimes)d(use)j
(parameters)f(with)g(a)f Fj(choic)n(e)i Fo(\(or)f(union\))g(data)f(t)o(yp)q
(e.)23 b(I.e.,)14 b(distinct)h(calls)g(to)75 973 y(the)i(same)f(routine)h(ma)
o(y)e(pass)i(b)o(y)f(reference)j(actual)d(parameters)h(of)f(di\013eren)o(t)i
(t)o(yp)q(es.)27 b(The)17 b(mec)o(hanism)d(for)75 1023 y(pro)o(viding)f(suc)o
(h)h(parameters)g(will)f(di\013er)h(from)e(language)h(to)h(language.)158
1153 y Fm(Discussion:)158 1199 y Fl(The)i(F)m(ortran)g(77)g(standard)h(sp)q
(eci\014es)h(that)e(the)g(t)o(yp)q(e)g(of)g(actual)h(argumen)o(ts)g(need)f
(to)g(agree)g(with)h(the)f(t)o(yp)q(e)g(of)75 1245 y(dumm)o(y)g(argumen)o
(ts;)i(no)f(construct)f(equiv)n(alen)o(t)i(to)e(C)g(p)q(oin)o(ters)h(is)f(a)o
(v)n(ailable.)29 b(Th)o(us,)16 b(it)g(w)o(ould)h(seem)f(that)g(there)g(is)75
1291 y(no)f(standard)h(conforming)g(mec)o(hanism)g(to)e(supp)q(ort)i(c)o
(hoice)g(parameters.)22 b(Ho)o(w)o(ev)o(er,)14 b(most)h(F)m(ortran)g
(compiler)h(either)75 1336 y(don't)g(c)o(hec)o(k)g(t)o(yp)q(e)g(consistency)i
(of)e(calls)h(to)f(external)h(routines,)g(or)f(supp)q(ort)h(a)f(sp)q(ecial)h
(mec)o(hanism)h(to)d(link)j(foreign)75 1382 y(\(e.g.,)d(C\))f(routines.)25
b(I)15 b(suggest)h(that)f(w)o(e)g(accept)g(this)h(nonconformit)o(y)h(with)f
(F)m(ortran)f(77)h(standard.)24 b(I.e.,)15 b(w)o(e)f(accept)75
1428 y(that)f(the)g(same)h(routine)g(ma)o(y)f(b)q(e)g(passed)h(an)g(actual)g
(parameter)g(of)e(a)h(di\013eren)o(t)i(t)o(yp)q(e)e(at)g(distinct)i(calls.)
158 1474 y(Generic)h(routines)g(can)f(b)q(e)g(used)g(in)g(F)m(ortran)g(90)g
(to)g(pro)o(vide)h(a)e(standard)i(conforming)g(solution.)24
b(This)16 b(solution)75 1520 y(will)f(b)q(e)e(consisten)o(t)h(with)g(our)f
(nonstandard)i(conforming)g(F)m(ortran)e(77)g(solution.)75
1745 y Fn(1.3)70 b(Pro)r(cesses)75 1921 y Fm(Discussion:)18
b Fl(This)c(material)g(b)q(elongs)h(to)e(an)g(in)o(tro)q(duction)j(or)d(en)o
(vironmen)o(t)i(section)158 2054 y Fo(An)k(MPI)g(program)e(is)i(executed)h(b)
o(y)f(sev)o(eral)g(autonomous)e(pro)q(cesses)22 b(that)c(eac)o(h)i(execute)g
(their)f(o)o(wn)75 2104 y(co)q(de,)d(in)f(a)h(MIMD)f(st)o(yle.)23
b(The)16 b(co)q(des)h(executed)g(b)o(y)f(eac)o(h)g(pro)q(cess)h(need)f(not)g
(b)q(e)g(iden)o(tical.)22 b(The)16 b(pro)q(cesses)75 2154 y(comm)o(unicate)d
(via)h(calls)h(to)g(MPI)g(comm)o(unication)d(primitiv)o(es.)19
b(T)o(ypically)m(,)13 b(eac)o(h)j(pro)q(cessor)h(executes)g(in)e(its)75
2203 y(o)o(wn)f(address)i(space,)f(although)f(shared-memory)f(implem)o(en)o
(tations)f(of)i(MPI)h(are)g(p)q(ossible.)20 b(This)14 b(do)q(cumen)o(t)75
2253 y(sp)q(eci\014es)i(the)f(b)q(eha)o(vior)f(of)g(a)g(parallel)g(program)e
(assuming)h(that)i(only)e(MPI)i(calls)f(are)h(used)g(for)f(comm)o(unica-)75
2303 y(tion.)j(The)d(in)o(teraction)f(of)g(an)g(MPI)h(program)e(with)h(other)
h(p)q(ossible)f(means)g(of)g(comm)o(unicatio)o(n)e(\(e.g.,)h(shared)75
2353 y(memory\))e(is)i(not)h(sp)q(eci\014ed.)19 b(In)13 b(particular,)f(it)g
(is)g(assumed)g(that)h(message)f(bu\013ers)i(at)e(distinct)h(pro)q(cessors)i
(are)75 2403 y(disjoin)o(t.)158 2454 y(MPI)e(do)q(es)g(not)f(sp)q(ecify)h
(the)g(execution)g(mo)q(del)e(for)h(eac)o(h)h(pro)q(cess.)20
b(A)12 b(pro)q(cess)i(can)f(b)q(e)g(sequen)o(tial,)f(or)h(can)75
2503 y(b)q(e)h(m)o(ultithreaded,)f(with)g(threads)i(p)q(ossibly)e(executing)i
(concurren)o(tly)m(.)j(Care)c(has)g(b)q(een)h(tak)o(en)f(to)f(mak)o(e)g(MPI)
75 2553 y(\\thread-safe",)h(b)o(y)f(a)o(v)o(oiding)f(the)j(use)f(of)g
(implicit)d(global)h(states.)158 2604 y(The)h(initial)e(allo)q(cation)f(of)i
(pro)q(cesses)j(to)e(an)f(MPI)h(computation)e(and)h(their)h(binding)e(to)i
(ph)o(ysical)f(pro)q(ces-)75 2654 y(sors)k(is)f(not)h(sp)q(eci\014ed)g(b)o(y)
g(the)f(program)f(itself.)22 b(It)16 b(is)f(exp)q(ected)i(that)f(v)o(endors)g
(will)e(pro)o(vide)h(mec)o(hanisms)e(to)75 2704 y(do)h(so)g(either)h(at)e
(load)g(time)g(or)h(at)g(run)g(time.)j(Suc)o(h)d(mec)o(hanisms)e(will)h(allo)
o(w)f(the)i(sp)q(eci\014cation)h(of)e(the)i(initial)p eop
%%Page: 4 5
bop 75 -100 a Fo(4)733 b Fg(CHAPTER)14 b(1.)31 b(POINT)15 b(TO)f(POINT)g
(COMMUNICA)m(TION)75 45 y Fo(n)o(um)o(b)q(er)i(of)g(required)i(pro)q(cesses,)
i(the)d(co)q(de)h(to)f(b)q(e)g(executed)i(b)o(y)d(eac)o(h)i(initial)d(pro)q
(cess,)j(and)f(the)h(allo)q(cation)75 95 y(of)g(pro)q(cesses)j(to)e(pro)q
(cessors.)34 b(Also,)20 b(the)f(curren)o(t)h(prop)q(osal)e(do)q(es)i(not)e
(pro)o(vide)h(for)f(dynamic)f(creation)i(or)75 145 y(deletion)14
b(of)f(pro)q(cesses)j(during)e(program)e(execution)i(\(the)h(total)e(n)o(um)o
(b)q(er)g(of)g(pro)q(cesses)j(is)e(\014xed\),)g(although)e(it)75
195 y(is)k(in)o(tended)h(to)f(b)q(e)h(consisten)o(t)h(with)e(suc)o(h)h
(extension.)26 b(Finally)m(,)14 b(the)j(curren)o(t)h(prop)q(osal)e(do)q(es)h
(not)f(sp)q(ecify)h(a)75 244 y(naming)d(sc)o(heme)j(for)f(pro)q(cesses.)29
b(W)m(e)16 b(prop)q(ose)i(to)e(alw)o(a)o(ys)g(iden)o(tify)g(pro)q(cesses)j
(according)e(to)f(their)h(relativ)o(e)75 294 y(rank)d(in)f(a)h(con)o(text)g
(\(group\),)g(so)g(that,)f(e\013ectiv)o(ely)m(,)h(pro)q(cesses)j(are)d(iden)o
(ti\014ed)g(b)o(y)g(consecutiv)o(e)h(in)o(tegers.)75 443 y
Fk(1.3.1)55 b(Error)18 b(Handling)75 614 y Fm(Discussion:)34
b Fl(Material)14 b(of)e(this)h(section)g(should)h(b)q(e)e(mo)o(v)o(ed)h(to)f
(a)g(general)h(in)o(tro)q(duction)i(section.)j(This)13 b(material)g(has)75
664 y(not)g(y)o(et)g(b)q(een)h(appro)o(v)o(ed)g(b)o(y)g(MPIF)158
802 y Fo(MPI)i(pro)o(vides)h(the)f(user)h(with)f(reliable)g(message)g
(transmission:)21 b(A)16 b(message)g(sen)o(t)h(is)f(alw)o(a)o(ys)f(receiv)o
(ed)75 852 y(correctly)m(,)20 b(and)f(the)g(user)h(do)q(es)f(not)g(need)g(to)
g(c)o(hec)o(k)g(for)g(transmission)e(errors,)k(time-outs,)d(or)h(other)g
(error)75 902 y(conditions.)f(In)c(other)g(w)o(ords,)g(MPI)g(do)q(es)h(not)f
(pro)o(vide)g(mec)o(hanisms)e(for)h(dealing)g(with)h(failures)f(in)h(the)g
(com-)75 952 y(m)o(unication)9 b(system.)17 b(Where)12 b(the)g(MPI)f
(implemen)o(tation)d(is)j(built)f(on)h(an)g(unreliable)g(underlying)g(mec)o
(hanism,)75 1002 y(then)16 b(it)f(is)g(the)h(job)f(of)g(the)h(implem)o(en)o
(ter)e(of)h(the)h(MPI)f(subsystem)h(to)f(insulate)g(the)h(user)h(from)c(this)
j(unrelia-)75 1051 y(bilit)o(y)m(,)11 b(or)j(to)f(re\015ect)j(unreco)o(v)o
(erable)f(errors)g(as)e(global)f(program)g(failures.)18 b(Similarly)10
b(MPI)k(itself)f(pro)o(vides)h(no)75 1101 y(mec)o(hanisms)e(for)h(handling)g
(no)q(de)h(failures.)158 1157 y(Of)c(course,)i(MPI)e(programs)f(ma)o(y)f
(still)i(b)q(e)h(erroneous.)18 b(A)10 b Fh(program)g(error)f
Fo(can)h(o)q(ccur)i(when)e(an)g(MPI)h(call)75 1207 y(is)i(called)g(with)g(an)
g(incorrect)h(parameter)f(\(non-existing)g(destination)g(in)f(a)h(send)h(op)q
(eration,)f(bu\013er)h(to)q(o)f(small)75 1257 y(in)k(a)f(receiv)o(e)j(op)q
(eration,)e(etc.\))29 b(This)17 b(t)o(yp)q(e)g(of)g(error)h(w)o(ould)e(o)q
(ccur)i(in)f(an)o(y)f(implemen)o(tation.)24 b(In)18 b(addition,)75
1307 y(a)f Fh(resource)i(error)e Fo(ma)o(y)f(o)q(ccur)i(when)h(a)e(program)f
(exceeds)k(the)e(amoun)o(t)e(of)i(a)o(v)n(ailable)d(system)j(resources)75
1357 y(\(n)o(um)o(b)q(er)d(of)h(p)q(ending)g(messages,)g(system)g(bu\013ers,)
h(etc.\).)26 b(The)16 b(o)q(ccurrence)j(of)c(this)h(t)o(yp)q(e)h(of)e(error)i
(dep)q(ends)75 1406 y(on)h(the)g(amoun)o(t)e(of)h(a)o(v)n(ailable)f
(resources)k(in)e(the)g(system)g(and)f(the)i(resource)h(allo)q(cation)c(mec)o
(hanism)g(used;)75 1456 y(this)g(ma)o(y)d(di\013er)j(from)e(system)h(to)h
(system.)22 b(The)16 b(recommended)f(implemen)o(tation)d(pro\014le)k(pro)o
(vides)f(sev)o(eral)75 1506 y(mec)o(hanisms)d(to)h(alleviate)g(the)h(p)q
(ortabilit)o(y)e(problem)g(this)i(represen)o(ts.)21 b(One)14
b(can)g(also)f(write)h Fh(safe)f Fo(programs,)75 1556 y(that)h(are)g(not)g
(sub)r(ject)h(to)f(resource)i(errors.)158 1612 y(All)e(MPI)h(pro)q(cedure)i
(calls)e(return)h(an)f(error)h(parameter)f(that)g(indicates)g(successful)i
(completion)c(of)h(the)75 1662 y(op)q(eration,)f(or)h(the)h(error)f
(condition)g(that)g(o)q(ccurred,)h(otherwise.)158 1718 y(The)e(recommended)f
(implem)o(en)o(tation)e(pro\014le)i(in)g(a)g(POSIX)i(en)o(vironmen)o(t)d(is)h
(for)g(an)o(y)g(MPI)h(routine)g(that)75 1767 y(encoun)o(ters)18
b(a)f(reco)o(v)o(erable)g(error)g(to)g(generate)g(an)g Fj(MPI)g(err)n(or)f
(signal)p Fo(,)h(using)f(a)g(sp)q(ecial)h(signal)e(v)n(alue.)26
b(The)75 1817 y(default)10 b(handler)h(for)g(this)g(signal)f(terminates)g
(the)i(execution)f(of)f(all)g(in)o(v)o(olv)o(ed)g(pro)q(cesses,)j(with)e(a)f
(suitable)h(error)75 1867 y(message)k(b)q(eing)g(returned)i(to)e(the)h(user.)
22 b(Ho)o(w)o(ev)o(er,)16 b(the)g(user)g(can)f(pro)o(vide)g(his)g(or)g(her)h
(o)o(wn)f(signal)f(handling)75 1917 y(routine.)j(In)11 b(particular,)f(the)i
(user)g(can)e(sp)q(ecify)i(a)e(\\no)q(op")g(signal)g(handler,)h(th)o(us)g
(relegating)f(all)g(error)h(handling)75 1967 y(to)j(the)g(user)h(co)q(de,)f
(using)g(the)h(error)f(parameters)g(returned)i(b)o(y)e(the)g(MPI)g(calls.)158
2023 y(MPI)h(calls)g(ma)o(y)e(initiate)h(op)q(erations)h(that)g(con)o(tin)o
(ue)g(async)o(hronously)g(after)g(the)h(call)e(returned.)23
b(Th)o(us,)75 2072 y(the)d(op)q(eration)e(ma)o(y)f(return)k(with)d(a)h(co)q
(de)h(indicating)d(successful)k(completion,)d(y)o(et)h(later)g(cause)h(an)f
(error)75 2122 y(exception)d(to)f(b)q(e)g(raised.)22 b(If)15
b(there)h(is)f(a)g(subsequen)o(t)i(call)d(that)h(relates)h(to)f(the)h(same)e
(op)q(eration)h(\(e.g.,)f(a)h(call)75 2172 y(that)i(v)o(eri\014es)i(that)e
(an)g(async)o(hronous)i(op)q(eration)e(has)h(completed\))f(then)h(the)g
(error)g(parameter)f(asso)q(ciated)75 2222 y(with)e(this)g(call)g(will)f(b)q
(e)i(used)g(to)f(indicate)h(the)g(nature)g(of)e(the)i(error.)24
b(In)15 b(a)g(few)h(cases,)g(the)g(error)g(ma)o(y)e(o)q(ccur)75
2272 y(after)h(all)f(calls)h(that)g(relate)h(to)e(the)i(op)q(eration)f(ha)o
(v)o(e)g(completed,)f(so)h(that)h(no)e(error)i(parameter)f(can)g(b)q(e)h
(used)75 2321 y(to)e(indicate)f(the)i(nature)f(of)f(the)i(error)g(\(e.g.,)d
(an)i(error)h(in)e(a)g(send)i(with)e(the)i(ready)f(mo)q(de\).)j(In)d(suc)o(h)
g(cases,)h(an)75 2371 y(error)g(will)d(b)q(e)j(undetected,)g(if)e(the)i(user)
g(disabled)f(the)g(MPI)g(error)h(signal.)158 2506 y Fm(Discussion:)35
b Fl(The)13 b(alternativ)o(e)i(c)o(hoice)f(is)g(to)f(ha)o(v)o(e)g(fatal)h
(and)g(non-fatal)g(signals.)158 2558 y(One)f(migh)o(t)h(w)o(an)o(t)f
(di\013eren)o(t)h(signals)i(for)c(di\013eren)o(t)j(mo)q(dules.)158
2614 y(The)e(details)i(of)e(suc)o(h)g(prop)q(osal)i(need)f(b)q(e)f(elab)q
(orated)i(in)f(an)f(appropriate)i(\\pro\014le")g(sub)q(committee.)p
eop
%%Page: 5 6
bop 75 -100 a Fg(1.4.)31 b(MESSA)o(GES)1456 b Fo(5)75 45 y
Fn(1.4)70 b(Messages)75 136 y Fo(A)14 b(message)g(consists)g(of)g(an)f
Fj(envelop)n(e)i Fo(and)f Fj(data)p Fo(.)75 252 y Fk(1.4.1)55
b(Data)75 329 y Fo(The)17 b(data)f(part)h(of)f(a)g(message)g(consists)h(of)f
(a)g(sequence)j(of)d(v)n(alues,)g(eac)o(h)h(of)f(a)g(basic)h(datat)o(yp)q(e)g
(in)f(the)h(host)75 379 y(language.)29 b(Th)o(us,)19 b(in)e(F)m(ortran)h(77,)
f(a)h(message)f(consists)i(of)e(a)h(sequence)i(of)d(v)n(alues)h(that)g(are)g
(eac)o(h)g(of)f(t)o(yp)q(e)75 428 y Fi(INTEGER)p Fo(,)12 b
Fi(REAL)p Fo(,)h Fi(DOUBLE)20 b(PRECISION)p Fo(,)12 b Fi(COMPLEX)p
Fo(,)g Fi(DOUBLE)20 b(PRECISION)g(COMPLEX)p Fo(,)12 b Fi(LOGICAL)p
Fo(,)g(or)i(\(length)g(1\))75 478 y Fi(CHARACTER)p Fo(.)i(A)i(message)f(ma)o
(y)f(also)h(con)o(tain)h(a)f(v)n(alue)h(of)f(t)o(yp)q(e)h Fi(BYTE)p
Fo(,)f(whic)o(h)h(consists)h(of)e(8)h(binary)f(digits.)75 528
y(A)e(b)o(yte)g(is)g(di\013eren)o(t)h(from)d(a)i(c)o(haracter.)23
b(Di\013eren)o(t)15 b(mac)o(hines)f(ma)o(y)f(ha)o(v)o(e)i(di\013eren)o(t)h
(represen)o(tations)h(for)d(the)75 578 y(same)e(c)o(haracter,)i(or)f(ma)o(y)e
(use)i(more)f(than)h(one)g(b)o(yte)g(to)g(represen)o(t)i(a)e(c)o(haracter.)19
b(On)13 b(the)g(other)h(hand,)e(a)h(b)o(yte)75 628 y(has)h(the)h(same)e
(binary)g(v)n(alue)g(on)h(an)o(y)f(mac)o(hine.)k(A)d(message)g(ma)o(y)d(mix)h
(v)n(alues)i(of)f(di\013eren)o(t)i(t)o(yp)q(es.)158 756 y Fm(Missing:)158
802 y Fl(Need)g(to)h(agree)g(on)f(the)h(C)f(t)o(yp)q(es)h(\(including)i
(handling)g(of)e(signed/unsign)q(ed\),)i(and)e(on)g(F)m(ortran)g(90)f(t)o(yp)
q(es)h(\(in-)75 847 y(cluding)f(handling)h(of)d(kinds\).)75
1046 y Fk(1.4.2)55 b(En)n(v)n(elop)r(e)75 1123 y Fo(The)14
b(follo)o(wing)e(information)f(is)i(asso)q(ciated)i(with)e(eac)o(h)i
(message:)75 1205 y Fh(source)20 b Fo(The)14 b(rank)g(of)f(the)i(sending)f
(pro)q(cess)75 1288 y Fh(destinatio)o(n)k Fo(The)c(rank)g(of)f(the)i
(receiving)f(pro)q(cess)75 1370 y Fh(tag)20 b Fo(User)15 b(de\014ned)75
1453 y Fh(con)o(text)k Fo(handle)158 1536 y(The)14 b(range)g(of)f(v)n(alid)f
(v)n(alues)h(for)g(the)h Fh(source)f Fo(and)g Fh(destination)d
Fo(\014elds)k(is)f Fi(0)22 b(...)43 b(n-1)p Fo(,)12 b(where)j
Fi(n)e Fo(is)g(the)75 1585 y(n)o(um)o(b)q(er)e(of)h(pro)q(cesses)j(in)c(the)i
(sp)q(eci\014ed)h(con)o(text.)k Fi(source)j(=)g(destination)10
b Fo(is)i(allo)o(w)o(ed:)k(a)c(pro)q(cess)i(can)e(send)75 1635
y(a)i(message)f(to)h(itself.)158 1685 y(The)g(ranges)h(of)e(v)n(alid)f(v)n
(alues)i(for)f Fi(tag)g Fo(is)h(implem)o(en)o(tation)d(dep)q(enden)o(t,)k
(and)f(can)g(b)q(e)g(found)f(b)o(y)h(calling)e(a)75 1735 y(suitable)i(query)g
(function,)f(as)h(describ)q(ed)i(in)d(Section)i Fh(??)p Fo(.)158
1785 y(The)f Fi(tag)e Fo(\014eld)i(can)f(b)q(e)h(arbitrarily)e(set)j(b)o(y)e
(the)h(application,)d(and)i(can)h(b)q(e)g(used)g(to)f(distinguish)g
(di\013eren)o(t)75 1835 y(messages.)158 1884 y Fi(Context)f
Fo(should)i(b)q(e)h(a)e(con)o(text)i(shared)g(b)o(y)e(b)q(oth)h(source)h(and)
f(destination.)158 1934 y(The)g(actual)g(mec)o(hanism)d(used)k(to)f(asso)q
(ciate)g(an)g(en)o(v)o(elop)q(e)g(with)g(a)f(message)h(is)g(implem)o(en)o
(tation)d(dep)q(en-)75 1984 y(den)o(t;)h(some)f(of)g(the)i(information)8
b(\(e.g.,)j Fh(sender)f Fo(or)i Fh(receiv)o(er)p Fo(\))e(ma)o(y)g(b)q(e)i
(implicit,)d(and)i(need)i(not)f(b)q(e)g(explicitly)75 2034
y(carried)j(b)o(y)e(a)h(message.)75 2171 y Fn(1.5)70 b(Comm)n(unication)20
b(Bu\013ers)75 2262 y Fo(The)h(basic)f(p)q(oin)o(t)g(to)g(p)q(oin)o(t)g(comm)
o(unicatio)o(n)e(op)q(erations)i(are)h Fh(send)e Fo(and)h Fh(receiv)o(e)p
Fo(.)36 b(A)20 b Fh(send)f Fo(op)q(eration)75 2312 y(creates)c(a)d(message;)g
(the)i(message)e(data)h(is)f(tak)o(en)h(from)e(the)j Fh(send)f(bu\013er)p
Fo(.)j(A)d Fh(receiv)o(e)e Fo(op)q(eration)i(consumes)75 2361
y(a)j(message;)h(the)g(message)f(data)g(is)g(put)h(in)o(to)e(the)i
Fh(receiv)o(e)h(bu\013er)p Fo(.)23 b(The)17 b(sp)q(eci\014cation)g(of)f(send)
h(or)g(receiv)o(e)75 2411 y(bu\013ers)e(uses)g(the)g(same)e(syn)o(tax.)75
2527 y Fk(1.5.1)55 b(Comm)n(unication)21 b(bu\013er)d(comp)r(onen)n(ts)75
2604 y Fo(A)d(bu\013er)g(consists)h(of)d(a)i(sequence)h(of)e
Fh(bu\013er)h(comp)q(onen)o(ts)p Fo(.)j(Eac)o(h)d(comp)q(onen)o(t)e(consists)
j(of)e(a)g(sequence)j(of)75 2654 y(\(not)f(necessarily)g(distinct\))g(v)n
(ariables)f(of)g(the)h(same)f(basic)h(datat)o(yp)q(e.)23 b(The)16
b(datat)o(yp)q(e)g(of)f(suc)o(h)h(a)g(v)n(ariable)e(is)75 2704
y(sp)q(eci\014ed)g(b)o(y)f(a)f(state)i(parameter.)j(The)d(p)q(ossible)f(v)n
(alues)f(for)h(F)m(ortran)f(are)h Fi(MPI)p 1357 2704 14 2 v
15 w(INT)p Fo(,)f Fi(MPI)p 1528 2704 V 15 w(REAL)p Fo(,)g Fi(MPI)p
1721 2704 V 15 w(DOUBLE)p Fo(,)p eop
%%Page: 6 7
bop 75 -100 a Fo(6)733 b Fg(CHAPTER)14 b(1.)31 b(POINT)15 b(TO)f(POINT)g
(COMMUNICA)m(TION)75 45 y Fi(MPI)p 144 45 14 2 v 15 w(COMPLEX)p
Fo(,)k Fi(MPI)p 409 45 V 15 w(DCOMPLEX)p Fo(,)g Fi(MPI)p 696
45 V 15 w(LOGICAL)p Fo(,)h Fi(MPI)p 962 45 V 15 w(CHAR)g Fo(and)h
Fi(MPI)p 1237 45 V 15 w(BYTE)p Fo(,)f(corresp)q(onding)i(to)f(datat)o(yp)q
(es)75 95 y Fi(INTEGER)p Fo(,)e Fi(REAL)p Fo(,)g Fi(DOUBLE)j(PRECISION)p
Fo(,)c Fi(COMPLEX)p Fo(,)h Fi(DOUBLE)i(PRECISION)g(COMPLEX)p
Fo(,)e Fi(LOGICAL)p Fo(,)g Fi(CHARACTER)75 145 y Fo(and)j(to)g(un)o(t)o(yp)q
(ed)g Fi(BYTE)p Fo(.)f(The)h(p)q(ossible)g(v)n(alues)g(for)g(C)g(are)g
Fi(MPI)p 1162 145 V 15 w(CHAR)p Fo(,)f Fi(MPI)p 1363 145 V
15 w(SHORT)p Fo(,)f Fi(MPI)p 1585 145 V 15 w(INT)p Fo(,)h Fi(MPI)p
1764 145 V 15 w(LONG)p Fo(,)75 195 y Fi(MPI)p 144 195 V 15
w(FLOAT)p Fo(,)12 b Fi(MPI)p 359 195 V 15 w(DOUBLE)h Fo(and)h
Fi(MPI)p 666 195 V 15 w(BYTE)p Fo(.)158 325 y Fm(Discussion:)158
372 y Fl(Ma)o(y)g(need)g(to)g(tak)o(e)g(care)f(of)h(kinds)h(in)f(F)m(ortran)g
(90)g(and)g(of)g(signed/unsign)q(ed)j(in)d(C.)f(More)h(elab)q(orate)h
(de\014nitions)75 418 y(b)q(elong)g(to)e(the)g(language)i(binding.)158
552 y Fo(There)g(are)f(\014v)o(e)g(kinds)g(of)g(bu\013er)g(comp)q(onen)o(ts:)
75 670 y Fh(Con)o(tiguous)f(comp)q(onen)o(t)75 750 y Fo(A)h(sequence)i(of)d
(con)o(tiguous)h(v)n(alues)g(of)f(the)h(same)f(basic)h(t)o(yp)q(e,)g(sp)q
(eci\014ed)i(b)o(y)75 839 y Fh(start)k Fo(Initial)12 b(elemen)o(t)75
930 y Fh(coun)o(t)19 b Fo(Num)o(b)q(er)14 b(of)f(elemen)o(ts)h(\()p
Fi(count)c Fe(\025)i Fi(0)p Fo(\))75 1020 y Fh(datat)o(yp)q(e)19
b Fo(T)o(yp)q(e)c(of)e(elemen)o(ts)158 1109 y(Th)o(us,)h(if)e
Fi(A)i Fo(is)f(an)h(arra)o(y)f(of)g(in)o(tegers,)h(then)h Fi(A\(1\),)21
b(4,)g(MPI)p 1127 1109 V 15 w(INT)13 b Fo(is)h(the)g(bu\013er)h(comp)q(onen)o
(t)e(with)g(en)o(tries)75 1159 y Fi(A\(1\),)21 b(A\(2\),)g(A\(3\),)f(A\(4\))p
Fo(.)75 1277 y Fh(V)l(ector)15 b(comp)q(onen)o(t)75 1357 y
Fo(A)f(sequence)j(of)c(equally)h(spaced)h(and)f(equally)f(sized)i(blo)q(c)o
(ks)f(of)g(elemen)o(ts)g(of)g(the)g(same)g(basic)g(t)o(yp)q(e,)g(sp)q
(eci\014ed)75 1407 y(b)o(y)75 1495 y Fh(start)20 b Fo(Initial)12
b(elemen)o(t)75 1586 y Fh(coun)o(t)19 b Fo(Num)o(b)q(er)14
b(of)f(elemen)o(ts)h(\()p Fi(count)c Fe(\025)i Fi(0)p Fo(\))75
1677 y Fh(stride)18 b Fo(Num)o(b)q(er)c(of)f(elemen)o(ts)h(b)q(et)o(w)o(een)h
(the)g(start)f(of)f(eac)o(h)i(blo)q(c)o(k)75 1767 y Fh(len)o(blk)j
Fo(Num)o(b)q(er)13 b(of)h(elemen)o(ts)f(in)h(eac)o(h)g(blo)q(c)o(k)g(\()p
Fi(lenblk)c Fd(>)i Fi(0)p Fo(\))75 1858 y Fh(datat)o(yp)q(e)19
b Fo(T)o(yp)q(e)c(of)e(elemen)o(ts)158 1947 y(Assume)20 b(that)h(an)f(elemen)
o(t)g(of)f(t)o(yp)q(e)i Fi(datatype)e Fo(o)q(ccupies)i Fi(m)f
Fo(b)o(ytes.)38 b(Then,)22 b(in)e(a)g(b)o(yte)h(addressable)75
1996 y(mac)o(hine,)11 b(the)i(bu\013er)h(comp)q(onen)o(t)d(describ)q(ed)k(b)o
(y)d(these)i(\014v)o(e)f(parameters)f(consists)i(of)e(the)h
Fi(count)e Fo(v)n(ariables)h(at)75 2046 y(addresses)k Fi(start,)21
b(start+m,)f(...)43 b(,)21 b(start+m*\(lenblk-1\),)d(start+m*stride,)75
2096 y(start+m*\(stride+1)o(\),)h(...,)i(start+m*\(stride+l)o(enbl)o(k-1\),)d
(...)p Fo(.)i(F)m(or)14 b(example,)f(if)h Fi(A)g Fo(is)h(an)f(arra)o(y)h(of)
75 2146 y(in)o(tegers,)f(then)137 2234 y Fe(\017)21 b Fi(A\(1\),)g(5,)g(3,)g
(2,)h(MPI)p 575 2234 V 15 w(INT)c Fo(is)h(the)h(bu\013er)g(comp)q(onen)o(t)e
(with)h(en)o(tries)h Fi(A\(1\),)h(A\(2\),)f(A\(4\),)h(A\(5\),)179
2284 y(A\(7\))p Fo(.)137 2375 y Fe(\017)g Fi(A\(1\),)g(5,)g(0,)g(2,)h(MPI)p
575 2375 V 15 w(INT)c Fo(is)h(the)h(bu\013er)g(comp)q(onen)o(t)e(with)h(en)o
(tries)h Fi(A\(1\),)h(A\(2\),)f(A\(1\),)h(A\(2\),)179 2425
y(A\(1\))p Fo(.)137 2515 y Fe(\017)g Fi(A\(10\),)f(5,)i(-1,)f(2,)g(MPI)p
618 2515 V 15 w(INT)9 b Fo(is)g(the)h(bu\013er)g(comp)q(onen)o(t)f(with)g(en)
o(tries)h Fi(A\(10\),)21 b(A\(11\),)f(A\(9\),)h(A\(10\),)179
2565 y(A\(8\))p Fo(.)158 2654 y Fi(Contiguous)13 b Fo(is)h(a)g(sp)q(ecial)h
(case)h(of)e Fi(vector)p Fo(.)19 b(A)c(v)o(ector)g(bu\013er)h(comp)q(onen)o
(t)d(can)i(b)q(e)h(used)f(to)f(extract)i(an)75 2704 y(arbitrary)e(submatrix)e
(of)i(a)f(t)o(w)o(o-dimensional)e(matrix.)p eop
%%Page: 7 8
bop 75 -100 a Fg(1.5.)31 b(COMMUNICA)m(TION)14 b(BUFFERS)1091
b Fo(7)75 45 y Fh(Indexed)15 b(comp)q(onen)o(t)75 122 y Fo(A)f(sequence)i(of)
d(elemen)o(ts)h(of)f(the)i(same)e(basic)h(t)o(yp)q(e,)g(sp)q(eci\014ed)h(b)o
(y)75 207 y Fh(start)20 b Fo(initial)12 b(elemen)o(t)75 291
y Fh(coun)o(t)19 b Fo(Num)o(b)q(er)14 b(of)f(elemen)o(ts)h(\()p
Fi(count)c Fe(\025)i Fi(0)p Fo(\))75 376 y Fh(arra)o(y)p 188
376 15 2 v 17 w(of)p 244 376 V 16 w(indices)19 b Fo(Arra)o(y)14
b(of)f(displacemen)o(ts)h(of)f(the)i(elemen)o(ts)e(in)h(the)h(bu\013er)g
(comp)q(onen)o(ts,)e(relativ)o(e)h(to)f(the)179 425 y(initial)f(elemen)o(t.)
75 510 y Fh(datat)o(yp)q(e)19 b Fo(T)o(yp)q(e)c(of)e(elemen)o(ts)158
594 y(F)m(or)f(example,)f(if)h Fi(A)g Fo(is)g(an)g(arra)o(y)g(of)g(in)o
(tegers,)h(and)g Fi(I)f Fo(is)g(an)g(arra)o(y)h(with)f(v)n(alues)g
Fi(2,)21 b(-1,)g(2,)h(1)12 b Fo(then)h Fi(A\(3\),)75 644 y(4,)21
b(I,)h(MPI)p 275 644 14 2 v 15 w(INT)13 b Fo(is)h(the)g(bu\013er)h(comp)q
(onen)o(t)e(with)h(en)o(tries)h Fi(A\(5\),)21 b(A\(2\),)f(A\(5\),)h(A\(4\))p
Fo(.)158 694 y Fi(Vector)13 b Fo(can)h(b)q(e)g(though)o(t)g(of)f(as)h(a)g(sp)
q(ecial)g(case)h(of)e Fi(indexed)g Fo(in)g(whic)o(h)h(the)g(indices)h(are)f
(generated)h(with)75 744 y(a)f(constan)o(t)g(stride.)75 854
y Fh(Heterogeneous)f(v)o(ector)i(\(h)o(v)o(ector\))f(comp)q(onen)o(t)75
931 y Fo(Same)d(as)h Fi(vector)p Fo(,)f(except)j(that)e Fi(stride)f
Fo(is)h(giv)o(en)g(in)f(m)o(ultiple)f(of)i(b)o(ytes,)h(rather)g(than)f(m)o
(ultiples)e(of)i(elemen)o(ts:)75 1024 y Fh(start)20 b Fo(Initial)12
b(elemen)o(t)75 1108 y Fh(coun)o(t)19 b Fo(Num)o(b)q(er)14
b(of)f(elemen)o(ts)h(\()p Fi(count)c Fe(\025)i Fi(0)p Fo(\))75
1193 y Fh(stride)18 b Fo(Num)o(b)q(er)c(of)f(b)o(ytes)i(b)q(et)o(w)o(een)g
(the)g(start)f(of)f(eac)o(h)i(blo)q(c)o(k)75 1278 y Fh(len)o(blk)j
Fo(Num)o(b)q(er)13 b(of)h(elemen)o(ts)f(in)h(eac)o(h)g(blo)q(c)o(k)g(\()p
Fi(lenblk)c Fd(>)i Fi(0)p Fo(\))75 1362 y Fh(datat)o(yp)q(e)19
b Fo(T)o(yp)q(e)c(of)e(elemen)o(ts)158 1455 y(Assume)20 b(that)h(an)f(elemen)
o(t)g(of)f(t)o(yp)q(e)i Fi(datatype)e Fo(o)q(ccupies)i Fi(m)f
Fo(b)o(ytes.)38 b(Then,)22 b(in)e(a)g(b)o(yte)h(addressable)75
1505 y(mac)o(hine,)15 b(the)i(bu\013er)g(comp)q(onen)o(t)f(describ)q(ed)i(b)o
(y)e(these)i(\014v)o(e)e(parameters)h(consists)g(of)f(the)g
Fi(count)g Fo(v)n(ariables)75 1554 y(at)c(addresses)j Fi(start,)20
b(start+m,)h(...)43 b(,)21 b(start+m*\(lenblk-1\))o(,)e(start+stride,)g
(start+stride+m,)75 1604 y(...,)i(start+stride+m*\(l)o(enblk)o(-1\),)d(...)p
Fo(.)158 1654 y(Consider)c(a)g(C)g(arra)o(y)f(declared)i(as)75
1748 y Fi(struct)21 b({)140 1798 y(char)g(info[3];)140 1847
y(short)g(number;)140 1897 y(double)g(val;)228 1947 y(})65
b(a[100])158 2040 y Fo(Assume)19 b(that)f(all)g(structure)j(comp)q(onen)o(ts)
d(are)h(b)o(yte)h(aligned,)e(a)h Fi(short)e Fo(o)q(ccupies)j(t)o(w)o(o)e(b)o
(ytes,)j(and)d(a)75 2090 y Fi(double)i Fo(o)q(ccupies)i(eigh)o(t)e(b)o(ytes.)
40 b(Then)21 b(the)h(bu\013er)g(comp)q(onen)o(t)e Fi(&a,)h(100,)g(13,)g(2,)g
(MPI)p 1610 2090 V 16 w(CHAR)f Fo(extracts)75 2139 y(the)i(\014rst)h(t)o(w)o
(o)e(c)o(haracters)i(of)e(eac)o(h)h(structure.)43 b(The)22
b(bu\013er)h(comp)q(onen)o(t)e Fi(&\(a.number\),)e(100,)i(13,)g(1,)75
2189 y(MPI)p 144 2189 V 15 w(SHORT)16 b Fo(extracts)i(the)f
Fi(short)f Fo(\014eld)g(of)g(eac)o(h)i(structure;)h(and)e(the)g(bu\013er)h
(comp)q(onen)o(t)e Fi(&\(a.val\),)k(100,)75 2239 y(13,)h(1)e
Fo(extracts)i(the)f Fi(double)e Fo(\014eld)h(of)g(eac)o(h)h(structure.)36
b(Th)o(us,)21 b(heterogeneous)g(v)o(ectors)f(can)g(b)q(e)g(used)g(to)75
2289 y(extract)15 b(v)o(ectors)g(of)e(homogeneous)g(v)n(alues)h(from)e
(heterogeneous)k(data.)158 2339 y Fi(Vector)d Fo(is)g(a)h(sp)q(ecial)g(case)h
(of)e Fi(heterogeneous)19 b(vector)p Fo(.)75 2449 y Fh(Heterogeneous)13
b(indexed)h(\(hindexed\))f(comp)q(onen)o(t)75 2526 y Fo(Same)g(as)h(indexed,)
g(except)h(that)f(displacemen)o(ts)f(are)i(in)e(b)o(ytes,)h(rather)h(than)f
(m)o(ultiples)e(of)h(elemen)o(t)g(size.)75 2619 y Fh(start)20
b Fo(initial)12 b(elemen)o(t)75 2704 y Fh(coun)o(t)19 b Fo(Num)o(b)q(er)14
b(of)f(elemen)o(ts)h(\()p Fi(count)c Fe(\025)i Fi(0)p Fo(\))p
eop
%%Page: 8 9
bop 75 -100 a Fo(8)733 b Fg(CHAPTER)14 b(1.)31 b(POINT)15 b(TO)f(POINT)g
(COMMUNICA)m(TION)75 45 y Fh(arra)o(y)p 188 45 15 2 v 17 w(of)p
244 45 V 16 w(indices)19 b Fo(Arra)o(y)12 b(of)g(b)o(yte)g(displacemen)o(ts)g
(of)g(the)g(elemen)o(ts)h(in)e(the)i(bu\013er)g(comp)q(onen)o(ts,)f(relativ)o
(e)g(to)179 95 y(the)i(initial)e(elemen)o(t.)75 189 y Fh(datat)o(yp)q(e)19
b Fo(T)o(yp)q(e)c(of)e(elemen)o(ts)158 292 y(F)m(or)18 b(example,)f(if)h
Fi(a)g Fo(is)g(the)h(C)f(arra)o(y)g(of)f(the)i(previous)g(example,)e(and)i
Fi(I)e Fo(is)i(an)f(arra)o(y)g(with)f(v)n(alues)h Fi(0,)75
342 y(13,)j(13,)g(27,)h(26)16 b Fo(then)i Fi(&a,)k(5,)f(I,)g(MPI)p
782 342 14 2 v 15 w(CHAR)c Fo(is)g(the)h(bu\013er)h(comp)q(onen)o(t)d(with)h
(en)o(tries)i Fi(a[0].info[0],)75 392 y(a[1].info[0],)g(a[1].info[0],)g
(a[1].info[1],)g(a[1].info[0])p Fo(.)158 444 y(Lik)o(e)e Fi(heterogeneous)i
(vector)p Fo(,)d Fi(heterogeneous)j(indexed)c Fo(extends)k(the)e
Fi(indexed)f Fo(facilit)o(y)f(so)i(as)g(to)75 494 y(allo)o(w)12
b(the)j(extraction)f(of)f(homogeneous)g(data)h(from)e(a)h(heterogeneous)j(la)
o(y)o(out.)158 625 y Fm(Discussion:)158 674 y Fl(The)d(use)h(of)e
(displacemen)o(ts)k(in)e(indexed)h(bu\013er)f(comp)q(onen)o(ts)h(has)e(the)h
(same)f(e\013ect)g(as)h(indirect)h(addressing)g(in)o(to)75
720 y(an)d(arra)o(y)g(with)g(initial)j(index)e(zero.)j(I.e.,)11
b(if)h Ff(a)f Fl(is)h(an)g(arra)o(y)g(with)g(initial)j(index)e(zero,)e(then)h
(a)g(bu\013er)h(comp)q(onen)o(t)g(de\014ned)75 765 y(b)o(y)g(parameters)g
Ff(a[0],)k(N,)i(i,)g(type)11 b Fl(extract)h(the)h(elemen)o(ts)g
Ff(a[i[0]],)j(a[i[1]],)h(...,)h(a[i[n]])p Fl(.)c(This)f(\014ts)f(w)o(ell)h(C)
75 811 y(usage)g(but)f(ill-\014ts)i(F)m(ortran)e(usage)h(\(initial)h(index)g
(one\).)i(W)m(e)c(to)q(ok)h(a)f(decision)i(of)d(principle)k(to)d(force)g
(\\start)g(from)f(zero")75 857 y(index)j(arithmetic)f(on)g(F)m(ortran)f
(users,)h(rather)f(than)h(ha)o(v)o(e)f(di\013eren)o(t)i(index)g(arithmetic)f
(in)g(the)f(C)g(and)h(F)m(ortran)f(binding)75 902 y(of)h(MPI.)158
951 y(The)19 b(use)f(of)h(b)q(oth)g(bu\013er)h(comp)q(onen)o(ts)f(with)h(b)o
(yte)e(and)i(elemen)o(t)f(size)g(displacemen)o(ts)j(is)d(motiv)n(ated)h(b)o
(y)f(the)75 996 y(observ)n(ation)c(that)f(some)g(applications)j(require)d
(the)g(more)f(general)i(b)o(yte)f(displacemen)o(t,)h(but)f(that)g(most)f
(applicatio)q(ns)75 1042 y(w)o(ould)d(use)g(elemen)o(t)g(size)h(displacemen)o
(t,)h(whic)o(h)e(is)g(m)o(uc)o(h)g(more)g(natural)g(and)g(con)o(v)o(enien)o
(t)i(\(and)e(mac)o(hine)h(indep)q(enden)o(t\).)75 1088 y(Th)o(us,)f(rather)f
(than)h(forcing)g(all)g(users)g(to)f(do)g(b)o(yte)h(arithmetics,)h(w)o(e)e
(decided)h(to)f(pro)o(vide)i(separately)g(the)e(more)g(adv)n(anced)75
1133 y(function)14 b(to)f(\\exp)q(ert)h(programmers".)158 1182
y(Leslie)g(Hart)f(prop)q(oses)i(to)d(replace)j(\\heterogeneous")g(with)e
(\\general".)75 1396 y Fk(1.5.2)55 b(Bu\013er)18 b(op)r(erations)75
1478 y Fo(A)c(bu\013er)i(is)e(describ)q(ed)i(b)o(y)e(an)g(opaque)g
Fh(bu\013er)h(descriptor)c Fo(ob)r(ject)k(accessed)h(via)e(a)g
Fh(bu\013er)h(handle)p Fo(.)i(Suc)o(h)75 1528 y(an)f(ob)r(ject)g(is)g
(created)h(b)o(y)f Fi(MPI)p 582 1528 V 15 w(CREATE)p 729 1528
V 15 w(BUFFER)p Fo(.)e(It)i(is)f(asso)q(ciated)i(with)f(successiv)o(e)i
(bu\013er)f(comp)q(onen)o(ts)e(b)o(y)75 1577 y(calling)g(in)i(succession)h
(one)f(of)f(the)i(functions)e Fi(MPI)p 914 1577 V 15 w(APPEND)p
1061 1577 V 15 w(xxx)p Fo(,)g(where)i Fi(xxx)e Fo(iden)o(ti\014es)h(the)h(t)o
(yp)q(e)f(of)f(bu\013er)75 1627 y(comp)q(onen)o(t)e(app)q(ended)h(to)f(the)h
(bu\013er.)20 b(It)14 b(b)q(ecomes)h(a)o(v)n(ailable)d(for)i(use)h(in)f(comm)
o(unicatio)o(n)e(op)q(erations)i(once)75 1677 y(committed)c(b)o(y)h(the)i
(function)e Fi(MPI)p 635 1677 V 15 w(COMMIT)p 782 1677 V 15
w(BUFFER)p Fo(.)f(Once)j(committed,)c(the)k(descriptor)g(cannot)f(b)q(e)g(mo)
q(di\014ed)75 1727 y(an)o(y)h(more.)158 1780 y(Note)18 b(that)g(the)g(commit)
c(op)q(eration)k(do)q(es)g(not)g(create)h(y)o(et)f(a)f(message,)h(and)f(do)q
(es)h(not)g(bind)f(the)h(data)75 1829 y(to)d(b)q(e)h(sen)o(t.)23
b(It)16 b(is)f(a)g(commit)d(for)j(the)h(bu\013er)g(descriptor,)h(not)e(a)g
(commit)d(for)j(the)h(bu\013er)h(con)o(ten)o(t.)23 b(A)15 b(bu\013er)75
1879 y(descriptor)f(is)e(destro)o(y)o(ed)i(after)f(the)g(completion)d(of)i
(the)h(\014rst)h(comm)o(unicati)o(on)c(op)q(eration)i(that)h(uses)g(it,)f(if)
g(it)g(is)75 1929 y(ephemeral,)g(or)h(after)g(it)g(is)g(freed)h(b)o(y)e(a)h
(call)f(to)h Fi(MPI)p 899 1929 V 15 w(FREE)f Fo(and)h(an)o(y)f(p)q(ending)i
(comm)o(uni)o(cation)c(op)q(eration)j(that)75 1979 y(uses)j(it)e(has)h
(completed,)f(if)f(it)i(is)f(p)q(ersisten)o(t.)22 b(After)15
b(the)h(bu\013er)f(descriptor)h(ob)r(ject)f(has)g(b)q(een)h(destro)o(y)o(ed,)
f(the)75 2029 y(handle)f(is)f(unde\014ned.)158 2117 y Fh(MPI)p
257 2117 15 2 v 17 w(CREA)l(TE)p 471 2117 V 19 w(BUFFER\()i(bu\013er,)g(p)q
(ersistence)e(\))158 2205 y Fo(Create)i(a)e(new)i(bu\013er)g(descriptor)g(ob)
r(ject.)k(The)14 b(parameters)g(are:)75 2296 y Fh(OUT)i(bu\013er)j
Fo(bu\013er)c(handle)75 2391 y Fh(IN)h(p)q(ersistence)i Fo(bu\013er)11
b(p)q(ersistence)h(\(state)e(t)o(yp)q(e)g(with)f(p)q(ossible)g(v)n(alues)g
Fi(MPI)p 1350 2391 14 2 v 15 w(PERSISTENT)e Fo(or)j Fi(MPI)p
1705 2391 V 15 w(EPHEMERAL)p Fo(\).)158 2561 y Fm(Discussion:)158
2609 y Fl(Ma)o(y)j(w)o(an)o(t)g(to)g(pro)o(vide)i(information)g(on)e(maxim)o
(um)h(ob)r(ject)g(size,)f(and)h(p)q(erhaps)g(user)f(space)h(for)f(the)g(ob)r
(ject.)158 2658 y(Leslie)20 b(Hart)e(prop)q(oses)i Ff(MPI)p
592 2658 12 2 v 13 w(CREATE)p 725 2658 V 12 w(BUFFER)p 857
2658 V 12 w(DESC)p Fl(,)c(rather)j(than)g Ff(MPI)p 1252 2658
V 13 w(CREATE)p 1385 2658 V 12 w(BUFFER)p Fl(.)c(More)k(accurate,)h(but)75
2704 y(longer.)e(P)o(erhaps)c Ff(MPI)p 414 2704 V 13 w(CREATE)p
547 2704 V 12 w(BUFDESC)p Fl(?)p eop
%%Page: 9 10
bop 75 -100 a Fg(1.5.)31 b(COMMUNICA)m(TION)14 b(BUFFERS)1091
b Fo(9)158 45 y Fh(MPI)p 257 45 15 2 v 17 w(APPEND)p 481 45
V 17 w(CONTIGUOUS\()15 b(bu\013er,)g(start,)g(coun)o(t,)f(datat)o(yp)q(e\))
158 130 y Fo(App)q(end)h(a)e(blo)q(c)o(k)h(comp)q(onen)o(t)f(to)h(bu\013er.)
19 b(The)14 b(parameters)g(are:)75 208 y Fh(INOUT)i(bu\013er)j
Fo(bu\013er)c(handle)75 289 y Fh(IN)h(start)k Fo(bu\013er)15
b(comp)q(onen)o(t)e(initial)f(elemen)o(t)h(\(c)o(hoice\))75
369 y Fh(IN)j(coun)o(t)j Fo(Num)o(b)q(er)14 b(of)f(elemen)o(ts)h(\(in)o
(teger\))75 450 y Fh(IN)i(datat)o(yp)q(e)k Fo(datat)o(yp)q(e)14
b(iden)o(ti\014er)g(\(status\))158 563 y Fh(MPI)p 257 563 V
17 w(APPEND)p 481 563 V 17 w(VEC\()j(bu\013er,)d(coun)o(t,)h(stride,)f(len)o
(blk,)f(datat)o(yp)q(e)i(\))158 648 y Fo(App)q(end)g(a)e(v)o(ector)i
(bu\013er)g(comp)q(onen)o(t)e(to)h(bu\013er.)19 b(The)14 b(parameters)g(are:)
75 726 y Fh(INOUT)i(bu\013er)j Fo(bu\013er)c(handle)75 807
y Fh(IN)h(start)k Fo(bu\013er)15 b(comp)q(onen)o(t)e(initial)f(elemen)o(t)h
(\(c)o(hoice\))75 887 y Fh(IN)j(coun)o(t)j Fo(Num)o(b)q(er)14
b(of)f(elemen)o(ts)h(\(in)o(teger\))75 967 y Fh(IN)i(stride)j
Fo(Num)o(b)q(er)13 b(of)h(elemen)o(ts)f(b)q(et)o(w)o(een)j(the)e(start)h(of)e
(eac)o(h)h(blo)q(c)o(k)g(\(in)o(teger\))75 1048 y Fh(IN)i(len)o(blk)i
Fo(Num)o(b)q(er)c(of)f(elemen)o(ts)h(in)f(eac)o(h)i(blo)q(c)o(k)e(\(in)o
(teger\))75 1128 y Fh(IN)j(datat)o(yp)q(e)k Fo(datat)o(yp)q(e)14
b(iden)o(ti\014er)g(\(status\))158 1242 y Fh(MPI)p 257 1242
V 17 w(APPEND)p 481 1242 V 17 w(INDEXED\()i(bu\013er,)f(start,)g(coun)o(t,)f
(arra)o(y)p 1294 1242 V 17 w(of)p 1350 1242 V 17 w(indices,)f(datat)o(yp)q
(e\))158 1327 y Fo(App)q(end)i(an)e(indexed)i(bu\013er)g(comp)q(onen)o(t)e
(to)h(bu\013er.)19 b(The)14 b(parameters)g(are:)75 1405 y Fh(INOUT)i
(bu\013er)j Fo(bu\013er)c(handle)75 1485 y Fh(IN)h(start)k
Fo(initial)12 b(p)q(osition)h(for)h(indexing)f(\(c)o(hoice\))75
1566 y Fh(IN)j(coun)o(t)j Fo(Num)o(b)q(er)14 b(of)f(elemen)o(ts)h(\(in)o
(teger\))75 1646 y Fh(IN)i(arra)o(y)p 259 1646 V 17 w(of)p
315 1646 V 17 w(indices)i Fo(arra)o(y)c(of)f(displacemen)o(ts)g(of)h(en)o
(tries)h(relativ)o(e)e(to)h(start)h(\(arra)o(y)e(of)h(in)o(tegers\))75
1727 y Fh(IN)i(datat)o(yp)q(e)k Fo(datat)o(yp)q(e)14 b(iden)o(ti\014er)g
(\(status\))158 1805 y(The)g(index)f(v)n(alues)g(used)h(to)f(create)i(this)f
(comp)q(onen)o(t)e(are)i(the)g(v)n(alues)f(pro)o(vided)g(at)g(the)h(call;)e
(subsequen)o(t)75 1854 y(up)q(dates)j(of)e(the)i(arra)o(y)e(of)h(indices)g
(will)e(not)i(a\013ect)h(the)f(bu\013er)h(descriptor)g(comp)q(onen)o(t.)158
1940 y Fh(MPI)p 257 1940 V 17 w(APPEND)p 481 1940 V 17 w(HVEC\()i(bu\013er,)e
(start,)g(coun)o(t,)f(stride,)g(len)o(blk,)f(datat)o(yp)q(e)i(\))158
2025 y Fo(App)q(end)g(a)e(heterogeneous)j(v)o(ector)f(bu\013er)g(comp)q(onen)
o(t)e(to)h(bu\013er.)19 b(The)14 b(parameters)g(are:)75 2103
y Fh(INOUT)i(bu\013er)j Fo(bu\013er)c(handle)75 2183 y Fh(IN)h(start)k
Fo(bu\013er)15 b(comp)q(onen)o(t)e(initial)f(elemen)o(t)h(\(c)o(hoice\))75
2264 y Fh(IN)j(coun)o(t)j Fo(Num)o(b)q(er)14 b(of)f(elemen)o(ts)h(\(in)o
(teger\))75 2344 y Fh(IN)i(stride)j Fo(Num)o(b)q(er)13 b(of)h(b)o(ytes)g(b)q
(et)o(w)o(een)h(the)g(start)f(of)g(eac)o(h)g(blo)q(c)o(k)g(\(in)o(teger\))75
2425 y Fh(IN)i(len)o(blk)i Fo(Num)o(b)q(er)c(of)f(elemen)o(ts)h(in)f(eac)o(h)
i(blo)q(c)o(k)e(\(in)o(teger\))75 2505 y Fh(IN)j(datat)o(yp)q(e)k
Fo(datat)o(yp)q(e)14 b(iden)o(ti\014er)g(\(status\))158 2618
y Fh(MPI)p 257 2618 V 17 w(APPEND)p 481 2618 V 17 w(HINDEXED\()i(bu\013er,)f
(start,)g(coun)o(t,)g(arra)o(y)p 1332 2618 V 16 w(of)p 1387
2618 V 17 w(indices,)f(datat)o(yp)q(e\))158 2704 y Fo(App)q(end)h(an)e
(heterogeneous)j(indexed)f(bu\013er)g(comp)q(onen)o(t)e(to)h(bu\013er.)19
b(The)14 b(parameters)g(are:)p eop
%%Page: 10 11
bop 75 -100 a Fo(10)716 b Fg(CHAPTER)14 b(1.)27 b(POINT)15
b(TO)f(POINT)g(COMMUNICA)m(TION)75 45 y Fh(INOUT)i(bu\013er)j
Fo(bu\013er)c(handle)75 124 y Fh(IN)h(start)k Fo(initial)12
b(p)q(osition)h(for)h(indexing)f(\(c)o(hoice\))75 203 y Fh(IN)j(coun)o(t)j
Fo(Num)o(b)q(er)14 b(of)f(elemen)o(ts)h(\(in)o(teger\))75 282
y Fh(IN)i(arra)o(y)p 259 282 15 2 v 17 w(of)p 315 282 V 17
w(indices)i Fo(arra)o(y)c(of)f(b)o(yte)h(displacemen)o(ts)g(of)f(en)o(tries)i
(relativ)o(e)f(to)f(start)i(\(arra)o(y)f(of)f(in)o(tegers\))75
361 y Fh(IN)j(datat)o(yp)q(e)k Fo(datat)o(yp)q(e)14 b(iden)o(ti\014er)g
(\(status\))158 471 y Fh(MPI)p 257 471 V 17 w(COMMIT)p 485
471 V 19 w(BUFFER\()h(bu\013erin)e(\))158 557 y Fo(Commi)o(t)7
b(a)j(bu\013er)h(descriptor)g(ob)r(ject.)18 b(The)10 b(ob)r(ject)h(cannot)f
(b)q(e)g(c)o(hanged)h(an)o(ymore)d(after)i(it)g(is)g(committed.)75
606 y(A)h(bu\013er)g(descriptor)h(ob)r(ject)g(can)f(b)q(e)g(used)g(for)g
(comm)o(uni)o(cation)d(only)i(after)g(it)h(is)f(committed.)15
b(The)c(parameters)75 656 y(are:)75 731 y Fh(INOUT)16 b(bu\013er)j
Fo(bu\013er)c(descriptor)g(handle)158 885 y Fm(Discussion:)158
930 y Fl(The)i(commit)h(function)g(ma)o(y)g(do)f(prepro)q(cessing)j(of)d(the)
g(bu\013er)h(descriptor)h(to)e(simplify)i(its)f(use)f(and)h(commit)75
976 y(resources)12 b(in)g(the)g(comm)o(unication)i(subsystem)e(for)f(its)h
(use.)k(The)c(commit)f(function)i(ma)o(y)f(generate)g(a)f(new)g(ob)r(ject)g
(and,)75 1022 y(hence,)i(mo)q(dify)h(the)g(ob)r(ject)f(handle.)158
1067 y(The)18 b(curren)o(t)g(prop)q(osal)h(do)q(es)g(not)f(allo)o(w)h(to)e
(create)h(a)g(bu\013er)g(descriptor,)i(use)e(it)h(in)f(a)g(comm)o(unication)i
(after)75 1113 y(committed,)14 b(then)g(mo)q(dify)g(it)g(partially)i(and)e
(use)g(it)g(for)f(another)h(comm)o(unication)i({)d(a)h(new)f(bu\013er)h
(descriptor)h(has)f(to)75 1159 y(b)q(e)h(created.)21 b(Of)13
b(course,)i(the)g(same)f(bu\013er)h(descriptor)h(can)f(b)q(e)f(reused)h(man)o
(y)g(times)g(in)g(successiv)o(e)h(comm)o(unications)75 1204
y(that)d(send)g(data)g(from)f(the)g(same)h(bu\013ers;)g(e.g.,)f(a)g(new)h
(send)g(with)g(a)f(bu\013er)i(descriptor)g(handle)g(can)f(b)q(e)f(initiated)j
(once)75 1250 y(the)e(previous)i(send)f(with)f(this)h(handle)h(has)e
(completed.)158 1382 y Fo(Example)f(1:)75 1432 y(Consider)i(the)h(follo)o
(wing)c(fragmen)o(t)h(of)i(F)m(ortran)f(co)q(de)75 1513 y Fi(DOUBLE)21
b(PRECISION)e(A\(10,20\))75 1563 y(INTEGER)h(B,)i(C\(5,10\))75
1613 y(INTEGER)e(BH)75 1663 y(...)75 1713 y(CALL)h(MPI_CREATE_BUFFER)o(\(BH,)
d(MPI_PERSISTENT\))75 1763 y(CALL)j(MPI_APPEND_BLOCK)d(\(BH,)j(B,)h(1,)f
(MPI_INT\))75 1812 y(CALL)g(MPI_APPEND_VEC)e(\(BH,)i(A\(1,3\),)f(11,)h(4,)h
(2,)f(MPI_DOUBLE\))75 1862 y(CALL)g(MPI_APPEND_INDEX\()o(BH,)e(C\(3,7\),)h
(\(4,2,1\),)g(MPI_INT\))158 1943 y Fo(Then)14 b(the)h(bu\013er)g(asso)q
(ciated)f(with)g(the)g(handle)g Fi(BH)g Fo(consists)h(of)e(the)h(sequence)i
(of)e(v)n(ariables)158 1993 y Fi(B,)21 b(A\(1,3\),)g(A\(2,3\),)f(A\(5,3\),)g
(A\(6,3\),)h(A\(9,3\),)f(A\(10,3\),)g(A\(3,4\),)h(A\(4,4\),)f(A\(7,4\),)g
(A\(8,4\),)75 2043 y(A\(1,5\),)g(C\(2,8\),)h(C\(5,7\),)f(C\(4,7\))p
Fo(.)158 2093 y(A)14 b(message)f(created)j(from)c(this)i(bu\013er)h(will)d
(consist)j(of)e(a)g(sequence)j(of)e(one)g(in)o(teger,)f(follo)o(w)o(ed)g(b)o
(y)g(elev)o(en)75 2143 y(double)h(precision)g(reals,)g(follo)o(w)o(ed)e(b)o
(y)i(three)h(in)o(tegers.)158 2192 y(Example)d(2:)75 2242 y(Supp)q(ose)j(one)
f(has)g(an)g(arra)o(y)f(of)g(data)h(declared)h(in)e(C)h(as)75
2323 y Fi(struct)21 b({)140 2373 y(int)h(type;)140 2423 y(double)f
(position[3];)140 2473 y(double)g(velocity[3];)228 2523 y(})g(particle[1000])
158 2604 y Fo(and)d(one)g(w)o(an)o(ts)h(to)f(transfer)h(in)f(one)g(message)g
(the)h(n)o(um)o(b)q(er)e(of)h(particles)g(of)g(t)o(yp)q(e)h(1,)f(the)h(n)o
(um)o(b)q(er)f(of)75 2654 y(particles)g(of)g(t)o(yp)q(e)g(2,)g(and)g(the)g(p)
q(ositions)g(of)f(all)g(the)h(particles)h(of)e(these)i(t)o(w)o(o)f(t)o(yp)q
(es.)31 b(The)18 b(follo)o(wing)d(co)q(de)75 2704 y(fragmen)o(t)d(creates)k
(a)e(suitable)f(bu\013er)i(descriptor.)p eop
%%Page: 11 12
bop 75 -100 a Fg(1.5.)31 b(COMMUNICA)m(TION)14 b(BUFFERS)1070
b Fo(11)75 45 y Fi(int)21 b(count1)g(=)g(0;)75 95 y(int)g(count2)g(=)g(0;)75
145 y(...)75 195 y(mpi_create_buffer)o(\()e(&handle,)h(MPI_PERSISTENT\);)75
244 y(mpi_append_contig)o(uous\()e(&handle,)i(&count1,)h(MPI_INT\);)75
294 y(mpi_append_contig)o(uous\()d(&handle,)i(&count2,)h(MPI_INT\);)75
344 y(for)g(\(i=0;)g(i<1000;)f(i++\))h({)140 394 y(if)h(\(particle[i].typ)o
(e)d(==)i(1\))h({)206 444 y(count1++;)206 493 y(mpi_append_conti)o(guous)o
(\()d(&handle,)h(&particle[i].posit)o(ion,)e(3,)k(MPI_DOUBLE\);)206
543 y(})140 593 y(elseif)f(\(particle[i].type)d(==)k(2\))f({)206
643 y(count2++;)206 693 y(mpi_append_conti)o(guous)o(\()e(&handle,)h
(&particle[i].posit)o(ion,)e(3,)k(MPI_DOUBLE\);)206 742 y(})140
792 y(})75 842 y(mpi_commit_buffer)o(\(hand)o(le\))75 892 y(...)158
980 y Fo(The)14 b(bu\013er)h(descriptor)f(handle)g(can)g(no)o(w)f(b)q(e)h
(used)g(to)g(send)g(\(rep)q(eatedly\))h(the)f(particle)g(coun)o(ts)g(for)f(t)
o(yp)q(e)75 1030 y(1)g(and)f(2,)h(and)g(the)g(p)q(ositions)g(of)f(the)i
(particles)f(with)g(these)h(t)o(w)o(o)f(t)o(yp)q(es,)g(as)g(long)f(as)h(the)h
(t)o(yp)q(es)g(of)e(the)h(particles)75 1079 y(is)h(not)g(mo)q(di\014ed.)158
1129 y(Supp)q(ose)i(the)f(incoming)d(data)i(is)h(to)f(b)q(e)h(stored)h(at)e
(the)h(receiv)o(er)h(in)o(to)e(the)h(t)o(w)o(o)g(coun)o(t)f(v)n(ariables)g
Fi(count1)75 1179 y Fo(and)h Fi(count2)f Fo(and)h(in)o(to)f(the)i
Fi(position)d Fo(comp)q(onen)o(ts)i(of)f(the)i(initial)d(en)o(tries)j(of)f
(the)g(arra)o(y)g(of)f(particles.)23 b(The)75 1229 y(follo)o(wing)10
b(co)q(de)i(generates)i(a)e(suitable)g(bu\013er)h(descriptor)h(for)d(the)i
(receiv)o(e)g(op)q(eration)f(\(w)o(e)h(assume)f(4)f(b)o(ytes)i(for)75
1279 y(in)o(teger)h(and)g(8)g(b)o(ytes)g(for)g(double\).)75
1367 y Fi(...)75 1416 y(mpi_create_buffer)o(\()19 b(&handle,)h
(MPI_PERSISTENT\);)75 1466 y(mpi_append_contig)o(uous\()e(&handle,)i
(&count1,)h(MPI_INT\);)75 1516 y(mpi_append_contig)o(uous\()d(&handle,)i
(&count2,)h(MPI_INT\);)75 1566 y(mpi_append_hvec\()d(&handle,)j
(&particle[0].pos)o(itio)o(n,)e(1000,)i(52,)g(3,)g(MPI_DOUBLE\);)75
1616 y(mpi_commit_buffer)o(\()e(&handle\))75 1665 y(...)158
1753 y Fo(A)c(bu\013er)g(handle)f(can)h(b)q(e)g(used)g(for)f(comm)o
(unication,)d(ev)o(en)k(if)f(it)g(is)g(not)g(asso)q(ciated)i(with)e(an)o(y)g
(v)n(ariables)75 1803 y(\(i.e.,)e(ev)o(en)i(if)e(it)h(w)o(as)g(not)g(set)h(b)
o(y)f(an)o(y)g Fi(MPI)p 761 1803 14 2 v 15 w(APPEND)p 908 1803
V 15 w(xxx)f Fo(call\).)17 b(Suc)o(h)d(a)f(handle)g(is)g(asso)q(ciated)h
(with)f(an)g(empt)o(y)75 1853 y(bu\013er,)i(and)f(a)g(message)g(created)i
(from)c(it)i(con)o(tains)g(no)g(data.)19 b(The)c(handle)f(still)f(need)i(b)q
(e)g(committed)d(b)q(efore)75 1903 y(it)i(is)f(used.)158 1953
y(The)h(same)e(en)o(try)i(ma)o(y)d(app)q(ear)i(more)f(than)i(once)f(in)g(a)g
(bu\013er)h(comp)q(onen)o(t,)e(and)h(distinct)g(bu\013er)h(comp)q(o-)75
2002 y(nen)o(ts)i(ma)o(y)d(o)o(v)o(erlap.)21 b(If)15 b(a)g(bu\013er)h
(descriptor)g(with)f(replicated)h(en)o(tries)g(is)f(used)h(to)f(receiv)o(e)h
(a)f(message,)f(then)75 2052 y(the)g(\014nal)g(v)n(alue)f(of)g(an)h(en)o(try)
g(that)g(o)q(ccurs)i(more)d(than)g(once)i(in)e(the)i(bu\013er)g(descriptor)g
(is)f(unde\014ned.)158 2180 y Fm(Discussion:)158 2226 y Fl(It)f(is)g(not)h
(clear)g(to)f(me)g(that)g(o)o(v)o(erlaps)i(ha)o(v)o(e)e(an)o(y)h(useful)g
(purp)q(ose,)g(and)g(they)g(ma)o(y)f(complicate)i(implemen)o(tation.)75
2272 y(But)e(w)o(e)g(had)g(an)h(o)o(v)o(erwhelming)h(v)o(ote)e(in)h(fa)o(v)o
(or)f(of)g(this)h(feature.)75 2470 y Fk(1.5.3)55 b(T)n(yp)r(e)18
b(Matc)n(hing)i(and)f(Data)g(Con)n(v)n(ersion)75 2547 y Fh(T)o(yp)q(e)d(matc)
o(hing)75 2623 y Fo(One)f(can)f(think)f(of)h(message)f(transmission)g(as)h
(consisting)g(of)f(three)i(phases:)126 2704 y(1.)20 b(Data)13
b(is)h(pulled)f(out)h(of)f(the)i(send)g(bu\013er)f(and)g(a)g(message)f(is)h
(assem)o(bled)p eop
%%Page: 12 13
bop 75 -100 a Fo(12)712 b Fg(CHAPTER)14 b(1.)31 b(POINT)15
b(TO)f(POINT)g(COMMUNICA)m(TION)126 45 y Fo(2.)20 b(A)14 b(message)f(is)h
(transferred)i(from)c(sender)j(to)f(receiv)o(er)126 127 y(3.)20
b(Data)13 b(is)h(pulled)f(from)f(the)j(incoming)c(message)j(and)g(disassem)o
(bled)f(in)o(to)g(the)i(receiv)o(e)g(bu\013er)158 209 y(T)o(yp)q(e)c(matc)o
(hing)e(has)i(to)f(b)q(e)h(observ)o(ed)h(at)f(eac)o(h)g(of)f(these)i(three)g
(phases:)17 b(The)11 b(t)o(yp)q(e)g(of)f(eac)o(h)i(v)n(ariable)d(in)h(the)75
259 y(sender)15 b(bu\013er)g(has)f(to)g(matc)o(h)f(the)h(t)o(yp)q(e)g(of)g
(the)g(corresp)q(onding)h(en)o(try)f(in)g(the)g(bu\013er)h(descriptor;)g(the)
f(t)o(yp)q(e)h(of)75 309 y(an)e(en)o(try)g(in)f(the)h(bu\013er)h(descriptor)g
(used)g(to)e(send)i(a)f(message)f(has)h(to)f(matc)o(h)g(the)h(t)o(yp)q(e)h
(of)e(the)h(corresp)q(onding)75 358 y(en)o(try)f(in)e(the)i(bu\013er)g
(descriptor)g(used)g(to)f(receiv)o(e)h(the)g(message;)f(and)g(the)h(t)o(yp)q
(e)f(of)g(eac)o(h)g(v)n(ariable)f(in)h(the)h(receiv)o(e)75
408 y(bu\013er)i(has)f(to)g(matc)o(h)e(the)j(corresp)q(onding)f(en)o(try)h
(in)e(the)i(bu\013er)g(descriptor)g(for)e(this)h(bu\013er.)19
b(A)13 b(program)e(that)75 458 y(fails)i(to)g(observ)o(e)i(these)h(three)f
(rules)f(is)g(erroneous.)158 508 y(T)m(o)g(de\014ne)h(t)o(yp)q(e)g(matc)o
(hing)d(more)h(precisely)m(,)i(w)o(e)f(need)h(to)g(deal)f(with)g(t)o(w)o(o)f
(issues:)20 b(matc)o(hing)13 b(of)g(t)o(yp)q(es)j(of)75 558
y(the)h(host)g(language)f(with)g(bu\013er)h(descriptor)h(t)o(yp)q(es;)g(and)f
(matc)o(hing)d(of)i(bu\013er)i(descriptor)g(t)o(yp)q(es)f(at)f(sender)75
607 y(and)c(receiv)o(er.)18 b(W)m(e)12 b(restrict)h(ourselv)o(es)g(to)f(the)g
(case)h(where)g(the)f(sending)g(and)g(receiving)g(programs)e(are)i(written)75
657 y(in)h(the)i(same)e(language.)158 707 y(The)21 b(t)o(yp)q(e)h(of)e(an)g
(en)o(try)i(in)e(the)h(sender)i(bu\013er)f(descriptor)g(matc)o(hes)e(the)i(t)
o(yp)q(e)f(of)f(an)h(en)o(try)g(in)f(the)75 757 y(receiv)o(er)13
b(bu\013er)g(descriptor)g(if)e(they)h(ha)o(v)o(e)g(iden)o(tical)f(names:)16
b Fi(MPI)p 1131 757 14 2 v 15 w(INT)11 b Fo(matc)o(hes)h Fi(MPI)p
1448 757 V 15 w(INT)p Fo(,)e Fi(MPI)p 1617 757 V 15 w(REAL)h
Fo(matc)o(hes)75 807 y Fi(MPI)p 144 807 V 15 w(REAL)p Fo(,)i(and)g(so)h(on.)
158 857 y(The)i(t)o(yp)q(e)g(of)e(a)h(v)n(ariable)g(in)g(a)g(host)g(program)f
(matc)o(hes)h(the)h(t)o(yp)q(e)g(of)e(the)i(en)o(try)g(in)f(a)g(bu\013er)i
(descriptor)75 906 y(if)e(the)i(name)e(of)g(the)i(bu\013er)g(descriptor)g(en)
o(try)g(t)o(yp)q(e)g(corresp)q(onds)h(to)e(the)g(basic)g(t)o(yp)q(e)h(of)f
(the)g(host)h(program)75 956 y(v)n(ariable:)k(an)15 b(en)o(try)i(with)e(t)o
(yp)q(e)h(name)f Fi(MPI)p 794 956 V 15 w(INT)g Fo(matc)o(hes)h(a)f(F)m
(ortran)h(v)n(ariable)e(of)i(t)o(yp)q(e)g Fi(INTEGER)p Fo(,)e(an)h(en)o(try)
75 1006 y(with)10 b(t)o(yp)q(e)i(name)d Fi(MPI)p 433 1006 V
15 w(REAL)h Fo(matc)o(hes)h(a)f(F)m(ortran)h(v)n(ariable)e(of)i(t)o(yp)q(e)g
Fi(REAL)p Fo(,)e(and)i(so)g(on.)17 b(There)12 b(is)e(one)h(exception)75
1056 y(to)h(this)h(last)f(rule:)18 b(An)13 b(en)o(try)g(with)f(t)o(yp)q(e)h
(name)e Fi(MPI)p 917 1056 V 15 w(BYTE)h Fo(can)h(b)q(e)g(used)g(to)g(matc)o
(h)e(an)o(y)h(b)o(yte)h(of)f(storage)h(\(on)f(a)75 1106 y(b)o
(yte-addressable)j(mac)o(hine\),)d(irresp)q(ectiv)o(e)j(of)e(the)g(datat)o
(yp)q(e)h(of)f(the)h(v)n(ariable)e(that)i(con)o(tains)f(this)g(b)o(yte.)19
b(The)75 1155 y(v)n(alue)13 b(of)h(the)g(message)g(en)o(try)g(will)f(b)q(e)h
(the)g(binary)g(v)n(alue)f(of)g(the)i(corresp)q(onding)g(b)o(yte)f(in)f
(memory)m(.)158 1205 y(W)m(e)h(th)o(us)g(ha)o(v)o(e)g(t)o(w)o(o)f(cases:)137
1287 y Fe(\017)21 b Fo(Comm)o(uni)o(cation)6 b(of)j(t)o(yp)q(ed)h(v)n(alues)f
(\(e.g.,)g(with)g(datat)o(yp)q(e)g(di\013eren)o(t)h(from)e
Fi(MPI)p 1430 1287 V 15 w(BYTE)p Fo(,)g(where)i(the)g(datat)o(yp)q(es)179
1337 y(of)k(the)h(corresp)q(onding)g(en)o(tries)g(in)f(the)h(sender)h
(program,)d(in)h(the)h(sender)h(bu\013er)f(descriptor,)h(in)d(the)i(re-)179
1386 y(ceiv)o(er)g(bu\013er)f(descriptor)i(and)d(in)h(the)g(receiv)o(er)i
(program)c(should)i(all)e(matc)o(h.)137 1469 y Fe(\017)21 b
Fo(Comm)o(uni)o(cation)13 b(of)j(un)o(t)o(yp)q(ed)h(v)n(alues)f(\(e.g.,)g(of)
g(datat)o(yp)q(e)g Fi(MPI)p 1224 1469 V 15 w(BYTE)p Fo(,)f(where)j(the)f(the)
g(corresp)q(onding)179 1518 y(en)o(tries)e(in)e(the)i(sender)g(and)f(the)g
(receiv)o(er)h(bu\013er)g(descriptors)h(ha)o(v)o(e)d(b)q(oth)h(datat)o(yp)q
(e)g Fi(MPI)p 1631 1518 V 16 w(BYTE)p Fo(.)e(In)i(this)179
1568 y(case,)k(there)g(are)f(no)g(requiremen)o(ts)g(on)g(the)g(datat)o(yp)q
(es)h(of)e(the)i(corresp)q(onding)f(en)o(tries)h(in)f(the)g(sender)179
1618 y(and)c(the)i(receiv)o(er)g(programs,)e(nor)h(is)f(it)h(required)h(that)
f(they)g(b)q(e)g(the)h(same.)75 1734 y Fk(1.5.4)55 b(Data)19
b(con)n(v)n(ersion)75 1811 y Fo(W)m(e)13 b(use)i(the)g(follo)o(wing)c
(terminology:)75 1892 y Fh(t)o(yp)q(e)k(con)o(v)o(ersion)j
Fo(c)o(hanges)d(the)f(datat)o(yp)q(e)g(of)f(a)h(v)n(alue,)f(e.g.)18
b(b)o(y)13 b(rounding)h(a)f Fi(REAL)g Fo(to)h(an)g Fi(INTEGER)p
Fo(.)75 1974 y Fh(represen)o(tati)o(on)e(con)o(v)o(ersion)18
b Fo(c)o(hanges)e(the)g(binary)f(represen)o(tation)i(of)e(a)g(v)n(alue,)f
(e.g.)23 b(from)13 b(Hex)j(\015oating)179 2024 y(p)q(oin)o(t)d(to)h(IEEE)g
(\015oating)f(p)q(oin)o(t.)158 2106 y(Represen)o(tation)20
b(con)o(v)o(ersion)f(is)g(needed)h(when)g(data)e(is)h(mo)o(v)o(ed)e(across)j
(mac)o(hines)e(that)h(use)h(di\013eren)o(t)75 2156 y(binary)9
b(enco)q(dings)h(for)f(the)h(same)f(datat)o(yp)q(e.)16 b(Represen)o(tation)11
b(con)o(v)o(ersion)e(preserv)o(es,)k(to)c(the)h(greatest)h(p)q(ossible)75
2205 y(extend,)h(the)e Fh(v)m(alue)g Fo(represen)o(ted.)20
b(Ho)o(w)o(ev)o(er,)11 b(rounding)e(errors)j(and)e(o)o(v)o(er\015o)o(w)g(and)
g(under\015o)o(w)h(exceptions)g(ma)o(y)75 2255 y(o)q(ccur)17
b(during)e(\015oating)f(p)q(oin)o(t)h(con)o(v)o(ersions;)h(con)o(v)o(ersion)g
(of)f(in)o(tegers)h(ma)o(y)e(also)g(lead)h(to)h(exceptions)g(when)g(a)75
2305 y(v)n(alue)d(that)h(can)g(represen)o(ted)j(in)c(one)h(system)g(cannot)g
(b)q(e)h(represen)o(ted)h(in)e(the)g(other)h(system.)i(MPI)d(do)q(es)h(not)75
2355 y(sp)q(ecify)f(rules)h(for)e(represen)o(tation)j(con)o(v)o(ersion.)158
2405 y(The)j(t)o(yp)q(e)f(matc)o(hing)e(rules)j(imply)d(that)i(MPI)g(comm)o
(unication)d(nev)o(er)k(en)o(tails)e(t)o(yp)q(e)i(con)o(v)o(ersion.)31
b(On)75 2455 y(the)15 b(other)g(hand,)f(MPI)g(requires)i(that)e(a)g(represen)
o(tation)i(con)o(v)o(ersion)e(b)q(e)h(p)q(erformed)f(when)h(a)f(t)o(yp)q(ed)g
(v)n(alue)g(is)75 2504 y(transferred)g(across)g(en)o(vironmen)o(ts)d(that)i
(use)g(di\013eren)o(t)g(represen)o(tations)i(for)d(the)h(datat)o(yp)q(e)g(of)
e(this)i(v)n(alue.)k(An)75 2554 y(exception)f(o)q(ccurring)g(during)f
(represen)o(tation)i(con)o(v)o(ersion)f(results)g(in)f(a)h(failure)e(of)h
(the)h(comm)o(unicatio)o(n;)d(an)75 2604 y(error)i(o)q(ccurs)g(either)g(in)e
(the)i(send)g(op)q(eration,)e(or)h(the)g(receiv)o(e)h(op)q(eration,)f(or)g(b)
q(oth.)158 2654 y(If)g(a)f(v)n(alue)h(sen)o(t)h(in)e(a)h(message)g(is)f(un)o
(t)o(yp)q(ed)i(\(i.e.,)e(of)g(t)o(yp)q(e)i Fi(MPI)p 1180 2654
V 15 w(BYTE)p Fo(\),)e(then)h(the)h(binary)e(represen)o(tation)75
2704 y(of)h(the)g(b)o(yte)h(stored)g(at)f(the)h(receiv)o(er)h(is)e(iden)o
(tical)f(to)h(the)h(binary)f(represen)o(tation)i(of)d(the)i(b)o(yte)g(loaded)
e(at)h(the)p eop
%%Page: 13 14
bop 75 -100 a Fg(1.5.)31 b(COMMUNICA)m(TION)14 b(BUFFERS)1070
b Fo(13)75 45 y(sender.)24 b(This)16 b(holds)f(true,)h(whether)h(sender)g
(and)e(receiv)o(er)i(run)f(in)f(the)h(same)f(or)g(in)g(distinct)h(en)o
(vironmen)o(ts;)75 95 y(no)e(represen)o(tation)h(con)o(v)o(ersion)f(is)g
(required.)158 145 y(Note)f(that)g(no)g(con)o(v)o(ersions)g(ev)o(er)h(o)q
(ccur)g(when)g(an)e(MPI)h(program)f(executes)j(in)d(a)h(homogeneous)f
(system,)75 195 y(where)g(all)e(pro)q(cesses)j(run)e(in)g(the)g(same)f(en)o
(vironmen)o(t.)16 b(Also)11 b(note)g(the)g(di\013eren)o(t)h(b)q(eha)o(vior)f
(of)f Fi(MPI)p 1654 195 14 2 v 15 w(BYTE)g Fo(and)h(of)75 244
y Fi(MPI)p 144 244 V 15 w(CHAR)p Fo(.)g(A)h(bu\013er)h(descriptor)h(en)o(try)
f(with)e(datat)o(yp)q(e)i(of)e Fi(MPI)p 1106 244 V 16 w(CHAR)g
Fo(can)h(only)g(matc)o(h)f(a)g(F)m(ortran)h(v)n(ariable)g(of)75
294 y(t)o(yp)q(e)i Fi(CHAR)p Fo(;)e(and)h(represen)o(tation)i(con)o(v)o
(ersion)f(ma)o(y)d(o)q(ccur)j(when)g(v)n(alues)f(of)g(t)o(yp)q(e)h
Fi(MPI)p 1473 294 V 15 w(CHAR)e Fo(are)i(transferred.,)75 344
y(e.g.,)f(from)f(an)h(EBCDIC)i(enco)q(ding)f(to)f(an)h(ASCI)q(I)g(enco)q
(ding.)158 394 y(Consider)g(the)h(follo)o(wing)c(examples.)75
481 y Fi(!)43 b(FIRST)21 b(EXAMPLE)75 531 y(INTEGER)f(A\(100\))75
581 y(...)75 630 y(CALL)h(MPI_CREATE_BUFFER)o(\(BH,)d(MPI_PERSISTENT\))75
680 y(CALL)j(MPI_APPEND_CONTIG)o(UOUS)d(\(BH,)j(A\(1\),)g(1,)h(MPI_CHAR\))158
767 y Fo(This)15 b(program)f(is)i(erroneous,)g(since)h(the)f(t)o(yp)q(e)g(of)
e(the)j(bu\013er)f(descriptor)h(do)q(es)f(not)f(matc)o(h)g(the)h(t)o(yp)q(e)g
(of)75 817 y(the)g(v)n(ariable)f(in)g(the)i(bu\013er.)25 b(The)16
b(b)q(eha)o(vior)f(or)h(this)g(program)e(is)i(unde\014ned.)25
b(A)16 b(desirable)g(b)q(eha)o(vior)g(is)f(for)75 867 y(that)f(error)h(to)e
(b)q(e)i(detected)h(\(at)e(compile)e(time)h(or)h(run)g(time\))e(and)i(result)
h(in)e(an)h(error)h(condition.)75 954 y Fi(!)43 b(SECOND)21
b(EXAMPLE)75 1004 y(INTEGER)f(A\(100\))75 1054 y(...)75 1104
y(CALL)h(MPI_CREATE_BUFFER)o(\(BH,)d(MPI_PERSISTENT\))75 1153
y(CALL)j(MPI_APPEND_CONTIG)o(UOUS)d(\(BH,)j(A\(1\),)g(1,)h(MPI_BYTE\))158
1241 y Fo(This)11 b(program)f(is)h(correct.)19 b(The)12 b(b)o(yte)g(that)f
(will)f(b)q(e)i(transmitted)f(in)g(a)g(message)g(created)i(with)e(this)h
(bu\013er)75 1290 y(descriptor)h(is)f(the)g(\014rst)h(b)o(yte)f(in)g(the)g
(storage)h(o)q(ccupied)f(b)o(y)g Fi(A\(1\))p Fo(.)17 b(The)12
b(v)n(alue)f(of)h(this)f(b)o(yte)i(is)e(implemen)o(tation)75
1340 y(dep)q(enden)o(t,)17 b(and)e(will)f(v)n(ary)h(according)g(to)g(the)h(n)
o(um)o(b)q(er)f(of)f(b)o(ytes)i(used)h(to)e(store)h(F)m(ortran)f(v)n
(ariables)g(of)f(t)o(yp)q(e)75 1390 y Fi(INTEGER)e Fo(and)i(the)h(b)o(yte)f
(ordering)g(on)f(the)i(host)f(mac)o(hine.)75 1477 y Fi(!)43
b(THIRD)21 b(EXAMPLE)75 1527 y(INTEGER)f(A\(100\))75 1577 y(...)75
1627 y(CALL)h(MPI_CREATE_BUFFER)o(\(BH1,)d(MPI_PERSISTENT\))75
1677 y(CALL)j(MPI_APPEND_CONTIG)o(UOUS)d(\(BH1,)j(A\(1\),)g(1,)g
(MPI_INTEGER\))75 1726 y(...)75 1776 y(CALL)g(MPI_CREATE_BUFFER)o(\(BH2,)d
(MPI_PERSISTENT\))75 1826 y(CALL)j(MPI_APPEND_CONTIG)o(UOUS)d(\(BH2,)j
(A\(1\),)g(4,)g(MPI_BYTE\))158 1913 y Fo(Consider)14 b(the)h(follo)o(wing)c
(three)k(cases:)126 1993 y(1.)20 b(A)10 b(message)g(is)g(sen)o(t)h(using)e
(bu\013er)j(descriptor)f(handle)f Fi(BH1)f Fo(and)h(receiv)o(ed)i(using)e
(bu\013er)h(descriptor)g(handle)179 2043 y Fi(BH2)p Fo(.)19
b(The)d(program)d(is)h(erroneous,)i(since)f(the)h(sender)g(and)e(receiv)o(er)
i(bu\013er)g(descriptors)g(don't)f(matc)o(h.)179 2093 y(The)g(b)q(eha)o(vior)
f(of)g(the)h(program)d(is)j(unde\014ned,)g(and)f(a)g(p)q(ossible)h
(\(desirable)g(but)g(unlik)o(ely\))e(b)q(eha)o(vior)h(is)179
2142 y(for)f(an)h(error)h(condition)e(to)h(o)q(ccur.)126 2224
y(2.)20 b(Both)d(sender)h(and)f(receiv)o(er)i(use)e(bu\013er)h(descriptor)g
(handle)f Fi(BH1)p Fo(.)26 b(The)18 b(program)d(is)i(correct,)h(and)f(an)179
2274 y(in)o(teger)12 b(v)n(alue)f(is)g(transmitted)g(from)f(sender)j(to)f
(receiv)o(er.)19 b(The)12 b(v)n(alue)f(assigned)h(to)f Fi(A\(1\))g
Fo(at)g(the)h(receiv)o(er)179 2323 y(is)h(iden)o(tical)f(to)h(the)g(v)n(alue)
g(of)f Fi(A\(1\))g Fo(at)h(the)h(sender,)g(but)f(the)h(binary)f(represen)o
(tation)h(of)e(this)i(v)n(alue)e(ma)o(y)179 2373 y(b)q(e)i(di\013eren)o(t,)h
(if)e(sender)i(and)f(receiv)o(er)h(run)g(in)e(di\013eren)o(t)i(en)o(vironmen)
o(ts.)126 2455 y(3.)20 b(Both)c(sender)h(and)e(receiv)o(er)i(use)g(bu\013er)f
(descriptor)h(handle)f Fi(BH2)p Fo(.)22 b(The)16 b(program)e(is)h(correct.)25
b(Assume)179 2504 y(that)14 b(b)q(oth)h(sender)h(and)e(receiv)o(er)i(use)f
(four)f(b)o(ytes)h(to)f(store)i(in)o(tegers.)k(Then)15 b(the)g(v)n(alue)f
(stored)h(in)f Fi(A\(1\))179 2554 y Fo(at)i(the)h(receiv)o(er)h(has)e(the)h
(same)f(binary)g(represen)o(tation)i(as)e(the)h(v)n(alue)f(of)f
Fi(A\(1)h Fo(at)g(the)h(sender.)27 b(If)16 b(the)179 2604 y(same)c(b)o(yte)h
(ordering)g(and)g(the)h(same)e(enco)q(ding)h(of)g(in)o(teger)g(v)n(alues)g
(is)g(used)g(at)g(b)q(oth)g(ends)h(then)g Fi(A\(1\))e Fo(at)179
2654 y(the)j(receiv)o(er)h(is)f(set)g(to)g(the)g(v)n(alue)f(of)g
Fi(A\(1\))g Fo(at)h(the)g(sender;)h(otherwise)g(the)f(same)f(32)g(bits)h(ma)o
(y)e(enco)q(de)179 2704 y(di\013eren)o(t)i(v)n(alues.)p eop
%%Page: 14 15
bop 75 -100 a Fo(14)712 b Fg(CHAPTER)14 b(1.)31 b(POINT)15
b(TO)f(POINT)g(COMMUNICA)m(TION)158 45 y Fm(Implemen)o(tation)f(note:)158
94 y Fl(The)d(curren)o(t)g(de\014nition)j(do)q(es)d(not)h(require)g(messages)
g(to)e(carry)i(t)o(yp)q(e)f(information.)18 b(A)9 b(message)i(can)f(b)q(e)h
(comp)q(osed)75 140 y(and)g(sen)o(t)f(using)i(only)f(the)f(information)i(in)f
(the)g(sender)g(bu\013er)g(descriptor,)h(and)e(can)h(b)q(e)f(receiv)o(ed)i
(and)e(stored)h(using)h(only)75 186 y(the)i(information)i(in)e(the)g(receiv)o
(er)h(bu\013er)g(descriptor.)21 b(If)13 b(messages)h(are)g(sen)o(t)g(b)q(et)o
(w)o(een)g(di\013eren)o(t)i(mac)o(hines)f(then)f(one)75 231
y(can)e(either)h(use)g(a)f(\\univ)o(ersal")j(data)d(enco)q(ding)i(for)e
(messages,)h(use)f(kno)o(wledge)i(of)d(the)i(receiv)o(er)g(en)o(vironmen)o(t)
h(in)e(order)75 277 y(to)i(con)o(v)o(ert)h(data)f(at)g(the)h(sender,)f(or)h
(use)f(kno)o(wledge)i(of)e(the)g(sender)h(en)o(vironmen)o(t)h(in)f(order)f
(to)g(con)o(v)o(ert)h(data)g(at)f(the)75 323 y(receiv)o(er.)k(In)c(either)g
(case)f(the)h(lo)q(cal)g(bu\013er)g(descriptor)h(can)f(b)q(e)f(used)h(to)f
(deriv)o(e)i(the)e(t)o(yp)q(es)h(of)f(the)g(v)n(alues)h(transferred.)75
368 y(Ho)o(w)o(ev)o(er,)f(additional)k(t)o(yp)q(e)c(information)j(carried)e
(b)o(y)g(messages)g(can)g(pro)o(vide)h(b)q(etter)f(error)f(detection.)19
b(It)13 b(is)h(p)q(ossible)75 414 y(to)d(add)g(alw)o(a)o(ys)h(suc)o(h)f
(additional)j(t)o(yp)q(e)d(information,)i(for)e(b)q(etter)g(error)g(c)o(hec)o
(king,)h(or)f(add)h(it)f(when)g(running)i(in)e(\\debug")75
460 y(mo)q(de,)i(where)g(some)g(p)q(erformance)h(is)g(sacri\014ced)h(for)d
(added)i(error)g(c)o(hec)o(king,)g(etc.)158 675 y Fm(Discussion:)158
724 y Fl(There)h(is)g(no)g(agreemen)o(t)h(y)o(et)f(on)g(the)g(need)g(for)g(a)
g(de\014nition)i(and,)f(if)f(needed,)h(on)f(the)g(righ)o(t)g(de\014nition)j
(of)c(t)o(yp)q(e)75 770 y(matc)o(hing)k(and)e(con)o(v)o(ersion)j(b)q(et)o(w)o
(een)d(programs)h(written)g(in)g(di\013eren)o(t)g(languages.)29
b(The)16 b(natural)h(in)o(terpretation)i(of)75 815 y(\\send)11
b(from)e(C)g(and)i(receiv)o(e)f(in)h(F)m(ortran")f(is)g(either)h(\\send)g
(from)e(C,)g(receiv)o(e)i(in)f(C)f(and)i(con)o(v)o(ert)f(to)g(F)m(ortran",)g
(or)g(\\con)o(v)o(ert)75 861 y(to)i(F)m(ortran,)h(send)g(from)f(F)m(ortran)g
(and)h(receiv)o(e)g(in)g(F)m(ortran".)18 b(Ho)o(w)o(ev)o(er,)11
b(the)i(corresp)q(ondence)h(b)q(et)o(w)o(een)f(F)m(ortran)f(t)o(yp)q(es)75
907 y(and)g(C)f(t)o(yp)q(es)g(is)h(implemen)o(tation)j(dep)q(enden)o(t.)j(Th)
o(us,)11 b(the)h(diagram)g(sho)o(wn)g(b)q(elo)o(w)g(is)g(not)f(comm)o(utativ)
o(e,)i(and)f(the)f(t)o(w)o(o)75 952 y(in)o(terpretations)16
b(of)c(C)h(to)g(F)m(ortran)g(comm)o(unication)j(ma)o(y)d(lead)h(to)f
(di\013eren)o(t)i(results.)238 999 y(mac)o(hine)g(1)285 b(mac)o(hine)15
b(2)513 1045 y(send)232 1091 y(C)e(program)118 b Fc(!)g Fl(C)13
b(program)313 1182 y Fc(#)436 b(#)513 1228 y Fl(send)183 1273
y(F)m(ortran)13 b(program)69 b Fc(!)g Fl(F)m(ortran)13 b(program)158
1321 y(A)h(go)q(o)q(d)h(solution)h(w)o(ould)f(mak)o(e)f(this)h(diagram)h
(comm)o(utativ)o(e.)21 b(Otherwise,)15 b(one)g(needs)g(to)f(pic)o(k)h(one)f
(of)g(the)g(t)o(w)o(o)75 1366 y(paths)k(as)f(the)g(canonical)i(de\014nition)h
(of)d(in)o(terlanguage)j(comm)o(unication.)31 b(If)16 b(the)h(upp)q(er)h
(path)g(is)f(c)o(hosen)h(\(message)75 1412 y(carries)c(sender)g(datat)o(yp)q
(es\),)h(then)e(the)h(receiv)o(er)g(of)f(a)g(message)h(needs)g(to)g(kno)o(w)f
(the)h(language)h(the)f(message)f(w)o(as)h(sen)o(t)75 1458
y(from;)h(if)g(the)f(lo)o(w)o(er)h(path)h(is)f(c)o(hosen,)g(\(message)h
(carries)f(receiv)o(er)h(datat)o(yp)q(es\),)g(then)f(the)f(sender)i(needs)f
(to)g(kno)o(w)g(the)75 1503 y(language)g(the)e(message)h(is)f(receiv)o(ed)i
(in)o(to.)158 1553 y(A)c(p)q(ossible)i(solution)h(\(prop)q(osed)e(b)o(y)g
(Dann)o(y)g(Nessett\))f(is)h(to)f(lea)o(v)o(e)h(to)f(the)g(user)h(the)f(c)o
(hoice)h(of)f(sp)q(ecifying)i(whether)75 1599 y(to)d(send)g(\\F)m(ortran)g
(datat)o(yp)q(es")i(or)d(\\C)h(datat)o(yp)q(es",)h(in)g(the)f(ab)q(o)o(v)o(e)
g(situation.)18 b(One)10 b(w)o(ould)h(still)g(require)g(exact)f(matc)o(hing)
75 1644 y(of)16 b(send)h(bu\013er)g(descriptors)h(and)f(receiv)o(e)g
(bu\013er)g(descriptors.)28 b(Ho)o(w)o(ev)o(er,)17 b(a)f(F)m(ortran)h
(program)g(could)g(use)g(a)f(bu\013er)75 1690 y(descriptor)f(with)e(\\C)g
(datat)o(yp)q(es",)h(and)g(vice)g(v)o(ersa.)j(The)c(standard)h(w)o(ould)g(sp)
q(ecify)h(whic)o(h)e(matc)o(hing)i(of)e(F)m(ortran)g(and)75
1735 y(C)i(datat)o(yp)q(es)j(are)e(legal.)27 b(F)m(or)16 b(example,)i(it)e(w)
o(ould)h(b)q(e)f(correct)g(to)g(send)h(a)f(F)m(ortran)g(v)n(ariable)i(of)e(t)
o(yp)q(e)g Ff(REAL)e Fl(using)k(a)75 1781 y(bu\013er)c(descriptor)g(of)f(t)o
(yp)q(e)g Ff(MPI)p 556 1781 12 2 v 13 w(FLOAT)p Fl(.)d(Data)j(con)o(v)o
(ersion)i(migh)o(t)f(b)q(e)f(required)h(if)f(C)f(\015oat)i(n)o(um)o(b)q(ers)f
(and)h(F)m(ortran)f(real)75 1827 y(n)o(um)o(b)q(ers)h(do)f(not)h(use)f(the)g
(same)g(presen)o(tation.)158 1876 y(Another)j(\(non\)solution)i(is)f(to)e
(ignore)i(the)e(issue)i(and)f(let)g(the)g(b)q(eha)o(vior)h(of)e(C)g(to)h(F)m
(ortran)f(comm)o(unication)k(b)q(e)75 1922 y(unde\014ned.)32
b(The)18 b(user)g(can)g(alw)o(a)o(ys)g(matc)o(h)g(language)h(at)f(sending)h
(and)f(receiving)i(end)e(if)f(he)h(or)g(she)g(is)g(willing)i(to)75
1968 y(struggle)14 b(with)g(the)f(issue)h(of)f(calling)i(MPI)e(C)g(functions)
i(from)d(F)m(ortran)i(or)f(vice-v)o(ersa.)75 2207 y Fn(1.6)70
b(Receiv)n(e)20 b(Criteria)75 2305 y Fo(The)e(selection)g(of)f(a)g(message)g
(b)o(y)g(a)g(receiv)o(e)i(op)q(eration)e(is)h(done)f(uniquely)g(according)h
(to)f(the)h(v)n(alue)f(of)f(the)75 2355 y(message)c(en)o(v)o(elop)q(e.)18
b(The)13 b(receiv)o(e)h(op)q(eration)e(sp)q(eci\014es)i(an)e
Fh(en)o(v)o(elop)q(e)g(pattern)p Fo(;)f(a)h(message)g(can)h(b)q(e)g(receiv)o
(ed)75 2405 y(b)o(y)20 b(that)g(receiv)o(e)h(op)q(eration)f(only)f(if)g(its)h
(en)o(v)o(elop)q(e)h(matc)o(hes)e(that)h(pattern.)38 b(A)20
b(pattern)g(sp)q(eci\014es)i(v)n(alues)75 2455 y(for)c(the)h
Fi(source)p Fo(,)f Fi(tag)g Fo(and)h Fi(context)e Fo(\014elds)i(of)f(the)h
(message)f(en)o(v)o(elop)q(e.)32 b(In)19 b(addition,)f(the)h(v)n(alue)f(for)g
(the)75 2504 y Fi(dest)g Fo(\014eld)g(is)g(set,)i(implicitly)m(,)c(to)i(b)q
(e)h(equal)f(to)h(the)g(receiving)f(pro)q(cess)j(id.)31 b(The)19
b(receiv)o(er)h(ma)o(y)c(sp)q(ecify)j(a)75 2554 y Fi(DONTCARE)11
b Fo(v)n(alue)i(for)f Fi(source)p Fo(,)g(or)h Fi(tag)p Fo(,)f(indicating)g
(that)h(an)o(y)g(source)h(and/or)f(tag)f(are)i(acceptable.)19
b(It)13 b(cannot)75 2604 y(sp)q(ecify)k(a)f(DONTCARE)h(v)n(alue)e(for)h
Fi(context)f Fo(or)i Fi(dest)p Fo(.)25 b(Th)o(us,)17 b(a)f(message)g(can)g(b)
q(e)i(receiv)o(ed)f(b)o(y)g(a)f(receiv)o(e)75 2654 y(op)q(eration)e(only)f
(if)g(it)g(is)h(addressed)h(to)f(the)g(receiving)g(task,)g(has)f(a)h(matc)o
(hing)e(con)o(text,)i(has)g(matc)o(hing)e(source)75 2704 y(unless)18
b(source=DONTCARE)i(in)d(the)h(pattern,)h(and)e(has)h(a)f(matc)o(hing)f(tag)h
(unless)i(tag=DONTCARE)e(in)p eop
%%Page: 15 16
bop 75 -100 a Fg(1.7.)31 b(COMMUNICA)m(TION)14 b(MODE)1136
b Fo(15)75 45 y(the)18 b(pattern.)28 b(DONTCARE)16 b(v)n(alues)h(for)g
(source)h(or)f(tag)f(are)i(sp)q(eci\014ed)g(via)e(a)h(named)f(constan)o(t)h
(for)g(source)75 95 y(don)o(tcare)e(and)e(a)h(named)f(constan)o(t)h(for)g
(tag)f(don)o(tcare.)158 145 y(The)i(length)f(of)g(the)g(receiv)o(ed)i
(message)e(m)o(ust)f(b)q(e)i(less)g(then)g(or)f(equal)g(the)h(length)f(of)g
(the)h(receiv)o(e)g(bu\013er.)75 195 y(I.e.,)d(all)f(incoming)f(data)i(m)o
(ust)f(\014t,)i(without)f(truncation,)g(in)o(to)g(the)h(receiv)o(e)g
(bu\013er.)19 b(It)12 b(is)h(erroneous)g(to)g(receiv)o(e)75
244 y(a)h(message)f(whic)o(h)h(length)g(exceed)i(the)e(receiv)o(e)h
(bu\013er,)g(and)e(the)i(outcome)e(of)g(program)g(where)i(this)f(o)q(ccurs)h
(is)75 294 y(undetermined.)75 432 y Fn(1.7)70 b(Comm)n(unication)20
b(Mo)r(de)75 523 y Fo(A)14 b(send)h(op)q(eration)f(can)g(o)q(ccur)h(in)e(one)
h(of)f(three)j(mo)q(des:)75 606 y Fh(ST)l(AND)o(ARD)k Fo(The)14
b(send)h(ma)o(y)d(start)i(whether)i(or)d(not)h(a)g(matc)o(hing)e(receiv)o(e)j
(has)f(b)q(een)h(p)q(osted.)75 690 y Fh(READ)o(Y)20 b Fo(The)15
b(send)g(ma)o(y)c(start)k(only)e(if)g(a)h(matc)o(hing)e(receiv)o(e)j(has)f(b)
q(een)h(p)q(osted.)75 773 y Fh(SECURE)21 b Fo(The)12 b(send)g(op)q(eration)f
(will)f(not)h(complete)g(successfully)h(un)o(til)e(it)h(is)g(guaran)o(teed)h
(that)f(the)h(message)179 823 y(sen)o(t)i(will)f(b)q(e)h(receiv)o(ed.)158
906 y(The)k(start)g(and)f(completion)e(of)i(a)g Fh(standard)e
Fo(send)j(do)q(es)g(not)f(dep)q(end)h(on)f(the)h(status)g(of)f(a)g(matc)o
(hing)75 956 y(receiv)o(e.)158 1006 y(A)e Fh(ready)h(send)e
Fo(can)h(start)g(only)f(if)g(a)h(matc)o(hing)e(receiv)o(e)j(is)f(already)f(p)
q(osted;)i(otherwise)g(the)f(op)q(eration)75 1056 y(is)e(erroneous)h(and)e
(its)h(outcome)f(is)g(unde\014ned.)19 b(In)13 b(some)f(systems,)g(this)h
(allo)o(ws)f(the)h(remo)o(v)n(al)d(of)i(a)h(hand-shak)o(e)75
1106 y(op)q(eration)h(that)g(is)f(otherwise)i(required,)g(and)e(results)i(in)
f(impro)o(v)o(ed)e(p)q(erformance.)18 b(Its)c(completion)e(do)q(es)j(not)75
1155 y(dep)q(end)g(on)f(the)g(status)h(of)e(a)h(matc)o(hing)e(receiv)o(e.)158
1205 y(A)20 b Fh(secure)h(send)d Fo(will)g(complete)h(if)g(a)g(matc)o(hing)f
(receiv)o(e)j(is)e(p)q(osted,)i(and)f(the)g(receiv)o(e)h(op)q(eration)e(is)75
1255 y(committed)c(to)h(receiv)o(e)j(the)e(message)g(sen)o(t)h(b)o(y)f(the)g
(secure)i(send.)28 b(\(I.e.,)17 b(the)h(send)g(and)e(receiv)o(e)j(op)q
(erations)75 1305 y(ha)o(v)o(e)h(already)h(b)q(een)g(matc)o(hed,)h(the)f
(receiv)o(e)h(op)q(eration)e(has)h(already)f(started)i(and)e(cannot)h(b)q(e)g
(cancelled)75 1355 y(an)o(ymore.\))c(The)d(start)h(of)e(a)g(secure)j(send)f
(do)q(es)g(not)f(dep)q(end)h(on)e(the)i(status)g(of)e(a)g(matc)o(hing)f
(receiv)o(e.)158 1405 y(A)j(receiv)o(e)i(op)q(eration)e(can)h(o)q(ccur)g(in)f
(one)h(of)f(t)o(w)o(o)g(mo)q(des:)20 b Fh(ST)l(AND)o(ARD)14
b Fo(and)h Fh(SECURE)p Fo(.)h(A)f(secure)75 1454 y(send)i(can)g(b)q(e)g(matc)
o(hed)f(only)g(b)o(y)g(a)g Fh(secure)i(receiv)o(e)p Fo(;)e(a)g(program)f
(where)j(a)e(secure)i(send)g(can)f(b)q(e)g(matc)o(hed)75 1504
y(b)o(y)e(a)f(standard)h(receiv)o(e)h(is)f(erroneous)h(and)f(its)f(b)q(eha)o
(vior)h(is)g(unde\014ned.)22 b(The)15 b(secure)i(receiv)o(e)f(can)f(b)q(e)g
(p)q(osted)75 1554 y(either)g(b)q(efore)f(or)g(after)g(the)h(matc)o(hing)d
(send.)158 1604 y(A)f(standard)g(send)g(and)f(a)h(ready)f(send)i(can)f(b)q
(oth)f(b)q(e)h(matc)o(hed)f(only)g(b)o(y)g(a)g Fh(standard)h(receiv)o(e)p
Fo(;)e(a)i(program)75 1654 y(where)k(a)f(secure)i(receiv)o(e)g(can)e(matc)o
(h)f(a)h(nonsecure)i(send)f(is)g(erroneous)g(and)f(its)g(b)q(eha)o(vior)g(is)
g(unde\014ned.)21 b(The)75 1704 y(receiv)o(e)14 b(has)g(to)f(b)q(e)h(p)q
(osted)g(ahead)f(of)f(the)i(send)g(for)f(a)g(ready)g(send)h(and)f(can)h(b)q
(e)g(p)q(osted)g(either)g(b)q(efore)g(or)f(after)75 1753 y(the)h(send)h(is)f
(p)q(osted)h(for)e(a)h(standard)g(send.)158 1882 y Fm(Discussion:)158
1932 y Fl(I)h(got)h(criticisms)h(ab)q(out)f(the)g(previous)h(notation)g
(\(REGULAR\))e(and)h(the)g(curren)o(t)g(one)g(\(ST)m(AND)o(ARD\).)e(I)h(can)
75 1982 y(also)g(try)e(NORMAL,)g(DEF)l(A)o(UL)m(T,)f(...)18
b(W)m(e)c(should)h(probably)h(v)o(ote,)d(at)h(some)g(p)q(oin)o(t.)19
b(Also,)14 b(Lyndon)h(prop)q(oses)g(to)e(use)75 2031 y(SYNCHR)o(ONOUS,)f
(rather)i(than)g(secure,)g(since)h(the)e(other)h(mo)q(des)g(can)g(also)h
(o\013er)e(secure)i(comm)o(unication)h(with)e(the)75 2081 y(righ)o(t)g(use.)
158 2292 y Fm(Implemen)o(tation)f(note:)158 2338 y Fl(The)g(curren)o(t)h
(de\014nition)i(assumes)e(it)g(is)g(the)f(user)h(resp)q(onsibil)q(it)o(y)i
(to)e(prev)o(en)o(t)g(matc)o(hing)g(of)f(a)h(regular)g(send)g(with)75
2384 y(a)f(secure)h(receiv)o(e)g(and)f(vice-v)o(ersa.)18 b(Otherwise,)c
(messages)g(need)f(b)q(e)g(tagged)h(as)f(standard)i(or)e(secure.)158
2429 y(Assume)i(an)g(implemen)o(tation)j(of)d(MPI)f(comm)o(unication)k(that)d
(a)o(v)o(oids)h(retries.)23 b(What)15 b(proto)q(cols)i(can)e(b)q(e)g(used?)75
2475 y(Since)j(a)e(receiv)o(e)i(ma)o(y)f(ha)o(v)o(e)g(a)g(wildcard)h(source)f
(\014eld,)i(the)d(\014rst)h(step)g(in)h(the)e(proto)q(col)i(m)o(ust)f(b)q(e)g
(executed)h(b)o(y)f(the)75 2521 y(sender.)158 2567 y(F)m(or)c(a)g(ready)h
(send,)f(this)h(\014rst)f(step)h(ma)o(y)f(in)o(v)o(olv)o(e)i(sending)g(the)e
(data,)h(since)g(the)f(receiv)o(er)h(is)g(guaran)o(teed)g(to)f(ha)o(v)o(e)75
2612 y(space)h(to)f(store)g(it.)k(The)c(proto)q(col)h(is)g(send,)f(p)q
(ossibly)j(follo)o(w)o(ed)e(b)o(y)g(an)f(ac)o(k-send.)158 2658
y(The)g(proto)q(col)h(for)e(secure)i(send)f(is)g(lik)o(ely)i(to)e(b)q(e)g
(the)g(follo)o(wing:)19 b(The)13 b(sender)g(sends)h(a)e(request-to-send)i
(message.)75 2704 y(The)f(receiv)o(er)h(stores)f(this)g(request)h(\(whic)o(h)
g(con)o(tains)g(a)f(cop)o(y)g(of)g(the)g(message)g(en)o(v)o(elop)q(e\).)19
b(When)14 b(a)f(matc)o(hing)h(receiv)o(e)p eop
%%Page: 16 17
bop 75 -100 a Fo(16)712 b Fg(CHAPTER)14 b(1.)31 b(POINT)15
b(TO)f(POINT)g(COMMUNICA)m(TION)75 45 y Fl(is)g(p)q(osted,)h(the)f(receiv)o
(er)h(sends)f(bac)o(k)h(an)f(ac)o(kno)o(wledge,)i(and)e(the)g(sender)h(no)o
(w)e(sends)i(the)f(message.)20 b(The)14 b(proto)q(col)h(is)75
91 y(\(req,)e(ac)o(k-req,)g(send\),)g(p)q(ossibly)j(follo)o(w)o(ed)e(b)o(y)f
(an)h(ac)o(k-send.)158 136 y(What)g(proto)q(col)h(is)f(used)g(for)f(standard)
i(sends?)k(Either)14 b(the)g(second)g(proto)q(col)h(\(req,)e(ac)o(k-req,)g
(send\))h(or)g(a)f(mix)h(of)75 182 y(the)f(\014rst)g(and)h(the)f(second)h
(\(e.g.)j(\014rst)c(used)h(for)e(short)i(messages,)f(second)h(for)f(long)h
(messages\).)158 228 y(When)h(the)g(receiv)o(er)g(do)q(es)g(not)f(wildcard)i
(the)f(source)g(\014eld)g(then)g(the)f(proto)q(col)i(can)f(b)q(e)f(rev)o
(ersed:)21 b(The)14 b(receiv)o(er)75 273 y(sends)h(a)f(clear-to-send)h
(message,)g(and)f(the)h(sender)f(can)h(pro)q(ceed)g(with)f(the)g(short)h
(proto)q(col)g(if)f(it)h(has)f(a)g(clear-to-send)75 319 y(when)f(the)g(send)h
(is)g(executed.)158 365 y(What)f(do)g(w)o(e)g(gain)g(from)g(the)g(\\secure)g
(receiv)o(e"?)19 b(Some)13 b(optimizations)i(for)e(regular)h(receiv)o(es)g
(\(e.g.,)d(in)j(a)e(regular)75 410 y(receiv)o(e)18 b(of)f(a)g(short)g
(message)h(the)f(receiv)o(er)h(kno)o(ws)g(the)f(short)g(proto)q(col)i(will)f
(b)q(e)g(used,)g(and)g(need)f(not)h(c)o(hec)o(k)f(for)g(a)75
456 y(request-to-send\).)h(Q:)12 b(is)i(that)f(enough)i(justi\014cation)g
(for)e(the)g(secure)g(receiv)o(e?)158 502 y(A)k(coun)o(ter)g(argumen)o(t)h
(\(Leslie)g(Hart\))f(is)h(that)f(one)g(could)i(conceiv)o(e)f(of)f(an)g
(implemen)o(tation)j(where)d(a)g(regular)75 547 y(receiv)o(e)12
b(reserv)o(es)g(bu\013er)g(space,)f(so)h(that)f(a)g(program)h(that)f(use)h
(regular)g(receiv)o(es)g(is)g(not)f(safe,)g(ev)o(en)h(if)f(only)h(secure)g
(sends)75 593 y(are)h(used.)18 b(I)12 b(doubt)i(this)g(is)f(a)g(strong)h
(argumen)o(t.)k(On)13 b(the)g(other)g(hand,)h(it)f(indicates)i(that,)e(if)g
(the)g(exp)q(ectation)i(is)f(that)75 639 y(programs)i(written)g(using)g(only)
h(secure)e(sends)h(are)g(safe,)f(then)h(this)g(is)f(an)h(additional)i
(correctness)e(condition)i(on)e(the)75 684 y(implemen)o(tation)g(that)d(need)
h(b)q(e)f(made)h(explicit.)75 903 y Fn(1.8)70 b(Comm)n(unication)20
b(Ob)t(jects)75 994 y Fo(An)15 b(opaque)g(comm)o(unication)d(ob)r(ject)k
(iden)o(ti\014es)g(v)n(arious)e(prop)q(erties)j(of)e(a)g(comm)o(uni)o(cation)
d(op)q(eration,)j(suc)o(h)75 1043 y(as)h(the)g(bu\013er)h(descriptor)h(that)d
(is)h(asso)q(ciated)h(with)e(it,)h(its)g(con)o(text,)g(the)h(tag)e(and)h
(destination)g(parameters)75 1093 y(to)f(b)q(e)h(used)g(for)f(a)g(send,)h(or)
f(the)h(tag)f(and)g(source)h(parameters)g(to)f(b)q(e)g(used)i(for)d(a)h
(receiv)o(e.)24 b(In)15 b(addition,)f(this)75 1143 y(ob)r(ject)g(stores)h
(information)10 b(ab)q(out)j(the)h(status)g(of)e(the)i(last)f(comm)o
(unication)d(op)q(eration)j(that)g(w)o(as)g(p)q(erformed)75
1193 y(with)h(this)f(ob)r(ject.)19 b(This)14 b(ob)r(ject)h(is)f(accessed)i
(using)d(a)h(comm)o(unicatio)o(n)d(handle.)158 1243 y(One)k(can)f(consider)h
(comm)o(uni)o(cation)c(op)q(erations)j(to)g(consist)g(of)g(the)g(follo)o
(wing)d(sub)q(op)q(erations:)75 1324 y Fh(INIT\(op)q(eration,)j(params,)i
(handle\))i Fo(Pro)q(cess)c(pro)o(vides)f(all)f(relev)n(an)o(t)g(parameters)h
(for)f(its)h(participation)179 1374 y(in)i(the)i(comm)o(unication)c(op)q
(eration)j(\(t)o(yp)q(e)g(of)g(op)q(eration,)g(data)g(bu\013er,)h(tag,)e
(participan)o(ts,)i(etc.\).)25 b(An)179 1424 y(ob)r(ject)14
b(is)g(created)i(that)e(iden)o(ti\014es)g(the)g(op)q(eration.)75
1503 y Fh(ST)l(AR)l(T\(handle\))k Fo(The)c(comm)o(unication)c(op)q(eration)k
(is)g(started)75 1582 y Fh(COMPLETE\(handle\))19 b Fo(The)14
b(comm)o(unication)c(op)q(eration)k(is)g(completed.)75 1661
y Fh(FREE\(handle\))k Fo(The)d(comm)o(unicati)o(on)c(ob)r(ject,)j(and)g(asso)
q(ciated)h(resources)h(are)e(freed.)75 1743 y(Correct)h(in)o(v)o(o)q(cation)e
(of)g(these)i(sub)q(op)q(erations)g(is)f(a)f(sequence)k(of)c(the)h(form)587
1825 y Fh(INIT)j Fo(\()p Fh(ST)l(AR)l(T)f(COMPLETE)p Fo(\))1187
1808 y Fb(\003)1223 1825 y Fh(FREE)p Fd(:)75 1907 y Fo(I.e.,)10
b(an)h(ob)r(ject)g(needs)h(b)q(e)f(created)i(b)q(efore)e(comm)o(unication)c
(o)q(ccurs;)13 b(it)d(can)h(b)q(e)g(reused)i(only)c(after)i(the)h(previous)75
1956 y(use)k(has)g(completed;)f(and)g(it)g(needs)i(to)e(b)q(e)h(freed)h(ev)o
(en)o(tually)d(\(of)h(course,)i(one)f(can)f(assume)g(that)h(all)e(ob)r(jects)
75 2006 y(are)g(freed)h(at)f(program)e(termination,)g(b)o(y)h(default\).)158
2056 y(The)21 b(ab)q(o)o(v)o(e)g(scenario)g(p)q(ertains)g(to)g
Fj(p)n(ersistent)f Fo(ob)r(jects.)39 b(One)22 b(can)f(also)f(create)i
Fj(ephemer)n(al)e Fo(ob)r(jects.)75 2106 y(Suc)o(h)c(an)g(ob)r(ject)h(p)q
(ersists)h(only)d(un)o(til)g(the)i(comm)o(uni)o(cation)c(op)q(eration)j(is)g
(completed,)f(at)h(whic)o(h)g(p)q(oin)o(t)f(it)h(is)75 2156
y(destro)o(y)o(ed.)i(Th)o(us)12 b(the)g(correct)i(in)o(v)o(o)q(cation)c(of)h
(sub)q(op)q(erations)i(with)e(an)g(ephemeral)g(ob)r(ject)i(is)e
Fh(INIT)j(ST)l(AR)l(T)75 2205 y(COMPLETE)p Fo(.)158 2255 y(A)19
b(user)i(ma)o(y)c(directly)j(in)o(v)o(ok)o(e)f(these)h(sub)q(op)q(erations.)
36 b(This)19 b(w)o(ould)g(allo)o(w)e(the)j(amortization)e(of)g(the)75
2305 y(o)o(v)o(erhead)d(of)g(setting)g(up)g(a)g(comm)o(unication)d(o)o(v)o
(er)j(man)o(y)e(successiv)o(e)k(uses)f(of)f(the)g(same)g(handle,)f(and)h
(allo)o(ws)75 2355 y(the)d(o)o(v)o(erlap)f(of)g(comm)o(unication)e(and)i
(computation.)16 b(Simpler)10 b(comm)o(unicatio)o(n)f(op)q(erations)j(com)o
(bine)e(sev)o(eral)75 2405 y(of)17 b(these)i(sub)q(op)q(erations)g(in)o(to)e
(one)h(op)q(eration,)g(th)o(us)g(simplifying)d(the)j(use)h(of)e(comm)o
(unicatio)o(n)e(primitiv)o(es.)75 2455 y(Th)o(us,)h(one)h(only)e(needs)j(to)e
(sp)q(ecify)g(precisely)h(the)g(seman)o(tics)f(of)f(these)j(sub)q(op)q
(erations)f(in)f(order)g(to)g(sp)q(ecify)75 2504 y(the)e(seman)o(tics)g(of)f
(MPI)h(p)q(oin)o(t)g(to)f(p)q(oin)o(t)h(comm)o(unicatio)o(n)d(op)q(erations.)
158 2554 y(W)m(e)i(sa)o(y)g(that)g(a)g(comm)o(unicatio)o(n)d(op)q(eration)j
(\(send)i(or)e(receiv)o(e\))h(is)f Fh(p)q(osted)f Fo(once)i(a)f
Fh(start)e Fo(sub)q(op)q(eration)75 2604 y(has)18 b(b)q(een)h(in)o(v)o(ok)o
(ed;)g(the)g(op)q(eration)f(is)g Fh(completed)e Fo(once)i(the)h
Fh(complete)d Fo(sub)q(op)q(eration)j(has)f(completed.)75 2654
y(A)e(send)h(and)f(a)g(receiv)o(e)i(op)q(eration)e Fh(matc)o(h)f
Fo(if)g(the)i(receiv)o(e)h(pattern)f(sp)q(eci\014ed)g(b)o(y)f(the)h(receiv)o
(e)h(matc)o(hes)d(the)75 2704 y(message)f(en)o(v)o(elop)q(e)g(created)h(b)o
(y)f(the)g(send.)p eop
%%Page: 17 18
bop 75 -100 a Fg(1.8.)31 b(COMMUNICA)m(TION)14 b(OBJECTS)1073
b Fo(17)75 45 y Fk(1.8.1)55 b(Comm)n(unication)21 b(Ob)s(ject)d(Creation)75
206 y Fm(Discussion:)35 b Fl(This)14 b(section)g(has)f(not)h(y)o(et)f(b)q
(een)g(appro)o(v)o(ed)158 339 y Fo(An)c(ob)r(ject)i(for)d(a)h(send)i(op)q
(eration)e(is)g(created)i(b)o(y)e(a)g(call)f(to)h Fh(MPI)p
1180 339 15 2 v 18 w(INIT)p 1304 339 V 17 w(SEND)p Fo(.)g(A)g(call)g(to)g
Fh(MPI)p 1728 339 V 17 w(INIT)p 1851 339 V 18 w(RECV)75 389
y Fo(is)17 b(similarly)c(used)18 b(for)f(creating)g(an)f(ob)r(ject)i(for)e(a)
h(receiv)o(e)h(op)q(eration.)26 b(The)18 b(creation)f(of)f(a)g(comm)o
(unication)75 439 y(ob)r(ject)f(is)e(a)h(lo)q(cal)f(op)q(eration)h(that)g
(need)h(not)e(in)o(v)o(olv)o(e)g(comm)o(unicatio)o(n)e(with)j(a)f(remote)h
(pro)q(cess.)158 525 y Fh(MPI)p 257 525 V 17 w(INIT)p 380 525
V 18 w(SEND)i(\(handle,)e(bu\013er)p 856 525 V 15 w(handle,)g(dest,)h(tag,)h
(con)o(text,)f(mo)q(de,)g(p)q(ersistence\))158 611 y Fo(Creates)g(a)f(send)h
(comm)o(unicati)o(on)c(ob)r(ject.)19 b(P)o(arameters)14 b(are)75
696 y Fh(OUT)i(handle)i Fo(message)g(handle.)28 b(The)18 b(handle)g(should)f
(not)g(b)q(e)h(asso)q(ciated)h(with)e(an)o(y)g(ob)r(ject)h(b)q(efore)g(the)
179 746 y(call.)75 832 y Fh(IN)e(bu\013er)p 273 832 V 16 w(handle)j
Fo(handle)13 b(to)h(send)h(bu\013er)g(descriptor)75 918 y Fh(IN)h(dest)k
Fo(rank)14 b(in)f(con)o(text)i(of)e(destination)h(\(in)o(teger\))75
1004 y Fh(IN)i(tag)21 b Fo(user)15 b(tag)e(for)h(messages)g(sen)o(t)g(with)g
(this)g(handle)g(\(in)o(teger\))75 1090 y Fh(IN)i(con)o(text)k
Fo(con)o(text)14 b(of)f(messages)h(sen)o(t)h(with)f(this)g(handle)75
1176 y Fh(IN)i(mo)q(de)21 b Fo(send)14 b(mo)q(de)f(\(state)i(t)o(yp)q(e,)f
(with)f(three)j(v)n(alues:)h Fi(MPI)p 1119 1176 14 2 v 15 w(STANDARD)p
Fo(,)12 b Fi(MPI)p 1400 1176 V 15 w(READY)h Fo(and)h Fi(MPI)p
1685 1176 V 15 w(SECURE)p Fo(\))75 1262 y Fh(IN)i(p)q(ersistence)i
Fo(handle)10 b(p)q(ersistence)i(\(state)e(t)o(yp)q(e,)g(with)f(t)o(w)o(o)g(v)
n(alues:)15 b Fi(MPI)p 1318 1262 V 15 w(PERSISTENT)8 b Fo(and)h
Fi(MPI)p 1703 1262 V 15 w(EPHEMERAL)p Fo(\))158 1383 y Fh(MPI)p
257 1383 15 2 v 17 w(INIT)p 380 1383 V 18 w(RECV)15 b(\(handle,)e(bu\013er)p
859 1383 V 15 w(handle,)g(source,)h(tag,)g(con)o(text,)f(mo)q(de,)i(p)q
(ersistence\))158 1469 y Fo(Create)g(a)e(receiv)o(e)j(handle.)i(P)o
(arameters)c(are)75 1555 y Fh(OUT)i(handle)i Fo(message)g(handle.)28
b(The)18 b(handle)g(should)f(not)g(b)q(e)h(asso)q(ciated)h(with)e(an)o(y)g
(ob)r(ject)h(b)q(efore)g(the)179 1604 y(call.)75 1690 y Fh(IN)e(bu\013er)p
273 1690 V 16 w(handle)j Fo(handle)13 b(to)h(receiv)o(e)h(bu\013er)g
(descriptor.)75 1777 y Fh(IN)h(source)k Fo(rank)14 b(in)f(con)o(text)i(of)e
(source,)i(or)f Fi(MPI)p 897 1777 14 2 v 15 w(ANY)p 978 1777
V 15 w(SOURCE)f Fo(\(in)o(teger\).)75 1863 y Fh(IN)j(tag)21
b Fo(user)15 b(tag)e(for)h(messages)g(receiv)o(ed)h(with)f(this)f(handle,)h
(or)g Fi(MPI)p 1232 1863 V 15 w(ANY)p 1313 1863 V 15 w(TAG)f
Fo(\(in)o(teger\).)75 1949 y Fh(IN)j(con)o(text)k Fo(con)o(text)14
b(of)f(messages)h(receiv)o(ed)i(with)d(this)h(handle.)75 2035
y Fh(IN)i(mo)q(de)21 b Fo(receiv)o(e)15 b(mo)q(de)e(\(state)h(t)o(yp)q(e,)g
(with)g(t)o(w)o(o)f(v)n(alues:)18 b Fi(MPI)p 1133 2035 V 15
w(STANDARD)p Fo(,)12 b(and)i Fi(MPI)p 1495 2035 V 15 w(SECURE)p
Fo(\))75 2121 y Fh(IN)i(p)q(ersistence)i Fo(handle)10 b(p)q(ersistence)i
(\(state)e(t)o(yp)q(e,)g(with)f(t)o(w)o(o)g(v)n(alues:)15 b
Fi(MPI)p 1318 2121 V 15 w(PERSISTENT)8 b Fo(and)h Fi(MPI)p
1703 2121 V 15 w(EPHEMERAL)p Fo(\))158 2206 y(See)15 b(Section)f(1.4.2)e(for)
i(a)f(discussion)i(of)e(source,)i(tag)e(and)h(con)o(text.)158
2335 y Fm(Discussion:)35 b Fl(I)12 b(ha)o(v)o(e)h(not)g(included)i(prop)q
(osals)f(for)f(partially)i(sp)q(eci\014ed)f(message)f(handles,)i(that)d(some)
h(p)q(eoples)75 2381 y(seem)g(to)g(desire.)158 2427 y(I)g(ha)o(v)o(e)g
(merged)h(all)g(handle)h(setup)e(in)o(to)h(one)g(call.)158
2474 y(The)c(functions)i Ff(MPI)p 459 2474 12 2 v 13 w(INIT)p
552 2474 V 12 w(SEND)c Fl(and)j Ff(MPI)p 784 2474 V 13 w(INIT)p
877 2474 V 13 w(RECV)d Fl(ha)o(v)o(e)j(the)f(same)g(list)h(of)f(parameters.)
17 b(Jim)10 b(Co)o(wnie)h(suggests)75 2519 y(to)i(ha)o(v)o(e)g(only)i(one)e
(function)i(with)e(an)g(extra)h(argumen)o(t.)158 2566 y(Ephemeral)f(\\p)q
(ersisten)o(t)h(handles")f(are)f(not)g(terribly)h(useful)g(as)f(suc)o(h.)17
b(But)12 b(their)g(existence)h(allo)o(w)g(us)f(to)f(describ)q(e)75
2612 y(all)j(the)f(higher)i(lev)o(el)f(send/receiv)o(e)h(op)q(erations)g(in)f
(terms)f(of)g(basic)h(op)q(erations)h(on)e(handles.)p eop
%%Page: 18 19
bop 75 -100 a Fo(18)712 b Fg(CHAPTER)14 b(1.)31 b(POINT)15
b(TO)f(POINT)g(COMMUNICA)m(TION)75 45 y Fk(1.8.2)55 b(Comm)n(unication)21
b(Start)75 157 y Fh(MPI)p 174 157 15 2 v 17 w(ST)l(AR)l(T\(handle\))75
274 y(IN)16 b(handle)j Fo(comm)o(unication)10 b(handle)158
355 y(The)16 b Fi(MPI)p 314 355 14 2 v 15 w(START)f Fo(function)h(starts)g
(the)h(execution)f(of)g(a)f(comm)o(unication)e(op)q(eration)i(\(send)i(or)f
(receiv)o(e\).)75 404 y(A)i(sender)i(should)d(not)h(up)q(date)h(the)f(send)h
(bu\013er)g(after)f(a)g(send)h(op)q(eration)f(has)g(started)h(un)o(til)e
(after)h(it)g(has)75 454 y(completed.)31 b(A)18 b(receiv)o(er)i(should)e(not)
h(access)h(the)f(receiv)o(e)h(bu\013er)f(after)g(a)f(receiv)o(e)h(op)q
(eration)g(w)o(as)f(started)75 504 y(un)o(til)c(after)h(it)f(has)h
(completed.)21 b(A)15 b(program)e(that)i(do)q(es)g(not)g(satisfy)g(these)h
(conditions)e(is)h(erroneous)h(and)f(its)75 554 y(outcome)e(is)h
(undetermined.)75 670 y Fk(1.8.3)55 b(Comm)n(unication)21 b(Completion)75
782 y Fh(MPI)p 174 782 15 2 v 17 w(W)-5 b(AIT)17 b(\()e(handle,)f(return)p
675 782 V 15 w(status)p 816 782 V 16 w(handle\))75 898 y(IN)i(handle)j
Fo(comm)o(unication)10 b(handle)75 980 y Fh(IN)16 b(return)p
284 980 V 15 w(handle)j Fo(handle)13 b(that)h(is)f(asso)q(ciated)i(with)e
(return)i(status)f(ob)r(ject.)19 b(the)14 b(return)g(status)h(ob)r(ject)f(is)
179 1030 y(up)q(dated)g(b)o(y)g(call.)158 1111 y(A)g(call)e(to)i
Fh(MPI)p 428 1111 V 17 w(W)-5 b(AIT)14 b Fo(returns)h(when)f(the)g(send)g(op)
q(eration)g(iden)o(ti\014ed)f(b)o(y)h Fi(handle)e Fo(is)h(complete.)18
b(The)75 1161 y(completion)13 b(of)h(a)g(send)h(op)q(eration)g(indicates)g
(that)f(the)h(sender)i(is)d(no)o(w)g(free)i(to)e(up)q(date)h(the)g(lo)q
(cations)f(in)g(the)75 1211 y(send)e(bu\013er,)h(or)e(an)o(y)g(other)h(lo)q
(cation)e(that)i(can)f(b)q(e)h(referenced)i(b)o(y)d(the)h(send)g(op)q
(eration.)17 b(Ho)o(w)o(ev)o(er,)12 b(it)f(do)q(es)h(not)75
1261 y(indicate)f(that)h(the)g(message)f(has)h(b)q(een)g(receiv)o(ed;)h
(rather)g(it)e(ma)o(y)e(ha)o(v)o(e)j(b)q(een)g(bu\013ered)h(b)o(y)e(the)h
(comm)o(unication)75 1310 y(subsystem.)158 1360 y(The)20 b(completion)e(of)i
(a)f(receiv)o(e)i(op)q(eration)f(indicates)g(that)g(the)h(receiv)o(er)g(is)f
(no)o(w)f(free)i(to)f(access)h(the)75 1410 y(lo)q(cations)15
b(in)g(the)h(receiv)o(e)h(bu\013er,)f(whic)o(h)f(con)o(tain)g(the)h(receiv)o
(ed)h(message,)e(or)h(an)o(y)f(other)h(lo)q(cation)e(that)i(can)75
1460 y(b)q(e)g(referenced)i(b)o(y)d(the)h(receiv)o(e)h(op)q(eration.)23
b(It)15 b(do)q(es)h(not)g(indicate)f(that)h(the)g(matc)o(hing)d(send)j(op)q
(eration)g(has)75 1510 y(completed.)158 1559 y(The)k(call)e(returns)j(a)e
(handle)h(to)f(an)g(opaque)g(ob)r(ject)h(that)g(con)o(tains)f(information)d
(on)k(the)g(completed)75 1609 y(op)q(eration)14 b({)f(the)i
Fh(return)f(status)e Fo(ob)r(ject.)158 1694 y Fh(MPI)p 257
1694 V 17 w(ST)l(A)l(TUS)j(\(handle,)f(\015ag,)i(return)p 898
1694 V 15 w(handle\))75 1811 y(IN)g(handle)j Fo(comm)o(unication)10
b(handle)75 1893 y Fh(OUT)16 b(\015ag)k Fo(logical)75 1975
y Fh(OUT)c(return)p 335 1975 V 15 w(handle)i Fo(handle)c(that)g(is)g(asso)q
(ciated)g(with)g(return)h(status)g(ob)r(ject.)158 2056 y(A)e(call)f(to)h
Fh(MPI)p 426 2056 V 17 w(ST)l(A)l(TUS)f Fo(returns)j Fi(flag=true)c
Fo(if)h(the)h(op)q(eration)g(iden)o(ti\014ed)g(b)o(y)g Fi(handle)e
Fo(is)i(complete.)75 2106 y(In)j(suc)o(h)g(case,)g(the)h(return)f(handle)g(p)
q(oin)o(ts)f(to)h(an)f(opaque)h(ob)r(ject)g(that)g(con)o(tains)f(information)
e(on)i(the)h(com-)75 2156 y(pleted)f(op)q(eration.)k(It)c(returns)h
Fi(flag=false)p Fo(,)c(otherwise.)20 b(In)15 b(suc)o(h)g(case,)g(the)g(v)n
(alue)f(of)f(the)i(return)h(handle)e(is)75 2205 y(unde\014ned.)158
2255 y(A)f(call)g(to)g Fi(MPI)p 397 2255 14 2 v 15 w(WAIT)f
Fo(blo)q(c)o(ks)h(only)f(the)i(executing)g(thread.)k(If)13
b(the)h(executing)g(pro)q(cess)h(is)e(m)o(ultithreaded,)75
2305 y(then)i(other)f(threads)h(within)e(the)i(pro)q(cess)g(can)f(b)q(e)h(sc)
o(heduled)g(for)f(execution.)158 2355 y(The)h(use)h(of)f(a)f(blo)q(c)o(king)h
(receiv)o(e)h(op)q(eration)f(\()p Fi(MPI)p 977 2355 V 15 w(WAIT)p
Fo(\))f(allo)o(ws)g(the)i(op)q(erating)f(system)f(to)h(desc)o(hedule)75
2405 y(the)j(blo)q(c)o(k)o(ed)g(thread)h(and)e(sc)o(hedule)i(another)g
(thread)f(for)f(execution,)j(if)c(suc)o(h)j(is)f(a)o(v)n(ailable.)27
b(The)18 b(use)h(of)e(a)75 2455 y(non)o(blo)q(c)o(king)12 b(receiv)o(e)i(op)q
(eration)f(\()p Fi(MPI)p 710 2455 V 15 w(STATUS)p Fo(\))f(allo)o(ws)g(the)i
(user)g(to)f(sc)o(hedule)h(alternativ)o(e)f(activities)g(within)75
2504 y(a)h(single)f(thread)i(of)e(execution.)158 2554 y(The)g(in)o(tended)g
(implemen)o(tation)c(of)j Fi(MPI)p 820 2554 V 16 w(STATUS)f
Fo(is)h(for)h(that)f(op)q(eration)h(to)f(return)i(as)f(so)q(on)f(as)h(p)q
(ossible.)75 2604 y(Ho)o(w)o(ev)o(er,)h(if)f(rep)q(eatedly)i(called)f(for)f
(an)h(op)q(eration)g(that)f(is)h(enabled,)g(it)f(m)o(ust)g(ev)o(en)o(tually)h
(succeed.)158 2654 y(The)g(return)h(status)g(ob)r(ject)g(for)e(a)h(send)h(op)
q(eration)e(carries)i(no)f(information.)h(The)f(return)h(status)g(ob)r(ject)
75 2704 y(for)h(a)g(receiv)o(e)i(op)q(eration)f(carries)g(information)d(on)i
(the)i(source,)g(tag)e(and)g(length)h(of)f(the)h(receiv)o(ed)h(message.)p
eop
%%Page: 19 20
bop 75 -100 a Fg(1.8.)31 b(COMMUNICA)m(TION)14 b(OBJECTS)1073
b Fo(19)75 45 y(These)13 b(\014elds)g(are)f(required)h(b)q(ecause)h(the)e
(receiv)o(e)i(op)q(eration)e(ma)o(y)e(ha)o(v)o(e)h(sp)q(eci\014ed)j
Fi(DONTCARE)c Fo(in)i(either)h(source)75 95 y(or)h(tag)f(\014eld,)h(and)g
(the)g(message)g(ma)o(y)e(ha)o(v)o(e)h(b)q(een)i(shorter)g(than)f(the)h
(receiv)o(e)g(bu\013er.)158 180 y Fh(MPI)p 257 180 15 2 v 17
w(QUER)l(Y\()h(handle,)e(coun)o(t,)g(source,)h(tag\))75 295
y(IN)h(handle)j Fo(handle)14 b(to)g(return)h(status)f(ob)r(ject)75
376 y Fh(OUT)i(coun)o(t)j Fo(n)o(um)o(b)q(er)13 b(of)g(elemen)o(ts)h(receiv)o
(ed.)75 457 y Fh(OUT)i(source)j Fo(rank)14 b(of)g(message)f(sender)j(in)d
(message)h(con)o(text)g(\(in)o(teger\).)75 538 y Fh(OUT)i(tag)k
Fo(tag)14 b(of)f(receiv)o(ed)i(message)f(\(in)o(teger\).)158
652 y Fh(MPI)p 257 652 V 17 w(CREA)l(TE)p 471 652 V 19 w(ST)l(A)l(TUS\()h
(handle\))158 738 y Fo(Creates)g(a)f(new)g(return)h(status)g(ob)r(ject.)75
817 y Fh(OUT)h(handle)i Fo(handle)c(to)g(return)h(status)g(ob)r(ject.)158
974 y Fm(Discussion:)158 1020 y Fl(The)c(use)g(of)f(a)h(return)g(status)g(ob)
r(ject,)g(rather)g(than)g(a)g(list)h(of)e(parameters)i(ma)o(y)f(simplify)i
(the)e(use)g(of)f(MPI)h(routines,)75 1066 y(if)i(the)f(v)n(alues)i(stored)f
(in)g(the)f(ob)r(ject)h(are)f(seldom)i(c)o(hec)o(k)o(ed.)j(A)12
b(prede\014ned)i(return)f(status)g(ob)r(ject)f(should)j(b)q(e)d(pro)o(vided,)
75 1111 y(to)h(ease)g(programming.)19 b(The)12 b(main)i(reason)g(for)e(the)h
(use)g(of)g(a)f(return-status)i(ob)r(ject)f(is)g(that)g(one)h(w)o(an)o(ts)e
(to)h(b)q(e)g(able)h(to)75 1157 y(use)c(the)h(same)f Ff(MPI)p
357 1157 12 2 v 13 w(WAIT)e Fl(and)j Ff(MPI)p 590 1157 V 13
w(STATUS)c Fl(calls)12 b(for)e(c)o(hec)o(king)h(on)g(di\013eren)o(t)g(t)o(yp)
q(es)g(of)f(op)q(erations,)i(e.g.)k(b)q(oth)10 b(sends)h(and)75
1203 y(receiv)o(es,)k(and)f(p)q(erhaps)h(new)e(op)q(erations)j(in)e(the)g
(future.)19 b(These)14 b(di\013eren)o(t)h(op)q(erations)g(return)g
(di\013eren)o(t)g(information)75 1248 y(\(alb)q(eit)g(w)o(e)d(could)j(decree)
e(that)g(a)g(send)h(returns)g(the)f(same)g(information)i(as)e(a)g(receiv)o
(e\).)158 1294 y(The)h(issue)h(of)f(memory)g(allo)q(cation)j(for)d(return)p
868 1294 V 15 w(status)g(handles)i(is)f(not)f(y)o(et)g(solv)o(ed.)22
b(There)14 b(is)g(a)g(desire)h(that)g(the)75 1340 y(user)e(will)i(b)q(e)e
(able)h(to)f(allo)q(cate)i(space)f(for)e(them)i(\(e.g.,)e(on)h(the)g(stac)o
(k\).)158 1385 y(W)m(e)j(return)g(n)o(um)o(b)q(er)g(of)f(elemen)o(ts)i
(receiv)o(ed,)g(rather)e(than)i(b)o(ytes)e(receiv)o(ed)i(b)q(ecause)g(\\n)o
(um)o(b)q(er)f(of)f(elemen)o(ts")i(is)75 1431 y(closer)c(to)f(the)g
(application)j(seman)o(tic)f(lev)o(el)f(\(user)f(do)q(es)h(not)f(need)h(to)f
(b)q(e)g(a)o(w)o(are)g(of)g(the)g(size)h(of)f(elemen)o(ts\),)g(and)h(is)g
(more)75 1477 y(in)o(v)n(arian)o(t.)23 b(The)14 b(return)h(status)f(ob)r
(ject)h(returns)g(the)f(n)o(um)o(b)q(er)h(of)f Fm(elemen)o(ts)g
Fl(receiv)o(ed.)22 b(If)13 b(there)i(w)o(as)f(no)g(truncation,)75
1522 y(then)h(this)g(is)g(equal)g(to)f(the)h(n)o(um)o(b)q(er)g(of)f(elemen)o
(ts)h(sen)o(t.)21 b(On)14 b(the)g(other)h(hand,)g(the)f(n)o(um)o(b)q(er)h(of)
f(b)o(ytes)h(collected)h(from)75 1568 y(the)d(sender)i(memory)m(,)e(the)g(n)o
(um)o(b)q(er)h(of)f(b)o(ytes)h(sen)o(t)g(o)o(v)o(er)f(the)h(wire,)f(and)h
(the)f(n)o(um)o(b)q(er)i(of)e(b)o(ytes)g(stored)h(in)g(the)g(receiv)o(er)75
1614 y(memory)c(ma)o(y)g(all)i(b)q(e)e(di\013eren)o(t,)i(in)e(a)g
(heterogeneous)i(en)o(vironmen)o(t.)18 b(The)10 b(n)o(um)o(b)q(er)g(of)g
(elemen)o(ts)h(sen)o(t)f(can)h(b)q(e)f(computed)75 1659 y(form)k(the)g(send)h
(bu\013er)h(descriptor;)g(the)e(n)o(um)o(b)q(er)h(of)f(elemen)o(ts)i(receiv)o
(ed)f(can)g(b)q(e)g(computed)g(from)f(the)h(receiv)o(e)g(bu\013er)75
1705 y(descriptor)g(and)e(the)g(length)i(\(in)e(b)o(ytes\))h(of)f(the)g
(receiv)o(ed)h(message.)158 1751 y Ff(MPI)p 220 1751 V 13 w(STATUS)g
Fl(and)j Ff(MPI)p 505 1751 V 13 w(QUERY)d Fl(are)i(not)h(go)q(o)q(d)g(names)g
({)g(they)f(can)h(b)q(e)g(easily)h(confused.)28 b(Leslie)18
b(Hart)e(suggests)75 1796 y Ff(MPI)p 137 1796 V 13 w(TEST)d
Fl(or)i Ff(MPI)p 352 1796 V 13 w(CHECK)e Fl(for)h(the)h(\014rst.)23
b(P)o(erhaps)16 b(w)o(e)e(should)j(replace)f Ff(MPI)p 1229
1796 V 13 w(STATUS)c Fl(with)j Ff(MPI)p 1523 1796 V 13 w(TEST)e
Fl(and)j Ff(MPI)p 1766 1796 V 13 w(QUERY)75 1842 y Fl(with)d
Ff(MPI)p 224 1842 V 13 w(STATUS)p Fl(.)75 2040 y Fk(1.8.4)55
b(Multiple)20 b(Completions)75 2117 y Fo(It)c(is)g(con)o(v)o(enien)o(t)h(to)f
(b)q(e)h(able)e(to)h(w)o(ait)g(for)g(the)g(completion)f(of)g(an)o(y)h(or)g
(all)f(the)i(op)q(erations)f(in)g(a)g(set,)h(rather)75 2166
y(than)c(ha)o(ving)f(to)g(w)o(ait)g(for)h(a)g(sp)q(eci\014c)h(message.)j(A)c
(call)g(to)f Fi(MPI)p 1096 2166 14 2 v 15 w(WAITANY)g Fo(or)h
Fi(MPI)p 1393 2166 V 15 w(STATUSANY)e Fo(can)i(b)q(e)g(used)h(to)75
2216 y(w)o(ait)f(for)h(the)h(completion)d(of)h(one)i(out)f(of)f(sev)o(eral)i
(op)q(erations;)e(a)h(call)f(to)h Fi(MPI)p 1340 2216 V 15 w(WAITALL)f
Fo(can)h(b)q(e)h(used)g(to)f(w)o(ait)75 2266 y(for)g(all)e(p)q(ending)i(op)q
(erations)g(in)g(a)f(list.)158 2351 y Fh(MPI)p 257 2351 15
2 v 17 w(W)-5 b(AIT)l(ANY)17 b(\()f(list)p 628 2351 V 15 w(of)p
682 2351 V 16 w(handles,)e(coun)o(t,)h(index,)f(return)p 1306
2351 V 15 w(handle\))158 2436 y Fo(Blo)q(c)o(ks)g(un)o(til)f(one)h(of)f(the)h
(op)q(erations)g(asso)q(ciated)h(with)e(the)i(comm)o(uni)o(cation)c(handles)j
(in)f(the)h(arra)o(y)g(has)75 2486 y(completed.)19 b(Returns)c(the)g(index)g
(of)e(that)i(handle)f(in)g(the)h(arra)o(y)m(,)e(and)i(returns)h(the)f(status)
g(of)f(that)g(op)q(eration)75 2536 y(in)f(the)i(ob)r(ject)g(asso)q(ciated)f
(with)g(the)g(return)p 798 2536 13 2 v 16 w(handle.)k(The)d(parameters)f
(are:)75 2623 y Fh(IN)i(list)p 215 2623 15 2 v 15 w(of)p 269
2623 V 17 w(handles)j Fo(list)13 b(of)g(handles)h(to)g(comm)o(unication)d(ob)
r(jects.)75 2704 y Fh(IN)16 b(coun)o(t)j Fo(list)14 b(length)g(\(in)o
(teger\))p eop
%%Page: 20 21
bop 75 -100 a Fo(20)712 b Fg(CHAPTER)14 b(1.)31 b(POINT)15
b(TO)f(POINT)g(COMMUNICA)m(TION)75 45 y Fh(OUT)i(index)j Fo(index)14
b(of)f(handle)h(for)f(op)q(eration)h(that)g(completed)f(\(in)o(teger\).)75
129 y Fh(OUT)j(return)p 335 129 15 2 v 15 w(handle)i Fo(handle)d(that)g(is)g
(asso)q(ciated)h(with)e(return)i(status)g(ob)r(ject.)22 b(Set)16
b(to)f(return)h(status)g(of)179 179 y(op)q(eration)e(that)f(completed.)158
271 y(The)h(successful)i(execution)e(of)f Fi(MPI)p 733 271
14 2 v 16 w(WAITANY\(list)p 1013 271 V 13 w(of)p 1070 271 V
15 w(handles,)20 b(index,)h(return)p 1566 271 V 14 w(handle\))12
b Fo(has)i(the)75 321 y(same)i(e\013ect)i(as)f(the)h(successful)g(execution)g
(of)e Fi(MPI)p 922 321 V 15 w(WAIT\(handle[i],)j(return)p 1418
321 V 14 w(handle\))p Fo(,)d(where)i Fi(i)f Fo(is)f(the)75
371 y(v)n(alue)g(returned)i(b)o(y)e Fi(index)g Fo(and)g Fi(handle[i])f
Fo(is)h(the)h Fi(i)p Fo(-th)f(handle)h(in)f(the)h(list,)f(and)g(the)h
(cancellation)f(of)g(all)75 421 y(remaining)c(w)o(ait)h(op)q(erations.)158
471 y(If)i(more)e(then)j(one)f(op)q(eration)g(is)g(enabled)g(and)g(can)g
(terminate,)f(one)h(is)g(arbitrarily)f(c)o(hosen)i(\(sub)r(ject)g(to)75
521 y(the)e(restrictions)i(on)d(op)q(eration)h(termination)e(order,)i(and)g
(fairness,)g(see)h(Section)f(1.13\).)158 571 y Fi(MPI)p 227
571 V 15 w(WAITANY)20 b(\()i(list)p 548 571 V 15 w(of)p 607
571 V 15 w(handles,)e(count,)h(index,)f(return)p 1255 571 V
15 w(status)p 1402 571 V 14 w(handle\))13 b Fo(is)140 655 y
Fi({MPI_WAIT)20 b(\(handle[0],)g(return_handle\);)f(index)h(=)i(0})f(||)h
(...)75 705 y(||)140 755 y({MPI_WAIT)e(\(handle[count-1],)f(return_handle\);)
f(index)j(=)h(count-1})158 838 y Fo(\(\\)p Fe(jj)p Fo(")13
b(indicates)h(c)o(hoice;)g(one)g(of)f(the)i(alternativ)o(es)f(is)f(c)o
(hosen,)i(nondeterministically)m(.\))158 924 y Fh(MPI)p 257
924 15 2 v 17 w(ST)l(A)l(TUSANY)h(\()g(list)p 685 924 V 15
w(of)p 739 924 V 16 w(handles,)e(coun)o(t,)h(index,)f(return)p
1363 924 V 15 w(handle\))158 1009 y Fo(Causes)20 b(either)h(one)f(or)f(none)h
(of)f(the)h(op)q(erations)g(asso)q(ciated)g(with)f(the)h(comm)o(unication)c
(handles)k(to)75 1059 y(return.)f(In)13 b(the)h(former)d(case,)j(it)f(has)g
(the)h(same)e(return)i(seman)o(tics)e(as)i(a)e(call)g(to)h
Fi(MPI)p 1449 1059 14 2 v 15 w(WAIT)p 1552 1059 V 15 w(ANY)p
Fo(.)f(In)h(the)h(latter)75 1109 y(case,)g(it)g(returns)h(a)f(v)n(alue)f(of)g
({1)h(in)f Fi(index)g Fo(and)h Fi(return)p 991 1109 V 14 w(handle)f
Fo(is)h(unde\014ned.)19 b(The)14 b(parameters)g(are:)75 1201
y Fh(IN)i(list)p 215 1201 15 2 v 15 w(of)p 269 1201 V 17 w(handles)j
Fo(list)13 b(of)g(handles)h(to)g(comm)o(unication)d(ob)r(jects.)75
1286 y Fh(IN)16 b(coun)o(t)j Fo(list)14 b(length)g(\(in)o(teger\))75
1370 y Fh(OUT)i(index)j Fo(index)14 b(of)f(handle)h(for)f(op)q(eration)h
(that)g(completed,)f(or)h(-1)f(if)g(none)h(completed)g(\(in)o(teger\).)75
1454 y Fh(OUT)i(return)p 335 1454 V 15 w(handle)i Fo(handle)d(that)g(is)g
(asso)q(ciated)h(with)e(return)i(status)g(ob)r(ject.)22 b(Set)16
b(to)f(return)h(status)g(of)179 1504 y(op)q(eration)e(that)f(completed,)g(if)
g(an)o(y;)g(unde\014ned)i(when)g Fi(index)21 b(=)g(-1)p Fo(.)158
1631 y Fh(MPI)p 257 1631 V 17 w(W)-5 b(AIT)l(ALL\(list)p 580
1631 V 15 w(of)p 634 1631 V 17 w(handles,)13 b(coun)o(t,)i(list)p
1047 1631 V 15 w(of)p 1101 1631 V 17 w(return)p 1253 1631 V
15 w(handles\))158 1717 y Fo(Blo)q(c)o(ks)k(un)o(til)e(all)g(comm)o(unicati)o
(on)e(op)q(erations)k(asso)q(ciated)g(with)f(handles)g(in)g(the)g(list)g
(complete,)g(and)75 1767 y(return)d(the)g(status)f(of)g(all)e(these)j(op)q
(erations.)k(The)14 b(parameters)g(are:)75 1859 y Fh(IN)i(list)p
215 1859 V 15 w(of)p 269 1859 V 17 w(handles)j Fo(list)13 b(of)g(handles)h
(to)g(comm)o(unication)d(ob)r(jects.)75 1943 y Fh(IN)16 b(coun)o(t)j
Fo(lists)14 b(length)g(\(in)o(teger\))75 2027 y Fh(OUT)i(list)p
266 2027 V 15 w(of)p 320 2027 V 16 w(return)p 471 2027 V 15
w(handles)j Fo(Must)h(ha)o(v)o(e)g(the)g(same)f(length)h(as)f(the)i(\014rst)f
(list.)35 b(Eac)o(h)20 b(return)h(status)179 2077 y(ob)r(ject)14
b(is)g(set)h(to)f(the)g(return)h(status)g(of)e(the)i(corresp)q(onding)g(op)q
(eration)e(in)h(the)g(\014rst)h(list.)158 2248 y Fm(Discussion:)158
2294 y Fl(The)9 b(fairness)i(requiremen)o(t)f(giv)o(en)h(in)f(Section)g(1.13)
g(implies)h(that)f(the)f(use)h(of)f Ff(WAIT)p 1376 2294 12
2 v 12 w(ANY)f Fl(cannot)i(lead)g(to)g(starv)n(ation:)75 2340
y(If)15 b(the)i(sending)g(pro)q(cess)g(has)g(issued)g(a)f(send)h(complete)g
(op)q(eration,)i(and)d(the)g(receiving)j(pro)q(cess)d(rep)q(eatedly)i(p)q
(ost)f(a)75 2385 y(receiv)o(e)i(for)f(the)h(message)g(sen)o(t,)g(then)g(that)
f(message)h(m)o(ust)f(b)q(e)h(ev)o(en)o(tually)i(receiv)o(ed.)34
b(Section)19 b(1.13)g(has)f(not)h(y)o(et)75 2431 y(b)q(een)14
b(discussed.)19 b(The)12 b(fairness)i(requiremen)o(t)h(can)e(b)q(e)g(attac)o
(k)o(ed)h(either)g(for)e(b)q(eing)j(to)q(o)e(w)o(eak)g(\(ev)o(en)o(tually)i
(is)f(not)f(go)q(o)q(d)75 2477 y(enough\),)g(or)f(to)q(o)g(strong)g(\(hard)h
(to)f(implemen)o(t\).)18 b(In)12 b(the)g(later)g(case,)g(if)g(the)g
(requiremen)o(t)i(of)d(fairness)i(is)g(dropp)q(ed)g(from)75
2522 y(MPI)g(implemen)o(tation)q(s,)j(then)d(some)h(mec)o(hanism)h(need)e(b)q
(e)h(pro)o(vided)h(to)e(the)h(user)f(to)h(ac)o(hiev)o(e)g(fairness)h(b)o(y)e
(his)h(or)g(her)75 2568 y(o)o(wn)g(devices.)22 b(One)14 b(suc)o(h)h(prop)q
(osal)h(is)f(to)f(b)q(e)g(able)i(to)e(sp)q(ecify)h(a)f(rotating)h(priorit)o
(y)h(order)f(on)g(the)f(op)q(erations)i(p)q(osted)75 2614 y(b)o(y)d(a)g
Ff(MPI)p 222 2614 V 13 w(WAITANY)p Fl(:)d(searc)o(h)k(the)f(list)h(sequen)o
(tially)n(,)h(starting)f(from)f(a)g(user)g(sp)q(eci\014ed)i(p)q(osition.)p
eop
%%Page: 21 22
bop 75 -100 a Fg(1.9.)31 b(BLOCKING)14 b(COMMUNICA)m(TION)1038
b Fo(21)75 45 y Fn(1.9)70 b(Blo)r(c)n(king)21 b(Comm)n(unication)75
140 y Fo(Blo)q(c)o(king)14 b(send)i(and)f(receiv)o(e)h(op)q(erations)g(com)o
(bine)d(all)h(comm)o(unication)e(sub)q(op)q(erations)j(in)o(to)g(one)g(call.)
21 b(The)75 190 y(op)q(eration)16 b(returns)j(only)c(when)i(the)h(comm)o
(unicati)o(on)c(completes)i(and)g(no)h(comm)o(unicatio)o(n)d(ob)r(ject)j(p)q
(ersists)75 239 y(after)d(the)h(call)e(completed.)k(Ho)o(w)o(ev)o(er,)d(the)h
(bu\013er)f(descriptor)i(ob)r(ject)e(needs)i(b)q(e)e(created)h(ahead)f(of)g
(the)g(call.)158 291 y(W)m(e)g(use)g(the)h(follo)o(wing)c(naming)h(con)o(v)o
(en)o(tion)h(for)h(suc)o(h)g(op)q(erations:)793 352 y Fa(2)793
427 y(4)844 386 y Fe(\000)842 435 y Fh(R)846 485 y(S)898 352
y Fa(3)898 427 y(5)933 377 y(\024)979 411 y Fh(SEND)976 460
y(RECV)1135 377 y Fa(\025)158 583 y Fo(The)h(\014rst)g(letter)g(\(v)o(oid,)e
Fh(R)h Fo(or)g Fh(S)p Fo(\))g(indicates)g(the)h(start)g(mo)q(de)e
(\(standard,)h(ready)m(,)g(or)g(secure\).)21 b(Only)14 b(t)o(w)o(o)75
633 y(of)f(the)i(com)o(binations)d(\(standard)i(and)g(secure\))i(are)e
(meaningful)d(for)j(receiv)o(es.)158 720 y Fh(MPI)p 257 720
15 2 v 17 w(SEND)i(\(bu\013er)p 565 720 V 15 w(handle,)e(dest,)h(tag,)h(con)o
(text\))c Fo(is)75 846 y Fi(MPI_INIT_SEND\(han)o(dle,)18 b(buffer_handle,)h
(dest,)i(tag,)g(context,)f(MPI_STANDARD,)75 896 y(MPI_EPHEMERAL\))75
946 y(MPI_START\(handle\))75 996 y(MPI_WAIT\(handle,)e(null\))158
1120 y Fh(MPI)p 257 1120 V 17 w(RSEND)e(\(bu\013er)p 601 1120
V 15 w(handle,)e(dest,)h(tag,)h(con)o(text\))c Fo(is)75 1246
y Fi(MPI_INIT_SEND\(han)o(dle,)18 b(buffer_handle,)h(dest,)i(tag,)g(context,)
f(MPI_READY,)g(MPI_EPHEMERAL\))75 1296 y(MPI_START\(handle\))75
1346 y(MPI_WAIT\(handle,)e(null\))158 1470 y Fh(MPI)p 257 1470
V 17 w(SSEND)e(\(bu\013er)p 592 1470 V 15 w(handle,)e(dest,)h(tag,)h(con)o
(text\))11 b Fo(is)75 1597 y Fi(MPI_INIT_SEND\(han)o(dle,)18
b(buffer_handle,)h(dest,)i(tag,)g(context,)f(MPI_SECURE,)g(MPI_EPHEMERAL\))75
1647 y(MPI_START\(handle\))75 1696 y(MPI_WAIT\(handle,)e(null\))158
1821 y Fh(MPI)p 257 1821 V 17 w(RECV\(bu\013er)p 554 1821 V
16 w(handle,)c(source,)h(tag,)h(con)o(text,)f(return)p 1312
1821 V 15 w(handle\))c Fo(is)75 1947 y Fi(MPI_INIT_RECV\(han)o(dle,)18
b(buffer_handle,)h(source,)i(tag,)g(context,)f(MPI_STANDARD,)f
(MPI_EPHEMERAL\))75 1997 y(MPI_START\(handle\))75 2047 y(MPI_WAIT\(handle,r)o
(eturn)o(_hand)o(le\))158 2171 y Fh(MPI)p 257 2171 V 17 w(SRECV\(bu\013er)p
581 2171 V 16 w(handle,)14 b(source,)h(tag,)h(con)o(text,)e(return)p
1338 2171 V 15 w(handle\))e Fo(is)75 2298 y Fi(MPI_INIT_RECV\(han)o(dle,)18
b(buffer_handle,)h(source,)i(tag,)g(context,)f(MPI_SECURE,)f(MPI_EPHEMERAL\))
75 2347 y(MPI_START\(handle\))75 2397 y(MPI_WAIT\(handle,r)o(eturn)o(_hand)o
(le\))158 2565 y Fm(Implemen)o(tation)13 b(note:)158 2612 y
Fl(While)20 b(these)f(functions)g(can)g(b)q(e)f(implemen)o(ted)i(via)f(calls)
h(to)e(functions)i(that)e(implemen)o(t)i(sub)q(op)q(erations,)i(as)75
2658 y(describ)q(ed)16 b(in)g(this)f(subsection,)h(an)f(e\016cien)o(t)g
(implemen)o(tation)j(ma)o(y)d(optimize)h(a)o(w)o(a)o(y)e(these)h(m)o(ultiple)
i(calls,)f(pro)o(vided)75 2704 y(it)d(do)q(es)h(not)f(c)o(hange)h(the)f(b)q
(eha)o(vior)i(of)e(correct)g(programs.)p eop
%%Page: 22 23
bop 75 -100 a Fo(22)716 b Fg(CHAPTER)14 b(1.)27 b(POINT)15
b(TO)f(POINT)g(COMMUNICA)m(TION)158 45 y Fm(Discussion:)158
91 y Fl(W)m(e)h(use)g(a)g(di\013eren)o(t)h(function)h(name,)e(rather)g(than)g
(an)h(additional)i(mo)q(de)d(parameter,)h(in)f(order)g(to)g(sa)o(v)o(e)g(on)g
(an)75 136 y(additional)g(parameter)d(\(p)q(erformance)g(and)g(user)g(con)o
(v)o(enience\).)18 b(Lyndon)13 b(and)f(p)q(erhaps)g(other)g(prefer)g(few)o
(er)e(functions)75 182 y(and)k(an)f(additional)j(parameter.)75
401 y Fn(1.10)70 b(Non)n(blo)r(c)n(king)22 b(Comm)n(unication)75
492 y Fo(Non)o(blo)q(c)o(king)11 b(send)i(and)f(receiv)o(e)h(op)q(erations)f
(com)o(bine)f(the)i(\014rst)g(t)o(w)o(o)e(sub)q(op)q(erations)i(\()p
Fi(INIT)f Fo(and)g Fi(START)p Fo(\))f(in)o(to)75 542 y(one)16
b(call.)21 b(They)16 b(use)g(ephemeral)f(comm)o(uni)o(cation)d(ob)r(jects,)17
b(so)e(that)g(the)h(op)q(eration)f(is)h(completed,)e(and)h(the)75
592 y(asso)q(ciated)d(resources)i(are)e(freed,)h(b)o(y)e(using)h(one)f(of)g
(the)i(functions)e Fi(MPI)p 1221 592 14 2 v 15 w(WAIT,)21 b(MPI)p
1433 592 V 15 w(STATUS,)g(MPI)p 1689 592 V 15 w(WAITANY,)75
641 y(MPI)p 144 641 V 15 w(STATUSANY)p Fo(,)12 b(or)i Fi(MPI)p
498 641 V 15 w(WAITALL)p Fo(.)e(Here,)j(to)q(o,)f(a)g(bu\013er)h(ob)r(ject)g
(has)g(to)f(b)q(e)g(created)i(ahead)e(of)g(the)h(comm)o(u-)75
691 y(nication)e(initiation)f(op)q(eration.)158 741 y(W)m(e)h(use)h(the)h
(same)d(naming)f(con)o(v)o(en)o(tion)j(as)f(for)g(blo)q(c)o(king)g(op)q
(erations:)18 b(a)13 b(pre\014x)h(of)f Fh(R)g Fo(\()p Fh(S)p
Fo(\))h(indicates)f(the)75 791 y Fi(READY)e Fo(\()p Fh(SECURE)p
Fo(\))i(mo)q(de.)k(In)12 b(addition,)f(a)h(pre\014x)h(of)f
Fh(I)g Fo(is)g(used)h(to)g(indicate)f Fj(imme)n(diate)g Fo(\(i.e.,)f(non)o
(blo)q(c)o(king\))75 841 y(execution.)158 926 y Fh(MPI)p 257
926 15 2 v 17 w(ISEND)16 b(\(handle,)e(bu\013er)p 750 926 V
15 w(handle,)g(dest,)h(tag,)h(con)o(text\))c Fo(is)75 1039
y Fi(MPI_INIT_SEND\(han)o(dle,)18 b(buffer_handle,)h(dest,)i(tag,)g(context,)
f(MPI_STANDARD,)f(MPI_EPHEMERAL\))75 1089 y(MPI_START\(handle\))158
1203 y Fh(MPI)p 257 1203 V 17 w(IRSEND)d(\(handle,)e(bu\013er)p
786 1203 V 15 w(handle,)g(dest,)h(tag,)h(con)o(text\))c Fo(is)75
1316 y Fi(MPI_INIT_SEND\(han)o(dle,)18 b(buffer_handle,)h(dest,)i(tag,)g
(context,)f(MPI_READY,)g(MPI_EPHEMERAL\))75 1366 y(MPI_START\(handle\))158
1479 y Fh(MPI)p 257 1479 V 17 w(ISSEND)c(\(handle,)d(bu\013er)p
776 1479 V 16 w(handle,)h(dest,)h(tag,)h(con)o(text\))c Fo(is)75
1593 y Fi(MPI_INIT_SEND\(han)o(dle,)18 b(buffer_handle,)h(dest,)i(tag,)g
(context,)f(MPI_SECURE,)g(MPI_EPHEMERAL\))75 1643 y(MPI_START\(handle\))158
1756 y Fh(MPI)p 257 1756 V 17 w(IRECV\(handle,)15 b(bu\013er)p
740 1756 V 15 w(handle,)f(source,)i(tag,)f(con)o(text,)g(return)p
1497 1756 V 15 w(status)p 1638 1756 V 16 w(handle\))c Fo(is)75
1869 y Fi(MPI_INIT_RECV\(han)o(dle,)18 b(buffer_handle,)h(source,)i(tag,)g
(context,)f(MPI_STANDARD,)f(MPI_EPHEMERAL\))75 1919 y(MPI_START\(handle\))158
2033 y Fh(MPI)p 257 2033 V 17 w(ISRECV\(handle,)14 b(bu\013er)p
766 2033 V 16 w(handle,)g(source,)h(tag,)h(con)o(text,)e(return)p
1523 2033 V 15 w(status)p 1664 2033 V 16 w(handle\))d Fo(is)75
2146 y Fi(MPI_INIT_RECV\(han)o(dle,)18 b(buffer_handle,)h(source,)i(tag,)g
(context,)f(MPI_SECURE,)f(MPI_EPHEMERAL\))75 2196 y(MPI_START\(handle\))75
2332 y Fn(1.11)70 b(Con)n(tiguous)23 b(Blo)r(c)n(k)f(Comm)n(unication)f(Op)r
(erations)75 2423 y Fo(The)c(most)f(frequen)o(t)i(t)o(yp)q(e)g(of)e(bu\013er)
i(used)g(is)f(a)g(bu\013er)h(with)f(one)g(con)o(tiguous)g(comp)q(onen)o(t.)27
b(W)m(e)16 b(sp)q(ecialize)75 2473 y(the)e(functions)f(in)f(the)i(t)o(w)o(o)e
(previous)i(subsections)g(to)f(this)g(case,)h(th)o(us)f(a)o(v)o(oiding)e(the)
j(need)g(for)f(the)g(creation)h(of)75 2523 y(a)h(bu\013er)i(descriptor)f(ob)r
(ject.)24 b(W)m(e)15 b(use)h(the)g(same)e(naming)g(sc)o(heme)h(used)h(in)f
(the)h(previous)g(subsections,)h(and)75 2573 y(app)q(end)d(a)g
Fh(C)g Fo(in)g(the)g(function)g(name,)e(for)i Fi(CONTIGUOUS)p
Fo(.)158 2658 y Fh(MPI)p 257 2658 V 17 w(SENDC)j(\(start,)d(coun)o(t,)h
(datat)o(yp)q(e,)f(dest,)h(tag,)h(con)o(text\))c Fo(is)p eop
%%Page: 23 24
bop 75 -100 a Fg(1.11.)26 b(CONTIGUOUS)14 b(BLOCK)h(COMMUNICA)m(TION)g(OPERA)
m(TIONS)505 b Fo(23)75 45 y Fi(MPI_CREATE_BUFFER)o(\()19 b(buffer_handle,)g
(MPI_EPHEMERAL\))75 95 y(MPI_APPEND\()h(buffer_handle,)e(start,)j(count,)g
(datatype\))75 145 y(MPI_SEND)f(\(buffer_handle,)f(count,)h(dest,)h(tag,)g
(context\))158 257 y Fh(MPI)p 257 257 15 2 v 17 w(RSENDC)16
b(\(handle,)e(start,)h(coun)o(t,)f(datat)o(yp)q(e,)h(dest,)g(tag,)h(con)o
(text\))c Fo(is)75 368 y Fi(MPI_CREATE_BUFFER)o(\()19 b(buffer_handle,)g
(MPI_EPHEMERAL\))75 418 y(MPI_APPEND\()h(buffer_handle,)e(start,)j(count,)g
(datatype\))75 468 y(MPI_RSEND\()f(buffer_handle,)f(count,)h(dest,)h(tag,)g
(context\))158 580 y Fh(MPI)p 257 580 V 17 w(SSENDC)16 b(\(handle,)e(start,)h
(coun)o(t,)f(datat)o(yp)q(e,)h(dest,)g(tag,)h(con)o(text\))c
Fo(is)75 691 y Fi(MPI_CREATE_BUFFER)o(\()19 b(buffer_handle,)g
(MPI_EPHEMERAL\))75 741 y(MPI_APPEND\()h(buffer_handle,)e(start,)j(count,)g
(datatype\))75 791 y(MPI_SSEND\()f(buffer_handle,)f(count,)h(dest,)h(tag,)g
(context\))158 903 y Fh(MPI)p 257 903 V 17 w(RECV)o(C)f(\(start,)e(coun)o(t,)
h(datat)o(yp)q(e,)f(source,)h(tag,)g(con)o(text,)g(return)p
1565 903 V 15 w(status)p 1706 903 V 16 w(handle\))75 953 y
Fo(is)75 1064 y Fi(MPI_CREATE_BUFFER)o(\()g(buffer_handle,)g(MPI_EPHEMERAL\))
75 1114 y(MPI_APPEND\()h(buffer_handle,)e(start,)j(count,)g(datatype\))75
1164 y(MPI_RECV\()f(buffer_handle,)f(source,)h(tag,)h(context,)f
(return_status_handl)o(e\))158 1276 y Fh(MPI)p 257 1276 V 17
w(SRECV)o(C)c(\(start,)f(coun)o(t,)f(datat)o(yp)q(e,)h(source,)g(tag,)g(con)o
(text,)g(return)p 1565 1276 V 15 w(status)p 1706 1276 V 16
w(handle\))75 1326 y Fo(is)75 1437 y Fi(MPI_CREATE_BUFFER)o(\()k
(buffer_handle,)g(MPI_EPHEMERAL\))75 1487 y(MPI_APPEND\()h(buffer_handle,)e
(start,)j(count,)g(datatype\))75 1537 y(MPI_SRECV\()f(buffer_handle,)f
(source,)h(tag,)h(context,)f(return_status_hand)o(le\))158
1649 y Fh(MPI)p 257 1649 V 17 w(ISENDC)d(\(handle,)c(start,)i(coun)o(t,)g
(datat)o(yp)q(e,)g(dest,)g(tag,)g(con)o(text\))d Fo(is)75 1761
y Fi(MPI_CREATE_BUFFER)o(\()19 b(buffer_handle,)g(MPI_EPHEMERAL\))75
1810 y(MPI_APPEND\()h(buffer_handle,)e(start,)j(count,)g(datatype\))75
1860 y(MPI_ISEND\()f(handle,)g(buffer_handle,)f(dest,)i(tag,)g(context\))158
1972 y Fh(MPI)p 257 1972 V 17 w(IRSENDC)16 b(\(handle,)e(start,)h(coun)o(t,)g
(datat)o(yp)q(e,)f(dest,)h(tag,)h(con)o(text\))c Fo(is)75 2084
y Fi(MPI_CREATE_BUFFER)o(\()19 b(buffer_handle,)g(MPI_EPHEMERAL\))75
2134 y(MPI_APPEND\()h(buffer_handle,)e(start,)j(count,)g(datatype\))75
2183 y(MPI_IRSEND\()f(handle,)g(buffer_handle,)f(dest,)i(tag,)f(context\))158
2295 y Fh(MPI)p 257 2295 V 17 w(ISSENDC)c(\(handle,)e(start,)h(coun)o(t,)f
(datat)o(yp)q(e,)h(dest,)g(tag,)h(con)o(text\))c Fo(is)75 2407
y Fi(MPI_CREATE_BUFFER)o(\()19 b(buffer_handle,)g(MPI_EPHEMERAL\))75
2457 y(MPI_APPEND\()h(buffer_handle,)e(start,)j(count,)g(datatype\))75
2507 y(MPI_ISSEND\()f(handle,)g(buffer_handle,)f(dest,)i(tag,)f(context\))158
2618 y Fh(MPI)p 257 2618 V 17 w(IRECV)o(C\(handle,)11 b(start,)f(coun)o(t,)h
(datat)o(yp)q(e,)f(source,)h(tag,)h(con)o(text,)e(return)p
1679 2618 V 15 w(status)p 1820 2618 V 16 w(handle\))75 2668
y Fo(is)p eop
%%Page: 24 25
bop 75 -100 a Fo(24)712 b Fg(CHAPTER)14 b(1.)31 b(POINT)15
b(TO)f(POINT)g(COMMUNICA)m(TION)75 45 y Fi(MPI_CREATE_BUFFER)k
(\(buffer_handle,)h(MPI_EPHEMERAL\))75 95 y(MPI_APPEND\()h(buffer_handle,)e
(start,)j(count,)g(datatype\))75 145 y(MPI_IRECV\()f(handle,)g
(buffer_handle,)f(source,)h(tag,)h(context\))158 266 y Fh(MPI)p
257 266 15 2 v 17 w(ISRECV)o(C\(handle,)10 b(start,)h(coun)o(t,)f(datat)o(yp)
q(e,)h(source,)g(tag,)g(con)o(text,)g(return)p 1706 266 V 15
w(status)p 1847 266 V 15 w(handle\))75 316 y Fo(is)75 439 y
Fi(MPI_CREATE_BUFFER)o(\()19 b(buffer_handle,)g(MPI_EPHEMERAL\))75
489 y(MPI_APPEND\()h(buffer_handle,)e(start,)j(count,)g(datatype\))75
539 y(MPI_ISRECV\()f(handle,)g(buffer_handle,)f(source,)h(tag,)h(context\))75
682 y Fn(1.12)70 b(Prob)r(e)23 b(and)h(Cancel)75 775 y Fo(The)18
b Fi(MPI)p 233 775 14 2 v 15 w(PROBE)e Fo(op)q(eration)h(allo)o(ws)f
(incoming)f(messages)i(to)g(b)q(e)h(c)o(hec)o(k)o(ed)g(for,)g(without)e
(actually)h(receiving)75 825 y(them.)22 b(The)16 b(user)g(can)g(then)g
(decide)h(where)f(to)g(receiv)o(e)g(them,)f(based)h(on)f(the)h(information)d
(returned)k(b)o(y)e(the)75 874 y(prob)q(e)i(\(basically)m(,)f(the)h
(information)d(on)i(the)i(message)e(en)o(v)o(elop)q(e\).)27
b(An)17 b(additional)e(function,)h Fi(MPI)p 1716 874 V 16 w(GET)p
1798 874 V 15 w(LEN)75 924 y Fo(allo)o(ws)11 b(the)j(amoun)o(t)c(of)i
(storage)h(needed)i(to)d(receiv)o(e)i(the)f(message)g(to)f(b)q(e)h(computed,)
f(when)h(this)g(length)g(is)f(not)75 974 y(readily)h(computed)h(from)e(the)i
(information)d(returned)16 b(b)o(y)e Fi(MPI)p 1094 974 V 15
w(PROBE)p Fo(.)158 1025 y(The)f Fi(MPI)p 311 1025 V 15 w(CANCEL)e
Fo(op)q(eration)h(allo)o(ws)f(p)q(ending)i(comm)o(unicatio)o(ns)d(to)i(b)q(e)
h(cancelled.)19 b(This)12 b(is)g(required)h(for)75 1075 y(clean)o(up.)20
b(P)o(osting)14 b(a)h(send)g(or)g(a)f(receiv)o(e)i(ties)f(user)g(resources)i
(\(send)f(or)e(receiv)o(e)i(bu\013ers\),)g(and)e(a)h(cancel)g(ma)o(y)75
1125 y(b)q(e)g(needed)g(to)f(free)g(these)i(resources)g(gracefully)m(.)158
1211 y Fh(MPI)p 257 1211 15 2 v 17 w(PR)o(OBE\()f(source,)g(tag,)h(con)o
(text,)f(\015ag,)g(datat)o(yp)q(e,)g(return)p 1367 1211 V 15
w(status\))75 1342 y(IN)h(source)k Fo(rank)14 b(in)f(con)o(text)i(of)e
(source,)i(or)f Fi(MPI)p 897 1342 14 2 v 15 w(ANY)p 978 1342
V 15 w(SOURCE)f Fo(\(in)o(teger\).)75 1429 y Fh(IN)j(tag)21
b Fo(user)15 b(tag)e(for)h(messages)g(receiv)o(ed)h(with)f(this)f(handle,)h
(or)g Fi(MPI)p 1232 1429 V 15 w(ANY)p 1313 1429 V 15 w(TAG)f
Fo(\(in)o(teger\).)75 1517 y Fh(IN)j(con)o(text)k Fo(con)o(text)14
b(of)f(messages)h(receiv)o(ed)i(with)d(this)h(handle.)75 1604
y Fh(OUT)i(\015ag)k Fo(\(logical\))75 1692 y Fh(IN)c(t)o(yp)q(e)k
Fo(assumed)14 b(t)o(yp)q(e)g(of)f(data)h(in)f(message)h(\(status)h(v)n
(ariable\).)75 1779 y Fh(OUT)h(return)p 335 1779 15 2 v 15
w(handle)i Fo(handle)c(that)g(is)g(asso)q(ciated)g(with)g(return)h(status)g
(ob)r(ject.)158 1875 y Fi(MPI)p 227 1875 14 2 v 15 w(PROBE)h
Fo(returns)i Fi(flag)j(=)g(true)16 b Fo(if)f(there)j(is)f(a)f(message)g(that)
h(can)f(b)q(e)i(receiv)o(ed)f(and)g(that)f(matc)o(hes)75 1924
y(the)21 b(pattern)h(sp)q(eci\014ed)g(b)o(y)e(the)h(parameters)g
Fi(source)p Fo(,)g Fi(tag)p Fo(,)g(and)f Fi(context)p Fo(.)37
b(It)21 b(returns)h Fi(flag)f(=)h(false)p Fo(,)75 1974 y(otherwise.)38
b(If)19 b Fi(MPI)p 411 1974 V 16 w(PROBE)g Fo(returns)i Fi(flag)g(=)h(true)p
Fo(,)e(then)h(the)g(length,)g(source)g(and)f(tag)g(of)g(the)g(message)75
2024 y(matc)o(hed)13 b(are)i(returned)h(in)d(the)i(return)g(status)g(ob)r
(ject.)20 b(These)15 b(are)g(the)f(same)g(v)n(alues)f(that)i(w)o(ould)e(ha)o
(v)o(e)h(b)q(een)75 2074 y(returned)k(b)o(y)d(a)h(call)f(to)h
Fi(MPI)p 542 2074 V 15 w(RECV)f Fo(or)h(to)g Fi(MPI)p 832 2074
V 15 w(SRECV)f Fo(executed)j(at)e(the)g(same)f(p)q(oin)o(t)h(in)f(the)i
(program)d(\(with)75 2124 y(a)g(ca)o(v)o(eat)g(concerning)h(length;)f(see)i
(b)q(elo)o(w\).)j(These)c(v)n(alues)f(can)h(b)q(e)g(deco)q(ded)g(from)e(the)i
(return)g(status)g(ob)r(ject)75 2173 y(using)f(the)g Fi(MPI)p
324 2173 V 15 w(RETURN)p 471 2173 V 15 w(STAT)f Fo(function.)18
b(The)c(v)n(alue)f(returned)j(in)e(the)g(return)h(status)g(ob)r(ject)g(is)f
(unde\014ned)h(if)75 2223 y Fi(flag=false)p Fo(.)158 2274 y(The)j(length)g(v)
n(alue)f(returned)i(b)o(y)e(the)i(return)f(status)h(ob)r(ject)f(is)g
(\(correctly\))h(the)f(n)o(um)o(b)q(er)f(of)g(elemen)o(ts)75
2324 y(in)h(the)h(message,)f(pro)o(vided)h(that)f(all)f(elemen)o(ts)h(in)g
(the)h(message)f(are)h(of)e(the)i(t)o(yp)q(e)g(sp)q(eci\014ed)h(b)o(y)e(the)h
Fi(type)75 2374 y Fo(parameter;)13 b(otherwise)i(the)f(length)g(v)n(alue)f
(returned)j(is)e(unde\014ned.)158 2425 y(A)g(subsequen)o(t)j(receiv)o(e)e
(executed)h(with)e(the)h(same)f(con)o(text,)g(and)h(the)g(source)g(and)f(tag)
g(returned)i(b)o(y)e(the)75 2475 y(call)h(to)g Fi(MPI)p 274
2475 V 15 w(PROBE)f Fo(will)g(receiv)o(e)i(the)g(message)f(that)h(w)o(as)f
(matc)o(hed)g(b)o(y)g(the)h(prob)q(e,)g(if)e(no)h(other)h(in)o(terv)o(ening)
75 2524 y(receiv)o(e)c(o)q(ccurred)g(after)f(the)g(prob)q(e.)18
b(If)10 b(the)h(receiving)g(pro)q(cess)i(is)d(m)o(ultithreaded,)g(it)g(is)h
(the)g(user)g(resp)q(onsibilit)o(y)75 2574 y(to)j(ensure)h(that)f(the)h(last)
e(condition)g(holds.)158 2704 y Fm(Discussion:)p eop
%%Page: 25 26
bop 75 -100 a Fg(1.12.)31 b(PR)o(OBE)14 b(AND)g(CANCEL)1195
b Fo(25)158 45 y Fl(Do)12 b(w)o(e)f(w)o(an)o(t)g Ff(MPI)p 427
45 12 2 v 13 w(PROBE)e Fl(to)i(return)h(mo)q(de)g(\(standard)h(or)e
(secure\)?)18 b(If)10 b(y)o(es,)i(w)o(e)f(need)h(to)f(carry)h(mo)q(de)g
(information)75 91 y(with)j(messages)g(\(it's)f(deja)h(vu)g(all)g(o)o(v)o(er)
g(again\).)22 b(If)14 b(not,)g(then)h(it)g(is)g(up)g(to)f(the)g(user)h(to)f
(enco)q(de)h(this)h(information)g(\(in)75 136 y(the)d(tag\))g(so)g(that)h
(receiv)o(er)g(can)f(decide)h(whether)g(to)f(use)g(a)g(secure)g(or)g
(standard)i(send.)158 182 y(MPI)10 b(guaran)o(tees)h(that)e(successiv)o(e)j
(messages)e(sen)o(t)g(from)f(a)h(source)g(to)g(a)g(destination)i(within)f
(the)f(same)g(con)o(text)g(are)75 228 y(receiv)o(ed)i(in)f(the)g(order)g
(they)g(are)f(sen)o(t.)17 b(Th)o(us,)11 b(MPI)f(m)o(ust)h(supp)q(ort,)h
(either)f(explicitly)j(or)c(implicitl)q(y)m(,)k(a)c(FIF)o(O)g(structure)75
273 y(to)i(manage)h(messages)h(b)q(et)o(w)o(een)e(eac)o(h)h(pair)g(of)f
(messages,)h(for)f(eac)o(h)h(con)o(text.)k Ff(MPI)p 1308 273
V 13 w(PROBE)11 b Fl(returns)i(information)h(on)f(the)75 319
y(\014rst)i(matc)o(hing)g(message)g(in)h(this)f(FIF)o(O;)e(this)j(will)g
(also)f(b)q(e)g(the)f(message)h(receiv)o(ed)h(b)o(y)f(the)f(\014rst)h
(subsequen)o(t)h(receiv)o(e)75 365 y(with)d(the)h(same)f(source,)g(tag)g(and)
h(con)o(text)f(as)h(the)f(message)g(matc)o(hed)h(b)o(y)f Ff(MPI)p
1261 365 V 13 w(PROBE)p Fl(.)158 410 y(Message)19 b(passing)g(in)g(MPI)e(can)
i(b)q(e)f(implemen)o(ted)i(without)e(app)q(ending)j(t)o(yp)q(e)d(information)
i(to)d(messages.)32 b(A)75 456 y(message)14 b(is)g(merely)h(a)f(string)g(of)g
(b)o(ytes)g(and)g(the)g(in)o(terpretation)i(of)d(these)h(b)o(ytes)g(in)o(to)h
(a)e(sequence)i(of)e(t)o(yp)q(ed)i(elemen)o(ts)75 502 y(is)f(done)f(using)i
(the)e(information)i(in)e(the)g(bu\013er)h(descriptors)h(at)e(eac)o(h)g(end.)
18 b(The)13 b(abilit)o(y)i(to)e(use)g(suc)o(h)h(implemen)o(tation)75
547 y(strategy)k(is)f(deemed)h(to)f(b)q(e)g(an)g(imp)q(ortan)o(t)i(goal.)30
b(In)17 b(suc)o(h)g(implemen)o(tation)q(,)j(when)d(a)g(message)h(arriv)o(es,)
h(it)e(is)h(not)75 593 y(b)q(e)g(kno)o(wn)g(ho)o(w)f(man)o(y)h(elemen)o(ts)h
(it)f(con)o(tains,)i(or)d(ev)o(en)h(ho)o(w)g(m)o(uc)o(h)g(storage)g(is)g
(needed)h(to)e(receiv)o(e)h(that)g(message)75 639 y(\(b)q(ecause)13
b(of)f(p)q(ossible)j(represen)o(tation)f(con)o(v)o(ersion)g(in)f(a)g
(heterogeneous)h(en)o(vironmen)o(t\).)k(The)12 b(prob)q(e)h(function)h
(cannot)75 684 y(use)h(a)g(bu\013er)g(descriptor;)i(this)f(defeats)f(the)g
(purp)q(ose)h(of)e(probing)j(in)e(order)g(to)g(decide)h(where)f(to)f(receiv)o
(e)i(a)e(message.)75 730 y(Therefore,)d(prob)q(e)h(cannot,)g(in)f(general,)i
(return)e(correct)g(length)h(information.)19 b(Still,)13 b(it)e(is)g(often)g
(the)g(case)g(that)g(prob)q(e)h(is)75 776 y(used)g(to)f(decide)i(ho)o(w)e(m)o
(uc)o(h)g(storage)h(to)f(allo)q(cate)i(in)f(order)g(to)f(receiv)o(e)h(a)f
(message.)17 b(Enco)q(ding)d(suc)o(h)d(information)j(in)e(the)75
821 y(message)i(tag)f(is)g(deemed)h(to)f(b)q(e)g(to)q(o)g(a)o(wkw)o(ard,)g
(and)g(it)g(is)h(deemed)g(imp)q(ortan)o(t)g(for)f Ff(MPI)p
1396 821 V 13 w(PROBE)d Fl(to)j(return)h(some)f(useful)75 867
y(size)k(information.)28 b(The)16 b(curren)o(t)h(de\014nition)i(of)c
Ff(MPI)p 884 867 V 13 w(PROBE)f Fl(is)j(a)f(compromise)i(b)q(et)o(w)o(een)e
(these)h(t)o(w)o(o)e(goals.)28 b(F)m(or)16 b(the)75 913 y(most)f(common)g
(case)g(of)f(messages)h(where)g(all)h(en)o(tries)f(ha)o(v)o(e)g(the)g(same)g
(t)o(yp)q(e)g Ff(MPI)p 1316 913 V 12 w(PROBE)e Fl(returns)i(the)g(correct)f
(length)75 958 y(information;)20 b(the)d(more)g(esoteric)g(case)g(is)g
(handled)i(b)o(y)e(the)g Ff(MPI)p 1076 958 V 13 w(GET)p 1149
958 V 12 w(LEN)f Fl(that)h(is)g(describ)q(ed)h(b)q(elo)o(w.)29
b(The)16 b(curren)o(t)75 1004 y(solution)g(sa)o(v)o(es)e(us)g(the)f(need)h
(for)g(one)g(additional)i(w)o(ord)e(p)q(er)g(message)g(that)g(w)o(ould)g
(otherwise)h(b)q(e)f(needed)g(to)g(transfer)75 1050 y(the)f(message)h(length)
g(\(in)g(elemen)o(ts\))g(with)f(the)g(message.)158 1095 y(There)g(w)o(as)g(a)
g(request)h(for)e(a)h(blo)q(c)o(king)j(prob)q(e)e(function.)158
1263 y Fh(MPI)p 257 1263 15 2 v 17 w(GET)p 376 1263 V 18 w(LEN\()h(coun)o(t,)
g(return)p 805 1263 V 15 w(status,)g(bu\013er)p 1098 1263 V
15 w(descriptor\))158 1349 y Fo(Computes)g(the)i(n)o(um)o(b)q(er)e(of)h
(elemen)o(ts)g(that)g(w)o(ere)h(to)f(b)q(e)g(receiv)o(ed,)i(if)d(the)i
(message)e(that)h(is)g(asso)q(ciated)75 1398 y(with)e(the)i(return)f(status)h
(handle)f(w)o(ould)e(b)q(e)j(receiv)o(ed)g(in)e(the)h(bu\013er)h(asso)q
(ciated)f(with)g(the)g(bu\013er)h(descriptor)75 1448 y(handle.)75
1529 y Fh(OUT)g(coun)o(t)j Fo(n)o(um)o(b)q(er)13 b(of)g(elemen)o(ts)h(that)g
(w)o(ere)h(to)f(b)q(e)g(receiv)o(ed)h(\(in)o(teger\))75 1612
y Fh(IN)h(return)p 284 1612 V 15 w(status)k Fo(handle)13 b(to)h(return)h
(status)g(descriptor)75 1694 y Fh(IN)h(bu\013er)p 273 1694
V 16 w(descriptor)i Fo(handle)13 b(to)h(bu\013er)h(descriptor)158
1854 y Fm(Discussion:)158 1899 y Fl(In)d(order)h(to)g(supp)q(ort)g(this)h
(function,)f(an)g(additional)j(\014eld)d(is)g(needed)h(in)f(the)g(return)g
(status)f(ob)r(ject,)h(i.e.,)f(n)o(um)o(b)q(er)75 1945 y(of)17
b(b)o(ytes)g(in)h(the)f(incoming)j(message)d(matc)o(hed)h(b)o(y)f(prob)q(e,)i
(or)e(v)n(alue)h(of)f(datat)o(yp)q(e)h(parameter)g(pro)o(vided)h(b)o(y)e
(prob)q(e)75 1991 y(\(unless)d(w)o(e)f(add)h(this)g(parameter)f(to)g(the)g
Ff(MPI)p 768 1991 12 2 v 13 w(GET)p 841 1991 V 13 w(LEN)f Fl(function,)i
(whic)o(h)g(is)f(to)q(o)h(ugly)g(to)f(b)q(ear\).)158 2159 y
Fh(MPI)p 257 2159 15 2 v 17 w(CANCEL\()k(handle,)d(\015ag\))75
2283 y(IN)i(handle)j Fo(handle)14 b(to)g(comm)o(uni)o(cation)d(ob)r(ject)75
2365 y Fh(OUT)16 b(\015ag)k Fo(\(logical\))158 2455 y(A)c(call)f(to)h
Fi(MPI)p 405 2455 14 2 v 16 w(CANCEL)e Fo(cancels)j(a)f(p)q(ending)g(comm)o
(unication)d(op)q(eration)j(\(send)h(or)f(receiv)o(e\).)26
b(The)17 b(call)75 2504 y(returns)12 b Fi(flag)21 b(=)g(true)9
b Fo(if)h(the)g(cancel)h(op)q(eration)f(succeeded,)j Fi(flag)21
b(=)h(false)9 b Fo(otherwise.)17 b(It)11 b(m)o(ust)e(b)q(e)h(the)h(case)75
2554 y(that)16 b(either)g(the)g(cancel)h(op)q(eration)e(succeeds)j(or)e(that)
g(the)g(p)q(ending)g(comm)o(uni)o(cation)d(op)q(eration)i(completes)75
2604 y(\(but)k(not)g(b)q(oth\).)33 b(If)19 b(a)f(comm)o(unication)e(op)q
(eration)i(w)o(as)h(cancelled)h(successfully)m(,)g(the)g(e\013ect)g(is)f(as)g
(if)f(this)75 2654 y(op)q(eration)12 b(w)o(as)h(nev)o(er)g(executed.)20
b(If)12 b(a)g(send)h(w)o(as)g(cancelled)g(successfully)g(then)g(the)h
(message)e(sen)o(t)h(will)e(not)h(b)q(e)75 2704 y(receiv)o(ed,)j(the)f
(receiv)o(e)h(bu\013er)g(of)e(an)o(y)g(p)q(osted)i(receiv)o(e)g(for)e(that)h
(message)f(will)g(not)g(b)q(e)i(altered,)e(and)h(an)o(y)f(suc)o(h)p
eop
%%Page: 26 27
bop 75 -100 a Fo(26)712 b Fg(CHAPTER)14 b(1.)31 b(POINT)15
b(TO)f(POINT)g(COMMUNICA)m(TION)75 45 y Fo(receiv)o(e)i(has)g(to)f(b)q(e)h
(satis\014ed)g(b)o(y)f(another)g(send;)h(if)f(a)g(receiv)o(e)h(w)o(as)f
(cancelled)h(successfully)m(,)g(then)g(the)g(receiv)o(e)75
95 y(bu\013er)f(p)q(osted)g(will)d(not)i(b)q(e)h(altered,)f(and)f(an)o(y)h
(send)h(matc)o(hing)d(this)i(receiv)o(e)h(has)f(to)g(b)q(e)g(satis\014ed)h(b)
o(y)f(another)75 145 y(receiv)o(e.)158 276 y Fm(Implemen)o(tation)f(note:)158
324 y Fl(There)g(is)h(not)f(exp)q(ectation)i(that)e(a)g(cancel)h(op)q
(eration)h(will)g(b)q(e)e(fast.)75 559 y Fn(1.13)70 b(Correctness)75
737 y Fm(Discussion:)18 b Fl(The)13 b(material)h(in)g(this)f(section)h(has)g
(not)f(y)o(et)f(b)q(een)i(discussed)h(b)o(y)e(MPIF.)f(Some)i(or)e(all)j(of)d
(it)h(is)h(lik)o(ely)h(to)75 787 y(mo)o(v)o(e)e(to)g(Section)i
Fm(??)p Fl(.)h(It)d(is)g(incorp)q(orated)i(here)f(for)f(completeness.)75
1001 y Fk(1.13.1)55 b(Order)75 1083 y Fo(MPI)15 b(preserv)o(es)i(the)e(order)
g(of)f(messages)h(within)f(the)h(same)f(con)o(text,)h(b)q(et)o(w)o(een)h(an)o
(y)e(\014xed)h(pair)f(of)g(pro)q(cesses.)75 1132 y(In)19 b(other)g(w)o(ords,)
h(if)e(pro)q(cess)j(A)e(executes)i(t)o(w)o(o)e(successiv)o(e)i(send)f
Fi(start)d Fo(sub)q(op)q(erations)j(within)e(the)i(same)75
1182 y(con)o(text,)13 b(pro)q(cess)i(B)d(executes)j(t)o(w)o(o)d(successiv)o
(e)j(receiv)o(e)f Fi(start)e Fo(op)q(erations,)g(and)h(b)q(oth)f(receiv)o(es)
j(matc)o(h)c(either)75 1232 y(sends,)17 b(then)f(the)g(\014rst)g(receiv)o(e)h
(will)d(receiv)o(e)j(the)f(message)f(sen)o(t)h(b)o(y)f(the)h(\014rst)h(send,)
f(and)f(the)h(second)h(receiv)o(e)75 1282 y(will)12 b(receiv)o(e)i(the)g
(message)f(sen)o(t)h(b)o(y)e(the)i(second)g(send.)19 b(Th)o(us,)13
b(if)f(a)h(t)o(w)o(o)g(messages)g(from)e(the)j(same)e(source)j(can)75
1332 y(satisfy)h(a)g(p)q(ending)h(receiv)o(e,)h(the)f(\014rst)g(message)f
(sen)o(t)h(is)f(accepted;)j(if)d(a)g(message)g(can)h(satisfy)f(t)o(w)o(o)g(p)
q(ending)75 1381 y(receiv)o(es,)f(the)g(\014rst)f(receiv)o(e)h(p)q(osted)g
(is)f(satis\014ed.)158 1434 y(The)h(last)f(paragraph)f(assumes)h(that)h(the)f
(send)i Fi(start)d Fo(op)q(erations)h(are)h(ordered)g(b)o(y)f(the)h(program)d
(order)75 1484 y(at)i(pro)q(cess)h(A,)f(and)f(the)i(receiv)o(e)g
Fi(start)e Fo(op)q(erations)h(are)g(ordered)h(b)o(y)f(the)g(program)e(order)j
(at)e(pro)q(cess)j(B.)e(If)f(a)75 1534 y(pro)q(cess)i(is)f(m)o(ultithreaded)e
(and)h(the)h(op)q(erations)g(are)g(executed)h(b)o(y)f(distinct)f(threads,)h
(then)h(the)f(seman)o(tics)f(of)75 1583 y(the)e(threaded)h(system)f(ma)o(y)d
(not)j(de\014ne)h(an)e(order)h(b)q(et)o(w)o(een)h(the)g(t)o(w)o(o)e(op)q
(erations,)h(in)f(whic)o(h)h(case)g(the)h(condition)75 1633
y(is)i(v)o(oid.)75 1764 y Fk(1.13.2)55 b(Progress)19 b(and)g(F)-5
b(airness)75 1846 y Fo(W)m(e)15 b(can)i(mo)q(del)d(the)i(execution)h(of)e
(MPI)h(programs)f(as)h(an)g(in)o(teraction)f(b)q(et)o(w)o(een)j(executing)e
(pro)q(cesses)j(that)75 1896 y(execute)e(eac)o(h)e(their)h(o)o(wn)e(program,)
f(and)i(the)g Fh(comm)o(unication)f(subsystem)p Fo(.)19 b(The)c(comm)o
(unication)d(sub-)75 1945 y(system)i(ma)o(y)e(ha)o(v)o(e)h(v)n(arious)h
(constrain)o(ts)g(on)g(the)g(amoun)o(t)e(of)i(resources)i(it)d(can)h(use.)19
b(E.g.:)158 1998 y(Bounds)f(on)f(the)g(n)o(um)o(b)q(er)f(and)h(total)g(sizes)
h(of)e(activ)o(e)h(comm)o(unication)d(ob)r(jects.)28 b(Suc)o(h)18
b(b)q(ound)f(can)g(b)q(e)75 2048 y(global,)12 b(p)q(er)j(no)q(de,)e(or)h(p)q
(er)h(pair)e(of)h(comm)o(unicati)o(ng)d(no)q(des.)158 2100
y(Bounds)18 b(on)e(the)i(n)o(um)o(b)q(er)e(and)h(total)f(sizes)i(of)f
(messages)g(bu\013ered)h(in)f(the)h(system.)27 b(Suc)o(h)17
b(b)q(ound)g(can,)75 2150 y(again,)h(b)q(e)h(global,)e(p)q(er)j(no)q(de,)f
(or)g(p)q(er)g(pair)f(of)g(comm)o(unicating)d(no)q(de.)32 b(In)19
b(addition,)f(a)g(message)g(ma)o(y)e(b)q(e)75 2200 y(bu\013ered)f(at)f(the)h
(sender,)g(at)e(the)i(receiv)o(er,)g(at)f(b)q(oth,)f(or)h(p)q(erhaps)h(at)f
(another)g(place)g(altogether.)158 2253 y(Th)o(us,)f(it)g(will)e(b)q(e)j
(di\016cult)e(to)h(set)h(rules)f(on)g(resource)i(managemen)o(t)c(of)h(the)i
(comm)o(uni)o(cation)c(subsystem.)75 2302 y(Ho)o(w)o(ev)o(er,)i(it)f(is)g
(generally)g(exp)q(ected)j(that)d(implemen)o(ters)f(will)g(pro)o(vide)h
(information)e(on)i(the)h(mec)o(hanism)d(used)75 2352 y(for)j(resource)i
(allo)q(cation,)c(and)i(that)h(query)f(and)g(set)h(functions)g(will)d(allo)o
(w)h(to)h(query)h(and)f(p)q(ossibly)f(con)o(trol)h(the)75 2402
y(amoun)o(t)g(of)h(a)o(v)n(ailable)f(resources.)158 2455 y(W)m(e)18
b(pro)o(vide)g(in)g(this)g(section)i(a)e(set)h(of)f(minim)o(al)c(requiremen)o
(ts)19 b(on)f(the)h(comm)o(unication)c(subsystem.)75 2504 y(Programs)f(that)h
(execute)h(on)f(an)o(y)f(subsystem)h(that)g(ful\014ls)f(these)j(minim)o(al)11
b(requiremen)o(ts)k(are)g Fh(safe)g Fo(and)f(will)75 2554 y(p)q(ort)i(to)g
(an)o(y)f(MPI)h(implemen)o(tation.)21 b Fh(Unsafe)15 b Fo(programs)f(ma)o(y)g
(execute)k(on)d(some)g(MPI)i(implem)o(en)o(tations,)75 2604
y(dep)q(ending)e(on)f(the)h(amoun)o(t)e(of)g(a)o(v)n(ailable)f(resources)17
b(and)d(the)h(implemen)o(tation)c(used)k(for)f(the)h(MPI)g(comm)o(u-)75
2654 y(nication)f(subsystem.)20 b(Finally)13 b Fh(erroneous)f
Fo(programs)h(nev)o(er)i(execute)i(correctly)m(.)j(\(While)14
b(it)g(is)g(desirable)h(to)75 2704 y(detect)i(erroneous)f(programs,)e(it)h
(is)g(not)g(p)q(ossible)g(to)g(do)g(so)h(at)f(compile)e(time,)h(and)h(often)g
(prohibitiv)o(e)f(to)h(do)p eop
%%Page: 27 28
bop 75 -100 a Fg(1.13.)26 b(CORRECTNESS)1328 b Fo(27)75 45
y(so)16 b(a)g(run)g(time.)22 b(Th)o(us,)17 b(the)f(do)q(cumen)o(t)f(do)q(es)i
(not)f(sp)q(ecify)g(a)g(b)q(eha)o(vior)f(for)h(erroneous)h(programs,)e
(although)75 95 y(the)f(desired)i(b)q(eha)o(vior)d(is)h(to)g(return)h(a)e
(useful)h(error)h(message.\))126 186 y(1.)20 b(If)13 b(a)g(pro)q(cess)i
(executes)h(an)d Fi(INIT)g Fo(op)q(eration,)g(then)h(the)g(op)q(eration)f(ev)
o(en)o(tually)g(succeeds,)j(or)d(a)h Fj(r)n(esour)n(c)n(e)179
236 y(exc)n(eption)20 b Fo(o)q(ccurs.)38 b(The)20 b(standard)h(do)q(es)g(not)
e(sp)q(ecify)i(when)f(a)g(resource)i(exception)f(is)e(allo)o(w)o(ed)g(to)179
286 y(o)q(ccur.)33 b(It)18 b(is)h(exp)q(ected)h(that)f(an)f(op)q(erational)f
(de\014nition)i(will)d(b)q(e)k(made)d(a)o(v)n(ailable,)g(in)h(the)h(form)e
(of)179 336 y(test)e(programs)d(that)i(ha)o(v)o(e)f(to)h(execute)h(with)f(no)
f(resource)j(exceptions.)j(It)14 b(is)f(highly)g(desirable)h(to)f(ha)o(v)o(e)
179 386 y(generous)18 b(b)q(ounds)g(on)f(the)h(n)o(um)o(b)q(er)f(of)f
(concurren)o(tly)j(activ)o(e)e(comm)o(unication)d(ob)r(jects)k(eac)o(h)g(pro)
q(cess)179 435 y(ma)o(y)12 b(ha)o(v)o(e,)h(so)h(that,)f(in)h(practice,)g
Fi(INIT)f Fo(op)q(erations)h(will)f(alw)o(a)o(ys)g(b)q(e)h(guaran)o(teed)h
(to)e(succeed.)126 519 y(2.)20 b(Eac)o(h)d(pro)q(cess)h(can)f(initiate)f(a)g
(comm)o(unicatio)o(n)e(op)q(eration)j(for)f(eac)o(h)h(activ)o(e)f(comm)o
(unication)e(ob)r(ject.)179 568 y(I.e.)k(correct)d Fi(START)e
Fo(op)q(erations)h(alw)o(a)o(ys)f(succeed)j(\(ev)o(en)o(tually\).)126
652 y(3.)k(A)f(send)i(op)q(eration)e(is)h Fh(enabled)d Fo(if)h(the)j(sending)
e(pro)q(cess)j(has)d(issued)i(a)e Fi(COMPLETE)f Fo(op)q(eration)h(and)179
701 y(the)d(receiving)h(pro)q(cess)g(has)f(issued)h(a)f Fi(START)f
Fo(op)q(eration)g(for)h(a)g(matc)o(hing)e(receiv)o(e.)25 b(Symmetrically)l(,)
13 b(a)179 751 y(receiv)o(e)h(op)q(eration)f(is)g Fh(enabled)d
Fo(if)i(the)i(receiving)f(pro)q(cess)i(has)e(issued)h(a)f Fi(COMPLETE)e
Fo(op)q(eration)i(and)f(the)179 801 y(sending)h(pro)q(cess)i(has)e(issued)h
(a)f Fi(START)f Fo(op)q(eration)h(for)g(a)f(matc)o(hing)g(send.)18
b(An)c(enabled)f(op)q(eration)g(ma)o(y)179 851 y(b)q(ecome)g
Fh(disabled)e Fo(either)k(b)q(ecause)g(it)e(completes)h(successfully)h(or,)e
(in)g(the)h(case)h(of)e(a)h(receiv)o(e,)g(b)q(ecause)179 901
y(the)g(matc)o(hing)d(message)i(is)g(successfully)i(receiv)o(ed)f(b)o(y)f
(another)h(receiv)o(e)h(op)q(eration)e(or,)g(in)f(the)i(case)h(of)d(a)179
951 y(send,)i(b)q(ecause)i(the)e(matc)o(hing)e(receiv)o(e)j(successfully)g
(receiv)o(es)h(another)e(message.)179 1017 y Fh(An)i(enabled)f(op)q(eration)f
(either)h(completes)f(successfully)g(or)j(b)q(ecomes)f(p)q(ermanen)o(tl)o(y)e
(dis-)179 1067 y(abled.)179 1133 y Fo(I.e.,)g(an)h(enabled)h(op)q(eration)f
(either)h(ev)o(en)o(tually)e(succeeds,)k(or)d(b)q(ecomes)g(disabled)g
(\(progress\);)i(and)e(an)179 1183 y(op)q(eration)f(cannot)g(b)q(e)g(enabled)
g(in\014nitely)f(man)o(y)f(times)h(without)h(ev)o(er)h(succeeding)g
(\(fairness\).)126 1266 y(4.)20 b(A)14 b Fi(FREE)f Fo(op)q(eration)h(alw)o(a)
o(ys)e(succeeds)17 b(\(ev)o(en)o(tually\).)158 1358 y(The)e(four)g
(conditions)f(guaran)o(tee)h(progress)h(in)e(the)i(comm)o(unicati)o(on)c
(subsystem.)21 b(The)15 b(third)g(condition)75 1408 y(guaran)o(tee)f(\(w)o
(eak\))g(fairness)h(among)d(comp)q(eting)g(comm)o(unication)f(requests.)158
1458 y(Examples)i(\(in)o(v)o(olving)f(t)o(w)o(o)h(pro)q(cessors)j(with)e
(ranks)g(0)f(and)h(1\))158 1507 y(The)g(follo)o(wing)e(program)g(is)i(safe,)f
(and)h(should)g(alw)o(a)o(ys)f(succeed.)75 1640 y Fi(CALL)21
b(MPI_RANK\(rank,)e(context\))75 1690 y(IF)i(\(rank.EQ.0\))f(THEN)140
1740 y(CALL)h(MPI_SENDC\(sendbuf,)d(count,)j(1,)g(tag,)g(context\))140
1790 y(CALL)g(MPI_RECVC\(recvbuf,)d(count,)j(1,)g(tag,)g(context\))75
1840 y(ELSE)86 b(!)22 b(rank.EQ.1)140 1889 y(CALL)f(MPI_RECVC\(recvbuf,)d
(count,)j(0,)g(tag,)g(context\))140 1939 y(CALL)g(MPI_SENDC\(sendbuf,)d
(count,)j(0,)g(tag,)g(context\))75 1989 y(END)g(IF)158 2072
y Fo(The)14 b(follo)o(wing)e(program)g(is)i(erroneous,)g(and)g(should)g(alw)o
(a)o(ys)f(fail.)75 2214 y Fi(CALL)21 b(MPI_RANK\(rank,)e(context\))75
2263 y(IF)i(\(rank.EQ.0\))f(THEN)140 2313 y(CALL)h(MPI_RECVC\(recvbuf,)d
(count,)j(1,)g(tag,)g(context\))140 2363 y(CALL)g(MPI_SENDC\(sendbuf,)d
(count,)j(1,)g(tag,)g(context\))75 2413 y(ELSE)86 b(!)22 b(rank.EQ.1)140
2463 y(CALL)f(MPI_RECVC\(recvbuf,)d(count,)j(0,)g(tag,)g(context\))140
2512 y(CALL)g(MPI_SENDC\(sendbuf,)d(count,)j(0,)g(tag,)g(context\))75
2562 y(END)g(IF)158 2654 y Fo(The)13 b(receiv)o(e)h(op)q(eration)f(of)f(the)i
(\014rst)f(pro)q(cess)i(m)o(ust)d(complete)g(b)q(efore)i(its)e(send,)i(and)f
(can)g(complete)f(only)75 2704 y(if)g(the)h(matc)o(hing)d(send)k(of)e(the)h
(second)g(pro)q(cessor)i(is)d(executed;)i(the)f(receiv)o(e)h(op)q(eration)f
(of)e(the)j(second)f(pro)q(cess)p eop
%%Page: 28 29
bop 75 -100 a Fo(28)712 b Fg(CHAPTER)14 b(1.)31 b(POINT)15
b(TO)f(POINT)g(COMMUNICA)m(TION)75 45 y Fo(m)o(ust)i(complete)h(b)q(efore)h
(its)g(send)g(and)f(can)h(complete)e(only)h(if)f(the)i(matc)o(hing)e(send)i
(of)f(the)h(\014rst)g(pro)q(cess)h(is)75 95 y(executed.)h(This)14
b(program)e(will)g(deadlo)q(c)o(k.)158 145 y(The)i(follo)o(wing)e(program)g
(is)i(unsafe,)f(and)h(ma)o(y)e(succeed)k(or)e(fail,)e(dep)q(ending)i(on)g
(implemen)o(tatio)o(n.)75 286 y Fi(CALL)21 b(MPI_RANK\(rank,)e(context\))75
336 y(IF)i(\(rank.EQ.0\))f(THEN)140 385 y(CALL)h(MPI_SENDC\(sendbuf,)d
(count,)j(1,)g(tag,)g(context\))140 435 y(CALL)g(MPI_RECVC\(recvbuf,)d
(count,)j(1,)g(tag,)g(context\))75 485 y(ELSE)86 b(!)22 b(rank.EQ.1)140
535 y(CALL)f(MPI_SENDC\(sendbuf,)d(count,)j(0,)g(tag,)g(context\))140
585 y(CALL)g(MPI_RECVC\(recvbuf,)d(count,)j(0,)g(tag,)g(context\))75
635 y(END)g(IF)158 776 y Fo(The)15 b(message)g(sen)o(t)h(b)o(y)f(eac)o(h)g
(pro)q(cess)i(has)e(to)g(b)q(e)h(copied)f(out)g(b)q(efore)h(the)g(send)g(op)q
(eration)f(returns)h(and)75 826 y(the)h(receiv)o(e)g(op)q(eration)e(starts.)
26 b(F)m(or)15 b(the)i(program)d(to)i(complete,)f(it)g(is)h(necessary)i(that)
e(at)g(least)g(one)g(of)f(the)75 875 y(t)o(w)o(o)d(messages)g(sen)o(t)h(is)f
(bu\013ered)i(out)e(of)f(either)i(pro)q(cesses')h(address)g(space.)k(Th)o
(us,)13 b(this)f(program)e(can)j(succeed)75 925 y(only)g(if)g(the)i(comm)o
(unicati)o(on)c(system)j(has)g(su\016cien)o(t)g(bu\013er)h(space)g(to)f
(bu\013er)h Fi(count)d Fo(w)o(ords)i(of)g(data.)158 975 y(If)c(additional)e
(requiremen)o(ts)i(will)f(b)q(ecome)h(part)g(of)f(the)i(standard)f(\(e.g.,)g
(b)q(ounds)h(on)e(the)i(minim)o(al)c(n)o(um)o(b)q(er)75 1025
y(of)13 b(concurren)o(tly)i(activ)o(e)f(handles)g(that)g(need)h(b)q(e)g(supp)
q(orted,)f(then)h(further)g(programs)d(b)q(ecome)i(safe.)75
1162 y Fn(1.14)70 b(Missing)75 1253 y Fh(send-receiv)o(e)39
b Fo(a)13 b(function)h(of)f(the)i(form)d(\(for)i(blo)q(c)o(king)e(comm)o
(unication\))158 1303 y Fi(MPI)p 227 1303 14 2 v 15 w(SEND)p
330 1303 V 15 w(RECV\()21 b(send)p 564 1303 V 15 w(buffer,)f(destination,)f
(recv)p 1124 1303 V 15 w(buffer,)h(source,)h(tag,)g(context\))158
1353 y Fo(It)13 b(ma)o(y)e(b)q(e)j(sup)q(er\015uous)h(b)q(ecause)f(the)g
(collectiv)o(e)f(comm)o(unicatio)o(n)e(shift)h(has)h(similar)e(functionalit)o
(y)m(.)16 b(Y)m(et)75 1402 y(it)10 b(allo)o(ws)g(to)g(generate)i(more)e
(easily)g(comm)o(unication)d(patterns)12 b(that)f(w)o(ould)f(lead)g(to)h
(deadlo)q(c)o(k)f(if)g(implemen)o(ted)75 1452 y(naiv)o(ely)m(,)i(with)h(blo)q
(c)o(king)g(comm)o(unication.)158 1502 y(An)20 b(imp)q(ortan)o(t)f(v)n(arian)
o(t)g(is)h(the)h(case)g(where)h Fi(send)p 1020 1502 V 14 w(buffer)f(=)h(recv)
p 1319 1502 V 14 w(buffer)d Fo(\(this)i(can)f(either)h(b)q(e)g(a)75
1552 y(sub)q(case)c(of)f(the)g(general)g(send)p 578 1552 13
2 v 16 w(recv)h(function,)f(or)f(a)h(separate)h(function,)f(if)f(send)h
(bu\013er)h(and)f(receiv)o(e)h(bu\013er)75 1602 y(are)g(required)g(to)f(b)q
(e)h(disjoin)o(t)e(in)g(the)i(general)f(function\).)25 b(This)16
b(in)o(tro)q(duces)i(new)e(functionalit)o(y)f(that)h(is)g(not)75
1651 y(a)o(v)n(ailable,)11 b(otherwise,)k(and)e(whic)o(h)h(seems)g(to)g(b)q
(e)g(often)g(required.)158 1701 y(An)g Fi(exchange)e Fo(is)i(the)g(sp)q
(ecial)h(case)f(where)i(source)f(=)f(destination.)p eop
%%Trailer
end
userdict /end-hook known{end-hook}if
%%EOF


>From weeks@mozart.convex.com Wed Jun  9 15:10:59 1993
Return-Path: <weeks@mozart.convex.com>
Received: from ens.ens-lyon.fr by lip.ens-lyon.fr (4.1/SMI-4.1)
	id AA15096; Wed, 9 Jun 93 15:10:57 +0200
Received: from convex.convex.com by ens.ens-lyon.fr (4.1/SMI-4.1)
	id AA12736; Wed, 9 Jun 93 15:09:15 +0200
Received: from mozart.convex.com by convex.convex.com (5.64/1.35)
	id AA01714; Wed, 9 Jun 93 08:08:21 -0500
Received: by mozart.convex.com (5.64/1.28)
	id AA28959; Wed, 9 Jun 93 08:10:32 -0500
Date: Wed, 9 Jun 93 08:10:32 -0500
From: weeks@mozart.convex.com (Dennis Weeks)
Message-Id: <9306091310.AA28959@mozart.convex.com>
To: Jack.Dongarra@lip.ens-lyon.fr
Subject: May 13 mpi mail #1 of 1
Status: R

(received from walker, as I recall; I believe he posted it to mpi but
I didn't receive it, so eventually he mailed it directly to me - DW)

                Minutes of the Message Passing Interface Forum
                                Dallas, Texas
                           March 30 - April 2, 1993

The MPI Forum met March 30 - April 2, 1993, at the Bristol Suites Hotel in
North Dallas.

This was the fifth meeting of the MPIF and the third of the now regular
meetings in Dallas.  There were both general meetings of the committee as a
whole and meetings of several of the subcommittees.

For the first time a number of formal votes were taken at this meeting.
All of these are recorded in these minutes (and can be found by searching
for VOTE) and have also been published (to the mpi-core mailing list) in a
summary of all the formal votes and all of the straw votes for the
committee as a whole.

The notes for these minutes were taken by Bob Knighten
(knighten@ssd.intel.com) and Rusty Lusk (lusk@mcs.anl.gov).

These minutes are quite long.  If you want to see the important topics you
can search for --- and this will quickly the lead to each topic (and a few
other things.)

Attendees:
- ---------

Joe Baron               IBM Austin               jbaron@vnet.ibm.com
Eric Barszcz		NASA Ames                barszcz@nas.nasa.gov
Harry Scott Berryman    Yale Univ.               berryman@cs.yale.edu
Rob Bjornson		SCA                      bjornson@sca.com
Lyndon Clarke	        EPCC, U. Edinburgh       lyndon@epcc.ed.ac.uk
James Cownie	        Meiko			 jim@meiko.co.uk
Jack Dongarra	        UT/ORNL			 dongarra@cs.utk.edu
Anne C. Elster          Cornell U.               elster@cs.cornell.edu
Sam Fineberg		NASA Ames                fineberg@nas.nasa.gov
Jon Flower	        ParaSoft		 jwf@parasoft.com
Ian Glendinning         U. of Southampton        igl@ecs.soton.ac.uk
Adam Greenberg          TMC			 moose@think.com
Bill Gropp              ANL                      gropp@mcs.anl.gov
Leslie Hart	        NOAA/FSL		 hart@fsl.noaa.gov
Tom Haupt	        Syracuse U.		 haupt@npac.syr.edu
Rolf Hempel	        GMD			 hempel@gmd.de
Tom Henderson	        NOAA/FSL		 hender@fsl.noaa.gov
C. T. Howard Ho         IBM Almaden              ho@almaden.ibm.com
Steven Huss-Lederman    SRC			 lederman@super.org
Rusty Lusk              ANL                      lusk@mcs.anl.gov
John Kapenga            Western Michigan U.      john@cs.wmich.edu
Bob Knighten	        Intel SSD		 knighten@ssd.intel.com
Rik Littlefield         PNL			 rj_littlefield@pnl.gov
Peter Madams            nCube			 pmadams@ncube.com
Arthur B. Maccabe       U. of New Mexico         maccabe@cs.unm.edu
Oliver McBryan          U. Colorado              mcbryan@cs.colorado.edu
Dan Nessett	        LLNL			 nessett@llnl.gov
Steve Otto	        Oregon Graduate Instiute otto@cse.ogi.edu
Peter Pacheco           U. of San Francisco      peter@sun.math.usfca.edu
Paul Pierce	        Intel			 prp@ssd.intel.com
Sanjay Ranka            Syracuse U.              ranka@top.cis.syr.edu
Arch Robison            Shell Development        robison@shell.com
Mark Sears              Sandia			 mpsears@cs.sandia.gov
Anthony Skjellum        Mississippi State U.	 tony@cs.msstate.edu
Marc Snir               IBM, T.J. Watson         snir@watson.ibm.com
Alan Sussman            U. of Maryland           als@cs.umd.edu
David Walker            ORNL                     walker@msr.epm.ornl.gov
Dennis Weeks	        Convex			 weeks@convex.com
Stephen Wheat           Sandia NL                srwheat@cs.sandia.gov
Wednesday, March 30
- ---------  --------

- -------------------------------------------------------------------------------
			       General Meeting
- -------------------------------------------------------------------------------


Jack Dongarra called the meeting to order at 1:30.  The first topic for
discussion was the agenda.  David Walker had mailed out the following

        Provisional Agenda for MPI Meeting, March 31-April 2, 1993

Wednesday
1:30-6:00   Discussion of Snir, Gropp, Lusk point-to-point proposal (everyone)
            (Snir)
6:00-7:30   Unofficial dinner break 
7:30-10:30  Break up for subcommittee meetings
        
Thursday
9:00-12:00  Discussion of Snir & Geist collection communication 
	    proposal (everyone)
	    (Otto?)
12:00-1:30  Lunch (provided)
1:30-3:00   Full group meeting for presentation of alternate approaches to
	    groups and contexts, dynamic vs. static process models, and other
	    issues
	    (Volunteer?)
3:00-6:00   Full group meeting for presentation of process topology
	    subcommittee ideas and proposals.
	    (Hempel)
6:00-8:00   Dinner (attendees pay, but hotel provides transport to area
                   restaurant)
8:00-10:00  Continued informal subcommittee meetings if necessary
        
Friday 
9:00-11:00  Full group meeting with the intent of taking binding votes
	    on point-to-point and collective communication proposals, or
	    sending proposals back to subcommittees for revision.
	    (Snir?)
11:00-12:00 Full group meeting for defining timetable for producing MPI (or
	    subset) by deadline in July.
	    (Dongarra)

Following the discussion on the mpi-core mailing list the question was moving
the discussion of the timetable for producding MPI to the beginning of the
meeting.  After a brief discussion it was decided to proceed first with
reports from the Communication Context and Point-to-Point Communication subcommittees in
order to have a basis for discussing the schedule.  The schedule was discussed
on Thursday afternoon, following the completion of the Point-to-Point
subcommittee report.

The Context subcommittee was alloted two hours, from 1:30 to 3:00, with the
Point-to-Point Communications subcommittee scheduled from 3:00 to 6:00 and on
Thursday morning.


- -------------------------------------------------------------------------------
              Report From the Communication Context Subcommittee
- -------------------------------------------------------------------------------


Tony Skjellum presided.  There was a large volume of activity on the
mpi-context mailing list before this meeting and so there were five
proposals available for consideration, labeled:

I     (Marc Snir)
III   (Tony Skjellum)
VII   (Lyndon Clarke/Rik Littlefield)
VIII  (Mark Sears)
X     (Tony Skjellum/Lyndon Clarke)

25 minutes was alloted for presentation of each of these in the order I
(Marc Snir), VII+X (Lyndon Clarke), VIII (Mark Sears) , III (Tony
Skjellum), X followed by general discussion.  Tonight there will be a
subcommittee meeting to produce a single proposal.


Proposal I (Marc Snir)
- ---------- -----------

{Marc used overhead projector slides and these notes are largely a
transcription of those slides.}


Group=Context Proposal

Goals:
  + Keep it simple (and keep MPI small)
  + Keep it efficient

Minimal needs:
  + Protection mechanism
  + Local name space

Group = Context = Ordered set of processes.
- --
Method for protecting communication between e.g. libraries.
- --
 + All point-to-point communication is WITHIN a group and uses 
   (group,rank) address.

 + All collective communications by a group (which is a context)


OPERATIONS:
  + Group copy
  + Group partition
  + Group creation by list
  + Group deletion
  + ALL group prexists

Group handle has only local (i.e. within group) use and meaning.
- --
There is no reason to pass the handle of a group outside the group - it
has no use.
- --
1.  Impact on "current practice":

  Need additional argument ALL in all p-p calls.

2.  Overhead for p-p
  send - no impact when ALL use. One lookup for other groups.
  receive - context id match

    Overhead at creation
  Loosely synch collective communication within group affected
    
    Storage
  Member table (good protection)
- --

3.  Compatibility with dynamic process creation and deletion

  Process creation/deletion requires same for group
{What is ALL group after process creation or deletion?}

4.  Interaction with topology
  Group has no topology information (but it can be used as a peg for such
information.)

5. Inter group communication (e.g. client-server models)

       +-------------------------------------+

          +---+ ---> (---)
          | * |    
          | * | 
          | * | 
          +---+
       +--------------------------------------+

Do the communication within an encompassing group.
- -
 + Encompassing group needed for protection
 + May not be convenient for naming (e.g. send(server[5], ...))
 + Inconvenience does not warrant change in p-p layer
 + Can be handled by creating and explicityl passing arrays of ranks:

MPI_LIST_RANKS(list, subgroup, group)
  returns the list of the rank of each subgroup member within group
- --
Discussion:

How have available both subgroup and group?  There must be an encompassing
group which has full knowledge, e.g. server that is member of both the
group and the subgroup.

This proposal is orthogonal to question of attaching additional
information (e.g. topology information, caching, etc.)

Can't deal with situation of contacting an independent pre-existing
server.  Marc's approach is that dynamically adding processes requires
dynamically creating a group containing all of the processes.

Opacity vs. accesibility to mechanism.

 =============================================================================
Lyndon   VII and X

VII:

Context is a higher level mechanism than a group.  It is basically a
unique identifier together with a reference to a group.  This means that
as a group changes, all contents that reference that group change as well.  

Same ability to hang on facilities (e.g. topology, caching) as others.

Relation to p-p:  Three forms: "closed form", "null form", "open form"
Open form is to allow communication between different groups.  Experience
is that creating encompassing groups is difficult. Disagree with Snir's claim.

Addressing is via (context, rank).

Need a "context allocation" mechanism - this implies global communication.

Relation to c-c:  Works very cleanly for all-all using closed form.
Two group communcations - for MPI-2
Discussion:
How to establish communication between groups?  Can send context.

What is opaque? Lyndon - not important.  Startup/bootstrap - everyone
starts in the ALL group.  Can use common ancestor or name registry.  Power
relative to I? Lyndon claims that this is more convenient once
communication is setup.

Basic idea is to be able to communicate via (my_context, remote_context, rank)


ORTHOGONAL ISSUES - caching, tag selection, transfer of ????

X: Attempt to synthesize III & VII

A CONTEX is a space of tags.  A GROUP is a set of process references.
[What does this mean?]

Idea is to give method for combining groups and context for purpose of
communication.  

COMMUNICATORS (see pp. 3-4)
  Silly names, but a serious proposal.

  Floopy - arbitrary communication between processes allowing wild card
on tag.

  Bongo - basically like Marc's proposal - communication within a group
using rank naming  ("closed")

  Bingo - communication between groups.

Question:  Why do we want ANY of these proposals?
Performance, build large scale software safely

We need examples for all of these proposals!
Collective -> group; express collective in terms of p-p implies need to
discriminate message -> context.

But there are reasons to have groups and contexts that have nothing to do
with collective communication.  Argument that in Marc's proposal the need
for a context means have to have an additional group - but is this a
problem? 

Lyndon argues that there are good reasons to separate group and context.
Static vs. dynamic groups.  Ability to move context.


Proposal VIII - Mark Sears
{{{
MPI-1

char * MPI_ALLOCATE Group and Context Proposal
   				Number();
}}}
- --
Context and Groups are orthogonal
  + Orthogonal purpose
  + Orthogonal functionality
  + Orthongonal implementation
- --
                               Contexts

Purpose - promote software modularity by allowing construction of
independent tag spaces

Definition: A CONTEXT is an integer-valued extension to the tag
component of the meggage envelope, and must match exactly between
sender and reciver
- --
Model:
 + Contexts are global.
 + No concept of process belonging to a context.
 + Contexts are scarce resources (16).
 + Context allocation is a rare event.
 + MPI p-p requries no reference to groups.
- --
Context allocation/deallocation
ALLOCATION:

 int mpi_getcontext()

   + called synchronously by all (EVERY SINGLE ONE) processes
   + signals to mpi that use of context is now allowed

DEALLOCATON

  void MPI_free_context(value)


MPI_DEFAULT CONTEXT
  + Preallocated; can't be freed.
  + Solves initialization
  + Free-for-all

But believes that allocation/deallocation not truly needed - could have
entirely static system.

  + Contexts are global
  + No concept of process belonging to a context
  + Context are scarce resources (e.g. 16)
  + Context allocation is a rare event
  + MPI p-p requires no reference to groups
- --
                                GROUPS

Purpose - provide tools for organizing subsets of processes in a
parallel task (i.e. MPI program.)

Definition:  A groups is a 1-1 mapping from (0..n-1) to another set of integer.
A group is a collection of processes only in so far as the elements are process
addresses.

Groups have no associated have no associated context or tags, default or otherwise.
- --
Group Implementation
 + local to each process based on information needed to construct the mapping
 + Group type is local and opaque
 + Groups can be sent in message only by sending the information needed
   to construct the group.
 + Groups are objects in the OOP sense
- --
Usage:

MPI_SEND(n,buf,process,tag,context)

MPI_BROADCAST(n,buf,group,tag,context)

Group identifier is a local opaque type, thought of as a pointer to
one of many possible group structures.

  MPI_SEND(..., element(group,rank),tag,context)
                            GROUP FUNCTIONS

int order (group)
int range(group)
int element(group, int rank)
int iselement(group, int element)
int rank(group, int element)

                                CLASSES
identity, permutation, linear, list, bilinear, composition, cartesian

                             CONSTRUCTORS
group makelineargroup(order,start,delta)
- --
Two kinds of 3rd party code
1. Code that inherits context and tag space from caller.  Example:
MPI collective communication

2. Code which allocates and manges own context and tag space.

MPI should allow both of these.
- --
                               Topology

Global topology - mapping of processes to processors.
provide inquiry function returning a string describing this mapping:

  char * MPI_global_topology()

Examples of output:
  "N 564"	-  random network of 564 processes
  "H 5"         - 5 dimensional hypercube
  "R 2 16 13"   - 2D mesh, 16x13

Local topology - implicity within group; no additional functions needed.
- --
ADVANTAGES
 + Ease of implementation
 + Close to hardware
 + Good use of resources
 + Flexibility in implementation of higher level concepts
 + MPI p-p requires no reference to groups
 + MPI c-c can be layered on top of MPI p-p
- --
Discussion - Serious problem with global communication.  This destroys
the software modularity.

How to do global operations using groups?  Responsibility on code to
insure there is disambiguation, synchronization, etc.

Tony - III

 + Tag/context partionting message space for "safe" software

 + Groups encapsulate scope of operations for
    1) notation
    2) optimization
    3) performance
                              ...........
     ...............     /     . GROUPS .
     .            .    /        .........
     . CONTEXTS    . /  lower,higher?
      .............

Relation between groups and contexts?  Groups can be orthogonal except
for group creation.
- --
Forms of communiations

 + collective communication
   ON groups
   (compatible with I)

 + p-p
   A] (group,rank,tag) - analagous to I
   B] (context,pid,tag)

Models
1) Contexts created/destroyed
2) contexts can be published
    dynamic server implied or shared address area

Contexts & groups interelate
when creating new groups not necessarily from LCA
                                              ^^^{{{WHAT DOES THIS MEAN?}}}
- --

contexts & groups interrelate when creating new groups, not necessarily
from LCA (what does this mean?)

Dispute/reply regarding optimization.  Argument that group can be used to
provide to information about special situations (e.g. shared memory) that
can be used for optimization.

Dynamic groups more feasible using III or VII.

Can contexts be sent in III?  Yes.

VII more complex than III because it offers more layers.

Tony believes that dynamic groups are essential for the heterogeneous
case and so believes that I is inappropriate.

John K. notes that other proposals can be built on top of VIII.

Proposal to defer straw vote until tomorrow to give people time to ponder.

Is global synchronization an essential part of VIII?  Sears - no, there
are various possibilities.  
Why is it important that contexts are global?  Because a context is not
associated with a group of processes.  This looses much of the safety.
It also looses the local addressing within a group.  Sears argues that
this complicates p-p, but Snir says that something like his proposal has
been implemented and is not complicated or expensive.

What level of protection is needed/desirable?  
Picture of using context for safety - at startup send a context to each library
used which it then uses for internal safety.  Problem - libraries using libraries
using libraries, etc.  Importance of receiving on wild cards and relation.

Host/Node model?  Must support this and all do.  (What about loading
program - not part of THIS discussion.)

Subcommittee will meet tonight and present a more unified proposal tomorrow morning.

Rik asked for example showing how to implement safe barrier using p-p, group, context.

Adam - How can we evaluate these proposals if we have not agreed on what
we want from the context concept?
- -----
break 4-4:20 pm
- -----
- -------------------------------------------------------------------------------
           Report From the Point-to-Point Communication Subcommittee
- -------------------------------------------------------------------------------

First reading of p-p proposal - Marc Snir presiding

Presentation with some minimal assumptions about use of context.
No language binding included.

Use of handles and opaque objects.
[Ignore text comments on implementation - issues for language experts.]

Discussion of ephemeral/persistant.  Greenberg asked about "error to
free a handle with pending operation" - change to "handle becomes
ephemeral" or some such.

How deal with lists - included length, separate length, EOL marker.

States  [Implementation again - not part of current proposal]

If have only one send/receive, what is type of buffer and what to do
about this?  Marc's proposal is to accept breaking F77 in this case.

Skipping 2.4 (Contexts) for now (including error handling.)

2.5.1: What about C/Fortran compatibility for messages?  Also skipped
for now.

2.6: Greenberg wants at least escape hatch to allow functions
(MPI_ADD_?) that add, e.g., other F90 objects.

Discussion of len in MPI_ADD_BLOCK as "Number of elements" rather than
as bytes.  There are language and portability issues.

Marc mentioned issues in middle of p. 14 (negative displacements, ...)
and notes that these must be settled.

Note that delete/commit functions discussed last time are not in this
proposal.

2.6.1 (Data Conversion)  It just happens - this needs to be stated clearly.

- -- back to 2.2 - vote on each section

[[NOTE:  A proposal, in the form of a proposed chapter is offered.
Votes are on amendments and on accepting particular parts of chapter.]

How are handles allocated?  User or system.  There are efficiency
advantages to user allocation, e.g. on stack.

PRP argues for a create for each data type rather than a generic
MPI_CREATE.  At the moment there is an admixture in the proposal.

======
Discussion of voting rules.  Organizations voting: 24
=====

VOTE: Separate mpi_create for each type
- ----  Yes: 20 No: 0 Abstain: 4

Possible meanings of free:

                                 free
1.1 can always be done				1.2 can be done only if
user will not use handle                        no pending operation
after free
2 if no pending operation, deallocate otherwise free when done

1.2 = current proposal; 2 is Greenberg proposal

Greenberg explantion - common thing done in their system is to have handlers with free
only taking effect after handler completes.  PRP - Has primitive that does essentially
2 (which is not "mark ephemeral") It does not imply cancel.  Fire and forget.
Cownie: Two arguments - Paul's fire and forget; Adam's handler for messages.  
Snir: Is buffer available after free?  PRP/Adam: No.
Why not just have another kind of free?  Multiplicity of functions.

VOTE: mpi_free is valid even if handle is in use, but effect is to
- ----  free the object when the operation completes. 
      Yes: 7 No: 8 Abstain: 

List of handles - change name to array of handles

VOTE: list_length explicit (rather than included in array or EOL)?
- ----  Yes: 22 No: 0

Cownie wants a method to provide cheap allocation, e.g. on user's
stack rather than in system heap.  Need a concrete proposal.

RLK wants explict statement of what is erroneous, checked, etc.

VOTE: Accept 2.2
- ----  Yes: 23 No: 1

2.3 & 2.4 skipped -- they will be considered elsewhere.

2.5  Cownie - proposes that there be both CHAR and BYTE data types
rather than just the basic data types of the host language.

Another proposal is to have an MPI_STRING data type.  But what length? Null terminated?

VOTE: BYTE data type.
- ----  Yes: 24 No: 0

Pending action of Context Subcommitte is the content of the envelope.

VOTE: Accept 2.5 (minus 2.5.2)
- ----  Yes: unanimous

Proposals for units of bytes and for consistency.

1. Units are elements
2. bytes in C and elements in F77  (No one favors this.  Against: 14)
3. bytes everywhere (and provide some way of getting size of basic types)
    a) index stays as is, but bytes elsewhere     Pro: 9  Con: 13 (VOTE 1)
    b) truly bytes everywhere, including indices  Pro: 10 Con: 8  (VOTE 2)

Greenberg will bring forward additional proposal for 2.6 at next meeting.

VOTE:  In vector, stride may be negative?
- ----   Yes: 10 No: 2

VOTE:  Allow repetition?
- ----   Yes: 13 No: 1

VOTE:  Can multiple components overlap?
- ----   vote not taken

PRP proposes that in vector len is a count of the number of blocks.

VOTE: total length is an integer multiple of the block size
- ----  Yes: 4 No: 10
Tony proposes adding a COMMIT operation.
Note: Current proposal does not clearly state it, but a handle cannot
be modified after it is in use.  There is nothing that explicitly
specifies that the modifications are complete.

VOTE: Commit?
- ----  Yes: 11 No: 6

VOTE: Accept 2.6
- ----  Yes: 12 No: 4

- -----
Break for dinner - 6:15 p.m.
- -----

Subcommittees tonight:  Here: Vendor caucus
                        Rm 1: Process topology
                        Rm 2: Collective Communications Subcommittee
                        Rm 3: Context Subcommittee
   			BAR:  formal, language binding, profile

meet at 8 p.m.

 -----------------------------------------------------------------------------

Revised agenda

Thursday 
  9 p-p (cont)
  12 lunch
   1:30 (registration)
  1:30 collective communication
  3    process topology
  6-8 dinner

Future:  May 12-14; June 23-25; August ?

 =============================================================================

                      Thursday, April 1, 1993
                              9:10 a.m. - 

- -------------------------------------------------------------------------------
     Report From the Point-to-Point Communication Subcommittee (continued)
- -------------------------------------------------------------------------------

Point-to-Point Communication - First Reading (continued):
- -------------- -------------   ----- -------

Marc Snir presiding

2.7 (Receive Criteria) & 2.8 (Communication Mode)
- -------------------------------------------------

Suggestion that we need more than one DONTCARE, a SOURCE_DONTCARE and
a TAG_DONTCARE.

Lyndon Clarke proposed a "secure" communication mode where the send
that will return once the system can guarantee that the receive will
actually complete.  

(During the discussion of this there was a suggestion that the word REGULAR
on p. 16 of Marc Snir's draft be changed to STANDARD so first can always be
used.  Marc remarked that he welcomes all manner of stylistic improvements,
but asked that they be sent to him, not voted on here.)

Why such a secure communication mode?  To provide a portable manner to
write programs that are guaraneed to be safe, even without buffering.
This is similar to but weaker than the synchronous functions that were
rejected in a straw vote last time.  The unease with a proliferation of
functions was again mentioned.

Adam Greenberg suggested that one could be against this and still specify
equivalent function by requiring no buffering throughout the system.

Rik Littlefield (as a pseudo Tony Skjellum) proposed receive criteria based
on an intag and mask.  Variations on this have been discussed in the past.

VOTE: Typed DONTCARE?
- ----  Yes: 19 No: 1

After the vote, a count showed 25 organizations present.

Proposal: Receive selection based on (tag & mask) = (intag & mask)

Why do this if have context?

Discussion of efficiency.  PRP proposes sending tag (exact match by
system) and extra-info (for recognition of message category by
application) in envelope.  Cownie unhappy because of effect on latency
of small messages.

Alternatives being considered:

(1) RECEIVE(..., tag, info, ...)  no DONTCARE for tag
(2) RECEIVE(..., tag, mask, ...)  no DONTCARE for tag
(3) RECEIVE(..., tag, ...)        DONTCARE for tag

Does this imply small tags?  PRP: reasonable for implementation to
limit size of tag, category, and context.
Greenberg argues againt PRP propsal because of existing practice and
because it could force user to duplicate some system function.

Eric argues in favor of wildcarding because it often allows reuse of
buffer and so fewer resources.

VOTE: (1)  fails for lack of second.
- ----  (2)  Yes: 6  No: 12
so (3) remains.


Proposal: Secure communication mode.
Rusty - P4 experience argues against this.  Cownie - this is useful
for reasoning about program correctness.  
An alternative is to have a "secure mode".  But what happens if using
secure mode, but some library may have been written without secure mode?

VOTE: Do we want a "secure" communication mode?
- ----  Yes: 7 No: 6


VOTE: Delete send/ready_receive?
- ----  Yes: 10 No: 10
[Amendment tabled]

VOTE: Accept amended versions of 2.7 & 2.8
- ----  Yes: 25 No: 1





Discussion of 2.9 (Communication Objects):
- -----------------------------------------

Marc Snir began with an overview of the four subsections.

He asked if there should be handles for user space objects?  This is not in
the current proposal.  He noted that the use of a STATUS_ALL compared to
using STATUS in a loop is one of convenience.

Jim Cownie argued: WAIT_ANY should be told where to start scan because of
fairness concerns. 

[Discussion - this is a strong implementation requirement.  MPI requires
"fairness", though the requirement is so weak as to be untestable.
WAIT_ANY is small part of the fairness problem.  Easier for user to pass in
this information than for the system to maintain it.  The user can always
guarantee fairness.  But at some cost.  Postpone until we discuss
correctness and fairness in general.]

The current draft has MPI_RETURN_STAT providing the free space in the
buffer.  The current practice appears to return the number of bytes
received.  

Issues: Byte count of data received; Where do handles come from; Partially
specified handles; Make explicit that can a message can be sent to oneself.

VOTE: The return status for a receive operation should be the number
- ----  of bytes received
      Yes: 17 No: 3 Abstain: 7



The return status handle should be allocated by the user:
- --------------------------------------------------------
Typically the user knows exactly the what needs to be done and the
lifetime is often short.  Thread safety says can't use global storage,
so ...

Suggestion that there be an overall proposal to deal with handles in
user space.  But this is not a general handle - this is a special
situation.  Postpone for general consideration.


Partial handles
- ---------------

return_status_handle
 + part of communication handle
 + separate user space object
 + separate system object

VOTE: Accept 2.9 (with amendments) excluding 2.9.1 and WAIT_ANY
- ----  Yes: 19 No: 2 Abstain: 3

- -----
break 10:48 - 11:08
- -----









Discussion of sections 2.10-2.12
- --------------------------------
Marc presented the following table for discussion:

              |general|contig|vector|contig|
              |buffer |byte  |byte  |type  |
- --------------+-------+------+------+------+--------------------------------
blocking      |       |      |      |      |
send          |  *    |      |      |      |
receive       |       |      |      |      |
- --------------+-------+------+------+------+
blocking      |       |      |      |      |
ready-receive |  *    |      |      |      |
send          |       |      |      |      |
- --------------+-------+------+------+------+
immediate     |       |      |      |      |
send          |  *    |      |      |      |
receive       |       |      |      |      |
- --------------+-------+------+------+------+
immediate     |       |      |      |      |
ready-receive |  *    |      |      |      |
send          |       |      |      |      |
- --------------+-------+------+------+------+
secure        |       |      |      |      |
send          |       |      |      |      |
receive       |       |      |      |      |
- --------------+-------+------+------+------+
Same buffer types are used in Collective Communication.

Discuss probe

Issues: Counting units?  Vector type?  Contig type includes contig
byte because have byte type?

Lyndon - There should be a secure-receive (for optimization of the
protocol.)  Marc - Is system or user responsible for insuring this works?
Lyndon - User.  Various - What is value of secure-receive.  Gropp -
Because these are different protocols loose performance if don't have
different functions as general must always deal with worst case.

Marc:
                   error?
ssend(2)	----------------------------      recv(1)
   					

Proposal is that it is erroneous to attempt to receive a message sent
by a secure-send by other than a secure-receive.  Rusty argues that
this should not be erroneous because ???

Possibilities:
  1) secure-send {can, cannot} be received by receive
  2) Enforced by MPI or user responsibility

Adam argues that this is confusing the secure-send features with
pre-acknowledgement and these are independent issues.

The purpose of secure-receive is entirely performance - it does not
have any semantic content.

secure-send/secure-receive can be implemented on top of regular p-p.

Note that the proposal is to add 2 secure-sends, 2 secure-receive

VOTE: Add both blocking and immediate secure-send/secure-receive
- ----  with failure of program to match being erroneous.
      Yes: 10 No: 8 Abstain: 9

VOTE: 2.10 as amended
- ----  Yes: 20 No: 4 Abstain: 3

VOTE: 2.11
- ----  Yes: 26 No: 0 Abstain: 1


2.12
- ----

Are blocks just blocks of bytes or are they typed?
How do count the size of blocks?

Lusk - Want to have blocks of typed data for use in a heterogeneous
environment.

PRP - Offers precise propsal that use the same parameters as in
MPI_ADD_BLOCK.

VOTE: Use exactly the same parameters in MPI_ADD_BLOCK as amended
- ----  Yes: 26 No: 0 Abstain: 1

Adam - Proposal to have functions to have strided messages using blocks.
Rusty - Argues against becasue of problem of proliferation at this
level.  [Arguement was clearly on matter of taste. This is syntactic
sugar as the most general low level routines certainly can be used
for this.]

VOTE: Have strided block message functions.
- ----  Yes: 5 No: 9 Abstain: 12

- -----
lunch 12:00 - 1:35
- -----

Continuation of discussion of Chapter 2.  Proposal that more time
discussing 2.10-2.14 needed, so p-p subcommittee will meet after
dinner tonight.

Discussion of Schedule
- ----------------------

Future meetings
  4. May 12-14       set
  5. June 23-25      set
  6. August 11-13    tent.
  7. September 22-24 tent.

Draft to be available: November 15-19  SC '93 Portland

Reading Schedule
- ----------------

P-P			Snir		April & May
Collective		Otto/Guist      April & May
Profiling		Cownie		April & May

Process Topolgy         Hempel          May & June
Environmental Mgmt      Gropp		May & June
Lang. Bind. gen.        Berryman	May & June
Context			Skjellum	May & June

Formal Spec		Zenith		June & August  ???

Specific language bindings will follow general material by one meeting.
Where is the language binding material?  There will be a general
principles chapter and also the actual bindings.  These will be
separate votes.

General language	Berryman	June
Specific lang. bind.	Berryman	

Is anything coming in the Formal Spec?  Does anyone care.  Rusty -
one participant and two observers.  Zenith told Rusty that he was
working on something, but nothing has appeared and he is not here.

What about public comment?  Discussion of the HPFF model of two
opportunities for comment.  Proposal to have only one round of public
comment with draft released to public at Supercomputing '93.

Reference implementation - Gropp/Lusk effort
Test suite - Greenberg and Haup will lead an effort
Subset - 

"Implementation Order Recommendation"

Huss

                                 Goals
 + Define a reasonable subset of MPI that is recommended for initial
   implementation

 + Only a minimum - welcome to implement more

 + Allow MPI to begin to show up in a timely fashion while still
   consistent across vendors

 + Consistent with complete standard
- --
                                Method
 + Create new "subset committee"
 + Write an Annex (like HPF)
 + Present flushed out proposal/annex at next meeting
 + Hope "other" committee will create initial test suite for minimal
implementation :-)  Might motivate implementors
- --
First shot list
  + want subcommitte members
  + Begin discussion via e-mail
- -----
NOT IN SUBSET
1  No persistent handles
2  No multicomponent buffer descriptors {only one item described}
3  No indexed component
4  No waitany or waitall
5  No name server model

If interested send mail to Huss


- -------------------------------------------------------------------------------
             Report From the Collective Communication Subcommittee
- -------------------------------------------------------------------------------

Collective Communications - First Reading
- -----------------------------------------

Steve Otto

Subcommitte of three met last night (Otto, Ho, El...)

Propose a discussion about safety, semantics and function of collect c
  NOT:  Contexts/groups
  NOT:  detailed questions of data types, lan. bind, p-p

Semantic Warm-up
- ----------------
  Barriere implies a time synchronization of processes, but NOT an
emptying of all message buffers.  I.e. p-p messages may span (in
time) a barrier:

   1					2
post-send(2)			post-receive(1)
barrier				barrier
complete-send(2)

barrier does not imply that message queues were emptied.  Object to
statement on p. 8. {{{QUOTE}}}
- --
If we want collective function that does ensure all messages queues
were emptied, let's invent it.

                          wait-for-all-global
Example 3. p. 46
Is this safe?

   0					1
bcast                /---------------   receive(0)
send(1)	------------/                   bcast

Does this deadlock?

Depends on implementation of bcast
 If bcast implemented with buffered contenxt-unique messages, probably won't deadlock
 If bcast synchronizes strongly, probably will deadlock

Otto unhappy about defining sematics of collective communication
routines in terms of operational p-p routines because this depends on
side effects such as emptying message queues.
- --
Cownie/Snir argue that this is not true because ... {{{MISSED}}}
- --
                         Conservative Proposal

Instead of mandating that example above is "safe", we propose that no
messages are allowed to be "in the air" upon entry to collective
communication call.  So:

We require that c-c routines be used AS IF they implied barrier synch
                                  but
                                  === 
the user cannot assume that they actually provide barrier synch 
- -- 

Confusion about what is actually intended.  Unhappiness about phrase
"in the air". The example above is unsafe, but is it erroneous?  Claim
is that this is unsafe, but an implementation that allows it is
compliant.

Now what is the situation of the example on p. 46?  It is there
because Marc want people to be aware that the behavior of a valid (if
unsafe) program may be surprising.
- --
Related point: May want to have a "barrier mode" for c-c so that they
do behave as barriers when this is on.  Useful - can detect many
erroneous programs.
- --
Keeping multiple c-c's separated
- --------------------------------
   /group 1                           /collective operation 2
[                          (    ]                               )
   \collective operation 1   ^         \group 2
                             |
                         can messages in here to go to wrong destination?

Intersecting spanning trees ... can they catch each other's messages

It seems that good implementations can be constructed so that they don't.

 ==> NOT dependent on user-tags

TAGS ARE SUPERFLUOUS FOR C-C
 + keep for consistency with p-p?
 + but, what is the implemntor supposed to do with them?
 + ignore them?
 + what do we tell users about tags in c-c?

We propose - NO TAGS in c-c!

- --
Why have them - for debugging.  Anything else?
Does lack of tags affect non-blocking c-c?  Yes.
Steve Huss: Want to make sure that system must insure that successive
broadcasts will never result in confusion of messages.
Marc: What is the exact semantics of c-c, in particular when is the
burden on the user of MPI to insure no ambiguity vs.l when this is
guaranteed by the system?  This is particularly important if
generalize to allow non-blocking c-c.
PRP: Might want to guarantee that ordering is guaranteed between c-c.
Snir: Certainly want to guarantee that if parameters in c-c are
different, then there is no ambiguity.  Further may guarantee even if have
same parameters.  Proposal - no tags and no ambiguity (so matching is
via parameters and sequencing.) [System responsiblity vs. user
responsiblity]
Steve: Wants MPI to guarantee preservation of order
Kapenga/Pierce: Order may not be meaningful
Gropp: Already have similar issue for p-p.
Snir: So what is behavior when order is not meaningful?
Cownie: Kapenga made important point that multithreaded libraries
cannot use c-c without context information.
Various: MIght be able to do this by using duplicated groups.  Again,
issues is what responsibility falls on system and what on user.
One possible solution is to require user to provide ordering of c-c.
- --

Functions
- ---------
  bcast
  barrier
  gather
  global reductions
  cshift/eoshift
  scans
  all-to-all bcast
  index
- --







3.1 Introduction
- ----------------
  Note that non-blocking c-c is not included

VOTE: Include non-blocking c-c?
- ----   Yes: 0 No: uncounted Abstain: 9

  Note that groups carry no topology information.

Weeks proposes adding a perfect shuffle c-c function.  Ranka proposes
adding a permutation c-c function.  Mention of variations on this.

Rik observes that the arbitrary buffer descriptor versions will be
extremely complex in implementation.  He also objected that this
cannot be implemented using p-p.  Marc responed that it is possible
using p-p because can send message to oneself.

Discuss this in detail when we get to the reduction section.

3.2 (Group Functions) & 3.3 (
- -----------------------------
LATER

3.4 Synchronization
- -------------------

Tag is removed, so examples are now wrong and must be replaced.

Jon wants the examples removed as they contain semantics that are not
guaranteed.  Marc suggests moving to appendix with the hope that this
would eventually contain a full specification of c-c in terms of p-p.
Agreed.

VOTE:  Remove tag in all c-c?
- ----   Yes: 15 No: 5 Abstain: 5

VOTE:  Accept just semantics of 3.4
- ----   Yes: 23 No: 0 Abstain: 2

- ---
break 3:15 p.m. - 3:35 p.m.
- ---

Ho has paper on collective-communication library.  He will make it
generally available.

3.5 (Data move functions)
- -------------------------

Otto: max size to shift?  NO

Issues:
  + What if inbuf is outbuf? 
  + Periodicity in topology?  [Hempel]
  + Tie topology to chsift    [Hemple]
  + cshift as sendreceive(source, destination, ...)  [Flower]

Allowing inbuf and outbuf to be the same violates F77. Rik -
user-level double buffering a pain.
various: back and forth on responsibility of user vs. system.
Steve Huss: Proposes a cshift with only 1 buffer.  
Disallowing partially overlapping buffers.  Note that this new cshift
will have an INOUT argument.
Does this same argument apply to other reduction functions?  Have to
check one by one.

VOTE:  Allow 2nd cshift with only one buffer. No partial overlap on
- ----   orig cshift
       Yes: 21 No: 0 Abstain: 6

Note that earlier encompassing vote imples that we will have types in
cshift.

Marc remarks that changes to measuring size in bytes affects
statement in text that buffers have same number of units.

eoshift
- -------

Second single buffer form?
zero filling - another argument?

VOTE:  Accept cshift, eoshift proposals with amendment of 2nd form of each.
- ----   Yes: 20 No: 2 Abstain: 4


bcast
- -----

VOTE:  Accept bcast
- ----   Yes: 22 No: 0 Abstain: 2

gather
- ------
 Note - len is number of bytes, not what is written.

 Long general, rambling discussion of gather.

Proposal - separate IN argument to gather of sizes; separate
functions to find sizes.

Proposal - version of gather with list of outbufs

Proposal [Flower] - all-to-all gather(???)

Cownie moved to direct gather and scatter back to subcommittee for
further consideration.  Accepted.


3.6 (Global Compute Operations)
- -------------------------------

Issues:  
  + inbuf=outbuf problem?
      2nd version
  + have types, so don't need (R,I)MAX, etc.
  + return value to all?
      3rd version
  + maxloc (etc.) return location and value
  + restriction on user defined functions
  + vectorized user function

Returned to committee for further work.

scan - nothing to say for today
correctness - nothing to say for today

Finished with collective communication for today.




- -------------------------------------------------------------------------------
                 Report From the Process Topology Subcommittee
- -------------------------------------------------------------------------------

Rolf Hempel presided.

No presentation, but need to discuss the direction to go.  First
question - is topology going to be part of group management at all?

Rolf remarks that vast majority of applications have a natural topology.
There are implementation efficiencies - e.g. avoiding tables for
mapping to processors.

Marc: User visible mapping of processes to processors is not likely
to be valuable.  Trend in hardware is to hide hardware topology.

What is the advantage of topology?  Convenient in writing programs
when topology is natural to problem.  This information may be useful
for implementation on particular systems.

What do vendors have to say about the utility of such information.
Cownie: The point is to be as flat as possible.  

Snir: Topology can certainly be built as a superstructure.  What is
value of integration?  Convenience, safety.  Safety does not appear
important and he does not see sufficient value to convenience.  Major
issue is relation of topologies and groups.  Can store topology as
part of group (current proposal) or as a superstructure (Marc's
preference.)

Certainly convenient to have standardized method to build e.g. row
group, column group, etc.  This is what is in current draft, but the
issue is one of integration.  But is it more efficient or even
substantially more convenient.

Three possibilies: Not in MPI, in MPI but not integrated, integrated
into group mechanism in MPI.

Various repetitive arguments for each of these positions.

Straw vote:  Topologies in MPI?
- ----------   If yes
                integrated with groups (e.g. eoshift), OR
                separate library, environmental inquiry
             In: 25 Out: 4 Abstain: 5
                integrated: 4  Separate: 23  Abstain: 7

Back to discussion in the subcommittee.

Meeting tonight:  p-p  room 1
                  c-c  room 2
 =============================================================================

                           Friday, April 2, 1993

- -------------------------------------------------------------------------------
                    Report From the Profiling Subcommittee
- -------------------------------------------------------------------------------

Profiling - Jim Cownie
- ----------------------

Based on draft section ?? of document.  This is a single level approach
and is basically static, i.e. based on selecting actual functions at link
time.

Questions:

1)  Is one level OK?
     - other option is chain of function pointers

2)  Debugging support?
     - Dump all message envelopes
     - Status of active handles

Single level has no extra cost, but limits as might want to use the
single level for another purpose e.g. as a network intermediary.

Yes, that limit could be significant.
Provide multi-level interface in the same manner (i.e. publishing
alternative names for each level)?  [Problem is setting the multiple
interfaces.] 
Provide environmental facilities for exporting a multi-level dynamic
approach?

General agreement that single level is better than extra cost for
everyone.  Note that single level actually can support full dynamic
approach as the MPI routines can be replace by functions that do function
pointer swizzling.


Debugging support?
- ------------------

A small amount of discussion last night.  What is needed and what can be
provided? Besides items mentioned above, need to be able to decode the
opaque objects in MPI.  Useful to have a recording mechanism.



- -------------------------------------------------------------------------------
                 Report From the Language Binding Subcommittee
- -------------------------------------------------------------------------------

Scott Berryman

Gross assumptions:
   No Fortran 90 binding
   C++ binding = C binding
   Specification says nothing about language interoperability
   {The confusion bomb went off!} 

[sender deals with native message; XDR in general; underspecified buffer
descriptors - incl. lengths or incl.  lang. spec.; general vs. limited
translation; know transl in hetero - don't know in homo; this is not just
a language issue - it is a language implementation issue][Need concrete
proposals]















- -------------------------------------------------------------------------------
     Report From the Point-to-Point Communication Subcommittee (continued)
- -------------------------------------------------------------------------------
Marc Snir

Byte vs. Element Count

 + Need ADD_VEC, ADD_INDEX with byte displacement

 + Most usage will be element displacement
- --
[R] [III] [R] [III] [R] [III] [R] [III]  (array of records) so odd displacement
- --
Have two different components

 + Block
    start
    len   -  number of elements
    data type

 + VEC
    start
    len  - total number of elements
    stride - number of elements between blocks
    lenblk - number of elements per block
    data type

 + HVEC
    start
    len - total number of elements
    stride - number of BYTES between blocks
    lenblk - number of elements per block
    data type

[///] [////] [ ][///] [////] [ ][///] [////] [ ]

  VEC(..., 5, 3, 2, REAL)
 HVEC(..., 5, 3*size_of_real, 2, REAL)

INDEX
  start
  array_of_indices - element index (start has index zero)
  type

HINDEX
  start
  array_of_indices - element displacement in bytes
  type

HVEC, HINDEX more general but less convenient and more error prone

Returned length of received messages
- ------------------------------------

Number of elements IS always meaningful (even for message containing
multiple type.)  And number of elements sent is always the same as the
number of elements received, while the number of bytes sent/received need
not be the same.  Moreover the number of elements is not too hard to compute.

Proposal: Use the element count except for displacements in Hxx buffer
components. 

Organizations present: 22

VOTE: proposal as above
- ----  Yes: 19  No: 0  Abstain: 3
Probe
- -----

1) Use to decide where to receive message (allocate memory)
2) Use to debug.

Propose to support 1.

Do we need probe?  Why not receive in a system buffer and return a pointer?
Problems - system buffer is untyped; memory management

Proposal:  MPI_PROBE(source, tag, context, flag, return_status_handle)
MPI_RETURN_STATUS(handle, len, source, tag)

Assuming no other concurrent receive (single thread) MPI_RECV executed
with source/tag returned by PROBE and same context will return message
found by probe.  Multithread programs need suitable critical region.

What is returned in the len field?  Should be the number of elements, but
unfortunately don't know this without buffer descriptor.  So return
number of bytes?  This may not be useful for deciding size of buffer in a
hetero env.  So possibilities:
  1)  len = -1
     and provide  DECODE(buff_desc, msg_status_handle)
  2)  Number of bytes ("on the wire")
  3)  Number of elements (cost of including this info in envelope)

Could have 2) and also provide DECODE.  The only inconvenience is the
difference in units between DECODE and RECEIVE.

Another alternative is to provide a data type as part of the PROBE rather
than a buffer_descriptor - this would cover the most common case of
uniform buffer_descriptors.

Cost of rebuilding buffer_descriptor for receive because have to add in
pointer for actual storage space. {{???Is this right}}

Oliver object proposal again

  4)  PROBE(source, tag, context, type, return_status_handle) returning
      number of elements.

Straw Vote:  Probe?
- ----------   Yes: 23  No: 2


Straw Vote:  1) probe - no length              8
- ----------   2) probe - simple type length    17
             3) probe - byte count            11
             4) probe - element count          6
             5) decode function               22


Cancel
- ------

MPI_CANCEL(handle)
  Either communication succeeds or CANCEL succeeds, but not both nor neither.
  (This is to cancel a non-blocking send.)

  + Need CANCEL to recover committed resource
  + Implementation is not trivial

Is it valid for CANCEL to always fail?  No, if there is a send with no
corresponding posted receive, then CANCEL must succeed.

Recognition that CANCEL may be a very expensive operation.  For example
it may require an interrupt drive mechanism.

What is the effect (cost) on normal communication?

Straw Vote:  CANCEL?
- ----------   Yes: 14  No: 6



Type Mismatch
- -------------

Suppose send 4 bytes and receive integer or conversely.  Is this unsafe
or erroneous?  Various proposals: type mismatch is always erroneous; type
mismatch is never erroneous; BYTE type is an escape hatch.  Another
proposal is to allow type conversion as well.

Straw Vote:
- ----------
             1.  type mismatch always erroneous             2
             2.  type mismatch erroneous except BYTE       12
             3.  never erroneous                            9



- -------------------------------------------------------------------------------
                              Report on MPI -1.2
- -------------------------------------------------------------------------------

Jim Cownie presented.


Procedure clarification:  All official votes require majority of ABSTENTIONS.

Added Features

  Insecure send for users who lack confidence

  Tags are opaque objects

  Message data is opaque

  All lengths are in bits, measure as floats (for sufficient precision)

  Messages are not passed in envelopes (they are too small), but packing
    crates. 

  Context proposal number server
    - returns 64 bit integer (expected to last at least 1 week)

  Group simplification: maximum number of elements in a group is 1

  All communications occur in a group


From owner-mpi-comm@CS.UTK.EDU Mon Aug  9 22:20:29 1993
Received: from CS.UTK.EDU by netlib2.cs.utk.edu with SMTP (5.61+IDA+UTK-930125/2.8t-netlib)
	id AA16990; Mon, 9 Aug 93 22:20:29 -0400
Received: from localhost by CS.UTK.EDU with SMTP (5.61+IDA+UTK-930125/2.8s-UTK)
	id AA21096; Mon, 9 Aug 93 22:18:03 -0400
X-Resent-To: mpi-comm@CS.UTK.EDU ; Mon, 9 Aug 1993 22:18:02 EDT
Errors-To: owner-mpi-comm@CS.UTK.EDU
Received: from noc.usfca.edu by CS.UTK.EDU with SMTP (5.61+IDA+UTK-930125/2.8s-UTK)
	id AA21088; Mon, 9 Aug 93 22:17:59 -0400
Received: by noc.usfca.edu (5.65/DEC-Ultrix/4.3)
	id AA16320; Mon, 9 Aug 1993 19:20:01 -0700
Received: by mobydick.usfca.edu.usfca.edu (4.1/SMI-4.1)
	id AA01133; Mon, 9 Aug 93 19:17:23 PDT
Date: Mon, 9 Aug 93 19:17:23 PDT
From: peter@mobydick.usfca.edu (Peter Pacheco)
Message-Id: <9308100217.AA01133@mobydick.usfca.edu.usfca.edu>
To: mpi-comm@cs.utk.edu
Subject: user's guide
Cc: peter@mobydick.usfca.edu

Salutations!

If we're to have a successful standard, it seems very important that
we have a User's Guide.  So I thought I would try to get the ball
rolling on this.  I've appended a draft table of contents with
a few notes.

We definitely need suggestions for sample programs that we
can include in the Guide.  At the beginning of the Guide, it 
would be good to have some short, easy programs to get the user 
started.  Later on, of course, it would be good to have some
longer, more sophisticated programs.  Throughout the Guide, 
it would be useful to have short examples illustrating various 
features of MPI.

So send your questions, comments, criticisms . . .

					Do your worst,
					Peter Pacheco
					Department of Mathematics
					University of San Francisco
					San Francisco, CA 94117
					(415) 666-6630
					peter@mobydick.usfca.edu


Introduction.
    [Brief discussion of history and purpose of MPI.]
    [Quick overview of MPI.]
    [Pointers to literature on parallel processing for those 
	users who need more background before reading the Guide.]

Chapter I.  Basic message passing using MPI.
    1.  MPI_SEND and MPI_RECV.
    2.  Basic program.
        [How about calculating a definite integral using the
        trapezoidal rule.  Include source code with mpi_init, 
	or whatever is decided on.  Will we also need to call
	mpi_iomode?]
    3.  More short examples.
    4.  Some short exercises.

Chapter 2.  Collective communication using MPI.
    1.  Making the basic program run faster.
	[Assuming trapezoidal rule:]
        (a)  Roll-your-own global sum.
        (b)  MPI_REDUCE.
    2.  Other MPI collective communication routines and examples.
        [Defer detailed discussion of some routines to appendix?]
        (a)  Barrier.
        (b)  Broadcast.
        (c)  Gather.
        (d)  Scatter.
        (e)  Scatter_gather.
        (f)  All_cast.
	(h)  Scan.
    3. Short exercises.

Chapter 3.  Writing larger programs with MPI.
    1.  Communicators (using naive user functions).
    2.  Topologies.
    3.  Writing programs that partition data.
        [A possible example:  Solve a pde using finite 
	differences on a mesh.]
    4.  Writing programs that partition control.
        [A possible example:  Supervisor-worker type 
	problem, e.g., find the chromatic number of a graph
	using the chromatic polynomial.]
    5.  Other Examples.
    6.  Estimating Performance.
    7.  Short Exercises [on use of communicators, etc.]

Chapter 4.  Debugging and Profiling.
    [Do we need this chapter?  MPI, of course,
    mandates nothing about debuggers or profilers.
    However, if the Guide is to be useful to the
    infamous "naive" user, it might be a good
    idea to include something here.]

Chapter 5.  Making your program run faster.
    1.  A quick overview of what happens when a message is sent.
    2.  Non-blocking communication in MPI.
    3.  User-defined buffering in MPI.
    4.  Parallel libraries and contexts.
    5.  Exercises.

Chapter 6.  Everything you always wanted to know about MPI.
    1.  Environmental enquiry functions.
    2.  More on communicators, groups, and contexts.
    3.  Exercises.

[Do we want a section on what's NOT in MPI, e.g., parallel i/o?
It also might be appropriate to include a section with
pointers to the literature on parallel algorithms.]

Appendix A.  A summary of MPI.

Bibliography.
From owner-mpi-comm@CS.UTK.EDU Wed Aug 11 11:04:58 1993
Received: from CS.UTK.EDU by netlib2.cs.utk.edu with SMTP (5.61+IDA+UTK-930125/2.8t-netlib)
	id AA03724; Wed, 11 Aug 93 11:04:58 -0400
Received: from localhost by CS.UTK.EDU with SMTP (5.61+IDA+UTK-930125/2.8s-UTK)
	id AA24741; Wed, 11 Aug 93 11:01:42 -0400
X-Resent-To: mpi-comm@CS.UTK.EDU ; Wed, 11 Aug 1993 11:01:40 EDT
Errors-To: owner-mpi-comm@CS.UTK.EDU
Received: from Aurora.CS.MsState.Edu by CS.UTK.EDU with SMTP (5.61+IDA+UTK-930125/2.8s-UTK)
	id AA24726; Wed, 11 Aug 93 11:01:39 -0400
Received:  by Aurora.CS.MsState.Edu (4.1/6.0s-FWP);
	   id AA01830; Wed, 11 Aug 93 10:01:37 CDT
Date: Wed, 11 Aug 93 10:01:37 CDT
From: Tony Skjellum <tony@Aurora.CS.MsState.Edu>
Message-Id: <9308111501.AA01830@Aurora.CS.MsState.Edu>
To: mpi-comm@cs.utk.edu
Subject: Netlib MPI Way out of Date

Everyone... I have just seen the context chapter from netlib, which
someone has brought to the meeting.  It is not even the June 24 version
of our document, it is something from May.

Netlib needs to be up-to-date, or we need to rely solely on anonymous
ftp.  People are asking me questions about versions of MPI drafts long
dead.  No wonder there is added confusion.

Can this be fixed?
Tony
From owner-mpi-comm@CS.UTK.EDU Mon Aug 16 09:11:38 1993
Received: from CS.UTK.EDU by netlib2.cs.utk.edu with SMTP (5.61+IDA+UTK-930125/2.8t-netlib)
	id AA23739; Mon, 16 Aug 93 09:11:38 -0400
Received: from localhost by CS.UTK.EDU with SMTP (5.61+IDA+UTK-930125/2.8s-UTK)
	id AA04143; Mon, 16 Aug 93 09:09:37 -0400
X-Resent-To: mpi-comm@CS.UTK.EDU ; Mon, 16 Aug 1993 09:09:36 EDT
Errors-To: owner-mpi-comm@CS.UTK.EDU
Received: from rios2.EPM.ORNL.GOV by CS.UTK.EDU with SMTP (5.61+IDA+UTK-930125/2.8s-UTK)
	id AA04135; Mon, 16 Aug 93 09:09:35 -0400
Received: by rios2.epm.ornl.gov (AIX 3.2/UCB 5.64/4.03)
          id AA23530; Mon, 16 Aug 1993 09:09:34 -0400
Message-Id: <9308161309.AA23530@rios2.epm.ornl.gov>
To: mpi-comm@cs.utk.edu
Subject: Fortran 90 bindings
Date: Mon, 16 Aug 93 09:09:33 -0500
From: David W. Walker <walker@rios2.epm.ornl.gov>



------- Forwarded Message

Received: from sun2.nsfnet-relay.ac.uk by rios2.epm.ornl.gov (AIX 3.2/UCB 5.64/4.03)
          id AA14642; Wed, 11 Aug 1993 06:29:54 -0400
Via: uk.ac.edinburgh.castle; Wed, 11 Aug 1993 11:29:10 +0100
Date: 11 Aug 93 11:27:35 BST
From: D Muxworthy <dtm@castle.edinburgh.ac.uk>
Subject: Guidelines for Bindings to Fortran 90
To: mjhanna@somnet.sandia.gov, benson@buffer.enet.dec.com, als@cs.umd.edu,
        walker@rios2.epm.ornl.gov, donn@bix.com
Message-Id: <9308111127.aa25840@uk.ac.ed.castle>
Status: O

You might be interested to know, or you might not, that the SC22/WG5 bindings
guidelines document is available as from today in compressed postscript form
from the NCSA anonymous ftp server. 

server: ftp.ncsa.uiuc.edu
file:   sc22wg5/N938.ps.Z

(use upper and lower case letters exactly as shown)

Best wishes,
David Muxworthy

------- End of Forwarded Message

From owner-mpi-comm@CS.UTK.EDU Tue Aug 17 00:59:20 1993
Received: from CS.UTK.EDU by netlib2.cs.utk.edu with SMTP (5.61+IDA+UTK-930125/2.8t-netlib)
	id AA00684; Tue, 17 Aug 93 00:59:20 -0400
Received: from localhost by CS.UTK.EDU with SMTP (5.61+IDA+UTK-930125/2.8s-UTK)
	id AA02644; Tue, 17 Aug 93 00:57:02 -0400
X-Resent-To: mpi-comm@CS.UTK.EDU ; Tue, 17 Aug 1993 00:56:56 EDT
Errors-To: owner-mpi-comm@CS.UTK.EDU
Received: from Aurora.CS.MsState.Edu by CS.UTK.EDU with SMTP (5.61+IDA+UTK-930125/2.8s-UTK)
	id AA02631; Tue, 17 Aug 93 00:56:53 -0400
Received:  by Aurora.CS.MsState.Edu (4.1/6.0s-FWP);
	   id AA19016; Mon, 16 Aug 93 23:56:51 CDT
Date: Mon, 16 Aug 93 23:56:51 CDT
From: Tony Skjellum <tony@Aurora.CS.MsState.Edu>
Message-Id: <9308170456.AA19016@Aurora.CS.MsState.Edu>
To: mpi-comm@cs.utk.edu
Subject: proposal: comp.parallel.mpi

Colleagues: I would like to have an unmoderated group, like Jack's
comp.parallel.pvm, so that post-MPI-meetings, we can promulgate info
in a timely and efficient manner.  Comments?  Anyone willing to 
give me the text that was used to propose comp.parallel.pvm?

Thanks,
Tony
From owner-mpi-comm@CS.UTK.EDU Tue Aug 17 08:01:34 1993
Received: from CS.UTK.EDU by netlib2.cs.utk.edu with SMTP (5.61+IDA+UTK-930125/2.8t-netlib)
	id AA01915; Tue, 17 Aug 93 08:01:34 -0400
Received: from localhost by CS.UTK.EDU with SMTP (5.61+IDA+UTK-930125/2.8s-UTK)
	id AA29925; Tue, 17 Aug 93 07:59:28 -0400
X-Resent-To: mpi-comm@CS.UTK.EDU ; Tue, 17 Aug 1993 07:59:27 EDT
Errors-To: owner-mpi-comm@CS.UTK.EDU
Received: from rios2.EPM.ORNL.GOV by CS.UTK.EDU with SMTP (5.61+IDA+UTK-930125/2.8s-UTK)
	id AA29917; Tue, 17 Aug 93 07:59:26 -0400
Received: by rios2.epm.ornl.gov (AIX 3.2/UCB 5.64/4.03)
          id AA13869; Tue, 17 Aug 1993 07:59:25 -0400
Message-Id: <9308171159.AA13869@rios2.epm.ornl.gov>
To: mpi-comm@cs.utk.edu
Subject: comp.parallel.mpi
Date: Tue, 17 Aug 93 07:59:24 -0500
From: David W. Walker <walker@rios2.epm.ornl.gov>


I think Tony's suggestion of a comp.parallel.mpi group is a good idea, but
only after the MPI draft has been presented at Supercomputing 93. If it's
established before this I think it will just increase the noise level.
There's little point, IMHO, of involving "outsiders" at this stage.

Regards,
David
 
From owner-mpi-comm@CS.UTK.EDU Tue Aug 17 09:54:02 1993
Received: from CS.UTK.EDU by netlib2.cs.utk.edu with SMTP (5.61+IDA+UTK-930125/2.8t-netlib)
	id AA02883; Tue, 17 Aug 93 09:54:02 -0400
Received: from localhost by CS.UTK.EDU with SMTP (5.61+IDA+UTK-930125/2.8s-UTK)
	id AA06781; Tue, 17 Aug 93 09:51:01 -0400
X-Resent-To: mpi-comm@CS.UTK.EDU ; Tue, 17 Aug 1993 09:51:00 EDT
Errors-To: owner-mpi-comm@CS.UTK.EDU
Received: from Aurora.CS.MsState.Edu by CS.UTK.EDU with SMTP (5.61+IDA+UTK-930125/2.8s-UTK)
	id AA06768; Tue, 17 Aug 93 09:50:58 -0400
Received:  by Aurora.CS.MsState.Edu (4.1/6.0s-FWP);
	   id AA19531; Tue, 17 Aug 93 08:50:57 CDT
Date: Tue, 17 Aug 93 08:50:57 CDT
From: Tony Skjellum <tony@Aurora.CS.MsState.Edu>
Message-Id: <9308171350.AA19531@Aurora.CS.MsState.Edu>
To: mpi-comm@cs.utk.edu, walker@rios2.epm.ornl.gov
Subject: Re:  comp.parallel.mpi

Given the latency of setting up a newsgroup, I will try to time it so
it comes into existence after SC93. - Tony
From owner-mpi-comm@CS.UTK.EDU Fri Aug 27 08:27:44 1993
Received: from CS.UTK.EDU by netlib2.cs.utk.edu with SMTP (5.61+IDA+UTK-930125/2.8t-netlib)
	id AA07742; Fri, 27 Aug 93 08:27:44 -0400
Received: from localhost by CS.UTK.EDU with SMTP (5.61+IDA+UTK-930125/2.8s-UTK)
	id AA12502; Fri, 27 Aug 93 08:24:43 -0400
X-Resent-To: mpi-comm@CS.UTK.EDU ; Fri, 27 Aug 1993 08:24:41 EDT
Errors-To: owner-mpi-comm@CS.UTK.EDU
Received: from hub.meiko.co.uk by CS.UTK.EDU with SMTP (5.61+IDA+UTK-930125/2.8s-UTK)
	id AA12494; Fri, 27 Aug 93 08:24:35 -0400
Received: from tycho.co.uk (tycho.meiko.co.uk) by hub.meiko.co.uk with SMTP id AA17512
  (5.65c/IDA-1.4.4 for mpi-comm@cs.utk.edu); Fri, 27 Aug 1993 13:24:32 +0100
Date: Fri, 27 Aug 1993 13:24:32 +0100
From: James Cownie <jim@meiko.co.uk>
Message-Id: <199308271224.AA17512@hub.meiko.co.uk>
Received: by tycho.co.uk (5.0/SMI-SVR4)
	id AA00275; Fri, 27 Aug 93 13:23:06 BST
To: mpi-comm@cs.utk.edu
Subject: T-Shirts !
Content-Length: 713

If we're serious about a T shirt we probably need to get our act
together NOW, for the next meeting. 

The reasons are

1) It would be good to have them before SC93
2) If the final meeting is in Europe, then there may be hassle over
   importing large numbers of T shirts.
3) U.S T shirts are better than European ones anyway !

I'm on vacation now for two weeks, and have no strong opinion on
design, however I'm sure lots of you do.

-- Jim
James Cownie 
Meiko Limited			Meiko Inc.
650 Aztec West			Reservoir Place
Bristol BS12 4SD		1601 Trapelo Road
England				Waltham
				MA 02154

Phone : +44 454 616171		+1 617 890 7676
FAX   : +44 454 618188		+1 617 890 5042
E-Mail: jim@meiko.co.uk   or    jim@meiko.com

From owner-mpi-comm@CS.UTK.EDU Fri Aug 27 12:41:16 1993
Received: from CS.UTK.EDU by netlib2.cs.utk.edu with SMTP (5.61+IDA+UTK-930125/2.8t-netlib)
	id AA09889; Fri, 27 Aug 93 12:41:16 -0400
Received: from localhost by CS.UTK.EDU with SMTP (5.61+IDA+UTK-930125/2.8s-UTK)
	id AA16516; Fri, 27 Aug 93 12:37:51 -0400
X-Resent-To: mpi-comm@CS.UTK.EDU ; Fri, 27 Aug 1993 12:37:49 EDT
Errors-To: owner-mpi-comm@CS.UTK.EDU
Received: from fslg8.fsl.noaa.gov by CS.UTK.EDU with SMTP (5.61+IDA+UTK-930125/2.8s-UTK)
	id AA16508; Fri, 27 Aug 93 12:37:46 -0400
Received: from macaw.fsl.noaa.gov by fslg8.fsl.noaa.gov (5.65/Ultrix3.0-C)
	id AA02850; Fri, 27 Aug 1993 15:37:34 GMT
Received: by macaw.fsl.noaa.gov (4.1/SMI-4.1)
	id AA00580; Thu, 26 Aug 93 17:10:23 MDT
Date: Thu, 26 Aug 93 17:10:23 MDT
From: hender@macaw.fsl.noaa.gov (Tom Henderson)
Message-Id: <9308262310.AA00580@macaw.fsl.noaa.gov>
To: mpi-comm@cs.utk.edu, jim@meiko.co.uk
Subject: Re: T-Shirts !


> If we're serious about a T shirt we probably need to get our act
> together NOW, for the next meeting. 
> 
> -- Jim

Sounds like a good idea to me.  Who is in charge of the T-shirt design 
subcommittee (he asks, not volunteering... :-)?  Al?  

Tom



From owner-mpi-comm@CS.UTK.EDU Fri Aug 27 13:10:34 1993
Received: from CS.UTK.EDU by netlib2.cs.utk.edu with SMTP (5.61+IDA+UTK-930125/2.8t-netlib)
	id AA10026; Fri, 27 Aug 93 13:10:34 -0400
Received: from localhost by CS.UTK.EDU with SMTP (5.61+IDA+UTK-930125/2.8s-UTK)
	id AA19089; Fri, 27 Aug 93 13:08:09 -0400
X-Resent-To: mpi-comm@CS.UTK.EDU ; Fri, 27 Aug 1993 13:08:07 EDT
Errors-To: owner-mpi-comm@CS.UTK.EDU
Received: from convex.convex.com by CS.UTK.EDU with SMTP (5.61+IDA+UTK-930125/2.8s-UTK)
	id AA19073; Fri, 27 Aug 93 13:08:04 -0400
Received: from mozart.convex.com by convex.convex.com (5.64/1.35)
	id AA29076; Fri, 27 Aug 93 12:07:48 -0500
Received: by mozart.convex.com (5.64/1.28)
	id AA17459; Fri, 27 Aug 93 12:07:07 -0500
From: joelw@mozart.convex.com (Joel Williamson)
Message-Id: <9308271707.AA17459@mozart.convex.com>
Subject: Re: T-Shirts !
To: hender@macaw.fsl.noaa.gov (Tom Henderson)
Date: Fri, 27 Aug 93 12:07:06 CDT
Cc: mpi-comm@cs.utk.edu, jim@meiko.co.uk
In-Reply-To: <9308262310.AA00580@macaw.fsl.noaa.gov>; from "Tom Henderson" at Aug 26, 93 5:10 pm
X-Mailer: ELM [version 2.3 PL11]

At HPFF we simply passed around the enclosed Tshirt design file, finding
and replacing text and submitting it back to the group for
praise/derision.  Eventually the group chairman Chuck Keolbel called for
a vote.  So just strip of this header, and lpr the remaining to a
postscript printer, modify and ship it back out.  Perhaps we can come up
with something more bold than "Don't blame me, I didn't vote for that
feature."

Best regards,

Joel Williamson

--------------cut here--------------------------
%!PS-Adobe-2.0 EPSF-1.2
%%DocumentFonts: Helvetica-Bold
%%Pages: 1
%%BoundingBox: 5 59 540 782
%%EndComments

50 dict begin

/arrowHeight 8 def
/arrowWidth 4 def
/none null def
/numGraphicParameters 17 def
/stringLimit 65535 def

/Begin {
save
numGraphicParameters dict begin
} def

/End {
end
restore
} def

/SetB {
dup type /nulltype eq {
pop
false /brushRightArrow idef
false /brushLeftArrow idef
true /brushNone idef
} {
/brushDashOffset idef
/brushDashArray idef
0 ne /brushRightArrow idef
0 ne /brushLeftArrow idef
/brushWidth idef
false /brushNone idef
} ifelse
} def

/SetCFg {
/fgblue idef
/fggreen idef
/fgred idef
} def

/SetCBg {
/bgblue idef
/bggreen idef
/bgred idef
} def

/SetF {
/printSize idef
/printFont idef
} def

/SetP {
dup type /nulltype eq {
pop true /patternNone idef
} {
/patternGrayLevel idef
patternGrayLevel -1 eq {
/patternString idef
} if
false /patternNone idef
} ifelse
} def

/BSpl {
0 begin
storexyn
newpath
n 1 gt {
0 0 0 0 0 0 1 1 true subspline
n 2 gt {
0 0 0 0 1 1 2 2 false subspline
1 1 n 3 sub {
/i exch def
i 1 sub dup i dup i 1 add dup i 2 add dup false subspline
} for
n 3 sub dup n 2 sub dup n 1 sub dup 2 copy false subspline
} if
n 2 sub dup n 1 sub dup 2 copy 2 copy false subspline
patternNone not brushLeftArrow not brushRightArrow not and and { ifill } if
brushNone not { istroke } if
0 0 1 1 leftarrow
n 2 sub dup n 1 sub dup rightarrow
} if
end
} dup 0 4 dict put def

/Circ {
newpath
0 360 arc
patternNone not { ifill } if
brushNone not { istroke } if
} def

/CBSpl {
0 begin
dup 2 gt {
storexyn
newpath
n 1 sub dup 0 0 1 1 2 2 true subspline
1 1 n 3 sub {
/i exch def
i 1 sub dup i dup i 1 add dup i 2 add dup false subspline
} for
n 3 sub dup n 2 sub dup n 1 sub dup 0 0 false subspline
n 2 sub dup n 1 sub dup 0 0 1 1 false subspline
patternNone not { ifill } if
brushNone not { istroke } if
} {
Poly
} ifelse
end
} dup 0 4 dict put def

/Elli {
0 begin
newpath
4 2 roll
translate
scale
0 0 1 0 360 arc
patternNone not { ifill } if
brushNone not { istroke } if
end
} dup 0 1 dict put def

/Line {
0 begin
2 storexyn
newpath
x 0 get y 0 get moveto
x 1 get y 1 get lineto
brushNone not { istroke } if
0 0 1 1 leftarrow
0 0 1 1 rightarrow
end
} dup 0 4 dict put def

/MLine {
0 begin
storexyn
newpath
n 1 gt {
x 0 get y 0 get moveto
1 1 n 1 sub {
/i exch def
x i get y i get lineto
} for
patternNone not brushLeftArrow not brushRightArrow not and and { ifill } if
brushNone not { istroke } if
0 0 1 1 leftarrow
n 2 sub dup n 1 sub dup rightarrow
} if
end
} dup 0 4 dict put def

/Poly {
3 1 roll
newpath
moveto
-1 add
{ lineto } repeat
closepath
patternNone not { ifill } if
brushNone not { istroke } if
} def

/Rect {
0 begin
/t exch def
/r exch def
/b exch def
/l exch def
newpath
l b moveto
l t lineto
r t lineto
r b lineto
closepath
patternNone not { ifill } if
brushNone not { istroke } if
end
} dup 0 4 dict put def

/Text {
ishow
} def

/idef {
dup where { pop pop pop } { exch def } ifelse
} def

/ifill {
0 begin
gsave
patternGrayLevel -1 ne {
fgred bgred fgred sub patternGrayLevel mul add
fggreen bggreen fggreen sub patternGrayLevel mul add
fgblue bgblue fgblue sub patternGrayLevel mul add setrgbcolor
eofill
} {
eoclip
originalCTM setmatrix
pathbbox /t exch def /r exch def /b exch def /l exch def
/w r l sub ceiling cvi def
/h t b sub ceiling cvi def
/imageByteWidth w 8 div ceiling cvi def
/imageHeight h def
bgred bggreen bgblue setrgbcolor
eofill
fgred fggreen fgblue setrgbcolor
w 0 gt h 0 gt and {
l b translate w h scale
w h true [w 0 0 h neg 0 h] { patternproc } imagemask
} if
} ifelse
grestore
end
} dup 0 8 dict put def

/istroke {
gsave
brushDashOffset -1 eq {
[] 0 setdash
1 setgray
} {
brushDashArray brushDashOffset setdash
fgred fggreen fgblue setrgbcolor
} ifelse
brushWidth setlinewidth
originalCTM setmatrix
stroke
grestore
} def

/ishow {
0 begin
gsave
fgred fggreen fgblue setrgbcolor
/fontDict printFont findfont printSize scalefont dup setfont def
/descender fontDict begin 0 [FontBBox] 1 get FontMatrix end
transform exch pop def
/vertoffset 0 descender sub printSize sub printFont /Courier ne
printFont /Courier-Bold ne and { 1 add } if def {
0 vertoffset moveto show
/vertoffset vertoffset printSize sub def
} forall
grestore
end
} dup 0 3 dict put def

/patternproc {
0 begin
/patternByteLength patternString length def
/patternHeight patternByteLength 8 mul sqrt cvi def
/patternWidth patternHeight def
/patternByteWidth patternWidth 8 idiv def
/imageByteMaxLength imageByteWidth imageHeight mul
stringLimit patternByteWidth sub min def
/imageMaxHeight imageByteMaxLength imageByteWidth idiv patternHeight idiv
patternHeight mul patternHeight max def
/imageHeight imageHeight imageMaxHeight sub store
/imageString imageByteWidth imageMaxHeight mul patternByteWidth add string def
0 1 imageMaxHeight 1 sub {
/y exch def
/patternRow y patternByteWidth mul patternByteLength mod def
/patternRowString patternString patternRow patternByteWidth getinterval def
/imageRow y imageByteWidth mul def
0 patternByteWidth imageByteWidth 1 sub {
/x exch def
imageString imageRow x add patternRowString putinterval
} for
} for
imageString
end
} dup 0 12 dict put def

/min {
dup 3 2 roll dup 4 3 roll lt { exch } if pop
} def

/max {
dup 3 2 roll dup 4 3 roll gt { exch } if pop
} def

/arrowhead {
0 begin
transform originalCTM itransform
/taily exch def
/tailx exch def
transform originalCTM itransform
/tipy exch def
/tipx exch def
/dy tipy taily sub def
/dx tipx tailx sub def
/angle dx 0 ne dy 0 ne or { dy dx atan } { 90 } ifelse def
gsave
originalCTM setmatrix
tipx tipy translate
angle rotate
newpath
0 0 moveto
arrowHeight neg arrowWidth 2 div lineto
arrowHeight neg arrowWidth 2 div neg lineto
closepath
patternNone not {
originalCTM setmatrix
/padtip arrowHeight 2 exp 0.25 arrowWidth 2 exp mul add sqrt brushWidth mul
arrowWidth div def
/padtail brushWidth 2 div def
tipx tipy translate
angle rotate
padtip 0 translate
arrowHeight padtip add padtail add arrowHeight div dup scale
arrowheadpath
ifill
} if
brushNone not {
originalCTM setmatrix
tipx tipy translate
angle rotate
arrowheadpath
istroke
} if
grestore
end
} dup 0 9 dict put def

/arrowheadpath {
newpath
0 0 moveto
arrowHeight neg arrowWidth 2 div lineto
arrowHeight neg arrowWidth 2 div neg lineto
closepath
} def

/leftarrow {
0 begin
y exch get /taily exch def
x exch get /tailx exch def
y exch get /tipy exch def
x exch get /tipx exch def
brushLeftArrow { tipx tipy tailx taily arrowhead } if
end
} dup 0 4 dict put def

/rightarrow {
0 begin
y exch get /tipy exch def
x exch get /tipx exch def
y exch get /taily exch def
x exch get /tailx exch def
brushRightArrow { tipx tipy tailx taily arrowhead } if
end
} dup 0 4 dict put def

/midpoint {
0 begin
/y1 exch def
/x1 exch def
/y0 exch def
/x0 exch def
x0 x1 add 2 div
y0 y1 add 2 div
end
} dup 0 4 dict put def

/thirdpoint {
0 begin
/y1 exch def
/x1 exch def
/y0 exch def
/x0 exch def
x0 2 mul x1 add 3 div
y0 2 mul y1 add 3 div
end
} dup 0 4 dict put def

/subspline {
0 begin
/movetoNeeded exch def
y exch get /y3 exch def
x exch get /x3 exch def
y exch get /y2 exch def
x exch get /x2 exch def
y exch get /y1 exch def
x exch get /x1 exch def
y exch get /y0 exch def
x exch get /x0 exch def
x1 y1 x2 y2 thirdpoint
/p1y exch def
/p1x exch def
x2 y2 x1 y1 thirdpoint
/p2y exch def
/p2x exch def
x1 y1 x0 y0 thirdpoint
p1x p1y midpoint
/p0y exch def
/p0x exch def
x2 y2 x3 y3 thirdpoint
p2x p2y midpoint
/p3y exch def
/p3x exch def
movetoNeeded { p0x p0y moveto } if
p1x p1y p2x p2y p3x p3y curveto
end
} dup 0 17 dict put def

/storexyn {
/n exch def
/y n array def
/x n array def
n 1 sub -1 0 {
/i exch def
y i 3 2 roll put
x i 3 2 roll put
} for
} def

%%EndProlog

%I Idraw 7 Grid 8 

%%Page: 1 1

Begin
%I b u
%I cfg u
%I cbg u
%I f u
%I p u
%I t
[ 0.8 0 0 0.8 0 0 ] concat
/originalCTM matrix currentmatrix def

Begin %I MLine
%I b 65535
1 0 0 [] 0 SetB
%I cfg Black
0 0 0 SetCFg
%I cbg White
1 1 1 SetCBg
%I p
1 SetP
%I t
[ 1 0 0 1 20 425.5 ] concat
%I 22
66 444
76 436
129 403
153 432
153 135
445 134
447 436
465 412
522 457
466 528
398 549
360 551
335 530
306 522
283 523
264 529
246 546
199 544
120 520
65 444
81 432
82 432
22 MLine
End

Begin %I Text
%I cfg Black
0 0 0 SetCFg
%I f *-helvetica-bold-r-*-140-*
/Helvetica-Bold 14 SetF
%I t
[ 3.30769 0 0 2.11765 493 787.029 ] concat
%I
[
(FRONT)
] Text
End

Begin %I MLine
%I b 65535
1 0 0 [] 0 SetB
%I cfg Black
0 0 0 SetCFg
%I cbg White
1 1 1 SetCBg
%I p
1 SetP
%I t
[ 1 0 0 1 22 -58.5 ] concat
%I 22
66 444
76 436
129 403
153 432
153 135
445 134
447 436
465 412
522 457
466 528
398 549
360 551
335 530
306 522
283 523
264 529
246 546
199 544
120 520
65 444
81 432
82 432
22 MLine
End

Begin %I Text
%I cfg Black
0 0 0 SetCFg
%I f *-helvetica-bold-r-*-140-*
/Helvetica-Bold 14 SetF
%I t
[ 3.11905 0 0 2.76471 546 262.441 ] concat
%I
[
(BACK)
] Text
End

Begin %I Text
%I cfg Black
0 0 0 SetCFg
%I f *-helvetica-bold-r-*-140-*
/Helvetica-Bold 14 SetF
%I t
[ 1 0 0 2.52941 233 362.382 ] concat
%I
[
(Don't blame me...)
] Text
End

Begin %I Text
%I cfg Black
0 0 0 SetCFg
%I f *-helvetica-bold-r-*-140-*
/Helvetica-Bold 14 SetF
%I t
[ 1 0 0 1.94118 234 275.676 ] concat
%I
[
(I didn't vote for that feature.)
] Text
End

Begin %I Text
%I cfg Black
0 0 0 SetCFg
%I f *-helvetica-bold-r-*-140-*
/Helvetica-Bold 14 SetF
%I t
[ 4.59975 0 0 4.77176 231.144 821.185 ] concat
%I
[
(HPFF)
] Text
End

Begin %I Text
%I cfg Black
0 0 0 SetCFg
%I f *-helvetica-bold-r-*-140-*
/Helvetica-Bold 14 SetF
%I t
[ 1.08333 0 0 1 234.581 843.5 ] concat
%I
[
(HIGH PERFORMANCE)
] Text
End

Begin %I Text
%I cfg Black
0 0 0 SetCFg
%I f *-helvetica-bold-r-*-140-*
/Helvetica-Bold 14 SetF
%I t
[ 1 0 0 1 234.539 766.5 ] concat
%I
[
(FORTRAN FORUM 1992)
] Text
End

Begin %I Text
%I cfg Black
0 0 0 SetCFg
%I f *-helvetica-bold-r-*-140-*
/Helvetica-Bold 14 SetF
%I t
[ 2.7907 0 0 4.76471 8.5 923.206 ] concat
%I
[
(#3)
] Text
End

End %I eop

showpage

%%Trailer

end

From owner-mpi-comm@CS.UTK.EDU Fri Aug 27 13:59:55 1993
Received: from CS.UTK.EDU by netlib2.cs.utk.edu with SMTP (5.61+IDA+UTK-930125/2.8t-netlib)
	id AA10208; Fri, 27 Aug 93 13:59:55 -0400
Received: from localhost by CS.UTK.EDU with SMTP (5.61+IDA+UTK-930125/2.8s-UTK)
	id AA22983; Fri, 27 Aug 93 13:57:52 -0400
X-Resent-To: mpi-comm@CS.UTK.EDU ; Fri, 27 Aug 1993 13:57:51 EDT
Errors-To: owner-mpi-comm@CS.UTK.EDU
Received: from msr.EPM.ORNL.GOV by CS.UTK.EDU with SMTP (5.61+IDA+UTK-930125/2.8s-UTK)
	id AA22973; Fri, 27 Aug 93 13:57:50 -0400
Received: by msr.EPM.ORNL.GOV (4.1/1.34)
	id AA24054; Fri, 27 Aug 93 13:57:49 EDT
Date: Fri, 27 Aug 93 13:57:49 EDT
From: geist@msr.EPM.ORNL.GOV (Al Geist)
Message-Id: <9308271757.AA24054@msr.EPM.ORNL.GOV>
To: mpi-comm@cs.utk.edu
Subject: Re: T-shirts


>Who is in charge of the T-shirt design? Al?

I am working on it. I have a design down on paper - need to turn into
postscript.

Al
From owner-mpi-comm@CS.UTK.EDU Thu Sep  9 10:27:45 1993
Received: from CS.UTK.EDU by netlib2.cs.utk.edu with SMTP (5.61+IDA+UTK-930125/2.8t-netlib)
	id AA18310; Thu, 9 Sep 93 10:27:45 -0400
Received: from localhost by CS.UTK.EDU with SMTP (5.61+IDA+UTK-930125/2.8s-UTK)
	id AA11629; Thu, 9 Sep 93 10:21:24 -0400
X-Resent-To: mpi-comm@CS.UTK.EDU ; Thu, 9 Sep 1993 10:21:21 EDT
Errors-To: owner-mpi-comm@CS.UTK.EDU
Received: from sun4.EPM.ORNL.GOV by CS.UTK.EDU with SMTP (5.61+IDA+UTK-930125/2.8s-UTK)
	id AA11606; Thu, 9 Sep 93 10:21:13 -0400
Received: by sun4.epm.ornl.gov (4.1/1.34)
	id AA21778; Thu, 9 Sep 93 10:21:10 EDT
Date: Thu, 9 Sep 93 10:21:10 EDT
From: geist@sun4.epm.ornl.gov (Al Geist)
Message-Id: <9309091421.AA21778@sun4.epm.ornl.gov>
To: mpi-comm@cs.utk.edu
Subject: Proposed T-shirt Design Front with back quote.


Hi Folks,

Here is a possible T-shirt design. There are still a few routines to add
that have not been presented to committee yet.
The top choice for qoute on the back is:

MPI: Defining The Current Practice of Tomorrow Today

Runner-up is:

Entia non sunt multiplicanda praeter necessitatem

I want to stay away from negative comments on MPI or other systems.

T-shirts R us
Al Geist
-------------
%!PS-Adobe-2.0 EPSF-1.2
%%DocumentFonts: Helvetica-Bold
%%Pages: 1
%%BoundingBox: 32 2 589 789
%%EndComments

/arrowHeight 10 def
/arrowWidth 5 def

/IdrawDict 51 dict def
IdrawDict begin

/reencodeISO {
dup dup findfont dup length dict begin
{ 1 index /FID ne { def }{ pop pop } ifelse } forall
/Encoding ISOLatin1Encoding def
currentdict end definefont
} def

/ISOLatin1Encoding [
/.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/quoteright
/parenleft/parenright/asterisk/plus/comma/minus/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/quoteleft/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/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
/.notdef/dotlessi/grave/acute/circumflex/tilde/macron/breve
/dotaccent/dieresis/.notdef/ring/cedilla/.notdef/hungarumlaut
/ogonek/caron/space/exclamdown/cent/sterling/currency/yen/brokenbar
/section/dieresis/copyright/ordfeminine/guillemotleft/logicalnot
/hyphen/registered/macron/degree/plusminus/twosuperior/threesuperior
/acute/mu/paragraph/periodcentered/cedilla/onesuperior/ordmasculine
/guillemotright/onequarter/onehalf/threequarters/questiondown
/Agrave/Aacute/Acircumflex/Atilde/Adieresis/Aring/AE/Ccedilla
/Egrave/Eacute/Ecircumflex/Edieresis/Igrave/Iacute/Icircumflex
/Idieresis/Eth/Ntilde/Ograve/Oacute/Ocircumflex/Otilde/Odieresis
/multiply/Oslash/Ugrave/Uacute/Ucircumflex/Udieresis/Yacute
/Thorn/germandbls/agrave/aacute/acircumflex/atilde/adieresis
/aring/ae/ccedilla/egrave/eacute/ecircumflex/edieresis/igrave
/iacute/icircumflex/idieresis/eth/ntilde/ograve/oacute/ocircumflex
/otilde/odieresis/divide/oslash/ugrave/uacute/ucircumflex/udieresis
/yacute/thorn/ydieresis
] def
/Helvetica-Bold reencodeISO def

/none null def
/numGraphicParameters 17 def
/stringLimit 65535 def

/Begin {
save
numGraphicParameters dict begin
} def

/End {
end
restore
} def

/SetB {
dup type /nulltype eq {
pop
false /brushRightArrow idef
false /brushLeftArrow idef
true /brushNone idef
} {
/brushDashOffset idef
/brushDashArray idef
0 ne /brushRightArrow idef
0 ne /brushLeftArrow idef
/brushWidth idef
false /brushNone idef
} ifelse
} def

/SetCFg {
/fgblue idef
/fggreen idef
/fgred idef
} def

/SetCBg {
/bgblue idef
/bggreen idef
/bgred idef
} def

/SetF {
/printSize idef
/printFont idef
} def

/SetP {
dup type /nulltype eq {
pop true /patternNone idef
} {
dup -1 eq {
/patternGrayLevel idef
/patternString idef
} {
/patternGrayLevel idef
} ifelse
false /patternNone idef
} ifelse
} def

/BSpl {
0 begin
storexyn
newpath
n 1 gt {
0 0 0 0 0 0 1 1 true subspline
n 2 gt {
0 0 0 0 1 1 2 2 false subspline
1 1 n 3 sub {
/i exch def
i 1 sub dup i dup i 1 add dup i 2 add dup false subspline
} for
n 3 sub dup n 2 sub dup n 1 sub dup 2 copy false subspline
} if
n 2 sub dup n 1 sub dup 2 copy 2 copy false subspline
patternNone not brushLeftArrow not brushRightArrow not and and { ifill } if
brushNone not { istroke } if
0 0 1 1 leftarrow
n 2 sub dup n 1 sub dup rightarrow
} if
end
} dup 0 4 dict put def

/Circ {
newpath
0 360 arc
patternNone not { ifill } if
brushNone not { istroke } if
} def

/CBSpl {
0 begin
dup 2 gt {
storexyn
newpath
n 1 sub dup 0 0 1 1 2 2 true subspline
1 1 n 3 sub {
/i exch def
i 1 sub dup i dup i 1 add dup i 2 add dup false subspline
} for
n 3 sub dup n 2 sub dup n 1 sub dup 0 0 false subspline
n 2 sub dup n 1 sub dup 0 0 1 1 false subspline
patternNone not { ifill } if
brushNone not { istroke } if
} {
Poly
} ifelse
end
} dup 0 4 dict put def

/Elli {
0 begin
newpath
4 2 roll
translate
scale
0 0 1 0 360 arc
patternNone not { ifill } if
brushNone not { istroke } if
end
} dup 0 1 dict put def

/Line {
0 begin
2 storexyn
newpath
x 0 get y 0 get moveto
x 1 get y 1 get lineto
brushNone not { istroke } if
0 0 1 1 leftarrow
0 0 1 1 rightarrow
end
} dup 0 4 dict put def

/MLine {
0 begin
storexyn
newpath
n 1 gt {
x 0 get y 0 get moveto
1 1 n 1 sub {
/i exch def
x i get y i get lineto
} for
patternNone not brushLeftArrow not brushRightArrow not and and { ifill } if
brushNone not { istroke } if
0 0 1 1 leftarrow
n 2 sub dup n 1 sub dup rightarrow
} if
end
} dup 0 4 dict put def

/Poly {
3 1 roll
newpath
moveto
-1 add
{ lineto } repeat
closepath
patternNone not { ifill } if
brushNone not { istroke } if
} def

/Rect {
0 begin
/t exch def
/r exch def
/b exch def
/l exch def
newpath
l b moveto
l t lineto
r t lineto
r b lineto
closepath
patternNone not { ifill } if
brushNone not { istroke } if
end
} dup 0 4 dict put def

/Text {
ishow
} def

/idef {
dup where { pop pop pop } { exch def } ifelse
} def

/ifill {
0 begin
gsave
patternGrayLevel -1 ne {
fgred bgred fgred sub patternGrayLevel mul add
fggreen bggreen fggreen sub patternGrayLevel mul add
fgblue bgblue fgblue sub patternGrayLevel mul add setrgbcolor
eofill
} {
eoclip
originalCTM setmatrix
pathbbox /t exch def /r exch def /b exch def /l exch def
/w r l sub ceiling cvi def
/h t b sub ceiling cvi def
/imageByteWidth w 8 div ceiling cvi def
/imageHeight h def
bgred bggreen bgblue setrgbcolor
eofill
fgred fggreen fgblue setrgbcolor
w 0 gt h 0 gt and {
l b translate w h scale
w h true [w 0 0 h neg 0 h] { patternproc } imagemask
} if
} ifelse
grestore
end
} dup 0 8 dict put def

/istroke {
gsave
brushDashOffset -1 eq {
[] 0 setdash
1 setgray
} {
brushDashArray brushDashOffset setdash
fgred fggreen fgblue setrgbcolor
} ifelse
brushWidth setlinewidth
originalCTM setmatrix
stroke
grestore
} def

/ishow {
0 begin
gsave
fgred fggreen fgblue setrgbcolor
/fontDict printFont printSize scalefont dup setfont def
/descender fontDict begin 0 [FontBBox] 1 get FontMatrix end
transform exch pop def
/vertoffset 1 printSize sub descender sub def {
0 vertoffset moveto show
/vertoffset vertoffset printSize sub def
} forall
grestore
end
} dup 0 3 dict put def
/patternproc {
0 begin
/patternByteLength patternString length def
/patternHeight patternByteLength 8 mul sqrt cvi def
/patternWidth patternHeight def
/patternByteWidth patternWidth 8 idiv def
/imageByteMaxLength imageByteWidth imageHeight mul
stringLimit patternByteWidth sub min def
/imageMaxHeight imageByteMaxLength imageByteWidth idiv patternHeight idiv
patternHeight mul patternHeight max def
/imageHeight imageHeight imageMaxHeight sub store
/imageString imageByteWidth imageMaxHeight mul patternByteWidth add string def
0 1 imageMaxHeight 1 sub {
/y exch def
/patternRow y patternByteWidth mul patternByteLength mod def
/patternRowString patternString patternRow patternByteWidth getinterval def
/imageRow y imageByteWidth mul def
0 patternByteWidth imageByteWidth 1 sub {
/x exch def
imageString imageRow x add patternRowString putinterval
} for
} for
imageString
end
} dup 0 12 dict put def

/min {
dup 3 2 roll dup 4 3 roll lt { exch } if pop
} def

/max {
dup 3 2 roll dup 4 3 roll gt { exch } if pop
} def

/midpoint {
0 begin
/y1 exch def
/x1 exch def
/y0 exch def
/x0 exch def
x0 x1 add 2 div
y0 y1 add 2 div
end
} dup 0 4 dict put def

/thirdpoint {
0 begin
/y1 exch def
/x1 exch def
/y0 exch def
/x0 exch def
x0 2 mul x1 add 3 div
y0 2 mul y1 add 3 div
end
} dup 0 4 dict put def

/subspline {
0 begin
/movetoNeeded exch def
y exch get /y3 exch def
x exch get /x3 exch def
y exch get /y2 exch def
x exch get /x2 exch def
y exch get /y1 exch def
x exch get /x1 exch def
y exch get /y0 exch def
x exch get /x0 exch def
x1 y1 x2 y2 thirdpoint
/p1y exch def
/p1x exch def
x2 y2 x1 y1 thirdpoint
/p2y exch def
/p2x exch def
x1 y1 x0 y0 thirdpoint
p1x p1y midpoint
/p0y exch def
/p0x exch def
x2 y2 x3 y3 thirdpoint
p2x p2y midpoint
/p3y exch def
/p3x exch def
movetoNeeded { p0x p0y moveto } if
p1x p1y p2x p2y p3x p3y curveto
end
} dup 0 17 dict put def

/storexyn {
/n exch def
/y n array def
/x n array def
n 1 sub -1 0 {
/i exch def
y i 3 2 roll put
x i 3 2 roll put
} for
} def

%%EndProlog

%%BeginIdrawPrologue
/arrowhead {
0 begin
transform originalCTM itransform
/taily exch def
/tailx exch def
transform originalCTM itransform
/tipy exch def
/tipx exch def
/dy tipy taily sub def
/dx tipx tailx sub def
/angle dx 0 ne dy 0 ne or { dy dx atan } { 90 } ifelse def
gsave
originalCTM setmatrix
tipx tipy translate
angle rotate
newpath
arrowHeight neg arrowWidth 2 div moveto
0 0 lineto
arrowHeight neg arrowWidth 2 div neg lineto
patternNone not {
originalCTM setmatrix
/padtip arrowHeight 2 exp 0.25 arrowWidth 2 exp mul add sqrt brushWidth mul
arrowWidth div def
/padtail brushWidth 2 div def
tipx tipy translate
angle rotate
padtip 0 translate
arrowHeight padtip add padtail add arrowHeight div dup scale
arrowheadpath
ifill
} if
brushNone not {
originalCTM setmatrix
tipx tipy translate
angle rotate
arrowheadpath
istroke
} if
grestore
end
} dup 0 9 dict put def

/arrowheadpath {
newpath
arrowHeight neg arrowWidth 2 div moveto
0 0 lineto
arrowHeight neg arrowWidth 2 div neg lineto
} def

/leftarrow {
0 begin
y exch get /taily exch def
x exch get /tailx exch def
y exch get /tipy exch def
x exch get /tipx exch def
brushLeftArrow { tipx tipy tailx taily arrowhead } if
end
} dup 0 4 dict put def

/rightarrow {
0 begin
y exch get /tipy exch def
x exch get /tipx exch def
y exch get /taily exch def
x exch get /tailx exch def
brushRightArrow { tipx tipy tailx taily arrowhead } if
end
} dup 0 4 dict put def

%%EndIdrawPrologue

%I Idraw 10 Grid 8 8 

%%Page: 1 1

Begin
%I b u
%I cfg u
%I cbg u
%I f u
%I p u
%I t
[ 0.799705 0 0 0.799705 0 0 ] concat
/originalCTM matrix currentmatrix def

Begin %I Pict
%I b u
%I cfg u
%I cbg u
%I f u
%I p u
%I t
[ 1 0 0 1 32 4 ] concat

Begin %I Text
%I cfg Green
0 1 0 SetCFg
%I f *-helvetica-bold-r-*-140-*
Helvetica-Bold 14 SetF
%I t
[ 2.61386e-08 2.14815 -2.14815 2.61386e-08 637.259 77.1852 ] concat
%I
[
(Back:)
] Text
End

Begin %I Text
%I cfg Red
1 0 0 SetCFg
%I f *-helvetica-bold-r-*-140-*
Helvetica-Bold 14 SetF
%I t
[ 2.06326e-08 1.69565 -1.69565 2.06326e-08 634.783 209 ] concat
%I
[
(            MPI:  Defining )
(The current Practice of Tomorrow)
(                  Today.)
] Text
End

Begin %I Text
%I cfg Black
0 0 0 SetCFg
%I f *-helvetica-bold-r-*-140-*
Helvetica-Bold 14 SetF
%I t
[ 1.2168e-08 1 -1 1.2168e-08 129 551 ] concat
%I
[
(MPI_ADDRESS)
] Text
End

Begin %I Text
%I cfg Black
0 0 0 SetCFg
%I f *-helvetica-bold-r-*-140-*
Helvetica-Bold 14 SetF
%I t
[ 0.974059 0.226296 -0.226296 0.974059 249.653 331.169 ] concat
%I
[
(MPI_ALLCAST)
] Text
End

Begin %I Text
%I cfg Black
0 0 0 SetCFg
%I f *-helvetica-bold-r-*-140-*
Helvetica-Bold 14 SetF
%I t
[ 1 -3.55271e-14 3.55271e-14 1 364 955 ] concat
%I
[
(MPI_ALLREDUCE)
] Text
End

Begin %I Text
%I cfg Black
0 0 0 SetCFg
%I f *-helvetica-bold-r-*-140-*
Helvetica-Bold 14 SetF
%I t
[ 1.2168e-08 1 -1 1.2168e-08 239 557 ] concat
%I
[
(MPI_ALLTOALL)
] Text
End

Begin %I Text
%I cfg Black
0 0 0 SetCFg
%I f *-helvetica-bold-r-*-140-*
Helvetica-Bold 14 SetF
%I t
[ -0.903278 0.429057 -0.429057 -0.903278 141.341 271.178 ] concat
%I
[
(MPI_BCAST)
] Text
End

Begin %I Text
%I cfg Black
0 0 0 SetCFg
%I f *-helvetica-bold-r-*-140-*
Helvetica-Bold 14 SetF
%I t
[ 1 0 0 1 195 489 ] concat
%I
[
(MPI_ATTRIBUTE_ALLOC)
] Text
End

Begin %I Text
%I cfg Black
0 0 0 SetCFg
%I f *-helvetica-bold-r-*-140-*
Helvetica-Bold 14 SetF
%I t
[ 1.2168e-08 1 -1 1.2168e-08 41 523 ] concat
%I
[
(MPI_ATTRIBUTE_FREE)
] Text
End

Begin %I Text
%I cfg Black
0 0 0 SetCFg
%I f *-helvetica-bold-r-*-140-*
Helvetica-Bold 14 SetF
%I t
[ 1.2168e-08 1 -1 1.2168e-08 458 138 ] concat
%I
[
(MPI_BARRIER)
] Text
End

Begin %I Text
%I cfg Black
0 0 0 SetCFg
%I f *-helvetica-bold-r-*-140-*
Helvetica-Bold 14 SetF
%I t
[ -1 2.43359e-08 -2.43359e-08 -1 112 32.0004 ] concat
%I
[
(MPI_CANCEL)
] Text
End

Begin %I Text
%I cfg Black
0 0 0 SetCFg
%I f *-helvetica-bold-r-*-140-*
Helvetica-Bold 14 SetF
%I t
[ 1 0 0 1 373 491 ] concat
%I
[
(MPI_CART)
] Text
End

Begin %I Text
%I cfg Black
0 0 0 SetCFg
%I f *-helvetica-bold-r-*-140-*
Helvetica-Bold 14 SetF
%I t
[ -0.971508 0.237007 -0.237007 -0.971508 220.936 69.8524 ] concat
%I
[
(MPI_COLL_SUBGROUP)
] Text
End

Begin %I Text
%I cfg Black
0 0 0 SetCFg
%I f *-helvetica-bold-r-*-140-*
Helvetica-Bold 14 SetF
%I t
[ 1.2168e-08 1 -1 1.2168e-08 180 551 ] concat
%I
[
(MPI_COMM_CONTEXT)
] Text
End

Begin %I Text
%I cfg Black
0 0 0 SetCFg
%I f *-helvetica-bold-r-*-140-*
Helvetica-Bold 14 SetF
%I t
[ 1.2168e-08 1 -1 1.2168e-08 570 8.99997 ] concat
%I
[
(MPI_COMM_DUP)
] Text
End

Begin %I Text
%I cfg Black
0 0 0 SetCFg
%I f *-helvetica-bold-r-*-140-*
Helvetica-Bold 14 SetF
%I t
[ 1.2168e-08 1 -1 1.2168e-08 474 587 ] concat
%I
[
(MPI_COMM_FREE)
] Text
End

Begin %I Text
%I cfg Black
0 0 0 SetCFg
%I f *-helvetica-bold-r-*-140-*
Helvetica-Bold 14 SetF
%I t
[ 1.2168e-08 1 -1 1.2168e-08 152 554 ] concat
%I
[
(MPI_COMM_GROUP)
] Text
End

Begin %I Text
%I cfg Black
0 0 0 SetCFg
%I f *-helvetica-bold-r-*-140-*
Helvetica-Bold 14 SetF
%I t
[ -0.972983 0.230877 -0.230877 -0.972983 333.252 69.5133 ] concat
%I
[
(MPI_COMM_INIT)
] Text
End

Begin %I Text
%I cfg Black
0 0 0 SetCFg
%I f *-helvetica-bold-r-*-140-*
Helvetica-Bold 14 SetF
%I t
[ 0.974479 0.224481 -0.224481 0.974479 191.075 417.444 ] concat
%I
[
(MPI_COMM_MAKE)
] Text
End

Begin %I Text
%I cfg Black
0 0 0 SetCFg
%I f *-helvetica-bold-r-*-140-*
Helvetica-Bold 14 SetF
%I t
[ 1.2168e-08 1 -1 1.2168e-08 569 145 ] concat
%I
[
(MPI_COMM_NAME_MAKE)
] Text
End

Begin %I Text
%I cfg Black
0 0 0 SetCFg
%I f *-helvetica-bold-r-*-140-*
Helvetica-Bold 14 SetF
%I t
[ 1.2168e-08 1 -1 1.2168e-08 567 345 ] concat
%I
[
(MPI_CREATE_GROUP)
] Text
End

Begin %I Text
%I cfg Black
0 0 0 SetCFg
%I f *-helvetica-bold-r-*-140-*
Helvetica-Bold 14 SetF
%I t
[ 1 -3.55271e-14 3.55271e-14 1 216.5 957.5 ] concat
%I
[
(MPI_CREATE_RECV)
] Text
End

Begin %I Text
%I cfg Black
0 0 0 SetCFg
%I f *-helvetica-bold-r-*-140-*
Helvetica-Bold 14 SetF
%I t
[ 1.2168e-08 1 -1 1.2168e-08 563 522 ] concat
%I
[
(MPI_CREATE_RSEND)
] Text
End

Begin %I Text
%I cfg Black
0 0 0 SetCFg
%I f *-helvetica-bold-r-*-140-*
Helvetica-Bold 14 SetF
%I t
[ 1.2168e-08 1 -1 1.2168e-08 451 580 ] concat
%I
[
(MPI_CREATE_SEND)
] Text
End

Begin %I Text
%I cfg Black
0 0 0 SetCFg
%I f *-helvetica-bold-r-*-140-*
Helvetica-Bold 14 SetF
%I t
[ 0.0137466 0.999906 -0.999906 0.0137466 478.798 237.077 ] concat
%I
[
(MPI_DELETE_ATTRIBUTE)
] Text
End

Begin %I Text
%I cfg Black
0 0 0 SetCFg
%I f *-helvetica-bold-r-*-140-*
Helvetica-Bold 14 SetF
%I t
[ 1.2168e-08 1 -1 1.2168e-08 564 839 ] concat
%I
[
(MPI_EXCHANGE)
] Text
End

Begin %I Text
%I cfg Black
0 0 0 SetCFg
%I f *-helvetica-bold-r-*-140-*
Helvetica-Bold 14 SetF
%I t
[ 1.2168e-08 1 -1 1.2168e-08 449 731 ] concat
%I
[
(MPI_GATHER)
] Text
End

Begin %I Text
%I cfg Black
0 0 0 SetCFg
%I f *-helvetica-bold-r-*-140-*
Helvetica-Bold 14 SetF
%I t
[ 1 0 0 1 114 911 ] concat
%I
[
(MPI_GET_ATTRIBUTE_KEY)
] Text
End

Begin %I Text
%I cfg Black
0 0 0 SetCFg
%I f *-helvetica-bold-r-*-140-*
Helvetica-Bold 14 SetF
%I t
[ 1.2168e-08 1 -1 1.2168e-08 336 583 ] concat
%I
[
(MPI_GET_COUNT)
] Text
End

Begin %I Text
%I cfg Black
0 0 0 SetCFg
%I f *-helvetica-bold-r-*-140-*
Helvetica-Bold 14 SetF
%I t
[ 1.2168e-08 1 -1 1.2168e-08 405 147 ] concat
%I
[
(MPI_GET_SOURCE)
] Text
End

Begin %I Text
%I cfg Black
0 0 0 SetCFg
%I f *-helvetica-bold-r-*-140-*
Helvetica-Bold 14 SetF
%I t
[ 1.2168e-08 1 -1 1.2168e-08 372 164 ] concat
%I
[
(MPI_GET_TAG)
] Text
End

Begin %I Text
%I cfg Black
0 0 0 SetCFg
%I f *-helvetica-bold-r-*-140-*
Helvetica-Bold 14 SetF
%I t
[ 1.2168e-08 1 -1 1.2168e-08 253 737 ] concat
%I
[
(MPI_GRAPH)
] Text
End

Begin %I Text
%I cfg Black
0 0 0 SetCFg
%I f *-helvetica-bold-r-*-140-*
Helvetica-Bold 14 SetF
%I t
[ 1.2168e-08 1 -1 1.2168e-08 387 699 ] concat
%I
[
(MPI_GRAPHDIMS)
] Text
End

Begin %I Text
%I cfg Black
0 0 0 SetCFg
%I f *-helvetica-bold-r-*-140-*
Helvetica-Bold 14 SetF
%I t
[ 1.2168e-08 1 -1 1.2168e-08 22 545 ] concat
%I
[
(MPI_GROUP_DUP)
] Text
End

Begin %I Text
%I cfg Black
0 0 0 SetCFg
%I f *-helvetica-bold-r-*-140-*
Helvetica-Bold 14 SetF
%I t
[ -0.967074 0.254493 -0.254493 -0.967074 372.005 33.4863 ] concat
%I
[
(MPI_GROUP_FREE)
] Text
End

Begin %I Text
%I cfg Black
0 0 0 SetCFg
%I f *-helvetica-bold-r-*-140-*
Helvetica-Bold 14 SetF
%I t
[ 1.2168e-08 1 -1 1.2168e-08 209 552 ] concat
%I
[
(MPI_GROUP_RANK)
] Text
End

Begin %I Text
%I cfg Black
0 0 0 SetCFg
%I f *-helvetica-bold-r-*-140-*
Helvetica-Bold 14 SetF
%I t
[ 1.2168e-08 1 -1 1.2168e-08 563 696 ] concat
%I
[
(MPI_GROUP_SIZE)
] Text
End

Begin %I Text
%I cfg Black
0 0 0 SetCFg
%I f *-helvetica-bold-r-*-140-*
Helvetica-Bold 14 SetF
%I t
[ 1.2168e-08 1 -1 1.2168e-08 411 585 ] concat
%I
[
(MPI_INQCART)
] Text
End

Begin %I Text
%I cfg Black
0 0 0 SetCFg
%I f *-helvetica-bold-r-*-140-*
Helvetica-Bold 14 SetF
%I t
[ 1.2168e-08 1 -1 1.2168e-08 357 731 ] concat
%I
[
(MPI_INQDIM)
] Text
End

Begin %I Text
%I cfg Black
0 0 0 SetCFg
%I f *-helvetica-bold-r-*-140-*
Helvetica-Bold 14 SetF
%I t
[ -0.941742 0.336336 -0.336336 -0.941742 284.527 288.788 ] concat
%I
[
(MPI_INQGRAPH)
] Text
End

Begin %I Text
%I cfg Black
0 0 0 SetCFg
%I f *-helvetica-bold-r-*-140-*
Helvetica-Bold 14 SetF
%I t
[ -1 2.4336e-08 -2.4336e-08 -1 116 79.0001 ] concat
%I
[
(MPI_INQLOC)
] Text
End

Begin %I Text
%I cfg Black
0 0 0 SetCFg
%I f *-helvetica-bold-r-*-140-*
Helvetica-Bold 14 SetF
%I t
[ 1 0 0 1 114 956 ] concat
%I
[
(MPI_INQMAP)
] Text
End

Begin %I Text
%I cfg Black
0 0 0 SetCFg
%I f *-helvetica-bold-r-*-140-*
Helvetica-Bold 14 SetF
%I t
[ 1.2168e-08 1 -1 1.2168e-08 473 724 ] concat
%I
[
(MPI_INQRANK)
] Text
End

Begin %I Text
%I cfg Black
0 0 0 SetCFg
%I f *-helvetica-bold-r-*-140-*
Helvetica-Bold 14 SetF
%I t
[ 1.2168e-08 1 -1 1.2168e-08 335 734 ] concat
%I
[
(MPI_IPROBE)
] Text
End

Begin %I Text
%I cfg Black
0 0 0 SetCFg
%I f *-helvetica-bold-r-*-140-*
Helvetica-Bold 14 SetF
%I t
[ 1.2168e-08 1 -1 1.2168e-08 46 427 ] concat
%I
[
(MPI_IRECV)
] Text
End

Begin %I Text
%I cfg Black
0 0 0 SetCFg
%I f *-helvetica-bold-r-*-140-*
Helvetica-Bold 14 SetF
%I t
[ 1 0 0 1 482 975 ] concat
%I
[
(MPI_IRSEND)
] Text
End

Begin %I Text
%I cfg Black
0 0 0 SetCFg
%I f *-helvetica-bold-r-*-140-*
Helvetica-Bold 14 SetF
%I t
[ 1.2168e-08 1 -1 1.2168e-08 212 750 ] concat
%I
[
(MPI_ISEND)
] Text
End

Begin %I Text
%I cfg Black
0 0 0 SetCFg
%I f *-helvetica-bold-r-*-140-*
Helvetica-Bold 14 SetF
%I t
[ 1 0 0 1 454.5 571.5 ] concat
%I
[
(MPI_ISSEND)
] Text
End

Begin %I Text
%I cfg Black
0 0 0 SetCFg
%I f *-helvetica-bold-r-*-140-*
Helvetica-Bold 14 SetF
%I t
[ 1.2168e-08 1 -1 1.2168e-08 404 295 ] concat
%I
[
(MPI_MAKDIM)
] Text
End

Begin %I Text
%I cfg Black
0 0 0 SetCFg
%I f *-helvetica-bold-r-*-140-*
Helvetica-Bold 14 SetF
%I t
[ 1.2168e-08 1 -1 1.2168e-08 44 101 ] concat
%I
[
(MPI_MAP_CART)
] Text
End

Begin %I Text
%I cfg Black
0 0 0 SetCFg
%I f *-helvetica-bold-r-*-140-*
Helvetica-Bold 14 SetF
%I t
[ 1 0 0 1 352.5 977.5 ] concat
%I
[
(MPI_MAP_GRAPH)
] Text
End

Begin %I Text
%I cfg Black
0 0 0 SetCFg
%I f *-helvetica-bold-r-*-140-*
Helvetica-Bold 14 SetF
%I t
[ 1.2168e-08 1 -1 1.2168e-08 176 404 ] concat
%I
[
(MPI_PARTC)
] Text
End

Begin %I Text
%I cfg Black
0 0 0 SetCFg
%I f *-helvetica-bold-r-*-140-*
Helvetica-Bold 14 SetF
%I t
[ 0.894427 0.447214 -0.447214 0.894427 62.304 227.242 ] concat
%I
[
(MPI_PROBE)
] Text
End

Begin %I Text
%I cfg Black
0 0 0 SetCFg
%I f *-helvetica-bold-r-*-140-*
Helvetica-Bold 14 SetF
%I t
[ 1.2168e-08 1 -1 1.2168e-08 324 176 ] concat
%I
[
(MPI_PROBE_COUNT)
] Text
End

Begin %I Text
%I cfg Black
0 0 0 SetCFg
%I f *-helvetica-bold-r-*-140-*
Helvetica-Bold 14 SetF
%I t
[ 1.2168e-08 1 -1 1.2168e-08 373 277 ] concat
%I
[
(MPI_RECV)
] Text
End

Begin %I Text
%I cfg Black
0 0 0 SetCFg
%I f *-helvetica-bold-r-*-140-*
Helvetica-Bold 14 SetF
%I t
[ 0.0167756 0.99986 -0.99986 0.0167756 270.195 187.091 ] concat
%I
[
(MPI_REDUCE)
] Text
End

Begin %I Text
%I cfg Black
0 0 0 SetCFg
%I f *-helvetica-bold-r-*-140-*
Helvetica-Bold 14 SetF
%I t
[ 1.2168e-08 1 -1 1.2168e-08 154 401 ] concat
%I
[
(MPI_RSEND)
] Text
End

Begin %I Text
%I cfg Black
0 0 0 SetCFg
%I f *-helvetica-bold-r-*-140-*
Helvetica-Bold 14 SetF
%I t
[ 0.966092 0.258195 -0.258195 0.966092 322.997 448.019 ] concat
%I
[
(MPI_SCAN)
] Text
End

Begin %I Text
%I cfg Black
0 0 0 SetCFg
%I f *-helvetica-bold-r-*-140-*
Helvetica-Bold 14 SetF
%I t
[ 1.2168e-08 1 -1 1.2168e-08 390 590 ] concat
%I
[
(MPI_SCATTER)
] Text
End

Begin %I Text
%I cfg Black
0 0 0 SetCFg
%I f *-helvetica-bold-r-*-140-*
Helvetica-Bold 14 SetF
%I t
[ 1.2168e-08 1 -1 1.2168e-08 193 755 ] concat
%I
[
(MPI_SEND)
] Text
End

Begin %I Text
%I cfg Black
0 0 0 SetCFg
%I f *-helvetica-bold-r-*-140-*
Helvetica-Bold 14 SetF
%I t
[ 1.2168e-08 1 -1 1.2168e-08 67 381 ] concat
%I
[
(MPI_SENDRECV)
] Text
End

Begin %I Text
%I cfg Black
0 0 0 SetCFg
%I f *-helvetica-bold-r-*-140-*
Helvetica-Bold 14 SetF
%I t
[ 1.2168e-08 1 -1 1.2168e-08 458 252 ] concat
%I
[
(MPI_SET_ATTRIBUTE)
] Text
End

Begin %I Text
%I cfg Black
0 0 0 SetCFg
%I f *-helvetica-bold-r-*-140-*
Helvetica-Bold 14 SetF
%I t
[ 1.2168e-08 1 -1 1.2168e-08 482 130 ] concat
%I
[
(MPI_SHIFT_ID)
] Text
End

Begin %I Text
%I cfg Black
0 0 0 SetCFg
%I f *-helvetica-bold-r-*-140-*
Helvetica-Bold 14 SetF
%I t
[ 1.2168e-08 1 -1 1.2168e-08 108 401 ] concat
%I
[
(MPI_SSEND)
] Text
End

Begin %I Text
%I cfg Black
0 0 0 SetCFg
%I f *-helvetica-bold-r-*-140-*
Helvetica-Bold 14 SetF
%I t
[ 1.2168e-08 1 -1 1.2168e-08 232 748 ] concat
%I
[
(MPI_START)
] Text
End

Begin %I Text
%I cfg Black
0 0 0 SetCFg
%I f *-helvetica-bold-r-*-140-*
Helvetica-Bold 14 SetF
%I t
[ 1 0 0 1 114.5 820.5 ] concat
%I
[
(MPI_TEST)
] Text
End

Begin %I Text
%I cfg Black
0 0 0 SetCFg
%I f *-helvetica-bold-r-*-140-*
Helvetica-Bold 14 SetF
%I t
[ 1.2168e-08 1 -1 1.2168e-08 523 584 ] concat
%I
[
(MPI_TEST_ATTRIBUTE)
] Text
End

Begin %I Text
%I cfg Black
0 0 0 SetCFg
%I f *-helvetica-bold-r-*-140-*
Helvetica-Bold 14 SetF
%I t
[ 1.2168e-08 1 -1 1.2168e-08 36 814 ] concat
%I
[
(MPI_TEST_CANCELLED)
] Text
End

Begin %I Text
%I cfg Black
0 0 0 SetCFg
%I f *-helvetica-bold-r-*-140-*
Helvetica-Bold 14 SetF
%I t
[ 0.886225 0.463254 -0.463254 0.886225 170.588 192.927 ] concat
%I
[
(MPI_TESTALL)
] Text
End

Begin %I Text
%I cfg Black
0 0 0 SetCFg
%I f *-helvetica-bold-r-*-140-*
Helvetica-Bold 14 SetF
%I t
[ 1.2168e-08 1 -1 1.2168e-08 279 726 ] concat
%I
[
(MPI_TESTANY)
] Text
End

Begin %I Text
%I cfg Black
0 0 0 SetCFg
%I f *-helvetica-bold-r-*-140-*
Helvetica-Bold 14 SetF
%I t
[ 1.2168e-08 1 -1 1.2168e-08 46 228 ] concat
%I
[
(MPI_TRANSLATE_RANKS)
] Text
End

Begin %I Text
%I cfg Black
0 0 0 SetCFg
%I f *-helvetica-bold-r-*-140-*
Helvetica-Bold 14 SetF
%I t
[ 1.2168e-08 1 -1 1.2168e-08 21.9999 239 ] concat
%I
[
(MPI_TYPE_COMMIT)
] Text
End

Begin %I Text
%I cfg Black
0 0 0 SetCFg
%I f *-helvetica-bold-r-*-140-*
Helvetica-Bold 14 SetF
%I t
[ 1 0 0 1 307 908 ] concat
%I
[
(MPI_TYPE_CONTIGUOUS)
] Text
End

Begin %I Text
%I cfg Black
0 0 0 SetCFg
%I f *-helvetica-bold-r-*-140-*
Helvetica-Bold 14 SetF
%I t
[ 0.978234 0.207504 -0.207504 0.978234 400.91 467.592 ] concat
%I
[
(MPI_TYPE_EXTENT)
] Text
End

Begin %I Text
%I cfg Black
0 0 0 SetCFg
%I f *-helvetica-bold-r-*-140-*
Helvetica-Bold 14 SetF
%I t
[ 1 0 0 1 330.5 570.5 ] concat
%I
[
(MPI_TYPE_FREE)
] Text
End

Begin %I Text
%I cfg Black
0 0 0 SetCFg
%I f *-helvetica-bold-r-*-140-*
Helvetica-Bold 14 SetF
%I t
[ 1.2168e-08 1 -1 1.2168e-08 542 589 ] concat
%I
[
(MPI_TYPE_HINDEXED)
] Text
End

Begin %I Text
%I cfg Black
0 0 0 SetCFg
%I f *-helvetica-bold-r-*-140-*
Helvetica-Bold 14 SetF
%I t
[ 1.2168e-08 1 -1 1.2168e-08 13 832 ] concat
%I
[
(MPI_TYPE_HVECTOR)
] Text
End

Begin %I Text
%I cfg Black
0 0 0 SetCFg
%I f *-helvetica-bold-r-*-140-*
Helvetica-Bold 14 SetF
%I t
[ 1.2168e-08 1 -1 1.2168e-08 433 143 ] concat
%I
[
(MPI_TYPE_INDEXED)
] Text
End

Begin %I Text
%I cfg Black
0 0 0 SetCFg
%I f *-helvetica-bold-r-*-140-*
Helvetica-Bold 14 SetF
%I t
[ 1 0 0 1 113 933 ] concat
%I
[
(MPI_TYPE_STRUCT)
] Text
End

Begin %I Text
%I cfg Black
0 0 0 SetCFg
%I f *-helvetica-bold-r-*-140-*
Helvetica-Bold 14 SetF
%I t
[ 1.2168e-08 1 -1 1.2168e-08 348 174 ] concat
%I
[
(MPI_TYPE_VECTOR)
] Text
End

Begin %I Text
%I cfg Black
0 0 0 SetCFg
%I f *-helvetica-bold-r-*-140-*
Helvetica-Bold 14 SetF
%I t
[ 0.980581 0.196116 -0.196116 0.980581 209.18 342.635 ] concat
%I
[
(MPI_USER_ALLREDUCE)
] Text
End

Begin %I Text
%I cfg Black
0 0 0 SetCFg
%I f *-helvetica-bold-r-*-140-*
Helvetica-Bold 14 SetF
%I t
[ -1 2.43359e-08 -2.43359e-08 -1 203.5 57.5003 ] concat
%I
[
(MPI_USER_ALLREDUCEA)
] Text
End

Begin %I Text
%I cfg Black
0 0 0 SetCFg
%I f *-helvetica-bold-r-*-140-*
Helvetica-Bold 14 SetF
%I t
[ -0.982102 0.188348 -0.188348 -0.982102 205.261 99.9342 ] concat
%I
[
(MPI_USER_REDUCE)
] Text
End

Begin %I Text
%I cfg Black
0 0 0 SetCFg
%I f *-helvetica-bold-r-*-140-*
Helvetica-Bold 14 SetF
%I t
[ 1 0 0 1 49.4999 974.5 ] concat
%I
[
(MPI_USER_REDUCEA)
] Text
End

Begin %I Text
%I cfg Black
0 0 0 SetCFg
%I f *-helvetica-bold-r-*-140-*
Helvetica-Bold 14 SetF
%I t
[ 1.2168e-08 1 -1 1.2168e-08 22 104 ] concat
%I
[
(MPI_USER_SCAN)
] Text
End

Begin %I Text
%I cfg Black
0 0 0 SetCFg
%I f *-helvetica-bold-r-*-140-*
Helvetica-Bold 14 SetF
%I t
[ 1.2168e-08 1 -1 1.2168e-08 297 180 ] concat
%I
[
(MPI_USER_SCANA)
] Text
End

Begin %I Text
%I cfg Black
0 0 0 SetCFg
%I f *-helvetica-bold-r-*-140-*
Helvetica-Bold 14 SetF
%I t
[ 1 0 0 1 111 799 ] concat
%I
[
(MPI_WAIT)
] Text
End

Begin %I Text
%I cfg Black
0 0 0 SetCFg
%I f *-helvetica-bold-r-*-140-*
Helvetica-Bold 14 SetF
%I t
[ 1.2168e-08 1 -1 1.2168e-08 434 303 ] concat
%I
[
(MPI_WAITALL)
] Text
End

Begin %I Text
%I cfg Black
0 0 0 SetCFg
%I f *-helvetica-bold-r-*-140-*
Helvetica-Bold 14 SetF
%I t
[ 1.2168e-08 1 -1 1.2168e-08 525 318 ] concat
%I
[
(MPI_WAITANY)
] Text
End

Begin %I Text
%I cfg Black
0 0 0 SetCFg
%I f *-helvetica-bold-r-*-140-*
Helvetica-Bold 14 SetF
%I t
[ 1.2168e-08 1 -1 1.2168e-08 504 270 ] concat
%I
[
(MPI_CREATE_SSEND)
] Text
End

Begin %I Text
%I cfg Black
0 0 0 SetCFg
%I f *-helvetica-bold-r-*-140-*
Helvetica-Bold 14 SetF
%I t
[ 1.2168e-08 1 -1 1.2168e-08 497 592 ] concat
%I
[
(MPI_GROUP_UNION)
] Text
End

Begin %I Text
%I cfg Black
0 0 0 SetCFg
%I f *-helvetica-bold-r-*-140-*
Helvetica-Bold 14 SetF
%I t
[ 1.2168e-08 1 -1 1.2168e-08 584 773 ] concat
%I
[
(MPI_GROUP_INTERSECTION)
] Text
End

Begin %I Text
%I cfg Black
0 0 0 SetCFg
%I f *-helvetica-bold-r-*-140-*
Helvetica-Bold 14 SetF
%I t
[ -1 2.43359e-08 -2.43359e-08 -1 206 10.0001 ] concat
%I
[
(MPI_GROUP_DIFFERENCE)
] Text
End

Begin %I Text
%I cfg Black
0 0 0 SetCFg
%I f *-helvetica-bold-r-*-140-*
Helvetica-Bold 14 SetF
%I t
[ 1 0 0 1 211.5 976.5 ] concat
%I
[
(MPI_GROUP_INCL)
] Text
End

Begin %I Text
%I cfg Black
0 0 0 SetCFg
%I f *-helvetica-bold-r-*-140-*
Helvetica-Bold 14 SetF
%I t
[ 1.2168e-08 1 -1 1.2168e-08 410 692 ] concat
%I
[
(MPI_GROUP_EXCL)
] Text
End

Begin %I Text
%I cfg Black
0 0 0 SetCFg
%I f *-helvetica-bold-r-*-140-*
Helvetica-Bold 14 SetF
%I t
[ 1.2168e-08 1 -1 1.2168e-08 546 182 ] concat
%I
[
(MPI_GROUP_RANGE_INCL)
] Text
End

Begin %I Text
%I cfg Black
0 0 0 SetCFg
%I f *-helvetica-bold-r-*-140-*
Helvetica-Bold 14 SetF
%I t
[ -0.975232 0.221187 -0.221187 -0.975232 531.491 24.6688 ] concat
%I
[
(MPI_GROUP_RANGE_EXCL)
] Text
End

Begin %I Text
%I cfg Black
0 0 0 SetCFg
%I f *-helvetica-bold-r-*-140-*
Helvetica-Bold 14 SetF
%I t
[ 1.2168e-08 1 -1 1.2168e-08 306 691 ] concat
%I
[
(MPI_GROUP_FREE)
] Text
End

Begin %I Text
%I cfg Black
0 0 0 SetCFg
%I f *-helvetica-bold-r-*-140-*
Helvetica-Bold 14 SetF
%I t
[ 1 0 0 1 53.5001 777.5 ] concat
%I
[
(MPI_COMM_SIZE)
] Text
End

Begin %I Text
%I cfg Black
0 0 0 SetCFg
%I f *-helvetica-bold-r-*-140-*
Helvetica-Bold 14 SetF
%I t
[ 1.2168e-08 1 -1 1.2168e-08 428 697 ] concat
%I
[
(MPI_COMM_RANK)
] Text
End

Begin %I Text
%I cfg Black
0 0 0 SetCFg
%I f *-helvetica-bold-r-*-140-*
Helvetica-Bold 14 SetF
%I t
[ 1.2168e-08 1 -1 1.2168e-08 16 684 ] concat
%I
[
(MPI_COMM_SPLIT)
] Text
End

Begin %I Text
%I cfg Black
0 0 0 SetCFg
%I f *-helvetica-bold-r-*-140-*
Helvetica-Bold 14 SetF
%I t
[ 1.2168e-08 1 -1 1.2168e-08 504 121 ] concat
%I
[
(MPI_COMM_MERGE)
] Text
End

Begin %I Text
%I cfg Black
0 0 0 SetCFg
%I f *-helvetica-bold-r-*-140-*
Helvetica-Bold 14 SetF
%I t
[ 1.2168e-08 1 -1 1.2168e-08 544 384 ] concat
%I
[
(MPI_CONTEXTS_ALLOC)
] Text
End

Begin %I Text
%I cfg Black
0 0 0 SetCFg
%I f *-helvetica-bold-r-*-140-*
Helvetica-Bold 14 SetF
%I t
[ 1.2168e-08 1 -1 1.2168e-08 545 7.00015 ] concat
%I
[
(MPI_CONTEXTS_FREE)
] Text
End

Begin %I Text
%I cfg Black
0 0 0 SetCFg
%I f *-helvetica-bold-r-*-140-*
Helvetica-Bold 14 SetF
%I t
[ 1.2168e-08 1 -1 1.2168e-08 586 394 ] concat
%I
[
(MPI_COMM_CONTEXTS)
] Text
End

Begin %I Text
%I cfg Black
0 0 0 SetCFg
%I f *-helvetica-bold-r-*-140-*
Helvetica-Bold 14 SetF
%I t
[ -0.961524 0.274721 -0.274721 -0.961524 504.683 3.24772 ] concat
%I
[
(MPI_COMM_STAT)
] Text
End

Begin %I Text
%I cfg Black
0 0 0 SetCFg
%I f *-helvetica-bold-r-*-140-*
Helvetica-Bold 14 SetF
%I t
[ 1.2168e-08 1 -1 1.2168e-08 585 584 ] concat
%I
[
(MPI_INTERCOMM_MAKE)
] Text
End

Begin %I Text
%I cfg Black
0 0 0 SetCFg
%I f *-helvetica-bold-r-*-140-*
Helvetica-Bold 14 SetF
%I t
[ 1.2168e-08 1 -1 1.2168e-08 589 185 ] concat
%I
[
(MPI_INTERCOMM_START)
] Text
End

Begin %I Text
%I cfg Black
0 0 0 SetCFg
%I f *-helvetica-bold-r-*-140-*
Helvetica-Bold 14 SetF
%I t
[ 1.2168e-08 1 -1 1.2168e-08 527 116 ] concat
%I
[
(MPI_INTERCOMM_FINISH)
] Text
End

Begin %I Text
%I cfg Black
0 0 0 SetCFg
%I f *-helvetica-bold-r-*-140-*
Helvetica-Bold 14 SetF
%I t
[ 1.2168e-08 1 -1 1.2168e-08 591 26.0002 ] concat
%I
[
(MPI_COMM_SPLITL)
] Text
End

Begin %I Text
%I cfg Black
0 0 0 SetCFg
%I f *-helvetica-bold-r-*-140-*
Helvetica-Bold 14 SetF
%I t
[ -1 2.43359e-08 -2.43359e-08 -1 302.5 30.5001 ] concat
%I
[
(MPI_INTERCOMM_NAME)
] Text
End

Begin %I Text
%I cfg Black
0 0 0 SetCFg
%I f *-helvetica-bold-r-*-140-*
Helvetica-Bold 14 SetF
%I t
[ 1 0 0 1 252 932 ] concat
%I
[
(MPI_INTERCOMM_NAME_START)
] Text
End

Begin %I Text
%I cfg Black
0 0 0 SetCFg
%I f *-helvetica-bold-r-*-140-*
Helvetica-Bold 14 SetF
%I t
[ 1.2168e-08 1 -1 1.2168e-08 430 579 ] concat
%I
[
(MPI_INITIALIZED)
] Text
End

Begin %I Text
%I cfg Black
0 0 0 SetCFg
%I f *-helvetica-bold-r-*-140-*
Helvetica-Bold 14 SetF
%I t
[ 0.624695 0.780869 -0.780869 0.624695 57.0426 710.807 ] concat
%I
[
(MPI_INIT)
] Text
End

Begin %I Text
%I cfg Black
0 0 0 SetCFg
%I f *-helvetica-bold-r-*-140-*
Helvetica-Bold 14 SetF
%I t
[ 1.2168e-08 1 -1 1.2168e-08 87.0002 391 ] concat
%I
[
(MPI_FINALIZE)
] Text
End

Begin %I Text
%I cfg Black
0 0 0 SetCFg
%I f *-helvetica-bold-r-*-140-*
Helvetica-Bold 14 SetF
%I t
[ 1.2168e-08 1 -1 1.2168e-08 129 399 ] concat
%I
[
(MPI_ABORT)
] Text
End

Begin %I Text
%I cfg Black
0 0 0 SetCFg
%I f *-helvetica-bold-r-*-140-*
Helvetica-Bold 14 SetF
%I t
[ 1.2168e-08 1 -1 1.2168e-08 37.0002 696 ] concat
%I
[
(MPI_VALIDTAGS)
] Text
End

Begin %I Text
%I cfg Black
0 0 0 SetCFg
%I f *-helvetica-bold-r-*-140-*
Helvetica-Bold 14 SetF
%I t
[ 1 0 0 1 201 470 ] concat
%I
[
(MPI_NUMGROUPS)
] Text
End

Begin %I Text
%I cfg Black
0 0 0 SetCFg
%I f *-helvetica-bold-r-*-140-*
Helvetica-Bold 14 SetF
%I t
[ 1.2168e-08 1 -1 1.2168e-08 360 594 ] concat
%I
[
(MPI_BUFFERSIZE)
] Text
End

Begin %I Text
%I cfg Black
0 0 0 SetCFg
%I f *-helvetica-bold-r-*-140-*
Helvetica-Bold 14 SetF
%I t
[ -1 2.43359e-08 -2.43359e-08 -1 424 11.0002 ] concat
%I
[
(MPI_NUMCOMMUNICATORS)
] Text
End

Begin %I Text
%I cfg Black
0 0 0 SetCFg
%I f *-helvetica-bold-r-*-140-*
Helvetica-Bold 14 SetF
%I t
[ 1.2168e-08 1 -1 1.2168e-08 23.0002 392 ] concat
%I
[
(MPI_ERRORMODE)
] Text
End

End %I eop

End %I eop

showpage

%%Trailer

end
From owner-mpi-comm@CS.UTK.EDU Thu Sep  9 12:25:28 1993
Received: from CS.UTK.EDU by netlib2.cs.utk.edu with SMTP (5.61+IDA+UTK-930125/2.8t-netlib)
	id AA19205; Thu, 9 Sep 93 12:25:28 -0400
Received: from localhost by CS.UTK.EDU with SMTP (5.61+IDA+UTK-930125/2.8s-UTK)
	id AA21509; Thu, 9 Sep 93 12:22:38 -0400
X-Resent-To: mpi-comm@CS.UTK.EDU ; Thu, 9 Sep 1993 12:22:36 EDT
Errors-To: owner-mpi-comm@CS.UTK.EDU
Received: from pnlg.pnl.gov by CS.UTK.EDU with SMTP (5.61+IDA+UTK-930125/2.8s-UTK)
	id AA21501; Thu, 9 Sep 93 12:22:34 -0400
Received: from snacker.pnl.gov (130.20.186.18) by pnlg.pnl.gov; Thu, 9 Sep 93
 09:16 PDT
Received: by snacker.pnl.gov (4.1/SMI-4.1) id AA23525; Thu, 9 Sep 93 09:13:49
 PDT
Date: Thu, 9 Sep 93 09:13:49 PDT
From: rj_littlefield@pnlg.pnl.gov
Subject: tee-shirt/ghostview problem
To: mpi-comm@cs.utk.edu
Cc: rj_littlefield@pnlg.pnl.gov
Message-Id: <9309091613.AA23525@snacker.pnl.gov>
X-Envelope-To: mpi-comm@cs.utk.edu

Al Geist sent us a PostScript file and wrote:

% Here is a possible T-shirt design.

Be aware that you may have trouble previewing and/or printing
that file.

I tried previewing with ghostview (version 1.4).
It failed with the following diagnostic:

    Error: /undefined in 2.61386e-08
    Operand stack:
	-savetype-  -savetype-  -savetype-  -marktype-
    Execution stack:
	%interp_exit    --nostringval--  --nostringval--  false  
	--nostringval--  --nostringval--  --nostringval--
    Dictionary stack:
	399/479  7/200  37/51  1/17  0/17  5/17
    Unrecoverable error, exit code 1

However, when I replaced "2.61386e-08" and all similar strings
with "0.", it worked fine.  Further experiments suggested that
ghostview just doesn't accept negative exponents.  This problem
is being reported to the ghostview people.

The file did print correctly on an Apple LaserWriter II and on a
DEC PrintServer 20.

--Rik
----------------------------------------------------------------------
rj_littlefield@pnl.gov (alias 'd39135')   Rik Littlefield
Tel: 509-375-3927                         Pacific Northwest Lab, MS K1-87
Fax: 509-375-6631                         P.O.Box 999, Richland, WA  99352
From owner-mpi-comm@CS.UTK.EDU Thu Sep  9 13:26:26 1993
Received: from CS.UTK.EDU by netlib2.cs.utk.edu with SMTP (5.61+IDA+UTK-930125/2.8t-netlib)
	id AA19595; Thu, 9 Sep 93 13:26:26 -0400
Received: from localhost by CS.UTK.EDU with SMTP (5.61+IDA+UTK-930125/2.8s-UTK)
	id AA26105; Thu, 9 Sep 93 13:23:25 -0400
X-Resent-To: mpi-comm@CS.UTK.EDU ; Thu, 9 Sep 1993 13:23:24 EDT
Errors-To: owner-mpi-comm@CS.UTK.EDU
Received: from daedalus.epcc.ed.ac.uk by CS.UTK.EDU with SMTP (5.61+IDA+UTK-930125/2.8s-UTK)
	id AA26097; Thu, 9 Sep 93 13:23:22 -0400
Date: Thu, 9 Sep 93 18:23:04 BST
Message-Id: <25359.9309091723@subnode.epcc.ed.ac.uk>
From: L J Clarke <lyndon@epcc.ed.ac.uk>
Subject: tee-shirt
To: mpi-comm@cs.utk.edu
Reply-To: lyndon@epcc.ed.ac.uk

Perhaps the subprograms should have arguments.  Also it was suggested
that there could be an MPI baseball cap with the header files on it :-)
(Perhaps I can get one of these!)

Anyway, seriously, it's just a bit noisy, don't you think? And, I hope
the "back" text is not really a serious suggestion. 

Cheers
Lyndon

         /--------------------------------------------------------\
    e||) | Lyndon J Clarke    Edinburgh Parallel Computing Centre | e||) 
    c||c | Tel: 031 650 5021  Email: lyndon@epcc.edinburgh.ac.uk  | c||c 
         \--------------------------------------------------------/


From owner-mpi-comm@CS.UTK.EDU Thu Sep  9 13:41:01 1993
Received: from CS.UTK.EDU by netlib2.cs.utk.edu with SMTP (5.61+IDA+UTK-930125/2.8t-netlib)
	id AA19705; Thu, 9 Sep 93 13:41:01 -0400
Received: from localhost by CS.UTK.EDU with SMTP (5.61+IDA+UTK-930125/2.8s-UTK)
	id AA27264; Thu, 9 Sep 93 13:38:32 -0400
X-Resent-To: mpi-comm@CS.UTK.EDU ; Thu, 9 Sep 1993 13:38:31 EDT
Errors-To: owner-mpi-comm@CS.UTK.EDU
Received: from THIALFI.CS.CORNELL.EDU by CS.UTK.EDU with SMTP (5.61+IDA+UTK-930125/2.8s-UTK)
	id AA27256; Thu, 9 Sep 93 13:38:29 -0400
Received: from CLOYD.CS.CORNELL.EDU by thialfi.cs.cornell.edu (5.67/I-1.99E)
	id AA03403; Thu, 9 Sep 93 13:38:27 -0400
Received: from FAFNIR.CS.CORNELL.EDU by cloyd.cs.cornell.edu (5.67/I-1.99D)
	id AA26508; Thu, 9 Sep 93 13:38:32 -0400
From: ken@cs.cornell.edu (Ken Birman)
Date: Thu, 9 Sep 93 13:38:14 -0400
Message-Id: <9309091738.AA21632@fafnir.cs.cornell.edu>
Received: by fafnir.cs.cornell.edu (5.67/N-0.13)
	id AA21632; Thu, 9 Sep 93 13:38:14 -0400
To: mpi-comm@cs.utk.edu
Subject: Could I get off of this mailing list,  please?

My group (Horus) hopes to provide an MPI implementation once the
standard settles.  But this email list seems to be mostly about
t-shirt designs.  Thanks!
From owner-mpi-comm@CS.UTK.EDU Thu Sep  9 16:35:04 1993
Received: from CS.UTK.EDU by netlib2.cs.utk.edu with SMTP (5.61+IDA+UTK-930125/2.8t-netlib)
	id AA20563; Thu, 9 Sep 93 16:35:04 -0400
Received: from localhost by CS.UTK.EDU with SMTP (5.61+IDA+UTK-930125/2.8s-UTK)
	id AA11788; Thu, 9 Sep 93 16:33:02 -0400
X-Resent-To: mpi-comm@CS.UTK.EDU ; Thu, 9 Sep 1993 16:33:01 EDT
Errors-To: owner-mpi-comm@CS.UTK.EDU
Received: from Aurora.CS.MsState.Edu by CS.UTK.EDU with SMTP (5.61+IDA+UTK-930125/2.8s-UTK)
	id AA11780; Thu, 9 Sep 93 16:33:00 -0400
Received:  by Aurora.CS.MsState.Edu (4.1/6.0s-FWP);
	   id AA01098; Thu, 9 Sep 93 15:32:52 CDT
Date: Thu, 9 Sep 93 15:32:52 CDT
From: Tony Skjellum <tony@Aurora.CS.MsState.Edu>
Message-Id: <9309092032.AA01098@Aurora.CS.MsState.Edu>
To: ken@cs.cornell.edu
Subject: Re: Could I get off of this mailing list,  please?
Cc: mpi-comm@cs.utk.edu


Maybe you should wait for our reference implementation.
- Tony Skjellum

From owner-mpi-comm@CS.UTK.EDU Thu Sep 16 03:48:24 1993
Received: from CS.UTK.EDU by netlib2.cs.utk.edu with SMTP (5.61+IDA+UTK-930125/2.8t-netlib)
	id AA26807; Thu, 16 Sep 93 03:48:24 -0400
Received: from localhost by CS.UTK.EDU with SMTP (5.61+IDA+UTK-930125/2.8s-UTK)
	id AA17304; Thu, 16 Sep 93 03:45:16 -0400
X-Resent-To: mpi-comm@CS.UTK.EDU ; Thu, 16 Sep 1993 03:45:14 EDT
Errors-To: owner-mpi-comm@CS.UTK.EDU
Received: from THIALFI.CS.CORNELL.EDU by CS.UTK.EDU with SMTP (5.61+IDA+UTK-930125/2.8s-UTK)
	id AA17287; Thu, 16 Sep 93 03:45:12 -0400
Received: from CLOYD.CS.CORNELL.EDU by thialfi.cs.cornell.edu (5.67/I-1.99E)
	id AA04082; Thu, 16 Sep 93 03:45:01 -0400
Received: from ELLI.CS.CORNELL.EDU by cloyd.cs.cornell.edu (5.67/I-1.99D)
	id AA23988; Thu, 16 Sep 93 03:44:58 -0400
From: elster@cs.cornell.edu (Anne C. Elster)
Date: Thu, 16 Sep 93 03:44:56 -0400
Message-Id: <9309160744.AA24612@elli.cs.cornell.edu>
Received: by elli.cs.cornell.edu (5.67/N-0.13)
	id AA24612; Thu, 16 Sep 93 03:44:56 -0400
To: mpi-comm@cs.utk.edu
Subject: MPI_LOAD
Cc: elster@cs.cornell.edu


Well, folks,
I promised a nice write-up on my MPI_LOAD suggestion,
but am afraid you will have to do with this patch-up job I'm
throwing together in this wee hr in the morning. Sorry.

I am off to Norway later to day for my Dad's 60th b-day,
which also means I will not be able to make next week's meeting
in Dallas.

Have a nice and productive meeting!

Maybe somebody could get a t-shirt sent to me?

				Take care!
						Anne

-------------------------------------------------------------------------------
Anne C. Elster			   |  (607) 254-8653 [off]   255-6236 [FAX]
Xerox Design Research Institute	   |  (607) 272-2986 [home/answ.mach]
Cornell University, 502 Theory Ctr.|
Ithaca, NY 14853		   |   e-mail:  elster@cs.cornell.edu
USA				   |	        na.elster@na-net.ornl.gov


		MPI_(CPU_)LOAD_INFO


MOTIVATION

Currently, most parallelized algorithms for distributed memory machines
assume that they will run on a homogeneous set of processors.
(I.e. that each node in the parallel system has approximately
the same computing power and I/O speed.)
The main focus in parallel computing has thus far been to minimize
communication over-head and achieve a load-balance for the
particular algorithm or application.

However, as each computational node a parallel system become more complex, 
their individual processor/node performance characteristics will tend to
deviate more as some nodes perform I/O while others concentrate on
system tasks, etc.

This behavior has so far been addressed through multi-tasking on
large shared-memory systems such as a network of IBM 3090s, however,
no simple, straight-forward solutions exist currently
for the distributed memory cases.

It is, however, this authors belief that load-balancing application
at the ``load-info'' level (i.e. based on each node's dynamic load at
run-time) will become very important in the future -- especially
if there were mechanisms built into MPI that would facilitate
such implementations.


CURRRENT OPTIONS

Options for getting load-info read into
a Fortran or C application on Unix-based systems are
not wonderful:


System load is typically from the OS-side done by {\bf reading kernel
memory (-kmem)}. This will, however, usually require {\em setgid}
permissions and grubbing through kernel symbol tables.
This  brute-force approach might fork and exec something with the required
kmem permissions.

Another alternative is to use {\bf rstat} which  does not require
such permission, but unfortunately, is not available on all systems.
Rstat typically gives you statistics from a remote kernel
that should be current disregarding network delay.

The third approach I can think of is to use the output from 
{\bf uptime}. In C, this could possibly be done though
 fscanf on the return value of popen.

MPI SUGGESTION

Since I fond none of the previous methods very programmer-friendly,
my suggestion  is to add a {\bf MPI\_LOAD\_INFO} that would return
the desired information. As I mentioned at the last meeting, I am now
convinced that the way ISIS/Horus does "load-info" for CPU load, i.e.
to return the no. of jobs the scheduler has outstanding, is a good start.


	MPI_(CPU_)LOAD_INFO(n)

	OUT	n  : the no. of jobs the scheduler has outstanding.

This way there is no timing issues associated with the local MPI
call (MPI_CPU_LOAD_INFO, if you wish).  The notion of needing some
kind of time information was the largest objection I heard re.
to my suggestion to include an MPI_LOAD_INFO back when I presented it
in March.

It is up to the applications programmers whether they'd want to do several
calls for a statistical average.  Global info. can be obtained via an MPI
collective comm. call.  Users will also be required to know scheduler queue
sizes and what they mean for the individual sytstem/node, but at least they
will not be stuck with non-standard system-supplied fucntions and "grubbing"
through "kmem" tables under super-user priveleges in order to get the 
information they need.

There are of course several other factors that influence the "load" of
the processing element, e.g.  memory traffic, communication traffic, I/O
traffice, etc, all which could be very useful information for applications
programmers to get their hands one -- especially in non-homogeneous or
multi-user environments. 


Last time I guess some people objected to the notion of adding another
MPI functions, some others felt it was not really an MPI call per se,
and hence should be avoided. I can see the arguments for this, but feel
the benefits of including such a functions too great to let it pas up.
From owner-mpi-comm@CS.UTK.EDU Thu Sep 16 09:03:18 1993
Received: from CS.UTK.EDU by netlib2.cs.utk.edu with SMTP (5.61+IDA+UTK-930125/2.8t-netlib)
	id AA28606; Thu, 16 Sep 93 09:03:18 -0400
Received: from localhost by CS.UTK.EDU with SMTP (5.61+IDA+UTK-930125/2.8s-UTK)
	id AA15652; Thu, 16 Sep 93 09:00:01 -0400
X-Resent-To: mpi-comm@CS.UTK.EDU ; Thu, 16 Sep 1993 09:00:00 EDT
Errors-To: owner-mpi-comm@CS.UTK.EDU
Received: from sol.aggregate.com by CS.UTK.EDU with SMTP (5.61+IDA+UTK-930125/2.8s-UTK)
	id AA15635; Thu, 16 Sep 93 08:59:56 -0400
Received: from sirius.aggregate.com by aggregate.com (5.0/SMI-SVR4)
	id AA01583; Thu, 16 Sep 93 08:00:45 CDT
Received: by sirius.aggregate.com (4.1/SMI-SVR4)
	id AA02006; Thu, 16 Sep 93 08:00:58 CDT
From: ted@aggregate.com
Message-Id: <9309161300.AA02006@sirius.aggregate.com>
Subject: Re: MPI_LOAD
To: elster@cs.cornell.edu (Anne C. Elster)
Date: Thu, 16 Sep 1993 08:00:57 -0500 (CDT)
Cc: mpi-comm@cs.utk.edu
In-Reply-To: <9309160744.AA24612@elli.cs.cornell.edu> from "Anne C. Elster" at Sep 16, 93 03:44:56 am
X-Mailer: ELM [version 2.4 PL22]
Mime-Version: 1.0
Content-Type: text/plain; charset=US-ASCII
Content-Transfer-Encoding: 7bit
Content-Length: 3171      

Anne C. Elster writes:
> 
[text deleted]
> 
> MOTIVATION
> 
> Currently, most parallelized algorithms for distributed memory machines
> assume that they will run on a homogeneous set of processors.
> (I.e. that each node in the parallel system has approximately
> the same computing power and I/O speed.)
> The main focus in parallel computing has thus far been to minimize
> communication over-head and achieve a load-balance for the
> particular algorithm or application.
>
[text deleted]
> 
> MPI SUGGESTION
> 
> Since I fond none of the previous methods very programmer-friendly,
> my suggestion  is to add a {\bf MPI\_LOAD\_INFO} that would return
> the desired information. As I mentioned at the last meeting, I am now
> convinced that the way ISIS/Horus does "load-info" for CPU load, i.e.
> to return the no. of jobs the scheduler has outstanding, is a good start.
> 
> 	MPI_(CPU_)LOAD_INFO(n)
> 
> 	OUT	n  : the no. of jobs the scheduler has outstanding.
> 
> This way there is no timing issues associated with the local MPI
> call (MPI_CPU_LOAD_INFO, if you wish).  The notion of needing some
> kind of time information was the largest objection I heard re.
> to my suggestion to include an MPI_LOAD_INFO back when I presented it
> in March.
> 
> It is up to the applications programmers whether they'd want to do several
> calls for a statistical average.  Global info. can be obtained via an MPI
> collective comm. call.  Users will also be required to know scheduler queue
> sizes and what they mean for the individual sytstem/node, but at least they
> will not be stuck with non-standard system-supplied fucntions and "grubbing"
> through "kmem" tables under super-user priveleges in order to get the 
> information they need.
[text deleted]
> 
> Last time I guess some people objected to the notion of adding another
> MPI functions, some others felt it was not really an MPI call per se,
> and hence should be avoided. I can see the arguments for this, but feel
> the benefits of including such a functions too great to let it pas up.

I'm merely a lurker on this mailing list, so I'll let others discuss
what is and isn't appropriate for MPI.

However, I have written a generalized network resource monitoring library
for the product I'm working on (NetShare SDK, info@aggregate.com if you
are curious).  In a real heterogeneous network environment you need to
track more than just the load average.  For example, a SPARCstation 10
with a load average of 0.6 will give a better response than an idle
diskless SPARCstation ELC.  Other applications may care more about memory
than load -- and then physical memory versus virtual memory.  Software
properties like licenses and OS type and version may be important.  

(As an example from NetShare, which does remote execution, you may want
to select hosts for a large simulation based on memory, SPECfloat rating,
simulator software license availablity, and having an idle keyboard)

Resource monitoring is important in a heterogeneous environment, however
the simple case of monitoring a single property is not useful in
practice.  

-- 
Ted Stockwell, Aggregate Computing                ted@aggregate.com
From owner-mpi-comm@CS.UTK.EDU Fri Sep 17 21:10:54 1993
Received: from CS.UTK.EDU by netlib2.cs.utk.edu with SMTP (5.61+IDA+UTK-930125/2.8t-netlib)
	id AA12880; Fri, 17 Sep 93 21:10:54 -0400
Received: from localhost by CS.UTK.EDU with SMTP (5.61+IDA+UTK-930125/2.8s-UTK)
	id AA19499; Fri, 17 Sep 93 20:53:12 -0400
X-Resent-To: mpi-comm@CS.UTK.EDU ; Fri, 17 Sep 1993 20:53:11 EDT
Errors-To: owner-mpi-comm@CS.UTK.EDU
Received: from super.super.org by CS.UTK.EDU with SMTP (5.61+IDA+UTK-930125/2.8s-UTK)
	id AA19491; Fri, 17 Sep 93 20:53:09 -0400
Received: from b125.super.org by super.super.org (4.1/SMI-4.1)
	id AA17279; Fri, 17 Sep 93 20:53:07 EDT
Received: by b125.super.org (4.1/SMI-4.1)
	id AA04681; Fri, 17 Sep 93 20:53:07 EDT
Date: Fri, 17 Sep 93 20:53:07 EDT
From: lederman@super.org (Steve Huss-Lederman)
Message-Id: <9309180053.AA04681@b125.super.org>
To: mpi-comm@cs.utk.edu
Subject: subset chapter

Hello all,

Since the upcomming meeting will have our final vote on each chapter,
I thought I would let everyone know that the latest version of the
subset chapter is available.  To get use anonymous ftp to
ftp.super.org in pub/mpi.  Only the PostScript is there since there
are x-refs, etc.  The sections reference might differ from the various
drafts of chapters that are out there; I used the latest ones I had
for each.

The major changes from the last meeting:

- all intra-communicator and group functionality is in.  all
inter-communicator and caching is out.

- All derived datatype stuff is in.

- the new collective communication function MPI_REDUCE_SCATTER is in
but MPI_USER_REDUCE_SCATTER and MPI_USER_REDUCE_SCATTERA are out.  (I
thought that this new name would be the longest yet in MPI but the
context people still have a strong hold on this with
MPI_LOCAL_SUBGROUP_EXCL_RANGES and  After you add the P
for profiling you get an amazing 31 characters.  I'm surprised it can
fit on the Tee Shirt :-)

- profiling is in

- Environmental management is still up in the air.  We will need to
discuss this at the meeting to see what we want in/out.  If you have
thoughts please post to mpi-iac.

See you all soon in Dallas.

Steve
From owner-mpi-comm@CS.UTK.EDU Sun Sep 19 10:50:29 1993
Received: from CS.UTK.EDU by netlib2.cs.utk.edu with SMTP (5.61+IDA+UTK-930125/2.8t-netlib)
	id AA17234; Sun, 19 Sep 93 10:50:29 -0400
Received: from localhost by CS.UTK.EDU with SMTP (5.61+IDA+UTK-930125/2.8s-UTK)
	id AA13805; Sun, 19 Sep 93 10:44:09 -0400
X-Resent-To: mpi-comm@CS.UTK.EDU ; Sun, 19 Sep 1993 10:44:08 EDT
Errors-To: owner-mpi-comm@CS.UTK.EDU
Received: from rios2.EPM.ORNL.GOV by CS.UTK.EDU with SMTP (5.61+IDA+UTK-930125/2.8s-UTK)
	id AA13797; Sun, 19 Sep 93 10:44:07 -0400
Received: by rios2.epm.ornl.gov (AIX 3.2/UCB 5.64/4.03)
          id AA12315; Sun, 19 Sep 1993 10:44:06 -0400
Date: Sun, 19 Sep 1993 10:44:06 -0400
From: walker@rios2.epm.ornl.gov (David Walker)
Message-Id: <9309191444.AA12315@rios2.epm.ornl.gov>
To: mpi-comm@cs.utk.edu
Subject: Next MPI meeting


*******************************************************************
********                                                   ********
******** Subcommittee chairs!! Please send me agenda items ********
********                                                   ********
*******************************************************************

The next meeting of the Message Passing Interface (MPI) Forum will take
place in Dallas, September 22-24, 1993. Details are given below. 

The ongoing email discussion on MPI standardization issues can be obtained
from netlib. To find out what is available via email send the
following message to netlib@ornl.gov:

	send index from mpi

or use xnetlib ("send index from xnetlib" for info).


MPI Forum Meeting, September 22-24, 1993
=====================================

The next meeting of the MPI forum will take place at

      Bristol Suites Hotel
      7800 Alpha Road
      Dallas, Texas
      
The meeting will start at 1pm on Wednesday September 22, 1993, and finish at 
noon on Friday, September 24, 1993. 

Rooms are $89 per night and reservations may be made by calling (214) 233-7600 
(mention MPI meeting). 

The meeting registration fee will be $75. Please make checks and POs payable 
to University of Tennessee. The registration fee will be collected at the 
meeting. The registration fee will go for coffee breaks, meeting rooms, AV and 
printer rentals.

Certain organizations need to see a registration form before giving their
employees money for meetings like this. You can get such a form in PostScript
after noon on Sept. 20 by sending the following message to netlib@ornl.gov:

	send mpi-form.ps from mpi

There is no need to send me the registration form or bring it to the meeting.

TBS Shuttle Service will be providing complimentary shuttle service to
and from the airports.  If you fly into DFW, use their courtesy telephone
and dial 03.  If you fly into Love Field, you'll have to use a pay phone.
They can be reached at 817-267-5150.  Upon boarding the shuttle refer to the 
MPI meeting.

We have NOT been able to make any special arrangements with airlines to get 
reduced fares. 

We have secured limited funding from ARPA/NSF for travel expenses of MPI
meeting participants who are from U.S. universities. If you would like
to apply for financial support to attend the September MPI meeting please
send email to me at walker@msr.epm.ornl.gov, with justification of why you
need support and an estimate of your travel expenses.

Please send comments and/or suggested changes to the agenda below to me at
walker@msr.epm.ornl.gov

        Provisional Agenda for MPI Meeting, September 22-24, 1993

Wednesday
        TBD
Thursday
        TBD
12:00-1:30  Lunch (provided)
        TBD
6:00-8:00   Dinner (attendees pay, but hotel provides transport to area
                   restaurant)
8:00-10:00  Continued informal subcommittee meetings if necessary
        
Friday 
	TBD
From owner-mpi-comm@CS.UTK.EDU Mon Sep 20 16:41:01 1993
Received: from CS.UTK.EDU by netlib2.cs.utk.edu with SMTP (5.61+IDA+UTK-930125/2.8t-netlib)
	id AA26506; Mon, 20 Sep 93 16:41:01 -0400
Received: from localhost by CS.UTK.EDU with SMTP (5.61+IDA+UTK-930125/2.8s-UTK)
	id AA14331; Mon, 20 Sep 93 16:32:35 -0400
X-Resent-To: mpi-comm@CS.UTK.EDU ; Mon, 20 Sep 1993 16:32:34 EDT
Errors-To: owner-mpi-comm@CS.UTK.EDU
Received: from rios2.EPM.ORNL.GOV by CS.UTK.EDU with SMTP (5.61+IDA+UTK-930125/2.8s-UTK)
	id AA14323; Mon, 20 Sep 93 16:32:33 -0400
Received: by rios2.epm.ornl.gov (AIX 3.2/UCB 5.64/4.03)
          id AA11935; Mon, 20 Sep 1993 16:32:32 -0400
Date: Mon, 20 Sep 1993 16:32:32 -0400
From: walker@rios2.epm.ornl.gov (David Walker)
Message-Id: <9309202032.AA11935@rios2.epm.ornl.gov>
To: mpi-comm@cs.utk.edu
Subject: Agenda for MPI meeting


Here is the agenda for this week's MPI meeting. Please let me know if 
you want any changes made.

David
              Agenda for MPI Meeting September 22-24, 1993

Wednesday
1:00-3:00   Environmental Inquiry Subcommittee Meeting
	    
3:00-4:00   Language Binding Subcommittee Meeting
            
4:00-5:30   Full MPIF meeting to discuss Collective Communication
	    (Geist)

5:30-6:00   The status of the MPI reference implementation
	    (Lusk and Gropp)

6:00-7:30   Dinner break

7:30-10:30  Break up for subcommittee meetings if necessary

Thursday
9:00-12:00  Full meeting to discuss contexts (2nd reading?)
	    (Skjellum)
            
12:00-1:30  Lunch (provided)
1:30-3:30   Full meeting to discuss contexts (continued from morning)
            (Skjellum)

3:30-3:45   Break
            
3:45-5:00   Full meeting to discuss topologies
	    (Hempel)

5:00-6:00   Full meeting to discuss language binding
            (Lusk?)

6:00-8:00   Dinner (attendees pay, but hotel provides transport to area
                   restaurant)

8:00-10:30  Continued informal subcommittee meetings if necessary

Friday
9:00-10:30  Full group meeting for second reading of subset chapter.
            (Huss-Lederman)

10:30-10:45 Break

10:45-12:00 Any other business

From owner-mpi-comm@CS.UTK.EDU Tue Sep 21 09:20:06 1993
Received: from CS.UTK.EDU by netlib2.cs.utk.edu with SMTP (5.61+IDA+UTK-930125/2.8t-netlib)
	id AA01211; Tue, 21 Sep 93 09:20:06 -0400
Received: from localhost by CS.UTK.EDU with SMTP (5.61+IDA+UTK-930125/2.8s-UTK)
	id AA25312; Tue, 21 Sep 93 09:14:34 -0400
X-Resent-To: mpi-comm@CS.UTK.EDU ; Tue, 21 Sep 1993 09:14:33 EDT
Errors-To: owner-mpi-comm@CS.UTK.EDU
Received: from rios2.EPM.ORNL.GOV by CS.UTK.EDU with SMTP (5.61+IDA+UTK-930125/2.8s-UTK)
	id AA25303; Tue, 21 Sep 93 09:14:31 -0400
Received: by rios2.epm.ornl.gov (AIX 3.2/UCB 5.64/4.03)
          id AA12662; Tue, 21 Sep 1993 09:14:29 -0400
Date: Tue, 21 Sep 1993 09:14:29 -0400
From: walker@rios2.epm.ornl.gov (David Walker)
Message-Id: <9309211314.AA12662@rios2.epm.ornl.gov>
To: mpi-comm@cs.utk.edu
Subject: MPI Agenda: Second Version


              Agenda for MPI Meeting September 22-24, 1993

I can't remember what is general discussion, first reading, or second reading. 
I assume the subcommittee chairs know this.

Wednesday
1:00-1:30   Review of the Introduction chapter, and what needs to be
	    done to it.
	    (Dongarra)

1:30-3:00   Full group meeting to discuss point-to-point
	    (Snir)
	    
3:00-4:00   Language Binding Subcommittee Meeting
            
4:00-5:30   Full MPIF meeting to discuss Collective Communication
	    (Geist)

5:30-6:00   The status of the MPI reference implementation
	    (Lusk and Gropp)

6:00-7:30   Dinner break

7:30-10:30  Environmental Inquiry Subcommittee Meeting.
	    Other subcommittee meetings if necessary.

Thursday
9:00-12:00  Full meeting to discuss contexts (2nd reading?)
	    (Skjellum)
            
12:00-1:30  Lunch (provided)

1:30-3:30   Full meeting to discuss contexts (continued from morning)
            (Skjellum)

3:30-3:45   Break
            
3:45-5:00   Full meeting to discuss topologies
	    (Hempel)

5:00-6:00   Full meeting to discuss language binding
            (Lusk?)

6:00-8:00   Dinner (attendees pay, but hotel provides transport to area
                   restaurant)

8:00-10:30  Continued informal subcommittee meetings if necessary

Friday
9:00-10:30  Full group meeting for second reading of subset chapter.
            (Huss-Lederman)

10:30-10:45 Break

10:45-12:00 Any other business

From owner-mpi-comm@CS.UTK.EDU Tue Sep 21 11:50:42 1993
Received: from CS.UTK.EDU by netlib2.cs.utk.edu with SMTP (5.61+IDA+UTK-930125/2.8t-netlib)
	id AA02719; Tue, 21 Sep 93 11:50:42 -0400
Received: from localhost by CS.UTK.EDU with SMTP (5.61+IDA+UTK-930125/2.8s-UTK)
	id AA08505; Tue, 21 Sep 93 11:46:29 -0400
X-Resent-To: mpi-comm@CS.UTK.EDU ; Tue, 21 Sep 1993 11:46:28 EDT
Errors-To: owner-mpi-comm@CS.UTK.EDU
Received: from Aurora.CS.MsState.Edu by CS.UTK.EDU with SMTP (5.61+IDA+UTK-930125/2.8s-UTK)
	id AA08404; Tue, 21 Sep 93 11:45:34 -0400
Received:  by Aurora.CS.MsState.Edu (4.1/6.0s-FWP);
	   id AA08316; Tue, 21 Sep 93 10:45:04 CDT
Date: Tue, 21 Sep 93 10:45:04 CDT
From: Tony Skjellum <tony@Aurora.CS.MsState.Edu>
Message-Id: <9309211545.AA08316@Aurora.CS.MsState.Edu>
To: mpi-comm@cs.utk.edu, mpi-context@cs.utk.edu, walker@rios2.EPM.ORNL.GOV
Subject: MPI meeting ... Context

Ladies/Gentlemen:  I am coming to Dallas on Wednesday, in time for a post-dinner Context
committee meeting.  We are reading the chapter on Thursday.  

The Bristol Suites cancelled my reservation for Tuesday night, so I am coming on Wednesday;
this also means I will be bringing the polished (:-)) chapter with me.  Those of you
who want to see it Wednesday will be able to see copies, or come to the meeting after dinner.

I am sorry for the late arrival, but events have conspired against me.  Please be patient.
- Tony Skjellum
From owner-mpi-comm@CS.UTK.EDU Tue Sep 21 12:01:14 1993
Received: from CS.UTK.EDU by netlib2.cs.utk.edu with SMTP (5.61+IDA+UTK-930125/2.8t-netlib)
	id AA02958; Tue, 21 Sep 93 12:01:14 -0400
Received: from localhost by CS.UTK.EDU with SMTP (5.61+IDA+UTK-930125/2.8s-UTK)
	id AA09341; Tue, 21 Sep 93 11:57:29 -0400
X-Resent-To: mpi-comm@CS.UTK.EDU ; Tue, 21 Sep 1993 11:57:26 EDT
Errors-To: owner-mpi-comm@CS.UTK.EDU
Received: from Aurora.CS.MsState.Edu by CS.UTK.EDU with SMTP (5.61+IDA+UTK-930125/2.8s-UTK)
	id AA09325; Tue, 21 Sep 93 11:57:24 -0400
Received:  by Aurora.CS.MsState.Edu (4.1/6.0s-FWP);
	   id AA08373; Tue, 21 Sep 93 10:56:55 CDT
Date: Tue, 21 Sep 93 10:56:55 CDT
From: Tony Skjellum <tony@Aurora.CS.MsState.Edu>
Message-Id: <9309211556.AA08373@Aurora.CS.MsState.Edu>
To: mpi-comm@cs.utk.edu, walker@rios2.epm.ornl.gov
Subject: Re: MPI Agenda: Second Version


The agenda puts a "question mark" after the word second reading with
regard to the context chapter.  Why?

- Tony


----- Begin Included Message -----

From owner-mpi-comm@CS.UTK.EDU Tue Sep 21 08:37:15 1993
X-Resent-To: mpi-comm@CS.UTK.EDU ; Tue, 21 Sep 1993 09:14:33 EDT
Date: Tue, 21 Sep 1993 09:14:29 -0400
From: walker@rios2.epm.ornl.gov (David Walker)
To: mpi-comm@cs.utk.edu
Subject: MPI Agenda: Second Version
Content-Length: 1445


              Agenda for MPI Meeting September 22-24, 1993

I can't remember what is general discussion, first reading, or second reading. 
I assume the subcommittee chairs know this.

Wednesday
1:00-1:30   Review of the Introduction chapter, and what needs to be
	    done to it.
	    (Dongarra)

1:30-3:00   Full group meeting to discuss point-to-point
	    (Snir)
	    
3:00-4:00   Language Binding Subcommittee Meeting
            
4:00-5:30   Full MPIF meeting to discuss Collective Communication
	    (Geist)

5:30-6:00   The status of the MPI reference implementation
	    (Lusk and Gropp)

6:00-7:30   Dinner break

7:30-10:30  Environmental Inquiry Subcommittee Meeting.
	    Other subcommittee meetings if necessary.

Thursday
9:00-12:00  Full meeting to discuss contexts (2nd reading?)
	    (Skjellum)
            
12:00-1:30  Lunch (provided)

1:30-3:30   Full meeting to discuss contexts (continued from morning)
            (Skjellum)

3:30-3:45   Break
            
3:45-5:00   Full meeting to discuss topologies
	    (Hempel)

5:00-6:00   Full meeting to discuss language binding
            (Lusk?)

6:00-8:00   Dinner (attendees pay, but hotel provides transport to area
                   restaurant)

8:00-10:30  Continued informal subcommittee meetings if necessary

Friday
9:00-10:30  Full group meeting for second reading of subset chapter.
            (Huss-Lederman)

10:30-10:45 Break

10:45-12:00 Any other business



----- End Included Message -----

From owner-mpi-comm@CS.UTK.EDU Tue Sep 21 22:55:33 1993
Received: from CS.UTK.EDU by netlib2.cs.utk.edu with SMTP (5.61+IDA+UTK-930125/2.8t-netlib)
	id AA06018; Tue, 21 Sep 93 22:55:33 -0400
Received: from localhost by CS.UTK.EDU with SMTP (5.61+IDA+UTK-930125/2.8s-UTK)
	id AA20080; Tue, 21 Sep 93 22:52:05 -0400
X-Resent-To: mpi-comm@CS.UTK.EDU ; Tue, 21 Sep 1993 22:52:03 EDT
Errors-To: owner-mpi-comm@CS.UTK.EDU
Received: from antares9.mcs.anl.gov by CS.UTK.EDU with SMTP (5.61+IDA+UTK-930125/2.8s-UTK)
	id AA20059; Tue, 21 Sep 93 22:51:58 -0400
Received: from donner.mcs.anl.gov by antares.mcs.anl.gov with SMTP id AA27329
  (5.65c/IDA-1.4.4 for <mpi-comm@cs.utk.edu>); Tue, 21 Sep 1993 21:51:54 -0500
Message-Id: <199309220251.AA27329@antares.mcs.anl.gov>
To: mpi-comm@cs.utk.edu
Subject: minutes of August meeting
Date: Tue, 21 Sep 1993 21:51:51 -0500
From: Rusty Lusk <lusk@mcs.anl.gov>

Here are the minutes of the August meeting.

Bob and Rusty


                Minutes of the Message Passing Interface Forum
                                Dallas, Texas
                              August 11 - 13, 1993

The MPI Forum met August 11-13, 1993, at the Bristol Suites Hotel in North 
Dallas. 

This was the eigth meeting of the MPIF and the sixth regular working 
meeting in Dallas. There were both general meetings of the committee as a 
whole and meetings of several of the subcommittees. 

This meeting included the first reading of the Communication Contexts, 
Environmental Management and Subset chapters, the second reading of the 
Process Topologies chapter and formal consideration of various topics in 
the Point-to-point and Collective Communication chapters. There were a 
substantial number of formal votes taken at this meeting as well as a few 
straw votes. All of the votes are recorded in these minutes (and can be 
found by searching for VOTE) and have also been published in summary form 
to the mpi-core mailing list. 

These minutes were written by Bob Knighten (knighten@ssd.intel.com) and 
Rusty Lusk (lusk@anl.gov). 

These minutes are quite long.  If you want to see the important topics you
can search for --- and this will quickly lead to each topic (and a few
other things.)

The basic document that was used at this meeting are:

  + DRAFT Document for a Standard Message-Passing Interface (August 10,1993)
     
  + MPI Environmental Management section 


Attendees:
---------

Robert G. Babb II	U. of Denver			babb@cs.du.edu
Doreen Cheng		NASA/Ames			dcheng@nas.nasa.gov
Lyndon Clarke		University.of Edinburgh		lyndon@epcc.ed.ac.uk
James Cownie		Meiko				jim@meiko.co.uk
Jack Dongarra		UT/ORNL				dongarra@cs.utk.edu
Anne C. Elster		Cornell University.		elster@cs.cornell.edu
Jim Feeney		IBM Endicott			feenyj@vnet.endicott.ibm.com
Al Geist		ORNL				gst@ornl.gov
Ian Glendinning		University. of Southampton	igl@ecs.soton.ac.uk
Brian K. Grant		LLNL				bkg@llnl.gov
Adam Greenberg		TMC				moose@think.com
Leslie Hart		NOAA/FSL			hart@fsl.noaa.gov
Don Heller		Shell Development		heller@shell.com
Tom Henderson		NOAA/FSL			hender@fsl.noaa.gov
Alex Ho                 IBM Almaden                     wkh@almaden.ibm.com
Gary Howell		Florida Tech			howell@zach.fit.edu
Steven Huss-Lederman    SRC                      	lederman@super.org
Bob Knighten		Intel SSD			knighten@ssd.intel.com
Rik Littlefield		PNL				rj_littlefield@pnl.gov
Rusty Lusk		ANL				lusk@mcs.anl.gov
Peter Madams		nCube				pmadams@ncube.com
Dan Nessett		LLNL				nessett@llnl.gov
Steve Otto		Oregon Graduate Instiute	otto@cse.ogi.edu
Peter Pacheco		U. of San Francisco	       peter@sun.math.usfca.edu
Anthony Skjellum	Mississippi State U.		tony@cs.msstate.edu
Marc Snir               IBM, T.J. Watson            	snir@watson.ibm.com
Alan Sussman		University. of Maryland		als@cs.umd.edu
Bob Tomlinson		LANL 				bob@lanl.gov
Eric T. Van de Velde	CalTech				evdv@ama.caltech.edu
David Walker		ORNL				walker@msr.epm.ornl.gov
Joel Williamson		Convex Computer			joelw@convex.com



Wednesday, August 11
---------  ---------

-------------------------------------------------------------------------------
                               General Meeting
-------------------------------------------------------------------------------


Jack Dongarra opened the meeting by presenting the agenda that was previously 
sent out by David Walker.

				AGENDA
				------
Wednesday
	1:00 -  2:00	Subcommittee meetings
	2:00 -  4:00	Point-to-point communications	Snir
	4:00 -  5:00	Collective communications 		Geist
	6:00 -  7:30	Dinner
	7:30 - 10:00	Subcommittee meetings
        
Thursday
	9:00 - 12:00 	Context  						Skjellum
   12:00 -  1:30 	lunch
	1:30 -  2:30 	Context
	3-4 subset    Huss
	4-6 topology  Huss
	6-8 dinner
	8-10 subcommittees

Friday 
	9-10:30 env       Lusk
	10:30-12 language Lusk

Status of Readings

sec\date	May		June	August	September
--------- +--------------------------------------------------------------
p-p		  |	2	
coll	  |	1		2		2
profile	  |	1		2
context	  | 				1		2
topology  |			1		2
subset	  |			1		2		2
lang	  |					1		2
env		  |					1		2


The next meeting will be September 22-24.  It will again be 
here in Dallas.


Started at 2:10
-------------------------------------------------------------------------------
           Report From the Point-to-Point Communication Subcommittee
-------------------------------------------------------------------------------

Marc Snir presided.

Marc reorganized the chapter to make it more readable.  He also added the 
material in Section 4.13 (Derived datatypes) in line with the straw vote 
at the last meeting.

In response to a question, Marc noted that he welcomes editorial 
comments, and asks that they be sent to him in e-mail.

  Derived datatypes (4.3)
  -----------------------
  
Marc began by describing the ideas behind "Derived datatypes".

What is the relation of this for Fortran 90 data types?  Largely 
orthogonal.

Organization count: 20

STRAW VOTE: Should "Derived datatypes" be added to MPI?
----------  Yes: 22 No: 0 Abstain: 0

    Introduction (4.13.0)
    ---------------------
    
VOTE: Approve 4.13.0 (Introduction)?
----  Yes: 19  No: 0  Abstain: 1



    Datatype constructors (4.13.1)
    ------------------------------
    
Marc gave brief descriptions of the five functions in this section and 
contrasted them with the earlier buffer construction functions.

VOTE: Approve 4.13.1 (Datatype constructors)
----  Yes: 20  No: 0  Abstain: 0


	Additional functions (4.13.2)
	-----------------------------
	
It was noted that the sentence starting at line 33 on p. 77 is wrong and 
contradicts what follows.  Marc agreed and will repair this.



There was some discussion of exactly what is passed in a message using a 
datatype that contains gaps.  There was no disagreement and this will be 
clarified.

The fact that in MPI_ADDRESS has in integer OUT parameter that provides 
the byte address of location is a problem on some architectures was 
briefly discussed.  One proposal was to use a suitable implementation 
specific definition of the return type.

There was also a discussion of MPI_TYPE_COMMIT primarily to better 
understand what was intended here.  The principal confusion was that 
MPI_TYPE_COMMIT has to do with completing the definition of the type, NOT 
committing data.

There is an alternative form of MPI_TYPE_COMMIT with only one paramater 
(type).  Then would need commit before communication; can use type in 
constructors after commit.

Yet another alternative is a lazy commit, i.e. a datatype object becomes 
commited at first use in a communication.  

There are several issues in considering these alternatives.  One is ease 
of use for the programmer (lazy commit is easy); use of resources (the 
original allows reclaiming resources as soon as they are not being used); 
the cost of using a datatype buffer in a communication.

Adam Greenberg proposed yet another option - provide an optional 
function, MPI_TYPE_COMPILE, which can be used for efficiency but 
otherwise there is lazy commit.  The objection to this was efficiency of 
the communication.  Adam's counter was that he expected this to be in the 
noise of the general overhead of communication.

Marc noted that we need to write up full proposals and have a more 
focused discussion.


VOTE: Approve 4.13.2 (Additional functions) EXCEPT MPI_TYPE_COMMIT and 
----  MPI_TYPE_FREE?
	  Yes: 16  No: 0  Abstain: 2


    Use of general datatypes in communication (4.13.3)
    --------------------------------------------------
    
This section specifies how datatypes are used in send and receive, 
including how type matching working.  In particular datatypes match if 
they are structurally equivalent (i.e. the type signatures are the same.)

Is there some function that gives a count (of some suitable sort) of 
elements in a send when using datatypes?  {{{I am confused?}}}

VOTE: Have query function that returns ther number of top-most elements 
----  received?
      Yes: 14 No: 0 Abstain: 4


VOTE: Have ONLY a query function that returns the count of top-most level 
----  elements in a receive.
      Yes: No: Abstain:

VOTE: Approve 4.13.3 (Use of general datatypes in communication) as amended.
----  Yes: 15  No: 0  Abstain: 4


	Examples (4.13.4)
	-----------------
	
There are no requirements here and so no vote was taken.


	Correct use of addresses (4.13.5)
	---------------------------------

This section is about dealing with addressing when the system does not 
have  limits in using addresses systems which do not have a flat 
address space.  

VOTE: Approve section 4.13.5 (Correct use of addresses)?
----  Yes: 18  No: 0  Abstain: 1


    Message data (4.2.1)
    --------------------
    
Marc asked if the table in this section needs to be expanded to include 
all of the native C data types.  YES!


Marc reviewed all of the changes (other than order) that he made in this 
chapter.

More detail in the discussion of the semantics of point-to-point 
communication. Has added Progress (some guaranteed) and Fairness (none 
guaranteed) requirements. 

{{{Where?}}}  Can use null when nothing is needed.

On p. 61 there is a new function, MPI_TESTALL, as suggested by David 
Walker.  It is included for reason of completeness and symmetry.

{{{See Discussion on p. 62}}}

VOTE: Allow null pointers in an array of pointers (with the system 
----  required to do the right thing?
      Yes: 20  No: 0  Abstain: 1


On p. 63 there is a new function, MPI_PROBE_COUNT, which uses a datatype 
to interpret the result of a probe and get a count.

On p. 64 there is a typo in MPI_PROBE.  There should not be a datatype 
parameter.

On p. 65, the name of MPI_IS_CANCELLED has been changed to 
MPI_TEST_CANCELLED.

The time arrived to make a decision on SENDRECV (section 4.11).

Adam Greenberg suggested that there should be two tag arguments (for 
sending and for receiving) rather than only one.  One effect of this is 
that a wild card can now be used in the receive_tag.

VOTE: Have two tag arguments (send_tag and receive_tag) in MPI_EXCHANGE?
----  Yes: 6  No: 3  Abstain: 10


Section 4.12 (Null processes) is a proposal to the suggestion from Jon 
Flower that was supported in a straw vote at the last meeting.

There was a substantial discussion of the utility and cost of 
MPI_PROCNULL.  Steve Huss-Lederman, as a proxy for Rolf Hempel, argued 
for the value of this in use with process topologies.  Various people 
argued that there would a universal overhead if MPI_PROCNULL were allowed 
as a source/destination.  

Three positions: Use as legitimate source/destination; only in send/receive/exchange; not 
legitimate source/destination.
time (based on the suggestion from Jon Flower.)  

VOTE: (1) Allow MPI_PROCNULL as a source or destination for all 
          communication operations.
      (2) Allow MPI_PROCNULL only for MPI_SENDRECV and MPI_EXCHANGE.
      (3) Never allow MPI_PROCNULL as a source or destination in 
          communication operations.

          (3) Yes: 3  No: 9  Abstain: 8
          (2) Yes: 11  No: 5  Abstain: 6


Section 4.14 (Universal communication functions) includes one new 
convenience function, MPI_COMM_INIT.  This was added by Marc Snir to make 
it part of the base functions in terms of which all other functions can 
be defined.

An alternative approach is to put section 4.14 in an Annex and NOT 
require these functions as part of 

VOTE: Approve Chapter 4 (Point to Point Communication) as ammended.
----  Yes: 18  No: 0  Abstain: 1


Note that all that remains to consider in Chapter 4 are the type_commit 
and free functions.

-------------------------------------------------------------------------------
             Report From the Collective Communication Subcommittee
-------------------------------------------------------------------------------

Al Geist presided.

This was a continuation of the second reading of this chapter that was 
begun at the last meeting.  The number of changes was small.

The format of the buffer arguments have all been changed to agree with 
those in the Point-to-point Communication chapter.

The material on user_reduce has been rewritten to provide two variants, 
one assuming commutativity of the user operation and one not.

Steve Huss-Lederman asked the question if there are ANY collective 
operations that are guaranteed to give the same result for repeated runs 
with the same initial conditions.  Al Geist replied "Broadcast.  Next 
question."

A long discussion ensued.  As in previous discussions of this topic, 
there was a wide spectrum of opinions expressed.  Some insisted that 
reproducibility, at least in a debug mode, is required.  Others insisted 
this is a quality of implementation issue.  Other opinions expressed 
included that this is outside of the scope of MPI; an implementation must 
document the extent to which reproducibility is available; etc.

In line with the Discussion paragraph on p. 95, it was agreed that it is 
unneeded to have the completely general ALLTOALL.

Rik Littlefield noted that there is a useful kind of reduce that is 
missing, a "scatter-reduce" that does a reduction of sections of an array 
to an array of processes.  He will write up a proposal and distribute it 
to the collective communication mailing list.

Al Geist noted the change mentioned in the paragraph labeled Missing on 
p. 99.  There was some confusion, so Al Geist promised to add an example 
to clarify this.

Jim Cownie pointed out that it is important that implementors should 
provide an implementation guide that specifies which of the collective 
operations that may/may not be synchronizing actually are synchronizing.

Adam Greenberg countered that users must assume that these operations are 
not synchronizing and therefore such a document serves no purpose.

Adam Greenberg also expressed unease with section 5.6 and 

STRAW VOTE: Should MPI require documentation of the implementation 
----------  variations in synchronization properties of collective operations.
            Yes: 18  No: 2  Abstain: 2

Eric Van de Velde asked why two versions of user_reduce were being 
provided.  A brief review of the arguments of last time ensued.

VOTE: Approve Chapter 5 (Collective Communications)
----  Yes: 21  No: 0  Abstain: 0


-----------------------------------------------------------------------------
The group adjourned for dinner at 6:10pm

============================================================================= 

Thursday, August 12, 1993
--------  ---------------

------------------------------------------------------------------------------- 
Report From the Communication Contexts Subcommittee 
------------------------------------------------------------------------------- 

Anthony Skjellum presented.

Group, Contexts and Communicators (Chapter 3) - First Reading
-------------------------------------------------------------

  Introduction (3.1)
  ------------------
  
  Objection to use of term intra-communication and inter-communication 
  without definition.  This is editorial and will be addressed outside 
  the meeting.
  
  There are no requirements in this section, so no vote was taken.
  
  
  Context (3.2)
  -------------
  
  There was confusion about the term "hypertag".  This too is editorial.
  
  There are no requirements in this section, so no vote was taken.
  
  
  Groups (3.3)
  ------------
  
	Predefined Groups (3.3.1)
	-------------------------
	
It was proposed to change the wording describing MPI_GROUP_ALL to be "all 
processes at moment of process creation" and to add another group, 
MPI_GROUP_SIBLING which is "all processes with the same program text." 

Don Heller asked about system defined server processes and the like.  It 
was agreed to modify the wording to include these.

Jim Cownie noted that there is a problem with the notion of HOST because 
the host would have to have many different versions of MPI_GROUP_HOST.  
As an alternative Jim proposed that host should acessible via some 
constant or function that would give the rank of the host in MPI_ALL.

After various proposals for additional predefined groups {MPI_GROUP_PEER 
"all processes except the host (if there is one)", MPI_GROUP_PARENT "parent 
of all children spawned"} it was proposed that this section be revised to 
say something like "There are no predefined groups. The effect of 
predefined groups is gotten by using the groups associated with the 
predefined communicators." 
	
Adam Greenberg asked that a vote on this section NOT be taken until after 
the decision on which communicators are predefined.


  
  Communicators (3.4)
  -------------------
  
    Predefined Communicators (3.4.1)
    --------------------------------
    
MPI_COMM_ALL
MPI_COMM_SIBLING
MPI_COMM_PEER   
MPI_COMM_PARENT
MPI_COMM_SELF

After dealing for a time with the complexity and inclarity of this 
situation various alternatives were offered.  The simplest was to have 
only MPI_COMM_ALL.  Dan Nessett 

Organization count: 22

VOTE: Revise sections 3.3 and 3.4 as follows:
----    (1) There are no predefined groups
        (2) The only predefined communicators are MPI_COMM_ALL and 
            MPI_COMM_PEER.
        (3) There is a predefined MPI_HOST_RANK which gives the rank of 
            the host in the ALL group.  It is MPI_UNDEFINED if there is 
            no host.
      Yes: 17  No: 2  Abstain: 3


VOTE: Approve sections 3.3 and 3.4 as amended.
----  Yes: 18  No: 0  Abstain: 3


  Group Management (3.5)
  ----------------------
  
    Local Operations (3.5.1)
    ------------------------

There was some discussion of how MPI manages the coordination between 
various groups (always by relation to the ALL group), which of the 
inquiry functions in this section properly belong in the environmental 
sections (none) and general confusion about what the various functions 
do.  No changes were made.

VOTE: Approve section 3.5.1 (Local Operations)?
----  Yes: 19  No: 0  Abstain: 3


    Local Group Constructors (3.5.2)
    --------------------------------

Most of the discussion had to do with clarification and editorial 
corrections.  

Eric V. asked for a function to reorder the ranks in a group. After some 
discussion as to exactly what is needed and why it was noted that the 
MPI_LOCAL_SUBGROUP provides the desired function. It was agreed to add a 
remark to this effect.

It was noted that all of the functions in section 3.5 need descriptions 
rather than just names and parameters.

Marc Snir asked for a clarifying note that of the functions in this 
section only MPI_LOCAL_SUBGROUP and MPI_LOCAL_SUBGROUP_RANGES can change 
the ranks.  This has as a side effect that the ranges must not overlap.
This was agreed.

Lyndon Clarke asked for a clarification that the effect of 
MPI_LOCAL_SUBGROUP_RANGES is as though the ranges were expanded to a list 
of ranks and MPI_LOCAL_SUBGROUP were called with these ranks.  There 
should be a similar statement for the relation between 
MPI_LOCAL_SUBGROUP_EXCL_RANGES and MPI_LOCAL_EXCL_SUBGROUP.  This was 
agreed as well.

VOTE: Approve section 3.5.2 (Local Group Constructors) as clarified?
----  Yes: 17  No: 0  Abstain: 5


    Collective Group Constructors (3.5.3)
    -------------------------------------
    
The phrase "a stable sort is used to determine rank order" on line 23 of 
p. 18 will be change to say that in the event of ties the rank in the 
comm group will be used to determine the rank in new_group.

After discussion of the meaning of MPI_COLL_SUBGROUP it was proposed to 
have instead:

MPI_COLL_SUBCOMM(comm, key, color, new_comm)

which will then appear in section 3.7.3.  The effect on section 3.5.3 
is that it would simply say there there are no collective group 
constructors.

VOTE: Approve section 3.5.3. (Collective Group Constructors) as amended?
----  Yes: 18  No: 0  Abstain: 3


---
break  10:30 - 11
---

Sections 3.6 and 3.7 (pp. 18-21) were handled by giving a function by 
function discussion followed by an overview of a "tuning" proposal by 
Marc Snir.

  Operations on Contexts (3.6)
  ----------------------------
  
    Local Operations (3.6.1)
    ------------------------
    
    Collective Operations (3.6.2)
    -----------------------------

In MPI_CONTEXTS_ALLOC, the len parameter is removed.  The "void *" in the 
descriptions is removed and better words will be provided.

The idea of quiescence that was prominent in the context proposal at the 
last meeting has largely disappeared.  The manner of dealing with the 
problem that quiescence was designed to solve is discussed at length on 
p. 19.

A discussion of the relation of point-to-point and collective 
communication was prompted by a dispute between Marc Snir and Jim 
Cownie.  Jim made the point that the collective communication routines 
can be written using the point-to-point communication routines and the 
material in the context chapter.  It was noted that there is one 
collective communication routine in the context chapter - 
MPI_CONTEXTS_ALLOC - and some system magic must insure that this works 
correctly.  Marc Snir noted that the system can provide similar magic 
throughout for optimization purposes.
    

  Operations on Communicators (3.7)
  ---------------------------------

	Local communicator Operations (3.7.1)
	-------------------------------------

There were no issues in this section.
	
	
	Local Constructors (3.7.2)
	--------------------------

There is a MPI_COMM_BIND functions missing.  It was accidently deleted 
and will be added.  The form is:

MPI_COMM_BIND(group, context, new_comm)
  IN	group	
  IN	context		
  OUT	new_comm

The details will be provided in the next draft.

The name of the function MPI_COMM_UNBIND will be changed to MPI_COMM_FREE 
(and the function of this name in the point-to-point chapter will be 
renamed.)

The frequent reference to MPI_COMM_GROUP(comm) will be changed to 
MPI_COMM_GROUP(comm, group).


	Collective Communicator Constructors (3.7.3)
	--------------------------------------------

The one collective operation for communicators is MPI_COMM_MAKE.

Adam Greenberg noted that as currently written every member of the group 
associated with sync_comm gets comm_new which has 


At this point Marc Snir 

An out of context proposal

 - Only use of context is for local creation of communicators.
 - Result can be achieved without explicit context object
 (some loss of safety)
 - Either case needs ruls for coordinated context allocation.
 
 Communication context
   - specified by communicator
   - can be "preallocated" and then locally bound to communicator.
   
MPI_CONTEXTS_ALLOC(comm, n) - preallocates n contexts and "caches" them 
with comm.

{This can be called repeatedly and adds the number of contexts specified 
on each call.  This is a collective operation.}

MPI_CONTEXTS_FREE(comm, n) - releases up to n preallocated contexts.

{This can be called repeatedly.  It is a local operation.}

MPI_COMM_CONTEXT(comm, n) - queries the number of available preallocated 
contexts.

{This is a local operation.}

MPI_COMM_DUP(comm, new_comm) - duplicates a comunicator.  Uses locally 
cached context, if available, otherwise this is a collective operation

{It is erroneous if some but not all have locally cached context 
available.  Note that new_comm does NOT have any cached context.)

MPI_COM_LDUP(comm, new_comm) - duplicates a communicator.  Uses locally 
cached context and returns NULL if none available.


MPI_COMM_MAKE(sync_comm, comm_group, comm_new)

MPI_COMM_LMAKE(sync_comm, comm_group, comm_new)
  - both of these create new communicator associated with the comm_group 
  which is a subgroup of the group of sync_comm.  This must be call by 
  all members of the group of sync_comm.

Some unease was expressed about sometime collective sometimes not.  Safety?

In response Marc noted that there could also be MPI_COMM_GDUP which would 
always do a collective operation.

Correctness rule
----------------

All processes in a comm group must execute the same sequence of calls to 
MPI_CONTEXT_ALLOC, MPI_COTEXT_FREE, MPI_COMM_xDUP, MPI_COMM_xMAKE with 
comm as argument.

  - simple to state
  - same as for collective communication
  - too conservative?

Note: This is compatible with the existence of static preallocated 
contexts.

At this point Lyndon Clarke, having been waving his hand in the air for 
several minutes, stood on his chair to try and get Marc to address his 
question.

After a brief discuss between Adam, Marc and Tony, Lyndon was allowed to 
speak.

Lyndon Clarke noted that there is no way for the system to check for proper 
usage of arguments, so this offers no additional security compared with 
earlier proposals. Others noted that this did provide some additional 
safety, but it is hard to make direct comparison. 

Steve Huss asked if any one in the contex comm wanted to keep the current 
material.  Tony said no, but that would likely not be true if Mark Sears 
were here.

STRAW VOTE: Make this into a full proposal to replace the current 3.7.2 & 
----------  3.7.3
			Yes: 25 No: 0 Abstain: 2

--
break for lunch  12:10 - 1:40
--

  Cacheing (3.9)
  --------------
  
Rik Littlefield presented this material.

Attribute Cacheing

Function:
	Safely attach arbitrary informatio to groups (and communicators).
	
Purpose:
	Allow modules to retain or exchange gropup-specific information WITHOUT 
	complicated calling sequences or correctness ruls for use of module
	
Examples


Basic Capabilities:

	- Attributes are local
	- Attribute value can be pointer to arbitrary structure
	- Attributes are referenced by a key value obtained from MPI
	- Attributes can be defined and retrieved
	- Destructur routine is called when the group (communicator) is freed
	- Propagation routine is called when the group (communicator) is 
      duplicated.

Funtions:
	MPI_GET_ATTRIBUTE_KEY( OUT 	keyval)
	
	MPI_GROUP_ATTR(IN group, OUT attr_set_handle)
	MPI_COMM_ATTR(IN comm, OUT attr_set_handle)
	
	MPI_SET_ATTRIBUTE(
		IN attr_set_handle
		IN keyval
		IN attribute_value
		IN *attribute_destructor_routine
		IN *attribute_propagation_routine
		)
		
	MPI_TEST_ATTRIBUTE(
		IN attr_set_handle
		IN keyval
		OUT attribute_value
		OUT result_status
		)
		
	attribute_destructor_routine(IN attribute_value)
	attribute_propagation_routine(IN attribute_value, ...<TBD>...)
	
This list is an updated and organized variant of the text. In particular 
the two routines, MPI_ATTRIBUTE_ALLOC and MPI_ATTRIBUTE_FREE, have been 
eliminated. 

What is the rationale for these functions altogether?  These provide a 
method for managing resources associated with groups and communicators.  
For example this provides facilities to implement the topology facilities 
on top of MPI.

Rik observed that this allows one to effectively extend MPI, e.g. to 
provide a user written collective operation that can be safely use with 
MPI and which looks like an MPI routine.

Marc Snir asked for a routine to change the value of attributes without 
having to provide the destructor and propagation routines.  There was a 
question if this introduced a degree of insecurity.  Jim Cownie noted 
that one might well want at attribute with null destructor and 
propagation routines.

Such a reset routine will be provided in the next draft of this chapter.

Do we need attributes for both groups and communicators?  Why not just on 
groups?  This would allow elimination of attribute handles.  There do 
seem to be situations where it is need on communicators, not just on 
groups.

Adam noted that this proposal puts a resource burden on the system, so he 
asked about the possiblity of providing only a single system slot with 
the remainder of the storage provided by the user.  Adam is concerned 
about the admixture of resources at both user and system level.  {{{I'm 
confused}}}

Tony proposed adding MPI_ATTRIBUTE_ALLOC and MPI_ATTRIBUTE_FREE back.

It was claimed that providing attribute allocate and free routines 
together with a call back mechanism associated with the free is 
sufficient to provide all of the functions in section 3.9.  Various 
people countered that this would introduce new problems of coordination 
and safety.  In particular each library might have independent attribute 
mechanisms and this would require using multiple callback on each call of 
free.

It was noted that this is very similar to the that was solved in X by 
using a register of callback functions.  That can provide a model for 
this group to use.


STRAW VOTE: Do we want a cacheing mechanism?
----------  Yes: 14  No: 4  Abstain: 7


How would toplogy need this?  Steve Huss, as virtual Rolf Hemple, noted 
that topologies need a variety of information (e.g. dimensions, 
periodicities) that need to be associated with group (and 
communicators?).  As topologies are a part of MPI, a general cacheing 
mechanism is not required.  But without it there is likely to be 
conflicts between topology and user written libraries.


VOTE: Approve section 3.9 (Cacheing) as amended in the presentation?
----  Yes: 8  No: 7  Abstain: 6


--------
break 2:45 - 3:10

Adam Greenberg asked about having a User's Guide meeting tonight.
There are enough to have a meeting here after dinner
--------

  Introduction to Inter-Communication (3.8)
  -----------------------------------------
  
Tom Henderson presented on Inter-communication

( A ) <=> ( B ) <=> ( C )
  /         /
 Arank     Brank
 
 Arank:
 -----
   send(...,Brank,tag, commAB)
   
Brank:
-----
	recv(...,Arank,tag,commAB,...)

Want to be able to send from process in one group to process in another 
group using the rank in the target group.

                      ALTERNATIVES

Local group has acess to remote group and have a rank translation in some 
common ancestor.

User maintains tables and communicators for group-pairs.


{{{SLIDES HANDED OUT}}}

STRAW VOTE: Hear the full proposal?
----------  Yes: 25  No: 1  Abstain: 4


Basic concepts

	Local Group						Remote Group
		local group leader				remote group leader

Peer-group that contains both group leaders.  {Not to be confused with 
MPI_COMM_PEER introduced earlier today.}

-
All members of both groups must call MPI_COMM_PEER_MAKE.
What is reason for tag? - serves as the identifier for this particular 
inter-communicator.

Joel Williamson asked why do this rather than just working in MPI_ALL?  
So can use names that are convenient for the problem at hand.  This is 
also suitable for generalization to a dynamic situation rather than the 
static situation that is now in MPI.
-

Why does everyone call PEER_MAKE?  To get a common communicator.
-

Discussion slide

Add an IN argument, my_leader_rank, to MPI_COMM_PEER_MAKE().  This allows 
later addition of dynamic process creation.

The IN argument peer_comm need only be valid in the local group leader.  
Only the group leaders need to be members of peer_comm. 
-
LOOSELY-SYNCHRONOUS INTER-COMMUNICATOR CONSTRUCTOR
-
SYNCHRONIZATION PROPERTIES OF MPI_COMM_PEER_MAKE_START() AND 
MPI_COMM_PEER_MAKE_FINISH()
-
COMMUNICATOR STATUS
(convenience function - make go away)
-
Synchronization issue: Can a process using an inter-communicator send a 
message using that inter-communicator as soon as it has the 
inter-communicator?  Something needs to be said.
-
INTER-COMMUNICATOR SUPPORT
-
EXAMPLE 1
-
"UNDER THE HOOD"
-
INTRA-COMMUNICATION

INTER-COMMUNICATION
-
POSSIBLE IMPLEMENTATION OF MPI_COMM_PEER_MAKE()
-
POSSIBLE IMPLEMENTATION OF MPI_COMM_PEER_MAKE_START()
-
POSSIBLE IMPLEMENTATION OF MPI_COMM_PEER_MAKE_FINISH()
-

What is comparison with using the common ancestor approach?  To do this 
one would create a union group

STRAW VOTE: Have inter-communication?
----------  Yes: 14  No: 3  Abstain: 9

VOTE: Approve section 3.8 (Introduction to Inter-Communication) as 
----  amended but minus the name service?
      Yes: 8  No: 2  Abstain: 10

-
?
-
EXAMPLE 2
-
EXAMPLE 3
-
EXAMPLE 4
-
Al Geist noted all of the examples should be expanded to show at least 
one message being sent!
-
POSSIBLE IMPLEMENTATION OF MPI_COMM_NAME_MAKE()
-
POSSIBLE IMPLEMENTATION OF MPI_COMM_NAME_MAKE_START()
-
POSSIBLE IMPLEMENTATION OF MPI_COMM_NAME_MAKE_FINISH()
-

VOTE: Approve the name serverice material in section 3.8 (as amended)?
----  Yes: 8  No: 1  Abstain: 10



-------------------------------------------------------------------------------
                 Report From the Process Topology Subcommittee
-------------------------------------------------------------------------------

Process Topology - Second Reading
---------------------------------

Steve Huss presented.

{He put on a pair of Birkenstocks to emphasize that he was acting as a 
virtual Rolf Hemple.}

A couple of proposals that were made verbally at the last meeting were 
not written and so have not been included.

  Introduction (6.1)
  ------------------
  
VOTE: Approve section 6.1 (Introduction)
----  Yes: 13  No: 0  Abstain: 5

  Virtual Topologies (6.2)
  ------------------------

Terminology - change the name to "process topologies" (Eric Van ) or 
"application topologies" (David Walker). 

VOTE: Approve section 6.2 (Virtual Topologies)?
----  Yes: 10  No: 0  Abstain: 6


  Embedding in MPI (6.3)
  ----------------------
  
There were various editorial remarks which Steve recorded to relay to 
Rolf Hemple.
  
VOTE: Approve section 6.3 (Embedding in MPI)?
----  Yes: 9  No: 0  Abstain: 8

  Overview of the proposed MPI functions (6.4)
  --------------------------------------------

The initial part of 6.4 (before 6.4.1) will go away.

VOTE: Specify that we use row major order?
----  Yes: 4  No: 0  Abstain: 13

Steve Huss pointed out that the extent to which these functions are global
functions is not specified.  Lyndon Clarke offered the amendment that 
they be specified as collective.

There was a discussion of the group parameters in these functions.  Steve 
agreed to propose to Rolf that they be systematically replaced by 
communicators.

VOTE: Replace all group parameters throughout by communicator?
----  Yes: 8  No: 1  Abstain: 7

VOTE: MPI_MAP_CART and MPI_MAP_GRAPH shall be global routines?
----  Yes: 4  No: 2  Abstain: 12

The large number of abstentions in the recent votes led to a discussion 
of the value of topology and also to a discussion of our procedures.  
There was no strong interest in discussing including topology.  Neither 
was there any strong interest in changing procedures.

VOTE: Postpone the second reading of the topology chapter until the next 
----  meeting?
      Yes: 3  No: 12  Abstain: 2
      
VOTE: Approve chapter 6 as amended?
----  Yes: 12  No: 3  Abstain: 2


-------------------------------------------------------------------------------
                     Report from the Subset Subcommittee
-------------------------------------------------------------------------------

Steve Huss presided.

This was NOT a second reading. 

Jim Cownie argued that the profiling material should be included in the 
subset because this provides important facilities and the cost of 
providing it in an initial implementation is not large.

Several people agreed with this, so there was a quick vote.

STRAW VOTE: Include profiling in the subset?
----------  Yes: 24  No: 0  Abstain: 1

A discussion of the parts of environmental management and inquiry to be 
included lead to an agreement that this should be deferred until the 
presentation on this material.

There was nothing to be said about language binding - there will be F77 
and C bindings.

STRAW VOTE: Exclude topology from the subset?
----------  Yes: 21  No: 2  Abstain: 3


It was agreed that the list for collective communication in the document 
is OK.

In considering the Point-to-point Functions, the list in the document 
includes MPI_SENDRECV but excludes MPI_EXCHANGE.  It was generally agreed 
that this is sensible.

Steve Otto argued for including hvec type functions in the subset because 
of common usage.  In considering this and the issue of derived datatype 
several posibilities were considered.  The one that got general support 
is to include all of the material in section 4.13.  

It was noted that data conversion is not a subset issue - heterogeneous 
systems have to have it; homogeneous systems do not need it.

---
break for dinner at 6:05
---

Subcommitte meetings - starting about 8:30

  Subset - immediately after dinner
  User Guide - after subset meeting
  Context - after subset meeting

 =============================================================================

Friday, June 25, 1993
------  -------  ----

-------------------------------------------------------------------------------
                Report from the Environmental Management Subcommittee
-------------------------------------------------------------------------------

Rusty Lusk presided.

Rusty began by handing out a new version


Environmental Management and Inquiry

 1 Initialization
 
 2 Environmental query
 
 3 Others
 
 
Initialization and Termination

  Current draft:
    MPI_INIT()			"idempotent"
    MPI_FINALIZE()		"last MPI call"
    
Discussion:
  How does a library know whether to call MPI_FINALIZE?
  Is MPI_FINALIZE optional?
  MPI_INIT requires some state not attached to any object; why not a 
    communicator?
  MPI_INIT requires some state not attached to any object; why not a 
    communicator?
  
A proposed amendment:

	MPI_INIT(old_comm, new_comm)
{if old_comm is null, gets first communicator}
	MPI_FINALIZE(current_comm, old_comm)
	
Nests MPI invocations
Attaches MPI state to communicator
	

STRAW VOTE: We shall provide a mechanism that allows a library written 
----------  using to be called from either within or without MPI?
            Yes: 11  No: 8  Abstain: 3


Steve Huss asks what happens if two libraries are invoked using different 
numbers of processors, then what is the ALL group?

Jim Cownie offered a very simple proposal - All processes must call 
MPI_INIT at the start and all processes must call MPI_FINALIZE at the 
end.  

Note that the picture is that by a vendor provided miracle the MPI system 
is started and only after this can MPI_INIT be called.  This is likely to 
be a global barrier.


STRAW VOTE: MPI_INIT and MPI_FINALIZE must be called exactly once in each 
----------  process.
            Yes: 18  No: 0  Abstain: 5


organization count: 20

Lotes of continuing discussion.  It was agreed that, in the context of 
the straw vote, any program that violated the requirement is erroneous.

VOTE: Have an MPI_INITIALIZED flag?
      Yes: 16  No: 1  Abstain: 2

VOTE: MPI_INIT and MPI_FINALIZE must be called exactly once in each 
----  process.  MPI_INIT is a global operation.  It must be called before 
	  any other MPI routine.  MPI_FINALIZE is the last MPI call.
      Yes: 16  No: 1  Abstain: 3 

Rusty offered a proposal for MPI_ABORT(error_code) which terminates every
process in the ALL group.

VOTE: Have MPI_ABORT?
----  Yes: 13  No: 3  Abstain: 2


  MPI-Specific (1.1)  [Section numbers from chapter handed out at meeting]
  ------------------
  
Why are there communicator arguments in MPI_NumCommunicator?  Rusty did 
not know.  No one had a convincing argument.

VOTE: Remove communicator arguments from MPI_ValidTags and 
----  MPI_NumCommunicator?
      Yes: 14  No: 0  Abstain: 5


There was a fair amount of confusion about the intent and value of the 
MPI_BufferParams routine.  In particular, various alternative proposals 
were mentioned.  Rik Littlefield has proposed that the user be able to 
specify buffering capability

STRAW VOTE: Should there be some way of asking the system about buffering?
----------  Yes: 15  No: 2  Abstain: 7

STRAW VOTE: Should there be some way of telling the system about buffer 
----------  requirements?
            Yes: 6  No: 3  Abstain: 15

Rik will provide a proposal at the next meeting.

VOTE: Remove MPI_IOmode?
----  Yes: 18  No: 1  Abstain: 2

Discussion of MPI_Errormode?  There was again uncertainty about the 
communicator argument leading to:

VOTE: Remove the communicator argument from MPI_Errormode?
----  Yes: 7  No: 4  Abstain: 8 

After further discussion it was realized that while something of this 
sort is desirable, that is much more detail (e.g. how are error handlers 
established) that is essential before accepting this function.

STRAW VOTE: Should there be a facility to set and query error mode?
----------  Yes: 18  No: 0  Abstain: 0

 
There was quick agreement that MPI_Has_Nonblocking and 
MPI_Has_Heterogeneous are not useful.

VOTE: Remove MPI_Has_Nonblocking and MPI_Has_Heterogeneous?
----  Yes: 9  No: 0  Abstain: 4 

STRAW VOTE: Have functions to inspect receive queue and other interesting 
----------  internal structures?
            Yes: 12  No: 3  Abstain: 2 

Anne Elster again asked for MPI_LOAD_INFO.  She was proposing a modified 
version that had less time-specific information, but no written proposal 
was available at the meeting.  A concrete proposal will be seen at the 
next meeting.

VOTE: Remove sections 1.2 (Parallel programming) and 1.3 (non-MPI) except 
      keep for MPI_Ge
----  Yes: 8  No: 3  Abstain: 2


VOTE: Accept MPI Environmental Management chapter as amended.
----  Yes: 8  No: 2  Abstain: 3


------------------------------------------------------------------------------
MPI Sound Bites
Jim Cownie

Where's David?

Oh No!

Don't think about that one too much

What's the question again?

Those in favor of going to the bar?

Shall we accept the chapter as eviscerated?

------------------------------------------------------------------------------
                Report from the Language Binding Subcommittee
-------------------------------------------------------------------------------

Rusty Lusk presided.

Language Binding

7.1-7.4 will go into another chapter (MPI Terms and Conventions)
7.5 will go into an Appendix

We need to:
  1.	Update and read 7.1-7.4
  2.	Decide on principles for binding presentation
  3.	Decide on format of definitions in the chapters
  4.    Decide on format and order of definitions in appendix.
  5.    Choose a procedure for agreeing on names of C functions, Fortran
          subroutines, named constants, types.
  6.    Enforce consistency
  
1. Modification to 7.1-7.4 (see draft)

2. Presenting the bindings
	a. Named constants (MPI_SUCCESS)
	b. Named types (MPI_COMMUNICATOR)
	c. Functions and arguments
		i. C - use ANSI C style
	   ii. Fortran - use prototypes and declarations
	d. Consistency of formal argument names
	e. IN arguments before OUT arguments
	f. return code last argument in FORTRAN
	g. others?

3. Current 7.5 OK modulo name updating?

Jim Cownie argued that the principle that "all C functions should return 
an error code" should be relaxed for those functions that would best be 
implemented using macros.

VOTE: Accept chapter and annex with the modifications outline by Rusty
----  Yes: 12  No: 0  Abstain: 1 


Format

In the chapters

  Current Format    <-  match C binding in order and number of arguments
        +
  Fortran Binding   <-  match appendix
        +
  C Binding         <-  match appendix
  
In the appendix,
  Sort by appearance order?
  Alphabetically within chapter?    <-- this one chosen
  Alphabetically?
  
Keep appendix after using if for consistency check?

(Note alphabetical index)

As a technical issue, Steve Otto would like to have the bindings appear 
in the chapter source, but only appear printed in the appendices.

There was general agreement that in the appendix the functions should 
appear alphabetically within each chapter.

------------------------------------------------------------------------------




From owner-mpi-comm@CS.UTK.EDU Wed Sep 22 14:31:24 1993
Received: from CS.UTK.EDU by netlib2.cs.utk.edu with SMTP (5.61+IDA+UTK-930125/2.8t-netlib)
	id AA10658; Wed, 22 Sep 93 14:31:24 -0400
Received: from localhost by CS.UTK.EDU with SMTP (5.61+IDA+UTK-930125/2.8s-UTK)
	id AA02812; Wed, 22 Sep 93 14:27:56 -0400
X-Resent-To: mpi-comm@CS.UTK.EDU ; Wed, 22 Sep 1993 14:27:54 EDT
Errors-To: owner-mpi-comm@CS.UTK.EDU
Received: from sun2.nsfnet-relay.ac.uk by CS.UTK.EDU with SMTP (5.61+IDA+UTK-930125/2.8s-UTK)
	id AA02781; Wed, 22 Sep 93 14:27:52 -0400
Via: uk.ac.daresbury.cxa; Wed, 22 Sep 1993 19:26:34 +0100
From: "R.J. Allan" <rja@cxa.dl.ac.uk>
Date: Wed, 22 Sep 93 19:22:20 +0100
Message-Id: <21256.9309221822@uk.ac.dl.cxa>
To: owner-mpi-comm@CS.UTK.EDU
Cc: mpi-comm@cs.utk.edu, elster@cs.cornell.edu
In-Reply-To: Anne C. Elster's message of Thu, 16 Sep 93 03:44:56 -0400 <9309160744.AA24612@elli.cs.cornell.edu>
Subject: MPI_LOAD

A quick comment on load balancing and message-passing harnesses.

We have done load balancing using our own Fortnet harness on, for instance,
a domain-decomposed CFD code.

This is easy to do (given an algorithm!) providing you have access to
CPU time and WALL time, and can time over computation and communication
parts of the code.

I am pleased to see that MPI has this facility already, more general
load tools are very debatable... and probably program dependent in
some way

			Cheers,

Robert J. Allan

Advanced Research Computing Group,
Science and Engineering Research Council,
Daresbury Laboratory,
Daresbury,
Warrington, WA4 4AD,
U.K.

'phone +44 925 603207
FAX +44 925 603634

e-mail r.j.allan@daresbury.ac.uk
From owner-mpi-comm@CS.UTK.EDU Wed Sep 22 16:19:13 1993
Received: from CS.UTK.EDU by netlib2.cs.utk.edu with SMTP (5.61+IDA+UTK-930125/2.8t-netlib)
	id AA11864; Wed, 22 Sep 93 16:19:13 -0400
Received: from localhost by CS.UTK.EDU with SMTP (5.61+IDA+UTK-930125/2.8s-UTK)
	id AA11362; Wed, 22 Sep 93 16:11:06 -0400
X-Resent-To: mpi-comm@CS.UTK.EDU ; Wed, 22 Sep 1993 16:11:05 EDT
Errors-To: owner-mpi-comm@CS.UTK.EDU
Received: from sampson.ccsf.caltech.edu by CS.UTK.EDU with SMTP (5.61+IDA+UTK-930125/2.8s-UTK)
	id AA11354; Wed, 22 Sep 93 16:11:03 -0400
Received: from elephant (elephant.parasoft.com) by sampson.ccsf.caltech.edu with SMTP id AA26994
  (5.65c/IDA-1.4.4 for mpi-comm@cs.utk.edu); Wed, 22 Sep 1993 13:11:01 -0700
Received: from lion.parasoft by elephant (4.1/SMI-4.1)
	id AA03022; Wed, 22 Sep 93 13:04:11 PDT
Received: by lion.parasoft (4.1/SMI-4.1)
	id AA11731; Wed, 22 Sep 93 13:13:44 PDT
Date: Wed, 22 Sep 93 13:13:44 PDT
From: jwf@lion.Parasoft.COM (Jon Flower)
Message-Id: <9309222013.AA11731@lion.parasoft>
To: mpi-comm@cs.utk.edu
Subject: MPI_LOAD


I agree with Robert Allan -- we have CPU and wallclock statistics
inside Express and actually use it when computing grid mappings
(i.e., virtual toplogies). It works remarkably well - better than
I think it would be reasonable to expect. If anyone remembers the
"wall of SGI's" that we had at Supercomputing '92 we had a CFD
code that would migrate to and fro between 8 SGI's, and HP and an
RS/6000 depending on what other "stuff" was chewing up their
resources.

So..... I think that MPI would probably benefit a lot from
standardizing this type of call because it would encourage
people to play, and potentially learn a lot about the rather
under-explored field of dynamic load balancing.

HOWEVER, having said that I don't think it's really in MPI's
charter to include this stuff, just as it doesn't include
high resolution timers. Of course, I was one of the people 
that wanted that feature too!

	Jon
From owner-mpi-comm@CS.UTK.EDU Tue Oct 19 07:36:42 1993
Received: from CS.UTK.EDU by netlib2.cs.utk.edu with SMTP (5.61+IDA+UTK-930125/2.8t-netlib)
	id AA02869; Tue, 19 Oct 93 07:36:42 -0400
Received: from localhost by CS.UTK.EDU with SMTP (5.61+IDA+UTK-930922/2.8s-UTK)
	id AA25225; Tue, 19 Oct 93 07:32:12 -0400
X-Resent-To: mpi-comm@CS.UTK.EDU ; Tue, 19 Oct 1993 07:32:11 EDT
Errors-To: owner-mpi-comm@CS.UTK.EDU
Received: from [129.215.56.21] by CS.UTK.EDU with SMTP (5.61+IDA+UTK-930922/2.8s-UTK)
	id AA25217; Tue, 19 Oct 93 07:32:07 -0400
Date: Tue, 19 Oct 93 12:31:48 BST
Message-Id: <29074.9310191131@subnode.epcc.ed.ac.uk>
From: L J Clarke <lyndon@epcc.ed.ac.uk>
Subject: mpi; future availability
To: mpi-comm@cs.utk.edu
Reply-To: lyndon@epcc.ed.ac.uk

Howdy y'all

This may sound a little premature, but its something are frequently
asked, so I just thought I'd see if there is an answer.  I'd be really
grateful for any real answers. 

We know that there is planned a demonstration of MPI at Supercomputing,
and an MPI workshop.

What will be the availability status of the demonstrator implementation,
and of the TCP/IP mpid which is being written (by Tony et al, I recall)?

Are any of the vendors able to give quotable information about when
implementations of MPI will be released for their machines? 

Its actually quite important to know these things for acceptance of MPI
in project planning, and we are doing our bit to promote acceptance of
MPI, and have a lot of project planning here at the moment. 

Thanks and Best Wishes
Lyndon

         /--------------------------------------------------------\
    e||) | Lyndon J Clarke    Edinburgh Parallel Computing Centre | e||) 
    c||c | Tel: 031 650 5021  Email: lyndon@epcc.edinburgh.ac.uk  | c||c 
         \--------------------------------------------------------/


From owner-mpi-comm@CS.UTK.EDU Sat Nov 27 04:50:26 1993
Received: from CS.UTK.EDU by netlib2.cs.utk.edu with ESMTP (8.6.4/2.8t-netlib)
	id EAA29159; Sat, 27 Nov 1993 04:50:25 -0500
Received: from localhost by CS.UTK.EDU with SMTP (8.6.4/2.8s-UTK)
	id EAA19651; Sat, 27 Nov 1993 04:48:33 -0500
X-Resent-To: mpi-comm@CS.UTK.EDU ; Sat, 27 Nov 1993 04:48:32 EST
Errors-to: owner-mpi-comm@CS.UTK.EDU
Received: from Aurora.CS.MsState.Edu by CS.UTK.EDU with SMTP (8.6.4/2.8s-UTK)
	id EAA19644; Sat, 27 Nov 1993 04:48:31 -0500
Received:  by Aurora.CS.MsState.Edu (4.1/6.0s-FWP);
	   id AA00442; Sat, 27 Nov 93 03:48:45 CST
Date: Sat, 27 Nov 93 03:48:45 CST
From: Tony Skjellum <tony@Aurora.CS.MsState.Edu>
Message-Id: <9311270948.AA00442@Aurora.CS.MsState.Edu>
To: mpi-comm@CS.UTK.EDU
Subject: MPI Libraries Paper

Dear colleagues, following up on my promise at SC'93 minisymposium,
the paper "Writing Libraries in MPI" is now available on anonymous
ftp.

site:	aurora.cs.msstate.edu
directory: pub/reports
file: mpi_lib_27nov93.ps.Z

This will appear in the Proceedings of the Scalable Libraries Conference,
to be published by IEEE Press.

-Tony Skjellum
From owner-mpi-comm@CS.UTK.EDU Wed Jan 12 08:54:53 1994
Received: from CS.UTK.EDU by netlib2.cs.utk.edu with ESMTP (8.6.4/2.8t-netlib)
	id IAA14110; Wed, 12 Jan 1994 08:54:53 -0500
Received: from localhost by CS.UTK.EDU with SMTP (8.6.4/2.8s-UTK)
	id IAA15141; Wed, 12 Jan 1994 08:53:44 -0500
X-Resent-To: mpi-comm@CS.UTK.EDU ; Wed, 12 Jan 1994 08:53:42 EST
Errors-to: owner-mpi-comm@CS.UTK.EDU
Received: from dasher.cs.utk.edu by CS.UTK.EDU with SMTP (8.6.4/2.8s-UTK)
	id IAA15134; Wed, 12 Jan 1994 08:53:41 -0500
From: Jack Dongarra <dongarra@CS.UTK.EDU>
Received:  by dasher.cs.utk.edu (5.61+IDA+UTK-930922/2.7c-UTK)
	id AA26974; Wed, 12 Jan 94 08:52:54 -0500
Date: Wed, 12 Jan 94 08:52:54 -0500
Message-Id: <9401121352.AA26974@dasher.cs.utk.edu>
To: mpi-comm@CS.UTK.EDU
Subject: ``Final'' MPI meeting


We are planning to have the ``Final'' MPI Meeting 
in Knoxville, Tennessee February 23rd-25th.
Plan to fly into the Knoxville airport, called the Knoxville 
McGhee-Tyson airport.

We have made arrangements with the Hilton Hotel in downtown Knoxville.

  Hilton Hotel
  501 W. Church Street
  Knoxville, TN
  Phone:  615-523-2300

The room rate is $64.00. When making a reservation tell them you are
with the MPI meeting.  

Rooms under MPI for the above rate will be available until Feb. 1, 
after that, they will be on an availability basis.

The hotel provides a shuttle service from the airport to the hotel.
There is a hotel phone located in the airport lower level at baggage
pickup. Let the hotel know you have arrived and are with MPI and they
will arrange to pick you up; or you can call the hotel in advance, 
give your flight # and arrival time, and the hotel will go ahead and 
schedule a pick up. The hotel shuttle leaves the hotel on-the-hour and
picks up at the airport on-the-half-hour so there could be a delay.
You can rent a car or get a cab from the airport to the hotel as well.
Its about a 15-20 minute ride.

(There is a Hilton located at the Knoxville airport.  Do not confuse 
this hotel with the meeting Hilton located in downtown Knoxville.)

We should plan to start at 1:00 pm Wednesday February 23rd and finish 
about 12:00 pm on Friday February 25th.

The registration fee for the meeting will be $75.  
Please make checks and POs payable to University of Tennessee.
We will collect this at the meeting.
The registration fee will go for coffee breaks, meeting rooms, AV.

The format of the meeting is as before:

Wednesday, February 23rd
1:00 pm to 8:00 pm
2 Breakouts for 10 people
1 Breakout for 20 people
5:00 pm to 7:00 pm--Dinner.

Thursday, February 24th
8:00 am to 10:00 pm
1 U-shape room for 40 people
6:00 pm to 8:00 pm--
The group dinner somewhere in the area.  

Friday, February 25th
8:00 am to 12:00 pm
1 U-shape room for 40 people

If you have any questions, please feel free to contact me.
Jack

From owner-mpi-comm@CS.UTK.EDU Sat Jan 15 10:01:22 1994
Received: from CS.UTK.EDU by netlib2.cs.utk.edu with ESMTP (8.6.4/2.8t-netlib)
	id KAA10048; Sat, 15 Jan 1994 10:01:16 -0500
Received: from localhost by CS.UTK.EDU with SMTP (8.6.4/2.8s-UTK)
	id KAA00645; Sat, 15 Jan 1994 10:00:22 -0500
X-Resent-To: mpi-comm@CS.UTK.EDU ; Sat, 15 Jan 1994 10:00:16 EST
Errors-to: owner-mpi-comm@CS.UTK.EDU
Received: from watson.ibm.com by CS.UTK.EDU with SMTP (8.6.4/2.8s-UTK)
	id JAA00574; Sat, 15 Jan 1994 09:59:52 -0500
Received: from WATSON by watson.ibm.com (IBM VM SMTP V2R3) with BSMTP id 0223;
   Sat, 15 Jan 94 09:59:53 EST
Received: from YKTVMH by watson.vnet.ibm.com with "VAGENT.V1.0"
          id 4470; Sat, 15 Jan 1994 09:59:24 EST
Received: from snir.watson.ibm.com by yktvmh.watson.ibm.com (IBM VM SMTP V2R3)
   with TCP; Sat, 15 Jan 94 09:59:15 EST
Received: by snir.watson.ibm.com (AIX 3.2/UCB 5.64/930311)
          id AA40957; Sat, 15 Jan 1994 09:59:14 -0500
From: snir@watson.ibm.com (Marc Snir)
Message-Id: <9401151459.AA40957@snir.watson.ibm.com>
To: mpi-comm@CS.UTK.EDU
Subject: a proposal for MPI-IO (don't worry -- this is for MPI-II)
Reply-To: snir@watson.ibm.com
Date: Sat, 15 Jan 94 09:59:11 -0500


-:) -:) -:) -:) -:)

%!PS-Adobe-2.0
%%Creator: dvips 5.47 (RS/6000 1.0) Copyright 1986-91 Radical Eye Software
%%Title: mpi-io-v1.dvi
%%Pages: 28 1
%%BoundingBox: 0 0 612 792
%%EndComments
%%BeginProcSet: tex.pro
/TeXDict 250 dict def TeXDict begin /N /def load def /B{bind def}N /S /exch
load def /X{S N}B /TR /translate load N /isls false N /vsize 10 N /@rigin{
isls{[0 1 -1 0 0 0]concat}if 72 Resolution div 72 VResolution div neg scale
Resolution VResolution vsize neg mul TR matrix currentmatrix dup dup 4 get
round 4 exch put dup dup 5 get round 5 exch put setmatrix}N /@letter{/vsize 10
N}B /@landscape{/isls true N /vsize -1 N}B /@a4{/vsize 10.6929133858 N}B /@a3{
/vsize 15.5531 N}B /@ledger{/vsize 16 N}B /@legal{/vsize 13 N}B /@manualfeed{
statusdict /manualfeed true put}B /@copies{/#copies X}B /FMat[1 0 0 -1 0 0]N
/FBB[0 0 0 0]N /nn 0 N /IE 0 N /ctr 0 N /df-tail{/nn 8 dict N nn begin
/FontType 3 N /FontMatrix fntrx N /FontBBox FBB N string /base X array
/BitMaps X /BuildChar{CharBuilder} N /Encoding IE N end dup{/foo setfont}2
array copy cvx N load 0 nn put /ctr 0 N[}B /df{/sf 1 N /fntrx FMat N df-tail}
B /dfs{div /sf X /fntrx[sf 0 0 sf neg 0 0]N df-tail}B /E{pop nn dup definefont
setfont}B /ch-width{ch-data dup length 5 sub get} B /ch-height{ch-data dup
length 4 sub get} B /ch-xoff{128 ch-data dup length 3 sub get sub} B /ch-yoff{
ch-data dup length 2 sub get 127 sub} B /ch-dx{ch-data dup length 1 sub get} B
/ch-image{ch-data dup type /stringtype ne{ctr get /ctr ctr 1 add N}if}B /id 0
N /rw 0 N /rc 0 N /gp 0 N /cp 0 N /G 0 N /sf 0 N /CharBuilder{save 3 1 roll S
dup /base get 2 index get S /BitMaps get S get /ch-data X pop /ctr 0 N ch-dx 0
ch-xoff ch-yoff ch-height sub ch-xoff ch-width add ch-yoff setcachedevice
ch-width ch-height true[1 0 0 -1 -.1 ch-xoff sub ch-yoff .1 add]{ch-image}
imagemask restore}B /D{/cc X dup type /stringtype ne{]}if nn /base get cc ctr
put nn /BitMaps get S ctr S sf 1 ne{dup dup length 1 sub dup 2 index S get sf
div put}if put /ctr ctr 1 add N}B /I{cc 1 add D}B /bop{userdict /bop-hook
known{bop-hook}if /SI save N @rigin 0 0 moveto}N /eop{clear SI restore
showpage userdict /eop-hook known{eop-hook}if}N /@start{userdict /start-hook
known{start-hook}if /VResolution X /Resolution X 1000 div /DVImag X /IE 256
array N 0 1 255{IE S 1 string dup 0 3 index put cvn put} for}N /p /show load N
/RMat[1 0 0 -1 0 0]N /BDot 260 string N /rulex 0 N /ruley 0 N /v{/ruley X
/rulex X V}B /V statusdict begin /product where{pop product dup length 7 ge{0
7 getinterval(Display)eq}{pop false}ifelse}{false}ifelse end{{gsave TR -.1 -.1
TR 1 1 scale rulex ruley false RMat{BDot}imagemask grestore}}{{gsave TR -.1
-.1 TR rulex ruley scale 1 1 false RMat{BDot}imagemask grestore}}ifelse B /a{
moveto}B /delta 0 N /tail{dup /delta X 0 rmoveto}B /M{S p delta add tail}B /b{
S p tail}B /c{-4 M}B /d{-3 M}B /e{-2 M}B /f{-1 M}B /g{0 M}B /h{1 M}B /i{2 M}B
/j{3 M}B /k{4 M}B /w{0 rmoveto}B /l{p -4 w}B /m{p -3 w}B /n{p -2 w}B /o{p -1 w
}B /q{p 1 w}B /r{p 2 w}B /s{p 3 w}B /t{p 4 w}B /x{0 S rmoveto}B /y{3 2 roll p
a}B /bos{/SS save N}B /eos{clear SS restore}B end
%%EndProcSet
%%BeginProcSet: special.pro
TeXDict begin /SDict 200 dict N SDict begin /@SpecialDefaults{/hs 612 N /vs
792 N /ho 0 N /vo 0 N /hsc 1 N /vsc 1 N /ang 0 N /CLIP false N /BBcalc false N
/p 3 def}B /@scaleunit 100 N /@hscale{@scaleunit div /hsc X}B /@vscale{
@scaleunit div /vsc X}B /@hsize{/hs X /CLIP true N}B /@vsize{/vs X /CLIP true
N}B /@hoffset{/ho X}B /@voffset{/vo X}B /@angle{/ang X}B /@rwi{10 div /rwi X}
B /@llx{/llx X}B /@lly{/lly X}B /@urx{/urx X}B /@ury{/ury X /BBcalc true N}B
/magscale true def end /@MacSetUp{userdict /md known{userdict /md get type
/dicttype eq{md begin /letter{}N /note{}N /legal{}N /od{txpose 1 0 mtx
defaultmatrix dtransform S atan/pa X newpath clippath mark{transform{
itransform moveto}}{transform{itransform lineto}}{6 -2 roll transform 6 -2
roll transform 6 -2 roll transform{itransform 6 2 roll itransform 6 2 roll
itransform 6 2 roll curveto}}{{closepath}}pathforall newpath counttomark array
astore /gc xdf pop ct 39 0 put 10 fz 0 fs 2 F/|______Courier fnt invertflag{
PaintBlack}if}N /txpose{pxs pys scale ppr aload pop por{noflips{pop S neg S TR
pop 1 -1 scale}if xflip yflip and{pop S neg S TR 180 rotate 1 -1 scale ppr 3
get ppr 1 get neg sub neg ppr 2 get ppr 0 get neg sub neg TR}if xflip yflip
not and{pop S neg S TR pop 180 rotate ppr 3 get ppr 1 get neg sub neg 0 TR}if
yflip xflip not and{ppr 1 get neg ppr 0 get neg TR}if}{noflips{TR pop pop 270
rotate 1 -1 scale}if xflip yflip and{TR pop pop 90 rotate 1 -1 scale ppr 3 get
ppr 1 get neg sub neg ppr 2 get ppr 0 get neg sub neg TR}if xflip yflip not
and{TR pop pop 90 rotate ppr 3 get ppr 1 get neg sub neg 0 TR}if yflip xflip
not and{TR pop pop 270 rotate ppr 2 get ppr 0 get neg sub neg 0 S TR}if}
ifelse scaleby96{ppr aload pop 4 -1 roll add 2 div 3 1 roll add 2 div 2 copy
TR .96 dup scale neg S neg S TR}if}N /cp{pop pop showpage pm restore}N end}if}
if}N /normalscale{Resolution 72 div VResolution 72 div neg scale magscale{
DVImag dup scale}if}N /psfts{S 65536 div N}N /startTexFig{/psf$SavedState save
N userdict maxlength dict begin /magscale false def normalscale currentpoint
TR /psf$ury psfts /psf$urx psfts /psf$lly psfts /psf$llx psfts /psf$y psfts
/psf$x psfts currentpoint /psf$cy X /psf$cx X /psf$sx psf$x psf$urx psf$llx
sub div N /psf$sy psf$y psf$ury psf$lly sub div N psf$sx psf$sy scale psf$cx
psf$sx div psf$llx sub psf$cy psf$sy div psf$ury sub TR /showpage{}N
/erasepage{}N /copypage{}N /p 3 def @MacSetUp}N /doclip{psf$llx psf$lly
psf$urx psf$ury currentpoint 6 2 roll newpath 4 copy 4 2 roll moveto 6 -1 roll
S lineto S lineto S lineto closepath clip newpath moveto}N /endTexFig{end
psf$SavedState restore}N /@beginspecial{SDict begin /SpecialSave save N gsave
normalscale currentpoint TR @SpecialDefaults}N /@setspecial{CLIP{newpath 0 0
moveto hs 0 rlineto 0 vs rlineto hs neg 0 rlineto closepath clip}if ho vo TR
hsc vsc scale ang rotate BBcalc{rwi urx llx sub div dup scale llx neg lly neg
TR}if /showpage{}N /erasepage{}N /copypage{}N newpath}N /@endspecial{grestore
clear SpecialSave restore end}N /@defspecial{SDict begin}N /@fedspecial{end}B
/li{lineto}B /rl{rlineto}B /rc{rcurveto}B /np{/SaveX currentpoint /SaveY X N 1
setlinecap newpath}N /st{stroke SaveX SaveY moveto}N /fil{fill SaveX SaveY
moveto}N /ellipse{/endangle X /startangle X /yrad X /xrad X /savematrix matrix
currentmatrix N TR xrad yrad scale 0 0 1 startangle endangle arc savematrix
setmatrix}N end
%%EndProcSet
TeXDict begin 1000 300 300 @start /Fa 3 50 df<00600000600000600000600000600000
6000006000006000006000006000FFFFF0FFFFF000600000600000600000600000600000600000
600000600000600000600014167E9119>43 D<0FC01FE0387070386018E01CE01CE01CE01CE01C
E01CE01CE01CE01C6018703838701FE00FC00E137F9211>48 D<06001E00FE00EE000E000E000E
000E000E000E000E000E000E000E000E000E000E00FFE0FFE00B137D9211>I
E /Fb 1 2 df<60F0F06004047E880A>1 D E /Fc 10 119 df<60F0F07030303060E040040A7E
830A>59 D<07FFE007FFF801C03801C01C01C01C01C01C0380380380700381E003FFC007FFE007
00700700700700380E00700E00700E00E00E03C0FFFF80FFFE0016147F9319>66
D<07FC7FC007FC7FC001C01C0001C01C0001C01C0001C01C0003803800038038000380380003FF
F80007FFF0000700700007007000070070000E00E0000E00E0000E00E0000E00E000FF8FF800FF
8FF8001A147F931B>72 D<3E003E000C000C000C000C00180019E01FF01E303830383030303030
7060606660C660CCC0FCC0700F147E9313>104 D<03000380030000000000000000001C003E00
6600C600CC000C000C0018001980318033003F001C00091480930C>I<00600070006000000000
00000000038007C00CE018C018C000C000C0018001800180018003000300030003006600EE00FC
0078000C1A81930E>I<387C007CFE006F8600CF0600CE06000E06000C06001C0C00180CC01818
C0181980301F80300E00120D808C15>110 D<38E07DF06F30CE70CE300C000C00180018001800
1800300030000C0D808C0F>114 D<07001F8019C0318030001E001F0003804180E180C300FE00
7C000A0D7E8C10>I<1C083E186618C618CC180C180C181830183018201C600FC007800D0D808C
11>118 D E /Fd 27 123 df<70F8F8F87005057C840D>58 D<70F8FCFC7C0C0C0C1818383060
40060E7C840D>I<000001C00000078000001E00000078000001E00000078000000E0000003C00
0000F0000003C000000F0000003C000000F0000000F00000003C0000000F00000003C0000000F0
0000003C0000000E0000000780000001E0000000780000001E0000000780000001C01A1A7C9723
>I<00030003000700060006000E000C000C001C0018001800380030003000700060006000E000
C000C001C00180018001800380030003000700060006000E000C000C001C001800180038003000
3000700060006000E000C000C000102D7DA117>I<E0000000780000001E0000000780000001E0
000000780000001C0000000F00000003C0000000F00000003C0000000F00000003C0000003C000
000F0000003C000000F0000003C000000F0000001C00000078000001E00000078000001E000000
78000000E00000001A1A7C9723>I<00FFFFE000FFFFF8000F007C000F003C000F003E001E003E
001E003E001E003E001E003E003C007C003C007C003C00F8003C01F0007807E0007FFF80007FFF
C0007803E000F001F000F001F000F000F000F000F001E001F001E001F001E001F001E001E003C0
03E003C007C003C00F8003C01F007FFFFE00FFFFF0001F1F7E9E22>66 D<00FFF9FFF000FFF9FF
F0000F001E00000F001E00000F001E00001E003C00001E003C00001E003C00001E003C00003C00
7800003C007800003C007800003C007800007800F000007FFFF000007FFFF000007800F00000F0
01E00000F001E00000F001E00000F001E00001E003C00001E003C00001E003C00001E003C00003
C007800003C007800003C007800003C00780007FFCFFF800FFF8FFF800241F7E9E26>72
D<00FFFC01FFF8000F00000F00000F00001E00001E00001E00001E00003C00003C00003C00003C
0000780000780000780000780000F00000F00000F00000F00001E00001E00001E00001E00003C0
0003C00003C00003C000FFFC00FFFC00161F7F9E14>I<FFF803FFFFF007FF0F0000F00F0000E0
0F0000C00F8001800780018007800300078006000780060007800C0007800C0007801800078030
000780300007C0600003C0600003C0C00003C1800003C1800003C3000003C3000003C6000003CC
000003EC000001F8000001F8000001F0000001E0000001E0000001C0000001C0000020207E9E1B
>86 D<00F18003FDC0078F800E07801C07803C07803C0700780700780700780700F00E00F00E00
F00E00F00E18F01C30F03C30707C3078FC603FCFC00F078015147E9318>97
D<07803F803F000700070007000E000E000E000E001C001C001CF01FFC3F1E3E0E3C0F380F700F
700F700F700FE01EE01EE01EE03CE03CE038607071E03FC01F0010207E9F14>I<007C01FE0787
0F0F1E0F1C0E3C04780078007800F000F000F000F000F00070027007381E1FF80FE010147E9314
>I<007C01FE07870E031E033C033C06781C7FF87FC0F000F000F000F000700070027007381E1F
F807E010147E9315>101 D<01E0000FE0000FC00001C00001C00001C000038000038000038000
038000070000070000071F00077F800EE1C00F81C00F00E00E00E01E01C01C01C01C01C01C01C0
38038038038038038038070670070C700E0C700E18700638E007F06003C017207E9F1A>104
D<007000F000F00060000000000000000000000000000007001F8039C031C061C061C0C3800380
0380070007000E000E000E181C301C301C601CE00FC007000D1F7F9E10>I<0000C00001E00001
E00001C0000000000000000000000000000000000000000000003E00007F0000C3800183800303
80030380060700000700000700000700000E00000E00000E00000E00001C00001C00001C00001C
0000380000380000380000380000700000700030700078E000F3C0007F80003E00001328819E13
>I<01E0000FE0000FC00001C00001C00001C00003800003800003800003800007000007000007
01C00707E00E0C300E18700E30F00E60F01CC0E01F80001F80001FE00038F00038380038380038
1C307038607038607038407018C0E01F80600F0014207E9F18>I<03C01FC01F80038003800380
07000700070007000E000E000E000E001C001C001C001C00380038003800380070007000700071
80E300E300E300E6007E003C000A207E9F0E>I<0F03E03E001F8FF0FF0031DC39C38061F03B03
8061E01E01C061C01C01C0C3C03C03800380380380038038038003803803800700700700070070
070007007007000700700E0C0E00E00E180E00E01C180E00E01C300E00E00C701C01C00FE00C00
C0078026147F9328>I<0F07C0001F8FE00031D8700061F0380061E0380061C03800C3C0700003
80700003807000038070000700E0000700E0000700E0000701C1800E01C3000E0383000E038600
0E018E001C01FC000C00F00019147F931B>I<007C0001FF000383800F01C01E01C01C01E03C01
E07801E07801E07801E0F003C0F003C0F003C0F00780F00700700F00701E003838001FF00007C0
0013147E9316>I<03C1E007E7F80C7E3C187C1C18781E18701E30E01E00E01E00E01E00E01E01
C03C01C03C01C03C01C07803C07803C07003C0E003E3C0077F80071E000700000700000E00000E
00000E00000E00001C0000FFC000FFC000171D819317>I<0F0F001F9F8031F1C061E1C061E3C0
61C3C0C3C3800380000380000380000700000700000700000700000E00000E00000E00000E0000
1C00000C000012147F9315>114 D<007C01FE0387070F070F070E0F00078007F803FC01FE001E
000F700FF00EF00EE01C70383FF01FC010147E9315>I<00C000E001C001C001C001C003800380
FFF8FFF807000700070007000E000E000E000E001C001C001C001C1838303830386038E01FC00F
000D1C7F9B10>I<0780C01FC1E038C1F030E0F060E0F061C070C1C06003806003806003806007
00C00700C00700C0070180070180070300070200078E0003FC0000F00014147F9316>118
D<01E06003F0C007FFC00E1F800C0300000600000C0000180000300000600000C0000180000300
000600C00C01801803803F87007FFE0061FC00C0700013147E9315>122
D E /Fe 5 81 df<0018007800F001E003C007800F001F001E003E003C007C007C007800F800F8
00F800F800F800F800F800F800F800F800F800F800F800F800F800F800F800F800F800F800F800
F800F8000D25707E25>56 D<F800F800F800F800F800F800F800F800F800F800F800F800F800F8
00F800F800F800F800F800F800F800F800F80078007C007C003C003E001E001F000F00078003C0
01E000F0007800180D25708025>58 D<007C007C007C007C007C007C007C007C007C007C007C00
7C007C007C007C007C007C007C007C007C007C007C007C007C00F800F800F800F001F001E003E0
03C0078007000E001C003800F000C000F00038001C000E000700078003C003E001E001F000F000
F800F800F8007C007C007C007C007C007C007C007C007C007C007C007C007C007C007C007C007C
007C007C007C007C007C007C007C0E4D798025>60 D<F8F8F8F8F8F8F8F8F8F8F8F8F8F8050E70
8025>62 D<FFFFFFFFE0FFFFFFFFF07800001FF07C000003F03E000000F81F000000380F000000
1C0F8000000C07C000000C03C000000603E000000001F000000000F80000000078000000007C00
0000003E000000001E000000001F000000000F8000000007C000000003C000000003C000000001
800000000380000000030000000006000000000C00000000180000000038000000003000000000
6000000000C0000006018000000C038000000C030000001C06000000380C000000F818000001F8
3800001FF03FFFFFFFF07FFFFFFFF0FFFFFFFFE0272A7E7F2C>80 D E /Ff
1 106 df<E0E0E00000000000E0E0E0E0E0E0E0E0E0E0E0E0E003157E9408>105
D E /Fg 5 22 df<FFFFFFC0FFFFFFC01A027C8B23>0 D<70F8F8F87005057C8D0D>I<07E01FF8
3FFC7FFE7FFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF7FFE7FFE3FFC1FF807E010127D9317>15
D<000000C0000003C000000F0000003C000000F0000003C000000F0000001C00000078000001E0
0000078000001E00000078000000E0000000780000001E0000000780000001E000000078000000
1C0000000F00000003C0000000F00000003C0000000F00000003C0000000C00000000000000000
0000000000000000000000000000000000000000FFFFFFC0FFFFFFC01A247C9C23>20
D<C0000000F00000003C0000000F00000003C0000000F00000003C0000000E0000000780000001
E0000000780000001E0000000780000001C00000078000001E00000078000001E0000007800000
0E0000003C000000F0000003C000000F0000003C000000F0000000C00000000000000000000000
0000000000000000000000000000000000000000FFFFFFC0FFFFFFC01A247C9C23>I
E /Fh 56 123 df<007000F001F003C007800F001E001C003C003800780070007000F000E000E0
00E000E000E000E000E000E000F00070007000780038003C001C001E000F00078003C001F000F0
00700C24799F18>40 D<6000F00078003C001E000F000780038003C001C001E000E000E000F000
70007000700070007000700070007000F000E000E001E001C003C0038007800F001E003C007800
F00060000C247C9F18>I<01C00001C00001C00001C000C1C180F1C780F9CF807FFF001FFC0007
F00007F0001FFC007FFF00F9CF80F1C780C1C18001C00001C00001C00001C00011147D9718>I<
3C7E7F7F7F3F0F0E1E7CF870080C788518>44 D<000300000F80001F80003F0000FE0001FC0003
F00007E0001FC0003F80007E0000FC0000FC00007E00003F80001FC00007E00003F00001FC0000
FE00003F00001F80000F8000030011187D9918>60 D<600000F80000FC00007E00003F80001FC0
0007E00003F00001FC0000FE00003F00001F80001F80003F0000FE0001FC0003F00007E0001FC0
003F80007E0000FC0000F8000060000011187D9918>62 D<00700000F80000F80000D80000D800
01DC0001DC0001DC00018C00038E00038E00038E00038E00030600070700070700070700070700
0FFF800FFF800FFF800E03800E03801C01C01C01C07F07F0FF8FF87F07F0151C7F9B18>65
D<FFFC00FFFF00FFFF801C03C01C01C01C00E01C00E01C00E01C00E01C01E01C01C01C07C01FFF
801FFF001FFFC01C03C01C00E01C00F01C00701C00701C00701C00701C00F01C00E01C03E0FFFF
C0FFFF80FFFE00141C7F9B18>I<01FCE003FEE007FFE00F07E01E03E03C01E07800E07000E070
00E0F00000E00000E00000E00000E00000E00000E00000E00000E00000F000007000E07000E078
00E03C01E01E01C00F07C007FF8003FF0001FC00131C7E9B18>I<7FF800FFFE007FFF001C0F80
1C03C01C03C01C01E01C00E01C00E01C00F01C00701C00701C00701C00701C00701C00701C0070
1C00701C00F01C00E01C00E01C01E01C01C01C03C01C0F807FFF00FFFE007FF800141C7F9B18>
I<FFFFF0FFFFF0FFFFF01C00701C00701C00701C00701C00001C00001C0E001C0E001C0E001FFE
001FFE001FFE001C0E001C0E001C0E001C00001C00001C00381C00381C00381C00381C0038FFFF
F8FFFFF8FFFFF8151C7F9B18>I<FFFFE0FFFFE0FFFFE01C00E01C00E01C00E01C00E01C00001C
00001C1C001C1C001C1C001FFC001FFC001FFC001C1C001C1C001C1C001C00001C00001C00001C
00001C00001C00001C0000FFC000FFC000FFC000131C7E9B18>I<01F9C007FFC00FFFC01F0FC0
1C03C03C03C07801C07001C07001C0F00000E00000E00000E00000E00000E00000E00FF0E01FF0
E00FF0F001C07001C07003C07803C03C03C01C07C01F0FC00FFFC007FDC001F9C0141C7E9B18>
I<7F07F0FF8FF87F07F01C01C01C01C01C01C01C01C01C01C01C01C01C01C01C01C01C01C01FFF
C01FFFC01FFFC01C01C01C01C01C01C01C01C01C01C01C01C01C01C01C01C01C01C01C01C07F07
F0FF8FF87F07F0151C7F9B18>I<7FFF00FFFF807FFF0001C00001C00001C00001C00001C00001
C00001C00001C00001C00001C00001C00001C00001C00001C00001C00001C00001C00001C00001
C00001C00001C00001C0007FFF00FFFF807FFF00111C7D9B18>I<7F07F0FF87F87F07F01C03C0
1C07801C07001C0F001C1E001C3C001C38001C78001CF0001DF0001DF8001FF8001FBC001F1C00
1E1E001E0E001C0F001C07001C07801C03801C03C01C01C07F03F0FF87F87F03F0151C7F9B18>
75 D<7FE000FFE0007FE0000E00000E00000E00000E00000E00000E00000E00000E00000E0000
0E00000E00000E00000E00000E00000E00000E00000E00000E00700E00700E00700E00700E0070
7FFFF0FFFFF07FFFF0141C7F9B18>I<FC01F8FE03F8FE03F83B06E03B06E03B06E03B06E03B8E
E03B8EE0398CE0398CE039DCE039DCE039DCE038D8E038D8E038F8E03870E03870E03800E03800
E03800E03800E03800E03800E0FE03F8FE03F8FE03F8151C7F9B18>I<7E07F0FF0FF87F07F01D
81C01D81C01D81C01DC1C01CC1C01CC1C01CE1C01CE1C01CE1C01C61C01C71C01C71C01C31C01C
39C01C39C01C39C01C19C01C19C01C1DC01C0DC01C0DC01C0DC07F07C0FF87C07F03C0151C7F9B
18>I<0FF8003FFE007FFF00780F00700700F00780E00380E00380E00380E00380E00380E00380
E00380E00380E00380E00380E00380E00380E00380E00380E00380E00380F00780700700780F00
7FFF003FFE000FF800111C7D9B18>I<FFFE00FFFF80FFFFC01C03C01C01E01C00E01C00701C00
701C00701C00701C00701C00E01C01E01C03C01FFFC01FFF801FFE001C00001C00001C00001C00
001C00001C00001C00001C0000FF8000FF8000FF8000141C7F9B18>I<0FF8003FFE007FFF0078
0F00700700F00780E00380E00380E00380E00380E00380E00380E00380E00380E00380E00380E0
0380E00380E00380E00380E1E380E1E380F0E78070F700787F007FFF003FFE000FFC00001C0000
1E00000E00000F0000070000070011227D9B18>I<7FF800FFFE007FFF001C0F801C03801C03C0
1C01C01C01C01C01C01C03C01C03801C0F801FFF001FFE001FFE001C0F001C07801C03801C0380
1C03801C03801C03801C039C1C039C1C039C7F03FCFF81F87F00F0161C7F9B18>I<07F3801FFF
803FFF807C1F80700780F00380E00380E00380E00000F000007800003F00001FF0000FFE0001FF
00001F800003C00001E00000E00000E06000E0E000E0E001E0F001C0FC07C0FFFF80FFFF00E7FC
00131C7E9B18>I<7FFFF8FFFFF8FFFFF8E07038E07038E07038E0703800700000700000700000
700000700000700000700000700000700000700000700000700000700000700000700000700000
700000700007FF0007FF0007FF00151C7F9B18>I<FF83FEFF83FEFF83FE1C00701C00701C0070
1C00701C00701C00701C00701C00701C00701C00701C00701C00701C00701C00701C00701C0070
1C00701C00701E00F00E00E00F01E007C7C003FF8001FF00007C00171C809B18>I<FF07F8FF07
F8FF07F81C01C01C01C01C01C01C01C00E03800E03800E03800E03800F07800707000707000707
00070700038E00038E00038E00038E00018C0001DC0001DC0001DC0000D80000F80000F8000070
00151C7F9B18>I<FE03F8FE03F8FE03F87000707000707000703800E03800E03800E03800E038
00E038F8E038F8E039DCE039DCE019DCC019DCC019DCC0198CC01D8DC01D8DC01D8DC01D8DC00D
8D800D05800F07800F07800E0380151C7F9B18>I<7F8FE07F9FE07F8FE00E07000F0700070E00
078E00039C0003DC0001F80001F80000F00000F00000700000F00000F80001F80001DC00039E00
038E00070F000707000E07800E03801E03C07F07F0FF8FF87F07F0151C7F9B18>I<FF07F8FF07
F8FF07F81C01C01E03C00E03800F0780070700070700038E00038E0001DC0001DC0001FC0000F8
0000F80000700000700000700000700000700000700000700000700000700001FC0003FE0001FC
00151C7F9B18>I<3FFFE07FFFE07FFFE07001C07003C0700780700700000F00001E00001C0000
3C0000780000700000F00001E00001C00003C0000780000700000F00001E00E01C00E03C00E078
00E07000E0FFFFE0FFFFE0FFFFE0131C7E9B18>I<1FE0003FF8007FFC00783E00300F00000700
00070001FF000FFF003FFF007F0700780700F00700E00700E00700F00F00783F007FFFF03FFBF0
0FE1F014147D9318>97 D<7E0000FE00007E00000E00000E00000E00000E00000E00000E3E000E
FF800FFFC00FE3E00F80F00F00700F00780E00380E00380E00380E00380E00380F00380F00780F
00700F80F00FC3E00FFFC00EFF80067E00151C809B18>I<01FE0007FF001FFF803F07803C0300
780000700000F00000E00000E00000E00000E00000F000007000007801C03C01C03F07C01FFF80
07FF0001FC0012147D9318>I<001F80003F80001F8000038000038000038000038000038003F3
800FFB801FFF803E1F80780F80700780F00780E00380E00380E00380E00380E00380E00780F007
80700780780F803E3F801FFFF00FFBF803E3F0151C7E9B18>I<03F0000FFC001FFE003E1F0078
0780700380F003C0E001C0E001C0FFFFC0FFFFC0FFFFC0F000007000007801C03C01C03F07C01F
FF8007FF0001FC0012147D9318>I<001FC0007FE000FFE001F1E001C0C001C00001C00001C000
7FFFC0FFFFC0FFFFC001C00001C00001C00001C00001C00001C00001C00001C00001C00001C000
01C00001C00001C00001C0007FFF007FFF007FFF00131C7F9B18>I<03F1F007FFF80FFFF81E1F
303C0F003807003807003807003807003807003C0F001E1E001FFC003FF8003BF0003800003C00
001FFF001FFFC03FFFE07801F0F00078E00038E00038E00038F000787800F07E03F03FFFE00FFF
8003FE00151F7F9318>I<7E0000FE00007E00000E00000E00000E00000E00000E00000E3F000E
FF800FFFC00FE1E00F80E00F00E00F00E00E00E00E00E00E00E00E00E00E00E00E00E00E00E00E
00E00E00E00E00E07FC3FCFFE7FE7FC3FC171C809B18>I<03800007C00007C00007C000038000
0000000000000000000000007FC000FFC0007FC00001C00001C00001C00001C00001C00001C000
01C00001C00001C00001C00001C00001C00001C00001C000FFFF00FFFF80FFFF00111D7C9C18>
I<FE0000FE0000FE00000E00000E00000E00000E00000E00000E3FF00E7FF00E3FF00E07800E0F
000E1E000E3C000E78000EF0000FF8000FFC000F9C000F1E000E0F000E07800E03800E03C0FFC7
F8FFC7F8FFC7F8151C7F9B18>107 D<7FE000FFE0007FE00000E00000E00000E00000E00000E0
0000E00000E00000E00000E00000E00000E00000E00000E00000E00000E00000E00000E00000E0
0000E00000E00000E00000E0007FFFC0FFFFE07FFFC0131C7E9B18>I<7DF1F000FFFBF8007FFF
FC001F1F1C001E1E1C001E1E1C001C1C1C001C1C1C001C1C1C001C1C1C001C1C1C001C1C1C001C
1C1C001C1C1C001C1C1C001C1C1C001C1C1C007F1F1F00FFBFBF807F1F1F001914819318>I<7E
3F00FEFF807FFFC00FE1E00F80E00F00E00F00E00E00E00E00E00E00E00E00E00E00E00E00E00E
00E00E00E00E00E00E00E07FC3FCFFE7FE7FC3FC1714809318>I<01F0000FFE001FFF003E0F80
3803807001C07001C0E000E0E000E0E000E0E000E0E000E0F001E07001C07803C03C07803E0F80
1FFF000FFE0001F00013147E9318>I<7E3E00FEFF807FFFC00FE3E00F80F00F00700F00780E00
380E00380E00380E00380E00380F00380F00780F00700F80F00FC3E00FFFC00EFF800E7E000E00
000E00000E00000E00000E00000E00000E00007FC000FFE0007FC000151E809318>I<03F3800F
FB801FFF803E1F80780F80700780F00780E00380E00380E00380E00380E00380E00380F0078070
0780780F803E1F801FFF800FFB8003F38000038000038000038000038000038000038000038000
3FF8003FF8003FF8151E7E9318>I<7F87E0FF9FF87FBFF803FC7803F03003E00003C00003C000
03C0000380000380000380000380000380000380000380000380007FFE00FFFF007FFE0015147F
9318>I<0FF7003FFF007FFF00F81F00E00700E00700F007007C00007FF0001FFC0007FE00001F
00600780E00380F00380F00780FC0F00FFFF00FFFE00E7F80011147D9318>I<01800003800003
80000380000380007FFFC0FFFFC0FFFFC003800003800003800003800003800003800003800003
80000380000380400380E00380E00381E003C3C001FFC000FF80007E0013197F9818>I<7E07E0
FE0FE07E07E00E00E00E00E00E00E00E00E00E00E00E00E00E00E00E00E00E00E00E00E00E00E0
0E00E00E01E00F07E007FFFC03FFFE01FCFC1714809318>I<7F8FF0FF8FF87F8FF01E03C00E03
800E03800E0380070700070700070700038E00038E00038E00038E0001DC0001DC0001DC0000F8
0000F80000700015147F9318>I<FF8FF8FF8FF8FF8FF83800E03800E03800E01C01C01C01C01C
71C01CF9C01CF9C01CD9C01CD9C00DDD800DDD800DDD800D8D800F8F800F8F8007070015147F93
18>I<7F8FF07F9FF07F8FF0070700078E00039E0001DC0001F80000F80000700000F00000F800
01DC00039E00038E000707000F07807F8FF0FF8FF87F8FF015147F9318>I<7F8FF0FF8FF87F8F
F00E01C00E03800E0380070380070700070700038700038600038E0001CE0001CE0000CC0000CC
0000DC0000780000780000780000700000700000700000F00000E00079E0007BC0007F80003F00
001E0000151E7F9318>I<3FFFF07FFFF07FFFF07001E07003C0700780000F00001E00007C0000
F80001F00003E0000780000F00701E00703C0070780070FFFFF0FFFFF0FFFFF014147F9318>I
E /Fi 2 63 df<0000038000000F0000003C000000F0000003C000000F0000003C000000F00000
03C000000F0000003C000000F0000000F00000003C0000000F00000003C0000000F00000003C00
00000F00000003C0000000F00000003C0000000F000000038019187D9520>60
D<E0000000780000001E0000000780000001E0000000780000001E0000000780000001E0000000
780000001E00000007800000078000001E00000078000001E00000078000001E00000078000001
E00000078000001E00000078000000E000000019187D9520>62 D E /Fj
43 122 df<0003C001F3C003F3C007F3C00700000E00000E00000E00000E00000E00000E00000E
0000FFF1C0FFF1C0FFF1C00E01C00E01C00E01C00E01C00E01C00E01C00E01C00E01C00E01C00E
01C00E01C00E01C00E01C00E01C00E01C0121E809D16>12 D<7878787838307060E005097D830C
>44 D<00030003000700060006000E000C001C0018001800380030003000700060006000E000C0
00C001C001800380030003000700060006000E000C000C001C0018001800380030007000600060
00E000C000C00010297E9E15>47 D<001C0000003E0000003E0000002E00000067000000670000
00E7800000C7800000C3800001C3C0000183C0000181C0000381E0000381E0000700F0000700F0
000600F0000E0078000FFFF8000FFFF8001FFFFC001C003C0018003C0038001E0038001E007000
1F0070000F0070000F00E0000780191D7F9C1C>65 D<FFF800FFFF00FFFF80F00FC0F003E0F000
F0F000F0F000F0F000F0F000F0F001E0F007C0FFFF80FFFE00FFFF80F01FC0F003E0F000F0F000
78F00078F00078F00078F00078F000F0F001F0F007E0FFFFC0FFFF80FFFC00151D7C9C1C>I<00
3FC000FFF003FFF007C0700F80001E00003E00003C0000780000780000780000F00000F00000F0
0000F00000F00000F00000F00000F00000F000007800007800007800003C00003E00001E00000F
800807C07803FFF800FFF0003F80151F7D9D1B>I<FFFC00FFFF00FFFF80F00FE0F003F0F000F0
F00078F00078F0003CF0003CF0001CF0001EF0001EF0001EF0001EF0001EF0001EF0001EF0001E
F0003CF0003CF0007CF00078F000F0F001F0F007E0FFFFC0FFFF00FFFC00171D7C9C1E>I<FFFF
C0FFFFC0FFFFC0F00000F00000F00000F00000F00000F00000F00000F00000F00000FFFF80FFFF
80FFFF80F00000F00000F00000F00000F00000F00000F00000F00000F00000F00000F00000FFFF
C0FFFFC0FFFFC0121D7C9C19>I<FFFF80FFFF80FFFF80F00000F00000F00000F00000F00000F0
0000F00000F00000F00000F00000FFFF00FFFF00FFFF00F00000F00000F00000F00000F00000F0
0000F00000F00000F00000F00000F00000F00000F00000111D7C9C18>I<003F8001FFF003FFF8
07C0F80F00181E00003E00003C0000780000780000780000F00000F00000F00000F00000F00000
F00000F007F8F007F8F007F87800387800387800383C00383E00381E00380F003807C07803FFF8
01FFF0003F80151F7D9D1C>I<F000F0F000F0F000F0F000F0F000F0F000F0F000F0F000F0F000
F0F000F0F000F0F000F0FFFFF0FFFFF0FFFFF0F000F0F000F0F000F0F000F0F000F0F000F0F000
F0F000F0F000F0F000F0F000F0F000F0F000F0F000F0141D7C9C1D>I<F0F0F0F0F0F0F0F0F0F0
F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0041D7C9C0C>I<F0003CF00078F000F0F001E0F0
03C0F00780F00F00F01E00F03C00F07800F0F000F0E000F1F000F3F000F77800FE7C00FC3C00FC
1E00F81F00F00F00F00F80F00780F003C0F003E0F001E0F000F0F000F0F00078F0007C161D7C9C
1D>75 D<F000F000F000F000F000F000F000F000F000F000F000F000F000F000F000F000F000F0
00F000F000F000F000F000F000F000F000FFFEFFFEFFFE0F1D7C9C16>I<FC0007E0FC0007E0FC
0007E0EE000DE0EE000DE0EE000DE0E70019E0E70019E0E70019E0E78039E0E38031E0E3C071E0
E3C071E0E1C061E0E1C061E0E1E0E1E0E1E0E1E0E0E0C1E0E0F1C1E0E07181E0E07181E0E07181
E0E03B01E0E03B01E0E03B01E0E01E01E0E01E01E0E01E01E0E00001E01B1D7C9C24>I<FC0070
FC0070FE0070EE0070EF0070E70070E70070E78070E38070E3C070E3C070E1E070E1E070E0E070
E0F070E07070E07870E07870E03C70E03C70E01C70E01E70E00E70E00E70E00F70E00770E007F0
E003F0E003F0141D7C9C1D>I<003F000001FFE00003FFF00007C0F8000F807C001E001E003E00
1F003C000F00780007807800078078000780F00003C0F00003C0F00003C0F00003C0F00003C0F0
0003C0F00003C0F00003C0F80007C078000780780007807C000F803C000F003E001F001F003E00
0F807C0007C0F80003FFF00001FFE000003F00001A1F7E9D1F>I<FFFC00FFFF00FFFF80F007C0
F003E0F001E0F000F0F000F0F000F0F000F0F000F0F001E0F003E0F007C0FFFF80FFFF00FFFC00
F00000F00000F00000F00000F00000F00000F00000F00000F00000F00000F00000F00000141D7C
9C1B>I<003F000001FFE00003FFF00007C0F8000F807C001F003E003E001F003C000F00780007
807800078078000780F00003C0F00003C0F00003C0F00003C0F00003C0F00003C0F00003C0F000
03C0F00003C07800078078000780781E07803C0F0F003E079F001E07DE000F83FC0007C1F80003
FFF00001FFF800003F7C0000003C0000003E0000001F0000000F801A237E9D1F>I<FFF800FFFF
00FFFF80F007C0F001E0F000E0F000F0F000F0F000F0F000F0F000E0F001E0F007C0FFFF80FFFF
00FFF800F03C00F01C00F01E00F00F00F00F00F00780F00780F003C0F003C0F001E0F000F0F000
F0F00078151D7C9C1B>I<03F8000FFE001FFF003E0F00780300780000F00000F00000F00000F0
0000F800007C00007F00003FE0001FFC0007FE0001FF00001F800007800007C00003C00003C000
03C00003C00003C0C00780E00780FC1F007FFE001FFC0007F000121F7E9D17>I<FFFFFF80FFFF
FF80FFFFFF80001E0000001E0000001E0000001E0000001E0000001E0000001E0000001E000000
1E0000001E0000001E0000001E0000001E0000001E0000001E0000001E0000001E0000001E0000
001E0000001E0000001E0000001E0000001E0000001E0000001E0000001E0000191D7F9C1C>I<
F00070F00070F00070F00070F00070F00070F00070F00070F00070F00070F00070F00070F00070
F00070F00070F00070F00070F00070F00070F00070F00070F00070F000F07800E07801E03C03C0
1F07800FFF8007FE0001F800141E7C9C1D>I<F0000380F0000380780007007800070078000700
3C000E003C000E003E000E001E001C001E001C000F0038000F0038000F00380007807000078070
0003C0600003C0E00003C0E00001E0C00001E1C00001E1C00000F1800000F38000007300000073
0000007B0000003E0000003E0000001C0000191D7F9C1C>I<F000F00070F000F80070F000F800
707800B8006078019C00E078019C00E078019C00E03C039C01C03C031E01C03C030E01C01E030E
01801E070F03801E070F03801E060F03800F060703000F0E0787000F0C078700070C038600070C
038600079C038E00079803CE00039801CC00039801CC00039801CC0001D001C80001D000D80001
F000F80001E000F80000E0007000241D7F9C27>I<78000E007C001E003C003C001E0038000F00
70000F00F0000781E00003C1C00001C3C00001E7800000F70000007E0000003E0000003C000000
3C0000007E00000077000000E7800001E3800003C1C0000381E0000700F0000F00F8000E007800
1C003C003C003E0078001F0070000F00F0000F80191D7F9C1C>I<0FC03FF07FF87038401C001C
001C00FC0FFC3FFC781CE01CE01CE01CF07C7FFC7FDC3F1C0E127E9114>97
D<07E00FF81FFC3C1C70047000E000E000E000E000E000E000700070043C1C1FFC0FF807E00E12
7E9112>99 D<000E000E000E000E000E000E000E000E000E000E000E0F8E1FEE3FFE7C3E700E70
0EE00EE00EE00EE00EE00EE00EF00E701E7C3E3FFE1FEE0F8E0F1D7E9C15>I<07C01FE03FF078
787018601CFFFCFFFCFFFCE000E000E000700070043C1C3FFC1FF807E00E127E9112>I<00FC01
FC03FC07000E000E000E000E000E000E000E00FFE0FFE0FFE00E000E000E000E000E000E000E00
0E000E000E000E000E000E000E000E000E1D809C0D>I<F0F0F0F0000000000000007070707070
70707070707070707070707070041D7E9C0A>105 D<E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0
E0E0E0E0E0E0E0E0E0E0E0E0031D7D9C0A>108 D<E3F03F00EFF8FF80FFFDFFC0F81F81E0F00F
00E0E00E00E0E00E00E0E00E00E0E00E00E0E00E00E0E00E00E0E00E00E0E00E00E0E00E00E0E0
0E00E0E00E00E0E00E00E0E00E00E01B127D9124>I<E3E0EFF0FFF8F83CF01CE01CE01CE01CE0
1CE01CE01CE01CE01CE01CE01CE01CE01CE01C0E127D9115>I<03F0000FFC001FFE003C0F0078
0780700380E001C0E001C0E001C0E001C0E001C0F003C07003807807803C0F001FFE000FFC0003
F00012127F9115>I<E3E0EFF0FFF8F87CF01CE01EE00EE00EE00EE00EE00EE00EE01CF03CF87C
FFF8EFF0E3C0E000E000E000E000E000E000E000E0000F1A7D9115>I<E380E780EF80FC00F800
F000F000E000E000E000E000E000E000E000E000E000E000E00009127D910E>114
D<1FC03FF07FF0F030E000E000F0007F003FC01FE000F0003800388038F078FFF07FE01FC00D12
7F9110>I<1C001C001C001C001C001C00FFE0FFE0FFE01C001C001C001C001C001C001C001C00
1C001C001C001C201FF00FF007C00C187F970F>I<E01CE01CE01CE01CE01CE01CE01CE01CE01C
E01CE01CE01CE01CE01CE07CFFFC7FDC3F1C0E127D9115>I<E007E0077006700E700E381C381C
381C1C381C381C380E700E700660076007E003C003C010127F9113>I<E007E007700E700E780E
381C381C1C181C380C380E300E7006700760036003C001C001C001800180030003000700FE00FC
00F800101A7F9113>121 D E /Fk 53 123 df<003F0F0000FFBF8003C3F3C00703E3C00703C1
800E01C0000E01C0000E01C0000E01C0000E01C0000E01C000FFFFFC00FFFFFC000E01C0000E01
C0000E01C0000E01C0000E01C0000E01C0000E01C0000E01C0000E01C0000E01C0000E01C0000E
01C0000E01C0000E01C0007F87FC007F87FC001A1D809C18>11 D<003F0000FF8003C1C00703C0
0703C00E01800E00000E00000E00000E00000E0000FFFFC0FFFFC00E01C00E01C00E01C00E01C0
0E01C00E01C00E01C00E01C00E01C00E01C00E01C00E01C00E01C00E01C07F87F87F87F8151D80
9C17>I<70F8FCFC7C0C0C0C1818306040060D7D9C0C>39 D<00C00180030006000E000C001C00
18003800300030007000700060006000E000E000E000E000E000E000E000E000E000E000E000E0
00600060007000700030003000380018001C000C000E0006000300018000C00A2A7D9E10>I<C0
006000300018001C000C000E000600070003000300038003800180018001C001C001C001C001C0
01C001C001C001C001C001C001C0018001800380038003000300070006000E000C001C00180030
006000C0000A2A7E9E10>I<70F0F8F8781818183030706040050D7D840C>44
D<FFE0FFE0FFE00B0380890E>I<70F8F8F87005057D840C>I<00030003000700060006000E000C
001C0018001800380030003000700060006000E000C000C001C001800380030003000700060006
000E000C000C001C001800180038003000700060006000E000C000C00010297E9E15>I<70F8F8
F870000000000000000070F8F8F87005127D910C>58 D<70F8F8F870000000000000000070F0F8
F8781818183030706040051A7D910C>I<0FE03FF8703C601CF01EF01EF01E001E003C007800E0
01C001800380030003000300030003000200000000000000000007000F800F800F8007000F1D7E
9C14>63 D<00060000000F0000000F0000000F0000001F8000001F8000001F8000001F80000033
C0000033C0000033C0000061E0000061E0000061E00000C0F00000C0F00000C0F0000180780001
80780001FFF80003FFFC0003003C0003003C0006001E0006001E0006001E001F001F00FFC0FFF0
FFC0FFF01C1D7F9C1F>65 D<FFFFC000FFFFF0000F007C000F001E000F000F000F0007000F0003
800F0003C00F0003C00F0001C00F0001E00F0001E00F0001E00F0001E00F0001E00F0001E00F00
01E00F0001E00F0001C00F0001C00F0003C00F0003800F0007800F000F000F001E000F007C00FF
FFF000FFFFC0001B1C7E9B20>68 D<FFFFF8FFFFF80F00780F00380F00180F001C0F000C0F000C
0F030C0F030C0F03000F03000F07000FFF000FFF000F07000F03000F03000F03000F03000F0000
0F00000F00000F00000F00000F0000FFF800FFF800161C7E9B1B>70 D<FFF3FFC0FFF3FFC00F00
3C000F003C000F003C000F003C000F003C000F003C000F003C000F003C000F003C000F003C000F
FFFC000FFFFC000F003C000F003C000F003C000F003C000F003C000F003C000F003C000F003C00
0F003C000F003C000F003C000F003C00FFF3FFC0FFF3FFC01A1C7E9B1F>72
D<FFF0FFF00F000F000F000F000F000F000F000F000F000F000F000F000F000F000F000F000F00
0F000F000F000F000F000F000F00FFF0FFF00C1C7F9B0F>I<FF8000FF80FFC001FF800FC001F8
000FC001F8000DE00378000DE00378000DE00378000CF00678000CF00678000CF00678000C780C
78000C780C78000C780C78000C3C1878000C3C1878000C3C1878000C1E3078000C1E3078000C1E
3078000C0F6078000C0F6078000C0F6078000C07C078000C07C078000C07C078001E03807800FF
C387FF80FFC387FF80211C7E9B26>77 D<FF00FFC0FF80FFC00F801E000FC00C000FC00C000DE0
0C000CF00C000CF00C000C780C000C780C000C3C0C000C1E0C000C1E0C000C0F0C000C0F0C000C
078C000C07CC000C03CC000C01EC000C01EC000C00FC000C00FC000C007C000C003C000C003C00
1E001C00FFC01C00FFC00C001A1C7E9B1F>I<003F800000FFE00003E0F80007803C000E000E00
1E000F003C00078038000380780003C0780003C0700001C0F00001E0F00001E0F00001E0F00001
E0F00001E0F00001E0F00001E0F00001E0780003C0780003C0780003C03C0007803C0007801E00
0F000F001E0007803C0003E0F80000FFE000003F80001B1E7E9C20>I<FFFF80FFFFE00F00F00F
00380F003C0F001E0F001E0F001E0F001E0F001E0F001E0F003C0F00380F00F00FFFE00FFF800F
00000F00000F00000F00000F00000F00000F00000F00000F00000F0000FFF000FFF000171C7E9B
1C>I<07E0801FF9803C1F80700780700380E00380E00180E00180E00180F00000F000007C0000
7FC0003FF8001FFE0007FF0000FF80000F800003C00003C00001C0C001C0C001C0C001C0E00180
E00380F00300FC0E00CFFC0083F800121E7E9C17>83 D<7FFFFFC07FFFFFC0780F03C0700F01C0
600F00C0E00F00E0C00F0060C00F0060C00F0060C00F0060000F0000000F0000000F0000000F00
00000F0000000F0000000F0000000F0000000F0000000F0000000F0000000F0000000F0000000F
0000000F0000000F000003FFFC0003FFFC001B1C7F9B1E>I<FFF0FFC0FFF0FFC00F001E000F00
0C000F000C000F000C000F000C000F000C000F000C000F000C000F000C000F000C000F000C000F
000C000F000C000F000C000F000C000F000C000F000C000F000C000F000C000F000C0007001800
078018000380300001C0300000E0E000007FC000001F00001A1D7E9B1F>I<FFE01FF0FFE01FF0
0F0007800F0003000F000300078006000780060007C00E0003C00C0003C00C0003E01C0001E018
0001E0180000F0300000F0300000F03000007860000078600000786000003CC000003CC000003C
C000001F8000001F8000001F8000000F0000000F0000000F0000000600001C1D7F9B1F>I<FFE0
FFE1FFFFE0FFE1FF1F001E007C0F001E00300F003F00300F003F00300F803F0070078067806007
80678060078067806003C0E780C003C0C3C0C003C0C3C0C001E0C3C18001E181E18001E181E180
01E181E18000F381F30000F300F30000F300F300007B00F600007E007E00007E007E00007E007E
00003C003C00003C003C00003C003C00001C0038000018001800281D7F9B2B>I<06000F001F80
39C070E0E07040200C077C9C15>94 D<0FE0001FF8003C3C003C1E00180E00000E00001E0007FE
001FFE003E0E00780E00F00E00F00E60F00E60F01E60783E603FFFC01F878013127F9115>97
D<FC0000FC00001C00001C00001C00001C00001C00001C00001C00001C00001C00001C7E001DFF
001F87801E01C01C01E01C00E01C00F01C00F01C00F01C00F01C00F01C00F01C00E01C01E01E01
C01F078019FF00187C00141D7F9C17>I<03F00FF81E3C383C78187000F000F000F000F000F000
F000780078063C061E0C0FF803E00F127F9112>I<001F80001F80000380000380000380000380
00038000038000038000038000038003E3800FFB801E0F80380780780380700380F00380F00380
F00380F00380F00380F003807003807803803807801E1F800FFBF007E3F0141D7F9C17>I<03E0
0FF01C38381C781E700EFFFEFFFEF000F000F000F000700078063C061E0C0FF803E00F127F9112
>I<007801FC039E071E0E0C0E000E000E000E000E000E00FFE0FFE00E000E000E000E000E000E
000E000E000E000E000E000E000E000E007FE07FE00F1D809C0D>I<00038007E7C00FFDC03C3D
C0381C00781E00781E00781E00781E00381C003C3C003FF00037E0007000007000003000003FFC
001FFF003FFF80700780E001C0E001C0E001C0E001C07003803C0F001FFE0007F800121C7F9215
>I<FC0000FC00001C00001C00001C00001C00001C00001C00001C00001C00001C00001C7C001D
FF001F07001E03801E03801C03801C03801C03801C03801C03801C03801C03801C03801C03801C
03801C0380FF9FF0FF9FF0141D7F9C17>I<18003C007C003C0018000000000000000000000000
00FC00FC001C001C001C001C001C001C001C001C001C001C001C001C001C001C00FF80FF80091D
7F9C0C>I<01C003E003E003E001C00000000000000000000000000FE00FE000E000E000E000E0
00E000E000E000E000E000E000E000E000E000E000E000E000E000E000E060E0F1C0F1C07F803E
000B25839C0D>I<FC0000FC00001C00001C00001C00001C00001C00001C00001C00001C00001C
00001C7FC01C7FC01C3E001C18001C30001C60001CC0001DE0001FE0001E70001C78001C38001C
3C001C1C001C0E001C0F00FF9FE0FF9FE0131D7F9C16>I<FC00FC001C001C001C001C001C001C
001C001C001C001C001C001C001C001C001C001C001C001C001C001C001C001C001C001C001C00
FF80FF80091D7F9C0C>I<FC7E07E000FDFF9FF8001F83B838001E01E01C001E01E01C001C01C0
1C001C01C01C001C01C01C001C01C01C001C01C01C001C01C01C001C01C01C001C01C01C001C01
C01C001C01C01C001C01C01C00FF8FF8FF80FF8FF8FF8021127F9124>I<FC7C00FDFF001F0700
1E03801E03801C03801C03801C03801C03801C03801C03801C03801C03801C03801C03801C0380
FF9FF0FF9FF014127F9117>I<03F0000FFC001E1E00380700780780700380F003C0F003C0F003
C0F003C0F003C0F003C07003807807803807001E1E000FFC0003F00012127F9115>I<FC7E00FD
FF001F87801E03C01C01E01C01E01C00F01C00F01C00F01C00F01C00F01C00F01C01E01C01E01E
03C01F07801DFF001C7C001C00001C00001C00001C00001C00001C0000FF8000FF8000141A7F91
17>I<03E1800FF9801E1F803C0780780780780380F00380F00380F00380F00380F00380F00380
7803807807803C07801E1F800FFB8007E380000380000380000380000380000380000380001FF0
001FF0141A7F9116>I<FDE0FFF01F781E781E301C001C001C001C001C001C001C001C001C001C
001C00FFC0FFC00D127F9110>I<1F903FF07070E030E030E030F8007F803FE00FF000F8C038C0
38E038E038F070DFE08FC00D127F9110>I<0C000C000C000C000C001C001C003C00FFE0FFE01C
001C001C001C001C001C001C001C001C301C301C301C301C301E600FC007800C1A7F9910>I<FC
1F80FC1F801C03801C03801C03801C03801C03801C03801C03801C03801C03801C03801C03801C
03801C07800C0F800FFBF003E3F014127F9117>I<FF0FE0FF0FE01C07801C03000E06000E0600
0E0600070C00070C00071C0003980003980003F80001F00001F00000E00000E00000E00013127F
9116>I<FF3FCFE0FF3FCFE01C0F07801C0F03001C1F03000E1B06000E1B86000E1B86000E318E
000731CC000731CC000760CC0003E0F80003E0F80003E0F80001C0700001C0700001C070001B12
7F911E>I<7F8FF07F8FF00F0780070600038E0001DC0001D80000F00000700000780000F80001
DC00038E00030E000607000F0380FF8FF8FF8FF81512809116>I<FF0FE0FF0FE01C07801C0300
0E06000E06000E0600070C00070C00071C0003980003980003F80001F00001F00000E00000E000
00E00000C00000C00000C000F18000F18000C700007E00003C0000131A7F9116>I<7FFC7FFC78
38707060F060E061C063C00380070C0F0C0E0C1C1C3C1838187078FFF8FFF80E127F9112>I
E /Fl 20 119 df<387CFEFEFE7C3807077D860D>46 D<387CFEFEFE7C3800000000387CFEFEFE
7C3807127D910D>58 D<001FE02000FFF8E003F80FE007E007E00FC001E01F8001E03F0000E03F
0000E07E0000607E000060FE000060FE000000FE000000FE000000FE000000FE000000FE000000
FE0000007E0000607E0000603F0000603F0000C01F8000C00FC0018007E0030003F80E0000FFFC
00001FE0001B1C7D9B22>67 D<FFFFF800FFFFFF000FC01FC00FC007E00FC003F00FC001F80FC0
01F80FC000FC0FC000FC0FC000FC0FC000FE0FC000FE0FC000FE0FC000FE0FC000FE0FC000FE0F
C000FE0FC000FE0FC000FC0FC000FC0FC000FC0FC001F80FC001F80FC003F00FC007E00FC01FC0
FFFFFF00FFFFF8001F1C7E9B25>I<FFFFFFFF07E007E007E007E007E007E007E007E007E007E0
07E007E007E007E007E007E007E007E007E007E007E007E007E007E0FFFFFFFF101C7F9B12>73
D<0FF8001FFE003E1F803E07803E07C01C07C00007C003FFC01FFFC03F87C07E07C0FC07C0FC07
C0FC07C0FC0FC07E1FC03FFBF80FE1F815127F9117>97 D<03FC000FFE001F1F003E1F007C1F00
7C0E00FC0000FC0000FC0000FC0000FC0000FC00007C00007E01803E03801F07000FFE0003F800
11127E9115>99 D<01FC000FFF001F0F803E07C07C03C07C03E0FC03E0FFFFE0FFFFE0FC0000FC
0000FC00007C00007E00603E00C01F81C00FFF0001FC0013127F9116>101
D<FF0000FF00001F00001F00001F00001F00001F00001F00001F00001F00001F00001F1FC01F7F
E01FE1F01F80F81F80F81F00F81F00F81F00F81F00F81F00F81F00F81F00F81F00F81F00F81F00
F81F00F8FFE7FFFFE7FF181D7F9C1B>104 D<1E003F003F007F003F003F001E00000000000000
00000000FF00FF001F001F001F001F001F001F001F001F001F001F001F001F001F001F00FFE0FF
E00B1E7F9D0E>I<FF00FF001F001F001F001F001F001F001F001F001F001F001F001F001F001F
001F001F001F001F001F001F001F001F001F001F001F00FFE0FFE00B1D7F9C0E>108
D<FF1FC0FE00FF7FE3FF001FE1F70F801F80FC07C01F80FC07C01F00F807C01F00F807C01F00F8
07C01F00F807C01F00F807C01F00F807C01F00F807C01F00F807C01F00F807C01F00F807C01F00
F807C0FFE7FF3FF8FFE7FF3FF825127F9128>I<FF1FC0FF7FE01FE1F01F80F81F80F81F00F81F
00F81F00F81F00F81F00F81F00F81F00F81F00F81F00F81F00F81F00F8FFE7FFFFE7FF18127F91
1B>I<01FC000FFF801F07C03E03E07C01F07C01F0FC01F8FC01F8FC01F8FC01F8FC01F8FC01F8
7C01F07C01F03E03E01F07C00FFF8001FC0015127F9118>I<FF1FC0FFFFE01FC1F81F00F81F00
FC1F007C1F007E1F007E1F007E1F007E1F007E1F007E1F007C1F00FC1F80F81FC1F01F7FE01F1F
801F00001F00001F00001F00001F00001F0000FFE000FFE000171A7F911B>I<FE3E00FE7F001E
CF801F8F801F8F801F07001F00001F00001F00001F00001F00001F00001F00001F00001F00001F
0000FFF000FFF00011127F9114>114 D<1FD83FF87038E018E018F000FF807FE07FF01FF807FC
007CC01CC01CE01CF038FFF0CFC00E127E9113>I<030003000300070007000F000F003F00FFFC
FFFC1F001F001F001F001F001F001F001F001F001F0C1F0C1F0C1F0C0F9807F003E00E1A7F9913
>I<FF07F8FF07F81F00F81F00F81F00F81F00F81F00F81F00F81F00F81F00F81F00F81F00F81F
00F81F00F81F01F80F03F80FFEFF03F8FF18127F911B>I<FFC1FCFFC1FC1F00601F80E00F80C0
0FC0C007C18007C18003E30003E30001F60001F60001FE0000FC0000FC00007800007800003000
16127F9119>I E /Fm 55 123 df<007F07F001FF1FF003FF3FF007807800070070000F00F000
0F00F0000F00F0000F00F0000F00F0000F00F0000F00F000FFF8FF80FFF8FF80FFF8FF800F00F0
000F00F0000F00F0000F00F0000F00F0000F00F0000F00F0000F00F0000F00F0000F00F0000F00
F0000F00F0000F00F0000F00F0000F00F0000F00F0000F00F0001C20809F1B>11
D<0000F000F8F001F8F003F8F00780000700000F00000F00000F00000F00000F00000F00000F00
00FFF8F0FFF8F0FFF8F00F00F00F00F00F00F00F00F00F00F00F00F00F00F00F00F00F00F00F00
F00F00F00F00F00F00F00F00F00F00F00F00F00F00F0142180A018>I<007000E001C003800780
07000E001E001E003C003C003C0078007800780078007000F000F000F000F000F000F000F000F0
00F000F000F000F000700078007800780078003C003C003C001E001E000E0007000780038001C0
00E000700C2E7EA112>40 D<E000700038001C001E000E0007000780078003C003C003C001E001
E001E001E000E000F000F000F000F000F000F000F000F000F000F000F000F000E001E001E001E0
01E003C003C003C00780078007000E001E001C0038007000E0000C2E7DA112>I<000600000006
000000060000000600000006000000060000000600000006000000060000000600000006000000
060000000600000006000000060000FFFFFFF0FFFFFFF000060000000600000006000000060000
000600000006000000060000000600000006000000060000000600000006000000060000000600
00000600001C207D9A23>43 D<787878781830306060E0050A7D830D>I<FFC0FFC0FFC00A037F
8B0F>I<03F00007F8001FFE001E1E003C0F00380700780780780780700380F003C0F003C0F003
C0F003C0F003C0F003C0F003C0F003C0F003C0F003C0F003C0F003C0F003C0F003C07807807807
807807803807003C0F001E1E001FFE000FFC0003F00012207E9E17>48 D<00C001C00FC0FFC0FF
C0F3C003C003C003C003C003C003C003C003C003C003C003C003C003C003C003C003C003C003C0
03C003C003C003C0FFFEFFFEFFFE0F1F7C9E17>I<FFFFFFF0FFFFFFF000000000000000000000
00000000000000000000000000000000000000000000FFFFFFF0FFFFFFF01C0C7D9023>61
D<001F0000001F0000003F8000003B8000003B8000007BC0000073C0000071C00000F1E00000E1
E00000E0E00001E0F00001E0F00001C0F00003C0780003C078000380780007803C0007803C0007
003C000FFFFE000FFFFE000FFFFE001E000F001E000F003C000F803C0007803C000780780007C0
780003C0780003C0F00003E01B207F9F1E>65 D<FFF800FFFF00FFFF80F00FC0F003E0F001E0F0
00F0F000F0F000F0F000F0F000F0F001E0F003C0F01F80FFFF00FFFF00FFFF80F007E0F001E0F0
00F0F00078F00078F00078F00078F00078F00078F000F0F001F0F007E0FFFFC0FFFF80FFFC0015
207B9F1E>I<001FC000FFF801FFFC03E03C07800C0F00001E00003E00003C00007C0000780000
780000780000F00000F00000F00000F00000F00000F00000F00000F00000780000780000780000
7C00003C00003E00001E00000F000207800E03E03E01FFFC00FFF0001FC017227DA01D>I<FFFC
00FFFF80FFFFC0F007E0F001F0F000F8F00078F0003CF0003CF0001EF0001EF0000EF0000FF000
0FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0001EF0001EF0001EF0003CF0007CF000
F8F001F0F007E0FFFFC0FFFF80FFFC0018207B9F21>I<FFFFC0FFFFC0FFFFC0F00000F00000F0
0000F00000F00000F00000F00000F00000F00000F00000F00000FFFF80FFFF80FFFF80F00000F0
0000F00000F00000F00000F00000F00000F00000F00000F00000F00000F00000FFFFE0FFFFE0FF
FFE013207B9F1B>I<FFFFC0FFFFC0FFFFC0F00000F00000F00000F00000F00000F00000F00000
F00000F00000F00000F00000FFFF00FFFF00FFFF00F00000F00000F00000F00000F00000F00000
F00000F00000F00000F00000F00000F00000F00000F00000F0000012207B9F1A>I<001FE000FF
F801FFFE03E03E07800E0F00001E00003E00003C00007C0000780000780000780000F00000F000
00F00000F00000F00000F00000F003FEF003FE7803FE78001E78001E7C001E3C001E3E001E1E00
1E0F001E07801E03E03E01FFFE00FFF8001FC017227DA01E>I<F00078F00078F00078F00078F0
0078F00078F00078F00078F00078F00078F00078F00078F00078F00078FFFFF8FFFFF8FFFFF8F0
0078F00078F00078F00078F00078F00078F00078F00078F00078F00078F00078F00078F00078F0
0078F0007815207B9F20>I<F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0
F0F0F0F0F004207C9F0D>I<F0003EF0007CF000F8F001F0F003E0F007C0F00780F00F00F01F00
F03E00F07C00F0F800F1F000F3F800F3F800F7FC00FFBC00FF1E00FE1F00FC0F00F80780F00780
F003C0F003E0F001E0F000F0F000F8F00078F0003CF0003CF0001EF0001F18207B9F20>75
D<F00000F00000F00000F00000F00000F00000F00000F00000F00000F00000F00000F00000F000
00F00000F00000F00000F00000F00000F00000F00000F00000F00000F00000F00000F00000F000
00F00000F00000F00000FFFF80FFFF80FFFF8011207B9F19>I<F80001F8FC0003F8FC0003F8F4
000378F6000778F6000778F6000778F7000F78F3000E78F3000E78F3801E78F3801E78F1801C78
F1C03C78F1C03C78F1C03C78F0C03878F0E07878F0E07878F0607078F070F078F070F078F030E0
78F039E078F039E078F019C078F019C078F019C078F00F8078F00F8078F00F8078F00000781D20
7B9F28>I<FC0078FE0078FE0078F60078F70078F70078F38078F38078F38078F3C078F1C078F1
E078F1E078F0E078F0F078F07078F07078F07878F03878F03C78F03C78F01C78F01E78F00E78F0
0E78F00E78F00778F00778F00378F003F8F003F8F001F815207B9F20>I<003F000000FFC00003
FFF00007E1F8000F807C001F003E001E001E003C000F003C000F00780007807800078078000780
F00003C0F00003C0F00003C0F00003C0F00003C0F00003C0F00003C0F00003C0F00003C0F80007
C07800078078000780780007803C000F003C000F001E001E001F003E000F807C0007E1F80003FF
F00000FFC000003F00001A227DA021>I<FFF800FFFF00FFFF80F00FC0F003E0F001E0F000F0F0
00F0F000F0F000F0F000F0F000F0F000F0F001E0F003E0F00FC0FFFF80FFFF00FFF800F00000F0
0000F00000F00000F00000F00000F00000F00000F00000F00000F00000F00000F0000014207B9F
1D>I<FFF800FFFF00FFFF80F007C0F003E0F001E0F000F0F000F0F000F0F000F0F000F0F001E0
F003E0F007C0FFFF80FFFF00FFF800F03C00F01E00F01E00F00F00F00F00F00780F00780F003C0
F001C0F001E0F000F0F000F0F00078F00078F0003C16207B9F1D>82 D<01FC0007FF800FFFC01F
03C03C00C03C00007800007800007800007800007800007C00003C00003F00001FE0000FFC0007
FE0001FF00003F800007C00003C00003E00001E00001E00001E00001E00001E00001C0C003C0F0
07C0FC0F807FFF001FFE0003F80013227EA019>I<FFFFFFC0FFFFFFC0FFFFFFC0001E0000001E
0000001E0000001E0000001E0000001E0000001E0000001E0000001E0000001E0000001E000000
1E0000001E0000001E0000001E0000001E0000001E0000001E0000001E0000001E0000001E0000
001E0000001E0000001E0000001E0000001E0000001E0000001E0000001E00001A207E9F1F>I<
F000F0F000F0F000F0F000F0F000F0F000F0F000F0F000F0F000F0F000F0F000F0F000F0F000F0
F000F0F000F0F000F0F000F0F000F0F000F0F000F0F000F0F000F0F000F0F000F0F000F07801E0
7801E03C03C03C03C01F0F800FFF0007FE0001F80014217B9F1F>I<F00001E0F00001E0780003
C0780003C0780003C03C0007803C0007803C0007801E000F001E000F001F000F000F001E000F00
1E0007801C0007803C0007803C0003C0380003C0780003C0780001E0700001E0F00001E0F00000
F0E00000F1E00000F1E0000071C000007BC000003B8000003B8000003F8000001F0000001F0000
1B207F9F1E>I<F0007C000FF0007E000FF0007E000F78006E000E7800EE001E7800E7001E7800
E7001E3C00E7003C3C01E7803C3C01C7803C3C01C3803C1E01C380781E03C3C0781E0383C0780E
0381C0700F0381C0F00F0781E0F00F0701E0F0070700E0E0078700E1E0078F00F1E0078E00F1E0
038E0071C0038E0071C003CE0073C001DC007B8001DC003B8001DC003B8001DC003B8000F8003F
0000F8001F0000F8001F0028207F9F2B>I<F80000F87C0001F03C0001E03E0003E01F0003C00F
0007800F800F8007C00F0003C01F0003E01E0001F03C0000F07C00007878000078F000003CF000
001DE000001FE000000FC000000780000007800000078000000780000007800000078000000780
00000780000007800000078000000780000007800000078000000780001D20809F1E>89
D<07E03FF87FFC701E401F000F000F000F003F07FF1FFF7E0FF80FF00FF00FF00FF83F7FFF3FEF
1F8F10147E9316>97 D<F00000F00000F00000F00000F00000F00000F00000F00000F00000F000
00F00000F00000F1F000F7FC00FFFE00FC3E00F80F00F00F00F00780F00780F00780F00780F007
80F00780F00780F00F00F00F00F81F00FC3E00FFFC00F7F800F1E00011207D9F17>I<03F00FFC
1FFE3E0E3C0278007800F000F000F000F000F000F000780078003C013E0F1FFF0FFE03F010147E
9314>I<0007800007800007800007800007800007800007800007800007800007800007800007
8007C7800FF7801FFF803E1F807C0780780780F80780F00780F00780F00780F00780F00780F007
80F00780780780780F803E1F801FFF800FF78007C78011207E9F17>I<03F0000FFC001FFE003E
1F003C0700780700700380FFFF80FFFF80FFFF80F00000F00000F000007000007800003C01003E
07001FFF0007FE0001F80011147F9314>I<007E01FE03FE078007000F000F000F000F000F000F
000F00FFF0FFF0FFF00F000F000F000F000F000F000F000F000F000F000F000F000F000F000F00
0F000F000F20809F0E>I<F000F000F000F000F000F000F000F000F000F000F000F000F1F8F3FC
F7FEFC1FF80FF80FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00F10207D
9F17>104 D<F0F0F0F00000000000000000F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F004
207D9F0B>I<F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F004
207D9F0B>108 D<F0FC07E0F3FE1FF0F7FF3FF8FE0FF07CF807C03CF807C03CF007803CF00780
3CF007803CF007803CF007803CF007803CF007803CF007803CF007803CF007803CF007803CF007
803CF007803CF007803C1E147D9327>I<F1F8F3FCF7FEFC1FF80FF80FF00FF00FF00FF00FF00F
F00FF00FF00FF00FF00FF00FF00FF00FF00F10147D9317>I<01F80007FE001FFF803F0FC03C03
C07801E07801E0F000F0F000F0F000F0F000F0F000F0F000F07801E07801E03C03C03F0FC01FFF
8007FE0001F80014147F9317>I<F1F000F7FC00FFFE00FC3E00F81F00F00F00F00F80F00780F0
0780F00780F00780F00780F00780F00F00F00F00F81F00FC3E00FFFC00F7F800F1E000F00000F0
0000F00000F00000F00000F00000F00000F00000F00000111D7D9317>I<03C7800FF7801FFF80
3E1F807C0F80780780780780F00780F00780F00780F00780F00780F00780F807807807807C0F80
3E1F801FFF800FF78007C780000780000780000780000780000780000780000780000780000780
111D7E9317>I<F0E0F3E0F7E0FF00FC00FC00F800F800F000F000F000F000F000F000F000F000
F000F000F000F0000B147D9310>I<07F01FFC3FFC780C7800780078007C003FC01FF00FF803F8
007C003C003CC03CF07CFFF87FF00FC00E147F9311>I<1E001E001E001E001E001E00FFF0FFF0
FFF01E001E001E001E001E001E001E001E001E001E001E001E001E001E201FF00FF007C00C1A7F
9910>I<F00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF01FF03FFF
FF7FEF3F0F10147D9317>I<F003C0F003C07803807807807807803C0F003C0F003C0F001E0E00
1E1E001E1E000F1C000F3C000F3C0007380007380007B80003F00003F00001E00012147F9315>
I<F01F00F0F01F80F0F01F80F0781B81E0783B81E0783BC1E07839C1E03C31C3C03C71C3C03C71
E3C01C70E3801E60E7801E60E7801EE0E7800EE077000EC077000EC0770007C07E0007C03E0007
803E001C147F931F>I<7801E07C03C03E07801E0F000F0F00079E0003FC0003F80001F80000F0
0001F00001F80003FC00079E000F0F000E0F001E07803C03C07801E0F801F01414809315>I<F0
03C0F003C07807807807807C07803C0F003C0F001E0F001E1E000E1E000F1C000F1C00073C0007
380003B80003B80003B00001F00001F00000E00000E00001C00001C00003C0000380000780007F
00007E00007C0000121D7F9315>I<7FFF7FFF7FFF003E003C007800F800F001E003E007C00780
0F001F001E003C007C00FFFFFFFFFFFF10147F9314>I E /Fn 35 121 df<000FE000007FF800
00F81C0001E07C0003E07C0007C07C0007C07C0007C0380007C0000007C0000007C0000007C1FE
00FFFFFE00FFFFFE0007C03E0007C03E0007C03E0007C03E0007C03E0007C03E0007C03E0007C0
3E0007C03E0007C03E0007C03E0007C03E0007C03E0007C03E0007C03E0007C03E003FF9FFC03F
F9FFC01A20809F1D>12 D<0018007000E001C00380038007000E000E001E001C003C003C007800
780078007800F800F000F000F000F000F000F000F000F000F000F80078007800780078003C003C
001C001E000E000E0007000380038001C000E0007000180D2D7DA114>40
D<C000700038001C000E000E0007000380038003C001C001E001E000F000F000F000F000F80078
0078007800780078007800780078007800F800F000F000F000F001E001E001C003C00380038007
000E000E001C0038007000C0000D2D7DA114>I<FFF0FFF0FFF0FFF00C047F8B11>45
D<00700000F0000FF000FFF000F3F00003F00003F00003F00003F00003F00003F00003F00003F0
0003F00003F00003F00003F00003F00003F00003F00003F00003F00003F00003F00003F00003F0
0003F000FFFF80FFFF80111D7C9C1A>49 D<07F0001FFE00383F007C1F80FE0FC0FE0FC0FE0FE0
FE07E07C07E03807E0000FE0000FC0000FC0001F80001F00003E0000780000F00000E00001C060
0380600700600C00E01FFFE01FFFC03FFFC07FFFC0FFFFC0FFFFC0131D7D9C1A>I<3803803FFF
803FFF003FFE003FFC003FF0003F800030000030000030000030000033F8003FFE003C1F00380F
80300FC0000FC0000FE0000FE0780FE0FC0FE0FE0FE0FE0FE0FC0FC0780FC0601F80383F001FFC
0007F000131D7D9C1A>53 D<387CFEFEFE7C38000000000000387CFEFEFE7C3807147C930F>58
D<0007FC02003FFF0E00FE03DE03F000FE07E0003E0FC0001E1F80001E3F00000E3F00000E7F00
00067E0000067E000006FE000000FE000000FE000000FE000000FE000000FE000000FE0000007E
0000007E0000067F0000063F0000063F00000C1F80000C0FC0001807E0003803F0007000FE01C0
003FFF800007FC001F1F7D9E26>67 D<FFFF9FFFF0FFFF9FFFF007F000FE0007F000FE0007F000
FE0007F000FE0007F000FE0007F000FE0007F000FE0007F000FE0007F000FE0007F000FE0007F0
00FE0007F000FE0007FFFFFE0007FFFFFE0007F000FE0007F000FE0007F000FE0007F000FE0007
F000FE0007F000FE0007F000FE0007F000FE0007F000FE0007F000FE0007F000FE0007F000FE00
07F000FE00FFFF9FFFF0FFFF9FFFF0241F7E9E29>72 D<FFF000007FF8FFF80000FFF807F80000
FF0006FC0001BF0006FC0001BF0006FC0001BF00067E00033F00067E00033F00063F00063F0006
3F00063F00061F800C3F00061F800C3F00061F800C3F00060FC0183F00060FC0183F000607E030
3F000607E0303F000603F0603F000603F0603F000603F0603F000601F8C03F000601F8C03F0006
00FD803F000600FD803F0006007F003F0006007F003F0006003E003F0006003E003F0006003E00
3F00FFF01C07FFF8FFF01C07FFF82D1F7E9E32>77 D<FFFFFE00FFFFFF8007F00FE007F003F007
F001F807F001F807F001FC07F001FC07F001FC07F001FC07F001FC07F001F807F001F807F003F0
07F00FE007FFFF8007FFFE0007F0000007F0000007F0000007F0000007F0000007F0000007F000
0007F0000007F0000007F0000007F0000007F00000FFFF8000FFFF80001E1F7E9E24>80
D<03FC080FFF381E03F83C00F8780078780038F80038F80018FC0018FC0000FF0000FFF8007FFF
007FFFC03FFFE01FFFF00FFFF803FFF8001FFC0001FC0000FC0000FCC0007CC0007CC0007CE000
78E00078F800F0FE01E0E7FFC081FF00161F7D9E1D>83 D<FFFF81FFE0FFFF81FFE007F0000C00
07F0000C0007F0000C0007F0000C0007F0000C0007F0000C0007F0000C0007F0000C0007F0000C
0007F0000C0007F0000C0007F0000C0007F0000C0007F0000C0007F0000C0007F0000C0007F000
0C0007F0000C0007F0000C0007F0000C0007F0000C0007F0001C0003F000180003F800380001F8
00300000FC007000007F03E000001FFF80000003FC0000231F7E9E28>85
D<FFFF003FF8FFFF003FF807F000038007F000030007F800070003F800060003FC000E0001FC00
0C0001FE000C0000FE00180000FF001800007F003000007F003000003F806000003F806000003F
C0E000001FC0C000001FE1C000000FE18000000FF180000007F300000007FB00000003FE000000
03FE00000003FE00000001FC00000001FC00000000F800000000F8000000007000000000700000
251F7F9E28>I<07FC001FFF003F0F803F07C03F03E03F03E00C03E00003E001FFE00FFFE03F83
E07E03E07C03E0F803E0F803E0F803E0FC07E07E0DE03FF9FE07E07E17147F9319>97
D<FF0000FF00001F00001F00001F00001F00001F00001F00001F00001F00001F00001F00001F1F
C01F7FF01FE0F81F807C1F007E1F003E1F003E1F003F1F003F1F003F1F003F1F003F1F003F1F00
3E1F003E1F007C1F807C1EC1F81C7FE0181F8018207E9F1D>I<01FE0007FF801F0FC03E0FC03E
0FC07C0FC07C0300FC0000FC0000FC0000FC0000FC0000FC00007C00007E00003E00603F00C01F
81C007FF0001FC0013147E9317>I<0007F80007F80000F80000F80000F80000F80000F80000F8
0000F80000F80000F80000F801F8F80FFEF81F83F83E01F87E00F87C00F87C00F8FC00F8FC00F8
FC00F8FC00F8FC00F8FC00F87C00F87C00F87E00F83E01F81F07F80FFEFF03F8FF18207E9F1D>
I<01FE0007FF801F83E03F01F07E00F07E00F8FC00F8FC00F8FFFFF8FFFFF8FC0000FC0000FC00
007C00007E00003E00183F00380F807007FFE000FF8015147F9318>I<001F8000FFC001F3E003
E7E003C7E007C7E007C3C007C00007C00007C00007C00007C000FFFC00FFFC0007C00007C00007
C00007C00007C00007C00007C00007C00007C00007C00007C00007C00007C00007C00007C00007
C0003FFC003FFC0013207F9F10>I<01FC3C07FFFE0F07DE1E03DE3E03E03E03E03E03E03E03E0
3E03E01E03C00F07800FFF0019FC001800001800001C00001FFF801FFFF00FFFF83FFFFC7C007C
70003EF0001EF0001EF0001E78003C78003C3F01F80FFFE001FF00171E7F931A>I<FF0000FF00
001F00001F00001F00001F00001F00001F00001F00001F00001F00001F00001F0FC01F3FE01F61
F01FC0F81F80F81F00F81F00F81F00F81F00F81F00F81F00F81F00F81F00F81F00F81F00F81F00
F81F00F81F00F8FFE3FFFFE3FF18207D9F1D>I<1C003F007F007F007F003F001C000000000000
00000000000000FF00FF001F001F001F001F001F001F001F001F001F001F001F001F001F001F00
1F001F00FFE0FFE00B217EA00E>I<FF00FF001F001F001F001F001F001F001F001F001F001F00
1F001F001F001F001F001F001F001F001F001F001F001F001F001F001F001F001F001F00FFE0FF
E00B207E9F0E>108 D<FE0FE03F80FE3FF0FFC01E70F9C3E01EC07F01F01F807E01F01F807E01
F01F007C01F01F007C01F01F007C01F01F007C01F01F007C01F01F007C01F01F007C01F01F007C
01F01F007C01F01F007C01F01F007C01F01F007C01F0FFE3FF8FFEFFE3FF8FFE27147D932C>I<
FE0FC0FE3FE01E61F01EC0F81F80F81F00F81F00F81F00F81F00F81F00F81F00F81F00F81F00F8
1F00F81F00F81F00F81F00F81F00F8FFE3FFFFE3FF18147D931D>I<01FF0007FFC01F83F03E00
F83E00F87C007C7C007CFC007EFC007EFC007EFC007EFC007EFC007E7C007C7C007C3E00F83E00
F81F83F007FFC001FF0017147F931A>I<FF1FC0FF7FF01FE1F81F80FC1F007E1F007E1F003E1F
003F1F003F1F003F1F003F1F003F1F003F1F003E1F007E1F007C1F80FC1FC1F81F7FE01F1F801F
00001F00001F00001F00001F00001F00001F0000FFE000FFE000181D7E931D>I<FE3E00FE7F80
1ECFC01F8FC01F8FC01F8FC01F03001F00001F00001F00001F00001F00001F00001F00001F0000
1F00001F00001F0000FFF000FFF00012147E9316>114 D<0FE63FFE701E600EE006E006F800FF
C07FF83FFC1FFE03FE001FC007C007E007F006F81EFFFCC7F010147E9315>I<01800180018003
800380038007800F803F80FFFCFFFC0F800F800F800F800F800F800F800F800F800F800F860F86
0F860F860F8607CC03F801F00F1D7F9C14>I<FF07F8FF07F81F00F81F00F81F00F81F00F81F00
F81F00F81F00F81F00F81F00F81F00F81F00F81F00F81F00F81F01F81F01F80F07F807FEFF03F8
FF18147D931D>I<FFE07F80FFE07F801F001C000F8018000F80180007C0300007C0300003E060
0003E0600001F0C00001F0C00001F9C00000F9800000FF8000007F0000007F0000003E0000003E
0000001C0000001C000019147F931C>I<FFE1FF00FFE1FF000F80700007C0E00007E0C00003E1
800001F3800000FF0000007E0000003E0000003F0000007F8000006F800000C7C0000183E00003
81F0000701F8000E00FC00FF81FF80FF81FF8019147F931C>120 D E /Fo
30 120 df<000078007C7800FC7801FC7803C40003800007800007800007800007800007800007
8000078000078000FFFC78FFFC78FFFC7807807807807807807807807807807807807807807807
8078078078078078078078078078078078078078078078078078078078078078078078152480A3
1A>12 D<F0F0F0F004047B830E>46 D<00C001C007C0FFC0FFC0FBC003C003C003C003C003C003
C003C003C003C003C003C003C003C003C003C003C003C003C003C003C003C003C003C003C003C0
FFFFFFFFFFFF10227CA118>49 D<03F0000FFC001FFE003C1F003807807007C07003C0F003E0E0
01E06001E02001E00001E00001E00001E00003C00003C0000780000780000F00001E00003C0000
780000F00001E00001C0000380000700000E00001C0000380000700000FFFFE0FFFFE0FFFFE013
227EA118>I<01F00007FC001FFF003E0F003807807003C02003C02003C00003C00003C00003C0
000780000780000F00001E0003FC0003F80003FE00000F000007800003C00003C00001E00001E0
0001E00001E00001E08001E0C003C0E003C07007803C0F801FFF000FFC0003F00013237EA118>
I<3FFF803FFF803FFF803C00003C00003C00003C00003C00003C00003C00003C00003C00003CF8
003FFE003FFF003F0F803E07803C03C03803C00001E00001E00001E00001E00001E00001E00001
E04003C04003C0E003C07007807C1F003FFE000FFC0003F00013227EA018>53
D<007E0001FF0003FF0007C1000F00001E00001E00003C00003C000078000078000078F800F3FE
00F7FF00FF0F80FC0780F803C0F803C0F801C0F001E0F001E0F001E0F001E0F001E07001E07001
E07801E07803C03803C03C03801C07801F0F000FFE0007FC0001F00013237EA118>I<01F00007
FC000FFE001E0F003C07803C07807803C07803C07803C07803C07803C03803803C07801E0F000F
1E0007FC0003F8000FFE001E0F003C07807803C07803C0F001E0F001E0F001E0F001E0F001E0F0
01E07803C07803C03C07803E0F801FFF0007FC0001F00013237EA118>56
D<001F0000001F0000003F8000003F8000003B8000007BC0000073C0000071C00000F1E00000F1
E00000E0E00001E0F00001E0F00001C0F00003C0780003C078000380780007803C0007803C0007
003C000F001E000F001E000FFFFE001FFFFF001FFFFF001C000F003C0007803C00078038000780
780003C0780003C0700003C0F00001E0F00001E0E00001E01B237EA220>65
D<FFFE0000FFFFC000FFFFE000F003F000F000F800F0007C00F0003E00F0001E00F0000F00F000
0F00F0000780F0000780F0000780F00003C0F00003C0F00003C0F00003C0F00003C0F00003C0F0
0003C0F00003C0F00003C0F0000380F0000780F0000780F0000780F0000F00F0001F00F0001E00
F0003C00F000FC00F003F800FFFFE000FFFFC000FFFE00001A237BA223>68
D<FFFFF0FFFFF0FFFFF0F00000F00000F00000F00000F00000F00000F00000F00000F00000F000
00F00000F00000F00000FFFFC0FFFFC0FFFFC0F00000F00000F00000F00000F00000F00000F000
00F00000F00000F00000F00000F00000F00000F00000F00000F0000014237BA21C>70
D<F0000078F0000078780000F0780000F0780000F03C0001E03C0001E03C0001E01E0003C01E00
03C01F0003C00F0007800F0007800F80078007800F0007800F0003C00E0003C01E0003C01E0001
E03C0001E03C0001E03C0000F0780000F0780000F07800007870000078F0000078F0000038E000
003DE000001DC000001FC000001FC000000F8000000F80001D237FA220>86
D<07E01FF83FFC3C1E301E200F000F000F000F01FF0FFF3FFF7F0F780FF00FF00FF00FF80F7C3F
7FFF3FFF1F8F10167E9517>97 D<F00000F00000F00000F00000F00000F00000F00000F00000F0
0000F00000F00000F00000F00000F1F000F7FC00FFFE00FC1F00F80F00F00780F00780F003C0F0
03C0F003C0F003C0F003C0F003C0F003C0F003C0F00780F00780F80F00FC3E00FFFE00F7F800F3
F00012237CA219>I<01FC0007FF000FFF801F07803C0180780000780000700000F00000F00000
F00000F00000F00000F000007800007800007800403C00C01F07C00FFFC007FF8001FC0012167E
9516>I<0003C00003C00003C00003C00003C00003C00003C00003C00003C00003C00003C00003
C00003C003F3C00FFFC01FFFC03F0FC03C07C07803C07803C0F003C0F003C0F003C0F003C0F003
C0F003C0F003C0F003C07803C07803C03C07C03E0FC01FFFC00FFBC003E3C012237EA219>I<03
F00007FC001FFE003E0F003C0780780380780380F001C0FFFFC0FFFFC0FFFFC0F00000F00000F0
00007000007800007800003C00801F07800FFF8007FF0001F80012167E9516>I<01F0F807FFF8
0FFFF81F1F801E0F003C07803C07803C07803C07803C07801E0F001F1F001FFE001FFC0039F000
3800003800003C00003FFE001FFFC01FFFE03FFFF07801F0F800F8F00078F00078F00078F00078
7800F03E03E01FFFC00FFF8001FC0015217F9518>103 D<F0F0F0F0000000000000000000F0F0
F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F004237DA20B>105 D<F00000F00000F00000F0
0000F00000F00000F00000F00000F00000F00000F00000F00000F00000F01F80F03F00F03E00F0
7C00F0F800F1F000F3E000F7C000FFC000FFC000FFE000FFE000FDF000F8F800F07800F07C00F0
3E00F01E00F01F00F00F00F00F80F007C012237CA218>107 D<F0F0F0F0F0F0F0F0F0F0F0F0F0
F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F004237DA20B>I<F0F807C0F3FE1FF0FFFF
7FF8FE0FF078FC0FE07CF807C03CF807C03CF007803CF007803CF007803CF007803CF007803CF0
07803CF007803CF007803CF007803CF007803CF007803CF007803CF007803CF007803CF007803C
1E167C9529>I<F1F8F7FCFFFEFE1EF80FF80FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00F
F00FF00FF00FF00FF00FF00F10167C9519>I<01FC0007FF000FFF801F07C03C01E07800F07800
F0700070F00078F00078F00078F00078F00078F000787800F07800F07C01F03E03E01F07C00FFF
8007FF0001FC0015167F9518>I<F1F000F7FC00FFFE00FC3F00F80F00F00780F00780F007C0F0
03C0F003C0F003C0F003C0F003C0F003C0F007C0F00780F00F80F80F00FC3E00FFFE00F7F800F3
F000F00000F00000F00000F00000F00000F00000F00000F00000F00000F0000012207C9519>I<
F0E0F3E0F7E0FFE0FF00FC00F800F800F000F000F000F000F000F000F000F000F000F000F000F0
00F000F0000B167C9511>114 D<07F01FFE3FFF3C0F7803780078007C003F003FF01FF80FFC01
FE001F000F000F400FE00FF81EFFFE3FFC0FF010167F9513>I<0F000F000F000F000F000F00FF
F8FFF8FFF80F000F000F000F000F000F000F000F000F000F000F000F000F000F000F080F1C07FC
07F803E00E1C7F9B12>I<F00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00F
F00FF00FF00FF01FF83F7FFF7FEF1F8F10167C9519>I<F007803CF00FC03CF00FC03C780DC078
781DC078781DE078781CE0783C18E0F03C38E0F03C38F0F01C38F0E01E3871E01E3071E01E7079
E00E7079C00E7039C00F603BC007603B8007601B8007C01F8007C01F8003C01F001E167F9521>
119 D E /Fp 26 87 df<3078F8787005057C840D>46 D<00000300000700000600000E00000C
00001C0000180000380000300000700000600000E00000C00001C0000180000380000300000700
000600000E00000C00001C0000180000380000300000700000600000E00000C00001C000018000
0380000300000700000600000E00000C00001C0000180000380000300000700000600000E00000
C00000182D7FA117>I<000C001C00FC0FF80F3800380038003800380070007000700070007000
7000E000E000E000E000E000E001C001C001C001C001C001C003C07FFEFFFE0F1E7C9D17>49
D<007F0001FFC00383E00701E00700F00F00F00F01F00F01F00001E00001E00003C0000780000F
0000FE0000F800000E000007000007800003C00003C00003C03007C07807C0F807C0F807C0F00F
80C00F00601E00383C001FF80007E000141F7D9D17>51 D<0001C00003C00003C0000780000F80
001B80003B8000738000638000C7000187000307000707000E07000C0700180E00300E00600E00
E00E00FFFFF0FFFFF0001C00001C00001C00001C00001C00001C00003C0003FFC003FFC0141E7D
9D17>I<03007003FFF003FFE003FF8003FE000600000600000600000600000600000600000C7C
000DFF000F87800E03800C01C00C01C00001E00001E00001E00001E07003C0F003C0F003C0F003
80C00780E00700600E00383C001FF0000FC000141F7D9D17>I<000F80007FC000F0E001C0E003
81E00701E00E00C01E00001C00003C000038000079FC007BFE007E07007C0380F80380F803C0F0
03C0F003C0F003C0F003C0F00780E00780E00780E00700E00F00700E00701C003838001FF00007
C000131F7C9D17>I<003F0000FF8001C1E00380E00700700E00700E00700E00700E00E00F00E0
0F81C00FC38007F70003FC0001FC0003FF000F3F801C0F803807C03803C07001C07001C0E001C0
E001C0E001C0E003807003007007003C1C001FF80007E000141F7D9D17>56
D<0000180000003800000038000000780000007C000000FC000000FC000001BC000001BC000003
3C0000033E0000061E0000061E00000C1E00000C1E0000181E0000181F0000300F0000300F0000
600F00007FFF0000FFFF0000C00F00018007800180078003000780030007800600078006000780
1F0007C0FFC07FFCFFC07FFC1E207E9F22>65 D<0003F808000FFE18003F0738007801F801F000
F803C000F007C00070078000700F0000701F0000701E0000703E0000603C0000607C0000007C00
00007C0000007C000000F8000000F8000000F8000000F8000000F80000C0780000C0780001807C
0001803C0003003C0003001E0006001E000C000F80180007E0700001FFC000007F00001D217B9F
21>67 D<07FFFF0007FFFFE0003C01F0003C00F80078007C0078003C0078001E0078001E007800
1E0078001F00F0001F00F0001F00F0001F00F0001F00F0001F00F0001F01E0001E01E0003E01E0
003E01E0003E01E0003C01E0007C03C0007803C000F003C000F003C001E003C003C003C00F8007
C03F007FFFFC00FFFFE000201F7E9E23>I<07FFFFF807FFFFF8003C00F8003C00780078003800
78003800780038007800380078003800780C3000F0183000F0180000F0180000F0380000FFF800
00FFF80001E0700001E0300001E0300001E0301801E0303001E0003003C0003003C0006003C000
6003C000E003C001C003C003C007C00FC07FFFFF80FFFFFF801D1F7E9E1F>I<07FFFFF807FFFF
F8003C00F8003C0078007800380078003800780038007800380078003800780C3000F0183000F0
180000F0180000F0380000FFF80000FFF80001E0700001E0300001E0300001E0300001E0300001
E0000003C0000003C0000003C0000003C0000003C0000003C0000007C000007FFE0000FFFE0000
1D1F7E9E1E>I<0001FC04000FFF0C003F039C007800FC00F000FC03E0007803C0007807800038
0F0000381F0000381E0000383E0000303E0000307C0000007C0000007C0000007C000000F80000
00F8000000F8007FFCF8007FFCF80001E0780001E0780003C07C0003C03C0003C03C0003C01E00
03C00F0007C007800F8003E0398001FFF080003F80001E217B9F24>I<07FFC7FFC007FFC7FFC0
003C007800003C007800007800F000007800F000007800F000007800F000007800F000007800F0
0000F001E00000F001E00000F001E00000F001E00000FFFFE00000FFFFE00001E003C00001E003
C00001E003C00001E003C00001E003C00001E003C00003C007800003C007800003C007800003C0
07800003C007800003C007800007C00F80007FFCFFF800FFF8FFF800221F7E9E22>I<07FFE007
FFE0003C00003C0000780000780000780000780000780000780000F00000F00000F00000F00000
F00000F00001E00001E00001E00001E00001E00001E00003C00003C00003C00003C00003C00003
C00007C000FFFC00FFFC00131F7F9E10>I<07FFF00007FFF000003C0000003C00000078000000
7800000078000000780000007800000078000000F0000000F0000000F0000000F0000000F00000
00F0000001E0000001E0000001E0000001E0018001E0018001E0030003C0030003C0030003C007
0003C0060003C00E0003C01E0007C07E007FFFFC00FFFFFC00191F7E9E1C>76
D<07FC0000FFC007FC0001FFC0003E0001F800003E00037800006E0003F000006E0006F000006E
0006F000006E000CF0000067000CF00000670018F00000C70019E00000C70031E00000C70031E0
0000C70061E00000C38061E00000C380C1E000018380C3C00001838183C00001838183C0000181
C303C0000181C303C0000181C603C0000301C60780000301CC0780000301CC0780000300F80780
000300F80780000700F00780000F80F00F80007FF0E0FFF800FFF0E1FFF8002A1F7E9E2A>I<07
FC03FFC007FC03FFC0003E007C00003E003800006F003000006F003000006F0030000067803000
00678030000063C0300000C3C0600000C3C0600000C1E0600000C1E0600000C0F0600000C0F060
000180F0C000018078C000018078C00001803CC00001803CC00001803CC00003001F800003001F
800003000F800003000F800003000F800007000780000F800700007FF0030000FFF0030000221F
7E9E22>I<0003F800001FFE00003C1F0000F0078001E003C003C001E0078001E00F8000F00F00
00F01F0000F01E0000F83E0000F83C0000F87C0000F87C0000F87C0000F87C0000F8F80001F0F8
0001F0F80001F0F80001F0F80003E0780003E0780007C07C0007C07C000F803C000F003E001E00
1E003C000F00780007C1F00003FFC00000FE00001D217B9F23>I<07FFFF0007FFFFC0003C03E0
003C01F0007800F0007800F8007800F8007800F8007800F8007800F800F001F000F001F000F001
E000F003C000F00F8000FFFE0001FFF80001E0000001E0000001E0000001E0000001E0000003C0
000003C0000003C0000003C0000003C0000003C0000007C000007FFC0000FFFC00001D1F7E9E1F
>I<07FFFC0007FFFF00003C07C0003C03E0007801E0007801F0007801F0007801F0007801F000
7801E000F003E000F003C000F0078000F01F0000FFFC0000FFF00001E0380001E03C0001E01C00
01E01C0001E01E0001E01E0003C03E0003C03E0003C03E0003C03E0003C03E0603C03E0607C03E
0C7FFC1F18FFFC0FF8000003E01F207E9E21>82 D<003F04007FCC01E0FC03807C03003C070038
0600180E00180E00180E00180E00000F00000F00000FE00007FE0003FF8001FFC0007FE00007E0
0001E00000E00000F00000F06000E06000E06000E06000E07001C0700180F80380FE0F00C7FC00
81F80016217D9F19>I<1FFFFFF81FFFFFF81E03C0F83803C03838078038300780387007801860
0780186007803860078030C00F0030000F0000000F0000000F0000000F0000000F0000001E0000
001E0000001E0000001E0000001E0000001E0000003C0000003C0000003C0000003C0000003C00
00003C0000007C00001FFFF0003FFFF0001D1F7B9E21>I<FFFC7FF8FFFC7FF807800F80078007
000F0006000F0006000F0006000F0006000F0006000F0006001E000C001E000C001E000C001E00
0C001E000C001E000C003C0018003C0018003C0018003C0018003C0018003C0018003800300038
00300038003000380060003C00C0001C00C0001E0180000F07000007FC000001F800001D20799E
22>I<FFF007FEFFF007FE0F0001F00F0000C00F0000C00F000180078001800780030007800700
0780060007800E0007C00C0003C01C0003C0180003C0300003C0300003C0600001E0600001E0C0
0001E0C00001E1800001E1800000F3000000F3000000F6000000F6000000FC000000FC00000078
00000078000000700000007000001F207A9E22>I E /Fq 15 116 df<60F0F0703030306060C0
40040B7D830B>44 D<03000700FF00FF0007000700070007000700070007000700070007000700
07000700070007000700070007000700FFF0FFF00C197D9813>49 D<0F801FE038F07070787878
38787830780070007000E00FC00F8000E000700038003C003C703CF83CF83CF038607870F03FE0
0F800E1A7E9813>51 D<0070007000F000F001F003F00370067006700C701C7018703070307060
70E070FFFFFFFF0070007000700070007007FF07FF10197F9813>I<07801FE0387030306038E0
18E018E01CE01CE01CE01CE01C603C703C307C3FDC1F9C00180018003830307870786071C03F80
1F000E1A7E9813>57 D<0FFF0FFF00780078007800780078007800780078007800780078007800
7800780078007800787078F878F878F878F0F070E03FC00F80101B7F9914>74
D<FFC03FC0FFC03FC01E000E000F000C000F000C000F000C00078018000780180007C0380003C0
300003C0300003E0700001E0600001E0600000F0C00000F0C00000F0C000007980000079800000
798000003F0000003F0000003F0000001E0000001E0000001E0000000C00001A1B7F991D>86
D<3F80FFC0F0E0F070607000700FF03FF07870E070E070E073E07370F37FFE3E3C10107E8F13>
97 D<07C01FF038387018701CFFFCFFFCE000E000E000E0007000300C3C180FF007E00E107F8F
11>101 D<00F801FC03BC073C0E180E000E000E000E000E00FFC0FFC00E000E000E000E000E00
0E000E000E000E000E000E000E007FE07FE00E1A80990C>I<18003C003C001800000000000000
000000000000FC00FC001C001C001C001C001C001C001C001C001C001C001C001C00FF80FF8009
1A80990A>105 D<FCF800FFFC001F1E001E0E001C0E001C0E001C0E001C0E001C0E001C0E001C
0E001C0E001C0E001C0E00FF9FC0FF9FC012107F8F15>110 D<07E01FF8381C700E6006E007E0
07E007E007E007E007700E700E3C3C1FF807E010107F8F13>I<FDE0FFF01F701E201C001C001C
001C001C001C001C001C001C001C00FFC0FFC00C107F8F0F>114 D<1F207FE070E0E060E060F0
007F003FC01FE001F0C070C070E070F0E0FFC08F800C107F8F0F>I E /Fr
10 58 df<1F003F8060C04040C060C060C060C060C060C060C060C06060C060C03F801F000B10
7F8F0F>48 D<18007800F80098001800180018001800180018001800180018001800FF80FF8009
107E8F0F>I<3F007F80F1C0F0E06060006000E000C00180030006001C0038606060FFC0FFC00B
107F8F0F>I<1F003F8071C071C031C001800F800F0001C000E060E0F0E0F0E0F1C07F801F000B
107F8F0F>I<070007000F001F001B003B0033006300E300FFE0FFE00300030003001FE01FE00B
107F8F0F>I<60807F807F007C00600060006F007F8070C060E000E060E0E0E0E1C07F803F000B
107F8F0F>I<07801FC039C061C06000C000DF80FFC0E060C060C060C060606060C03F801F000B
107F8F0F>I<60007FE07FE0C0C0C1800180030006000E000C000C001C001C001C001C001C0008
000B117E900F>I<1F003F8061C060C060C079C03F801F803FC063E0C0E0C060C06060C03F801F
000B107F8F0F>I<1F003F8060C0C0C0C060C060C060C0E07FE03F60006000C070C071807F003E
000B107F8F0F>I E /Fs 49 122 df<1C3E7E7E3E060C0C18183060C080070E769F0E>39
D<7FF0FFE0FFE00C037D8A10>45 D<70F8F8F0E005057B840E>I<0000006000000060000000E0
000000C0000001C00000038000000300000007000000060000000E0000001C0000001800000038
000000300000007000000060000000E0000001C000000180000003800000030000000700000006
0000000E0000001C0000001800000038000000300000007000000060000000E0000001C0000001
800000038000000300000007000000060000000E0000001C000000180000003800000030000000
70000000E0000000C00000001B2D80A117>I<000F80003FE000F0F001C0700380700380380700
780F00780F00780E00781E00781E00703C00F03C00F03C00F03C00F07801E07801E07801E07801
C07003C0F003C0F00380F00780F00700700F00700E00701C003878001FF0000FC000151F7C9D17
>I<000200060006000E003C00FC07DC071C0038003800380038007000700070007000E000E000
E000E001C001C001C001C00380038003800380FFF8FFF80F1E7B9D17>I<000F80003FC00070E0
00C0700180780330380638380618780C30780C30780C60780CE0780FC0F00701E00001C0000380
000700001E0000380000E00001C0000700000E00300C00301800603000E07F81C07FFFC061FF80
C07F00C03C00151F7D9D17>I<001F80007FE000E0E00180700300380660380670380630380660
7007C0700380600000E00001C000078000FE0000FE000007000007000007800007800007803007
80780780780780F00F00C00F00601E00603C007078003FE0001F8000151F7C9D17>I<001F0000
7F8000E1C001C1C00380E00700E00F00E00F01E01E01E01E01E01E01E01E01C01C03C03C03C03C
07C01C07C01C0F801C1F800F778007E700000F00000E00001E00001C00603C00F03800F07000E0
E000C1C0007F80003E0000131F7B9D17>57 D<070F1F1F0E0000000000000000000070F8F8F0E0
08147B930E>I<000007000000070000000F0000000F0000001F0000003F0000003F0000006F00
00006F000000CF000000CF0000018F0000038F0000030F0000060F0000060F00000C0F80000C07
800018078000180780003FFF80007FFF800060078000C0078000C0078001800780018007800300
0780070007800F0007807FC07FF8FFC07FF81D207E9F22>65 D<0000FC020007FF06001F818C00
3C00DC0070007C01E0007C03C0003803800038070000380F0000381E0000301E0000303C000030
3C00000078000000780000007800000078000000F0000000F0000000F0000000F00000C0F00001
807000018070000300780003007800060038000C001C0018000E0030000780E00003FF800000FE
00001F217A9F21>67 D<01FFFFFE01FFFFFC001E003C001E001C001E001C003C000C003C000C00
3C000C003C001800780C1800780C1800780C0000781C0000F0380000FFF80000FFF80000F03800
01E0300001E0300001E0303001E0306003C0006003C0006003C000C003C001C007800180078003
800780070007801F00FFFFFF00FFFFFE001F1F7D9E1F>69 D<01FFFFFC01FFFFF8001E0078001E
0038001E0038003C0018003C0018003C0018003C003000780C3000780C3000780C0000781C0000
F0380000FFF80000FFF80000F0380001E0300001E0300001E0300001E0300003C0000003C00000
03C0000003C0000007800000078000000780000007800000FFFC0000FFF800001E1F7D9E1E>I<
0001FC040007FE0C001F0398003C01B800F000F801E000F803C0007007800070070000700F0000
701E0000601E0000603C0000603C00000078000000780000007800000078000000F0000000F000
FFF0F000FFF0F0000780F0000F00F0000F0070000F0078000F0078001E0038001E003C003E001E
007E000F81EC0003FF840000FE00001E217A9F23>I<01FFF3FFE001FFF3FFE0001E003C00001E
003C00001E003C00003C007800003C007800003C007800003C007800007800F000007800F00000
7800F000007800F00000F001E00000FFFFE00000FFFFE00000F001E00001E003C00001E003C000
01E003C00001E003C00003C007800003C007800003C007800003C007800007800F000007800F00
0007800F000007800F0000FFF9FFF000FFF1FFE000231F7D9E22>I<01FFF001FFF0001E00001E
00001E00003C00003C00003C00003C0000780000780000780000780000F00000F00000F00000F0
0001E00001E00001E00001E00003C00003C00003C00003C000078000078000078000078000FFF8
00FFF800141F7D9E12>I<01FF00FFE001FF00FFE0001F001E00001F800C00001F800C00003780
18000033C018000033C018000033C018000063C030000061E030000061E030000061E0300000C0
F0600000C0F0600000C0F0600000C0786000018078C000018078C00001803CC00001803CC00003
003D800003001F800003001F800003001F800006000F000006000F000006000F00000E000F0000
FFE0060000FFC0060000231F7D9E22>78 D<0001FC000007FF00001F07C0003801E000F000E001
E0007003C0007007800078070000380F0000381E0000381E0000383C0000383C00003878000078
780000787800007878000078F00000F0F00000F0F00000E0F00001E0F00001C0F00003C0700007
807800070078000F0038001E003C003C001E00F0000F83E00007FF800001FC00001D217A9F23>
I<01FFFF8001FFFFE0001E00F0001E0078001E0038003C003C003C003C003C003C003C003C0078
00780078007800780070007800E000F001E000F0078000FFFF0000FFF80001E0000001E0000001
E0000001E0000003C0000003C0000003C0000003C0000007800000078000000780000007800000
FFF80000FFF000001E1F7D9E1F>I<01FFFF0001FFFFC0001E01E0001E00F0001E0078003C0078
003C0078003C0078003C0078007800F0007800F0007801E0007803C000F00F0000FFFE0000FFF8
0000F03C0001E01E0001E00E0001E00F0001E00F0003C01E0003C01E0003C01E0003C01E000780
3C0007803C1807803C1807803C30FFF81E30FFF00FE0000007C01D207D9E21>82
D<0007E040001FF8C0003C1D8000700F8000E0078001C007800180030003800300038003000380
0300038000000380000003C0000003F8000001FF800001FFE000007FF000001FF0000001F80000
00780000003800000038000000380030003800300038003000300070007000700060007800E000
7801C000EE078000C7FE000081F800001A217D9F1A>I<0FFFFFF01FFFFFE01E0781E0180780E0
38078060300F0060300F0060600F0060600F00C0C01E00C0C01E00C0001E0000001E0000003C00
00003C0000003C0000003C00000078000000780000007800000078000000F0000000F0000000F0
000000F0000001E0000001E0000001E0000003E00000FFFF0000FFFF00001C1F789E21>I<7FFC
3FF87FFC3FF80780078007800300078003000F0006000F0006000F0006000F0006001E000C001E
000C001E000C001E000C003C0018003C0018003C0018003C001800780030007800300078003000
78003000F0006000F0006000F0006000F000C000F00080007001800070030000380600003C1C00
001FF8000007E000001D20779E22>I<FFF00FFCFFF00FFC0F0003C00F0001800F0003000F0003
000F0006000F000E000F000C000F0018000F8018000780300007803000078060000780E0000780
C0000781800007818000078300000787000007860000078C0000078C000007D8000003D8000003
F0000003F0000003E0000003C0000003C0000003800000038000001E20779E22>I<FFF0FFE1FF
80FFE0FFE1FF801F001E003C001E001E0030001E003E0030001E007E0060001E007E0060001E00
FE00C0001E00DE00C0001F01DE0180001F019E0180000F031E0300000F031E0300000F061E0600
000F061E0600000F0C1E0C00000F0C1E0C00000F181E1800000F181E1800000F301E3000000F30
1E3000000F601E6000000F601EE000000FC01EC000000FC01FC000000F801F8000000F800F8000
000F000F0000000F000E0000000E000E0000000E000C0000000C000C0000002920779E2D>I<00
F18003FDC0078F800E07801C07803C07803C0700780700780700780700F00E00F00E00F00E00F0
0E30F01C60F03C60707C6078FCC03FCFC00F078014147C9317>97 D<07803F803F000700070007
000E000E000E000E001C001C001CF01FFC3F1E3E0E3C0F380F700F700F700F700FE01EE01EE01E
E03CE03CE038607071E03FC01F0010207B9F15>I<007E0001FF000383800F07801E07801C0700
3C0200780000780000780000F00000F00000F00000F00000F00000700200700700381E001FF800
07E00011147C9315>I<0000780003F80003F00000700000700000700000E00000E00000E00000
E00001C00001C000F1C003FDC0078F800E07801C07803C07803C0700780700780700780700F00E
00F00E00F00E00F00E30F01C60F03C60707C6078FCC03FCFC00F078015207C9F17>I<007C0001
FF000783000F01801E01803C01803C0300780E007FFC007FE000F00000F00000F00000F0000070
00007002007807003C1E001FF80007E00011147C9315>I<0000F80001FC0003BC00033C000718
000700000700000E00000E00000E00000E00000E0001FFE001FFE0001C00001C00001C00003800
00380000380000380000380000700000700000700000700000700000700000E00000E00000E000
00E00001C00001C00001C0000180003380007B8000F300007E00003C00001629829F0E>I<003C
6000FF7001E3E00381E00701E00F01E00F01C01E01C01E01C01E01C03C03803C03803C03803C03
803C07003C0F001C1F001E3F000FFE0003CE00000E00000E00001C00001C00301C00783800F0F0
007FE0003F8000141D7E9315>I<01E0000FE0000FC00001C00001C00001C00003800003800003
8000038000070000070000073E00077F000EC3800F81C00F01C00E01C01E03801C03801C03801C
0380380700380700380700380E18700E30700E30701C60700C60E00FC060078015207D9F17>I<
006000F000F000E000000000000000000000000000000F001F80318031C063806380C380070007
0007000E000E000E001C301C601C6038C018C01F800F000C1F7D9E0E>I<01E0000FE0000FC000
01C00001C00001C0000380000380000380000380000700000700000703C00707E00E0C600E10E0
0E21E00E61E01CC1C01F80001F00001FC00039E0003870003870003838607070C07070C07070C0
703180E03F00601E0013207D9F15>107 D<03C01FC01F8003800380038007000700070007000E
000E000E000E001C001C001C001C0038003800380038007000700070007180E300E300E300E600
7E003C000A207C9F0C>I<1E07C0F8003F1FE1FC0033B8730E0063E076070063C03C0700638038
0700C780780E000700700E000700700E000700700E000E00E01C000E00E01C000E00E01C000E00
E038601C01C038C01C01C038C01C01C071801C01C031803803803F001801801E0023147D9325>
I<1E07C03F1FE033B87063E07063C038638038C780700700700700700700700E00E00E00E00E00
E00E01C31C01C61C01C61C038C1C018C3801F81800F018147D931A>I<007C0001FF000383800F
01C01E01C01C01E03C01E07801E07801E07801E0F003C0F003C0F003C0F00780F00700700F0070
1E003838001FF00007C00013147C9317>I<03C1E007E7F8067E3C0C7C1C0C781E0C701E18E01E
00E01E00E01E00E01E01C03C01C03C01C03C01C07803C07803C07003C0E003E3C0077F80071E00
0700000700000E00000E00000E00000E00001C0000FFC000FFC000171D809317>I<1E0F003F3F
8033F1C063C1C063C3C06383C0C783800700000700000700000E00000E00000E00000E00001C00
001C00001C00001C000038000018000012147D9313>114 D<00FC03FE07070E0F0E0F0E0E1E00
0F800FF007F803FC003E001E701EF01CF01CE03860703FE01F8010147D9313>I<018001C00380
03800380038007000700FFF0FFF00E000E000E000E001C001C001C001C00380038003800383070
60706070C071803F001E000C1C7C9B0F>I<0F00601F80703180E031C0E06380E06380E0C381C0
0701C00701C00701C00E03800E03800E03800E038C0E07180E07180E0F180E1F3007F3F003E1E0
16147D9318>I<0F01C01F83C03183E031C1E06380E06380E0C380C00700C00700C00700C00E01
800E01800E01800E03000E03000E06000E06000F0C0007F80001E00013147D9315>I<0F0060E0
1F8071E03180E1F031C0E0F06380E0706380E070C381C0600701C0600701C0600701C0600E0380
C00E0380C00E0380C00E0381800E0381800E0781000E078300070F860007F9FC0001F0F8001C14
7D931E>I<0787800FCFC018F8E03070E06071E06071E0C0E1C000E00000E00000E00001C00001
C00001C00071C060F380C0F380C0E38180C7C3007CFE00387C0013147D9315>I<0F00601F8070
3180E031C0E06380E06380E0C381C00701C00701C00701C00E03800E03800E03800E03800E0700
0E07000E0F000E1F0007FE0003EE00000E00000E00001C00781C0078380070700060E0003FC000
1F0000141D7D9316>I E /Ft 81 124 df<000FC3E0007FEFF000E07C7801C0F8780380F83007
007000070070000700700007007000070070000700700007007000FFFFFF80FFFFFF8007007000
070070000700700007007000070070000700700007007000070070000700700007007000070070
0007007000070070000700700007007000070070007FE3FF007FE3FF001D20809F1B>11
D<001F80007FC001E0E00381E00381E00701E0070000070000070000070000070000070000FFFF
E0FFFFE00700E00700E00700E00700E00700E00700E00700E00700E00700E00700E00700E00700
E00700E00700E00700E00700E07FC3FE7FC3FE1720809F19>I<001FE0007FE001E1E00381E003
80E00700E00700E00700E00700E00700E00700E00700E0FFFFE0FFFFE00700E00700E00700E007
00E00700E00700E00700E00700E00700E00700E00700E00700E00700E00700E00700E00700E07F
E7FE7FE7FE1720809F19>I<000F80F800007FE7FE0000E06E060001C0FC0F000380F80F000700
F00F00070070000007007000000700700000070070000007007000000700700000FFFFFFFF00FF
FFFFFF000700700700070070070007007007000700700700070070070007007007000700700700
070070070007007007000700700700070070070007007007000700700700070070070007007007
0007007007007FE3FE3FF07FE3FE3FF02420809F26>I<7038F87CFC7EFC7E7C3E0C060C060C06
180C180C381C3018603040200F0E7E9F17>34 D<70F8FCFC7C0C0C0C181838306040060E7C9F0D
>39 D<006000C001800300070006000C001C00180038003800300070007000700060006000E000
E000E000E000E000E000E000E000E000E000E000E0006000600070007000700030003800380018
001C000C00060007000300018000C000600B2E7DA112>I<C0006000300018001C000C00060007
00030003800380018001C001C001C000C000C000E000E000E000E000E000E000E000E000E000E0
00E000E000C000C001C001C001C00180038003800300070006000C001C00180030006000C0000B
2E7DA112>I<000600000006000000060000000600000006000000060000000600000006000000
060000000600000006000000060000000600000006000000060000FFFFFFF0FFFFFFF000060000
000600000006000000060000000600000006000000060000000600000006000000060000000600
00000600000006000000060000000600001C207D9A23>43 D<70F8FCFC7C0C0C0C181838306040
060E7C840D>I<FFC0FFC0FFC00A037F8A0F>I<70F8F8F87005057C840D>I<0003000300070006
0006000E000C000C001C0018001800380030003000700060006000E000C000C001C00180018001
800380030003000700060006000E000C000C001C0018001800380030003000700060006000E000
C000C000102D7DA117>I<03F0000FFC001E1E001C0E00380700780780700380700380700380F0
03C0F003C0F003C0F003C0F003C0F003C0F003C0F003C0F003C0F003C0F003C0F003C0F003C070
03807003807003807807803807001C0E001E1E000FFC0003F000121F7E9D17>I<018003801F80
FF80E3800380038003800380038003800380038003800380038003800380038003800380038003
8003800380038003800380FFFEFFFE0F1E7C9D17>I<03F0000FFC00183E00300F00600F80C007
80F007C0F807C0F803C0F803C02003C00007C0000780000780000F00000E00001C000038000070
0000E00001C0000380000300000600C00C00C01800C03001807FFF80FFFF80FFFF80121E7E9D17
>I<03F0000FFC001C1E00300F00780F80780F80780780380F80000F80000F00000F00001E0000
3C0003F80003F000001C00000E00000F000007800007800007C02007C0F807C0F807C0F807C0F0
0780600F80700F003C1E001FFC0003F000121F7E9D17>I<000E00000E00001E00003E00003E00
006E0000EE0000CE00018E00038E00030E00060E000E0E000C0E00180E00380E00300E00600E00
E00E00FFFFF0FFFFF0000E00000E00000E00000E00000E00000E00000E0000FFE000FFE0141E7F
9D17>I<3803003FFF003FFE003FF8003FE00030000030000030000030000030000030000031F0
0037FC003E0E003C07003807803003800003800003C00003C00003C06003C0F003C0F003C0F003
80C00780600700700E003C1E000FF80007E000121F7E9D17>I<007C0001FE000783000E03800C
07801C0780380300380000780000700000700000F3F800F7FE00FC0E00F80700F80380F80380F0
03C0F003C0F003C0F003C0F003C07003C07003C07003803803803807001C07000E1E0007FC0001
F000121F7E9D17>I<6000007FFFC07FFFC07FFF80600180C00300C00600C00600000C00001800
00180000300000600000600000E00000C00001C00001C00001C000038000038000038000038000
078000078000078000078000078000078000078000030000121F7D9D17>I<03F0000FFC001E1E
003807003007007003807003807003807003807807003E07003F0E001FDC000FF80003F80007FC
001E7E00383F00700F80700780E003C0E001C0E001C0E001C0E001C0F001807003803807001E0E
000FFC0003F000121F7E9D17>I<03F00007F8001E1C00380E00380700700700700380F00380F0
0380F003C0F003C0F003C0F003C0F003C07007C07007C0380FC01C0FC01FFBC007F3C000038000
0380000780000700300700780E00780E00701C003078001FF0000FC000121F7E9D17>I<70F8F8
F8700000000000000000000070F8F8F87005147C930D>I<70F8F8F87000000000000000000000
70F8F8F878181818183030606040051D7C930D>I<7FFFFFE0FFFFFFF000000000000000000000
00000000000000000000000000000000000000000000FFFFFFF07FFFFFE01C0C7D9023>61
D<0003800000038000000380000007C0000007C0000007C000000DE000000DE000000DE0000018
F0000018F0000018F00000307800003078000030780000603C0000603C0000603C0000E01E0000
C01E0000FFFE0001FFFF0001800F0001800F0003800F800300078003000780070007C0070003C0
0F8003C0FFE03FFEFFE03FFE1F207F9F22>65 D<FFFFE000FFFFF80007803E0007801F0007800F
0007800F8007800F8007800F8007800F8007800F8007800F0007801F0007803E0007807C0007FF
F80007FFFC0007801E0007800F0007800F8007800780078007C0078007C0078007C0078007C007
8007C00780078007800F8007801F0007803E00FFFFFC00FFFFF0001A1F7E9E20>I<001FC04000
7FF0C001F839C003C00DC0078007C00F0003C01E0003C03E0001C03C0001C07C0001C07C0000C0
780000C0F80000C0F8000000F8000000F8000000F8000000F8000000F8000000F8000000F80000
00780000C07C0000C07C0000C03C0000C03E0001801E0001800F0003000780030003C00E0001F8
1C00007FF000001FC0001A217D9F21>I<FFFFE000FFFFFC0007803E0007800F00078007800780
03C0078003E0078001E0078001F0078000F0078000F0078000F8078000F8078000F8078000F807
8000F8078000F8078000F8078000F8078000F8078000F0078000F0078001F0078001E0078001E0
078003C00780078007800F0007803E00FFFFFC00FFFFE0001D1F7E9E23>I<FFFFFF00FFFFFF00
07801F000780070007800300078003000780038007800180078001800780C1800780C1800780C0
000780C0000781C00007FFC00007FFC0000781C0000780C0000780C0000780C0600780C0600780
0060078000C0078000C0078000C0078001C0078001C0078003C007800F80FFFFFF80FFFFFF801B
1F7E9E1F>I<FFFFFF00FFFFFF0007801F00078007000780030007800300078003800780018007
8001800780C1800780C1800780C0000780C0000781C00007FFC00007FFC0000781C0000780C000
0780C0000780C0000780C000078000000780000007800000078000000780000007800000078000
0007800000FFFE0000FFFE0000191F7E9E1E>I<000FC020007FF86001F81CE003E006E0078003
E00F0001E01E0001E01E0000E03C0000E07C0000E07C00006078000060F8000060F8000000F800
0000F8000000F8000000F8000000F8000000F8007FFCF8007FFC780001E07C0001E07C0001E03C
0001E01E0001E01E0001E00F0001E0078003E003E003E001F80E60007FFC20000FE0001E217D9F
24>I<FFF8FFF8FFF8FFF807800F0007800F0007800F0007800F0007800F0007800F0007800F00
07800F0007800F0007800F0007800F0007800F0007FFFF0007FFFF0007800F0007800F0007800F
0007800F0007800F0007800F0007800F0007800F0007800F0007800F0007800F0007800F000780
0F00FFF8FFF8FFF8FFF81D1F7E9E22>I<FFFCFFFC078007800780078007800780078007800780
078007800780078007800780078007800780078007800780078007800780078007800780FFFCFF
FC0E1F7F9E10>I<0FFFC00FFFC0003C00003C00003C00003C00003C00003C00003C00003C0000
3C00003C00003C00003C00003C00003C00003C00003C00003C00003C00003C00003C00003C0020
3C00F83C00F83C00F83C00F0780060780070F0003FE0000F800012207E9E17>I<FFFC1FFCFFFC
1FFC078007C0078007000780060007800C000780180007803000078070000780E0000781C00007
8380000787000007878000078F8000079BC00007B1E00007E1E00007C0F0000780F00007807800
07803C0007803C0007801E0007801E0007800F000780078007800780078007C0FFFC3FFCFFFC3F
FC1E1F7E9E23>I<FFFE00FFFE0007800007800007800007800007800007800007800007800007
800007800007800007800007800007800007800007800007800007800607800607800607800607
800E07800E07800C07801C07803C0780FCFFFFFCFFFFFC171F7E9E1C>I<FF80001FF8FFC0003F
F807C0003F0007C0003F0006E0006F0006E0006F0006E0006F00067000CF00067000CF00067000
CF000638018F000638018F000638018F00061C030F00061C030F00061C030F00060E060F00060E
060F00060E060F0006070C0F0006070C0F0006070C0F000603980F000603980F000603980F0006
01F00F000601F00F000601F00F000F00E00F00FFF0E1FFF8FFF0E1FFF8251F7E9E2A>I<FF807F
F8FFC07FF807C0078007E0030007E0030006F0030006F0030006780300063C0300063C0300061E
0300061E0300060F0300060F0300060783000607C3000603C3000601E3000601E3000600F30006
00F30006007B0006007B0006003F0006001F0006001F0006000F0006000F000F000700FFF00700
FFF003001D1F7E9E22>I<001F800000FFF00001E0780007C03E000F801F000F000F001E000780
3C0003C03C0003C07C0003E07C0003E0780001E0F80001F0F80001F0F80001F0F80001F0F80001
F0F80001F0F80001F0F80001F0F80001F0780001E07C0003E07C0003E03C0003C03E0007C01E00
07800F000F000F801F0007C03E0001F0F80000FFF000001F80001C217D9F23>I<FFFFE000FFFF
F80007807C0007801E0007801F0007800F0007800F8007800F8007800F8007800F8007800F8007
800F0007801F0007801E0007807C0007FFF80007FFE00007800000078000000780000007800000
0780000007800000078000000780000007800000078000000780000007800000FFFC0000FFFC00
00191F7E9E1F>I<001F800000FFF00001E0780007C03E000F801F000F000F001E0007803E0007
C03C0003C07C0003E07C0003E0780001E0F80001F0F80001F0F80001F0F80001F0F80001F0F800
01F0F80001F0F80001F0F80001F0780001E07C0003E07C0003E03C0003C03E0F07C01E1F87800F
38CF000FB0DF0007F0FE0001F0780000FFF010001FF01000007010000078300000387000003FF0
00003FE000001FE000000FC0000007801C297D9F23>I<FFFF8000FFFFF0000780F80007803C00
07803E0007801E0007801F0007801F0007801F0007801F0007801E0007803E0007803C000780F8
0007FFF00007FF80000781C0000780E00007807000078070000780780007807800078078000780
7C0007807C0007807C0007807C0C07807E0C07803E0CFFFC1F18FFFC0FF0000003E01E207E9E21
>I<07E0800FF9801C1F80300F80700780600380E00380E00180E00180E00180F00000F0000078
00007F00003FF0001FFC000FFE0003FF00001F800007800003C00003C00001C0C001C0C001C0C0
01C0C001C0E00180F00380F80700FE0E00CFFC0081F80012217D9F19>I<7FFFFFE07FFFFFE078
0F01E0700F00E0600F0060600F0060E00F0070C00F0030C00F0030C00F0030C00F0030000F0000
000F0000000F0000000F0000000F0000000F0000000F0000000F0000000F0000000F0000000F00
00000F0000000F0000000F0000000F0000000F0000000F0000000F000007FFFE0007FFFE001C1F
7E9E21>I<FFFC7FF8FFFC7FF80780078007800300078003000780030007800300078003000780
030007800300078003000780030007800300078003000780030007800300078003000780030007
80030007800300078003000780030007800300078003000380020003C0060003C0060001C00C00
00E0180000783000003FE000000FC0001D207E9E22>I<FFF007FEFFF007FE0F8001F00F0000E0
078000C0078000C007C001C003C0018003C0018003E0038001E0030001E0030000F0060000F006
0000F0060000780C0000780C0000780C00003C1800003C1800003C1800001E3000001E3000001F
7000000F6000000F6000000FE0000007C0000007C0000003800000038000000380001F207F9E22
>I<FFF07FF83FF0FFF07FF83FF00F0007800F800F00078003000F000780030007800FC0060007
800FC0060007800FC00600078019E00E0003C019E00C0003C019E00C0003C039E00C0001E030F0
180001E030F0180001E030F0180000F06078300000F06078300000F06078300000F0E07C300000
78C03C60000078C03C60000078C03C6000003D801EC000003D801EC000003D801EC000003F000F
C000001F000F8000001F000F8000001F000F8000000E00070000000E00070000000E000700002C
207F9E2F>I<FFF007FFFFF007FF0F8001F0078000C007C001C003E0018001E0038001F0030000
F0070000F80600007C0C00003C0C00003E1800001E3800001F3000000FF0000007E0000007C000
0003C0000003C0000003C0000003C0000003C0000003C0000003C0000003C0000003C0000003C0
000003C000007FFE00007FFE00201F7F9E22>89 D<7FFFF87FFFF87E00F07801F07001E06003E0
E003C0E00780C00780C00F00C01F00001E00003C00003C0000780000F80000F00001E00001E00C
03C00C07C00C07800C0F001C0F001C1E00183E00183C00387C00787801F8FFFFF8FFFFF8161F7D
9E1C>I<FEFEC0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0
C0C0C0C0C0C0C0C0FEFE072D7CA10D>I<0804180C3018703860306030C060C060C060F87CFC7E
FC7E7C3E381C0F0E7B9F17>I<FEFE060606060606060606060606060606060606060606060606
0606060606060606060606060606060606FEFE072D7FA10D>I<1FE0003FF000783800781C0030
0E00000E00000E00000E0003FE001FFE003E0E00780E00F80E00F00E30F00E30F00E30F01E3078
3F703FEFE00F878014147E9317>97 D<0E0000FE0000FE00000E00000E00000E00000E00000E00
000E00000E00000E00000E00000E3F000EFF800FC3C00F00E00E00F00E00700E00780E00780E00
780E00780E00780E00780E00780E00700E00F00F00F00F01E00FC3C00CFF800C3E0015207F9F19
>I<03F80FFC1E1E3C1E380C78007000F000F000F000F000F000F0007000780038033C031F0E0F
FC03F010147E9314>I<000380003F80003F800003800003800003800003800003800003800003
8000038000038003E3800FFB801E0F803C0780780380780380700380F00380F00380F00380F003
80F00380F003807003807003807807803807801E1F800FFBF803E3F815207E9F19>I<03F0000F
FC001E1E003C0F00380700780700700380F00380FFFF80FFFF80F00000F00000F0000070000078
00003801801C03800F070007FE0001F80011147F9314>I<003C00FE01CF038F03060700070007
000700070007000700FFF0FFF00700070007000700070007000700070007000700070007000700
0700070007007FF07FF01020809F0E>I<0001E003E3F00FFF701C1C703C1E00380E00780F0078
0F00780F00780F00380E003C1E001C1C003FF80033E0003000003000003800003FFE001FFF803F
FFC07003E07000F0E00070E00070E00070F000F07801E03E07C00FFF0003FC00141F7F9417>I<
0E0000FE0000FE00000E00000E00000E00000E00000E00000E00000E00000E00000E00000E3E00
0EFF000FC3800F01C00F01C00E01C00E01C00E01C00E01C00E01C00E01C00E01C00E01C00E01C0
0E01C00E01C00E01C00E01C0FFE7FCFFE7FC16207F9F19>I<1C001E003E001E001C0000000000
00000000000000000E007E007E000E000E000E000E000E000E000E000E000E000E000E000E000E
000E000E00FFC0FFC00A1F809E0C>I<00E001F001F001F000E000000000000000000000000000
7007F007F000F00070007000700070007000700070007000700070007000700070007000700070
00700070007000706070F0E0F1C07F803E000C28829E0E>I<0E0000FE0000FE00000E00000E00
000E00000E00000E00000E00000E00000E00000E00000E1FF00E1FF00E0F800E0E000E0C000E18
000E30000E70000EF0000FF8000F38000E1C000E1E000E0E000E07000E07800E03800E03C0FFCF
F8FFCFF815207F9F18>I<0E00FE00FE000E000E000E000E000E000E000E000E000E000E000E00
0E000E000E000E000E000E000E000E000E000E000E000E000E000E000E000E00FFE0FFE00B2080
9F0C>I<0E3F03F000FEFF8FF800FFC1DC1C000F80F80E000F00F00E000E00E00E000E00E00E00
0E00E00E000E00E00E000E00E00E000E00E00E000E00E00E000E00E00E000E00E00E000E00E00E
000E00E00E000E00E00E000E00E00E00FFE7FE7FE0FFE7FE7FE023147F9326>I<0E3E00FEFF00
FFC3800F01C00F01C00E01C00E01C00E01C00E01C00E01C00E01C00E01C00E01C00E01C00E01C0
0E01C00E01C00E01C0FFE7FCFFE7FC16147F9319>I<01F80007FE001E07803C03C03801C07000
E07000E0F000F0F000F0F000F0F000F0F000F0F000F07000E07801E03801C03C03C01E078007FE
0001F80014147F9317>I<0E3F00FEFF80FFC3C00F01E00E00F00E00F00E00780E00780E00780E
00780E00780E00780E00780E00700E00F00F00F00F01E00FC3C00EFF800E3E000E00000E00000E
00000E00000E00000E00000E0000FFE000FFE000151D7F9319>I<03E1800FF9801E1F803C0780
780780780380700380F00380F00380F00380F00380F00380F003807003807803807807803C0F80
1E1F800FF38003E380000380000380000380000380000380000380000380003FF8003FF8151D7E
9318>I<0E78FEFCFF9E0F1E0F0C0F000E000E000E000E000E000E000E000E000E000E000E000E
00FFE0FFE00F147F9312>I<1F903FF07070E030E030E030F00078007F803FE00FF000F0C078C0
38C038E038E038F070DFE08F800D147E9312>I<06000600060006000E000E001E003E00FFF8FF
F80E000E000E000E000E000E000E000E000E000E000E180E180E180E180E18073007E003C00D1C
7F9B12>I<0E01C0FE1FC0FE1FC00E01C00E01C00E01C00E01C00E01C00E01C00E01C00E01C00E
01C00E01C00E01C00E01C00E03C00E03C0070FC007FDFC01F1FC16147F9319>I<FF87F8FF87F8
1E01E00E01C00E01800E0180070300070300070300038600038600038E0001CC0001CC0001FC00
00F80000F80000700000700000700015147F9318>I<FF9FF3FCFF9FF3FC1C0780F01C0780601C
07C0E00E0FC0C00E0CC0C00E0CE0C0070CE18007186180071871800398730003B0330003B03300
03B03F0001F03E0001E01E0001E01E0000E01C0000C00C001E147F9321>I<7FC7FC7FC7FC0703
E007038003830001C70000EE0000EC00007800003800003C00007C0000EE0001C7000187000303
800701C00F01E0FF87FEFF87FE1714809318>I<FF87F8FF87F81E01E00E01C00E01800E018007
0300070300070300038600038600038E0001CC0001CC0001FC0000F80000F80000700000700000
700000600000600000600000C000F0C000F18000F380007F00003C0000151D7F9318>I<3FFF3F
FF380E301C703C6038607060F001E001C0038007830F030E031C073C063806701EFFFEFFFE1014
7F9314>I<FFFFFCFFFFFC1602808C17>I E /Fu 34 119 df<F8F8F8F8F805057B8410>46
D<00000C00001C00001C00003C0000380000380000780000700000700000F00000E00000E00001
E00001C00001C00003C0000380000380000780000700000700000F00000E00000E00001E00001C
00001C00003C0000380000780000700000700000F00000E00000E00001E00001C00001C00003C0
000380000380000780000700000700000F00000E00000E00001E00001C00001C00003C00003800
00380000780000700000700000F00000E00000E00000E00000163C7DAC1D>I<00180000380000
F80007F800FFF800FFF800FFF800F8F80000F80000F80000F80000F80000F80000F80000F80000
F80000F80000F80000F80000F80000F80000F80000F80000F80000F80000F80000F80000F80000
F80000F80000F80000F80000F80000F80000F80000F8007FFFF07FFFF07FFFF07FFFF014287CA7
1D>49 D<00FE0003FF800FFFC01FFFE01F07F03C01F87800FC78007C70007CF0003EF0003E6000
3E20003E00003E00003E00003E00007C00007C0000780000F80001F00001E00003E00007C0000F
80001F00003E00007C0000F80001F00003E00003C0000780000F00001E00003C00007FFFFE7FFF
FE7FFFFE7FFFFE17287EA71D>I<007E0003FF8007FFE00FFFF01F81F83E00F87C007C78007C30
007C10007C00007C00007C0000780000F80000F80001F00007E000FFC000FF8000FFC000FFF000
01F80000FC00007C00003E00003E00001F00001F00001F00001F00001F80001FC0003EE0003EF0
007E7C00FC3F01F81FFFF00FFFE003FFC000FE0018297EA71D>I<0007E0000FE0000BE0001BE0
001BE0003BE0003BE00073E00073E000F3E000F3E001E3E001E3E003E3E003C3E007C3E00F83E0
0F83E01F03E01F03E03E03E03E03E07C03E07C03E0F803E0FFFFFFFFFFFFFFFFFFFFFFFF0003E0
0003E00003E00003E00003E00003E00003E00003E00003E00003E018277EA61D>I<3FFFF83FFF
F83FFFF83FFFF83E00003E00003E00003E00003E00003E00003E00003E00003E00003E00003E3E
003EFF803FFFE03FFFF03FC1F03F80F83F007C3E007C00007C00003E00003E00003E00003E0000
3E00003E00003E20003E60007C70007CF800F87C01F87F07F03FFFE00FFFC007FF0001FC001728
7EA61D>I<000FE0003FF800FFF801FFF803F81807E0000F80000F80001F00003E00003E00003C
00007C00007C02007C3FC0F8FFE0F9FFF0FBFFF8FF80FCFE007CFE003EFC003EFC003FFC001FF8
001FF8001FF8001FF8001F78001F7C001F7C001F7C001E3C003E3E003E1E007C1F00FC0FC1F807
FFF003FFE001FF80007E0018297EA71D>I<FFFFFFFFFFFFFFFFFFFFFFFF00000F00001E00003C
0000780000780000F00001F00001E00003E00003C00007C0000F80000F80000F00001F00001E00
003E00003E00003C00007C00007C00007C0000F80000F80000F80000F80000F80000F00001F000
01F00001F00001F00001F00001F00001F00018277EA61D>I<007E0003FFC007FFE00FFFF01F81
F83F00FC3E007C7E007E7C003E7C003E7C003E7C003E7C003E3E007C3E007C1F00F80FC3F007FF
E003FFC003FFC00FFFF01F81F83F00FC3E007C7C003E7C003EF8001FF8001FF8001FF8001FF800
1FF8001F7C003E7C003E7E007E3F00FC1F81F80FFFF007FFE003FFC0007E0018297EA71D>I<00
03FE00000FFFC0003FFFF000FFFFF001FE03F003F8006007E0002007C000000F8000001F800000
1F0000003E0000003E0000007C0000007C0000007C0000007C000000F8000000F8000000F80000
00F8000000F8000000F8000000F8000000F8000000F8000000F80000007C0000007C0000007C00
00007C0000003E0000003E0000001F0000001F8000000F80000007C0000007E0000803F8003801
FE01F800FFFFF8003FFFF0000FFFC00003FE001D2C7CAA25>67 D<FFFFFFC0FFFFFFC0FFFFFFC0
FFFFFFC0F8000000F8000000F8000000F8000000F8000000F8000000F8000000F8000000F80000
00F8000000F8000000F8000000F8000000F8000000FFFFFF00FFFFFF00FFFFFF00FFFFFF00F800
0000F8000000F8000000F8000000F8000000F8000000F8000000F8000000F8000000F8000000F8
000000F8000000F8000000F8000000F8000000F8000000FFFFFFE0FFFFFFE0FFFFFFE0FFFFFFE0
1B2A7BA923>69 D<FFFFFF80FFFFFF80FFFFFF80FFFFFF80F8000000F8000000F8000000F80000
00F8000000F8000000F8000000F8000000F8000000F8000000F8000000F8000000F8000000F800
0000F8000000FFFFFC00FFFFFC00FFFFFC00FFFFFC00F8000000F8000000F8000000F8000000F8
000000F8000000F8000000F8000000F8000000F8000000F8000000F8000000F8000000F8000000
F8000000F8000000F8000000F8000000F8000000192A7BA921>I<F8F8F8F8F8F8F8F8F8F8F8F8
F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8052A7BA910>73
D<0003FC0000000FFF0000003FFFC00000FFFFF00001FE07F80003F801FC0007E0007E000FC000
3F000F80001F001F00000F801F00000F803E000007C03E000007C07C000003E07C000003E07C00
0003E078000001E0F8000001F0F8000001F0F8000001F0F8000001F0F8000001F0F8000001F0F8
000001F0F8000001F0F8000001F0F8000001F07C000003E07C000003E07C000003E07E000007E0
3E000007C03E000007C01F00000F801F80001F800F80001F000FC0003F0007E0007E0003F801FC
0001FE07F80000FFFFF000003FFFC000001FFF80000003FC0000242C7DAA2B>79
D<F8000001F0FC000001F07C000003E07C000003E07E000003E03E000007C03E000007C01F0000
0F801F00000F801F00000F800F80001F000F80001F000FC0001F0007C0003E0007C0003E0007E0
003E0003E0007C0003E0007C0001F000780001F000F80001F000F80000F801F00000F801F00000
F801F000007C03E000007C03E000007C03E000003E07C000003E07C000001E078000001F0F8000
001F0F8000000F0F0000000F8F0000000F9F000000079E000000079E00000007DE00000003FC00
000003FC00000001F800000001F80000242A7FA927>86 D<01FC000FFF003FFF803FFFC03C07E0
3003E00001F00001F00001F00001F00001F00003F001FFF007FFF01FFFF03FC1F07E01F0FC01F0
F801F0F801F0F801F0FC03F07E0FF07FFFF03FFFF01FF9F00FE1F0141B7E9A1C>97
D<007F8001FFE007FFF80FFFF81FC0783F00103E00007C00007C00007C0000F80000F80000F800
00F80000F80000F80000F800007C00007C00007C00003E00003F00181FC0780FFFF807FFF801FF
E0007F80151B7E9A1A>99 D<00007C00007C00007C00007C00007C00007C00007C00007C00007C
00007C00007C00007C00007C00007C00007C00FC7C03FF7C07FFFC0FFFFC1FC1FC3F00FC3E007C
7C007C7C007CFC007CF8007CF8007CF8007CF8007CF8007CF8007CF8007CF8007C7C007C7C007C
7E00FC3F00FC1F83FC1FFFFC0FFF7C03FE7C01F87C162A7EA91E>I<00FC0003FF0007FF800FFF
C01F87E03F01E03E00F07C00F07C0070F80078FFFFF8FFFFF8FFFFF8FFFFF8F80000F80000F800
007800007C00007C00003E00003F00181FC0F80FFFF807FFF801FFE0007F00151B7E9A1A>I<00
1FC0007FC000FFC001FFC003F00003E00007C00007C00007C00007C00007C00007C00007C00007
C00007C000FFFE00FFFE00FFFE00FFFE0007C00007C00007C00007C00007C00007C00007C00007
C00007C00007C00007C00007C00007C00007C00007C00007C00007C00007C00007C00007C00007
C00007C00007C000122A7FA912>I<00F80F0003FE7F800FFFFF801FFFFF801F07C0003E03E000
3E03E0007C01F0007C01F0007C01F0007C01F0007C01F0003E03E0003E03E0001F07C0001FFFC0
003FFF80003BFE000038F8000078000000780000007C0000003FFF80003FFFF0001FFFF8001FFF
FC003FFFFE007C00FE007C003F00F8001F00F8001F00F8001F00F8001F00FC003F007E007E003F
81FC001FFFF8000FFFF00007FFE00000FF000019287E9A1D>I<F80000F80000F80000F80000F8
0000F80000F80000F80000F80000F80000F80000F80000F80000F80000F80000F87E00F9FF00FB
FF80FFFFC0FF0FC0FE07E0FC03E0FC03E0F803E0F803E0F803E0F803E0F803E0F803E0F803E0F8
03E0F803E0F803E0F803E0F803E0F803E0F803E0F803E0F803E0F803E0F803E0F803E0132A7BA9
1E>I<F8F8F8F8F800000000000000000000F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8
F8F8F8F8F8F8052A7CA90E>I<F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8
F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8052A7CA90E>108 D<F83F007E00F9FF83FF00FBFFC7FF
80FFFFEFFFC0FF07FE0FC0FE03FC07E0FC01F803E0FC01F803E0F801F003E0F801F003E0F801F0
03E0F801F003E0F801F003E0F801F003E0F801F003E0F801F003E0F801F003E0F801F003E0F801
F003E0F801F003E0F801F003E0F801F003E0F801F003E0F801F003E0F801F003E0F801F003E0F8
01F003E0231B7B9A30>I<F87E00F9FF00FBFF80FFFFC0FF0FC0FE07E0FC03E0FC03E0F803E0F8
03E0F803E0F803E0F803E0F803E0F803E0F803E0F803E0F803E0F803E0F803E0F803E0F803E0F8
03E0F803E0F803E0F803E0F803E0131B7B9A1E>I<007E0001FF8007FFE00FFFF01F81F83F00FC
3E007C7C003E7C003E78001EF8001FF8001FF8001FF8001FF8001FF8001FF8001F7C003E7C003E
7C003E3E007C3F00FC1FC3F80FFFF007FFE003FFC0007E00181B7E9A1D>I<F87E00F9FF80FFFF
C0FFFFE0FF0FE0FC03F0F801F8F800F8F800F8F800FCF8007CF8007CF8007CF8007CF8007CF800
7CF8007CF800FCF800F8F801F8F801F0FC03F0FE0FE0FFFFC0FFFF80FBFF00F8FC00F80000F800
00F80000F80000F80000F80000F80000F80000F80000F80000F80000F8000016277B9A1E>I<F8
38F8F8F9F8FBF8FFC0FF00FE00FE00FC00FC00F800F800F800F800F800F800F800F800F800F800
F800F800F800F800F800F800F8000D1B7B9A14>114 D<07F8001FFF003FFF807FFF807C0780F8
0100F80000F80000F80000FC00007F00007FF0003FFC001FFE0007FF0000FF80001FC0000FC000
07C00007C04007C0E007C0FC1F80FFFF807FFF001FFE0007F800121B7E9A16>I<07C00007C000
07C00007C00007C00007C00007C000FFFF80FFFF80FFFF80FFFF8007C00007C00007C00007C000
07C00007C00007C00007C00007C00007C00007C00007C00007C00007C00007C00007C00007C000
07C08007E38003FFC003FFC001FF0000FC0012227FA115>I<F803E0F803E0F803E0F803E0F803
E0F803E0F803E0F803E0F803E0F803E0F803E0F803E0F803E0F803E0F803E0F803E0F803E0F803
E0F803E0F803E0F807E0F807E0FC1FE0FFFFE07FFBE03FF3E01F83E0131B7B9A1E>I<F8001FF8
001F7C003E7C003E7C003E3E007C3E007C3E007C1F00F81F00F81F00F80F81F00F81F00F81F007
C3E007C3E007C3E003C3C003E7C001E78001E78001E78000E70000F70000FF00007E00007E0018
1B7F9A1B>I E /Fv 13 122 df<FFFFFFFFFFFFC00000FFFFFFFFFFFFFC0000FFFFFFFFFFFFFF
8000FFFFFFFFFFFFFFE000FFFFFFFFFFFFFFF800001FFF000003FFFC00001FFF0000007FFE0000
1FFF0000003FFF00001FFF0000001FFF80001FFF0000000FFFC0001FFF0000000FFFC0001FFF00
000007FFE0001FFF00000007FFE0001FFF00000007FFE0001FFF00000003FFF0001FFF00000003
FFF0001FFF00000003FFF0001FFF00000003FFF0001FFF00000003FFF0001FFF00000003FFF000
1FFF00000003FFF0001FFF00000003FFF0001FFF00000007FFE0001FFF00000007FFE0001FFF00
000007FFC0001FFF0000000FFFC0001FFF0000000FFF80001FFF0000001FFF00001FFF0000003F
FE00001FFF0000007FFC00001FFF000001FFF800001FFF00000FFFE000001FFFFFFFFFFF800000
1FFFFFFFFFFC0000001FFFFFFFFFFF8000001FFFFFFFFFFFF000001FFF000000FFFC00001FFF00
00003FFF00001FFF0000000FFF80001FFF00000007FFE0001FFF00000003FFF0001FFF00000001
FFF0001FFF00000001FFF8001FFF00000000FFFC001FFF00000000FFFC001FFF000000007FFE00
1FFF000000007FFE001FFF000000007FFE001FFF000000007FFF001FFF000000007FFF001FFF00
0000007FFF001FFF000000007FFF001FFF000000007FFF001FFF000000007FFF001FFF00000000
7FFF001FFF000000007FFF001FFF000000007FFE001FFF00000000FFFE001FFF00000000FFFE00
1FFF00000001FFFC001FFF00000001FFFC001FFF00000003FFF8001FFF00000007FFF0001FFF00
00000FFFE0001FFF0000003FFFC0001FFF000001FFFF80FFFFFFFFFFFFFFFF00FFFFFFFFFFFFFF
FC00FFFFFFFFFFFFFFF000FFFFFFFFFFFFFF8000FFFFFFFFFFFFF8000048477CC653>66
D<FFFFFFFFFCFFFFFFFFFCFFFFFFFFFCFFFFFFFFFCFFFFFFFFFC000FFFC000000FFFC000000FFF
C000000FFFC000000FFFC000000FFFC000000FFFC000000FFFC000000FFFC000000FFFC000000F
FFC000000FFFC000000FFFC000000FFFC000000FFFC000000FFFC000000FFFC000000FFFC00000
0FFFC000000FFFC000000FFFC000000FFFC000000FFFC000000FFFC000000FFFC000000FFFC000
000FFFC000000FFFC000000FFFC000000FFFC000000FFFC000000FFFC000000FFFC000000FFFC0
00000FFFC000000FFFC000000FFFC000000FFFC000000FFFC000000FFFC000000FFFC000000FFF
C000000FFFC000000FFFC000000FFFC000000FFFC000000FFFC000000FFFC000000FFFC000000F
FFC000000FFFC000000FFFC000000FFFC000000FFFC000000FFFC000000FFFC000000FFFC00000
0FFFC000000FFFC000000FFFC000000FFFC000FFFFFFFFFCFFFFFFFFFCFFFFFFFFFCFFFFFFFFFC
FFFFFFFFFC26477EC62B>73 D<00000003FFF0000000000000007FFFFF80000000000003FFFFFF
F000000000000FFFFFFFFC00000000003FFF003FFF0000000000FFF80007FFC000000003FFE000
01FFF000000007FF8000007FF80000000FFF0000003FFC0000001FFE0000001FFE0000003FFC00
00000FFF0000007FF800000007FF800000FFF000000003FFC00001FFF000000003FFE00003FFE0
00000001FFF00003FFC000000000FFF00007FFC000000000FFF80007FFC000000000FFF8000FFF
80000000007FFC000FFF80000000007FFC001FFF80000000007FFE001FFF00000000003FFE003F
FF00000000003FFF003FFF00000000003FFF003FFF00000000003FFF007FFF00000000003FFF80
7FFE00000000001FFF807FFE00000000001FFF807FFE00000000001FFF807FFE00000000001FFF
80FFFE00000000001FFFC0FFFE00000000001FFFC0FFFE00000000001FFFC0FFFE00000000001F
FFC0FFFE00000000001FFFC0FFFE00000000001FFFC0FFFE00000000001FFFC0FFFE0000000000
1FFFC0FFFE00000000001FFFC0FFFE00000000001FFFC0FFFE00000000001FFFC0FFFE00000000
001FFFC0FFFE00000000001FFFC0FFFE00000000001FFFC07FFE00000000001FFF807FFF000000
00003FFF807FFF00000000003FFF807FFF00000000003FFF803FFF00000000003FFF003FFF0000
0000003FFF003FFF80000000007FFF001FFF80000000007FFE001FFF80000000007FFE001FFF80
000000007FFE000FFFC000000000FFFC000FFFC000000000FFFC0007FFE000000001FFF80003FF
E000000001FFF00003FFF000000003FFF00001FFF000000003FFE00000FFF800000007FFC00000
7FFC0000000FFF8000007FFE0000001FFF8000003FFF0000003FFF0000000FFFC00000FFFC0000
0007FFE00001FFF800000003FFF80007FFF000000000FFFF003FFFC0000000007FFFFFFFFF8000
0000000FFFFFFFFC000000000003FFFFFFF00000000000007FFFFF8000000000000003FFF00000
00004A497AC757>79 D<0003FFF0000000003FFFFF00000000FFFFFFE0000001FFFFFFF8000003
FF003FFC000007FF800FFE000007FF8007FF000007FF8003FF800007FF8003FFC00007FF8001FF
C00007FF8001FFC00003FF0000FFE00001FE0000FFE00000FC0000FFE00000000000FFE0000000
0000FFE00000000000FFE00000000000FFE00000000000FFE000000000FFFFE00000007FFFFFE0
000007FFFFFFE000003FFFFCFFE00000FFFE00FFE00003FFF000FFE00007FFC000FFE0000FFF00
00FFE0001FFE0000FFE0003FFC0000FFE0007FFC0000FFE0007FF80000FFE000FFF80000FFE000
FFF00000FFE000FFF00000FFE000FFF00000FFE000FFF00001FFE000FFF00001FFE000FFF80003
FFE0007FFC0007FFE0007FFC000FFFE0003FFE001F7FF8001FFF80FE7FFFF007FFFFFC3FFFF003
FFFFF01FFFF0007FFFC00FFFF00007FE0003FFF0342E7DAD38>97 D<007FC000000000FFFFC000
000000FFFFC000000000FFFFC000000000FFFFC000000000FFFFC00000000003FFC00000000001
FFC00000000001FFC00000000001FFC00000000001FFC00000000001FFC00000000001FFC00000
000001FFC00000000001FFC00000000001FFC00000000001FFC00000000001FFC00000000001FF
C00000000001FFC00000000001FFC00000000001FFC00000000001FFC00000000001FFC0000000
0001FFC00000000001FFC00000000001FFC00FFE000001FFC0FFFFC00001FFC3FFFFF00001FFCF
FFFFFC0001FFFFE01FFF0001FFFF0007FF8001FFFC0001FFC001FFF80000FFE001FFF00000FFF0
01FFE000007FF001FFC000007FF801FFC000003FFC01FFC000003FFC01FFC000003FFC01FFC000
001FFE01FFC000001FFE01FFC000001FFE01FFC000001FFF01FFC000001FFF01FFC000001FFF01
FFC000001FFF01FFC000001FFF01FFC000001FFF01FFC000001FFF01FFC000001FFF01FFC00000
1FFF01FFC000001FFF01FFC000001FFF01FFC000001FFF01FFC000001FFE01FFC000001FFE01FF
C000003FFE01FFC000003FFC01FFC000003FFC01FFC000003FF801FFC000007FF801FFE000007F
F001FFF00000FFE001FFF80001FFE001FFFC0003FFC001FF7F0007FF0001FE3FC03FFE0001FC0F
FFFFF80001FC03FFFFF00001F800FFFF800001F0001FF8000038487CC741>I<00000000003F00
0000FFF000FFC00007FFFE03FFE0003FFFFFCFFFF0007FFFFFFFCFF001FFE07FFE0FF003FF801F
FC1FF007FF000FFE0FF00FFE0007FF0FF00FFE0007FF07E01FFC0003FF81801FFC0003FF80003F
FC0003FFC0003FFC0003FFC0003FFC0003FFC0003FFC0003FFC0003FFC0003FFC0003FFC0003FF
C0003FFC0003FFC0003FFC0003FFC0003FFC0003FFC0001FFC0003FF80001FFC0003FF80000FFE
0007FF00000FFE0007FF000007FF000FFE000003FF801FFC000001FFE07FF8000003FFFFFFE000
0003FFFFFFC000000787FFFE0000000780FFF0000000078000000000000F8000000000000F8000
000000000FC000000000000FC000000000000FE000000000000FF8000000000007FFFFFFF00000
07FFFFFFFF000007FFFFFFFFE00003FFFFFFFFF80003FFFFFFFFFC0001FFFFFFFFFE0000FFFFFF
FFFF0003FFFFFFFFFF800FFFFFFFFFFF801FF000001FFFC03FC0000001FFC07F800000007FE07F
800000003FE0FF000000003FE0FF000000001FE0FF000000001FE0FF000000001FE0FF00000000
1FE0FF800000003FE07F800000003FC07FC00000007FC03FE0000000FF801FF8000003FF000FFE
00000FFE0007FFE000FFFC0001FFFFFFFFF000003FFFFFFF8000000FFFFFFE000000007FFFC000
0034447DAE3A>103 D<007FC000000000FFFFC000000000FFFFC000000000FFFFC000000000FF
FFC000000000FFFFC00000000003FFC00000000001FFC00000000001FFC00000000001FFC00000
000001FFC00000000001FFC00000000001FFC00000000001FFC00000000001FFC00000000001FF
C00000000001FFC00000000001FFC00000000001FFC00000000001FFC00000000001FFC0000000
0001FFC00000000001FFC00000000001FFC00000000001FFC00000000001FFC00000000001FFC0
07FE000001FFC03FFFC00001FFC0FFFFF00001FFC1FFFFFC0001FFC7F01FFC0001FFCFC00FFE00
01FFDF0007FF0001FFDE0007FF0001FFFC0007FF0001FFF80003FF8001FFF80003FF8001FFF000
03FF8001FFE00003FF8001FFE00003FF8001FFE00003FF8001FFC00003FF8001FFC00003FF8001
FFC00003FF8001FFC00003FF8001FFC00003FF8001FFC00003FF8001FFC00003FF8001FFC00003
FF8001FFC00003FF8001FFC00003FF8001FFC00003FF8001FFC00003FF8001FFC00003FF8001FF
C00003FF8001FFC00003FF8001FFC00003FF8001FFC00003FF8001FFC00003FF8001FFC00003FF
8001FFC00003FF8001FFC00003FF8001FFC00003FF8001FFC00003FF8001FFC00003FF8001FFC0
0003FF8001FFC00003FF80FFFFFF81FFFFFFFFFFFF81FFFFFFFFFFFF81FFFFFFFFFFFF81FFFFFF
FFFFFF81FFFFFF38487BC741>I<00FC0001FF0003FF8007FF800FFFC00FFFC00FFFE00FFFE00F
FFE00FFFC00FFFC007FF8003FF8001FF0000FC0000000000000000000000000000000000000000
0000000000000000000000000000000000007FC0FFFFC0FFFFC0FFFFC0FFFFC0FFFFC003FFC001
FFC001FFC001FFC001FFC001FFC001FFC001FFC001FFC001FFC001FFC001FFC001FFC001FFC001
FFC001FFC001FFC001FFC001FFC001FFC001FFC001FFC001FFC001FFC001FFC001FFC001FFC001
FFC001FFC001FFC001FFC001FFC001FFC001FFC001FFC0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF18
497CC820>I<007FC000FFFFC000FFFFC000FFFFC000FFFFC000FFFFC00003FFC00001FFC00001
FFC00001FFC00001FFC00001FFC00001FFC00001FFC00001FFC00001FFC00001FFC00001FFC000
01FFC00001FFC00001FFC00001FFC00001FFC00001FFC00001FFC00001FFC00001FFC00001FFC0
0001FFC00001FFC00001FFC00001FFC00001FFC00001FFC00001FFC00001FFC00001FFC00001FF
C00001FFC00001FFC00001FFC00001FFC00001FFC00001FFC00001FFC00001FFC00001FFC00001
FFC00001FFC00001FFC00001FFC00001FFC00001FFC00001FFC00001FFC00001FFC00001FFC000
01FFC00001FFC00001FFC00001FFC00001FFC00001FFC00001FFC00001FFC00001FFC00001FFC0
00FFFFFF80FFFFFF80FFFFFF80FFFFFF80FFFFFF8019487CC720>108 D<00000FFE0000000001
FFFFF000000007FFFFFC0000001FFFFFFF0000007FF803FFC00000FFE000FFE00001FF80003FF0
0003FF00001FF80007FE00000FFC000FFE00000FFE000FFC000007FE001FFC000007FF003FFC00
0007FF803FF8000003FF803FF8000003FF807FF8000003FFC07FF8000003FFC07FF8000003FFC0
FFF8000003FFE0FFF8000003FFE0FFF8000003FFE0FFF8000003FFE0FFF8000003FFE0FFF80000
03FFE0FFF8000003FFE0FFF8000003FFE0FFF8000003FFE0FFF8000003FFE07FF8000003FFC07F
F8000003FFC07FF8000003FFC07FF8000003FFC03FFC000007FF803FFC000007FF801FFC000007
FF001FFC000007FF000FFE00000FFE0007FF00001FFC0003FF00001FF80001FFC0007FF00000FF
E000FFE000007FFC07FFC000001FFFFFFF00000007FFFFFC00000001FFFFF0000000001FFF0000
00332E7DAD3A>111 D<007FC00FFE0000FFFFC0FFFFC000FFFFC3FFFFF000FFFFCFFFFFFC00FF
FFFFE03FFF00FFFFFF000FFF8003FFFC0007FFC001FFF80003FFE001FFF00001FFF001FFE00000
FFF001FFC00000FFF801FFC000007FFC01FFC000007FFC01FFC000003FFC01FFC000003FFE01FF
C000003FFE01FFC000003FFE01FFC000001FFF01FFC000001FFF01FFC000001FFF01FFC000001F
FF01FFC000001FFF01FFC000001FFF01FFC000001FFF01FFC000001FFF01FFC000001FFF01FFC0
00001FFF01FFC000001FFF01FFC000001FFF01FFC000003FFE01FFC000003FFE01FFC000003FFE
01FFC000007FFC01FFC000007FFC01FFC000007FF801FFC00000FFF801FFE00000FFF001FFF000
01FFE001FFF80003FFE001FFFC0007FFC001FFFF000FFF0001FFFFC07FFE0001FFCFFFFFF80001
FFC3FFFFF00001FFC0FFFF800001FFC01FF8000001FFC00000000001FFC00000000001FFC00000
000001FFC00000000001FFC00000000001FFC00000000001FFC00000000001FFC00000000001FF
C00000000001FFC00000000001FFC00000000001FFC00000000001FFC00000000001FFC0000000
0001FFC000000000FFFFFF80000000FFFFFF80000000FFFFFF80000000FFFFFF80000000FFFFFF
8000000038427CAD41>I<00FF807F00FFFF81FFC0FFFF87FFF0FFFF8FFFF8FFFF9F8FFCFFFF9F
1FFE03FFBE1FFE01FFBC1FFE01FFF81FFE01FFF81FFE01FFF01FFE01FFF00FFC01FFE007F801FF
E003F001FFE0000001FFE0000001FFE0000001FFC0000001FFC0000001FFC0000001FFC0000001
FFC0000001FFC0000001FFC0000001FFC0000001FFC0000001FFC0000001FFC0000001FFC00000
01FFC0000001FFC0000001FFC0000001FFC0000001FFC0000001FFC0000001FFC0000001FFC000
0001FFC0000001FFC0000001FFC0000001FFC00000FFFFFFE000FFFFFFE000FFFFFFE000FFFFFF
E000FFFFFFE000272E7CAD2F>114 D<FFFFFF0003FFFFFFFFFF0003FFFFFFFFFF0003FFFFFFFF
FF0003FFFFFFFFFF0003FFFF01FFE000001F8000FFE000001F0000FFF000003F00007FF000003E
00007FF800007E00003FF800007C00003FFC0000FC00001FFC0000F800001FFC0000F800001FFE
0001F800000FFE0001F000000FFF0003F0000007FF0003E0000007FF8007E0000003FF8007C000
0003FFC007C0000003FFC00FC0000001FFC00F80000001FFE01F80000000FFE01F00000000FFF0
3F000000007FF03E000000007FF87E000000003FF87C000000003FF87C000000003FFCFC000000
001FFCF8000000001FFFF8000000000FFFF0000000000FFFF00000000007FFE00000000007FFE0
0000000003FFC00000000003FFC00000000003FFC00000000001FF800000000001FF8000000000
00FF000000000000FF0000000000007E0000000000007E0000000000007E0000000000007C0000
00000000FC000000000000F8000000000001F8000000000001F00000001F0003F00000003F8003
E00000007FC003E0000000FFE007C0000000FFE00FC0000000FFE00F80000000FFE01F80000000
FFE03F000000007FC0FE000000007F83FC000000003FFFF8000000001FFFE00000000007FF8000
00000001FE000000000038427EAD3D>121 D E /Fw 8 117 df<00001E000000003E00000000FE
00000003FE0000003FFE0000FFFFFE0000FFFFFE0000FFFFFE0000FFCFFE0000000FFE0000000F
FE0000000FFE0000000FFE0000000FFE0000000FFE0000000FFE0000000FFE0000000FFE000000
0FFE0000000FFE0000000FFE0000000FFE0000000FFE0000000FFE0000000FFE0000000FFE0000
000FFE0000000FFE0000000FFE0000000FFE0000000FFE0000000FFE0000000FFE0000000FFE00
00000FFE0000000FFE0000000FFE0000000FFE0000000FFE0000000FFE0000000FFE0000000FFE
0000000FFE0000000FFE0000000FFE0000000FFE0000000FFE0000000FFE0000000FFE0000000F
FE0000000FFE0000000FFE00007FFFFFFF807FFFFFFF807FFFFFFF807FFFFFFF80213879B730>
49 D<0000001FFE0000E0000003FFFFE001E000001FFFFFF803E000007FFFFFFE07E00001FFFC
00FF0FE00007FFC0001FDFE0000FFF000007FFE0003FFC000001FFE0007FF0000000FFE000FFE0
0000007FE001FFC00000003FE003FF800000001FE007FF800000001FE007FF000000000FE00FFE
0000000007E00FFE0000000007E01FFC0000000007E01FFC0000000003E03FFC0000000003E03F
F80000000003E07FF80000000001E07FF80000000001E07FF80000000001E07FF0000000000000
FFF0000000000000FFF0000000000000FFF0000000000000FFF0000000000000FFF00000000000
00FFF0000000000000FFF0000000000000FFF0000000000000FFF0000000000000FFF000000000
0000FFF0000000000000FFF0000000000000FFF00000000000007FF00000000000007FF8000000
0000007FF80000000001E07FF80000000001E03FF80000000001E03FFC0000000001E01FFC0000
000001E01FFC0000000003E00FFE0000000003C00FFE0000000007C007FF0000000007C007FF80
0000000F8003FF800000000F8001FFC00000001F0000FFE00000003E00007FF00000007C00003F
FC000000F800000FFF000003F0000007FFC0000FE0000001FFFC007FC00000007FFFFFFF000000
001FFFFFFC0000000003FFFFE000000000001FFE0000003B3D7BBB46>67
D<003FFF00000001FFFFE0000007FFFFFC00000FF007FE00001FF801FF80001FF800FFC0001FF8
007FE0001FF8007FE0001FF8007FF0000FF0003FF00007E0003FF00003C0003FF0000000003FF0
000000003FF0000000003FF0000000003FF0000000FFFFF000000FFFFFF000007FF83FF00003FF
803FF00007FE003FF0001FFC003FF0003FF8003FF0007FF0003FF0007FE0003FF000FFE0003FF0
00FFC0003FF000FFC0003FF000FFC0003FF000FFC0007FF000FFC0007FF000FFE000FFF0007FE0
01DFF0003FF003DFFC001FFC0F9FFFE00FFFFE0FFFE001FFF807FFE0003FE001FFE02B267DA52F
>97 D<0003FF8000001FFFF000007FFFFC0000FF83FF0003FE00FF8007FC003F800FF8003FC01F
F8001FE01FF0001FE03FF0001FF03FF0000FF07FE0000FF07FE0000FF87FE0000FF8FFE0000FF8
FFE0000FF8FFFFFFFFF8FFFFFFFFF8FFFFFFFFF8FFE0000000FFE0000000FFE0000000FFE00000
00FFE00000007FE00000007FE00000007FF00000003FF00000783FF00000781FF80000F80FF800
00F007FC0001F003FE0003E001FF000FC000FFC07F80003FFFFE00000FFFFC000001FFC0002526
7DA52C>101 D<00FF0000000000FFFF0000000000FFFF0000000000FFFF0000000000FFFF0000
00000007FF000000000003FF000000000003FF000000000003FF000000000003FF000000000003
FF000000000003FF000000000003FF000000000003FF000000000003FF000000000003FF000000
000003FF000000000003FF000000000003FF000000000003FF000000000003FF000000000003FF
000000000003FF003FE0000003FF01FFFC000003FF07FFFE000003FF0F81FF800003FF3C00FF80
0003FF3800FFC00003FF7000FFC00003FFE0007FE00003FFC0007FE00003FFC0007FE00003FF80
007FE00003FF80007FE00003FF00007FE00003FF00007FE00003FF00007FE00003FF00007FE000
03FF00007FE00003FF00007FE00003FF00007FE00003FF00007FE00003FF00007FE00003FF0000
7FE00003FF00007FE00003FF00007FE00003FF00007FE00003FF00007FE00003FF00007FE00003
FF00007FE00003FF00007FE00003FF00007FE00003FF00007FE00003FF00007FE00003FF00007F
E00003FF00007FE000FFFFFC1FFFFF80FFFFFC1FFFFF80FFFFFC1FFFFF80FFFFFC1FFFFF80313C
7DBB36>104 D<00FF00FF8000FFFF0FFFF800FFFF3FFFFE00FFFFFE03FF00FFFFF000FFC007FF
E0007FE003FFC0003FF003FF80003FF803FF00001FF803FF00001FFC03FF00000FFC03FF00000F
FE03FF00000FFE03FF00000FFE03FF000007FF03FF000007FF03FF000007FF03FF000007FF03FF
000007FF03FF000007FF03FF000007FF03FF000007FF03FF000007FF03FF000007FF03FF00000F
FE03FF00000FFE03FF00000FFE03FF00000FFC03FF00001FFC03FF00001FF803FF80003FF003FF
C0007FF003FFE000FFE003FFF001FF8003FFFE07FF0003FF3FFFFC0003FF0FFFF00003FF01FF00
0003FF0000000003FF0000000003FF0000000003FF0000000003FF0000000003FF0000000003FF
0000000003FF0000000003FF0000000003FF0000000003FF0000000003FF0000000003FF000000
00FFFFFC000000FFFFFC000000FFFFFC000000FFFFFC00000030377EA536>112
D<00FE01F800FFFE07FF00FFFE1FFF80FFFE3E3FC0FFFE787FE007FE707FE003FEE07FE003FEE0
7FE003FFC07FE003FFC03FC003FF801F8003FF800F0003FF80000003FF80000003FF00000003FF
00000003FF00000003FF00000003FF00000003FF00000003FF00000003FF00000003FF00000003
FF00000003FF00000003FF00000003FF00000003FF00000003FF00000003FF00000003FF000000
03FF00000003FF00000003FF000000FFFFFE0000FFFFFE0000FFFFFE0000FFFFFE000023267EA5
28>114 D<000F0000000F0000000F0000000F0000000F0000001F0000001F0000001F0000001F
0000003F0000003F0000007F0000007F000000FF000001FF000003FF000007FF00001FFFFFF0FF
FFFFF0FFFFFFF0FFFFFFF003FF000003FF000003FF000003FF000003FF000003FF000003FF0000
03FF000003FF000003FF000003FF000003FF000003FF000003FF000003FF000003FF000003FF00
0003FF000003FF000003FF003C03FF003C03FF003C03FF003C03FF003C03FF003C03FF003C03FF
003C01FF807801FF807800FFC0F000FFE1F0003FFFE0000FFF800001FE001E377EB626>116
D E /Fx 25 122 df<70F8FCFC7C0C0C0C0C181830306040060F7C840E>44
D<FFE0FFE0FFE00B037F8B10>I<018003800F80FF80F380038003800380038003800380038003
80038003800380038003800380038003800380038003800380038003800380038003800380FFFE
FFFE0F217CA018>49 D<000E00000E00001E00001E00003E00003E00006E0000EE0000CE0001CE
00018E00030E00070E00060E000E0E000C0E00180E00180E00300E00700E00600E00E00E00FFFF
F8FFFFF8000E00000E00000E00000E00000E00000E00000E0001FFF001FFF015217FA018>52
D<01F00007FC000E0E001C0700380380780380700380F001C0F001C0F001C0F001E0F001E0F001
E0F001E0F001E07001E07003E07803E03807E01C0DE00FF9E007F1E00081C00001C00003C00003
80000380300700780700780E00701C003838001FF0000FC00013227EA018>57
D<000FE010003FF83000F81C7001E0067003C003F0078001F00F0000F01E0000F03E0000703C00
00707C0000707C0000307800003078000030F8000030F8000000F8000000F8000000F8000000F8
000000F8000000F800000078000030780000307C0000307C0000303C0000603E0000601E000060
0F0000C0078000C003C0018001E0030000F80E00003FF800000FE0001C247DA223>67
D<FFFFF000FFFFFE0007801F00078007C0078003C0078001E0078000F0078000F8078000780780
007C0780003C0780003C0780003C0780003E0780003E0780003E0780003E0780003E0780003E07
80003E0780003E0780003E0780003C0780003C0780007C0780007807800078078000F0078001E0
078003E0078007C007801F00FFFFFE00FFFFF8001F227EA125>I<FFFFFFC0FFFFFFC007800FC0
078003C0078001C0078000C0078000E0078000E007800060078000600780606007806060078060
00078060000780E0000781E00007FFE00007FFE0000781E0000780E00007806000078060000780
6000078060000780000007800000078000000780000007800000078000000780000007800000FF
FE0000FFFE00001B227EA120>70 D<03FFF003FFF0000F00000F00000F00000F00000F00000F00
000F00000F00000F00000F00000F00000F00000F00000F00000F00000F00000F00000F00000F00
000F00000F00000F00000F00000F00700F00F80F00F80F00F80F00F01E00601C003878001FF000
07C00014237EA119>74 D<FFC00003FFFFE00007FF07E00007E007E00007E006F0000DE006F000
0DE006F0000DE006780019E006780019E006780019E0063C0031E0063C0031E0063C0031E0061E
0061E0061E0061E0061E0061E0060F00C1E0060F00C1E006078181E006078181E006078181E006
03C301E00603C301E00603C301E00601E601E00601E601E00601E601E00600FC01E00600FC01E0
0600FC01E006007801E01F807801E0FFF0783FFFFFF0303FFF28227EA12D>77
D<FFFFF000FFFFFC0007803F0007800F8007800780078003C0078003C0078003E0078003E00780
03E0078003E0078003E0078003C0078003C00780078007800F8007803F0007FFFC0007FFF00007
800000078000000780000007800000078000000780000007800000078000000780000007800000
078000000780000007800000FFFC0000FFFC00001B227EA121>80 D<03F0200FFC601C0EE03803
E07001E07001E0E000E0E000E0E00060E00060E00060F00000F000007800007F00003FF0001FFE
000FFF0003FF80003FC00007E00001E00000F00000F0000070C00070C00070C00070C00070E000
60E000E0F000C0F801C0EF0380C7FF0081FC0014247DA21B>83 D<0FE0001FF8003C1C003C0E00
180700000700000700000F0003FF000FFF003F07007C0700780700F00700F00718F00718F00F18
780F187C3FB83FF3F00FC3C015157E9418>97 D<0E0000FE0000FE00001E00000E00000E00000E
00000E00000E00000E00000E00000E00000E00000E00000E1F800E7FE00FC0F00F00780E00380E
003C0E001C0E001E0E001E0E001E0E001E0E001E0E001E0E001E0E001C0E003C0F00380F80700F
C1F00C7FC00C1F0017237FA21B>I<01FE0007FF000F07801C0780380300780000700000F00000
F00000F00000F00000F00000F00000F000007800007800C03C00C01E01800F030007FE0001F800
12157E9416>I<01FC0007FF000F07801C03C03801C07801E07000E0FFFFE0FFFFE0F00000F000
00F00000F00000F000007800007800603C00601E00C00F838007FF0000FC0013157F9416>101
D<1C001E003E001E001C00000000000000000000000000000000000E00FE00FE001E000E000E00
0E000E000E000E000E000E000E000E000E000E000E000E000E00FFC0FFC00A227FA10E>105
D<0E00FE00FE001E000E000E000E000E000E000E000E000E000E000E000E000E000E000E000E00
0E000E000E000E000E000E000E000E000E000E000E000E000E000E00FFE0FFE00B237FA20E>
108 D<0E1F80FE7FC0FFC1E01F80F00F00700E00700E00700E00700E00700E00700E00700E0070
0E00700E00700E00700E00700E00700E00700E0070FFE7FFFFE7FF18157F941B>110
D<01FC0007FF000F07801C01C03800E07800F0700070F00078F00078F00078F00078F00078F000
78F000787000707800F03800E01C01C00F078007FF0001FC0015157F9418>I<0E3CFEFEFFCF1F
8F0F060F000E000E000E000E000E000E000E000E000E000E000E000E000E00FFF0FFF010157F94
13>114 D<0F883FF87078E038E018E018E018F0007F003FE01FF001F8003CC01CC01CE01CE01C
F018F878DFF08FC00E157E9413>I<060006000600060006000E000E000E001E003E00FFF8FFF8
0E000E000E000E000E000E000E000E000E000E000E0C0E0C0E0C0E0C0E0C0E08071803F001E00E
1F7F9E13>I<0E0070FE07F0FE07F01E00F00E00700E00700E00700E00700E00700E00700E0070
0E00700E00700E00700E00700E00700E00F00E01F007037803FE7F01F87F18157F941B>I<FFC3
FEFFC3FE1E00F80E00600E00600700C00700C00700C003818003818003C38001C30001C30000E6
0000E60000E600007C00007C00007C00003800003800003000003000007000006000006000F0C0
00F1C000F380007F00003E0000171F7F941A>121 D E /Fy 20 122 df<FFFFFFE00000FFFFFF
FC000007E0007F000003E0000F800003E00007C00003E00001E00003E00000F00003E000007800
03E000007C0003E000003E0003E000003E0003E000001F0003E000001F0003E000000F8003E000
000F8003E000000FC003E000000FC003E0000007C003E0000007C003E0000007E003E0000007E0
03E0000007E003E0000007E003E0000007E003E0000007E003E0000007E003E0000007E003E000
0007E003E0000007E003E0000007E003E0000007C003E0000007C003E0000007C003E000000FC0
03E000000F8003E000000F8003E000000F8003E000001F0003E000001F0003E000003E0003E000
007C0003E00000780003E00000F80003E00001F00003E00007E00003E0000F800007E0007F0000
FFFFFFFC0000FFFFFFE000002B317CB033>68 D<FFFF80FFFF8007F00003E00003E00003E00003
E00003E00003E00003E00003E00003E00003E00003E00003E00003E00003E00003E00003E00003
E00003E00003E00003E00003E00003E00003E00003E00003E00003E00003E00003E00003E00003
E00003E00003E00003E00003E00003E00003E00003E00003E00003E00003E00003E00003E00003
E00007F000FFFF80FFFF8011317DB017>73 D<FFFFC00000FFFFC0000007F000000003E0000000
03E000000003E000000003E000000003E000000003E000000003E000000003E000000003E00000
0003E000000003E000000003E000000003E000000003E000000003E000000003E000000003E000
000003E000000003E000000003E000000003E000000003E000000003E000000003E000000003E0
00000003E000000003E000000003E000000003E00000C003E00000C003E00000C003E00000C003
E000018003E000018003E000018003E000018003E000038003E000038003E000038003E0000780
03E0000F8003E0001F0003E0003F0007E001FF00FFFFFFFF00FFFFFFFF0022317CB029>76
D<FFF00000007FF8FFF8000000FFF807F8000000FF0003F8000000FE00037C000001BE00037C00
0001BE00037C000001BE00033E0000033E00033E0000033E00033E0000033E00031F0000063E00
031F0000063E00031F0000063E00030F80000C3E00030F80000C3E00030F80000C3E000307C000
183E000307C000183E000307C000183E000303E000303E000303E000303E000303E000303E0003
01F000603E000301F000603E000301F000C03E000300F800C03E000300F800C03E0003007C0180
3E0003007C01803E0003007C01803E0003003E03003E0003003E03003E0003003E03003E000300
1F06003E0003001F06003E0003001F06003E0003000F8C003E0003000F8C003E0003000F8C003E
00030007D8003E00030007D8003E00030007D8003E00030003F0003E00030003F0003E00030003
F0003E00078001E0003E000FC001E0007F00FFFC01E00FFFF8FFFC00C00FFFF835317CB03D>I<
00003FC000000001FFF800000007C03E0000001F000F8000003C0003C00000F80001F00001F000
00F80003E000007C0003C000003C0007C000003E000F8000001F000F8000001F001F0000000F80
1F0000000F803E00000007C03E00000007C07E00000007E07E00000007E07C00000003E07C0000
0003E0FC00000003F0FC00000003F0FC00000003F0FC00000003F0FC00000003F0FC00000003F0
FC00000003F0FC00000003F0FC00000003F0FC00000003F0FC00000003F07E00000007E07E0000
0007E07E00000007E07E00000007E03E00000007C03F0000000FC01F0000000F801F0000000F80
0F8000001F000F8000001F0007C000003E0003E000007C0003E000007C0001F00000F80000F800
01F000003E0007C000001F000F80000007E07E00000001FFF8000000003FC000002C337CB134>
79 D<FFFFFFC000FFFFFFF80007E000FE0003E0001F0003E0000F8003E00007C003E00003E003
E00003F003E00001F003E00001F003E00001F803E00001F803E00001F803E00001F803E00001F8
03E00001F803E00001F003E00001F003E00003F003E00003E003E00007C003E0000F8003E0001F
0003E000FE0003FFFFF80003FFFFC00003E000000003E000000003E000000003E000000003E000
000003E000000003E000000003E000000003E000000003E000000003E000000003E000000003E0
00000003E000000003E000000003E000000003E000000003E000000003E000000003E000000007
F0000000FFFF800000FFFF80000025317CB02D>I<01FE00000FFFC0001C03E0003C00F0003E00
78003E003C003E001C0008001E0000001E0000001E0000001E0000001E000001FE00003FFE0001
FF1E0007F01E000F801E001F001E003E001E007C001E007C001E00F8001E0CF8001E0CF8001E0C
F8003E0CF8003E0C7C007E0C3E00DF1C1F038FB80FFF07F003F803C01E1F7D9E21>97
D<07800000FF800000FF8000000F80000007800000078000000780000007800000078000000780
000007800000078000000780000007800000078000000780000007800000078000000780000007
80FC000787FF80079E07C007B801E007E000F007C0007807C0007C0780003C0780003E0780003E
0780001E0780001F0780001F0780001F0780001F0780001F0780001F0780001F0780001F078000
1F0780001E0780003E0780003E0780003C07C0007807C00078076000F0073801E0071E07C00607
FF000601FC0020327EB125>I<003FC000FFF803E01C07801E0F003E1E003E1E003E3C00087C00
007C0000780000F80000F80000F80000F80000F80000F80000F80000F80000F800007C00007C00
007C00003E00031E00031F00060F800E07C01C03F03800FFE0003F80181F7D9E1D>I<003F8000
00FFE00003E0F80007803C000F001E001E001E001E000F003C000F007C000F007C000F80780007
80F8000780FFFFFF80FFFFFF80F8000000F8000000F8000000F8000000F8000000F80000007800
00007C0000003C0000003C0001801E0001800F0003000F80060007C00E0001F03C0000FFF00000
1FC000191F7E9E1D>101 D<0003E0001FF8003C3800707C00F07C01E07C01E03803C00003C000
03C00003C00003C00003C00003C00003C00003C00003C00003C00003C000FFFFC0FFFFC003C000
03C00003C00003C00003C00003C00003C00003C00003C00003C00003C00003C00003C00003C000
03C00003C00003C00003C00003C00003C00003C00003C00003C00003C00003C00003C00007E000
7FFF007FFF0016327FB114>I<07000F801F801F800F8007000000000000000000000000000000
00000000000000000780FF80FF800F800780078007800780078007800780078007800780078007
800780078007800780078007800780078007800780078007800FC0FFF8FFF80D307EAF12>105
D<0780FF80FF800F80078007800780078007800780078007800780078007800780078007800780
078007800780078007800780078007800780078007800780078007800780078007800780078007
80078007800780078007800780078007800FC0FFFCFFFC0E327EB112>108
D<0781FE003FC000FF87FF80FFF000FF8E07C1C0F8000F9803E3007C0007B001E6003C0007E000
FC001E0007C000F8001E0007C000F8001E0007C000F8001E00078000F0001E00078000F0001E00
078000F0001E00078000F0001E00078000F0001E00078000F0001E00078000F0001E00078000F0
001E00078000F0001E00078000F0001E00078000F0001E00078000F0001E00078000F0001E0007
8000F0001E00078000F0001E00078000F0001E00078000F0001E00078000F0001E00078000F000
1E000FC001F8003F00FFFC1FFF83FFF0FFFC1FFF83FFF0341F7E9E38>I<0781FE0000FF87FF80
00FF8E07C0000F9803E00007B001E00007E000F00007C000F00007C000F00007C000F000078000
F000078000F000078000F000078000F000078000F000078000F000078000F000078000F0000780
00F000078000F000078000F000078000F000078000F000078000F000078000F000078000F00007
8000F000078000F000078000F0000FC001F800FFFC1FFF80FFFC1FFF80211F7E9E25>I<001FC0
0000FFF80001E03C0007800F000F0007801E0003C01E0003C03C0001E03C0001E0780000F07800
00F0780000F0F80000F8F80000F8F80000F8F80000F8F80000F8F80000F8F80000F8F80000F878
0000F07C0001F03C0001E03C0001E01E0003C01E0003C00F00078007C01F0001F07C0000FFF800
001FC0001D1F7E9E21>I<0783E0FF8FF8FF9C7C0FB07C07F07C07E03807C00007C00007C00007
800007800007800007800007800007800007800007800007800007800007800007800007800007
80000780000780000780000780000780000FC000FFFE00FFFE00161F7E9E19>114
D<00C00000C00000C00000C00000C00001C00001C00001C00003C00003C00007C0000FC0001FC0
00FFFFE0FFFFE003C00003C00003C00003C00003C00003C00003C00003C00003C00003C00003C0
0003C00003C00003C00003C00003C00003C03003C03003C03003C03003C03003C03003C03003C0
3001E06001E06000F0C0007F80001F00142C7FAB19>116 D<078000F000FF801FF000FF801FF0
000F8001F000078000F000078000F000078000F000078000F000078000F000078000F000078000
F000078000F000078000F000078000F000078000F000078000F000078000F000078000F0000780
00F000078000F000078000F000078000F000078000F000078001F000078001F000078003F00003
8007F00003C00EF00001F03CF80000FFF0FF80003FC0FF80211F7E9E25>I<FFF803FF80FFF803
FF800FC000FC000780007800078000700003C000600003C000600003E000E00001E000C00001E0
00C00000F001800000F001800000F801800000780300000078030000007C070000003C06000000
3C060000001E0C0000001E0C0000001F1C0000000F180000000F1800000007B000000007B00000
0007B000000003E000000003E000000003E000000001C000000001C00000000180000000018000
0000038000000003000000000300000000060000000006000000700E000000F80C000000F81C00
0000F83800000070700000003FE00000001F80000000212D7F9E23>121
D E /Fz 5 85 df<00000000600000000000E00000000000E00000000001E00000000001F00000
000003F00000000003F00000000007F0000000000FF0000000000FF0000000001BF0000000001B
F00000000033F00000000033F00000000063F00000000063F000000000C3F000000001C3F00000
000183F00000000303F00000000303F00000000603F80000000603F80000000C01F80000000C01
F80000001801F80000003801F80000003001F80000006001F80000006001F8000000C001F80000
00C001F80000018001F8000001FFFFF8000003FFFFF80000070001F80000060001F800000C0001
F800000C0001F80000180001FC0000180001FC0000300000FC0000300000FC0000600000FC0000
E00000FC0000C00000FC0001C00000FC0003C00000FC000FE00003FC00FFFC003FFFE0FFF8003F
FFE02B337CB234>65 D<000FFFFFFC00000FFFFFFF8000007F000FC000007E0003E000007E0001
F000007E0000F800007E00007C0000FC00007C0000FC00003E0000FC00003E0000FC00003E0001
F800001E0001F800001F0001F800001F0001F800001F0003F000001F0003F000001F0003F00000
1F0003F000001F0007E000003F0007E000003F0007E000003F0007E000003F000FC000003E000F
C000007E000FC000007E000FC000007E001F8000007C001F800000FC001F800000FC001F800000
F8003F000001F8003F000001F0003F000003F0003F000003E0007E000007E0007E000007C0007E
00000F80007E00000F0000FC00001F0000FC00003E0000FC00007C0000FC0000F80001F80001F0
0001F80007C00001F8000F800003F8007E0000FFFFFFF80000FFFFFFC0000030317BB035>68
D<000FFFFFFFF8000FFFFFFFF800007F0003F800007E0000F800007E00007800007E0000780000
7E0000300000FC0000300000FC0000300000FC0000300000FC0000300001F80000300001F80000
300001F80000300001F80000600003F00180600003F00180000003F00180000003F00180000007
E00300000007E00300000007E00700000007E01F0000000FFFFE0000000FFFFE0000000FC01E00
00000FC00E0000001F800C0000001F800C0000001F800C0000001F800C0000003F00180000003F
00180000003F00000000003F00000000007E00000000007E00000000007E00000000007E000000
0000FC0000000000FC0000000000FC0000000000FC0000000001F80000000001F80000000001F8
0000000003F800000000FFFFF0000000FFFFF00000002D317BB02E>70 D<000FFFFFE000000FFF
FFFC0000007F003F0000007E000F8000007E0007C000007E0003E000007E0003F00000FC0001F0
0000FC0001F00000FC0001F00000FC0001F00001F80003F00001F80003F00001F80003F00001F8
0003E00003F00007E00003F00007C00003F0000FC00003F0001F800007E0003F000007E0007C00
0007E000F8000007E007E000000FFFFF8000000FFFFF0000000FC00FC000000FC007E000001F80
03F000001F8001F000001F8001F800001F8001F800003F0001F800003F0001F800003F0001F800
003F0001F800007E0003F000007E0003F000007E0003F000007E0003F00000FC0007E00000FC00
07E00000FC0007E00000FC0007E01801F80007E03001F80007E03001F80007E06003F80003E060
FFFFE001F1C0FFFFC000FF80000000003E002D327BB033>82 D<07FFFFFFFFF007FFFFFFFFF00F
E007F007F00F8007E001F00E0007E000E00C0007E000E01C0007E000E018000FC000E018000FC0
00E030000FC000C030000FC000C030001F8000C060001F8000C060001F8000C060001F8000C0C0
003F00018000003F00000000003F00000000003F00000000007E00000000007E00000000007E00
000000007E0000000000FC0000000000FC0000000000FC0000000000FC0000000001F800000000
01F80000000001F80000000001F80000000003F00000000003F00000000003F00000000003F000
00000007E00000000007E00000000007E00000000007E0000000000FC0000000000FC000000000
0FC0000000000FC0000000001F80000000001F80000000001F80000000003F800000007FFFFF80
00007FFFFF8000002C3174B032>84 D E end
%%EndProlog
%%BeginSetup
%%Feature: *Resolution 300
TeXDict begin
%%EndSetup
%%Page: 0 1
bop 799 988 a Fz(D)25 b(R)g(A)g(F)g(T)388 1079 y Fy(Do)r(cumen)n(t)c(for)h(a)
f(P)n(arallel)h(MPI)g(IO)g(Library)207 1274 y Fx(Marc)16 b(Snir)116
b(P)o(eter)16 b(Corb)q(ett)117 b(Dror)17 b(F)l(eitelson)116
b(Jean-Pierre)15 b(Prost)793 1400 y(Jan)o(uary)i(14,)f(1994)p
eop
%%Page: 1 2
bop 75 362 a Fw(Chapter)31 b(1)75 570 y Fv(IO)75 812 y Fu(1.1)59
b(Intro)r(duction)75 916 y Ft(This)16 b(do)q(cumen)o(t)f(is)g(a)g(prop)q
(osal)g(for)g(an)g(extension)g(of)g(MPI)g(in)h(supp)q(ort)f(of)f(\014le)i
(I/O)g(\(MPI-IO\).)f(The)75 972 y(need)g(for)e(suc)o(h)i(extension)g(arises)f
(from)f(the)i(fact)e(that)g(not)h(all)h(parallel)h(mac)o(hines)f(supp)q(ort)f
(Unix)h(\014le)75 1029 y(access)h(at)e(eac)o(h)i(no)q(de;)g(when)f(it)h(is)g
(supp)q(orted,)g(the)f(sharing)h(seman)o(tics)f(of)g(Unix)i(\014les)f(are)f
(ill-suited)75 1085 y(to)c(parallel)j(computing,)e(and)h(dep)q(end)g(on)f
(the)g(t)o(yp)q(e)g(of)f(\014le)i(system)f(accessed)g(and)g(on)g(the)g(mec)o
(hanism)75 1141 y(used)18 b(to)e(share)h(access)g(across)f(a)g(parallel)j
(application.)27 b(It)16 b(is)i(hard)f(to)f(co)q(ordinate)h(accesses)h(to)e
(the)75 1198 y(same)f(\014le)h(b)o(y)f(all)h(pro)q(cesses)g(in)f(a)g
(parallel)i(computation,)e(and)g(imp)q(ossible)i(to)e(guaran)o(tee)f
(atomicit)o(y)75 1254 y(and)j(serializabili)q(t)o(y)i(of)d(accesses)i(with)f
(lev)o(els)h(of)e(p)q(erformance)h(required)h(b)o(y)f(parallel)i
(applications.)75 1311 y(The)i(b)q(eha)o(vior)g(of)f(F)l(ortran)f(I/O)i
(libraries)h(further)e(complicate)i(the)f(picture.)36 b(Therefore,)22
b(use)e(of)75 1367 y(regular)11 b(I/O)h(within)h(parallel)f(applications)h
(should)g(b)q(e)f(exercised)g(with)g(m)o(uc)o(h)f(caution,)h(in)g(particular)
75 1424 y(when)k(using)g(standard)e(input,)i(standard)f(output)g(and)g
(standard)g(error.)166 1481 y(MPI-IO)k(pro)o(vides)h(a)e(paradigm)h(for)f
(I/O)h(that)f(matc)o(hes)g(the)h(general)g(computing)g(paradigm)75
1538 y(supp)q(orted)c(b)o(y)g(MPI.)f(In)h(particular,)g(it)g(supp)q(orts)f(a)
g(lo)q(osely)i(sync)o(hronous)f(collectiv)o(e)h(mo)q(de)f(of)f(I/O,)75
1594 y(analogous)i(to)g(the)h(lo)q(osely)g(sync)o(hronous)g(mo)q(de)g(of)f
(comm)o(unication)h(pro)o(vided)g(b)o(y)g(collectiv)o(e)h(com-)75
1651 y(m)o(unication.)166 1708 y(The)11 b(general)g(approac)o(h)f(tak)o(en)g
(b)o(y)h(MPI-IO)g(is)g(to)f(mo)q(del)h(\014le)h(I/O)f(as)f(a)g(comm)o
(unication)i(b)q(et)o(w)o(een)75 1765 y(computing)19 b(pro)q(cesses)f
(\(readers)g(or)f(writers\))h(and)g(a)f(\014le)i(serv)o(er)f(pro)q(cess.)29
b(A)18 b(simple,)h(nonscalable)75 1821 y(implemen)o(tation)e(of)e(MPI-IO)i
(will)h(ha)o(v)o(e)d(one)h(\014le)h(serv)o(er)e(pro)q(cess)h(that)f(accesses)
h(the)g(\014le)h(on)f(b)q(ehalf)75 1877 y(of)j(the)g(remaining)i(pro)q
(cesses;)g(those)e(pro)q(cesses)h(comm)o(unicate)g(with)f(the)h(\014le)g
(serv)o(er)f(pro)q(cess)h(via)75 1934 y(messages.)e(More)11
b(e\016cien)o(t)h(implemen)o(tations)g(are)f(p)q(ossible;)j(in)f(particular,)
f(one)f(can)h(tak)o(e)f(adv)m(an)o(tage)75 1990 y(of)h(the)g(concurrency)h(a)
o(v)m(ailable)h(in)f(a)f(parallel)i(\014le)f(system)f(suc)o(h)g(as)g(V)l
(esta)g([2)o(],)g(in)h(order)f(to)g(replace)h(the)75 2047 y(sequen)o(tial)j
(\014le)h(serv)o(er)d(b)o(y)i(m)o(ultiple)h(parallel)f(\014le)h(serv)o(ers,)d
(th)o(us)h(a)o(v)o(oiding)g(sequen)o(tial)i(b)q(ottlenec)o(ks.)166
2104 y(The)g(I/O)h(calls)g(use)f(the)g(same)g(syn)o(tax)f(and)h(seman)o(tics)
h(as)e(message)h(passing)g(comm)o(unication)75 2161 y(in)h(MPI.)e(A)h(\014le)
h(is)g(op)q(ened)g(b)o(y)e(a)h(group)g(of)f(pro)q(cesses,)h(sp)q(eci\014ed)i
(b)o(y)e(a)g Fs(c)n(ommunic)n(ator)p Ft(.)25 b(The)17 b(op)q(en)75
2217 y(op)q(eration)k(creates)f(a)g(new)h(comm)o(unicator,)g(whic)o(h)g(is)g
(used)h(for)d(accessing)j(the)e(\014le.)37 b(File)22 b(access)75
2274 y(can)e(b)q(e)h(individual,)j(analogous)c(to)g(a)g(p)q(oin)o(t-to-p)q
(oin)o(t)h(comm)o(unication,)g(or)f(it)g(can)h(b)q(e)g(collectiv)o(e,)75
2330 y(in)o(v)o(olving)f(all)f(pro)q(cesses)g(in)g(the)f(group.)30
b(Both)18 b(individual)j(and)e(collectiv)o(e)h(accesses)f(ha)o(v)o(e)f(sev)o
(eral)75 2387 y(v)m(arian)o(ts,)d(according)g(to)g(the)g(mo)q(de)h(of)e(in)o
(teraction)i(b)q(et)o(w)o(een)g(accesses)f(to)g(the)g(same)g(\014le.)166
2444 y(MPI-IO)i(supp)q(orts)g(\014les)h(that)e(are)g(structured)h(as)f(C)g
(\014les)i(\(a)e(sequence)i(of)e(b)o(ytes\),)g(as)g(F)l(ortran)75
2501 y(direct-access)h(\014les)g(\(a)f(sequence)h(of)f(\014xed-size)i
(records\))e(and)g(as)g(F)l(ortran)f(sequen)o(tial)j(unformatted)75
2557 y(\014les)e(\(a)f(sequence)h(of)f(v)m(ariable)h(size)h(records\).)166
2615 y(Regular)22 b(F)o(OR)l(TRAN)f(or)g(C)g(I/O)g(library)h(routines)f(ma)o
(y)f(co)q(exist)i(in)g(a)e(co)q(de)i(with)f(MPI-IO)p 75 2661
720 2 v 127 2688 a Fr(1)144 2704 y Fq(V)m(ersion)14 b(as)f(of)g(Jan)g(13,)g
(1994)-32 46 y Fr(1)-32 103 y(2)-32 159 y(3)-32 215 y(4)-32
272 y(5)-32 328 y(6)-32 385 y(7)-32 441 y(8)-32 498 y(9)-40
554 y(10)-40 611 y(11)-40 667 y(12)-40 724 y(13)-40 780 y(14)-40
836 y(15)-40 893 y(16)-40 949 y(17)-40 1006 y(18)-40 1062 y(19)-40
1119 y(20)-40 1175 y(21)-40 1232 y(22)-40 1288 y(23)-40 1345
y(24)-40 1401 y(25)-40 1457 y(26)-40 1514 y(27)-40 1570 y(28)-40
1627 y(29)-40 1683 y(30)-40 1740 y(31)-40 1796 y(32)-40 1853
y(33)-40 1909 y(34)-40 1966 y(35)-40 2022 y(36)-40 2078 y(37)-40
2135 y(38)-40 2191 y(39)-40 2248 y(40)-40 2304 y(41)-40 2361
y(42)-40 2417 y(43)-40 2474 y(44)-40 2530 y(45)-40 2587 y(46)-40
2643 y(47)-40 2699 y(48)p eop
%%Page: 2 3
bop 75 -100 a Ft(2)1410 b Fp(CHAPTER)16 b(1.)34 b(IO)75 49
y Ft(pro)q(cedures.)39 b(Ho)o(w)o(ev)o(er,)22 b(implemen)o(tations)g(ma)o(y)f
(prohibit)i(concurren)o(t)e(access)h(to)e(the)i(same)f(\014le)75
106 y(using)16 b(b)q(oth)f(MPI-IO)h(and)g(regular)f(\014le)h(I/O.)166
165 y(MPI-IO)g(inherits)g(from)e(the)h(design)g(of)g(MPI)f(comm)o(unication)i
(calls)g(sev)o(eral)f(features)f(that)g(are)75 222 y(imp)q(ortan)o(t)j(for)h
(high)g(p)q(erformance)g(I/O.)g(Data)e(can)i(b)q(e)h(mo)o(v)o(ed)e(directly)i
(to)e(user)h(space,)h(a)o(v)o(oiding)75 278 y(extra)12 b(bu\013ering)i(at)e
(the)h(computation)g(no)q(de.)19 b(Deriv)o(ed)14 b(datat)o(yp)q(es)e(pro)o
(vide)h(a)g(facilit)o(y)h(for)e(scattering)75 335 y(data)k(read)h(or)g
(gathering)g(data)f(to)g(b)q(e)i(written)f(as)g(part)f(of)g(the)i(I/O)f
(call.)26 b(Async)o(hronous)17 b(I/O)h(can)75 391 y(b)q(e)e(executed)g(in)g
(a)f(manner)g(similar)i(to)d(non)o(blo)q(c)o(king)j(comm)o(unication.)166
450 y(The)e(\014rst)f(sections)h(of)f(this)h(do)q(cumen)o(t)g(describ)q(e)i
(the)d(MPI-IO)i(functions)f(in)g(terms)g(of)f(accesses)75 507
y(to)g(a)h(regular)g(\(F)l(ortran)f(or)g(C\))h(\014le.)21 b(The)15
b(last)g(section)g(of)g(this)g(do)q(cumen)o(t)h(presen)o(ts)f(extensions)h
(that)75 563 y(are)f(sp)q(eci\014cally)j(targeted)c(to)g(a)h(parallel)i
(\014le)f(system)f(suc)o(h)g(as)g(V)l(esta)g([2)o(],)f(and)i(allo)o(w)f(the)g
(user)g(more)75 620 y(con)o(trol)h(on)h(the)f(ph)o(ysical)i(\014le)f(la)o(y)o
(out,)f(the)h(logical)g(view)g(of)f(the)h(\014le)g(and)g(on)f(\014le)i
(sharing.)23 b(W)l(e)17 b(also)75 676 y(sp)q(ecify)g(in)f(the)f(last)g
(section)h(the)f(precise)h(seman)o(tics)g(of)e(MPI-IO)j(accesses)e(to)g
(parallel)h(\014les.)75 815 y Fo(1.1.1)49 b(Ackno)o(wledgements)75
907 y Ft(The)19 b(prop)q(osal)h(is)f(based)h(on)f(an)g(earlier)h(do)q(cumen)o
(t)g(of)e(Jean-Pierre)j(Prost)d([7)o(],)h(and)h(incorp)q(orates)75
964 y(ideas)14 b(dev)o(elop)q(ed)g(b)o(y)f(the)h(V)l(esta)e(team)h([3)o(].)19
b(The)13 b(o)o(v)o(erall)g(design)h(has)f(b)q(een)h(in\015uenced)i(b)o(y)d
(the)g(design)75 1020 y(of)i(the)g(Express)g(I/O)h(library)g([6)o(].)75
1180 y Fu(1.2)59 b(File)20 b(structure)75 1288 y Ft(MPI-IO)c(supp)q(orts)f
(three)h(t)o(yp)q(es)f(of)g(\014les:)75 1394 y Fn(stream)i(\014le)23
b Ft(whic)o(h)16 b(consists)g(of)e(a)h(sequence)i(of)d(b)o(ytes.)75
1500 y Fn(\014xed)j(record)g(\014le)23 b Ft(whic)o(h)16 b(consists)g(of)e(a)h
(sequence)i(of)d(\014xed)i(size)g(records.)75 1606 y Fn(v)m(ariable)i(record)
f(\014le)24 b Ft(whic)o(h)16 b(consists)f(of)g(a)g(sequence)h(of)f(v)m
(ariable)h(size)h(records.)166 1712 y(Stream)10 b(\014les)i(ha)o(v)o(e)f(the)
g(same)g(structure)f(as)h(C)g(\(binary\))g(\014les.)19 b(Fixed)12
b(record)f(\014les)h(ha)o(v)o(e)e(the)h(same)75 1768 y(structure)18
b(as)g(F)l(ortran)g(direct)h(access,)g(unformatted)f(\014les.)30
b(V)l(ariable)20 b(record)e(\014les)i(ha)o(v)o(e)e(the)g(same)75
1824 y(structure)g(as)g(F)l(ortran)g(sequen)o(tial,)i(unformatted)e(\014les.)
30 b(Th)o(us,)19 b(\014les)h(can)e(b)q(e)i(exc)o(hanged)f(b)q(et)o(w)o(een)75
1881 y(parallel)f(MPI)e(programs)f(and)i(sequen)o(tial)g(C)f(or)g(F)l(ortran)
f(programs.)22 b(MPI-IO)17 b(supp)q(orts)f(access)h(to)75 1937
y(all)f(three)f(t)o(yp)q(es)h(of)e(\014les)j(b)q(oth)e(from)f(F)l(ortran)g
(and)i(C.)166 1997 y(Bytes)k(in)h(a)f(stream)g(\014le)h(and)g(records)f(in)h
(a)f(\(\014xed)g(or)g(v)m(ariable\))i(record)e(\014le)h(are)f(n)o(um)o(b)q
(ered)75 2053 y(consecutiv)o(ely)l(,)25 b(starting)c(from)g(zero)h(\(this)g
(is)g(di\013eren)o(t)g(from)f(F)l(ortran)g(record)h(n)o(um)o(b)q(ering,)i
(that)75 2110 y(starts)17 b(from)h(one\).)31 b(A)19 b(lo)q(cation)g(in)h(a)e
(\014le)i(is)f(recorded)g(b)o(y)g(a)f Fn(\014le)k(p)q(oin)o(ter)p
Ft(,)e(whic)o(h)g(stores)e(a)g(b)o(yte)75 2166 y(n)o(um)o(b)q(er,)g(for)f
(stream)f(\014les,)j(and)e(a)g(record)h(n)o(um)o(b)q(er,)f(for)g(records)g
(\014le.)28 b(The)18 b(\014le)g(p)q(oin)o(ter)g(is)g(alw)o(a)o(ys)75
2223 y(lo)q(cated)d(at)f(the)h(b)q(eginning)i(of)d(a)g(record)h(after)f(eac)o
(h)g(\014le)i(access)f(or)f(\014le)i(p)q(ositioning)g(op)q(eration.)k(The)75
2279 y(\014le)14 b(p)q(oin)o(ter)g(is)g(at)f Fn(end-of-\014le)i
Ft(if)f(it)g(p)q(oin)o(ts)g(to)e(the)i(\014rst)f(b)o(yte)g(after)g(the)h
(last)f(v)m(alid)i(b)o(yte)e(in)i(a)e(stream)75 2336 y(\014le,)k(or)f(the)h
(\014rst)f(record)g(after)g(the)h(last)f(v)m(alid)i(record)f(in)g(a)f(record)
g(\014le)i(\(i.e.,)e(if)h(the)f(\014le)i(con)o(tains)f Fm(n)75
2392 y Ft(b)o(ytes)e(\(records\),)f(then)i(the)f(\014le)h(p)q(oin)o(ter)g(is)
f(at)g(end-of-\014le)i(when)f(it)f(has)g(v)m(alue)h Fm(n)p
Ft(\).)166 2534 y Fl(Discussion:)39 b Fk(F)m(ortran)15 b(assumes)g(that)h(a)
30 b Fj(SEQUENTIAL)14 b Fk(\014le)h(is)g(terminated)g(b)o(y)g(a)g
(zero-length)h(end-)75 2591 y(of-\014le)f(record.)26 b(This)16
b(is)g(somewhat)f(di\013eren)o(t)i(from)d(the)j(de\014nition)e(ab)q(o)o(v)o
(e.)25 b(The)16 b(di\013erence)i(seems)e(to)g(ha)o(v)o(e)75
2647 y(only)d(one)g(visible)g(consequence:)20 b(a)26 b Fj(BA)o(CKSP)m(A)o(CE)
10 b Fk(is)j(not)h(required)g(b)q(efore)g(one)f(start)h(writing)f(after)h(a)f
(call)f(to)75 2704 y Fj(ENDFILE)p Fk(.)1967 46 y Fr(1)1967
103 y(2)1967 159 y(3)1967 215 y(4)1967 272 y(5)1967 328 y(6)1967
385 y(7)1967 441 y(8)1967 498 y(9)1959 554 y(10)1959 611 y(11)1959
667 y(12)1959 724 y(13)1959 780 y(14)1959 836 y(15)1959 893
y(16)1959 949 y(17)1959 1006 y(18)1959 1062 y(19)1959 1119
y(20)1959 1175 y(21)1959 1232 y(22)1959 1288 y(23)1959 1345
y(24)1959 1401 y(25)1959 1457 y(26)1959 1514 y(27)1959 1570
y(28)1959 1627 y(29)1959 1683 y(30)1959 1740 y(31)1959 1796
y(32)1959 1853 y(33)1959 1909 y(34)1959 1966 y(35)1959 2022
y(36)1959 2078 y(37)1959 2135 y(38)1959 2191 y(39)1959 2248
y(40)1959 2304 y(41)1959 2361 y(42)1959 2417 y(43)1959 2474
y(44)1959 2530 y(45)1959 2587 y(46)1959 2643 y(47)1959 2699
y(48)p eop
%%Page: 3 4
bop 75 -100 a Fp(1.3.)34 b(FILE)16 b(SHARING)g(AND)f(A)o(CCESS)g(MODES)841
b Ft(3)166 49 y(A)15 b(read)h(or)e(write)i(starts)e(at)g(the)i(curren)o(t)f
(p)q(osition)h(of)f(the)h(\014le)g(p)q(oin)o(ter.)21 b(If)15
b(the)h(\014le)g(is)g(a)f(stream)75 106 y(\014le)f(then)f(the)g(\(priv)m(ate)
g(or)g(shared\))g(\014le)g(p)q(oin)o(ter)h(is)f(p)q(ositioned)i(at)d(the)h
(end)g(of)g(the)g(access)g(at)f(the)h(b)o(yte)75 162 y(follo)o(wing)i(the)g
(last)g(accessed)g(b)o(yte.)k(If)c(the)g(\014le)h(is)f(a)f(record)h(\014le)h
(then)f(the)f(\014le)i(p)q(oin)o(ter)f(is)g(p)q(ositioned)75
219 y(at)g(the)g(end)h(of)e(the)i(access)f(at)g(the)g(start)f(of)h(the)g
(\014rst)g(record)g(follo)o(wing)h(the)f(last)g(accessed)h(record.)166
275 y(The)11 b(end-of-\014le)i(p)q(osition)f(is)f(mo)q(di\014ed)i(b)o(y)d(a)h
(write)g(op)q(eration)g(that)g(writes)g(b)q(ey)o(ond)g(the)g(previous)75
332 y(end-of-\014le)17 b(p)q(osition,)f(th)o(us)f(increasing)i(the)e(\014le)h
(size.)21 b(The)16 b(new)g(\014le)g(p)q(oin)o(ter)g(p)q(osition)g(b)q(ecomes)
g(the)75 388 y(curren)o(t)k(end-of-\014le.)35 b(The)20 b(\014le)h(size)g(can)
f(b)q(e)h(reduced)g(\(and)e(the)h(end-of-\014le)i(b)q(e)e(mo)o(v)o(ed)g(bac)o
(k\))f(b)o(y)75 445 y(calls)f(to)e Fm(MPI)p 320 445 14 2 v
16 w(ENDFILE)p Ft(.)f(A)i(\014le)h(p)q(oin)o(ter)f(can)g(b)q(e)g(mo)o(v)o(ed)
g(b)q(ey)o(ond)g(the)g(end-of-\014le)h(\(using)f(a)g(call)h(to)75
501 y Fm(MPI)p 160 501 V 16 w(SEEK)p Ft(\).)c(This)i(do)q(es)g(not)e
(a\013ect)h(the)g(\014le)h(length)g(and)g(the)f(end-of-\014le)i(p)q(osition.)
166 558 y(It)e(is)g(erroneous)f(for)g(a)g(read)h(op)q(eration)g(to)f(access)g
(b)o(ytes)h(that)f(w)o(ere)g(not)g(set)g(b)o(y)h(some)f(previous)75
614 y(write)h(op)q(eration.)k(E.g.,)13 b(if)i(a)g(\014le)g(is)g(extended)g(b)
o(y)g(mo)o(ving)f(the)h(\014le)g(p)q(oin)o(ter)g(b)q(ey)o(ond)g(the)g
(end-of-\014le,)75 671 y(then)e(the)g(\014le)g(con)o(tains)g(no)o(w)f(b)o
(ytes)h(or)f(records)g(that)g(w)o(ere)g(nev)o(er)h(written;)g(these)g(need)h
(to)e(b)q(e)h(written)75 727 y(b)q(efore)j(they)g(are)f(read.)21
b(Also,)16 b(one)g(cannot)f(read)h(from)f(a)g(\014xed)i(size)f(record)g(more)
f(b)o(ytes)h(than)f(w)o(ere)75 784 y(written)g(b)o(y)g(the)h(last)f(write)g
(op)q(eration)g(that)g(up)q(dated)h(that)e(record.)166 923
y Fl(Discussion:)32 b Fk(Implemen)o(tations)10 b(ma)o(y)g(supp)q(ort)j(in)f
(some)f(cases)j(reads)f(that)g(access)h(data)e(that)g(w)o(as)g(not)75
980 y(set)17 b(b)o(y)e(a)h(previous)g(write:)22 b(In)16 b(a)f(P)o(osix)h(en)o
(vironmen)o(t,)f(a)g(read)h(to)g(a)f(p)q(osition)h(that)f(w)o(as)h(not)g
(written)g(b)q(efore)75 1036 y(will)d(return)j(zero)g(b)o(ytes,)f(if)f(the)h
(read)h(is)e(b)q(ey)o(ond)h(the)g(end-of-\014le,)g(or)f(will)g(return)i(an)e
(all)g(zero)h(record,)h(if)e(it)g(is)75 1093 y(b)q(elo)o(w)f(the)h
(end-of-\014le.)j(Suc)o(h)d(read)g(in)f(V)m(esta)g(will)f(also)h(return)h
(either)g(zero)h(b)o(ytes)f(or)f(an)g(all-zero)g(record,)h(but)75
1149 y(the)k(conditions)f(under)h(whic)o(h)f(either)h(o)q(ccur)h(are)f
(somewhat)e(less)i(in)o(tuitiv)o(e.)27 b(Also,)18 b(implemen)o(tati)o(ons)d
(ma)o(y)75 1206 y(supp)q(ort)g(zero)f(\014lling)f(of)g(\014xed)h(size)h
(records)g(that)f(are)h(only)e(partially)f(up)q(dated.)75 1433
y Fu(1.3)59 b(File)20 b(sha)n(ring)g(and)g(access)g(mo)r(des)75
1535 y Ft(A)15 b(\014le)g(is)g(op)q(ened)h(for)e(parallel)i(I/O)f(b)o(y)g(a)f
(group)g(of)h(pro)q(cesses)g(that)e(is)j(de\014ned)g(b)o(y)e(an)h(MPI)f
Fs(c)n(ommu-)75 1592 y(nic)n(ator)p Ft(.)19 b(MPI-IO)d(supp)q(orts)e(three)g
(distinct)i Fn(sharing)g(mo)q(des)e Ft(for)g(\014les.)21 b(The)14
b(\014le)h(sharing)g(mo)q(de)f(is)75 1648 y(sp)q(eci\014ed)j(when)f(the)f
(\014le)i(is)e(op)q(ened.)75 1756 y Fn(Priv)m(ate:)22 b Ft(Eac)o(h)15
b(pro)q(cess)h(accesses)f(a)g(distinct)i(\014le.)75 1851 y
Fn(Shared:)22 b Ft(All)i(pro)q(cesses)e(in)h(the)g(group)f(access)g(the)g
(same)g(\014le.)42 b(The)23 b(pro)q(cesses)f(share)h(one)f(\014le)189
1908 y(p)q(oin)o(ter.)e(Eac)o(h)15 b(pro)q(cess)g(can)h(access)f(the)g
(\014le)i(individuall)q(y)l(.)75 2003 y Fn(Collectiv)o(e:)23
b Ft(All)f(pro)q(cesses)e(in)h(the)f(group)g(access)g(the)g(same)g(\014le.)36
b(File)21 b(accesses)f(are)g(collectiv)o(e)189 2059 y(op)q(erations)15
b(that)f(in)o(v)o(olv)o(e)i(all)g(pro)q(cesses)g(in)g(the)f(group.)166
2167 y(Accesses)i(to)e(record)h(\014les)i(are)e(record-orien)o(ted.)23
b(MPI-IO)17 b(supp)q(orts)f(t)o(w)o(o)f(distinct)j(\014le)f
Fn(access)75 2223 y(metho)q(ds)e Ft(for)g(record)g(\014les.)21
b(The)15 b(\014le)i(access)e(metho)q(d)g(is)h(sp)q(eci\014ed)h(when)f(the)f
(\014le)h(is)g(op)q(ened.)75 2331 y Fn(Uni:)23 b Ft(Eac)o(h)15
b(\(individual)j(or)d(collectiv)o(e\))h(\014le)h(access)e(is)h(con)o(tained)g
(within)g(one)f(record.)75 2426 y Fn(Multi:)23 b Ft(A)15 b(\014le)g(access)g
(ma)o(y)e(span)i(m)o(ultiple)h(successiv)o(e)g(records;)e(eac)o(h)g
(individual)k(item)d(in)g(the)g(I/O)189 2483 y(list)h(is)f(con)o(tained)h
(within)h(one)e(distinct)h(record.)166 2591 y(MPI-IO)h(calls)g(b)q(eha)o(v)o
(e)g(as)f(if)g(the)h(\014le)g(serv)o(er)f(initiates)h(one)g(I/O)f(op)q
(eration)h(on)f(b)q(ehalf)h(of)f(eac)o(h)75 2647 y(individual)e(call)f(b)o(y)
e(one)h(pro)q(cess)f(in)h(priv)m(ate)g(or)f(shared)h(mo)q(des,)f(and)h(one)f
(I/O)h(op)q(eration)g(on)f(b)q(ehalf)h(of)75 2704 y(the)i(en)o(tire)g(group,)
g(for)f(eac)o(h)h(collectiv)o(e)i(I/O)e(call)h(in)g(collectiv)o(e)g(mo)q(de.)
20 b(The)14 b(outcome)f(of)h(concurren)o(t)-32 46 y Fr(1)-32
103 y(2)-32 159 y(3)-32 215 y(4)-32 272 y(5)-32 328 y(6)-32
385 y(7)-32 441 y(8)-32 498 y(9)-40 554 y(10)-40 611 y(11)-40
667 y(12)-40 724 y(13)-40 780 y(14)-40 836 y(15)-40 893 y(16)-40
949 y(17)-40 1006 y(18)-40 1062 y(19)-40 1119 y(20)-40 1175
y(21)-40 1232 y(22)-40 1288 y(23)-40 1345 y(24)-40 1401 y(25)-40
1457 y(26)-40 1514 y(27)-40 1570 y(28)-40 1627 y(29)-40 1683
y(30)-40 1740 y(31)-40 1796 y(32)-40 1853 y(33)-40 1909 y(34)-40
1966 y(35)-40 2022 y(36)-40 2078 y(37)-40 2135 y(38)-40 2191
y(39)-40 2248 y(40)-40 2304 y(41)-40 2361 y(42)-40 2417 y(43)-40
2474 y(44)-40 2530 y(45)-40 2587 y(46)-40 2643 y(47)-40 2699
y(48)p eop
%%Page: 4 5
bop 75 -100 a Ft(4)1410 b Fp(CHAPTER)16 b(1.)34 b(IO)75 49
y Ft(accesses)16 b(to)f(the)h(same)f(\014le)i(b)o(y)f(sev)o(eral)f(pro)q
(cesses)i(is)f(as)f(if)h(the)g(accesses)g(w)o(ere)f(executed)i(serially)l(,)g
(in)75 106 y(some)e(unsp)q(eci\014ed)j(order)d(that)g(is)h(consisten)o(t)f
(with)h(program)e(execution)j(order:)i(i.e.)i(\(individual)d(or)75
162 y(collectiv)o(e\))f(I/O)e(op)q(erations)h(are)f(atomic,)f(serializable)k
(and)d(causal.)166 1091 y(The)f(same)f(\014le)h(can)g(b)q(e)g(sim)o
(ultaneously)h(op)q(ened)g(b)o(y)e(di\013eren)o(t)h(comm)o(unication)g
(groups.)19 b(Th)o(us,)75 1147 y(if)h(pro)q(cesses)g(access)g(a)f(\014le)h
(in)h(a)e(totally)g(unco)q(ordinated)i(manner,)f(then)g(eac)o(h)g(pro)q(cess)
g(can)f(op)q(en)75 1204 y(the)c(\014le)g(separately)l(.)20
b(The)15 b(prede\014ned)h(comm)o(unicator)e Fj(MPI)p 1140 1204
13 2 v 14 w(COMM)p 1284 1204 V 15 w(I)g Ft(whic)o(h)h(has)g(a)f(singleton)h
(group)75 1260 y(con)o(taining)i(only)f(the)g(lo)q(cal)h(pro)q(cess,)f(can)h
(b)q(e)f(used)h(b)o(y)f(a)f(pro)q(cess)i(in)f(order)g(to)f(op)q(en)i(a)f
(\014le)h(with)f(no)75 1317 y(co)q(ordination)j(with)g(an)o(y)f(other)f(pro)q
(cess.)30 b(\()p Fj(MPI)p 940 1317 V 14 w(COMM)p 1084 1317
V 14 w(I)18 b Ft(is)h(not)f(part)g(of)f(the)i(MPI)f(de\014nition;)j(w)o(e)75
1373 y(prop)q(ose)15 b(to)g(add)g(it.\))166 2385 y Fl(Discussion:)49
b Fk(The)18 b(main)e(raison)i(d')o(^)-20 b(etre)18 b(of)f(the)i
Fj(p)o(rivate)f Fk(mo)q(de)f(is)h(for)f(allo)o(wing)f(pro)q(cesses)k(to)e(op)
q(en)75 2441 y(priv)n(ate)e(\014les)h(without)g(w)o(orrying)f(ab)q(out)g(sp)q
(ecifying)h(a)f(distinct)h(\014le)g(name)e(for)i(eac)o(h)g(pro)q(cess.)28
b(In)17 b(a)f(system)75 2498 y(where)j(all)e(\014les)h(are)h(in)e(a)h(shared)
h(directory)m(,)f(a)g(con)o(v)o(en)o(tion)g(migh)o(t)d(b)q(e)k(used)g(whereb)
o(y)g(the)f(\014le)g(op)q(ened)h(b)o(y)75 2554 y(pro)q(cess)14
b Fj(id)f Fk(is)f(named)f Fj(\014lename)p Fi(<)p Fj(id)p Fi(>)p
Fk(.)17 b(In)12 b(a)g(system)g(where)h(eac)o(h)g(pro)q(cess)h(has)e(it)g(o)o
(wn)g(priv)n(ate)g Fj(/tmp)d Fk(directory)75 2611 y(the)14
b(con)o(v)o(en)o(tion)g(ma)o(y)e(b)q(e)i(that)g(eac)o(h)h(pro)q(cess)h(op)q
(ens)e(a)g(\014le)g Fj(\014lename)e Fk(in)h(its)h(o)o(wn)g
Fj(/tmp)d Fk(directory)m(.)1967 46 y Fr(1)1967 103 y(2)1967
159 y(3)1967 215 y(4)1967 272 y(5)1967 328 y(6)1967 385 y(7)1967
441 y(8)1967 498 y(9)1959 554 y(10)1959 611 y(11)1959 667 y(12)1959
724 y(13)1959 780 y(14)1959 836 y(15)1959 893 y(16)1959 949
y(17)1959 1006 y(18)1959 1062 y(19)1959 1119 y(20)1959 1175
y(21)1959 1232 y(22)1959 1288 y(23)1959 1345 y(24)1959 1401
y(25)1959 1457 y(26)1959 1514 y(27)1959 1570 y(28)1959 1627
y(29)1959 1683 y(30)1959 1740 y(31)1959 1796 y(32)1959 1853
y(33)1959 1909 y(34)1959 1966 y(35)1959 2022 y(36)1959 2078
y(37)1959 2135 y(38)1959 2191 y(39)1959 2248 y(40)1959 2304
y(41)1959 2361 y(42)1959 2417 y(43)1959 2474 y(44)1959 2530
y(45)1959 2587 y(46)1959 2643 y(47)1959 2699 y(48)p eop
%%Page: 5 6
bop 75 -100 a Fp(1.4.)34 b(FILE)16 b(MANIPULA)l(TION)g(FUNCTIONS)893
b Ft(5)75 49 y Fu(1.4)59 b(File)20 b(manipulation)d(functions)75
198 y Fm(MPI)p 160 198 14 2 v 16 w(OPEN\(\014lename,)9 b(status,)k(action,)e
(p)q(osition,)h(t)o(yp)q(e,)g(rec)p 1106 198 V 16 w(size,)f(mo)q(de,)e(metho)
q(d,)g(concurrency)l(,)j(comm)m(,)75 254 y(new)o(comm)n(\))117
332 y Fk(IN)155 b Fm(\014lename)428 b Fk(name)13 b(of)g(op)q(ened)i(\014le)f
(\(string\))117 404 y(IN)155 b Fm(status)476 b Fk(one)15 b(of)e
Fj(MPI)p 1106 404 13 2 v 14 w(OLD)h Fk(\(\014le)h(exists\),)f
Fj(MPI)p 1518 404 V 15 w(NEW)g Fk(\(\014le)g(do)q(es)h(not)905
460 y(exist\))k(,)h Fj(MPI)p 1133 460 V 14 w(REPLA)o(CE)d Fk(\(\014le)i(is)g
(created)h(if)e(it)h(do)q(es)g(not)905 517 y(exist,)g(replaced)f(if)f(it)h
(exists\))g(,)g Fj(MPI)p 1516 517 V 14 w(UNKNO)o(WN)g Fk(\(\014le)g(is)905
573 y(op)q(ened)d(if)e(it)h(exists,)g(created)h(if)e(it)h(do)q(es)g(not)g
(exist\))905 629 y Fj(MPI)p 982 629 V 15 w(SCRA)m(TCH)8 b Fk(\(new)h(unnamed)
g(\014le)g(is)g(created;)j(it)d(is)g(deleted)905 686 y(when)k(it)f(is)g
(closed)h(or)g(when)g(program)e(terminates\))h(\(state\))117
758 y(IN)155 b Fm(action)472 b Fk(one)14 b(of)f Fj(MPI)p 1105
758 V 14 w(READ,)g(MPI)p 1329 758 V 14 w(WRITE)p Fk(,)f(or)i
Fj(MPI)p 1624 758 V 14 w(READ)o(WRITE)905 814 y Fk(\(state\))117
886 y(IN)155 b Fm(p)q(osition)439 b Fk(one)19 b(of)e Fj(MPI)p
1114 886 V 15 w(REWIND)h Fk(\(start)h(of)e(\014le\))i(or)f
Fj(MPI)p 1698 886 V 14 w(APPEND)905 943 y Fk(\(end)d(of)e(\014le\))h
(\(state\))117 1015 y(IN)155 b Fm(t)o(yp)q(e)507 b Fk(one)16
b(of)e Fj(MPI)p 1108 1015 V 15 w(STREAM)p Fk(,)g Fj(MPI)p 1391
1015 V 15 w(FIXED)f Fk(\(\014xed)j(size)g(record\),)905 1071
y(or)e Fj(MPI)p 1033 1071 V 14 w(V)m(ARIABLE)e Fk(\(v)n(ariable)h(size)i
(record\))g(\(state\))117 1143 y(IN)155 b Fm(rec)p 377 1143
14 2 v 17 w(size)446 b Fk(record)19 b(length)f(for)f(\014xed)h(size)h(record)
g(\014le,)f(and)f(maxima)o(l)905 1200 y(record)e(length)f(for)g(v)n(ariable)e
(size)j(record)g(\014le)f(\(in)o(teger\))117 1272 y(IN)155
b Fm(mo)q(de)481 b Fk(one)14 b(of)g Fj(MPI)p 1106 1272 13 2
v 14 w(PRIV)m(A)m(TE,)d(MPI)p 1387 1272 V 14 w(SHARED)905 1328
y Fk(or)j Fj(MPI)p 1033 1328 V 14 w(COLLECTIVE)f Fk(\(state\))117
1400 y(IN)155 b Fm(metho)q(d)442 b Fk(one)14 b(of)g Fj(MPI)p
1106 1400 V 14 w(UNI)f Fk(or)h Fj(MPI)p 1329 1400 V 14 w(MUL)m(TI)g
Fk(\(state\))117 1472 y(IN)155 b Fm(concurrency)362 b Fk(one)10
b(of)e Fj(MPI)p 1096 1472 V 15 w(EX)o(CLUSIVE)f Fk(or)i Fj(MPI)p
1457 1472 V 14 w(CONCURRENT)f Fk(\(state\))117 1544 y(IN)155
b Fm(comm)466 b Fk(comm)o(unicator)11 b(of)j(group)f(that)h(op)q(ens)h(the)f
(\014le)g(\(handle\))117 1616 y(OUT)108 b Fm(new)o(comm)393
b Fk(comm)o(unicator)13 b(asso)q(ciated)j(with)f(\014le)h(b)o(y)f(op)q(en)h
(op)q(eration)905 1672 y(\(handle\))75 1797 y Fh(int)47 b(MPI)p
269 1797 15 2 v 17 w(Open\(char)23 b(*filename,)f(MPI)p 859
1797 V 17 w(IO)i(status,)e(MPI)p 1210 1797 V 17 w(IO)i(action,)f(MPI)p
1562 1797 V 17 w(IO)g(position,)393 1853 y(MPI)p 468 1853 V
17 w(IO)h(type,)f(int)g(rec)p 867 1853 V 17 w(size,)g(MPI)p
1099 1853 V 17 w(IO)g(mode,)h(MPI)p 1403 1853 V 16 w(IO)g(method,)393
1910 y(MPI)p 468 1910 V 17 w(IO)g(concurrency,)e(MPI)p 939
1910 V 17 w(Comm)h(comm,)g(MPI)p 1290 1910 V 17 w(Comm)g(*newcomm\))75
1996 y(MPI)p 150 1996 V 17 w(OPEN\()g(FILENAME,)g(STATUS,)f(ACTION,)h
(POSITION,)g(TYPE,)g(REC)p 1384 1996 V 17 w(SIZE,)g(MODE,)g(METHOD,)393
2053 y(CONCURRENCY,)f(COMM,)i(NEWCOMM,)e(IERROR\))170 2109
y(CHARACTER\(*\))h(FILENAME)170 2165 y(INTEGER)g(STATUS,)g(ACTION,)g
(POSITION,)g(TYPE,)g(REC)p 1200 2165 V 17 w(SIZE,)g(MODE,)g(METHOD,)170
2222 y(CONCURRENCY,)g(COMM,)g(NEWCOMM,)g(IERROR)166 2308 y
Ft(Op)q(en)d(the)e(\014le)i(iden)o(ti\014ed)g(b)o(y)f(\014le)g(name)g
(\(path\))f Fm(\014lename)e Ft(in)j(the)g(access)g(mo)q(de)f(sp)q(eci\014ed)j
(b)o(y)75 2365 y Fm(mo)q(de)p Ft(.)c(This)d(is)g(a)g(collectiv)o(e)h(call)g
(that)e(is)h(executed)g(b)o(y)g(all)g(pro)q(cesses)g(in)h(the)e(group)h(asso)
q(ciated)g(with)75 2421 y Fm(comm)m Ft(;)k(all)j(should)g(pro)o(vide)f(the)f
(same)h(argumen)o(t)e(v)m(alues.)34 b Fm(new)o(comm)15 b Ft(returns)k(a)g
(comm)o(unicator)75 2478 y(handle)g(that)f(can)g(b)q(e)h(subsequen)o(tly)g
(used)g(to)e(access)h(the)h(op)q(ened)g(\014le.)29 b(This)19
b(new)f(comm)o(unicator)75 2534 y(should)e(not)f(b)q(e)h(used)g(for)e(an)o(y)
h(other)g(purp)q(ose.)166 2591 y(The)f(argumen)o(ts)f Fm(status,)i(action)g
Ft(and)e Fm(p)q(osition)i Ft(ha)o(v)o(e)f(the)g(same)f(meaning)h(as)g(for)f
(F)l(ortran)f(90)h([1].)75 2647 y(The)19 b Fm(p)q(osition)h
Ft(argumen)o(t)f(is)g(ignored)h(if)f(the)g(\014le)h(is)g(new)f(or)g
(replaced.)32 b(The)20 b Fm(rec)p 1539 2647 14 2 v 16 w(size)f
Ft(and)g Fm(metho)q(d)75 2704 y Ft(argumen)o(ts)14 b(are)h(ignored)h(if)g
Fm(t)o(yp)q(e)g Ft(=)f Fj(MPI)p 799 2704 13 2 v 15 w(STREAM)p
Ft(.)-32 46 y Fr(1)-32 103 y(2)-32 159 y(3)-32 215 y(4)-32
272 y(5)-32 328 y(6)-32 385 y(7)-32 441 y(8)-32 498 y(9)-40
554 y(10)-40 611 y(11)-40 667 y(12)-40 724 y(13)-40 780 y(14)-40
836 y(15)-40 893 y(16)-40 949 y(17)-40 1006 y(18)-40 1062 y(19)-40
1119 y(20)-40 1175 y(21)-40 1232 y(22)-40 1288 y(23)-40 1345
y(24)-40 1401 y(25)-40 1457 y(26)-40 1514 y(27)-40 1570 y(28)-40
1627 y(29)-40 1683 y(30)-40 1740 y(31)-40 1796 y(32)-40 1853
y(33)-40 1909 y(34)-40 1966 y(35)-40 2022 y(36)-40 2078 y(37)-40
2135 y(38)-40 2191 y(39)-40 2248 y(40)-40 2304 y(41)-40 2361
y(42)-40 2417 y(43)-40 2474 y(44)-40 2530 y(45)-40 2587 y(46)-40
2643 y(47)-40 2699 y(48)p eop
%%Page: 6 7
bop 75 -100 a Ft(6)1410 b Fp(CHAPTER)16 b(1.)34 b(IO)166 49
y Ft(The)23 b Fm(\014lename)e Ft(argumen)o(t)h(is)i(alw)o(a)o(ys)e
(signi\014can)o(t.)44 b(If)23 b(the)g(\014le)h(is)g(a)f(scratc)o(h)f(\014le)i
(\()p Fm(status)h Ft(=)75 106 y Fj(MPI)p 152 106 13 2 v 14
w(SCRA)m(TCH)p Ft(\))19 b(then)i(the)f Fm(\014lename)e Ft(is)j(signi\014can)o
(t)g(only)g(during)g(the)g(duration)f(of)g(the)g(program.)75
162 y(It)f(can)h(b)q(e)g(used)g(in)g(order)f(to)g(op)q(en)h(the)f(same)h
(scratc)o(h)e(\014le)j(sev)o(eral)e(times)h(during)g(program)e(exe-)75
219 y(cution,)j(p)q(ossibly)g(with)f(di\013eren)o(t)g(parameters)f(and)g(a)h
(di\013eren)o(t)g(group)f(of)g(pro)q(cesses.)34 b(Th)o(us,)20
b(the)75 275 y(\014rst)15 b(call)h(to)e Fm(MPI)p 392 275 14
2 v 16 w(OPEN)i Ft(with)f Fm(status)j Ft(=)d Fj(MPI)p 901 275
13 2 v 14 w(SCRA)m(TCH)f Ft(and)h(a)g(particular)h Fm(\014lename)d
Ft(v)m(alue)j(creates)75 332 y(a)k(new)h(\014le;)k(subsequen)o(t)c(calls)h
(with)f(the)g(same)f Fm(\014lename)f Ft(v)m(alue)j(op)q(en)f(the)g(existing)h
(scratc)o(h)e(\014le.)75 388 y(Implemen)o(tations)c(ma)o(y)f(restrict)g(the)g
(set)g(of)g(allo)o(w)o(able)h(names)f(for)f(scratc)o(h)h(\014les.)166
534 y Fl(Implemen)o(tati)o(on)g(note:)44 b Fk(A)16 b(p)q(ossible)g(implemen)o
(tation)d(is)j(to)f(map)g(a)g(scratc)o(h)j(\014le)e Fj(\014lename)e
Fk(in)o(to)h(a)75 590 y(Unix)e(\014le)h Fj(/tmp/\014lenam)n(e)p
Fk(.)166 736 y Ft(The)20 b(corresp)q(ondence)h(b)q(et)o(w)o(een)g(the)f(v)m
(alues)h(of)e(the)h Fm(MPI)p 1214 736 14 2 v 16 w(OPEN)h Ft(argumen)o(ts)e
(and)h(the)g Fm(mo)q(de)75 792 y Ft(parameter)14 b(of)h(the)g(P)o(osix)h
Fm(fop)q(en)g Ft(function)g(is)g(giv)o(en)f(b)o(y)g(the)h(table)f(b)q(elo)o
(w)p 75 855 1927 2 v 74 911 2 57 v 100 894 a(mo)q(de)50 b(op)q(eration)545
b Fm(ST)l(A)l(TUS)230 b(A)o(CTION)180 b(POSITION)p 2000 911
V 75 913 1927 2 v 74 969 2 57 v 100 952 a(r)141 b Ft(op)q(en)16
b(for)e(reading)397 b Fm(MPI)p 1064 952 14 2 v 15 w(OLD)193
b(MPI)p 1445 952 V 16 w(READ)123 b(MPI)p 1785 952 V 16 w(REWIND)p
2000 969 2 57 v 74 1082 2 113 v 100 1009 a(w)j Ft(create)13
b(for)f(writing;)i(if)f(\014le)h(exists,)257 1065 y(o)o(v)o(erwrite)926
1009 y Fm(MPI)p 1011 1009 14 2 v 16 w(REPLA)o(CE)129 b(MPI)p
1433 1009 V 16 w(WRITE)111 b(MPI)p 1785 1009 V 16 w(REWIND)p
2000 1082 2 113 v 74 1195 V 100 1122 a(a)135 b Ft(op)q(en)16
b(for)e(writing)i(at)f(end)h(of)e(\014le;)257 1178 y(create)h(if)h(\014le)g
(do)q(es)f(not)g(exist)907 1122 y Fm(MPI)p 992 1122 14 2 v
16 w(UNKNO)o(WN)109 b(MPI)p 1433 1122 V 16 w(WRITE)g(MPI)p
1783 1122 V 16 w(APPEND)p 2000 1195 2 113 v 74 1308 V 100 1235
a(r+)d Ft(up)q(date)19 b(existing)h(\014le)g(\(read)e(and)257
1291 y(write\))979 1235 y Fm(MPI)p 1064 1235 14 2 v 15 w(OLD)122
b(MPI)p 1374 1235 V 16 w(READ)o(WRITE)52 b(MPI)p 1785 1235
V 16 w(REWIND)p 2000 1308 2 113 v 74 1421 V 100 1348 a(w+)91
b Ft(create)22 b(new)g(\014le)h(for)f(up)q(date;)k(if)257 1404
y(\014le)16 b(exists,)f(o)o(v)o(erwrite)926 1348 y Fm(MPI)p
1011 1348 14 2 v 16 w(REPLA)o(CE)70 b(MPI)p 1374 1348 V 16
w(READ)o(WRITE)52 b(MPI)p 1785 1348 V 16 w(REWIND)p 2000 1421
2 113 v 74 1534 V 100 1460 a(a+)100 b Ft(op)q(en)17 b(for)e(up)q(date)h(at)f
(end)i(of)e(\014le;)257 1517 y(create)g(if)h(\014le)g(do)q(es)f(not)g(exist)
907 1460 y Fm(MPI)p 992 1460 14 2 v 16 w(UNKNO)o(WN)50 b(MPI)p
1374 1460 V 16 w(READ)o(WRITE)g(MPI)p 1783 1460 V 16 w(APPEND)p
2000 1534 2 113 v 75 1535 1927 2 v 166 1659 a Ft(A)18 b(\014le)h(ma)o(y)f(b)q
(e)g(op)q(ened)i(at)d(the)h(same)g(time)g(with)h(sev)o(eral)f(di\013eren)o(t)
g(comm)o(unicators.)29 b(If)18 b(the)75 1716 y(\014le)13 b(is)g(op)q(ened)h
(with)f Fm(concurrency)g(=)g(MPI)p 813 1716 14 2 v 16 w(CONCURRENT)h
Ft(then)f(MPI-IO)g(ensures)g(that)f(concurren)o(t)75 1772 y(accesses)18
b(to)g(the)g(\014le)h(are)f(atomic,)g(serializable)j(and)d(causal:)26
b(the)18 b(outcome)g(is)h(as)e(if)i(MPI-IO)g(calls)75 1829
y(w)o(ere)f(executed)g(in)h(some)f(serial)g(order,)g(compatible)h(with)f(the)
g(program)f(order.)27 b(\(This)19 b(result)f(can)75 1885 y(b)q(e)f(ac)o(hiev)
o(ed,)g(e.g.,)e(b)o(y)h(serializing)i(all)f(accesses)g(to)e(the)h(\014le)i
(at)d(a)h(unique)i(\014le)f(serv)o(er.\))22 b(If)16 b(the)g(\014le)h(is)75
1941 y(op)q(ened)e(with)f Fm(concurrency)g Ft(=)g Fj(MPI)p
696 1941 13 2 v 15 w(EX)o(CLUSIVE)d Ft(then)j(no)g(suc)o(h)g(concurrency)g
(proto)q(col)g(is)g(used.)20 b(The)75 1998 y Fj(MPI)p 152 1998
V 14 w(EX)o(CLUSIVE)d Ft(mo)q(de)j(should)g(b)q(e)g(used)g(only)g(when)f(the)
h(\014le)g(is)g(exclusiv)o(ely)h(accessed)f(with)g(one)75 2054
y(comm)o(unicator,)14 b(or)h(is)h(only)g(accessed)f(in)h(read)g(mo)q(de.)166
2117 y(When)g(a)f(\014le)h(is)g(op)q(ened)g(with)g Fm(mo)q(de)d
Ft(=)j Fj(MPI)p 962 2117 V 14 w(PRIV)m(A)m(TE)d Ft(then)i Fm(n)h
Ft(\014les)h(are)e(actually)h(op)q(ened,)g(one)75 2174 y(for)g(eac)o(h)h(pro)
q(cess)g(in)g(the)g(group.)24 b(Tw)o(o)16 b(\014les)h(op)q(ened)h(with)f(the)
g Fm(p)o(rivate)f Ft(mo)q(de)h(are)g(the)f(same)h(\014le)g(if)75
2230 y(they)e(w)o(ere)g(op)q(ened)i(with)e(the)g(same)g(name)g(and)h(b)o(y)f
(the)g(same)g(pro)q(cess.)166 2293 y(Implemen)o(tations)f(ma)o(y)e(restrict)h
(the)g(supp)q(orted)h(com)o(binations)f(of)g(argumen)o(ts)f(in)i
Fm(MPI)p 1728 2293 14 2 v 16 w(OPEN)p Ft(.)75 2350 y(F)l(or)h(example:)143
2470 y Fg(\017)23 b Ft(The)13 b(t)o(yp)q(e)h(and)g(record)g(length)g
(parameters)f(of)g(a)g(preexisting)i(\014le)g(ma)o(y)e(b)q(e)h(required)h(to)
e(matc)o(h)189 2527 y(t)o(yp)q(e)i(and)g(record)g(length)h(at)f(\014le)h
(creation.)143 2647 y Fg(\017)23 b Ft(Priv)m(ate)15 b(mo)q(de)g(\()p
Fm(m)o(o)q(de)e Ft(=)i Fj(MPI)p 732 2647 13 2 v 14 w(PRIV)m(A)m(TE)p
Ft(\))d(ma)o(y)i(b)q(e)h(supp)q(orted)g(only)h(for)e(scratc)o(h)g(\014les)i
(\()e Fm(status)189 2704 y Ft(=)h Fj(SCRA)m(TCH)p Ft(\),)e(whic)o(h)j(disapp)
q(ear)h(at)d(the)h(end)h(of)f(the)g(program)f(execution.)1967
46 y Fr(1)1967 103 y(2)1967 159 y(3)1967 215 y(4)1967 272 y(5)1967
328 y(6)1967 385 y(7)1967 441 y(8)1967 498 y(9)1959 554 y(10)1959
611 y(11)1959 667 y(12)1959 724 y(13)1959 780 y(14)1959 836
y(15)1959 893 y(16)1959 949 y(17)1959 1006 y(18)1959 1062 y(19)1959
1119 y(20)1959 1175 y(21)1959 1232 y(22)1959 1288 y(23)1959
1345 y(24)1959 1401 y(25)1959 1457 y(26)1959 1514 y(27)1959
1570 y(28)1959 1627 y(29)1959 1683 y(30)1959 1740 y(31)1959
1796 y(32)1959 1853 y(33)1959 1909 y(34)1959 1966 y(35)1959
2022 y(36)1959 2078 y(37)1959 2135 y(38)1959 2191 y(39)1959
2248 y(40)1959 2304 y(41)1959 2361 y(42)1959 2417 y(43)1959
2474 y(44)1959 2530 y(45)1959 2587 y(46)1959 2643 y(47)1959
2699 y(48)p eop
%%Page: 7 8
bop 75 -100 a Fp(1.4.)34 b(FILE)16 b(MANIPULA)l(TION)g(FUNCTIONS)893
b Ft(7)166 49 y Fl(Discussion:)39 b Fk(It)16 b(is)f(usually)f(feasible)h(to)g
(ha)o(v)o(e)g(consisten)o(t)i(organizations)d(for)h(stream)g(\014les)g(and)h
(\014xed)75 106 y(record)f(\014les;)f(v)n(ariable)f(record)i(\014les)f
(require)h(additional)d(structure.)166 255 y Ft(The)j(new)h(comm)o(unicator)f
(has)g(the)g(same)g(comm)o(unication)h(group)f(as)f(the)i(old)g(comm)o
(unicator.)166 405 y Fl(Implemen)o(tati)o(on)h(note:)53 b Fk(The)19
b(new)g(comm)o(unicator)c(ma)o(y)h(ha)o(v)o(e)i(additional)f(cac)o(hed)i
(information)75 462 y(\(suc)o(h)c(as)f(a)f(\014le)h(descriptor)h(or)f(a)g
(comm)o(unicator)d(to)j(comm)o(unicate)d(with)j(the)g(\014le)g(serv)o
(er\(s\)\).)166 694 y Fl(Discussion:)44 b Fk(The)17 b(requiremen)o(t)f(that)h
(the)g(new)f(comm)o(unicator)e(ha)o(v)o(e)i(the)h(same)f(group)g(as)h(the)g
(old)75 750 y(one)i(imp)q(oses)f(some)g(o)o(v)o(erhead)i(\(one)f(could,)h
(otherwise,)g(put)f(the)h(\014le)f(serv)o(er\(s\))i(as)e(mem)o(b)q(ers)f(of)g
(the)i(new)75 807 y(comm)o(unication)15 b(group\).)32 b(Ho)o(w)o(ev)o(er,)20
b(it)e(seems)h(more)f(elegan)o(t)g(that)h(the)g(ob)r(ject)h(visible)e(to)g
(the)h(user)h(\(the)75 863 y(new)d(comm)o(unicator\))d(has)i(no)h(visible)e
(information)f(on)i(\014le)h(serv)o(ers,)h(and)e(that)h(it)f(represen)o(ts)j
(the)e(group)g(of)75 920 y(pro)q(cesses)g(that)c(are)i(in)o(v)o(olv)o(ed)d
(in)i(collectiv)o(e)g(I/O)g(op)q(erations.)75 1117 y Fm(MPI)p
160 1117 14 2 v 16 w(REOPEN\()i(action,)f(p)q(osition,)h(mo)q(de,)d(metho)q
(d,)g(concurrency)l(,)j(comm)m(\))117 1205 y Fk(IN)155 b Fm(action)472
b Fk(one)14 b(of)f Fj(MPI)p 1105 1205 13 2 v 14 w(READ,)g(MPI)p
1329 1205 V 14 w(WRITE)p Fk(,)f(or)i Fj(MPI)p 1624 1205 V 14
w(READ)o(WRITE)905 1261 y Fk(\(state\))117 1357 y(IN)155 b
Fm(p)q(osition)439 b Fk(one)10 b(of)e Fj(MPI)p 1096 1357 V
15 w(ASIS)p Fk(,)g Fj(MPI)p 1292 1357 V 14 w(REWIND)h Fk(or)g
Fj(MPI)p 1598 1357 V 15 w(APPEND)f Fk(\(state\))117 1454 y(IN)155
b Fm(mo)q(de)481 b Fk(one)119 b(of)f Fj(MPI)p 1315 1454 V 14
w(PRIV)m(A)m(TE,)e(MPI)p 1701 1454 V 14 w(SHARED)905 1510 y
Fk(or)14 b Fj(MPI)p 1033 1510 V 14 w(COLLECTIVE)f Fk(\(state\))117
1607 y(IN)155 b Fm(metho)q(d)442 b Fk(one)14 b(of)g Fj(MPI)p
1106 1607 V 14 w(UNI)f Fk(or)h Fj(MPI)p 1329 1607 V 14 w(MUL)m(TI)g
Fk(\(state\))117 1703 y(IN)155 b Fm(concurrency)362 b Fk(one)10
b(of)e Fj(MPI)p 1096 1703 V 15 w(EX)o(CLUSIVE)f Fk(or)i Fj(MPI)p
1457 1703 V 14 w(CONCURRENT)f Fk(\(state\))117 1799 y(INOUT)62
b Fm(comm)466 b Fk(comm)o(unicator)11 b(of)j(group)f(that)h(op)q(ens)h(the)f
(\014le)g(\(handle\))75 1934 y Fh(int)47 b(MPI)p 269 1934 15
2 v 17 w(reopen\()23 b(MPI)p 549 1934 V 17 w(IO)g(action,)g(MPI)p
900 1934 V 17 w(IO)h(position,)e(MPI)p 1299 1934 V 17 w(IO)i(mode,)f(MPI)p
1603 1934 V 17 w(IO)g(method,)393 1991 y(MPI)p 468 1991 V 17
w(IO)h(concurrency,)e(MPI)p 939 1991 V 17 w(Comm)h(*comm\))75
2088 y(MPI)p 150 2088 V 17 w(REOPEN\()g(ACTION,)g(POSITION,)f(MODE,)h
(METHOD,)g(CONCURRENCY,)g(COMM,)g(IERROR\))170 2144 y(INTEGER)g(ACTION,)g
(POSITION,)g(MODE,)g(METHOD,)g(CONCURRENCY,)f(COMM,)h(IERROR)166
2241 y Ft(Reop)q(ens)16 b(an)f(already)h(op)q(ened)g(\014le,)g(p)q(ossibly)g
(c)o(hanging)g(the)f(action,)g(p)q(osition,)h(mo)q(de,)f(metho)q(d)75
2298 y(and)21 b(concurrency)g(parameters.)36 b(This)21 b(op)q(eration)g(is)g
(equiv)m(alen)o(t)h(to)e(closing)i(and)f(op)q(ening)h(a)e(\014le)75
2354 y(anew,)14 b(but)h(it)g(allo)o(ws)g(to)f(preserv)o(e)h(the)g(use)g(of)g
(the)f(same)h(comm)o(unicator,)f(preserv)o(e)h(the)g(\014le)g(p)q(oin)o(ter)
75 2411 y(p)q(osition)g(\(using)27 b Fm(p)q(osition)15 b Ft(=)e
Fj(MPI)p 683 2411 13 2 v 15 w(ASIS)p Ft(\))f(and)i(a)o(v)o(oid)f(sp)q
(ecifying)i(anew)f(the)f(parameters)g(that)g(do)g(not)75 2467
y(c)o(hange)k(\(\014le)h(name,)f(t)o(yp)q(e)g(and)g(record)h(length\).)25
b(The)18 b Fm(metho)q(d)d Ft(argumen)o(ts)i(is)g(the)g(\014le)h(is)g(a)f
(stream)75 2524 y(\014le.)166 2591 y(MPI-IO)d(do)q(es)g(not)f(pro)o(vide)h
(an)g(explicit)h Fm(CLOSE)f Ft(function.)20 b(A)14 b(\014le)g(is)g(closed)h
(when)f(all)g(comm)o(u-)75 2647 y(nicators)h(that)g(w)o(ere)g(asso)q(ciated)h
(to)e(the)i(\014le)g(b)o(y)f(calls)i(to)e Fm(MPI)p 1181 2647
14 2 v 15 w(OPEN)i Ft(or)d Fm(MPI)p 1471 2647 V 16 w(REOPEN)j
Ft(ha)o(v)o(e)e(b)q(een)75 2704 y(freed)h(\(b)o(y)e(calling)j
Fm(MPI)p 497 2704 V 16 w(COMM)p 655 2704 V 16 w(FREE)p Ft(\).)-32
46 y Fr(1)-32 103 y(2)-32 159 y(3)-32 215 y(4)-32 272 y(5)-32
328 y(6)-32 385 y(7)-32 441 y(8)-32 498 y(9)-40 554 y(10)-40
611 y(11)-40 667 y(12)-40 724 y(13)-40 780 y(14)-40 836 y(15)-40
893 y(16)-40 949 y(17)-40 1006 y(18)-40 1062 y(19)-40 1119
y(20)-40 1175 y(21)-40 1232 y(22)-40 1288 y(23)-40 1345 y(24)-40
1401 y(25)-40 1457 y(26)-40 1514 y(27)-40 1570 y(28)-40 1627
y(29)-40 1683 y(30)-40 1740 y(31)-40 1796 y(32)-40 1853 y(33)-40
1909 y(34)-40 1966 y(35)-40 2022 y(36)-40 2078 y(37)-40 2135
y(38)-40 2191 y(39)-40 2248 y(40)-40 2304 y(41)-40 2361 y(42)-40
2417 y(43)-40 2474 y(44)-40 2530 y(45)-40 2587 y(46)-40 2643
y(47)-40 2699 y(48)p eop
%%Page: 8 9
bop 75 -100 a Ft(8)1410 b Fp(CHAPTER)16 b(1.)34 b(IO)75 49
y Fm(MPI)p 160 49 14 2 v 16 w(GET)p 264 49 V 17 w(FILE\(com)o(m)m(,)22
b(exist,)k(\014lename,)d(action,)j(p)q(osition,)h(t)o(yp)q(e,)f(rec)p
1378 49 V 17 w(size,)f(concurrency)l(,)i(mode,)75 106 y(metho)q(d\))117
185 y Fk(IN)155 b Fm(comm)466 b Fk(comm)o(unicator)11 b(attac)o(hed)k(to)f
(\014le)f(\(handle\))117 264 y(OUT)108 b Fm(exist)502 b Fj(true)11
b Fk(if)d(\014le)i(is)f(attac)o(hed)h(to)f(comm)o(unicator,)18
b Fj(false)9 b Fk(otherwise)117 344 y(OUT)108 b Fm(\014lename)428
b Fk(name)13 b(of)g(op)q(ened)i(\014le)f(\(string\))117 423
y(OUT)108 b Fm(action)472 b Fk(one)14 b(of)f Fj(MPI)p 1105
423 13 2 v 14 w(READ,)g(MPI)p 1329 423 V 14 w(WRITE)p Fk(,)f(or)i
Fj(MPI)p 1624 423 V 14 w(READ)o(WRITE)905 480 y Fk(\(state\))117
559 y(OUT)108 b Fm(p)q(osition)439 b Fk(one)11 b(of)e Fj(MPI)p
1098 559 V 15 w(REWIND)h Fk(\(start)h(of)e(\014le\),)i Fj(MPI)p
1607 559 V 14 w(APPEND)e Fk(\(end)905 615 y(of)k(\014le\))i(or)e
Fj(MPI)p 1163 615 V 15 w(ASIS)g Fk(\(none)h(of)f(the)i(ab)q(o)o(v)o(e\))f
(\(state\))117 695 y(OUT)108 b Fm(t)o(yp)q(e)507 b Fk(one)16
b(of)e Fj(MPI)p 1108 695 V 15 w(STREAM)p Fk(,)g Fj(MPI)p 1391
695 V 15 w(FIXED)f Fk(\(\014xed)j(size)g(record\),)905 751
y(or)e Fj(MPI)p 1033 751 V 14 w(V)m(ARIABLE)e Fk(\(v)n(ariable)h(size)i
(record\))g(\(state\))117 831 y(OUT)108 b Fm(rec)p 377 831
14 2 v 17 w(size)446 b Fk(record)19 b(length)f(for)f(\014xed)h(size)h(record)
g(\014le,)f(and)f(maxima)o(l)905 887 y(record)e(length)f(for)g(v)n(ariable)e
(size)j(record)g(\014le)f(\(in)o(teger\))117 967 y(OUT)108
b Fm(mo)q(de)481 b Fk(one)119 b(of)f Fj(MPI)p 1315 967 13 2
v 14 w(PRIV)m(A)m(TE,)e(MPI)p 1701 967 V 14 w(SHARED)905 1023
y Fk(or)14 b Fj(MPI)p 1033 1023 V 14 w(COLLECTIVE)f Fk(\(state\))117
1102 y(OUT)108 b Fm(metho)q(d)442 b Fk(one)14 b(of)g Fj(MPI)p
1106 1102 V 14 w(UNI)f Fk(or)h Fj(MPI)p 1329 1102 V 14 w(MUL)m(TI)g
Fk(\(state\))117 1182 y(OUT)108 b Fm(concurrency)362 b Fk(one)10
b(of)e Fj(MPI)p 1096 1182 V 15 w(EX)o(CLUSIVE)f Fk(or)i Fj(MPI)p
1457 1182 V 14 w(CONCURRENT)f Fk(\(state\))75 1308 y Fh(int)47
b(MPI)p 269 1308 15 2 v 17 w(Get)p 358 1308 V 17 w(file\()23
b(MPI)p 590 1308 V 17 w(Comm)g(comm,)g(int)h(*exist,)f(char)g(*filename,)393
1365 y(MPI)p 468 1365 V 17 w(IO)h(*action,)e(MPI)p 843 1365
V 17 w(IO)i(*position,)e(MPI)p 1266 1365 V 17 w(IO)i(*type,)f(int)g(*rec)p
1713 1365 V 17 w(size,)393 1421 y(MPI)p 468 1421 V 17 w(IO)h(*mode,)f(MPI)p
796 1421 V 16 w(IO)h(*method)f(,)h(MPI)p 1195 1421 V 16 w(IO)g
(*concurrency\))75 1510 y(MPI)p 150 1510 V 17 w(GET)p 239 1510
V 17 w(FILE\()f(COMM,)g(EXIST,)g(FILENAME,)g(ACTION,)f(POSITION,)h(TYPE,)g
(REC)p 1592 1510 V 17 w(SIZE,)g(MODE,)393 1566 y(METHOD,)g(CONCURRENCY,)f
(IERROR\))170 1623 y(INTEGER)h(COMM,)h(ACTION,)e(POSITION,)h(TYPE,)g(REC)p
1152 1623 V 17 w(SIZE,)g(MODE,)g(METHOD,)170 1679 y(CONCURRENCY,)g(IERROR)170
1736 y(LOGICAL)g(EXIST)170 1792 y(CHARACTER\(*\))g(FILENAME)166
1881 y Ft(Query)d(whether)f(an)g(op)q(en)h(\014le)h(is)f(curren)o(tly)f
(attac)o(hed)g(with)h(comm)o(unicator)f Fm(comm)m Ft(.)29 b(If)20
b(y)o(es,)75 1937 y(returns)14 b Fm(exist)i(=)f(true)g Ft(and)g(returns)f(in)
i(the)e(remaining)i(parameters)e(information)h(on)f(the)h(\014le.)21
b(If)14 b(no,)75 1994 y Fm(exist)i(=)g(false)f Ft(is)h(returned,)f(and)g(the)
g(v)m(alue)i(of)e(the)g(remaining)h(argumen)o(ts)f(is)g(unde\014ned.)166
2052 y(A)23 b(\014le)g(is)h(p)q(ositioned)g(at)e(start)g(of)g(\014le)i(\()e
Fm(p)q(osition)i Ft(=)f Fj(MPI)p 1250 2052 13 2 v 14 w(REWIND)p
Ft(\))f(if)i(the)e(\014le)i(p)q(oin)o(ter)f(is)75 2109 y(p)q(ositioned)18
b(at)e(the)h(\014rst)g(b)o(yte)f(in)i(a)e(stream)g(\014le)i(or)e(\014rst)g
(record)h(in)h(a)e(record)h(\014le.)25 b(It)17 b(is)g(p)q(ositioned)75
2165 y(at)f(the)h(end)g(of)g(\014le)g(\()g Fm(p)q(osition)h
Ft(=)f Fj(MPI)p 757 2165 V 14 w(APPEND)p Ft(\))e(if)i(it)g(is)h(at)e(the)g
(\014rst)h(record)f(\(\014rst)g(b)o(yte\))h(past)f(the)75 2221
y(signi\014can)o(t)g(records)f(\(b)o(ytes\))g(in)h(the)f(\014le.)21
b(Otherwise,)15 b(the)h(p)q(osition)g(returned)g(is)f Fj(MPI)p
1611 2221 V 15 w(ASIS)p Ft(.)166 2280 y(MPI-IO)d(do)q(es)f(not)f(pro)o(vide)h
(a)g(mec)o(hanism)g(for)g(allo)o(wing)g(a)g(pro)q(cess)g(to)f(inquire)i
(whether)f(another)75 2337 y(pro)q(cess)k(has)h(op)q(ened)g(a)f(named)g
(\014le.)166 2478 y Fl(Discussion:)32 b Fk(The)12 b(curren)o(t)h
(de\014nition)e(of)g(MPI-IO)h(allo)o(ws)e(for)h(a)h(distributed)g(implemen)o
(tati)o(on,)d(where)75 2534 y(only)14 b(those)i(pro)q(cesses)i(that)e(op)q
(en)f(a)g(\014le)g(are)h(in)o(v)o(olv)o(ed)e(in)h(the)g(op)q(en)h(op)q
(eration.)22 b(An)15 b(implemen)o(tation,)d(that)75 2591 y(uses)18
b(a)f(globally)e(kno)o(wn)i(serv)o(er)i(for)e(eac)o(h)g(\014le,)h(will)e
(allo)o(w)f(to)i(supp)q(ort)h(additional)e(queries)i(\(e.g.,)f(c)o(hec)o
(king)75 2647 y(whether)j(a)e(\014le)h(has)g(b)q(een)g(op)q(ened)h(b)o(y)e
(another)i(pro)q(cess\),)h(and)d(will)f(allo)o(w)g(to)i(test)h(that)e(the)i
Fj(concurrency)75 2704 y Fk(argumen)o(t)13 b(is)h(used)g(correctly)m(,)g(but)
h(it)e(ma)o(y)f(cause)j(p)q(erformance)f(b)q(ottlenec)o(ks.)1967
46 y Fr(1)1967 103 y(2)1967 159 y(3)1967 215 y(4)1967 272 y(5)1967
328 y(6)1967 385 y(7)1967 441 y(8)1967 498 y(9)1959 554 y(10)1959
611 y(11)1959 667 y(12)1959 724 y(13)1959 780 y(14)1959 836
y(15)1959 893 y(16)1959 949 y(17)1959 1006 y(18)1959 1062 y(19)1959
1119 y(20)1959 1175 y(21)1959 1232 y(22)1959 1288 y(23)1959
1345 y(24)1959 1401 y(25)1959 1457 y(26)1959 1514 y(27)1959
1570 y(28)1959 1627 y(29)1959 1683 y(30)1959 1740 y(31)1959
1796 y(32)1959 1853 y(33)1959 1909 y(34)1959 1966 y(35)1959
2022 y(36)1959 2078 y(37)1959 2135 y(38)1959 2191 y(39)1959
2248 y(40)1959 2304 y(41)1959 2361 y(42)1959 2417 y(43)1959
2474 y(44)1959 2530 y(45)1959 2587 y(46)1959 2643 y(47)1959
2699 y(48)p eop
%%Page: 9 10
bop 75 -100 a Fp(1.5.)34 b(INDIVIDUAL)17 b(I/O)1298 b Ft(9)75
49 y Fu(1.5)59 b(Individual)19 b(I/O)75 151 y Ft(The)13 b(functions)h(in)g
(this)g(section)f(apply)h(to)f(\014les)h(op)q(ened)g(in)g(the)f
Fj(PRIV)m(A)m(TE)e Ft(or)h Fj(SHARED)h Ft(mo)q(des.)20 b(These)75
207 y(functions)i(are)f(executed)h(individuall)q(y)i(b)o(y)d(pro)q(cesses)h
(that)e(ha)o(v)o(e)h(access)g(to)g(the)g(\014le.)39 b(They)21
b(are)75 264 y(\\lo)q(cal",)i(in)f(the)g(sense)g(that)e(their)i(completion)h
(do)q(es)e(not)g(dep)q(end)i(on)f(an)o(y)f(activit)o(y)g(of)g(another)75
320 y(computation)15 b(pro)q(cess.)75 439 y Fo(1.5.1)49 b(Data)17
b(access)75 572 y Fm(MPI)p 160 572 14 2 v 16 w(READ\(bu\013er,)e(count,)h(t)o
(yp)q(e,)g(comm)m(,)c(status\))117 649 y Fk(OUT)124 b Fm(bu\013er)462
b Fk(initial)12 b(address)j(of)f(bu\013er)g(where)i(data)d(is)h(put)g(\(c)o
(hoice\))117 722 y(IN)171 b Fm(count)466 b Fk(n)o(um)o(b)q(er)13
b(of)h(elemen)o(ts)f(read)i(\(in)o(teger\))117 794 y(IN)171
b Fm(t)o(yp)q(e)491 b Fk(datat)o(yp)q(e)14 b(of)g(eac)o(h)g(elemen)o(t)f
(read)i(\(handle\))117 866 y(IN)171 b Fm(comm)450 b Fk(comm)o(unicator)7
b(for)i(\014le)g(access)i(that)e(w)o(as)g(returned)i(b)o(y)e
Fj(MPI)p 1865 866 13 2 v 15 w(OPEN)905 923 y Fk(\(handle\))117
995 y(OUT)124 b Fm(status)460 b Fk(return)15 b(status)g(of)e(read)i(op)q
(eration)e(\(Status\))75 1119 y Fh(int)47 b(MPI)p 269 1119
15 2 v 17 w(Read\(void*)23 b(buffer,)f(int)i(count,)f(MPI)p
1074 1119 V 17 w(Datatype)g(type,)g(MPI)p 1521 1119 V 16 w(Comm)h(comm,)393
1176 y(MPI)p 468 1176 V 17 w(Status)f(*status\))75 1262 y(MPI)p
150 1262 V 17 w(READ\(BUFFER,)f(COUNT,)h(TYPE,)g(COMM,)g(STATUS,)g(IERROR\))
170 1319 y(<type>)g(BUFFER\(*\))170 1375 y(INTEGER)g(COUNT,)g(TYPE,)h(COMM,)f
(STATUS\(MPI)p 1058 1375 V 16 w(STATUS)p 1218 1375 V 16 w(SIZE\),)g(IERROR)
166 1462 y Ft(The)16 b(sequence)i(of)e(v)m(alues)h(sp)q(eci\014ed)i(b)o(y)d
(the)g(t)o(yp)q(e)g(signature)h(of)f Fm(t)o(yp)q(e,)h(count)g
Ft(is)g(read)f(from)g(the)75 1518 y(\014le)k(asso)q(ciated)f(with)g
Fm(comm)m Ft(,)d(and)j(is)g(stored)f(in)i(the)f(comm)o(unication)g(bu\013er)g
(sp)q(eci\014ed)i(b)o(y)d Fm(bu\013er,)75 1574 y(t)o(yp)q(e,)d(count)p
Ft(.)21 b(Arbitrary)15 b(deriv)o(ed)g(datat)o(yp)q(es)f(can)h(b)q(e)g(used.)
20 b(This)15 b(function)h(can)e(b)q(e)i(called)g(for)e(a)g(\014le)75
1631 y(op)q(ened)i(in)g(priv)m(ate)g(or)f(shared)g(mo)q(des.)166
1687 y(Let)f Fm(t)o(yp)q(e)p 329 1687 14 2 v 17 w(size)h Ft(b)q(e)f(the)g(n)o
(um)o(b)q(er)g(of)g(b)o(ytes)f(for)h(the)g(t)o(yp)q(e)g(signature)g(of)f
Fm(t)o(yp)q(e)p Ft(;)i(let)f Fm(size)f Ft(=)g Fm(t)o(yp)q(e)p
1772 1687 V 18 w(size)7 b Fg(\001)75 1744 y Fm(count)p Ft(.)166
1800 y(On)15 b(a)g(stream)f(\014le,)h(the)g(call)h(causes)f
Fm(size)g Ft(b)o(ytes)g(to)f(b)q(e)h(read)g(from)f(the)h(\(priv)m(ate)g(or)g
(shared\))f(\014le;)75 1857 y(the)e(\(priv)m(ate)h(or)e(shared\))h(\014le)h
(p)q(oin)o(ter)g(is)f(incremen)o(ted)i(b)o(y)e Fm(size)p Ft(.)19
b(If)12 b(less)h(than)e Fm(size)i Ft(b)o(ytes)f(are)f(a)o(v)m(ailable)75
1913 y(to)k(the)g(end)h(of)e(the)i(\014le,)g(then)f(an)g(end-of-\014le)i
(error)e(indication)i(is)e(returned.)166 1970 y(On)21 b(a)f(record)h(\014le)h
(accessed)f(with)g Fm(uni)g Ft(metho)q(d)g Fm(size)g Ft(b)o(ytes)f(will)j(b)q
(e)e(read)f(from)g(the)h(curren)o(t)75 2026 y(record)14 b(and)g(the)g(\014le)
h(p)q(oin)o(ter)f(is)h(incremen)o(ted)g(b)o(y)f(one.)19 b(If)14
b(less)h(than)f Fm(size)g Ft(b)o(ytes)f(are)h(a)o(v)m(ailable)i(to)d(the)75
2083 y(end)i(of)f(record)h(then)f(the)h(call)h(returns)e(an)g(end-of-record)i
(error)d(indication;)k(if)e(the)f(\014le)i(p)q(oin)o(ter)f(is)g(at)75
2139 y(end-of-\014le)i(then)e(the)h(call)g(returns)f(an)g(end-of-\014le)i
(error)e(indication.)166 2195 y(On)i(a)g(record)g(\014le)h(accessed)f(with)g
(the)g Fm(multi)e Ft(metho)q(d)i Fm(t)o(yp)q(e)p 1230 2195
V 17 w(size)g Ft(b)o(ytes)g(will)i(b)q(e)e(accessed)h(from)75
2252 y(eac)o(h)g(of)g Fm(count)i Ft(consecutiv)o(e)f(records;)h(the)e(\014le)
i(p)q(oin)o(ter)f(is)g(incremen)o(ted)g(b)o(y)g Fm(count)p
Ft(.)30 b(If)19 b(an)o(y)f(of)g(the)75 2308 y(records)d(accessed)g(con)o
(tains)h(less)f(than)g Fm(t)o(yp)q(e)p 862 2308 V 17 w(size)h
Ft(b)o(ytes)e(then)i(an)f(end-of-record)g(error)g(indication)h(is)75
2365 y(returned;)i(if)g(less)f(than)g Fm(count)i Ft(records)e(are)g(a)o(v)m
(ailable)h(to)f(the)g(end)h(of)e(the)i(\014le,)g(then)f(an)g(end-of-\014le)75
2421 y(error)d(indication)k(is)d(returned.)166 2478 y(MPI-IO)c(do)q(es)g(not)
f(sp)q(ecify)i(the)e(v)m(alues)i(returned)f(b)o(y)f(a)g(call)i(to)d
Fm(MPI)p 1341 2478 V 16 w(READ)i Ft(that)f(encoun)o(tered)h(an)75
2534 y(end-of-\014le)j(or)d(end-of-record)i(error;)f(nor)g(do)q(es)g(it)h(sp)
q(ecify)g(the)f(lo)q(cation)h(of)f(the)g(\014le)h(p)q(oin)o(ter)g(if)f(an)g
(end-)75 2591 y(of-\014le)17 b(error)e(o)q(ccurred.)22 b(The)16
b(status)f(parameter)g(can)h(b)q(e)h(queried)g(b)o(y)f(a)f(call)i(to)f
Fm(MPI)p 1601 2591 V 15 w(GET)p 1704 2591 V 17 w(COUNT)75 2647
y Ft(or)f Fm(MPI)p 216 2647 V 16 w(GET)p 320 2647 V 17 w(ELEMENTS)h
Ft(in)h(order)e(to)h(\014nd)g(the)g(n)o(um)o(b)q(er)h(of)e(en)o(tries)i(\(of)
e(t)o(yp)q(e)h Fm(t)o(yp)q(e)p Ft(\))g(or)g(the)g(n)o(um-)75
2704 y(b)q(er)i(of)f(basic)h(elemen)o(ts)h(actually)f(read)g(\(see)f([4)o(,)h
(3.13.5]\),)d(when)j(end-of-\014le)i(or)d(end-of-record)h(w)o(as)-32
46 y Fr(1)-32 103 y(2)-32 159 y(3)-32 215 y(4)-32 272 y(5)-32
328 y(6)-32 385 y(7)-32 441 y(8)-32 498 y(9)-40 554 y(10)-40
611 y(11)-40 667 y(12)-40 724 y(13)-40 780 y(14)-40 836 y(15)-40
893 y(16)-40 949 y(17)-40 1006 y(18)-40 1062 y(19)-40 1119
y(20)-40 1175 y(21)-40 1232 y(22)-40 1288 y(23)-40 1345 y(24)-40
1401 y(25)-40 1457 y(26)-40 1514 y(27)-40 1570 y(28)-40 1627
y(29)-40 1683 y(30)-40 1740 y(31)-40 1796 y(32)-40 1853 y(33)-40
1909 y(34)-40 1966 y(35)-40 2022 y(36)-40 2078 y(37)-40 2135
y(38)-40 2191 y(39)-40 2248 y(40)-40 2304 y(41)-40 2361 y(42)-40
2417 y(43)-40 2474 y(44)-40 2530 y(45)-40 2587 y(46)-40 2643
y(47)-40 2699 y(48)p eop
%%Page: 10 11
bop 75 -100 a Ft(10)1387 b Fp(CHAPTER)16 b(1.)34 b(IO)75 49
y Ft(encoun)o(tered.)d(If)19 b Fm(MPI)p 491 49 14 2 v 16 w(GET)p
595 49 V 17 w(COUNT)g Ft(\(resp.)g Fm(MPI)p 1000 49 V 15 w(GET)p
1103 49 V 17 w(ELEMENT)p Ft(\))f(returns)h Fm(n)g Ft(then)g(the)g(\014rst)g
Fm(n)75 106 y Ft(en)o(tries)i(\(resp.)e(the)i(\014rst)f Fm(n)g
Ft(basic)h(elemen)o(ts\))g(of)f(the)g(receiv)o(e)h(bu\013er)f(w)o(ere)g
(correctly)h(up)q(dated)g(b)o(y)75 162 y(the)d(I/O)f(op)q(eration.)27
b(The)18 b(remaining)g(en)o(tries)g(\(elemen)o(ts\))g(of)f(the)g(receiv)o(e)i
(bu\013er)e(ma)o(y)g(ha)o(v)o(e)g(b)q(een)75 219 y(partially)f(or)f(totally)g
(mo)q(di\014ed,)h(to)q(o,)e(b)o(y)i(the)f(read.)166 276 y(The)f(error)f
(handler)h(attac)o(hed)f(with)h(the)g(comm)o(unicator)f(is)h(in)o(v)o(ok)o
(ed)g(if)g(an)f(error)g(o)q(ccurs)h(during)75 332 y(the)k(call.)30
b(The)19 b(standard)e(MPI)i(error)e(handler)i(considers)g(end-of-\014le)h(or)
e(end-of-record)h(errors)e(on)75 389 y(read)i(to)g(b)q(e)h(non-fatal)g(and)f
(has)g(no)h(e\013ect.)32 b(The)20 b(user)f(can)h(c)o(hange)f(this)h(b)q(eha)o
(vior)g(b)o(y)f(attac)o(hing)75 445 y(another)c(error)f(handler.)166
502 y(The)20 b(use)f(of)g(deriv)o(ed)i(datat)o(yp)q(es)d(allo)o(ws)i
(scattering)f(of)g(con)o(tiguous)h(data)e(from)h(the)h(\014le)g(in)o(to)75
559 y(non-con)o(tiguous)c(lo)q(cations)g(in)g(the)f(reader's)g(memory)l(.)75
663 y Fm(MPI)p 160 663 V 16 w(WRITE\(bu\013er,)f(count,)j(t)o(yp)q(e,)e(comm)
n(,)c(status\))117 741 y Fk(OUT)124 b Fm(bu\013er)462 b Fk(initial)12
b(address)j(of)f(bu\013er)g(to)g(write)g(from)f(\(c)o(hoice\))117
817 y(IN)171 b Fm(count)466 b Fk(n)o(um)o(b)q(er)13 b(of)h(elemen)o(ts)f
(written)i(\(in)o(teger\))117 893 y(IN)171 b Fm(t)o(yp)q(e)491
b Fk(datat)o(yp)q(e)14 b(of)g(eac)o(h)g(elemen)o(t)f(written)i(\(handle\))117
970 y(IN)171 b Fm(comm)450 b Fk(comm)o(unicator)7 b(for)i(\014le)g(access)i
(that)e(w)o(as)g(returned)i(b)o(y)e Fj(MPI)p 1865 970 13 2
v 15 w(OPEN)905 1026 y Fk(\(handle\))117 1102 y(OUT)124 b Fm(status)460
b Fk(return)15 b(status)g(of)e(write)h(op)q(eration)g(\(Status\))75
1227 y Fh(int)47 b(MPI)p 269 1227 15 2 v 17 w(Write\(void*)22
b(buffer,)h(int)h(count,)f(MPI)p 1098 1227 V 17 w(Datatype)f(type,)i(MPI)p
1545 1227 V 16 w(Comm)g(comm,)393 1284 y(MPI)p 468 1284 V 17
w(Status)f(*status\))75 1371 y(MPI)p 150 1371 V 17 w(WRITE\(BUFFER,)f(COUNT,)
h(TYPE,)g(COMM,)g(STATUS,)g(IERROR\))170 1427 y(<type>)g(BUFFER\(*\))170
1484 y(INTEGER)g(COUNT,)g(TYPE,)h(COMM,)f(STATUS\(MPI)p 1058
1484 V 16 w(STATUS)p 1218 1484 V 16 w(SIZE\),)g(IERROR)166
1571 y Ft(The)f(data)f(con)o(tained)i(in)f(the)g(comm)o(unication)h(bu\013er)
f(sp)q(eci\014ed)i(b)o(y)e Fm(bu\013er,)h(t)o(yp)q(e,)h(count)f
Ft(is)75 1627 y(written)c(on)o(to)f(the)h(\014le)h(sp)q(eci\014ed)h(b)o(y)e
Fm(comm)m Ft(.)29 b(Arbitrary)18 b(deriv)o(ed)i(datat)o(yp)q(es)f(can)g(b)q
(e)h(used.)31 b(This)75 1684 y(function)16 b(can)f(b)q(e)h(called)h(for)e(a)f
(\014le)j(op)q(ened)f(in)g(priv)m(ate)g(or)f(shared)g(mo)q(des.)166
1741 y(Let)f Fm(t)o(yp)q(e)p 329 1741 14 2 v 17 w(size)h Ft(b)q(e)f(the)g(n)o
(um)o(b)q(er)g(of)g(b)o(ytes)f(for)h(the)g(t)o(yp)q(e)g(signature)g(of)f
Fm(t)o(yp)q(e)p Ft(;)i(let)f Fm(size)f Ft(=)g Fm(t)o(yp)q(e)p
1772 1741 V 18 w(size)7 b Fg(\001)75 1797 y Fm(count)p Ft(.)166
1854 y(On)23 b(a)f(stream)f(\014le,)k Fm(size)d Ft(b)o(ytes)g(are)g(written)g
(and)h(the)f(\(priv)m(ate)h(or)e(shared\))h(\014le)i(p)q(oin)o(ter)e(is)75
1911 y(incremen)o(ted)16 b(b)o(y)g Fm(size)p Ft(.)k(An)15 b(end-of-\014le)i
(error)d(is)i(rep)q(orted)g(if)f(the)g(maxim)o(um)h(\014le)g(size)g(is)g
(exceeded.)166 1968 y(On)f(a)f(record)g(\014le)i(accessed)f(with)f
Fm(uni)h Ft(metho)q(d,)g Fm(size)f Ft(b)o(ytes)h(are)f(written)g(on)g(the)h
(curren)o(t)f(record)75 2024 y(and)c(the)h(\014le)g(p)q(oin)o(ter)g(is)f
(incremen)o(ted)i(b)o(y)e(one.)18 b(An)11 b(end-of-record)g(error)e(is)i(rep)
q(orted)f(if)h(the)f(maxim)o(um)75 2081 y(record)k(size)h(is)g(exceeded;)h
(an)e(end-of-\014le)i(error)d(is)i(rep)q(orted)f(if)h(the)g(maxim)o(um)f
(\014le)h(size)g(is)g(exceeded.)166 2138 y(On)g(a)g(record)g(\014le)h
(accessed)g(with)f(the)g Fm(multi)e Ft(metho)q(d,)i Fm(t)o(yp)q(e)p
1226 2138 V 17 w(size)g Ft(b)o(ytes)g(are)g(written)g(in)o(to)g
Fm(count)75 2194 y Ft(successiv)o(e)j(records,)f(and)g(the)g(\014le)h(p)q
(oin)o(ter)f(is)h(incremen)o(ted)g(b)o(y)e Fm(count)p Ft(.)27
b(An)17 b(end-of-record)g(error)f(is)75 2251 y(rep)q(orted)g(if)f(the)h
(maxim)o(um)f(record)g(size)i(is)f(exceeded;)g(and)g(an)f(end-of-\014le)i
(error)e(is)h(rep)q(orted)f(if)h(the)75 2307 y(maxim)o(um)f(\014le)h(size)g
(is)g(exceeded.)166 2364 y(If)i(a)f(v)m(ariable)i(size)g(record)e(is)h
(written,)g(then)g(the)g(record)f(size)i(is)f(adjusted)g(to)f(the)g(size)i
(of)e(the)75 2421 y(data)f(written.)23 b(If)17 b(a)f(\014xed)h(size)g(record)
f(is)h(written)f(and)h(only)g(partially)g(\014lled,)h(then)f(the)f(remainder)
75 2477 y(of)f(the)g(record)g(is)h(unde\014ned.)166 2534 y(MPI-IO)h(do)q(es)f
(not)f(sp)q(ecify)j(whic)o(h)e(v)m(alues)h(are)f(stored)g(on)f(\014le)i(b)o
(y)f(a)g(call)h(to)e Fm(MPI)p 1620 2534 V 16 w(WRITE)h Ft(that)75
2591 y(encoun)o(tered)g(an)f(end-of-\014le)h(or)f(end-of-record)g(error;)f
(nor)h(do)q(es)g(it)g(sp)q(ecify)i(the)e(lo)q(cation)g(of)g(the)g(\014le)75
2647 y(p)q(oin)o(ter)j(if)g(an)f(end-of-\014le)i(error)e(o)q(ccurred.)27
b(The)17 b(status)g(parameter)g(can)g(b)q(e)h(queried)h(b)o(y)e(a)g(call)i
(to)75 2704 y Fm(MPI)p 160 2704 V 16 w(GET)p 264 2704 V 17
w(COUNT)d Ft(or)f Fm(MPI)p 591 2704 V 15 w(GET)p 694 2704 V
17 w(ELEMENTS)h Ft(in)g(order)f(to)g(\014nd)h(the)f(n)o(um)o(b)q(er)h(of)f
(en)o(tries)g(\(of)g(t)o(yp)q(e)1967 46 y Fr(1)1967 103 y(2)1967
159 y(3)1967 215 y(4)1967 272 y(5)1967 328 y(6)1967 385 y(7)1967
441 y(8)1967 498 y(9)1959 554 y(10)1959 611 y(11)1959 667 y(12)1959
724 y(13)1959 780 y(14)1959 836 y(15)1959 893 y(16)1959 949
y(17)1959 1006 y(18)1959 1062 y(19)1959 1119 y(20)1959 1175
y(21)1959 1232 y(22)1959 1288 y(23)1959 1345 y(24)1959 1401
y(25)1959 1457 y(26)1959 1514 y(27)1959 1570 y(28)1959 1627
y(29)1959 1683 y(30)1959 1740 y(31)1959 1796 y(32)1959 1853
y(33)1959 1909 y(34)1959 1966 y(35)1959 2022 y(36)1959 2078
y(37)1959 2135 y(38)1959 2191 y(39)1959 2248 y(40)1959 2304
y(41)1959 2361 y(42)1959 2417 y(43)1959 2474 y(44)1959 2530
y(45)1959 2587 y(46)1959 2643 y(47)1959 2699 y(48)p eop
%%Page: 11 12
bop 75 -100 a Fp(1.5.)34 b(INDIVIDUAL)17 b(I/O)1276 b Ft(11)75
49 y Fm(t)o(yp)q(e)p Ft(\))16 b(or)f(the)h(n)o(um)o(b)q(er)g(of)f(basic)h
(elemen)o(ts)g(actually)g(written)g(\(see)f([4,)g(3.13.5]\),)d(when)k
(end-of-\014le)h(or)75 106 y(end-of-record)e(w)o(as)e(encoun)o(tered.)20
b(If)15 b Fm(MPI)p 838 106 14 2 v 16 w(GET)p 942 106 V 16 w(COUNT)g
Ft(\(resp.)f Fm(MPI)p 1337 106 V 16 w(GET)p 1441 106 V 17 w(ELEMENT)p
Ft(\))f(returns)i Fm(n)75 162 y Ft(then)j(the)g(\014rst)g Fm(n)g
Ft(en)o(tries)g(\(resp.)g(the)g(\014rst)f Fm(n)i Ft(basic)f(elemen)o(ts\))g
(of)g(the)g(send)g(bu\013er)g(w)o(ere)g(correctly)75 219 y(written)g(on)g
(\014le)h(b)o(y)g(the)f(I/O)g(op)q(eration.)29 b(F)l(urther)18
b(data)g(ma)o(y)f(ha)o(v)o(e)h(b)q(een)h(\(partially\))g(written)f(on)75
275 y(the)d(\014le.)166 332 y(The)f(error)f(handler)h(attac)o(hed)f(with)h
(the)g(comm)o(unicator)f(is)h(in)o(v)o(ok)o(ed)g(if)g(an)f(error)g(o)q(ccurs)
h(during)75 388 y(the)k(call.)30 b(The)19 b(standard)e(MPI)i(error)e(handler)
i(considers)g(end-of-\014le)h(or)e(end-of-record)h(errors)e(on)75
444 y(write)f(to)f(b)q(e)h(fatal)f(and)h(ab)q(orts)f(the)h(program.)k(The)c
(user)g(can)g(c)o(hange)f(this)i(b)q(eha)o(vior)f(b)o(y)f(attac)o(hing)75
501 y(another)g(error)f(handler.)166 557 y(The)k(use)g(of)f(deriv)o(ed)i
(datat)o(yp)q(es)e(allo)o(ws)g(gathering)h(of)f(data)g(from)g(non-con)o
(tiguous)h(lo)q(cations)75 614 y(in)e(the)f(reader's)g(memory)g(and)g(write)g
(them)g(on)o(to)g(a)g(con)o(tiguous)g(blo)q(c)o(k)h(on)f(the)g(\014le.)166
670 y(If)g(a)f(\014le)i(is)f(op)q(en)g(b)q(oth)g(for)f(reads)h(and)f(writes)h
(\()p Fm(action)g(=)g(MPI)p 1274 670 V 16 w(READ)o(WRITE)p
Ft(\))f(then)h(reads)g(and)75 727 y(writes)f(can)h(b)q(e)f(mixed)h(in)g(an)g
(arbitrary)e(manner)h({)g(there)g(is)h(no)f(need)h(to)f(rep)q(osition)h(the)f
(\014le)h(p)q(oin)o(ter)75 783 y(b)q(et)o(w)o(een)h(reads)f(and)g(writes.)75
887 y Fm(MPI)p 160 887 V 16 w(IREAD\(bu\013er,)g(count,)h(t)o(yp)q(e,)g(comm)
m(,)c(request\))117 964 y Fk(OUT)124 b Fm(bu\013er)462 b Fk(initial)12
b(address)j(of)f(bu\013er)g(where)i(data)d(is)h(put)g(\(c)o(hoice\))117
1039 y(IN)171 b Fm(count)466 b Fk(n)o(um)o(b)q(er)13 b(of)h(elemen)o(ts)f
(read)i(\(in)o(teger\))117 1114 y(IN)171 b Fm(t)o(yp)q(e)491
b Fk(datat)o(yp)q(e)14 b(of)g(eac)o(h)g(elemen)o(t)f(read)i(\(handle\))117
1189 y(IN)171 b Fm(comm)450 b Fk(comm)o(unicator)11 b(for)j(\014le)g(access)h
(\(handle\))117 1263 y(OUT)124 b Fm(request)436 b Fk(comm)o(unication)11
b(request)k(\(handle\))75 1388 y Fh(int)47 b(MPI)p 269 1388
15 2 v 17 w(Iread\(void*)22 b(buffer,)h(int)h(count,)f(MPI)p
1098 1388 V 17 w(Datatype)f(type,)i(MPI)p 1545 1388 V 16 w(Comm)g(comm,)393
1444 y(MPI)p 468 1444 V 17 w(Comm)p 581 1444 V 17 w(request)e(*request\))75
1531 y(MPI)p 150 1531 V 17 w(IREAD\(BUFFER,)g(COUNT,)h(TYPE,)g(COMM,)g
(REQUEST,)g(IERROR\))170 1587 y(<type>)g(BUFFER\(*\))170 1644
y(INTEGER)g(COUNT,)g(TYPE,)h(COMM,)f(REQUEST,)g(IERROR)166
1730 y Ft(Initiates)e(a)f(non)o(blo)q(c)o(king)i(\(async)o(hronous\))e(read)g
(op)q(eration.)36 b(The)20 b(op)q(eration)h(is)g(completed)75
1787 y(in)d(the)g(same)f(manner)g(as)g(a)g(non)o(blo)q(c)o(king)i(message)e
(passing)g(op)q(eration,)h(b)o(y)f(a)g(call)i(to)e Fm(MPI)p
1737 1787 14 2 v 15 w(W)l(AIT)p Ft(,)75 1843 y Fm(MPI)p 160
1843 V 16 w(TEST)p Ft(,)h(or)f(one)h(of)g(the)g(deriv)o(ed)h(functions.)29
b(Calls)18 b(to)g Fm(MPI)p 1242 1843 V 16 w(W)l(AIT)l(ALL)p
Ft(,)f Fm(MPI)p 1559 1843 V 16 w(W)l(AIT)l(ANY)p Ft(,)h(etc.)75
1900 y(can)d(b)q(e)h(used)g(to)e(w)o(ait)h(for)f(the)h(completion)i(of)d(a)h
(set)g(of)f(I/O)i(op)q(erations)f(\(or,)f(more)h(generally)l(,)h(for)e(a)75
1956 y(mixed)i(set)f(of)g(comm)o(unication)h(and)f(I/O)h(op)q(erations\).)75
2060 y Fm(MPI)p 160 2060 V 16 w(IWRITE\(bu\013er,)e(count,)i(t)o(yp)q(e,)g
(comm)m(,)c(request\))117 2137 y Fk(OUT)124 b Fm(bu\013er)462
b Fk(initial)12 b(address)j(of)f(bu\013er)g(to)g(write)g(from)f(\(c)o
(hoice\))117 2212 y(IN)171 b Fm(count)466 b Fk(n)o(um)o(b)q(er)13
b(of)h(elemen)o(ts)f(written)i(\(in)o(teger\))117 2287 y(IN)171
b Fm(t)o(yp)q(e)491 b Fk(datat)o(yp)q(e)14 b(of)g(eac)o(h)g(elemen)o(t)f
(written)i(\(handle\))117 2361 y(IN)171 b Fm(comm)450 b Fk(comm)o(unicator)11
b(for)j(\014le)g(access)h(\(handle\))117 2436 y(OUT)124 b Fm(request)436
b Fk(comm)o(unication)11 b(request)k(\(handle\))75 2561 y Fh(int)47
b(MPI)p 269 2561 15 2 v 17 w(Iwrite\(void*)22 b(buffer,)h(int)h(count,)f(MPI)
p 1122 2561 V 16 w(Datatype)g(type,)g(MPI)p 1568 2561 V 17
w(Comm)h(comm,)393 2617 y(MPI)p 468 2617 V 17 w(Comm)p 581
2617 V 17 w(request)e(*request\))75 2704 y(MPI)p 150 2704 V
17 w(IWRITE\(BUFFER,)g(COUNT,)h(TYPE,)g(COMM,)g(REQUEST,)g(IERROR\))-32
46 y Fr(1)-32 103 y(2)-32 159 y(3)-32 215 y(4)-32 272 y(5)-32
328 y(6)-32 385 y(7)-32 441 y(8)-32 498 y(9)-40 554 y(10)-40
611 y(11)-40 667 y(12)-40 724 y(13)-40 780 y(14)-40 836 y(15)-40
893 y(16)-40 949 y(17)-40 1006 y(18)-40 1062 y(19)-40 1119
y(20)-40 1175 y(21)-40 1232 y(22)-40 1288 y(23)-40 1345 y(24)-40
1401 y(25)-40 1457 y(26)-40 1514 y(27)-40 1570 y(28)-40 1627
y(29)-40 1683 y(30)-40 1740 y(31)-40 1796 y(32)-40 1853 y(33)-40
1909 y(34)-40 1966 y(35)-40 2022 y(36)-40 2078 y(37)-40 2135
y(38)-40 2191 y(39)-40 2248 y(40)-40 2304 y(41)-40 2361 y(42)-40
2417 y(43)-40 2474 y(44)-40 2530 y(45)-40 2587 y(46)-40 2643
y(47)-40 2699 y(48)p eop
%%Page: 12 13
bop 75 -100 a Ft(12)1387 b Fp(CHAPTER)16 b(1.)34 b(IO)170 49
y Fh(<type>)23 b(BUFFER\(*\))170 106 y(INTEGER)g(COUNT,)g(TYPE,)h(COMM,)f
(REQUEST,)g(IERROR)166 193 y Ft(Initiates)16 b(a)f(non)o(blo)q(c)o(king)i
(\(async)o(hronous\))d(write)h(op)q(eration.)75 319 y Fo(1.5.2)49
b(File)17 b(p)q(ositioning)75 406 y Ft(The)d(\014le)g(p)q(ositioning)i
(functions)e(allo)o(w)g(to)f(rep)q(osition)h(the)g(\014le)h(p)q(oin)o(ter)f
(at)e(a)i(particular)g(place)g(in)h(the)75 462 y(\014le)d(with)f(the)g
(function)g Fm(MPI)p 575 462 14 2 v 16 w(SEEK)p Ft(,)f(at)h(the)f(b)q
(eginning)j(of)d(the)h(\014le)h(with)f(the)g(function)g Fm(MPI)p
1672 462 V 16 w(REWIND)p Ft(,)75 519 y(or)k(one)h(lo)q(cation)h(bac)o(k)e
(with)i(the)e(function)i Fm(MPI)p 942 519 V 16 w(BA)o(CKSP)l(A)o(CE)p
Ft(.)f(In)g(addition,)h(the)f(user)g(ma)o(y)f(query)75 575
y(the)j(\014le)i(p)q(oin)o(ter)f(lo)q(cation)g(with)f(a)g(call)i(to)d
Fm(MPI)p 946 575 V 16 w(GETPOS)p Ft(,)i(and)g(truncate)f(the)g(\014le)i(with)
e(a)g(call)i(to)75 632 y Fm(MPI)p 160 632 V 16 w(ENDFILE)p
Ft(.)166 689 y(The)f(\014le)h(p)q(oin)o(ter)g(p)q(osition)g(is)g(a)f(b)o(yte)
g(n)o(um)o(b)q(er,)h(for)e(stream)g(\014les,)j(or)e(a)f(record)i(n)o(um)o(b)q
(er,)g(for)75 745 y(record)e(\014les.)29 b(The)19 b(p)q(osition)g(is)f(a)g(v)
m(ariable)h(of)f(t)o(yp)q(e)34 b Fj(INTEGER)18 b Ft(in)h(F)l(ortran,)e(and)h
(of)g(in)o(tegral)g(t)o(yp)q(e)75 802 y Fj(MPI)p 152 802 13
2 v 14 w(Fint)d Ft(in)h(C.)189 912 y Fs(R)n(ationale.)38 b
Ft(The)14 b(use)f(of)g(t)o(yp)q(e)25 b Fj(MPI)p 836 912 V 14
w(Fint)14 b Ft(allo)o(w)f(implemen)o(tors)h(to)e(pro)o(vide)i(64)f(bit)g
(addressing)189 968 y(in)o(to)i(\014les)h(in)g(a)f(transparen)o(t)f(manner.)
20 b(\()p Fs(End)c(of)g(r)n(ationale.)p Ft(\))75 1125 y Fm(MPI)p
160 1125 14 2 v 16 w(SEEK\(comm)m(,)c(o\013set,)j(whence\))117
1203 y Fk(IN)155 b Fm(comm)466 b Fk(comm)o(unicator)11 b(asso)q(ciated)k
(with)f(\014le)f(\(handle\))117 1280 y(IN)155 b Fm(o\013set)484
b Fk(o\013set)15 b(in)o(to)e(\014le)h(\(in)o(teger\))117 1356
y(IN)155 b Fm(whence)450 b Fk(one)20 b(of)f Fj(MPI)p 1117 1356
13 2 v 15 w(SET)g Fk(\(indicating)g(start)i(of)e(\014le\),)i
Fj(MPI)p 1779 1356 V 14 w(END)905 1413 y Fk(\(indicating)16
b(end)i(of)e(\014le\),)h(or)g Fj(MPI)p 1479 1413 V 15 w(CUR)e
Fk(\(indicating)h(cur-)905 1469 y(ren)o(t)f(p)q(osition\))e(\(state\))p
Ft(.)75 1594 y Fh(int)47 b(MPI)p 269 1594 15 2 v 17 w(Seek\(MPI)p
478 1594 V 16 w(Comm)23 b(comm,)h(MPI)p 829 1594 V 16 w(Fint)g(offset,)f(MPI)
p 1228 1594 V 16 w(IO)h(whence\))75 1681 y(MPI)p 150 1681 V
17 w(SEEK\(COMM,)e(OFFSET,)h(WHENCE,)g(IERROR\))170 1738 y(INTEGER)g(COMM,)h
(OFFSET,)e(WHENCE,)h(IERROR)166 1825 y Ft(Mo)o(v)o(es)15 b(the)h(\(priv)m
(ate)h(or)f(shared\))g(\014le)h(p)q(oin)o(ter)g(to)e(the)i(p)q(osition)g
(determined)h(b)o(y)e(adding)h Fm(o\013set)75 1882 y Ft(to)e(the)g(p)q
(osition)h(indicated)h(b)o(y)e Fm(whence)p Ft(.)166 1939 y(The)20
b(\014le)i(p)q(oin)o(ter)e(cannot)g(b)q(e)h(set)f(to)f(b)q(e)i(negativ)o(e.)
35 b(The)20 b(\014le)i(p)q(oin)o(ter)e(can)h(b)q(e)f(rep)q(ositioned)75
1995 y(b)q(ey)o(ond)c(the)f(end-of-\014le,)i(e.g.)i(using)d(a)f(p)q(ositiv)o
(e)h(displacemen)o(t)h(with)e Fm(whence)i Ft(=)f Fj(MPI)p 1605
1995 13 2 v 14 w(END)p Ft(.)166 2052 y(MPI-IO)g(do)q(es)g(not)e(require)i
Fm(MPI)p 758 2052 14 2 v 16 w(SEEK)f Ft(to)g(b)q(e)h(supp)q(orted)g(for)e(v)m
(ariable)j(size)f(record)f(\014les.)75 2157 y Fm(MPI)p 160
2157 V 16 w(REWIND\(comm)m(\))117 2235 y Fk(IN)155 b Fm(comm)466
b Fk(comm)o(unicator)11 b(asso)q(ciated)k(with)f(\014le)f(\(handle\))75
2360 y Fh(int)47 b(MPI)p 269 2360 15 2 v 17 w(Rewind\(MPI)p
526 2360 V 16 w(Comm)23 b(comm\))75 2447 y(MPI)p 150 2447 V
17 w(REWIND\(COMM,)f(IERROR\))170 2504 y(INTEGER)h(COMM,)h(IERROR)166
2591 y Ft(Mo)o(v)o(es)9 b(the)h(\014le)h(p)q(oin)o(ter)g(to)f(the)g(b)q
(eginning)i(of)e(the)g(\014le.)19 b(This)11 b(is)g(equiv)m(alen)o(t)h(to)d
Fm(MPI)p 1615 2591 14 2 v 16 w(SEEK\(comm)m(,)75 2647 y(0,)18
b(MPI)p 214 2647 V 16 w(SET\))p Ft(.)g(\()p Fm(MPI)p 462 2647
V 16 w(REWIND)g Ft(is)h(supp)q(orted)g(for)f(all)h(\014le)g(t)o(yp)q(es,)g
(including)i(v)m(ariable)f(record)e(size)75 2704 y(\014les.\))j(The)15
b(call)h(has)f(no)g(e\013ect)g(if)h(the)f(\014le)i(is)e(already)h(p)q
(ositioned)g(at)f(its)g(start.)1967 46 y Fr(1)1967 103 y(2)1967
159 y(3)1967 215 y(4)1967 272 y(5)1967 328 y(6)1967 385 y(7)1967
441 y(8)1967 498 y(9)1959 554 y(10)1959 611 y(11)1959 667 y(12)1959
724 y(13)1959 780 y(14)1959 836 y(15)1959 893 y(16)1959 949
y(17)1959 1006 y(18)1959 1062 y(19)1959 1119 y(20)1959 1175
y(21)1959 1232 y(22)1959 1288 y(23)1959 1345 y(24)1959 1401
y(25)1959 1457 y(26)1959 1514 y(27)1959 1570 y(28)1959 1627
y(29)1959 1683 y(30)1959 1740 y(31)1959 1796 y(32)1959 1853
y(33)1959 1909 y(34)1959 1966 y(35)1959 2022 y(36)1959 2078
y(37)1959 2135 y(38)1959 2191 y(39)1959 2248 y(40)1959 2304
y(41)1959 2361 y(42)1959 2417 y(43)1959 2474 y(44)1959 2530
y(45)1959 2587 y(46)1959 2643 y(47)1959 2699 y(48)p eop
%%Page: 13 14
bop 75 -100 a Fp(1.6.)34 b(COLLECTIVE)16 b(A)o(CCESSES)1095
b Ft(13)75 49 y Fm(MPI)p 160 49 14 2 v 16 w(BA)o(CKSP)l(A)o(CE\(comm)m(\))117
147 y Fk(IN)155 b Fm(comm)466 b Fk(comm)o(unicator)11 b(asso)q(ciated)k(with)
f(\014le)f(\(handle\))75 291 y Fh(int)47 b(MPI)p 269 291 15
2 v 17 w(Backspace\(MPI)p 598 291 V 15 w(Comm)24 b(comm\))75
398 y(MPI)p 150 398 V 17 w(BACKSPACE\(COMM,)e(IERROR\))170
454 y(INTEGER)h(COMM,)h(IERROR)166 561 y Ft(Mo)o(v)o(es)17
b(the)h(\014le)h(p)q(oin)o(ter)g(one)f(lo)q(cation)h(bac)o(k.)28
b(This)19 b(is)f(equiv)m(alen)o(t)i(to)d Fm(MPI)p 1536 561
14 2 v 16 w(SEEK\(comm)m(,)e(-1,)75 617 y(MPI)p 160 617 V 16
w(CUR\))p Ft(.)i(\()p Fm(MPI)p 413 617 V 15 w(BA)o(CKSP)l(A)o(CE)h
Ft(is)f(supp)q(orted)h(for)e(all)i(\014le)g(t)o(yp)q(es.\))26
b(The)17 b(call)h(is)f(erroneous)g(if)h(the)75 674 y(\014le)e(is)g(p)q
(ositioned)h(at)d(its)i(start.)75 797 y Fm(MPI)p 160 797 V
16 w(GETPOS\(comm)n(,)c(p)q(os\))117 895 y Fk(IN)155 b Fm(comm)466
b Fk(comm)o(unicator)11 b(asso)q(ciated)k(with)f(\014le)f(\(handle\))117
1010 y(OUT)108 b Fm(p)q(os)523 b Fk(\014le)14 b(p)q(oin)o(ter)g(p)q(osition)
75 1154 y Fh(int)47 b(MPI)p 269 1154 15 2 v 17 w(Getpos\(MPI)p
526 1154 V 16 w(Comm)23 b(comm,)g(MPI)p 876 1154 V 17 w(Fint)g(*pos\))75
1261 y(MPI)p 150 1261 V 17 w(GETPOS\(COMM,)f(POS,)h(IERROR\))170
1317 y(INTEGER)g(COMM,)h(POS,)f(IERROR)166 1424 y Ft(Returns)16
b(in)g Fm(p)q(os)g Ft(the)f(curren)o(t)g(p)q(osition)h(of)f(the)g(\(priv)m
(ate)h(or)f(shared\))g(\014le)h(p)q(oin)o(ter.)166 1501 y(MPI-IO)g(do)q(es)g
(not)e(require)i Fm(MPI)p 758 1501 14 2 v 16 w(GETPOS)g Ft(to)f(b)q(e)h(supp)
q(orted)g(for)e(v)m(ariable)j(size)f(record)f(\014les.)75 1624
y Fm(MPI)p 160 1624 V 16 w(ENDFILE\(com)o(m)m(\))117 1722 y
Fk(IN)155 b Fm(comm)466 b Fk(comm)o(unicator)11 b(asso)q(ciated)k(with)f
(\014le)75 1866 y Fh(int)47 b(MPI)p 269 1866 15 2 v 17 w(Endfile\(MPI)p
550 1866 V 16 w(Comm)23 b(comm\))75 1973 y(MPI)p 150 1973 V
17 w(ENDFILE\(COMM,)f(IERROR\))170 2029 y(INTEGER)h(COMM,)h(IERROR)166
2136 y Ft(T)l(runcate)18 b(the)h(\014le)g(at)f(the)g(curren)o(t)g(p)q
(osition.)31 b(I.e.)e(if)19 b(the)f(curren)o(t)g(v)m(alue)i(of)e(the)g
(\014le)h(p)q(oin)o(ter)75 2192 y(is)g Fm(n)g Ft(then)g(the)f(\014le)h(is)g
(left)g(with)g Fm(n)g Ft(b)o(ytes)f(\(records\),)g(and)h(the)f(\014le)h(p)q
(oin)o(ter)g(p)q(osition)h(b)q(ecomes)f(the)75 2249 y(end-of-\014le.)75
2507 y Fu(1.6)59 b(Collective)20 b(accesses)75 2647 y Ft(The)11
b(functions)g(in)g(this)g(section)g(apply)h(to)e(\014les)h(op)q(ened)h(in)20
b Fj(COLLECTIVE)10 b Ft(mo)q(de.)18 b(These)11 b(are)f(collectiv)o(e)75
2704 y(calls)16 b(executed)g(b)o(y)g(all)g(pro)q(cesses)f(in)h(the)g(group.)
-32 46 y Fr(1)-32 103 y(2)-32 159 y(3)-32 215 y(4)-32 272 y(5)-32
328 y(6)-32 385 y(7)-32 441 y(8)-32 498 y(9)-40 554 y(10)-40
611 y(11)-40 667 y(12)-40 724 y(13)-40 780 y(14)-40 836 y(15)-40
893 y(16)-40 949 y(17)-40 1006 y(18)-40 1062 y(19)-40 1119
y(20)-40 1175 y(21)-40 1232 y(22)-40 1288 y(23)-40 1345 y(24)-40
1401 y(25)-40 1457 y(26)-40 1514 y(27)-40 1570 y(28)-40 1627
y(29)-40 1683 y(30)-40 1740 y(31)-40 1796 y(32)-40 1853 y(33)-40
1909 y(34)-40 1966 y(35)-40 2022 y(36)-40 2078 y(37)-40 2135
y(38)-40 2191 y(39)-40 2248 y(40)-40 2304 y(41)-40 2361 y(42)-40
2417 y(43)-40 2474 y(44)-40 2530 y(45)-40 2587 y(46)-40 2643
y(47)-40 2699 y(48)p eop
%%Page: 14 15
bop 75 -100 a Ft(14)1387 b Fp(CHAPTER)16 b(1.)34 b(IO)75 49
y Fo(1.6.1)49 b(Data)17 b(access)75 198 y Fm(MPI)p 160 198
14 2 v 16 w(READ)p 295 198 V 17 w(ALL\(bu\013er,)d(count,)i(t)o(yp)q(e,)g
(comm)m(,)c(status\))117 284 y Fk(OUT)124 b Fm(bu\013er)462
b Fk(initial)12 b(address)j(of)f(bu\013er)g(where)i(data)d(is)h(put)g(\(c)o
(hoice\))117 375 y(IN)171 b Fm(count)466 b Fk(n)o(um)o(b)q(er)13
b(of)h(elemen)o(ts)f(read)i(\(in)o(teger\))117 467 y(IN)171
b Fm(t)o(yp)q(e)491 b Fk(datat)o(yp)q(e)14 b(of)g(eac)o(h)g(elemen)o(t)f
(read)i(\(handle\))117 558 y(IN)171 b Fm(comm)450 b Fk(comm)o(unicator)11
b(asso)q(ciated)k(with)f(\014le)f(\(handle\))117 650 y(OUT)124
b Fm(status)460 b Fk(return)15 b(status)g(of)e(read)i(op)q(eration)e
(\(Status\))75 782 y Fh(int)47 b(MPI)p 269 782 15 2 v 17 w(Read)p
382 782 V 17 w(all\()23 b(void*)g(buffer,)g(int)h(count,)f(MPI)p
1187 782 V 16 w(Datatype)g(type,)393 839 y(MPI)p 468 839 V
17 w(Comm)g(comm,)g(MPI)p 819 839 V 17 w(Status)g(*status\))75
933 y(MPI)p 150 933 V 17 w(READ)p 263 933 V 16 w(ALL\()h(BUFFER,)f(COUNT,)g
(TYPE,)g(COMM,)g(STATUS,)g(IERROR\))170 990 y(<type>)g(BUFFER\(*\))170
1046 y(INTEGER)g(COUNT,)g(TYPE,)h(COMM,)f(STATUS\(MPI)p 1058
1046 V 16 w(STATUS)p 1218 1046 V 16 w(SIZE\),)g(IERROR)166
1141 y Ft(This)14 b(function)g(b)q(eha)o(v)o(es)f(lik)o(e)h
Fm(MPI)p 777 1141 14 2 v 16 w(READ)p Ft(,)g(except)f(that)g(the)g(data)f
(read)i(from)e(the)h(\014le)h(is)g(broad-)75 1197 y(cast)21
b(to)h(all)h(pro)q(cesses)f(in)h(the)f(group)f(of)h Fm(comm)m
Ft(;)g(eac)o(h)g(pro)q(cess)g(receiv)o(es)h(the)f(same)g(data)f(in)i(its)75
1254 y(comm)o(unication)17 b(bu\013er)g(that)f(is)h(sp)q(eci\014ed)i(b)o(y)e
(the)g Fm(bu\013er,)f(t)o(yp)q(e,)i(count)g Ft(argumen)o(ts.)24
b(All)18 b(pro)q(cesses)75 1310 y(supply)d(consisten)o(t)e(v)m(alues)h(for)f
Fm(t)o(yp)q(e,)h(count)h Ft(\(i.e.,)e(the)g(t)o(yp)q(e)h(signature)f(sp)q
(eci\014ed)j(b)o(y)d(these)g(t)o(w)o(o)f(argu-)75 1367 y(men)o(ts)k(should)g
(b)q(e)h(iden)o(tical)h(at)d(all)i(no)q(des\).)22 b(The)16
b Fm(status)i Ft(argumen)o(t)d(can)h(b)q(e)h(queried)g(after)e(the)h(call)75
1423 y(to)f(\014nd)g(out)g(the)h(n)o(um)o(b)q(er)f(of)g(elemen)o(ts)h
(actually)g(read.)75 1535 y Fm(MPI)p 160 1535 V 16 w(WRITE)p
319 1535 V 16 w(ALL\(bu\013er,)e(count,)i(t)o(yp)q(e,)g(comm)m(,)c(status\))
117 1620 y Fk(IN)171 b Fm(bu\013er)462 b Fk(initial)12 b(address)j(of)f
(bu\013er)g(where)i(data)d(is)h(tak)o(en)g(\(c)o(hoice\))117
1712 y(IN)171 b Fm(count)466 b Fk(n)o(um)o(b)q(er)13 b(of)h(elemen)o(ts)f
(written)i(\(in)o(teger\))117 1803 y(IN)171 b Fm(t)o(yp)q(e)491
b Fk(datat)o(yp)q(e)14 b(of)g(eac)o(h)g(elemen)o(t)f(written)i(\(handle\))117
1895 y(IN)171 b Fm(comm)450 b Fk(comm)o(unicator)11 b(asso)q(ciated)k(with)f
(\014le)f(\(handle\))117 1986 y(OUT)124 b Fm(status)460 b Fk(return)15
b(status)g(of)e(write)h(op)q(eration)g(\(Status\))75 2119 y
Fh(int)47 b(MPI)p 269 2119 15 2 v 17 w(Write)p 406 2119 V 17
w(all\()23 b(void*)g(buffer,)g(int)g(count,)g(MPI)p 1210 2119
V 17 w(Datatype)g(type,)393 2176 y(MPI)p 468 2176 V 17 w(Comm)g(comm,)g(MPI)p
819 2176 V 17 w(Status)g(*status\))75 2270 y(MPI)p 150 2270
V 17 w(WRITE)p 287 2270 V 16 w(ALL\()h(BUFFER,)e(COUNT,)i(TYPE,)f(COMM,)g
(STATUS,)g(IERROR\))170 2327 y(<type>)g(BUFFER\(*\))170 2383
y(INTEGER)g(COUNT,)g(TYPE,)h(COMM,)f(STATUS\(MPI)p 1058 2383
V 16 w(STATUS)p 1218 2383 V 16 w(SIZE\),)g(IERROR)166 2478
y Ft(This)18 b(function)g(b)q(eha)o(v)o(es)f(lik)o(e)h Fm(MPI)p
793 2478 14 2 v 16 w(WRITE)p Ft(,)f(except)g(that)g(it)g(is)h(executed)g(b)o
(y)f(all)h(pro)q(cesses)f(in)75 2534 y(the)f(group;)f(all)i(pro)q(cesses)f
(pro)o(vide)g(the)g(same)g(data.)21 b(The)16 b(pro)q(cesses)g(supply)h
(consisten)o(t)f(v)m(alues)h(for)75 2591 y Fm(t)o(yp)q(e,)j(count)g
Ft(\(i.e.,)e(the)h(t)o(yp)q(e)f(signature)h(sp)q(eci\014ed)i(b)o(y)d(these)h
(t)o(w)o(o)e(argumen)o(ts)g(should)j(b)q(e)f(iden)o(tical)75
2647 y(at)c(all)i(no)q(des\).)22 b(The)16 b Fm(status)h Ft(argumen)o(t)e(can)
h(b)q(e)h(queried)g(after)e(the)h(call)g(to)g(\014nd)g(out)f(the)h(n)o(um)o
(b)q(er)g(of)75 2704 y(elemen)o(ts)g(actually)g(written.)1967
46 y Fr(1)1967 103 y(2)1967 159 y(3)1967 215 y(4)1967 272 y(5)1967
328 y(6)1967 385 y(7)1967 441 y(8)1967 498 y(9)1959 554 y(10)1959
611 y(11)1959 667 y(12)1959 724 y(13)1959 780 y(14)1959 836
y(15)1959 893 y(16)1959 949 y(17)1959 1006 y(18)1959 1062 y(19)1959
1119 y(20)1959 1175 y(21)1959 1232 y(22)1959 1288 y(23)1959
1345 y(24)1959 1401 y(25)1959 1457 y(26)1959 1514 y(27)1959
1570 y(28)1959 1627 y(29)1959 1683 y(30)1959 1740 y(31)1959
1796 y(32)1959 1853 y(33)1959 1909 y(34)1959 1966 y(35)1959
2022 y(36)1959 2078 y(37)1959 2135 y(38)1959 2191 y(39)1959
2248 y(40)1959 2304 y(41)1959 2361 y(42)1959 2417 y(43)1959
2474 y(44)1959 2530 y(45)1959 2587 y(46)1959 2643 y(47)1959
2699 y(48)p eop
%%Page: 15 16
bop 75 -100 a Fp(1.6.)34 b(COLLECTIVE)16 b(A)o(CCESSES)1095
b Ft(15)75 49 y Fm(MPI)p 160 49 14 2 v 16 w(READ)p 295 49 V
17 w(SCA)l(TTER\()16 b(bu\013er,)f(count,)h(t)o(yp)q(e,)g(comm)m(,)c
(status\))117 126 y Fk(OUT)124 b Fm(bu\013er)462 b Fk(initial)12
b(address)j(of)f(bu\013er)g(where)i(data)d(is)h(put)g(\(c)o(hoice\))117
200 y(IN)171 b Fm(count)466 b Fk(n)o(um)o(b)q(er)13 b(of)h(elemen)o(ts)f
(read)i(\(in)o(teger\))117 274 y(IN)171 b Fm(t)o(yp)q(e)491
b Fk(datat)o(yp)q(e)14 b(of)g(eac)o(h)g(elemen)o(t)f(read)i(\(handle\))117
348 y(IN)171 b Fm(comm)450 b Fk(comm)o(unicator)11 b(asso)q(ciated)k(with)f
(\014le)f(\(handle\))117 421 y(OUT)124 b Fm(status)460 b Fk(return)15
b(status)g(of)e(read)i(op)q(eration)e(\(Status\))75 546 y Fh(int)47
b(MPI)p 269 546 15 2 v 17 w(read)p 382 546 V 17 w(scatter\()22
b(void*)i(buffer,)f(int)g(count,)g(MPI)p 1282 546 V 17 w(Datatype)g(type,)393
602 y(MPI)p 468 602 V 17 w(Comm)g(comm,)g(MPI)p 819 602 V 17
w(Status)g(*status\))75 689 y(MPI)p 150 689 V 17 w(READ)p 263
689 V 16 w(SCATTER\()g(BUFFER,)g(COUNT,)g(TYPE,)g(COMM,)g(STATUS,)g(IERROR\))
170 745 y(<type>)g(BUFFER\(*\))170 801 y(INTEGER)g(COUNT,)g(TYPE,)h(COMM,)f
(STATUS\(MPI)p 1058 801 V 16 w(STATUS)p 1218 801 V 16 w(SIZE\),)g(IERROR)166
888 y Ft(This)14 b(is)g(a)f(collectiv)o(e)j(read)d(function)h(that)f(is)h(in)
o(v)o(ok)o(ed)g(b)o(y)f(all)i(pro)q(cesses)f(in)g(the)g(group)f(of)g
Fm(comm)m Ft(.)75 944 y(Its)20 b(seman)o(tics)g(is)g(similar)h(to)e(the)h
(seman)o(tics)g(of)f(the)h(collectiv)o(e)i(comm)o(unication)e
Fm(MPI)p 1663 944 14 2 v 16 w(SCA)l(TTER)75 1001 y Ft(function:)28
b(a)18 b(blo)q(c)o(k)h(of)f(data)g(is)h(read)g(from)f(the)g(\014le)i(and)f
(scattered)f(among)g(the)h(group)f(pro)q(cesses;)75 1057 y(eac)o(h)h(pro)q
(cess)f(receiv)o(es)i(the)e(same)h(coun)o(t)f(of)g(data.)29
b(The)19 b(t)o(yp)q(e)g(signature)f(asso)q(ciated)h(with)g
Fm(count,)75 1114 y(t)o(yp)q(e)d Ft(should)g(b)q(e)g(iden)o(tical)h(at)e(all)
h(calling)h(no)q(des.)166 1170 y(Let)f Fm(n)g Ft(b)q(e)g(the)g(size)g(of)g
(the)f(comm)o(unication)i(group)e(and)h(let)g Fm(t)o(yp)q(e)p
1330 1170 V 17 w(size)g Ft(b)q(e)g(the)g(size)h(of)e(the)h(data)75
1227 y(describ)q(ed)f(b)o(y)f Fm(t)o(yp)q(e)p Ft(.)20 b(The)14
b(data)e(transfer)h(e\013ected)g(b)o(y)h(this)g(call)g(is)g(as)f(if)h
Fm(n)6 b Fg(\001)g Fm(count)16 b Ft(copies)e(of)f Fm(t)o(yp)q(e)h
Ft(w)o(ere)75 1283 y(read)g(from)f(the)h(\014le;)h(the)f(resulting)h(message)
e(w)o(as)g(split)i(in)o(to)f Fm(n)g Ft(equal)h(sized)g(segmen)o(ts;)e(and)h
(segmen)o(t)75 1340 y Fm(i)h Ft(w)o(as)f(sen)o(t)h(to)g(the)g
Fm(i)p Ft(-th)g(pro)q(cessor)g(in)h(the)f(comm)o(unication)h(group.)k(Eac)o
(h)15 b(pro)q(cess)g(stores)g(incoming)75 1396 y(data)g(in)h(the)f(receiv)o
(e)h(bu\013er)f(sp)q(eci\014ed)i(b)o(y)f Fm(bu\013er,)f(count,)h(t)o(yp)q(e)p
Ft(.)166 1452 y(On)c(a)g(stream)f(\014le,)i(the)f(\014le)h(p)q(oin)o(ter)g
(is)f(incremen)o(ted)h(b)o(y)f Fm(n)t Fg(\001)t Fm(count)t
Fg(\001)t Fm(t)o(yp)q(e)p 1409 1452 V 17 w(size)p Ft(;)h(on)e(a)h(record)g
(\014le)h(ac-)75 1509 y(cessed)f(with)g Fm(uni)g Ft(metho)q(d,)g
Fm(n)s Fg(\001)s Fm(count)s Fg(\001)s Fm(t)o(yp)q(e)p 801 1509
V 18 w(size)f Ft(b)o(ytes)h(are)f(accessed)h(from)f(the)g(curren)o(t)h
(record)f(and)h(the)75 1565 y(record)j(p)q(oin)o(ter)h(is)g(incremen)o(ted)h
(b)o(y)e(one;)g(on)g(a)g(record)h(\014le)g(accessed)g(with)g
Fm(multi)d Ft(metho)q(d)i Fm(t)o(yp)q(e)p 1792 1565 V 18 w(size)75
1622 y Ft(b)o(ytes)i(are)f(accessed)i(from)e Fm(n)c Fg(\001)f
Fm(count)18 b Ft(successiv)o(e)h(records)d(and)i(the)f(\014le)h(p)q(oin)o
(ter)f(is)h(incremen)o(ted)g(b)o(y)75 1678 y Fm(n)11 b Fg(\001)e
Fm(count)p Ft(.)166 1735 y(If)15 b(an)h(end-of-\014le)h(or)d(end-of-record)i
(exception)h(has)e(o)q(ccurred,)g(then)h(all)g(pro)q(cesses)g(will)h(return)
75 1791 y(the)e(corresp)q(onding)i(error)d(co)q(de.)21 b(Eac)o(h)15
b(pro)q(cess)h(is)g(returning)g(in)g Fm(status)h Ft(a)e(coun)o(t)g(of)g(the)h
(n)o(um)o(b)q(er)f(of)75 1848 y(items)g(and)g(basic)g(elemen)o(ts)h(it)e(had)
h(successfully)i(read)e(from)f(the)g(\014le.)21 b(The)15 b(coun)o(t)f(ma)o(y)
g(b)q(e)i(di\013eren)o(t)75 1904 y(at)h(di\013eren)o(t)h(pro)q(cesses)g(if)g
(an)f(end-of-record)h(or)f(end-of-\014le)j(error)c(o)q(ccurred.)28
b(The)18 b(standard)f(MPI)75 1961 y(error)d(handler)j(considers)f(these)f
(errors)g(to)f(b)q(e)i(non-fatal)f(and)h(tak)o(es)e(no)h(further)g(action.)75
2064 y Fm(MPI)p 160 2064 V 16 w(READ)p 295 2064 V 17 w(SCA)l(TTERV\()h
(bu\013er,)f(count,)h(t)o(yp)q(e,)g(comm)m(,)c(status\))117
2141 y Fk(OUT)124 b Fm(bu\013er)462 b Fk(initial)12 b(address)j(of)f
(bu\013er)g(where)i(data)d(is)h(put)g(\(c)o(hoice\))117 2215
y(IN)171 b Fm(count)466 b Fk(n)o(um)o(b)q(er)13 b(of)h(elemen)o(ts)f(read)i
(\(in)o(teger\))117 2289 y(IN)171 b Fm(t)o(yp)q(e)491 b Fk(datat)o(yp)q(e)14
b(of)g(eac)o(h)g(elemen)o(t)f(read)i(\(handle\))117 2363 y(IN)171
b Fm(comm)450 b Fk(comm)o(unicator)11 b(asso)q(ciated)k(with)f(\014le)f
(\(handle\))117 2436 y(OUT)124 b Fm(status)460 b Fk(return)15
b(status)g(of)e(read)i(op)q(eration)e(\(Status\))75 2561 y
Fh(int)47 b(MPI)p 269 2561 15 2 v 17 w(read)p 382 2561 V 17
w(scatterv\()22 b(void*)i(buffer,)e(int)i(count,)f(MPI)p 1306
2561 V 17 w(Datatype)f(type,)393 2617 y(MPI)p 468 2617 V 17
w(Comm)h(comm,)g(MPI)p 819 2617 V 17 w(Status)g(*status\))75
2704 y(MPI)p 150 2704 V 17 w(READ)p 263 2704 V 16 w(SCATTERV\()g(BUFFER,)g
(COUNT,)g(TYPE,)g(COMM,)g(STATUS,)g(IERROR\))-32 46 y Fr(1)-32
103 y(2)-32 159 y(3)-32 215 y(4)-32 272 y(5)-32 328 y(6)-32
385 y(7)-32 441 y(8)-32 498 y(9)-40 554 y(10)-40 611 y(11)-40
667 y(12)-40 724 y(13)-40 780 y(14)-40 836 y(15)-40 893 y(16)-40
949 y(17)-40 1006 y(18)-40 1062 y(19)-40 1119 y(20)-40 1175
y(21)-40 1232 y(22)-40 1288 y(23)-40 1345 y(24)-40 1401 y(25)-40
1457 y(26)-40 1514 y(27)-40 1570 y(28)-40 1627 y(29)-40 1683
y(30)-40 1740 y(31)-40 1796 y(32)-40 1853 y(33)-40 1909 y(34)-40
1966 y(35)-40 2022 y(36)-40 2078 y(37)-40 2135 y(38)-40 2191
y(39)-40 2248 y(40)-40 2304 y(41)-40 2361 y(42)-40 2417 y(43)-40
2474 y(44)-40 2530 y(45)-40 2587 y(46)-40 2643 y(47)-40 2699
y(48)p eop
%%Page: 16 17
bop 75 -100 a Ft(16)1387 b Fp(CHAPTER)16 b(1.)34 b(IO)170 49
y Fh(<type>)23 b(BUFFER\(*\))170 106 y(INTEGER)g(COUNT,)g(TYPE,)h(COMM,)f
(STATUS\(MPI)p 1058 106 15 2 v 16 w(STATUS)p 1218 106 V 16
w(SIZE\),)g(IERROR)166 197 y Ft(This)14 b(is)g(a)f(collectiv)o(e)j(read)d
(function)h(that)f(is)h(in)o(v)o(ok)o(ed)g(b)o(y)f(all)i(pro)q(cesses)f(in)g
(the)g(group)f(of)g Fm(comm)m Ft(.)75 253 y(Its)h(seman)o(tics)h(are)f
(similar)h(to)f(the)g(seman)o(tics)g(of)g(the)h(collectiv)o(e)h(comm)o
(unication)f Fm(MPI)p 1633 253 14 2 v 16 w(SCA)l(TTERV)75 310
y Ft(function)f(whic)o(h)g(allo)o(ws)g(di\013eren)o(t)f(coun)o(t)g(of)g(data)
g(to)f(b)q(e)i(sen)o(t)f(to)g(eac)o(h)g(pro)q(cess.)20 b(The)13
b(t)o(yp)q(e)h(signature)75 366 y(asso)q(ciated)g(with)g Fm(t)o(yp)q(e)h
Ft(should)g(b)q(e)f(iden)o(tical)i(at)d(all)i(calling)g(no)q(des;)f(pro)q
(cesses)h(ma)o(y)e(sp)q(ecify)i(di\013eren)o(t)75 423 y(\(nonnegativ)o(e\))g
(v)m(alues)h(for)f Fm(count)p Ft(.)166 484 y(Let)20 b Fm(n)h
Ft(b)q(e)g(the)g(size)g(of)f(the)g(comm)o(unication)h(group,)g(let)g
Fm(t)o(yp)q(e)p 1302 484 V 17 w(size)g Ft(b)q(e)g(the)f(size)h(of)f(the)h
(data)75 540 y(describ)q(ed)c(b)o(y)e Fm(t)o(yp)q(e)p Ft(,)h(and)f(let)h
Fm(count)707 547 y Ff(i)733 540 y Ft(b)q(e)g(the)f(v)m(alue)i(of)d(the)i
Fm(count)g Ft(argumen)o(t)f(at)f(pro)q(cess)i Fm(i)p Ft(.)166
602 y(The)h(data)g(transfer)f(e\013ected)h(b)o(y)h(this)f(call)h(is)g(as)f
(if)1094 570 y Fe(P)1146 602 y Fm(count)1251 609 y Ff(i)1279
602 y Ft(en)o(tries)g(of)g(t)o(yp)q(e)g Fm(t)o(yp)q(e)h Ft(w)o(ere)f(read)75
658 y(from)e(the)g(\014le)i(and)f(concatenated;)f(the)h(resulting)h(list)f(w)
o(as)f(split)h(in)o(to)g Fm(n)g Ft(segmen)o(ts,)f(where)g(segmen)o(t)75
715 y Fm(i)g Ft(con)o(tains)g Fm(count)384 722 y Ff(i)410 715
y Ft(en)o(tries;)g(and)h(the)f Fm(i)p Ft(-th)g(segmen)o(t)g(w)o(as)f(sen)o(t)
h(to)g Fm(i)p Ft(-th)g(pro)q(cess)g(in)h(the)g(group.)166 776
y(Eac)o(h)i(pro)q(cess)h(returns)f(in)i Fm(status)g Ft(a)e(coun)o(t)g(of)h
(the)f(n)o(um)o(b)q(er)h(of)f(items)h(and)f(basic)i(elemen)o(ts)f(it)75
832 y(had)c(read)h(from)e(the)h(\014le;)h(truncation)f(errors)g(are)g
(handled)h(as)f(for)g Fm(MPI)p 1346 832 V 16 w(GA)l(THER)p
Ft(.)75 941 y Fm(MPI)p 160 941 V 16 w(WRITE)p 319 941 V 16
w(GA)l(THER\()h(bu\013er,)f(count,)i(t)o(yp)q(e,)e(comm)n(,)c(status\))117
1023 y Fk(OUT)124 b Fm(bu\013er)462 b Fk(initial)12 b(address)j(of)f
(bu\013er)g(where)i(data)d(is)h(tak)o(en)g(\(c)o(hoice\))117
1107 y(IN)171 b Fm(count)466 b Fk(n)o(um)o(b)q(er)13 b(of)h(elemen)o(ts)f
(tak)o(en)h(\(in)o(teger\))117 1192 y(IN)171 b Fm(t)o(yp)q(e)491
b Fk(datat)o(yp)q(e)14 b(of)g(eac)o(h)g(elemen)o(t)f(\(handle\))117
1277 y(IN)171 b Fm(comm)450 b Fk(comm)o(unicator)11 b(asso)q(ciated)k(with)f
(\014le)f(\(handle\))117 1361 y(OUT)124 b Fm(status)460 b Fk(return)15
b(status)g(of)e(write)h(op)q(eration)g(\(Status\))75 1491 y
Fh(int)47 b(MPI)p 269 1491 15 2 v 17 w(write)p 406 1491 V 17
w(gather\()22 b(void*)i(buffer,)f(int)g(count,)g(MPI)p 1282
1491 V 17 w(Datatype)g(type,)393 1547 y(MPI)p 468 1547 V 17
w(Comm)g(comm,)g(MPI)p 819 1547 V 17 w(Status)g(*status\))75
1638 y(MPI)p 150 1638 V 17 w(WRITE)p 287 1638 V 16 w(GATHER\()g(BUFFER,)g
(COUNT,)g(TYPE,)g(COMM,)g(STATUS,)g(IERROR\))170 1695 y(<type>)g(BUFFER\(*\))
170 1751 y(INTEGER)g(COUNT,)g(TYPE,)h(COMM,)f(STATUS\(MPI)p
1058 1751 V 16 w(STATUS)p 1218 1751 V 16 w(SIZE\),)g(IERROR)166
1842 y Ft(This)13 b(is)g(a)f(collectiv)o(e)j(write)d(function)i(that)e(is)h
(in)o(v)o(ok)o(ed)g(b)o(y)f(all)i(pro)q(cesses)f(in)g(the)g(group)f(of)g
Fm(comm)m Ft(.)75 1899 y(Its)19 b(seman)o(tics)g(are)g(similar)h(to)f(the)g
(seman)o(tics)g(of)g(the)g(collectiv)o(e)i(comm)o(unication)f
Fm(MPI)p 1686 1899 14 2 v 16 w(GA)l(THER)75 1955 y Ft(function:)33
b(Eac)o(h)22 b(pro)q(cess)g(sends)g(the)f(same)g(coun)o(t)h(of)f(data.)38
b(The)22 b(messages)f(generated)g(b)o(y)h(the)75 2012 y(pro)q(cesses)15
b(are)f(concatenated)g(and)h(the)g(resulting)g(blo)q(c)o(k)g(is)g(written)g
(on)o(to)e(the)i(\014le.)20 b(The)15 b(t)o(yp)q(e)g(signa-)75
2068 y(ture)g(asso)q(ciated)h(with)f Fm(count,)h(t)o(yp)q(e)g
Ft(should)h(b)q(e)e(iden)o(tical)i(at)e(all)h(calling)h(no)q(des.)166
2129 y(Let)i Fm(n)g Ft(b)q(e)h(the)f(size)h(of)e(the)h(comm)o(unication)h
(group,)f(and)g Fm(t)o(yp)q(e)p 1310 2129 V 18 w(size)g Ft(b)q(e)g(the)g
(size)h(of)f(the)g(data)75 2186 y(describ)q(ed)e(b)o(y)e Fm(t)o(yp)q(e)p
Ft(.)21 b(The)15 b(outcome)f(is)i(as)e(if)i(eac)o(h)f(pro)q(cess)g(assem)o
(bles)g(a)g(message)g(from)f(the)h(data)f(in)75 2242 y(the)g(send)h(bu\013er)
f(sp)q(eci\014ed)j(b)o(y)d Fm(bu\013er,)g(count,)i(t)o(yp)q(e)p
Ft(.)k(The)15 b(blo)q(c)o(ks)g(are)f(concatenated)g(in)h(the)f(order)g(of)75
2299 y(pro)q(cess)h(ranks,)f(and)i(the)f(resulting)h(list)f(of)g
Fm(n)10 b Fg(\001)f Fm(count)16 b Ft(en)o(tries)f(of)g(t)o(yp)q(e)g
Fm(t)o(yp)q(e)h Ft(is)f(written)g(on)o(to)f(the)h(\014le.)166
2360 y(On)e(a)f(stream)g(\014le,)i Fm(n)5 b Fg(\001)g Fm(count)g
Fg(\001)g Fm(t)o(yp)q(e)p 762 2360 V 18 w(size)13 b Ft(b)o(ytes)f(are)h
(written)f(and)h(the)g(\014le)g(p)q(oin)o(ter)h(is)f(incremen)o(ted)75
2417 y(b)o(y)19 b(that)f(n)o(um)o(b)q(er;)i(on)e(a)h(record)f(\014le)i
(accessed)f(with)g Fm(uni)h Ft(metho)q(d,)f Fm(n)13 b Fg(\001)f
Fm(count)i Fg(\001)e Fm(t)o(yp)q(e)p 1591 2417 V 17 w(size)19
b Ft(b)o(ytes)f(are)75 2473 y(written)g(on)g(the)g(curren)o(t)g(record)g(and)
g(the)g(\014le)h(p)q(oin)o(ter)g(is)f(incremen)o(ted)h(b)o(y)f(one;)h(on)f(a)
g(record)g(\014le)75 2529 y(accessed)12 b(with)f Fm(multi)e
Ft(metho)q(d,)j Fm(t)o(yp)q(e)p 717 2529 V 17 w(size)f Ft(b)o(ytes)g(are)g
(written)g(on)g(eac)o(h)g(of)g Fm(n)r Fg(\001)r Fm(count)h
Ft(successiv)o(e)g(records,)75 2586 y(and)j(the)h(\014le)g(p)q(oin)o(ter)g
(is)f(incremen)o(ted)i(b)o(y)e Fm(n)10 b Fg(\001)g Fm(count)p
Ft(.)166 2647 y(Eac)o(h)15 b(pro)q(cess)h(is)g(returning)h(in)f
Fm(status)i Ft(a)d(coun)o(t)g(of)g(the)h(n)o(um)o(b)q(er)g(of)f(items)h(and)g
(basic)g(elemen)o(ts)75 2704 y(it)j(has)g(written)f(on)h(the)g(\014le.)32
b(Di\013eren)o(t)18 b(pro)q(cesses)h(ma)o(y)f(return)h(di\013eren)o(t)g(v)m
(alues)h(if)f(a)g(truncation)1967 46 y Fr(1)1967 103 y(2)1967
159 y(3)1967 215 y(4)1967 272 y(5)1967 328 y(6)1967 385 y(7)1967
441 y(8)1967 498 y(9)1959 554 y(10)1959 611 y(11)1959 667 y(12)1959
724 y(13)1959 780 y(14)1959 836 y(15)1959 893 y(16)1959 949
y(17)1959 1006 y(18)1959 1062 y(19)1959 1119 y(20)1959 1175
y(21)1959 1232 y(22)1959 1288 y(23)1959 1345 y(24)1959 1401
y(25)1959 1457 y(26)1959 1514 y(27)1959 1570 y(28)1959 1627
y(29)1959 1683 y(30)1959 1740 y(31)1959 1796 y(32)1959 1853
y(33)1959 1909 y(34)1959 1966 y(35)1959 2022 y(36)1959 2078
y(37)1959 2135 y(38)1959 2191 y(39)1959 2248 y(40)1959 2304
y(41)1959 2361 y(42)1959 2417 y(43)1959 2474 y(44)1959 2530
y(45)1959 2587 y(46)1959 2643 y(47)1959 2699 y(48)p eop
%%Page: 17 18
bop 75 -100 a Fp(1.6.)34 b(COLLECTIVE)16 b(A)o(CCESSES)1095
b Ft(17)75 49 y(o)q(ccurred.)27 b(In)18 b(suc)o(h)g(situation,)g(eac)o(h)g
(pro)q(cess)g(is)g(returned)g(an)f(error)g(co)q(de)h(and)g(the)f(error)g
(handler)75 106 y(attac)o(hed)e(to)f(the)h(comm)o(unicator)g(is)h(in)o(v)o
(ok)o(ed)f(at)g(eac)o(h)g(pro)q(cess.)75 213 y Fm(MPI)p 160
213 14 2 v 16 w(WRITE)p 319 213 V 16 w(GA)l(THERV\()i(bu\013er,)e(count,)h(t)
o(yp)q(e,)g(comm)m(,)c(status\))117 294 y Fk(OUT)124 b Fm(bu\013er)462
b Fk(initial)12 b(address)j(of)f(bu\013er)g(where)i(data)d(is)h(gotten)g(\(c)
o(hoice\))117 377 y(IN)171 b Fm(count)466 b Fk(n)o(um)o(b)q(er)13
b(of)h(elemen)o(ts)f(read)i(\(in)o(teger\))117 460 y(IN)171
b Fm(t)o(yp)q(e)491 b Fk(datat)o(yp)q(e)14 b(of)g(eac)o(h)g(elemen)o(t)f
(\(handle\))117 543 y(IN)171 b Fm(comm)450 b Fk(comm)o(unicator)11
b(asso)q(ciated)k(with)f(\014le)f(\(handle\))117 625 y(OUT)124
b Fm(status)460 b Fk(return)15 b(status)g(of)e(write)h(op)q(eration)g
(\(Status\))75 754 y Fh(int)47 b(MPI)p 269 754 15 2 v 17 w(write)p
406 754 V 17 w(gatherv\(*file)22 b(f,)h(void*)g(buffer,)g(int)h(count,)f(MPI)
p 1497 754 V 17 w(Datatype)f(type,)393 810 y(MPI)p 468 810
V 17 w(Comm)h(comm,)g(MPI)p 819 810 V 17 w(Status)g(*status\))75
900 y(MPI)p 150 900 V 17 w(WRITE)p 287 900 V 16 w(GATHERV\()g(BUFFER,)g
(COUNT,)g(TYPE,)g(COMM,)g(STATUS,)g(IERROR\))170 957 y(<type>)g(BUFFER\(*\))
170 1013 y(INTEGER)g(COUNT,)g(TYPE,)h(COMM,)f(STATUS\(MPI)p
1058 1013 V 16 w(STATUS)p 1218 1013 V 16 w(SIZE\),)g(IERROR)166
1104 y Ft(This)13 b(is)g(a)f(collectiv)o(e)j(write)d(function)i(that)e(is)h
(in)o(v)o(ok)o(ed)g(b)o(y)f(all)i(pro)q(cesses)f(in)g(the)g(group)f(of)g
Fm(comm)m Ft(.)75 1160 y(Its)k(seman)o(tics)h(are)f(similar)h(to)f(the)g
(seman)o(tics)h(of)f(the)g(collectiv)o(e)i(comm)o(unication)f
Fm(MPI)p 1655 1160 14 2 v 16 w(GA)l(THERV)75 1217 y Ft(function)d(whic)o(h)f
(allo)o(ws)g(di\013eren)o(t)g(coun)o(t)g(of)f(data)g(to)g(b)q(e)i(sen)o(t)e
(b)o(y)h(eac)o(h)g(pro)q(cess.)19 b(The)13 b(t)o(yp)q(e)g(signature)75
1273 y(asso)q(ciated)h(with)g Fm(t)o(yp)q(e)h Ft(should)g(b)q(e)f(iden)o
(tical)i(at)d(all)i(calling)g(no)q(des;)f(pro)q(cesses)h(ma)o(y)e(sp)q(ecify)
i(di\013eren)o(t)75 1329 y(\(nonnegativ)o(e\))g(v)m(alues)h(for)f
Fm(count)p Ft(.)166 1390 y(Let)20 b Fm(n)h Ft(b)q(e)g(the)g(size)g(of)f(the)g
(comm)o(unication)h(group,)g(let)g Fm(t)o(yp)q(e)p 1302 1390
V 17 w(size)g Ft(b)q(e)g(the)f(size)h(of)f(the)h(data)75 1446
y(describ)q(ed)i(b)o(y)e Fm(t)o(yp)q(e)h Ft(and)f(let)h Fm(count)724
1453 y Ff(i)756 1446 y Ft(b)q(e)g(the)f(v)m(alue)h(of)f(the)g
Fm(count)h Ft(argumen)o(t)f(at)f(pro)q(cess)h Fm(i)p Ft(.)38
b(The)75 1503 y(outcome)14 b(is)i(as)e(if)h(a)f(message)h(is)g(generated)g(b)
o(y)f(eac)o(h)h(pro)q(cess)g(b)o(y)g(assem)o(bling)g(the)g(data)f(in)i(the)e
(send)75 1559 y(bu\013er)g(sp)q(eci\014ed)j(b)o(y)d Fm(bu\013er,)g(count,)h
(t)o(yp)q(e)p Ft(;)h(the)e(messages)g(are)g(concatenated)g(in)h(pro)q(cess)g
(rank)f(order;)75 1616 y(and)i(the)f(resulting)i(list)f(of)558
1583 y Fe(P)610 1616 y Fm(count)715 1623 y Ff(i)741 1616 y
Ft(elemen)o(ts)g(of)f(t)o(yp)q(e)h Fm(t)o(yp)q(e)h Ft(is)f(written)f(on)h
(the)f(\014le.)22 b(Eac)o(h)16 b(pro)q(cess)75 1672 y(is)f(returning)f(in)h
Fm(status)h Ft(a)e(coun)o(t)g(of)f(the)h(n)o(um)o(b)q(er)h(of)f(items)g(and)g
(basic)h(elemen)o(ts)g(it)f(has)g(written)g(on)o(to)75 1728
y(the)i(\014le.)24 b(An)16 b(end-of-\014le)i(or)e(end-of-record)g(error)g
(indication)i(is)f(returned)f(to)g(eac)o(h)g(calling)i(pro)q(cess)75
1785 y(is)e(suc)o(h)f(error)g(o)q(ccurred)h(during)g(the)f(\014le)h(access.)
75 1929 y Fo(1.6.2)49 b(File)17 b(p)q(ositioning)75 2069 y
Fm(MPI)p 160 2069 V 16 w(SEEK)p 287 2069 V 16 w(ALL\(comm)m(,)11
b(o\013set,)k(whence\))117 2150 y Fk(IN)155 b Fm(comm)466 b
Fk(comm)o(unicator)11 b(asso)q(ciated)k(with)f(\014le)f(\(handle\))117
2233 y(IN)155 b Fm(o\013set)484 b Fk(o\013set)15 b(in)o(to)e(\014le)h(\(in)o
(teger\))117 2316 y(IN)155 b Fm(whence)450 b Fk(one)20 b(of)f
Fj(MPI)p 1117 2316 13 2 v 15 w(SET)g Fk(\(indicating)g(start)i(of)e
(\014le\),)i Fj(MPI)p 1779 2316 V 14 w(END)905 2372 y Fk(\(indicating)16
b(end)i(of)e(\014le\),)h(or)g Fj(MPI)p 1479 2372 V 15 w(CUR)e
Fk(\(indicating)h(cur-)905 2429 y(ren)o(t)f(p)q(osition\))e(\(state\))p
Ft(.)75 2557 y Fh(int)47 b(MPI)p 269 2557 15 2 v 17 w(Seek)p
382 2557 V 17 w(all\(MPI)p 567 2557 V 16 w(Comm)23 b(comm,)g(MPI)p
917 2557 V 17 w(Fint)h(offset,)e(MPI)p 1316 2557 V 17 w(IO)i(whence\))75
2647 y(MPI)p 150 2647 V 17 w(SEEK)p 263 2647 V 16 w(ALL\(COMM,)f(OFFSET,)g
(WHENCE,)g(IERROR\))170 2704 y(INTEGER)g(COMM,)h(OFFSET,)e(WHENCE,)h(IERROR)
-32 46 y Fr(1)-32 103 y(2)-32 159 y(3)-32 215 y(4)-32 272 y(5)-32
328 y(6)-32 385 y(7)-32 441 y(8)-32 498 y(9)-40 554 y(10)-40
611 y(11)-40 667 y(12)-40 724 y(13)-40 780 y(14)-40 836 y(15)-40
893 y(16)-40 949 y(17)-40 1006 y(18)-40 1062 y(19)-40 1119
y(20)-40 1175 y(21)-40 1232 y(22)-40 1288 y(23)-40 1345 y(24)-40
1401 y(25)-40 1457 y(26)-40 1514 y(27)-40 1570 y(28)-40 1627
y(29)-40 1683 y(30)-40 1740 y(31)-40 1796 y(32)-40 1853 y(33)-40
1909 y(34)-40 1966 y(35)-40 2022 y(36)-40 2078 y(37)-40 2135
y(38)-40 2191 y(39)-40 2248 y(40)-40 2304 y(41)-40 2361 y(42)-40
2417 y(43)-40 2474 y(44)-40 2530 y(45)-40 2587 y(46)-40 2643
y(47)-40 2699 y(48)p eop
%%Page: 18 19
bop 75 -100 a Ft(18)1387 b Fp(CHAPTER)16 b(1.)34 b(IO)75 49
y Fm(MPI)p 160 49 14 2 v 16 w(REWIND)p 353 49 V 16 w(ALL\(comm)m(\))117
127 y Fk(IN)155 b Fm(comm)466 b Fk(comm)o(unicator)11 b(asso)q(ciated)k(with)
f(\014le)75 252 y Fh(int)47 b(MPI)p 269 252 15 2 v 17 w(Rewind)p
430 252 V 16 w(all\(MPI)p 614 252 V 17 w(Comm)23 b(comm\))75
339 y(MPI)p 150 339 V 17 w(REWIND)p 311 339 V 16 w(ALL\(COMM,)g(IERROR\))170
395 y(INTEGER)g(COMM,)h(IERROR)75 529 y Fm(MPI)p 160 529 14
2 v 16 w(BA)o(CKSP)l(A)o(CE)p 431 529 V 17 w(ALL\(com)o(m)m(\))117
607 y Fk(IN)155 b Fm(comm)466 b Fk(comm)o(unicator)11 b(asso)q(ciated)k(with)
f(\014le)75 732 y Fh(int)47 b(MPI)p 269 732 15 2 v 17 w(Backspace)p
502 732 V 16 w(all\(MPI)p 686 732 V 16 w(Comm)24 b(comm\))75
819 y(MPI)p 150 819 V 17 w(BACKSPACE)p 383 819 V 16 w(ALL\(COMM,)e(IERROR\))
170 875 y(INTEGER)h(COMM,)h(IERROR)75 1009 y Fm(MPI)p 160 1009
14 2 v 16 w(ENDFILE)p 359 1009 V 16 w(ALL\(com)o(m)m(\))117
1087 y Fk(IN)155 b Fm(comm)466 b Fk(comm)o(unicator)11 b(asso)q(ciated)k
(with)f(\014le)75 1212 y Fh(int)47 b(MPI)p 269 1212 15 2 v
17 w(Endfile)p 454 1212 V 16 w(all\(MPI)p 638 1212 V 17 w(Comm)23
b(comm\))75 1299 y(MPI)p 150 1299 V 17 w(ENDFILE\(COMM,)f(IERROR\))170
1355 y(INTEGER)h(COMM,)h(IERROR)166 1442 y Ft(These)11 b(functions)h(ha)o(v)o
(e)f(the)g(same)g(meaning)g(as)g(the)g(corresp)q(onding)h(functions)g
(without)f(the)21 b Fj(ALL)75 1499 y Ft(su\016x,)e(except)f(that)g(they)g
(are)g(called)i(collectiv)o(ely)h(b)o(y)d(all)h(pro)q(cesses)g(in)g(the)f
(group;)h(all)h(pro)q(cesses)75 1555 y(pro)o(vide)c(the)f(same)g(argumen)o(t)
f(v)m(alues.)166 1612 y(The)d(function)i Fm(MPI)p 515 1612
14 2 v 15 w(GETPOS)g Ft(can)e(b)q(e)h(applied)h(to)e(a)g(\014le)h(op)q(ened)h
(with)f(the)21 b Fj(COLLECTIVE)10 b Ft(mo)q(de.)75 1669 y(It)15
b(can)h(b)q(e)f(called)i(lo)q(cally)g(b)o(y)e(eac)o(h)h(pro)q(cess)f(in)h
(the)f(group.)166 1808 y Fl(Implemen)o(tati)o(on)c(note:)35
b Fk(All)11 b(the)j(functions)e(ma)o(y)f(b)q(e)i(implemen)o(ted)e(lo)q(cally)
m(,)f(if)i(the)i(v)n(alue)e(of)g(the)h(\014le)75 1865 y(p)q(oin)o(ter)h(is)g
(stored)h(at)e(eac)o(h)i(no)q(de.)75 2093 y Fu(1.7)59 b(Erro)n(r)20
b(handling)75 2195 y Ft(MPI-IO)14 b(uses)g(the)g(general)g(error)f(handling)i
(facilities)g(of)f(MPI.)f(MPI-IO)h(calls)h(return)e(an)h(error)e(co)q(de)75
2252 y(that)e(indicate)i(the)f(nature)g(of)f(the)h(error,)g(if)g(one)g(o)q
(ccurred.)19 b(The)11 b(function)h Fm(MPI)p 1458 2252 V 15
w(ERROR)p 1620 2252 V 18 w(STRING)g Ft(can)75 2308 y(b)q(e)h(used)g(to)f
(prin)o(t)g(the)h(error)e(message)h(asso)q(ciated)h(with)f(an)g(error)g(co)q
(de.)20 b(Whenev)o(er)12 b(an)g(error)g(o)q(ccurs,)75 2365
y(the)k(error)g(handler)h(attac)o(hed)e(to)h(the)g(comm)o(unicator)g(used)g
(in)h(the)f(call)i(is)e(in)o(v)o(ok)o(ed.)23 b(The)16 b(standard)75
2421 y(error)h(handler)i(considers)f(truncation)g(errors)f(on)h(read)f(to)g
(b)q(e)i(non-fatal)e(and)h(truncation)g(error)f(on)75 2478
y(writes)e(to)e(b)q(e)j(fatal.)j(This)c(b)q(eha)o(vior)g(can)g(b)q(e)g(c)o
(hanged)g(b)o(y)f(attac)o(hing)g(another)h(error)e(handler)j(to)e(the)75
2534 y(comm)o(unicator)g(used:)20 b(The)15 b(use)g(of)f(the)g(error)g
(handler)h Fj(MPI)p 1142 2534 13 2 v 15 w(ERRORSRETURN)e Ft(will)j(cause)e
(all)i(errors)75 2591 y(to)e(b)q(e)i(non-fatal:)k(it)15 b(is)g(the)g(user)g
(resp)q(onsibilit)o(y)l(,)j(in)d(this)h(case,)e(to)h(test)f(the)h(error)f(co)
q(de)i(returned)f(b)o(y)75 2647 y(eac)o(h)i(co)q(de.)24 b(The)17
b(use)g(of)f(the)h(error)e(handler)j Fj(MPI)p 968 2647 V 14
w(ERRORSF)m(A)m(T)m(AL)c Ft(will)k(cause)f(all)h(I/O)f(errors)e(to)h(b)q(e)75
2704 y(treated)f(as)g(fatal)f(and)i(ab)q(ort)e(the)i(computation.)1967
46 y Fr(1)1967 103 y(2)1967 159 y(3)1967 215 y(4)1967 272 y(5)1967
328 y(6)1967 385 y(7)1967 441 y(8)1967 498 y(9)1959 554 y(10)1959
611 y(11)1959 667 y(12)1959 724 y(13)1959 780 y(14)1959 836
y(15)1959 893 y(16)1959 949 y(17)1959 1006 y(18)1959 1062 y(19)1959
1119 y(20)1959 1175 y(21)1959 1232 y(22)1959 1288 y(23)1959
1345 y(24)1959 1401 y(25)1959 1457 y(26)1959 1514 y(27)1959
1570 y(28)1959 1627 y(29)1959 1683 y(30)1959 1740 y(31)1959
1796 y(32)1959 1853 y(33)1959 1909 y(34)1959 1966 y(35)1959
2022 y(36)1959 2078 y(37)1959 2135 y(38)1959 2191 y(39)1959
2248 y(40)1959 2304 y(41)1959 2361 y(42)1959 2417 y(43)1959
2474 y(44)1959 2530 y(45)1959 2587 y(46)1959 2643 y(47)1959
2699 y(48)p eop
%%Page: 19 20
bop 75 -100 a Fp(1.8.)34 b(VEST)l(A)16 b(FUNCTIONS)1206 b Ft(19)75
49 y Fu(1.8)59 b(V)n(esta)20 b(functions)75 154 y Fo(1.8.1)49
b(File)17 b(Distribution)75 242 y Ft(A)h(V)l(esta)g(\014le)h(consists)f(of)f
(a)h(t)o(w)o(o-dimensional)h(arra)o(y)d(of)i(records,)g(un)o(b)q(ounded)i(in)
e(the)g(v)o(ertical)h(di-)75 298 y(mension.)h(A)14 b(V)l(esta)g(\014le)g(ma)o
(y)f(b)q(e)i(partitioned)f(in)o(to)g Fn(sub\014les)p Ft(,)g(whic)o(h)g(are)g
(submatrices)g(of)f(the)h(V)l(esta)75 354 y(\014le)i(matrix.)j(The)d(mec)o
(hanism)f(for)f(sp)q(ecifying)j(a)e Fn(partitioning)k(sc)o(heme)14
b Ft(that)g(partitions)i(a)e(V)l(esta)75 411 y(\014le)k(in)o(to)f(sub\014les)
h(is)g(similar)g(to)e(that)h(used)g(for)g(mapping)g(a)g(t)o(w)o
(o-dimensional)h(arra)o(y)e(in)i(High)f(P)o(er-)75 467 y(formance)e(F)l
(ortran)f(\(HPF)g([5)o(]\):)19 b(A)d(sub\014le)g(is)g(a)e(subset)i(of)e(the)h
(t)o(w)o(o-dimensional)h(arra)o(y)e(that)h(w)o(ould)75 524
y(b)q(e)h(mapp)q(ed)g(to)e(one)i(\(virtual\))f(no)q(de)h(b)o(y)f(an)g(HPF)g
(distribution.)166 581 y(The)j(same)g(\014le)h(ma)o(y)e(b)q(e)i(op)q(ened)g
(with)g(di\013eren)o(t)f(partitioning)h(sc)o(hemes.)29 b(Th)o(us,)18
b(the)g(records)75 638 y(in)h(the)g(\014le)g(ma)o(y)e(b)q(e)i(group)q(ed)g
(and)g(ordered)f(di\013eren)o(tly)l(,)i(according)f(to)e(the)i(access)f
(pattern)g(of)g(an)75 694 y(application,)e(without)g(actually)g(mo)o(ving)f
(the)g(data.)166 751 y(When)20 b(a)g(V)l(esta)g(\014le)h(is)f(accessed)h(b)o
(y)e(MPI-IO)i(in)g Fm(p)o(rivate)f Ft(mo)q(de,)h(then)f(a)g(distinct)h
(sub\014le)g(is)75 808 y(allo)q(cated)14 b(to)f(eac)o(h)g(pro)q(cess)g(in)h
(the)f(accessing)h(group.)19 b(When)14 b(a)f(V)l(esta)g(\014le)h(is)f(allo)q
(cated)i(in)f(an)o(y)e(other)75 864 y(mo)q(de,)18 b(then)g(the)g(same)f
(sub\014le)i(is)f(accessed)g(b)o(y)g(all)g(pro)q(cesses)g(in)g(the)g(group.)
27 b(In)18 b(either)g(case,)g(the)75 921 y(sub\014le)g(is)g(considered)g(to)e
(consist)h(of)g(a)f(sequence)i(of)e(records,)h(with)g(records)g(ordered)g(in)
h(canonical)75 977 y(order)c(within)h(the)f(sub\014le.)21 b(Suc)o(h)15
b(a)e(sub\014le)j(corresp)q(onds)e(to)g(a)f(\014xed)i(record)f(size)h(MPI-IO)
g(\014le.)20 b(This)75 1034 y(\014le)d(can)f(also)f(b)q(e)h(accessed)h(as)e
(a)g(stream)g(\014le,)i(b)o(y)e(ignoring)i(the)e(record)h(structure.)21
b(V)l(ariable)c(record)75 1090 y(size)f(\014les)g(are)f(curren)o(tly)h(not)f
(supp)q(orted)g(b)o(y)h(V)l(esta.)166 1147 y(W)l(e)f(describ)q(e)i(no)o(w)e
(in)h(more)f(detail)h(the)f(structure)g(of)g(V)l(esta)g(\014les)h(and)f(of)g
(sub\014les.)166 1205 y(A)i(V)l(esta)g(\014le)h(is)f(stored)f(across)h(a)f(n)
o(um)o(b)q(er)i(of)e Fn(storage)k(no)q(des)p Ft(.)25 b(The)17
b(V)l(esta)g(\014le)h(structure)e(is)75 1261 y(de\014ned)e(b)o(y)f(t)o(w)o(o)
f(parameters:)18 b(The)13 b(n)o(um)o(b)q(er)g Fd(ncel)q(l)q(s)f
Ft(of)h(V)l(esta)f(\014le)i(columns)g(\(also)f(called)h Fn(cells)p
Ft(\),)g(and)75 1318 y(the)j(record)h(size)g Fd(r)q(ec)p 451
1318 14 2 v 16 w(siz)r(e)p Ft(.)26 b(W)l(e)17 b(denote)h(b)o(y)f
Fd(r)q(ec)941 1325 y Fc(i;j)997 1318 y Ft(record)g Fd(i)g Ft(of)g(cell)i
Fd(j)s Ft(.)25 b(Note)17 b(that)g(all)h(n)o(um)o(b)q(erings)75
1374 y(are)d(zero)g(based.)166 1431 y(The)i(default)h(n)o(um)o(b)q(er)g(of)f
(cells)h(is)g(one)g(p)q(er)f(storage)f(no)q(de,)i(in)g(whic)o(h)g(case)g(one)
f(\014le)h(column)g(is)75 1488 y(stored)c(on)h(eac)o(h)g(storage)e(no)q(de.)
20 b(When)15 b(these)g(n)o(um)o(b)q(ers)g(are)g(not)f(equal,)h(the)g(system)f
(allo)q(cates)h(cells)75 1544 y(to)g(storage)f(no)q(des)h(in)h(a)f
(round-robin)h(fashion;)g(a)f(cell)h(is)g(alw)o(a)o(ys)e(con)o(tained)i(b)o
(y)f(one)h(storage)e(no)q(de.)166 1602 y(A)h(partitioning)h(sc)o(heme)g(is)g
(sp)q(eci\014ed)h(b)o(y)e(four)g(parameters:)75 1699 y Fn(Hn:)22
b Ft(n)o(um)o(b)q(er)16 b(of)e(horizon)o(tal)i(partitions.)75
1796 y Fn(Vn:)22 b Ft(n)o(um)o(b)q(er)15 b(of)g(v)o(ertical)h(partitions.)75
1894 y Fn(Hbs:)22 b Ft(horizon)o(tal)15 b(size)h(of)f(blo)q(c)o(k.)75
1991 y Fn(Vbs:)21 b Ft(v)o(ertical)16 b(size)g(of)f(blo)q(c)o(k.)166
2088 y(The)g(inequalit)o(y)i(\()p Fd(H)t(n)10 b Fg(\000)g Ft(1\))g
Fg(\001)f Fd(H)t(bs)j(<)h(ncel)q(l)q(s)i Ft(should)h(hold.)166
2145 y(The)g(n)o(um)o(b)q(er)h(of)f(horizon)o(tal)h(or)e(v)o(ertical)i
(partitions)g(is)g(equiv)m(alen)o(t)h(to)d(the)i(n)o(um)o(b)q(er)f(of)g
(virtual)75 2202 y(pro)q(cessors)i(in)h(a)f(pro)q(cessor)g(grid)h(used)f(as)g
(the)h(target)e(of)g(an)h(HPF)35 b Fj(DISTRIBUTE)17 b Ft(statemen)o(t;)h(the)
75 2258 y(horizon)o(tal)d(or)g(v)o(ertical)g(blo)q(c)o(k)h(size)f(is)h(equiv)
m(alen)o(t)g(to)f(the)g(parameter)f(that)g(de\014nes)i(blo)q(c)o(k)g(size)f
(in)h(an)75 2315 y(HPF)f(blo)q(c)o(k-cyclic)j(distribution.)166
2372 y(The)j(four)f(parameters)g(de\014ne)i(a)e(partitioning)i(sc)o(heme)f
(with)g(a)f Fd(H)t(n)14 b Fg(\001)f Fd(V)d(n)21 b Ft(arra)o(y)e(of)i
(sub\014les)75 2429 y Fd(par)q(t)160 2436 y Fc(r)o(;s)202 2429
y Ft(.)h(W)l(e)16 b(n)o(um)o(b)q(er)g(these)g(sub\014les)h(in)g(ro)o(w)e(ma)s
(jor)f(order.)21 b(In)c(eac)o(h)f(dimension,)h(the)f(partitioning)75
2485 y(sc)o(heme)k(consists)g(of)g(a)f(recurring)i(pattern)e(of)h
Fd(H)t(n)f Ft(\()p Fd(V)9 b(n)p Ft(\))20 b(in)o(terlea)o(v)o(ed)h(blo)q(c)o
(ks,)g(where)f(eac)o(h)g(blo)q(c)o(k)75 2542 y(con)o(tains)15
b Fd(H)t(bs)g Ft(\()p Fd(V)9 b(bs)p Ft(\))15 b(consecutiv)o(e)h(records.)k
(This)15 b(is)h(illustrated)h(in)f(Figure)f(1.1.)166 2599 y(More)f(precisely)
l(,)j(assume)e(that)607 2704 y Fd(ncel)q(l)q(s)d Ft(=)h Fd(B)g
Fg(\001)c Fd(H)t(n)h Fg(\001)g Fd(H)t(bs)f Ft(+)i Fd(H)i Fg(\001)d
Fd(H)t(bs)g Ft(+)g Fd(I)t(;)-32 46 y Fr(1)-32 103 y(2)-32 159
y(3)-32 215 y(4)-32 272 y(5)-32 328 y(6)-32 385 y(7)-32 441
y(8)-32 498 y(9)-40 554 y(10)-40 611 y(11)-40 667 y(12)-40
724 y(13)-40 780 y(14)-40 836 y(15)-40 893 y(16)-40 949 y(17)-40
1006 y(18)-40 1062 y(19)-40 1119 y(20)-40 1175 y(21)-40 1232
y(22)-40 1288 y(23)-40 1345 y(24)-40 1401 y(25)-40 1457 y(26)-40
1514 y(27)-40 1570 y(28)-40 1627 y(29)-40 1683 y(30)-40 1740
y(31)-40 1796 y(32)-40 1853 y(33)-40 1909 y(34)-40 1966 y(35)-40
2022 y(36)-40 2078 y(37)-40 2135 y(38)-40 2191 y(39)-40 2248
y(40)-40 2304 y(41)-40 2361 y(42)-40 2417 y(43)-40 2474 y(44)-40
2530 y(45)-40 2587 y(46)-40 2643 y(47)-40 2699 y(48)p eop
%%Page: 20 21
bop 75 -100 a Ft(20)1387 b Fp(CHAPTER)16 b(1.)34 b(IO)75 4
y
 19608222 14208860 0 0 42626580 30785863 startTexFig
75 4 a
%%BeginDocument: vst-part.eps

/Freelance_Plus dup 100 dict def load begin
[ ] {bind} stopped { (patching the bind operator...) = flush
/*bind /bind load def /bind { dup xcheck { *bind } if } *bind def } if pop
/bdf {bind def} bind def /ldf {load def} bdf
/mt /moveto ldf /rt /rmoveto ldf /l2 /lineto ldf /c2 /curveto ldf
/sg /setgray ldf /gs /gsave ldf /ef /eofill ldf /rl2 /rlineto ldf
/st /stroke ldf /gr /grestore ldf /np /newpath ldf
/sv /save ldf /su /statusdict ldf /rs /restore ldf
/sw /setlinewidth ldf /sd /setdash ldf /cp /closepath ldf /ed {exch def } bdf
/cfnt {findfont exch makefont setfont} bdf
/itr {transform round exch round exch itransform} bdf
/fres 72 0 matrix currentmatrix dtransform
exch dup mul exch dup mul add sqrt def
/res fres def /mcm matrix currentmatrix bdf
end

Freelance_Plus begin
save newpath
.1 .1 scale
/ecm matrix currentmatrix bdf
/sem {ecm setmatrix} bdf
-720 -720 translate
0 setlinecap
0 setlinejoin
1.42 setmiterlimit

0.000 sg
6 sw
sv np [] 0 sd
1598 3126 itr mt
5402 3126 itr l2
5402 4869 itr l2
1598 4869 itr l2
1598 3126 itr l2
cp
st rs

/Ich 256 array def StandardEncoding Ich copy pop
/bullet/paragraph/section/dieresis/tilde/ring
/circumflex/grave/acute/quotedblleft/quotesingle
/ellipsis/endash/emdash/guilsinglleft/guilsinglright
/quotedblbase/quotesinglbase/quotedblright/OE/oe
/Ydieresis/fi/fl/dagger/daggerdbl/Ccedilla/udieresis
/eacute/acircumflex/adieresis/agrave/aring/ccedilla
/ecircumflex/edieresis/egrave/idieresis/icircumflex
/igrave/Adieresis/Aring/Eacute/ae/AE/ocircumflex
/odieresis/ograve/ucircumflex/ugrave/ydieresis
/Odieresis/Udieresis/oslash/sterling/Oslash/florin
/aacute/iacute/oacute/uacute/ntilde/Ntilde/ordfeminine
/ordmasculine/questiondown/exclamdown/guillemotleft
/guillemotright/Aacute/Acircumflex/Agrave/cent/yen
/atilde/Atilde/currency/Ecircumflex/Edieresis/Egrave
/dotlessi/Iacute/Icircumflex/Idieresis/Igrave/Oacute
/germandbls/Ocircumflex/Ograve/otilde/Otilde/Uacute
/Ucircumflex/Ugrave/macron/cedilla/periodcentered
Ich 127 97 getinterval astore pop
/Ienc { /ncs Ich def /nfn ed /bfn ed /bfd bfn findfont def
/nf bfd maxlength dict def bfd{exch dup dup /FID ne exch /Encoding ne and
{exch nf 3 1 roll put}{pop pop} ifelse }forall nf/FontName nfn put
nf/Encoding ncs put nfn nf definefont pop}bdf

/IencO { /ncs Ich def /nfn ed /bfn ed /lnw ed /bfd bfn findfont def
/nf bfd maxlength 4 add dict def bfd{exch dup dup /FID ne exch /Encoding ne and
{exch nf 3 1 roll put}{pop pop} ifelse }forall nf/FontName nfn put
nf/Encoding ncs put
nf/PaintType 2 put nf/StrokeWidth lnw put
nfn nf definefont pop}bdf

/IencSO { /nfn ed /bfn ed /lnw ed /bfd bfn findfont def
/nf bfd maxlength 4 add dict def bfd{exch dup /FID ne { exch nf 3 1
roll put}{pop pop} ifelse }forall
nf/FontName nfn put nf/PaintType 2 put
nf/StrokeWidth lnw put nfn nf definefont pop}bdf

/Helvetica /Flfon1 Ienc
[191 0 0.00 191 -18 -142]  /Flfon1 cfnt

1843 5009 itr mt
-53 0 itr rt
0 71 itr rt
(0)
show


2311 5014 itr mt
-53 0 itr rt
0 71 itr rt
(1)
show


2787 5014 itr mt
-53 0 itr rt
0 71 itr rt
(2)
show


3262 5014 itr mt
-53 0 itr rt
0 71 itr rt
(3)
show


3738 5014 itr mt
-53 0 itr rt
0 71 itr rt
(4)
show


4213 5014 itr mt
-53 0 itr rt
0 71 itr rt
(5)
show


4689 5014 itr mt
-53 0 itr rt
0 71 itr rt
(6)
show


5164 5014 itr mt
-53 0 itr rt
0 71 itr rt
(7)
show


1360 4724 itr mt
-53 0 itr rt
0 71 itr rt
(0)
show


1360 4433 itr mt
-53 0 itr rt
0 71 itr rt
(1)
show


1360 4143 itr mt
-53 0 itr rt
0 71 itr rt
(2)
show


1360 3852 itr mt
-53 0 itr rt
0 71 itr rt
(3)
show


1360 3562 itr mt
-53 0 itr rt
0 71 itr rt
(4)
show


1360 3271 itr mt
-53 0 itr rt
0 71 itr rt
(5)
show

12 sw
sv np
2549 4869 itr mt
2549 3126 itr l2
st rs

sv np
3500 4869 itr mt
3500 3126 itr l2
st rs

sv np
4451 4869 itr mt
4451 3126 itr l2
st rs

sv np [] 0 sd
1598 3998 itr mt
2549 3998 itr l2
2549 4869 itr l2
1598 4869 itr l2
1598 3998 itr l2
gs 0.920 sg
ef gr
rs

sv np [] 0 sd
4451 3998 itr mt
5402 3998 itr l2
5402 4869 itr l2
4451 4869 itr l2
4451 3998 itr l2
gs 0.920 sg
ef gr
rs

/fi16 {0 16 2} def
/bitval {/yb ed /xb ed bs yb bw mul xb 8 idiv add
get 1 7 xb 8 mod sub bitshift and 0 ne} bdf
/spotf {/y ed /x ed x 1 add 2 div bps mul cvi
y 1 add 2 div bps mul cvi
bitval {/onb onb 1 add def 1} {/ofb ofb 1 add def 0}
ifelse} def
/uset {/uf ed /ua ed /uc ed uc dup matrix scale
ua matrix rotate mcm mcm concatmatrix mcm concatmatrix
pop 1 0 mcm dtransform
/y1 ed /x1 ed /nsc y1 x1 atan def res x1 dup mul
y1 dup mul add sqrt div nsc /uf load setscreen} bdf
/mkfill {/cz ed /bs ed /bw ed /bps ed /an ed
/onb 0 def /ofb 0 def cz an /spotf load uset
{} settransfer ofb ofb onb add div sg} bdf

sv np [] 0 sd
2549 3998 itr mt
3500 3998 itr l2
3500 4869 itr l2
2549 4869 itr l2
2549 3998 itr l2
gs fi16 <
0001800240042008101008200440028001000280044008201010200840048002
> 03.84 mkfill
ef gr
rs

sv np [] 0 sd
3500 3998 itr mt
4451 3998 itr l2
4451 4869 itr l2
3500 4869 itr l2
3500 3998 itr l2
gs 0.850 sg
ef gr
rs

sv np [] 0 sd
2549 3126 itr mt
3500 3126 itr l2
3500 3998 itr l2
2549 3998 itr l2
2549 3126 itr l2
gs fi16 <
8000400020001000080004000200010000800040002000100008000400020001
> 03.84 mkfill
ef gr
rs

sv np [] 0 sd
1598 3126 itr mt
2549 3126 itr l2
2549 3998 itr l2
1598 3998 itr l2
1598 3126 itr l2
gs fi16 <
0001000200040008001000200040008001000200040008001000200040008000
> 03.84 mkfill
ef gr
rs

6 sw
sv np [] 0 sd
4451 3126 itr mt
5402 3126 itr l2
5402 3998 itr l2
4451 3998 itr l2
4451 3126 itr l2
gs fi16 <
0001000200040008001000200040008001000200040008001000200040008000
> 03.84 mkfill
ef gr
rs

12 sw
sv np [] 0 sd
3500 3126 itr mt
4451 3126 itr l2
4451 3998 itr l2
3500 3998 itr l2
3500 3126 itr l2
rs

6 sw
sv np [] 0 sd
1598 1383 itr mt
5402 1383 itr l2
5402 3126 itr l2
1598 3126 itr l2
1598 1383 itr l2
rs

12 sw
sv np [] 0 sd
2549 3127 itr mt
2549 1383 itr l2
st rs

sv np
3500 3127 itr mt
3500 1383 itr l2
st rs

sv np
4451 3127 itr mt
4451 1383 itr l2
st rs

sv np [] 0 sd
1598 2255 itr mt
2549 2255 itr l2
2549 3126 itr l2
1598 3126 itr l2
1598 2255 itr l2
gs 0.920 sg
ef gr
rs

6 sw
sv np [] 0 sd
4451 2255 itr mt
5402 2255 itr l2
5402 3126 itr l2
4451 3126 itr l2
4451 2255 itr l2
gs 0.920 sg
ef gr
rs

12 sw
sv np [] 0 sd
2549 2255 itr mt
3500 2255 itr l2
3500 3126 itr l2
2549 3126 itr l2
2549 2255 itr l2
gs fi16 <
0001800240042008101008200440028001000280044008201010200840048002
> 03.84 mkfill
ef gr
rs

sv np [] 0 sd
3500 2255 itr mt
4451 2255 itr l2
4451 3126 itr l2
3500 3126 itr l2
3500 2255 itr l2
gs 0.850 sg
ef gr
rs

sv np [] 0 sd
2549 1383 itr mt
3500 1383 itr l2
3500 2255 itr l2
2549 2255 itr l2
2549 1383 itr l2
gs fi16 <
8000400020001000080004000200010000800040002000100008000400020001
> 03.84 mkfill
ef gr
rs

sv np [] 0 sd
1598 1383 itr mt
2549 1383 itr l2
2549 2255 itr l2
1598 2255 itr l2
1598 1383 itr l2
gs fi16 <
0001000200040008001000200040008001000200040008001000200040008000
> 03.84 mkfill
ef gr
rs

sv np [] 0 sd
4451 1383 itr mt
5402 1383 itr l2
5402 2255 itr l2
4451 2255 itr l2
4451 1383 itr l2
gs fi16 <
0001000200040008001000200040008001000200040008001000200040008000
> 03.84 mkfill
ef gr
rs

sv np [] 0 sd
3500 1383 itr mt
4451 1383 itr l2
4451 2255 itr l2
3500 2255 itr l2
3500 1383 itr l2
rs


1360 2981 itr mt
-53 0 itr rt
0 71 itr rt
(6)
show


1360 2690 itr mt
-53 0 itr rt
0 71 itr rt
(7)
show


1360 2400 itr mt
-53 0 itr rt
0 71 itr rt
(8)
show


1360 2109 itr mt
-53 0 itr rt
0 71 itr rt
(9)
show


1360 1819 itr mt
-106 0 itr rt
0 71 itr rt
(10)
show


1360 1528 itr mt
-106 0 itr rt
0 71 itr rt
(11)
show


1360 1238 itr mt
-27 0 itr rt
0 71 itr rt
(.)
show


1360 947 itr mt
-27 0 itr rt
0 71 itr rt
(.)
show


1360 1093 itr mt
-27 0 itr rt
0 71 itr rt
(.)
show

sv np [] 0 sd
2549 4869 itr mt
2549 1383 itr l2
st rs

sv np
3500 4869 itr mt
3500 1383 itr l2
st rs

sv np
4451 4869 itr mt
4451 1383 itr l2
st rs

[153 0 0.00 153 -15 -113]  /Flfon1 cfnt

1836 4724 itr mt
-43 0 itr rt
0 57 itr rt
(0)
show


1825 4460 itr mt
-43 0 itr rt
0 57 itr rt
(1)
show


1836 4143 itr mt
-43 0 itr rt
0 57 itr rt
(2)
show


2311 4724 itr mt
-43 0 itr rt
0 57 itr rt
(3)
show


2311 4433 itr mt
-43 0 itr rt
0 57 itr rt
(4)
show


2311 4143 itr mt
-43 0 itr rt
0 57 itr rt
(5)
show


4689 4724 itr mt
-43 0 itr rt
0 57 itr rt
(6)
show


4689 4433 itr mt
-43 0 itr rt
0 57 itr rt
(7)
show


4689 4143 itr mt
-43 0 itr rt
0 57 itr rt
(8)
show


5164 4724 itr mt
-43 0 itr rt
0 57 itr rt
(9)
show


5164 4433 itr mt
-85 0 itr rt
0 57 itr rt
(10)
show


5164 4143 itr mt
-85 0 itr rt
0 57 itr rt
(11)
show


1836 2981 itr mt
-85 0 itr rt
0 57 itr rt
(12)
show


1836 2690 itr mt
-85 0 itr rt
0 57 itr rt
(13)
show


1836 2400 itr mt
-85 0 itr rt
0 57 itr rt
(14)
show


2311 2981 itr mt
-85 0 itr rt
0 57 itr rt
(15)
show


2311 2690 itr mt
-85 0 itr rt
0 57 itr rt
(16)
show


2311 2400 itr mt
-85 0 itr rt
0 57 itr rt
(17)
show


4689 2981 itr mt
-85 0 itr rt
0 57 itr rt
(18)
show


4689 2690 itr mt
-85 0 itr rt
0 57 itr rt
(19)
show


4689 2400 itr mt
-85 0 itr rt
0 57 itr rt
(20)
show


5164 2981 itr mt
-85 0 itr rt
0 57 itr rt
(21)
show


5164 2690 itr mt
-85 0 itr rt
0 57 itr rt
(22)
show


5164 2400 itr mt
-85 0 itr rt
0 57 itr rt
(23)
show


2787 4724 itr mt
-43 0 itr rt
0 57 itr rt
(0)
show


2787 4433 itr mt
-43 0 itr rt
0 57 itr rt
(1)
show


2787 4143 itr mt
-43 0 itr rt
0 57 itr rt
(2)
show


3262 4724 itr mt
-43 0 itr rt
0 57 itr rt
(3)
show


3262 4433 itr mt
-43 0 itr rt
0 57 itr rt
(4)
show


3262 4143 itr mt
-43 0 itr rt
0 57 itr rt
(5)
show


2787 2981 itr mt
-43 0 itr rt
0 57 itr rt
(6)
show


2787 2690 itr mt
-43 0 itr rt
0 57 itr rt
(7)
show


2787 2400 itr mt
-43 0 itr rt
0 57 itr rt
(8)
show


3262 2981 itr mt
-43 0 itr rt
0 57 itr rt
(9)
show


3262 2690 itr mt
-85 0 itr rt
0 57 itr rt
(10)
show


3262 2400 itr mt
-85 0 itr rt
0 57 itr rt
(11)
show


3738 4724 itr mt
-43 0 itr rt
0 57 itr rt
(0)
show


3738 4433 itr mt
-43 0 itr rt
0 57 itr rt
(1)
show


3738 4143 itr mt
-43 0 itr rt
0 57 itr rt
(2)
show


4213 4724 itr mt
-43 0 itr rt
0 57 itr rt
(3)
show


4213 4433 itr mt
-43 0 itr rt
0 57 itr rt
(4)
show


4213 4143 itr mt
-43 0 itr rt
0 57 itr rt
(5)
show


3738 2981 itr mt
-43 0 itr rt
0 57 itr rt
(6)
show


3738 2690 itr mt
-43 0 itr rt
0 57 itr rt
(7)
show


3738 2400 itr mt
-43 0 itr rt
0 57 itr rt
(8)
show


4213 2981 itr mt
-43 0 itr rt
0 57 itr rt
(9)
show


4213 2690 itr mt
-85 0 itr rt
0 57 itr rt
(10)
show


4213 2400 itr mt
-85 0 itr rt
0 57 itr rt
(11)
show


1836 3852 itr mt
-43 0 itr rt
0 57 itr rt
(0)
show


1836 3562 itr mt
-43 0 itr rt
0 57 itr rt
(1)
show


1836 3271 itr mt
-43 0 itr rt
0 57 itr rt
(2)
show


2311 3852 itr mt
-43 0 itr rt
0 57 itr rt
(3)
show


2311 3562 itr mt
-43 0 itr rt
0 57 itr rt
(4)
show


2311 3271 itr mt
-43 0 itr rt
0 57 itr rt
(5)
show


4689 3852 itr mt
-43 0 itr rt
0 57 itr rt
(6)
show


4689 3562 itr mt
-43 0 itr rt
0 57 itr rt
(7)
show


4689 3271 itr mt
-43 0 itr rt
0 57 itr rt
(8)
show


5164 3852 itr mt
-43 0 itr rt
0 57 itr rt
(9)
show


5164 3562 itr mt
-85 0 itr rt
0 57 itr rt
(10)
show


5164 3271 itr mt
-85 0 itr rt
0 57 itr rt
(11)
show


1836 2109 itr mt
-85 0 itr rt
0 57 itr rt
(12)
show


1836 1819 itr mt
-85 0 itr rt
0 57 itr rt
(13)
show


1836 1528 itr mt
-85 0 itr rt
0 57 itr rt
(14)
show


2311 2109 itr mt
-85 0 itr rt
0 57 itr rt
(15)
show


2311 1819 itr mt
-85 0 itr rt
0 57 itr rt
(16)
show


2311 1528 itr mt
-85 0 itr rt
0 57 itr rt
(17)
show


4689 2109 itr mt
-85 0 itr rt
0 57 itr rt
(18)
show


4689 1819 itr mt
-85 0 itr rt
0 57 itr rt
(19)
show


4689 1528 itr mt
-85 0 itr rt
0 57 itr rt
(20)
show


5164 2109 itr mt
-85 0 itr rt
0 57 itr rt
(21)
show


5164 1819 itr mt
-85 0 itr rt
0 57 itr rt
(22)
show


5164 1528 itr mt
-85 0 itr rt
0 57 itr rt
(23)
show


2787 3852 itr mt
-43 0 itr rt
0 57 itr rt
(0)
show


2787 3562 itr mt
-43 0 itr rt
0 57 itr rt
(1)
show


2787 3271 itr mt
-43 0 itr rt
0 57 itr rt
(2)
show


3262 3852 itr mt
-43 0 itr rt
0 57 itr rt
(3)
show


3262 3562 itr mt
-43 0 itr rt
0 57 itr rt
(4)
show


3262 3271 itr mt
-43 0 itr rt
0 57 itr rt
(5)
show


2787 2109 itr mt
-43 0 itr rt
0 57 itr rt
(6)
show


2787 1819 itr mt
-43 0 itr rt
0 57 itr rt
(7)
show


2787 1528 itr mt
-43 0 itr rt
0 57 itr rt
(8)
show


3262 2109 itr mt
-43 0 itr rt
0 57 itr rt
(9)
show


3262 1819 itr mt
-85 0 itr rt
0 57 itr rt
(10)
show


3262 1528 itr mt
-85 0 itr rt
0 57 itr rt
(11)
show


3738 3852 itr mt
-43 0 itr rt
0 57 itr rt
(0)
show


3738 3562 itr mt
-43 0 itr rt
0 57 itr rt
(1)
show


3738 3271 itr mt
-43 0 itr rt
0 57 itr rt
(2)
show


4213 3852 itr mt
-43 0 itr rt
0 57 itr rt
(3)
show


4213 3562 itr mt
-43 0 itr rt
0 57 itr rt
(4)
show


4213 3271 itr mt
-43 0 itr rt
0 57 itr rt
(5)
show


3738 2109 itr mt
-43 0 itr rt
0 57 itr rt
(6)
show


3738 1819 itr mt
-43 0 itr rt
0 57 itr rt
(7)
show


3738 1528 itr mt
-43 0 itr rt
0 57 itr rt
(8)
show


4213 2109 itr mt
-43 0 itr rt
0 57 itr rt
(9)
show


4213 1819 itr mt
-85 0 itr rt
0 57 itr rt
(10)
show


4213 1528 itr mt
-85 0 itr rt
0 57 itr rt
(11)
show

sv np
4927 4869 itr mt
4927 3126 itr l2
st rs

sv np
4927 3127 itr mt
4927 1383 itr l2
st rs

sv np
4927 4869 itr mt
4927 1383 itr l2
st rs

sv np
5402 4869 itr mt
5402 3126 itr l2
st rs

sv np
5402 3127 itr mt
5402 1383 itr l2
st rs

sv np
5402 4869 itr mt
5402 1383 itr l2
st rs

sv np
3977 4869 itr mt
3977 3126 itr l2
st rs

sv np
3977 3127 itr mt
3977 1383 itr l2
st rs

sv np
3977 4869 itr mt
3977 1383 itr l2
st rs

sv np
3026 4869 itr mt
3026 3126 itr l2
st rs

sv np
3026 3127 itr mt
3026 1383 itr l2
st rs

sv np
3026 4869 itr mt
3026 1383 itr l2
st rs

sv np
2075 4869 itr mt
2075 3126 itr l2
st rs

sv np
2075 3127 itr mt
2075 1383 itr l2
st rs

sv np
2075 4869 itr mt
2075 1383 itr l2
st rs

sv np
1599 4869 itr mt
1599 3126 itr l2
st rs

sv np
1599 3127 itr mt
1599 1383 itr l2
st rs

sv np
1599 4869 itr mt
1599 1383 itr l2
st rs

[191 0 0.00 191 -18 -142]  /Flfon1 cfnt

5857 3730 itr mt
0 71 itr rt
(ncells = 8)
show


5857 3469 itr mt
0 71 itr rt
(Hn = 3)
show


5857 3209 itr mt
0 71 itr rt
(Vn = 2)
show


5857 2948 itr mt
0 71 itr rt
(Hbs = 2)
show


5857 2687 itr mt
0 71 itr rt
(Vbs = 3)
show

sv np
1607 4870 itr mt
5415 4870 itr l2
st rs

rs end

%%EndDocument
 75 4 a
 endTexFig
586 1002 a Ft(Figure)16 b(1.1:)j(P)o(artitioning)c(of)g(a)g(V)l(esta)g(File)
75 1134 y(where)21 b(0)i Fg(\024)f Fd(I)k(<)d(H)t(bs)d Ft(and)i(0)g
Fg(\024)h Fd(H)j(<)c(H)t(n)p Ft(.)38 b(Consider)21 b(a)g(partition)h(of)e
(the)h(matrix)g(in)o(to)g(t)o(w)o(o-)75 1190 y(dimensional)j(blo)q(c)o(ks,)f
(eac)o(h)f(spanning)h Fd(V)9 b(bs)22 b Ft(consecutiv)o(e)g(ro)o(ws)f(and)h
Fd(H)t(bs)f Ft(consecutiv)o(e)i(columns.)75 1247 y(Blo)q(c)o(k)c
Fd(bl)q(ock)306 1254 y Fc(r)o(;s)365 1247 y Ft(spans)g(the)g
Fd(V)10 b(bs)18 b Ft(ro)o(ws)g Fd(r)13 b Fg(\001)f Fd(V)d(bs;)f(:)g(:)g(:)d
(;)j Ft(\()p Fd(r)k Ft(+)h(1\))f Fg(\001)g Fd(V)d(bs)k Fg(\000)f
Ft(1)19 b(and)g(the)f Fd(H)t(bs)g Ft(columns)i Fd(s)12 b Fg(\001)75
1303 y Fd(H)t(bs;)c(:)g(:)g(:)t(;)g Ft(\()p Fd(s)i Ft(+)h(1\))f
Fg(\001)g Fd(H)t(bs)g Fg(\000)h Ft(1.)23 b(If)16 b Fd(I)i(>)c
Ft(0)i(then)g(the)g(last)g(blo)q(c)o(k)h(in)g(the)f(horizon)o(tal)h
(dimension)h(\(blo)q(c)o(k)75 1360 y Fd(bl)q(ock)176 1367 y
Fc(r)o(;B)q Fb(\001)p Fc(H)r(n)p Fa(+)p Fc(H)342 1360 y Ft(\))d(spans)g
Fd(I)k Ft(columns)d(only)l(.)166 1416 y(Sub\014le)h Fd(par)q(t)400
1423 y Fc(v)q(;h)464 1416 y Ft(consists)f(of)e(blo)q(c)o(ks)i
Fd(bl)q(ock)922 1423 y Fc(r)o(;s)963 1416 y Ft(,)e(for)701
1510 y Fd(r)f Ft(=)g Fd(v)r(;)8 b(v)j Ft(+)f Fd(V)g(n;)e(v)j
Ft(+)f(2)p Fd(V)g(n;)e(:)g(:)g(:)d(;)75 1604 y Ft(and)692 1661
y Fd(s)13 b Ft(=)g Fd(h;)8 b(h)i Ft(+)g Fd(H)t(n;)e(h)h Ft(+)i(2)p
Fd(H)t(n;)d(:)g(:)g(:)t(:)166 1740 y Ft(The)15 b(n)o(um)o(b)q(er)h(of)f
(columns)h(in)g(sub\014le)g Fd(par)q(t)933 1747 y Fc(v)q(;h)998
1740 y Ft(is)f(equal)h(to)644 1893 y Fd(c)664 1900 y Fc(h)698
1893 y Ft(=)746 1795 y Fe(8)746 1832 y(>)746 1844 y(<)746 1919
y(>)746 1932 y(:)803 1837 y Ft(\()p Fd(B)d Ft(+)d(1\))g Fg(\001)g
Fd(H)t(bs)40 b Ft(if)16 b Fd(h)d(<)g(H)803 1893 y(B)g Fg(\001)d
Fd(H)t(bs)f Ft(+)i Fd(I)79 b Ft(if)16 b Fd(h)d Ft(=)g Fd(H)803
1950 y(B)g Fg(\001)d Fd(H)t(bs)154 b Ft(if)16 b Fd(h)d(>)g(H)166
2045 y Ft(When)i Fd(H)t(bs)10 b Fg(\001)g Fd(H)t(n)15 b Ft(divides)i(ev)o
(enly)f Fd(ncel)q(l)q(s)e Ft(this)i(reduces)g(to)e Fd(c)1250
2052 y Fc(h)1284 2045 y Ft(=)f Fd(ncel)q(l)q(s=H)t(n)p Ft(.)166
2101 y(Consider)i(record)f(\()p Fd(i;)8 b(j)s Ft(\))k(in)k(blo)q(c)o(k)f
Fd(bl)q(ock)873 2108 y Fc(r)o(;s)914 2101 y Ft(,)f(where)h
Fd(r)e Ft(=)g Fd(v)d Ft(+)f Fd(m)g Fg(\001)g Fd(V)g(n)15 b
Ft(and)g Fd(s)e Ft(=)g Fd(h)8 b Ft(+)i Fd(n)f Fg(\001)f Fd(H)t(n)p
Ft(.)19 b(This)75 2158 y(record)e(has)f(indices)j(\()p Fd(i)11
b Ft(+)g Fd(r)h Fg(\001)f Fd(V)f(bs;)e(j)k Ft(+)g Fd(s)f Fg(\001)g
Fd(H)t(bs)p Ft(\))16 b(in)h(the)g(global)h(\014le.)25 b(It)17
b(b)q(elongs)h(to)e(sub\014le)i Fd(par)q(t)1813 2165 y Fc(v)q(;h)1862
2158 y Ft(,)75 2214 y(and)d(has)g(indices)j(\()p Fd(i)9 b Ft(+)i
Fd(m)f Fg(\001)f Fd(V)h(bs;)e(j)j Ft(+)g Fd(n)f Fg(\001)g Fd(H)t(bs)p
Ft(\))k(in)i(the)f(sub\014le.)166 2271 y(W)l(e)20 b(further)g(need)i(to)d(sp)
q(ecify)j(a)e(canonical)h(order)f(for)g(records)g(within)i(eac)o(h)e
(sub\014le.)36 b(Since)75 2327 y(the)17 b(v)o(ertical)h(dimension)g(of)f(the)
g(sub\014le)h(is)g(un)o(b)q(ounded,)g(one)f(cannot)g(use)g(a)g(column-ma)s
(jor)g(order.)75 2384 y(Ho)o(w)o(ev)o(er,)f(a)h(\\column)g(\014rst")f
(ordering)i(has)e(the)i(adv)m(an)o(tage)e(that)g(consecutiv)o(e)i(records)f
(are)f(stored)75 2440 y(con)o(tiguously)l(,)e(th)o(us)f(impro)o(ving)h(lo)q
(calit)o(y)g(of)f(access.)20 b(The)13 b(ordering)h(used)g(is)f(a)g
(compromise)h(b)q(et)o(w)o(een)75 2497 y(these)f(t)o(w)o(o)e(con\015icting)k
(requiremen)o(ts:)k(Within)14 b(eac)o(h)f(blo)q(c)o(k,)g(records)g(are)f
(ordered)h(in)h(column)f(ma)s(jor)75 2553 y(order;)g(the)g(blo)q(c)o(ks)g
(themselv)o(es)h(are)e(ordered)h(in)h(ro)o(w)e(ma)s(jor)f(order.)19
b(Th)o(us,)12 b(using)i(the)f(same)f(notation)75 2609 y(as)j(b)q(efore,)g
(the)g(record)g(with)h(indices)h(\()p Fd(i)10 b Ft(+)g Fd(m)g
Fg(\001)g Fd(V)f(bs;)f(j)k Ft(+)e Fd(n)h Fg(\001)e Fd(H)t(bs)p
Ft(\))14 b(in)j(the)e(sub\014le)h Fd(par)q(t)1619 2616 y Fc(v)q(;h)1684
2609 y Ft(has)f(rank)580 2704 y Fd(m)10 b Fg(\001)f Fd(c)672
2711 y Fc(h)704 2704 y Fg(\001)g Fd(V)h(bs)g Ft(+)g Fd(n)h
Fg(\001)e Fd(H)t(bs)h Fg(\001)g Fd(V)f(bs)h Ft(+)h Fd(j)h Fg(\001)e
Fd(V)f(bs)h Ft(+)h Fd(i)1967 46 y Fr(1)1967 103 y(2)1967 159
y(3)1967 215 y(4)1967 272 y(5)1967 328 y(6)1967 385 y(7)1967
441 y(8)1967 498 y(9)1959 554 y(10)1959 611 y(11)1959 667 y(12)1959
724 y(13)1959 780 y(14)1959 836 y(15)1959 893 y(16)1959 949
y(17)1959 1006 y(18)1959 1062 y(19)1959 1119 y(20)1959 1175
y(21)1959 1232 y(22)1959 1288 y(23)1959 1345 y(24)1959 1401
y(25)1959 1457 y(26)1959 1514 y(27)1959 1570 y(28)1959 1627
y(29)1959 1683 y(30)1959 1740 y(31)1959 1796 y(32)1959 1853
y(33)1959 1909 y(34)1959 1966 y(35)1959 2022 y(36)1959 2078
y(37)1959 2135 y(38)1959 2191 y(39)1959 2248 y(40)1959 2304
y(41)1959 2361 y(42)1959 2417 y(43)1959 2474 y(44)1959 2530
y(45)1959 2587 y(46)1959 2643 y(47)1959 2699 y(48)p eop
%%Page: 21 22
bop 75 -100 a Fp(1.8.)34 b(VEST)l(A)16 b(FUNCTIONS)1206 b Ft(21)75
4 y
 19608222 14208860 0 0 42626580 30785863 startTexFig
75 4 a
%%BeginDocument: vst-par2.eps

/Freelance_Plus dup 100 dict def load begin
[ ] {bind} stopped { (patching the bind operator...) = flush
/*bind /bind load def /bind { dup xcheck { *bind } if } *bind def } if pop
/bdf {bind def} bind def /ldf {load def} bdf
/mt /moveto ldf /rt /rmoveto ldf /l2 /lineto ldf /c2 /curveto ldf
/sg /setgray ldf /gs /gsave ldf /ef /eofill ldf /rl2 /rlineto ldf
/st /stroke ldf /gr /grestore ldf /np /newpath ldf
/sv /save ldf /su /statusdict ldf /rs /restore ldf
/sw /setlinewidth ldf /sd /setdash ldf /cp /closepath ldf /ed {exch def } bdf
/cfnt {findfont exch makefont setfont} bdf
/itr {transform round exch round exch itransform} bdf
/fres 72 0 matrix currentmatrix dtransform
exch dup mul exch dup mul add sqrt def
/res fres def /mcm matrix currentmatrix bdf
end

Freelance_Plus begin
save newpath
.1 .1 scale
/ecm matrix currentmatrix bdf
/sem {ecm setmatrix} bdf
-720 -720 translate
0 setlinecap
0 setlinejoin
1.42 setmiterlimit

0.000 sg
6 sw
sv np [] 0 sd
1598 3126 itr mt
5402 3126 itr l2
5402 4869 itr l2
1598 4869 itr l2
1598 3126 itr l2
cp
st rs

/Ich 256 array def StandardEncoding Ich copy pop
/bullet/paragraph/section/dieresis/tilde/ring
/circumflex/grave/acute/quotedblleft/quotesingle
/ellipsis/endash/emdash/guilsinglleft/guilsinglright
/quotedblbase/quotesinglbase/quotedblright/OE/oe
/Ydieresis/fi/fl/dagger/daggerdbl/Ccedilla/udieresis
/eacute/acircumflex/adieresis/agrave/aring/ccedilla
/ecircumflex/edieresis/egrave/idieresis/icircumflex
/igrave/Adieresis/Aring/Eacute/ae/AE/ocircumflex
/odieresis/ograve/ucircumflex/ugrave/ydieresis
/Odieresis/Udieresis/oslash/sterling/Oslash/florin
/aacute/iacute/oacute/uacute/ntilde/Ntilde/ordfeminine
/ordmasculine/questiondown/exclamdown/guillemotleft
/guillemotright/Aacute/Acircumflex/Agrave/cent/yen
/atilde/Atilde/currency/Ecircumflex/Edieresis/Egrave
/dotlessi/Iacute/Icircumflex/Idieresis/Igrave/Oacute
/germandbls/Ocircumflex/Ograve/otilde/Otilde/Uacute
/Ucircumflex/Ugrave/macron/cedilla/periodcentered
Ich 127 97 getinterval astore pop
/Ienc { /ncs Ich def /nfn ed /bfn ed /bfd bfn findfont def
/nf bfd maxlength dict def bfd{exch dup dup /FID ne exch /Encoding ne and
{exch nf 3 1 roll put}{pop pop} ifelse }forall nf/FontName nfn put
nf/Encoding ncs put nfn nf definefont pop}bdf

/IencO { /ncs Ich def /nfn ed /bfn ed /lnw ed /bfd bfn findfont def
/nf bfd maxlength 4 add dict def bfd{exch dup dup /FID ne exch /Encoding ne and
{exch nf 3 1 roll put}{pop pop} ifelse }forall nf/FontName nfn put
nf/Encoding ncs put
nf/PaintType 2 put nf/StrokeWidth lnw put
nfn nf definefont pop}bdf

/IencSO { /nfn ed /bfn ed /lnw ed /bfd bfn findfont def
/nf bfd maxlength 4 add dict def bfd{exch dup /FID ne { exch nf 3 1
roll put}{pop pop} ifelse }forall
nf/FontName nfn put nf/PaintType 2 put
nf/StrokeWidth lnw put nfn nf definefont pop}bdf

/Helvetica /Flfon1 Ienc
[191 0 0.00 191 -18 -142]  /Flfon1 cfnt

1843 5009 itr mt
-53 0 itr rt
0 71 itr rt
(0)
show


2311 5014 itr mt
-53 0 itr rt
0 71 itr rt
(1)
show


2787 5014 itr mt
-53 0 itr rt
0 71 itr rt
(2)
show


3262 5014 itr mt
-53 0 itr rt
0 71 itr rt
(3)
show


3738 5014 itr mt
-53 0 itr rt
0 71 itr rt
(4)
show


4213 5014 itr mt
-53 0 itr rt
0 71 itr rt
(5)
show


4689 5014 itr mt
-53 0 itr rt
0 71 itr rt
(6)
show


5164 5014 itr mt
-53 0 itr rt
0 71 itr rt
(7)
show


1360 4724 itr mt
-53 0 itr rt
0 71 itr rt
(0)
show


1360 4433 itr mt
-53 0 itr rt
0 71 itr rt
(1)
show


1360 4143 itr mt
-53 0 itr rt
0 71 itr rt
(2)
show


1360 3852 itr mt
-53 0 itr rt
0 71 itr rt
(3)
show


1360 3562 itr mt
-53 0 itr rt
0 71 itr rt
(4)
show


1360 3271 itr mt
-53 0 itr rt
0 71 itr rt
(5)
show

12 sw
sv np
2549 4869 itr mt
2549 3126 itr l2
st rs

sv np
3500 4869 itr mt
3500 3126 itr l2
st rs

sv np
4451 4869 itr mt
4451 3126 itr l2
st rs

sv np [] 0 sd
1598 3998 itr mt
2549 3998 itr l2
2549 4869 itr l2
1598 4869 itr l2
1598 3998 itr l2
gs 0.920 sg
ef gr
rs

sv np [] 0 sd
4451 3998 itr mt
5402 3998 itr l2
5402 4869 itr l2
4451 4869 itr l2
4451 3998 itr l2
gs 0.920 sg
ef gr
rs

/fi16 {0 16 2} def
/bitval {/yb ed /xb ed bs yb bw mul xb 8 idiv add
get 1 7 xb 8 mod sub bitshift and 0 ne} bdf
/spotf {/y ed /x ed x 1 add 2 div bps mul cvi
y 1 add 2 div bps mul cvi
bitval {/onb onb 1 add def 1} {/ofb ofb 1 add def 0}
ifelse} def
/uset {/uf ed /ua ed /uc ed uc dup matrix scale
ua matrix rotate mcm mcm concatmatrix mcm concatmatrix
pop 1 0 mcm dtransform
/y1 ed /x1 ed /nsc y1 x1 atan def res x1 dup mul
y1 dup mul add sqrt div nsc /uf load setscreen} bdf
/mkfill {/cz ed /bs ed /bw ed /bps ed /an ed
/onb 0 def /ofb 0 def cz an /spotf load uset
{} settransfer ofb ofb onb add div sg} bdf

sv np [] 0 sd
2549 3998 itr mt
3500 3998 itr l2
3500 4869 itr l2
2549 4869 itr l2
2549 3998 itr l2
gs fi16 <
0001800240042008101008200440028001000280044008201010200840048002
> 03.84 mkfill
ef gr
rs

sv np [] 0 sd
3500 3998 itr mt
4451 3998 itr l2
4451 4869 itr l2
3500 4869 itr l2
3500 3998 itr l2
gs 0.850 sg
ef gr
rs

sv np [] 0 sd
2549 3126 itr mt
3500 3126 itr l2
3500 3998 itr l2
2549 3998 itr l2
2549 3126 itr l2
gs fi16 <
8000400020001000080004000200010000800040002000100008000400020001
> 03.84 mkfill
ef gr
rs

sv np [] 0 sd
1598 3126 itr mt
2549 3126 itr l2
2549 3998 itr l2
1598 3998 itr l2
1598 3126 itr l2
gs fi16 <
0001000200040008001000200040008001000200040008001000200040008000
> 03.84 mkfill
ef gr
rs

6 sw
sv np [] 0 sd
4451 3126 itr mt
5402 3126 itr l2
5402 3998 itr l2
4451 3998 itr l2
4451 3126 itr l2
gs fi16 <
0001000200040008001000200040008001000200040008001000200040008000
> 03.84 mkfill
ef gr
rs

12 sw
sv np [] 0 sd
3500 3126 itr mt
4451 3126 itr l2
4451 3998 itr l2
3500 3998 itr l2
3500 3126 itr l2
rs

6 sw
sv np [] 0 sd
1598 1383 itr mt
5402 1383 itr l2
5402 3126 itr l2
1598 3126 itr l2
1598 1383 itr l2
rs

12 sw
sv np [] 0 sd
2549 3127 itr mt
2549 1383 itr l2
st rs

sv np
3500 3127 itr mt
3500 1383 itr l2
st rs

sv np
4451 3127 itr mt
4451 1383 itr l2
st rs

sv np [] 0 sd
1598 2255 itr mt
2549 2255 itr l2
2549 3126 itr l2
1598 3126 itr l2
1598 2255 itr l2
gs 0.920 sg
ef gr
rs

6 sw
sv np [] 0 sd
4451 2255 itr mt
5402 2255 itr l2
5402 3126 itr l2
4451 3126 itr l2
4451 2255 itr l2
gs 0.920 sg
ef gr
rs

12 sw
sv np [] 0 sd
2549 2255 itr mt
3500 2255 itr l2
3500 3126 itr l2
2549 3126 itr l2
2549 2255 itr l2
gs fi16 <
0001800240042008101008200440028001000280044008201010200840048002
> 03.84 mkfill
ef gr
rs

sv np [] 0 sd
3500 2255 itr mt
4451 2255 itr l2
4451 3126 itr l2
3500 3126 itr l2
3500 2255 itr l2
gs 0.850 sg
ef gr
rs

sv np [] 0 sd
2549 1383 itr mt
3500 1383 itr l2
3500 2255 itr l2
2549 2255 itr l2
2549 1383 itr l2
gs fi16 <
8000400020001000080004000200010000800040002000100008000400020001
> 03.84 mkfill
ef gr
rs

sv np [] 0 sd
1598 1383 itr mt
2549 1383 itr l2
2549 2255 itr l2
1598 2255 itr l2
1598 1383 itr l2
gs fi16 <
0001000200040008001000200040008001000200040008001000200040008000
> 03.84 mkfill
ef gr
rs

sv np [] 0 sd
4451 1383 itr mt
5402 1383 itr l2
5402 2255 itr l2
4451 2255 itr l2
4451 1383 itr l2
gs fi16 <
0001000200040008001000200040008001000200040008001000200040008000
> 03.84 mkfill
ef gr
rs

sv np [] 0 sd
3500 1383 itr mt
4451 1383 itr l2
4451 2255 itr l2
3500 2255 itr l2
3500 1383 itr l2
rs


1360 2981 itr mt
-53 0 itr rt
0 71 itr rt
(6)
show


1360 2690 itr mt
-53 0 itr rt
0 71 itr rt
(7)
show


1360 2400 itr mt
-53 0 itr rt
0 71 itr rt
(8)
show


1360 2109 itr mt
-53 0 itr rt
0 71 itr rt
(9)
show


1360 1819 itr mt
-106 0 itr rt
0 71 itr rt
(10)
show


1360 1528 itr mt
-106 0 itr rt
0 71 itr rt
(11)
show


1360 1238 itr mt
-27 0 itr rt
0 71 itr rt
(.)
show


1360 947 itr mt
-27 0 itr rt
0 71 itr rt
(.)
show


1360 1093 itr mt
-27 0 itr rt
0 71 itr rt
(.)
show

sv np [] 0 sd
2549 4869 itr mt
2549 1383 itr l2
st rs

sv np
3500 4869 itr mt
3500 1383 itr l2
st rs

sv np
4451 4869 itr mt
4451 1383 itr l2
st rs

[153 0 0.00 153 -15 -113]  /Flfon1 cfnt

1836 4724 itr mt
-43 0 itr rt
0 57 itr rt
(0)
show


1825 4460 itr mt
-43 0 itr rt
0 57 itr rt
(1)
show


1836 4143 itr mt
-43 0 itr rt
0 57 itr rt
(2)
show


2311 4724 itr mt
-43 0 itr rt
0 57 itr rt
(3)
show


2311 4433 itr mt
-43 0 itr rt
0 57 itr rt
(4)
show


2311 4143 itr mt
-43 0 itr rt
0 57 itr rt
(5)
show


4689 4724 itr mt
-43 0 itr rt
0 57 itr rt
(6)
show


4689 4433 itr mt
-43 0 itr rt
0 57 itr rt
(7)
show


4689 4143 itr mt
-43 0 itr rt
0 57 itr rt
(8)
show


5164 4724 itr mt
-43 0 itr rt
0 57 itr rt
(9)
show


5164 4433 itr mt
-85 0 itr rt
0 57 itr rt
(10)
show


5164 4143 itr mt
-85 0 itr rt
0 57 itr rt
(11)
show


1836 2981 itr mt
-85 0 itr rt
0 57 itr rt
(12)
show


1836 2690 itr mt
-85 0 itr rt
0 57 itr rt
(13)
show


1836 2400 itr mt
-85 0 itr rt
0 57 itr rt
(14)
show


2311 2981 itr mt
-85 0 itr rt
0 57 itr rt
(15)
show


2311 2690 itr mt
-85 0 itr rt
0 57 itr rt
(16)
show


2311 2400 itr mt
-85 0 itr rt
0 57 itr rt
(17)
show


4689 2981 itr mt
-85 0 itr rt
0 57 itr rt
(18)
show


4689 2690 itr mt
-85 0 itr rt
0 57 itr rt
(19)
show


4689 2400 itr mt
-85 0 itr rt
0 57 itr rt
(20)
show


5164 2981 itr mt
-85 0 itr rt
0 57 itr rt
(21)
show


5164 2690 itr mt
-85 0 itr rt
0 57 itr rt
(22)
show


5164 2400 itr mt
-85 0 itr rt
0 57 itr rt
(23)
show


2787 4724 itr mt
-43 0 itr rt
0 57 itr rt
(0)
show


2787 4433 itr mt
-43 0 itr rt
0 57 itr rt
(1)
show


2787 4143 itr mt
-43 0 itr rt
0 57 itr rt
(2)
show


3262 4724 itr mt
-43 0 itr rt
0 57 itr rt
(3)
show


3262 4433 itr mt
-43 0 itr rt
0 57 itr rt
(4)
show


3262 4143 itr mt
-43 0 itr rt
0 57 itr rt
(5)
show


2787 2981 itr mt
-85 0 itr rt
0 57 itr rt
(12)
show


2787 2690 itr mt
-85 0 itr rt
0 57 itr rt
(13)
show


2787 2400 itr mt
-85 0 itr rt
0 57 itr rt
(14)
show


3262 2981 itr mt
-85 0 itr rt
0 57 itr rt
(15)
show


3262 2690 itr mt
-85 0 itr rt
0 57 itr rt
(16)
show


3262 2400 itr mt
-85 0 itr rt
0 57 itr rt
(17)
show


3738 4724 itr mt
-43 0 itr rt
0 57 itr rt
(0)
show


3738 4433 itr mt
-43 0 itr rt
0 57 itr rt
(1)
show


3738 4143 itr mt
-43 0 itr rt
0 57 itr rt
(2)
show


4213 4724 itr mt
-43 0 itr rt
0 57 itr rt
(3)
show


4213 4433 itr mt
-43 0 itr rt
0 57 itr rt
(4)
show


4213 4143 itr mt
-43 0 itr rt
0 57 itr rt
(5)
show


3738 2981 itr mt
-85 0 itr rt
0 57 itr rt
(12)
show


3738 2690 itr mt
-85 0 itr rt
0 57 itr rt
(13)
show


3738 2400 itr mt
-85 0 itr rt
0 57 itr rt
(14)
show


4213 2981 itr mt
-85 0 itr rt
0 57 itr rt
(15)
show


4213 2690 itr mt
-85 0 itr rt
0 57 itr rt
(16)
show


4213 2400 itr mt
-85 0 itr rt
0 57 itr rt
(17)
show


1836 3852 itr mt
-43 0 itr rt
0 57 itr rt
(0)
show


1836 3562 itr mt
-43 0 itr rt
0 57 itr rt
(1)
show


1836 3271 itr mt
-43 0 itr rt
0 57 itr rt
(2)
show


2311 3852 itr mt
-43 0 itr rt
0 57 itr rt
(3)
show


2311 3562 itr mt
-43 0 itr rt
0 57 itr rt
(4)
show


2311 3271 itr mt
-43 0 itr rt
0 57 itr rt
(5)
show


4689 3852 itr mt
-43 0 itr rt
0 57 itr rt
(6)
show


4689 3562 itr mt
-43 0 itr rt
0 57 itr rt
(7)
show


4689 3271 itr mt
-43 0 itr rt
0 57 itr rt
(8)
show


5164 3852 itr mt
-43 0 itr rt
0 57 itr rt
(9)
show


5164 3562 itr mt
-85 0 itr rt
0 57 itr rt
(10)
show


5164 3271 itr mt
-85 0 itr rt
0 57 itr rt
(11)
show


1836 2109 itr mt
-85 0 itr rt
0 57 itr rt
(12)
show


1836 1819 itr mt
-85 0 itr rt
0 57 itr rt
(13)
show


1836 1528 itr mt
-85 0 itr rt
0 57 itr rt
(14)
show


2311 2109 itr mt
-85 0 itr rt
0 57 itr rt
(15)
show


2311 1819 itr mt
-85 0 itr rt
0 57 itr rt
(16)
show


2311 1528 itr mt
-85 0 itr rt
0 57 itr rt
(17)
show


4689 2109 itr mt
-85 0 itr rt
0 57 itr rt
(18)
show


4689 1819 itr mt
-85 0 itr rt
0 57 itr rt
(19)
show


4689 1528 itr mt
-85 0 itr rt
0 57 itr rt
(20)
show


5164 2109 itr mt
-85 0 itr rt
0 57 itr rt
(21)
show


5164 1819 itr mt
-85 0 itr rt
0 57 itr rt
(22)
show


5164 1528 itr mt
-85 0 itr rt
0 57 itr rt
(23)
show


2787 3852 itr mt
-43 0 itr rt
0 57 itr rt
(0)
show


2787 3562 itr mt
-43 0 itr rt
0 57 itr rt
(1)
show


2787 3271 itr mt
-43 0 itr rt
0 57 itr rt
(2)
show


3262 3852 itr mt
-43 0 itr rt
0 57 itr rt
(3)
show


3262 3562 itr mt
-43 0 itr rt
0 57 itr rt
(4)
show


3262 3271 itr mt
-43 0 itr rt
0 57 itr rt
(5)
show


2787 2109 itr mt
-85 0 itr rt
0 57 itr rt
(12)
show


2787 1819 itr mt
-85 0 itr rt
0 57 itr rt
(13)
show


2787 1528 itr mt
-85 0 itr rt
0 57 itr rt
(14)
show


3262 2109 itr mt
-85 0 itr rt
0 57 itr rt
(15)
show


3262 1819 itr mt
-85 0 itr rt
0 57 itr rt
(16)
show


3262 1528 itr mt
-85 0 itr rt
0 57 itr rt
(17)
show


3738 3852 itr mt
-43 0 itr rt
0 57 itr rt
(0)
show


3738 3562 itr mt
-43 0 itr rt
0 57 itr rt
(1)
show


3738 3271 itr mt
-43 0 itr rt
0 57 itr rt
(2)
show


4213 3852 itr mt
-43 0 itr rt
0 57 itr rt
(3)
show


4213 3562 itr mt
-43 0 itr rt
0 57 itr rt
(4)
show


4213 3271 itr mt
-43 0 itr rt
0 57 itr rt
(5)
show


3738 2109 itr mt
-85 0 itr rt
0 57 itr rt
(12)
show


3738 1819 itr mt
-85 0 itr rt
0 57 itr rt
(13)
show


3738 1528 itr mt
-85 0 itr rt
0 57 itr rt
(14)
show


4213 2109 itr mt
-85 0 itr rt
0 57 itr rt
(15)
show


4213 1819 itr mt
-85 0 itr rt
0 57 itr rt
(16)
show


4213 1528 itr mt
-85 0 itr rt
0 57 itr rt
(17)
show

sv np
4927 4869 itr mt
4927 3126 itr l2
st rs

sv np
4927 3127 itr mt
4927 1383 itr l2
st rs

sv np
4927 4869 itr mt
4927 1383 itr l2
st rs

sv np
5402 4869 itr mt
5402 3126 itr l2
st rs

sv np
5402 3127 itr mt
5402 1383 itr l2
st rs

sv np
5402 4869 itr mt
5402 1383 itr l2
st rs

sv np
3977 4869 itr mt
3977 3126 itr l2
st rs

sv np
3977 3127 itr mt
3977 1383 itr l2
st rs

sv np
3977 4869 itr mt
3977 1383 itr l2
st rs

sv np
3026 4869 itr mt
3026 3126 itr l2
st rs

sv np
3026 3127 itr mt
3026 1383 itr l2
st rs

sv np
3026 4869 itr mt
3026 1383 itr l2
st rs

sv np
2075 4869 itr mt
2075 3126 itr l2
st rs

sv np
2075 3127 itr mt
2075 1383 itr l2
st rs

sv np
2075 4869 itr mt
2075 1383 itr l2
st rs

sv np
1599 4869 itr mt
1599 3126 itr l2
st rs

sv np
1599 3127 itr mt
1599 1383 itr l2
st rs

sv np
1599 4869 itr mt
1599 1383 itr l2
st rs

[191 0 0.00 191 -18 -142]  /Flfon1 cfnt

5857 3730 itr mt
0 71 itr rt
(ncells = 8)
show

5857 3469 itr mt
0 71 itr rt
(Hn = 3)
show


5857 3209 itr mt
0 71 itr rt
(Vn = 2)
show


5857 2948 itr mt
0 71 itr rt
(Hbs = 2)
show


5857 2687 itr mt
0 71 itr rt
(Vbs = 3)
show

sv np
1607 4870 itr mt
5415 4870 itr l2
st rs

rs end

%%EndDocument
 75 4 a
 endTexFig
467 1002 a Ft(Figure)15 b(1.2:)k(Alternativ)o(e)d(P)o(artitioning)f(of)g(a)g
(V)l(esta)g(File)75 1140 y(in)h(the)f(sub\014le.)166 1196 y(This)h(n)o(um)o
(b)q(ering)g(sc)o(heme)f(is)h(illustrated)h(in)f(Figure)f(1.1.)166
1253 y(Example)h(1:)j Fd(H)t(bs)12 b Ft(=)h(1,)i Fd(H)t(n)d
Ft(=)h Fd(ncel)q(l)q(s)p Ft(,)h Fd(V)c(n)j Ft(=)g(1.)75 1309
y(Then)k(eac)o(h)g(sub\014le)h(spans)f(one)f(cell.)26 b(The)17
b(records)f(in)i(eac)o(h)f(sub\014le)h(are)e(ordered)h(in)g(column)h(index)75
1366 y(order.)166 1422 y(Example)e(2:)j Fd(H)t(bs)12 b Ft(=)h
Fd(ncel)q(l)q(s)p Ft(,)h Fd(H)t(n)f Ft(=)g Fd(V)c(n)k Ft(=)g(1.)75
1479 y(Then)18 b(the)h(unique)g(sub\014le)g(spans)f(the)h(en)o(tire)f(V)l
(esta)g(\014le;)i(the)e(records)g(are)f(ordered)h(in)h(ro)o(w-ma)s(jor)75
1535 y(order,)d(if)h Fd(V)9 b(bs)15 b Ft(=)g(1;)h(di\013eren)o(t)g(\\snak)o
(e-lik)o(e")h(orderings)g(can)f(b)q(e)h(obtained)g(b)o(y)g(v)m(arying)f(the)h
(v)m(alue)g(of)75 1592 y Fd(V)10 b(bs)p Ft(.)75 1713 y Fm(Alternative)16
b(De\014nition)75 1799 y Ft(The)d(curren)o(t)g(V)l(esta)g(do)q(cumen)o(t)g
(sp)q(eci\014es)i(another)d(partitioning)i(sc)o(heme:)19 b(The)13
b(n)o(um)o(b)q(er)h(of)e(columns)75 1856 y(in)18 b(the)f(V)l(esta)g(\014le)h
(is)f(extended)h(to)f(b)q(e)g(an)g(ev)o(en)g(m)o(ultiple)i(of)e
Fd(H)t(n)11 b Fg(\001)g Fd(H)t(bs)p Ft(,)16 b(and)h(the)g(expanded)h(\014le)g
(is)75 1912 y(then)g(distributed,)h(and)f(the)f(records)g(n)o(um)o(b)q(ered,)
i(as)e(describ)q(ed)i(ab)q(o)o(v)o(e.)27 b(The)17 b(additional)i(columns)75
1969 y(are)d(actually)h(empt)o(y:)22 b(all)17 b(the)g(records)f(that)f(b)q
(elong)j(to)d(these)i(columns)g(are)f(empt)o(y)g(records.)23
b(Suc)o(h)75 2025 y(record)15 b(cannot)g(b)q(e)h(written;)f(a)g(read)g(of)g
(suc)o(h)g(record)g(returns)g(zero)g(b)o(ytes.)166 2082 y(This)20
b(de\014nition)i(is)e(illustrated)h(in)g(Figure)f(1.2.)32 b(The)20
b(sub\014les)h Fd(par)q(t)1410 2089 y Fa(0)p Fc(;)p Fa(0)1475
2082 y Ft(and)f Fd(par)q(t)1653 2089 y Fa(1)p Fc(;)p Fa(0)1718
2082 y Ft(ha)o(v)o(e)f(no)75 2138 y(\\holes")e(in)g(them.)25
b(The)17 b(sub\014les)h Fd(par)q(t)770 2145 y Fc(i;j)809 2138
y Ft(,)f(for)f Fd(i)e Ft(=)i(0)p Fd(;)8 b Ft(1)15 b(and)i Fd(j)g
Ft(=)f(1)p Fd(;)8 b Ft(2)15 b(all)j(miss)f(the)g(records)f(6)h({)f(11,)75
2195 y(18)f({)f(23,)h(etc.)166 2252 y(Note)e(that,)f(with)h(this)h
(de\014nition,)h(it)e(is)g(not)g(required)h(an)o(ymore)e(that)h(\()p
Fd(H)t(n)6 b Fg(\000)g Ft(1\))g Fg(\001)g Fd(H)t(b)o(s)k(<)j(ncel)q(l)q(s)p
Ft(.)75 2308 y(If)i(\()p Fd(H)t(n)10 b Fg(\000)g Ft(1\))g Fg(\001)g
Fd(H)t(bs)i Fg(\025)h Fd(ncel)q(l)q(s)p Ft(,)h(then)h(the)h(partition)f(ma)o
(y)g(con)o(tain)g(empt)o(y)g(sub\014les.)166 2365 y(Both)j(de\014nitions)j
(asso)q(ciate)d(the)h(same)f(records)h(with)g(the)g(same)f(sub\014les.)32
b(Both)18 b(de\014nitions)75 2421 y(pro)o(vide)g(the)f(same)g(record)g(n)o
(um)o(b)q(ering)h(when)f Fd(H)t(n)12 b Fg(\001)f Fd(H)t(bs)16
b Ft(ev)o(enly)i(divides)h Fd(ncel)q(l)q(s)p Ft(.)25 b(Otherwise,)18
b(the)75 2478 y(second)12 b(de\014nition)i(results)f(in)f(sub\014les)i(with)e
(\\holes")g(in)h(them,)f(non-existing)h(records.)19 b(On)12
b(the)g(other)75 2534 y(hand,)i(the)h(corresp)q(ondence)g(b)q(et)o(w)o(een)g
(the)f(ro)o(w)f(and)i(column)g(indices)h(of)e(a)g(record)g(and)g(its)h
(sequence)75 2590 y(n)o(um)o(b)q(er)h(is)f(the)h(same)e(for)h(eac)o(h)g
(sub\014le)i(when)f(the)f(second)h(de\014nition)h(is)e(used.)166
2647 y(W)l(e)f(assume)f(in)h(the)g(sequel)h(the)e(\014rst)g(de\014nition)j
(of)d(a)g(V)l(esta)g(partition,)h(to)f(a)o(v)o(oid)g(the)h(messiness)75
2704 y(of)e(sequen)o(tial)i(accesses)f(to)f(\014les)i(with)f(\\holes".)19
b(But)12 b(use)h(of)g(suc)o(h)g(de\014nition)h(somewhat)e(complicates)-32
46 y Fr(1)-32 103 y(2)-32 159 y(3)-32 215 y(4)-32 272 y(5)-32
328 y(6)-32 385 y(7)-32 441 y(8)-32 498 y(9)-40 554 y(10)-40
611 y(11)-40 667 y(12)-40 724 y(13)-40 780 y(14)-40 836 y(15)-40
893 y(16)-40 949 y(17)-40 1006 y(18)-40 1062 y(19)-40 1119
y(20)-40 1175 y(21)-40 1232 y(22)-40 1288 y(23)-40 1345 y(24)-40
1401 y(25)-40 1457 y(26)-40 1514 y(27)-40 1570 y(28)-40 1627
y(29)-40 1683 y(30)-40 1740 y(31)-40 1796 y(32)-40 1853 y(33)-40
1909 y(34)-40 1966 y(35)-40 2022 y(36)-40 2078 y(37)-40 2135
y(38)-40 2191 y(39)-40 2248 y(40)-40 2304 y(41)-40 2361 y(42)-40
2417 y(43)-40 2474 y(44)-40 2530 y(45)-40 2587 y(46)-40 2643
y(47)-40 2699 y(48)p eop
%%Page: 22 23
bop 75 -100 a Ft(22)1387 b Fp(CHAPTER)16 b(1.)34 b(IO)75 49
y Ft(V)l(esta)15 b(implemen)o(tation.)166 232 y Fl(Discussion:)34
b(Cho)q(ose)15 b(an)h(alternativ)o(e.)75 687 y Fo(1.8.2)49
b(V)o(esta)16 b(\014le)g(op)q(erations)75 905 y Fm(MPI)p 160
905 14 2 v 16 w(GET)p 264 905 V 17 w(PFS)p 361 905 V 16 w(STORA)o(GE\(numb)q
(er\))117 1026 y Fk(OUT)108 b Fm(numb)q(er)442 b Fk(n)o(um)o(b)q(er)13
b(of)h(storage)g(no)q(des)h(\(in)o(teger\))75 1194 y Fh(int)47
b(MPI)p 269 1194 15 2 v 17 w(Get)p 358 1194 V 17 w(pfs)p 447
1194 V 17 w(storage\()22 b(int)i(*number\))75 1325 y(MPI)p
150 1325 V 17 w(GET)p 239 1325 V 17 w(PFS)p 328 1325 V 16 w(STORAGE\()f
(NUMBER,)g(IERROR\))170 1381 y(INTEGER)g(NUMBER,)g(IERROR)166
1511 y Ft(Returns)16 b(the)f(n)o(um)o(b)q(er)g(of)g(storage)f(no)q(des.)75
1659 y Fm(MPI)p 160 1659 14 2 v 16 w(GET)p 264 1659 V 17 w(PFS)p
361 1659 V 16 w(STRUCTURE\(\014lename,)g(ncells,)i(rec)p 1031
1659 V 16 w(size\))117 1780 y Fk(IN)155 b Fm(\014lename)428
b Fk(name)13 b(of)g(queried)i(\014le)f(\(string\))117 1943
y(OUT)108 b Fm(ncells)485 b Fk(n)o(um)o(b)q(er)13 b(of)h(cells)g(\(in)o
(teger\))117 2105 y(OUT)108 b Fm(rec)p 377 2105 V 17 w(size)446
b Fk(record)15 b(size)g(\(in)o(teger\))75 2274 y Fh(int)47
b(MPI)p 269 2274 15 2 v 17 w(Get)p 358 2274 V 17 w(pfs)p 447
2274 V 17 w(structure\(const)21 b(char)j(*filename,)e(int)i(*ncells,)e(int)i
(*rec)p 1729 2274 V 17 w(size\))75 2404 y(MPI)p 150 2404 V
17 w(GET)p 239 2404 V 17 w(PFS)p 328 2404 V 16 w(STRUCTURE\()f(FILENAME,)f
(NCELLS,)h(REC)p 1108 2404 V 17 w(SIZE,)g(IERROR\))170 2460
y(CHARACTER\(*\))g(FILENAME)170 2517 y(INTEGER)g(NCELLS,)g(REC)p
627 2517 V 17 w(SIZE,)g(IERROR)166 2647 y Ft(Returns)11 b(the)g(\014le)h
(structure)f(parameters)f(\(n)o(um)o(b)q(er)g(of)h(columns)h(and)f(record)f
(size\))i(of)e(an)h(existing)75 2704 y(V)l(esta)k(\014le.)1967
46 y Fr(1)1967 103 y(2)1967 159 y(3)1967 215 y(4)1967 272 y(5)1967
328 y(6)1967 385 y(7)1967 441 y(8)1967 498 y(9)1959 554 y(10)1959
611 y(11)1959 667 y(12)1959 724 y(13)1959 780 y(14)1959 836
y(15)1959 893 y(16)1959 949 y(17)1959 1006 y(18)1959 1062 y(19)1959
1119 y(20)1959 1175 y(21)1959 1232 y(22)1959 1288 y(23)1959
1345 y(24)1959 1401 y(25)1959 1457 y(26)1959 1514 y(27)1959
1570 y(28)1959 1627 y(29)1959 1683 y(30)1959 1740 y(31)1959
1796 y(32)1959 1853 y(33)1959 1909 y(34)1959 1966 y(35)1959
2022 y(36)1959 2078 y(37)1959 2135 y(38)1959 2191 y(39)1959
2248 y(40)1959 2304 y(41)1959 2361 y(42)1959 2417 y(43)1959
2474 y(44)1959 2530 y(45)1959 2587 y(46)1959 2643 y(47)1959
2699 y(48)p eop
%%Page: 23 24
bop 75 -100 a Fp(1.8.)34 b(VEST)l(A)16 b(FUNCTIONS)1206 b Ft(23)75
49 y Fm(MPI)p 160 49 14 2 v 16 w(PFS)p 256 49 V 16 w(OPEN\()21
b(\014lename,)e(status,)24 b(action,)d(t)o(yp)q(e,)h(mo)q(de,)d(concurrency)l
(,)k(\014lepa)o(rams,)18 b(pa)o(rtpa)o(rams,)75 106 y(comm)m(,)12
b(new)o(comm)n(\))117 183 y Fk(IN)155 b Fm(\014lename)428 b
Fk(name)13 b(of)g(op)q(ened)i(\014le)f(\(string\))117 259 y(IN)155
b Fm(status)476 b Fk(one)10 b(of)e Fj(MPI)p 1096 259 13 2 v
15 w(OLD,)g(MPI)p 1289 259 V 15 w(NEW,)h(MPI)p 1493 259 V 14
w(REPLA)o(CE,)e(MPI)p 1781 259 V 15 w(SCRA)m(TCH)905 315 y
Fk(or)14 b Fj(MPI)p 1033 315 V 14 w(UNKNO)o(WN)g Fk(\(state\))117
390 y(IN)155 b Fm(action)472 b Fk(one)14 b(of)f Fj(MPI)p 1105
390 V 14 w(READ,)g(MPI)p 1329 390 V 14 w(WRITE)p Fk(,)f(or)i
Fj(MPI)p 1624 390 V 14 w(READ)o(WRITE)905 447 y Fk(\(state\))117
522 y(IN)155 b Fm(t)o(yp)q(e)507 b Fk(one)10 b(of)f Fj(MPI)p
1097 522 V 14 w(STREAM)p Fk(,)g(or)g Fj(MPI)p 1420 522 V 14
w(FIXED)f Fk(\(\014xed)i(size)h(record\))905 579 y(\(state\))117
654 y(IN)155 b Fm(mo)q(de)481 b Fk(one)10 b(of)e Fj(MPI)p 1096
654 V 15 w(PRIV)m(A)m(TE,)e(MPI)p 1373 654 V 14 w(SHARED)j
Fk(or)g Fj(MPI)p 1679 654 V 15 w(COLLECTIVE)905 711 y Fk(\(state\))117
786 y(IN)155 b Fm(metho)q(d)442 b Fk(one)14 b(of)g Fj(MPI)p
1106 786 V 14 w(UNI)f Fk(or)h Fj(MPI)p 1329 786 V 14 w(MUL)m(TI)g
Fk(\(state\))117 862 y(IN)155 b Fm(concurrency)362 b Fk(one)10
b(of)e Fj(MPI)p 1096 862 V 15 w(EX)o(CLUSIVE)f Fk(or)i Fj(MPI)p
1457 862 V 14 w(CONCURRENT)f Fk(\(state\))117 937 y(IN)155
b Fm(\014lepa)o(rams)394 b Fk(arra)o(y)14 b(describing)g(\014le)g(structure)i
(\(arra)o(y)e(of)f(in)o(teger\))117 1013 y(IN)155 b Fm(pa)o(rtpa)o(rams)373
b Fk(arra)o(y)14 b(describing)h(partitioning)d(parameters)i(\(arra)o(y)g(of)g
(in-)905 1069 y(teger\))117 1144 y(IN)155 b Fm(comm)466 b Fk(comm)o(unicator)
11 b(of)j(group)f(that)h(op)q(ens)h(the)f(\014le)g(\(handle\))117
1220 y(OUT)108 b Fm(new)o(comm)393 b Fk(comm)o(unicator)13
b(asso)q(ciated)j(with)f(\014le)h(b)o(y)f(op)q(en)h(op)q(eration)905
1276 y(\(handle\))75 1401 y Fh(int)47 b(MPI)p 269 1401 15 2
v 17 w(Pfs)p 358 1401 V 17 w(open\(const)22 b(char)i(*filename,)e(MPI)p
1091 1401 V 17 w(IO)i(status,)e(MPI)p 1442 1401 V 17 w(IO)i(action,)393
1457 y(MPI)p 468 1457 V 17 w(IO)g(type,)f(MPI)p 772 1457 V
16 w(IO)h(mode,)f(MPI)p 1075 1457 V 17 w(IO)h(method,)f(MPI)p
1427 1457 V 16 w(IO)h(concurrency,)393 1514 y(int)g(*fileparams,)e(int)h
(*partparams,)g(MPI)p 1280 1514 V 16 w(Comm)h(comm,)393 1570
y(MPI)p 468 1570 V 17 w(Comm)f(*newcomm\))75 1657 y(MPI)p 150
1657 V 17 w(PFS)p 239 1657 V 17 w(OPEN\(FILENAME,)e(STATUS,)i(ACTION,)g
(TYPE,)g(MODE,)h(METHOD,)f(CONCURRENCY,)393 1713 y(FILEPARAMS,)g(PARTPARAMS,)
f(COMM,)h(NEWCOMM,)g(IERROR\))170 1770 y(CHAR\(*\))g(FILENAME)170
1826 y(INTEGER)g(STATUS,)g(ACTION,)g(TYPE,)g(MODE,)h(METHOD,)e(CONCURRENCY,)h
(FILEPARAMS\(*\),)170 1883 y(PARTPARAMS\(*\),)f(COMM,)i(NEWCOMM,)e(IERROR)166
1969 y Ft(Op)q(en)h(a)e(V)l(esta)g(sub\014le)i(for)e(I/O.)h(This)g(is)g(a)f
(collectiv)o(e)i(call)g(executed)f(b)o(y)g(all)g(pro)q(cesses)g(in)75
2026 y(the)d(comm)o(unication)g(group.)29 b(It)19 b(returns)f(a)g(comm)o
(unicator)g(that)g(can)h(b)q(e)g(subsequen)o(tly)h(used)f(for)75
2082 y(accessing)d(a)f(sub\014le)h(of)f(the)h(op)q(ened)g(V)l(esta)f(\014le.)
166 2139 y(The)i(parameters)f(are)h(the)g(same)f(as)h(for)f
Fm(MPI)p 985 2139 14 2 v 16 w(OPEN)p Ft(,)h(except)g(that)f(the)h
Fm(p)q(osition)h Ft(argumen)o(t)e(is)75 2195 y(not)g(a)o(v)m(ailable.)26
b(Tw)o(o)16 b(additional)i(argumen)o(ts,)e Fm(\014lepa)o(rams)e
Ft(and)j Fm(pa)o(rtpa)o(ram)o(s)p Ft(,)d(are)j(arra)o(ys)e(describing)75
2252 y(the)g(structure)g(of)g(the)g(V)l(esta)g(\014le)i(and)e(of)g(a)g
(sub\014le)h(within)h(it.)166 2308 y(The)f Fm(\014lepa)o(rams)d
Ft(argumen)o(t)j(is)g(an)g(arra)o(y)f(with)h(t)o(w)o(o)e(en)o(tries,)j
Fm(ncells)f Ft(and)h Fm(rec)p 1518 2308 V 16 w(size)f Ft(that)f(describ)q(e)
75 2365 y(the)j(n)o(um)o(b)q(er)f(of)g(columns)i(\(cells\))f(and)g(the)f
(record)h(size)g(of)f(the)h(V)l(esta)f(\014le.)28 b(All)19
b(pro)q(cesses)e(pro)o(vide)75 2421 y(the)d(same)f(v)m(alues)i(for)f(this)g
(argumen)o(t.)19 b(A)14 b(v)m(alue)h(of)e Fj(MPI)p 1066 2421
13 2 v 14 w(UNKNO)o(WN)h Ft(can)g(b)q(e)h(used,)f(in)h(whic)o(h)g(case,)e(a)
75 2478 y(system)h(pro)o(vided)g(default)h(is)g(used.)20 b(F)l(or)13
b(a)h(new)g(\014le,)h(the)f(default)h(v)m(alue)g(for)e Fm(ncells)i
Ft(is)g(the)f(n)o(um)o(b)q(er)g(of)75 2534 y(storage)i(no)q(des;)h(the)g
(default)h(v)m(alue)g(for)e Fm(rec)p 860 2534 14 2 v 16 w(size)h
Ft(is)h(implemen)o(tation)g(dep)q(enden)o(t.)26 b(F)l(or)16
b(an)h(existing)75 2591 y(\014le,)g(the)g(default)g(v)m(alues)g(are)f(the)h
(curren)o(t)f(\014le)h(structure)g(parameters.)22 b(One)17
b(cannot)f(c)o(hange)h(these)75 2647 y(t)o(w)o(o)12 b(v)m(alues)j(for)e(an)h
(existing)g(\014le;)h(the)f(\014le)g(structure)g(parameters)e(should)j
(either)f(matc)o(h)f(the)h(curren)o(t)75 2704 y(\014le)i(setting,)f(or)g(b)q
(e)h(equal)g(to)e Fj(MPI)p 680 2704 13 2 v 14 w(UNKNO)o(WN)p
Ft(.)-32 46 y Fr(1)-32 103 y(2)-32 159 y(3)-32 215 y(4)-32
272 y(5)-32 328 y(6)-32 385 y(7)-32 441 y(8)-32 498 y(9)-40
554 y(10)-40 611 y(11)-40 667 y(12)-40 724 y(13)-40 780 y(14)-40
836 y(15)-40 893 y(16)-40 949 y(17)-40 1006 y(18)-40 1062 y(19)-40
1119 y(20)-40 1175 y(21)-40 1232 y(22)-40 1288 y(23)-40 1345
y(24)-40 1401 y(25)-40 1457 y(26)-40 1514 y(27)-40 1570 y(28)-40
1627 y(29)-40 1683 y(30)-40 1740 y(31)-40 1796 y(32)-40 1853
y(33)-40 1909 y(34)-40 1966 y(35)-40 2022 y(36)-40 2078 y(37)-40
2135 y(38)-40 2191 y(39)-40 2248 y(40)-40 2304 y(41)-40 2361
y(42)-40 2417 y(43)-40 2474 y(44)-40 2530 y(45)-40 2587 y(46)-40
2643 y(47)-40 2699 y(48)p eop
%%Page: 24 25
bop 75 -100 a Ft(24)1387 b Fp(CHAPTER)16 b(1.)34 b(IO)166 49
y Ft(The)15 b Fm(pa)o(rtpa)o(rams)d Ft(argumen)o(t)i(is)h(an)g(arra)o(y)f
(with)h(\014v)o(e)g(en)o(tries:)20 b Fm(Hn,)15 b(Vn,)h(Hbs,)f(Vbs)h
Ft(and)f Fm(numpa)o(rt)p Ft(.)75 106 y(The)d(\014rst)f(four)h(de\014ne)h(a)e
(partitioning)i(sc)o(heme;)g(the)e(\014fth)h(de\014nes)h(a)f(sub\014le)h(n)o
(um)o(b)q(er;)g Fm(0)f Fg(\024)h Fm(numpa)o(rt)e Fd(<)75 162
y Fm(Hn)g Fg(\001)f Fm(Vn)15 b Ft(should)i(hold.)166 466 y(If)d(the)h(\014le)
g(is)f(op)q(ened)i(in)f(mo)q(de)f Fj(MPI)p 809 466 13 2 v 14
w(PRIV)m(A)m(TE)e Ft(then)i(the)g(\014fth)h(en)o(try)e(of)h
Fm(pa)o(rtpa)o(rams)d Ft(is)k(ignored:)75 523 y(eac)o(h)g(pro)q(cess)g(gets)f
(to)g(access)h(a)g(disjoin)o(t)g(sub\014le,)h(where)f(the)g(pro)q(cess)g
(with)g(rank)g Fm(i)g Ft(attac)o(hes)e(sub\014le)75 579 y Fm(i)p
Ft(.)20 b(In)15 b(particular,)g(if)h(the)f(n)o(um)o(b)q(er)g(of)g(cells)h
(equals)g(the)f(n)o(um)o(b)q(er)g(of)g(pro)q(cesses,)g(and)g(the)g
(partitioning)75 636 y(parameters)d(sp)q(ecify)i(a)f(sub\014le)h(for)e(eac)o
(h)h(cell)h(\()p Fm(Hn)f(=)g(ncells,)h(Vn)g(=)f(1)p Ft(\),)f(then)h(eac)o(h)g
(pro)q(cess)g(has)g(access)75 692 y(to)j(a)g(priv)m(ate)h(\014le,)h(stored)e
(on)g(a)g(distinct)i(cell.)25 b(In)17 b(general,)g(eac)o(h)g(pro)q(cess)f
(has)h(access)f(to)g(a)g(disjoin)o(t)75 749 y(priv)m(ate)21
b(\014le,)i(carv)o(ed)d(out)g(of)g(the)h(shared)g(V)l(esta)f(\014le.)37
b(The)21 b(call)g(is)g(erroneous)g(if)g(the)g(n)o(um)o(b)q(er)f(of)75
805 y(sub\014les)d(is)e(less)h(than)f(the)g(group)g(size.)166
1109 y(If)i(the)g(\014le)h(is)f(op)q(ened)h(in)g(an)o(y)f(other)f(mo)q(de)h
(then)h(all)f(pro)q(cesses)h(pro)o(vide)f(the)g(same)g(argumen)o(t)75
1166 y(v)m(alues,)f(and)g(all)g(pro)q(cesses)g(access)f(the)h(same)f
(sub\014le.)22 b(The)15 b(\014le)h(p)q(oin)o(ter)g(is)g(p)q(ositioned)h(at)e
(the)g(start)75 1222 y(of)g(the)g(sub\014le.)166 1526 y(A)k(V)l(esta)g
(\014le)h(ma)o(y)f(b)q(e)g(op)q(ened)i(at)d(the)h(same)g(time)h(with)f(sev)o
(eral)g(di\013eren)o(t)h(comm)o(unicators;)75 1583 y(sub\014les)k(accessed)f
(with)g(di\013eren)o(t)g(comm)o(unicators)f(ma)o(y)f(o)o(v)o(erlap.)42
b(If)23 b(the)f(\014le)i(is)f(op)q(ened)h(with)75 1639 y Fm(concurrency)16
b Ft(=)g Fj(MPI)p 444 1639 V 14 w(CONCURRENT)e Ft(then)i(the)g(V)l(esta)f
(\014le)h(system)f(will)i(use)f(a)f(concurrency)h(con)o(trol)75
1696 y(proto)q(col)d(that)e(ensures)j(that)d(concurren)o(t)i(accesses)g(to)f
(the)h(\014le)g(are)f(atomic,)h(serializable)i(and)e(causal:)75
1752 y(the)22 b(outcome)f(is)h(as)g(if)g(MPI-IO)h(calls)f(w)o(ere)g(executed)
g(in)h(some)e(serial)i(order,)g(compatible)g(with)75 1809 y(the)17
b(program)g(order.)26 b(If)18 b(the)f(\014le)i(is)f(op)q(ened)g(with)g
Fm(concurrency)g Ft(=)g Fj(MPI)p 1371 1809 V 14 w(EX)o(CLUSIVE)e
Ft(then)h(no)h(suc)o(h)75 1865 y(concurrency)j(proto)q(col)g(is)g(used.)37
b(This)21 b(mo)q(de)g(should)h(b)q(e)f(used)g(only)g(if)g(no)g(record)f(of)h
(the)f(same)75 1922 y(\014le)c(is)g(concurren)o(tly)f(accessed)h(and)f(up)q
(dated)h(using)g(t)o(w)o(o)e(di\013eren)o(t)h(comm)o(unicators)g(for)f
(\014le)i(access.)75 1978 y(In)i(particular,)g(this)g(mo)q(de)g(can)f(b)q(e)h
(used)g(if)g(sub\014les)h(concurren)o(tly)f(op)q(ened)h(with)f(distinct)g
(calls)h(to)75 2034 y Fm(MPI)p 160 2034 14 2 v 16 w(PFS)p 256
2034 V 16 w(OPEN)d Ft(do)f(not)g(o)o(v)o(erlap.)166 2421 y
Fl(Discussion:)39 b Fk(If)15 b(distinct)g(pro)q(cesses)j(w)o(an)o(t)d(to)g
(ha)o(v)o(e)g(priv)n(ate,)g(unco)q(ordinated)g(accesses)j(to)d(unrelated)75
2478 y(sub\014les)h(out)g(of)f(the)h(same)f(V)m(esta)h(\014le,)f(then)h(eac)o
(h)g(of)f(them)g(can)h(op)q(en)g(separately)g(the)g(\014le.)23
b(The)16 b(comm)o(uni-)75 2534 y(cator)g Fj(MPI)p 260 2534
13 2 v 14 w(COMM)p 404 2534 V 15 w(I)p Fk(,)f(whic)o(h)g(has)h(a)g(singleton)
f(group)h(including)f(only)f(the)j(lo)q(cal)e(pro)q(cess,)i(can)f(b)q(e)h
(used)f(for)75 2591 y(that)g(purp)q(ose.)27 b(The)17 b(collectiv)o(e)g(op)q
(ening)f(of)g(the)h(same)e(\014le)i(b)o(y)f(m)o(ultiple)e(pro)q(cesses)19
b(either)e(allo)o(ws)e(them)h(to)75 2647 y(co)q(ordinate)e(allo)q(cation)e
(of)g(disjoin)o(t)h(sub\014les)h(\()p Fj(MPI)p 901 2647 V 14
w(PRIV)m(A)m(TE)d Fk(mo)q(de\),)h(or)i(allo)o(ws)e(them)g(to)i(share)g(use)g
(of)f(a)g(\014le)75 2704 y(p)q(oin)o(ter)h(\()p Fj(MPI)p 311
2704 V 15 w(SHARED)p Fk(\),)f(or)h(allo)o(ws)e(them)h(to)h(access)i(a)d
(sub\014le)i(collectiv)o(ely)m(.)1967 46 y Fr(1)1967 103 y(2)1967
159 y(3)1967 215 y(4)1967 272 y(5)1967 328 y(6)1967 385 y(7)1967
441 y(8)1967 498 y(9)1959 554 y(10)1959 611 y(11)1959 667 y(12)1959
724 y(13)1959 780 y(14)1959 836 y(15)1959 893 y(16)1959 949
y(17)1959 1006 y(18)1959 1062 y(19)1959 1119 y(20)1959 1175
y(21)1959 1232 y(22)1959 1288 y(23)1959 1345 y(24)1959 1401
y(25)1959 1457 y(26)1959 1514 y(27)1959 1570 y(28)1959 1627
y(29)1959 1683 y(30)1959 1740 y(31)1959 1796 y(32)1959 1853
y(33)1959 1909 y(34)1959 1966 y(35)1959 2022 y(36)1959 2078
y(37)1959 2135 y(38)1959 2191 y(39)1959 2248 y(40)1959 2304
y(41)1959 2361 y(42)1959 2417 y(43)1959 2474 y(44)1959 2530
y(45)1959 2587 y(46)1959 2643 y(47)1959 2699 y(48)p eop
%%Page: 25 26
bop 75 -100 a Fp(1.8.)34 b(VEST)l(A)16 b(FUNCTIONS)1206 b Ft(25)75
49 y Fm(MPI)p 160 49 14 2 v 16 w(PFS)p 256 49 V 16 w(REOPEN\()17
b(action,)e(p)q(osition,)h(mo)q(de,)c(concurrency)l(,)k(pa)o(rtpa)o(rams,)c
(comm)m(\))117 126 y Fk(IN)155 b Fm(action)472 b Fk(one)14
b(of)f Fj(MPI)p 1105 126 13 2 v 14 w(READ,)g(MPI)p 1329 126
V 14 w(WRITE)p Fk(,)f(or)i Fj(MPI)p 1624 126 V 14 w(READ)o(WRITE)905
183 y Fk(\(state\))117 257 y(IN)155 b Fm(p)q(osition)439 b
Fk(one)18 b(of)f Fj(MPI)p 1113 257 V 14 w(ASIS)g Fk(\(curren)o(t)i(p)q
(osition\))e(or)g Fj(MPI)p 1701 257 V 14 w(REWIND)905 313 y
Fk(\(start)e(of)e(\014le\))h(\(state\))117 387 y(IN)155 b Fm(mo)q(de)481
b Fk(one)10 b(of)e Fj(MPI)p 1096 387 V 15 w(PRIV)m(A)m(TE,)e(MPI)p
1373 387 V 14 w(SHARED)j Fk(or)g Fj(MPI)p 1679 387 V 15 w(COLLECTIVE)905
443 y Fk(\(state\))117 517 y(IN)155 b Fm(metho)q(d)442 b Fk(one)14
b(of)g Fj(MPI)p 1106 517 V 14 w(UNI)f Fk(or)h Fj(MPI)p 1329
517 V 14 w(MUL)m(TI)g Fk(\(state\))117 591 y(IN)155 b Fm(concurrency)362
b Fk(one)10 b(of)e Fj(MPI)p 1096 591 V 15 w(EX)o(CLUSIVE)f
Fk(or)i Fj(MPI)p 1457 591 V 14 w(CONCURRENT)f Fk(\(state\))117
664 y(IN)155 b Fm(pa)o(rtpa)o(rams)373 b Fk(arra)o(y)18 b(describing)g
(partition)f(parameters)g(\(arra)o(y)h(of)f(in)o(te-)905 721
y(ger\))117 794 y(INOUT)62 b Fm(comm)466 b Fk(comm)o(unicator)11
b(of)j(group)f(that)h(op)q(ens)h(the)f(\014le)g(\(handle\))75
919 y Fh(int)47 b(MPI)p 269 919 15 2 v 17 w(Pfs)p 358 919 V
17 w(reopen\()23 b(MPI)p 638 919 V 17 w(IO)g(action,)g(MPI)p
989 919 V 17 w(IO)g(position,)g(MPI)p 1388 919 V 17 w(IO)g(mode,)393
975 y(MPI)p 468 975 V 17 w(IO)h(method,)e(MPI)p 819 975 V 17
w(IO)i(concurrency,)e(int)h(*partparams,)393 1032 y(MPI)p 468
1032 V 17 w(Comm)g(comm\))75 1118 y(MPI)p 150 1118 V 17 w(PFS)p
239 1118 V 17 w(REOPEN\()f(ACTION,)h(POSITION,)g(MODE,)g(METHOD,)g
(CONCURRENCY,)f(PARTPARAMS,)393 1175 y(COMM,)h(IERROR\))170
1231 y(INTEGER)g(ACTION,)g(POSITION,)g(MODE,)g(METHOD,)g(CONCURRENCY,)f
(PARTPARAMS\(*\),)170 1288 y(COMM,)i(IERROR)166 1374 y Ft(Reop)q(ens)15
b(an)f(already)g(op)q(ened)h(\014le,)g(p)q(ossibly)h(c)o(hanging)e(the)g
(partition)h(parameters)e(and)h(access)75 1430 y(mo)q(de.)20
b(This)c(op)q(eration)f(is)h(equiv)m(alen)o(t)h(to)d(closing)j(and)e(op)q
(ening)h(anew)g(a)e(\014le,)i(but)g(it)f(allo)o(ws)g(one)h(to)75
1487 y(preserv)o(e)d(the)h(use)f(of)g(the)g(same)g(comm)o(unicator)g(and)h(a)
o(v)o(oids)f(sp)q(ecifying)i(anew)e(the)g(parameters)g(that)75
1543 y(do)f(not)h(c)o(hange)f(\(\014le)i(name,)e(status,)g(\014le)i
(parameters\).)k(The)12 b Fm(p)q(osition)i Ft(parameter)e(is)h(signi\014can)o
(t)g(only)75 1600 y(if)j(the)g(\014le)h(is)f(reop)q(ened)h(with)f(the)g(same)
g(partition)g(parameters,)e(in)j(whic)o(h)g(case)e(the)h(\014le)h(p)q(oin)o
(ter\(s\))75 1656 y(is)e(\(are\))e(rep)q(ositioned)j(as)e(indicated)i(b)o(y)e
(this)h(parameter;)e(if)i(the)f(\014le)i(is)f(repartitioned)g(or)e(the)i
(access)75 1713 y(mo)q(de)e(is)h(c)o(hanged)f(from)f Fj(MPI)p
594 1713 13 2 v 14 w(PRIV)m(A)m(TE)e Ft(to)j Fj(MPI)p 916 1713
V 14 w(SHARED)f Ft(or)h Fj(MPI)p 1233 1713 V 14 w(COLLECTIVE)p
Ft(,)e(or)h(vice)i(v)o(ersa,)f(then)75 1769 y(the)20 b(\014le)h(p)q(oin)o
(ter\(s\))f(is)g(\(are\))f(p)q(ositioned)i(at)f(the)g(b)q(eginning)i(of)d
(the)h(sub\014le\(s\),)i(and)e(the)g Fm(p)q(osition)75 1826
y Ft(parameter)14 b(is)i(ignored.)166 1882 y(The)c Fm(MPI)p
341 1882 14 2 v 16 w(GET)p 445 1882 V 16 w(FILE)f Ft(function)i(can)e(b)q(e)i
(used)f(to)f(\014nd)h(whether)g(a)f(comm)o(unicator)g(is)i(attac)o(hed)e(to)
75 1939 y(a)h(V)l(esta)h(\014le)g(and,)g(if)g(so,)g(to)f(\014nd)h(the)g
(\014lename)h(and)e(the)h(v)m(alues)h(of)e(the)h Fm(action,)g(t)o(yp)q(e,)h
(rec)p 1627 1939 V 16 w(size,)f(concur-)75 1995 y(rency)l(,)f(p)q(osition)g
Ft(and)f Fm(mo)q(de)e Ft(argumen)o(ts.)17 b(In)12 b(addition,)g(the)f
(function)h Fm(MPI)p 1366 1995 V 16 w(GET)p 1470 1995 V 17
w(PFS)p 1567 1995 V 16 w(P)l(ARAMETERS)75 2051 y Ft(can)j(b)q(e)h(used)g(to)f
(query)g(on)g(the)g(curren)o(t)g(\014le)i(structure)e(and)g(partitioning.)75
2155 y Fm(MPI)p 160 2155 V 16 w(GET)p 264 2155 V 17 w(PFS)p
361 2155 V 16 w(P)l(ARAMETERS\(comm)o(,)d(\014lepa)o(rams,)g(pa)o(rtpa)o(ram)
o(s\))117 2232 y Fk(IN)155 b Fm(comm)466 b Fk(comm)o(unicator)11
b(attac)o(hed)k(to)f(\014le)f(\(handle\))117 2306 y(OUT)108
b Fm(\014lepa)o(rams)394 b Fk(arra)o(y)14 b(describing)g(\014le)g(structure)i
(\(arra)o(y)e(of)f(in)o(tegers\))117 2380 y(OUT)108 b Fm(pa)o(rtpa)o(rams)373
b Fk(arra)o(y)14 b(describing)h(partitioning)d(parameters)i(\(arra)o(y)g(of)g
(in-)905 2436 y(tegers\))75 2561 y Fh(int)47 b(MPI)p 269 2561
15 2 v 17 w(Get)p 358 2561 V 17 w(pfs)p 447 2561 V 17 w(parameters\()22
b(MPI)p 822 2561 V 17 w(Comm)h(comm,)g(int)h(*fileparams,)393
2617 y(int)g(*partparams\))75 2704 y(MPI)p 150 2704 V 17 w(GET)p
239 2704 V 17 w(PFS)p 328 2704 V 16 w(PARAMETERS\()f(COMM,)g(FILEPARAMS,)f
(PARTPARAMS,)h(IERROR\))-32 46 y Fr(1)-32 103 y(2)-32 159 y(3)-32
215 y(4)-32 272 y(5)-32 328 y(6)-32 385 y(7)-32 441 y(8)-32
498 y(9)-40 554 y(10)-40 611 y(11)-40 667 y(12)-40 724 y(13)-40
780 y(14)-40 836 y(15)-40 893 y(16)-40 949 y(17)-40 1006 y(18)-40
1062 y(19)-40 1119 y(20)-40 1175 y(21)-40 1232 y(22)-40 1288
y(23)-40 1345 y(24)-40 1401 y(25)-40 1457 y(26)-40 1514 y(27)-40
1570 y(28)-40 1627 y(29)-40 1683 y(30)-40 1740 y(31)-40 1796
y(32)-40 1853 y(33)-40 1909 y(34)-40 1966 y(35)-40 2022 y(36)-40
2078 y(37)-40 2135 y(38)-40 2191 y(39)-40 2248 y(40)-40 2304
y(41)-40 2361 y(42)-40 2417 y(43)-40 2474 y(44)-40 2530 y(45)-40
2587 y(46)-40 2643 y(47)-40 2699 y(48)p eop
%%Page: 26 27
bop 75 -100 a Ft(26)1387 b Fp(CHAPTER)16 b(1.)34 b(IO)170 49
y Fh(INTEGER)23 b(COMM,)h(FILEPARAMS\(*\),)d(PARTPARAMS\(*\),)h(IERROR)166
136 y Ft(Returns)15 b(the)f(\014le)i(structure)e(parameters)f(and)i(the)f
(partitioning)i(parameters)d(of)h(the)h(V)l(esta)f(\014le)75
192 y(and)20 b(the)g(sub\014le)h(attac)o(hed)e(to)g(the)h(comm)o(unicator.)33
b(The)19 b(call)i(is)f(erroneous)g(if)g(there)g(is)g(no)g(suc)o(h)75
249 y(attac)o(hed)15 b(V)l(esta)g(\014le.)75 370 y Fo(1.8.3)49
b(Access)15 b(to)h(V)o(esta)g(\014les)75 456 y Ft(Once)g(a)f(V)l(esta)f
(\014le)i(is)g(op)q(ened)g(\(or)e(reop)q(ened\),)h(then)h(pro)q(cesses)f(ma)o
(y)f(access)h(the)g(asso)q(ciated)g(sub\014le)75 513 y(using)h(an)o(y)g(of)f
(the)h(MPI-IO)h(commands)e(for)g(\014le)i(access)f(and)g(p)q(ositioning,)h
(as)e(a)h(regular)f(\014le.)23 b(If)16 b(the)75 569 y(\014le)f(w)o(as)e(op)q
(ened)h(as)g(a)f(record)h(\014le)h(\()p Fm(t)o(yp)q(e)f Ft(=)g
Fj(MPI)p 925 569 13 2 v 14 w(FIXED)p Ft(\))e(then)i(the)g(sub\014le)h(is)g
(treated)e(as)g(a)h(\014xed)g(size)75 626 y(record)i(\014le:)23
b(eac)o(h)16 b(V)l(esta)g(record)g(is)h(a)f(\014le)h(record,)f(and)g(the)g
(records)g(are)g(ordered)g(in)h(the)g(canonical)75 682 y(order)g(describ)q
(ed)i(ab)q(o)o(v)o(e.)26 b(If)18 b(the)f(\014le)h(w)o(as)f(op)q(ened)h(as)f
(a)g(stream)g(\014le)h(\()p Fm(t)o(yp)q(e)g Ft(=)f Fj(MPI)p
1572 682 V 15 w(STREAM)p Ft(\))g(then)75 738 y(the)f(sub\014le)i(is)f
(treated)f(as)g(a)g(sequence)h(of)f(b)o(ytes)g({)g(the)h(sequence)g(obtained)
g(b)o(y)f(concatenating)h(the)75 795 y(comp)q(onen)o(t)e(records)g(in)h
(canonical)g(order.)k(With)15 b(this)h(in)o(terpretation,)f(all)h(MPI-IO)f
(\014le)i(access)e(and)75 851 y(p)q(ositioning)i(functions)f(w)o(ork)e(as)h
(on)g(a)g(regular)g(\014le,)h(with)g(few)f(c)o(hanges.)166
908 y(The)g(main)h(discrepancy)g(is)g(that)e(a)h(V)l(esta)f(sub\014le)j(do)q
(es)e(not)g(ha)o(v)o(e)g(an)g(end-of-\014le)h(mark.)j(Th)o(us,)75
964 y(one)f(cannot)f(execute)h(a)f(call)h(to)f Fm(MPI)p 745
964 14 2 v 16 w(SEEK)p Ft(,)g(with)h Fm(whence)h(=)e(MPI)p
1298 964 V 16 w(END)p Ft(,)g(nor)g(can)h(one)f(execute)h(a)75
1021 y(call)e(to)f Fm(MPI)p 299 1021 V 16 w(ENDFILE)p Ft(.)166
1160 y Fl(Discussion:)41 b Fk(Do)15 b(w)o(e)h(really)f(need)h(this)g
(discrepancy?)25 b(W)m(ould)14 b(it)h(mak)o(e)f(sense)k(for)d(MPI-IO)h(to)f
(k)o(eep)75 1216 y(its)f(o)o(wn)f(end-of-\014le)h(mark)o(er?)166
1355 y Ft(It)20 b(is)h(erroneous)f(to)f(read-access)i(a)e(V)l(esta)h(record)g
(that)g(w)o(as)f(nev)o(er)h(previously)i(written.)34 b(In)75
1412 y(the)16 b(curren)o(t)f(implemen)o(tation,)i(suc)o(h)f(access)g(will)h
(either)f(return)g(zero)g(b)o(ytes)f(or)g(an)h(all-zero)g(record.)75
1468 y(Ho)o(w)o(ev)o(er,)g(the)h(conditions)h(under)g(whic)o(h)g(either)f(o)q
(ccur)h(are)e(somewhat)g(complex;)j(the)e(outcome)f(of)75 1525
y(suc)o(h)g(an)f(access)g(ma)o(y)f(b)q(e)i(a\013ected)f(b)o(y)g(accesses)h
(to)e(other)h(disjoin)o(t)h(sub\014les.)1967 46 y Fr(1)1967
103 y(2)1967 159 y(3)1967 215 y(4)1967 272 y(5)1967 328 y(6)1967
385 y(7)1967 441 y(8)1967 498 y(9)1959 554 y(10)1959 611 y(11)1959
667 y(12)1959 724 y(13)1959 780 y(14)1959 836 y(15)1959 893
y(16)1959 949 y(17)1959 1006 y(18)1959 1062 y(19)1959 1119
y(20)1959 1175 y(21)1959 1232 y(22)1959 1288 y(23)1959 1345
y(24)1959 1401 y(25)1959 1457 y(26)1959 1514 y(27)1959 1570
y(28)1959 1627 y(29)1959 1683 y(30)1959 1740 y(31)1959 1796
y(32)1959 1853 y(33)1959 1909 y(34)1959 1966 y(35)1959 2022
y(36)1959 2078 y(37)1959 2135 y(38)1959 2191 y(39)1959 2248
y(40)1959 2304 y(41)1959 2361 y(42)1959 2417 y(43)1959 2474
y(44)1959 2530 y(45)1959 2587 y(46)1959 2643 y(47)1959 2699
y(48)p eop
%%Page: 27 28
bop 75 381 a Fv(Bibliograph)m(y)75 604 y Ft([1])22 b(W.)11
b(S.)h(Brainerd,)h(C.)f(H.)g(Goldb)q(ergs,)g(and)h(Jeanne)g(C.)e(Adams.)k
Fs(Pr)n(o)n(gr)n(ammers)e(Guide)h(to)g(F)m(ortr)n(an)146 660
y(90)p Ft(.)20 b(McGra)o(w-Hill,)15 b(New)h(York,)e(1990.)75
754 y([2])22 b(P)o(eter)12 b(F.)g(Corb)q(ett,)h(Sandra)g(Johnson)g(Ba)o
(ylor,)g(and)g(Dror)f(G.)g(F)l(eitelson.)17 b(Ov)o(erview)d(of)e(the)h(V)l
(esta)146 811 y(parallel)h(\014le)h(system.)h(In)e Fs(Pr)n(o)n(c.)g(IPPS)f
('93)i(Workshop)g(on)f(I/O)h(in)f(Par)n(al)r(lel)f(Computer)i(Systems)p
Ft(,)146 867 y(pages)g(1{16,)e(Apr)j(1993.)i(\(Reprin)o(ted)f(in)f
Fs(Comput.)h(A)o(r)n(ch.)e(News)h Fn(21\(5\))p Ft(,)g(pp.)f(7{14,)f(Dec)h
(1993\).)75 961 y([3])22 b(P)o(eter)d(F.)g(Corb)q(ett,)h(Dror)f(G.)g(F)l
(eitelson,)i(Jean-Pierre)g(Prost,)f(and)g(Sandra)f(Johnson)i(Ba)o(ylor.)146
1017 y(P)o(arallel)c(access)g(to)e(\014les)j(in)f(the)f(V)l(esta)g(\014le)i
(system.)k(In)17 b Fs(Sup)n(er)n(c)n(omputing)h('93)p Ft(,)e(pages)g
(472{481,)146 1074 y(No)o(v)e(1993.)75 1168 y([4])22 b(Message)15
b(P)o(assing)g(In)o(terface)g(F)l(orum.)21 b(Do)q(cumen)o(t)15
b(for)g(a)g(standard)g(message-passing)h(in)o(terface.)146
1224 y(T)l(ec)o(hnical)h(Rep)q(ort)e(CS-93-214,)f(Univ)o(ersit)o(y)i(of)f(T)l
(ennessee,)h(No)o(v)o(em)o(b)q(er)e(1993.)75 1318 y([5])22
b(C.)13 b(H.)g(Ko)q(elb)q(el,)j(D.)d(B.)g(Lo)o(v)o(eman,)g(R.)h(S.)f(Sc)o
(hrieb)q(er,)i(G.)e(L.)h(Steele,)h(and)e(M.)g(E.)g(Zosel.)18
b Fs(The)c(High)146 1374 y(Performanc)n(e)i(F)m(ortr)n(an)f(Handb)n(o)n(ok)p
Ft(.)k(The)d(MIT)f(Press,)g(1994.)75 1468 y([6])22 b(P)o(arasoft)9
b(Corp)q(oration.)14 b Fs(Expr)n(ess)e(V)m(ersion)f(1.0:)20
b(A)12 b(Communic)n(ation)h(Envir)n(onment)f(for)h(Par)n(al)r(lel)146
1525 y(Computers)p Ft(,)i(1988.)75 1618 y([7])22 b(Jean-Pierre)e(Prost.)29
b Fs(Par)n(al)r(lel)18 b(File)h(System)g(External)f(User)h(Interfac)n(e)g(Pr)
n(op)n(osal)g(V1.2)p Ft(.)30 b(IBM)146 1675 y(TJWR)o(C,)14
b(Decem)o(b)q(er)i(1993.)-32 46 y Fr(1)-32 103 y(2)-32 159
y(3)-32 215 y(4)-32 272 y(5)-32 328 y(6)-32 385 y(7)-32 441
y(8)-32 498 y(9)-40 554 y(10)-40 611 y(11)-40 667 y(12)-40
724 y(13)-40 780 y(14)-40 836 y(15)-40 893 y(16)-40 949 y(17)-40
1006 y(18)-40 1062 y(19)-40 1119 y(20)-40 1175 y(21)-40 1232
y(22)-40 1288 y(23)-40 1345 y(24)-40 1401 y(25)-40 1457 y(26)-40
1514 y(27)-40 1570 y(28)-40 1627 y(29)-40 1683 y(30)-40 1740
y(31)-40 1796 y(32)-40 1853 y(33)-40 1909 y(34)-40 1966 y(35)-40
2022 y(36)-40 2078 y(37)-40 2135 y(38)-40 2191 y(39)-40 2248
y(40)-40 2304 y(41)-40 2361 y(42)-40 2417 y(43)-40 2474 y(44)-40
2530 y(45)-40 2587 y(46)-40 2643 y(47)-40 2699 y(48)p eop
%%Trailer
end
userdict /end-hook known{end-hook}if
%%EOF


From owner-mpi-comm@CS.UTK.EDU Wed Jan 26 14:04:14 1994
Received: from CS.UTK.EDU by netlib2.cs.utk.edu with ESMTP (8.6.4/2.8t-netlib)
	id OAA27461; Wed, 26 Jan 1994 14:04:14 -0500
Received: from localhost by CS.UTK.EDU with SMTP (8.6.4/2.8s-UTK)
	id OAA05147; Wed, 26 Jan 1994 14:00:35 -0500
X-Resent-To: mpi-comm@CS.UTK.EDU ; Wed, 26 Jan 1994 14:00:34 EST
Errors-to: owner-mpi-comm@CS.UTK.EDU
Received: from antares.mcs.anl.gov by CS.UTK.EDU with ESMTP (8.6.4/2.8s-UTK)
	id OAA05128; Wed, 26 Jan 1994 14:00:30 -0500
Received: from mcs.anl.gov (donner.mcs.anl.gov [140.221.5.134]) by antares.mcs.anl.gov (8.6.4/8.6.4) with ESMTP id MAA22970; Wed, 26 Jan 1994 12:59:57 -0600
Message-Id: <199401261859.MAA22970@antares.mcs.anl.gov>
To: mpi-comm@CS.UTK.EDU
Subject: MPI_PACK, MPI_UNPACK, MPI_PACK_SIZE, MPI_UNPACK_SIZE
Cc: snir@watson.ibm.com, walker@sun4.EPM.ORNL.GOV, gropp@antares.mcs.anl.gov,
        lederman@super.org, tony@Aurora.CS.MsState.Edu, doss@ERC.MsState.Edu,
        jim@meiko.co.uk, carl@vlsi.cs.caltech.edu
Date: Wed, 26 Jan 1994 12:59:55 -0600
From: Rusty Lusk <lusk@mcs.anl.gov>


Here is a concrete proposal for explicit and incremental packing and unpacking
of buffers, that some of us talked about at the European meeting.  It was
generated in response to a strong request from the users.  If it looks
reasonable to you, I will try to flesh it out more for the draft to be
presented at the Knoxville meeting.  It probably would be added to the pt2pt
chapter.  Comments explicitly solicited.

Rusty & Bill

Proposal:  Explicit and incremental packing and unpacking of MPI buffers

At the recent European Workshop, several attendees expressed the need for
incremental packing and unpacking of MPI buffers, a feature currently
available in PVM.  The idea is to provide for transferring data to/from memory
described by an MPI datatype from/to a contiguous area that is to be sent/has
been received with type MPI_BYTE. In our original discussions, we recommended
essentially that users always allow MPI to do packing and unpacking
automatically in in the course of moving data to and from user space.  This
allows for optimization by aggressive implementations and special hardware.
Nonetheless, there are reasons for adding explicit packing and unpacking
routines to MPI:

1.  MPI currently does not allow *incremental* packing and unpacking.  The
incremental pack is for simplicity (to avoid creating several complex MPI
datatypes, when efficiency is not important) or for situations where the
contiguous buffer will be reused.  The incremental unpack definitely adds
functionality.  For example when receiving an integer n together with n
floats, one might want to know n before allocating precisely the right amount
of space for the floats.  

2.  The users want it, and it will make translation of existing PVM programs
particularly straightforward.

3.  As pointed out by Nathan Doss et al., there are times when one wants to be
able to reuse the packed version of the buffer.  This will make implementation
of the collective operations, for example, easier to do on top of pt2pt.

4.  The essential functionality is likely to be present in an implementation
anyway, and might as well be made visible to the user.


The parameters of MPI_PACK and MPI_UNPACK arise out of the need to identify
the memory area described by the datatype (addr,datatype,count), the
contiguous memory to packed into or unpacked from (buffer, maxsize), the other
process involved (communicator, rank) in order to be able to do translations if
necessary, and an inout variable (size_so_far) needed to hold state across
calls, to support incrementality.  On the unpack we also need to be told how
many items were there (actualcount).


________________________________________________________________________

MPI_PACK(addr,datatype,count,dest,comm,buffer,maxsize,size_so_far)

The inout variable size_so_far represents a displacement into the buffer that
has been used so far.  MPI_PACK takes care of supplying pad bytes where
needed.  Other parameters are as described above.

________________________________________________________________________


Example of use  (in C):  Puts in 

{
    int size_so_far;
    int numfloats_a;
    int numfloats_b;
    float a[100];
    float b[100];
    char buffer[100000];  /* better solution below, using MPI_PACK_SIZE */

    dest	= 2;
    numfloats_a	= 25;
    numfloats_b	= 17;

    size_so_far	= 0;
    MPI_PACK(numfloats_a, MPI_INT, 1, dest, MPI_COMM_WORLD,
	     buffer, 100000, &size_so_far);
    MPI_PACK(a, MPI_FLOAT, numfloats_a, dest, MPI_COMM_WORLD,
	     buffer, 100000, &size_so_far);
    MPI_PACK(numfloats_b, MPI_INT, 1, dest, MPI_COMM_WORLD,
	     buffer, 100000, &size_so_far);
    MPI_PACK(b, MPI_FLOAT, numfloats_b, dest, MPI_COMM_WORLD,
	     buffer, 100000, &size_so_far);
    MPI_SEND(buffer, size_so_far, MPI_BYTE, dest, tag, MPI_COMM_WORLD);
}

________________________________________________________________________

MPI_UNPACK(addr,datatype,count,source,comm,buffer,maxsize,size_so_far,actcount)

moves data from buffer into the area designated by (addr,datatype,count).  
Actcount has the number of items actually moved.

________________________________________________________________________

 Example:

(unpack above message)


Instead of using a "real big" scratch area as above, one should be able to
find out how much space a message described as MPI_BYTE would take up if it
were to unpacked, or how much space a message described by an MPI buffer would
take up if it were to be packed.  These routines are very similar to the
above, but don't move data.  Therefore they don't need the two memory location
parameters.  The size_so_far parameter is inout as above, so they can be
called incrementally.

________________________________________________________________________

MPI_PACK_SIZE(datatype,count,dest,comm,size_so_far)

MPI_UNPACK_SIZE(datatype,count,source,comm,size_so_far)

________________________________________________________________________

 Example: pack and unpack into dynamically allocated memory.

This still needs a little more fleshing out, but I hope the idea is clear.
From owner-mpi-comm@CS.UTK.EDU Wed Jan 26 14:23:02 1994
Received: from CS.UTK.EDU by netlib2.cs.utk.edu with ESMTP (8.6.4/2.8t-netlib)
	id OAA27655; Wed, 26 Jan 1994 14:23:01 -0500
Received: from localhost by CS.UTK.EDU with SMTP (8.6.4/2.8s-UTK)
	id OAA07368; Wed, 26 Jan 1994 14:22:21 -0500
X-Resent-To: mpi-comm@CS.UTK.EDU ; Wed, 26 Jan 1994 14:22:19 EST
Errors-to: owner-mpi-comm@CS.UTK.EDU
Received: from antares.mcs.anl.gov by CS.UTK.EDU with ESMTP (8.6.4/2.8s-UTK)
	id OAA07355; Wed, 26 Jan 1994 14:22:16 -0500
Received: from mcs.anl.gov (donner.mcs.anl.gov [140.221.5.134]) by antares.mcs.anl.gov (8.6.4/8.6.4) with ESMTP id NAA23614; Wed, 26 Jan 1994 13:22:17 -0600
Message-Id: <199401261922.NAA23614@antares.mcs.anl.gov>
To: mpi-comm@CS.UTK.EDU
Subject: MPI_PACK, MPI_UNPACK, MPI_PACK_SIZE, MPI_UNPACK_SIZE
Cc: snir@watson.ibm.com, walker@sun4.EPM.ORNL.GOV, gropp@antares.mcs.anl.gov,
        lederman@super.org, tony@Aurora.CS.MsState.Edu, doss@ERC.MsState.Edu,
        jim@meiko.co.uk, carl@vlsi.cs.caltech.edu
Date: Wed, 26 Jan 1994 13:22:16 -0600
From: Rusty Lusk <lusk@mcs.anl.gov>


(Apologies if this is your second copy; a glitch may have attacked the
previous posting)

Here is a concrete proposal for explicit and incremental packing and unpacking
of buffers, that some of us talked about at the European meeting.  It was
generated in response to a strong request from the users.  If it looks
reasonable to you, I will try to flesh it out more for the draft to be
presented at the Knoxville meeting.  It probably would be added to the pt2pt
chapter.  Comments explicitly solicited.

Rusty & Bill

Proposal:  Explicit and incremental packing and unpacking of MPI buffers

At the recent European Workshop, several attendees expressed the need for
incremental packing and unpacking of MPI buffers, a feature currently
available in PVM.  The idea is to provide for transferring data to/from memory
described by an MPI datatype from/to a contiguous area that is to be sent/has
been received with type MPI_BYTE. In our original discussions, we recommended
essentially that users always allow MPI to do packing and unpacking
automatically in in the course of moving data to and from user space.  This
allows for optimization by aggressive implementations and special hardware.
Nonetheless, there are reasons for adding explicit packing and unpacking
routines to MPI:

1.  MPI currently does not allow *incremental* packing and unpacking.  The
incremental pack is for simplicity (to avoid creating several complex MPI
datatypes, when efficiency is not important) or for situations where the
contiguous buffer will be reused.  The incremental unpack definitely adds
functionality.  For example when receiving an integer n together with n
floats, one might want to know n before allocating precisely the right amount
of space for the floats.  

2.  The users want it, and it will make translation of existing PVM programs
particularly straightforward.

3.  As pointed out by Nathan Doss et al., there are times when one wants to be
able to reuse the packed version of the buffer.  This will make implementation
of the collective operations, for example, easier to do on top of pt2pt.

4.  The essential functionality is likely to be present in an implementation
anyway, and might as well be made visible to the user.


The parameters of MPI_PACK and MPI_UNPACK arise out of the need to identify
the memory area described by the datatype (addr,datatype,count), the
contiguous memory to packed into or unpacked from (buffer, maxsize), the other
process involved (communicator, rank) in order to be able to do translations if
necessary, and an inout variable (size_so_far) needed to hold state across
calls, to support incrementality.  On the unpack we also need to be told how
many items were there (actualcount).


________________________________________________________________________

MPI_PACK(addr,datatype,count,dest,comm,buffer,maxsize,size_so_far)

The inout variable size_so_far represents a displacement into the buffer that
has been used so far.  MPI_PACK takes care of supplying pad bytes where
needed.  Other parameters are as described above.

________________________________________________________________________


Example of use  (in C):  Puts in 

{
    int size_so_far;
    int numfloats_a;
    int numfloats_b;
    float a[100];
    float b[100];
    char buffer[100000];  /* better solution below, using MPI_PACK_SIZE */

    dest	= 2;
    numfloats_a	= 25;
    numfloats_b	= 17;

    size_so_far	= 0;
    MPI_PACK(numfloats_a, MPI_INT, 1, dest, MPI_COMM_WORLD,
	     buffer, 100000, &size_so_far);
    MPI_PACK(a, MPI_FLOAT, numfloats_a, dest, MPI_COMM_WORLD,
	     buffer, 100000, &size_so_far);
    MPI_PACK(numfloats_b, MPI_INT, 1, dest, MPI_COMM_WORLD,
	     buffer, 100000, &size_so_far);
    MPI_PACK(b, MPI_FLOAT, numfloats_b, dest, MPI_COMM_WORLD,
	     buffer, 100000, &size_so_far);
    MPI_SEND(buffer, size_so_far, MPI_BYTE, dest, tag, MPI_COMM_WORLD);
}

________________________________________________________________________

MPI_UNPACK(addr,datatype,count,source,comm,buffer,maxsize,size_so_far,actcount)

moves data from buffer into the area designated by (addr,datatype,count).  
Actcount has the number of items actually moved.

________________________________________________________________________

 Example:

(unpack above message)


Instead of using a "real big" scratch area as above, one should be able to
find out how much space a message described as MPI_BYTE would take up if it
were to unpacked, or how much space a message described by an MPI buffer would
take up if it were to be packed.  These routines are very similar to the
above, but don't move data.  Therefore they don't need the two memory location
parameters.  The size_so_far parameter is inout as above, so they can be
called incrementally.

________________________________________________________________________

MPI_PACK_SIZE(datatype,count,dest,comm,size_so_far)

MPI_UNPACK_SIZE(datatype,count,source,comm,size_so_far)

________________________________________________________________________

 Example: pack and unpack into dynamically allocated memory.

This still needs a little more fleshing out, but I hope the idea is clear.
From owner-mpi-comm@CS.UTK.EDU Wed Jan 26 14:49:19 1994
Received: from CS.UTK.EDU by netlib2.cs.utk.edu with ESMTP (8.6.4/2.8t-netlib)
	id OAA27797; Wed, 26 Jan 1994 14:49:18 -0500
Received: from localhost by CS.UTK.EDU with SMTP (8.6.4/2.8s-UTK)
	id OAA09642; Wed, 26 Jan 1994 14:48:40 -0500
X-Resent-To: mpi-comm@CS.UTK.EDU ; Wed, 26 Jan 1994 14:48:38 EST
Errors-to: owner-mpi-comm@CS.UTK.EDU
Received: from antares.mcs.anl.gov by CS.UTK.EDU with ESMTP (8.6.4/2.8s-UTK)
	id OAA09626; Wed, 26 Jan 1994 14:48:36 -0500
Received: from mcs.anl.gov (donner.mcs.anl.gov [140.221.5.134]) by antares.mcs.anl.gov (8.6.4/8.6.4) with ESMTP id NAA24405 for <mpi-comm@cs.utk.edu>; Wed, 26 Jan 1994 13:48:32 -0600
Message-Id: <199401261948.NAA24405@antares.mcs.anl.gov>
To: mpi-comm@CS.UTK.EDU
Subject: Some notes on the January MPI workshop in Europe
Date: Wed, 26 Jan 1994 13:48:31 -0600
From: Rusty Lusk <lusk@mcs.anl.gov>


This is not a complete set of minutes of the January meeting, but it describes
immediate responses to the presentations of those in the European parallel
computing community who came to the workshop and told us of their impressions
of MPI and how it would or would not meet their needs.  

(Rolf, can you get this into the hands of as many attendees as is convenient?)


Rusty Lusk

___________________________________________________________________________

Notes on how we decided to respond to the user "requests" at the January
meeting.   This note represents the thoughts of the 12 committee
memeber present at the European meeting.  They will be presented to
the whole committee for a formal vote at the meeting in Knoxville.

Buffering
---------

The users were clearly terrified by the discussion of "safety" into thinking
that we were mandating that there be no buffering.  We decided to change the
wording in the draft to make it clear that MPI implementations were intended
to support buffering.  We decided to consider whether user-specifies-buffer
should be mandatory.

Error Codes
----- -----

They noticed, correctly, that without at least some list of error codes, it
would be difficult to write portable programs that checked for errors.  Rusty
Lusk volunteered to collect some error codes and propose them at the Knoxville
meeting.  Paul Pierce suggested that there be a way of combining detailed
error codes into "error classes".  Perhaps MPI could at least specify the
error classes.  We will discuss this at the next meeting.

Timers
------

The users asked for some kind of portable timer routine.  We decided to find
out what the POSIX clock routines were and then mandate that some of them be
part of any MPI implementation.  Bob Knighten will send us the specs for the
POSIX clock routines.

Tags
----

The users asked for some guaranteed tag range, for portability.  We decided
to specify that the tag lower bound is at most 0 and there is a contiguous
range available, up to X, where X is greater than or equal to 256.  (We may
have changed this to 128 later.)  An implementation note will be added to the
draft to state that 256 (128) was chosen since it could allow for a
lightweight message header but implementors on most MPP systems should
consider this a minimum that should be exceeded.  There will be an
environmental enquiry function to give the actual value of X and the lower
bound..

Validation Suite
---------- -----

ANL and ORNL will collaborate on a publicly available set of MPI programs, but
we as yet have no plans for a rigorous validation suite.

MPI Forum Followup
--- ----- --------

David Walker will organize mailing lists managed by current chapter authors to
allow comments to continue to be received forever.  A committee will continue
to exist for the forseeable future to provide interpretation of the standard
when questions arise.

Partial Receive
------- -------

The users asked for a way to unpack a message incrementally, as in PVM.  We
decided to keep thinking about this.  (It was later in the meeting when some
of us came up with a plan for a MPI_PACK and MPI_UNPACK that would meet this
requirement;  it will be proposed on the net soon and discussed at the
Knoxville meeting.)

Parameterized Datatypes
------------- ---------

We decided to defer this topic to the Fortran-90 binding discussion, whenever
that occurs. 

Remote Copy
------ ----

We decided to stick to our original position that remote copy was outside the
scope of the MPI goal.  It is anticipated that this would be a topic to be
included in MPI-2 discussions.



From owner-mpi-comm@CS.UTK.EDU Thu Jan 27 03:34:31 1994
Received: from CS.UTK.EDU by netlib2.cs.utk.edu with ESMTP (8.6.4/2.8t-netlib)
	id DAA01634; Thu, 27 Jan 1994 03:34:31 -0500
Received: from localhost by CS.UTK.EDU with SMTP (8.6.4/2.8s-UTK)
	id DAA03314; Thu, 27 Jan 1994 03:31:56 -0500
X-Resent-To: mpi-comm@CS.UTK.EDU ; Thu, 27 Jan 1994 03:31:54 EST
Errors-to: owner-mpi-comm@CS.UTK.EDU
Received: from gmdzi.gmd.de by CS.UTK.EDU with SMTP (8.6.4/2.8s-UTK)
	id DAA03307; Thu, 27 Jan 1994 03:31:48 -0500
Received: from f1neuman.gmd.de (f1neuman) by gmdzi.gmd.de with SMTP id AA07098
  (5.65c8/IDA-1.4.4 for <mpi-comm@cs.utk.edu>); Thu, 27 Jan 1994 09:29:51 +0100
Received: by f1neuman.gmd.de (AIX 3.2/UCB 5.64/4.03)
          id AA16328; Thu, 27 Jan 1994 09:31:47 GMT
Date: Thu, 27 Jan 1994 09:31:47 GMT
From: Rolf.Hempel@gmd.de (Rolf Hempel)
Message-Id: <9401270931.AA16328@f1neuman.gmd.de>
To: mpi-comm@CS.UTK.EDU
Subject: Packing/unpacking routines
Cc: gmap10@f1neuman.gmd.de

I like the proposal by Rusty and Bill for packing and unpackine routines
in MPI, and I strongly support the inclusion of those or similar
functions in the standard.

Some proponents of this functionality wanted to have those functions in
situations where they send a single buffer to many different locations.
Thus, the buffer has to be packed one time only. However, with the
proposed functions the buffer has to be packed for each destination
process separately, because the conversion happens in the packing
routine (arguments dest,comm). The application programmer cannot reuse
the once packed buffer, because he/she does not know whether the
target processors have the same data representation or not.

Personally I have no problem with this, but we should at least mention
that the functions cannot be used for reusing the packed buffer for
many sends.

The main reason for including the functions in the standard will be
to ease code migration from systems like PARMACS or PVM to MPI, and I
think that's a good enough reason.

- Rolf
From owner-mpi-comm@CS.UTK.EDU Thu Jan 27 11:09:32 1994
Received: from CS.UTK.EDU by netlib2.cs.utk.edu with ESMTP (8.6.4/2.8t-netlib)
	id LAA06978; Thu, 27 Jan 1994 11:09:32 -0500
Received: from localhost by CS.UTK.EDU with SMTP (8.6.4/2.8s-UTK)
	id LAA08634; Thu, 27 Jan 1994 11:08:40 -0500
X-Resent-To: mpi-comm@CS.UTK.EDU ; Thu, 27 Jan 1994 11:08:38 EST
Errors-to: owner-mpi-comm@CS.UTK.EDU
Received: from antares.mcs.anl.gov by CS.UTK.EDU with ESMTP (8.6.4/2.8s-UTK)
	id LAA08627; Thu, 27 Jan 1994 11:08:36 -0500
Received: from mcs.anl.gov (donner.mcs.anl.gov [140.221.5.134]) by antares.mcs.anl.gov (8.6.4/8.6.4) with ESMTP id KAA19553; Thu, 27 Jan 1994 10:07:21 -0600
Message-Id: <199401271607.KAA19553@antares.mcs.anl.gov>
To: Rolf.Hempel@gmd.de (Rolf Hempel)
Cc: mpi-comm@CS.UTK.EDU
Subject: Re: Packing/unpacking routines 
In-reply-to: Your message of "Thu, 27 Jan 1994 09:31:47 GMT."
             <9401270931.AA16328@f1neuman.gmd.de> 
Date: Thu, 27 Jan 1994 10:07:12 -0600
From: Rusty Lusk <lusk@mcs.anl.gov>

| Some proponents of this functionality wanted to have those functions in
| situations where they send a single buffer to many different locations.
| Thus, the buffer has to be packed one time only. However, with the
| proposed functions the buffer has to be packed for each destination
| process separately, because the conversion happens in the packing
| routine (arguments dest,comm). The application programmer cannot reuse
| the once packed buffer, because he/she does not know whether the
| target processors have the same data representation or not.
| 
| Personally I have no problem with this, but we should at least mention
| that the functions cannot be used for reusing the packed buffer for
| many sends.
| 

The idea of making packing process-specific is to be able to avoid
translations in the cases were you know that none will be needed because MPI
knows something about the other process, i.e., it knows precisely what has to
be done (byte-swapping instead of full xdr conversion or whatever).

Maybe we can solve this problem.  Suppose that if you used MPI_ANY_PROC as the
destination or source, MPI_PACK and MPI_UNPACK would then convert to a
canonical form (like XDR) that could be used at any other process.  That is,
if you wanted to re-use the packed buffer, you would say so and potentially
pay the price of a more general packing and unpacking procedure, but
everything would be safe, and maximally efficient when you specified the
process. 

Rusty & Bill
From owner-mpi-comm@CS.UTK.EDU Thu Jan 27 11:35:05 1994
Received: from CS.UTK.EDU by netlib2.cs.utk.edu with ESMTP (8.6.4/2.8t-netlib)
	id LAA07204; Thu, 27 Jan 1994 11:35:04 -0500
Received: from localhost by CS.UTK.EDU with SMTP (8.6.4/2.8s-UTK)
	id LAA11798; Thu, 27 Jan 1994 11:33:45 -0500
X-Resent-To: mpi-comm@CS.UTK.EDU ; Thu, 27 Jan 1994 11:33:43 EST
Errors-to: owner-mpi-comm@CS.UTK.EDU
Received: from Aurora.CS.MsState.Edu by CS.UTK.EDU with SMTP (8.6.4/2.8s-UTK)
	id LAA11788; Thu, 27 Jan 1994 11:33:39 -0500
Received:  by Aurora.CS.MsState.Edu (4.1/6.0s-FWP);
	   id AA27713; Thu, 27 Jan 94 10:33:39 CST
Date: Thu, 27 Jan 94 10:33:39 CST
From: Tony Skjellum <tony@Aurora.CS.MsState.Edu>
Message-Id: <9401271633.AA27713@Aurora.CS.MsState.Edu>
To: lusk@mcs.anl.gov
Subject: Re: Packing/unpacking routines
Cc: mpi-comm@CS.UTK.EDU

Hi,

As long as the scope for resending is within one communicator, I do not
see the problem, because unpack would choose the canonical form for
that communicator (implementation defined, opaque).  The canonical form
of MPI_COMM_WORLD should be equivalent to what Bill/Rusty suggest for
MPI_PROC_ANY, for consistency.  For intercommunication, it would be nice
to have a mechanism to extract the canonical form of other communicators,
rather than just MPI_PROC_ANY, but this is perhaps too much to ask.  

Note that we have never promised to do optimizations of data
conversion within a group boundary... but that we expect that multicanonical
implementations are going to exist.

In short: Rusty/Bill's suggestion seems fine in this regard.  

-Tony


----- Begin Included Message -----

From owner-mpi-comm@CS.UTK.EDU Thu Jan 27 10:18:37 1994
X-Resent-To: mpi-comm@CS.UTK.EDU ; Thu, 27 Jan 1994 11:08:38 EST
To: Rolf.Hempel@gmd.de (Rolf Hempel)
Cc: mpi-comm@CS.UTK.EDU
Subject: Re: Packing/unpacking routines 
Date: Thu, 27 Jan 1994 10:07:12 -0600
From: Rusty Lusk <lusk@mcs.anl.gov>
Content-Length: 1481

| Some proponents of this functionality wanted to have those functions in
| situations where they send a single buffer to many different locations.
| Thus, the buffer has to be packed one time only. However, with the
| proposed functions the buffer has to be packed for each destination
| process separately, because the conversion happens in the packing
| routine (arguments dest,comm). The application programmer cannot reuse
| the once packed buffer, because he/she does not know whether the
| target processors have the same data representation or not.
| 
| Personally I have no problem with this, but we should at least mention
| that the functions cannot be used for reusing the packed buffer for
| many sends.
| 

The idea of making packing process-specific is to be able to avoid
translations in the cases were you know that none will be needed because MPI
knows something about the other process, i.e., it knows precisely what has to
be done (byte-swapping instead of full xdr conversion or whatever).

Maybe we can solve this problem.  Suppose that if you used MPI_ANY_PROC as the
destination or source, MPI_PACK and MPI_UNPACK would then convert to a
canonical form (like XDR) that could be used at any other process.  That is,
if you wanted to re-use the packed buffer, you would say so and potentially
pay the price of a more general packing and unpacking procedure, but
everything would be safe, and maximally efficient when you specified the
process. 

Rusty & Bill


----- End Included Message -----

From owner-mpi-comm@CS.UTK.EDU Thu Jan 27 13:04:59 1994
Received: from CS.UTK.EDU by netlib2.cs.utk.edu with ESMTP (8.6.4/2.8t-netlib)
	id NAA07978; Thu, 27 Jan 1994 13:04:58 -0500
Received: from localhost by CS.UTK.EDU with SMTP (8.6.4/2.8s-UTK)
	id NAA19191; Thu, 27 Jan 1994 13:03:58 -0500
X-Resent-To: mpi-comm@CS.UTK.EDU ; Thu, 27 Jan 1994 13:03:57 EST
Errors-to: owner-mpi-comm@CS.UTK.EDU
Received: from SSD.intel.com by CS.UTK.EDU with SMTP (8.6.4/2.8s-UTK)
	id NAA19182; Thu, 27 Jan 1994 13:03:54 -0500
From: <prp@ssd.intel.com>
Received: from nautilus.ssd.intel.com by SSD.intel.com (4.1/SMI-4.1)
	id AA00547; Thu, 27 Jan 94 10:02:28 PST
Message-Id: <9401271802.AA00547@SSD.intel.com>
To: Rusty Lusk <lusk@mcs.anl.gov>
Cc: Rolf.Hempel@gmd.de (Rolf Hempel),
        Tony Skjellum <tony@aurora.cs.msstate.edu>, mpi-comm@CS.UTK.EDU,
        prp@ssd.intel.com
Subject: Re: Packing/unpacking routines 
In-Reply-To: Your message of "Thu, 27 Jan 94 10:07:12 CST."
             <199401271607.KAA19553@antares.mcs.anl.gov> 
Date: Thu, 27 Jan 94 10:02:22 -0800

Both Rolf and Tony make good points. I think Tony's comment that the
communicator can make it all work is perhaps a little too restrictive of the
implementation space. I propose we consider the following two restrictions:

1. The first call to pack or unpack for a new buffer area must have
size_so_far equal to zero. That way, the implementation can be guaranteed a
place to put a single generic representation descriptor if it wants to.

2. The calls to unpack for a particular buffer must be made with the same
datatypes and counts as the calls to pack that built the buffer. For instance,
if you pack an int and a bunch of floats this would be correct:

	pack the int
	pack the floats

	unpack the int
	unpack the floats

while this would be erroneous:

	pack the int and the floats

	unpack the int
	unpack the floats.

This way the implementation could put a representation descriptor in for each
pack call but wouldn't have to put in a marker for every element.

I like the first restriction because it doesn't constrict the application
programmer in any meaningful way. I don't know that the second restriction is
so good, but it does place a pretty powerful constraint on the use of pack and
unpack that might keep some implementations out of trouble.

As a separate issue, I would avoid the use of the <inout> size_so_far by
splitting it into an <in> start and <out> finish. Doesn't change the code
much, just adds one extra parameter to the list. A reasonable restriction on
the implementation would be that the programmer be allowed to put the same
variable in both positions. Not an issue in the C binding, but must be
mentioned for the FORTRAN binding.

	MPI_PACK( ... , 0, &size_so_far);
	MPI_PACK( ... , size_so_far, &size_so_far);
	MPI_PACK( ... , size_so_far, &size_so_far);

Paul
From owner-mpi-comm@CS.UTK.EDU Thu Jan 27 18:01:51 1994
Received: from CS.UTK.EDU by netlib2.cs.utk.edu with ESMTP (8.6.4/2.8t-netlib)
	id SAA09787; Thu, 27 Jan 1994 18:01:50 -0500
Received: from localhost by CS.UTK.EDU with SMTP (8.6.4/2.8s-UTK)
	id SAA11840; Thu, 27 Jan 1994 18:00:37 -0500
X-Resent-To: mpi-comm@CS.UTK.EDU ; Thu, 27 Jan 1994 18:00:35 EST
Errors-to: owner-mpi-comm@CS.UTK.EDU
Received: from antares.mcs.anl.gov by CS.UTK.EDU with ESMTP (8.6.4/2.8s-UTK)
	id SAA11794; Thu, 27 Jan 1994 18:00:32 -0500
Received: from mcs.anl.gov (donner.mcs.anl.gov [140.221.5.134]) by antares.mcs.anl.gov (8.6.4/8.6.4) with ESMTP id RAA28862; Thu, 27 Jan 1994 17:00:32 -0600
Message-Id: <199401272300.RAA28862@antares.mcs.anl.gov>
To: prp@ssd.intel.com
Cc: mpi-comm@CS.UTK.EDU
Subject: Re: Packing/unpacking routines 
In-reply-to: Your message of "Thu, 27 Jan 1994 10:02:22 PST."
             <9401271802.AA00547@SSD.intel.com> 
Date: Thu, 27 Jan 1994 17:00:29 -0600
From: Rusty Lusk <lusk@mcs.anl.gov>


| 1. The first call to pack or unpack for a new buffer area must have
| size_so_far equal to zero. That way, the implementation can be guaranteed a
| place to put a single generic representation descriptor if it wants to.
| 

Agreed.

| 2. The calls to unpack for a particular buffer must be made with the same
| datatypes and counts as the calls to pack that built the buffer. 

I am not too keen on this one.  It seems like a restriction on the programmer,
who might find that he wants normal packing but incremental unpacking, and
the benefits are not clear to me.

| As a separate issue, I would avoid the use of the <inout> size_so_far by
| splitting it into an <in> start and <out> finish. Doesn't change the code
| much, just adds one extra parameter to the list. A reasonable restriction on
| the implementation would be that the programmer be allowed to put the same
| variable in both positions. Not an issue in the C binding, but must be
| mentioned for the FORTRAN binding.
| 

This seems to me to be going too far in order to avoid inouts.  Here, the
inout variable doesn't come from trying to overload some parameter but because
the caller is holding state for the callee, which makes an inout parameter the
natural thing.  I don't care very much, however.

- Rusty
From owner-mpi-comm@CS.UTK.EDU Fri Jan 28 02:22:49 1994
Received: from CS.UTK.EDU by netlib2.cs.utk.edu with ESMTP (8.6.4/2.8t-netlib)
	id CAA11479; Fri, 28 Jan 1994 02:22:48 -0500
Received: from localhost by CS.UTK.EDU with SMTP (8.6.4/2.8s-UTK)
	id CAA11884; Fri, 28 Jan 1994 02:22:01 -0500
X-Resent-To: mpi-comm@CS.UTK.EDU ; Fri, 28 Jan 1994 02:21:59 EST
Errors-to: owner-mpi-comm@CS.UTK.EDU
Received: from gmdzi.gmd.de by CS.UTK.EDU with SMTP (8.6.4/2.8s-UTK)
	id CAA11877; Fri, 28 Jan 1994 02:21:55 -0500
Received: from f1neuman.gmd.de (f1neuman) by gmdzi.gmd.de with SMTP id AA04465
  (5.65c8/IDA-1.4.4 for <mpi-comm@cs.utk.edu>); Fri, 28 Jan 1994 08:20:05 +0100
Received: by f1neuman.gmd.de (AIX 3.2/UCB 5.64/4.03)
          id AA17057; Fri, 28 Jan 1994 08:22:01 GMT
Date: Fri, 28 Jan 1994 08:22:01 GMT
From: Rolf.Hempel@gmd.de (Rolf Hempel)
Message-Id: <9401280822.AA17057@f1neuman.gmd.de>
To: mpi-comm@CS.UTK.EDU
Subject: Re: Packing/unpacking routines
Cc: gmap10@f1neuman.gmd.de

I think the compromise of using the target address MPI_ANY_PROC in cases
where you want to reuse the send buffer is okay. Since the communicator
is still specified, the implementation can choose the canonical
representation within that communicator, which means no data conversion
if all processors have the same data representation. This way the XDR
translation only occurs in heterogeneous systems where the overhead
somehow has to be paid anyway. It would certainly not be acceptable if
XDR had to be used in every call to a pack/unpack routine.

Paul made a valid point with his suggestion to use two arguments for
size_so_far instead of an inout argument, since we tried to avoid
inouts for scalar arguments throughout MPI. Nevertheless, I sympathize
with the inout in this case, because this is just a counter which the
user will not be likely to use for other purposes in between calls.
Making it an inout shortens the argument lists. On the other hand,
making it two arguments in almost all cases will lead to the ugly 
Fortran style suggested by Paul (the same actual argument bound to two
function arguments).

I have no strong opinion about Paul's proposed restriction that the
buffer must be unpacked exactly the same way as it was packed.
If the ease of porting codes from existing interfaces to MPI is our
main reason for including the buffering routines, then this restriction
would not be too bad, because that's exactly how you would use them,
anyway. However, together with Rusty I don't see the benefits resulting
from that restriction. Could you please explain it to us, Paul?

- Rolf
From owner-mpi-comm@CS.UTK.EDU Fri Jan 28 13:02:45 1994
Received: from CS.UTK.EDU by netlib2.cs.utk.edu with ESMTP (8.6.4/2.8t-netlib)
	id NAA14740; Fri, 28 Jan 1994 13:02:44 -0500
Received: from localhost by CS.UTK.EDU with SMTP (8.6.4/2.8s-UTK)
	id NAA29927; Fri, 28 Jan 1994 13:01:08 -0500
X-Resent-To: mpi-comm@CS.UTK.EDU ; Fri, 28 Jan 1994 13:01:02 EST
Errors-to: owner-mpi-comm@CS.UTK.EDU
Received: from SSD.intel.com by CS.UTK.EDU with SMTP (8.6.4/2.8s-UTK)
	id NAA29916; Fri, 28 Jan 1994 13:00:59 -0500
From: <prp@ssd.intel.com>
Received: from nautilus.ssd.intel.com by SSD.intel.com (4.1/SMI-4.1)
	id AA06928; Fri, 28 Jan 94 09:59:58 PST
Message-Id: <9401281759.AA06928@SSD.intel.com>
To: Rolf.Hempel@gmd.de (Rolf Hempel)
Cc: mpi-comm@CS.UTK.EDU, gmap10@f1neuman.gmd.de, prp@ssd.intel.com
Subject: Re: Packing/unpacking routines 
In-Reply-To: Your message of "Fri, 28 Jan 94 08:22:01 GMT."
             <9401280822.AA17057@f1neuman.gmd.de> 
Date: Fri, 28 Jan 94 09:59:21 -0800


> Date: Fri, 28 Jan 1994 08:22:01 GMT
> From: Rolf.Hempel@gmd.de (Rolf Hempel)
> To: mpi-comm@CS.UTK.EDU
> Subject: Re: Packing/unpacking routines

> I have no strong opinion about Paul's proposed restriction that the
> buffer must be unpacked exactly the same way as it was packed.
> If the ease of porting codes from existing interfaces to MPI is our
> main reason for including the buffering routines, then this restriction
> would not be too bad, because that's exactly how you would use them,
> anyway. However, together with Rusty I don't see the benefits resulting
> from that restriction. Could you please explain it to us, Paul?

No, I can't :-).
I don't see any clear benefits either, unless the first restriction (that
packing start at zero) is rejected. If we are going to restrict use of pack
and unpack for the benefit of the implementation, it seems like an obvious
restriction to propose. It might make implementation of things like strict
type checking easier. But I can't think of anything I would want to do in an
implementation that couldn't be done without the restriction.

So to further explore the specification space let me propose an alternative
anti-restriction, which requires the implementation to be flexible:

-2. An application is allowed to pack and unpack a buffer in any manner as
long as you start at zero and the basic datatypes match.

For example, if you pack a buffer like this:

	pack	2 int
	pack	7 real
	pack	3 real

you can unpack it like this if you want:

		count  type	size_so_far in		size_so_far out
	unpack	   1	int		0			a
	unpack	   1	int		a			b
	unpack	   5	real		b			d
	unpack	   5	real		d			e
	unpack	   1	(1 int, 1 real)	a			c
	unpack	   9	real		c			e
	unpack	   1	(1 int, 5 real)	a			d

Note in this example that parts of the buffer are unpacked more than once
without starting back at zero, and that different ways to unpack ending at the
same place return the same output size_so_far. Any of the unpack calls could
be replaced by unpack_size calls to just get the size_so_far output values.

I can't think of any problems implementing to this spec.

> 
> - Rolf

Paul
From owner-mpi-comm@CS.UTK.EDU Mon Jan 31 02:15:12 1994
Received: from CS.UTK.EDU by netlib2.cs.utk.edu with ESMTP (8.6.4/2.8t-netlib)
	id CAA02251; Mon, 31 Jan 1994 02:15:11 -0500
Received: from localhost by CS.UTK.EDU with SMTP (8.6.4/2.8s-UTK)
	id CAA09809; Mon, 31 Jan 1994 02:14:14 -0500
X-Resent-To: mpi-comm@CS.UTK.EDU ; Mon, 31 Jan 1994 02:14:13 EST
Errors-to: owner-mpi-comm@CS.UTK.EDU
Received: from gmdzi.gmd.de by CS.UTK.EDU with SMTP (8.6.4/2.8s-UTK)
	id CAA09802; Mon, 31 Jan 1994 02:14:11 -0500
Received: from f1neuman.gmd.de (f1neuman) by gmdzi.gmd.de with SMTP id AA05121
  (5.65c8/IDA-1.4.4 for <mpi-comm@cs.utk.edu>); Mon, 31 Jan 1994 08:12:21 +0100
Received: by f1neuman.gmd.de (AIX 3.2/UCB 5.64/4.03)
          id AA16792; Mon, 31 Jan 1994 08:14:16 GMT
Date: Mon, 31 Jan 1994 08:14:16 GMT
From: Rolf.Hempel@gmd.de (Rolf Hempel)
Message-Id: <9401310814.AA16792@f1neuman.gmd.de>
To: mpi-comm@CS.UTK.EDU
Subject: buffering routines
Cc: gmap10@f1neuman.gmd.de

The flexibility in unpacking buffers which Paul outlined in his latest
mail is certainly more than most users would wish for. By incremental
unpacking, the user can decide at every step how to proceed with
unpacking the rest of the buffer. In particular, he or she can encode
a description of the buffer contents at the beginning of the buffer.
So, an unpacking by trial and error does not seem necessary to me.
If this flexibility comes at no price, however, it's fine with me.

On a different vein, in my latest message I argued that the user would
not manipulate the size_so_far argument in between calls to the
unpacking routine, so we could make it an inout. Now it seems that
Paul is our first user who does play with the size_so_far argument.
The users are always more inventive than you immagine!

- Rolf
From owner-mpi-comm@CS.UTK.EDU Tue Feb  8 05:29:23 1994
Received: from CS.UTK.EDU by netlib2.cs.utk.edu with ESMTP (8.6.4/2.8t-netlib)
	id FAA23931; Tue, 8 Feb 1994 05:29:23 -0500
Received: from localhost by CS.UTK.EDU with SMTP (8.6.4/2.8s-UTK)
	id FAA13844; Tue, 8 Feb 1994 05:27:35 -0500
X-Resent-To: mpi-comm@CS.UTK.EDU ; Tue, 8 Feb 1994 05:27:33 EST
Errors-to: owner-mpi-comm@CS.UTK.EDU
Received: from gmdzi.gmd.de by CS.UTK.EDU with SMTP (8.6.4/2.8s-UTK)
	id FAA13801; Tue, 8 Feb 1994 05:27:28 -0500
Received: from f1neuman.gmd.de (f1neuman) by gmdzi.gmd.de with SMTP id AA07836
  (5.65c8/IDA-1.4.4 for <mpi-comm@cs.utk.edu>); Tue, 8 Feb 1994 09:27:17 +0100
Received: by f1neuman.gmd.de (AIX 3.2/UCB 5.64/4.03)
          id AA17063; Tue, 8 Feb 1994 09:27:23 GMT
Date: Tue, 8 Feb 1994 09:27:23 GMT
From: Rolf.Hempel@gmd.de (Rolf Hempel)
Message-Id: <9402080927.AA17063@f1neuman.gmd.de>
To: mpi-comm@CS.UTK.EDU
Subject: pack/unpack routines
Cc: gmap10@f1neuman.gmd.de

After reading Marc's text on pack/unpack routines, I have a few
comments/questions:

1. From the definitions I conclude that it's allowed to use a regular
   send (without packing), and to receive the message into a character
   string with subsequent unpacking. In many cases one will need the
   unpacking on the receiver side only (because the structure of the
   message is encoded in the message), whereas on the sending side
   the standard send will be okay (and saves additional copying). The
   freedom to match a regular send with an unpack-receive will be very
   appreciated by users in those cases. On the other hand, this puts
   some constraint on how the pack/unpack is implemented, because the
   packed buffer must look the same as the byte stream which is
   produced by the regular send. In particular, it seems to me
   that the pack/unpack routines must be an integral part of the
   MPI implementation, and cannot be written as an add-on library.
   Is this our intention, or do I misunderstand anyhting here?

2. On page 69, second paragraph, (at least in my printout) it says that
   "the comm and source arguments in a call to MPI_UNPACK should match
   the arguments previously used to receive the packed buffer."
   Shouldn't we request that the unpack must use the actual source rank
   of the received message? Assume a heterogeneous process group and a
   wildcard receive. Then the unpack operation must know the exact
   source process for deciding on changes in data representations.
   Thus, a wildcard in the unpack source field will not help.

3. We already had the discussion on multiple destinations for a message.
   Marc suggests that in case of dest = MPI_ANY_DEST a common
   interchange format be used. This is only necessary in case of a
   heterogeneous communicator. Since we don't have a proposal for a
   MPI_ANY_COMM, the communicator must be specified explicitely. Thus,
   the implementation can decide to use XDR or not, depending on the
   uniformity of data representations. This will lead to less overhead
   in perhaps 99 percent of applications.

- Rolf
From owner-mpi-comm@CS.UTK.EDU Wed Feb  9 12:00:16 1994
Received: from CS.UTK.EDU by netlib2.cs.utk.edu with ESMTP (8.6.4/2.8t-netlib)
	id MAA10891; Wed, 9 Feb 1994 12:00:15 -0500
Received: from localhost by CS.UTK.EDU with SMTP (8.6.4/2.8s-UTK)
	id LAA25253; Wed, 9 Feb 1994 11:58:14 -0500
X-Resent-To: mpi-comm@CS.UTK.EDU ; Wed, 9 Feb 1994 11:58:12 EST
Errors-to: owner-mpi-comm@CS.UTK.EDU
Received: from watson.ibm.com by CS.UTK.EDU with SMTP (8.6.4/2.8s-UTK)
	id LAA25246; Wed, 9 Feb 1994 11:58:10 -0500
Received: from WATSON by watson.ibm.com (IBM VM SMTP V2R3) with BSMTP id 7949;
   Wed, 09 Feb 94 11:58:11 EST
Received: from YKTVMV by watson.vnet.ibm.com with "VAGENT.V1.0"
          id 4965; Wed, 9 Feb 1994 11:58:09 EST
Received: from snir.watson.ibm.com by yktvmv.watson.ibm.com (IBM VM SMTP V2R3)
   with TCP; Wed, 09 Feb 94 11:58:08 EST
Received: by snir.watson.ibm.com (AIX 3.2/UCB 5.64/930311)
          id AA24620; Wed, 9 Feb 1994 11:58:08 -0500
From: snir@watson.ibm.com (Marc Snir)
Message-Id: <9402091658.AA24620@snir.watson.ibm.com>
To: Rolf.Hempel@gmd.de (Rolf Hempel)
Subject: Re: pack/unpack routines
Cc: mpi-comm@CS.UTK.EDU
In-Reply-To: (Your message of Tue, 08 Feb 94 09:27:23 GMT.)
Date: Wed, 09 Feb 94 11:58:08 EST

Date: Wed, 09 Feb 94 11:58:08 -0500






Date: Tue, 8 Feb 1994 09:27:23 GMT
From: Rolf.Hempel@gmd.de (Rolf Hempel)
Message-Id: <9402080927.AA17063@f1neuman.gmd.de>
To: mpi-comm@CS.UTK.EDU
Subject: pack/unpack routines
Cc: gmap10@f1neuman.gmd.de

After reading Marc's text on pack/unpack routines, I have a few
comments/questions:

1. From the definitions I conclude that it's allowed to use a regular
   send (without packing), and to receive the message into a character
   string with subsequent unpacking. In many cases one will need the
   unpacking on the receiver side only (because the structure of the
   message is encoded in the message), whereas on the sending side
   the standard send will be okay (and saves additional copying). The
   freedom to match a regular send with an unpack-receive will be very
   appreciated by users in those cases. On the other hand, this puts
   some constraint on how the pack/unpack is implemented, because the
   packed buffer must look the same as the byte stream which is
   produced by the regular send. In particular, it seems to me
   that the pack/unpack routines must be an integral part of the
   MPI implementation, and cannot be written as an add-on library.
   Is this our intention, or do I misunderstand anyhting here?

--- It would be quite wasteful to write pack/unpack routines as an
--- add-on library since they need all the derived datatype
--- interpretation machinery that is required for regular
--- communication.  My intention is to have them, indeed, integrated.
--- this requires little additional work, since the default
--- communication mechanism uses pack/unpack in the current
--- Argonne/UMiss/IBM/... implementations.


2. On page 69, second paragraph, (at least in my printout) it says that
   "the comm and source arguments in a call to MPI_UNPACK should match
   the arguments previously used to receive the packed buffer."
   Shouldn't we request that the unpack must use the actual source rank
   of the received message? Assume a heterogeneous process group and a
   wildcard receive. Then the unpack operation must know the exact
   source process for deciding on changes in data representations.
   Thus, a wildcard in the unpack source field will not help.

--- I stand corrected

3. We already had the discussion on multiple destinations for a message.
   Marc suggests that in case of dest = MPI_ANY_DEST a common
   interchange format be used. This is only necessary in case of a
   heterogeneous communicator. Since we don't have a proposal for a
   MPI_ANY_COMM, the communicator must be specified explicitely. Thus,
   the implementation can decide to use XDR or not, depending on the
   uniformity of data representations. This will lead to less overhead
   in perhaps 99 percent of applications.

--- We need a mechanism that does not force the use of XDR, even when
--- communication is between different types of nodes.  Only when
--- the destination type is unknown at pack time, or the same packed
--- message is to be sent to several different destinations, do we
--- want to force the use of a machine indepedent representation,
--- possibly different both form the source and the destination
--- representation.   Therefore, I suggested that the caller
--- explicitly request the use of XDR when it packs, and that the
--- unpack routine similarly ask for use of XDR.  How this request
--- is coded (ANY_SOURCE/ANY_DEST, or ANY_COMM, or ...) is something
--- of secondary importance.


- Rolf

--- Marc
From owner-mpi-comm@CS.UTK.EDU Sat Feb 12 00:09:47 1994
Received: from CS.UTK.EDU by netlib2.cs.utk.edu with ESMTP (8.6.4/2.8t-netlib)
	id AAA00632; Sat, 12 Feb 1994 00:09:46 -0500
Received: from localhost by CS.UTK.EDU with SMTP (8.6.4/2.8s-UTK)
	id AAA11936; Sat, 12 Feb 1994 00:08:00 -0500
X-Resent-To: mpi-comm@CS.UTK.EDU ; Sat, 12 Feb 1994 00:07:59 EST
Errors-to: owner-mpi-comm@CS.UTK.EDU
Received: from antares.mcs.anl.gov by CS.UTK.EDU with ESMTP (8.6.4/2.8s-UTK)
	id AAA11929; Sat, 12 Feb 1994 00:07:57 -0500
Received: from mcs.anl.gov (donner.mcs.anl.gov [140.221.5.134]) by antares.mcs.anl.gov (8.6.4/8.6.4) with ESMTP id XAA05386 for <mpi-comm@cs.utk.edu>; Fri, 11 Feb 1994 23:07:58 -0600
Message-Id: <199402120507.XAA05386@antares.mcs.anl.gov>
To: mpi-comm@CS.UTK.EDU
Subject: Timers for MPI
Date: Fri, 11 Feb 1994 23:07:57 -0600
From: Rusty Lusk <lusk@mcs.anl.gov>

Here are some thoughts on timer functions.  Comments are welcome.

Rusty Lusk


Timers for MPI
==============

A number of users have suggested that MPI provide a mechanism for timing
sections of programs.  While this is not strictly speaking part of message
passing, parallel programmers, perhaps more than others, do a lot of timing,
and have expressed the hope that a portable library like MPI could provide
another portable function that they need.  At the recent European meeting,
users expressed particularly strongly the need for a timing mechanism that was
portable, easy to use, and capable of expressing high resolution.  Both
wall-clock time and process time are needed.

There has been a reluctance on the part of the MPI Forum to define a timing
mechanism, on the grounds that other standards should do so.  A tentative
decision made at the European meeting was that we should mandate that every
MPI implementation provide an appropriate subset of POSIX timer functions.  I
agreed to look into what that might mean precisely.  In this note I survey the
current Unix and POSIX mechanisms from the point of view of portability, ease
of use, and high resolution, and I conclude that none of the existing POSIX
mechanisms really meet these requirements.  I conclude, somewhat reluctantly,
that MPI should define its own, and make a concrete proposal.

POSIX 1003.1-1988  
-----------------

The "time" function for wall-clock time and the "times" function for process
time are what are currently commonly available.

time_t time ( time_t *tloc ) 

fills in the time_t structure with seconds "since the Epoch".  Its resolution
is too low.

clock_t times ( tms *buffer )

fills in at least

    clock_t  tms_utime     (user time)
    clock_t  tms_stime     (system time)

for the process, in the tms structure pointed to by buffer.  It returns the
elapsed time since an arbitrary time in the past.  The type clock_t is defined
to be a long integer, at least on some systems.  The integer represents time
in CLK_TCK-ths of a second, where this number is implementation-dependent, but
is typically a 60th of a second.  Therefore this function is not truly
portable, since the numbers it returns may differ widely on different systems.
It is also not typically high-resolution.

Berkeley
--------

Another common timer is gettimeofday, which is referred to as a "Berkeleyism"
by the POSIX documents.  It is not a standard, but is widely used.

int gettimeofday ( tp, tzp )

where tp points to a structure containing at least

  long seconds;
  long microseconds;

since midnight January 1, 1970, GMT.  The variable tzp points to a time-zone
structure, or is NULL.

The resolution is allowed to vary per implementation, but the values do
represent fixed time intervals.

This is not a POSIX standard, allows for only medium-high resolution, and adds
the unneeded cumbersomeness of the time-zone structure.  (It also becomes
obsolete in the year 2038.)


POSIX P1003.4D 14.1
-------------------

This is the current POSIX draft proposal.

Several calls use the timespec structure:

  time_t  seconds
  long    nanoseconds

where time_t is the current structure used by time(), containing years,
months, days, etc., down to seconds.

Paragraph 14.2.1  - Clocks
--------------------------

int clock_settime(clockid_t, clock_id, struct timespec *tp)
int clock_gettime(clockid_t, clock_id, struct timespec *tp)
int clock_getres(clockid_t, clock_id, struct timespec *tp)

These functions are for setting and getting the value of assorted clocks.  It
is required that all POSIX implementations support at least one clock_id,
called CLOCK_REALTIME.  For this clock, time is measured "since the Epoch".
So this is the POSIX version of gettimeofday() for getting wall-clock time,
and its resolution can be retrieved explicitly.

Paragraph 14.2.2  - Timers
--------------------------

These functions manage timers for measuring process time, but primarily for
managing alarm-type timers and signals.

int timer_create ( clockid_t clock_id, struct sigevent *evp, timer_t *timerid )
int timer_delete ( timer_t timerid )

int timer_settime(timer_t timer_id, int flags, struct itimerspec *value,
                  struct itimerspec *ovalue )
int timer_gettime(timer_t timerid, struct itimerspec *value)
int timer_getoverrun(timer_t timerid )

For example, timer_gettime returns, in the itimerspec structure, the time left
until the specified timer expires.  This is not the kind of timer that the MPI
users are looking for.

For all of these, only the C binding is given in the POSIX documents.  I will
try to find out what Fortran-90 proposes, for example.


Criticism
---------

All of these are cumbersome to use, even in C.  They do provide what is needed
to implement the simple timers that people want, but they don't provide these
functions themselves.

Proposal
--------

   double MPI_Wtime()  returns a floating-point number of seconds,
                       representing elapsed wall-clock time since some time in
                       the past.

   double MPI_Ptime()  returns a floating-point number of seconds,
                       representing elapsed process time since some time in
                       the past.

The "time in the past" is guaranteed not to change during the life of the
process.  The user is responsible for converting large numbers of seconds to
other units if they are preferred.  (Some things are *really* outside the
scope of MPI.)

The Fortran bindings are the same;  the functions return double-precision
floating point numbers.

These functions are portable (return seconds, not "ticks"), allow
high-resolution, and carry no unnecessary baggage.  One would use them like
this:

{
   double starttime, endtime;
   starttime = double MPI_Wtime();
    ....  stuff to be timed  ...
   endtime   = double MPI_Wtime();
   printf("That took %f seconds\n",endtime-starttime);
}

which is what I think the users had in mind.

I suggest these be added to the environmental-inquiry chapter.  Comments and
improvements are welcome.


From owner-mpi-comm@CS.UTK.EDU Mon Feb 14 08:25:13 1994
Received: from CS.UTK.EDU by netlib2.cs.utk.edu with ESMTP (8.6.4/2.8t-netlib)
	id IAA14741; Mon, 14 Feb 1994 08:25:12 -0500
Received: from localhost by CS.UTK.EDU with SMTP (8.6.4/2.8s-UTK)
	id IAA15820; Mon, 14 Feb 1994 08:23:45 -0500
X-Resent-To: mpi-comm@CS.UTK.EDU ; Mon, 14 Feb 1994 08:23:44 EST
Errors-to: owner-mpi-comm@CS.UTK.EDU
Received: from hub by CS.UTK.EDU with SMTP (8.6.4/2.8s-UTK)
	id IAA15799; Mon, 14 Feb 1994 08:23:36 -0500
Received: from tycho.co.uk (tycho.meiko.co.uk) by hub with SMTP id AA02751
  (5.65c/IDA-1.4.4 for mpi-comm@CS.UTK.EDU); Mon, 14 Feb 1994 13:23:23 GMT
Received: by tycho.co.uk (5.0/SMI-SVR4)
	id AA08667; Mon, 14 Feb 1994 13:22:50 +0000
Date: Mon, 14 Feb 1994 13:22:50 +0000
From: jim@meiko.co.uk (James Cownie)
Message-Id: <9402141322.AA08667@tycho.co.uk>
To: mpi-comm@CS.UTK.EDU
In-Reply-To: <199402120507.XAA05386@antares.mcs.anl.gov> (message from Rusty Lusk on Fri, 11 Feb 1994 23:07:57 -0600)
Subject: Re: Timers for MPI


We should make clear that the time values returned are process local,
and that even the epoch for the timers need not be the same on each
node, also that the resolution may differ on different nodes !
This is implicit in the proposal, but should be mentioned explicitly
as a warning point to users.

In other words that it makes no sense to do something like

	read timer on node 0
	broadcast value
	use value as base on all nodes

instead you must do

	gsync
	remember start time on each node
	use local base value

(This is NOT what users want, but it'll be hard to implement better on
a network of workstations ...)

-- Jim 
James Cownie 
Meiko Limited			Meiko Inc.
650 Aztec West			Reservoir Place
Bristol BS12 4SD		1601 Trapelo Road
England				Waltham
				MA 02154

Phone : +44 454 616171		+1 617 890 7676
FAX   : +44 454 618188		+1 617 890 5042
E-Mail: jim@meiko.co.uk   or    jim@meiko.com

From owner-mpi-comm@CS.UTK.EDU Mon Feb 14 08:59:41 1994
Received: from CS.UTK.EDU by netlib2.cs.utk.edu with ESMTP (8.6.4/2.8t-netlib)
	id IAA14904; Mon, 14 Feb 1994 08:59:41 -0500
Received: from localhost by CS.UTK.EDU with SMTP (8.6.4/2.8s-UTK)
	id IAA19208; Mon, 14 Feb 1994 08:58:51 -0500
X-Resent-To: mpi-comm@CS.UTK.EDU ; Mon, 14 Feb 1994 08:58:43 EST
Errors-to: owner-mpi-comm@CS.UTK.EDU
Received: from sun2.nsfnet-relay.ac.uk by CS.UTK.EDU with SMTP (8.6.4/2.8s-UTK)
	id IAA19119; Mon, 14 Feb 1994 08:58:38 -0500
Via: uk.ac.daresbury.cxa; Mon, 14 Feb 1994 13:36:31 +0000
From: "R.J. Allan" <rja@cxa.dl.ac.uk>
Date: Mon, 14 Feb 94 13:36:57 GMT
Message-Id: <6455.9402141336@uk.ac.dl.cxa>
To: lusk@mcs.anl.gov
Cc: mpi-comm@CS.UTK.EDU
In-Reply-To: Rusty Lusk's message of Fri, 11 Feb 1994 23:07:57 -0600 <199402120507.XAA05386@antares.mcs.anl.gov>
Subject: Timers for MPI

I like Rust Lusk's suggestions for MPI_Wtime and MPI_Ptime.

I beleive it is very important to have a fully portable implementation of
such timers for both benchmarking and optimisation purposes and to 
inferface to high level tools for analysis and load balancing...

Robert J. Allan

Advanced Research Computing Group,
Science and Engineering Research Council,
Daresbury Laboratory,
Daresbury,
Warrington, WA4 4AD,
U.K.

'phone +44 925 603207
FAX +44 925 603634

e-mail r.j.allan@cxa.ac.uk
From owner-mpi-comm@CS.UTK.EDU Mon Feb 14 08:59:45 1994
Received: from CS.UTK.EDU by netlib2.cs.utk.edu with ESMTP (8.6.4/2.8t-netlib)
	id IAA14915; Mon, 14 Feb 1994 08:59:45 -0500
Received: from localhost by CS.UTK.EDU with SMTP (8.6.4/2.8s-UTK)
	id IAA19266; Mon, 14 Feb 1994 08:58:54 -0500
X-Resent-To: mpi-comm@CS.UTK.EDU ; Mon, 14 Feb 1994 08:58:49 EST
Errors-to: owner-mpi-comm@CS.UTK.EDU
Received: from sun2.nsfnet-relay.ac.uk by CS.UTK.EDU with SMTP (8.6.4/2.8s-UTK)
	id IAA19162; Mon, 14 Feb 1994 08:58:42 -0500
Via: uk.ac.daresbury.cxa; Mon, 14 Feb 1994 13:37:43 +0000
From: "R.J. Allan" <rja@cxa.dl.ac.uk>
Date: Mon, 14 Feb 94 13:38:06 GMT
Message-Id: <6510.9402141338@uk.ac.dl.cxa>
To: jim@meiko.co.uk
Cc: mpi-comm@CS.UTK.EDU
In-Reply-To: James Cownie's message of Mon, 14 Feb 1994 13:22:50 +0000 <9402141322.AA08667@tycho.co.uk>
Subject: Timers for MPI

I agree with James Cownies comments on the timers - all our software is
programmed to work in this way using local clocks...

Robert J. Allan

Advanced Research Computing Group,
Science and Engineering Research Council,
Daresbury Laboratory,
Daresbury,
Warrington, WA4 4AD,
U.K.

'phone +44 925 603207
FAX +44 925 603634

e-mail r.j.allan@cxa.ac.uk
From owner-mpi-comm@CS.UTK.EDU Thu Feb 17 09:40:51 1994
Received: from CS.UTK.EDU by netlib2.cs.utk.edu with ESMTP (8.6.4/2.8t-netlib)
	id JAA18833; Thu, 17 Feb 1994 09:40:50 -0500
Received: from localhost by CS.UTK.EDU with SMTP (8.6.4/2.8s-UTK)
	id JAA18929; Thu, 17 Feb 1994 09:39:36 -0500
X-Resent-To: mpi-comm@CS.UTK.EDU ; Thu, 17 Feb 1994 09:39:34 EST
Errors-to: owner-mpi-comm@CS.UTK.EDU
Received: from dasher.cs.utk.edu by CS.UTK.EDU with SMTP (8.6.4/2.8s-UTK)
	id JAA18920; Thu, 17 Feb 1994 09:39:33 -0500
From: Jack Dongarra <dongarra@CS.UTK.EDU>
Received:  by dasher.cs.utk.edu (5.61+IDA+UTK-930922/2.7c-UTK)
	id AA06325; Thu, 17 Feb 94 09:39:25 -0500
Date: Thu, 17 Feb 94 09:39:25 -0500
Message-Id: <9402171439.AA06325@dasher.cs.utk.edu>
To: mpi-comm@CS.UTK.EDU
Subject: draft agenda for mpi meeting

Below is a draft agenda for the MPI meeting next week.
If you would like to see other items added to the list
please send them to me.

Jack




          MPI Draft Agenda 2/23-25/1993

Wednesday

 1:30  Report on Comments to the Draft (D. Walker) 
 2:30  Subcommittee reports on proposed changes 
 6:00  Dinner 

Thursday

 9:00  Subcommittee reports on proposed changes (continued)
12:00  Lunch (provided) 
 1:00  Approval of changes 
 6:00  Dinner (Somewhere in downtown Knoxville)

        
Friday 

 9:00  Approval of changes (continued)
10:00  Reference Implementation (R. Lusk) 
10:30  MPI Book(s) (S. Otto) 
11:00  Discussion of MPI2 

We will be collecting the $75 registration fee as usual.
From owner-mpi-comm@CS.UTK.EDU Thu Feb 17 10:11:05 1994
Received: from CS.UTK.EDU by netlib2.cs.utk.edu with ESMTP (8.6.4/2.8t-netlib)
	id KAA19133; Thu, 17 Feb 1994 10:11:04 -0500
Received: from localhost by CS.UTK.EDU with SMTP (8.6.4/2.8s-UTK)
	id KAA20841; Thu, 17 Feb 1994 10:10:34 -0500
X-Resent-To: mpi-comm@CS.UTK.EDU ; Thu, 17 Feb 1994 10:10:32 EST
Errors-to: owner-mpi-comm@CS.UTK.EDU
Received: from antares.mcs.anl.gov by CS.UTK.EDU with ESMTP (8.6.4/2.8s-UTK)
	id KAA20826; Thu, 17 Feb 1994 10:10:28 -0500
Received: from godzilla (godzilla.mcs.anl.gov [140.221.5.136]) by antares.mcs.anl.gov (8.6.4/8.6.4) with ESMTP id JAA25943 for <mpi-comm@cs.utk.edu>; Thu, 17 Feb 1994 09:10:30 -0600
From: William Gropp <gropp@mcs.anl.gov>
Date: Thu, 17 Feb 1994 09:09:14 -0600
Message-Id: <199402171509.JAA03394@godzilla>
To: mpi-comm@CS.UTK.EDU
Subject: Environmental Inquiry Draft

Here is the updated Environment chapter.  It contains a number of points for
discussion at next week's meeting.
Bill

%
% Updated to include comments from MPI goes to Europe...
%
% Here it is.  I think I've handled the typos and problems.  Let me know
% if anything else needs to be done.
% Bill
%
%
\raggedbottom
\newenvironment{discussion}{\ifvmode\else\par\fi\vspace{\discussSpace}%
\begin{small}\narrower{\bf Discussion:}}{\ifvmode\else\par\fi\end{small}%
\vspace{\discussSpace}}

%\def\comm{comm}
%\def\Comm{Communicator}

%\begin{document}
\chapter{MPI Environmental Management}
\label{sec:environment}
\label{chap:environment}

%\footnotetext[1]{Version as of October 14, 1993}
% changed significantly buffer setting and suggesting
% added HOST inquiry
% deleted type decode (because it is still incomplete)

This chapter discusses routines for getting and, where appropriate, setting
various parameters that relate to the MPI implementation and the execution environment.
(such as error handling and communication buffering).
The procedures for entering and leaving the MPI execution environment are also
dexcribed here.

\section{Implementation information}
\label{sec:inquiry-impl}

\subsection{Environmental Inquiries}
\label{subsec:inquiry-inquiry}

The following routines allow to inquire on the execution environment of an MPI program.

\begin{funcdef}{MPI\_GET\_VALID\_TAG\_RANGE ( low, high )}
\funcarg{\OUT}{low}{Smallest valid tag value (integer)}
\funcarg{\OUT}{high}{Largest valid tag value (integer)}
\end{funcdef}

\mpibind{MPI\_Get\_valid\_tag\_range(int~*low, int~*high)}

\mpifbind{MPI\_GET\_VALID\_TAG\_RANGE(LOW, HIGH, IERROR)\fargs INTEGER LOW, HIGH, IERROR}


\noindent
This routine gets the range of valid tags; that is, the user may use any
tag value from \code{low} to \code{high} inclusive.
These values are guaranteed to be unchanging during the execution of an MPI
program. 

\change
\begin{discussion}
After MPI in Europe, there was considerable demand for the two features:
\begin{enumerate}
\item zero is guaranteed to be valid (low \(\le 0 \le\) high).
\item high is guaranteed to be at least 127 (gives a minimum range that users
can count on; virtually everyone expects a larger range).
\end{enumerate}
An alternate proposal is to eliminate \code{low}, requiring that \code{0} be
the minimum value.
\end{discussion}

\begin{funcdef}{MPI\_GET\_PROCESSOR\_NAME( len, name )}
\funcarg{\IN}{len}{Length (in characters) of the space in \code{name}}
\funcarg{\OUT}{name}{A unique specifier for the actual (as
opposed to virtual) node.}
\end{funcdef}

\mpibind{MPI\_Get\_processor\_name(int~len, char~*name)}

\mpifbind{MPI\_GET\_PROCESSOR\_NAME(NAME, IERROR)\fargs CHARACTER*(*) NAME\\INTEGER IERROR}


The name is a character string for maximum flexibility.  From 
this value it must be possible to identify a specific piece of hardware;
possible values include ``processor 9 in rack 4 of mpp.cs.org'' and ``231''
(where 231 is the actual processor number in the running homogeneous system).
A error code of \const{MPI\_UNDEFINED} is allowed but strongly discouraged.
The value of \const{MPI\_MAX\_PROCESSOR\_NAME} is the maximum length required
by \mpifunc{MPI\_GET\_PROCESSOR\_NAME} (including, in the C binding, the
terminating null).

\change
This routine returns the name of the processor on which it was called at the
moment of the call.  This is to allow MPI implementation that do process
migration to return the current processor.  Note that nothing in MPI {\em
requires} or defines process migration; this definition of
\mpifunc{MPI\_GET\_PROCESSOR\_NAME} simply allows such an implementation.


\begin{funcdef}{MPI\_GET\_HOST( comm, rank)}
\funcarg{\IN}{comm}{communicator (handle)}
\funcarg{\OUT}{rank}{rank of {\tt HOST} in group of {\tt comm}; \const{MPI\_PROCNULL} if there is no {\tt HOST} (integer)}
\end{funcdef}

\mpibind{MPI\_Get\_host(MPI\_Comm~comm, int~*rank)}

\mpifbind{MPI\_GET\_HOST(COMM, RANK, IERROR)\fargs INTEGER COMM, RANK, IERROR}


This routine gets the rank of the {\tt HOST} process in the group associated
with communicator {\tt comm}, if there is such.  MPI does not specify what it
means for a process to be a {\tt HOST}, nor does it requires that a {\tt HOST}
exists. 


\subsubsection{Alternative}
\change

A
set of predefined integer-valued attributes is associated with the
communicator
\const{MPI\_COMM\_WORLD} at initialization time.  These define the execution
environment of MPI programs.  The values of these attributes can be
retrieved by
calling \mpifunc{MPI\_GET\_ATTR}.  These attributes cannot be deleted.
The list of predefined attributes keys include
\begin{description}
\item[\const{MPI\_TAG\_UB}]  Upper bound for tag value
\item[\const{MPI\_TAG\_LB}]  Lower bound for tag value (if it is not set to be
zero)
\item[\const{MPI\_HOST}] Host process rank, if such exists,
\const{MPI\_UNDEFINED}, otherwise.
\item[\const{MPI\_SERVER}] Server rank, or 0/1 flag, indicating whether a
server exists (depending on final decision on intercommunicator name servers)
\item[\const{MPI\_IO}] rank of a node that has regular I/O facilities (possibly
myrank).  Nodes in the same communicator may return different values for this
attribute. 
\item[\const{MPI\_ERROR}] error handler type: fatal, noerror, or user defined.
\end{description}

Vendors may add implementation specific attributes (such as node number,
real memory size, virtual memory size, etc.)

\begin{rationale}
(1) Why have a slew of inquiry functions if we already have an attribute
mechanism?

(2) The open ended form of this mechanism allows to easily add attributes.
\end{rationale}

We may still want the \mpifunc{MPI\_GET\_PROCESSOR\_NAME} call, which returns a
string.

\subsection{Buffering}
\label{subsec:inquiry-buffer}
While it is possible to design algorithms that do not require that any
buffering be provided for sending and receiving ``blocking'' messages, many
practitioners expect that the message-passing system will provide some
buffering.  That is, there is often an expectation that the program
fragment, executed by all tasks, 
\begin{verbatim}
MPI_send( buf, size, datatype, destination, tag, comm )
MPI_recv( buf, size, datatype, destination, tag, comm )
\end{verbatim}
\noindent
will execute for messages whose \const{size} is not too large.  
In fact, this code may deadlock at the first \code{MPI\_send}.
The purpose of
this section is to give the user a way to determine what ``too large''
is and to help the implementation provide enough buffering for the user's
need. 

Note that nothing in this section {\em requires\/} an implementation to
provide any buffering; that is, an implementation may define the above program
fragment to be erroneous for any positive value of \const{size}. 

\subsubsection{General buffering parameters}

\begin{funcdef}{MPI\_GET\_BUFFER\_PARAMS( numsend, sizesend, numrecv, sizerecv, totalnumsend, totalsizesend, totalnumrecv, totalsizerecv)}
\funcarg{\OUT}{numsend}{Bound on the number of pending messages with
source at calling process and same destination}
\funcarg{\OUT}{sizesend}{Bound on the total size in bytes of pending
messages with source at calling process and same destination}
\funcarg{\OUT}{numrecv}{Bound on the number of pending messages with
destination at calling process and same source}
\funcarg{\OUT}{sizerecv}{Bound on the total size in bytes of pending
messages with destination at calling process and same source}
\funcarg{\OUT}{totalnumsend}{Bound on the number of pending messages
with source at the calling process and any destination}
\funcarg{\OUT}{totalsizesend}{Bound on the total size in bytes of pending
messages with source at the calling process and any destination}
\funcarg{\OUT}{totalnumrecv}{Bound on the number of pending messages
 from any source with the calling process as destination}
\funcarg{\OUT}{totalsizerecv}{Bound on the total size in bytes of
pending messages from any source with destination at the calling process}
\end{funcdef}

\mpibind{MPI\_Get\_buffer\_params(int~*numsend, int~*sizesend, int~*numrecv, int~*sizerecv, int~*totalnumsend, int~*totalsizesend, int~*totalnumrecv, int~*totalsizerecv)}

\mpifbind{MPI\_GET\_BUFFER\_PARAMS(NUMSEND, SIZESEND, NUMRECV, SIZERECV, TOTALNUMSEDND, TOTALSIZESEN, TOTALNUMRECV, TOTALSIZERECV, IERROR)\fargs INTEGER NUMSEND, SIZESEND, NUMRECV, SIZERECV, TOTALNUMSEDND, TOTALSIZESEN, TOTALNUMRECV, TOTALSIZERECV, IERROR}



A program where at any point in time no process has more then \mpiarg{numsend} pending 
messages sent by it to the same destination, 
no more than \mpiarg{sizesend} bytes of data in pending  
messages sent by it to the same destination, no more than \mpiarg{totalnumsend} 
pending messages sent by it to any destination, 
no more than \mpiarg{totalsizesend} bytes of 
data in pending messages sent by it to any destination, no more than \mpiarg{numrecv}  
pending messages sent to it from the same source, no more than
\mpiarg{sizerecv} bytes in pending messages sent to it from the same
source, no more than \mpiarg{totalnumrecv} pending messages sent to it
 from any source, and no more than \mpiarg{totalsizerecv} bytes in
pending messages sent to it from any source is guaranteed not to
deadlock because of the lack of buffer space for pending messages.

Examples:  

1. Suppose that pending messages are always buffered at the sender, all
buffers are shared, total buffer size at the process is {\tt B}, 
each pending message takes {\tt h} bytes of
storage, in addition to the storage for its data, and no storage is
lost due to fragmentation. Then possible return
values for \mpifunc{MPI\_GET\_BUFFER\_PARAMS} are
{\tt numsend = totalnumsend = k,  sizesend = totalsizesend = B-kh},
and {\tt numrecv = totalnumrecv = sizerecv = totalsizerecv = INT\_MAX},
for some $\tt 0 < k < B/h$.

2. Suppose that messages are always buffered at the receiver, and that a
separate buffer with {\tt C} bytes is allocated for each pair of
communicating processes; entries for pending messages are kept in a
seeparate table, with room for total of {\tt m} pending messages at
each receiving process; the total number of processes is {\tt p}, and
no storage is lost due to fragmentation.
Then possible return values for \mpifunc{MPI\_GET\_BUFFER\_PARAMS} are
{\tt sendcount = totalsendcount = sendsize = totalsendsize =
INT\_MAX, recvcount = totalrecvcount = m, recsize = C} and
{\tt totalrecvsize = (p-1)$\times$C}.

The call may return the value \const{MPI\_UNDEFINED} in any argument.
If this is the case, then the MPI implementation makes no guarantee
about buffering.

Some implementations may be able to adjust their buffering.  In
addition, since the parameters returned by
\mpifunc{MPI\_GET\_BUFFER\_PARAMS} represent a guarantee about a particular
choice of number of buffers, it may not guarantee buffering that it can
in fact perform.  Thus, in example 1 above, the implementation picks
an arbitrary value for {\tt k}, trading off number of messages for
total message size, rather than letting the user make this trade-off.
In order to allow the MPI user to inquire about a
specific buffering need, the routine \mpifunc{MPI\_SUGGEST\_BUFFER\_PARAMS}
is provided.



\begin{funcdef}{MPI\_SUGGEST\_BUFFER\_PARAMS( numsend, sizesend, numrecv, sizerecv, totalnumsend, totalsizesend, totalnumrecv, totalsizerecv, flag)}
\funcarg{\IN}{numsend}{Bound on number of  pending messages with source at calling process and same destination}
\funcarg{\IN}{sizesend}{Bound on  total size in bytes of pending messages with source at calling process and same destination}
\funcarg{\IN}{numrecv}{Bound on the number of pending messages with destination at calling process and same source}
\funcarg{\IN}{sizerecv}{Bound on total size in bytes of pending messages with destination at calling process and same source}
\funcarg{\IN}{totalnumsend}{Bound on the number of pending messages with source at the calling process and any destination}
\funcarg{\IN}{totalsizesend}{Bound on total size in bytes of pending messages with source at the calling process and any destination}
\funcarg{\IN}{totalnumrecv}{Bound on the number of pending messages from any source with the calling process as destination}
\funcarg{\IN}{totalsizerecv}{Bound on the total size in bytes of pending messages from any source with destination at the calling process}
\funcarg{\OUT}{flag}{\const{TRUE} if the suggestion was accepted,
\const{FALSE}, otherwise}
\end{funcdef}

\mpibind{MPI\_Suggest\_buffer\_params(int~numsend, int~sizesend, int~numrecv, int~sizerecv, int~totalnumsend, int~totalsizesen, int~totalnumrecv, int~totalsizerecv, int~*flag)}

\mpifbind{MPI\_SUGGEST\_BUFFER\_PARAMS(NUMSEND, SIZESEND, NUMRECV, SIZERECV, TOTALNUMSEND, TOTALSIZESEN, TOTALNUMRECV, TOTALSIZERECV, FLAG, IERROR)\fargs INTEGER NUMSEND, SIZESEND, NUMRECV, SIZERECV, TOTALNUMSEND, TOTALSIZESEN, TOTALNUMRECV, TOTALSIZERECV, IERROR \\ LOGICAL FLAG}

If a value of true is returned in \mpiarg{flag} then it is as if the
values provided by the user in \mpifunc{MPI\_SUGGEST\_BUFFER\_PARAMS}
were returned by a call to \mpifunc{MPI\_GET\_BUFFER\_PARAMS}: the
user is guaranteed that no deadlock will occur due to lack of buffers,
provided it never exceeds the limitations on number and size of
pending messages implied by these parameters.
  
This routines allows the user to tell the MPI implementation that a
certain amount of buffering would be desireable,  The MPI
implementation is not required to provide such buffering.

It is expected that a common use of these routines will be
\begin{verbatim}
MPI_Get_buffer_params( &sendnum, &sendsize, ... );
if (sendsize < buffer_needed) {
    fprintf( stderr, "Program requires more buffering than is available\n" );
    MPI_Abort( 1 );
    }
else
    exploit buffering
\end{verbatim}
This allows a program to fail rather than deadlock.  It is also possible
for a program to switch to a different algorithm that requires less
or no buffering.

Another use is to inform the MPI implementation of the buffer space desires of
the application:
\begin{verbatim}
MPI_Suggest_buffer_params( 1, buffer_needed, 1, buffer_needed, 0, 0, 0, 
                                                               0, &flag );
if (flag) {
    exploit buffering
    }
else {
    fprintf( stderr, "Program requires more buffering than is available\n" );
    MPI_abort( 1 );
    }
\end{verbatim}

\discuss{An implementation is free to accept suggestions only after
\mpifunc{MPI\_INIT} and before any MPI call that performs any
communication.  It is always correct to call
\mpifunc{MPI\_SUGGEST\_BUFFER\_PARAMS} after \mpifunc{MPI\_INIT}.}

\discuss{
These functions are complex (eight parameters), and still do not provide an
accurate information on an implementation (do nonblocking messages share buffer
space with blocking ones?  How many messages are generated by collective
communications?  Or communicator generating calls?)   Are these
functions really
useful, as a ``noop'' implementation is legitimate? especially if we
have packing/unpacking?

The generic attribute mechanism can be used for these communicator parameters,
if we wish to do so.  I.e., add eight buffering attributes to each
communicator,
that can be queried and sometimes modified.
Problems with this approach are that the eight-parameter model allows the
values to be coupled (messages traded against buffer space).

User comments at MPI in Europe were extremely negative about MPI not mandating
large amounts of buffering.  

Many users also read this as mandating no buffering; this caused a great deal
of confusion.
}

\subsubsection{Application provided buffering}

An application program can optionally provide space for 
MPI's use in buffering message data via the following call:

%
%\begin{funcdef}{MPI\_USER\_SPECIFIES\_BUFFER( comm, b, t, flag )}
%\funcarg{\IN}{comm}{ is a communicator with which a 
                         %buffer is to be associated}
%\funcarg{\IN}{b}{the length of the buffer, in bytes}
%\funcarg{\IN}{t}{the number of blocking sends that can be outstanding
%while sharing this buffer}
%\funcarg{\OUT}{flag}{indicates whether the request was successful.  If
%the call is not successful, flag indicates why by using
%\code{MPI\_TOO\_LARGE} for \code{b} to large and \code{MPI\_TOO\_MANY}
%for \code{t} too large.  If both \code{b} and \code{t} are too large, an
%implemtation is free to return either \code{MPI\_TOO\_LARGE} or
%\code{MPI\_TOO\_MANY}.}
%\end{funcdef}
%
%\mpibind{MPI\_User\_specifies\_buffer(MPI\_Comm~comm, int b, int t, int *flag )}
%
%\mpifbind{MPI\_USER\_SPECIFIES\_BUFFER(COMM, B, T, FLAG)\fargs INTEGER COMM, B, T, FLAG}


\begin{funcdef}{MPI\_USER\_SPECIFIES\_BUFFER( comm, buffer, size)}
\funcarg{\IN}{comm}{ is a communicator with which the buffer is to be
associated (handle)}
\funcarg{\IN}{buffer}{initial buffer address (choice)}
\funcarg{\IN}{size}{buffer size, in bytes (integer)} 
\end{funcdef}

\mpibind{MPI\_User\_specifies\_buffer(MPI\_Comm~comm, void*~buffer, int~size)}

\mpifbind{MPI\_USER\_SPECIFIES\_BUFFER(COMM, BUFFER, SIZE, IERROR)\fargs <type> BUFFER(*) \\ INTEGER COMM, SIZE, IERROR}


If \mpifunc{MPI\_USER\_SPECIFIES\_BUFFER} is called and the value returned in
\code{flag} is \code{MPI\_OK}, then for subsequent
regular sends using the specified communicator, MPI must
provide as much safety {\em as if\/} outgoing message data were
buffered by the sending process, in the specified buffer space,
using a circular contiguous-space allocation policy.
%Following the call to \mpifunc{MPI\_USER\_SPECIFIES\_BUFFER}, the
%application is not permitted to access the buffer until the
%corresponding communicator has been freed.
The buffer is managed by MPI.

Access to the provided buffer space is not inherited by
communicators derived from the initially specified one.
 
\implement{      
One approach is for MPI to simply transform all blocking sends
on the specified communicator into 
\begin{itemize}
\item copy data to buffer space
\item issue non-blocking send from the buffer copy
\item return to application
\item check completion on subsequent MPI call(s)
\end{itemize}

No doubt many optimizations within MPI are possible---the
proposal just requires that MPI provide at least this much
safety.

%The reason that MPI provides the buffer rather than the user is that once the
%user frees a communicator, only MPI knows when all data-structures associated
%with that communicator can be freed.
}

Note that collective communications and other nonlocal operations will
share suggested or user-supplied communication buffers with point to point communication.

\discuss{
When a communicator associated with a user buffer is freed, then
\mpifunc{MPI\_COMM\_FREE} should not return until all
pending communications have terminated.  Thus, after it returns, the
buffer can be freed.
}

\section{Error handling}
\label{sec:inquiry-error}


This section contains the suggested POSIX binding for error handling in
MPI.  MPI implementations that do not run in a POSIX-compliant
environment may need to use alternative mechanisms.

An MPI implementation cannot or may choose not to handle some errors
that occur during MPI calls.  These can include errors that generate
exceptions or traps, such as floating point errors or access
violations.
The set of errors that are handled by MPI is implementation-dependent.
Each such error generates an {\bf MPI exception}.

A user can associate an error handler with a communicator.  The
specified error handling routine will be used for any MPI exception
that occurs during a call to MPI for a communication with this communicator.
MPI calls that are not related to any communicator are considered to
be attached to the communicator \const{MPI\_COMM\_WORLD}.
The attachment of error handlers to communicators is purely local:
different processes may attach different error handlers
to the same communicator.

A newly created communicator inherits the error
handler that is associated with the ``parent'' communicator.
In particular, the user can specify a ``global'' error handler for
all communicators by
associating this handler with the communicator \const{MPI\_COMM\_WORLD}
immediately after initialization.

Several predefined error handlers are available in MPI:
\begin{description}
\item[\const{MPI\_ERRORSFATAL}] The handler, when called, causes the
program to abort on all executing processes.  This has the same effect as if
\mpifunc{MPI\_ABORT} was called by the process that invoked the handler.
\item[\const{MPI\_ERRORSRETURN}] The handler has no effect.
\end{description}

Implementations may provide additional predefined error handlers and
programmers can code their own error handlers.

The error handler
\const{MPI\_ERRORSFATAL} is associated by default with \const{MPI\_COMM\_WORLD}
after initialization.  Thus, if the user chooses not to control error handling,
every error that MPI handles is treated as fatal.
Since (almost) all MPI calls return an error code, a user may choose to handle
errors in its main code, by testing the return code of MPI calls and
executing a
suitable recovery code when the call was not successful.  In such case, the
error handler \const{MPI\_ERRORSRETURN} will be used.   Usually it is more
convenient and more efficient not to test for errors after each MPI call, and
have such error handled by a non trivial MPI error handler.


\discuss{
Do we specify that \const{MPI\_ERRORSFATAL} should
generate a \const{SIGABRT} signal at each executing process?  Is that the
desired effect?  (e.g., so as to allow a debugger to take over.)   Same remark
applies to \mpifunc{MPI\_ABORT}.
}

An MPI error handler is an opaque object, which is accessed by a handle.
MPI calls are provided to create new error handlers, to associate error
handlers with communicators, and to test which error handler is associated with
a communicator.

\begin{funcdef}{MPI\_CREATE\_ERRHANDLER( function, errhandler )}
\funcarg{\IN}{function}{user defined error handling procedure}
\funcarg{\OUT}{errhandler}{MPI error handler (handle)}
\end{funcdef}

\mpibind{MPI\_Create\_errhandler(MPI\_Handlerfunction~*function,
MPI\_Errhandler~*errhandler)}

\mpifbind{MPI\_CREATE\_ERRHANDLER(FUNCTION, HANDLER, IERROR)\fargs
EXTERNAL FUNCTION \\ INTEGER ERRHANDLER, IERROR}
Register the user routine \mpiarg{handler\_function} for use as an MPI
exception handler.  Returns in \mpiarg{errhandler} a handle to the registered
exception handler.

\implement{
The handle returned may contain the address of the error handling routine.
Such call is superfluous in C, which has a referencing operator, but is
necessary in Fortran.}

The user routine should be a C function of type \const{MPI\_Handler\_function},
which is defined as

\begin{verbatim}
typedef void (MPI_Handler_function)(MPI_Comm, int , ...);
\end{verbatim}
The first argument is the communicator in use.  The second is
the error code to be returned by the MPI routine.
The remaining arguments are ``\code{varargs}'' arguments
whose number and meaning is implementation-dependent.  An implementation
should clearly document these arguments.

\begin{rationale}
The variable argument list is provided because it provides an
ANSI-standard hook for providing additional information to the error
handler; without this hook, ANSI C prohibits additional arguments.
\end{rationale}

\begin{funcdef}{MPI\_SET\_ERRHANDLER( comm, errhandler )}
\funcarg{\IN}{comm}{communicator to set the error handler for (handle)}
\funcarg{\IN}{errhandler}{new MPI error handler for communicator (handle)}
\end{funcdef}

\mpibind{MPI\_Set\_errhandler(MPI\_Comm~comm, MPI\_Errhandler~errhandler)}

\mpifbind{MPI\_SET\_ERRHANDLER(COMM, ERRHANDLER, IERROR)\fargs INTEGER
COMM, ERRHANDLER, IERROR}

Associates the new error handler \mpiarg{errorhandler}
with communicator \mpiarg{comm} at the calling process.

\begin{funcdef}{MPI\_GET\_ERRHANDLER( comm, errhandler )}
\funcarg{\IN}{comm}{communicator to get the error handler from (handle)}
\funcarg{\OUT}{errhandler}{MPI error handler
currently associated with communicator (handle)}
\end{funcdef}

\mpibind{MPI\_Get\_errhandler(MPI\_Comm~comm, MPI\_Errhandler~*errhandler)}

\mpifbind{MPI\_GET\_ERRHANDLER(COMM, ERRHANDLER, IERROR)\fargs INTEGER
COMM, ERRHANDLER, IERROR}

Returns in \mpiarg{errhandler} (a handle to) the error handler that is
currently
associated with communicator \mpiarg{comm}.

Example:
A library function may register at its entry point the current error
handler for a
communicator, set its own private error handler for this communicator, and
restore before exiting the previous error handler.

\discuss{
One may have the function \mpifunc{MPI\_SET\_ERRHANDLER} both set a new error
handler and return the previous error handler (the function would have two
errhandler arguments), thus saving one call when both \_GET and \_SET are
needed.  But, in any case, one needs both the old and new error-handlers.
}

\begin{funcdef}{MPI\_ERROR\_STRING( errorcode, len, string )}
\funcarg{\IN}{errorcode}{Error code returned by an MPI routine}
\funcarg{\IN}{len}{Length of \const{string}}
\funcarg{\OUT}{string}{Text that corresponds to the \const{errorcode}}
\end{funcdef}

\mpibind{MPI\_Error\_string(int~errorcode, int~len, char~*string)}

\mpifbind{MPI\_ERROR\_STRING(ERRORCODE, STRING, IERROR)\fargs
INTEGER ERRORCODE, IERROR \\ CHARACTER(*) STRING}

Returns the error string associated with an error code.

\begin{rationale}
The form of this proposal was chosen to make the Fortran and C
bindings similar.  A version that returns a pointer to a string has two
difficulties.  First, the return string must be statically allocated and
different for each error message (allowing the pointers returned by
successive calls to \const{MPI\_ERROR\_STRING} to point to the correct
message.  Second, in Fortran, a function declared as returning
\const{CHARACTER*(*)} can not be referenced in, for example, a
\const{PRINT} statement.
\end{rationale}

\section{Error codes}
MPI specifies some of the error return values that an MPI implementation may
return.  This is not an exhaustive list, but MPI implementations must use
these where appropriate. \change
\begin{center}
\begin{tabular}{ll}
MPI\_ERR\_BUFFER            &Invalid buffer pointer                     \\
MPI\_ERR\_COUNT             &Invalid count argument                     \\
MPI\_ERR\_TYPE              &Invalid datatype argument                  \\
MPI\_ERR\_TAG 	          &Invalid tag argument \\
MPI\_ERR\_COMM              &Invalid communicator\\
MPI\_ERR\_RANK              &Invalid rank \\
MPI\_ERR\_REQUEST           &Invalid request (handle)\\
MPI\_ERR\_ROOT              &Invalid root \\
MPI\_ERR\_GROUP             &Invalid group\\
MPI\_ERR\_OP                &Invalid operation \\
MPI\_ERR\_TOPOLOGY          &Invalid topology \\
MPI\_ERR\_DIMS              &Invalid dimension argument \\
MPI\_ERR\_ARG               &Invalid argument of some other kind \\
MPI\_ERR\_UNKNOWN           &Unknown error \\
MPI\_ERR\_TRUNCATE          &Message truncated on receive\\
MPI\_ERR\_INTERN            &Internal MPI error\\
MPI\_ERR\_LASTCODE          &Last standard error code\\
\end{tabular}
\end{center}

\section{Timers}
MPI defines two timers.  These timers are specified even though they are not
``message-passing'' because timing parallel programs is important in
``performance debugging'' and because existing timers (both in POSIX
1003.1-1988 and 1003.4D 14.1 and in Fortran 90) are either inconvenient or do
not provide adequate access to high-resolution timers.  

\begin{funcdefna}{MPI\_WTIME()}
\end{funcdefna}
\mpibind{double MPI\_Wtime()}
\mpifbind{DOUBLE PRECISION MPI\_WTIME()}
returns a floating-point number of seconds,
representing elapsed wall-clock time since some time in
the past.

\begin{funcdefna}{MPI\_PTIME()}
\end{funcdefna}
\mpibind{double MPI\_Ptime()}
\mpifbind{DOUBLE PRECISION MPI\_PTIME()}
returns a floating-point number of seconds,
representing elapsed process time since some time in
the past.

The ``time in the past'' is guaranteed not to change during the life of the
process.  The user is responsible for converting large numbers of seconds to
other units if they are preferred.  

These functions are portable (return seconds, not "ticks"), allow
high-resolution, and carry no unnecessary baggage.  One would use them like
this:

\begin{verbatim}
{
   double starttime, endtime;
   starttime = double MPI_Wtime();
    ....  stuff to be timed  ...
   endtime   = double MPI_Wtime();
   printf("That took %f seconds\n",endtime-starttime);
}
\end{verbatim}

The times returned by these routines are local to the node that called them.
There is no requirement that different nodes return ``the same time.''  

\begin{discussion}
User's at MPI in Europe were strongly in favor of having timing functions.
\end{discussion}

\section{Startup}
\label{sec:inquiry-startup}
One goal of MPI is to achieve {\em source code portability}.  By this we mean
that a program written using MPI and complying with the relevant language
standards is portable as written, and must not require any source code changes
when moved from one system to another.  This explicitly does {\em not\/} say
anything about how an MPI program is started or launched from the command
line, nor what the user must do to set up the environment in which an MPI
program will run.  However, an implementation may require some setup to be
performed before other MPI routines may be called.  To provide for this, MPI
includes an initialization routine \mpifunc{MPI\_INIT}.


\begin{funcdefna}{MPI\_INIT()}
\end{funcdefna}

\mpibind{MPI\_Init(int~*argc, char~**argv)}

\mpifbind{MPI\_INIT(IERROR)\fargs INTEGER IERROR}


This routine must be called before any other MPI routine.  It must be called
at most once; subsequent calls are erroneous (see \mpifunc{MPI\_INITIALIZED}).

All MPI programs must contain a call to \mpifunc{MPI\_init}; this routine must be
called before any other MPI routine (apart from \code{MPI\_INITIALIZED}) is
called. 
The version for ANSI C accepts the \const{argc} and \const{argv} that are
provided by the arguments to \code{main}:
\begin{verbatim}
MPI_init( argc, argv );
\end{verbatim}
The Fortran version takes no arguments.  

\discuss{Note that POSIX includes a {\em requirement\/} that access to the
command line be provided to Fortran programs (see 8.9 in Std 1003.9--1992).

MPI implementations that read command-line arguments should insure
the the MPI command-line arguments are clearly identifed, for example, by
prefixing them with \code{-mpi}.

Note the use of the {\em address} of \code{argc} in the C binding of
\mpifunc{MPI\_INIT}.  This is to allow \mpifunc{MPI\_INIT} to remove those
arguments that it uses from the argument list.
}

\begin{funcdefna}{MPI\_FINALIZE()}
\end{funcdefna}

\mpibind{MPI\_Finalize()}

\mpifbind{MPI\_FINALIZE(IERROR)\fargs INTEGER IERROR}


This routines cleans all MPI state.  Once this routine is called, no MPI
routine (even \mpifunc{MPI\_INIT}) may be called.
The user must ensure that all pending communications
involving a process complete before the process calls \mpifunc{MPI\_FINALIZE}.

\begin{funcdef}{MPI\_INITIALIZED( flag )}
\funcarg{\OUT}{flag}Flag is true if \mpifunc{MPI\_INIT} has been called and false
otherwise. 
\end{funcdef}

\mpibind{MPI\_Initialized(int~*flag)}

\mpifbind{MPI\_INITIALIZED(FLAG, IERROR)\fargs LOGICAL FLAG \\ INTEGER IERROR}



This routine may be used to determine whether \mpifunc{MPI\_INIT} has been
called.  It is the {\em only} routine that may be called before
\mpifunc{MPI\_INIT} is called. 

\begin{funcdef}{MPI\_ABORT( comm, errorcode )}
\funcarg{\IN}{comm}{communicator of tasks to abort}  
\funcarg{\IN}{errorcode}{error code to return to invoking environment}  
\end{funcdef}

\mpibind{MPI\_Abort(MPI\_Comm~comm, int~errorcode)}

\mpifbind{MPI\_ABORT(COMM, ERRORCODE, IERROR)\fargs INTEGER COMM, ERRORCODE, IERROR}



This routine makes a ``best attempt'' to abort all tasks in the group
of \mpiarg{comm}.
This function does not require that the invoking environment take any action
with the error code.  However, a Unix or POSIX environment should handle this
as a \code{return errorcode} from the main program or an
\code{abort(errorcode)}. 

MPI implementations are required to define the behavior of
\mpifunc{MPI\_ABORT} at least for 
a \code{comm} of \const{MPI\_COMM\_WORLD}.


From owner-mpi-comm@CS.UTK.EDU Thu Feb 17 14:03:08 1994
Received: from CS.UTK.EDU by netlib2.cs.utk.edu with ESMTP (8.6.4/2.8t-netlib)
	id OAA21239; Thu, 17 Feb 1994 14:03:08 -0500
Received: from localhost by CS.UTK.EDU with SMTP (8.6.4/2.8s-UTK)
	id OAA08123; Thu, 17 Feb 1994 14:01:56 -0500
X-Resent-To: mpi-comm@CS.UTK.EDU ; Thu, 17 Feb 1994 14:01:54 EST
Errors-to: owner-mpi-comm@CS.UTK.EDU
Received: from antares.mcs.anl.gov by CS.UTK.EDU with ESMTP (8.6.4/2.8s-UTK)
	id OAA08116; Thu, 17 Feb 1994 14:01:52 -0500
Received: from godzilla (godzilla.mcs.anl.gov [140.221.5.136]) by antares.mcs.anl.gov (8.6.4/8.6.4) with ESMTP id NAA03987; Thu, 17 Feb 1994 13:01:50 -0600
From: William Gropp <gropp@mcs.anl.gov>
Date: Thu, 17 Feb 1994 13:01:48 -0600
Message-Id: <199402171901.NAA23335@godzilla>
To: D.Lamptey@sheffield.ac.uk
Cc: mpi-comm@CS.UTK.EDU
In-reply-to: <9402171637.AA00531@ntsc.shef.ac.uk> (D.Lamptey@sheffield.ac.uk)
Subject: Re: Environmental Inquiry Draft

I've placed a compressed postscript version of the inquiry chapter in
pub/mpi/inquiry.ps.Z on info.mcs.anl.gov .
Bill
From owner-mpi-comm@CS.UTK.EDU Thu Mar 24 22:48:51 1994
Received: from CS.UTK.EDU by netlib2.cs.utk.edu with ESMTP (cf v2.8t-netlib)
	id WAA14917; Thu, 24 Mar 1994 22:48:51 -0500
Received: from localhost by CS.UTK.EDU with SMTP (cf v2.8s-UTK)
	id WAA21780; Thu, 24 Mar 1994 22:46:44 -0500
X-Resent-To: mpi-comm@CS.UTK.EDU ; Thu, 24 Mar 1994 22:46:43 EST
Errors-to: owner-mpi-comm@CS.UTK.EDU
Received: from Aurora.CS.MsState.Edu by CS.UTK.EDU with SMTP (cf v2.8s-UTK)
	id WAA21773; Thu, 24 Mar 1994 22:46:42 -0500
Received:  by Aurora.CS.MsState.Edu (4.1/6.0s-FWP);
	   id AA12662; Thu, 24 Mar 94 21:43:50 CST
Date: Thu, 24 Mar 94 21:43:50 CST
From: Tony Skjellum <tony@Aurora.CS.MsState.Edu>
Message-Id: <9403250343.AA12662@Aurora.CS.MsState.Edu>
To: mpi-comm@CS.UTK.EDU
Subject: fyi

From ned1@Ra.MsState.Edu Thu Mar 24 20:33:50 1994
Received: from Walt.CS.MsState.Edu by Aurora.CS.MsState.Edu (4.1/6.0s-FWP);
	   id AA12616; Thu, 24 Mar 94 20:33:50 CST
Received: from Tut.MsState.Edu by Walt.CS.MsState.Edu (4.1/6.0s-FWP);
	   id AA26642; Thu, 24 Mar 94 20:36:33 CST
Received: from Isis.MsState.Edu (ned1@Isis.MsState.Edu [130.18.80.11]);
           by Tut.MsState.Edu using ESMTP (8.6.7/6.5m-FWP);
           id UAA21050; Thu, 24 Mar 1994 20:36:28 -0600
From: Nathan Doss <ned1@Ra.MsState.Edu>
Received:  by Isis.MsState.Edu (8.6.7/6.0c-FWP);
	   id UAA11791; Thu, 24 Mar 1994 20:36:23 -0600
Date: Thu, 24 Mar 1994 20:36:23 -0600
Message-Id: <199403250236.UAA11791@Isis.MsState.Edu>
To: tony@cs.MsState.Edu, gropp@mcs.anl.gov, lusk@mcs.anl.gov,
        doss@erc.msstate.edu
Subject: LAM
Status: R


>Path: nntp.msstate.edu!darwin.sura.net!howland.reston.ans.net!math.ohio-state.edu!mane.cgrg.ohio-state.edu!tbag.osc.edu!not-for-mail
>From: gdburns@osc.edu (Greg Burns)
>Newsgroups: comp.parallel.pvm
>Subject: Get started with MPI now (s/w available).
>Date: 24 Mar 1994 16:52:43 -0500
>Organization: The Ohio Supercomputer Center
>Lines: 111
>Distribution: world
>Message-ID: <2mt23b$3bk@tbag.osc.edu>
>NNTP-Posting-Host: tbag.osc.edu



Ohio Supercomputer Center (OSC) announces the general release of
LAM, a UNIX cluster implementation of the MPI interprocess communication
standard.  The software is available in source code form under the terms
of the GNU general license (V2).  Distribution is via anonymous ftp from
tbag.osc.edu under pub/lam.

The factory default software supports the following platforms:

Sun 4 (sparc), SunOS 4.1.3
Sun 4 (sparc), Solaris 2.3
SGI IRIX 4.0.5
IBM RS/6000, AIX v3r2
DEC AXP, OSF/1 V1.3

Technical Summary

Key Features

- standard MPI communication
- heterogeneous networks
- micro-kernel, multi-process, modular structure
- hands-on monitoring and control
- easy transition to dedicated h/w
- PVM compatibility
- parallel I/O

Standard MPI Interprocess Communication

The MPI Forum, which included representatives from every end of
the parallel computing community, has specified a complete interface
for message based interprocess communication, named MPI (Message
Passing Interface).  Widespread use of MPI will benefit the general
advancement of parallel processing technology.  The specific semantics
of the communication interface, its perceived popular and future
prospects, need no longer be a factor in choosing an environment
or a vendor for developing message passing applications.  Users
and buyers can focus on other factors such as efficiency of
implementation and related development tools.

Given the breadth of participation in MPI Forum and the depth
of their deliberations (which have been available on netlib),
widespread adoption by vendors and acceptance by users seems
likely.  LAM is a non-proprietary platform for users to evaluate
MPI hands-on and to begin developing MPI applications.

LAM is a full cluster computing environment.  MPI does
not specify file I/O, machine configuration and process management,
so LAM fills in these gaps to form a complete system.

LAM has debugging commands to examine the MPI synchronization
status of processes and messages.

At the time of this initial release, the first MPI specification
has not been finalized.  The implementation for the current release
is confined to the sanctioned MPI subset and is based on the
draft document of Nov. 2, 1993.  LAM's MPI implementation of
MPI will be updated as soon as the final document is released.
We are confident that the current implementation is a very usable
starting point.

PVM Compatibility

LAM also has a library to run PVM 3 applications.  As with
MPI, there are debugging commands to examine the PVM synchronization
status of processes and messages.

Configuration and Process Management

LAM unpacks and installs anywhere.  The user shell's search path
is used to locate the LAM server, utilities and application programs
on every machine.  Configuring a cluster is listing machine names
in a file and invoking a utility.

Process management is completely dynamic.  The user or any process
situated at any machine can run a program residing in any second
machine on any third machine.  NFS is not required.  The user or
any process can kill any other process.

An executable may reside in the target node's file space or LAM can
transfer the file from a third node.

I/O

When NFS or friends are not readily available, LAM has a set of
functions that mirror the POSIX functions and provide remote
access to the filesystem of other machines.

User Interface

LAM's UI is just your usual shell.  There is no special environment,
only a set of utility programs.

Documentation

There are user guides for C and Fortran programmers as well as
a complete set of manual pages covering every function and command program.

-=-

LAM is a subset of Trollius, an environment for UNIX clusters + MPP.
Trollius was originally developed at the Cornell Theory Center.
Trollius is a trademark of The Ohio State University and the Cornell
Research Foundation.

The MPI implementation is based in part on the implementation provided
by Argonne National Laboratory and Mississippi State University.

LAM development was sponsored by OSC, OSU, Cray Research Inc., and
Alex Informatique.

From owner-mpi-comm@CS.UTK.EDU Mon Apr  4 12:32:50 1994
Received: from CS.UTK.EDU by netlib2.cs.utk.edu with ESMTP (cf v2.8t-netlib)
	id MAA15724; Mon, 4 Apr 1994 12:32:50 -0400
Received: from localhost by CS.UTK.EDU with SMTP (cf v2.8s-UTK)
	id MAA16491; Mon, 4 Apr 1994 12:31:02 -0400
X-Resent-To: mpi-comm@CS.UTK.EDU ; Mon, 4 Apr 1994 12:30:58 EDT
Errors-to: owner-mpi-comm@CS.UTK.EDU
Received: from Aurora.CS.MsState.Edu by CS.UTK.EDU with SMTP (cf v2.8s-UTK)
	id MAA16482; Mon, 4 Apr 1994 12:30:57 -0400
Received:  by Aurora.CS.MsState.Edu (4.1/6.0s-FWP);
	   id AA19546; Mon, 4 Apr 94 11:26:22 CDT
Date: Mon, 4 Apr 94 11:26:22 CDT
From: Tony Skjellum <tony@Aurora.CS.MsState.Edu>
Message-Id: <9404041626.AA19546@Aurora.CS.MsState.Edu>
To: mpi-comm@CS.UTK.EDU
Subject: Posting of MPI newsgroup RFD

I have posted the following request for discussion for comp.parallel.mpi,
as we agreed at the last meeting. - Tony Skjellum

Date:  4 Apr 94 16:18:02 GMT
Message-ID: <tony.765476282@aurora.cs.msstate.edu>
Newsgroups: news.announce.newgroups,comp.parallel,comp.parallel.pvm
Subject: RFD: comp.parallel.mpi unmoderated
Summary: An unmoderated newsgroup, analogous to comp.parallel.pvm, is proposed
Keywords: MPI, Message Passing, Unmoderated, Parallel Computers, Clusters

This is a formal Request for Discussion on the creation of a new newsgroup
called "comp.parallel.mpi" (unmoderated).

This announcement is cross-posted to newsgroups whose readers may have
interest in the discussion about the new group; follow-up discussion
will take place in "news.groups".  This RFD has been posted to
news.announce.newgroups, comp.parallel, and comp.parallel.pvm on
April 4, 1994.

Suggestions, comments or problems may also be emailed to me at
<tony@CS.MsState.Edu>.

REQUEST FOR DISCUSSION (THIS IS NOT A VOTE)
-------------------------------------------

NEWSGROUP
  comp.parallel.mpi (unmoderated)

PURPOSE
  The newsgroup 'comp.parallel.mpi' would be a forum for discussing
  issues related to the use and interpretation of MPI (Message Passing
  Interface), an informal standard for writing message-passing
  programs.

  MPI was created by the MPI Forum, a group of University, Industry, and
  National Laboratory representatives including significant international
  representation.  The MPI standard can be obtained from netlib by sending
  the message "send draft-final.ps from mpi" to netlib@ornl.gov.
  Alternatively, one can anonymous ftp to netlib2.cs.utk.edu.

RATIONALE
  Discussion of MPI questions currently has no single home.
  Discussion has appeared in newsgroups such as

        comp.parallel
        comp.parallel.pvm

  A single group will centralize discussion and target the intended
  audience of such posts more accurately.

  It is also expected that there will be a wide audience for this
  newsgroup as a result of the participation by many vendors, national
  labs, and universities in the development of MPI.  

CONTENT
  Appropriate discussion in the group will include both general
  MPI issues, platform-specific questions, and discussion
  comparing MPI to other systems.  Some examples:


  General MPI Issues
        Answers to novices' questions
        Clarification of the standard document
        Exchange of public-domain MPI source code
        Implementation of various applications
        etc.

  Platform-specific issues
        Implementations available
		Peculiarities and bugs found in various implementations
        etc.

  Comparison to other systems
        P4, Express, LINDA, PVM, etc

NAME
  comp.parallel.mpi seems to be most appropriate.

  MPI is to be used on many different architectures and thus doesn't
  fit in any one comp.sys.* hierarchy.  It is not a programming
  language, so comp.lang.* is out; 


NOT MODERATED
  As the new group will be for informal discussion and the quick
  exchange of ideas, no moderator will be necessary.

NEWSGROUP CREATION
  The proposed discussion period will be from the date of original posting
  to May 20, 1994 (excess of 45 days).

  Please post all discussion in news.groups.

  If a consensus is reached by the end of the discussion period,
  a CFV (Call for Votes) will be posted at that time. The voting
  period will last for 21 days.




From owner-mpi-comm@CS.UTK.EDU Thu May  5 08:26:50 1994
Received: from CS.UTK.EDU by netlib2.cs.utk.edu with ESMTP (cf v2.8t-netlib)
	id IAA05304; Thu, 5 May 1994 08:26:50 -0400
Received: from localhost by CS.UTK.EDU with SMTP (cf v2.8s-UTK)
	id IAA11223; Thu, 5 May 1994 08:25:29 -0400
X-Resent-To: mpi-comm@CS.UTK.EDU ; Thu, 5 May 1994 08:25:28 EDT
Errors-to: owner-mpi-comm@CS.UTK.EDU
Received: from pobox.cscs.ch by CS.UTK.EDU with SMTP (cf v2.8s-UTK)
	id IAA11209; Thu, 5 May 1994 08:25:25 -0400
Received: from agno-fddi.cscs.ch by pobox.cscs.ch with SMTP inbound 
          id <19071-0@pobox.cscs.ch>; Thu, 5 May 1994 14:25:19 +0200
Received: from laax.serd.cscs.ch by serd.cscs.ch (5.0/SMI-SVR4) id AA15093;
          Thu, 5 May 1994 14:25:12 --100
Received: by laax.serd.cscs.ch (5.0/SMI-SVR4) id AA08467;
          Thu, 5 May 1994 14:25:24 --100
From: fritsche@serd.cscs.ch (Josef Fritscher)
Message-Id: <9405051225.AA08467@laax.serd.cscs.ch>
Subject: BLACS on top of MPI
To: mpi-comm@CS.UTK.EDU, dongarra@CS.UTK.EDU
Date: Thu, 5 May 1994 14:25:22 +0200 (MET DST)
Reply-To: fritsche@serd.cscs.ch
X-Mailer: ELM [version 2.4 PL23]
Content-Type: text

Hello,

I'd like to ask if anyone is working on a BLACS implementation using 
the MPI standard. Any pointers are highly appreciated.

Regards, and thanks in advance,

Josef

-- 
Josef Fritscher                                      Email: fritsche@cscs.ch
Centro Svizzero di Calcolo Scientifico               Voice: +41 (91) 50 8259
Via Cantonale                                          Fax: +41 (91) 50 6711
6928 Manno, Switzerland
-------------------------------------------------------------------------------
A smell of burning fills the startled air - The Electrician is no longer there!
							(Hilaire Belloc)

From owner-mpi-comm@CS.UTK.EDU Thu May  5 09:02:50 1994
Received: from CS.UTK.EDU by netlib2.cs.utk.edu with ESMTP (cf v2.8t-netlib)
	id JAA05401; Thu, 5 May 1994 09:02:49 -0400
Received: from localhost by CS.UTK.EDU with SMTP (cf v2.8s-UTK)
	id JAA13792; Thu, 5 May 1994 09:02:41 -0400
X-Resent-To: mpi-comm@CS.UTK.EDU ; Thu, 5 May 1994 09:02:39 EDT
Errors-to: owner-mpi-comm@CS.UTK.EDU
Received: from dasher.cs.utk.edu by CS.UTK.EDU with ESMTP (cf v2.8s-UTK)
	id JAA13784; Thu, 5 May 1994 09:02:38 -0400
From: Jack Dongarra <dongarra@CS.UTK.EDU>
Received:  by dasher.cs.utk.edu (cf v2.9c-UTK)
          id JAA26494; Thu, 5 May 1994 09:01:41 -0400
Date: Thu, 5 May 1994 09:01:41 -0400
Message-Id: <199405051301.JAA26494@dasher.cs.utk.edu>
To: fritsche@serd.cscs.ch, mpi-comm@CS.UTK.EDU
Subject: Re: BLACS on top of MPI
In-Reply-To: Mail from 'fritsche@serd.cscs.ch (Josef Fritscher)'
      dated: Thu, 5 May 1994 14:25:22 +0200 (MET DST)

Josef,
We do not yet have an implementation of the BLACS based on
MPI. We are expecting to have this by the end of summer.
Regards,
Jack

From owner-mpi-comm@CS.UTK.EDU Thu May  5 09:05:24 1994
Received: from CS.UTK.EDU by netlib2.cs.utk.edu with ESMTP (cf v2.8t-netlib)
	id JAA05407; Thu, 5 May 1994 09:05:24 -0400
Received: from localhost by CS.UTK.EDU with SMTP (cf v2.8s-UTK)
	id JAA13982; Thu, 5 May 1994 09:05:32 -0400
X-Resent-To: mpi-comm@CS.UTK.EDU ; Thu, 5 May 1994 09:05:31 EDT
Errors-to: owner-mpi-comm@CS.UTK.EDU
Received: from rios2.EPM.ORNL.GOV by CS.UTK.EDU with ESMTP (cf v2.8s-UTK)
	id JAA13975; Thu, 5 May 1994 09:05:30 -0400
Received: (from walker@localhost) by rios2.EPM.ORNL.GOV (8.6.8/8.6.6) id JAA22159; Thu, 5 May 1994 09:05:25 -0400
Message-Id: <199405051305.JAA22159@rios2.EPM.ORNL.GOV>
To: fritsche@serd.cscs.ch
Cc: mpi-comm@CS.UTK.EDU
Subject: Re: BLACS on top of MPI 
In-reply-to: (Your message of Thu, 05 May 94 14:25:22 O.)
             <9405051225.AA08467@laax.serd.cscs.ch> 
Date: Thu, 05 May 94 09:05:25 -0500
From: "David W. Walker" <walker@rios2.EPM.ORNL.GOV>

Josef,

Implementing the BLACS with MPI is something we (at Oak Ridge National
Lab and Univ. Tennessess, Knoxville) intend to do, and we have started
an effeort to do this. Because of communicators, MPI will permeate all
levels of MPI.

Regards,
David
From owner-mpi-comm@CS.UTK.EDU Thu May  5 09:27:23 1994
Received: from CS.UTK.EDU by netlib2.cs.utk.edu with ESMTP (cf v2.8t-netlib)
	id JAA05502; Thu, 5 May 1994 09:27:23 -0400
Received: from localhost by CS.UTK.EDU with SMTP (cf v2.8s-UTK)
	id JAA16711; Thu, 5 May 1994 09:26:57 -0400
X-Resent-To: mpi-comm@CS.UTK.EDU ; Thu, 5 May 1994 09:26:56 EDT
Errors-to: owner-mpi-comm@CS.UTK.EDU
Received: from rios2.EPM.ORNL.GOV by CS.UTK.EDU with ESMTP (cf v2.8s-UTK)
	id JAA16704; Thu, 5 May 1994 09:26:55 -0400
Received: (from walker@localhost) by rios2.EPM.ORNL.GOV (8.6.8/8.6.6) id JAA17344; Thu, 5 May 1994 09:26:47 -0400
Message-Id: <199405051326.JAA17344@rios2.EPM.ORNL.GOV>
To: fritsche@serd.cscs.ch
cc: mpi-comm@CS.UTK.EDU
Subject: Re: BLACS on top of MPI 
Date: Thu, 05 May 94 09:26:46 -0500
From: "David W. Walker" <walker@rios2.EPM.ORNL.GOV>

Josef,

Here's what I meant to say in the last sentence of my previous message:

Because of communicators, MPI will permeate all levels of ScaLAPACK.

David
From owner-mpi-comm@CS.UTK.EDU Tue May 17 10:08:49 1994
Received: from CS.UTK.EDU by netlib2.cs.utk.edu with ESMTP (cf v2.8t-netlib)
	id KAA19950; Tue, 17 May 1994 10:08:48 -0400
Received: from localhost by CS.UTK.EDU with SMTP (cf v2.9s-UTK)
	id KAA02245; Tue, 17 May 1994 10:06:12 -0400
X-Resent-To: mpi-comm@CS.UTK.EDU ; Tue, 17 May 1994 10:06:11 EDT
Errors-to: owner-mpi-comm@CS.UTK.EDU
Received: from hub by CS.UTK.EDU with SMTP (cf v2.9s-UTK)
	id KAA02232; Tue, 17 May 1994 10:05:58 -0400
Received: from tycho.co.uk (tycho.meiko.co.uk) by hub with SMTP id AA22654
  (5.65c/IDA-1.4.4 for mpi-comm@cs.utk.edu); Tue, 17 May 1994 15:04:40 +0100
Received: by tycho.co.uk (5.0/SMI-SVR4)
	id AA18557; Tue, 17 May 1994 15:04:02 +0000
Date: Tue, 17 May 1994 15:04:02 +0000
From: jim@meiko.co.uk (James Cownie)
Message-Id: <9405171404.AA18557@tycho.co.uk>
To: mpi-comm@CS.UTK.EDU
Subject: PACK/UNPACK

People,

What are the rules about pack and unpack ? IN particular my
recollection was that we agreed that code which did this 

	pack ( ... MPI_INT, ...)
	send (... MPI_PACKED ...)


	receive (... MPI_INT ...)

is valid. So in other words the combination of packing and sending
with MPI_PACKED is transparent to the receiver, who sees the same
thing as if the data had simply been sent with the type signature used
in the pack.

Page 85 (20 et seq) of the standard talks about this, but is less than
clear to me. (Though it clearly states that the converse case of send,
receive packed, unpack is valid...)


-- Jim 
James Cownie 
Meiko Limited			Meiko Inc.
650 Aztec West			130C Baker Avenue Ext.
Bristol BS12 4SD		Concord
England				MA 01742

Phone : +44 454 616171		+1 508 371 0088
FAX   : +44 454 618188		+1 508 371 7516
E-Mail: jim@meiko.co.uk   or    jim@meiko.com
WWW   : http://www.meiko.com:8080/welcome.html
From owner-mpi-comm@CS.UTK.EDU Wed May 18 05:32:55 1994
Received: from CS.UTK.EDU by netlib2.cs.utk.edu with ESMTP (cf v2.8t-netlib)
	id FAA26456; Wed, 18 May 1994 05:32:55 -0400
Received: from localhost by CS.UTK.EDU with SMTP (cf v2.9s-UTK)
	id FAA10029; Wed, 18 May 1994 05:32:00 -0400
X-Resent-To: mpi-comm@CS.UTK.EDU ; Wed, 18 May 1994 05:31:59 EDT
Errors-to: owner-mpi-comm@CS.UTK.EDU
Received: from gmdzi.gmd.de by CS.UTK.EDU with SMTP (cf v2.9s-UTK)
	id FAA10020; Wed, 18 May 1994 05:31:48 -0400
Received: from f1neuman.gmd.de (f1neuman) by gmdzi.gmd.de with SMTP id AA14079
  (5.65c8/IDA-1.4.4 for <mpi-comm@cs.utk.edu>); Wed, 18 May 1994 11:31:38 +0200
Received: by f1neuman.gmd.de (AIX 3.2/UCB 5.64/4.03)
          id AA16990; Wed, 18 May 1994 11:31:09 +0200
Date: Wed, 18 May 1994 11:31:09 +0200
From: Rolf.Hempel@gmd.de (Rolf Hempel)
Message-Id: <9405180931.AA16990@f1neuman.gmd.de>
To: mpi-comm@CS.UTK.EDU
Subject: PACK/UNPACK
Cc: gmap10@f1neuman.gmd.de

Dear Friends,

I agree with Jim that the explanation on page 85 is not clear enough.
As far as I remember, at the Knoxville meeting we decided that PACK
generates the same "byte stream" as the corresponding direct SEND would
do. So, Jim's code example should be valid. In most applications,
however, I would expect to see a combination of SEND with
RECEIVE/UNPACK, because that's what you have to do if you port existing
PVM/PARMACS/... code to MPI. I guess that's the reason why this
situation has been described explicitely on page 85.

- Rolf
From owner-mpi-comm@CS.UTK.EDU Wed May 18 10:57:57 1994
Received: from CS.UTK.EDU by netlib2.cs.utk.edu with ESMTP (cf v2.8t-netlib)
	id KAA27764; Wed, 18 May 1994 10:57:57 -0400
Received: from localhost by CS.UTK.EDU with SMTP (cf v2.9s-UTK)
	id KAA23332; Wed, 18 May 1994 10:56:55 -0400
X-Resent-To: mpi-comm@CS.UTK.EDU ; Wed, 18 May 1994 10:56:53 EDT
Errors-to: owner-mpi-comm@CS.UTK.EDU
Received: from Aurora.CS.MsState.Edu by CS.UTK.EDU with SMTP (cf v2.9s-UTK)
	id KAA23324; Wed, 18 May 1994 10:56:52 -0400
Received:  by Aurora.CS.MsState.Edu (4.1/6.0s-FWP);
	   id AA15788; Wed, 18 May 94 09:56:33 CDT
Date: Wed, 18 May 94 09:56:33 CDT
From: Tony Skjellum <tony@Aurora.CS.MsState.Edu>
Message-Id: <9405181456.AA15788@Aurora.CS.MsState.Edu>
To: Rolf.Hempel@gmd.de, mpi-comm@CS.UTK.EDU
Subject: Re:  PACK/UNPACK
Cc: gmap10@f1neuman.gmd.de

Rolf,

Rolf, I think I disagree.  I think we explicitly said that
MPI_PACKED messages had to be received with MPI_PACKED type also.  In fact,
I remember that we voted to that effect.  I recall that Marc proposed the
strategy still currently in the book.

The whole discussion centered around the desire to optimize protocols, and
it was pointed out (probably by Jim) that one wants to make sure one is
getting some real optimizability from a specific design choice.  In many
cases, no optimizability results, as we discussed at length.

What is in the draft is usable, but I do think we departed from the actual
committee decision here in some degree.  Does anyone have the minutes?
Please correct me if I am mistaken.

The implications of the current strategy are, in my opinion,
i) the receiver does not need to know if the sender used PACK/SEND or did 
a single SEND with a datatype... that sounds good, a good portability
requirement from PVM, etc, etc.

ii) The discussion of packing units implies that if two packs of 
type MPI_INT are done, then it is equivalent to a single longer pack,
in a single packing unit.

This requires the implementation to track things like alignment.  Still
doable.

iii) The cryptic discussion of multiple packing units really means that
one can take MPI_PACKED buffers b1, b2 and so on and further MPI_PACK
them, even hierarchically.  That feature sounds good, but the receiver
definitely needs to know what the sender is doing in that case.  I think
we would be better off with regular derived datatyped at this point.
The draft kindly does not require b1 concat b2 to be a packing unit itself.

-Tony

From owner-mpi-comm@CS.UTK.EDU Wed May 18 11:52:08 1994
Received: from CS.UTK.EDU by netlib2.cs.utk.edu with ESMTP (cf v2.8t-netlib)
	id LAA28099; Wed, 18 May 1994 11:52:08 -0400
Received: from localhost by CS.UTK.EDU with SMTP (cf v2.9s-UTK)
	id LAA00531; Wed, 18 May 1994 11:52:05 -0400
X-Resent-To: mpi-comm@CS.UTK.EDU ; Wed, 18 May 1994 11:52:05 EDT
Errors-to: owner-mpi-comm@CS.UTK.EDU
Received: from hub by CS.UTK.EDU with SMTP (cf v2.9s-UTK)
	id LAA00522; Wed, 18 May 1994 11:51:52 -0400
Received: from tycho.co.uk (tycho.meiko.co.uk) by hub with SMTP id AA26231
  (5.65c/IDA-1.4.4 for mpi-comm@CS.UTK.EDU); Wed, 18 May 1994 16:46:56 +0100
Received: by tycho.co.uk (5.0/SMI-SVR4)
	id AA20151; Wed, 18 May 1994 16:46:16 +0000
Date: Wed, 18 May 1994 16:46:16 +0000
From: jim@meiko.co.uk (James Cownie)
Message-Id: <9405181546.AA20151@tycho.co.uk>
To: tony@Aurora.CS.MsState.Edu
Cc: Rolf.Hempel@gmd.de, mpi-comm@CS.UTK.EDU
In-Reply-To: <9405181456.AA15788@Aurora.CS.MsState.Edu> (message from Tony Skjellum on Wed, 18 May 94 09:56:33 CDT)
Subject: Re:  PACK/UNPACK


> What is in the draft is usable, but I do think we departed from the actual
> committee decision here in some degree.  Does anyone have the minutes?
> Please correct me if I am mistaken.
My notes (which are a little sketchy) have
                                            Y N A
Pack/unpack take a communicator		   13:0:1
Can you mix regular send with packed rx    10:1:6
	and converse
Add new packed type                         9:1:7
Enforce packed type for packed buffers      5:3:9

So my understanding of this is that :-

1) A packed buffer MUST be sent as MPI_PACKED 

2) Anything which is going to be unpacked must be received MPI_PACKED

3) A combination of pack, send MPI_PACKED is indistinguishable at the
   receiver from a send with a datatype whose type signature is the
   concatenation of the ones used in the packing operation(s).

4) The discussion on packing units says (in effect) :-
	A set of pack operations forms a packing unit provided that
        the user does not adjust the position argument between calls.

	A single pack unit can be transferred as above.

	You cannot take more than one pack unit and send them all in
	one message and then treat that as a single pack unit at the
        far end. (So you can't receive this concatenation with a
        normal typed receive and expect to get sense).

What I don't understand (yet) is how to transfer a concatenation of
pack units. MPI_PACKED is definitely wrong, so I guess you use
MPI_BYTE, and it is up to the MPI system to ensure that there is
enough info in the packed message to be able to interpret it correctly
when required.

If you like a pack unit is a record. You can send a single record and
receive it as a normal message with matching type signature, or you
can do a normal send and receive that as a single record. But if you
send multiple records in a single message, then you need to separate
the records to unpack each one independently. 

-- Jim 
James Cownie 
Meiko Limited			Meiko Inc.
650 Aztec West			130C Baker Avenue Ext.
Bristol BS12 4SD		Concord
England				MA 01742

Phone : +44 454 616171		+1 508 371 0088
FAX   : +44 454 618188		+1 508 371 7516
E-Mail: jim@meiko.co.uk   or    jim@meiko.com
WWW   : http://www.meiko.com:8080/welcome.html
From owner-mpi-comm@CS.UTK.EDU Wed May 18 13:15:35 1994
Received: from CS.UTK.EDU by netlib2.cs.utk.edu with ESMTP (cf v2.8t-netlib)
	id NAA28566; Wed, 18 May 1994 13:15:35 -0400
Received: from localhost by CS.UTK.EDU with SMTP (cf v2.9s-UTK)
	id NAA08196; Wed, 18 May 1994 13:15:05 -0400
X-Resent-To: mpi-comm@CS.UTK.EDU ; Wed, 18 May 1994 13:15:02 EDT
Errors-to: owner-mpi-comm@CS.UTK.EDU
Received: from watson.ibm.com by CS.UTK.EDU with SMTP (cf v2.9s-UTK)
	id NAA08178; Wed, 18 May 1994 13:14:58 -0400
From: <snir@watson.ibm.com>
Received: from WATSON by watson.ibm.com (IBM VM SMTP V2R3) with BSMTP id 1585;
   Wed, 18 May 94 13:14:57 EDT
Received: from YKTVMH by watson.vnet.ibm.com with "VAGENT.V1.0"
          id 8508; Wed, 18 May 1994 13:14:53 EDT
Received: from snir.watson.ibm.com by yktvmh.watson.ibm.com (IBM VM SMTP V2R3)
   with TCP; Wed, 18 May 94 13:14:52 EDT
Received: from localhost by snir.watson.ibm.com (AIX 3.2/UCB 5.64/930311)
          id AA25537; Wed, 18 May 1994 13:13:32 -0400
Message-Id: <9405181713.AA25537@snir.watson.ibm.com>
To: jim@meiko.co.uk (James Cownie)
Subject: Re: PACK/UNPACK
Cc: mpi-comm@CS.UTK.EDU, tony@cs.msstate.edu, rolf.hempel@gmd.de,
        frankeh@watson.ibm.com
In-Reply-To: (Your message of Wed, 18 May 1994 16:46:16 -0000.)
Date: Wed, 18 May 94 13:14:52 EDT

: -) :-) :-) *** (-: (-: (-:
Date: Wed, 18 May 1994 13:13:17 -0400
From: Marc Snir <snir@snir.watson.ibm.com>


I think I partially agree with you, except the issue you have about
concatenations of packing units.

This is easier to argue from the view-point of a hypothetical
implementation.

Assume that a normal message, created by a regular send, contains
some header identifying the type
of machine that sends the message, so that the the recipient can do
the required conversions, followed by data.  More generally, the
message could contain some formatting information (e.g., type
signature)

Recall that a packing unit is created by a sequence of "related"
PACK calls, starting with position=0, and each incrementing the
value of position returned by the previous call.  A packing unit is
consumed by a sequence of similarly "related" UNPACK calls.


Normal send: header is prepended to data and message is sent.

Send with type MPI_PACKED: no header is prepended; the header was
already created by the call to PACK, and occurs in (each of the)
packing units, created by a sequence of related PACK calls.

Normal receive: the header is consumed by the receive operation.

Receive with type MPI_PACKED: the header is passed, as is, and stored
in the receive buffer; it will be consumed by the call(s) to
MPI_UNPACK.  Each sequence of related calls to MPI_UNPACK that
consumes one packing unit, will consume one header.

This means that

1.  A packing unit, created by a sequence of related PACK calls, and
sent with type MPI_PACKED, can be received by a normal receive.

2. A packing unit sent with type MPI_PACKED can be received with
type MPI_PACKED and be unpacked by a sequence of related UNPACK
calls.

3.  A message sent by a normal sent can be received with type
MPI_PACKED and unpakced by a sequence of related UNPACK calls.

4. Of course, a message sent by a normal send can be received with a
normal send.

Now, how about a sequence of bytes which is the concatenation of
several packing units?

Such can be

Sent with type MPI_PACKED (no header added).

Received with type MPI_PACKED (sequence of bytes in message body is
stored, as is, in receive buffer).

Each packing unit can be separately unpacked by a sequence of
related UNPACK calls.

Conclusion:

a) A message that was created by one or several sequences of
related PACK calls is sent with type MPI_PACKED.
b) A message that is going to be unpacked by one or several
sequences of related UNPACK calls is received with type MPI_PACKED.
c) A Message created by one sequence of related PACK calls, and
sent with type MPI_PACKED is identical to a message sent with a
regular send.

I don't understand why you came to the conclusion it is wrong to
send the concatenation of several packing units with type MPI_PACKED.
From owner-mpi-comm@CS.UTK.EDU Tue May 31 18:09:13 1994
Received: from cs.cs.utk.edu by netlib2.cs.utk.edu with ESMTP (cf v2.8t-netlib)
	id SAA12893; Tue, 31 May 1994 18:09:13 -0400
Received: from localhost by cs.cs.utk.edu with SMTP (cf v2.9s-UTK)
	id SAA09368; Tue, 31 May 1994 18:06:36 -0400
X-Resent-To: mpi-comm@CS.UTK.EDU ; Tue, 31 May 1994 18:06:28 EDT
Errors-to: owner-mpi-comm@CS.UTK.EDU
Received: from Aurora.CS.MsState.Edu by cs.cs.utk.edu with SMTP (cf v2.9s-UTK)
	id SAA09361; Tue, 31 May 1994 18:06:26 -0400
Received:  by Aurora.CS.MsState.Edu (4.1/6.0s-FWP);
	   id AA06718; Tue, 31 May 94 17:05:03 CDT
Date: Tue, 31 May 94 17:05:03 CDT
From: Tony Skjellum <tony@Aurora.CS.MsState.Edu>
Message-Id: <9405312205.AA06718@Aurora.CS.MsState.Edu>
To: rdippold@qualcomm.com
Subject: Call for Votes : comp.parallel.mpi
Cc: mpi-comm@CS.UTK.EDU


Dear Sir, we wish to enlist your help in taking the vote on comp.parallel.mpi.
We are enclosing the RFD (which was originally posted April 4, 1994) at the 
end of this letter (the RFD can also be obtained through anonymous ftp at 
aurora.cs.msstate.edu in pub/mpi/comp.parallel.mpi.rfd).
 
We posted the RFD to       
	news.announce.newgroups
	news.groups
        comp.parallel.pvm
        comp.parallel
and request that you post the CFV to these newsgroups in addition to
standard posting locations.
 
For full disclosure, we also request that you post the CFV to the
following mailing lists:
	mpi-comm@cs.utk.edu
	dwf@lanl.gov (David Forslund's moderated distributed computing list)
	mpi-users@mcs.anl.gov

More information about MPI can be obtained by reading the MPI FAQ which
is available by anonymous ftp at aurora.cs.msstate.edu in 
pub/mpi/faq/mpi-faq.ascii.   The FAQ is also available through the WWW at 
URL:
	http://www.cs.msstate.edu/dist_computing/mpi-faq.html

Furthermore, the URL for the full online manual of the standard, and
reference implementation is as follows:
	http://www.mcs.anl.gov/mpi/


We would like voting to start on June 10, and end on June 30.
Thank you,
Anthony Skjellum

=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
>Path: nntp.msstate.edu!gatech!swrinde!cs.utexas.edu!uunet!bounce-back
>From: tony@aurora.cs.msstate.edu (Tony Skjellum)
>Newsgroups: news.announce.newgroups,news.groups,comp.parallel,comp.parallel.pvm
>Subject: RFD: comp.parallel.mpi
>Followup-To: news.groups
>Date: 4 Apr 1994 20:09:49 -0400
>Organization: Mississippi State University
>Lines: 88
>Sender: tale@uunet.uu.net
>Approved: tale@uunet.uu.net, bigrigg@cs.pitt.edu
>Message-ID: <comp.parallel.mpi-RFD1@uunet.uu.net>
>NNTP-Posting-Host: rodan.uu.net
>Xref: nntp.msstate.edu news.announce.newgroups:4147 news.groups:77787 comp.parallel:7901 comp.parallel.pvm:1633

This is a formal Request for Discussion on the creation of a new newsgroup
called "comp.parallel.mpi" (unmoderated).

This announcement is cross-posted to newsgroups whose readers may have
interest in the discussion about the new group; follow-up discussion
will take place in "news.groups".  This RFD has been posted to
news.announce.newgroups, comp.parallel, and comp.parallel.pvm on
April 4, 1994.

Suggestions, comments or problems may also be emailed to me at
<tony@CS.MsState.Edu>.

REQUEST FOR DISCUSSION (THIS IS NOT A VOTE)
-------------------------------------------

NEWSGROUP
  comp.parallel.mpi (unmoderated)

PURPOSE
  The newsgroup 'comp.parallel.mpi' would be a forum for discussing
  issues related to the use and interpretation of MPI (Message Passing
  Interface), an informal standard for writing message-passing
  programs.

  MPI was created by the MPI Forum, a group of University, Industry, and
  National Laboratory representatives including significant international
  representation.  The MPI standard can be obtained from netlib by sending
  the message "send draft-final.ps from mpi" to netlib@ornl.gov.
  Alternatively, one can anonymous ftp to netlib2.cs.utk.edu.

RATIONALE
  Discussion of MPI questions currently has no single home.
  Discussion has appeared in newsgroups such as

        comp.parallel
        comp.parallel.pvm

  A single group will centralize discussion and target the intended
  audience of such posts more accurately.

  It is also expected that there will be a wide audience for this
  newsgroup as a result of the participation by many vendors, national
  labs, and universities in the development of MPI.  

CONTENT
  Appropriate discussion in the group will include both general
  MPI issues, platform-specific questions, and discussion
  comparing MPI to other systems.  Some examples:


  General MPI Issues
        Answers to novices' questions
        Clarification of the standard document
        Exchange of public-domain MPI source code
        Implementation of various applications
        etc.

  Platform-specific issues
        Implementations available
		Peculiarities and bugs found in various implementations
        etc.

  Comparison to other systems
        P4, Express, LINDA, PVM, etc

NAME
  comp.parallel.mpi seems to be most appropriate.

  MPI is to be used on many different architectures and thus doesn't
  fit in any one comp.sys.* hierarchy.  It is not a programming
  language, so comp.lang.* is out; 


NOT MODERATED
  As the new group will be for informal discussion and the quick
  exchange of ideas, no moderator will be necessary.

NEWSGROUP CREATION
  Please post all discussion in news.groups.

  If a consensus is reached by the end of the discussion period,
  a CFV (Call for Votes) will be posted at that time. The voting
  period will last for 21 days.
-- 
	.	.	.	.	.	.	.	.      .
"There is no lifeguard at the gene pool." - C. H. Baldwin
            -             -                       -
Anthony Skjellum, MSU/ERC, (601)325-8435; FAX: 325-8997; tony@cs.msstate.edu

From owner-mpi-comm@CS.UTK.EDU Fri Jun  3 14:36:51 1994
Received: from CS.UTK.EDU by netlib2.cs.utk.edu with ESMTP (cf v2.8t-netlib)
	id OAA10170; Fri, 3 Jun 1994 14:36:51 -0400
Received: from localhost by CS.UTK.EDU with SMTP (cf v2.9s-UTK)
	id OAA11397; Fri, 3 Jun 1994 14:34:16 -0400
X-Resent-To: mpi-comm@CS.UTK.EDU ; Fri, 3 Jun 1994 14:34:15 EDT
Errors-to: owner-mpi-comm@CS.UTK.EDU
Received: from Aurora.CS.MsState.Edu by cs.cs.utk.edu with SMTP (cf v2.9s-UTK)
	id OAA11390; Fri, 3 Jun 1994 14:34:13 -0400
Received:  by Aurora.CS.MsState.Edu (4.1/6.0s-FWP);
	   id AA08744; Fri, 3 Jun 94 13:32:15 CDT
Date: Fri, 3 Jun 94 13:32:15 CDT
From: Tony Skjellum <tony@Aurora.CS.MsState.Edu>
Message-Id: <9406031832.AA08744@Aurora.CS.MsState.Edu>
To: mpi-comm@CS.UTK.EDU
Subject: Conference to include MPI emphasis

Our second annual Scalable Libraries Conference will feature an MPI
emphasis... -Tony Skjellum
cf,
      *** PRELIMINARY ANNOUNCEMENT + CALL FOR PAPERS & POSTERS ***

          Scalable Parallel Libraries Conference II (SPLC94)

                            including

                       MPI Applications Day
                               and
        Multicomputer Toolbox Developers' & Users' Meeting

                       October 12-14, 1994
    National Science Foundation Engineering Research Center
                 for Computational Field Simulation,
   		   Mississippi State, Mississippi


The Scalable Libraries Conference series is designed to

	. complement other, larger, general conferences in 
		high performance computing,
	. bring together key researchers from national laboratories, industry,
		and academia to effect technology transfer of high performance
		computing software and effect an interchange of ideas,
	. include vendors as attendees, but not include promotional activities,
	. provide invited talks on topics involving application of scalable
		libraries in applications, developments in scalable libraries,
		and related issues (such as message-passing technology),
	. provide for contributed talks and posters to allow further
		interchange of ideas,
	. introduce potential users to the work done at our center on the 
		scalable libraries, a specific example of technology we hope 
		to transfer,
	. provide user of scalable libraries with an opportunity to impact
		research in the area (i.e., complain/suggest
	        needs/requirements), 
	. There will be no parallel sessions (except that posters will be
		displayed for at least one full day),
        . Support the promulgation of the MPI standard, and its follow-ons,
		including application development and user training,
	. A proceedings of the all papers and posters will be made; the paper
		deadline will be at the conference. [Publisher: IEEE Press]

----------------------------------------------------------------------------
Note: The Proceedings of the 1993 conference are available from IEEE
	Computer Society Press. 
----------------------------------------------------------------------------
Paper:   A proposal to present a paper should consist of a title
	 plus a seven-hundred-fifty word abstract of the work.  It is expected
	 that papers be controversial, up-to-the-minute, and cutting-edge.

	 Include the name(s), complete address(es), phone number(s), e-mail(s),
		of the author(s).
		
Deadline:                   July 20, 1994
Notification of acceptance: August 1, 1994

It is STRONGLY preferred that proposal to present be sent by e-mail to 
	splc94-conf@cs.msstate.edu. 

Hardcopy proposals can be sent to the address cited below under poster
	submissions.

Papers marked "MPI Applications Day" will be considered for special sessions
on Thursday, October 13, which will be devoted to MPI-based applications,
and related talks and posters.
----------------------------------------------------------------------------
Posters: A proposal to present a poster should consist of a title
	 plus a three-hundred word abstract of the work.  It is expected
	 that work-in-progress and completed work will be proposed for
	 posters, so that up-to-date material will appear in the posters.

	 Include the name(s), complete address(es), phone number(s), e-mail(s),
		of the author(s).
		
Deadline:                   July 20, 1994
Notification of acceptance: August 1, 1994

It is STRONGLY preferred that proposal to present be sent by e-mail to 
	splc94-conf@cs.msstate.edu. 

Hardcopy proposals can be sent to:
		Anthony Skjellum
		NSF Engineering Research Center
		Attn: SCL Conference
		PO Box 6176
		Mississippi State, MS 39762

Posters marked "MPI Applications Day" will be considered for poster session
on Thursday, October 13, which will be devoted to MPI-based applications,
and related talks and posters.
----------------------------------------------------------------------------
Conference fee: $225 for all attendees.  Attendance will be limited due to
		space requirements (approximately 100).  Fee includes cost
		of proceedings (to be distributed after the conference),
		and some meals.    Shuttle service also provided to/from
		airport during limited times.

		Fees payable by check to Mississippi State University.

		PREREGISTRATION IS REQUIRED.  ON-SITE REGISTRATION 
		CANNOT BE GUARANTEED.

		REGISTRANTS ARE STRONGLY ENCOURAGED TO STAY FOR THE ENTIRE
		THREE-DAY CONFERENCE, TO IMPROVE THE EXCHANGE OF INFORMATION.

For further information, contact:  Anthony Skjellum,
				   tony@cs.msstate.edu,
				   phone: 601-325-8435
				   fax:   601-325-8997

Organizing Committee: Anthony Skjellum, Mississippi State University,
	              NSF Engineering Research Center for Computational
		      Field Simulation + Computer Science Department,

		      Donna S. Reese, Mississippi State University,
		      NSF Engineering Research Center for Computational
		      Field Simulation + Computer Science Department,

		      Andrew Lumsdaine, University of Notre Dame,
		      Dept. of Computer Science and Engineering

		      Ewing Lusk, Argonne National Laboratory

----------------------------------------------------------------------------
Hotel Accomodations:

	Hotel accomodations are available at several hotels close to
	the NSF Engineering Research Center.  

	The following are reasonable choices:
		The State House Hotel, (601) 323-2000
		The Best Western Motel, (601) 324-5555
		The Holiday Inn, (601) 323-6161

Airport:
	Starkville is served by the nearby Columbus, Mississippi Airport,
	(GTR), which provides connections through three larger cities:

		(American/American Eagle) through Nashville, Tennessee,
		(Delta/ASA) through Atlanta, Georgia,
		(Northwest Airlink) through Memphis, Tennessee

	GTR is approximately a 20-minute drive from Starkville, and
	several rental agencies are on-site.

	Correct directions (better than rental agencies) will be provided
	to registered attendees.  Shuttle to hotels on October 11/12,
	and to airport on October 14.  Also, shuttle to/from hotels will
	be provided each morning, and Wednesday, Thursday afternoons.

----------------------------------------------------------------------------

From owner-mpi-comm@CS.UTK.EDU Sun Jun  5 13:40:03 1994
Received: from CS.UTK.EDU by netlib2.cs.utk.edu with ESMTP (cf v2.8t-netlib)
	id NAA22749; Sun, 5 Jun 1994 13:40:03 -0400
Received: from localhost by CS.UTK.EDU with SMTP (cf v2.9s-UTK)
	id NAA02465; Sun, 5 Jun 1994 13:38:14 -0400
X-Resent-To: mpi-comm@CS.UTK.EDU ; Sun, 5 Jun 1994 13:38:12 EDT
Errors-to: owner-mpi-comm@CS.UTK.EDU
Received: from Aurora.CS.MsState.Edu by cs.cs.utk.edu with SMTP (cf v2.9s-UTK)
	id NAA02458; Sun, 5 Jun 1994 13:38:10 -0400
Received:  by Aurora.CS.MsState.Edu (4.1/6.0s-FWP);
	   id AA09718; Sun, 5 Jun 94 12:35:57 CDT
Date: Sun, 5 Jun 94 12:35:57 CDT
From: Tony Skjellum <tony@Aurora.CS.MsState.Edu>
Message-Id: <9406051735.AA09718@Aurora.CS.MsState.Edu>
To: dwf@lanl.gov, turcotte@bulldog.wes.army.mil
Subject: fyi
Cc: mpi-comm@CS.UTK.EDU

Dear colleagues,
     I am doing a survey of MPI applications underway, or completed, or
even seriously planned and just getting started, for a paper that I am
writing, to be completed in the next few weeks.  I will make this paper
available by anonymous ftp when it is done (the goal is to be done by June 22).

The following are the goals of the paper, and also the format for
contributions...

1) List MPI-based applications, who's working on them, and 
experiences thus far. Specifically,
	- authors
	- short blurb of application area (4-10 sentences)
	- goals of application project (high speed, cheap cycles, 
		new physics, etc) (2-4 sentences)
	- proper citation(s) to the project, and techniques it is based on,
		and/or ftp locations to get relevant articles
2) Determine anectodal information about process of converting from
   other systems  (about 3-4 sentences each, max)
	- amount of effort
	- motivation for conversion
	- degree of satisfaction
3) Determine which features of MPI have proven most helpful in applications
   development and/or conversion, such as
	- communicators
	- inter-communicators
	- topologies
	- pack/unpack capabilities
	- datatypes
	(4-10 sentences)
4) Determine which parts of MPI are most understandable and most confusing
   for application developers
	(4-10 sentences)
5) Get early indications of performance results (such as on IBM SP/1, and
   Paragon) (as much space as reasonably needed to display, including
	any tables or graphs, in Latex or EPS format)
6) Get indications of which MPI implementation or implementations have
   been used in conjunction with the applications 
7) Miscellenaous feedback from application programmers and users, 
	if applicable.  For instance, desire for other/different features.
	(4-10 sentences)

If you are working on one or more applications, please respond in each
of the seven categories listed above, for each application.  Please
include your full name, one or more citations (bibtex or ASCII) that
can be used properly to describe your activity, and your institution,
e-mail/phone information, in case I need more information.  I would
like to present a seven-part description of each representative
application, following the above format.  I will assume that it is OK
for me to quote the material submitted to me in whole or in part,
within this survey paper (editing for conciseness, as necessary),
without any further grant of permission on your part or that of your
institution, and I will reference all the contributors in the
acknowledgements.  Please be sure to secure any needed permissions
before sending me the information, because the paper I am writing will
be distributed without restrictions.

I would appreciate e-mail responses, but my postal address is as follows:
		Anthony Skjellum
		NSF Engineering Research Center
		Mississippi State University
		PO Box 6176
		Mississippi State, MS 39762

Thanks very much,
Tony Skjellum


From owner-mpi-comm@CS.UTK.EDU Thu Jun  9 18:46:11 1994
Received: from CS.UTK.EDU by netlib2.cs.utk.edu with ESMTP (cf v2.8t-netlib)
	id SAA10761; Thu, 9 Jun 1994 18:46:10 -0400
Received: from localhost by CS.UTK.EDU with SMTP (cf v2.9s-UTK)
	id SAA06563; Thu, 9 Jun 1994 18:43:18 -0400
X-Resent-To: mpi-comm@CS.UTK.EDU ; Thu, 9 Jun 1994 18:43:17 EDT
Errors-to: owner-mpi-comm@CS.UTK.EDU
Received: from SSD.intel.com by CS.UTK.EDU with SMTP (cf v2.9s-UTK)
	id SAA06556; Thu, 9 Jun 1994 18:43:15 -0400
Received: from tualatin.SSD.intel.com by SSD.intel.com (4.1/SMI-4.1)
	id AA25050; Thu, 9 Jun 94 15:42:44 PDT
Received: by tualatin.SSD.intel.com (4.1/SMI-4.1)
	id AA01955; Thu, 9 Jun 94 15:42:42 PDT
Date: Thu, 9 Jun 94 15:42:42 PDT
Message-Id: <9406092242.AA01955@tualatin.SSD.intel.com>
From: Bob Knighten <knighten@ssd.intel.com>
To: mpi-comm@CS.UTK.EDU
Subject: MPI and SPEC HPSC
Reply-To: knighten@ssd.intel.com (Bob Knighten)

Some news on the MPI front.  SPEC, the benchmark people, recently created a
"High Performance Steering Committee" to develop benchmarks for the high
performance computing arena.  The latest meeting was June 7&8.  Here is an
interesting note from the minutes:


Motion (940008):	Intel proposed " The message passing version of
a candidate benchmark code must use PVM or MPI libraries to be
considered for the first release." HP seconded.



		For						Against	
Abstain

	IBM	Intel	Sun	NEC				None	
	DEC

	FAI	HP	KAI	(UMn/UIL)



Motion 940008 carried: 8-0-1


-- Bob

-- 
Robert L. Knighten	             | knighten@ssd.intel.com
Intel Supercomputer Systems Division | 
CO1-05                               |
15201 N.W. Greenbrier Pkwy.	     | (503) 629-4315
Beaverton, Oregon  97006	     | (503) 629-9147 [FAX]
From owner-mpi-comm@CS.UTK.EDU Tue Jun 14 19:10:00 1994
Received: from CS.UTK.EDU by netlib2 with ESMTP (cf v2.8t-netlib)
	id TAA24603; Tue, 14 Jun 1994 19:09:59 -0400
Received: from localhost by CS.UTK.EDU with SMTP (cf v2.9s-UTK)
	id TAA03758; Tue, 14 Jun 1994 19:07:37 -0400
X-Resent-To: mpi-comm@CS.UTK.EDU ; Tue, 14 Jun 1994 19:07:36 EDT
Errors-to: owner-mpi-comm@CS.UTK.EDU
Received: from Aurora.CS.MsState.Edu by CS.UTK.EDU with SMTP (cf v2.9s-UTK)
	id TAA03742; Tue, 14 Jun 1994 19:07:34 -0400
Received:  by Aurora.CS.MsState.Edu (4.1/6.0s-FWP);
	   id AA06125; Tue, 14 Jun 94 18:06:24 CDT
Date: Tue, 14 Jun 94 18:06:24 CDT
From: Tony Skjellum <tony@Aurora.CS.MsState.Edu>
Message-Id: <9406142306.AA06125@Aurora.CS.MsState.Edu>
To: rdippold@qualcomm.com
Subject: Re:  CFV

Ron,

No, I have not heard about this at all.  That is of course distressing
since an analogous group already exists.

There were no negative comments when the RFD was put out, nor when
the previous group (comp.parallel.pvm) was posed.  I did not hear of
any such delays when that group was formed.  RFD time seems like it was
the appropriate time to complain, not now.

Of course, we do not care if the name is changed to 

	comp.parallel.message-passing-interface,

but, I object strenuously to this delay, otherwise, as we have left
lots of time for people to respond to the RFD in the first place.

-Tony

From rdippold@qualcomm.com Tue Jun 14 17:53:49 1994
Received: from happy.qualcomm.com by Aurora.CS.MsState.Edu (4.1/6.0s-FWP);
	   id AA06101; Tue, 14 Jun 94 17:53:48 CDT
Received: (rdippold@localhost) by happy.qualcomm.com (8.6.9/QC-BSD-2.4) id PAA07877 for Tony Skjellum <tony@aurora.cs.msstate.edu>; Tue, 14 Jun 1994 15:54:54 -0700
Date: Tue, 14 Jun 94 15:54:53 PDT
From: Ron Dippold <rdippold@qualcomm.com>
To: Tony Skjellum <tony@aurora.cs.msstate.edu>
Subject: CFV
Message-Id: <CMM.0.90.0.771634493.rdippold@happy.qualcomm.com>
Status: R

has group-advice@uunet.uu.net contacted you yet about the CFV?
They've held it up for discussion on the name (acronyms are generally
considered evil), and I wanted to be sure they'd let you know about
it.

From owner-mpi-comm@CS.UTK.EDU Wed Jun 15 10:29:26 1994
Received: from CS.UTK.EDU by netlib2 with ESMTP (cf v2.8t-netlib)
	id KAA29023; Wed, 15 Jun 1994 10:29:26 -0400
Received: from localhost by CS.UTK.EDU with SMTP (cf v2.9s-UTK)
	id KAA21552; Wed, 15 Jun 1994 10:27:28 -0400
X-Resent-To: mpi-comm@CS.UTK.EDU ; Wed, 15 Jun 1994 10:27:27 EDT
Errors-to: owner-mpi-comm@CS.UTK.EDU
Received: from Aurora.CS.MsState.Edu by CS.UTK.EDU with SMTP (cf v2.9s-UTK)
	id KAA21534; Wed, 15 Jun 1994 10:27:25 -0400
Received:  by Aurora.CS.MsState.Edu (4.1/6.0s-FWP);
	   id AA06340; Wed, 15 Jun 94 09:26:12 CDT
Date: Wed, 15 Jun 94 09:26:12 CDT
From: Tony Skjellum <tony@Aurora.CS.MsState.Edu>
Message-Id: <9406151426.AA06340@Aurora.CS.MsState.Edu>
To: mpi-comm@CS.UTK.EDU
Subject: CFV delayed, but coming

The call for votes on comp.parallel.mpi was delayed, but is coming today,
according to net gods. - TOny
From owner-mpi-comm@CS.UTK.EDU Wed Jun 15 16:50:33 1994
Received: from CS.UTK.EDU by netlib2 with ESMTP (cf v2.8t-netlib)
	id QAA02658; Wed, 15 Jun 1994 16:50:33 -0400
Received: from localhost by CS.UTK.EDU with SMTP (cf v2.9s-UTK)
	id QAA29843; Wed, 15 Jun 1994 16:49:20 -0400
X-Resent-To: mpi-comm@CS.UTK.EDU ; Wed, 15 Jun 1994 16:49:19 EDT
Errors-to: owner-mpi-comm@CS.UTK.EDU
Received: from antares.mcs.anl.gov by CS.UTK.EDU with ESMTP (cf v2.9s-UTK)
	id QAA29836; Wed, 15 Jun 1994 16:49:18 -0400
Received: from godzilla (godzilla.mcs.anl.gov [140.221.5.136]) by antares.mcs.anl.gov (8.6.4/8.6.4) with ESMTP id PAA14428 for <mpi-comm@cs.utk.edu>; Wed, 15 Jun 1994 15:49:15 -0500
From: William Gropp <gropp@mcs.anl.gov>
Date: Wed, 15 Jun 1994 15:49:13 -0500
Message-Id: <199406152049.PAA09577@godzilla>
To: mpi-comm@CS.UTK.EDU
Subject: Errors in May 5 version

What is the process for correcting errors at this point?  I sent several but I
have received few comments (all have agreed).  

(1)
The May 5 version has:

int MPI_Get_count( MPI_Status status, MPI_Datatype datatype, int *count )
int MPI_Get_elements( MPI_Status status, MPI_Datatype datatype, int *count )
int MPI_Test_cancelled( MPI_Status status, int *flag )

These should all be

int MPI_Get_count( MPI_Status *status, MPI_Datatype datatype, int *count )
int MPI_Get_elements( MPI_Status *status, MPI_Datatype datatype, int *count )
int MPI_Test_cancelled( MPI_Status *status, int *flag )

(2)
The various MPI_Type_size, extent, etc. functions in the May 5 version assume 
that the difference between 2 pointers to the same storage area in C can
be represented by an int (as opposed to, for example, a long or a long long).
I believe this is in error; while MPI_Aint was used for both these lengths and
the addresses, we could assume that MPI_Aint was large enough for both
purposes; choosing the C type "int" for the extents and sizes can make it
impossible to return a correct value for some situations.

(3) 
In 3.2.2, the sentance fragment

MPI_DOUBLE_COMPLEX for double precision
complex in Fortran declared to be of type DOUBLE PRECISION;

should be

MPI_DOUBLE_COMPLEX for double precision
complex in Fortran declared to be of type DOUBLE COMPLEX;

----------------------------------------------------------------------------

Question for the MPIF:  What is the proper way to make these changes?  
I would claim that these are all "clearly in error" but particularly the first
one, the bindings for MPI_Get_count etc. is correct but unintended.

Bill
From owner-mpi-comm@CS.UTK.EDU Wed Jun 15 18:01:35 1994
Received: from CS.UTK.EDU by netlib2 with ESMTP (cf v2.8t-netlib)
	id SAA03084; Wed, 15 Jun 1994 18:01:35 -0400
Received: from localhost by CS.UTK.EDU with SMTP (cf v2.9s-UTK)
	id SAA06596; Wed, 15 Jun 1994 18:00:42 -0400
X-Resent-To: mpi-comm@CS.UTK.EDU ; Wed, 15 Jun 1994 18:00:40 EDT
Errors-to: owner-mpi-comm@CS.UTK.EDU
Received: from watson.ibm.com by CS.UTK.EDU with SMTP (cf v2.9s-UTK)
	id SAA06549; Wed, 15 Jun 1994 18:00:36 -0400
From: <snir@watson.ibm.com>
Received: from WATSON by watson.ibm.com (IBM VM SMTP V2R3) with BSMTP id 9403;
   Wed, 15 Jun 94 18:00:07 EDT
Received: from YKTVMV by watson.vnet.ibm.com with "VAGENT.V1.0"
          id 5157; Wed, 15 Jun 1994 18:00:06 EDT
Received: from snir.watson.ibm.com by yktvmv.watson.ibm.com (IBM VM SMTP V2R3)
   with TCP; Wed, 15 Jun 94 18:00:05 EDT
Received: from localhost by snir.watson.ibm.com (AIX 3.2/UCB 5.64/930311)
          id AA29798; Wed, 15 Jun 1994 18:00:03 -0400
Message-Id: <9406152200.AA29798@snir.watson.ibm.com>
To: William Gropp <gropp@mcs.anl.gov>
Cc: dongarra@CS.UTK.EDU, otto@cse.ogi.edu, mpi-comm@CS.UTK.EDU
Subject: Re: Errors in May 5 version
In-Reply-To: (Your message of Wed, 15 Jun 1994 15:49:13 CDT.)
Date: Wed, 15 Jun 94 18:00:05 EDT

: -) :-) :-) *** (-: (-: (-:
Date: Wed, 15 Jun 1994 18:00:02 -0400
From: Marc Snir <snir@snir.watson.ibm.com>

I suggest the following process:


Major changes should be discussed now only if the text is
inconsistent, and would require approval by the forum; syntactic
corrections can be done by the chapter author(s).   The chapter
author forwards the correction to the erata keeper (Steve?).  An MPI
erata is maintained on netlib and updated at reasonable frequency
(monthly?).  No new full version of the MPI document before it gets
published as a book.  It would be useful, if possible, to put in the
journal article a pointer to the erata.



From owner-mpi-comm@CS.UTK.EDU Wed Jun 15 18:06:52 1994
Received: from CS.UTK.EDU by netlib2 with ESMTP (cf v2.8t-netlib)
	id SAA03102; Wed, 15 Jun 1994 18:06:52 -0400
Received: from localhost by CS.UTK.EDU with SMTP (cf v2.9s-UTK)
	id SAA07070; Wed, 15 Jun 1994 18:06:00 -0400
X-Resent-To: mpi-comm@CS.UTK.EDU ; Wed, 15 Jun 1994 18:05:59 EDT
Errors-to: owner-mpi-comm@CS.UTK.EDU
Received: from merckx.cse.ogi.edu by CS.UTK.EDU with SMTP (cf v2.9s-UTK)
	id SAA07060; Wed, 15 Jun 1994 18:05:54 -0400
Received: by merckx.cse.ogi.edu
	(1.37.109.4/16.2) id AA16136; Wed, 15 Jun 94 15:05:51 -0700
Date: Wed, 15 Jun 94 15:05:51 -0700
From: Steve Otto <otto@cse.ogi.edu>
Message-Id: <9406152205.AA16136@merckx.cse.ogi.edu>
To: gropp@mcs.anl.gov, snir@watson.ibm.com
Subject: Re: Errors in May 5 version
Cc: dongarra@CS.UTK.EDU, mpi-comm@CS.UTK.EDU, otto@cse.ogi.edu



	I like Marc's suggestions, they seem sensible.

	He writes:
It would be useful, if possible, to put in the
journal article a pointer to the erata.

	I will ask the MIT Press person right now if this will be easy.

	--Steve Otto
From owner-mpi-comm@CS.UTK.EDU Wed Jun 15 18:33:11 1994
Received: from CS.UTK.EDU by netlib2 with ESMTP (cf v2.8t-netlib)
	id SAA03159; Wed, 15 Jun 1994 18:33:11 -0400
Received: from localhost by CS.UTK.EDU with SMTP (cf v2.9s-UTK)
	id SAA10079; Wed, 15 Jun 1994 18:32:27 -0400
X-Resent-To: mpi-comm@CS.UTK.EDU ; Wed, 15 Jun 1994 18:32:26 EDT
Errors-to: owner-mpi-comm@CS.UTK.EDU
Received: from antares.mcs.anl.gov by CS.UTK.EDU with ESMTP (cf v2.9s-UTK)
	id SAA10061; Wed, 15 Jun 1994 18:32:10 -0400
Received: from godzilla (godzilla.mcs.anl.gov [140.221.5.136]) by antares.mcs.anl.gov (8.6.4/8.6.4) with ESMTP id RAA18334; Wed, 15 Jun 1994 17:32:06 -0500
From: William Gropp <gropp@mcs.anl.gov>
Date: Wed, 15 Jun 1994 17:32:04 -0500
Message-Id: <199406152232.RAA14965@godzilla>
To: otto@cse.ogi.edu
CC: snir@watson.ibm.com, dongarra@CS.UTK.EDU, mpi-comm@CS.UTK.EDU,
        otto@cse.ogi.edu
In-reply-to: <9406152205.AA16136@merckx.cse.ogi.edu> (message from Steve Otto on Wed, 15 Jun 94 15:05:51 -0700)
Subject: Re: Errors in May 5 version

I agree with Marc's suggestions; I'd like to discuss them with respect to 
the 3 bugs I submitted.

(1) Bindings.  Presumably these are syntatic errors caused by the automatic
process by which the bindings were constructed (Rusty could confirm this).  By
Marc's reasoning, this is a syntactic correction.

(2) int replaced MPI_Aint.  The text is incorrect, so a change is needed.
Since a previous version was correct (by using MPI_Aint), I'm not sure that
discussion is required, but perhaps that is the safest course.  Marc, since
this is your chapter, what do you prefer?

(3) DOUBLE PRECISION instead of DOUBLE COMPLEX.  A clear example of a simple
error.  Steve, I believe you are the chapter editor for terms and conventions.

There is one other issue.  The online, WWW version should be correct since
many people are using it as a reference manual.  There are three obvious
possibilities:

   (a) The WWW version is up-to-date, with corrections
   (b) The WWW version is not up-to-date, but has pointers to errata
   (c) The WWW version is not up-to-date and reflects the last published 
       version; it is necessarily incorrect.

(I'll admit that the descriptions may seem a little loaded but I believe that
they are precise and will reflect the way the WWW version is viewed, since
while paper documentation is expected to be out-of-date, online documentation
is not (even though it often is).)

We can maintain any and all of these.  Which should we do?  My preference is
for (a), possibly merged with (b).  In other words, include the corrections
along with some indication that this reflects a correction from the errata.
Comments?

Bill
From owner-mpi-comm@CS.UTK.EDU Thu Jun 16 15:40:11 1994
Received: from CS.UTK.EDU by netlib2 with ESMTP (cf v2.8t-netlib)
	id PAA15555; Thu, 16 Jun 1994 15:40:10 -0400
Received: from localhost by CS.UTK.EDU with SMTP (cf v2.9s-UTK)
	id PAA00787; Thu, 16 Jun 1994 15:37:50 -0400
X-Resent-To: mpi-comm@CS.UTK.EDU ; Thu, 16 Jun 1994 15:37:49 EDT
Errors-to: owner-mpi-comm@CS.UTK.EDU
Received: from noc.usfca.edu by CS.UTK.EDU with SMTP (cf v2.9s-UTK)
	id PAA00773; Thu, 16 Jun 1994 15:37:34 -0400
Received: by noc.usfca.edu (5.65/DEC-Ultrix/4.3)
	id AA01320; Thu, 16 Jun 1994 12:38:30 -0700
Received: by mobydick.usfca.edu (4.1/SMI-4.1)
	id AA07958; Thu, 16 Jun 94 12:32:25 PDT
Date: Thu, 16 Jun 94 12:32:25 PDT
From: peter@mobydick.usfca.edu (Peter Pacheco)
Message-Id: <9406161932.AA07958@mobydick.usfca.edu>
To: gropp@mcs.anl.gov, otto@cse.ogi.edu
Subject: Re: Errors in May 5 version
Cc: dongarra@CS.UTK.EDU, mpi-comm@CS.UTK.EDU, snir@watson.ibm.com

Bill Gropp writes that we have three possibilities 

>   (a) The WWW version is up-to-date, with corrections
>   (b) The WWW version is not up-to-date, but has pointers to errata
>   (c) The WWW version is not up-to-date and reflects the last published 
>       version; it is necessarily incorrect.

I agree with Bill that option (a) is preferred, although I think that 
differences from the published hardcopy should be marked.  An obvious
question in this connection:  does anyone have the time to keep it
up to date?

                                        Peter Pacheco
From owner-mpi-comm@CS.UTK.EDU Wed Jun 22 08:17:47 1994
Received: from CS.UTK.EDU by netlib2.cs.utk.edu with ESMTP (cf v2.8t-netlib)
	id IAA00458; Wed, 22 Jun 1994 08:17:47 -0400
Received: from localhost by CS.UTK.EDU with SMTP (cf v2.9s-UTK)
	id IAA02574; Wed, 22 Jun 1994 08:15:02 -0400
X-Resent-To: mpi-comm@CS.UTK.EDU ; Wed, 22 Jun 1994 08:15:00 EDT
Errors-to: owner-mpi-comm@CS.UTK.EDU
Received: from nlrgup.nlr.nl by CS.UTK.EDU with SMTP (cf v2.9s-UTK)
	id IAA02565; Wed, 22 Jun 1994 08:14:57 -0400
Received: from uxmain.nlr.nl by nlrgup.nlr.nl with SMTP id AA00783
  (5.67b+/IDA-1.5 for <mpi-comm@cs.utk.edu>); Wed, 22 Jun 1994 14:14:23 +0200
Disclaimer: "The National Aerospace Laboratory NLR DOES NOT ACCEPT ANY
              FINANCIAL COMMITMENT derived from this message."
Received: by uxmain.nlr.nl (5.61/1.34) id AA04992; Wed, 22 Jun 94 14:14:21 +0200
From: Klaas Jan Wierenga <wierenga@nlr.nl>
Message-Id: <9406221214.AA04992@uxmain.nlr.nl>
Subject: subscribe
To: mpi-comm@CS.UTK.EDU
Date: Wed, 22 Jun 1994 14:14:21 +0200 (DST)
X-Mailer: ELM [version 2.4 PL22]
Content-Type: text


From owner-mpi-comm@CS.UTK.EDU Wed Jun 22 09:58:12 1994
Received: from CS.UTK.EDU by netlib2.cs.utk.edu with ESMTP (cf v2.8t-netlib)
	id JAA01126; Wed, 22 Jun 1994 09:58:12 -0400
Received: from localhost by CS.UTK.EDU with SMTP (cf v2.9s-UTK)
	id JAA12203; Wed, 22 Jun 1994 09:56:37 -0400
X-Resent-To: mpi-comm@CS.UTK.EDU ; Wed, 22 Jun 1994 09:56:36 EDT
Errors-to: owner-mpi-comm@CS.UTK.EDU
Received: from gmdzi.gmd.de by CS.UTK.EDU with SMTP (cf v2.9s-UTK)
	id JAA12192; Wed, 22 Jun 1994 09:56:21 -0400
Received: from f1neuman.gmd.de (f1neuman) by gmdzi.gmd.de with SMTP id AA28483
  (5.65c8/IDA-1.4.4 for <mpi-comm@cs.utk.edu>); Wed, 22 Jun 1994 15:56:12 +0200
Received: by f1neuman.gmd.de (AIX 3.2/UCB 5.64/4.03)
          id AA17158; Wed, 22 Jun 1994 15:56:13 +0200
Date: Wed, 22 Jun 1994 15:56:13 +0200
From: Rolf.Hempel@gmd.de (Rolf Hempel)
Message-Id: <9406221356.AA17158@f1neuman.gmd.de>
To: mpi-comm@CS.UTK.EDU
Subject: data representation
Cc: gmap10@f1neuman.gmd.de, zimmermann@gmd.de

Hi folks,

during our work on an automatic PARMACS-->MPI translator the following
question came up: how can an MPI-process find out whether another
process runs on a processor with the same data representation or not?
In the first case I can just send a PARMACS buffer as type MPI_BYTE
without bothering about its contents, whereas in the second case I
have to do something special for every segment of the message. (A
message segment contains data of one type only.) For performance
reasons I don't want to go the second way in the 95% of cases where the
representations match.

I hoped for finding an inquiry function in the Environmental Management
section. The function MPI_GET PROCESSOR_NAME does not help, because
it gives different strings for different processors, not for different
types of processors.

Any brilliant idea? The only obvious way seems to be to send a test
message and look if the received message matches the original. However,
this method is not very precise, and complicated to use.

- Rolf
From owner-mpi-comm@CS.UTK.EDU Wed Jun 22 12:36:00 1994
Received: from CS.UTK.EDU by netlib2.cs.utk.edu with ESMTP (cf v2.8t-netlib)
	id MAA03210; Wed, 22 Jun 1994 12:36:00 -0400
Received: from localhost by CS.UTK.EDU with SMTP (cf v2.9s-UTK)
	id MAA00332; Wed, 22 Jun 1994 12:34:47 -0400
X-Resent-To: mpi-comm@CS.UTK.EDU ; Wed, 22 Jun 1994 12:34:46 EDT
Errors-to: owner-mpi-comm@CS.UTK.EDU
Received: from Aurora.CS.MsState.Edu by CS.UTK.EDU with SMTP (cf v2.9s-UTK)
	id MAA00311; Wed, 22 Jun 1994 12:34:42 -0400
Received:  by Aurora.CS.MsState.Edu (4.1/6.0s-FWP);
	   id AA07893; Wed, 22 Jun 94 11:33:48 CDT
Date: Wed, 22 Jun 94 11:33:48 CDT
From: Tony Skjellum <tony@Aurora.CS.MsState.Edu>
Message-Id: <9406221633.AA07893@Aurora.CS.MsState.Edu>
To: mpi-comm@CS.UTK.EDU, Rolf.Hempel@gmd.de
Subject: Re: data representation
Cc: gmap10@f1neuman.gmd.de, zimmermann@gmd.de

Rolf, MPI assumes that the information on process types will be managed
with groups or with communicators.  Specifically, a property of a communicator
could be its conversion protocol among its members.

So, your PARMACS translator should not need to address this issue. It must
be addressed by implementations of MPI that you use with your applications
thereafter.

-Tony



----- Begin Included Message -----

From owner-mpi-comm@CS.UTK.EDU Wed Jun 22 08:59:55 1994
X-Resent-To: mpi-comm@CS.UTK.EDU ; Wed, 22 Jun 1994 09:56:36 EDT
Date: Wed, 22 Jun 1994 15:56:13 +0200
From: Rolf.Hempel@gmd.de (Rolf Hempel)
To: mpi-comm@CS.UTK.EDU
Subject: data representation
Cc: gmap10@f1neuman.gmd.de, zimmermann@gmd.de
Content-Length: 1018

Hi folks,

during our work on an automatic PARMACS-->MPI translator the following
question came up: how can an MPI-process find out whether another
process runs on a processor with the same data representation or not?
In the first case I can just send a PARMACS buffer as type MPI_BYTE
without bothering about its contents, whereas in the second case I
have to do something special for every segment of the message. (A
message segment contains data of one type only.) For performance
reasons I don't want to go the second way in the 95% of cases where the
representations match.

I hoped for finding an inquiry function in the Environmental Management
section. The function MPI_GET PROCESSOR_NAME does not help, because
it gives different strings for different processors, not for different
types of processors.

Any brilliant idea? The only obvious way seems to be to send a test
message and look if the received message matches the original. However,
this method is not very precise, and complicated to use.

- Rolf


----- End Included Message -----


From owner-mpi-comm@CS.UTK.EDU Wed Jun 22 14:50:21 1994
Received: from CS.UTK.EDU by netlib2.cs.utk.edu with ESMTP (cf v2.8t-netlib)
	id OAA03902; Wed, 22 Jun 1994 14:50:21 -0400
Received: from localhost by CS.UTK.EDU with SMTP (cf v2.9s-UTK)
	id OAA10909; Wed, 22 Jun 1994 14:48:35 -0400
X-Resent-To: mpi-comm@CS.UTK.EDU ; Wed, 22 Jun 1994 14:48:26 EDT
Errors-to: owner-mpi-comm@CS.UTK.EDU
Received: from merckx.cse.ogi.edu by CS.UTK.EDU with SMTP (cf v2.9s-UTK)
	id OAA10873; Wed, 22 Jun 1994 14:48:23 -0400
Received: by merckx.cse.ogi.edu
	(1.37.109.4/16.2) id AA23040; Wed, 22 Jun 94 11:48:20 -0700
Date: Wed, 22 Jun 94 11:48:20 -0700
From: Steve Otto <otto@cse.ogi.edu>
Message-Id: <9406221848.AA23040@merckx.cse.ogi.edu>
To: mpi-comm@CS.UTK.EDU
Subject: Errata for MPI Spec


I am implementing an errata system as per Marc's suggestions; they
seem reasonable.

I will assemble an errata.

--Steve

>: -) :-) :-) *** (-: (-: (-:
>Date: Wed, 15 Jun 1994 18:00:02 -0400
>From: Marc Snir <snir@snir.watson.ibm.com>
>
>I suggest the following process:
>
>
>Major changes should be discussed now only if the text is
>inconsistent, and would require approval by the forum; syntactic
>corrections can be done by the chapter author(s).   The chapter
>author forwards the correction to the erata keeper (Steve?).  An MPI
>erata is maintained on netlib and updated at reasonable frequency
>(monthly?).  No new full version of the MPI document before it gets
>published as a book.  It would be useful, if possible, to put in the
>journal article a pointer to the erata.




From owner-mpi-comm@CS.UTK.EDU Thu Jun 23 08:50:19 1994
Received: from CS.UTK.EDU by netlib2.cs.utk.edu with ESMTP (cf v2.8t-netlib)
	id IAA00417; Thu, 23 Jun 1994 08:50:18 -0400
Received: from localhost by CS.UTK.EDU with SMTP (cf v2.9s-UTK)
	id IAA04994; Thu, 23 Jun 1994 08:47:12 -0400
X-Resent-To: mpi-comm@CS.UTK.EDU ; Thu, 23 Jun 1994 08:47:10 EDT
Errors-to: owner-mpi-comm@CS.UTK.EDU
Received: from gmdzi.gmd.de by CS.UTK.EDU with SMTP (cf v2.9s-UTK)
	id IAA04985; Thu, 23 Jun 1994 08:47:05 -0400
Received: from f1neuman.gmd.de (f1neuman) by gmdzi.gmd.de with SMTP id AA06183
  (5.65c8/IDA-1.4.4 for <mpi-comm@cs.utk.edu>); Thu, 23 Jun 1994 08:36:27 +0200
Received: by f1neuman.gmd.de (AIX 3.2/UCB 5.64/4.03)
          id AA17478; Thu, 23 Jun 1994 08:36:29 +0200
Date: Thu, 23 Jun 1994 08:36:29 +0200
From: Rolf.Hempel@gmd.de (Rolf Hempel)
Message-Id: <9406230636.AA17478@f1neuman.gmd.de>
To: mpi-comm@CS.UTK.EDU
Subject: Again: data representation
Cc: gmap10@f1neuman.gmd.de, zimmermann@gmd.de

I really don't want to bother you all with my problem of data
representation, but Tony's reply doesn't solve it. Therefore, I try
to explain the issue again.

Of course I know that MPI takes care of changing the data representation
between processors, if necessary. For this to work, however, MPI needs
a detailed specification of the the message contents (e.g. 4 integers,
followed by 10 doubles). In case the representations match, it is save
to send the message as a string of bytes with type MPI_BYTES (on a
machine with 4 bytes integers the above example would result in 96
bytes).

In a PARMACS application, the user creates the buffer himself.
Additionally, he specifies the contents of the buffer, as given in the
above example. If I translate this into MPI, I can save a lot of extra
work if I know that the message is going to a processor with the same
data representation. I just send the message as MPI_BYTES with the given
length. If the representations don't match, I either have to repack the
buffer segments using the pack/unpack routines, specifying for each
segment the corresponding MPI basic data type, or I have to build a
derived datatype for the whole message and then send the original
buffer with this type. I expect that both ways create a substantial
overhead, which should be avoided if the representations match. In the
first case, the message transmission requires two additional copies of
the whole message. I don't know how much time is spent in creating
the derived datatype for the second solution, but I hesitate to create
a derived datatype for every single message.

To summarize, it's not for reasons of functionality that I need to
know whether the data representations match, it's just for performance.
I hope that I could convince you that in terms of performance this
knowledge really does make a difference.

So, does anybody have an idea how I can get this piece of information?

- Rolf
From owner-mpi-comm@CS.UTK.EDU Thu Jun 23 18:20:18 1994
Received: from CS.UTK.EDU by netlib2.cs.utk.edu with ESMTP (cf v2.8t-netlib)
	id SAA04963; Thu, 23 Jun 1994 18:20:17 -0400
Received: from localhost by CS.UTK.EDU with SMTP (cf v2.9s-UTK)
	id SAA18080; Thu, 23 Jun 1994 18:19:24 -0400
X-Resent-To: mpi-comm@CS.UTK.EDU ; Thu, 23 Jun 1994 18:19:23 EDT
Errors-to: owner-mpi-comm@CS.UTK.EDU
Received: from merckx.cse.ogi.edu by CS.UTK.EDU with SMTP (cf v2.9s-UTK)
	id SAA18073; Thu, 23 Jun 1994 18:19:21 -0400
Received: by merckx.cse.ogi.edu
	(1.37.109.4/16.2) id AA21683; Thu, 23 Jun 94 15:19:16 -0700
Date: Thu, 23 Jun 94 15:19:16 -0700
From: Steve Otto <otto@cse.ogi.edu>
Message-Id: <9406232219.AA21683@merckx.cse.ogi.edu>
To: mpi-comm@CS.UTK.EDU
Subject: Re:  Again: data representation


	I'll have a go; Rolf raises some good issues.

>I really don't want to bother you all with my problem of data
>representation, but Tony's reply doesn't solve it. Therefore, I try
>to explain the issue again.

>Of course I know that MPI takes care of changing the data representation
>between processors, if necessary. For this to work, however, MPI needs
>a detailed specification of the the message contents (e.g. 4 integers,

	yes, you should specify the type signature

>followed by 10 doubles). In case the representations match, it is save
>to send the message as a string of bytes with type MPI_BYTES (on a
>machine with 4 bytes integers the above example would result in 96
>bytes).

	yes, it is safe to do this, but you are circumventing
	the recommended procedure.  If the machine architectures are
	"matching" then the MPI implementation should be smart enough
	to know that representation conversion is not necessary
	and it won't do it.  But, you don't specify BYTE as the type!

	and, there are a few other issues...

>In a PARMACS application, the user creates the buffer himself.
>Additionally, he specifies the contents of the buffer, as given in the
>above example. If I translate this into MPI, I can save a lot of extra
>work if I know that the message is going to a processor with the same
>data representation. I just send the message as MPI_BYTES with the given
>length. If the representations don't match, I either have to repack the
>buffer segments using the pack/unpack routines, specifying for each
>segment the corresponding MPI basic data type, or I have to build a

	OK, you want to do a direct translation from PARMACS, which has
	packing/unpacking.  And yes, if you use MPI's pack/unpack
	facilities, it is true that rep. conversion may "needlessly"
	occur since at pack time MPI does not necessarily know whether
	the architectures are matching or not.  But note that, if
	one is on a homogeneous system, MPI could easily avoid
	rep conversion, even for pack and unpack.  This could
	also be done on a group-by-group basis, since one 
	specifies a communicator
	with these calls, so if the process group is homogeneous, we
	could again make this optimization.

>derived datatype for the whole message and then send the original
>buffer with this type. I expect that both ways create a substantial
>overhead, which should be avoided if the representations match. In the
>first case, the message transmission requires two additional copies of
>the whole message. I don't know how much time is spent in creating
>the derived datatype for the second solution, but I hesitate to create
>a derived datatype for every single message.

	Yes, creating a derived datatype does entail some overhead,
	but note that it need not make additional copies of the data
	(that is, it need not assemble the data into a contiguous
	buffer of memory).

	So now, what about the overhead of constructing the derived
	datatype description itself (internal to MPI)?  OK, well,
	all you need to do is to use the datatype for multiple sends
	and recvs, and then you will have amortized the cost.  This
	should make the majority of applications happy.

>To summarize, it's not for reasons of functionality that I need to
>know whether the data representations match, it's just for performance.
>I hope that I could convince you that in terms of performance this
>knowledge really does make a difference.

	yes, but the way in which one gets performance in MPI may
	be different than in PARMACS --- in MPI, the recommended
	procedure is to create derived datatypes one time, then use
	them for lots of communications.  Another optimization
	with a similar spirit is to use "persistent communication
	requests" (that is, a channel-like construct)

>So, does anybody have an idea how I can get this piece of information?
>
>- Rolf


	--Steve Otto

From owner-mpi-comm@CS.UTK.EDU Fri Jun 24 23:25:21 1994
Received: from CS.UTK.EDU by netlib2.cs.utk.edu with ESMTP (cf v2.8t-netlib)
	id XAA12654; Fri, 24 Jun 1994 23:25:20 -0400
Received: from localhost by CS.UTK.EDU with SMTP (cf v2.9s-UTK)
	id XAA15647; Fri, 24 Jun 1994 23:23:13 -0400
X-Resent-To: mpi-comm@CS.UTK.EDU ; Fri, 24 Jun 1994 23:23:10 EDT
Errors-to: owner-mpi-comm@CS.UTK.EDU
Received: from antares.mcs.anl.gov by CS.UTK.EDU with ESMTP (cf v2.9s-UTK)
	id XAA15598; Fri, 24 Jun 1994 23:23:07 -0400
Received: from mcs.anl.gov (donner.mcs.anl.gov [140.221.5.134]) by antares.mcs.anl.gov (8.6.4/8.6.4) with ESMTP id WAA16071 for <mpi-comm@cs.utk.edu>; Fri, 24 Jun 1994 22:23:04 -0500
Message-Id: <199406250323.WAA16071@antares.mcs.anl.gov>
To: mpi-comm@CS.UTK.EDU
Subject: vote on mpi newsgroup
Date: Fri, 24 Jun 1994 22:23:03 -0500
From: Rusty Lusk <lusk@mcs.anl.gov>


Tony Skjellum has officially proposed a newsgroup dedicated to discussion of
all aspects of MPI  (See the CONTENT section below.)  The last call for
votes has appeared.  Establishment of newsgroups such as this one is far from
automatic (We need at least a 100-vote margin.) and so if you have not done so
already, please send 

      I vote YES on comp.parallel.mpi

to voting@qualcomm.com.

Rusty Lusk

______________________________________________________________________

In article <comp.parallel.mpi-CFV2@uunet.uu.net>, rdippold@qualcomm.com (Ron "Asbestos" Dippold) writes:

                     LAST CALL FOR VOTES (of 2)
                 unmoderated group comp.parallel.mpi

Newsgroups line:
comp.parallel.mpi       Message Passing Interface (MPI).

Votes must be received by 23:59:59 UTC, 6 July 1994.

After this CFV appears on news.announce.newgroups it will be sent to
the mailing lists <mpi-comm@cs.utk.edu>, <mpi-users@mcs.anl.gov>, and 
<dwf@lanl.gov> (David Forslund's moderated distributed computing list).

This vote is being conducted by a neutral third party.  For voting
questions only contact rdippold@qualcomm.com.  For questions about the
proposed group contact Tony Skjellum <tony@aurora.cs.msstate.edu>.



CHARTER

The newsgroup 'comp.parallel.mpi' would be a forum for discussing
issues related to the use and interpretation of MPI (Message Passing
Interface), an informal standard for writing message-passing programs.

MPI was created by the MPI Forum, a group of University, Industry, and
National Laboratory representatives including significant
international representation.  The MPI standard can be obtained from
netlib by sending the message "send draft-final.ps from mpi" to
netlib@ornl.gov.  Alternatively, one can anonymous ftp to
netlib2.cs.utk.edu.

More information about MPI can be obtained by reading the MPI FAQ which
is available by anonymous ftp at aurora.cs.msstate.edu in 
pub/mpi/faq/mpi-faq.ascii.   The FAQ is also available through the WWW at 
URL:
        http://www.cs.msstate.edu/dist_computing/mpi-faq.html

Furthermore, the URL for the full online manual of the standard, and
reference implementation is as follows:
        http://www.mcs.anl.gov/mpi/


RATIONALE

Discussion of MPI questions currently has no single home.
Discussion has appeared in newsgroups such as

        comp.parallel
        comp.parallel.pvm

A single group will centralize discussion and target the intended
audience of such posts more accurately.

It is also expected that there will be a wide audience for this
newsgroup as a result of the participation by many vendors, national
labs, and universities in the development of MPI.


CONTENT

Appropriate discussion in the group will include both general MPI
issues, platform-specific questions, and discussion comparing MPI to
other systems.  Some examples:


  General MPI Issues
        Answers to novices' questions
        Clarification of the standard document
        Exchange of public-domain MPI source code
        Implementation of various applications
        etc.

  Platform-specific issues
        Implementations available
                Peculiarities and bugs found in various implementations
        etc.

  Comparison to other systems
        P4, Express, LINDA, PVM, etc


HOW TO VOTE

Send MAIL to:   voting@qualcomm.com
Just Replying should work if you are not reading this on a mailing list.

Your mail message should contain one of the following statements:
      I vote YES on comp.parallel.mpi
      I vote NO on comp.parallel.mpi

You may also ABSTAIN in place of YES/NO - this will not affect the outcome.
Anything else may be rejected by the automatic vote counting program.  The
votetaker will respond to your received ballots with a personal acknowledge-
ment by mail - if you do not receive one within several days, try again.
It's your responsibility to make sure your vote is registered correctly.

One vote counted per person, no more than one per account. Addresses and
votes of all voters will be published in the final voting results list.



comp.parallel.mpi Bounce List - No need to revote
------------------------------------------------------------------------------
Bertrand.Le_Cun@inria.fr                            le-cun bertrand jean-marie
godson@uranium.cambridge.scr.slb.com                            Anthony Godson
hideaki@sol.crj.cray.com                                      Hideaki Moriyama

From owner-mpi-comm@CS.UTK.EDU Tue Jun 28 18:47:28 1994
Received: from CS.UTK.EDU by netlib2.cs.utk.edu with ESMTP (cf v2.8t-netlib)
	id SAA17025; Tue, 28 Jun 1994 18:47:28 -0400
Received: from localhost by CS.UTK.EDU with SMTP (cf v2.9s-UTK)
	id SAA02857; Tue, 28 Jun 1994 18:43:16 -0400
X-Resent-To: mpi-comm@CS.UTK.EDU ; Tue, 28 Jun 1994 18:43:15 EDT
Errors-to: owner-mpi-comm@CS.UTK.EDU
Received: from Aurora.CS.MsState.Edu by CS.UTK.EDU with SMTP (cf v2.9s-UTK)
	id SAA02850; Tue, 28 Jun 1994 18:43:14 -0400
Received:  by Aurora.CS.MsState.Edu (4.1/6.0s-FWP);
	   id AA26600; Tue, 28 Jun 94 17:41:21 CDT
Date: Tue, 28 Jun 94 17:41:21 CDT
From: Tony Skjellum <tony@Aurora.CS.MsState.Edu>
Message-Id: <9406282241.AA26600@Aurora.CS.MsState.Edu>
To: dwf@lanl.gov, mpi-comm@CS.UTK.EDU, mpi-users@mcs.anl.gov
Subject: Availability of UNIFY 0.9.1


Availability of UNIFY Version 0.9.1

The UNIFY system, which patches PVM 3.2, 3.2.6, or 3.3, provides
a subset of MPI within the PVM environment, without sacrificing
the PVM calls already available.  This system currently works
with the network versions of PVM, and has been tested with Sun
and SGI platforms.  It is easily installed.

The motivations for UNIFY are as follows:

*	Permit an easy learning curve for MPI to existing PVM users
*	Provide a dual-API mechanism for mixed PVM and MPI applications
*	Aid with the migration of codes from PVM syntax to MPI syntax
*	Provide a testbed for further MPI development

UNIFY is based on completely independent MPI code.  Version 0.9.1
provides a subset.  Subsequent version will provide the entire
MPI specification, and make use of the Argonne/Mississippi State
implementation.

Currently, UNIFY has the following limits:

*	SPMD model only
*	Static process creation
*	C Interface only

Who will use UNIFY?

*	Anyone who wants to learn MPI without reading the entire standards document
*	Anyone who wants to migrate applications to MPI
*	Anyone who wants to learn parallel programming, and is interested in comparing
	strategies for message-passing syntax and semantics 

We will aggressively update Unify as users send their requests,
bug reports, and suggestions.  

The following mailing addresses may be used:

	unify@erc.msstate.edu (suggestions, questions)
	unify-bugs@erc.msstate.edu (problem reports)

The software is available free, for all uses, from the following ftp site:

site:		ftp.erc.msstate.edu
directory:	unify/
Read the file "README" to get started.

UNIFY comes with a tutorial manual that explains the MPI calls that it supports,
explains installation, and provides a number of figures to help with intuition about
message-passing.

Sincerely,
Paula Vaughan
Anthony Skjellum
Donna Reese
NSF Engineering Research Center for Computational Field Simulation
Mississippi State University

From owner-mpi-comm@CS.UTK.EDU Fri Jul  1 16:49:13 1994
Received: from CS.UTK.EDU by netlib2.cs.utk.edu with ESMTP (cf v2.8t-netlib)
	id QAA20719; Fri, 1 Jul 1994 16:49:13 -0400
Received: from localhost by CS.UTK.EDU with SMTP (cf v2.9s-UTK)
	id QAA20484; Fri, 1 Jul 1994 16:46:34 -0400
X-Resent-To: mpi-comm@CS.UTK.EDU ; Fri, 1 Jul 1994 16:46:32 EDT
Errors-to: owner-mpi-comm@CS.UTK.EDU
Received: from mailhost.lanl.gov by CS.UTK.EDU with ESMTP (cf v2.9s-UTK)
	id QAA20475; Fri, 1 Jul 1994 16:46:29 -0400
Received: from wrangler.lanl.gov by mailhost.lanl.gov (8.6.8.1/1.2)
	id OAA15713; Fri, 1 Jul 1994 14:46:25 -0600
Received: from twinkie.lanl.gov by wrangler.lanl.gov (4.1/SMI-4.1)
	id AA03493; Fri, 1 Jul 94 14:46:25 MDT
Date: Fri, 1 Jul 94 14:46:25 MDT
From: rbarrett@wrangler.lanl.gov (Richard Barrett)
Message-Id: <9407012046.AA03493@wrangler.lanl.gov>
To: mpi-comm@CS.UTK.EDU

subscribe
From owner-mpi-comm@CS.UTK.EDU Sun Jul 10 16:32:33 1994
Received: from CS.UTK.EDU by netlib2.cs.utk.edu with ESMTP (cf v2.8t-netlib)
	id QAA04874; Sun, 10 Jul 1994 16:32:33 -0400
Received: from localhost by CS.UTK.EDU with SMTP (cf v2.9s-UTK)
	id QAA28057; Sun, 10 Jul 1994 16:29:30 -0400
X-Resent-To: mpi-comm@CS.UTK.EDU ; Sun, 10 Jul 1994 16:29:30 EDT
Errors-to: owner-mpi-comm@CS.UTK.EDU
Received: from watson.ibm.com by CS.UTK.EDU with SMTP (cf v2.9s-UTK)
	id QAA28050; Sun, 10 Jul 1994 16:29:28 -0400
Message-Id: <199407102029.QAA28050@CS.UTK.EDU>
Received: from YKTVMV by watson.ibm.com (IBM VM SMTP V2R3) with BSMTP id 0171;
   Sun, 10 Jul 94 16:29:24 EDT
Date: Sun, 10 Jul 94 15:50:48 EDT
From: "Marc Snir ((914) 945-3204)" <snir@watson.ibm.com>
To: mpi-comm@CS.UTK.EDU
Subject: enquiry for machine type
Reply-To: SNIR@watson.ibm.com

The requirement for an Environmental Enquiry that allows to find whether two
nodes use the same data representation is reasonable, irrespective of the
specific use that Rolf has in mind, for Parmacs emulation.  More generally,
users may want enquiry functions to find the type of node on which a process
runs.  This would help in situations where the user is willing to run on any
available machine on a network, but may want to use different code on different
machine types.

It is not reasonable to assume that the MPI forum will develop its own
nomenclature for data representations (size of each basic language data type,
big vs little endian, floating point format, character codes, etc.).
First because other standards try to handle this issue and, second, because
a complete characterization of the data representation used by a process
(which depends on the underlying machine architecture and on the compiler)
is likely to be quite lengthy.

We agreed that vendors can attach implementation specific predefined attributes
that are associated with MPI_COMM_WORLD.  I would suggest the following:

Associate a predefined attribute key MPI_PROC_TYPE with MPI_COMM_WORLD.  The
value of this attribute encodes the "type" of the executing process, i.e. the
type of data representation used by this process.  The meaning of the values of
this attribute is implementation dependent, except that if two processes return
the same value, then they use the same data representation  (i.e., data can be
moved untyped between these processes).

Implementers of MPI for homogeneous SPMD systems just need to always
return the same value (0?) with this attribute.   Implementers of MPI on
heterogeneous systems may need some work.

If this suggestion sounds reasonable, then the various MPI implementers may
accept it now as "common practice", and we can, at a latter time, add this
to the standard.
From owner-mpi-comm@CS.UTK.EDU Sun Jul 10 21:07:36 1994
Received: from CS.UTK.EDU by netlib2.cs.utk.edu with ESMTP (cf v2.8t-netlib)
	id VAA05399; Sun, 10 Jul 1994 21:07:36 -0400
Received: from localhost by CS.UTK.EDU with SMTP (cf v2.9s-UTK)
	id VAA16304; Sun, 10 Jul 1994 21:06:26 -0400
X-Resent-To: mpi-comm@CS.UTK.EDU ; Sun, 10 Jul 1994 21:06:25 EDT
Errors-to: owner-mpi-comm@CS.UTK.EDU
Received: from watson.ibm.com by CS.UTK.EDU with SMTP (cf v2.9s-UTK)
	id VAA16297; Sun, 10 Jul 1994 21:06:23 -0400
Message-Id: <199407110106.VAA16297@CS.UTK.EDU>
Received: from YKTVMV by watson.ibm.com (IBM VM SMTP V2R3) with BSMTP id 1147;
   Sun, 10 Jul 94 21:06:21 EDT
Date: Sun, 10 Jul 94 20:28:42 EDT
From: "Marc Snir ((914) 945-3204)" <snir@watson.ibm.com>
To: mpi-comm@CS.UTK.EDU

cc: frankeh, gropp at mcs.anl.gov, otto at cse.ogi.edu
Subject: Correction of Bill Gropp
Reply-To: SNIR@watson.ibm.com

Difference between 2 pointers to the same storage area should be of type
MPI_Aint, rather than int.  This is the assumption we go by in the
definition of MPI_Type_hvector and MPI_Tpe_hindexed.
If we want to be consistent, then we should use the same type MPI_Aint in
the functions that return such difference; thus,
MPI_Type_extent(..., MPI_Aint* extent)
MPI_Type_size(..., MPI_Aint* size)
MPI_Type_lb(..., MPI_Aint* displacement)
MPI_Type_ub(..., MPI_Aint *displacement)

Unless somebody objects, I would take this to be a bug in the current text,
which will be corrected as outlined above.

A similar issue:  Should the arguments POSITION and OUTCOUNT
in  MPI_PACK be of type int (as they are now) or of type MPI_Aint?
I.e., do we want to allow for a buffer with more than 2 Gbytes?

Finally, a syntactic correction:  MPI_PACK(..., OUTCOUNT,...) should be
MPI_PACK(..., OUTSIZE,...), similar to MPI_UNPACK(..., INSIZE,...).
OUTCOUNT is not a count of elements inserted in the buffer, but the
total buffer size.
From owner-mpi-comm@CS.UTK.EDU Mon Jul 11 02:03:37 1994
Received: from CS.UTK.EDU by netlib2.cs.utk.edu with ESMTP (cf v2.8t-netlib)
	id CAA07333; Mon, 11 Jul 1994 02:03:36 -0400
Received: from localhost by CS.UTK.EDU with SMTP (cf v2.9s-UTK)
	id CAA10093; Mon, 11 Jul 1994 02:02:48 -0400
X-Resent-To: mpi-comm@CS.UTK.EDU ; Mon, 11 Jul 1994 02:02:47 EDT
Errors-to: owner-mpi-comm@CS.UTK.EDU
Received: from gmdzi.gmd.de by CS.UTK.EDU with SMTP (cf v2.9s-UTK)
	id CAA10084; Mon, 11 Jul 1994 02:02:44 -0400
Received: from f1neuman.gmd.de (f1neuman) by gmdzi.gmd.de with SMTP id AA04263
  (5.65c8/IDA-1.4.4 for <mpi-comm@cs.utk.edu>); Mon, 11 Jul 1994 08:02:40 +0200
Received: by f1neuman.gmd.de (AIX 3.2/UCB 5.64/4.03)
          id AA17493; Mon, 11 Jul 1994 08:02:45 +0200
Date: Mon, 11 Jul 1994 08:02:45 +0200
From: Rolf.Hempel@gmd.de (Rolf Hempel)
Message-Id: <9407110602.AA17493@f1neuman.gmd.de>
To: mpi-comm@CS.UTK.EDU
Subject: Re: enquiry for machine type
Cc: falk.zimmermann@gmd.de, gmap10@f1neuman.gmd.de

Marc's suggestion to add a predefined attribute MPI_PROC_TYPE to
MPI_COMM_WORLD, which in two processes is set to the same value if and
only if the data representations match, would solve my problem.
Therefore, I would very much appreciate if this would find its way
into the standard at some later time. If the implementers agree to put
it into their implementations earlier, so much the better.

- Rolf
From owner-mpi-comm@CS.UTK.EDU Mon Jul 11 16:05:17 1994
Received: from CS.UTK.EDU by netlib2.cs.utk.edu with ESMTP (cf v2.8t-netlib)
	id QAA12380; Mon, 11 Jul 1994 16:05:17 -0400
Received: from localhost by CS.UTK.EDU with SMTP (cf v2.9s-UTK)
	id QAA25069; Mon, 11 Jul 1994 16:03:46 -0400
X-Resent-To: mpi-comm@CS.UTK.EDU ; Mon, 11 Jul 1994 16:03:40 EDT
Errors-to: owner-mpi-comm@CS.UTK.EDU
Received: from antares.mcs.anl.gov by CS.UTK.EDU with ESMTP (cf v2.9s-UTK)
	id QAA25061; Mon, 11 Jul 1994 16:03:37 -0400
Received: from mcs.anl.gov (donner.mcs.anl.gov [140.221.5.134]) by antares.mcs.anl.gov (8.6.4/8.6.4) with ESMTP id PAA22748; Mon, 11 Jul 1994 15:03:34 -0500
Message-Id: <199407112003.PAA22748@antares.mcs.anl.gov>
To: mpi-comm@CS.UTK.EDU
Subject: Correction on status argument to 3 routines
cc: otto@cse.ogi.edu, frankeh@watson.ibm.com, gropp@antares.mcs.anl.gov
Date: Mon, 11 Jul 1994 15:03:31 -0500
From: Rusty Lusk <lusk@mcs.anl.gov>


To go along with Marc's recent posting, I would like to take the C binding
error on three MPI routines as another "official" bug in the current text.
The input status argument on MPI_Get_count, MPI_Get_elements, and
MPI_Test_cancel should be passed as a pointer, not as a struct.  This error
crept in when we decided to make the MPI_Status object a non-opaque type.
There was not much response when I posted this before, but what there was
supported treating this as an error that could be fixed without collective
action. 

Specifically:

___________________________________________________________________________

Erratum:

The C bindings for MPI_Get_count, MPI_Get_elements, and MPI_Test_cancelled
should be as follows:

  int MPI_Get_count(MPI_Status *status, MPI_Datatype datatype, int *count) 
  int MPI_Get_elements(MPI_Status *status, MPI_Datatype datatype, int *count) 
  int MPI_Test_cancelled(MPI_Status *status, int *flag) 

instead of:

  int MPI_Get_count(MPI_Status status, MPI_Datatype datatype, int *count) 
  int MPI_Get_elements(MPI_Status status, MPI_Datatype datatype, int *count) 
  int MPI_Test_cancelled(MPI_Status status, int *flag) 

___________________________________________________________________________

We have made this change, along with Marc's on MPI_Aint, in the upcoming
release of our portable implementation, and in the "Using MPI" book.

Rusty and Bill and Tony
From owner-mpi-comm@CS.UTK.EDU Mon Jul 11 16:31:44 1994
Received: from CS.UTK.EDU by netlib2.cs.utk.edu with ESMTP (cf v2.8t-netlib)
	id QAA12574; Mon, 11 Jul 1994 16:31:44 -0400
Received: from localhost by CS.UTK.EDU with SMTP (cf v2.9s-UTK)
	id QAA27662; Mon, 11 Jul 1994 16:30:05 -0400
X-Resent-To: mpi-comm@CS.UTK.EDU ; Mon, 11 Jul 1994 16:30:02 EDT
Errors-to: owner-mpi-comm@CS.UTK.EDU
Received: from gaudi.nas.nasa.gov by CS.UTK.EDU with ESMTP (cf v2.9s-UTK)
	id QAA27624; Mon, 11 Jul 1994 16:29:56 -0400
Received: from localhost (fineberg@localhost)
	by gaudi.nas.nasa.gov (8.6.8.1/NAS.5.b) with SMTP id NAA04498; Mon, 11 Jul 1994 13:29:49 -0700
Message-Id: <199407112029.NAA04498@gaudi.nas.nasa.gov>
X-Authentication-Warning: gaudi.nas.nasa.gov: Host localhost didn't use HELO protocol
To: mpi-comm@CS.UTK.EDU
cc: fineberg@nas.nasa.gov
Subject: Re: Correction on status argument to 3 routines 
In-reply-to: Your message of "Mon, 11 Jul 1994 15:03:31 CDT."
             <199407112003.PAA22748@antares.mcs.anl.gov> 
Date: Mon, 11 Jul 1994 13:29:49 -0700
From: "Samuel A. Fineberg" <fineberg@nas.nasa.gov>

In message <199407112003.PAA22748@antares.mcs.anl.gov>Rusty Lusk writes
>
>To go along with Marc's recent posting, I would like to take the C binding
>error on three MPI routines as another "official" bug in the current text.
...
>
>We have made this change, along with Marc's on MPI_Aint, in the upcoming
>release of our portable implementation, and in the "Using MPI" book.
>

I have not been following the bug discussions very closely, but I would like
to see a summary of the bugs in the current standard document.  Has someone
made such a list, and if so, could you please mail it out and put it on the net
somewhere.

Thanks,
Sam

-----
Samuel A. Fineberg             Address: Numerical Aerodynamic Simulation
Computer Sciences Corporation           NASA Ames Research Center M/S 258-6
Applied Technology Division             Moffett Field, CA  94035-1000
e-mail: fineberg@nas.nasa.gov  Phone: (415)604-4319(voice) (415)604-4377(FAX)
See my home page at URL: "ftp://ftp.netcom.com/pub/fineberg/home-page.html"
From owner-mpi-comm@CS.UTK.EDU Tue Jul 12 09:41:56 1994
Received: from CS.UTK.EDU by netlib2.cs.utk.edu with ESMTP (cf v2.8t-netlib)
	id JAA21063; Tue, 12 Jul 1994 09:41:55 -0400
Received: from localhost by CS.UTK.EDU with SMTP (cf v2.9s-UTK)
	id JAA19445; Tue, 12 Jul 1994 09:39:57 -0400
X-Resent-To: mpi-comm@CS.UTK.EDU ; Tue, 12 Jul 1994 09:39:50 EDT
Errors-to: owner-mpi-comm@CS.UTK.EDU
Received: from watson.ibm.com by CS.UTK.EDU with SMTP (cf v2.9s-UTK)
	id JAA19438; Tue, 12 Jul 1994 09:39:48 -0400
Received: from WATSON by watson.ibm.com (IBM VM SMTP V2R3) with BSMTP id 1629;
   Tue, 12 Jul 94 09:39:51 EDT
Received: from YKTVMV by watson.vnet.ibm.com with "VAGENT.V1.0"
          id 5287; Tue, 12 Jul 1994 09:39:50 EDT
Received: from bubba.watson.ibm.com by yktvmv.watson.ibm.com (IBM VM SMTP V2R3)
   with TCP; Tue, 12 Jul 94 09:39:50 EDT
Received: from localhost by bubba.watson.ibm.com (AIX 3.2/UCB 5.64/930311)
          id AA24018; Tue, 12 Jul 1994 09:39:45 -0400
Message-Id: <9407121339.AA24018@bubba.watson.ibm.com>
To: Rusty Lusk <lusk@mcs.anl.gov>
Cc: mpi-comm@CS.UTK.EDU, otto@cse.ogi.edu, gropp@antares.mcs.anl.gov
Subject: Re: Correction on status argument to 3 routines
In-Reply-To: Your message of Mon, 11 Jul 1994 15:03:31 CDT.
             <199407112003.PAA22748@antares.mcs.anl.gov>
Date: Tue, 12 Jul 1994 09:39:45 -0400
From: "Hubertus Franke" <frankeh@watson.ibm.com>


Since you are willing to make a few changes let me
put you on the trail of another one.


I extract this out of the MPI-F include files.

#define MPI_DUP_FN   mpi_dup_fn
/* note the draft provides MPI_NULL_FN, however this violates
 * the prototype differences in usage for copy and delete function
 * In agreement with the public domain libary developers we
 * distinguish these functions
   #define MPI_NULL_FN
 */
#define MPI_NULL_COPY_FN    ...
#define MPI_NULL_DELETE_FN  ...


I've discussed this with Nathan Doss and I believe this
has been incorporated into the public domain version as well.

-- Hubertus

From owner-mpi-comm@CS.UTK.EDU Tue Jul 12 11:12:41 1994
Received: from CS.UTK.EDU by netlib2.cs.utk.edu with ESMTP (cf v2.8t-netlib)
	id LAA21814; Tue, 12 Jul 1994 11:12:40 -0400
Received: from localhost by CS.UTK.EDU with SMTP (cf v2.9s-UTK)
	id LAA28866; Tue, 12 Jul 1994 11:12:00 -0400
X-Resent-To: mpi-comm@CS.UTK.EDU ; Tue, 12 Jul 1994 11:11:59 EDT
Errors-to: owner-mpi-comm@CS.UTK.EDU
Received: from Phoenix.ERC.MsState.Edu by CS.UTK.EDU with ESMTP (cf v2.9s-UTK)
	id LAA28858; Tue, 12 Jul 1994 11:11:57 -0400
Received: from Cheers.ERC.MsState.Edu by Phoenix.ERC.MsState.Edu using ESMTP (8.6.8.1/6.0s-FWP);
	   id KAA23188; Tue, 12 Jul 1994 10:12:42 -0500
From: Tony Skjellum <tony@ERC.MsState.Edu>
Received:  by Cheers.ERC.MsState.Edu (8.6.8.1/6.0c-FWP);
	   id KAA24529; Tue, 12 Jul 1994 10:10:54 -0500
Date: Tue, 12 Jul 1994 10:10:54 -0500
Message-Id: <199407121510.KAA24529@Cheers.ERC.MsState.Edu>
To: mpi-comm@CS.UTK.EDU
Subject: comp.parallel.mpi passes
Cc: mpi-users@mcs.anl.gov

Please see note below.  It was 506:14, with one abstention.  Please ask your
USENET site administrators to begin carrying comp.parallel.mpi.  - Regards,
Tony Skjellum

PS I have suppressed the voting list in what follows, for brevity, but
you can read it on news.announce.newgroups.

Path: nntp.msstate.edu!emory!swrinde!news.dell.com!tadpole.com!uunet!bounce-back
~From: rdippold@qualcomm.com (Ron "Asbestos" Dippold)
~Newsgroups: news.announce.newgroups,news.groups,comp.parallel.pvm,comp.parallel
~Subject: RESULT: comp.parallel.mpi passes 506:14
Supersedes: <comp.parallel.mpi-CFV2@uunet.uu.net>
Followup-To: news.groups
~Date: 11 Jul 1994 23:49:54 -0400
Organization: Usenet Volunteer Votetakers
~Lines: 617
~Sender: tale@uunet.uu.net
Approved: tale@uunet.uu.net, parallel@hubcap.clemson.edu
Message-ID: <comp.parallel.mpi-RESULT@uunet.uu.net>
~References: <comp.parallel.mpi-RFD1@uunet.uu.net> <comp.parallel.mpi-CFV1@uunet.uu.net> <comp.parallel.mpi-CFV2@uunet.uu.net>
NNTP-Posting-Host: rodan.uu.net
~Xref: nntp.msstate.edu news.announce.newgroups:4584 news.groups:86017 comp.parallel.pvm:2184 comp.parallel:8578

                               RESULT
	  unmoderated group comp.parallel.mpi passes 506:14

There were 506 YES votes and 14 NO votes, for a total of 520 valid votes. 
There was 1 abstain.

For group passage, YES votes must be at least 2/3 of all valid (YES and NO)
votes.   There also must be at least 100 more YES votes than NO votes. 

There is a five day discussion period after these results are posted.  If no
serious allegations of voting irregularities are raised, the moderator of
news.announce.newgroups will create the group shortly thereafter.


Newsgroups line:
comp.parallel.mpi	Message Passing Interface (MPI).

This vote is being conducted by a neutral third party.  For voting
questions only contact rdippold@qualcomm.com.  For questions about the
proposed group contact Tony Skjellum <tony@aurora.cs.msstate.edu>.



CHARTER

The newsgroup 'comp.parallel.mpi' would be a forum for discussing
issues related to the use and interpretation of MPI (Message Passing
Interface), an informal standard for writing message-passing programs.

MPI was created by the MPI Forum, a group of University, Industry, and
National Laboratory representatives including significant
international representation.  The MPI standard can be obtained from
netlib by sending the message "send draft-final.ps from mpi" to
netlib@ornl.gov.  Alternatively, one can anonymous ftp to
netlib2.cs.utk.edu.

More information about MPI can be obtained by reading the MPI FAQ which
is available by anonymous ftp at aurora.cs.msstate.edu in 
pub/mpi/faq/mpi-faq.ascii.   The FAQ is also available through the WWW at 
URL:
        http://www.cs.msstate.edu/dist_computing/mpi-faq.html

Furthermore, the URL for the full online manual of the standard, and
reference implementation is as follows:
        http://www.mcs.anl.gov/mpi/


RATIONALE

Discussion of MPI questions currently has no single home.
Discussion has appeared in newsgroups such as

        comp.parallel
        comp.parallel.pvm

A single group will centralize discussion and target the intended
audience of such posts more accurately.

It is also expected that there will be a wide audience for this
newsgroup as a result of the participation by many vendors, national
labs, and universities in the development of MPI.


CONTENT

Appropriate discussion in the group will include both general MPI
issues, platform-specific questions, and discussion comparing MPI to
other systems.  Some examples:


  General MPI Issues
        Answers to novices' questions
        Clarification of the standard document
        Exchange of public-domain MPI source code
        Implementation of various applications
        etc.

  Platform-specific issues
        Implementations available
                Peculiarities and bugs found in various implementations
        etc.

  Comparison to other systems
        P4, Express, LINDA, PVM, etc


comp.parallel.mpi Final Vote Ack

From owner-mpi-comm@CS.UTK.EDU Wed Jul 13 13:41:51 1994
Received: from CS.UTK.EDU by netlib2.cs.utk.edu with ESMTP (cf v2.8t-netlib)
	id NAA02587; Wed, 13 Jul 1994 13:41:51 -0400
Received: from localhost by CS.UTK.EDU with SMTP (cf v2.9s-UTK)
	id NAA12963; Wed, 13 Jul 1994 13:39:08 -0400
X-Resent-To: mpi-comm@CS.UTK.EDU ; Wed, 13 Jul 1994 13:39:07 EDT
Errors-to: owner-mpi-comm@CS.UTK.EDU
Received: from antares10.mcs.anl.gov by CS.UTK.EDU with ESMTP (cf v2.9s-UTK)
	id NAA12931; Wed, 13 Jul 1994 13:39:03 -0400
Received: from mcs.anl.gov (donner.mcs.anl.gov [140.221.5.134]) by antares10.mcs.anl.gov (8.6.4/8.6.4) with ESMTP id MAA05673; Wed, 13 Jul 1994 12:38:50 -0500
Message-Id: <199407131738.MAA05673@antares10.mcs.anl.gov>
To: mpi-users@antares10.mcs.anl.gov, mpi-comm@CS.UTK.EDU
cc: lusk@antares10.mcs.anl.gov
Subject: New release of portable MPI implementation
Date: Wed, 13 Jul 1994 12:38:46 -0500
From: Rusty Lusk <lusk@mcs.anl.gov>


A new version of the Argonne - Mississippi State portable MPI implementation
is available by anonymous ftp from info.mcs.anl.gov, in the directory pub/mpi.
Take the file mpich-Jul13.tar.Z.  See the README file in the distribution for
details of building, installing, and running the new version.  A copy of the
README is also in the ftp directory.

New in the July 13, 1994 version:

  Tested on the Meiko CS2 (configure -device=ch_p4 -arch=meiko)

  Tested on the SGI Onyx

  Enhanced upshot that can read ParaGraph log files

  Better installation procedures (make install PREFIX=/usr/local/mpi).  The
    examples subdirectory will contain a location-independent Makefile
    that can be copied and modified for user programs.

  Better support for sites without Fortran  (configure .... -nof77)

  An early version of a portable command for launching mpi programs (in
    util/mpirun).  It knows about workstation networks, the Meiko CS-2, the
    Intel Paragon, and the IBM SP1.
  
  MPI executables built with the ch_p4 device can be started on clusters by
  the next release of DQS, which is currently being tested.

  The "Errata" in the May 5th draft recently posted by Steve Otto have been
    incorporated:  the input status argument to the C versions of
    MPI_Get_count, MPI_Get-elements, and MPI_Test_cancelled is now passed as a
    pointer, and several arguments specified as ints have changed to
    MPI_Aints.  For details, see the Errata posted on netlib.

Problem reports to mpi-bugs@mcs.anl.gov.
 
Nathan Doss
Bill Gropp
Rusty Lusk
Tony Skjellum


From owner-mpi-comm@CS.UTK.EDU Wed Jul 13 14:19:00 1994
Received: from CS.UTK.EDU by netlib2.cs.utk.edu with ESMTP (cf v2.8t-netlib)
	id OAA02903; Wed, 13 Jul 1994 14:18:59 -0400
Received: from localhost by CS.UTK.EDU with SMTP (cf v2.9s-UTK)
	id OAA17579; Wed, 13 Jul 1994 14:17:58 -0400
X-Resent-To: mpi-comm@CS.UTK.EDU ; Wed, 13 Jul 1994 14:17:56 EDT
Errors-to: owner-mpi-comm@CS.UTK.EDU
Received: from watson.ibm.com by CS.UTK.EDU with SMTP (cf v2.9s-UTK)
	id OAA17562; Wed, 13 Jul 1994 14:17:54 -0400
Received: from WATSON by watson.ibm.com (IBM VM SMTP V2R3) with BSMTP id 3001;
   Wed, 13 Jul 94 14:17:56 EDT
Received: from YKTVMV by watson.vnet.ibm.com with "VAGENT.V1.0"
          id 4789; Wed, 13 Jul 1994 14:17:55 EDT
Received: from snir.watson.ibm.com by yktvmv.watson.ibm.com (IBM VM SMTP V2R3)
   with TCP; Wed, 13 Jul 94 14:17:53 EDT
Received: from localhost by snir.watson.ibm.com (AIX 3.2/UCB 5.64/930311)
          id AA17666; Wed, 13 Jul 1994 14:17:47 -0400
Message-Id: <9407131817.AA17666@snir.watson.ibm.com>
To: mpi-comm@CS.UTK.EDU
Cc: simonc@epcc.ed.ac.uk, frankeh@watson.ibm.com
Subject: Suggestions of S R Chapple on section 3.7.5.
Reply-To: snir@watson.ibm.com
Date: Wed, 13 Jul 1994 14:17:47 -0400
From: Marc Snir <snir@watson.ibm.com>

:-) :-) :-) *** (-: (-: (-:


I got some time ago a note from S R Chapple that points at some
problems in the definition of the behavior of
MPI_{TEST|WAIT}{ |ANY|SOME|ALL} when supplied with a list of handles that are
all null or inactive (there is no debate about the "normal" behavior of these
functions.)

Let's call this situation, for short, "empty list".  Let's call the status that
signals no message (tag = MPI_ANY_TAG, source = MPI_ANY_SOURCE, count = 0) the
"null status".

The changes Chapple suggests:

1. TEST and TESTANY should return flag = TRUE on an empty list (rather than
current flag = FALSE).  In addition, TEST will return a null status (currently,
it does not set the status).

Note that TESTANY will return index = MPI_UNDEFINED on an empty list.

Thus, for TEST flag=TRUE and status = 'null' indicates that there is no pending
communication to wait; flag=TRUE and status != 'null' indicates that a
communication completed; and flag = FALSE indicates that the communication has
not complete.

For TESTANY, flag = FALSE inidcates that no communication completed; flag =
TRUE and index = MPI_UNDEFINED will indicate that there is no communication
to wait for; and flag = TRUE and index != MPI_UNDEFINED will indicate that a
communication completed.
  	

Reasons for change:
Need to distinguish TESTANY returning (with flag = FALSE, index =
MPI_UNDEFINED) because none of the pending communications completed,
and TESTANY returning (now with flag = TRUE, index = MPI_UNDEFINED)
because there is no communication to complete.

Similarly, need to distinguish TEST returning (with flag = FALSE) because the
pending communication has not completed, and TEST returning (now with
flag = TRUE, status = "null") because there is no pending communication.

With the change, busy waiting on list of communications would go like

while(1) {
   /* busy wait until flag=1 */
   while (!{MPI_Testany(count, reqs, &idx, &flag, &status); flag}) ;
   if(idx == MPI_UNDEFINED) break; /* no more requests */
   do_something(reqs, &idx, &status); /* else handle completed
communication*/
   }

2.  WAITSOME and TESTSOME should return outcount = MPI_UNDEFINED on an empty
list (rather than outcount = 0).

Reason for change:
Need to distinguish TESTSOME returning (with outcount = 0) because no
communication has completed, and TESTSOME returning (with outcount =
MPI_UNDEFINED) because there is no operation to complete.  WAITSOME is modified
in order to be consistent with TESTSOME.

Thus, a loop that deals for all communications in a list could be written as

while(1) {
   MPI_Waitsome(incnt, reqs, &outcnt, indxs, statuses);
   if (outcnt == MPI_UNDEFINED) break;
   for(i=0; i<outcnt; i++) do_something(reqs[indxs[i]],statuses[indxs[i]]);
   }

Same will work with WAITSOME replace by TESTSOME.

After this change, the overall logic of these operations on an empty input is
as follows:

1. TEST{ |ANY|SOME} returns immediatly, with flag = TRUE.

2. Operations that can complete only part of the requests in the list, namely
{WAIT | TEST}{ANY | SOME} will return an MPI_UNDEFINED value in the index {ANY}
or outcount {SOME} that specifies the
completed request(s), to indicate there was no request to complete.

3. The other operations, namely {TEST | WAIT}{ | ALL}, set the status
of all requests that where invalid/inactive to the "null status".


I agree with these changes -- they simplify the design and make it more
consistent and useful. Also, the changes are quite minor.  However, this is a
clear departure from the current text, motivated by useability considerations,
that will need approval by the forum.

Comments?




From owner-mpi-comm@CS.UTK.EDU Wed Jul 13 14:33:36 1994
Received: from CS.UTK.EDU by netlib2.cs.utk.edu with ESMTP (cf v2.8t-netlib)
	id OAA03007; Wed, 13 Jul 1994 14:33:36 -0400
Received: from localhost by CS.UTK.EDU with SMTP (cf v2.9s-UTK)
	id OAA19265; Wed, 13 Jul 1994 14:32:54 -0400
X-Resent-To: mpi-comm@CS.UTK.EDU ; Wed, 13 Jul 1994 14:32:53 EDT
Errors-to: owner-mpi-comm@CS.UTK.EDU
Received: from watson.ibm.com by CS.UTK.EDU with SMTP (cf v2.9s-UTK)
	id OAA19258; Wed, 13 Jul 1994 14:32:51 -0400
Received: from WATSON by watson.ibm.com (IBM VM SMTP V2R3) with BSMTP id 3287;
   Wed, 13 Jul 94 14:32:54 EDT
Received: from YKTVMV by watson.vnet.ibm.com with "VAGENT.V1.0"
          id 9617; Wed, 13 Jul 1994 14:32:54 EDT
Received: from snir.watson.ibm.com by yktvmv.watson.ibm.com (IBM VM SMTP V2R3)
   with TCP; Wed, 13 Jul 94 14:32:53 EDT
Received: from localhost by snir.watson.ibm.com (AIX 3.2/UCB 5.64/930311)
          id AA27423; Wed, 13 Jul 1994 14:32:49 -0400
Message-Id: <9407131832.AA27423@snir.watson.ibm.com>
To: mpi-comm@CS.UTK.EDU
Cc: simonc@epcc.ed.ac.uk, frankeh@watson.ibm.com
Subject: Another proposal by Chapple
Reply-To: snir@watson.ibm.com
Date: Wed, 13 Jul 1994 14:32:48 -0400
From: Marc Snir <snir@watson.ibm.com>

:-) :-) :-) *** (-: (-: (-:

Chapple proposes to add to MPI a "null status pointer".  If a communication
function that receives a status (array of statuses) argument is passed,
instead, the value MPI_STATUS_NULL, then this function need not return a status
for the completed communication(s).  This allows to save the cost of setting
status information when this information is not needed, at the expense of an
additional test.

This proposal needs to be refined somewhat (e.g., status and array_of_statuses
are not of the same type).

Since this is additional functionality, not a correction of the current
definition, I would suggest to postpone discussion of this suggestion
to a later date.


From owner-mpi-comm@CS.UTK.EDU Fri Jul 15 11:44:55 1994
Received: from CS.UTK.EDU by netlib2.cs.utk.edu with ESMTP (cf v2.8t-netlib)
	id LAA22152; Fri, 15 Jul 1994 11:44:54 -0400
Received: from localhost by CS.UTK.EDU with SMTP (cf v2.9s-UTK)
	id LAA13345; Fri, 15 Jul 1994 11:42:43 -0400
X-Resent-To: mpi-comm@CS.UTK.EDU ; Fri, 15 Jul 1994 11:42:42 EDT
Errors-to: owner-mpi-comm@CS.UTK.EDU
Received: from super by CS.UTK.EDU with SMTP (cf v2.9s-UTK)
	id LAA13338; Fri, 15 Jul 1994 11:42:41 -0400
Received: from b125.super.org by super (4.1/SMI-4.1)
	id AA07496; Fri, 15 Jul 94 11:42:40 EDT
Date: Fri, 15 Jul 94 11:42:40 EDT
From: lederman@super.org (Steve Huss-Lederman)
Message-Id: <9407151542.AA07496@super>
Received: by b125.super.org (4.1/SMI-4.1)
	id AA04680; Fri, 15 Jul 94 11:42:40 EDT
To: mpi-comm@CS.UTK.EDU
Subject: clarification of reduce with complex datatypes

Hello MPIers,

The discussion of how to do reduce on complex values seems to have
slowed down on mpi-core.  I propose the following clarification to the
MPI standard text (I call it a clarification instead of a change since
the current text is vague).  I don't think (hope :-) that this
requires a vote.  I believe it is consistent with the discussion.  I
am posting to mpi-comm to make sure everyone interested will see this.
As always, I welcome comments.

Steve
----------------------------------------------------------------------
Proposed insertion of text on p. 113 line 40 of April 21 version:

MPI_MAX and MPI_MIN on complex datatype values use the modulus
(absolute value) to determine the ordering.  The result returned in
recvbuf is the complex value for which the maximum or minimum occurred.

\rationale{
Unlike other datatypes, the maximum/minimum of a complex value is of a
different datatype (floating point) and value than the input.  Since
the maximum/minimum can easily be determined from the complex value
but the inverse operation is not unique, it was decided to return the
complex value.  As a result, the user is not returned the actual
maximum/minimum for complex values as is true for the other datatypes.
}

A further consideration with complex arguments is what value to return
when the modulus is the same for two input arguments.  For other
datatypes, the output value would be the same if the maximum/minimum
were equal.  For this case with complex values, MPI_MAX and MPI_MIN
are defined as:

If $|a| = |b|$ then  $\rm{Max}(a,b) = a$ and $\rm{Min}(a,b) = a$.

Thus, the first entry (lowest rank) with the maximum/minimum modulus
will be returned.  This definition means that MPI_MAXLOC and
MPI_MINLOC will return the same value as MPI_MAX and MPI_MIN when two
input values have the same modulus.
----------------------------------------------------------------------
Change to p. 112 line 20:

All predefined operations are also assumed to be commutative

should become

All predefined operations are also assumed to be commutative with the
exception of max and min on complex datatypes.
----------------------------------------------------------------------
Insertion to p. 115 line 17:

If MPI_MAXLOC or MPI_MINLOC is applied to a complex value then $u > v$
becomes $ |u| < |v|$ and similarly for $u = v$ and $u < v$ in the
above definitions.
----------------------------------------------------------------------
From owner-mpi-comm@CS.UTK.EDU Fri Jul 15 12:14:56 1994
Received: from CS.UTK.EDU by netlib2.cs.utk.edu with ESMTP (cf v2.8t-netlib)
	id MAA23214; Fri, 15 Jul 1994 12:14:56 -0400
Received: from localhost by CS.UTK.EDU with SMTP (cf v2.9s-UTK)
	id MAA15847; Fri, 15 Jul 1994 12:14:05 -0400
X-Resent-To: mpi-comm@CS.UTK.EDU ; Fri, 15 Jul 1994 12:14:03 EDT
Errors-to: owner-mpi-comm@CS.UTK.EDU
Received: from hub.meiko.co.uk by CS.UTK.EDU with SMTP (cf v2.9s-UTK)
	id MAA15838; Fri, 15 Jul 1994 12:14:01 -0400
Received: from tycho.co.uk (tycho.meiko.co.uk) by hub.meiko.co.uk with SMTP id AA16918
  (5.65c/IDA-1.4.4 for mpi-comm@CS.UTK.EDU); Fri, 15 Jul 1994 17:13:48 +0100
Received: by tycho.co.uk (5.0/SMI-SVR4)
	id AA05620; Fri, 15 Jul 1994 17:13:41 +0000
Date: Fri, 15 Jul 1994 17:13:41 +0000
From: jim@meiko.co.uk (James Cownie)
Message-Id: <9407151613.AA05620@tycho.co.uk>
To: lederman@super.org
Cc: mpi-comm@CS.UTK.EDU
In-Reply-To: <9407151542.AA07496@super> (lederman@super.org)
Subject: Re: clarification of reduce with complex datatypes

Steve, 

I think you are making an unnecessary distinction when you say 

" As a result, the user is not returned the actual maximum/minimum for
complex values as is true for the other datatypes."

If we just say that we always return the input element which has the
maximum or minimum value, then complex is no different from any other
type. The difference is just that the comparison is based on a
function of the input value (in this case its modulus), rather than
the input value itself.

This doesn't actually change anything, because for all the other types
the input element which has the max or min value IS identically the
max or min value. 

-- Jim 
James Cownie 
Meiko Limited			Meiko Inc.
650 Aztec West			130C Baker Avenue Ext.
Bristol BS12 4SD		Concord
England				MA 01742

Phone : +44 454 616171		+1 508 371 0088
FAX   : +44 454 618188		+1 508 371 7516
E-Mail: jim@meiko.co.uk   or    jim@meiko.com
WWW   : http://www.meiko.com:8080/welcome.html
From owner-mpi-comm@CS.UTK.EDU Fri Jul 15 12:31:46 1994
Received: from CS.UTK.EDU by netlib2.cs.utk.edu with ESMTP (cf v2.8t-netlib)
	id MAA23908; Fri, 15 Jul 1994 12:31:46 -0400
Received: from localhost by CS.UTK.EDU with SMTP (cf v2.9s-UTK)
	id MAA17555; Fri, 15 Jul 1994 12:31:08 -0400
X-Resent-To: mpi-comm@CS.UTK.EDU ; Fri, 15 Jul 1994 12:31:07 EDT
Errors-to: owner-mpi-comm@CS.UTK.EDU
Received: from epcc.ed.ac.uk by CS.UTK.EDU with SMTP (cf v2.9s-UTK)
	id MAA17546; Fri, 15 Jul 1994 12:31:02 -0400
Date: Fri, 15 Jul 94 17:30:43 BST
Message-Id: <16258.9407151630@subnode.epcc.ed.ac.uk>
From: L J Clarke <lyndon@epcc.ed.ac.uk>
Subject: Re: clarification of reduce with complex datatypes
To: lederman@super.org (Steve Huss-Lederman), mpi-comm@CS.UTK.EDU
In-Reply-To: Steve Huss-Lederman's message of Fri, 15 Jul 94 11:42:40 EDT
Reply-To: lyndon@epcc.ed.ac.uk

So we are saying that we take the max/min for complex according to
modulus thereof.  Why dont we just not offer max/min of complex in MPI. 
In no other case do we offer max/min of function(data), just max/min of
data.  The user can easily store the modulus in a real (or double)
array, and do max/min on that. 

1c
Lyndon

         /--------------------------------------------------------\
    e||) | Lyndon J Clarke    Edinburgh Parallel Computing Centre | e||) 
    c||c | Tel: 031 650 5021  Email: lyndon@epcc.edinburgh.ac.uk  | c||c 
         \--------------------------------------------------------/


From owner-mpi-comm@CS.UTK.EDU Fri Jul 15 14:33:25 1994
Received: from CS.UTK.EDU by netlib2.cs.utk.edu with ESMTP (cf v2.8t-netlib)
	id OAA24932; Fri, 15 Jul 1994 14:33:25 -0400
Received: from localhost by CS.UTK.EDU with SMTP (cf v2.9s-UTK)
	id OAA24997; Fri, 15 Jul 1994 14:31:56 -0400
X-Resent-To: mpi-comm@CS.UTK.EDU ; Fri, 15 Jul 1994 14:31:50 EDT
Errors-to: owner-mpi-comm@CS.UTK.EDU
Received: from Aurora.CS.MsState.Edu by CS.UTK.EDU with SMTP (cf v2.9s-UTK)
	id OAA24988; Fri, 15 Jul 1994 14:31:48 -0400
Received:  by Aurora.CS.MsState.Edu (4.1/6.0s-FWP);
	   id AA21592; Fri, 15 Jul 94 13:27:22 CDT
Date: Fri, 15 Jul 94 13:27:22 CDT
From: Tony Skjellum <tony@Aurora.CS.MsState.Edu>
Message-Id: <9407151827.AA21592@Aurora.CS.MsState.Edu>
To: lederman@super.org, mpi-comm@CS.UTK.EDU, lyndon@epcc.ed.ac.uk
Subject: Re: clarification of reduce with complex datatypes


I concur with Lyndon's suggestion!
-Tony


----- Begin Included Message -----

From owner-mpi-comm@CS.UTK.EDU Fri Jul 15 11:29:00 1994
X-Resent-To: mpi-comm@CS.UTK.EDU ; Fri, 15 Jul 1994 12:31:07 EDT
Date: Fri, 15 Jul 94 17:30:43 BST
From: L J Clarke <lyndon@epcc.ed.ac.uk>
Subject: Re: clarification of reduce with complex datatypes
To: lederman@super.org (Steve Huss-Lederman), mpi-comm@CS.UTK.EDU
Reply-To: lyndon@epcc.ed.ac.uk
Content-Length: 609

So we are saying that we take the max/min for complex according to
modulus thereof.  Why dont we just not offer max/min of complex in MPI. 
In no other case do we offer max/min of function(data), just max/min of
data.  The user can easily store the modulus in a real (or double)
array, and do max/min on that. 

1c
Lyndon

         /--------------------------------------------------------\
    e||) | Lyndon J Clarke    Edinburgh Parallel Computing Centre | e||) 
    c||c | Tel: 031 650 5021  Email: lyndon@epcc.edinburgh.ac.uk  | c||c 
         \--------------------------------------------------------/




----- End Included Message -----

From owner-mpi-comm@CS.UTK.EDU Mon Jul 18 19:41:23 1994
Received: from CS.UTK.EDU by netlib2.cs.utk.edu with ESMTP (cf v2.8t-netlib)
	id TAA17480; Mon, 18 Jul 1994 19:41:23 -0400
Received: from localhost by CS.UTK.EDU with SMTP (cf v2.9s-UTK)
	id TAA28948; Mon, 18 Jul 1994 19:37:31 -0400
X-Resent-To: mpi-comm@CS.UTK.EDU ; Mon, 18 Jul 1994 19:37:30 EDT
Errors-to: owner-mpi-comm@CS.UTK.EDU
Received: from merckx.cse.ogi.edu by CS.UTK.EDU with SMTP (cf v2.9s-UTK)
	id TAA28941; Mon, 18 Jul 1994 19:37:24 -0400
Received: by merckx.cse.ogi.edu
	(1.37.109.4/16.2) id AA28606; Mon, 18 Jul 94 16:37:18 -0700
Date: Mon, 18 Jul 94 16:37:18 -0700
From: Steve Otto <otto@cse.ogi.edu>
Message-Id: <9407182337.AA28606@merckx.cse.ogi.edu>
To: mpi-comm@CS.UTK.EDU
Subject: complex. sigh.


	In a blinding flash of clarity, Jim Cownie said:

>This doesn't actually change anything, because for all the other types
>the input element which has the max or min value IS identically the
>max or min value. 

	So it just isn't such a big deal, and no, we aren't changing 
	the standard.

	We also hear:

>So we are saying that we take the max/min for complex according to
>modulus thereof.  Why dont we just not offer max/min of complex in MPI. 
>In no other case do we offer max/min of function(data), just max/min of
>data.  The user can easily store the modulus in a real (or double)
>array, and do max/min on that. 

	Ah...no.  Think like a Fortran person.  COMPLEX is fundamental
	and a Fortran person wants the operation.

	What is this business about this one being so special because it
	uses a "function"?  They *all* use a function, it's just that in
	some cases the function looks a little simpler than in other cases.
	No big deal.  What we have decided upon is natural for type COMPLEX.
	And remember that there is no C datatype corresponding to type
	MPI_COMPLEX.

	--Steve Otto
From owner-mpi-comm@CS.UTK.EDU Mon Jul 18 20:03:29 1994
Received: from CS.UTK.EDU by netlib2.cs.utk.edu with ESMTP (cf v2.8t-netlib)
	id UAA17511; Mon, 18 Jul 1994 20:03:29 -0400
Received: from localhost by CS.UTK.EDU with SMTP (cf v2.9s-UTK)
	id UAA00288; Mon, 18 Jul 1994 20:02:00 -0400
X-Resent-To: mpi-comm@CS.UTK.EDU ; Mon, 18 Jul 1994 20:01:58 EDT
Errors-to: owner-mpi-comm@CS.UTK.EDU
Received: from almaden.ibm.com by CS.UTK.EDU with SMTP (cf v2.9s-UTK)
	id UAA00280; Mon, 18 Jul 1994 20:01:56 -0400
Received: from ALMADEN by almaden.ibm.com (IBM VM SMTP V2R2) with BSMTP id 2758;
   Mon, 18 Jul 94 16:58:52 PDT
Received: by ALMADEN (XAGENTA 3.0) id 6285; Mon, 18 Jul 1994 16:58:51 -0700
Received: by vincennes.almaden.ibm.com (AIX 3.2/UCB 5.64/4.03)
          id AA13965; Mon, 18 Jul 1994 17:01:37 -0700
Message-Id: <9407190001.AA13965@vincennes.almaden.ibm.com>
To: mpi-comm@CS.UTK.EDU
Date: Mon, 18 Jul 94 17:01:33 -0800
From: "Eric Leu" <leu@almaden.ibm.com>



Please remove my name from your mailing list (leu@almaden.ibm.com)

Thanks in advance
-Eric Leu
From owner-mpi-comm@CS.UTK.EDU Tue Jul 19 12:10:06 1994
Received: from CS.UTK.EDU by netlib2.cs.utk.edu with ESMTP (cf v2.8t-netlib)
	id MAA24384; Tue, 19 Jul 1994 12:10:05 -0400
Received: from localhost by CS.UTK.EDU with SMTP (cf v2.9s-UTK)
	id MAA22248; Tue, 19 Jul 1994 12:08:22 -0400
X-Resent-To: mpi-comm@CS.UTK.EDU ; Tue, 19 Jul 1994 12:08:16 EDT
Errors-to: owner-mpi-comm@CS.UTK.EDU
Received: from watson.ibm.com by CS.UTK.EDU with SMTP (cf v2.9s-UTK)
	id MAA22239; Tue, 19 Jul 1994 12:08:14 -0400
Received: from WATSON by watson.ibm.com (IBM VM SMTP V2R3) with BSMTP id 7033;
   Tue, 19 Jul 94 12:08:06 EDT
Received: from YKTVMV by watson.vnet.ibm.com with "VAGENT.V1.0"
          id 9507; Tue, 19 Jul 1994 12:08:06 EDT
Received: from snir.watson.ibm.com by yktvmv.watson.ibm.com (IBM VM SMTP V2R3)
   with TCP; Tue, 19 Jul 94 12:08:06 EDT
Received: from localhost by snir.watson.ibm.com (AIX 3.2/UCB 5.64/930311)
          id AA28838; Tue, 19 Jul 1994 12:08:00 -0400
Message-Id: <9407191608.AA28838@snir.watson.ibm.com>
To: mpi-comm@CS.UTK.EDU
Subject: Changes in {WAIT | TEST}{ | ANY | SOME | ALL} with empty list
Reply-To: snir@watson.ibm.com
Date: Tue, 19 Jul 1994 12:07:59 -0400
From: Marc Snir <snir@watson.ibm.com>

:-) :-) :-) *** (-: (-: (-:

I have received so far only one answer.  I would approciate more feedback to
my note, both on substance (whether changes are warranted) and on form
(whether this is a correction that we can do in the errata or a substantive
change that need some form of vote).
From owner-mpi-comm@CS.UTK.EDU Tue Jul 19 16:49:45 1994
Received: from CS.UTK.EDU by netlib2.cs.utk.edu with ESMTP (cf v2.8t-netlib)
	id QAA26023; Tue, 19 Jul 1994 16:49:45 -0400
Received: from localhost by CS.UTK.EDU with SMTP (cf v2.9s-UTK)
	id QAA18563; Tue, 19 Jul 1994 16:48:20 -0400
X-Resent-To: mpi-comm@CS.UTK.EDU ; Tue, 19 Jul 1994 16:48:07 EDT
Errors-to: owner-mpi-comm@CS.UTK.EDU
Received: from research.CS.ORST.EDU by CS.UTK.EDU with SMTP (cf v2.9s-UTK)
	id QAA18531; Tue, 19 Jul 1994 16:48:02 -0400
Received: from sycamore.CS.ORST.EDU by research.CS.ORST.EDU (4.1/1.30)
	id AA27957; Tue, 19 Jul 94 13:47:49 PDT
From: pancake@chert.CS.ORST.EDU (Cherri Pancake)
Received: by sycamore.CS.ORST.EDU (4.1/CS-Client)
	id AA07409; Tue, 19 Jul 94 13:47:48 PDT
Date: Tue, 19 Jul 94 13:47:48 PDT
Message-Id: <9407192047.AA07409@sycamore.CS.ORST.EDU>
To: mpi-comm@CS.UTK.EDU, otto@cse.ogi.edu
Subject: Re:  complex. sigh.

Hear, hear.  Steve Otto is right on the mark with:
> Think like a Fortran person.  COMPLEX is fundamental
> and a Fortran person wants the operation.

The suggestion that we not offer max/min of COMPLEX will
	- set a dangerous precedent for we-almost-apply-this-to-all-data
		types-but-not-quite
	- force programmers to roll their own, since they really need
		this

Cherri Pancake
From owner-mpi-comm@CS.UTK.EDU Tue Jul 19 18:10:39 1994
Received: from CS.UTK.EDU by netlib2.cs.utk.edu with ESMTP (cf v2.8t-netlib)
	id SAA27350; Tue, 19 Jul 1994 18:10:39 -0400
Received: from localhost by CS.UTK.EDU with SMTP (cf v2.9s-UTK)
	id SAA26157; Tue, 19 Jul 1994 18:09:45 -0400
X-Resent-To: mpi-comm@CS.UTK.EDU ; Tue, 19 Jul 1994 18:09:43 EDT
Errors-to: owner-mpi-comm@CS.UTK.EDU
Received: from Aurora.CS.MsState.Edu by CS.UTK.EDU with SMTP (cf v2.9s-UTK)
	id SAA26150; Tue, 19 Jul 1994 18:09:40 -0400
Received:  by Aurora.CS.MsState.Edu (4.1/6.0s-FWP);
	   id AA05815; Tue, 19 Jul 94 17:04:41 CDT
Date: Tue, 19 Jul 94 17:04:41 CDT
From: Tony Skjellum <tony@Aurora.CS.MsState.Edu>
Message-Id: <9407192204.AA05815@Aurora.CS.MsState.Edu>
To: all@erc, mpi-comm@CS.UTK.EDU, mpi-users@mcs.anl.gov
Subject: comp.parallel.mpi

This newsgroup is now up and running, as of today, at least where we are!
-Tony Skjellum
From owner-mpi-comm@CS.UTK.EDU Tue Jul 19 19:14:53 1994
Received: from CS.UTK.EDU by netlib2.cs.utk.edu with ESMTP (cf v2.8t-netlib)
	id TAA28692; Tue, 19 Jul 1994 19:14:52 -0400
Received: from localhost by CS.UTK.EDU with SMTP (cf v2.9s-UTK)
	id TAA29945; Tue, 19 Jul 1994 19:13:44 -0400
X-Resent-To: mpi-comm@CS.UTK.EDU ; Tue, 19 Jul 1994 19:13:42 EDT
Errors-to: owner-mpi-comm@CS.UTK.EDU
Received: from research.CS.ORST.EDU by CS.UTK.EDU with SMTP (cf v2.9s-UTK)
	id TAA29937; Tue, 19 Jul 1994 19:13:38 -0400
Received: from sycamore.CS.ORST.EDU by research.CS.ORST.EDU (4.1/1.30)
	id AA29236; Tue, 19 Jul 94 16:13:30 PDT
From: pancake@chert.CS.ORST.EDU (Cherri Pancake)
Received: by sycamore.CS.ORST.EDU (4.1/CS-Client)
	id AA07563; Tue, 19 Jul 94 16:13:29 PDT
Date: Tue, 19 Jul 94 16:13:29 PDT
Message-Id: <9407192313.AA07563@sycamore.CS.ORST.EDU>
To: mpi-comm@CS.UTK.EDU
Subject: Re:  Suggestions of S R Chapple on section 3.7.5.

I agree that the suggested change would improve the precision with which 
the TEST/etc. functions can be used.

As per Marc's second note, I think the changes are substantive and must go to
the larger forum for review.

Cherri Pancake
From owner-mpi-comm@CS.UTK.EDU Tue Jul 19 19:15:00 1994
Received: from CS.UTK.EDU by netlib2.cs.utk.edu with ESMTP (cf v2.8t-netlib)
	id TAA28697; Tue, 19 Jul 1994 19:15:00 -0400
Received: from localhost by CS.UTK.EDU with SMTP (cf v2.9s-UTK)
	id TAA29954; Tue, 19 Jul 1994 19:14:03 -0400
X-Resent-To: mpi-comm@CS.UTK.EDU ; Tue, 19 Jul 1994 19:14:01 EDT
Errors-to: owner-mpi-comm@CS.UTK.EDU
Received: from gw1.fsl.noaa.gov by CS.UTK.EDU with SMTP (cf v2.9s-UTK)
	id TAA29947; Tue, 19 Jul 1994 19:13:56 -0400
Received: by gw1.fsl.noaa.gov (5.57/Ultrix3.0-C)
	id AA18555; Tue, 19 Jul 94 23:12:48 GMT
Received: by nipmuc.fsl.noaa.gov (4.1/SMI-4.1)
	id AA00766; Tue, 19 Jul 94 17:13:28 MDT
Message-Id: <9407192313.AA00766@nipmuc.fsl.noaa.gov>
To: mpi-comm@CS.UTK.EDU
Subject: Re: complex. sigh. 
Date: Tue, 19 Jul 1994 17:13:28 -0600
From: Leslie Hart (NOAA/FSL) <hart@nipmuc.fsl.noaa.gov>


I'm no expert on ANSI Fortran, buy my Sun compiler will not
let me put a variable declared as complex in the MAX intrinsic.
Are we proposing to support something that the native language
would not define?

      program t1
      complex a, b, c
      a = (1, 1)
      b = (2, -1)
      c = max (a, b)
      print *, a, b, c
      end
"f.f", line 5: Error: bad argument type to intrinsic "max"

Leslie
From owner-mpi-comm@CS.UTK.EDU Tue Jul 19 20:09:55 1994
Received: from CS.UTK.EDU by netlib2.cs.utk.edu with ESMTP (cf v2.8t-netlib)
	id UAA29168; Tue, 19 Jul 1994 20:09:55 -0400
Received: from localhost by CS.UTK.EDU with SMTP (cf v2.9s-UTK)
	id UAA02679; Tue, 19 Jul 1994 20:08:31 -0400
X-Resent-To: mpi-comm@CS.UTK.EDU ; Tue, 19 Jul 1994 20:08:27 EDT
Errors-to: owner-mpi-comm@CS.UTK.EDU
Received: from noc.usfca.edu by CS.UTK.EDU with SMTP (cf v2.9s-UTK)
	id UAA02671; Tue, 19 Jul 1994 20:08:23 -0400
Received: by noc.usfca.edu (5.65/DEC-Ultrix/4.3)
	id AA10656; Tue, 19 Jul 1994 17:10:52 -0700
Received: by mobydick.usfca.edu (4.1/SMI-4.1)
	id AA24385; Tue, 19 Jul 94 17:01:17 PDT
Date: Tue, 19 Jul 94 17:01:17 PDT
From: peter@mobydick.usfca.edu (Peter Pacheco)
Message-Id: <9407200001.AA24385@mobydick.usfca.edu>
To: hart@nipmuc.fsl.noaa.gov, mpi-comm@CS.UTK.EDU
Subject: Re: complex. sigh.

It's not clear to me that if w and z are complex, then "max(z,w)" should
necessarily return the argument with the largest modulus.  I can easily
imagine that someone would want the argument with the largest real part.
This would generalize max applied to real values, since, for example,
max(-2,1) is 1.  (Of course, with max(z,w) = argument with larger modulus, 
max(-2,1) is -2.)

Incidentally, Leslie's program won't compile on our RS 6000 or our
nCUBE -- neither fortran compiler accepts complex arguments to max.

So I vote that the action of reduce with complex arguments and the
various max/min operations be undefined.

					Peter
From owner-mpi-comm@CS.UTK.EDU Tue Jul 19 20:19:13 1994
Received: from CS.UTK.EDU by netlib2.cs.utk.edu with ESMTP (cf v2.8t-netlib)
	id UAA29181; Tue, 19 Jul 1994 20:19:13 -0400
Received: from localhost by CS.UTK.EDU with SMTP (cf v2.9s-UTK)
	id UAA03038; Tue, 19 Jul 1994 20:18:17 -0400
X-Resent-To: mpi-comm@CS.UTK.EDU ; Tue, 19 Jul 1994 20:18:11 EDT
Errors-to: owner-mpi-comm@CS.UTK.EDU
Received: from SSD.intel.com by CS.UTK.EDU with SMTP (cf v2.9s-UTK)
	id UAA03030; Tue, 19 Jul 1994 20:18:06 -0400
Received: from tualatin.SSD.intel.com by SSD.intel.com (4.1/SMI-4.1)
	id AA11090; Tue, 19 Jul 94 17:17:28 PDT
Received: by tualatin.SSD.intel.com (4.1/SMI-4.1)
	id AA05476; Tue, 19 Jul 94 17:17:27 PDT
Date: Tue, 19 Jul 94 17:17:27 PDT
Message-Id: <9407200017.AA05476@tualatin.SSD.intel.com>
From: Bob Knighten <knighten@ssd.intel.com>
To: hart@nipmuc.fsl.noaa.gov
Cc: mpi-comm@CS.UTK.EDU
Subject: Re: complex. sigh. 
In-Reply-To: <9407192313.AA00766@nipmuc.fsl.noaa.gov>
References: <9407192313.AA00766@nipmuc.fsl.noaa.gov>
Reply-To: knighten@ssd.intel.com (Bob Knighten)

Neither Fortran 77 nor Fortran 90 suport COMPLEX arguments for the MAX or MIN
intrinsic.  

I have no objection to the proposal, but I was puzzled by the claim that this
is fundamental in Fortran and equally surprised by the description of the
proposed rule for breaking "ties" as a "stable sort requirement".  MAX and MIN
do NOT have a natural meaning for the COMPLEX type.

-- Bob

-- 
Robert L. Knighten	             | knighten@ssd.intel.com
Intel Supercomputer Systems Division | 
CO1-05                               |
15201 N.W. Greenbrier Pkwy.	     | (503) 629-4315
Beaverton, Oregon  97006	     | (503) 629-9147 [FAX]
From owner-mpi-comm@CS.UTK.EDU Tue Jul 19 23:14:16 1994
Received: from CS.UTK.EDU by netlib2.cs.utk.edu with ESMTP (cf v2.8t-netlib)
	id XAA00633; Tue, 19 Jul 1994 23:14:16 -0400
Received: from localhost by CS.UTK.EDU with SMTP (cf v2.9s-UTK)
	id XAA18144; Tue, 19 Jul 1994 23:13:24 -0400
X-Resent-To: mpi-comm@CS.UTK.EDU ; Tue, 19 Jul 1994 23:13:23 EDT
Errors-to: owner-mpi-comm@CS.UTK.EDU
Received: from Aurora.CS.MsState.Edu by CS.UTK.EDU with SMTP (cf v2.9s-UTK)
	id XAA18137; Tue, 19 Jul 1994 23:13:22 -0400
Received:  by Aurora.CS.MsState.Edu (4.1/6.0s-FWP);
	   id AA06646; Tue, 19 Jul 94 22:08:22 CDT
Date: Tue, 19 Jul 94 22:08:22 CDT
From: Tony Skjellum <tony@Aurora.CS.MsState.Edu>
Message-Id: <9407200308.AA06646@Aurora.CS.MsState.Edu>
To: mpi-comm@CS.UTK.EDU
Subject: Dissolve this mailing list?

David Walker expressed interest at the last MPI meeting to dissolve this mailing
list (and possibly others) when comp.parallel.mpi had formed.  This has 
happened now, and is the logical place for most if not all of the MPI 
reflector discussions.  Any other thoughts?  Thanks, Tony
From owner-mpi-comm@CS.UTK.EDU Wed Jul 20 04:41:20 1994
Received: from CS.UTK.EDU by netlib2.cs.utk.edu with ESMTP (cf v2.8t-netlib)
	id EAA02165; Wed, 20 Jul 1994 04:41:20 -0400
Received: from localhost by CS.UTK.EDU with SMTP (cf v2.9s-UTK)
	id EAA15611; Wed, 20 Jul 1994 04:40:21 -0400
X-Resent-To: mpi-comm@CS.UTK.EDU ; Wed, 20 Jul 1994 04:40:19 EDT
Errors-to: owner-mpi-comm@CS.UTK.EDU
Received: from hub by CS.UTK.EDU with SMTP (cf v2.9s-UTK)
	id EAA15579; Wed, 20 Jul 1994 04:40:09 -0400
Received: from tycho.co.uk (tycho.meiko.co.uk) by hub with SMTP id AA19097
  (5.65c/IDA-1.4.4 for mpi-comm@CS.UTK.EDU); Wed, 20 Jul 1994 09:39:50 +0100
Received: by tycho.co.uk (5.0/SMI-SVR4)
	id AA02018; Wed, 20 Jul 1994 09:39:29 +0000
Date: Wed, 20 Jul 1994 09:39:29 +0000
From: jim@meiko.co.uk (James Cownie)
Message-Id: <9407200839.AA02018@tycho.co.uk>
To: knighten@ssd.intel.com
Cc: hart@nipmuc.fsl.noaa.gov, mpi-comm@CS.UTK.EDU
In-Reply-To: <9407200017.AA05476@tualatin.SSD.intel.com> (message from Bob Knighten on Tue, 19 Jul 94 17:17:27 PDT)
Subject: Re: complex. sigh.

> Neither Fortran 77 nor Fortran 90 suport COMPLEX arguments for the MAX or MIN
> intrinsic.  

Nor for the MINVAL and MAXVAL intrinsics in F90 (which apply to
arrays, rather than scalars).

On these grounds there is no need to make this extension (which seems
to be contentious).

-- Jim 
James Cownie 
Meiko Limited			Meiko Inc.
650 Aztec West			130C Baker Avenue Ext.
Bristol BS12 4SD		Concord
England				MA 01742

Phone : +44 454 616171		+1 508 371 0088
FAX   : +44 454 618188		+1 508 371 7516
E-Mail: jim@meiko.co.uk   or    jim@meiko.com
WWW   : http://www.meiko.com:8080/welcome.html
From owner-mpi-comm@CS.UTK.EDU Wed Jul 20 05:24:05 1994
Received: from CS.UTK.EDU by netlib2.cs.utk.edu with ESMTP (cf v2.8t-netlib)
	id FAA02708; Wed, 20 Jul 1994 05:24:04 -0400
Received: from localhost by CS.UTK.EDU with SMTP (cf v2.9s-UTK)
	id FAA22340; Wed, 20 Jul 1994 05:23:07 -0400
X-Resent-To: mpi-comm@CS.UTK.EDU ; Wed, 20 Jul 1994 05:23:06 EDT
Errors-to: owner-mpi-comm@CS.UTK.EDU
Received: from epcc.ed.ac.uk by CS.UTK.EDU with SMTP (cf v2.9s-UTK)
	id FAA22231; Wed, 20 Jul 1994 05:22:55 -0400
Date: Wed, 20 Jul 94 10:22:40 BST
Message-Id: <23820.9407200922@subnode.epcc.ed.ac.uk>
From: L J Clarke <lyndon@epcc.ed.ac.uk>
Subject: Re: Dissolve this mailing list?
To: Tony Skjellum <tony@Aurora.CS.MsState.Edu>, mpi-comm@CS.UTK.EDU
In-Reply-To: Tony Skjellum's message of Tue, 19 Jul 94 22:08:22 CDT
Reply-To: lyndon@epcc.ed.ac.uk

> David Walker expressed interest at the last MPI meeting to dissolve this mailing
> list (and possibly others) when comp.parallel.mpi had formed.  This has 
> happened now, and is the logical place for most if not all of the MPI 
> reflector discussions.  Any other thoughts?  Thanks, Tony

Just one thought that it take people a while to get used to changes.  So
the question is whether we can configure the mail address to behave
differently:

(a) dont send to list of people on mail list
(b) post message to comp.parallel.mpi
(c) advisory reply to message sender that should post to
    comp.parallel.mpi instead of send to mpi-comm@cs.utk.edu

Best Wishes
Lyndon

         /--------------------------------------------------------\
    e||) | Lyndon J Clarke    Edinburgh Parallel Computing Centre | e||) 
    c||c | Tel: 031 650 5021  Email: lyndon@epcc.edinburgh.ac.uk  | c||c 
         \--------------------------------------------------------/


From owner-mpi-comm@CS.UTK.EDU Wed Jul 20 05:45:57 1994
Received: from CS.UTK.EDU by netlib2.cs.utk.edu with ESMTP (cf v2.8t-netlib)
	id FAA02768; Wed, 20 Jul 1994 05:45:57 -0400
Received: from localhost by CS.UTK.EDU with SMTP (cf v2.9s-UTK)
	id FAA24468; Wed, 20 Jul 1994 05:45:12 -0400
X-Resent-To: mpi-comm@CS.UTK.EDU ; Wed, 20 Jul 1994 05:45:11 EDT
Errors-to: owner-mpi-comm@CS.UTK.EDU
Received: from hub by CS.UTK.EDU with SMTP (cf v2.9s-UTK)
	id FAA24453; Wed, 20 Jul 1994 05:45:07 -0400
Received: from tycho.co.uk (tycho.meiko.co.uk) by hub with SMTP id AA20476
  (5.65c/IDA-1.4.4 for mpi-comm@CS.UTK.EDU); Wed, 20 Jul 1994 10:44:28 +0100
Received: by tycho.co.uk (5.0/SMI-SVR4)
	id AA02064; Wed, 20 Jul 1994 10:44:07 +0000
Date: Wed, 20 Jul 1994 10:44:07 +0000
From: jim@meiko.co.uk (James Cownie)
Message-Id: <9407200944.AA02064@tycho.co.uk>
To: lyndon@epcc.ed.ac.uk
Cc: tony@Aurora.CS.MsState.Edu, mpi-comm@CS.UTK.EDU
In-Reply-To: <23820.9407200922@subnode.epcc.ed.ac.uk> (message from L J Clarke on Wed, 20 Jul 94 10:22:40 BST)
Subject: Re: Dissolve this mailing list?


> David Walker expressed interest at the last MPI meeting to dissolve this mailing
> list (and possibly others) when comp.parallel.mpi had formed.  This has 
> happened now, and is the logical place for most if not all of the MPI 
> reflector discussions.  Any other thoughts?  Thanks, Tony

The reach of e-mail is probably larger than news, so there may well be
people who can subscribe to the mail, but do not have access to news
groups. 

We should be careful before dis-enfranchising this community.

-- Jim 
James Cownie 
Meiko Limited			Meiko Inc.
650 Aztec West			130C Baker Avenue Ext.
Bristol BS12 4SD		Concord
England				MA 01742

Phone : +44 454 616171		+1 508 371 0088
FAX   : +44 454 618188		+1 508 371 7516
E-Mail: jim@meiko.co.uk   or    jim@meiko.com
WWW   : http://www.meiko.com:8080/welcome.html
From owner-mpi-comm@CS.UTK.EDU Wed Jul 20 07:59:42 1994
Received: from CS.UTK.EDU by netlib2.cs.utk.edu with ESMTP (cf v2.8t-netlib)
	id HAA03150; Wed, 20 Jul 1994 07:59:42 -0400
Received: from localhost by CS.UTK.EDU with SMTP (cf v2.9s-UTK)
	id HAA05674; Wed, 20 Jul 1994 07:58:57 -0400
X-Resent-To: mpi-comm@CS.UTK.EDU ; Wed, 20 Jul 1994 07:58:51 EDT
Errors-to: owner-mpi-comm@CS.UTK.EDU
Received: from convex.convex.com by CS.UTK.EDU with SMTP (cf v2.9s-UTK)
	id HAA05666; Wed, 20 Jul 1994 07:58:45 -0400
Received: from mozart.convex.com by convex.convex.com (5.64/1.35)
	id AA17120; Wed, 20 Jul 94 06:52:08 -0500
Received: from localhost by mozart.convex.com (8.6.4/1.28)
	id GAA15271; Wed, 20 Jul 1994 06:59:13 -0500
From: joelw@mozart.convex.com (Joel Williamson)
Message-Id: <199407201159.GAA15271@mozart.convex.com>
Subject: Re: complex. sigh.
To: jim@meiko.co.uk (James Cownie)
Date: Wed, 20 Jul 94 6:59:12 CDT
Cc: knighten@ssd.intel.com, hart@nipmuc.fsl.noaa.gov, mpi-comm@CS.UTK.EDU
In-Reply-To: <9407200839.AA02018@tycho.co.uk>; from "James Cownie" at Jul 20, 94 9:39 am
X-Mailer: ELM [version 2.3 PL11]

James Cownie writes:
> 
> > Neither Fortran 77 nor Fortran 90 suport COMPLEX arguments for the MAX or MIN
> > intrinsic.  
> 
> Nor for the MINVAL and MAXVAL intrinsics in F90 (which apply to
> arrays, rather than scalars).
> 
> On these grounds there is no need to make this extension (which seems
> to be contentious).

There's an interesting article in (I think) this month's Discover
magazine, discussing metrics that reduce to a single number.  In the
introduction it is pointed out that there is no way to order the points
on a plane, and that any attempt to map the plane to a line where
ordering makes sense is simply a matter of taste.

Joel Williamson
From owner-mpi-comm@CS.UTK.EDU Wed Jul 20 09:55:57 1994
Received: from CS.UTK.EDU by netlib2.cs.utk.edu with ESMTP (cf v2.8t-netlib)
	id JAA03675; Wed, 20 Jul 1994 09:55:57 -0400
Received: from localhost by CS.UTK.EDU with SMTP (cf v2.9s-UTK)
	id JAA16786; Wed, 20 Jul 1994 09:54:44 -0400
X-Resent-To: mpi-comm@CS.UTK.EDU ; Wed, 20 Jul 1994 09:54:43 EDT
Errors-to: owner-mpi-comm@CS.UTK.EDU
Received: from super by CS.UTK.EDU with SMTP (cf v2.9s-UTK)
	id JAA16778; Wed, 20 Jul 1994 09:54:38 -0400
Received: from b125.super.org by super (4.1/SMI-4.1)
	id AA17820; Wed, 20 Jul 94 09:54:33 EDT
Date: Wed, 20 Jul 94 09:54:33 EDT
From: lederman@super.org (Steve Huss-Lederman)
Message-Id: <9407201354.AA17820@super>
Received: by b125.super.org (4.1/SMI-4.1)
	id AA06484; Wed, 20 Jul 94 09:54:30 EDT
To: mpi-comm@CS.UTK.EDU
Subject: reduce on complex datatype

Hello All,

The issue of reduce on the complex datatype has gotten more involved
and contentious then I originally expected.  I see two basic points of
view (I'm not sure how many support each):

#1
Proposal:
Allow reduce on the complex datatype and define it to sort by the
modulus and return the max entry.  Ties are broken by returning entry
with lowest rank.  This is basically the proposal I put out after the
first round of comments.

Arguments for: 
-This seems the most natural definition to most and is consistant with
the other reduce functions.  
-MPI supports reduce on all datatypes instead of having an exception for
complex.
-It clarifies the text already in the standard MPI document
-Some users want this and will use it.

#2
Proposal:
Drop the definition of reduce on complex datatypes

Arguments for:
-There is more than one possible definition of what reduce does on a
complex type.  Sort by modulus, real, etc.; return modulus, entry,
etc.
-This only applies to Fortran binding of MPI (since complex only
exists there) and standard FORTRAN does not support MIN, MAX, MAXLOC,
MINLOC on the FORTRAN complex datatype.
-You can get the same functionality by creating a second floating
point (real,double) array arry and making its entries the modulus of
the complex array.  Then simply take the MAXLOC,MINLOC of the second
array and use the index returned to get the value from the first
array.


What to do:

The correct action is not clear to me.  p. 113 and 115 of the April 15
draft allows for reduce on the complex datatype (though it is not well
defined).  I viewed #1 as a clarification of the text (which most seem
to support if you can reduce on complex values).  #2 is removing
functionality that exists in the current draft (I don't view this as a
clarification; I think it is a change).  I think both positions have
merit and each is supported by some fraction of those participating in
the discussion.

I don't know how the resolution is done and what the rules really are.
I don't recall clearly defining how such changes would occur.  I think
this applies to several other items that are being discussed here.  I
think the time has come to define how we vote on items such as this
since there are no planned meetings.  I don't think a single person
should be making these decisions.

I'll stick my neck out and throw out a proposal for voting.  This is
just to get the discussion started.  It clearly needs refining and
input from others.

Proposal for votes to decide issues:
-A vote should be called when a proposal has been made that changes
the current draft and seems reasonable after a discussion period.  A
vote is also taken when a clarification is not clearly decided after a
discussion period.
-I think mpi-core is the logical place for all messages to be posted.
I have no problem with them also being posted to comp.parallel.mpi but
since we may not want the whole world involved in the votes, I think
the minimum is a post to mpi-core.
-A clear written proposal of the choices and what a vote would mean
MUST be posted.  This proposal MUST include the exact text that would
go into the standard document and where it would be placed.
-A discussion period on the vote begins.  Since people are away at
times, I think it should last a reasonable period of time.  At least 2
weeks; maybe a month.
-Any modification to the original proposal MUST be clearly written out
in the same mannor as the original proposal.  This essential begins a
new discussion period and delays any possible vote.
-Someone needs to call a formal vote and moderate proposals if there
is contention.  To be consistant with the the meetings, the primary
author of the chapter (or someone the author requested to act for him/her)
would do this.  If this cannot happen then Steve Otto could do this as
the master editor. 
-Once a formal vote is called, the voting rules are the same as at the
meetings.  Only one vote per institution.  The 2 out of 3 meetings
rule is a little strange here.  How about you can only vote if you
formally voted (or could have) in 2 of the last 5 meetings.  This will
hopefully include anyone who was active in the last half of the MPIF.
Someone should create a e-mail drop box to collect votes.   The voting
period would be 2 weeks.  Some adoption rules would apply as at the
meeting: majority carries.
-I don't think we need to vote on something twice at this point like
we did at the meetings.

Comments?  If we agree on how to vote, I will post a proposed vote on
reduce for complex values.

Steve

From owner-mpi-comm@CS.UTK.EDU Wed Jul 20 11:11:05 1994
Received: from CS.UTK.EDU by netlib2.cs.utk.edu with ESMTP (cf v2.8t-netlib)
	id LAA04116; Wed, 20 Jul 1994 11:11:04 -0400
Received: from localhost by CS.UTK.EDU with SMTP (cf v2.9s-UTK)
	id LAA24244; Wed, 20 Jul 1994 11:09:40 -0400
X-Resent-To: mpi-comm@CS.UTK.EDU ; Wed, 20 Jul 1994 11:09:33 EDT
Errors-to: owner-mpi-comm@CS.UTK.EDU
Received: from Aurora.CS.MsState.Edu by CS.UTK.EDU with SMTP (cf v2.9s-UTK)
	id LAA24235; Wed, 20 Jul 1994 11:09:30 -0400
Received:  by Aurora.CS.MsState.Edu (4.1/6.0s-FWP);
	   id AA08356; Wed, 20 Jul 94 10:03:48 CDT
Date: Wed, 20 Jul 94 10:03:48 CDT
From: Tony Skjellum <tony@Aurora.CS.MsState.Edu>
Message-Id: <9407201503.AA08356@Aurora.CS.MsState.Edu>
To: lyndon@epcc.ed.ac.uk, jim@meiko.co.uk
Subject: Re: Dissolve this mailing list?
Cc: tony@Aurora.CS.MsState.Edu, mpi-comm@CS.UTK.EDU


I agree that we should be careful and not hasty :-)
-Tony


----- Begin Included Message -----

From jim@meiko.co.uk Wed Jul 20 04:40:00 1994
Date: Wed, 20 Jul 1994 10:44:07 +0000
From: jim@meiko.co.uk (James Cownie)
To: lyndon@epcc.ed.ac.uk
Cc: tony@Aurora.CS.MsState.Edu, mpi-comm@CS.UTK.EDU
Subject: Re: Dissolve this mailing list?
Content-Length: 815


> David Walker expressed interest at the last MPI meeting to dissolve this mailing
> list (and possibly others) when comp.parallel.mpi had formed.  This has 
> happened now, and is the logical place for most if not all of the MPI 
> reflector discussions.  Any other thoughts?  Thanks, Tony

The reach of e-mail is probably larger than news, so there may well be
people who can subscribe to the mail, but do not have access to news
groups. 

We should be careful before dis-enfranchising this community.

-- Jim 
James Cownie 
Meiko Limited			Meiko Inc.
650 Aztec West			130C Baker Avenue Ext.
Bristol BS12 4SD		Concord
England				MA 01742

Phone : +44 454 616171		+1 508 371 0088
FAX   : +44 454 618188		+1 508 371 7516
E-Mail: jim@meiko.co.uk   or    jim@meiko.com
WWW   : http://www.meiko.com:8080/welcome.html


----- End Included Message -----

From owner-mpi-comm@CS.UTK.EDU Wed Jul 20 14:54:37 1994
Received: from CS.UTK.EDU by netlib2.cs.utk.edu with ESMTP (cf v2.8t-netlib)
	id OAA05924; Wed, 20 Jul 1994 14:54:36 -0400
Received: from localhost by CS.UTK.EDU with SMTP (cf v2.9s-UTK)
	id OAA15026; Wed, 20 Jul 1994 14:53:19 -0400
X-Resent-To: mpi-comm@CS.UTK.EDU ; Wed, 20 Jul 1994 14:53:17 EDT
Errors-to: owner-mpi-comm@CS.UTK.EDU
Received: from Aurora.CS.MsState.Edu by CS.UTK.EDU with SMTP (cf v2.9s-UTK)
	id OAA15013; Wed, 20 Jul 1994 14:53:15 -0400
Received:  by Aurora.CS.MsState.Edu (4.1/6.0s-FWP);
	   id AA06070; Tue, 19 Jul 94 18:11:55 CDT
Date: Tue, 19 Jul 94 18:11:55 CDT
From: Tony Skjellum <tony@Aurora.CS.MsState.Edu>
Message-Id: <9407192311.AA06070@Aurora.CS.MsState.Edu>
To: mpi-comm@CS.UTK.EDU, otto@cse.ogi.edu, pancake@chert.CS.ORST.EDU
Subject: Re:  complex. sigh.


----- Begin Included Message -----

From owner-mpi-comm@CS.UTK.EDU Tue Jul 19 15:49:28 1994
X-Resent-To: mpi-comm@CS.UTK.EDU ; Tue, 19 Jul 1994 16:48:07 EDT
From: pancake@chert.CS.ORST.EDU (Cherri Pancake)
Date: Tue, 19 Jul 94 13:47:48 PDT
To: mpi-comm@CS.UTK.EDU, otto@cse.ogi.edu
Subject: Re:  complex. sigh.
Content-Length: 382

Hear, hear.  Steve Otto is right on the mark with:
> Think like a Fortran person.  COMPLEX is fundamental
> and a Fortran person wants the operation.

The suggestion that we not offer max/min of COMPLEX will
	- set a dangerous precedent for we-almost-apply-this-to-all-data
		types-but-not-quite
	- force programmers to roll their own, since they really need
		this

Cherri Pancake


----- End Included Message -----

Various expositors,

Absolute value min and max make sense for complex, just by generalizing
the idea of modulus to be the usual modulus for complex.  If this is what
Steve means, fine.  If we mean to leave that out, I think we are making
a mistake.

However, regular complex min/max do not make sense.  There is no
mathematical operation for min(c1,c2) where c1 and c2 are complex.  Why
provide an operation for symmetry when there is no mathematical
analog?  This seems empty to me.  min and max are a statement of the
ordering of the real numbers or integers!  Why should MPI define a
meaning?  (You can argue than minrealpart, mincomplexpart, minabsrealpart,
minabscomplexpart, and max versions of these 4 are meaningful, however).

I do not think that users will want operations that do not make sense
mathematically regardless of symmetry that might provide!?!?!?!

-Tony Skjellum




From owner-mpi-comm@CS.UTK.EDU Wed Jul 20 15:28:30 1994
Received: from CS.UTK.EDU by netlib2.cs.utk.edu with ESMTP (cf v2.8t-netlib)
	id PAA06541; Wed, 20 Jul 1994 15:28:29 -0400
Received: from localhost by CS.UTK.EDU with SMTP (cf v2.9s-UTK)
	id PAA18479; Wed, 20 Jul 1994 15:27:39 -0400
X-Resent-To: mpi-comm@CS.UTK.EDU ; Wed, 20 Jul 1994 15:27:38 EDT
Errors-to: owner-mpi-comm@CS.UTK.EDU
Received: from rios2.EPM.ORNL.GOV by CS.UTK.EDU with ESMTP (cf v2.9s-UTK)
	id PAA18472; Wed, 20 Jul 1994 15:27:37 -0400
Received: (from walker@localhost) by rios2.EPM.ORNL.GOV (8.6.8/8.6.6) id PAA21572; Wed, 20 Jul 1994 15:27:36 -0400
From: David Walker <walker@rios2.EPM.ORNL.GOV>
Message-Id: <199407201927.PAA21572@rios2.EPM.ORNL.GOV>
To: mpi-comm@CS.UTK.EDU
Subject: Re:  complex. sigh
Date: Wed, 20 Jul 94 15:27:36 -0500

TONY WROTE:

> Absolute value min and max make sense for complex, just by generalizing
> the idea of modulus to be the usual modulus for complex.  If this is what
> Steve means, fine.  If we mean to leave that out, I think we are making
> a mistake.
> 
> However, regular complex min/max do not make sense.  There is no
> mathematical operation for min(c1,c2) where c1 and c2 are complex.  Why
> provide an operation for symmetry when there is no mathematical
> analog?  This seems empty to me.  min and max are a statement of the
> ordering of the real numbers or integers!  Why should MPI define a
> meaning?  (You can argue than minrealpart, mincomplexpart, minabsrealpart,
> minabscomplexpart, and max versions of these 4 are meaningful, however).
> 
> I do not think that users will want operations that do not make sense
> mathematically regardless of symmetry that might provide!?!?!?!
> 
> - -Tony Skjellum

So we should provide MINMODULUS, MINREALPART, MINCOMPLEXPART,
MINABSREALPART, MINABSCOMPLEXPART and max variants as Tony suggests.
These may only take a complex number, and exist only for the Fortran
language binding.

David
From owner-mpi-comm@CS.UTK.EDU Wed Jul 27 13:17:21 1994
Received: from CS.UTK.EDU by netlib2.cs.utk.edu with ESMTP (cf v2.8t-netlib)
	id NAA06085; Wed, 27 Jul 1994 13:17:21 -0400
Received: from localhost by CS.UTK.EDU with SMTP (cf v2.9s-UTK)
	id NAA15735; Wed, 27 Jul 1994 13:12:17 -0400
X-Resent-To: mpi-comm@CS.UTK.EDU ; Wed, 27 Jul 1994 13:12:14 EDT
Errors-to: owner-mpi-comm@CS.UTK.EDU
Received: from watson.ibm.com by CS.UTK.EDU with SMTP (cf v2.9s-UTK)
	id NAA15727; Wed, 27 Jul 1994 13:12:11 -0400
Received: from WATSON by watson.ibm.com (IBM VM SMTP V2R3) with BSMTP id 0711;
   Wed, 27 Jul 94 13:12:02 EDT
Received: from YKTVMV by watson.vnet.ibm.com with "VAGENT.V1.0"
          id 8897; Wed, 27 Jul 1994 13:12:02 EDT
Received: from snir.watson.ibm.com by yktvmv.watson.ibm.com (IBM VM SMTP V2R3)
   with TCP; Wed, 27 Jul 94 13:12:01 EDT
Received: from localhost by snir.watson.ibm.com (AIX 3.2/UCB 5.64/930311)
          id AA29400; Wed, 27 Jul 1994 13:11:57 -0400
Message-Id: <9407271711.AA29400@snir.watson.ibm.com>
To: mpi-comm@CS.UTK.EDU
Subject: min of complex (Tony's and David's messages)
Reply-To: snir@watson.ibm.com
Date: Wed, 27 Jul 1994 13:11:56 -0400
From: Marc Snir <snir@watson.ibm.com>

:-) :-) :-) *** (-: (-: (-:

Let's not be carried away.  MIN of complex can be either left out of MPI, or
if in, be defined to be an MPI reduction operation, which means an
associative binary operation that returns a value of the same type as the
inputs.  The only reasonable definition of MIN of complex is the one Steve
and I proposed.   Whether one should include it at all is a good
question.  Note that Fortran defines MIN, MAX, MINLOC and MAXLOC only for
types INTEGER and REAL.  Note also that a user can always provide it's own
user-defined MIN, MAX, MINLOC and MAXLOC for COMPLEX.  Both are arguments
against inclusion.
I, personally,
vote for keeping it out.  If we decide to put it in, then we should use
the text that was sent be Steve, also need to put in the corrsponding
versions of MINLOC and MAXLOC.
From owner-mpi-comm@CS.UTK.EDU Wed Jul 27 14:11:37 1994
Received: from CS.UTK.EDU by netlib2.cs.utk.edu with ESMTP (cf v2.8t-netlib)
	id OAA06334; Wed, 27 Jul 1994 14:11:37 -0400
Received: from localhost by CS.UTK.EDU with SMTP (cf v2.9s-UTK)
	id OAA19048; Wed, 27 Jul 1994 14:09:17 -0400
X-Resent-To: mpi-comm@CS.UTK.EDU ; Wed, 27 Jul 1994 14:09:15 EDT
Errors-to: owner-mpi-comm@CS.UTK.EDU
Received: from Aurora.CS.MsState.Edu by CS.UTK.EDU with SMTP (cf v2.9s-UTK)
	id OAA19032; Wed, 27 Jul 1994 14:09:12 -0400
Received:  by Aurora.CS.MsState.Edu (4.1/6.0s-FWP);
	   id AA09559; Wed, 27 Jul 94 13:02:57 CDT
Date: Wed, 27 Jul 94 13:02:57 CDT
From: Tony Skjellum <tony@Aurora.CS.MsState.Edu>
Message-Id: <9407271802.AA09559@Aurora.CS.MsState.Edu>
To: mpi-comm@CS.UTK.EDU, snir@watson.ibm.com
Subject: Re: min of complex (Tony's and David's messages)

Marc, as you recall, I argued against including MIN/MAX of complex, because
it is not a mathematical concept for Complex #'s.   I actually did not
advocate including MINREAL, MAXREAL, MINCOMPLEX, etc, but just pointed these
out, to demonstrate that one could go quite far in a different direction
(not necessarily good).  User-defined ops can do all this, and they can
also do whatever your definition of MIN/MAX was for complex, wlog.

However, since user-defined operations have the same power, but not necessarily 
the same performance as built-in MPI operations, there must be a performance
argument for a real situation levied before we consider this anymore.  
Following that, we should set up a vote on a real proposal (sorry for the pun),
and resolve the matter (as we did as a formal, standing committee).  

-Tony



From owner-mpi-comm@CS.UTK.EDU Wed Oct  5 13:57:47 1994
Received: from CS.UTK.EDU by netlib2.cs.utk.edu with ESMTP (cf v2.8t-netlib)
	id NAA14463; Wed, 5 Oct 1994 13:57:47 -0400
Received: from localhost by CS.UTK.EDU with SMTP (cf v2.9s-UTK)
	id NAA20821; Wed, 5 Oct 1994 13:52:10 -0400
X-Resent-To: mpi-comm@CS.UTK.EDU ; Wed, 5 Oct 1994 13:52:06 EDT
Errors-to: owner-mpi-comm@CS.UTK.EDU
Received: from theory.tc.cornell.edu by CS.UTK.EDU with ESMTP (cf v2.9s-UTK)
	id NAA20807; Wed, 5 Oct 1994 13:52:02 -0400
Received: (from xshen@localhost) by theory.tc.cornell.edu (8.6.9/8.6.6) id NAA59714; Wed, 5 Oct 1994 13:51:53 -0400
Message-Id: <199410051751.NAA59714@theory.tc.cornell.edu>
To: mpi-comm@CS.UTK.EDU
Subject: MPI Forum discussion list
Reply-to: xshen@TC.Cornell.EDU
Date: Wed, 05 Oct 94 13:51:53 -0400
From: Shennon Shen <xshen@TC.Cornell.EDU>

Hi,

I am a staff member at Cornell Theory Center.
I am porting application code to MPI and testing 
some feature on our SP2.I am interested in being on this mailing list If
it is possible

Thank you!

Xianneng Shen
Strategic Application Consultant
Cornell THeory Center
Engineering & Theory Center Building
Ithaca, NY 14853-3801
Tel:(607)254-8788

From owner-mpi-comm@CS.UTK.EDU Fri Oct 21 05:40:13 1994
Received: from CS.UTK.EDU by netlib2.cs.utk.edu with ESMTP (cf v2.8t-netlib)
	id FAA06401; Fri, 21 Oct 1994 05:40:13 -0400
Received: from localhost by CS.UTK.EDU with SMTP (cf v2.9s-UTK)
	id FAA01362; Fri, 21 Oct 1994 05:37:40 -0400
X-Resent-To: mpi-comm@CS.UTK.EDU ; Fri, 21 Oct 1994 05:37:39 EDT
Errors-to: owner-mpi-comm@CS.UTK.EDU
Received: from lorraine.loria.fr by CS.UTK.EDU with ESMTP (cf v2.9s-UTK)
	id FAA01345; Fri, 21 Oct 1994 05:37:35 -0400
Received: from galois.loria.fr (galois.loria.fr [152.81.4.133]) by lorraine.loria.fr (8.6.9/8.6.9) with ESMTP id IAA25169; Fri, 21 Oct 1994 08:13:15 +0100
Received: from localhost (localhost.loria.fr [127.0.0.1]) by galois.loria.fr (8.6.4/8.6.4) with ESMTP id IAA06617; Fri, 21 Oct 1994 08:13:16 +0100
Message-Id: <199410210713.IAA06617@galois.loria.fr>
To: mpi-comm@CS.UTK.EDU
cc: dillon@loria.fr
Subject: subscribe
X-Mailer: exmh version 1.2 1/14/94
Date: Fri, 21 Oct 1994 08:13:14 +0100
From: Eric Dillon <Eric.Dillon@loria.fr>

SUBSCRIBE	dillon@loria.fr
From owner-mpi-comm@CS.UTK.EDU Thu Nov  3 13:46:33 1994
Received: from CS.UTK.EDU by netlib2.cs.utk.edu with ESMTP (cf v2.8t-netlib)
	id NAA15261; Thu, 3 Nov 1994 13:46:33 -0500
Received: from localhost by CS.UTK.EDU with SMTP (cf v2.9s-UTK)
	id NAA16866; Thu, 3 Nov 1994 13:42:58 -0500
X-Resent-To: mpi-comm@CS.UTK.EDU ; Thu, 3 Nov 1994 13:42:57 EST
Errors-to: owner-mpi-comm@CS.UTK.EDU
Received: from dasher.cs.utk.edu by CS.UTK.EDU with ESMTP (cf v2.9s-UTK)
	id NAA16860; Thu, 3 Nov 1994 13:42:55 -0500
From: Jack Dongarra <dongarra@CS.UTK.EDU>
Received:  by dasher.cs.utk.edu (cf v2.9c-UTK)
          id NAA02368; Thu, 3 Nov 1994 13:42:54 -0500
Date: Thu, 3 Nov 1994 13:42:54 -0500
Message-Id: <199411031842.NAA02368@dasher.cs.utk.edu>
To: mpi-comm@CS.UTK.EDU
Subject: MPI B-O-F meeting at SC94

It looks like the MPI BOF session at SC94 will take place on
Wed. Nov. 16 at 5:30 pm, location to be determined.

Below is a brief agenda for the meeting follows.

    MPI BOF at SC94

    Introduction How We Got to this Point (Dongarra 5 minutes)
    Overview of MPI and What's Missing (Walker 10 minutes)
    Current Implementations (Lusk 15 minutes)
    Future MPI-2 (Skjellum 15 minutes)
    Discussion
    Future meetings

The MPI session will be immediately followed by 
an MPI-I/O session scheduled by Nitzberg.
This is an activity involving IBM, NASA Ames and LLNL. Marc Snir 
has more information.

Send me any comments and/or additional topics for discussion.

Jack
From owner-mpi-comm@CS.UTK.EDU Fri Dec  9 09:20:12 1994
Received: from CS.UTK.EDU by netlib2.cs.utk.edu with ESMTP (cf v2.8t-netlib)
	id JAA16085; Fri, 9 Dec 1994 09:20:12 -0500
Received: from localhost by CS.UTK.EDU with SMTP (cf v2.9s-UTK)
	id JAA21967; Fri, 9 Dec 1994 09:16:55 -0500
X-Resent-To: mpi-comm@CS.UTK.EDU ; Fri, 9 Dec 1994 09:16:53 EST
Errors-to: owner-mpi-comm@CS.UTK.EDU
Received: from lorraine.loria.fr by CS.UTK.EDU with ESMTP (cf v2.9s-UTK)
	id JAA21952; Fri, 9 Dec 1994 09:16:47 -0500
Received: from galois.loria.fr (galois.loria.fr [152.81.4.133]) by lorraine.loria.fr (8.6.9/8.6.9) with ESMTP id PAA01751 for <mpi-comm@cs.utk.edu>; Fri, 9 Dec 1994 15:16:33 +0100
Received: from localhost (localhost.loria.fr [127.0.0.1]) by galois.loria.fr (8.6.4/8.6.4) with ESMTP id PAA15040 for <mpi-comm@cs.utk.edu>; Fri, 9 Dec 1994 15:16:44 +0100
Message-Id: <199412091416.PAA15040@galois.loria.fr>
To: mpi-comm@CS.UTK.EDU
Subject: subscribe
X-Mailer: exmh version 1.2 1/14/94
Date: Fri, 09 Dec 1994 15:16:41 +0100
From: Eric Dillon <Eric.Dillon@loria.fr>

subscribe dillon@loria.fr
From owner-mpi-comm@CS.UTK.EDU Fri Dec 16 10:47:41 1994
Received: from CS.UTK.EDU by netlib2 with ESMTP (cf v2.8t-netlib)
	id KAA23350; Fri, 16 Dec 1994 10:47:41 -0500
Received: from localhost by CS.UTK.EDU with SMTP (cf v2.9s-UTK)
	id KAA03923; Fri, 16 Dec 1994 10:44:37 -0500
X-Resent-To: mpi-comm@CS.UTK.EDU ; Fri, 16 Dec 1994 10:44:36 EST
Errors-to: owner-mpi-comm@CS.UTK.EDU
Received: from redpoint.regent.e-technik.tu-muenchen.de by CS.UTK.EDU with SMTP (cf v2.9s-UTK)
	id KAA03890; Fri, 16 Dec 1994 10:44:26 -0500
Received: by redpoint.regent.e-technik.tu-muenchen.de id <4727>; Fri, 16 Dec 1994 16:43:33 +0100
X-Mailer: exmh version 1.5 11/22/94
To: mpi-comm@CS.UTK.EDU
Subject: subscribe
Mime-Version: 1.0
Content-Type: text/plain; charset="us-ascii"
Date: Fri, 16 Dec 1994 16:43:23 +0100
Sender: Andreas Ganz <Andreas.Ganz@regent.e-technik.tu-muenchen.de>
From: Andreas.Ganz@regent.e-technik.tu-muenchen.de
Message-Id: <94Dec16.164333met.4727@redpoint.regent.e-technik.tu-muenchen.de>




---------------------------------------------------------------------------
Andreas Ganz                            asg@regent.e-technik.tu-muenchen.de
Institute of Electronic Design Automation   o__
Technical University of Munich             _,>/'_
D-80290, Germany                          (_) \(_)    Tel. +49 89 2105-3662

From owner-mpi-comm@CS.UTK.EDU Wed Apr 12 20:33:36 1995
Received: from CS.UTK.EDU by netlib2.cs.utk.edu with ESMTP (cf v2.9t-netlib)
	id UAA26228; Wed, 12 Apr 1995 20:33:36 -0400
Received: from localhost by CS.UTK.EDU with SMTP (cf v2.9s-UTK)
	id UAA13519; Wed, 12 Apr 1995 20:31:39 -0400
X-Resent-To: mpi-comm@CS.UTK.EDU ; Wed, 12 Apr 1995 20:31:37 EDT
Errors-to: owner-mpi-comm@CS.UTK.EDU
Received: from kanga.cse.nd.edu by CS.UTK.EDU with ESMTP (cf v2.9s-UTK)
	id UAA13508; Wed, 12 Apr 1995 20:31:35 -0400
From: <Andrew.Lumsdaine@nd.edu>
Received: from owl.cse.nd.edu (hooper.cse.nd.edu [129.74.25.119]) by kanga.cse.nd.edu (8.6.12/8.6.12) with ESMTP id TAA10491 for <mpi-comm@cs.utk.edu>; Wed, 12 Apr 1995 19:31:33 -0500
Received: (lums@localhost) by owl.cse.nd.edu (8.6.10/8.6.9) id TAA27500; Wed, 12 Apr 1995 19:31:31 -0500
Date: Wed, 12 Apr 1995 19:31:31 -0500
Message-Id: <199504130031.TAA27500@owl.cse.nd.edu>
To: mpi-comm@CS.UTK.EDU
Subject: MPI Developers Conference -- Preliminary Announcement and CFP
Reply-to: Andrew.Lumsdaine@nd.edu


	 *** PRELIMINARY ANNOUNCEMENT AND CALL FOR PAPERS ***

		      MPI Developers Conference

			   June 22-23, 1995
		       University of Notre Dame
			Notre Dame, IN  46556

The MPI Developers Conference is a conference for developers of
applications which use the Message Passing Interface (MPI) standard
and is intended to support the continued development and use of MPI
and its extensions.  The conference will provide a forum for
developers from national laboratories, industry, and academia who are
using MPI to present their ideas about, and experiences with, MPI.

In addition, a full-day pre-conference tutorial on MPI will be offered
on June 21, 1995.

Since this conference is intended to be cutting-edge (and, if
possible, controversial), we welcome abstracts for presented papers,
oral presentations (i.e., talks with no full paper), panel
discussions, and software demonstrations.  Abstracts should be
approximately 500 words (+- 250) in length and sent by email (in
ASCII, LaTeX, PostScript, or HTML format), if possible.  The deadline
for submitting abstracts is May 29, 1995.  Abstracts will be reviewed
and authors notified of their acceptance by June 5, 1995.  Final
versions of accepted presented papers will be due June 21, 1995 and
should be provided in a form suitable for reading by WWW browsers
(HTML preferred).  In keeping with the cutting-edge nature of the
conference, the conference proceedings will be made available on the
World Wide Web.

Please submit abstracts (in ASCII, LaTeX, PostScript, or HTML format) to

    mpidc95@lsc.cse.nd.edu

Topics include (but are not limited to):

    o Applications using MPI

    o Implementations of MPI

    o Extensions to MPI

    o Why MPI is better/worse than other message passing systems

    o Message passing versus shared memory

    o The future of message passing

    o Software issues


Tutorial:

    An MPI tutorial will be offered on June 21, 1995.  This tutorial
    will be unique -- it will not be just an extended lecture about
    MPI.  The tutorial will be conducted in Notre Dame's SPARC-based
    instructional cluster where  Each tutorial attendee will have use
    of a SPARC-10 workstation throughout the tutorial.  The tutorial
    lectures will be interspersed with a series of exercises requiring
    each tutorial attendee to write, debug, and run MPI-based programs
    using C or Fortran. 

    Because of the fixed number of SPARCs available in the cluster,
    tutorial attendance is limited to 20.

    Instructors:
        Anthony Skjellum, William Gropp, Nathan Doss, Andrew Lumsdaine


Software Demonstrations:

    Conference attendees who wish to provide software demonstrations
    instead of, in addition to, or in conjunction with a paper are
    encouraged to do so.  A SPARC-based instructional cluster will be
    reserved for this purpose.  Please indicate on your abstract
    submission if you are interested in doing a demo and what your
    computational requirements will be.


Social:

    The following social events will be held in the Center for
    Continuing Education at Notre Dame:

        Reception, evening of June 21
        Lunch, June 22 & 23
        Banquet, evening of June 22

    Exact times will be announced with the preliminary program for the
    conference.


Registration:

    A registration form is available at

        http://www.cse.nd.edu/mpidc95/Registration.ps

    Early registration (before June 2, 1995) is $150 for all
    attendees.  After June 2, the registration fee will be $200.  
    On-site registration will be accepted.  The conference fees
    include an evening reception on June 21, lunch on June 22 & 23, 
    and a banquet on June 22.

    The tutorial fee is $150 for conference attendees, $225 for
    non-conference attendees.  Tutorial attendance is limited to the
    first 20 respondents.

    Mail your completed registration form with payment to:

        MPI Developers Conference
        Center for Continuing Education
        P.O. Box 1008
        University of Notre Dame
        Notre Dame, IN  46556

    All fees are payable by credit card (M/C or Visa) or check to the
    University of Notre Dame.  Credit card registrations may be faxed
    to (219) 631-8083 (Web registration is not supported at this time
    because of concerns about the present state of secure
    transactions).


Transportation:

    Notre Dame is served by the South Bend airport (officially known
    as the Michiana Regional Transportation Center).  The airport is
    about 20 minutes from Notre Dame.  Taxi and bus service are
    available.  Most major airlines fly into South Bend.  Delta,
    USAir, and Northwest offer jet service (DC-9 and 737) while United
    and American provide commuter service.  Notre Dame is about a two
    hour drive from Chicago O'Hare airport.

    A map and directions to Notre Dame from the South Bend airport and
    from O'Hare airport will be made available on the conference Web
    page (http://www.cse.nd.edu/mpidc95/).


Hotel Accomodations:

    A block of rooms has been reserved at the Holiday Inn University
    Area (219) 272-6600.  Shuttle service will be available at
    specified times during the conference.  If you would like us make
    a reservation for you, please indicate so on your registration
    form.


Organizing Committee: 

    Andrew Lumsdaine, University of Notre Dame,
      Department of Computer Science and Engineering

    Greg Burns, Ohio Supercomputer Center

    William Gropp, Argonne National Laboratory

    Ewing Lusk, Argonne National Laboratory

    Anthony Skjellum, Mississippi State University,
      NSF Engineering Research Center for Computational
      Field Simulation + Computer Science Department


For further information, see:

    http://www.cse.nd.edu/mpidc95/

or contact

    Andrew Lumsdaine
    Department of Computer Science and Engineering
    University of Notre Dame
    Notre Dame, IN  46556
    Phone: (219) 631-8716
    Fax: (219) 631-9260
    Internet: lumsdaine.1@nd.edu


From owner-mpi-core@mcs.anl.gov Thu May 18 12:16:27 1995
Received: from antares.mcs.anl.gov by netlib2.cs.utk.edu with ESMTP (cf v2.9t-netlib)
	id MAA16523; Thu, 18 May 1995 12:16:26 -0400
Received: (from listserv@localhost) by antares.mcs.anl.gov (8.6.10/8.6.10)
	id LAA15303 for mpi-comm-archive@netlib2.cs.utk.edu; Thu, 18 May 1995 11:16:35 -0500
Date: Thu, 18 May 1995 11:16:35 -0500
Message-Id: <199505181616.LAA15303@antares.mcs.anl.gov>
To: mpi-comm-archive@netlib2.cs.utk.edu
From: Majordomo@mcs.anl.gov
Subject: Welcome to mpi-comm
Reply-To: Majordomo@mcs.anl.gov

--

Welcome to the mpi-comm mailing list!

If you ever want to remove yourself from this mailing list,
send the following command in email to
"mpi-comm-request@mcs.anl.gov":

    unsubscribe

Or you can send mail to "Majordomo@mcs.anl.gov" with the following command
in the body of your email message:

    unsubscribe mpi-comm mpi-comm-archive@netlib2.cs.utk.edu

Here's the general information for the list you've
subscribed to, in case you don't already have it:

[Last updated on: Wed May 17 21:33:45 1995]
This is the MPI Forum discussion list, for all parts of MPI and MPI-2.
Email participation from those not attending meetings is welcome.

To unsubscribe, send

   unsubscribe mpi-comm

to majordomo@mcs.anl.gov.
From owner-mpi-comm@CS.UTK.EDU Thu May 18 12:20:03 1995
Received: from CS.UTK.EDU by netlib2.cs.utk.edu with ESMTP (cf v2.9t-netlib)
	id MAA16556; Thu, 18 May 1995 12:19:58 -0400
Received: from localhost by CS.UTK.EDU with SMTP (cf v2.9s-UTK)
	id MAA02350; Thu, 18 May 1995 12:14:03 -0400
X-Resent-To: mpi-comm@CS.UTK.EDU ; Thu, 18 May 1995 12:14:02 EDT
Errors-to: owner-mpi-comm@CS.UTK.EDU
Received: from antares.mcs.anl.gov by CS.UTK.EDU with ESMTP (cf v2.9s-UTK)
	id MAA02338; Thu, 18 May 1995 12:14:00 -0400
Received: from mcs.anl.gov (donner.mcs.anl.gov [140.221.5.134]) by antares.mcs.anl.gov (8.6.10/8.6.10)  with ESMTP
	id LAA15220 for <mpi-comm@cs.utk.edu>; Thu, 18 May 1995 11:13:57 -0500
Message-Id: <199505181613.LAA15220@antares.mcs.anl.gov>
To: mpi-comm@CS.UTK.EDU
Subject: mpi-comm mailing list
Date: Thu, 18 May 1995 11:13:56 -0500
From: Rusty Lusk <lusk@mcs.anl.gov>


Dear mpi-comm,

David and I are moving the mailing lists, in order to place them under the
control of the majordomo list manager, which will let people subsucribe and
unsubscribe themselves from lists, find out who is on them, etc.  You should
soon get a message welcoming you to the "new" mpi-comm mailing list, since we
are automatically subscribing everyone on mpi-comm.  The full address of the
mpi-comm mailing list will now be

  mpi-comm@mcs.anl.gov

instead of mpi-comm@cs.utk.edu.  After that, you should get (on the new list)
a set of subcommittee mailing lists that you can join.  Let us know if there
are any questions, problems, or confusions.

David Walker and Rusty Lusk

From mpi-comm-human@mcs.anl.gov Thu May 18 14:32:37 1995
Received: from antares.mcs.anl.gov by netlib2.cs.utk.edu with ESMTP (cf v2.9t-netlib)
	id OAA17831; Thu, 18 May 1995 14:32:37 -0400
Received: (from listserv@localhost) by antares.mcs.anl.gov (8.6.10/8.6.10)
	id NAA19795 for mpi-comm-out; Thu, 18 May 1995 13:31:03 -0500
Received: from mcs.anl.gov (donner.mcs.anl.gov [140.221.5.134]) by antares.mcs.anl.gov (8.6.10/8.6.10)  with ESMTP
	id NAA19788; Thu, 18 May 1995 13:30:56 -0500
Message-Id: <199505181830.NAA19788@antares.mcs.anl.gov>
To: mpi-core@antares.mcs.anl.gov, mpi-comm@antares.mcs.anl.gov
Subject: Subcommittee discussion lists
Date: Thu, 18 May 1995 13:30:55 -0500
From: Rusty Lusk <lusk@mcs.anl.gov>
Sender: owner-mpi-core@mcs.anl.gov
Precedence: bulk

You are getting this note because you are subscribed to either of the 
following lists

  mpi-comm@mcs.anl.gov     MPI Forum discussion list, all comments welcome 
  mpi-core@mcs.anl.gov     MPI forum meeting attendees list             
  
The MPI-2 Forum has tentatively formed subcommittees to work on various
projects within MPI-2.  We are not automatically subscribing anyone to these
lists.  If you want to participate in the discussion on a particular topic,
please send mail to 

  majordomo.mcs.anl.gov

containing

  subscribe <list-name>  <your email address>

The lists and their topics are:

  mpi-dynamic    MPI Forum discussion list for dynamic process management
  mpi-1sided     MPI Forum discussion list for one-sided communication
  mpi-coll       MPI Forum discussion list for collective operations
  mpi-external   MPI Forum discussion list for external interfaces 
  mpi-bind       MPI Forum discussion list for C++ and Fortran-90 bindings

Other subcommittees might appear.  These are the ones agreed on at the first
MPI-2 meeting.  In MPI-1, the most specific discussions took place on the
the subcommittee lists, where draft proposals were put together.

We apologize for the barrage of mail today on organizing the mailing lists.
This should be the last message on this topic.

Regards,
Rusty Lusk and David Walker
From owner-mpi-comm@CS.UTK.EDU Fri Jun  9 19:43:13 1995
Received: from CS.UTK.EDU by netlib2.cs.utk.edu with ESMTP (cf v2.9t-netlib)
	id TAA26786; Fri, 9 Jun 1995 19:43:13 -0400
Received: from localhost by CS.UTK.EDU with SMTP (cf v2.9s-UTK)
	id TAA06191; Fri, 9 Jun 1995 19:39:40 -0400
X-Resent-To: mpi-comm@CS.UTK.EDU ; Fri, 9 Jun 1995 19:39:38 EDT
Errors-to: owner-mpi-comm@CS.UTK.EDU
Received: from macsch.com by CS.UTK.EDU with SMTP (cf v2.9s-UTK)
	id TAA06177; Fri, 9 Jun 1995 19:39:36 -0400
Received: from [161.34.71.49] by macsch.com (5.61/MSC-950526)
	id AA16700; Fri, 9 Jun 95 16:39:35 -0700
Received: by warsaw.local (4.1/SunOS)
	id AA19178; Fri, 9 Jun 95 16:46:33 PDT
Date: Fri, 9 Jun 95 16:46:33 PDT
From: sciviz@macsch.com (Sciviz CO. (controlled by Alan Caserio))
Message-Id: <9506092346.AA19178@warsaw.local>
To: gropp@mcs.anl.gov, mpi-comm@CS.UTK.EDU
Subject: mpi user interface
Cc: sciviz@madrid.macsch.com

Hello :-)

I am Mark Kelly (username sciviz).
 
I have some experience with pvm, but none with mpi,
 
I have been asked to work on a project involving NASA,
Rockwell, and the MacNeal-Schwendler Corporation, and
some cfd code involving mpi.  My specific area relates
to job submission, load balancing, job monitoring, etc.
 
I was wondering about a user interface (X/Motif type)
on top of or integrated with mpi, do you know of anyone
working in this area of mpi ?  If so, please let me
know who they are/how I can meet/talk/e-mail them.
 
Thank you for all time and effort in advance,
Mark Kelly
(sciviz@macsch.com)

Cc: dongarra@cs.utk.edu
From owner-mpi-comm@CS.UTK.EDU Sat Jun 10 15:27:08 1995
Received: from CS.UTK.EDU by netlib2.cs.utk.edu with ESMTP (cf v2.9t-netlib)
	id PAA01863; Sat, 10 Jun 1995 15:27:08 -0400
Received: from localhost by CS.UTK.EDU with SMTP (cf v2.9s-UTK)
	id PAA05631; Sat, 10 Jun 1995 15:24:47 -0400
X-Resent-To: mpi-comm@CS.UTK.EDU ; Sat, 10 Jun 1995 15:24:46 EDT
Errors-to: owner-mpi-comm@CS.UTK.EDU
Received: from macsch.com by CS.UTK.EDU with SMTP (cf v2.9s-UTK)
	id PAA05624; Sat, 10 Jun 1995 15:24:45 -0400
Received: from [161.34.71.49] by macsch.com (5.61/MSC-950526)
	id AA29400; Sat, 10 Jun 95 12:24:40 -0700
Received: by warsaw.local (4.1/SunOS)
	id AA16504; Sat, 10 Jun 95 12:31:38 PDT
Date: Sat, 10 Jun 95 12:31:38 PDT
From: sciviz@macsch.com (Sciviz CO. (controlled by Alan Caserio))
Message-Id: <9506101931.AA16504@warsaw.local>
To: raja@tbag.osc.edu
Subject: lam, xmpi
Cc: lam@tbag.osc.edu, mpi-comm@CS.UTK.EDU

Raja, hello :-)

This is Mark Kelly (username sciviz) again.

> My specific area relates to job submission, 
> load balancing, job monitoring, etc.
> 
> I was wondering about a user interface (X/Motif type)
> on top of or integrated with mpi, do you know of anyone
> working in this area of mpi ?  If so, please let me
> know who they are/how I can meet/talk/e-mail them.

---

>> Take a look at LAM.  It's an MPI cluster computing environment for UNIX,
>> and has XMPI, a Motif GUI to monitor and control the application.  The next
>> version of XMPI will be out within a month and will support more features,
>> including tracing.  I can show you a sneak preview if needed. :-)

---

Thanks so much, it is really neat.

A couple of questions -

	1). Does (or will) the next versions of lam/xmpi involve
            node selection based on load, resource criteria, etc. ?

        2). If not, would you (or others in the lam project) want to
            incorporate some modular load scheduling/balancing
            routines into lam/xmpi ? 

Perhaps some vendors provide closed tools for managing/monitoring mpi
programs, (IBM, LSF ?) but I am interested in developing a more open
(multi-vendor) gui to submit mpi programs to clusters.  

Let me know if and how I can help !

Any and all info is greatly appreciated.

Mark Kelly
(sciviz@macsch.com)
From mpi-comm-human@mcs.anl.gov Wed Jul  5 23:32:22 1995
Received: from antares.mcs.anl.gov by netlib2.cs.utk.edu with ESMTP (cf v2.9t-netlib)
	id XAA21782; Wed, 5 Jul 1995 23:32:21 -0400
Received: (from listserv@localhost) by antares.mcs.anl.gov (8.6.10/8.6.10)
	id WAA05498 for mpi-comm-out; Wed, 5 Jul 1995 22:28:55 -0500
Received: from HARVARDA.HARVARD.EDU (harvarda.harvard.edu [128.103.60.11]) by antares.mcs.anl.gov (8.6.10/8.6.10)  with SMTP
	id WAA05231; Wed, 5 Jul 1995 22:24:57 -0500
Message-Id: <199507060324.WAA05231@antares.mcs.anl.gov>
Received: from physics1.byu.edu by HARVARDA.HARVARD.EDU (IBM VM SMTP V2R2)
   with TCP; Wed, 05 Jul 95 23:22:04 EDT
Date: Wed, 5 Jul 1995 21:21:57 -0600
To: mpi-coll@mcs.anl.gov, mpi-comm@mcs.anl.gov, mpi-core@mcs.anl.gov,
        mpi-dynamic@mcs.anl.gov, mpi-external@mcs.anl.gov
From: David@wishes.to.remain.anonymous.UA
Subject: your romance ad in USSR                                                                                                                             pn R   A  #L  O (Unverified)
Sender: owner-mpi-core@mcs.anl.gov
Precedence: bulk


       ##    meet women of the former USSR through romance ads    ##

     Months ago, Olga Kosmina placed my personal ad in several papers of the
former Soviet Union.  Since that time I have received over 40 responses for
the $50 I mailed Olga.  (I believe she paid the newspapers something around 
$35 and kept the rest for her efforts.)
     I have found greater success and savings by placing my own personal 
romance advertisement rather than purchasing addresses through Russian "bride"
catalog companies.
     If you are interested in placing a personal romance ad as I did, contact
Olga.  She has built up a list of most every newspaper and magazine in the 
former Soviet Union and could help direct your ad to certain areas if you 
wish.  She writes, "please say that I place all ad _throughout_ Russia and 
other countries of former Soviet Union, not only Western Russia."
     Olga is 23 years old, has a bachelors in biology and works full-time as a
florist in Kiev.  She speaks, reads and writes English as well as her native 
languages of Russian and Ukrainian.
     I realize that it is a very trusting person who would put $ into an 
envelope and mail to a foreign country.  If you would rather send a letter of 
inquiry first, Olga will respond to your questions.  It takes about 16 days 
for a letter to travel from the USA to Kiev.

Olga Kozmina
Dekabristov Street 5 - 178
Kiev 253121
Ukraine

     I have found that by placing a single bill between two pieces of 
newsprint inside an envelope, the Ukrainian post cannot see through and does 
not bother to tamper.  I have yet to lose a letter sent to Kiev.  I am sorry 
that Olga does not have e-mail because it would make contact with her much 
easier.
     I am posting anonymously because of the inordinate amount of e-mail which
 I would receive -- inquiries as well as flames.

Best Wishes,

David and Olga

     Although Olga has never seen a newsgroup nor heard of "net-etiquette," 
she believes that helping others exceeds the cost of angering those who feel 
the net should not be used in this fashion.
     IHA (I humbly ask) that you not flame the postmaster of this site.

peace. . .

From mpi-comm-human@mcs.anl.gov Thu Jul 20 23:03:45 1995
Received: from antares.mcs.anl.gov by netlib2.cs.utk.edu with ESMTP (cf v2.9t-netlib)
	id XAA12555; Thu, 20 Jul 1995 23:03:43 -0400
Received: (from listserv@localhost) by antares.mcs.anl.gov (8.6.10/8.6.10)
	id WAA05054 for mpi-comm-out; Thu, 20 Jul 1995 22:08:50 -0500
Received: from VM1.NoDak.EDU (SMTP@vm1.NoDak.edu [134.129.111.1]) by antares.mcs.anl.gov (8.6.10/8.6.10)  with SMTP
	id WAA04877; Thu, 20 Jul 1995 22:06:11 -0500
Date: Thu, 20 Jul 1995 22:06:11 -0500
Message-Id: <199507210306.WAA04877@antares.mcs.anl.gov>
Received: from physics1.byu.edu by VM1.NoDak.EDU (IBM VM SMTP V2R2) with TCP;
   Thu, 20 Jul 95 22:05:05 CDT
To: mpi-bind@mcs.anl.gov, mpi-coll@mcs.anl.gov, mpi-comm@mcs.anl.gov,
        mpi-core@mcs.anl.gov, mpi-dynamic@mcs.anl.gov
From: romance@in.the.former.USSR.ua
Subject: letter from Olga!  =)                                                                                            (Unverified)
Sender: owner-mpi-core@mcs.anl.gov
Precedence: bulk


     Not to long ago, I posted a message re: meeting women of the former 
soviet union through romance ads.

     In August, Olga will travel to Moscow from her home in Kiev, Ukraine.  
In Moscow, Olga will have a much easier and cost efficient means to place 
your personal romance ad throughout Russia.

Last week I received the following from Olga:

     "I have already sent your ad to the papers in such towns: Moscow, 
St. Petersburg, Vladimir, Kazan.  At nearest future I will send your ad to the
paper in some more 12 towns of Russia, where papers are published.
     Some times (in winter, spring & now) I placed your ad in other papers, 
but they are not most popular paper in Moscow and some large cities of Russia.
     Besides, I am continuing to place your ad in papers of Ukraine.  I 
promise to place your ad in some other papers when I will come to Moscow in 
August.  I am glad that you have received fairly many letters from Russian & 
Ukrainian girls and I think you will received some more ones and will find 
your ideal in my country soon.
     I thank you very much ones more for your kindness & your help.
My best wishes,

Olga"

     This isn't a scam - call it panhandling if you want. . . I sent her $40 
or $50 and I've received over 45 responses.  Unlike placing romance ads in 
the U.S., women from the former USSR respond.  Although one would guess the 
are doing so in the hopes of American citizenship, I haven't found it so.

     Olga lives in Kiev, Ukraine (population 3 million) and will travel to 
Moscow in August to visit her father.  If you were to send a letter this 
week, she would receive it in time.  The population of Moscow is 10 million 
-- (3 times the size of Los Angeles.)

     Feel free to send a letter and ask her your questions.  She will be happy
to respond.

Olga's address:

Ukraine
Kiev 253121
Dekabristov Street 5 - 178
Olga Kozmina

     I am posting anonymously because of the flames and volume of inquiries 
that would result otherwise.  I think those who are truely interested will 
take the time to write.
_____________________________________________________________________________
To: probable flamer
Subject: polite note

     Although Olga has never seen a newsgroup nor heard of "net-etiquette," 
she believes that offering lonely singles the possibility of romance exceeds 
the cost of angering those who feel the net shouldn't be used in this fashion.
     IHA (I humbly ask) that you not flame the postmaster of this site.

peace. . .

From owner-mpi-comm@CS.UTK.EDU Thu Aug 17 01:09:32 1995
Received: from CS.UTK.EDU by netlib2.cs.utk.edu with ESMTP (cf v2.9t-netlib)
	id BAA17785; Thu, 17 Aug 1995 01:09:32 -0400
Received: from localhost by CS.UTK.EDU with SMTP (cf v2.9s-UTK)
	id BAA10312; Thu, 17 Aug 1995 01:04:44 -0400
X-Resent-To: mpi-comm@CS.UTK.EDU ; Thu, 17 Aug 1995 01:04:43 EDT
Errors-to: owner-mpi-comm@CS.UTK.EDU
Received: from theory.lcs.mit.edu by CS.UTK.EDU with SMTP (cf v2.9s-UTK)
	id BAA10305; Thu, 17 Aug 1995 01:04:42 -0400
Received: from vulture.lcs.mit.edu by theory.lcs.mit.edu (5.65c/TOC-1.2S) 
	id AA27340; Thu, 17 Aug 95 01:04:39 EDT
From: rudolph@theory.lcs.mit.edu (Larry Rudolph)
Received: by vulture.lcs.mit.edu (5.65c/TOC-1.2C) 
	id AA28949; Thu, 17 Aug 95 01:04:10 EDT
Date: Thu, 17 Aug 95 01:04:10 EDT
Message-Id: <199508170504.AA28949@vulture.lcs.mit.edu>
To: mpi-comm@CS.UTK.EDU
Subject: subscribe


From owner-mpi-comm@CS.UTK.EDU Wed Aug 23 06:18:56 1995
Received: from CS.UTK.EDU by netlib2.cs.utk.edu with ESMTP (cf v2.9t-netlib)
	id GAA01162; Wed, 23 Aug 1995 06:18:56 -0400
Received: from localhost by CS.UTK.EDU with SMTP (cf v2.9s-UTK)
	id GAA11742; Wed, 23 Aug 1995 06:13:32 -0400
X-Resent-To: mpi-comm@CS.UTK.EDU ; Wed, 23 Aug 1995 06:13:31 EDT
Errors-to: owner-mpi-comm@CS.UTK.EDU
Received: from basfegw.basf-corp.com by CS.UTK.EDU with ESMTP (cf v2.9s-UTK)
	id GAA11727; Wed, 23 Aug 1995 06:13:29 -0400
From: <sok@snow-white.zxa.basf-ag.de>
Received: from basfigw.basf-corp.com by basfegw.basf-corp.com with SMTP (PP);
          Wed, 23 Aug 1995 12:13:19 +0200
Received: from nwbz.zxd.basf-ag.de by basfigw.basf-corp.com with SMTP (PP);
          Wed, 23 Aug 1995 06:13:13 -0400
Received: from snow-white.zxa.basf-ag.de by nwbz.zxd.basf-ag.de with SMTP (PP);
          Wed, 23 Aug 1995 12:13:08 +0200
Received: by snow-white.zxa.basf-ag.de (AIX 3.1/UCB 5.61/BASF AG 91-10-31)	id AA14952;
          Wed, 23 Aug 95 12:35:16 GMT
Date: Wed, 23 Aug 95 12:35:16 GMT
Message-Id: <9508231235.AA14952@snow-white.zxa.basf-ag.de>
To: mpi-comm@CS.UTK.EDU
Subject: help

help
How do I get access to the discussion list?

Thanks,
Rob
From mpi-comm-human@mcs.anl.gov Sun Oct  1 14:57:12 1995
Return-Path: <mpi-comm-human@mcs.anl.gov>
Received: from antares.mcs.anl.gov by netlib2.cs.utk.edu with ESMTP (cf v2.9t-netlib)
	id OAA23533; Sun, 1 Oct 1995 14:57:10 -0400
Received: (from listserv@localhost) by antares.mcs.anl.gov (8.6.10/8.6.10)
	id NAA16214 for mpi-comm-out; Sun, 1 Oct 1995 13:52:42 -0500
Received: from mcs.anl.gov (donner.mcs.anl.gov [140.221.5.134]) by antares.mcs.anl.gov (8.6.10/8.6.10)  with ESMTP
	id NAA16205 for <mpi-comm>; Sun, 1 Oct 1995 13:52:29 -0500
Message-Id: <199510011852.NAA16205@antares.mcs.anl.gov>
To: mpi-comm@antares.mcs.anl.gov
Subject: MPI Poll results
Date: Sun, 01 Oct 1995 13:52:28 -0500
From: Rusty Lusk <lusk@mcs.anl.gov>
Sender: owner-mpi-core@mcs.anl.gov
Precedence: bulk

Many of you may have already seen this, but I thought I would pass it
along.  Although the sample is not at all random, there are interesting
results here:

  Those who use MPI like it.
  People do use the advanced features of MPI-1, although there are
      some ease-of-use problems in datatypes (no surprise).
  Most of the things they would like to have we are indeed working
      on for MPI-2, but not all.  

Thanks to Nick Nevin.

Regards,
Rusty


			MPI Poll '95 Results

A poll was conducted to better understand how programmers are
using the rich MPI functionality, what extensions are needed, and
how to prioritize our work to better serve MPI users, and the HPC 
community at large.

The complete results of the poll are also available on WWW at the
following URL:

http://www.osc.edu/Lam/mpi/mpi_poll.html

There were 129 responses.
The numbers given beside each answer indicate the total number of
respondents who checked that answer.

---------------------------------------------------------------------
Are you using MPI? (check one)

(104) Currently using it
( 25) May use it in the future

---------------------------------------------------------------------
Which types of decomposition are you currently using? (check all that apply)

(68) Master/Slave
(81) Grid Decomposition
(46) Other

---------------------------------------------------------------------
Which machine architectures are you currently using? (check all that apply)

( 83) NOW (Network of Workstations)
( 35) Standalone SMP (SGI, SUN, etc.)
(101) MPP (T3D, Paragon, SP2, Exemplar, CS2, etc.)

---------------------------------------------------------------------
Which MPI groups of functions do you use? (check all that apply)

- Point-to-Point:

	(98) Blocking
	(93) Non-blocking
	(39) Derived Datatypes

(93) Collective

- Groups, Contexts, and Communicators:

	(54) Group Functions
	(54) Communicators (Intra) beyond MPI_COMM_WORLD
	(15) Inter-communicators
	( 8) Attribute Caching

- Topologies:

	(41) Cartesian
	(17) Graph

- Environment:

	(24) Predefined Attributes
	(16) Error Handlers

---------------------------------------------------------------------
Which derived datatype constructors do you use? (check all that apply)

(39) Contiguous
(39) Vector
(22) Indexed
(38) Struct
(19) Pack

---------------------------------------------------------------------
Which intra-communicator creation calls do you use? (check all that apply)

(29) Comm_dup
(40) Comm_create
(28) Comm_split


These are the verbatim responses to the question on missing MPI
functionality.

---------------------------------------------------------------------
What missing MPI functionality do you need for your programs?

|> Dynamic task creation.  One-sided communications

---------------------------------------------------------------------
What missing MPI functionality do you need for your programs?

active message types, remote execution, interrupt-messages

---------------------------------------------------------------------
What missing MPI functionality do you need for your programs?

 > Dynamic creation of tasks for client-server programs
 > Parallel I/O

---------------------------------------------------------------------
What missing MPI functionality do you need for your programs?

Better standard I/O facilities

---------------------------------------------------------------------
What missing MPI functionality do you need for your programs?

Some simple forms of remote actions without explcit polling
by the remote program:
- remote memory access
- fully asynchronous collective operations
- active messages
Full fledged multithreading is not so important.

I would rather prefer to reduce the functionality of MPI 
in some areas. In particular, I would propose to
standardize a  v e r y  small subset of functions which
are easy to implement (efficiently).
These can then serve as a basis for generic implementations of
MPI. This would improve the availability of MPI on new
machines and research machines.

Has anybody thought about standardizing benchmarks?
As an assembler handbook for a CISC computer
is incomplete without a table of cycle times,
I consider a library implementation without
timings for the most common operations incomplete.
One way to force vendors to disclose this vital 
infomation would be to make a set of benchmarks
part of some kind of certification process.

---------------------------------------------------------------------
What missing MPI functionality do you need for your programs?

* For porting existing parallel progs to MPI it would be useful to
  be able to have processes ranked from 1->n instead of 0->n-1. 
  There does not appear to be a way of doing this (as far as I can
  make out from the standard!).

---------------------------------------------------------------------
What missing MPI functionality do you need for your programs?

MPI_Pprobe(int source, int tagcount, int *tagarray, 
        	         MPI_Comm comm, MPI_Status *status)
	This will wait for any message with from a given array of
	tags, but given the choice between two or more messages will
	return the status of the message with the lowest tag-index.

MPI_Ipprobe(...)
	As above, but does not block.

MPI_Discard(int source, int tag, MPI_Comm comm)
	Especially when writing task-farms and pipelines, there are
	many cases when the existence of a message gives enough
	information and the content can be discarded.  There are also
	cases where the message itself is out of date.  Creating a
	receive buffer for a message that is not going to be read is a
	waste of resources, and can also be quite complicated for the
	programmer. 

---------------------------------------------------------------------
What missing MPI functionality do you need for your programs?
_ 
_ Dynamic startup of processes, C++ binding

---------------------------------------------------------------------
What missing MPI functionality do you need for your programs?

Nothing that I can think of at the moment...  Parallel I/O would be
nice, though.  We can deal without it, (obviously), but it might make
things a little easier and more streamlined.

---------------------------------------------------------------------
What missing MPI functionality do you need for your programs?

An easy way to send a message from one group to ALL members of another
group.

---------------------------------------------------------------------
What missing MPI functionality do you need for your programs?

> Some facility for inter-application communication.  I would like to
> be able to set up an inter-communicator between two applications
> that are started at different times.  Specifically, I would like the
> ability to create persistent servers and transient clients.

---------------------------------------------------------------------
What missing MPI functionality do you need for your programs?

Our current NX implementation uses hrecvx() -- whether we can reasonably
convert this to multiple threads or processes is as yet unclear to us.

We also start processes at initialization (only).  A portable way to
do this would be very useful. 

---------------------------------------------------------------------
What missing MPI functionality do you need for your programs?

 - Spawning as it is possible in PVM: one process creates another.
 - An asynchronous receive function should have a pointer to a
   function as parameter. This function is called when the message
   can is received (this is possible e.g. in CMMD for the CM-5).

---------------------------------------------------------------------
What missing MPI functionality do you need for your programs?

Dynamic process creation.
The ability for a new program to join to a running parallel application.
Calls to provide host and platform information.

---------------------------------------------------------------------
What missing MPI functionality do you need for your programs?

>1. Support for atomicity, e.g., an atomic transaction
>2. Support for a process to asynchronously send a msg to a group of
	processes, such as the eureka mechanism in Cray T3D

---------------------------------------------------------------------
What missing MPI functionality do you need for your programs?

> 1)congestion free multi broadcasting for balanced data distribution 
> 2)i/o :)

---------------------------------------------------------------------
What missing MPI functionality do you need for your programs?

MPI_SPAWN - ABILITY TO CREATE A PROCESS -- MAY NOT REALLY FIT IN MPI

---------------------------------------------------------------------
What missing MPI functionality do you need for your programs?

Guaranteed access to stdio.

---------------------------------------------------------------------
What missing MPI functionality do you need for your programs?

I would like to have the facility to set up a non-blocking receive
with a pointer to a handling function.  Upon arival of the message,
the function would be called.

The facility for supplying a pointer to a function that returns a
pointer to a receive buffer would be very useful.  Upon arrival of the
message, the function would be called and the message DMA'ed into the
memory pointed to by the function (which would have access to all of
the message's header information).  A null pointer returned by the
function would indicate that the message should be ignored.

---------------------------------------------------------------------
What missing MPI functionality do you need for your programs?

Dynamic creation or abortion of process; Dynamic relabeling of process; Simulat
ion of Fault-tolerance.

---------------------------------------------------------------------
What missing MPI functionality do you need for your programs?
 
I need to investigate MPI further before answering this
 
---------------------------------------------------------------------
What missing MPI functionality do you need for your programs?

- support for threads
- active messages
- integrated MPI-IO

---------------------------------------------------------------------
What missing MPI functionality do you need for your programs?

>  - multicast operation that replaces replicated pt-to-pt sends.
>  - an operation to create new communicators without a requirement
     that it be a collective call across an existing communicator
     (ie. like the existing comm_create but where only the members
      of the new communicator need to make the call - when all processes
      to be in the new comm have made the call, then everyone completes)

---------------------------------------------------------------------
What missing MPI functionality do you need for your programs?

> It would be nice to have a standard, class-based C++ interface...

---------------------------------------------------------------------
What missing MPI functionality do you need for your programs?

> SCATTER & GATHER functions to decompose 2 dim. arrarys over a grid.

---------------------------------------------------------------------
What missing MPI functionality do you need for your programs?

  * Myself and other users of the AP1000 machine which has a broadcast
    network use a multicast type operation very often.  It is hoped that
    the current proposal within the MPI-2 forum for multicast will be
    accepted.

  * Remote memory operations - like the current put/get proposal.

  * Interrupt driven send/recv calls - again that has been proposed within
    the MPI-2 forum.

---------------------------------------------------------------------
What missing MPI functionality do you need for your programs?

IO - this is a big pain!

---------------------------------------------------------------------
What missing MPI functionality do you need for your programs?

> Advanced reduce (SUM) subroutine, where only those values different than 
> zero are summed up.  

---------------------------------------------------------------------
What missing MPI functionality do you need for your programs?

> Interrupt driven handled messages, ala Intel's NX would be useful
> for certain of my requirements.

---------------------------------------------------------------------
What missing MPI functionality do you need for your programs?

    Remote operations: load, store, [op] to memory (e.g., add to
    memory.)

    As an alternative, "active messages" (which can be used to implement
    remote operations.)

    This functionality is *very* important to my applications.
    Without it, MPI is not terribly interesting.

---------------------------------------------------------------------
What missing MPI functionality do you need for your programs?

A handler based receive function, so that my code will be
interrupted asynchronously and a specified handler will be run when a
message arrives. This could make a big difference to efficiency (our
local MPI guru is in the process of adding MPI_Hrecv().

---------------------------------------------------------------------
What missing MPI functionality do you need for your programs?

Non-blocking extension of collective communication for 
different buffers.
For example
    call MPI_REDUCE(A,...)
    call MPI_REDUCE(B,...)
I need
    CALL MPI_REDUCE_NONBLOCKing(A...)
     CALL MPI_REDUCE_NONBLOCKing(B,...)
    CALL MPI_BARRIER()

---------------------------------------------------------------------
What missing MPI functionality do you need for your programs?

  Remote procedure calls.

---------------------------------------------------------------------
What missing MPI functionality do you need for your programs?

|> A more efficient global sum!!

---------------------------------------------------------------------
What missing MPI functionality do you need for your programs?

I'm pretty new to this game, so I may not understand all the
implications, but I think a non-blocking version of MPI_Bcast() would be
useful.

 
---------------------------------------------------------------------
What missing MPI functionality do you need for your programs?


Haven't run across any yet... Libraries I may want to use
(mostly from PNL HPCC group) don't yet run under MPI, but they're
working on it... I believe they would be happier if there were
explicit shared memory (get/put) support.


---------------------------------------------------------------------
What missing MPI functionality do you need for your programs?

   Receive-add (or more general receive-op) would be very nice for 
     all the different types of receives.
   Native complex type for C/C++ is needed
   It would be nice to be able to do a scatter where the origin 
     (not the destination as it seems to be now) creates the derived 
     datatype that is used on the receiving end. After all how can you 
     destination create the indexed derived datatype if it doesn't
     know what is coming.  

---------------------------------------------------------------------
What missing MPI functionality do you need for your programs?

Addition/deletion of dynamic created processes to MPI_COMM_WORLD at runtime.

---------------------------------------------------------------------
What missing MPI functionality do you need for your programs?

Dynamic Process Management

---------------------------------------------------------------------
What missing MPI functionality do you need for your programs?

1) The standard for C should include complex numbers, it use
   to be there and then was taken out, I need this for C++
   and global operations. Now I have to ifdef code for using 
   complex or real with a data type of complex I won't need to
2) Receives should support add to location or more general 
   merge into location rather then just copy into buffer.

---------------------------------------------------------------------
What missing MPI functionality do you need for your programs?

Active messages, parallel IO, task creation

---------------------------------------------------------------------
What missing MPI functionality do you need for your programs?

c++ binding/support (I do know about MPI++)

---------------------------------------------------------------------
What missing MPI functionality do you need for your programs?

Parallel I/O - especially disk read/writes

---------------------------------------------------------------------
What missing MPI functionality do you need for your programs?

I/O

---------------------------------------------------------------------
What missing MPI functionality do you need for your programs?

None right now, but in my opinion it would be interesting to
add task (or thread) management functios.

---------------------------------------------------------------------
What missing MPI functionality do you need for your programs?

Task support like PVM (spawn, ...)

---------------------------------------------------------------------
What missing MPI functionality do you need for your programs?

General high-level permutation routines 
(like CM-2/CM-5 CMF_send/CMF_get)

---------------------------------------------------------------------
What missing MPI functionality do you need for your programs?

The ability to expand and contract the working space,
or number of nodes.

---------------------------------------------------------------------
What missing MPI functionality do you need for your programs?

1) A boolean function returns whether you are in the Communicator
or not.

2) A mapping function to tell a rank in communicator "A" 
corresponding to a rank in communicator "B".

---------------------------------------------------------------------
What missing MPI functionality do you need for your programs?

Those things that MPI-2 is designed to address, like I/O.

---------------------------------------------------------------------
What missing MPI functionality do you need for your programs?

Ability to query unused capacity of user buffer for
buffered communication (so that I know whether a buffered
send request will be successful).

---------------------------------------------------------------------
What missing MPI functionality do you need for your programs?

a send that implies already a receive (a little bit like
in data parallel programming, e.g. C*)

---------------------------------------------------------------------
What missing MPI functionality do you need for your programs?

Dynamic process control!

---------------------------------------------------------------------
What missing MPI functionality do you need for your programs?

Parallel I/O is definitely needed.  I'm having problems
using very simple I/O with flushing/seeking to EOF on an
SP-2.  Of course, this isn't really supported so it shouldn't
work, but parallel I/O would fix it.

---------------------------------------------------------------------
What missing MPI functionality do you need for your programs?

full functionalityi in an implementation. To actually do what we ask
not default to another mode that is safe.

---------------------------------------------------------------------
What missing MPI functionality do you need for your programs?

None

---------------------------------------------------------------------
What missing MPI functionality do you need for your programs?

* I need some mechanism for informing programs about the
  interconnection topology, so the application can make 
  partition decisions.  For example, on a machine with a
  communication hierarchy, such as a cluster of shared-memory
  machines, my apps need to know which tasks are in the same
  box, and which are in different boxes to make partitioning
  decisions.  Presumably the problem is general.
* related to this, I need a collective communication operation
  that exchanges common task environmental information.  For
  example, most of my programs begin with an Allgather of
  hostname/pid/ip address/... info, so every task knows 
  common info about the other tasks.  Some MPE function to
  provide similar environmental info, if it was possible in
  a relatively portable way would be ideal.

---------------------------------------------------------------------
What missing MPI functionality do you need for your programs?

I am in urge need for a communication between the
workstation cluster and the massively parallel systems.
Therefor it would be good to have MPI supporting different
protocols simultaniously.

Spawning processes and integrating allready running processes
into an existing MPI_COMM_WORLD would be a good feature, too.

---------------------------------------------------------------------
What missing MPI functionality do you need for your programs?

A) dynamical creation of processes
B) MPI IO standard

---------------------------------------------------------------------
What missing MPI functionality do you need for your programs?

Exclusive scans (rather than inclusive ones) would be nice

---------------------------------------------------------------------
What missing MPI functionality do you need for your programs?

Multi threaded funcionality, but the proposals for MPI2
may cover this missing thing (requests with handler
functions)

---------------------------------------------------------------------
What missing MPI functionality do you need for your programs?

C++ bindings would really help...
An easy way to debug and trace ALL mpi traffic in an application.

---------------------------------------------------------------------
What missing MPI functionality do you need for your programs?

Threads

---------------------------------------------------------------------
What missing MPI functionality do you need for your programs?

process control -- creation (spawning) and deletion (kill)

---------------------------------------------------------------------
What missing MPI functionality do you need for your programs?

parallel IO to Files

---------------------------------------------------------------------
What missing MPI functionality do you need for your programs?

c++ binding

In a Master-Slave context one often has
to use gatherv etc because there is no data to be sent from
the master. This complicates the code, requiring creation
of recvcounts and displs arrays which are all the same 
except for the first element! I would like `gatherx' 
(for "exclusive") etc to behave the same as gather but 
with no contribution from root.


These are the verbatim responses to the request for general commentary
on MPI.

---------------------------------------------------------------------
Comments:

>  I use MPI for systems programming. I am building a parallel language
>  run-time system on top of it. I do not use it for application programming.

---------------------------------------------------------------------
Comments:

  !Active messages are highly desirable!
  although not part of the current standard...

---------------------------------------------------------------------
Comments:

I'm not very familiar with MPI. Mostly I had used Express and PVM for
parallelization. But I'm interested in using MPI for more portable
programming.

---------------------------------------------------------------------
Comments:

 > MPI is very useful. Nevertheless, It is very hard to convince
 > people to natively implement in MPI. Usually, MPI is one of the
 > transport layer (with PVM & Parmacs), so only basic functionnalities
 > are used. Probably, the lack of native versions (supported by
 > hardware provider) and associated tools is the main reason for that.
 >
 > Some points are not very clear in the standard such as the beaviour
 > of some functions (ex: ready mode,...)

---------------------------------------------------------------------
Comments:

Excellent product, not to say almost perfect.

---------------------------------------------------------------------
Comments:

* Currently use only the predefined communicator MPI_COMM_WORLD in
  all of my applications.

* The MPI timing routines are very useful for having *portable*
  timing, however it is not clear (to me) how comparable these are 
  from one system to another.

* The various MPI_allxxx, MPI_allxxxv routines are all 
  highly useful, however it is vital that implementations of these 
  are heavily optimised. 
  -> For some application codes I have set up a compile time choice 
  between MPI collective routines OR hand written (reasonably 
  efficient) collective routines using only MPI sends and recvs; this 
  is necessary to avoid a performance hit on machines which have very 
  naive implementations of collective routines.

* There is a general drift here towards fortran 90. Specific
  bindings for F90 will therefore be needed; there do not seem to
  have been any efforts to address this.

* In general, I find MPI far better to use than all other message 
  passing setups with which I am familiar (PVM,Intel NX,etc.). I
  am now using it in *all* the application programs that I am working 
  on to ensure portability.

---------------------------------------------------------------------
Comments:

Derived data types are an absolute pain to construct, and are even
more difficult to debug.  This is particularly true when creating
types with non-standard offsets.  Some means of 'viewing' the actual
message content (i.e. the underlying basic values) would be
invaluable.

---------------------------------------------------------------------
Comments:

I am encouragin all our customers/collaborators to use MPI as the standard.
We are responsible for supporting some 50% of the UK Grand-Challenge applicatio
ns
on a 320-processor Cray T3D, 16-processor IBM SP-2 and 64-processor Intel
iPSC/860. Applications in a wide area of science and engineering.
I am using MPI with Fortran-90.

---------------------------------------------------------------------
Comments:
 
_ contains allmost everything one can ask for...
 
---------------------------------------------------------------------
Comments:

It would be nice to have a universal way to run MPI.  I realize that
some implementations are trying to use "mpirun" as a general environment,
which is nice for workstations; but what about the big MPP's, like the
SP2, and such?  If the vendors could all get together on this too, that
would be great!  Then us poor programmers wouldn't have to worry about
the easily-confused users getting confused!  :)

---------------------------------------------------------------------
Comments:

We use MPI (among other things) to provide communication for HPF 
programs.

My greatest concern is better performance, not more functionality.

---------------------------------------------------------------------
Comments:

The MPI_UB and MPI_LB stuff is really awkward. There should be a better
solution to this. I would suggest alternate versions of the type
creation calls which allow the extent of the datatype just be passed as
an argument.

---------------------------------------------------------------------
Comments:

THERE COULD HAVE BEEN NOTHING BETTER THAN A STANDARD INTERFACE LIKE MPI.
CREDITS TO ALL THOSE INVOLVED IN DEVELOPING THE STANDARD AND ALSO THOSE
WHO QUICKLY MADE THE IMPLEMENTATIONS AVAILABLE.

---------------------------------------------------------------------
Comments:
 
I look forward to reading the survey results and following future
developments.
 
---------------------------------------------------------------------
Comments:

>  - the MPI standard has been an immense success in reducing the
     need for online debugging on MPP systems; most development can
     now proceed on a workstation (or a workstation network), and
     most problems debugged before testing on the much more inaccessible
     MPP system.
 
---------------------------------------------------------------------
Comments:

> I'm not tremendously familiar with all the MPI concepts so I'm not
absolutely sure whether or not I need/will use them. Thus my
nonanswers to some of the questions.
 
---------------------------------------------------------------------
Comments:

  * On the whole, besides the above "difficiencies", I feel most of our
    users are quite happy with MPI, and it has been quite successful in
    porting largish scientific programs to the AP1000 that have been
    written in MPI.

  * It would be nice if it could be more rigoriously defined as to how
    threads and signals can be intermixed with MPI calls.  As far as I
    can tell, this hasn't really be address by the standard or at this
    stage, using threads and signals will not make your application
    "MPI compliant".

---------------------------------------------------------------------
Comments:

> I use the ANU implementation of MPI for the AP 1000.  The
> feature that I would most like to see is the ability to run
> multiple processes on a single processor (as can be done with
> the native message passing software).  I'm not sure if
> any other implementors have done this, but it would be very
> useful.

---------------------------------------------------------------------
Comments:

add IO :-)

---------------------------------------------------------------------
Comments:

Some comments can be found in my paper for MPI Developer Conference '95
http://www.cse.nd.edu/mpidc95/proceedings/papers/postscript/fang.ps

---------------------------------------------------------------------
Comments:

|> I am working on a code for quantum checial calculations; a direct 
|> self consitent fild program including electron correlation.
|> I am only working on the whole processor array ( mpi_comm_world )
   and I am only using 10 subroutines from mpi:
   MPI_INIT, 
   MPI_COMM_RANK, 
   MPI_COMM_SIZE, 
   MPI_BCAST, 
   MPI_SEND, 
   MPI_RECV,
   MPI_ALLREDUCE( sum, max and min ), 
   MPI_REDUCE( sum, max, min ), 
   MPI_BARRIER, 
   MPI_FINALIZE

---------------------------------------------------------------------
Comments:

I have had good experiences with MPI (MPICH implementation on our SP2
and RS6000 network).  This is the first message passing system I've
used, and I have found it to work well in parallelizing my applications.

---------------------------------------------------------------------
Comments:

   MPI is great. It is nice (and very rare) 
 to see a commitee create something that 
 is MUCH better then any of the previous packages.

---------------------------------------------------------------------
Comments:

I may have already repleid (can't remember). This project is a
finite element code for wave propagation. One of the aims was to try
and evaluate how some intermediate/advanced features of MPI could help
express parallelism. 
They can ! 

---------------------------------------------------------------------
Comments:

I'm submitting this as a developer of our intercommunicator
extensions to MPI so I may not be quite the kind of user
you're wanting responses from -- Nathan

---------------------------------------------------------------------
Comments:

Good work..

---------------------------------------------------------------------
Comments:

Keep up the great work!

---------------------------------------------------------------------
Comments:

MPI is great - no doubt about it.  I personally think
that message passing is bound to go the way of
assembly language programming sometime in the future,
but in the meantime - I think the forum did an
excellent job, and have continued to do so.

---------------------------------------------------------------------
Comments:

Today I use PVM

---------------------------------------------------------------------
Comments:

The debugging tools of LAM are great!  Thanks!

---------------------------------------------------------------------
Comments:

The datatype constructor seems to be a bit tedious and 
complicated.

---------------------------------------------------------------------
Comments:

MPI is a wonderful example of the benefits that can be
derived from a group of people working together to
generate a truly useful tool. 

---------------------------------------------------------------------
Comments:

What I really miss from several of the MPI implementations
is the ability to start up each process running inside a
debugger such as xdbx. Debugging numerical code with big
arrays where something is walking over something else is
made much more easy if this functionality is available. So
far I've only found CHIMP-MPI does this easily although
I can fool LAM into doing it if I don't run my code using
MPIRUN.

---------------------------------------------------------------------
Comments:

This answer is for a program that is currently being written.
We are doing higher order finite elements for solving the
wave eqaution by domain decomposition.

The features I've checked are those we *think* we'll be using
but we do not yet have any actual experience, or feedback, as
to else we'll need.

It's possible we'll need some simple form of global communications
(algorithms is explicit, so no global residual, but maybe a
global energy). Also it is not clear how much is to be gained
by using graph topologies (in terms of expressiveness, not
performance).

---------------------------------------------------------------------
Comments:

I just bumped into LAM and MPI...looks good.  Would consider
how to use it for both performance and fault tolerance in 
computers on aircraft (radar processing, sensor image 
processing, etc.).

---------------------------------------------------------------------
Comments:

I'm just getting started in a new project.  We are planning
to use MPI, but how so, we haven't decided.

---------------------------------------------------------------------
Comments:

I find MPI very exciting to use.  It has many features not
present in other message-passing systems (e.g. the BLACS).
For example, MPI_Bcast is much easier than if's with
MPI_Bsend and MPI_Brecv's.

---------------------------------------------------------------------
Comments:

There should be a stripped version of MPI for single 
group code, which uses only the six basic MPI calls
for message passing.  A majority of user codes in MPI
are this type, and the less overhead in the language, the
better.

---------------------------------------------------------------------
Comments:

Advanced enviroment for program developement,
debugging and profiling required.

---------------------------------------------------------------------
Comments:

I hope I did not fill this out already.

We are using MPI to parallelize a Four dimensional
data assimilation system (.e.g. optimal interpolation).
THe project is classified as one of the great challange
problems.

---------------------------------------------------------------------
Comments:

I am not using MPI yet. I am starting to get it and then
I will install it at my university network. Now I am 
checking ftp and www sites. 

---------------------------------------------------------------------
Comments:

All my MPI codes so far are straightforward translations
of PVM code to MPI, so I haven't made use of features like
derived datatypes yet, though they look useful.

---------------------------------------------------------------------
Comments:

MPI is great, it does most of the important things to
make life bearable. Having said that...

I tried to use a derived data type once, but it didn't 
work quite the way I needed. I had a 3 dimensional array
in  Fortran, and wanted to send a collection of 'strips' 
of it from a number of slave processes so that they could 
be gathered into the same sort of structure in the master
process --- however, when I tried to define a single type
to represent the set of strips (using mpi_type_indexed) 
I found that, because of the way extent works, they were 
gathered with information from consecutive slaves 
contiguous, which is not what I wanted. To illustrate, here
is a schematic representation of the final array at the 
root, using numbers to indicate the process each strip has
come from--- 

wanted:
1..1..1..2..2..2..3..3..3..
got:
1..1..12..2..23..3..3

I could no


-=-
Nick Nevin				nevin@tbag.osc.edu
Ohio Supercomputer Center		http://www.osc.edu/lam.html



From owner-mpi-comm@CS.UTK.EDU Mon Oct 16 11:59:05 1995
Return-Path: <owner-mpi-comm@CS.UTK.EDU>
Received: from CS.UTK.EDU by netlib2.cs.utk.edu with ESMTP (cf v2.9t-netlib)
	id LAA03044; Mon, 16 Oct 1995 11:59:04 -0400
Received: from localhost by CS.UTK.EDU with SMTP (cf v2.9s-UTK)
	id LAA06196; Mon, 16 Oct 1995 11:52:15 -0400
Received: from dlr1 by CS.UTK.EDU with SMTP (cf v2.9s-UTK)
	id LAA06187; Mon, 16 Oct 1995 11:52:10 -0400
Received: by dlr1 id AA14050
  (5.67b/IDA-1.5 for mpi-comm@cs.utk.edu); Mon, 16 Oct 1995 16:48:20 +0100
From: "Martin Strietzel" <strietzel@zpr.uni-koeln.de>
Message-Id: <9510161648.ZM14048@dlr1.MI.Uni-Koeln.DE>
Date: Mon, 16 Oct 1995 16:48:18 +0100
X-Mailer: Z-Mail (3.2.0 06sep94)
To: mpi-comm@CS.UTK.EDU
Subject: subscribe mpi-comm mst@zpr.uni-koeln.de
Mime-Version: 1.0
Content-Type: text/plain; charset=us-ascii


subscribe mpi-comm mst@zpr.uni-koeln.de


From owner-mpi-comm@CS.UTK.EDU Mon Oct 16 12:41:51 1995
Return-Path: <owner-mpi-comm@CS.UTK.EDU>
Received: from CS.UTK.EDU by netlib2.cs.utk.edu with ESMTP (cf v2.9t-netlib)
	id MAA04466; Mon, 16 Oct 1995 12:41:50 -0400
Received: from localhost by CS.UTK.EDU with SMTP (cf v2.9s-UTK)
	id MAA10778; Mon, 16 Oct 1995 12:39:48 -0400
Received: from hermes.intel.com by CS.UTK.EDU with SMTP (cf v2.9s-UTK)
	id MAA10766; Mon, 16 Oct 1995 12:39:30 -0400
Received: from ichips.intel.com by hermes.intel.com (5.65/10.0i); Mon, 16 Oct 95 09:38:56 -0700
Received: from pdx362 by ichips.intel.com (5.64+/10.0i); Mon, 16 Oct 95 09:38:27 -0700
Received: by pdx362.intel.com (AIX 3.2/UCB 5.64/10.0i); Mon, 16 Oct 1995 09:38:22 -0700
Date: Mon, 16 Oct 1995 09:38:19 -0700 (PDT)
From: Garry Petrie <gpetrie@pdx362.intel.com>
To: mpi-comm@CS.UTK.EDU
Subject: Unsubscribe
Message-Id: <Pine.A32.3.91.951016093741.5690C-100000@pdx362>
Mime-Version: 1.0
Content-Type: TEXT/PLAIN; charset=US-ASCII

Please unsubscribe me from this mailer.

_______________________________________________________________________________
| Garry Petrie                M/S JF1-56                Phone:                |
| Intel Corporation           5200 NE Elam Young Pkwy   503-264-3027 day      |
| gpetrie@ichips.intel.com    Hillsboro, Oregon 97124   503-690-5465 evenings |


From mpi-comm-human@mcs.anl.gov Tue Oct 17 15:57:35 1995
Return-Path: <mpi-comm-human@mcs.anl.gov>
Received: from antares.mcs.anl.gov by netlib2.cs.utk.edu with ESMTP (cf v2.9t-netlib)
	id PAA19351; Tue, 17 Oct 1995 15:57:05 -0400
Received: (from listserv@localhost) by antares.mcs.anl.gov (8.6.10/8.6.10)
	id OAA05040 for mpi-comm-out; Tue, 17 Oct 1995 14:52:39 -0500
Received: from mcs.anl.gov (donner.mcs.anl.gov [140.221.5.134]) by antares.mcs.anl.gov (8.6.10/8.6.10)  with ESMTP
	id OAA05014; Tue, 17 Oct 1995 14:51:45 -0500
Message-Id: <199510171951.OAA05014@antares.mcs.anl.gov>
To: mpi-comm@antares.mcs.anl.gov, mpi-dynamic@antares.mcs.anl.gov
Subject: dynamic processes chapter
Date: Tue, 17 Oct 1995 14:51:42 -0500
From: Rusty Lusk <lusk@mcs.anl.gov>
Sender: owner-mpi-core@mcs.anl.gov
Precedence: bulk

Here is the draft of the dynamic processes chapter.  Changes from last time
(extensive) are highlighted at the beginning.

Rusty, Bill S., and Al

%!PS-Adobe-2.0
%%Creator: dvips 5.528 Copyright 1986, 1994 Radical Eye Software
%%Title: temp.dvi
%%CreationDate: Tue Oct 17 14:16:54 1995
%%Pages: 20
%%PageOrder: Ascend
%%BoundingBox: 0 0 612 792
%%EndComments
%DVIPSCommandLine: dvips -o temp.ps temp
%DVIPSParameters: dpi=300, comments removed
%DVIPSSource:  TeX output 1995.10.17:1416
%%BeginProcSet: tex.pro
/TeXDict 250 dict def TeXDict begin /N{def}def /B{bind def}N /S{exch}N
/X{S N}B /TR{translate}N /isls false N /vsize 11 72 mul N /hsize 8.5 72
mul N /landplus90{false}def /@rigin{isls{[0 landplus90{1 -1}{-1 1}
ifelse 0 0 0]concat}if 72 Resolution div 72 VResolution div neg scale
isls{landplus90{VResolution 72 div vsize mul 0 exch}{Resolution -72 div
hsize mul 0}ifelse TR}if Resolution VResolution vsize -72 div 1 add mul
TR matrix currentmatrix dup dup 4 get round 4 exch put dup dup 5 get
round 5 exch put setmatrix}N /@landscape{/isls true N}B /@manualfeed{
statusdict /manualfeed true put}B /@copies{/#copies X}B /FMat[1 0 0 -1 0
0]N /FBB[0 0 0 0]N /nn 0 N /IE 0 N /ctr 0 N /df-tail{/nn 8 dict N nn
begin /FontType 3 N /FontMatrix fntrx N /FontBBox FBB N string /base X
array /BitMaps X /BuildChar{CharBuilder}N /Encoding IE N end dup{/foo
setfont}2 array copy cvx N load 0 nn put /ctr 0 N[}B /df{/sf 1 N /fntrx
FMat N df-tail}B /dfs{div /sf X /fntrx[sf 0 0 sf neg 0 0]N df-tail}B /E{
pop nn dup definefont setfont}B /ch-width{ch-data dup length 5 sub get}
B /ch-height{ch-data dup length 4 sub get}B /ch-xoff{128 ch-data dup
length 3 sub get sub}B /ch-yoff{ch-data dup length 2 sub get 127 sub}B
/ch-dx{ch-data dup length 1 sub get}B /ch-image{ch-data dup type
/stringtype ne{ctr get /ctr ctr 1 add N}if}B /id 0 N /rw 0 N /rc 0 N /gp
0 N /cp 0 N /G 0 N /sf 0 N /CharBuilder{save 3 1 roll S dup /base get 2
index get S /BitMaps get S get /ch-data X pop /ctr 0 N ch-dx 0 ch-xoff
ch-yoff ch-height sub ch-xoff ch-width add ch-yoff setcachedevice
ch-width ch-height true[1 0 0 -1 -.1 ch-xoff sub ch-yoff .1 add]{
ch-image}imagemask restore}B /D{/cc X dup type /stringtype ne{]}if nn
/base get cc ctr put nn /BitMaps get S ctr S sf 1 ne{dup dup length 1
sub dup 2 index S get sf div put}if put /ctr ctr 1 add N}B /I{cc 1 add D
}B /bop{userdict /bop-hook known{bop-hook}if /SI save N @rigin 0 0
moveto /V matrix currentmatrix dup 1 get dup mul exch 0 get dup mul add
.99 lt{/QV}{/RV}ifelse load def pop pop}N /eop{SI restore showpage
userdict /eop-hook known{eop-hook}if}N /@start{userdict /start-hook
known{start-hook}if pop /VResolution X /Resolution X 1000 div /DVImag X
/IE 256 array N 0 1 255{IE S 1 string dup 0 3 index put cvn put}for
65781.76 div /vsize X 65781.76 div /hsize X}N /p{show}N /RMat[1 0 0 -1 0
0]N /BDot 260 string N /rulex 0 N /ruley 0 N /v{/ruley X /rulex X V}B /V
{}B /RV statusdict begin /product where{pop product dup length 7 ge{0 7
getinterval dup(Display)eq exch 0 4 getinterval(NeXT)eq or}{pop false}
ifelse}{false}ifelse end{{gsave TR -.1 -.1 TR 1 1 scale rulex ruley
false RMat{BDot}imagemask grestore}}{{gsave TR -.1 -.1 TR rulex ruley
scale 1 1 false RMat{BDot}imagemask grestore}}ifelse B /QV{gsave
transform round exch round exch itransform moveto rulex 0 rlineto 0
ruley neg rlineto rulex neg 0 rlineto fill grestore}B /a{moveto}B /delta
0 N /tail{dup /delta X 0 rmoveto}B /M{S p delta add tail}B /b{S p tail}
B /c{-4 M}B /d{-3 M}B /e{-2 M}B /f{-1 M}B /g{0 M}B /h{1 M}B /i{2 M}B /j{
3 M}B /k{4 M}B /w{0 rmoveto}B /l{p -4 w}B /m{p -3 w}B /n{p -2 w}B /o{p
-1 w}B /q{p 1 w}B /r{p 2 w}B /s{p 3 w}B /t{p 4 w}B /x{0 S rmoveto}B /y{
3 2 roll p a}B /bos{/SS save N}B /eos{SS restore}B end
%%EndProcSet
TeXDict begin 40258431 52099146 1000 300 300
(/tmp_mnt/Net/antireo/antireo6/lusk/mpi2/report2/temp.dvi)
@start /Fa 4 112 df<03CC063C0C3C181C3838303870387038E070E070E070E070E0E2
C0E2C0E261E462643C380F127B9115>97 D<01F007080C08181C3838300070007000E000
E000E000E000E000E008E010602030C01F000E127B9113>99 D<1F800380038007000700
070007000E000E000E000E001C001C001C001C0038003800380038007000700070007000
E400E400E400E40068003800091D7C9C0B>108 D<01E007180C0C180C380C300E700E70
0EE01CE01CE01CE018E038E030E06060C031801E000F127B9115>111
D E /Fb 37 122 df<00E001C0038007000E000E001C001C003800380038007000700070
007000E000E000E000E000E000E000E000E000E000E000E000E000700070007000700038
00380038001C001C000E000E000700038001C000E00B2A7E9E10>40
D<E000700038001C000E000E000700070003800380038001C001C001C001C000E000E000
E000E000E000E000E000E000E000E000E000E001C001C001C001C0038003800380070007
000E000E001C0038007000E0000B2A7E9E10>I<E0E0E060404040C003087C820C>44
D<001C0000003E0000003E0000002E0000006700000067000000E7800000C7800000C380
0001C3C0000183C0000181C0000381E0000381E0000700F0000700F0000600F0000E0078
000FFFF8000FFFF8001C003C001C003C0018003C0038001E0038001E0070001F0070000F
0070000F00E0000780191D7F9C1C>65 D<003FC000FFF003C0F00780300F00001E00003C
00003C0000780000780000780000F00000F00000F00000F00000F00000F00000F00000F0
0000F000007800007800007800003C00003C00001E00000F000807801803C07800FFF000
3F80151F7D9D1B>67 D<FFFFC0FFFFC0F00000F00000F00000F00000F00000F00000F000
00F00000F00000F00000F00000FFFF80FFFF80F00000F00000F00000F00000F00000F000
00F00000F00000F00000F00000F00000F00000FFFFC0FFFFC0121D7C9C19>69
D<FFFF80FFFF80F00000F00000F00000F00000F00000F00000F00000F00000F00000F000
00F00000FFFF00FFFF00F00000F00000F00000F00000F00000F00000F00000F00000F000
00F00000F00000F00000F00000F00000111D7C9C18>I<003F8001FFF003C0F80780380F
00181E00003C00003C0000780000780000780000F00000F00000F00000F00000F00000F0
0000F007F8F007F8F000387800387800387800383C00383C00381E00380F003807803803
C0F801FFF0003F80151F7D9D1C>I<F000F0F000F0F000F0F000F0F000F0F000F0F000F0
F000F0F000F0F000F0F000F0F000F0F000F0FFFFF0FFFFF0F000F0F000F0F000F0F000F0
F000F0F000F0F000F0F000F0F000F0F000F0F000F0F000F0F000F0F000F0141D7C9C1D>
I<F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0041D7C9C0C>
I<F000F000F000F000F000F000F000F000F000F000F000F000F000F000F000F000F000F0
00F000F000F000F000F000F000F000F000F000FFFEFFFE0F1D7C9C16>76
D<FC0007E0FC0007E0FC0007E0EE000DE0EE000DE0EE000DE0E70019E0E70019E0E70019
E0E78039E0E38031E0E3C071E0E3C071E0E1C061E0E1C061E0E1E0E1E0E1E0E1E0E0E0C1
E0E0F1C1E0E07181E0E07181E0E07181E0E03B01E0E03B01E0E03B01E0E01E01E0E01E01
E0E01E01E0E00001E01B1D7C9C24>I<FC0070FC0070FE0070EE0070EF0070E70070E700
70E78070E38070E3C070E3C070E1E070E1E070E0E070E0F070E07070E07870E07870E03C
70E03C70E01C70E01E70E00E70E00E70E00F70E00770E007F0E003F0E003F0141D7C9C1D
>I<003F000001FFE00003FFF00007C0F8000F807C001E001E003E001F003C000F007800
07807800078078000780F00003C0F00003C0F00003C0F00003C0F00003C0F00003C0F000
03C0F00003C0F80007C078000780780007807C000F803C000F003E001F001F003E000F80
7C0007C0F80003FFF00001FFE000003F00001A1F7E9D1F>I<FFFC00FFFF00F00F80F003
C0F001E0F000F0F000F0F000F0F000F0F000F0F000F0F001E0F003E0F00FC0FFFF80FFFE
00F00000F00000F00000F00000F00000F00000F00000F00000F00000F00000F00000F000
00F00000141D7C9C1B>I<FFF800FFFF00F00F80F003C0F001E0F000F0F000F0F000F0F0
00F0F000F0F001E0F003E0F00FC0FFFF80FFFF00FFF800F03C00F01C00F01E00F00F00F0
0F00F00780F00780F003C0F003C0F001E0F000F0F000F0F00078151D7C9C1B>82
D<03F8000FFE001C0F00380700700300600000E00000E00000E00000E00000F000007800
007F00003FE0001FFC0007FE0001FF00001F800007800003C00003C00001C00001C00001
C00001C0C00180E00380F007007C0E001FFC0007F000121F7E9D17>I<FFFFFF80FFFFFF
80001E0000001E0000001E0000001E0000001E0000001E0000001E0000001E0000001E00
00001E0000001E0000001E0000001E0000001E0000001E0000001E0000001E0000001E00
00001E0000001E0000001E0000001E0000001E0000001E0000001E0000001E0000001E00
00191D7F9C1C>I<F00070F00070F00070F00070F00070F00070F00070F00070F00070F0
0070F00070F00070F00070F00070F00070F00070F00070F00070F00070F00070F00070F0
0070F000707800E07800E03C01C01E03800F078007FE0001F800141E7C9C1D>I<F00003
80F00003807800070078000700780007003C000E003C000E003E000E001E001C001E001C
000F0038000F0038000F003800078070000780700003C0600003C0E00003C0E00001E0C0
0001E1C00001E1C00000F1800000F380000073000000730000007B0000003E0000003E00
00001C0000191D7F9C1C>I<F80001E07C0001C03E0003801E0007801F0007000F800E00
07801E0007C01C0003E03C0001E0380001F0700000F0F0000078E000007DC000003FC000
001F8000001F0000000F0000000F0000000F0000000F0000000F0000000F0000000F0000
000F0000000F0000000F0000000F0000000F00001B1D809C1C>89
D<7FFFF07FFFF00001E00003E00003C00007C0000780000F00001F00001E00003E00003C
0000780000F80000F00001F00001E00003C00007C0000780000F80000F00001E00003E00
003C00007C0000780000FFFFF0FFFFF0141D7E9C19>I<0FC03FF07FF87038401C001C00
1C00FC0FFC3FFC781CE01CE01CE01CF07C7FFC7FDC3F1C0E127E9114>97
D<07E00FF81FFC3C1C70047000E000E000E000E000E000E000700070043C1C1FFC0FF807
E00E127E9112>99 D<07C01FE03FF078787018601CFFFCFFFCFFFCE000E000E000700070
043C1C3FFC1FF807E00E127E9112>101 D<E000E000E000E000E000E000E000E000E000
E000E000E3E0EFF0FFF8F83CF01CE01CE01CE01CE01CE01CE01CE01CE01CE01CE01CE01C
E01CE01C0E1D7D9C15>104 D<F0F0F0F000000000000000707070707070707070707070
707070707070041D7E9C0A>I<E3F03F00EFF8FF80FFFDFFC0F81F81E0F00F00E0E00E00
E0E00E00E0E00E00E0E00E00E0E00E00E0E00E00E0E00E00E0E00E00E0E00E00E0E00E00
E0E00E00E0E00E00E0E00E00E01B127D9122>109 D<E3E0EFF0FFF8F83CF01CE01CE01C
E01CE01CE01CE01CE01CE01CE01CE01CE01CE01CE01C0E127D9115>I<03F0000FFC001F
FE003C0F00780780700380E001C0E001C0E001C0E001C0E001C0F003C07003807807803C
0F001FFE000FFC0003F00012127F9115>I<078E1FEE3FFE7C3E781E700EE00EE00EE00E
E00EE00EE00EF00E701E7C3E3FFE1FEE0F8E000E000E000E000E000E000E000E000E0F1A
7E9115>113 D<E380E780EF80FC00F800F000F000E000E000E000E000E000E000E000E0
00E000E000E00009127D910E>I<1FC03FF07FF0F030E000E000F0007F003FC01FE000F0
003800388038F078FFF07FE01FC00D127F9110>I<1C001C001C001C001C001C00FFE0FF
E01C001C001C001C001C001C001C001C001C001C001C001C001C201FF00FF007C00C187F
970F>I<E01CE01CE01CE01CE01CE01CE01CE01CE01CE01CE01CE01CE01CE01CE07CFFFC
7FDC3F1C0E127D9115>I<E03E0380E03E0380E03E038070370300707707007077070070
73070038E38E0038E38E0038E38E0018E18C001CC1CC001DC1DC001DC1DC000D80D8000F
80F8000F80F8000780700019127F911C>119 D<E007E007700E700E780E381C381C1C18
1C380C380E300E7006700760036003C001C001C001800180030003000700FE00FC00F800
101A7F9113>121 D E /Fc 17 119 df<1FE0003FF0007FF800783C00300E00000E0000
0E0003FE001FFE003E0E00700E00E00E00E00E00E00E00783E007FFFE03FE7E00F83E013
127E9116>97 D<03F80FFC1FFE3C1E780C7000E000E000E000E000E000F000700778073E
0E1FFC0FF803F010127D9116>99 D<003F00007F00003F00000700000700000700000700
03C7000FF7001FFF003C1F00780F00700700E00700E00700E00700E00700E00700E00700
700F00700F003C1F001FFFE00FE7F007C7E014197F9816>I<001F00007F8000FF8001E7
8001C30001C00001C0007FFF00FFFF00FFFF0001C00001C00001C00001C00001C00001C0
0001C00001C00001C00001C00001C00001C0003FFE007FFF003FFE0011197F9816>102
D<03E3C007F7E00FFFE01C1CC0380E00380E00380E00380E00380E001C1C000FF8001FF0
001BE0003800001800001FFC001FFF003FFF807803C0E000E0E000E0E000E0E000E07001
C07C07C03FFF800FFE0003F800131C7F9116>I<7E0000FE00007E00000E00000E00000E
00000E00000E3C000EFE000FFF000F87800F03800E03800E03800E03800E03800E03800E
03800E03800E03800E03800E03807FC7F0FFE7F87FC7F01519809816>I<018003C003C0
018000000000000000007FC07FC07FC001C001C001C001C001C001C001C001C001C001C0
01C001C07FFFFFFF7FFF101A7D9916>I<7E0000FE00007E00000E00000E00000E00000E
00000E7FE00E7FE00E7FE00E0F000E1E000E3C000E78000EF0000FF0000FF8000FBC000F
1E000E0E000E07000E07807F87F0FFCFF07F87F01419809816>107
D<F9C380FFEFC0FFFFE03C78E03C78E03870E03870E03870E03870E03870E03870E03870
E03870E03870E03870E0FE7CF8FE7CF8FE3C781512809116>109
D<7E3C00FEFE007FFF000F87800F03800E03800E03800E03800E03800E03800E03800E03
800E03800E03800E03807FC7F0FFE7F87FC7F01512809116>I<03E0000FF8001FFC003C
1E00780F00700700E00380E00380E00380E00380E00380F00780700700780F003C1E001F
FC000FF80003E00011127E9116>I<7E3E00FEFF007FFF800F83C00F00E00E00E00E0070
0E00700E00700E00700E00700E00700E00E00F01E00F83C00FFF800EFF000E3C000E0000
0E00000E00000E00000E00000E00007FC000FFE0007FC000141B809116>I<FF0FC0FF3F
E0FF7FE007F04007C0000780000780000700000700000700000700000700000700000700
00070000FFFC00FFFC00FFFC0013127F9116>114 D<0FEC3FFC7FFCF03CE01CE01C7000
7F801FF007F8003C600EE00EF00EF81EFFFCFFF8C7E00F127D9116>I<03000007000007
00000700000700007FFF00FFFF00FFFF0007000007000007000007000007000007000007
000007010007038007038007038007870003FE0001FC0000F80011177F9616>I<7E1F80
FE3F807E1F800E03800E03800E03800E03800E03800E03800E03800E03800E03800E0380
0E03800E0F800FFFF007FBF803E3F01512809116>I<7F1FC0FF1FE07F1FC01C07001E0F
000E0E000E0E000E0E00071C00071C00071C00071C0003B80003B80003B80001F00001F0
0000E00013127F9116>I E /Fd 66 124 df<007E1F0001C1B1800303E3C00703C3C00E
03C1800E01C0000E01C0000E01C0000E01C0000E01C0000E01C000FFFFFC000E01C0000E
01C0000E01C0000E01C0000E01C0000E01C0000E01C0000E01C0000E01C0000E01C0000E
01C0000E01C0000E01C0000E01C0000E01C0000E01C0007F87FC001A1D809C18>11
D<007E0001C1800301800703C00E03C00E01800E00000E00000E00000E00000E0000FFFF
C00E01C00E01C00E01C00E01C00E01C00E01C00E01C00E01C00E01C00E01C00E01C00E01
C00E01C00E01C00E01C00E01C07F87F8151D809C17>I<007FC001C1C00303C00703C00E
01C00E01C00E01C00E01C00E01C00E01C00E01C0FFFFC00E01C00E01C00E01C00E01C00E
01C00E01C00E01C00E01C00E01C00E01C00E01C00E01C00E01C00E01C00E01C00E01C07F
CFF8151D809C17>I<6060F0F0F8F86868080808080808101010102020404080800D0C7F
9C15>34 D<0F0000C0188000C030600380703807006027FB00E0100600E0100C00E0100C
00E0101800E0101800E0103000E0106000602060007020C00030418000188180000F0303
C00006062000060C10000C1C08001818080018380400303804006038040060380400C038
0400C03804018038040300180803001C0806000C100C000620040003C01E217E9E23>37
D<60F0F8680808081010204080050C7C9C0C>39 D<004000800100020006000C000C0018
001800300030007000600060006000E000E000E000E000E000E000E000E000E000E000E0
00E000600060006000700030003000180018000C000C00060002000100008000400A2A7D
9E10>I<800040002000100018000C000C000600060003000300038001800180018001C0
01C001C001C001C001C001C001C001C001C001C001C00180018001800380030003000600
06000C000C00180010002000400080000A2A7E9E10>I<60F0F070101010102020408004
0C7C830C>44 D<FFE0FFE00B0280890E>I<60F0F06004047C830C>I<0001000300060006
0006000C000C000C0018001800180030003000300060006000C000C000C0018001800180
030003000300060006000C000C000C00180018001800300030003000600060006000C000
C00010297E9E15>I<03C00C301818300C300C700E60066006E007E007E007E007E007E0
07E007E007E007E007E007E007E00760066006700E300C300C18180C3007E0101D7E9B15
>I<03C00C301818300C700C600EE006E006E007E007E007E007E0076007700F300F1817
0C2707C700060006000E300C780C78187010203030C00F80101D7E9B15>57
D<60F0F0600000000000000000000060F0F06004127C910C>I<0FE03038401CE00EF00E
F00EF00E000C001C0030006000C000800180010001000100010001000100000000000000
0000000003000780078003000F1D7E9C14>63 D<000600000006000000060000000F0000
000F0000000F00000017800000178000001780000023C0000023C0000023C0000041E000
0041E0000041E0000080F0000080F0000180F8000100780001FFF80003007C0002003C00
02003C0006003E0004001E0004001E000C001F001E001F00FF80FFF01C1D7F9C1F>65
D<FFFFC00F00F00F00380F003C0F001C0F001E0F001E0F001E0F001E0F001C0F003C0F00
780F01F00FFFE00F00780F003C0F001E0F000E0F000F0F000F0F000F0F000F0F000F0F00
1E0F001E0F003C0F0078FFFFE0181C7E9B1D>I<001F808000E061800180198007000780
0E0003801C0003801C00018038000180780000807800008070000080F0000000F0000000
F0000000F0000000F0000000F0000000F0000000F0000000700000807800008078000080
380000801C0001001C0001000E000200070004000180080000E03000001FC000191E7E9C
1E>I<FFFFC0000F00F0000F003C000F000E000F0007000F0007000F0003800F0003C00F
0001C00F0001C00F0001E00F0001E00F0001E00F0001E00F0001E00F0001E00F0001E00F
0001E00F0001C00F0001C00F0003C00F0003800F0007800F0007000F000E000F001C000F
007000FFFFC0001B1C7E9B20>I<FFFFFC0F003C0F000C0F00040F00040F00060F00020F
00020F02020F02000F02000F02000F06000FFE000F06000F02000F02000F02000F02010F
00010F00020F00020F00020F00060F00060F000C0F003CFFFFFC181C7E9B1C>I<FFFFF8
0F00780F00180F00080F00080F000C0F00040F00040F02040F02000F02000F02000F0600
0FFE000F06000F02000F02000F02000F02000F00000F00000F00000F00000F00000F0000
0F00000F8000FFF800161C7E9B1B>I<001F808000E0618001801980070007800E000380
1C0003801C00018038000180780000807800008070000080F0000000F0000000F0000000
F0000000F0000000F0000000F000FFF0F0000F8070000780780007807800078038000780
1C0007801C0007800E00078007000B800180118000E06080001F80001C1E7E9C21>I<FF
F3FFC00F003C000F003C000F003C000F003C000F003C000F003C000F003C000F003C000F
003C000F003C000F003C000F003C000FFFFC000F003C000F003C000F003C000F003C000F
003C000F003C000F003C000F003C000F003C000F003C000F003C000F003C000F003C00FF
F3FFC01A1C7E9B1F>I<FFF00F000F000F000F000F000F000F000F000F000F000F000F00
0F000F000F000F000F000F000F000F000F000F000F000F000F000F00FFF00C1C7F9B0F>
I<FFF8000F80000F00000F00000F00000F00000F00000F00000F00000F00000F00000F00
000F00000F00000F00000F00000F00000F00000F00080F00080F00080F00180F00180F00
100F00300F00700F01F0FFFFF0151C7E9B1A>76 D<FF8000FF800F8000F8000F8000F800
0BC00178000BC00178000BC001780009E002780009E002780008F004780008F004780008
F0047800087808780008780878000878087800083C107800083C107800083C107800081E
207800081E207800081E207800080F407800080F40780008078078000807807800080780
780008030078001C03007800FF8307FF80211C7E9B26>I<FF007FC00F800E000F800400
0BC0040009E0040009E0040008F0040008F8040008780400083C0400083C0400081E0400
080F0400080F0400080784000807C4000803C4000801E4000801E4000800F40008007C00
08007C0008003C0008003C0008001C0008000C001C000C00FF8004001A1C7E9B1F>I<00
3F800000E0E0000380380007001C000E000E001C0007003C00078038000380780003C078
0003C0700001C0F00001E0F00001E0F00001E0F00001E0F00001E0F00001E0F00001E0F0
0001E0700001C0780003C0780003C0380003803C0007801C0007000E000E0007001C0003
80380000E0E000003F80001B1E7E9C20>I<FFFF800F00E00F00780F003C0F001C0F001E
0F001E0F001E0F001E0F001E0F001C0F003C0F00780F00E00FFF800F00000F00000F0000
0F00000F00000F00000F00000F00000F00000F00000F00000F0000FFF000171C7E9B1C>
I<FFFF00000F01E0000F0078000F003C000F001C000F001E000F001E000F001E000F001E
000F001C000F003C000F0078000F01E0000FFF00000F03C0000F00E0000F00F0000F0078
000F0078000F0078000F0078000F0078000F0078000F0078100F0078100F0038100F003C
20FFF01C20000007C01C1D7E9B1F>82 D<07E0801C1980300580700380600180E00180E0
0080E00080E00080F00000F800007C00007FC0003FF8001FFE0007FF0000FF80000F8000
07C00003C00001C08001C08001C08001C0C00180C00180E00300D00200CC0C0083F80012
1E7E9C17>I<7FFFFFC0700F01C0600F00C0400F0040400F0040C00F0020800F0020800F
0020800F0020000F0000000F0000000F0000000F0000000F0000000F0000000F0000000F
0000000F0000000F0000000F0000000F0000000F0000000F0000000F0000000F0000000F
0000001F800003FFFC001B1C7F9B1E>I<FFF07FC00F000E000F0004000F0004000F0004
000F0004000F0004000F0004000F0004000F0004000F0004000F0004000F0004000F0004
000F0004000F0004000F0004000F0004000F0004000F0004000F0004000F000400070008
0007800800038010000180100000C020000070C000001F00001A1D7E9B1F>I<FFE00FF0
1F0003C00F0001800F0001000F800300078002000780020003C0040003C0040003C00400
01E0080001E0080001F0080000F0100000F0100000F830000078200000782000003C4000
003C4000003C4000001E8000001E8000001F8000000F0000000F00000006000000060000
000600001C1D7F9B1F>I<FFE0FFE0FF1F001F003C1E001E00180F001F00100F001F0010
0F001F001007801F00200780278020078027802003C027804003C043C04003C043C04003
E043C04001E081E08001E081E08001E081E08000F100F10000F100F10000F100F1000079
00FA00007A007A00007A007A00003E007C00003C003C00003C003C00003C003C00001800
180000180018000018001800281D7F9B2B>I<FFF007FC0F8001E00780008007C0018003
C0010003E0020001F0020000F0040000F8040000780800007C1800003C1000001E200000
1F2000000F4000000FC00000078000000780000007800000078000000780000007800000
07800000078000000780000007800000078000007FF8001E1C809B1F>89
D<08081010202040404040808080808080B0B0F8F8787830300D0C7A9C15>92
D<0810204040808080B0F87830050C7D9C0C>96 D<1FC000307000783800781C00301C00
001C00001C0001FC000F1C00381C00701C00601C00E01C40E01C40E01C40603C40304E80
1F870012127E9115>I<FC00001C00001C00001C00001C00001C00001C00001C00001C00
001C00001C00001C7C001D86001E03001C01801C01C01C00C01C00E01C00E01C00E01C00
E01C00E01C00E01C00C01C01C01C01801E030019060010F800131D7F9C17>I<07E00C30
1878307870306000E000E000E000E000E000E00060007004300418080C3007C00E127E91
12>I<003F00000700000700000700000700000700000700000700000700000700000700
03E7000C1700180F00300700700700600700E00700E00700E00700E00700E00700E00700
600700700700300700180F000C370007C7E0131D7E9C17>I<03E00C301818300C700E60
06E006FFFEE000E000E000E00060007002300218040C1803E00F127F9112>I<00F8018C
071E061E0E0C0E000E000E000E000E000E00FFE00E000E000E000E000E000E000E000E00
0E000E000E000E000E000E000E000E007FE00F1D809C0D>I<00038003C4C00C38C01C38
80181800381C00381C00381C00381C001818001C38000C300013C0001000003000001800
001FF8001FFF001FFF803003806001C0C000C0C000C0C000C06001803003001C0E0007F8
00121C7F9215>I<FC00001C00001C00001C00001C00001C00001C00001C00001C00001C
00001C00001C7C001C87001D03001E03801C03801C03801C03801C03801C03801C03801C
03801C03801C03801C03801C03801C03801C0380FF9FF0141D7F9C17>I<18003C003C00
18000000000000000000000000000000FC001C001C001C001C001C001C001C001C001C00
1C001C001C001C001C001C001C00FF80091D7F9C0C>I<00C001E001E000C00000000000
0000000000000000000FE000E000E000E000E000E000E000E000E000E000E000E000E000
E000E000E000E000E000E000E000E060E0F0C0F1C061803E000B25839C0D>I<FC00001C
00001C00001C00001C00001C00001C00001C00001C00001C00001C00001C3FC01C0F001C
0C001C08001C10001C20001C40001CE0001DE0001E70001C78001C38001C3C001C1C001C
0E001C0F001C0F80FF9FE0131D7F9C16>I<FC001C001C001C001C001C001C001C001C00
1C001C001C001C001C001C001C001C001C001C001C001C001C001C001C001C001C001C00
1C00FF80091D7F9C0C>I<FC7E07E0001C838838001D019018001E01E01C001C01C01C00
1C01C01C001C01C01C001C01C01C001C01C01C001C01C01C001C01C01C001C01C01C001C
01C01C001C01C01C001C01C01C001C01C01C001C01C01C00FF8FF8FF8021127F9124>I<
FC7C001C87001D03001E03801C03801C03801C03801C03801C03801C03801C03801C0380
1C03801C03801C03801C03801C0380FF9FF014127F9117>I<03F0000E1C001806003003
00700380600180E001C0E001C0E001C0E001C0E001C0E001C06001807003803003001806
000E1C0003F00012127F9115>I<FC7C001D86001E03001C01801C01C01C00C01C00E01C
00E01C00E01C00E01C00E01C00E01C01C01C01C01C01801E03001D06001CF8001C00001C
00001C00001C00001C00001C00001C0000FF8000131A7F9117>I<03C1000C3300180B00
300F00700700700700E00700E00700E00700E00700E00700E00700600700700700300F00
180F000C370007C700000700000700000700000700000700000700000700003FE0131A7E
9116>I<FCE01D301E781E781C301C001C001C001C001C001C001C001C001C001C001C00
1C00FFC00D127F9110>I<1F9030704030C010C010E010F8007F803FE00FF000F8803880
18C018C018E010D0608FC00D127F9110>I<04000400040004000C000C001C003C00FFE0
1C001C001C001C001C001C001C001C001C001C101C101C101C101C100C100E2003C00C1A
7F9910>I<FC1F801C03801C03801C03801C03801C03801C03801C03801C03801C03801C
03801C03801C03801C03801C07800C07800E1B8003E3F014127F9117>I<FF07E03C0380
1C01001C01000E02000E020007040007040007040003880003880003D80001D00001D000
00E00000E00000E00000400013127F9116>I<FF3FCFE03C0F03801C0701801C0701001C
0B01000E0B82000E0B82000E1182000711C4000711C4000720C40003A0E80003A0E80003
C0680001C0700001C0700001803000008020001B127F911E>I<7F8FF00F03800F030007
020003840001C80001D80000F00000700000780000F800009C00010E00020E0006070004
03801E07C0FF0FF81512809116>I<FF07E03C03801C01001C01000E02000E0200070400
07040007040003880003880003D80001D00001D00000E00000E00000E000004000004000
008000008000F08000F10000F300006600003C0000131A7F9116>I<7FFC703860384070
40F040E041C003C0038007000F040E041C043C0C380870087038FFF80E127F9112>I<FF
FFF01401808B15>I E /Fe 8 118 df<78FCFCFCFC7800000000000078FCFCFCFC780612
7D910D>58 D<FFFFF800FFFFFF000FC01FC00FC007E00FC001F00FC001F80FC000F80FC0
00FC0FC0007C0FC0007C0FC0007E0FC0007E0FC0007E0FC0007E0FC0007E0FC0007E0FC0
007E0FC0007E0FC0007C0FC0007C0FC0007C0FC000F80FC000F80FC001F00FC007E00FC0
1FC0FFFFFF00FFFFF8001F1C7E9B25>68 D<03FC000E0E001C1F003C1F00781F00780E00
F80000F80000F80000F80000F80000F800007800007801803C01801C03000E0E0003F800
11127E9115>99 D<1E003F003F003F003F001E00000000000000000000000000FF00FF00
1F001F001F001F001F001F001F001F001F001F001F001F001F001F00FFE0FFE00B1E7F9D
0E>105 D<FF0FC0FF31E01F40F01F80F81F80F81F00F81F00F81F00F81F00F81F00F81F
00F81F00F81F00F81F00F81F00F81F00F8FFE7FFFFE7FF18127F911B>110
D<01FC000F07801C01C03C01E07800F07800F0F800F8F800F8F800F8F800F8F800F8F800
F87800F07800F03C01E01E03C00F078001FC0015127F9118>I<1FD830786018E018E018
F000FF807FE07FF01FF807FC007CC01CC01CE01CE018F830CFC00E127E9113>115
D<FF07F8FF07F81F00F81F00F81F00F81F00F81F00F81F00F81F00F81F00F81F00F81F00
F81F00F81F00F81F01F80F01F80786FF01F8FF18127F911B>117
D E /Ff 29 122 df<FFFF8000FFFF800007E0000007E0000007E0000007E0000007E000
0007E0000007E0000007E0000007E0000007E0000007E0000007E0000007E0000007E000
0007E0000007E0000007E0000007E000C007E000C007E000C007E001C007E001C007E001
C007E0038007E0038007E00F8007E01F80FFFFFF80FFFFFF801A1F7E9E1F>76
D<FFE000003FF8FFF000007FF807F000007F0006F80000DF0006F80000DF0006F80000DF
00067C00019F00067C00019F00063E00031F00063E00031F00061F00061F00061F00061F
00060F800C1F00060F800C1F000607C0181F000607C0181F000607C0181F000603E0301F
000603E0301F000601F0601F000601F0601F000600F8C01F000600F8C01F0006007D801F
0006007D801F0006003F001F0006003F001F0006003F001F0006001E001F00FFF01E03FF
F8FFF00C03FFF82D1F7E9E32>I<FFE000FFF0FFF000FFF007F000060007F800060006FC
000600067E000600063F000600063F800600061F800600060FC006000607E006000603F0
06000601F806000601FC06000600FC060006007E060006003F060006001F860006001FC6
0006000FE600060007E600060003F600060001FE00060000FE00060000FE000600007E00
0600003E000600001E000600000E00FFF0000600FFF0000600241F7E9E29>I<FFFFFE00
FFFFFF8007E00FE007E003F007E001F807E001F807E001FC07E001FC07E001FC07E001FC
07E001FC07E001F807E001F807E003F007E00FE007FFFF8007FFFE0007E0000007E00000
07E0000007E0000007E0000007E0000007E0000007E0000007E0000007E0000007E00000
07E00000FFFF0000FFFF00001E1F7E9E24>80 D<03FC080FFF381E03F83800F870007870
0038F00038F00018F00018F80000FC00007FC0007FFE003FFF801FFFE00FFFF007FFF000
FFF80007F80000FC00007C00003CC0003CC0003CC0003CE00038E00078F80070FE01E0E7
FFC081FF00161F7D9E1D>83 D<FFFF01FFE0FFFF01FFE007E0000C0007E0000C0007E000
0C0007E0000C0007E0000C0007E0000C0007E0000C0007E0000C0007E0000C0007E0000C
0007E0000C0007E0000C0007E0000C0007E0000C0007E0000C0007E0000C0007E0000C00
07E0000C0007E0000C0007E0000C0007E0000C0007E0000C0003E000180001F000180001
F000300000F8006000007E03C000001FFF80000003FC0000231F7E9E28>85
D<FFFE003FF8FFFE003FF807E000038007E000030007F000070003F000060003F8000E00
01F8000C0001FC000C0000FC00180000FC001800007E003000007E003000003F00600000
3F006000003F80E000001F80C000001FC1C000000FC18000000FE180000007E300000007
E300000003F600000003F600000003FE00000001FC00000001FC00000000F800000000F8
000000007000000000700000251F7F9E28>I<07FC001FFF003F0F803F07C03F03E03F03
E00C03E00003E0007FE007FBE01F03E03C03E07C03E0F803E0F803E0F803E0FC05E07E0D
E03FF8FE0FE07E17147F9319>97 D<FF0000FF00001F00001F00001F00001F00001F0000
1F00001F00001F00001F00001F00001F1FC01F7FF01FE0F81F807C1F007E1F003E1F003E
1F003F1F003F1F003F1F003F1F003F1F003F1F003E1F003E1F007C1F807C1EC1F81C7FE0
181F8018207E9F1D>I<01FE0007FF801F0FC03E0FC03E0FC07C0FC07C0300FC0000FC00
00FC0000FC0000FC0000FC00007C00007E00003E00603F00C01F81C007FF0001FC001314
7E9317>I<0007F80007F80000F80000F80000F80000F80000F80000F80000F80000F800
00F80000F801F8F80FFEF81F83F83E01F87E00F87C00F87C00F8FC00F8FC00F8FC00F8FC
00F8FC00F8FC00F87C00F87C00F87E00F83E01F81F07F80FFEFF03F8FF18207E9F1D>I<
01FE0007FF800F83C01E01E03E00F07C00F07C00F8FC00F8FFFFF8FFFFF8FC0000FC0000
FC00007C00007C00003E00181E00180F807007FFE000FF8015147F9318>I<001F8000FF
C001F3E003E7E003C7E007C7E007C3C007C00007C00007C00007C00007C000FFFC00FFFC
0007C00007C00007C00007C00007C00007C00007C00007C00007C00007C00007C00007C0
0007C00007C00007C00007C0003FFC003FFC0013207F9F10>I<01FC3C07FFFE0F079E1E
03DE3E03E03E03E03E03E03E03E03E03E01E03C00F07800FFF0009FC001800001800001C
00001FFF800FFFF007FFF81FFFFC3C007C70003EF0001EF0001EF0001E78003C78003C3F
01F80FFFE001FF00171E7F931A>I<FF0000FF00001F00001F00001F00001F00001F0000
1F00001F00001F00001F00001F00001F0FC01F3FE01F61F01FC0F81F80F81F00F81F00F8
1F00F81F00F81F00F81F00F81F00F81F00F81F00F81F00F81F00F81F00F81F00F8FFE3FF
FFE3FF18207D9F1D>I<1C003E007F007F007F003E001C00000000000000000000000000
FF00FF001F001F001F001F001F001F001F001F001F001F001F001F001F001F001F001F00
FFE0FFE00B217EA00E>I<FF0000FF00001F00001F00001F00001F00001F00001F00001F
00001F00001F00001F00001F01FE1F01FE1F00F01F00C01F03801F07001F0C001F18001F
7C001FFC001F9E001F0F001E0F801E07C01E03C01E01E01E01F01E00F8FFC3FFFFC3FF18
207E9F1C>107 D<FF00FF001F001F001F001F001F001F001F001F001F001F001F001F00
1F001F001F001F001F001F001F001F001F001F001F001F001F001F001F001F00FFE0FFE0
0B207E9F0E>I<FE0FE03F80FE1FF07FC01E70F9C3E01E407D01F01E807E01F01F807E01
F01F007C01F01F007C01F01F007C01F01F007C01F01F007C01F01F007C01F01F007C01F0
1F007C01F01F007C01F01F007C01F01F007C01F01F007C01F0FFE3FF8FFEFFE3FF8FFE27
147D932C>I<FE0FC0FE3FE01E61F01EC0F81E80F81F00F81F00F81F00F81F00F81F00F8
1F00F81F00F81F00F81F00F81F00F81F00F81F00F81F00F8FFE3FFFFE3FF18147D931D>
I<01FF0007FFC01F83F03E00F83E00F87C007C7C007CFC007EFC007EFC007EFC007EFC00
7EFC007E7C007C7C007C3E00F83E00F81F83F007FFC001FF0017147F931A>I<01F81807
FE381F87783F01F83E01F87E00F87C00F8FC00F8FC00F8FC00F8FC00F8FC00F8FC00F87C
00F87E00F87E00F83F01F81F87F80FFEF803F8F80000F80000F80000F80000F80000F800
00F80000F80007FF0007FF181D7E931C>113 D<FE3E00FE7F801ECFC01E8FC01E8FC01F
8FC01F03001F00001F00001F00001F00001F00001F00001F00001F00001F00001F00001F
0000FFF000FFF00012147E9316>I<0FE63FFE701E600EE006E006F800FFC07FF83FFC1F
FE03FE001FC007C007E007F006F81EFFFCC7F010147E9315>I<01800180018003800380
038007800F803F80FFFCFFFC0F800F800F800F800F800F800F800F800F800F800F860F86
0F860F860F8607CC03F801F00F1D7F9C14>I<FF07F8FF07F81F00F81F00F81F00F81F00
F81F00F81F00F81F00F81F00F81F00F81F00F81F00F81F00F81F00F81F01F81F01F80F06
F807FCFF03F8FF18147D931D>I<FFE7FE1FE0FFE7FE1FE01F00F003001F00F803000F80
F806000F80F8060007C1BC0C0007C1BC0C0007C1BE0C0003E31E180003E31E180001F60F
300001F60F300001F60FB00000FC07E00000FC07E000007803C000007803C000007803C0
00003001800023147F9326>119 D<FFE1FF00FFE1FF000F80700007C0E00007E0C00003
E1800001F3800000FF0000007E0000003E0000003F0000007F8000006F800000C7C00001
83E0000381F0000701F8000E00FC00FF81FF80FF81FF8019147F931C>I<FFE07F80FFE0
7F801F001C000F8018000F80180007C0300007C0300003E0600003E0600001F0C00001F0
C00001F9C00000F9800000FF8000007F0000007F0000003E0000003E0000001C0000001C
0000001800000018000078300000FC300000FC600000C0E00000E1C000007F8000001E00
0000191D7F931C>I E /Fg 35 125 df<0E1F3F3F1D0102020404081020C0080E779F0E>
39 D<70F8F8F0E005057B840E>46 D<070F1F1F0E0000000000000000000070F8F8F0E0
08147B930E>58 D<00000200000006000000060000000E0000001E0000001E0000003F00
00002F0000004F0000004F0000008F0000010F0000010F0000020F0000020F0000040F00
000C0F0000080F0000100F0000100F0000200F80003FFF800040078000C0078000800780
01000780010007800200078002000780060007801E000F80FF807FF81D207E9F22>65
D<0000FE0200078186001C004C0038003C0060003C00C0001C01C0001803800018070000
180F0000181E0000101E0000103C0000003C000000780000007800000078000000780000
00F0000000F0000000F0000000F0000000F0000080700000807000008070000100380001
0038000200180004000C001800060020000381C00000FE00001F217A9F21>67
D<01FFFFFE001E001C001E000C001E0004001E0004003C0004003C0004003C0004003C00
040078080800780800007808000078180000F0300000FFF00000F0300000F0300001E020
0001E0200001E0200001E0001003C0002003C0002003C0004003C0004007800080078001
8007800100078007000F001F00FFFFFE001F1F7D9E1F>69 D<0000FC040007030C001C00
980030007800E0007801C000380380003003800030070000300E0000301E0000201E0000
203C0000003C00000078000000780000007800000078000000F0000000F000FFF0F00007
80F0000780F0000F0070000F0070000F0070000F0070001E0038001E0018003E001C002E
000E00CC000383040000FC00001E217A9F23>71 D<01FE00007FC0001E0000FC00001E00
00F80000170001780000170001780000270002F00000270004F00000270004F000002700
08F00000470009E00000470011E00000470021E00000470021E00000870043C000008380
43C00000838083C00000838083C000010381078000010382078000010382078000010384
0780000203840F00000203880F00000203900F00000203900F00000401E01E00000401E0
1E00000401C01E00000C01801E00001C01803E0000FF8103FFC0002A1F7D9E29>77
D<01FF007FE0001F000F00001F0004000017800400001780040000278008000023C00800
0023C008000023C008000041E010000041E010000041F010000040F010000080F0200000
807820000080782000008078200001003C400001003C400001003C400001001E40000200
1E800002001E800002000F800002000F800004000F0000040007000004000700000C0007
00001C00020000FF80020000231F7D9E22>I<01FFFF80001E00E0001E0070001E003800
1E003C003C003C003C003C003C003C003C003C0078007800780078007800F0007800E000
F003C000F00F0000FFFC0000F0000001E0000001E0000001E0000001E0000003C0000003
C0000003C0000003C00000078000000780000007800000078000000F800000FFF000001E
1F7D9E1F>80 D<0FFFFFF01E0780E0180780201007802020078020200F0020600F002040
0F0020400F0020801E0040001E0000001E0000001E0000003C0000003C0000003C000000
3C00000078000000780000007800000078000000F0000000F0000000F0000000F0000001
E0000001E0000001E0000001E0000003E00000FFFF00001C1F789E21>84
D<7FFC1FF807C003C00780010007800100078001000F0002000F0002000F0002000F0002
001E0004001E0004001E0004001E0004003C0008003C0008003C0008003C000800780010
00780010007800100078001000F0002000F0002000F0002000F0004000F0004000700080
007001000030020000380400000C18000007E000001D20779E22>I<FFF007FC0F8000E0
0F0000C00F0000800F0001000F0001000F0002000F0004000F0004000F80080007800800
078010000780200007802000078040000780400007808000078100000781000007C20000
03C2000003C4000003C8000003C8000003D0000003D0000003E0000003C0000003C00000
0380000001800000010000001E20779E22>I<00F1800389C00707800E03801C03803C03
80380700780700780700780700F00E00F00E00F00E00F00E20F01C40F01C40703C40705C
40308C800F070013147C9317>97 D<007E0001C1000300800E07801E07801C07003C0200
780000780000780000F00000F00000F00000F00000F00000700100700200300400183800
07C00011147C9315>99 D<0000780003F80000700000700000700000700000E00000E000
00E00000E00001C00001C000F1C00389C00707800E03801C03803C038038070078070078
0700780700F00E00F00E00F00E00F00E20F01C40F01C40703C40705C40308C800F070015
207C9F17>I<007C01C207010E011C013C013802780C7BF07C00F000F000F000F0007000
700170023804183807C010147C9315>I<00007800019C00033C00033C00071800070000
0700000E00000E00000E00000E00000E0001FFE0001C00001C00001C00001C0000380000
380000380000380000380000700000700000700000700000700000700000E00000E00000
E00000E00000C00001C00001C0000180003180007B0000F300006600003C00001629829F
0E>I<003C6000E27001C1E00380E00700E00F00E00E01C01E01C01E01C01E01C03C0380
3C03803C03803C03803C07003C07001C0F001C17000C2E0003CE00000E00000E00001C00
001C00301C00783800F0700060E0003F8000141D7E9315>I<01E0000FE00001C00001C0
0001C00001C000038000038000038000038000070000070000071E000763000E81800F01
C00E01C00E01C01C03801C03801C03801C0380380700380700380700380E10700E20700C
20701C20700C40E00CC060070014207D9F17>I<00C001E001E001C00000000000000000
0000000000000E003300230043804300470087000E000E000E001C001C001C0038403880
30807080310033001C000B1F7C9E0E>I<01E0000FE00001C00001C00001C00001C00003
80000380000380000380000700000700000703C00704200E08E00E11E00E21E00E40C01C
80001D00001E00001FC00038E000387000387000383840707080707080707080703100E0
3100601E0013207D9F15>107 D<03C01FC0038003800380038007000700070007000E00
0E000E000E001C001C001C001C0038003800380038007000700070007100E200E200E200
E200640038000A207C9F0C>I<1C0F80F0002630C318004740640C004780680E00470070
0E004700700E008E00E01C000E00E01C000E00E01C000E00E01C001C01C038001C01C038
001C01C038001C01C0708038038071003803806100380380E10038038062007007006600
300300380021147C9325>I<1C0F802630C04740604780604700704700708E00E00E00E0
0E00E00E00E01C01C01C01C01C01C01C03843803883803083807083803107003303001C0
16147C931A>I<007C0001C3000301800E01C01E01C01C01E03C01E07801E07801E07801
E0F003C0F003C0F003C0F00780F00700700F00700E0030180018700007C00013147C9317
>I<01C1E002621804741C04781C04701E04701E08E01E00E01E00E01E00E01E01C03C01
C03C01C03C01C0380380780380700380E003C1C0072380071E000700000700000E00000E
00000E00000E00001C00001C0000FFC000171D809317>I<00F0400388C00705800E0380
1C03803C0380380700780700780700780700F00E00F00E00F00E00F00E00F01C00F01C00
703C00705C0030B8000F380000380000380000700000700000700000700000E00000E000
0FFE00121D7C9315>I<1C1E002661004783804787804707804703008E00000E00000E00
000E00001C00001C00001C00001C00003800003800003800003800007000003000001114
7C9313>I<00FC030206010C030C070C060C000F800FF007F803FC003E000E700EF00CF0
0CE008401020601F8010147D9313>I<018001C0038003800380038007000700FFF00700
0E000E000E000E001C001C001C001C003800380038003820704070407080708031001E00
0C1C7C9B0F>I<0E00C03300E02301C04381C04301C04701C08703800E03800E03800E03
801C07001C07001C07001C07101C0E20180E20180E201C1E200C264007C38014147C9318
>I<0E03803307802307C04383C04301C04700C08700800E00800E00800E00801C01001C
01001C01001C02001C02001C04001C04001C08000E300003C00012147C9315>I<0E00C1
C03300E3C02301C3E04381C1E04301C0E04701C060870380400E0380400E0380400E0380
401C0700801C0700801C0700801C0701001C0701001C0602001C0F02000C0F04000E1308
0003E1F0001B147C931E>I<FFFFFFFFFF8029017B8C2E>124 D E
/Fh 78 126 df<70F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F870000000000070F8F8F87005
1C779B18>33 D<4010E038F078E038E038E038E038E038E038E038E038E038E03860300D
0E7B9C18>I<030600078F00078F00078F00078F00078F00078F007FFFC0FFFFE0FFFFE0
7FFFC00F1E000F1E000F1E000F1E000F1E000F1E007FFFC0FFFFE0FFFFE07FFFC01E3C00
1E3C001E3C001E3C001E3C001E3C000C1800131C7E9B18>I<01C00007E0000FF0000E70
001C38001C38001C38001C38001C73F01C73F01CE3F00FE3800FC7000F87000F07001F0E
003F0E007B8E0073DC00E1DC00E0F800E0F800E07070E0787070FC707FFFE03FCFE00F03
C0141C7F9B18>38 D<387C7C7E3E0E0E0E1C1C38F8F0C0070E789B18>I<007000F001E0
03C007800F001E001C00380038007000700070007000E000E000E000E000E000E000E000
E0007000700070007000380038001C001E000F00078003C001F000F000700C24799F18>
I<6000F00078003C001E000F000780038001C001C000E000E000E000E000700070007000
70007000700070007000E000E000E000E001C001C0038007800F001E003C007800F00060
000C247C9F18>I<01C00001C00001C00001C000C1C180F1C780F9CF807FFF001FFC0007
F00007F0001FFC007FFF00F9CF80F1C780C1C18001C00001C00001C00001C00011147D97
18>I<00600000F00000F00000F00000F00000F00000F00000F0007FFFC0FFFFE0FFFFE0
7FFFC000F00000F00000F00000F00000F00000F00000F00000600013147E9718>I<1C3E
7E7F3F1F070E1E7CF860080C788518>I<7FFF00FFFF80FFFF807FFF0011047D8F18>I<30
78FCFC78300606778518>I<000300000780000780000F80000F00001F00001E00001E00
003E00003C00007C0000780000780000F80000F00001F00001E00003E00003C00003C000
07C0000780000F80000F00000F00001F00001E00003E00003C00003C00007C0000780000
F80000F00000F0000060000011247D9F18>I<01F00007FC000FFE001F1F001C07003803
807803C07001C07001C0E000E0E000E0E000E0E000E0E000E0E000E0E000E0E000E0E000
E0F001E07001C07001C07803C03803801C07001F1F000FFE0007FC0001F000131C7E9B18
>I<01800380038007800F803F80FF80FB80438003800380038003800380038003800380
038003800380038003800380038003807FFCFFFE7FFC0F1C7B9B18>I<03F0000FFE003F
FF007C0F807003C0E001C0F000E0F000E06000E00000E00000E00001C00001C00003C000
0780000F00001E00003C0000780000F00001E00007C0000F80001E00E03C00E07FFFE0FF
FFE07FFFE0131C7E9B18>I<07F8001FFE003FFF007807807803C07801C03001C00001C0
0003C0000380000F0003FF0003FE0003FF000007800003C00001C00000E00000E00000E0
F000E0F000E0F001C0F003C07C07803FFF001FFE0003F800131C7E9B18>I<001F00003F
0000770000770000E70001E70001C7000387000787000707000E07001E07003C07003807
00780700F00700FFFFF8FFFFF8FFFFF8000700000700000700000700000700000700007F
F000FFF8007FF0151C7F9B18>I<1FFF803FFF803FFF8038000038000038000038000038
00003800003800003800003BF8003FFE003FFF003C07801803C00001C00000E00000E060
00E0F000E0F000E0E001C07003C07C0F803FFF001FFC0003F000131C7E9B18>I<3078FC
FC783000000000000000003078FCFC78300614779318>58 D<183C7E7E3C180000000000
000000183C7E7E3E1E0E1C3C78F060071A789318>I<000300000780001F80003F00007E
0001FC0003F00007E0001FC0003F00007E0000FC0000FC00007E00003F00001FC00007E0
0003F00001FC00007E00003F00001F8000078000030011187D9918>I<7FFFC0FFFFE0FF
FFE0FFFFE0000000000000000000000000FFFFE0FFFFE0FFFFE07FFFC0130C7E9318>I<
600000F00000FC00007E00003F00001FC00007E00003F00001FC00007E00003F00001F80
001F80003F00007E0001FC0003F00007E0001FC0003F00007E0000FC0000F00000600000
11187D9918>I<00700000F80000F80000D80000D80001DC0001DC0001DC00018C00038E
00038E00038E00038E000306000707000707000707000707000FFF800FFF800FFF800E03
800E03801C01C01C01C07F07F0FF8FF87F07F0151C7F9B18>65 D<FFFC00FFFF00FFFF80
1C03C01C01C01C00E01C00E01C00E01C00E01C01E01C01C01C07C01FFF801FFF001FFFC0
1C03C01C00E01C00F01C00701C00701C00701C00701C00F01C00E01C03E0FFFFC0FFFF80
FFFE00141C7F9B18>I<00F8E003FEE007FFE00F07E01E03E03C01E03800E07000E07000
E0700000E00000E00000E00000E00000E00000E00000E00000E000007000007000E07000
E03800E03C00E01E01C00F07C007FF8003FE0000F800131C7E9B18>I<7FF800FFFE007F
FF001C0F801C03C01C03C01C01E01C00E01C00E01C00F01C00701C00701C00701C00701C
00701C00701C00701C00701C00F01C00E01C00E01C01E01C01C01C03C01C0F807FFF00FF
FE007FF800141C7F9B18>I<FFFFF0FFFFF0FFFFF01C00701C00701C00701C00701C0000
1C00001C0E001C0E001C0E001FFE001FFE001FFE001C0E001C0E001C0E001C00001C0000
1C00381C00381C00381C00381C0038FFFFF8FFFFF8FFFFF8151C7F9B18>I<FFFFE0FFFF
E0FFFFE01C00E01C00E01C00E01C00E01C00001C00001C1C001C1C001C1C001FFC001FFC
001FFC001C1C001C1C001C1C001C00001C00001C00001C00001C00001C00001C0000FFC0
00FFC000FFC000131C7E9B18>I<01F1C003FDC00FFFC01F0FC01C03C03803C03801C070
01C07001C0700000E00000E00000E00000E00000E00000E00FF0E01FF0E00FF07001C070
01C07003C03803C03803C01C07C01F0FC00FFFC003FDC001F1C0141C7E9B18>I<7F07F0
FF8FF87F07F01C01C01C01C01C01C01C01C01C01C01C01C01C01C01C01C01C01C01FFFC0
1FFFC01FFFC01C01C01C01C01C01C01C01C01C01C01C01C01C01C01C01C01C01C01C01C0
7F07F0FF8FF87F07F0151C7F9B18>I<7FFF00FFFF807FFF0001C00001C00001C00001C0
0001C00001C00001C00001C00001C00001C00001C00001C00001C00001C00001C00001C0
0001C00001C00001C00001C00001C00001C0007FFF00FFFF807FFF00111C7D9B18>I<7F
E000FFE0007FE0000E00000E00000E00000E00000E00000E00000E00000E00000E00000E
00000E00000E00000E00000E00000E00000E00000E00000E00700E00700E00700E00700E
00707FFFF0FFFFF07FFFF0141C7F9B18>76 D<FC01F8FE03F8FE03F83B06E03B06E03B06
E03B06E03B8EE03B8EE0398CE0398CE039DCE039DCE039DCE038D8E038D8E038F8E03870
E03870E03800E03800E03800E03800E03800E03800E0FE03F8FE03F8FE03F8151C7F9B18
>I<7E07F0FF0FF87F07F01D81C01D81C01D81C01DC1C01CC1C01CC1C01CE1C01CE1C01C
E1C01C61C01C71C01C71C01C31C01C39C01C39C01C39C01C19C01C19C01C1DC01C0DC01C
0DC01C0DC07F07C0FF87C07F03C0151C7F9B18>I<0FF8003FFE007FFF00780F00700700
F00780E00380E00380E00380E00380E00380E00380E00380E00380E00380E00380E00380
E00380E00380E00380E00380E00380F00780700700780F007FFF003FFE000FF800111C7D
9B18>I<FFFE00FFFF80FFFFC01C03C01C01E01C00E01C00701C00701C00701C00701C00
701C00E01C01E01C03C01FFFC01FFF801FFE001C00001C00001C00001C00001C00001C00
001C00001C0000FF8000FF8000FF8000141C7F9B18>I<0FF8003FFE007FFF00780F0070
0700F00780E00380E00380E00380E00380E00380E00380E00380E00380E00380E00380E0
0380E00380E00380E00380E1E380E1E380F0E78070F700787F007FFF003FFE000FFC0000
1C00001E00000E00000F0000070000070011227D9B18>I<7FF800FFFE007FFF001C0F80
1C03801C03C01C01C01C01C01C01C01C03C01C03801C0F801FFF001FFE001FFE001C0F00
1C07001C03801C03801C03801C03801C03801C039C1C039C1C039C7F01F8FF81F87F00F0
161C7F9B18>I<03F3801FFF803FFF807C0F80700780E00380E00380E00380E000007000
007800003F00001FF00007FE0000FF00000F800003C00001C00000E00000E06000E0E000
E0E001E0F001C0F80780FFFF80FFFE00E7F800131C7E9B18>I<7FFFF8FFFFF8FFFFF8E0
7038E07038E07038E0703800700000700000700000700000700000700000700000700000
700000700000700000700000700000700000700000700000700000700007FF0007FF0007
FF00151C7F9B18>I<FF83FEFF83FEFF83FE1C00701C00701C00701C00701C00701C0070
1C00701C00701C00701C00701C00701C00701C00701C00701C00701C00701C00701C0070
1C00700E00E00F01E00783C003FF8001FF00007C00171C809B18>I<FF07F8FF07F8FF07
F81C01C01C01C01C01C01C01C00E03800E03800E03800E03800F07800707000707000707
00070700038E00038E00038E00038E00018C0001DC0001DC0001DC0000D80000F80000F8
00007000151C7F9B18>I<FE03F8FE03F8FE03F87000707000707000703800E03800E038
00E03800E03800E038F8E038F8E039DCE039DCE019DCC019DCC019DCC0198CC01D8DC01D
8DC01D8DC01D8DC00D8D800D05800F07800F07800E0380151C7F9B18>I<7F8FE07F9FE0
7F8FE00E07000F0700070E00078E00039C0003DC0001F80001F80000F00000F000007000
00F00000F80001F80001DC00039E00038E00070F000707000E07800E03801E03C07F07F0
FF8FF87F07F0151C7F9B18>I<FF07F8FF07F8FF07F81C01C01E03C00E03800F07800707
00070700038E00038E0001DC0001DC0001DC0000F80000F8000070000070000070000070
0000700000700000700000700000700001FC0003FE0001FC00151C7F9B18>I<3FFFE07F
FFE07FFFE07001C07003C0700780700700000F00001E00001C00003C0000780000700000
F00001E00001C00003C0000780000700000F00001E00E01C00E03C00E07800E07000E0FF
FFE0FFFFE0FFFFE0131C7E9B18>I<FFF8FFF8FFF8E000E000E000E000E000E000E000E0
00E000E000E000E000E000E000E000E000E000E000E000E000E000E000E000E000E000E0
00E000E000E000E000FFF8FFF8FFF80D24779F18>I<FFF8FFF8FFF80038003800380038
003800380038003800380038003800380038003800380038003800380038003800380038
00380038003800380038003800380038FFF8FFF8FFF80D247F9F18>93
D<7FFF00FFFF80FFFF807FFF0011047D7F18>95 D<1FE0003FF8007FFC00781E00300E00
00070000070000FF0007FF001FFF007F0700780700E00700E00700E00700F00F00781F00
3FFFF01FFBF007E1F014147D9318>97 D<7E0000FE00007E00000E00000E00000E00000E
00000E00000E3E000EFF800FFFC00FC1E00F80E00F00700E00700E00380E00380E00380E
00380E00380E00380F00700F00700F80E00FC1E00FFFC00EFF80063E00151C809B18>I<
01FE0007FF001FFF803E0780380300700000700000E00000E00000E00000E00000E00000
E000007000007001C03801C03E03C01FFF8007FF0001FC0012147D9318>I<001F80003F
80001F8000038000038000038000038000038003E3800FFB801FFF803C1F80380F807007
80700380E00380E00380E00380E00380E00380E00380700780700780380F803C1F801FFF
F00FFBF803E3F0151C7E9B18>I<01F00007FC001FFE003E0F00380780700380700380E0
01C0E001C0FFFFC0FFFFC0FFFFC0E000007000007001C03801C03E03C01FFF8007FF0001
FC0012147D9318>I<001F80007FC000FFE000E1E001C0C001C00001C00001C0007FFFC0
FFFFC0FFFFC001C00001C00001C00001C00001C00001C00001C00001C00001C00001C000
01C00001C00001C00001C0007FFF007FFF007FFF00131C7F9B18>I<01E1F007FFF80FFF
F81E1E301C0E003807003807003807003807003807001C0E001E1E001FFC001FF80039E0
003800001C00001FFE001FFFC03FFFE07801F0700070E00038E00038E00038E000387800
F07E03F01FFFC00FFF8001FC00151F7F9318>I<7E0000FE00007E00000E00000E00000E
00000E00000E00000E3E000EFF800FFFC00FC1C00F80E00F00E00E00E00E00E00E00E00E
00E00E00E00E00E00E00E00E00E00E00E00E00E00E00E07FC3FCFFE7FE7FC3FC171C809B
18>I<03800007C00007C00007C0000380000000000000000000000000007FC000FFC000
7FC00001C00001C00001C00001C00001C00001C00001C00001C00001C00001C00001C000
01C00001C00001C000FFFF00FFFF80FFFF00111D7C9C18>I<FE0000FE0000FE00000E00
000E00000E00000E00000E00000E3FF00E7FF00E3FF00E07800E0F000E1E000E3C000E78
000EF0000FF8000FFC000F9C000F0E000E0F000E07000E03800E03C0FFC7F8FFC7F8FFC7
F8151C7F9B18>107 D<7FE000FFE0007FE00000E00000E00000E00000E00000E00000E0
0000E00000E00000E00000E00000E00000E00000E00000E00000E00000E00000E00000E0
0000E00000E00000E00000E0007FFFC0FFFFE07FFFC0131C7E9B18>I<7CE0E000FFFBF8
007FFFF8001F1F1C001E1E1C001E1E1C001C1C1C001C1C1C001C1C1C001C1C1C001C1C1C
001C1C1C001C1C1C001C1C1C001C1C1C001C1C1C001C1C1C007F1F1F00FFBFBF807F1F1F
001914819318>I<7E3E00FEFF807FFFC00FC1C00F80E00F00E00E00E00E00E00E00E00E
00E00E00E00E00E00E00E00E00E00E00E00E00E00E00E07FC3FCFFE7FE7FC3FC17148093
18>I<01F0000FFE001FFF003E0F803803807001C07001C0E000E0E000E0E000E0E000E0
E000E0F001E07001C07803C03C07803E0F801FFF000FFE0001F00013147E9318>I<7E3E
00FEFF807FFFC00FC1E00F80E00F00700E00700E00380E00380E00380E00380E00380E00
380F00700F00700F80E00FC1E00FFFC00EFF800E3E000E00000E00000E00000E00000E00
000E00000E00007FC000FFE0007FC000151E809318>I<01E38007FB801FFF803E1F8038
0F80700780700780E00380E00380E00380E00380E00380E00380700780700780380F803C
1F801FFF800FFB8003E380000380000380000380000380000380000380000380003FF800
3FF8003FF8151E7E9318>I<7F87E0FF9FF07FBFF803F87803F03003E00003C00003C000
0380000380000380000380000380000380000380000380000380007FFE00FFFF007FFE00
15147F9318>I<07F7003FFF007FFF00780F00E00700E00700E007007C00007FE0001FFC
0003FE00001F00600780E00380E00380F00380F80F00FFFF00FFFC00E7F00011147D9318
>I<0180000380000380000380000380007FFFC0FFFFC0FFFFC003800003800003800003
80000380000380000380000380000380000380400380E00380E00380E001C1C001FFC000
FF80003E0013197F9818>I<7E07E0FE0FE07E07E00E00E00E00E00E00E00E00E00E00E0
0E00E00E00E00E00E00E00E00E00E00E00E00E00E00E01E00F03E007FFFC03FFFE01FCFC
1714809318>I<7F8FF0FF8FF87F8FF01E03C00E03800E03800E03800707000707000707
00038E00038E00038E00038E0001DC0001DC0001DC0000F80000F80000700015147F9318
>I<FF8FF8FF8FF8FF8FF83800E03800E03800E01C01C01C01C01C71C01CF9C01CF9C01C
D9C01CD9C00DDD800DDD800DDD800D8D800F8F800F8F8007070015147F9318>I<7F8FF0
7F9FF07F8FF0070700078E00039E0001DC0001F80000F80000700000F00000F80001DC00
039E00038E000707000F07807F8FF0FF8FF87F8FF015147F9318>I<7F8FF0FF8FF87F8F
F00E01C00E03800E0380070380070700070700038700038600038E0001CE0001CE0000CC
0000CC0000DC0000780000780000780000700000700000700000F00000E00079E0007BC0
007F80003F00001E0000151E7F9318>I<3FFFF07FFFF07FFFF07001E07003C070078000
0F00001E00003C0000F80001F00003C0000780000F00701E00703C0070780070FFFFF0FF
FFF0FFFFF014147F9318>I<0007E0001FE0007FE000780000E00000E00000E00000E000
00E00000E00000E00000E00000E00000E00000E00001E0007FC000FF8000FF80007FC000
01E00000E00000E00000E00000E00000E00000E00000E00000E00000E00000E00000E000
007800007FE0001FE00007E013247E9F18>I<7C0000FF0000FFC00003C00000E00000E0
0000E00000E00000E00000E00000E00000E00000E00000E00000E00000F000007FC0003F
E0003FE0007FC000F00000E00000E00000E00000E00000E00000E00000E00000E00000E0
0000E00000E00003C000FFC000FF00007C000013247E9F18>125
D E /Fi 45 122 df<000078007C7800FC7801FC7803C000038000078000078000078000
078000078000078000078000078000FFFC78FFFC78FFFC78078078078078078078078078
078078078078078078078078078078078078078078078078078078078078078078078078
078078078078078078152480A31A>12 D<007000E001C003C0078007000F000E001E001C
003C003C00380078007800780078007000F000F000F000F000F000F000F000F000F000F0
00F000F000F000F0007000780078007800780038003C003C001C001E000E000F00070007
8003C001C000E000700C327DA413>40 D<E000700038003C001E000E000F000700078003
8003C003C001C001E001E001E001E000E000F000F000F000F000F000F000F000F000F000
F000F000F000F000F000E001E001E001E001E001C003C003C00380078007000F000E001E
003C0038007000E0000C327DA413>I<FFE0FFE0FFE00B037F8C10>45
D<F0F0F0F004047B830E>I<00C001C007C0FFC0FFC0FBC003C003C003C003C003C003C0
03C003C003C003C003C003C003C003C003C003C003C003C003C003C003C003C003C003C0
03C0FFFFFFFFFFFF10227CA118>49 D<03F0000FFC001FFE003C1F003007807007C06003
C0E003E0C001E04001E04001E00001E00001E00001E00003C00003C0000780000780000F
00001E00003C0000780000F00001E00001C0000380000700000E00001C00003800007000
00FFFFE0FFFFE0FFFFE013227EA118>I<01F00007FC001FFF003E0F003807807003C020
03C02003C00003C00003C00003C0000780000780000F00001E0003FC0003F80003FE0000
0F000007800003C00003C00001E00001E00001E00001E00001E08001E0C003C0E003C070
07803C0F801FFF000FFC0003F00013237EA118>I<001F00001F00002F00002F00006F00
00EF0000CF0001CF0001CF00038F00038F00078F00070F000F0F000E0F001E0F003C0F00
3C0F00780F00780F00F00F00FFFFF8FFFFF8FFFFF8000F00000F00000F00000F00000F00
000F00000F00000F00000F0015217FA018>I<3FFF803FFF803FFF803C00003C00003C00
003C00003C00003C00003C00003C00003C00003CF8003FFE003FFF003F0F803E07803C03
C03803C00001E00001E00001E00001E00001E00001E00001E04003C04003C0E003C07007
807C1F003FFE000FFC0003F00013227EA018>I<F0F0F0F0000000000000000000000000
0000F0F0F0F004167B950E>58 D<001F0000001F0000003F8000003F8000003B8000007B
C0000073C0000071C00000F1E00000F1E00000E0E00001E0F00001E0F00001C0F00003C0
780003C078000380780007803C0007803C0007003C000F001E000F001E000FFFFE001FFF
FF001FFFFF001C000F003C0007803C00078038000780780003C0780003C0700003C0F000
01E0F00001E0E00001E01B237EA220>65 D<000FF000007FFC0000FFFF0001F01F0003C0
0700078000000F0000001E0000003E0000003C0000003C00000078000000780000007800
0000F0000000F0000000F0000000F0000000F0000000F0000000F0000000F0000000F000
00007800000078000000780000003C0000003C0000003E0000001E0000000F0000000780
008003C0038001F00F8000FFFF00007FFC00000FF00019257DA31F>67
D<FFFE0000FFFFC000FFFFE000F003F000F000F800F0007C00F0003E00F0001E00F0000F
00F0000F00F0000780F0000780F0000780F00003C0F00003C0F00003C0F00003C0F00003
C0F00003C0F00003C0F00003C0F00003C0F0000380F0000780F0000780F0000780F0000F
00F0001F00F0001E00F0003C00F000FC00F003F800FFFFE000FFFFC000FFFE00001A237B
A223>I<FFFFF0FFFFF0FFFFF0F00000F00000F00000F00000F00000F00000F00000F000
00F00000F00000F00000F00000FFFFE0FFFFE0FFFFE0F00000F00000F00000F00000F000
00F00000F00000F00000F00000F00000F00000F00000F00000F00000FFFFF8FFFFF8FFFF
F815237BA21D>I<FFFFF0FFFFF0FFFFF0F00000F00000F00000F00000F00000F00000F0
0000F00000F00000F00000F00000F00000F00000FFFFC0FFFFC0FFFFC0F00000F00000F0
0000F00000F00000F00000F00000F00000F00000F00000F00000F00000F00000F00000F0
0000F0000014237BA21C>I<F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0
F0F0F0F0F0F0F0F0F0F0F004237CA20D>73 D<FC00007EFE0000FEFE0000FEFE0000FEF7
0001DEF70001DEF70001DEF78003DEF380039EF380039EF3C0079EF3C0079EF1C0071EF1
C0071EF1E00F1EF0E00E1EF0E00E1EF0F01E1EF0F01E1EF0701C1EF0783C1EF0783C1EF0
38381EF03C781EF03C781EF01C701EF01C701EF01EF01EF00EE01EF00EE01EF00FE01EF0
07C01EF007C01EF007C01EF000001E1F237BA22A>77 D<FC001EFE001EFE001EFE001EF7
001EF7001EF3801EF3801EF3C01EF1C01EF1C01EF1E01EF0E01EF0F01EF0F01EF0781EF0
781EF0381EF03C1EF03C1EF01E1EF01E1EF00E1EF00F1EF0071EF0071EF0079EF0039EF0
039EF001DEF001DEF000FEF000FEF000FEF0007E17237BA222>I<FFFE00FFFF80FFFFC0
F003E0F000F0F00078F00078F0003CF0003CF0003CF0003CF0003CF0003CF00078F00078
F000F0F003E0FFFFC0FFFF80FFFE00F00000F00000F00000F00000F00000F00000F00000
F00000F00000F00000F00000F00000F00000F00000F0000016237BA21F>80
D<FFFC00FFFF80FFFFC0F003E0F000F0F00078F00038F0003CF0003CF0003CF0003CF000
3CF00038F00078F000F0F003E0FFFFC0FFFF80FFFE00F01E00F00F00F00700F00780F003
80F003C0F001E0F001E0F000F0F000F0F00078F00038F0003CF0001EF0001EF0000F1823
7BA21F>82 D<00FE0003FFC007FFE00F81E01E00603C00003C0000780000780000780000
7800007800007C00003C00003F00001FC0000FFC0007FF0001FF80003FC00007E00001F0
0000F00000F8000078000078000078000078000078000078C000F0E000F0F801E07E07C0
3FFF800FFF0001FC0015257EA31B>I<FFFFFFF0FFFFFFF0FFFFFFF0000F0000000F0000
000F0000000F0000000F0000000F0000000F0000000F0000000F0000000F0000000F0000
000F0000000F0000000F0000000F0000000F0000000F0000000F0000000F0000000F0000
000F0000000F0000000F0000000F0000000F0000000F0000000F0000000F0000000F0000
000F0000000F0000000F00001C237EA221>I<F0003CF0003CF0003CF0003CF0003CF000
3CF0003CF0003CF0003CF0003CF0003CF0003CF0003CF0003CF0003CF0003CF0003CF000
3CF0003CF0003CF0003CF0003CF0003CF0003CF0003CF0003CF0003C7800787800787800
783C00F01E01E01F87E00FFFC003FF0000FC0016247BA221>I<07E01FF83FFC381E201E
000F000F000F000F00FF07FF1FFF3E0F780FF00FF00FF00FF00FF83F7FFF3FEF1F8F1016
7E9517>97 D<01FC0007FF000FFF801F03803C0180780000780000700000F00000F00000
F00000F00000F00000F000007800007800007800003C00401F03C00FFFC007FF8001FC00
12167E9516>99 D<0003C00003C00003C00003C00003C00003C00003C00003C00003C000
03C00003C00003C00003C003E3C00FFBC01FFFC03F0FC03C07C07803C07803C0F003C0F0
03C0F003C0F003C0F003C0F003C0F003C0F003C07803C07803C03C07C03E0FC01FFFC00F
FBC003E3C012237EA219>I<03F00007FC001FFE003E0F003C0780780380780380F001C0
FFFFC0FFFFC0FFFFC0F00000F00000F000007000007800007800003C00801F07800FFF80
07FF0001F80012167E9516>I<003F00FF01FF03C0038007800780078007800780078007
800780FFF8FFF8FFF8078007800780078007800780078007800780078007800780078007
8007800780078007800780102380A20F>I<01F07807FFF80FFFF81F1F001E0F003C0780
3C07803C07803C07803C07801E0F001F1F000FFE001FFC0019F0003800003800003C0000
1FFE001FFFC01FFFE03FFFF07801F07800F8F00078F00078F00078F000787800F03E03E0
1FFFC00FFF8001FC0015217F9518>I<F000F000F000F000F000F000F000F000F000F000
F000F000F000F1F8F3FCF7FEFE1EF80FF80FF00FF00FF00FF00FF00FF00FF00FF00FF00F
F00FF00FF00FF00FF00FF00FF00F10237CA219>I<F0F0F0F0000000000000000000F0F0
F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F004237DA20B>I<F0F0F0F0F0F0F0F0F0
F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F004237DA20B>108
D<F0F807C0F3FE1FF0F7FF3FF8FE0F7078FC0FE07CF807C03CF807C03CF007803CF00780
3CF007803CF007803CF007803CF007803CF007803CF007803CF007803CF007803CF00780
3CF007803CF007803CF007803CF007803C1E167C9527>I<F1F8F3FCF7FEFE1EF80FF80F
F00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00F10167C95
19>I<01FC0007FF000FFF801F07C03C01E07800F07800F0700070F00078F00078F00078
F00078F00078F000787800F07800F07C01F03E03E01F07C00FFF8007FF0001FC0015167F
9518>I<F1F000F7FC00FFFE00FC3F00F80F00F00780F00780F007C0F003C0F003C0F003
C0F003C0F003C0F003C0F007C0F00780F00F80F80F00FC3E00FFFE00F7F800F1F000F000
00F00000F00000F00000F00000F00000F00000F00000F00000F0000012207C9519>I<03
E3C007FBC00FFFC01F0FC03C07C07C03C07803C0F803C0F003C0F003C0F003C0F003C0F0
03C0F003C0F803C07803C07803C03C07C03F0FC01FFFC00FFBC003E3C00003C00003C000
03C00003C00003C00003C00003C00003C00003C00003C012207E9519>I<F0E0F3E0F7E0
FF00FE00FC00F800F800F000F000F000F000F000F000F000F000F000F000F000F000F000
F0000B167C9511>I<07F01FFC3FFE3C0E7806780078007C003F003FF01FF80FFC01FE00
1F000F000F000FC00FF81EFFFE3FFC0FF010167F9513>I<0F000F000F000F000F000F00
FFF8FFF8FFF80F000F000F000F000F000F000F000F000F000F000F000F000F000F000F08
0F1C07FC07F803E00E1C7F9B12>I<F00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF0
0FF00FF00FF00FF00FF00FF00FF01FF83F7FFF7FCF1F0F10167C9519>I<F001E0F001E0
7803C07803C07803C03C07803C07803C07801E07001E0F001E0F000F0E000F1E000F1E00
071C00079C0007BC0003B80003B80003F80001F00001F00013167F9516>I<F007803CF0
0FC03CF00FC03C780DC078781DC078781DE078781CE0783C18E0F03C38E0F03C38F0F01C
38F0E01E3871E01E3071E01E7079E00E7079C00E7039C00F603BC007603B8007601B8007
C01F8007C01F8003C01F001E167F9521>I<F001E0F001E07803C07803C07C03C03C0780
3C07801E07801E07001E0F000F0F000F0E00071E00079E00039C00039C00039C00019800
01D80000F80000F00000F00000F00000E00000E00001E00001C00001C0000380007F8000
7F00007E000013207F9516>121 D E /Fj 10 58 df<1F00318060C04040C060C060C060
C060C060C060C060C060404060C031801F000B107F8F0F>48 D<0C003C00CC000C000C00
0C000C000C000C000C000C000C000C000C000C00FF8009107E8F0F>I<1F00618040C080
60C0600060006000C00180030006000C00102020207FC0FFC00B107F8F0F>I<1F002180
60C060C000C0008001800F00008000400060C060C060804060801F000B107F8F0F>I<03
00030007000F000B001300330023004300C300FFE003000300030003001FE00B107F8F0F
>I<20803F002C002000200020002F0030802040006000600060C06080C061801F000B10
7F8F0F>I<0780184030C060C06000C000CF00F080E040C060C060C060406060C030801F
000B107F8F0F>I<40007FE07FC08080808001000200040004000C000800080018001800
1800180018000B117E900F>I<1F00318060C060C060C071803F000F00338061C0C060C0
60C060404060801F000B107F8F0F>I<1F00318060C0C040C060C060C06040E021E01E60
0060004060C0608043003E000B107F8F0F>I E /Fk 25 90 df<FFC0FFC00A027D8A0F>
45 D<3078F8787005057C840D>I<000C001C00FC0F380038003800380038003800700070
007000700070007000E000E000E000E000E000E001C001C001C001C001C001C0038003C0
FFFE0F1E7C9D17>49 D<003F8000C1E00100F00200780400780400780F007C0F807C0F80
7C0F00780600780000F80000F00001E00001C0000380000700000E00001C000038000060
0000C0000180000300200600200800401000403FFFC07FFF80FFFF80161E7E9D17>I<00
7F000183C00201E00400F00700F00F00F00F01F00F01F00001E00001E00003C000038000
0700000E0000F800000E000007000007800007C00003C00007C03007C07807C0F807C0F8
07C0F00780800F00400E00201C0018780007E000141F7D9D17>I<0000600000600000E0
0001C00003C00005C0000DC00009C00011C000238000438000C380008380010380020380
040700080700180700100700200700400700FFFFF0000E00000E00000E00000E00000E00
001C00001E0001FFE0141E7E9D17>I<01803001FFE003FFC003FF0003FC000200000200
00020000040000040000040000047C000587000603800C01800801C00001C00001E00001
E00001E00001E07003C0F803C0F003C0E00380800780400700400E00201C0018700007C0
00141F7D9D17>I<0000100000001800000038000000380000007800000078000000FC00
0001BC0000013C0000033C0000023C0000063C0000043E0000081E0000081E0000101E00
00101E0000201E0000200F0000400F0000400F0000FFFF0000800F0001000F8001000780
020007800200078004000780040007800C0007C03E0007C0FF807FFC1E207E9F22>65
D<0001F808000E061800380138007000F801E0007803C0007007800030078000300F0000
301F0000301E0000303E0000203C0000007C0000007C0000007C0000007C000000F80000
00F8000000F8000000F8000000F80000007800004078000080780000803C0000803C0001
001C0002000E00020006000C000300100001C0E000003F00001D217B9F21>67
D<07FFFF00007C01E0003C00F0003C00780078003C0078003C0078001E0078001E007800
1E0078001F00F0001F00F0001F00F0001F00F0001F00F0001F00F0001F01E0001E01E000
3E01E0003E01E0003E01E0003C01E0007C03C0007803C000F003C000F003C001E003C003
C003C0078007800F0007803C00FFFFE000201F7E9E23>I<07FFFFF8007C0078003C0038
003C001800780018007800080078000800780008007800080078080800F0100000F01000
00F0100000F0300000FFF00000F0700001E0200001E0200001E0200001E0200001E00008
01E0001003C0001003C0001003C0002003C0002003C0006003C000C0078001C0078007C0
FFFFFF801D1F7E9E1F>I<07FFFFF8007C0078003C0038003C0018007800180078000800
78000800780008007800080078000800F0100000F0100000F0100000F0300000F0700000
FFF00001E0600001E0200001E0200001E0200001E0200001E0000003C0000003C0000003
C0000003C0000003C0000003C000000780000007C00000FFFE00001D1F7E9E1E>I<0001
FC04000F030C003C009C0070007C00E0003C01C0003803800018078000180F0000181F00
00181E0000183E0000103C0000007C0000007C0000007C0000007C000000F8000000F800
0000F8007FFCF80003E0780001E0780001E0780003C0780003C03C0003C03C0003C01C00
03C00E0007C007000B800380118001E06080003F80001E217B9F24>I<07FFC7FFC0007C
00F800003C007800003C007800007800F000007800F000007800F000007800F000007800
F000007800F00000F001E00000F001E00000F001E00000F001E00000FFFFE00000F001E0
0001E003C00001E003C00001E003C00001E003C00001E003C00001E003C00003C0078000
03C007800003C007800003C007800003C007800003C007800007800F000007C00F8000FF
F8FFF800221F7E9E22>I<07FFE0007C00003C00003C0000780000780000780000780000
780000780000F00000F00000F00000F00000F00000F00001E00001E00001E00001E00001
E00001E00003C00003C00003C00003C00003C00003C00007800007C000FFFC00131F7F9E
10>I<07FFF000007E0000003C0000003C00000078000000780000007800000078000000
7800000078000000F0000000F0000000F0000000F0000000F0000000F0000001E0000001
E0000001E0000001E0000001E0008001E0010003C0010003C0010003C0030003C0020003
C0060003C0060007801E0007807C00FFFFFC00191F7E9E1C>76 D<07FC0000FFC0007C00
00F800003C00017800003C00017800004E0002F000004E0002F000004E0004F000004E00
04F000004E0008F000004E0008F00000870011E00000870011E00000870021E000008700
21E00000870041E00000838041E00001038083C00001038083C00001038103C000010382
03C0000101C203C0000101C403C0000201C40780000201C80780000201C80780000201D0
0780000200F00780000600E00780000600E00F00000F00C00F8000FFE0C1FFF8002A1F7E
9E2A>I<07FC01FFC0003E003E00003E001800003E001800004F001000004F0010000047
80100000478010000043C010000043C010000083C020000081E020000081E020000080F0
20000080F020000080782000010078400001007C400001003C400001003C400001001E40
0001001E400002000F800002000F800002000F8000020007800002000780000600038000
06000300000F00010000FFE0010000221F7E9E22>I<0003F800001E0E000038070000E0
038001C001C003C001E0078000E00F0000F00F0000F01E0000F01E0000F83E0000F83C00
00F87C0000F87C0000F87C0000F87C0000F8F80001F0F80001F0F80001F0F80001F0F800
03E0780003E0780003C0780007C07C0007803C000F003C001E001E001C000E0038000700
F00003C3C00000FE00001D217B9F23>I<07FFFF00007C03C0003C01E0003C00F0007800
F0007800F8007800F8007800F8007800F8007800F000F001F000F001E000F003C000F007
8000F00F0000FFF80001E0000001E0000001E0000001E0000001E0000001E0000003C000
0003C0000003C0000003C0000003C0000003C000000780000007C00000FFFC00001D1F7E
9E1F>I<07FFFC00007C0700003C03C0003C01E0007801E0007801F0007801F0007801F0
007801F0007801E000F003E000F003C000F0078000F00F0000F03C0000FFF00001E03000
01E0380001E01C0001E01C0001E01C0001E01E0003C03E0003C03E0003C03E0003C03E00
03C03E0003C03E0207803E0407C01F04FFFC0F18000003E01F207E9E21>82
D<003F040060CC01803C03801C03001C0700180600080E00080E00080E00080E00000F00
000F80000FE00007FE0003FF8001FFC0007FE00007E00001E00000E00000F00000F04000
E04000E04000E04000E06000C0600180E00380F80300C60C0081F80016217D9F19>I<3F
FFFFF03C0780F03007803060078030400F0010400F0010C00F0010800F0010800F001080
0F0010001E0000001E0000001E0000001E0000001E0000001E0000003C0000003C000000
3C0000003C0000003C0000003C0000007800000078000000780000007800000078000000
78000000F0000001F800007FFFE0001C1F7A9E21>I<03FFC0FFC0007F007E00003E0038
00001E003000001E002000000F004000000F008000000F81000000078200000007C60000
0003C400000003E800000001F000000001F000000000F000000000F800000000F8000000
017C000000023C000000043C0000000C1E000000081E000000101F000000200F00000040
0F800000C0078000008007C000010003C000070003E0001F8007E000FFE01FFE00221F7F
9E22>88 D<FFF003FF1F8000F80F0000600F8000400780008007C0018003C0010003E002
0001E0040001F00C0001F0080000F0100000F8200000786000007C4000003C8000003F00
00001F0000001E0000001E0000001E0000001C0000003C0000003C0000003C0000003C00
00003C00000038000000780000007C00000FFFC000201F7A9E22>I
E /Fl 33 122 df<FFFEFFFEFFFE0F037F8E14>45 D<F8F8F8F8F805057A8411>I<0018
0000380000F80007F800FFF800FFF800F8F80000F80000F80000F80000F80000F80000F8
0000F80000F80000F80000F80000F80000F80000F80000F80000F80000F80000F80000F8
0000F80000F80000F80000F80000F80000F80000F80000F80000F80000F80000F80000F8
007FFFF07FFFF07FFFF014287BA71E>49 D<00FE0003FFC007FFE00FFFF01F03F83C00FC
38007E78003E70003EF0001FF0001F60001F20001F00001F00001F00001F00003E00003E
00007C00007C0000F80001F00001E00003C0000780000F00001E00003C0000780000F000
01E00003C0000780000F00001E00003C00007FFFFF7FFFFF7FFFFF7FFFFF18287EA71E>
I<007F000001FFC00007FFF0000FFFF8001FC1F8003E007C003C003E0078003E0038003E
0010003E0000003E0000003E0000003C0000007C000000FC000001F8000007F00000FFE0
0000FFC00000FFE00000FFF0000001FC0000007C0000003E0000001F0000001F0000000F
8000000F8000000F8000000F8000000F8040000F8060001F00F0001F00F8003F007E007E
003F81FC001FFFF8000FFFF00003FFE000007F000019297EA71E>I<0003F0000007F000
0005F000000DF000000DF000001DF0000039F0000039F0000079F0000079F00000F1F000
00F1F00001E1F00003E1F00003E1F00007C1F00007C1F0000F81F0000F81F0001F01F000
1F01F0003E01F0007C01F0007C01F000F801F000FFFFFF80FFFFFF80FFFFFF80FFFFFF80
0001F0000001F0000001F0000001F0000001F0000001F0000001F0000001F0000001F000
0001F00019277EA61E>I<3FFFFC3FFFFC3FFFFC3FFFFC3E00003E00003E00003E00003E
00003E00003E00003E00003E00003E00003E3F003EFFC03FFFE03FFFF03FE1F83F807C3F
003E3E003E00003E00001F00001F00001F00001F00001F00001F00001F20001F60003E70
003EF8007C7C00FC3F03F81FFFF00FFFE007FF8000FE0018287EA61E>I<0001F0000000
03F800000003F800000007FC00000007BC00000007BC0000000F3E0000000F1E0000000F
1E0000001F1F0000001E1F0000001E0F0000003E0F8000003C0F8000003C078000007C07
C000007807C00000F803E00000F803E00000F003E00001F001F00001F001F00001E001F0
0003E000F80003E000F80003C000F80007FFFFFC0007FFFFFC000FFFFFFE000F80003E00
0F80003E001F00003F001F00001F001E00001F003E00000F803E00000F803C00000F807C
000007C07C000007C078000007C0F8000003E0F8000003E0232A7EA928>65
D<FFFFF00000FFFFFC0000FFFFFF0000F8003FC000F80007E000F80003F000F80001F800
F80000FC00F800007C00F800003E00F800001E00F800001F00F800000F00F800000F80F8
00000F80F800000780F8000007C0F8000007C0F8000007C0F8000007C0F8000007C0F800
0007C0F8000007C0F8000007C0F8000007C0F8000007C0F800000780F800000F80F80000
0F80F800000F80F800001F00F800001F00F800003E00F800007E00F800007C00F80000F8
00F80003F000F80007E000F8003FC000FFFFFF0000FFFFFE0000FFFFF00000222A7BA92B
>68 D<FFFFFFE0FFFFFFE0FFFFFFE0FFFFFFE0F8000000F8000000F8000000F8000000F8
000000F8000000F8000000F8000000F8000000F8000000F8000000F8000000F8000000F8
000000FFFFFF80FFFFFF80FFFFFF80FFFFFF80F8000000F8000000F8000000F8000000F8
000000F8000000F8000000F8000000F8000000F8000000F8000000F8000000F8000000F8
000000F8000000F8000000FFFFFFF0FFFFFFF0FFFFFFF0FFFFFFF01C2A7BA924>I<F8F8
F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8
F8F8F8F8052A7AA911>73 D<FE0000007F80FE0000007F80FE0000007F80FF000000FF80
FB000000EF80FB800001EF80FB800001EF80FB800001EF80F9C00003CF80F9C00003CF80
F9C00003CF80F8E000078F80F8E000078F80F8F0000F8F80F8F0000F8F80F870000F0F80
F878001F0F80F878001F0F80F838001E0F80F83C003E0F80F83C003E0F80F81E007C0F80
F81E007C0F80F80E00780F80F80F00F80F80F80F00F80F80F80700F00F80F80781F00F80
F80781F00F80F80381E00F80F803C3E00F80F803C3E00F80F801C3C00F80F801E7C00F80
F800E7800F80F800E7800F80F800E7800F80F8007F000F80F8007F000F80F8007F000F80
F8003E000F80F80000000F80292A7BA934>77 D<FFFFE000FFFFFC00FFFFFF00F8003F80
F8000FC0F80007E0F80001E0F80001F0F80000F0F80000F8F80000F8F80000F8F80000F8
F80000F8F80000F8F80000F0F80001F0F80001F0F80003E0F8000FC0F8003F80FFFFFF00
FFFFFE00FFFFF000F8000000F8000000F8000000F8000000F8000000F8000000F8000000
F8000000F8000000F8000000F8000000F8000000F8000000F8000000F8000000F8000000
F8000000F80000001D2A7BA926>80 D<FFFFFFFFF0FFFFFFFFF0FFFFFFFFF0FFFFFFFFF0
0000F800000000F800000000F800000000F800000000F800000000F800000000F8000000
00F800000000F800000000F800000000F800000000F800000000F800000000F800000000
F800000000F800000000F800000000F800000000F800000000F800000000F800000000F8
00000000F800000000F800000000F800000000F800000000F800000000F800000000F800
000000F800000000F800000000F800000000F800000000F800000000F800000000F80000
0000F800000000F80000242A7EA929>84 D<01FE000FFF803FFFC03FFFE03C03F03001F0
0001F80000F80000F80000F80000F80000F8007FF807FFF81FFFF83FE0F87F00F8FC00F8
F800F8F800F8F800F8FC01F87E07F87FFFF83FFFF81FFCF80FE0F8151B7E9A1D>97
D<007FC001FFF007FFFC0FFFFC1FC07C1F00083E00007C00007C00007C0000F80000F800
00F80000F80000F80000F80000F800007C00007C00007E00003E00001F000C1FC07C0FFF
FC07FFFC01FFF0007F80161B7E9A1B>99 D<00003E00003E00003E00003E00003E00003E
00003E00003E00003E00003E00003E00003E00003E00003E00003E00FC3E03FF3E07FFFE
0FFFFE1FC1FE3F007E3E003E7C003E7C003EFC003EF8003EF8003EF8003EF8003EF8003E
F8003EF8003EFC003E7C003E7C003E3E007E3F00FE1FC1FE0FFFFE07FFBE03FF3E00FC3E
172A7EA91F>I<007E0003FF8007FFC00FFFE01F83F03F00F03E00787C00787C00387800
3CFFFFFCFFFFFCFFFFFCFFFFFCF80000F80000F800007800007C00007C00003E00003F00
0C1FC07C0FFFFC07FFFC01FFF0007F80161B7E9A1B>I<001FC0007FC000FFC001FFC003
F00003E00007C00007C00007C00007C00007C00007C00007C00007C00007C000FFFE00FF
FE00FFFE0007C00007C00007C00007C00007C00007C00007C00007C00007C00007C00007
C00007C00007C00007C00007C00007C00007C00007C00007C00007C00007C00007C00007
C00007C000122A7FA912>I<00F8078003FE7FC00FFFFFC01FFFFFC01F07C0003E03E000
3E03E0007C01F0007C01F0007C01F0007C01F0007C01F0007C01F0003E03E0003E03E000
1F07C0001FFFC0003FFF80003BFE000038F8000078000000780000003C0000003FFFC000
3FFFF8001FFFFC001FFFFE003FFFFF007C007F00F8001F80F8000F80F8000F80F8000F80
FC001F807E003F003F80FE003FFFFE000FFFF80007FFF00000FF80001A287E9A1E>I<F8
0000F80000F80000F80000F80000F80000F80000F80000F80000F80000F80000F80000F8
0000F80000F80000F83F00F8FF80FBFFC0FFFFE0FF07E0FE03F0FC01F0FC01F0FC01F0F8
01F0F801F0F801F0F801F0F801F0F801F0F801F0F801F0F801F0F801F0F801F0F801F0F8
01F0F801F0F801F0F801F0F801F0F801F0142A7BA91F>I<F8F8F8F8F800000000000000
000000F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8052A7CA90E>
I<F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8
F8F8F8F8F8F8F8052A7CA90E>108 D<F83F003F00F8FFC0FFC0FBFFE3FFE0FFFFF7FFF0
FF83F783F0FE01FE01F8FC00FC00F8FC00FC00F8FC00FC00F8F800F800F8F800F800F8F8
00F800F8F800F800F8F800F800F8F800F800F8F800F800F8F800F800F8F800F800F8F800
F800F8F800F800F8F800F800F8F800F800F8F800F800F8F800F800F8F800F800F8F800F8
00F8F800F800F8251B7B9A30>I<F83F00F8FF80FBFFC0FFFFE0FF07E0FE03F0FC01F0FC
01F0FC01F0F801F0F801F0F801F0F801F0F801F0F801F0F801F0F801F0F801F0F801F0F8
01F0F801F0F801F0F801F0F801F0F801F0F801F0F801F0141B7B9A1F>I<007F000001FF
C00007FFF0000FFFF8001FC1FC003F007E003E003E007C001F007C001F0078000F00F800
0F80F8000F80F8000F80F8000F80F8000F80F8000F80F8000F807C001F007C001F007E00
3F003E003E003F007E001FC1FC000FFFF80007FFF00001FFC000007F0000191B7E9A1E>
I<F83F00F9FFC0FBFFE0FFFFF0FF07F0FC01F8F800FCF800FCF8007CF8007EF8003EF800
3EF8003EF8003EF8003EF8003EF8003EF8007CF8007CF800FCFC00F8FC03F8FF07F0FFFF
E0FBFFC0F9FF80F87E00F80000F80000F80000F80000F80000F80000F80000F80000F800
00F80000F80000F8000017277B9A1F>I<F838F8F8F9F8FBF8FFC0FF00FE00FE00FC00FC
00F800F800F800F800F800F800F800F800F800F800F800F800F800F800F800F800F8000D
1B7B9A14>114 D<03FC001FFF803FFFC07FFFC07C07C0F80080F80000F80000F80000FC
00007F80007FF8003FFE001FFF0007FF8000FFC0000FE00007E00003E00003E04003E0E0
07E0FC0FC0FFFFC07FFF801FFE0003F800131B7E9A17>I<07C00007C00007C00007C000
07C00007C00007C000FFFFC0FFFFC0FFFFC007C00007C00007C00007C00007C00007C000
07C00007C00007C00007C00007C00007C00007C00007C00007C00007C00007C00007C000
07C04007E1C003FFE003FFE001FF8000FC0013227FA116>I<F801F0F801F0F801F0F801
F0F801F0F801F0F801F0F801F0F801F0F801F0F801F0F801F0F801F0F801F0F801F0F801
F0F801F0F801F0F801F0F801F0F803F0F803F0FC0FF0FFFFF07FFDF03FF9F01FC1F0141B
7B9A1F>I<7C000FC03E001F803F001F001F803E000F807C0007C0FC0003E0F80001F1F0
0001FBE00000FFC000007FC000003F8000001F0000001F0000003F8000007FC00000FBC0
0000F3E00001F1F00003E0F80007C07C000F807C000F803E001F001F003E000F807E000F
C0FC0007E01B1B809A1C>120 D<F8000F80FC000F807C001F007E001F003E003E003E00
3E001F003E001F007C001F007C000F807C000F80F80007C0F80007C0F00007C1F00003E1
F00003E1E00001E1E00001E3E00001F3C00000F3C00000F3800000738000007380000037
0000003F0000003E0000001E0000001E0000003C0000003C0000003C0000007800000078
000000F0000000F000007FE000007FE000007FC000007F00000019277F9A1C>I
E /Fm 53 122 df<007000E001C00380078007000E001E001E003C003C003C0078007800
780078007000F000F000F000F000F000F000F000F000F000F000F000F000700078007800
780078003C003C003C001E001E000E0007000780038001C000E000700C2E7EA112>40
D<E000700038001C001E000E0007000780078003C003C003C001E001E001E001E000E000
F000F000F000F000F000F000F000F000F000F000F000F000E001E001E001E001E003C003
C003C00780078007000E001E001C0038007000E0000C2E7DA112>I<7878787818303060
60E0050A7D830D>44 D<FFC0FFC0FFC00A037F8B0F>I<F0F0F0F004047C830D>I<000100
030003000600060006000C000C000C00180018001800300030003000600060006000C000
C000C00180018001800300030003000600060006000C000C000C00180018001800300030
003000600060006000C000C000C000102D7DA117>I<001F0000001F0000003F8000003B
8000003B8000007BC0000073C0000071C00000F1E00000E1E00000E0E00001E0F00001E0
F00001C0F00003C0780003C078000380780007803C0007803C0007003C000FFFFE000FFF
FE000FFFFE001E000F001E000F003C000F803C0007803C000780780007C0780003C07800
03C0F00003E01B207F9F1E>65 D<001FC000FFF801FFFC03E03C07800C0F00001E00003E
00003C00007C0000780000780000780000F00000F00000F00000F00000F00000F00000F0
0000F000007800007800007800007C00003C00003E00001E00000F000207800E03E03E01
FFFC00FFF0001FC017227DA01D>67 D<FFFC00FFFF80FFFFC0F007E0F001F0F000F8F000
78F0003CF0003CF0001EF0001EF0000EF0000FF0000FF0000FF0000FF0000FF0000FF000
0FF0000FF0000FF0001EF0001EF0001EF0003CF0007CF000F8F001F0F007E0FFFFC0FFFF
80FFFC0018207B9F21>I<FFFFC0FFFFC0FFFFC0F00000F00000F00000F00000F00000F0
0000F00000F00000F00000F00000F00000FFFF80FFFF80FFFF80F00000F00000F00000F0
0000F00000F00000F00000F00000F00000F00000F00000F00000FFFFE0FFFFE0FFFFE013
207B9F1B>I<FFFFC0FFFFC0FFFFC0F00000F00000F00000F00000F00000F00000F00000
F00000F00000F00000F00000FFFF00FFFF00FFFF00F00000F00000F00000F00000F00000
F00000F00000F00000F00000F00000F00000F00000F00000F00000F0000012207B9F1A>
I<001FE000FFF801FFFE03E03E07800E0F00001E00003E00003C00007C00007800007800
00780000F00000F00000F00000F00000F00000F00000F003FEF003FE7803FE78001E7800
1E7C001E3C001E3E001E1E001E0F001E07801E03E03E01FFFE00FFF8001FC017227DA01E
>I<F00078F00078F00078F00078F00078F00078F00078F00078F00078F00078F00078F0
0078F00078F00078FFFFF8FFFFF8FFFFF8F00078F00078F00078F00078F00078F00078F0
0078F00078F00078F00078F00078F00078F00078F00078F0007815207B9F20>I<F0F0F0
F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F004207C9F0D>I<
F0003EF0007CF000F8F001F0F003E0F007C0F00780F00F00F01F00F03E00F07C00F0F800
F1F000F3F800F3F800F7FC00FFBC00FF1E00FE1F00FC0F00F80780F00780F003C0F003E0
F001E0F000F0F000F8F00078F0003CF0003CF0001EF0001F18207B9F20>75
D<F00000F00000F00000F00000F00000F00000F00000F00000F00000F00000F00000F000
00F00000F00000F00000F00000F00000F00000F00000F00000F00000F00000F00000F000
00F00000F00000F00000F00000F00000FFFF80FFFF80FFFF8011207B9F19>I<F80001F8
FC0003F8FC0003F8F4000378F6000778F6000778F6000778F3000E78F3000E78F3000E78
F3801E78F3801E78F1801C78F1C03C78F1C03C78F0C03878F0C03878F0E07878F0E07878
F0607078F070F078F070F078F030E078F039E078F039E078F019C078F019C078F019C078
F00F8078F00F8078F00F8078F00000781D207B9F28>I<FC0078FE0078FE0078F60078F7
0078F70078F38078F38078F38078F3C078F1C078F1E078F1E078F0E078F0F078F07078F0
7078F07878F03878F03C78F03C78F01C78F01E78F00E78F00E78F00E78F00778F00778F0
0378F003F8F003F8F001F815207B9F20>I<003F000000FFC00003FFF00007E1F8000F80
7C001F003E001E001E003C000F003C000F00780007807800078078000780F00003C0F000
03C0F00003C0F00003C0F00003C0F00003C0F00003C0F00003C0F00003C0F80007C07800
078078000780780007803C000F003C000F001E001E001F003E000F807C0007E1F80003FF
F00000FFC000003F00001A227DA021>I<FFF800FFFF00FFFF80F00FC0F003E0F001E0F0
00F0F000F0F000F0F000F0F000F0F000F0F000F0F001E0F003E0F00FC0FFFF80FFFF00FF
F800F00000F00000F00000F00000F00000F00000F00000F00000F00000F00000F00000F0
0000F0000014207B9F1D>I<FFF800FFFF00FFFF80F007C0F003E0F001E0F000F0F000F0
F000F0F000F0F000F0F001E0F003E0F007C0FFFF80FFFF00FFF800F03C00F01E00F01E00
F00F00F00F00F00780F00780F003C0F001C0F001E0F000F0F000F0F00078F00078F0003C
16207B9F1D>82 D<01FC0007FF800FFFC01F03C03C00C03C000078000078000078000078
00007800007C00003C00003F00001FE0000FFC0007FE0001FF00003F800007C00003C000
03E00001E00001E00001E00001E00001E00001C0C003C0F007C0FC0F807FFF001FFE0003
F80013227EA019>I<FFFFFFC0FFFFFFC0FFFFFFC0001E0000001E0000001E0000001E00
00001E0000001E0000001E0000001E0000001E0000001E0000001E0000001E0000001E00
00001E0000001E0000001E0000001E0000001E0000001E0000001E0000001E0000001E00
00001E0000001E0000001E0000001E0000001E0000001E0000001E00001A207E9F1F>I<
F000F0F000F0F000F0F000F0F000F0F000F0F000F0F000F0F000F0F000F0F000F0F000F0
F000F0F000F0F000F0F000F0F000F0F000F0F000F0F000F0F000F0F000F0F000F0F000F0
F000F07801E07801E03C03C03C03C01F0F800FFF0007FE0001F80014217B9F1F>I<F000
01E0F00001E0780003C0780003C0780003C03C0007803C0007803C0007801E000F001E00
0F001F000F000F001E000F001E0007801C0007803C0007803C0003C0380003C0780003C0
780001E0700001E0F00001E0F00000F0E00000F1E00000F1E0000071C000007BC000003B
8000003B8000003F8000001F0000001F00001B207F9F1E>I<F0007C000FF0007E000FF0
007E000F78006E000E7800EE001E7800E7001E7800E7001E3C00E7003C3C01E7803C3C01
C7803C3C01C3803C1E01C380781E03C3C0781E0383C0780E0381C0700F0381C0F00F0781
E0F00F0701E0F0070700E0E0078700E1E0078F00E1E0078E00F1E0038E0071C0038E0071
C003CE0073C001DC00738001DC003B8001DC003B8001DC003B8000F8003F0000F8001F00
00F8001F0028207F9F2B>I<F80000F87C0001F03C0001E03E0003E01F0003C00F000780
0F800F8007C00F0003C01F0003E01E0001F03C0000F07C00007878000078F000003CF000
001CE000001FE000000FC000000780000007800000078000000780000007800000078000
00078000000780000007800000078000000780000007800000078000000780001D20809F
1E>89 D<FFFFF8FFFFF8FFFFF80000F00001F00001E00003C00007C0000780000F80000F
00001E00003E00003C00007C0000780000F00001F00001E00003E00003C0000780000F80
000F00001F00001E00003C00007C0000780000FFFFFCFFFFFCFFFFFC16207D9F1C>I<07
E03FF87FFC701E401F000F000F000F003F07FF1FFF7E0FF80FF00FF00FF00FF83F7FFF3F
EF1F8F10147E9316>97 D<F00000F00000F00000F00000F00000F00000F00000F00000F0
0000F00000F00000F00000F1F000F7FC00FFFE00FC3E00F80F00F00F00F00780F00780F0
0780F00780F00780F00780F00780F00F00F00F00F81F00FC3E00FFFC00F7F800F1E00011
207D9F17>I<03F00FFC1FFE3E0E3C0278007800F000F000F000F000F000F00078007800
3C013E0F1FFF0FFE03F010147E9314>I<00078000078000078000078000078000078000
078000078000078000078000078000078007C7800FF7801FFF803E1F807C0780780780F8
0780F00780F00780F00780F00780F00780F00780F00780780780780F803E1F801FFF800F
F78007C78011207E9F17>I<03F0000FFC001FFE003E1F003C0700780700700380FFFF80
FFFF80FFFF80F00000F00000F000007000007800003C01003E07001FFF0007FE0001F800
11147F9314>I<007E01FE03FE078007000F000F000F000F000F000F000F00FFF0FFF0FF
F00F000F000F000F000F000F000F000F000F000F000F000F000F000F000F000F000F000F
20809F0E>I<03E0F00FFFF01FFFF03E3E003C1E00780F00780F00780F00780F00780F00
3C1E003E3E001FFC003FF80033E0003000003800003FFE003FFF801FFFC03FFFE07803F0
F000F0F000F0F000F0F801F07E07E03FFFC00FFF0003FC00141E7F9317>I<F000F000F0
00F000F000F000F000F000F000F000F000F000F1F8F3FCF7FEFC1FF80FF80FF00FF00FF0
0FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00F10207D9F17>I<F0F0F0F00000
000000000000F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F004207D9F0B>I<01E001
E001E001E00000000000000000000000000000000001E001E001E001E001E001E001E001
E001E001E001E001E001E001E001E001E001E001E001E001E001E001E001E001E001E0C3
C0FFC0FF803F000B29839F0C>I<F00000F00000F00000F00000F00000F00000F00000F0
0000F00000F00000F00000F00000F01F00F01E00F03C00F07800F0F000F1E000F3C000F7
8000FFC000FFC000FFE000F9F000F8F000F0F800F07C00F07C00F03E00F01E00F01F00F0
0F8011207D9F16>I<F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0
F0F0F0F0F004207D9F0B>I<F0FC07E0F3FE1FF0F7FF3FF8FE0FF07CF807C03CF807C03C
F007803CF007803CF007803CF007803CF007803CF007803CF007803CF007803CF007803C
F007803CF007803CF007803CF007803CF007803C1E147D9325>I<F1F8F3FCF7FEFC1FF8
0FF80FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00F10147D9317
>I<01F80007FE001FFF803F0FC03C03C07801E07801E0F000F0F000F0F000F0F000F0F0
00F0F000F07801E07801E03C03C03F0FC01FFF8007FE0001F80014147F9317>I<F1F000
F7FC00FFFE00FC3E00F81F00F00F00F00F80F00780F00780F00780F00780F00780F00780
F00F00F00F00F81F00FC3E00FFFC00F7F800F1E000F00000F00000F00000F00000F00000
F00000F00000F00000F00000111D7D9317>I<03C7800FF7801FFF803E1F807C0F807807
80780780F00780F00780F00780F00780F00780F00780F807807807807C0F803E1F801FFF
800FF78007C780000780000780000780000780000780000780000780000780000780111D
7E9317>I<F0E0F3E0F7E0FF00FC00FC00F800F800F000F000F000F000F000F000F000F0
00F000F000F000F0000B147D9310>I<07F01FFC3FFC780C7800780078007C003FC01FF0
0FF803F8007C003C003CC03CF07CFFF87FF00FC00E147F9311>I<1E001E001E001E001E
001E00FFF0FFF0FFF01E001E001E001E001E001E001E001E001E001E001E001E001E001E
201FF00FF007C00C1A7F9910>I<F00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00F
F00FF00FF00FF00FF01FF03FFFFF7FEF3F0F10147D9317>I<F003C0F003C07803807807
807807803C0F003C0F003C0F001E0E001E1E001E1E000F1C000F3C000F3C000738000738
0007B80003F00003F00001E00012147F9315>I<F01F00F0F01F80F0F01F80F0781B81E0
783B81E0783BC1E07839C1E03C31C3C03C71C3C03C71E3C01C70E3801E60E7801E60E780
1EE0E7800EE077000EC077000EC0770007C07E0007C03E0007803E001C147F931F>I<78
01E07C03C03E07801E0F000F0F00079E0003FC0003F80001F80000F00001F00001F80003
FC00079E000F0F000E0F001E07803C03C07801E0F801F01414809315>I<F003C0F003C0
7807807807807C07803C0F003C0F001E0F001E1E000E1E000F1C000F1C00073C00073800
03B80003B80003B00001F00001F00000E00000E00001C00001C00001C000038000078000
7F00007E00007C0000121D7F9315>I E /Fn 1 16 df<03C00FF01FF83FFC7FFE7FFEFF
FFFFFFFFFFFFFFFFFFFFFF7FFE7FFE3FFC1FF80FF003C010127D9317>15
D E /Fo 18 122 df<FFFFFFFFFFFFE00000FFFFFFFFFFFFFE0000FFFFFFFFFFFFFFC000
FFFFFFFFFFFFFFF000FFFFFFFFFFFFFFF800001FFF800001FFFE00001FFF8000007FFF00
001FFF8000003FFF80001FFF8000001FFFC0001FFF8000000FFFC0001FFF80000007FFE0
001FFF80000007FFF0001FFF80000007FFF0001FFF80000003FFF0001FFF80000003FFF8
001FFF80000003FFF8001FFF80000003FFF8001FFF80000003FFF8001FFF80000003FFF8
001FFF80000003FFF8001FFF80000003FFF8001FFF80000003FFF8001FFF80000003FFF0
001FFF80000007FFF0001FFF80000007FFE0001FFF8000000FFFE0001FFF8000000FFFC0
001FFF8000001FFF80001FFF8000003FFF00001FFF8000007FFE00001FFF800001FFFC00
001FFF800007FFF000001FFFFFFFFFFFC000001FFFFFFFFFFE0000001FFFFFFFFFFF8000
001FFFFFFFFFFFF000001FFF800000FFFC00001FFF8000003FFF00001FFF8000000FFFC0
001FFF80000007FFE0001FFF80000003FFF0001FFF80000003FFF8001FFF80000001FFF8
001FFF80000001FFFC001FFF80000000FFFC001FFF80000000FFFE001FFF80000000FFFE
001FFF80000000FFFE001FFF80000000FFFF001FFF800000007FFF001FFF800000007FFF
001FFF800000007FFF001FFF800000007FFF001FFF80000000FFFF001FFF80000000FFFF
001FFF80000000FFFF001FFF80000000FFFE001FFF80000000FFFE001FFF80000001FFFE
001FFF80000001FFFC001FFF80000003FFFC001FFF80000007FFF8001FFF80000007FFF0
001FFF8000001FFFE0001FFF8000003FFFE0001FFF800001FFFF80FFFFFFFFFFFFFFFF00
FFFFFFFFFFFFFFFC00FFFFFFFFFFFFFFF000FFFFFFFFFFFFFFC000FFFFFFFFFFFFF80000
48477CC654>66 D<FFFFFFFFFFFFC0000000FFFFFFFFFFFFFE000000FFFFFFFFFFFFFFC0
0000FFFFFFFFFFFFFFF00000FFFFFFFFFFFFFFFC0000001FFF800007FFFF0000001FFF80
00007FFF8000001FFF8000000FFFE000001FFF80000007FFF000001FFF80000001FFF800
001FFF80000000FFFC00001FFF800000007FFE00001FFF800000003FFF00001FFF800000
001FFF00001FFF800000000FFF80001FFF800000000FFFC0001FFF8000000007FFC0001F
FF8000000007FFE0001FFF8000000003FFE0001FFF8000000003FFF0001FFF8000000003
FFF0001FFF8000000003FFF8001FFF8000000001FFF8001FFF8000000001FFF8001FFF80
00000001FFFC001FFF8000000001FFFC001FFF8000000001FFFC001FFF8000000001FFFC
001FFF8000000001FFFC001FFF8000000001FFFE001FFF8000000000FFFE001FFF800000
0000FFFE001FFF8000000000FFFE001FFF8000000000FFFE001FFF8000000000FFFE001F
FF8000000000FFFE001FFF8000000000FFFE001FFF8000000000FFFE001FFF8000000000
FFFE001FFF8000000000FFFE001FFF8000000000FFFE001FFF8000000000FFFE001FFF80
00000001FFFE001FFF8000000001FFFC001FFF8000000001FFFC001FFF8000000001FFFC
001FFF8000000001FFFC001FFF8000000001FFF8001FFF8000000001FFF8001FFF800000
0001FFF8001FFF8000000003FFF0001FFF8000000003FFF0001FFF8000000003FFF0001F
FF8000000007FFE0001FFF8000000007FFE0001FFF800000000FFFC0001FFF800000000F
FF80001FFF800000001FFF80001FFF800000003FFF00001FFF800000003FFE00001FFF80
0000007FFC00001FFF80000001FFF800001FFF80000003FFF000001FFF8000000FFFE000
001FFF8000007FFFC000001FFF800003FFFF0000FFFFFFFFFFFFFFFE0000FFFFFFFFFFFF
FFF80000FFFFFFFFFFFFFFC00000FFFFFFFFFFFFFE000000FFFFFFFFFFFFC00000004F47
7CC65B>68 D<FFFFFFFFFFFF800000FFFFFFFFFFFFFC0000FFFFFFFFFFFFFF0000FFFFFF
FFFFFFFFC000FFFFFFFFFFFFFFF000001FFF80000FFFFC00001FFF800001FFFE00001FFF
8000007FFF00001FFF8000003FFF80001FFF8000001FFFC0001FFF8000000FFFC0001FFF
8000000FFFE0001FFF8000000FFFE0001FFF80000007FFF0001FFF80000007FFF0001FFF
80000007FFF0001FFF80000007FFF8001FFF80000007FFF8001FFF80000007FFF8001FFF
80000007FFF8001FFF80000007FFF8001FFF80000007FFF8001FFF80000007FFF8001FFF
80000007FFF8001FFF80000007FFF0001FFF80000007FFF0001FFF80000007FFF0001FFF
8000000FFFE0001FFF8000000FFFE0001FFF8000000FFFC0001FFF8000001FFF80001FFF
8000003FFF80001FFF8000007FFF00001FFF800001FFFE00001FFF80000FFFF800001FFF
FFFFFFFFF000001FFFFFFFFFFFC000001FFFFFFFFFFE0000001FFFFFFFFFF00000001FFF
C00000000000001FFFC00000000000001FFFC00000000000001FFFC00000000000001FFF
C00000000000001FFFC00000000000001FFFC00000000000001FFFC00000000000001FFF
C00000000000001FFFC00000000000001FFFC00000000000001FFFC00000000000001FFF
C00000000000001FFFC00000000000001FFFC00000000000001FFFC00000000000001FFF
C00000000000001FFFC00000000000001FFFC00000000000001FFFC00000000000001FFF
C00000000000001FFFC00000000000001FFFC00000000000001FFFC00000000000001FFF
C00000000000001FFFC00000000000001FFFC00000000000FFFFFFFFF800000000FFFFFF
FFF800000000FFFFFFFFF800000000FFFFFFFFF800000000FFFFFFFFF80000000045477C
C651>80 D<0007FFFC000000007FFFFFC0000001FFFFFFF8000003FFFFFFFE000007FE00
1FFF000007FF0003FFC0000FFF8001FFE0000FFF8000FFF0000FFF80007FF0000FFF8000
7FF8000FFF80007FF80007FF00003FFC0007FF00003FFC0003FE00003FFC0000F800003F
FC00000000003FFC00000000003FFC00000000003FFC00000000003FFC00000007FFFFFC
000000FFFFFFFC000007FFFFFFFC00003FFFE03FFC0000FFFE003FFC0003FFF0003FFC00
07FFC0003FFC000FFF00003FFC001FFE00003FFC003FFC00003FFC007FF800003FFC007F
F800003FFC00FFF000003FFC00FFF000003FFC00FFF000003FFC00FFF000003FFC00FFF0
00003FFC00FFF000007FFC007FF80000FFFC007FF80001EFFC003FFC0003EFFC003FFF00
07CFFF000FFFC03F8FFFF807FFFFFF07FFFC01FFFFFC03FFFC007FFFF001FFFC0003FF80
007FF8362E7DAD3A>97 D<007FC00000000000FFFFC00000000000FFFFC00000000000FF
FFC00000000000FFFFC00000000000FFFFC0000000000003FFC0000000000001FFC00000
00000001FFC0000000000001FFC0000000000001FFC0000000000001FFC0000000000001
FFC0000000000001FFC0000000000001FFC0000000000001FFC0000000000001FFC00000
00000001FFC0000000000001FFC0000000000001FFC0000000000001FFC0000000000001
FFC0000000000001FFC0000000000001FFC0000000000001FFC0000000000001FFC00000
00000001FFC00FFC00000001FFC07FFFC0000001FFC3FFFFF0000001FFCFFFFFFC000001
FFDFF00FFF000001FFFF8003FF800001FFFE0001FFC00001FFF800007FE00001FFF00000
7FF00001FFE000003FF80001FFE000001FFC0001FFE000001FFC0001FFE000001FFE0001
FFE000001FFE0001FFE000000FFF0001FFE000000FFF0001FFE000000FFF0001FFE00000
0FFF0001FFE000000FFF8001FFE000000FFF8001FFE000000FFF8001FFE000000FFF8001
FFE000000FFF8001FFE000000FFF8001FFE000000FFF8001FFE000000FFF8001FFE00000
0FFF8001FFE000000FFF8001FFE000000FFF0001FFE000000FFF0001FFE000000FFF0001
FFE000001FFE0001FFE000001FFE0001FFE000001FFC0001FFE000001FFC0001FFE00000
3FF80001FFF000003FF80001FFF800007FF00001FFFC0000FFE00001FFFE0001FFC00001
FFBF0007FF800001FF1FE01FFE000001FE0FFFFFFC000001FC03FFFFF0000001F800FFFF
80000001F0001FF800000039487CC742>I<00001FFFC0000000FFFFF8000007FFFFFE00
001FFFFFFF80007FFC00FFC000FFE001FFC001FFC003FFE003FF8003FFE007FF0003FFE0
0FFE0003FFE00FFE0003FFE01FFC0001FFC01FFC0001FFC03FFC0000FF803FFC00003E00
7FF8000000007FF8000000007FF800000000FFF800000000FFF800000000FFF800000000
FFF800000000FFF800000000FFF800000000FFF800000000FFF800000000FFF800000000
FFF8000000007FF8000000007FF8000000007FFC000000003FFC000000003FFC00000000
1FFC000000F81FFE000000F80FFE000000F80FFF000001F007FF800003F003FFC00007E0
01FFE0000FC000FFF0001F80007FFE00FF00001FFFFFFE000007FFFFF8000000FFFFE000
00001FFE00002D2E7CAD35>I<00001FFE00000001FFFFE0000007FFFFF800001FFFFFFE
00007FFC07FF0000FFE001FF8001FFC0007FC003FF80003FE007FF00003FF00FFE00001F
F01FFE00000FF81FFC00000FF83FFC00000FFC3FFC000007FC7FFC000007FC7FF8000007
FC7FF8000007FE7FF8000007FEFFF8000007FEFFF8000007FEFFFFFFFFFFFEFFFFFFFFFF
FEFFFFFFFFFFFEFFFFFFFFFFFCFFF800000000FFF800000000FFF800000000FFF8000000
007FF8000000007FF8000000007FFC000000003FFC000000003FFC000000003FFC000000
1C1FFE0000003E0FFE0000003E07FF0000007E07FF000000FC03FF800001F801FFC00003
F0007FF0001FE0003FFE00FFC0001FFFFFFF800007FFFFFE000000FFFFF80000000FFF80
002F2E7DAD36>101 D<00000000001F8000007FF000FFE00007FFFF03FFF0001FFFFFC7
FFF0007FFFFFFFC7F800FFE03FFE0FF801FF800FFC0FF803FF0007FE0FF807FE0003FF07
F007FE0003FF07F00FFC0001FF81C00FFC0001FF80000FFC0001FF80001FFC0001FFC000
1FFC0001FFC0001FFC0001FFC0001FFC0001FFC0001FFC0001FFC0001FFC0001FFC0000F
FC0001FF80000FFC0001FF80000FFC0001FF800007FE0003FF000007FE0003FF000003FF
0007FE000001FF800FFC000000FFE03FF8000001FFFFFFF0000001DFFFFFC0000003C7FF
FF00000003C07FF000000007C0000000000007C0000000000007C0000000000007C00000
00000007E0000000000007F0000000000007F8000000000007FFFFFFF0000007FFFFFFFF
000003FFFFFFFFE00003FFFFFFFFF80001FFFFFFFFFE0001FFFFFFFFFF0000FFFFFFFFFF
80007FFFFFFFFF8003FFFFFFFFFFC00FFFFFFFFFFFC01FF800001FFFE03FE0000001FFE0
7FC00000007FF07FC00000003FF0FF800000001FF0FF800000001FF0FF800000001FF0FF
800000001FF0FF800000001FF07FC00000003FE07FC00000003FE03FE00000007FC03FF0
000000FFC01FFC000003FF800FFF00000FFF0003FFF000FFFC0000FFFFFFFFF000003FFF
FFFFC0000007FFFFFE000000003FFFC0000035447DAE3B>103 D<007FC00000000000FF
FFC00000000000FFFFC00000000000FFFFC00000000000FFFFC00000000000FFFFC00000
00000003FFC0000000000001FFC0000000000001FFC0000000000001FFC0000000000001
FFC0000000000001FFC0000000000001FFC0000000000001FFC0000000000001FFC00000
00000001FFC0000000000001FFC0000000000001FFC0000000000001FFC0000000000001
FFC0000000000001FFC0000000000001FFC0000000000001FFC0000000000001FFC00000
00000001FFC0000000000001FFC0000000000001FFC001FFC0000001FFC00FFFF8000001
FFC03FFFFE000001FFC0FFFFFF000001FFC1FC07FF800001FFC3E003FFC00001FFC7C001
FFC00001FFCF0001FFE00001FFDE0000FFE00001FFDC0000FFE00001FFFC0000FFF00001
FFF80000FFF00001FFF00000FFF00001FFF00000FFF00001FFF00000FFF00001FFE00000
FFF00001FFE00000FFF00001FFE00000FFF00001FFE00000FFF00001FFE00000FFF00001
FFE00000FFF00001FFE00000FFF00001FFE00000FFF00001FFE00000FFF00001FFE00000
FFF00001FFE00000FFF00001FFE00000FFF00001FFE00000FFF00001FFE00000FFF00001
FFE00000FFF00001FFE00000FFF00001FFE00000FFF00001FFE00000FFF00001FFE00000
FFF00001FFE00000FFF00001FFE00000FFF00001FFE00000FFF00001FFE00000FFF00001
FFE00000FFF00001FFE00000FFF00001FFE00000FFF000FFFFFFC07FFFFFE0FFFFFFC07F
FFFFE0FFFFFFC07FFFFFE0FFFFFFC07FFFFFE0FFFFFFC07FFFFFE03B487CC742>I<00FC
0001FE0003FF0007FF800FFFC01FFFE01FFFE01FFFE01FFFE01FFFE01FFFE00FFFC007FF
8003FF0001FE0000FC000000000000000000000000000000000000000000000000000000
00000000000000007FC0FFFFC0FFFFC0FFFFC0FFFFC0FFFFC003FFC001FFC001FFC001FF
C001FFC001FFC001FFC001FFC001FFC001FFC001FFC001FFC001FFC001FFC001FFC001FF
C001FFC001FFC001FFC001FFC001FFC001FFC001FFC001FFC001FFC001FFC001FFC001FF
C001FFC001FFC001FFC001FFC001FFC001FFC001FFC0FFFFFFFFFFFFFFFFFFFFFFFFFFFF
FF18497CC820>I<007FC000FFFFC000FFFFC000FFFFC000FFFFC000FFFFC00003FFC000
01FFC00001FFC00001FFC00001FFC00001FFC00001FFC00001FFC00001FFC00001FFC000
01FFC00001FFC00001FFC00001FFC00001FFC00001FFC00001FFC00001FFC00001FFC000
01FFC00001FFC00001FFC00001FFC00001FFC00001FFC00001FFC00001FFC00001FFC000
01FFC00001FFC00001FFC00001FFC00001FFC00001FFC00001FFC00001FFC00001FFC000
01FFC00001FFC00001FFC00001FFC00001FFC00001FFC00001FFC00001FFC00001FFC000
01FFC00001FFC00001FFC00001FFC00001FFC00001FFC00001FFC00001FFC00001FFC000
01FFC00001FFC00001FFC00001FFC00001FFC00001FFC000FFFFFF80FFFFFF80FFFFFF80
FFFFFF80FFFFFF8019487CC720>108 D<007FC001FFC00000FFE00000FFFFC00FFFF800
07FFFC0000FFFFC03FFFFE001FFFFF0000FFFFC0FFFFFF007FFFFF8000FFFFC1FC07FF80
FE03FFC000FFFFC3E003FFC1F001FFE00003FFC7C001FFC3E000FFE00001FFCF0001FFE7
8000FFF00001FFDE0000FFEF00007FF00001FFDC0000FFEE00007FF00001FFFC0000FFFE
00007FF80001FFF80000FFFC00007FF80001FFF00000FFF800007FF80001FFF00000FFF8
00007FF80001FFF00000FFF800007FF80001FFE00000FFF000007FF80001FFE00000FFF0
00007FF80001FFE00000FFF000007FF80001FFE00000FFF000007FF80001FFE00000FFF0
00007FF80001FFE00000FFF000007FF80001FFE00000FFF000007FF80001FFE00000FFF0
00007FF80001FFE00000FFF000007FF80001FFE00000FFF000007FF80001FFE00000FFF0
00007FF80001FFE00000FFF000007FF80001FFE00000FFF000007FF80001FFE00000FFF0
00007FF80001FFE00000FFF000007FF80001FFE00000FFF000007FF80001FFE00000FFF0
00007FF80001FFE00000FFF000007FF80001FFE00000FFF000007FF80001FFE00000FFF0
00007FF80001FFE00000FFF000007FF80001FFE00000FFF000007FF80001FFE00000FFF0
00007FF80001FFE00000FFF000007FF80001FFE00000FFF000007FF80001FFE00000FFF0
00007FF800FFFFFFC07FFFFFE03FFFFFF0FFFFFFC07FFFFFE03FFFFFF0FFFFFFC07FFFFF
E03FFFFFF0FFFFFFC07FFFFFE03FFFFFF0FFFFFFC07FFFFFE03FFFFFF05C2E7CAD63>I<
007FC001FFC00000FFFFC00FFFF80000FFFFC03FFFFE0000FFFFC0FFFFFF0000FFFFC1FC
07FF8000FFFFC3E003FFC00003FFC7C001FFC00001FFCF0001FFE00001FFDE0000FFE000
01FFDC0000FFE00001FFFC0000FFF00001FFF80000FFF00001FFF00000FFF00001FFF000
00FFF00001FFF00000FFF00001FFE00000FFF00001FFE00000FFF00001FFE00000FFF000
01FFE00000FFF00001FFE00000FFF00001FFE00000FFF00001FFE00000FFF00001FFE000
00FFF00001FFE00000FFF00001FFE00000FFF00001FFE00000FFF00001FFE00000FFF000
01FFE00000FFF00001FFE00000FFF00001FFE00000FFF00001FFE00000FFF00001FFE000
00FFF00001FFE00000FFF00001FFE00000FFF00001FFE00000FFF00001FFE00000FFF000
01FFE00000FFF00001FFE00000FFF00001FFE00000FFF00001FFE00000FFF00001FFE000
00FFF000FFFFFFC07FFFFFE0FFFFFFC07FFFFFE0FFFFFFC07FFFFFE0FFFFFFC07FFFFFE0
FFFFFFC07FFFFFE03B2E7CAD42>I<00000FFF0000000000FFFFF000000007FFFFFE0000
001FFFFFFF8000003FFC03FFC00000FFE0007FF00001FF80001FF80003FF00000FFC0007
FE000007FE000FFE000007FF000FFC000003FF001FFC000003FF803FFC000003FFC03FF8
000001FFC03FF8000001FFC07FF8000001FFE07FF8000001FFE07FF8000001FFE0FFF800
0001FFF0FFF8000001FFF0FFF8000001FFF0FFF8000001FFF0FFF8000001FFF0FFF80000
01FFF0FFF8000001FFF0FFF8000001FFF0FFF8000001FFF0FFF8000001FFF07FF8000001
FFE07FF8000001FFE07FF8000001FFE07FF8000001FFE03FFC000003FFC03FFC000003FF
C01FFC000003FF801FFE000007FF800FFE000007FF0007FF00000FFE0003FF80001FFC00
01FFC0003FF80000FFE0007FF000007FFC03FFE000001FFFFFFF80000007FFFFFE000000
00FFFFF0000000000FFF000000342E7DAD3B>I<007FC00FFC000000FFFFC07FFFC00000
FFFFC3FFFFF00000FFFFCFFFFFFC0000FFFFDFF01FFF0000FFFFFF8007FF800003FFFE00
01FFC00001FFF80000FFE00001FFF00000FFF00001FFE000007FF80001FFE000003FFC00
01FFE000003FFC0001FFE000003FFE0001FFE000001FFE0001FFE000001FFF0001FFE000
001FFF0001FFE000001FFF0001FFE000000FFF0001FFE000000FFF8001FFE000000FFF80
01FFE000000FFF8001FFE000000FFF8001FFE000000FFF8001FFE000000FFF8001FFE000
000FFF8001FFE000000FFF8001FFE000000FFF8001FFE000000FFF8001FFE000000FFF00
01FFE000001FFF0001FFE000001FFF0001FFE000001FFE0001FFE000001FFE0001FFE000
003FFC0001FFE000003FFC0001FFE000007FF80001FFF000007FF80001FFF80000FFF000
01FFFC0001FFE00001FFFE0003FFC00001FFFF0007FF800001FFFFE03FFE000001FFEFFF
FFFC000001FFE3FFFFF0000001FFE0FFFF80000001FFE01FF800000001FFE00000000000
01FFE0000000000001FFE0000000000001FFE0000000000001FFE0000000000001FFE000
0000000001FFE0000000000001FFE0000000000001FFE0000000000001FFE00000000000
01FFE0000000000001FFE0000000000001FFE0000000000001FFE0000000000001FFE000
00000000FFFFFFC000000000FFFFFFC000000000FFFFFFC000000000FFFFFFC000000000
FFFFFFC00000000039427CAD42>I<00FF803F8000FFFF80FFF000FFFF83FFFC00FFFF87
FFFE00FFFF8FC3FF00FFFF8F07FF0003FF9E0FFF8001FFBC0FFF8001FFB80FFF8001FFF8
0FFF8001FFF00FFF8001FFF007FF0001FFF007FF0001FFE003FE0001FFE000F80001FFE0
00000001FFE000000001FFC000000001FFC000000001FFC000000001FFC000000001FFC0
00000001FFC000000001FFC000000001FFC000000001FFC000000001FFC000000001FFC0
00000001FFC000000001FFC000000001FFC000000001FFC000000001FFC000000001FFC0
00000001FFC000000001FFC000000001FFC000000001FFC000000001FFC000000001FFC0
00000001FFC0000000FFFFFFE00000FFFFFFE00000FFFFFFE00000FFFFFFE00000FFFFFF
E00000292E7CAD31>114 D<000FFF00E0007FFFF3E001FFFFFFE007FFFFFFE00FF800FF
E01FC0001FE03F80000FE03F000007E07F000003E07F000003E0FF000003E0FF000003E0
FF800003E0FFC0000000FFF0000000FFFE000000FFFFF800007FFFFFC0007FFFFFF0003F
FFFFFC001FFFFFFF000FFFFFFF8007FFFFFFC003FFFFFFE000FFFFFFF0003FFFFFF00003
FFFFF800001FFFF8000000FFFC0000001FFC7800000FFCF8000007FCF8000003FCFC0000
03FCFC000003FCFE000003F8FE000003F8FF000003F8FF800007F0FFC0000FF0FFF0001F
E0FFFC00FFC0FFFFFFFF80FC7FFFFE00F81FFFF800E003FF8000262E7CAD2F>I<7FFFFF
C000FFFF807FFFFFC000FFFF807FFFFFC000FFFF807FFFFFC000FFFF807FFFFFC000FFFF
8000FFF000000FE00000FFF800000FC00000FFF800000FC000007FFC00000F8000007FFC
00001F8000003FFC00001F0000003FFE00003F0000001FFE00003E0000001FFF00007E00
00000FFF00007C0000000FFF8000FC00000007FF8000F800000007FFC001F800000003FF
C001F000000003FFE003F000000003FFE003F000000001FFF003E000000001FFF007E000
000000FFF007C000000000FFF80FC0000000007FF80F80000000007FFC1F80000000003F
FC1F00000000003FFE3F00000000001FFE3E00000000001FFF7E00000000000FFF7C0000
0000000FFFFC00000000000FFFFC000000000007FFF8000000000007FFF8000000000003
FFF0000000000003FFF0000000000001FFE0000000000001FFE0000000000000FFC00000
00000000FFC00000000000007F800000000000007F800000000000003F00000000000000
3F000000000000003F000000000000003E000000000000007E000000000000007C000000
00000000FC000000001F8000F8000000003FC001F8000000007FE001F000000000FFF003
F000000000FFF003E000000000FFF007E000000000FFF00FC000000000FFF01F80000000
00FFF03F80000000007FE07F00000000007F43FE00000000003FFFF800000000001FFFF0
000000000007FFC0000000000001FE00000000000039427EAD3F>121
D E /Fp 8 117 df<00001E000000003E00000000FE00000003FE0000003FFE0000FFFF
FE0000FFFFFE0000FFFFFE0000FFCFFE0000000FFE0000000FFE0000000FFE0000000FFE
0000000FFE0000000FFE0000000FFE0000000FFE0000000FFE0000000FFE0000000FFE00
00000FFE0000000FFE0000000FFE0000000FFE0000000FFE0000000FFE0000000FFE0000
000FFE0000000FFE0000000FFE0000000FFE0000000FFE0000000FFE0000000FFE000000
0FFE0000000FFE0000000FFE0000000FFE0000000FFE0000000FFE0000000FFE0000000F
FE0000000FFE0000000FFE0000000FFE0000000FFE0000000FFE0000000FFE0000000FFE
0000000FFE0000000FFE0000000FFE00007FFFFFFFC07FFFFFFFC07FFFFFFFC07FFFFFFF
C0223879B731>49 D<0000001FFF000030000001FFFFE000F000000FFFFFFC01F000007F
FFFFFE03F00001FFFE007F87F00003FFE0000FCFF0000FFF000003FFF0001FFC000001FF
F0003FF80000007FF0007FF00000003FF000FFC00000003FF001FFC00000001FF003FF80
0000000FF007FF000000000FF00FFF0000000007F00FFE0000000007F01FFE0000000003
F01FFE0000000003F03FFC0000000003F03FFC0000000001F03FFC0000000001F07FFC00
00000001F07FF80000000001F07FF80000000000007FF8000000000000FFF80000000000
00FFF8000000000000FFF8000000000000FFF8000000000000FFF8000000000000FFF800
0000000000FFF8000000000000FFF8000000000000FFF8000000000000FFF80000000000
00FFF80000000000007FF80000000000007FF80000000000007FF80000000000007FFC00
00000000F03FFC0000000000F03FFC0000000000F03FFC0000000000F01FFE0000000000
F01FFE0000000001E00FFE0000000001E00FFF0000000001E007FF0000000003C003FF80
00000003C001FFC0000000078000FFE00000000F00007FF00000001F00003FF80000003E
00001FFC0000007C00000FFF000001F8000003FFE00007F0000001FFFE003FC00000007F
FFFFFF000000000FFFFFFC0000000001FFFFF000000000001FFF0000003C3D7BBB47>67
D<001FFF00000001FFFFF0000003FFFFFC000007F007FE00000FF801FF00001FFC00FF80
001FFC007FC0001FFC007FE0001FFC003FE0000FF8003FF0000FF8003FF00007F0003FF0
0001C0003FF0000000003FF0000000003FF0000000003FF0000000FFFFF000000FFFFFF0
00007FF83FF00001FF803FF00007FE003FF0000FF8003FF0001FF0003FF0003FE0003FF0
007FE0003FF0007FE0003FF000FFC0003FF000FFC0003FF000FFC0003FF000FFC0003FF0
00FFC0007FF0007FE0007FF0007FE000DFF0003FF0039FF8001FFC0F0FFFF007FFFE0FFF
F001FFFC07FFF0003FE000FFF02C267DA530>97 D<0001FFC000000FFFF800003FFFFE00
00FF80FF0001FE003F8007FC001FC00FF8000FE00FF8000FF01FF00007F03FF00007F83F
F00007F87FE00007F87FE00003FC7FE00003FC7FE00003FCFFE00003FCFFFFFFFFFCFFFF
FFFFFCFFFFFFFFFCFFE0000000FFE0000000FFE0000000FFE00000007FE00000007FE000
00007FE00000003FE00000003FF000003C1FF000003C1FF000003C0FF800007807FC0000
F803FE0001F001FF0007E000FFC03FC0003FFFFF000007FFFC000000FFE00026267DA52D
>101 D<00FF00000000FFFF00000000FFFF00000000FFFF00000000FFFF0000000007FF
0000000003FF0000000003FF0000000003FF0000000003FF0000000003FF0000000003FF
0000000003FF0000000003FF0000000003FF0000000003FF0000000003FF0000000003FF
0000000003FF0000000003FF0000000003FF0000000003FF0000000003FF007FC00003FF
01FFF80003FF07FFFC0003FF0F03FE0003FF1C01FF0003FF3001FF8003FF6000FF8003FF
E000FFC003FFC000FFC003FF8000FFC003FF8000FFC003FF8000FFC003FF0000FFC003FF
0000FFC003FF0000FFC003FF0000FFC003FF0000FFC003FF0000FFC003FF0000FFC003FF
0000FFC003FF0000FFC003FF0000FFC003FF0000FFC003FF0000FFC003FF0000FFC003FF
0000FFC003FF0000FFC003FF0000FFC003FF0000FFC003FF0000FFC003FF0000FFC003FF
0000FFC003FF0000FFC003FF0000FFC0FFFFFC3FFFFFFFFFFC3FFFFFFFFFFC3FFFFFFFFF
FC3FFFFF303C7CBB37>104 D<00FF01FF8000FFFF0FFFF000FFFF3FFFFC00FFFFFE03FF
00FFFFF000FF8003FFC0007FC003FF80003FE003FF00003FF003FF00001FF803FF00001F
FC03FF00000FFC03FF00000FFE03FF00000FFE03FF000007FE03FF000007FF03FF000007
FF03FF000007FF03FF000007FF03FF000007FF03FF000007FF03FF000007FF03FF000007
FF03FF000007FF03FF000007FE03FF000007FE03FF00000FFE03FF00000FFC03FF00000F
FC03FF00001FF803FF00001FF803FF00003FF003FF80003FE003FFC0007FC003FFF001FF
8003FFFC07FF0003FF3FFFFC0003FF0FFFF00003FF01FF000003FF0000000003FF000000
0003FF0000000003FF0000000003FF0000000003FF0000000003FF0000000003FF000000
0003FF0000000003FF0000000003FF0000000003FF0000000003FF00000000FFFFFC0000
00FFFFFC000000FFFFFC000000FFFFFC00000030377DA537>112
D<00FE03F000FFFE0FFE00FFFE1FFF00FFFE3C3F80FFFE707FC007FE60FFE003FEE0FFE0
03FEC0FFE003FFC0FFE003FF807FC003FF807FC003FF803F8003FF800E0003FF00000003
FF00000003FF00000003FF00000003FF00000003FF00000003FF00000003FF00000003FF
00000003FF00000003FF00000003FF00000003FF00000003FF00000003FF00000003FF00
000003FF00000003FF00000003FF00000003FF00000003FF000000FFFFFE0000FFFFFE00
00FFFFFE0000FFFFFE000023267DA529>114 D<00078000000780000007800000078000
00078000000F8000000F8000000F8000000F8000001F8000001F8000003F8000003F8000
007F800000FF800001FF800007FF80001FFFFFF0FFFFFFF0FFFFFFF0FFFFFFF001FF8000
01FF800001FF800001FF800001FF800001FF800001FF800001FF800001FF800001FF8000
01FF800001FF800001FF800001FF800001FF800001FF800001FF800001FF800001FF8000
01FF803C01FF803C01FF803C01FF803C01FF803C01FF803C01FF803C01FF803C00FF8078
00FFC078007FC070003FE0E0001FFFC00007FF800001FF001E377EB626>116
D E /Fq 77 123 df<001F83E000F06E3001C078780380F8780300F03007007000070070
000700700007007000070070000700700007007000FFFFFF800700700007007000070070
000700700007007000070070000700700007007000070070000700700007007000070070
000700700007007000070070000700700007007000070070007FE3FF001D20809F1B>11
D<003F0000E0C001C0C00381E00701E00701E00700000700000700000700000700000700
00FFFFE00700E00700E00700E00700E00700E00700E00700E00700E00700E00700E00700
E00700E00700E00700E00700E00700E00700E00700E07FC3FE1720809F19>I<003FE000
E0E001C1E00381E00700E00700E00700E00700E00700E00700E00700E00700E0FFFFE007
00E00700E00700E00700E00700E00700E00700E00700E00700E00700E00700E00700E007
00E00700E00700E00700E00700E00700E07FE7FE1720809F19>I<001F81F80000F04F04
0001C07C06000380F80F000300F00F000700F00F00070070000007007000000700700000
070070000007007000000700700000FFFFFFFF0007007007000700700700070070070007
007007000700700700070070070007007007000700700700070070070007007007000700
700700070070070007007007000700700700070070070007007007000700700700070070
07007FE3FE3FF02420809F26>I<70F8F8F8F8F8F8F87070707070707070707020202020
20000000000070F8F8F87005217CA00D>33 D<7038F87CFC7EFC7E743A04020402040208
04080410081008201040200F0E7E9F17>I<70F8FCFC74040404080810102040060E7C9F
0D>39 D<0020004000800100020006000C000C0018001800300030003000700060006000
6000E000E000E000E000E000E000E000E000E000E000E000E00060006000600070003000
30003000180018000C000C000600020001000080004000200B2E7DA112>I<8000400020
00100008000C00060006000300030001800180018001C000C000C000C000E000E000E000
E000E000E000E000E000E000E000E000E000C000C000C001C00180018001800300030006
0006000C00080010002000400080000B2E7DA112>I<70F8FCFC74040404080810102040
060E7C840D>44 D<FFC0FFC00A027F8A0F>I<70F8F8F87005057C840D>I<000100030003
000600060006000C000C000C00180018001800300030003000600060006000C000C000C0
0180018001800300030003000600060006000C000C000C00180018001800300030003000
600060006000C000C000C000102D7DA117>I<03F0000E1C001C0E001806003807007003
80700380700380700380F003C0F003C0F003C0F003C0F003C0F003C0F003C0F003C0F003
C0F003C0F003C0F003C0F003C07003807003807003807807803807001806001C0E000E1C
0003F000121F7E9D17>I<018003800F80F3800380038003800380038003800380038003
8003800380038003800380038003800380038003800380038003800380038007C0FFFE0F
1E7C9D17>I<03F0000C1C00100E00200700400780800780F007C0F803C0F803C0F803C0
2007C00007C0000780000780000F00000E00001C0000380000700000600000C000018000
0300000600400C00401800401000803FFF807FFF80FFFF80121E7E9D17>I<03F0000C1C
00100E00200F00780F80780780780780380F80000F80000F00000F00000E00001C000038
0003F000003C00000E00000F000007800007800007C02007C0F807C0F807C0F807C0F007
80400780400F00200E001C3C0003F000121F7E9D17>I<000600000600000E00000E0000
1E00002E00002E00004E00008E00008E00010E00020E00020E00040E00080E00080E0010
0E00200E00200E00400E00C00E00FFFFF0000E00000E00000E00000E00000E00000E0000
0E0000FFE0141E7F9D17>I<1803001FFE001FFC001FF8001FE000100000100000100000
10000010000010000011F000161C00180E001007001007800003800003800003C00003C0
0003C07003C0F003C0F003C0E00380400380400700200600100E000C380003E000121F7E
9D17>I<007C000182000701000E03800C07801C07803803003800007800007000007000
00F1F000F21C00F40600F80700F80380F80380F003C0F003C0F003C0F003C0F003C07003
C07003C07003803803803807001807000C0E00061C0001F000121F7E9D17>I<4000007F
FFC07FFF807FFF8040010080020080020080040000080000080000100000200000200000
400000400000C00000C00001C00001800003800003800003800003800007800007800007
8000078000078000078000078000030000121F7D9D17>I<03F0000C0C00100600300300
2001806001806001806001807001807803003E03003F06001FC8000FF00003F80007FC00
0C7E00103F00300F806003804001C0C001C0C000C0C000C0C000C0C00080600180200100
1002000C0C0003F000121F7E9D17>I<03F0000E18001C0C003806003807007007007003
80F00380F00380F003C0F003C0F003C0F003C0F003C07007C07007C03807C0180BC00E13
C003E3C0000380000380000380000700300700780600780E00700C002018001070000FC0
00121F7E9D17>I<70F8F8F8700000000000000000000070F8F8F87005147C930D>I<70F8
F8F8700000000000000000000070F0F8F878080808101010202040051D7C930D>I<0001
00000003800000038000000380000007C0000007C0000007C0000009E0000009E0000009
E0000010F0000010F0000010F00000207800002078000020780000403C0000403C000040
3C0000801E0000801E0000FFFE0001000F0001000F0001000F0002000780020007800200
0780040003C00E0003C01F0007E0FFC03FFE1F207F9F22>65 D<FFFFE0000F8038000780
1E0007801F0007800F0007800F8007800F8007800F8007800F8007800F8007800F000780
1F0007801E0007803C0007FFF00007803C0007801E0007800F0007800F80078007800780
07C0078007C0078007C0078007C0078007C00780078007800F8007800F0007801F000F80
3C00FFFFF0001A1F7E9E20>I<000FC040007030C001C009C0038005C0070003C00E0001
C01E0000C01C0000C03C0000C07C0000407C00004078000040F8000000F8000000F80000
00F8000000F8000000F8000000F8000000F8000000F8000000780000007C0000407C0000
403C0000401C0000401E0000800E000080070001000380020001C0040000703800000FC0
001A217D9F21>I<FFFFE0000F803C0007801E000780070007800380078003C0078001E0
078001E0078001F0078000F0078000F0078000F8078000F8078000F8078000F8078000F8
078000F8078000F8078000F8078000F8078000F0078000F0078000F0078001E0078001E0
078003C0078003800780070007800E000F803C00FFFFE0001D1F7E9E23>I<FFFFFF000F
800F00078003000780030007800100078001800780008007800080078000800780808007
80800007808000078080000781800007FF80000781800007808000078080000780800007
808000078000200780002007800020078000400780004007800040078000C0078000C007
8001800F800F80FFFFFF801B1F7E9E1F>I<FFFFFF000F800F0007800300078003000780
010007800180078000800780008007800080078000800780800007808000078080000780
80000781800007FF80000781800007808000078080000780800007808000078000000780
00000780000007800000078000000780000007800000078000000FC00000FFFE0000191F
7E9E1E>I<000FE0200078186000E004E0038002E0070001E00F0000E01E0000601E0000
603C0000603C0000207C00002078000020F8000000F8000000F8000000F8000000F80000
00F8000000F8000000F8007FFCF80003E0780001E07C0001E03C0001E03C0001E01E0001
E01E0001E00F0001E0070001E0038002E000E0046000781820000FE0001E217D9F24>I<
FFF8FFF80F800F8007800F0007800F0007800F0007800F0007800F0007800F0007800F00
07800F0007800F0007800F0007800F0007800F0007FFFF0007800F0007800F0007800F00
07800F0007800F0007800F0007800F0007800F0007800F0007800F0007800F0007800F00
07800F0007800F000F800F80FFF8FFF81D1F7E9E22>I<FFFC0FC0078007800780078007
800780078007800780078007800780078007800780078007800780078007800780078007
8007800780078007800FC0FFFC0E1F7F9E10>I<0FFFC0007C00003C00003C00003C0000
3C00003C00003C00003C00003C00003C00003C00003C00003C00003C00003C00003C0000
3C00003C00003C00003C00003C00003C00203C00F83C00F83C00F83C00F0380040780040
700030E0000F800012207E9E17>I<FFFC0FFC0FC003E007800180078001000780020007
800400078008000780100007802000078040000780800007810000078300000787800007
8F80000793C0000791E00007A1E00007C0F0000780F0000780780007803C0007803C0007
801E0007801E0007800F000780078007800780078007C00FC007E0FFFC3FFC1E1F7E9E23
>I<FFFE000FC00007800007800007800007800007800007800007800007800007800007
800007800007800007800007800007800007800007800007800007800207800207800207
800207800607800407800407800C07801C0F807CFFFFFC171F7E9E1C>I<FF80001FF80F
80001F800780001F0005C0002F0005C0002F0005C0002F0004E0004F0004E0004F000470
008F000470008F000470008F000438010F000438010F000438010F00041C020F00041C02
0F00041C020F00040E040F00040E040F00040E040F000407080F000407080F000407080F
000403900F000403900F000401E00F000401E00F000401E00F000E00C00F001F00C01F80
FFE0C1FFF8251F7E9E2A>I<FF803FF807C007C007C0038005E0010005E0010004F00100
0478010004780100043C0100043C0100041E0100040F0100040F01000407810004078100
0403C1000401E1000401E1000400F1000400F1000400790004003D0004003D0004001F00
04001F0004000F0004000700040007000E0003001F000300FFE001001D1F7E9E22>I<00
1F800000F0F00001C0380007801E000F000F000E0007001E0007803C0003C03C0003C07C
0003E0780001E0780001E0F80001F0F80001F0F80001F0F80001F0F80001F0F80001F0F8
0001F0F80001F0F80001F0780001E07C0003E07C0003E03C0003C03C0003C01E0007800E
0007000F000F0007801E0001C0380000F0F000001F80001C217D9F23>I<FFFFE0000F80
780007801C0007801E0007800F0007800F8007800F8007800F8007800F8007800F800780
0F8007800F0007801E0007801C000780780007FFE0000780000007800000078000000780
000007800000078000000780000007800000078000000780000007800000078000000780
00000FC00000FFFC0000191F7E9E1F>I<FFFF80000F80F0000780780007803C0007801E
0007801E0007801F0007801F0007801F0007801F0007801E0007801E0007803C00078078
000780F00007FF80000781C0000780E0000780F000078070000780780007807800078078
0007807C0007807C0007807C0007807C0407807E0407803E040FC01E08FFFC0F10000003
E01E207E9E21>82 D<07E0800C1980100780300380600180600180E00180E00080E00080
E00080F00000F000007800007F00003FF0001FFC000FFE0003FF00001F800007800003C0
0003C00001C08001C08001C08001C08001C0C00180C00380E00300F00600CE0C0081F800
12217D9F19>I<7FFFFFE0780F01E0600F0060400F0020400F0020C00F0030800F001080
0F0010800F0010800F0010000F0000000F0000000F0000000F0000000F0000000F000000
0F0000000F0000000F0000000F0000000F0000000F0000000F0000000F0000000F000000
0F0000000F0000000F0000000F0000001F800007FFFE001C1F7E9E21>I<FFFC3FF80FC0
07C007800380078001000780010007800100078001000780010007800100078001000780
010007800100078001000780010007800100078001000780010007800100078001000780
010007800100078001000780010007800100038002000380020001C0020001C0040000E0
08000070180000382000000FC0001D207E9E22>I<FFF003FE1F8000F80F0000600F8000
60078000400780004003C0008003C0008003C0008001E0010001E0010001F0010000F002
0000F0020000F806000078040000780400003C0800003C0800003C0800001E1000001E10
00001F3000000F2000000F20000007C0000007C0000007C0000003800000038000000380
00000100001F207F9E22>I<FFF07FF81FF01F800FC007C00F00078003800F0007800100
0F0007C00100078007C00200078007C00200078007C0020003C009E0040003C009E00400
03C009E0040003E010F00C0001E010F0080001E010F0080001F02078080000F020781000
00F02078100000F0403C10000078403C20000078403C20000078C03E2000003C801E4000
003C801E4000003C801E4000001F000F8000001F000F8000001F000F8000001E00078000
000E00070000000E00070000000C000300000004000200002C207F9E2F>I<7FF83FF80F
E00FC007C0070003C0020001E0040001F00C0000F0080000781000007C1000003C200000
3E4000001E4000000F8000000F8000000780000003C0000007E0000005E0000009F00000
18F8000010780000207C0000603C0000401E0000801F0001800F0001000780020007C007
0003C01F8007E0FFE01FFE1F1F7F9E22>I<FEFEC0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0
C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0FEFE072D7CA10D>91
D<080410082010201040204020804080408040B85CFC7EFC7E7C3E381C0F0E7B9F17>I<
FEFE06060606060606060606060606060606060606060606060606060606060606060606
06060606060606FEFE072D7FA10D>I<1FE000303000781800781C00300E00000E00000E
00000E0000FE00078E001E0E00380E00780E00F00E10F00E10F00E10F01E10781E103867
200F83C014147E9317>97 D<0E0000FE00000E00000E00000E00000E00000E00000E0000
0E00000E00000E00000E00000E3E000EC3800F01C00F00E00E00E00E00700E00700E0078
0E00780E00780E00780E00780E00780E00700E00700E00E00F00E00D01C00CC300083E00
15207F9F19>I<03F80E0C1C1E381E380C70007000F000F000F000F000F000F000700070
00380138011C020E0C03F010147E9314>I<000380003F80000380000380000380000380
00038000038000038000038000038000038003E380061B801C0780380380380380700380
700380F00380F00380F00380F00380F00380F003807003807003803803803807801C0780
0E1B8003E3F815207E9F19>I<03F0000E1C001C0E00380700380700700700700380F003
80F00380FFFF80F00000F00000F000007000007000003800801800800C010007060001F8
0011147F9314>I<007C00C6018F038F07060700070007000700070007000700FFF00700
070007000700070007000700070007000700070007000700070007000700070007007FF0
1020809F0E>I<0000E003E3300E3C301C1C30380E00780F00780F00780F00780F00780F
00380E001C1C001E380033E0002000002000003000003000003FFE001FFF800FFFC03001
E0600070C00030C00030C00030C000306000603000C01C038003FC00141F7F9417>I<0E
0000FE00000E00000E00000E00000E00000E00000E00000E00000E00000E00000E00000E
3E000E43000E81800F01C00F01C00E01C00E01C00E01C00E01C00E01C00E01C00E01C00E
01C00E01C00E01C00E01C00E01C00E01C00E01C0FFE7FC16207F9F19>I<1C001E003E00
1E001C000000000000000000000000000E007E000E000E000E000E000E000E000E000E00
0E000E000E000E000E000E000E000E000E00FFC00A1F809E0C>I<00E001F001F001F000
E0000000000000000000000000007007F000F00070007000700070007000700070007000
700070007000700070007000700070007000700070007000706070F060F0C061803F000C
28829E0E>I<0E0000FE00000E00000E00000E00000E00000E00000E00000E00000E0000
0E00000E00000E0FF00E03C00E03000E02000E04000E08000E10000E30000E70000EF800
0F38000E1C000E1E000E0E000E07000E07800E03800E03C00E03E0FFCFF815207F9F18>
I<0E00FE000E000E000E000E000E000E000E000E000E000E000E000E000E000E000E000E
000E000E000E000E000E000E000E000E000E000E000E000E000E00FFE00B20809F0C>I<
0E1F01F000FE618618000E81C81C000F00F00E000F00F00E000E00E00E000E00E00E000E
00E00E000E00E00E000E00E00E000E00E00E000E00E00E000E00E00E000E00E00E000E00
E00E000E00E00E000E00E00E000E00E00E000E00E00E00FFE7FE7FE023147F9326>I<0E
3E00FE43000E81800F01C00F01C00E01C00E01C00E01C00E01C00E01C00E01C00E01C00E
01C00E01C00E01C00E01C00E01C00E01C00E01C0FFE7FC16147F9319>I<01F800070E00
1C03803801C03801C07000E07000E0F000F0F000F0F000F0F000F0F000F0F000F07000E0
7000E03801C03801C01C0380070E0001F80014147F9317>I<0E3E00FEC3800F01C00F00
E00E00E00E00F00E00700E00780E00780E00780E00780E00780E00780E00700E00F00E00
E00F01E00F01C00EC3000E3E000E00000E00000E00000E00000E00000E00000E00000E00
00FFE000151D7F9319>I<03E0800619801C05803C0780380380780380700380F00380F0
0380F00380F00380F00380F003807003807803803803803807801C0B800E138003E38000
0380000380000380000380000380000380000380000380003FF8151D7E9318>I<0E78FE
8C0F1E0F1E0F0C0E000E000E000E000E000E000E000E000E000E000E000E000E000E00FF
E00F147F9312>I<1F9030704030C010C010C010E00078007F803FE00FF0007080388018
8018C018C018E030D0608F800D147E9312>I<020002000200060006000E000E003E00FF
F80E000E000E000E000E000E000E000E000E000E000E000E080E080E080E080E08061003
1001E00D1C7F9B12>I<0E01C0FE1FC00E01C00E01C00E01C00E01C00E01C00E01C00E01
C00E01C00E01C00E01C00E01C00E01C00E01C00E01C00E03C00603C0030DC001F1FC1614
7F9319>I<FF83F81E01E01C00C00E00800E00800E008007010007010003820003820003
820001C40001C40001EC0000E80000E80000700000700000700000200015147F9318>I<
FF9FE1FC3C0780701C0300601C0380200E0380400E0380400E03C0400707C0800704C080
0704E080038861000388710003C8730001D0320001D03A0000F03C0000E01C0000E01C00
00601800004008001E147F9321>I<7FC3FC0F01E00701C007018003810001C20000E400
00EC00007800003800003C00007C00004E000087000107000303800201C00601E01E01E0
FF07FE1714809318>I<FF83F81E01E01C00C00E00800E00800E00800701000701000382
0003820003820001C40001C40001EC0000E80000E8000070000070000070000020000020
00004000004000004000F08000F08000F100006200003C0000151D7F9318>I<3FFF380E
200E201C40384078407000E001E001C00380078007010E011E011C0338027006700EFFFE
10147F9314>I E /Fr 47 122 df<70F8FCFC7404040404080810102040060F7C840E>
44 D<FFE0FFE00B027F8B10>I<70F8F8F87005057C840E>I<01F000071C000C06001803
003803803803807001C07001C07001C07001C0F001E0F001E0F001E0F001E0F001E0F001
E0F001E0F001E0F001E0F001E0F001E0F001E0F001E0F001E07001C07001C07001C07803
C03803803803801C07000C0600071C0001F00013227EA018>48 D<008003800F80F38003
800380038003800380038003800380038003800380038003800380038003800380038003
800380038003800380038003800380038007C0FFFE0F217CA018>I<03F8000C1E001007
002007804007C07807C07803C07807C03807C0000780000780000700000F00000E000038
0003F000001C00000F000007800007800003C00003C00003E02003E07003E0F803E0F803
E0F003C04003C0400780200780100F000C1C0003F00013227EA018>51
D<000200000600000E00000E00001E00001E00002E00004E00004E00008E00008E00010E
00020E00020E00040E00040E00080E00100E00100E00200E00200E00400E00800E00FFFF
F8000E00000E00000E00000E00000E00000E00000E00001F0001FFF015217FA018>I<10
00801E07001FFF001FFE001FF80013E00010000010000010000010000010000010000010
F800130E001407001803801003800001C00001C00001E00001E00001E00001E07001E0F0
01E0F001E0E001C08001C04003C04003802007001006000C1C0003F00013227EA018>I<
007E0001C1000300800601C00E03C01C03C0180180380000380000780000700000700000
F0F800F30C00F40600F40300F80380F801C0F001C0F001E0F001E0F001E0F001E0F001E0
7001E07001E07001E03801C03801C01803801C03000C0600070C0001F00013227EA018>
I<4000006000007FFFE07FFFC07FFFC0400080C001008001008002008002000004000008
0000080000100000300000200000600000600000600000E00000C00000C00001C00001C0
0001C00001C00003C00003C00003C00003C00003C00003C00003C00003C0000180001323
7DA118>I<01F800060E000803001001802001802000C06000C06000C06000C07000C078
01803E01003F02001FC4000FF80003F80003FC00067F00083F80100F803007C06001C060
00E0C000E0C00060C00060C00060C000606000406000C03000801803000E0E0003F00013
227EA018>I<01F000060C000C0600180700380380700380700380F001C0F001C0F001C0
F001E0F001E0F001E0F001E0F001E07001E07003E03803E01805E00C05E00619E003E1E0
0001C00001C00001C0000380000380300300780700780600700C002018001030000FC000
13227EA018>I<0001800000018000000180000003C0000003C0000003C0000005E00000
05E000000DF0000008F0000008F0000010F800001078000010780000203C0000203C0000
203C0000401E0000401E0000401E0000800F0000800F0000FFFF00010007800100078003
0007C0020003C0020003C0040003E0040001E0040001E00C0000F00C0000F03E0001F8FF
800FFF20237EA225>65 D<0007E0100038183000E0063001C00170038000F0070000F00E
0000701E0000701C0000303C0000303C0000307C0000107800001078000010F8000000F8
000000F8000000F8000000F8000000F8000000F8000000F800000078000000780000107C
0000103C0000103C0000101C0000201E0000200E000040070000400380008001C0010000
E0020000381C000007E0001C247DA223>67 D<FFFFFFC00F8007C0078001C0078000C007
800040078000400780006007800020078000200780002007802020078020000780200007
802000078060000780E00007FFE0000780E0000780600007802000078020000780200007
802008078000080780000807800010078000100780001007800030078000300780007007
8000E00F8003E0FFFFFFE01D227EA121>69 D<FFFFFFC00F8007C0078001C0078000C007
800040078000400780006007800020078000200780002007802020078020000780200007
802000078060000780E00007FFE0000780E0000780600007802000078020000780200007
802000078000000780000007800000078000000780000007800000078000000780000007
8000000FC00000FFFE00001B227EA120>I<FFFC0FC00780078007800780078007800780
078007800780078007800780078007800780078007800780078007800780078007800780
078007800780078007800FC0FFFC0E227EA112>73 D<FFC00003FF0FC00003F007C00003
E005E00005E005E00005E004F00009E004F00009E004F00009E004780011E004780011E0
04780011E0043C0021E0043C0021E0043C0021E0041E0041E0041E0041E0040F0081E004
0F0081E0040F0081E004078101E004078101E004078101E00403C201E00403C201E00401
E401E00401E401E00401E401E00400F801E00400F801E00400F801E004007001E00E0070
01E01F007003F0FFE0203FFF28227EA12D>77 D<FF8007FF07C000F807C0007005E00020
04F0002004F0002004780020047C0020043C0020041E0020041F0020040F002004078020
040780200403C0200401E0200401E0200400F0200400F8200400782004003C2004003E20
04001E2004000F2004000F20040007A0040003E0040003E0040001E0040001E0040000E0
0E0000601F000060FFE0002020227EA125>I<000FE00000783C0000E00E0003C0078007
8003C00F0001E00E0000E01E0000F03C0000783C0000787C00007C7C00007C7800003C78
00003CF800003EF800003EF800003EF800003EF800003EF800003EF800003EF800003EF8
00003E7800003C7C00007C7C00007C3C0000783E0000F81E0000F00F0001E00F0001E007
8003C003C0078000E00E0000783C00000FE0001F247DA226>I<FFFFF0000F803C000780
0F0007800780078007C0078003C0078003E0078003E0078003E0078003E0078003E00780
03E0078003C0078007C00780078007800F0007803C0007FFF00007800000078000000780
000007800000078000000780000007800000078000000780000007800000078000000780
000007800000078000000FC00000FFFC00001B227EA121>I<FFFFE000000F803C000007
800E00000780078000078007C000078003C000078003E000078003E000078003E0000780
03E000078003E000078003C000078007C000078007800007800E000007803C000007FFE0
00000780700000078038000007801C000007801E000007800E000007800F000007800F00
0007800F000007800F000007800F800007800F800007800F800007800F808007800FC080
078007C0800FC003C100FFFC01E2000000007C0021237EA124>82
D<03F0200C0C601802603001E07000E0600060E00060E00060E00020E00020E00020F000
00F000007800007F00003FF0001FFE000FFF0003FF80003FC00007E00001E00000F00000
F0000070800070800070800070800070C00060C00060E000C0F000C0C80180C6070081FC
0014247DA21B>I<7FFFFFF87807807860078018400780084007800840078008C007800C
800780048007800480078004800780040007800000078000000780000007800000078000
000780000007800000078000000780000007800000078000000780000007800000078000
00078000000780000007800000078000000780000007800000078000000FC00003FFFF00
1E227EA123>I<0FE0001838003C0C003C0E0018070000070000070000070000FF0007C7
001E07003C0700780700700700F00708F00708F00708F00F087817083C23900FC1E01515
7E9418>97 D<0E0000FE00001E00000E00000E00000E00000E00000E00000E00000E0000
0E00000E00000E00000E00000E1F000E61C00E80600F00300E00380E003C0E001C0E001E
0E001E0E001E0E001E0E001E0E001E0E001E0E001C0E003C0E00380F00700C80600C41C0
083F0017237FA21B>I<01FE000703000C07801C0780380300780000700000F00000F000
00F00000F00000F00000F00000F000007000007800403800401C00800C010007060001F8
0012157E9416>I<0000E0000FE00001E00000E00000E00000E00000E00000E00000E000
00E00000E00000E00000E00000E001F8E00704E00C02E01C01E03800E07800E07000E0F0
00E0F000E0F000E0F000E0F000E0F000E0F000E07000E07800E03800E01801E00C02E007
0CF001F0FE17237EA21B>I<01FC000707000C03801C01C03801C07801E07000E0F000E0
FFFFE0F00000F00000F00000F00000F000007000007800203800201C00400E0080070300
00FC0013157F9416>I<003C00C6018F038F030F07000700070007000700070007000700
0700FFF80700070007000700070007000700070007000700070007000700070007000700
0700070007807FF8102380A20F>I<00007001F198071E180E0E181C07001C07003C0780
3C07803C07803C07801C07001C07000E0E000F1C0019F000100000100000180000180000
1FFE000FFFC00FFFE03800F0600030400018C00018C00018C000186000306000303800E0
0E038003FE0015217F9518>I<0E0000FE00001E00000E00000E00000E00000E00000E00
000E00000E00000E00000E00000E00000E00000E1F800E60C00E80E00F00700F00700E00
700E00700E00700E00700E00700E00700E00700E00700E00700E00700E00700E00700E00
700E00700E0070FFE7FF18237FA21B>I<1C001E003E001E001C00000000000000000000
000000000000000E00FE001E000E000E000E000E000E000E000E000E000E000E000E000E
000E000E000E000E000E00FFC00A227FA10E>I<01C003E003E003E001C0000000000000
0000000000000000000001E00FE001E000E000E000E000E000E000E000E000E000E000E0
00E000E000E000E000E000E000E000E000E000E000E000E000E060E0F0C0F18061803E00
0B2C82A10F>I<0E0000FE00001E00000E00000E00000E00000E00000E00000E00000E00
000E00000E00000E00000E00000E03FC0E01F00E01C00E01800E02000E04000E08000E10
000E38000EF8000F1C000E1E000E0E000E07000E07800E03C00E01C00E01E00E00F00E00
F8FFE3FE17237FA21A>I<0E00FE001E000E000E000E000E000E000E000E000E000E000E
000E000E000E000E000E000E000E000E000E000E000E000E000E000E000E000E000E000E
000E000E000E00FFE00B237FA20E>I<0E1FC07F00FE60E183801E807201C00F003C00E0
0F003C00E00E003800E00E003800E00E003800E00E003800E00E003800E00E003800E00E
003800E00E003800E00E003800E00E003800E00E003800E00E003800E00E003800E00E00
3800E00E003800E0FFE3FF8FFE27157F942A>I<0E1F80FE60C01E80E00F00700F00700E
00700E00700E00700E00700E00700E00700E00700E00700E00700E00700E00700E00700E
00700E00700E0070FFE7FF18157F941B>I<01FC000707000C01801800C03800E0700070
700070F00078F00078F00078F00078F00078F00078F000787000707800F03800E01C01C0
0E038007070001FC0015157F9418>I<0E1F00FE61C00E80600F00700E00380E003C0E00
1C0E001E0E001E0E001E0E001E0E001E0E001E0E001E0E003C0E003C0E00380F00700E80
E00E41C00E3F000E00000E00000E00000E00000E00000E00000E00000E00000E0000FFE0
00171F7F941B>I<0E3CFE461E8F0F0F0F060F000E000E000E000E000E000E000E000E00
0E000E000E000E000E000F00FFF010157F9413>114 D<0F8830786018C018C008C008E0
08F0007F803FE00FF001F8003C801C800C800CC00CC008E018D0308FC00E157E9413>I<
02000200020002000600060006000E001E003E00FFF80E000E000E000E000E000E000E00
0E000E000E000E000E040E040E040E040E040E040708030801F00E1F7F9E13>I<0E0070
FE07F01E00F00E00700E00700E00700E00700E00700E00700E00700E00700E00700E0070
0E00700E00700E00700E00F00E00F006017003827800FC7F18157F941B>I<FFC1FE1E00
780E00300E00200E002007004007004003808003808003808001C10001C10000E20000E2
0000E20000740000740000380000380000380000100017157F941A>I<FF8FF8FF1E01E0
3C1C01C0180E01C0180E01E0100E01E01007026020070270200702702003843040038438
400384384001C8188001C81C8001C81C8000F00D0000F00F0000F00F0000600600006006
000060060020157F9423>I<FFC1FE1E00780E00300E00200E0020070040070040038080
03808003808001C10001C10000E20000E20000E200007400007400003800003800003800
001000001000002000002000002000004000F04000F08000F180004300003C0000171F7F
941A>121 D E /Fs 20 118 df<FFFF80FFFF80FFFF8011037F9016>45
D<FFFFFFE00000FFFFFFFC000007E0007F000003E0000F800003E00003C00003E00001E0
0003E00000F00003E00000780003E000003C0003E000001E0003E000001E0003E000000F
0003E000000F0003E000000F8003E00000078003E0000007C003E0000007C003E0000003
C003E0000003C003E0000003E003E0000003E003E0000003E003E0000003E003E0000003
E003E0000003E003E0000003E003E0000003E003E0000003E003E0000003E003E0000003
E003E0000003C003E0000003C003E0000007C003E0000007C003E00000078003E0000007
8003E000000F8003E000000F0003E000001F0003E000001E0003E000003C0003E0000078
0003E00000F80003E00001F00003E00003E00003E0000F800007E0003F0000FFFFFFFC00
00FFFFFFE000002B317CB033>68 D<FFFF80FFFF8007F00003E00003E00003E00003E000
03E00003E00003E00003E00003E00003E00003E00003E00003E00003E00003E00003E000
03E00003E00003E00003E00003E00003E00003E00003E00003E00003E00003E00003E000
03E00003E00003E00003E00003E00003E00003E00003E00003E00003E00003E00003E000
03E00003E00003E00007F000FFFF80FFFF8011317DB017>73 D<FFF00000007FF8FFF000
00007FF807F00000007F0002F8000000BE0002F8000000BE0002F8000000BE00027C0000
013E00027C0000013E00023E0000023E00023E0000023E00023E0000023E00021F000004
3E00021F0000043E00021F0000043E00020F8000083E00020F8000083E00020F8000083E
000207C000103E000207C000103E000207C000103E000203E000203E000203E000203E00
0201F000403E000201F000403E000201F000403E000200F800803E000200F800803E0002
00F800803E0002007C01003E0002007C01003E0002007C01003E0002003E02003E000200
3E02003E0002003E02003E0002001F04003E0002001F04003E0002000F88003E0002000F
88003E0002000F88003E00020007D0003E00020007D0003E00020007D0003E00020003E0
003E00020003E0003E00020003E0003E00070001C0003E000F8001C0007F00FFF801C00F
FFF8FFF800800FFFF835317CB03D>77 D<FFFFFFC000FFFFFFF80007E0007E0003E0001F
0003E000078003E00003C003E00001E003E00001F003E00001F003E00000F003E00000F8
03E00000F803E00000F803E00000F803E00000F803E00000F803E00000F003E00001F003
E00001E003E00003E003E00003C003E000078003E0001F0003E0007C0003FFFFF00003E0
00000003E000000003E000000003E000000003E000000003E000000003E000000003E000
000003E000000003E000000003E000000003E000000003E000000003E000000003E00000
0003E000000003E000000003E000000003E000000003E000000003E000000007F0000000
FFFF800000FFFF80000025317CB02D>80 D<007F802001FFE02007C078600F001C601E00
06E03C0003E0380001E0780000E0700000E070000060F0000060F0000060F0000020F000
0020F0000020F8000020F80000007C0000007E0000003F0000003FC000001FF800000FFF
800007FFF80003FFFC0000FFFF00000FFF800000FFC000001FE0000007E0000003F00000
01F0000000F0000000F8000000F88000007880000078800000788000007880000078C000
0078C0000070E00000F0E00000E0F00000E0F80001C0EC000380C7000700C1F01E00807F
FC00800FF0001D337CB125>83 D<00FE00000303C0000C00E00010007000100038003C00
3C003E001C003E001E003E001E0008001E0000001E0000001E0000001E00000FFE0000FC
1E0003E01E000F801E001F001E003E001E003C001E007C001E00F8001E04F8001E04F800
1E04F8003E04F8003E0478003E047C005E043E008F080F0307F003FC03E01E1F7D9E21>
97 D<003F8000E0600380180700040F00041E001E1C003E3C003E7C003E7C0008780000
F80000F80000F80000F80000F80000F80000F80000F80000F800007800007C00007C0000
3C00011E00011E00020F000207000403801800E060003F80181F7D9E1D>99
D<000001E000003FE000003FE0000003E0000001E0000001E0000001E0000001E0000001
E0000001E0000001E0000001E0000001E0000001E0000001E0000001E0000001E0000001
E0000001E0001F81E000F061E001C019E0078005E00F0003E00E0003E01E0001E03C0001
E03C0001E07C0001E0780001E0F80001E0F80001E0F80001E0F80001E0F80001E0F80001
E0F80001E0F80001E0F80001E0780001E0780001E03C0001E03C0001E01C0001E01E0003
E00E0005E0070009E0038011F000E061FF003F81FF20327DB125>I<003F800000E0E000
0380380007003C000E001E001E001E001C000F003C000F007C000F0078000F8078000780
F8000780F8000780FFFFFF80F8000000F8000000F8000000F8000000F8000000F8000000
780000007C0000003C0000003C0000801E0000800E0001000F0002000780020001C00C00
00F03000001FC000191F7E9E1D>I<0007E0001C1000383800707C00E07C01E07C01C038
03C00003C00003C00003C00003C00003C00003C00003C00003C00003C00003C00003C000
FFFFC0FFFFC003C00003C00003C00003C00003C00003C00003C00003C00003C00003C000
03C00003C00003C00003C00003C00003C00003C00003C00003C00003C00003C00003C000
03C00003C00003C00003C00007E0007FFF007FFF0016327FB114>I<000000F0007F0308
01C1C41C0380E81C070070080F0078001E003C001E003C003E003E003E003E003E003E00
3E003E003E003E003E003E001E003C001E003C000F007800070070000780E00009C1C000
087F000018000000180000001800000018000000180000001C0000000E0000000FFFF800
07FFFF0003FFFF800E000FC0180001E0300000F070000070E0000038E0000038E0000038
E0000038E00000387000007070000070380000E01C0001C00700070001C01C00003FE000
1E2F7E9F21>I<07000F801F801F800F8007000000000000000000000000000000000000
00000000000780FF80FF800F800780078007800780078007800780078007800780078007
800780078007800780078007800780078007800780078007800FC0FFF8FFF80D307EAF12
>105 D<0780FE001FC000FF83078060F000FF8C03C18078000F9001E2003C0007A001E4
003C0007A000F4001E0007C000F8001E0007C000F8001E00078000F0001E00078000F000
1E00078000F0001E00078000F0001E00078000F0001E00078000F0001E00078000F0001E
00078000F0001E00078000F0001E00078000F0001E00078000F0001E00078000F0001E00
078000F0001E00078000F0001E00078000F0001E00078000F0001E00078000F0001E0007
8000F0001E00078000F0001E00078000F0001E000FC001F8003F00FFFC1FFF83FFF0FFFC
1FFF83FFF0341F7E9E38>109 D<0780FE0000FF83078000FF8C03C0000F9001E00007A0
01E00007A000F00007C000F00007C000F000078000F000078000F000078000F000078000
F000078000F000078000F000078000F000078000F000078000F000078000F000078000F0
00078000F000078000F000078000F000078000F000078000F000078000F000078000F000
078000F000078000F0000FC001F800FFFC1FFF80FFFC1FFF80211F7E9E25>I<001FC000
00F0780001C01C00070007000F0007801E0003C01C0001C03C0001E03C0001E0780000F0
780000F0780000F0F80000F8F80000F8F80000F8F80000F8F80000F8F80000F8F80000F8
F80000F8780000F07C0001F03C0001E03C0001E01E0003C01E0003C00F00078007800F00
01C01C0000F07800001FC0001D1F7E9E21>I<0783E0FF8C18FF907C0F907C07A07C07C0
3807C00007C00007C0000780000780000780000780000780000780000780000780000780
000780000780000780000780000780000780000780000780000780000780000FC000FFFE
00FFFE00161F7E9E19>114 D<01FC100E03301800F0300070600030E00030E00010E000
10E00010F00010F800007E00003FF0001FFF000FFFC003FFE0003FF00001F80000F88000
3C80003C80001CC0001CC0001CE0001CE00018F00038F00030CC0060C301C080FE00161F
7E9E1A>I<00400000400000400000400000400000C00000C00000C00001C00001C00003
C00007C0000FC0001FFFE0FFFFE003C00003C00003C00003C00003C00003C00003C00003
C00003C00003C00003C00003C00003C00003C00003C00003C00003C01003C01003C01003
C01003C01003C01003C01003C01001C02001E02000E0400078C0001F00142C7FAB19>I<
078000F000FF801FF000FF801FF0000F8001F000078000F000078000F000078000F00007
8000F000078000F000078000F000078000F000078000F000078000F000078000F0000780
00F000078000F000078000F000078000F000078000F000078000F000078000F000078000
F000078000F000078001F000078001F000078001F000038002F00003C004F00001C008F8
00007030FF80001FC0FF80211F7E9E25>I E /Ft 5 85 df<00000000C00000000000E0
0000000001E00000000003E00000000003E00000000007E00000000007E0000000000FE0
000000000FE0000000001FE0000000001FE00000000037E00000000067E00000000067E0
00000000C7E000000000C7F00000000183F00000000183F00000000303F00000000703F0
0000000603F00000000C03F00000000C03F00000001803F00000001803F00000003003F0
0000003003F00000006003F0000000C003F0000000C003F00000018003F00000018003F8
000003FFFFF8000003FFFFF80000060001F800000E0001F800000C0001F80000180001F8
0000180001F80000300001F80000300001F80000600001F80000E00001F80000C00001F8
0001C00001F80001C00001F80007C00001FC001FC00003FC00FFF8007FFFE0FFF8007FFF
E02B327BB135>65 D<000FFFFFFE0000000FFFFFFF800000007F000FE00000007E0003F0
0000007E0000F80000007E0000FC0000007E00007C000000FC00003E000000FC00003E00
0000FC00003F000000FC00001F000001F800001F000001F800001F800001F800001F8000
01F800001F800003F000001F800003F000001F800003F000001F800003F000001F800007
E000003F800007E000003F800007E000003F800007E000003F80000FC000003F00000FC0
00007F00000FC000007F00000FC000007F00001F8000007E00001F800000FE00001F8000
00FE00001F800000FC00003F000001FC00003F000001F800003F000001F800003F000003
F000007E000003E000007E000007E000007E00000FC000007E00000F800000FC00001F80
0000FC00003F000000FC00007E000000FC0000FC000001F80001F0000001F80003E00000
01F8000FC0000003F8007F000000FFFFFFFC000000FFFFFFE000000031317BB036>68
D<000FFFFFFFFC000FFFFFFFFC00007F0001FC00007E00007C00007E00003C00007E0000
3C00007E0000180000FC0000180000FC0000180000FC0000180000FC0000180001F80000
180001F80000180001F80000180001F80000180003F00080100003F00180000003F00180
000003F00180000007E00300000007E00300000007E00700000007E01F0000000FFFFE00
00000FFFFE0000000FC01E0000000FC00E0000001F800C0000001F800C0000001F800C00
00001F800C0000003F00180000003F00080000003F00000000003F00000000007E000000
00007E00000000007E00000000007E0000000000FC0000000000FC0000000000FC000000
0000FC0000000001F80000000001F80000000001F80000000003F800000000FFFFF00000
00FFFFF00000002E317BB02F>70 D<000FFFFFF000000FFFFFFE0000007F003F8000007E
000FC000007E0007E000007E0003F000007E0001F80000FC0001F80000FC0001F80000FC
0001F80000FC0001F80001F80003F80001F80003F80001F80003F80001F80003F00003F0
0007F00003F00007E00003F0000FC00003F0000FC00007E0001F000007E0007E000007E0
00FC000007E007F000000FFFFFC000000FFFFF0000000FC00F8000000FC003C000001F80
03E000001F8001F000001F8001F000001F8001F800003F0001F800003F0001F800003F00
01F800003F0001F800007E0003F800007E0003F800007E0003F000007E0003F00000FC00
07F00000FC0007F00000FC0007F00800FC0007F00C01F80007F01801F80007F01801F800
03F03003F80003F030FFFFE001F0E0FFFFE000FFC0000000003F002E327BB034>82
D<07FFFFFFFFF00FFFFFFFFFF00FC00FE003F01E000FC000F01C000FC000E018000FC000
E038000FC0006030001F8000E030001F8000E060001F8000C060001F8000C060003F0000
C0C0003F0000C0C0003F0000C0C0003F0000C080007E00008000007E00000000007E0000
0000007E0000000000FC0000000000FC0000000000FC0000000000FC0000000001F80000
000001F80000000001F80000000001F80000000003F00000000003F00000000003F00000
000003F00000000007E00000000007E00000000007E00000000007E0000000000FC00000
00000FC0000000000FC0000000000FC0000000001F80000000001F80000000001F800000
00001F80000000003F00000000003F00000000003F0000000000FF00000000FFFFFF0000
00FFFFFF0000002C3173B033>84 D E end
%%EndProlog
%%BeginSetup
%%Feature: *Resolution 300dpi
TeXDict begin

%%EndSetup
%%Page: 0 1
0 0 bop 795 908 a Ft(D)26 b(R)g(A)f(F)h(T)225 999 y Fs(Do)r(cumen)n(t)
20 b(for)i(a)f(Standard)g(Message-P)n(assing)f(In)n(terface)621
1194 y Fr(Message)c(P)o(assing)h(In)o(terface)e(F)l(orum)793
1320 y(Octob)q(er)h(17,)h(1995)77 1378 y(This)g(w)o(ork)f(w)o(as)h
(supp)q(orted)g(in)f(part)h(b)o(y)e(ARP)l(A)h(and)h(NSF)e(under)h(gran)
o(t)h(ASC-9310330,)i(the)192 1436 y(National)d(Science)f(F)l(oundation)
i(Science)e(and)i(T)l(ec)o(hnology)f(Cen)o(ter)f(Co)q(op)q(erativ)o(e)
76 1494 y(Agreemen)o(t)e(No.)22 b(CCR-8809615,)d(and)e(b)o(y)e(the)h
(Commission)e(of)j(the)f(Europ)q(ean)i(Comm)o(unit)n(y)654
1552 y(through)f(Esprit)f(pro)s(ject)g(P6643.)p eop
%%Page: 1 2
1 1 bop 166 45 a Fq(This)20 b(is)h(the)f(result)g(of)f(a)h(LaT)l(eX)g
(run)g(of)g(a)f(draft)g(of)h(a)f(single)j(c)o(hapter)d(of)h(the)g(MPIF)
f(Final)75 102 y(Rep)q(ort)d(do)q(cumen)o(t.)969 2828
y(i)p eop
%%Page: 1 3
1 2 bop 75 356 a Fp(Chapter)34 b(1)75 564 y Fo(Dynamic)40
b(Pro)s(cesses)75 786 y Fq(This)20 b(v)o(ersion)f(is)g(substan)o
(tially)h(c)o(hanged)g(\(and)f(shortened!\))31 b(from)18
b(the)h(previous)h(prop)q(osal.)32 b(The)75 843 y(main)23
b(di\013erence)g(is)g(the)g(abandonmen)o(t)f(of)g(the)g(am)o(bition)h
(to)f(pro)o(vide)h(a)f(p)q(ortable)h(in)o(terface)g(to)75
899 y(resource)14 b(managers.)k(This)d(simpli\014es)h(the)e(in)o
(terface)g(substan)o(tially)l(,)h(at)e(some)g(cost)g(in)i(functionalit)
o(y)l(.)75 956 y(The)g(main)h(c)o(hanges)f(are:)143 1062
y Fn(\017)23 b Fq(There)14 b(is)h(no)f(assumption)h(of)f(the)g
(existence)i(of)e(a)g(resource)g(manager,)f(so)h(the)h(long)f
(discussion)189 1119 y(at)e(the)h(b)q(eginning)j(ab)q(out)d(the)g(mo)q
(del)h(of)f(the)g(run)o(time)g(en)o(vironmen)o(t,)h(with)f(resource)h
(manager)189 1175 y(and)h(pro)q(cess)g(manager,)g(is)g(gone.)143
1269 y Fn(\017)23 b Fq(There)15 b(are)g(no)g(resource)g(ob)s(jects,)g
(so)f(all)i(the)g(resource-manipulation)h(functions)f(are)f(gone.)143
1363 y Fn(\017)23 b Fq(There)15 b(is)g(only)g(one)g(surviving)h(en)o
(vironmen)o(t-query)g(capabilit)o(y)l(,)g(to)e(\014nd)i(out)e(ho)o(w)h
(man)o(y)f(pro-)189 1419 y(cesses)c(ma)o(y)g(usefully)h(b)q(e)g(spa)o
(wned.)19 b(This)10 b(is)h(implemen)o(ted)h(as)e(an)g(attribute)g(on)g
Fm(MPI)p 1667 1419 14 2 v 16 w(COMM)p 1825 1419 V 16
w(W)o(ORLD)p Fq(,)189 1476 y(and)k(allo)o(ws)g(man)o(y)g(existing)h
(programs)e(to)h(b)q(e)h(p)q(orted)f(to)f(MPI)i(straigh)o(tforw)o
(ardly)l(.)j(Sp)q(eci\014ca-)189 1532 y(tion)d(of)g(where)h(they)f
(will)i(b)q(e)f(spa)o(wned)f(will)i(ha)o(v)o(e)e(to)g(b)q(e)h(part)f
(of)g(mpirun,)h(if)f(it)h(is)g(to)f(b)q(e)h(done)189
1588 y(p)q(ortably)l(.)143 1682 y Fn(\017)23 b Fq(There)15
b(is)h(no)f(MPI)p 521 1682 V 16 w(ALLOCA)l(TE,)h(since)h(there)e(are)g
(no)g(resources.)143 1776 y Fn(\017)23 b Fq(There)c(is)i(no)e(pro)q
(cess)h(ob)s(ject.)32 b(Instead)20 b(pro)q(cesses)g(are)g(iden)o
(ti\014ed)h(b)o(y)f(their)g(\(group,)g(rank\))189 1833
y(pair.)143 1926 y Fn(\017)j Fq(There)16 b(are)f(not)h(\(y)o(et\))e(an)
o(y)i(non-blo)q(c)o(king)i(calls.)k(This)17 b(will)g(probably)g(ha)o(v)
o(e)e(to)g(c)o(hange,)h(esp)q(e-)189 1983 y(cially)h(for)d(the)h(clien)
o(t-serv)o(er)i(stu\013.)143 2077 y Fn(\017)23 b Fq(The)15
b(examples)h(ha)o(v)o(e)f(b)q(een)h(up)q(dated.)75 2220
y Fl(1.1)59 b(Intro)r(duction)75 2321 y Fq(The)15 b(MPI-1)g(message)g
(passing)g(library)h(allo)o(ws)f(pro)q(cesses)h(in)g(a)f(parallel)h
(program)e(to)h(comm)o(unicate)75 2378 y(with)21 b(one)f(another.)34
b(MPI-1)20 b(sp)q(eci\014es)i(neither)g(ho)o(w)d(the)i(pro)q(cesses)f
(are)g(created,)h(nor)f(ho)o(w)g(they)75 2434 y(establish)f(comm)o
(unication.)30 b(Moreo)o(v)o(er,)17 b(an)i(MPI-1)f(application)i(is)e
(static,)h(that)e(is,)i(no)g(pro)q(cesses)75 2491 y(can)c(b)q(e)h
(added)g(to)f(or)f(deleted)j(from)d(an)h(application)i(while)g(it)e(is)
h(running.)166 2547 y(MPI)22 b(users)g(ha)o(v)o(e)g(ask)o(ed)f(that)h
(the)g(MPI-1)g(mo)q(del)h(b)q(e)f(relaxed)h(to)f(allo)o(w)g(dynamic)h
(pro)q(cess)75 2604 y(managemen)o(t.)17 b(The)11 b(main)f(imp)q(etus)i
(comes)e(from)f(the)h(PVM)g([1])f(researc)o(h)h(e\013ort,)g(whic)o(h)h
(has)f(pro)o(vided)75 2660 y(a)16 b(w)o(ealth)h(of)f(exp)q(erience)j
(with)e(dynamic)h(pro)q(cess)f(managemen)o(t)f(that)g(illustrates)h
(its)g(b)q(ene\014ts)h(and)964 2828 y(1)p eop
%%Page: 2 4
2 3 bop 75 -100 a Fq(2)951 b Fk(CHAPTER)16 b(1.)34 b(D)o(YNAMIC)15
b(PR)o(OCESSES)75 45 y Fq(p)q(oten)o(tial)h(pitfalls.)22
b(The)15 b(reasons)g(for)g(adding)h(dynamic)g(pro)q(cess)g(managemen)o
(t)e(are)h(b)q(oth)g(tec)o(hnical)75 102 y(and)g(practical.)143
188 y Fn(\017)23 b Fq(W)l(orkstation)d(net)o(w)o(ork)f(users)i
(migrating)g(from)g(PVM)f(to)g(MPI)h(are)g(accustomed)g(to)f(using)189
244 y(PVM's)13 b(capabilities)k(for)d(pro)q(cess)g(and)h(resource)f
(managemen)o(t.)19 b(While)d(relativ)o(ely)f(few)f(appli-)189
301 y(cations)g(are)g(truly)h(dynamic)g(or)f(require)i(features)e(not)g
(in)h(MPI,)f(the)h(lac)o(k)g(of)f(these)g(features)g(is)189
357 y(a)h(practical)h(stum)o(bling)g(blo)q(c)o(k)g(to)e(migration.)143
445 y Fn(\017)23 b Fq(Imp)q(ortan)o(t)16 b(classes)h(of)g(message)f
(passing)h(applications,)i(suc)o(h)e(as)f(clien)o(t-serv)o(er)i
(systems)f(and)189 502 y(task)d(farming)h(jobs,)g(require)h(dynamic)g
(pro)q(cess)f(con)o(trol.)143 590 y Fn(\017)23 b Fq(With)16
b(dynamic)h(resource)g(and)f(pro)q(cess)h(managemen)o(t)e(extensions,)i
(it)g(w)o(ould)g(b)q(e)g(p)q(ossible)h(to)189 646 y(write)d(ma)s(jor)f
(parts)g(of)h(the)g(parallel)i(programming)e(en)o(vironmen)o(t)g(in)h
(MPI)f(itself.)143 735 y Fn(\017)23 b Fq(The)14 b(abilit)o(y)i(to)d
(write)h(fault)h(toleran)o(t)e(applications)j(is)f(imp)q(ortan)o(t)f
(in)h(unstable)g(en)o(vironmen)o(ts)189 791 y(and)23
b(for)f(commercial)i(applications.)45 b(MPI-1)23 b(do)q(es)g(not)f(pro)
o(vide)i(mec)o(hanisms)f(for)g(build-)189 847 y(ing)18
b(fault-toleran)o(t)f(applications.)30 b(The)18 b(mec)o(hanisms)g
(required)h(to)e(supp)q(ort)h(fault)g(tolerance)189 904
y(largely)d(o)o(v)o(erlap)g(with)h(those)f(needed)h(to)f(supp)q(ort)g
(dynamic)h(pro)q(cess)g(managemen)o(t.)166 990 y(While)e(dynamic)g(pro)
q(cess)f(managemen)o(t)f(is)i(essen)o(tial,)g(it)f(is)g(imp)q(ortan)o
(t)g(not)f(to)h(compromise)g(the)75 1047 y(p)q(ortabilit)o(y)j(or)f(p)q
(erformance)g(of)g(MPI.)g(In)h(particular:)143 1126 y
Fn(\017)23 b Fq(The)f(MPI-2)f(dynamic)i(pro)q(cess)e(managemen)o(t)g
(mo)q(del)i(m)o(ust)e(apply)h(to)f(the)h(v)m(ast)f(ma)s(jorit)o(y)189
1183 y(of)e(curren)o(t)h(parallel)h(en)o(vironmen)o(ts.)34
b(These)20 b(include)j(ev)o(erything)d(from)f(tigh)o(tly)h(in)o
(tegrated)189 1239 y(MPPs)d(suc)o(h)i(as)f(the)g(In)o(tel)h(P)o(aragon)
e(and)h(the)g(Meik)o(o)g(CS-2)h(to)e(heterogeneous)h(net)o(w)o(orks)f
(of)189 1296 y(w)o(orkstations.)143 1384 y Fn(\017)23
b Fq(MPI)16 b(m)o(ust)g(not)g(tak)o(e)g(o)o(v)o(er)f(op)q(erating)i
(system)f(resp)q(onsibiliti)q(es.)26 b(It)17 b(should)g(instead)g(pro)o
(vide)189 1440 y(a)e(clean)h(in)o(terface)f(b)q(et)o(w)o(een)h(an)f
(application)i(and)e(system)g(soft)o(w)o(are.)143 1528
y Fn(\017)23 b Fq(MPI)17 b(m)o(ust)g(con)o(tin)o(ue)h(to)f(guaran)o
(tee)g(comm)o(unication)h(determinism,)h(i.e.,)e(dynamic)i(pro)q(cess)
189 1585 y(managemen)o(t)14 b(m)o(ust)h(not)f(in)o(tro)q(duce)j(una)o
(v)o(oidable)f(race)f(conditions.)143 1673 y Fn(\017)23
b Fq(MPI)15 b(m)o(ust)f(not)h(con)o(tain)h(features)e(that)h
(compromise)g(p)q(erformance.)143 1761 y Fn(\017)23 b
Fq(MPI-1)16 b(programs)f(m)o(ust)h(w)o(ork)g(under)h(MPI-2,)f(i.e.,)g
(the)h(MPI-1)f(static)g(pro)q(cess)h(mo)q(del)h(m)o(ust)189
1817 y(b)q(e)e(a)e(sp)q(ecial)j(case)f(of)e(the)i(MPI-2)f(dynamic)h(mo)
q(del.)166 1897 y(The)e(MPI)g(dynamic)h(pro)q(cess)g(managemen)o(t)e
(mo)q(del)i(address)f(these)h(issues)g(in)f(t)o(w)o(o)f(w)o(a)o(ys.)19
b(First,)75 1953 y(MPI)d(remains)g(primarily)h(a)f(comm)o(unication)h
(library)l(.)23 b(It)16 b(do)q(es)g(not)f(manage)h(the)g(parallel)h(en)
o(viron-)75 2010 y(men)o(t)d(in)h(whic)o(h)g(a)f(parallel)i(program)d
(executes,)i(though)f(it)h(pro)o(vides)f(a)g(minimal)i(in)o(terface)f
(b)q(et)o(w)o(een)75 2066 y(an)g(application)i(and)e(external)h
(resource)f(and)h(pro)q(cess)f(managers.)166 2123 y(Second,)i(MPI-2)g
(do)q(es)g(not)f(c)o(hange)h(the)g(concept)g(of)f(comm)o(unicator.)24
b(Once)18 b(a)e(comm)o(unicator)75 2179 y(is)h(built,)g(it)g(b)q(eha)o
(v)o(es)f(as)g(sp)q(eci\014ed)j(in)e(MPI-1.)23 b(A)16
b(comm)o(unicator)g(is)h(nev)o(er)f(c)o(hanged)h(once)f(created,)75
2236 y(and)f(it)h(is)g(alw)o(a)o(ys)e(created)h(using)h(deterministic)h
(collectiv)o(e)g(seman)o(tics.)75 2376 y Fl(1.2)59 b(The)19
b(MPI-2)h(Dynamic)f(Pro)r(cess)g(Mo)r(del)75 2478 y Fq(The)i(MPI-2)g
(dynamic)h(pro)q(cess)g(mo)q(del)g(allo)o(ws)f(for)f(the)i(creation)f
(and)g(destruction)h(of)f(pro)q(cesses)75 2534 y(after)14
b(an)g(MPI)h(application)h(has)e(started.)19 b(It)14
b(pro)o(vides)h(a)g(mec)o(hanism)g(to)f(establish)h(comm)o(unication)75
2591 y(b)q(et)o(w)o(een)i(the)g(newly)h(created)f(pro)q(cesses)g(and)g
(the)g(existing)h(MPI)f(application.)27 b(It)17 b(also)g(pro)o(vides)g
(a)75 2647 y(mec)o(hanism)f(to)e(establish)j(comm)o(unication)f(b)q(et)
o(w)o(een)f(t)o(w)o(o)f(existing)i(MPI)f(applications,)i(ev)o(en)e
(when)75 2704 y(one)g(did)i(not)d(\\start")g(the)h(other.)1967
46 y Fj(1)1967 103 y(2)1967 159 y(3)1967 215 y(4)1967
272 y(5)1967 328 y(6)1967 385 y(7)1967 441 y(8)1967 498
y(9)1959 554 y(10)1959 611 y(11)1959 667 y(12)1959 724
y(13)1959 780 y(14)1959 836 y(15)1959 893 y(16)1959 949
y(17)1959 1006 y(18)1959 1062 y(19)1959 1119 y(20)1959
1175 y(21)1959 1232 y(22)1959 1288 y(23)1959 1345 y(24)1959
1401 y(25)1959 1457 y(26)1959 1514 y(27)1959 1570 y(28)1959
1627 y(29)1959 1683 y(30)1959 1740 y(31)1959 1796 y(32)1959
1853 y(33)1959 1909 y(34)1959 1966 y(35)1959 2022 y(36)1959
2078 y(37)1959 2135 y(38)1959 2191 y(39)1959 2248 y(40)1959
2304 y(41)1959 2361 y(42)1959 2417 y(43)1959 2474 y(44)1959
2530 y(45)1959 2587 y(46)1959 2643 y(47)1959 2699 y(48)p
eop
%%Page: 3 5
3 4 bop 75 -100 a Fk(1.2.)34 b(THE)15 b(MPI-2)g(D)o(YNAMIC)g(PR)o
(OCESS)h(MODEL)775 b Fq(3)75 45 y Fi(1.2.1)49 b(Sta)o(rting)16
b(and)h(Managing)h(Pro)q(cesses)75 131 y Fq(MPI)10 b(applications)i(ma)
o(y)e(start)f(new)h(pro)q(cesses)h(\(including)i(non-MPI)d(pro)q
(cesses\),)h(send)g(them)g(signals,)75 187 y(and)17 b(\014nd)h(out)e
(when)i(they)f(die)h(or)e(b)q(ecome)i(unreac)o(hable.)26
b(They)17 b(do)g(this)g(through)g(an)f(in)o(terface)i(to)75
244 y(an)d(external)h(pro)q(cess)g(manager,)f(whic)o(h)h(can)g(range)f
(from)g(a)g(parallel)i(op)q(erating)f(system)f(\(CMOST\))75
300 y(to)g(la)o(y)o(ered)g(soft)o(w)o(are)e(\(POE\))i(to)g(an)g
Fh(rsh)g Fq(command)g(\(P4\).)166 357 y(There)g(are)g(three)h(w)o(a)o
(ys)e(to)g(start)g(new)i(pro)q(cesses.)166 413 y Fm(MPI)p
251 413 14 2 v 16 w(SP)l(A)-5 b(WN)23 b Fq(is)f(a)g(simple)h(in)o
(terface)g(that)e(allo)o(ws)h(starts)f(MPI)h(pro)q(cesses)g(and)h
(establishes)75 470 y(comm)o(unication)16 b(with)f(them,)g(returning)h
(an)f(in)o(tercomm)o(unicator.)166 526 y(The)23 b(t)o(w)o(o)f(other)h
(routines)g(are)g(used)h(in)g(conjunction)g(with)g Fm(MPI)p
1378 526 V 16 w(GROUP)p 1546 526 V 17 w(INIT)f Fq(to)f(start)g(a)75
583 y(non)o(uniform)16 b(collection)h(of)d(pro)q(cesses.)166
639 y Fm(MPI)p 251 639 V 16 w(GROUP)p 419 639 V 17 w(ST)l(ART)p
578 639 V 18 w(A)l(TT)l(A)o(CH)24 b Fq(starts)e(MPI)h(pro)q(cesses)h
(and)g(establishes)g(comm)o(unication)75 695 y(with)16
b(them,)e(returning)i(an)f(in)o(tercomm)o(unicator.)166
752 y Fm(MPI)p 251 752 V 16 w(GROUP)p 419 752 V 17 w(ST)l(ART)p
578 752 V 18 w(INDEPENDENT)c Fq(starts)e(new)j(pro)q(cesses,)f(whic)o
(h)h(ma)o(y)e(or)g(ma)o(y)h(not)f(com-)75 808 y(m)o(unicate)18
b(amoung)f(eac)o(h)h(other,)g(but)f(don't)h(comm)o(unicate)g(with)g
(their)g(paren)o(t.)27 b(This)18 b(function)g(is)75 865
y(required)e(for)f(starting)f(non-MPI)i(tasks)e(and)i(is)f(useful)i
(for)d(starting)h(an)g(SPMD)g(application.)166 921 y(MPI)f(uses)h(the)g
(existing)g(group)g(abstraction)f(to)g(represen)o(t)g(pro)q(cesses.)20
b(A)15 b(pro)q(cess)g(is)g(iden)o(ti\014ed)75 978 y(b)o(y)g(a)g
(\(group,)f(rank\))h(pair.)75 1099 y Fi(1.2.2)49 b(The)16
b(Runtime)g(Environment)g(\(w)o(as:)21 b(Resources\))75
1185 y Fq(MPI)10 b(allo)o(ws)g(an)g(application)i(to)e(start)f(new)h
(pro)q(cesses)h(with)f(the)g(routines)h Fm(MPI)p 1453
1185 V 16 w(SP)l(A)-5 b(WN)p Fq(,)10 b Fm(MPI)p 1724
1185 V 16 w(ST)l(ART)p 1882 1185 V 18 w(A)l(TT)l(A)o(CH)p
Fq(,)75 1242 y(and)24 b Fm(MPI)p 257 1242 V 15 w(ST)l(ART)p
414 1242 V 18 w(INDEPENDENT)p Fq(.)f(The)h(in)o(terface)g(for)e
(starting)h(new)h(pro)q(cesses)g(is)g(relativ)o(ely)75
1298 y(straigh)o(tforw)o(ard.)18 b(The)d(hard)g(part)g(is)h(to)e(sp)q
(ecify)j Fg(wher)n(e)e Fq(the)g(new)h(pro)q(cesses)f(start.)166
1355 y(The)f(di\016cult)o(y)h(is)f(that)f(there)h(is)g(an)g(enormous)g
(range)f(of)g(run)o(time)h(en)o(vironmen)o(ts)g(and)g(applica-)75
1411 y(tion)i(requiremen)o(ts,)g(and)g(MPI)g(m)o(ust)f(not)h(b)q(e)g
(tailored)h(to)e(an)o(y)g(particular)i(one.)22 b(Examples)16
b(of)g(suc)o(h)75 1468 y(en)o(vironmen)o(ts)f(are:)143
1574 y Fn(\017)23 b Ff(MPP)15 b(managed)i(b)o(y)e(a)i(batc)o(h)g
(queueing)f(system)p Fq(.)j(Batc)o(h)13 b(queueing)j(systems)e
(generally)189 1630 y(allo)q(cate)j(resources)g(b)q(efore)g(an)g
(application)i(b)q(egins,)f(enforce)f(limits)h(on)f(resource)g(use)g
(\(CPU)189 1687 y(time,)f(memory)g(use,)g(etc\),)g(and)g(do)h(not)e
(allo)o(w)i(a)f(c)o(hange)g(in)h(resource)f(allo)q(cation)i(after)d(a)h
(job)189 1743 y(b)q(egins.)21 b(Moreo)o(v)o(er,)13 b(man)o(y)i(MPPs)f
(ha)o(v)o(e)h(sp)q(ecial)h(limitations)h(or)d(extensions,)i(suc)o(h)f
(as)g(a)g(limit)189 1800 y(the)c(n)o(um)o(b)q(er)h(of)f(pro)q(cesses)h
(that)f(ma)o(y)g(run)h(on)g(one)f(pro)q(cessor,)h(or)f(the)h(abilit)o
(y)h(to)e(gang-sc)o(hedule)189 1856 y(pro)q(cesses)k(of)g(a)g(parallel)
i(application.)143 1950 y Fn(\017)23 b Ff(Net)o(w)o(ork)17
b(of)i(w)o(orkstations)g(with)h(PVM)p Fq(.)15 b(PVM)h(\(P)o(arallel)h
(Virtual)h(Mac)o(hine\))e(allo)o(ws)h(a)189 2006 y(user)f(to)g(create)g
(a)g(\\virtual)h(mac)o(hine")g(out)f(of)g(a)g(net)o(w)o(ork)f(of)h(w)o
(orkstations.)23 b(An)16 b(application)189 2063 y(ma)o(y)i(extend)j
(the)e(virtual)h(mac)o(hine)h(or)e(manage)g(pro)q(cesses)h(\(create,)f
(kill,)j(redirect)f(output,)189 2119 y(etc.\))26 b(through)18
b(the)f(PVM)g(library)l(.)28 b(Requests)19 b(to)e(manage)g(the)g(mac)o
(hine)i(or)e(pro)q(cesses)h(ma)o(y)189 2176 y(b)q(e)e(in)o(tercepted)g
(and)f(handled)i(b)o(y)e(an)g(external)h(resource)f(manager.)143
2270 y Fn(\017)23 b Ff(Net)o(w)o(ork)10 b(of)i(w)o(orkstations)f
(managed)i(b)o(y)e(a)i(load)g(balancing)h(system)p Fq(.)j(A)10
b(load)h(balanc-)189 2326 y(ing)h(system)f(ma)o(y)f(c)o(ho)q(ose)i(the)
f(lo)q(cation)h(of)f(spa)o(wned)h(pro)q(cesses)f(based)h(on)f(dynamic)i
(quan)o(tities,)189 2382 y(suc)o(h)19 b(as)f(load)h(a)o(v)o(erage.)29
b(It)18 b(ma)o(y)g(transparen)o(tly)g(migrate)h(pro)q(cesses)g(from)e
(one)i(mac)o(hine)h(to)189 2439 y(another)14 b(when)i(a)f(resource)g(b)
q(ecomes)h(una)o(v)m(ailable.)143 2533 y Fn(\017)23 b
Ff(Large)j(SMP)g(with)g(Unix)p Fq(.)43 b(Applications)24
b(are)f(run)g(directly)h(b)o(y)e(the)h(user.)42 b(They)23
b(are)189 2589 y(sc)o(heduled)15 b(at)d(a)h(lo)o(w)g(lev)o(el)h(b)o(y)f
(the)g(op)q(erating)h(system.)k(Pro)q(cesses)13 b(ma)o(y)g(ha)o(v)o(e)g
(sp)q(ecial)h(sc)o(hedul-)189 2646 y(ing)g(c)o(haracteristics)h
(\(gang-sc)o(heduling,)g(pro)q(cessor)g(a\016nit)o(y)l(,)f(deadline)i
(sc)o(heduling,)g(pro)q(cessor)-32 46 y Fj(1)-32 103
y(2)-32 159 y(3)-32 215 y(4)-32 272 y(5)-32 328 y(6)-32
385 y(7)-32 441 y(8)-32 498 y(9)-40 554 y(10)-40 611
y(11)-40 667 y(12)-40 724 y(13)-40 780 y(14)-40 836 y(15)-40
893 y(16)-40 949 y(17)-40 1006 y(18)-40 1062 y(19)-40
1119 y(20)-40 1175 y(21)-40 1232 y(22)-40 1288 y(23)-40
1345 y(24)-40 1401 y(25)-40 1457 y(26)-40 1514 y(27)-40
1570 y(28)-40 1627 y(29)-40 1683 y(30)-40 1740 y(31)-40
1796 y(32)-40 1853 y(33)-40 1909 y(34)-40 1966 y(35)-40
2022 y(36)-40 2078 y(37)-40 2135 y(38)-40 2191 y(39)-40
2248 y(40)-40 2304 y(41)-40 2361 y(42)-40 2417 y(43)-40
2474 y(44)-40 2530 y(45)-40 2587 y(46)-40 2643 y(47)-40
2699 y(48)p eop
%%Page: 4 6
4 5 bop 75 -100 a Fq(4)951 b Fk(CHAPTER)16 b(1.)34 b(D)o(YNAMIC)15
b(PR)o(OCESSES)189 45 y Fq(lo)q(c)o(king,)i(etc.\))24
b(and)16 b(b)q(e)i(sub)s(ject)e(to)g(OS)h(resource)f(limits)i(\(n)o(um)
o(b)q(er)f(of)f(pro)q(cesses,)h(amoun)o(t)e(of)189 102
y(memory)l(,)f(etc.\).)166 203 y(MPI)f(assumes,)g(implicitly)l(,)k(the)
c(existence)h(of)f(an)g(en)o(vironmen)o(t)h(in)g(whic)o(h)g(an)f
(application)i(runs.)75 260 y(It)k(do)q(es)g(not)g(pro)o(vide)g(\\op)q
(erating)g(system")f(services,)i(suc)o(h)g(as)e(a)h(general)g(abilit)o
(y)h(to)e(query)i(what)75 316 y(pro)q(cesses)i(are)f(running,)j(to)c
(kill)k(arbitrary)c(pro)q(cesses,)j(to)e(\014nd)h(out)f(prop)q(erties)h
(of)f(the)h(run)o(time)75 373 y(en)o(vironmen)o(t)d(\(ho)o(w)f(man)o(y)
g(pro)q(cessors,)g(ho)o(w)g(m)o(uc)o(h)h(memory)l(,)f(etc\).)30
b(Complex)19 b(in)o(teraction)g(of)f(an)75 429 y(MPI)i(application)h
(with)f(its)g(run)o(time)h(en)o(vironmen)o(t)f(should)h(b)q(e)f(done)g
(through)g(an)g(en)o(vironmen)o(t-)75 486 y(sp)q(eci\014c)d(API.)166
625 y Fe(Discussion:)52 b Fd(An)19 b(example)e(of)h(suc)o(h)h(an)g(API)
g(w)o(ould)e(b)q(e)i(the)h(PVM)f(task)f(and)h(mac)o(hine)e(manage-)75
681 y(men)o(t)e(routines)i({)f Fc(pvm)p 450 681 14 2
v 15 w(addhosts)p Fd(,)f Fc(pvm)p 734 681 V 15 w(config)p
Fd(,)g Fc(pvm)p 974 681 V 16 w(tasks)p Fd(,)g(etc.,)i(p)q(ossibly)f(mo)
q(di\014ed)f(to)h(return)i(an)e(MPI)75 738 y(\(group,rank\))e(when)g(p)
q(ossible.)k(A)c(Condor)g(or)g(PBS)g(API)g(w)o(ould)g(b)q(e)g(another)g
(p)q(ossibilit)o(y)m(.)166 877 y Fq(A)o(t)i(some)h(lo)o(w)f(lev)o(el,)i
(ob)o(viously)l(,)g(MPI)f(m)o(ust)f(b)q(e)h(able)h(to)e(in)o(teract)h
(with)g(the)g(run)o(time)g(system,)75 933 y(but)h(the)f(in)o(teraction)
h(is)g(not)f(visible)j(at)d(the)h(application)h(lev)o(el)g(and)e(the)h
(details)g(are)g(not)f(sp)q(eci\014ed)75 990 y(b)o(y)e(the)g(MPI)h
(standard.)166 1129 y Fe(Discussion:)34 b Fd(It)14 b(has)g(b)q(een)h
(requested)h(that)e(the)g(MPI)g(forum)e(sp)q(ecify)j(this)f(in)o
(terface)g(explicitly)m(.)j(MPI)75 1185 y(has)f(so)g(far)g(shied)h(a)o
(w)o(a)o(y)e(from)f(sp)q(ecifying)i(implemen)o(tation)d(details,)j(for)
f(go)q(o)q(d)h(reasons.)26 b(It)16 b(w)o(ould)f(b)q(e)i(nice,)75
1242 y(ho)o(w)o(ev)o(er,)d(if)f(implemen)o(tors)e(agreed)k(on)f(a)f
(minim)o(al)e(standard)j(in)o(terface)g(to)g(allo)o(w)e(in)o(terop)q
(erabilit)o(y)h(-)h(w)o(cs)166 1381 y Fq(MPI)f(do)q(es)g(not)f(require)
i(the)f(existence)h(of)e(an)h(underlying)h(\\virtual)f(mac)o(hine")h
(mo)q(del,)g(in)f(whic)o(h)75 1437 y(there)h(is)g(a)g(consisten)o(t)g
(global)g(view)h(of)e(an)h(MPI)g(application,)h(and)f(an)g(implicit)i
(\\op)q(erating)e(system")75 1494 y(managing)k(resources)f(and)h(pro)q
(cesses.)28 b(F)l(or)17 b(instance,)i(pro)q(cesses)f(spa)o(wned)g(b)o
(y)g(one)f(task)g(ma)o(y)g(not)75 1550 y(b)q(e)i(visible)h(to)e
(another;)h(additional)h(hosts)e(added)h(to)e(the)i(run)o(time)f(en)o
(vironmen)o(t)h(b)o(y)f(one)h(pro)q(cess)75 1607 y(ma)o(y)13
b(not)h(b)q(e)h(visible)i(in)e(another)e(pro)q(cess;)i(tasks)e(spa)o
(wned)i(b)o(y)f(di\013eren)o(t)g(pro)q(cesses)h(ma)o(y)e(not)h(b)q(e)h
(au-)75 1663 y(tomatically)g(distributed)h(o)o(v)o(er)d(a)o(v)m
(ailable)k(resources.)i(MPI)c(do)q(es)f(require,)h(ho)o(w)o(ev)o(er,)f
(that)g(a)g(pro)q(cess)75 1720 y(b)q(e)k(a)o(w)o(are)e(of)h(its)g(o)o
(wn)g(c)o(hanges)h(to)e(the)i(run)o(time)f(en)o(vironmen)o(t.)27
b(F)l(or)17 b(instance,)h(it)g(can)f(b)q(e)h(noti\014ed)75
1776 y(when)e(its)f(c)o(hildren)i(die;)f(tasks)e(whic)o(h)i(it)g(spa)o
(wns)f(will)i(b)q(e)e(distributed)i(in)f(some)f(sane)g(manner,)g(etc.)
189 1867 y Fg(A)n(dvic)n(e)22 b(to)h(implementors.)86
b Fq(A)23 b(virtual)g(mac)o(hine)h(abstraction)e(is)h(appropriate)g(in)
h(most)189 1923 y(en)o(vironmen)o(ts)15 b(and)g(should)g(b)q(e)h(part)e
(of)g(a)h(\\high-qualit)o(y")h(implemen)o(tation.)21
b(In)15 b(other)f(cases,)189 1980 y(pro)o(viding)19 b(the)g(virtual)g
(mac)o(hine)g(abstraction)f(ma)o(y)g(add)g(to)g(m)o(uc)o(h)h(baggage)e
(\(e.g.,)h(daemon)189 2036 y(pro)q(cesses\))d(or)g(inhibit)i(p)q
(ortabilit)o(y)l(.)k(\()p Fg(End)16 b(of)g(advic)n(e)g(to)h
(implementors.)p Fq(\))166 2127 y(In)o(teraction)12 b(b)q(et)o(w)o(een)
g(MPI)g(and)g(the)f(run)o(time)i(en)o(vironmen)o(t)f(is)g(limited)i(to)
d(the)h(follo)o(wing)g(areas:)143 2229 y Fn(\017)23 b
Fq(A)15 b(pro)q(cess)g(ma)o(y)g(start)f(new)h(pro)q(cesses)h(with)f
Fm(MPI)p 1082 2229 V 16 w(SP)l(A)-5 b(WN)p Fq(,)16 b
Fm(MPI)p 1359 2229 V 16 w(ST)l(ART)p 1517 2229 V 17 w(A)l(TT)l(A)o(CH)p
Fq(,)g(or)189 2285 y Fm(MPI)p 274 2285 V 15 w(ST)l(ART)p
431 2285 V 18 w(INDEPENDENT)p Fq(.)e(It)h(ma)o(y)e(kill)k(pro)q(cesses)
d(it)h(has)f(spa)o(wned)h(\(and)f(p)q(ossibly)i(oth-)189
2342 y(ers\))e(and)i(ma)o(y)e(b)q(e)i(noti\014ed)g(when)g(pro)q(cesses)
g(die)g(or)e(b)q(ecome)i(unreac)o(hable.)189 2499 y Fe(Discussion)o(:)
38 b Fd(W)m(e)14 b(don't)g(ha)o(v)o(e)h Fb(MPI)p 815
2499 13 2 v 14 w(ALLOCA)m(TE)e Fd(an)o(y)i(more,)e(since)i(the)h(run)o
(time)d(en)o(vironmen)o(t)h(has)189 2555 y(dissolv)o(ed)k(in)o(to)g
(the)h(bac)o(kground)g(\(i.e.,)f(w)o(e)h(ha)o(v)o(e)f(no)g(handle)h(to)
f(it\).)32 b(Resources)20 b(can)f(b)q(e)g(allo)q(cated)189
2612 y(through)14 b(the)g(run)o(time-en)o(vironmen)o(t)e(API,)h(or)h
(through)g Fc(mpirun)p Fd(.)1967 46 y Fj(1)1967 103 y(2)1967
159 y(3)1967 215 y(4)1967 272 y(5)1967 328 y(6)1967 385
y(7)1967 441 y(8)1967 498 y(9)1959 554 y(10)1959 611
y(11)1959 667 y(12)1959 724 y(13)1959 780 y(14)1959 836
y(15)1959 893 y(16)1959 949 y(17)1959 1006 y(18)1959
1062 y(19)1959 1119 y(20)1959 1175 y(21)1959 1232 y(22)1959
1288 y(23)1959 1345 y(24)1959 1401 y(25)1959 1457 y(26)1959
1514 y(27)1959 1570 y(28)1959 1627 y(29)1959 1683 y(30)1959
1740 y(31)1959 1796 y(32)1959 1853 y(33)1959 1909 y(34)1959
1966 y(35)1959 2022 y(36)1959 2078 y(37)1959 2135 y(38)1959
2191 y(39)1959 2248 y(40)1959 2304 y(41)1959 2361 y(42)1959
2417 y(43)1959 2474 y(44)1959 2530 y(45)1959 2587 y(46)1959
2643 y(47)1959 2699 y(48)p eop
%%Page: 5 7
5 6 bop 75 -100 a Fk(1.2.)34 b(THE)15 b(MPI-2)g(D)o(YNAMIC)g(PR)o
(OCESS)h(MODEL)775 b Fq(5)143 45 y Fn(\017)23 b Fq(When)c(a)g(pro)q
(cess)g(spa)o(wns)f(a)h(c)o(hild)i(pro)q(cess,)e(it)g(optionlly)i
(passes)e(a)f(string)h(to)g(the)g(run)o(time)189 102
y(en)o(vironmen)o(t)14 b(to)g(indicate)h(where)g(the)f(pro)q(cess)g
(should)i(b)q(e)e(started.)19 b(The)c(string)f(is)g(opaque)h(to)189
158 y(MPI.)143 252 y Fn(\017)23 b Fq(A)13 b(prede\014ned)i(atrribute,)f
Fm(MPI)p 743 252 14 2 v 16 w(UNIVERSE)p 973 252 V 17
w(SIZE)p Fq(,)f(of)g Fm(MPI)p 1241 252 V 16 w(COMM)p
1399 252 V 16 w(W)o(ORLD)h Fq(can)f(b)q(e)i(queried)189
308 y(to)f(\014nd)i(out)f(ho)o(w)g(man)o(y)g(pro)q(cesses)g(can)h
(usefully)h(b)q(e)f(started)e(altogether.)20 b(One)c(can)f(subtract)189
365 y(the)d(size)i(of)e Fm(MPI)p 482 365 V 16 w(COMM)p
640 365 V 16 w(W)o(ORLD)h Fq(from)f(this)h(v)m(alue)g(to)f(\014nd)i
(out)e(ho)o(w)g(man)o(y)g(pro)q(cesses)h(migh)o(t)189
421 y(usefully)k(b)q(e)e(started)g(in)h(addition)g(to)f(those)g
(already)g(running.)166 603 y Fe(Discussion:)41 b Fd(It)16
b(seems)f(that)h(a)f(pro)q(cess)j(should)d(b)q(e)i(able)e(to)h(query)g
(the)g(run)o(time)e(en)o(vironmen)o(t)h(in)g(a)75 653
y(v)o(ery)g(simple)e(w)o(a)o(y)m(.)20 b(The)15 b(main)e(thing)h(I'm)f
(w)o(orried)i(ab)q(out)f(is)h(that)g(90\045)f(of)g(\\dynamic")f
(programs)g(will)g(w)o(an)o(t)75 703 y(to)j(kno)o(w)f(only)g(ho)o(w)g
(man)o(y)f(pro)q(cesses)19 b(to)c(spa)o(wn)h(\(i.e.,)f(ho)o(w)g(man)o
(y)f(a)o(v)n(ailable)g(pro)q(cessors\).)26 b(The)16 b(next)g(most)75
753 y(common)c(thing)i(ma)o(y)f(b)q(e)j(ho)o(w)e(man)o(y)f(hosts)i(are)
h(there)g(of)e(a)g(giv)o(en)h(arc)o(hitecture.)22 b(The)16
b(next)f(migh)o(t)e(b)q(e)i(what)75 803 y(are)g(their)g(names.)20
b(A)15 b(slipp)q(ery)g(slop)q(e.)21 b(It)15 b(w)o(ould)f(b)q(e)h(nice)h
(to)e(do)h(a)o(w)o(a)o(y)e(with)i(all)e(resource)k(issues,)f(but)f(w)o
(ould)75 853 y(w)o(e)f(wind)g(up)g(with)f(zero)i(p)q(ortabilit)o(y?)i
(-)c(w)o(cs)166 902 y(My)f(p)q(osition)f(on)h(the)g(slipp)q(ery)g(slop)
q(e)g(is)g(on)g(the)g(\014rst)h(step:)18 b(the)13 b(pro)o(vision)e(of)g
(the)h Fb(MPI)p 1566 902 13 2 v 15 w(UNIVERSE)p 1779
902 V 13 w(SIZE)75 952 y Fd(attribute.)19 b(-)13 b(RL)75
1157 y Fi(1.2.3)49 b(Applications)18 b(Requiring)f(Direct)e
(Communication)i(with)g(the)e(Runtime)h(System)75 1242
y Fq(The)f(existing)g(MPI)g(sp)q(eci\014cation)i(is)e(adequate)f(for)g
(most)g(parallel)i(applications.)21 b(In)16 b(these)e(applica-)75
1299 y(tions,)i(run)o(time)h(en)o(vironmen)o(t,)f(whether)g(simple)i
(or)d(elab)q(orate,)h(allo)q(cates)h(resources)f(and)h(manages)75
1355 y(user)k(pro)q(cesses)g(without)g(in)o(teracting)g(with)g(the)g
(application)h(program.)36 b(In)21 b(other)g(applications,)75
1412 y(ho)o(w)o(ev)o(er,)c(it)h(is)f(necessary)h(that)f(the)g
Fg(user)i(level)i Fq(of)c(the)g(application)i(comm)o(unicate)f(with)g
(the)g(run-)75 1468 y(time)c(en)o(vironmen)o(t.)19 b(Here)14
b(w)o(e)f(describ)q(e)i(three)e(broad)g(classes)h(of)f(suc)o(h)h
(applications.)21 b(In)14 b(Section)g(1.5)75 1525 y(w)o(e)h(will)i(giv)
o(e)e(concrete)h(examples)g(of)e(eac)o(h)i(of)e(these)i(classes.)75
1645 y Fm(T)l(ask)c(F)o(a)o(rming)43 b Fq(By)11 b(a)g(\\task)f(farm")g
(application)i(w)o(e)f(mean)g(a)f(program)g(that)g(manages)h(the)g
(execution)75 1701 y(of)j(a)g(set)g(of)g(other,)g(p)q(ossibly)i(sequen)
o(tial,)g(programs.)i(This)d(situation)g(often)f(arises)h(when)g(one)f
(w)o(an)o(ts)75 1758 y(to)19 b(run)h(the)g(same)f(sequen)o(tial)i
(program)e(man)o(y)g(times)h(with)g(v)m(arying)h(input)f(data.)33
b(W)l(e)20 b(call)h(eac)o(h)75 1814 y(in)o(v)o(o)q(cation)14
b(of)e(the)i(sequen)o(tial)g(program)e(a)h Fg(task)p
Fq(.)19 b(It)13 b(is)h(often)f(simplest)h(to)f(\\parallelize")i(the)e
(existing)75 1871 y(sequen)o(tial)h(program)d(b)o(y)i(writing)g(a)f
(parallel)j(\\harness")d(program)f(that)h(in)i(turn)e(dev)o(otes)h(a)f
(separate,)75 1927 y(transien)o(t)j(pro)q(cess)g(to)g(eac)o(h)g(task.)k
(When)d(one)f(task)f(\014nishes,)i(a)f(new)g(pro)q(cess)h(is)f(started)
g(to)f(execute)75 1983 y(the)19 b(next)f(one.)30 b(Ev)o(en)19
b(if)g(the)f(resources)h(allo)q(cated)g(to)f(the)h(job)f(are)g
(\014xed,)i(the)f(\\harness")f(pro)q(cess)75 2040 y(m)o(ust)13
b(in)o(teract)g(frequen)o(tly)h(with)g(the)f(pro)q(cess)h(manager)f
(\(ev)o(en)g(if)h(this)g(is)g(just)f Fh(rsh)p Fq(,)g(to)g(start)f(the)i
(new)75 2096 y(pro)q(cesses)i(with)f(the)h(new)f(input)h(data\).)j(In)d
(man)o(y)f(cases)g(this)h(harness)f(can)g(b)q(e)h(written)g(in)g(a)e
(simple)75 2153 y(scripting)k(language)f(lik)o(e)g Fh(csh)g
Fq(or)f Fh(perl)p Fq(,)g(but)h(some)f(users)h(prefer)g(to)f(use)h(F)l
(ortran)e(or)h(C.)g(Note)h(that)75 2209 y(it)f(is)g(an)g(explicit)i
(goal)d(of)h(the)f(MPI)h(dynamic)h(pro)q(cess)f(arc)o(hitecture)g(to)f
(allo)o(w)h(the)f(managemen)o(t)g(of)75 2266 y(non-MPI)h(pro)q(cesses.)
75 2386 y Fm(Dynamic)f(numb)q(er)i(of)e(p)o(ro)q(cesses)j(in)e(pa)o
(rallel)f(job)46 b Fq(The)16 b(program)f(wishes)i(to)e(decide)j
Fg(inside)g Fq(the)e(pro-)75 2442 y(gram)e(to)g(adjust)g(the)g(n)o(um)o
(b)q(er)h(of)f(pro)q(cesses)h(to)f(\014t)h(the)f(size)i(of)e(the)h
(problem.)20 b(F)l(urthermore,)14 b(it)h(ma)o(y)75 2499
y(con)o(tin)o(ue)k(to)g(add)g(and)g(subtract)f(pro)q(cesses)h(during)h
(the)f(computation)g(to)f(\014t)h(separate)f(phases)h(of)75
2555 y(the)g(computation,)h(some)f(of)g(whic)o(h)h(ma)o(y)f(b)q(e)h
(more)f(parallel)i(than)e(others.)32 b(In)20 b(order)f(to)g(do)g(this,)
75 2612 y(the)i(application)i(program)d(will)j(ha)o(v)o(e)e(to)g(in)o
(teract)g(with)h(the)f(resource)g(manager)g(\(ho)o(w)o(ev)o(er)f(it)h
(is)75 2668 y(implemen)o(ted\))e(to)d(request)i(and)f(acquire)h(or)f
(return)g(computational)h(resources.)26 b(It)17 b(will)i(also)e(ha)o(v)
o(e)-32 46 y Fj(1)-32 103 y(2)-32 159 y(3)-32 215 y(4)-32
272 y(5)-32 328 y(6)-32 385 y(7)-32 441 y(8)-32 498 y(9)-40
554 y(10)-40 611 y(11)-40 667 y(12)-40 724 y(13)-40 780
y(14)-40 836 y(15)-40 893 y(16)-40 949 y(17)-40 1006
y(18)-40 1062 y(19)-40 1119 y(20)-40 1175 y(21)-40 1232
y(22)-40 1288 y(23)-40 1345 y(24)-40 1401 y(25)-40 1457
y(26)-40 1514 y(27)-40 1570 y(28)-40 1627 y(29)-40 1683
y(30)-40 1740 y(31)-40 1796 y(32)-40 1853 y(33)-40 1909
y(34)-40 1966 y(35)-40 2022 y(36)-40 2078 y(37)-40 2135
y(38)-40 2191 y(39)-40 2248 y(40)-40 2304 y(41)-40 2361
y(42)-40 2417 y(43)-40 2474 y(44)-40 2530 y(45)-40 2587
y(46)-40 2643 y(47)-40 2699 y(48)p eop
%%Page: 6 8
6 7 bop 75 -100 a Fq(6)951 b Fk(CHAPTER)16 b(1.)34 b(D)o(YNAMIC)15
b(PR)o(OCESSES)75 45 y Fq(to)h(in)o(teract)h(with)g(the)g(pro)q(cess)g
(manager)g(to)f(request)h(that)f(pro)q(cesses)h(b)q(e)h(started)e(and)h
(in)h(order)f(to)75 102 y(mak)o(e)12 b(the)g(new)h(pro)q(cesses)f(kno)o
(wn)g(to)g(the)g(message-passing)g(library)h(so)f(that)g(the)g(larger)g
(\(or)g(smaller\))75 158 y(group)j(of)g(pro)q(cesses)g(can)h(comm)o
(unicate.)166 214 y(An)21 b(imp)q(ortan)o(t)f(t)o(yp)q(e)h(of)f
(dynamic)h(application)i(is)e(a)f(sca)o(v)o(enger)g(application.)38
b(A)20 b(sca)o(v)o(enger)75 271 y(application)j(is)g(\\em)o
(barassingly)f(parallel")h(in)f(the)g(sense)g(that)f(it)h(p)q(erforms)g
(a)f(large)h(n)o(um)o(b)q(er)g(of)75 327 y(completely)17
b(indep)q(enden)o(t)i(tasks.)i(If)c(the)f(n)o(um)o(b)q(er)g(of)g(tasks)
f(is)i(large)f(enough,)g(suc)o(h)g(an)g(application)75
384 y(can)k(mak)o(e)g(use)h(of)f(an)o(y)g(resources)g(that)g(b)q(ecome)
h(a)o(v)m(ailable.)37 b(Con)o(v)o(ersely)l(,)21 b(it)g(can)g(easily)g
(giv)o(e)f(up)75 440 y(resources)i(to)g(another)g(application.)42
b(Sca)o(v)o(enger)22 b(applications)i(are)e(excellen)o(t)i(for)e
(\014lling)i(in)f(the)75 497 y(\\holes")15 b(on)g(a)g(space-shared)h
(parallel)h(mac)o(hine,)f(allo)o(wing)g(it)f(to)g(ac)o(hiev)o(e)g(v)o
(ery)g(high)h(utilization.)75 617 y Fm(Client/Server)46
b Fq(This)15 b(situation)h(is)f(the)g(opp)q(osite)h(of)e(the)h
(situations)g(ab)q(o)o(v)o(e,)g(where)g(pro)q(cesses)g(come)75
673 y(and)21 b(go)f(up)q(on)h(request.)37 b(In)21 b(the)g(clien)o
(t/serv)o(er)g(mo)q(del,)i(one)e(set)f(of)g(pro)q(cesses)h(is)g
(relativ)o(ely)h(p)q(er-)75 730 y(manen)o(t)17 b(\(the)g(serv)o(er,)g
(whic)o(h)h(w)o(e)f(assume)g(here)h(ma)o(y)e(b)q(e)i(a)f(parallel)i
(program\).)24 b(A)o(t)17 b(unpredictable)75 786 y(times,)e(another)f
(\(p)q(ossibly)h(parallel\))h(program)d(\(the)i(clien)o(t\))g(b)q
(egins)h(execution)f(and)g(m)o(ust)f(establish)75 843
y(comm)o(unication)k(with)f(the)g(serv)o(er.)26 b(In)17
b(this)h(case)f(the)g(pro)q(cess)g(manager)g(m)o(ust)f(pro)o(vide)i(a)f
(w)o(a)o(y)f(for)75 899 y(the)e(clien)o(t)h(to)e(lo)q(cate)h(the)g
(serv)o(er)f(and)h(comm)o(unicate)g(to)f(the)g(message-passing)h
(library)h(that)e(it)h(m)o(ust)75 956 y(no)o(w)h(supp)q(ort)g(comm)o
(unications)h(with)f(a)g(new)h(collection)h(of)d(pro)q(cesses.)166
1012 y(It)19 b(is)g(curren)o(tly)h(p)q(ossible)g(to)f(write)g(the)g
(parallel)h(clien)o(ts)g(and)f(serv)o(ers)g(in)g(MPI,)g(but)g(b)q
(ecause)75 1068 y(MPI)g(do)q(es)g(not)g(pro)o(vide)h(the)f(necessary)g
(in)o(terfaces)g(b)q(et)o(w)o(een)h(the)f(application)i(program)d(and)h
(the)75 1125 y(resource)f(manager)g(or)g(pro)q(cess)h(manager,)f(other)
g(nonp)q(ortable,)h(mac)o(hine)g(sp)q(eci\014c)i(libraries)f(m)o(ust)75
1181 y(b)q(e)15 b(called)h(in)f(order)f(for)g(the)g(clien)o(t)h(and)g
(serv)o(er)f(to)f(comm)o(unicate)i(with)g(one)f(another.)19
b(On)c(the)f(other)75 1238 y(hand,)g(MPI)g(do)q(es)g(con)o(tain)g(sev)o
(eral)f(features)h(that)f(mak)o(e)g(it)h(relativ)o(ely)h(easy)e(to)g
(add)h(suc)o(h)g(in)o(terfaces,)75 1294 y(and)h(w)o(e)g(prop)q(ose)h(b)
q(oth)f(a)g(simple)h(in)o(terface)g(and)f(a)g(more)g(complex)h(but)f
(\015exible)j(one.)75 1437 y Fl(1.3)59 b(Pro)r(cess)19
b(Manager)h(Interface)75 1541 y Fi(1.3.1)49 b(Pro)q(cesses)15
b(in)i(MPI)75 1626 y Fq(A)e(pro)q(cess)h(is)g(represen)o(ted)g(in)g
(MPI)f(b)o(y)g(a)g(\(group,)g(rank\))f(pair.)21 b(A)15
b(pro)q(cess)h(ma)o(y)f(or)f(ma)o(y)h(not)g(b)q(e)h(an)75
1683 y(\\MPI)h(pro)q(cess")g(in)h(that)f(it)g(ma)o(y)f(or)h(ma)o(y)g
(not)f(call)j Fm(MPI)p 1102 1683 14 2 v 15 w(INIT)p Fq(.)e(One)h(can't)
e(comm)o(unicate)i(directly)75 1739 y(with)d(a)f(pro)q(cess)h(\(that)e
(requires)j(a)e(comm)o(unicator\),)f(but)i(signals)g(can)g(b)q(e)g(sen)
o(t)g(to)e(one.)20 b(Note)14 b(that)g(a)75 1796 y(\(group,)g(rank\))h
(iden)o(ti\014cation)i(is)f(not)e(unique)j(b)q(ecause)f(a)f(pro)q(cess)
h(ma)o(y)e(b)q(elong)i(to)f(sev)o(eral)g(groups.)166
1935 y Fe(Discussion:)59 b Fd(The)21 b(alternativ)o(e)f(is)g(to)g(ha)o
(v)o(e)g(an)h Fb(MPI)p 1114 1935 13 2 v 14 w(Pro)q(cess)f
Fd(ob)r(ject.)38 b(A)21 b(stra)o(w)f(v)o(ote)h(sho)o(w)o(ed)f(a)75
1991 y(preference)c(for)e(the)g(\(group,)g(rank\))g(alternativ)o(e.)k
(W)m(e)13 b(will)g(regret)i(this.)j({)13 b(RL.)166 2131
y Fq(MPI)i(pro)o(vides)h(no)f(guaran)o(tees)g(on)g(the)g(order)g(of)g
(op)q(erations)h(b)q(et)o(w)o(een)f(messages)g(and)h(signals.)75
2187 y(If)e(a)f(message)h(and)g(a)f(signal)h(are)g(sen)o(t)f(to)g(a)h
(pro)q(cess,)g(the)g(signal)g(ma)o(y)f(arriv)o(e)h(or)f(b)q(e)h(pro)q
(cessed)h(b)q(efore)75 2243 y(the)g(message,)g(dep)q(ending)i(on)e
(hardw)o(are)g(and)g(MPI)g(implemen)o(tation)i(details.)166
2383 y Fe(Discussion:)34 b Fd(A)14 b(bad)g(programming)d(practice)k
(that)f(has)g(b)q(een)h(seen)g(b)o(y)f(naiv)o(e)g(users)h(of)f(systems)
g(that)75 2439 y(pro)o(vide)f(b)q(oth)g(messages)h(and)f(signals)f(is)i
(to)f(send)h(a)f(pro)q(cess)i(a)e(message)g(and)g(then)h(signal)e(it)h
(to)g(w)o(ak)o(e)g(up)g(and)75 2495 y(receiv)o(e)i(the)g(message.)i
(This)d(needs)h(to)f(b)q(e)h(plainly)d(forbidden.)18
b(-)13 b(A)o(G.)1967 46 y Fj(1)1967 103 y(2)1967 159
y(3)1967 215 y(4)1967 272 y(5)1967 328 y(6)1967 385 y(7)1967
441 y(8)1967 498 y(9)1959 554 y(10)1959 611 y(11)1959
667 y(12)1959 724 y(13)1959 780 y(14)1959 836 y(15)1959
893 y(16)1959 949 y(17)1959 1006 y(18)1959 1062 y(19)1959
1119 y(20)1959 1175 y(21)1959 1232 y(22)1959 1288 y(23)1959
1345 y(24)1959 1401 y(25)1959 1457 y(26)1959 1514 y(27)1959
1570 y(28)1959 1627 y(29)1959 1683 y(30)1959 1740 y(31)1959
1796 y(32)1959 1853 y(33)1959 1909 y(34)1959 1966 y(35)1959
2022 y(36)1959 2078 y(37)1959 2135 y(38)1959 2191 y(39)1959
2248 y(40)1959 2304 y(41)1959 2361 y(42)1959 2417 y(43)1959
2474 y(44)1959 2530 y(45)1959 2587 y(46)1959 2643 y(47)1959
2699 y(48)p eop
%%Page: 7 9
7 8 bop 75 -100 a Fk(1.3.)34 b(PR)o(OCESS)16 b(MANA)o(GER)f(INTERF)-5
b(A)o(CE)916 b Fq(7)75 45 y Fi(1.3.2)49 b(Sta)o(rting)16
b(Pro)q(cesses)f(-)h(Simple)h(Interface)75 131 y Fq(The)e(follo)o(wing)
h(routine)g(is)g(the)f(simplest)h(w)o(a)o(y)e(to)h(start)f(MPI)h(pro)q
(cesses.)75 282 y Fm(MPI)p 160 282 14 2 v 16 w(SP)l(A)-5
b(WN\(executable,)17 b(a)o(rguments,)e(n,)g(comm,)e(intercomm\))117
359 y Fd(IN)155 b Fm(executable)391 b Fd(executable)15
b(\014le)f(con)o(taining)f(program)f(to)i(b)q(e)g(run)117
433 y(IN)155 b Fm(a)o(rguments)391 b Fd(argumen)o(ts)13
b(for)h(the)g(program)117 508 y(IN)155 b Fm(n)564 b Fd(n)o(um)o(b)q(er)
13 b(of)h(pro)q(cesses)i(to)e(start)117 582 y(IN)155
b Fm(comm)470 b Fd(comm)o(unicator)11 b(of)j(group)f(of)h(spa)o(wning)f
(pro)q(cesses)117 657 y(OUT)108 b Fm(intercomm)384 b
Fd(in)o(tercomm)o(unicator)7 b(b)q(et)o(w)o(een)k(original)c(group)i
(and)g(the)h(newly)905 713 y(spa)o(wned)15 b(group)166
838 y Fm(MPI)p 251 838 V 16 w(SP)l(A)-5 b(WN)15 b Fq(is)g(collectiv)o
(e)h(o)o(v)o(er)e Fm(comm)f Fq(and)h(the)h(newly)g(created)g(pro)q
(cesses.)20 b(It)14 b(starts)g Fm(n)h Fq(iden-)75 894
y(tical)k(copies)g(of)f Fm(executable)i Fq(in)f(a)f(w)o(a)o(y)f(whic)o
(h)i(is)g(determined)g(b)o(y)f(the)h(run)o(time)f(en)o(vironmen)o(t)h
(\(i.e.,)75 950 y(the)c(user)g(has)g(no)g(con)o(trol)f(o)o(v)o(er)g
(where)i(the)f(pro)q(cesses)g(go,)f(though)h(a)f(high)i(qualit)o(y)g
(implemen)o(tation)75 1007 y(will)j(distribute)g(them)f(ev)o(enly)h(o)o
(v)o(er)e(a)o(v)m(ailable)i(resources\).)27 b(The)18
b(spa)o(wned)g(pro)q(cesses)g(are)g Fg(r)n(e)n(quir)n(e)n(d)75
1063 y Fq(to)i(call)h Fm(MPI)p 309 1063 V 16 w(INIT)p
Fq(,)e(whic)o(h)i(is)g(collectiv)o(e)h(with)f Fm(MPI)p
1025 1063 V 16 w(SP)l(A)-5 b(WN)21 b Fq(in)g(the)f(paren)o(t.)35
b(The)21 b(in)o(tercomm)o(u-)75 1120 y(nicator)h(is)g(kno)o(wn)f(in)i
(the)e(c)o(hildren)j(as)d Fm(MPI)p 909 1120 V 16 w(COMM)p
1067 1120 V 16 w(P)l(ARENT)p Fq(.)i(The)f(c)o(hildren)h(ha)o(v)o(e)e
(their)h(o)o(wn)75 1176 y Fm(MPI)p 160 1176 V 16 w(COMM)p
318 1176 V 16 w(W)o(ORLD)15 b Fq(whic)o(h)h(is)g(separate)f(from)f
(that)h(of)f(the)i(paren)o(t.)166 1315 y Fe(Discussion:)49
b Fd(The)19 b(\\pre-allo)q(cated)e(resources")j(to)e(b)q(e)g(used)h(to)
f(run)g(spa)o(wned)g(pro)q(cesses)j(could)c(b)q(e)75
1372 y(sp)q(eci\014ed)g(in)d(a)h(p)q(ortable)h(w)o(a)o(y)e(if)g(w)o(e)i
(standardize)g Fc(mpirun)p Fd(.)21 b(A)15 b(set)h(of)e(argumen)o(ts)h
(or)g(a)g(\014le)g(argumen)o(t)f(could)75 1428 y(describ)q(e)i(a)d
(virtual)g(mac)o(hine.)75 1632 y Fi(1.3.3)49 b(Sta)o(rting)16
b(Pro)q(cesses)f(-)h(F)o(ull)h(Interface)75 1718 y Fq(While)g
Fm(MPI)p 293 1718 V 15 w(SP)l(A)-5 b(WN)16 b Fq(is)g(su\016cien)o(t)g
(for)f(most)f(cases,)h(it)g(do)q(es)h(not)f(allo)o(w)g(the)g(follo)o
(wing:)143 1808 y Fn(\017)23 b Fq(Spa)o(wning)16 b(of)g(non-MPI)g(pro)q
(cesses)h(or)e(MPI)i(pro)q(cesses)f(whic)o(h)h(do)f(not)g(wish)g(to)g
(\(or)f(need)i(to\))189 1864 y(comm)o(unicate)e(with)h(their)f(paren)o
(t.)143 1957 y Fn(\017)23 b Fq(Spa)o(wning)15 b(of)g(m)o(ultiple)i
(binaries)g(whic)o(h)f(all)g(ha)o(v)o(e)f(the)g(same)g
Fm(MPI)p 1369 1957 V 16 w(COMM)p 1527 1957 V 16 w(W)o(ORLD)p
Fq(.)143 2049 y Fn(\017)23 b Fq(Spa)o(wning)15 b(of)g(the)g(same)g
(binary)h(with)g(di\013eren)o(t)f(argumen)o(ts.)166 2139
y(An)f(additional)i(complication)g(is)f(that)e(on)i(man)o(y)e(curren)o
(t)i(parallel)g(mac)o(hines,)g(comm)o(unication)75 2195
y(b)q(et)o(w)o(een)h(pro)q(cesses)f(spa)o(wned)g(at)g(di\013eren)o(t)g
(times)h(ma)o(y)e(b)q(e)i(slo)o(w.)166 2252 y(The)e(general)g(mec)o
(hanism)h(for)e(starting)h(pro)q(cesses)g(requires)h(t)o(w)o(o)d
(steps.)20 b(First,)13 b(pro)q(cess)h(groups)75 2308
y(are)20 b(initialized)k(with)c(one)h(or)e(more)h(calls)h(to)f
Fm(MPI)p 999 2308 V 16 w(GROUP)p 1167 2308 V 18 w(INIT)p
Fq(.)f(Eac)o(h)h(of)g(these)g(calls)i(tak)o(es)d(an)75
2365 y(executable,)c(an)e(argumen)o(t)g(list,)h(and)f(a)g(string)h
(indicating)h(where)f(the)f(pro)q(cesses)h(should)g(b)q(e)g(started,)75
2421 y(returning)21 b(a)f(group)g(handle.)37 b(The)21
b(string)g(is)g(opaque)f(to)g(MPI)h(but)f(ma)o(y)g(b)q(e)h(meaningful)h
(to)e(the)75 2478 y(run)o(time)c(system.)j(Groups)c(can)g(b)q(e)h
(joined)g(together)f(using)g(MPI-1)h(group)e(functions.)166
2534 y(The)j(second)h(step)f(starts)e(the)i(pro)q(cesses)h(sp)q
(eci\014ed)h(b)o(y)e(a)f(group)h(handle)h(and)f(places)h(them)f(all)75
2591 y(in)f(a)f(single)h Fm(MPI)p 377 2591 V 16 w(COMM)p
535 2591 V 17 w(W)o(ORLD)p Fq(.)166 2647 y(The)10 b(t)o(w)o(o-step)f
(pro)q(cess)i(not)e(only)i(allo)o(ws)f(for)g(all)h(the)f(c)o(hildren)i
(to)e(ha)o(v)o(e)g(the)g(same)g Fm(MPI)p 1667 2647 V
15 w(COMM)p 1824 2647 V 17 w(W)o(ORLD)p Fq(,)75 2704
y(but)17 b(it)g(also)g(giv)o(es)g(the)h(user)f(the)g(\015exibilit)o(y)i
(needed)g(to)d(run)h(applications)i(across)d(a)h(net)o(w)o(ork.)24
b(The)-32 46 y Fj(1)-32 103 y(2)-32 159 y(3)-32 215 y(4)-32
272 y(5)-32 328 y(6)-32 385 y(7)-32 441 y(8)-32 498 y(9)-40
554 y(10)-40 611 y(11)-40 667 y(12)-40 724 y(13)-40 780
y(14)-40 836 y(15)-40 893 y(16)-40 949 y(17)-40 1006
y(18)-40 1062 y(19)-40 1119 y(20)-40 1175 y(21)-40 1232
y(22)-40 1288 y(23)-40 1345 y(24)-40 1401 y(25)-40 1457
y(26)-40 1514 y(27)-40 1570 y(28)-40 1627 y(29)-40 1683
y(30)-40 1740 y(31)-40 1796 y(32)-40 1853 y(33)-40 1909
y(34)-40 1966 y(35)-40 2022 y(36)-40 2078 y(37)-40 2135
y(38)-40 2191 y(39)-40 2248 y(40)-40 2304 y(41)-40 2361
y(42)-40 2417 y(43)-40 2474 y(44)-40 2530 y(45)-40 2587
y(46)-40 2643 y(47)-40 2699 y(48)p eop
%%Page: 8 10
8 9 bop 75 -100 a Fq(8)951 b Fk(CHAPTER)16 b(1.)34 b(D)o(YNAMIC)15
b(PR)o(OCESSES)75 45 y Fq(simple)i(example)g(is)f(w)o(ere)f
(executables)i(m)o(ust)e(b)q(e)h(matc)o(hed)g(with)g(particular)g(w)o
(orkstations)e(but)i(the)75 102 y(user)f(also)h(w)o(an)o(ts)e(all)i
(the)f(pro)q(cesses)h(on)f(all)h(the)f(w)o(orkstations)f(w)o(orking)h
(together.)166 158 y(There)c(are)f(t)o(w)o(o)g(options)h(at)f(the)h
(second)g(step.)18 b(If)11 b(the)g(paren)o(t)f(pro)q(cess)h(is)h
(starting)e(MPI)h(pro)q(cesses)75 214 y(that)21 b(will)j(comm)o
(unicate)e(bac)o(k)f(with)i(the)e(paren)o(t)h(pro)q(cess)g(at)f(some)h
(p)q(oin)o(t)g(in)h(the)e(future,)j(then)75 271 y(the)19
b(application)h(should)g(call)g Fm(MPI)p 715 271 14 2
v 16 w(ST)l(ART)p 873 271 V 17 w(A)l(TT)l(A)o(CH)p Fq(.)g(This)f
(function)h(blo)q(c)o(ks)f(un)o(til)h(the)f(c)o(hildren)75
327 y(establish)g(an)f(in)o(ter-comm)o(unicator)h(with)f(the)g(paren)o
(t)g(group.)29 b(The)18 b(syc)o(hronization)h(o)q(ccurs)f(when)75
384 y(the)12 b(c)o(hildren)j(call)e Fm(MPI)p 486 384
V 16 w(INIT)p Fq(.)e(When)i Fm(MPI)p 827 384 V 16 w(INIT)f
Fq(is)h(called,)h(the)e(v)m(arables)h Fm(MPI)p 1456 384
V 16 w(COMM)p 1614 384 V 17 w(W)o(ORLD)f Fq(and)75 440
y Fm(MPI)p 160 440 V 16 w(COMM)p 318 440 V 16 w(P)l(ARENT)17
b Fq(\(in)o(ter-comm)o(unicator\))d(are)h(set)g(in)h(the)f(c)o
(hildren.)166 497 y(The)i(adv)m(an)o(tage)f(of)h(using)h
Fm(MPI)p 737 497 V 15 w(INIT)f Fq(in)h(this)f(w)o(a)o(y)f(is)h(that)g
(MPI-1)f(programs)g(can)h(b)q(e)h(started)75 553 y(with)e(the)f(new)g
(MPI-2)g(functions)h(without)f(mo)q(di\014cation)i(to)d(these)i
(programs.)166 610 y(The)f(other)f(option)h(in)g(the)f(second)i(step)e
(is)h(to)f(call)i Fm(MPI)p 1157 610 V 15 w(ST)l(ART)p
1314 610 V 18 w(INDEPENDENT)p Fq(.)e(This)h(func-)75
666 y(tion)d(do)q(es)f(not)g(w)o(ait)g(for)g(the)g(c)o(hildren)i(and)f
(is)g(exp)q(ected)g(to)f(b)q(e)h(used)g(when)g(the)f(c)o(hildren)j(are)
d(non-MPI)75 723 y(pro)q(cesses)18 b(or)f(when)i(the)e(c)o(hildren)j
(only)e(comm)o(unicate)g(among)g(themselv)o(es)g(and)g(not)f(bac)o(k)h
(to)f(the)75 779 y(paren)o(ts.)29 b(In)18 b(the)h(latter)f(case,)g(the)
h(MPI)p 817 779 V 16 w(COMM)p 985 779 V 16 w(P)l(ARENT)g(in)o(tercomm)o
(unicator)f(is)h(not)f(de\014ned)75 835 y(on)d(return)g(from)g(MPI)p
477 835 V 16 w(INIT.)166 892 y(Note)f(that)f Fm(MPI)p
457 892 V 16 w(GROUP)p 625 892 V 18 w(INIT)g Fq(and)i
Fm(MPI)p 915 892 V 16 w(GROUP)p 1083 892 V 17 w(ST)l(ART)p
1242 892 V 18 w(INDEPENDENT)f Fq(are)g(called)i(on)e(a)75
948 y(single)e(pro)q(cess,)g(while)h Fm(MPI)p 565 948
V 16 w(GROUP)p 733 948 V 18 w(ST)l(ART)p 893 948 V 17
w(A)l(TT)l(A)o(CH)f Fq(is)g(collectiv)o(e)g(o)o(v)o(er)f(a)g(paren)o(t)
f(comm)o(unicator)75 1005 y(and)15 b(the)h(spa)o(wned)f(pro)q(cesses.)
75 1156 y Fm(MPI)p 160 1156 V 16 w(GROUP)p 328 1156 V
18 w(INIT\(executable,)g(a)o(rguments,)g(n,)g(where,)h(group\))117
1233 y Fd(IN)155 b Fm(executable)391 b Fd(executable)15
b(\014le)f(con)o(taining)f(program)f(to)i(b)q(e)g(run)117
1308 y(IN)155 b Fm(a)o(rguments)391 b Fd(argumen)o(ts)13
b(for)h(the)g(program)117 1383 y(IN)155 b Fm(n)564 b
Fd(n)o(um)o(b)q(er)13 b(of)h(pro)q(cesses)i(to)e(start)117
1458 y(IN)155 b Fm(where)477 b Fd(A)13 b(string)f(telling)g(the)h(run)o
(time)e(system)h(where)i(to)e(start)h(the)905 1515 y(pro)q(cesses)k
(\(opaque)d(to)f(MPI,)h(or)g(NULL\))117 1590 y(OUT)108
b Fm(group)479 b Fd(iden)o(ti\014es)15 b(the)f(group)g(of)f(pro)q
(cesses)75 1809 y Fm(MPI)p 160 1809 V 16 w(GROUP)p 328
1809 V 18 w(ST)l(ART)p 488 1809 V 17 w(A)l(TT)l(A)o(CH\(mycomm,)f
(group,)j(new)o(comm\))117 1886 y Fd(IN)155 b Fm(mycomm)412
b Fd(comm)o(unicator)11 b(of)j(paren)o(ts)g(group)117
1961 y(IN)155 b Fm(group)479 b Fd(group)14 b(returned)i(b)o(y)d
Fb(MPI)p 1326 1961 13 2 v 15 w(GROUP)p 1483 1961 V 13
w(INIT)117 2036 y Fd(OUT)108 b Fm(new)o(comm)397 b Fd(in)o(ter-comm)o
(unicator)11 b(b)q(et)o(w)o(een)16 b(paren)o(t)e(and)g(c)o(hild)f
(groups)75 2255 y Fm(MPI)p 160 2255 14 2 v 16 w(GROUP)p
328 2255 V 18 w(ST)l(ART)p 488 2255 V 17 w(INDEPENDENT\(group\))117
2333 y Fd(IN)155 b Fm(group)479 b Fd(group)14 b(returned)i(b)o(y)d
Fb(MPI)p 1326 2333 13 2 v 15 w(GROUP)p 1483 2333 V 13
w(INIT)75 2522 y Fi(1.3.4)49 b(Pro)q(cess)15 b(Utilities)75
2608 y Fq(A)h(pro)q(cess)g(represen)o(ted)g(b)o(y)g(a)f(\(group,rank\))
f(pair)i(cannot)g(b)q(e)g(comm)o(unicated)h(with)f(directly)l(,)h(un)o
(til)75 2665 y(a)d(comm)o(unicator)g(is)h(constructed)f(con)o(taining)i
(it.)j(It)c(need)g(not)f(b)q(e)h(an)f(\\MPI)g(pro)q(cess")h(in)g(the)f
(sense)1967 46 y Fj(1)1967 103 y(2)1967 159 y(3)1967
215 y(4)1967 272 y(5)1967 328 y(6)1967 385 y(7)1967 441
y(8)1967 498 y(9)1959 554 y(10)1959 611 y(11)1959 667
y(12)1959 724 y(13)1959 780 y(14)1959 836 y(15)1959 893
y(16)1959 949 y(17)1959 1006 y(18)1959 1062 y(19)1959
1119 y(20)1959 1175 y(21)1959 1232 y(22)1959 1288 y(23)1959
1345 y(24)1959 1401 y(25)1959 1457 y(26)1959 1514 y(27)1959
1570 y(28)1959 1627 y(29)1959 1683 y(30)1959 1740 y(31)1959
1796 y(32)1959 1853 y(33)1959 1909 y(34)1959 1966 y(35)1959
2022 y(36)1959 2078 y(37)1959 2135 y(38)1959 2191 y(39)1959
2248 y(40)1959 2304 y(41)1959 2361 y(42)1959 2417 y(43)1959
2474 y(44)1959 2530 y(45)1959 2587 y(46)1959 2643 y(47)1959
2699 y(48)p eop
%%Page: 9 11
9 10 bop 75 -100 a Fk(1.3.)34 b(PR)o(OCESS)16 b(MANA)o(GER)f(INTERF)-5
b(A)o(CE)916 b Fq(9)75 45 y(that)15 b(it)h(migh)o(t)g(not)f(call)i
Fm(MPI)p 601 45 14 2 v 16 w(INIT)p Fq(.)d(On)j(the)f(other)f(hand,)h
(it)g(allo)o(ws)g(out-of-band)g(comm)o(unication,)75
102 y(suc)o(h)g(as)e(signals,)i(and)f(migh)o(t)g(b)q(e)h(a)f(useful)h
(concept)g(for)f(dealing)h(with)g(failures.)166 158 y(T)l(o)f(ask)g
(the)g(pro)q(cess)g(manager)g(to)f(deliv)o(er)j(signals)f(to)f(pro)q
(cesses,)g(w)o(e)g(use)75 309 y Fm(MPI)p 160 309 V 16
w(GROUP)p 328 309 V 18 w(SIGNAL\(group,)f(signal\))117
386 y Fd(IN)155 b Fm(group)479 b Fd(group)14 b(of)f(pro)q(cesses)k(to)c
(signal)117 461 y(IN)155 b Fm(signal)480 b Fd(signal)13
b(t)o(yp)q(e)h(\(in)o(t\))166 586 y Fq(It)22 b(is)g(the)f(resp)q
(onsibilit)o(y)j(of)d(an)h(implemen)o(tation)h(to)e(translate)g(b)q(et)
o(w)o(een)h(signals;)j(in)d(other)75 642 y(w)o(ords,)17
b(a)h Fh(SIGINT)f Fq(that)g(has)g(v)m(alue)i Fh(3)f Fq(on)g(system)f(A)
h(m)o(ust)f(b)q(e)h(deliv)o(ered)i(as)d(a)h Fh(SIGINT)f
Fq(on)g(system)75 699 y(B,)e(ev)o(en)h(if)f(system)g(B)h(uses)f(the)g
(v)m(alue)i Fh(5)e Fq(for)g Fh(SIGINT)p Fq(.)f(If)h(the)h(signal)g(can)
f(not)g(b)q(e)h(deliv)o(ered)h(b)q(ecause)75 755 y(there)e(is)h(no)e
(corresp)q(onding)i(signal,)g(the)f(error)f(co)q(de)i(is)f
Fm(MPI)p 1157 755 V 16 w(ERR)p 1258 755 V 17 w(INV)l(ALID)p
1447 755 V 16 w(SIGNAL)p Fq(.)g(In)h(a)e(qualit)o(y)75
812 y(implemen)o(tation,)20 b(the)e(full)h(range)f(of)g(POSIX)h
(signals)g(will)h(b)q(e)e(delev)o(erable,)j(but)d(it)g(is)h(mandatory)
75 868 y(that)14 b(at)h(least)g(the)h(KILL)g(signal)g(\()p
Fm(MPI)p 769 868 V 16 w(SIGNAL)p 940 868 V 17 w(KILL)p
Fq(\))d(b)q(e)j(supp)q(orted.)75 990 y Fi(1.3.5)49 b(Noti\014cation)75
1076 y Fq(There)19 b(needs)g(to)f(b)q(e)h(some)g(w)o(a)o(y)e(of)h
(\014nding)i(out)e(when)h(a)g(pro)q(cess)f(\014nishes.)32
b(In)19 b(MPI)g(w)o(e)f(ha)o(v)o(e)g(no)75 1132 y(mec)o(hanism)g(for)g
(async)o(hronous)f(noti\014cation.)29 b(Therefore)17
b(the)h(b)q(est)g(w)o(e)g(can)g(do)f(is)i(to)e(construct)g(a)75
1188 y(request)f(that)g(can)h(b)q(e)g(tested)f(and)h(w)o(aited)f(on.)24
b(If)17 b(pro)q(cesses)g(w)o(ere)f(represen)o(ted)h(b)o(y)f(requests,)h
(then)75 1245 y(w)o(e)h(could)g(w)o(ait)g(on)g(them)f(directly)l(.)30
b(Since)19 b(w)o(e)f(ha)o(v)o(e)f(in)o(tro)q(duced)i(the)f(notion)g(of)
g Fm(MPI)p 1636 1245 V 15 w(Pro)q(cess)p Fq(,)h(w)o(e)75
1301 y(can)c(explicitly)j(attac)o(h)c(a)h(request)h(to)e(it)i(in)g
(order)f(to)f(w)o(ait)h(on)g(it.)75 1452 y Fm(MPI)p 160
1452 V 16 w(NOTIFY\(group,)g(n,)g(a)o(rra)o(y)p 641 1452
V 14 w(of)p 692 1452 V 16 w(requests\))117 1530 y Fd(IN)155
b Fm(group)479 b Fd(a)14 b(group)g(of)f(pro)q(cesses)117
1605 y(IN)155 b Fm(n)564 b Fd(n)o(um)o(b)q(er)13 b(of)h(requests)i(in)d
(follo)o(wing)e(arra)o(y)117 1680 y(OUT)108 b Fm(a)o(rra)o(y)p
416 1680 V 15 w(of)p 468 1680 V 16 w(requests)272 b Fb(MPI)p
982 1680 13 2 v 15 w(Request)p Fd(s)15 b(to)f(b)q(e)g(tested)i(and/or)d
(w)o(aited)h(on)166 1880 y Fe(Discussion:)34 b Fd(This)14
b(used)g(to)g(b)q(e:)166 1930 y(PVM)i(users)g(ha)o(v)o(e)f(found)g
(that)h(a)f(\015exible)g(`notify')e(function)i(is)g(imp)q(ortan)o(t)f
(to)h(building)f(fault)g(toleran)o(t)75 1980 y(applications.)j(W)m(e)c
(prop)q(ose)i(to)f(supply)g(similar)d(functionalit)o(y)h(in)i(MPI.)75
2124 y Fb(MPI)p 152 2124 V 14 w(NOTIFY\(what,)g(n,)f(a)o(rra)o(y)m(,)g
(request\))117 2195 y Fd(IN)154 b Fb(what)504 b Fd(a)12
b(\015ag)f(sp)q(ecifying)h(what)f(to)h(b)q(e)g(noti\014ed)g(ab)q(out)g
(\(see)h(b)q(elo)o(w\))117 2257 y(IN)154 b Fb(n)567 b
Fd(n)o(um)o(b)q(er)13 b(of)h(ob)r(jects)h(in)e(follo)o(wing)e(arra)o(y)
117 2319 y(IN)154 b Fb(a)o(rra)o(y)503 b Fd(arra)o(y)14
b(of)f(MPI)h(ob)r(jects)h(\(dep)q(ends)h(on)e(v)n(alue)f(of)g(`what'\))
117 2382 y(OUT)107 b Fb(request)465 b Fd(mpifuncMPI)p
1136 2382 V 14 w(Request)15 b(to)e(b)q(e)i(tested)g(and/or)f(w)o(aited)
f(on)166 2499 y(Initially)m(,)7 b(w)o(e)j(prop)q(osed)g(that)f(the)h
Fb(what)g Fd(can)f(tak)o(e)h(on)f(t)o(w)o(o)g(v)n(alues:)15
b(MPI)p 1306 2499 V 15 w(Pro)q(cess)p 1455 2499 V 17
w(Exit)9 b(and)g(MPI)p 1716 2499 V 16 w(Resource)p 1893
2499 V 16 w(F)m(ailure.)75 2549 y(In)14 b(these)h(cases)g
Fb(a)o(rra)o(y)f Fd(con)o(tains)g(MPI)g(Pro)q(cess)i(ob)r(jects)f(and)f
(MPI)g(resource)i(ob)r(jects)f(resp)q(ectiv)o(ely)m(.)166
2599 y(These)f(are)g(the)g(t)o(w)o(o)e(most)g(ob)o(vious)h(v)n(alues)g
(for)f(`what'.)17 b(Are)d(there)h(other)e(v)n(alues)g(w)o(e)h(w)o(an)o
(t)e(to)h(consider?)75 2649 y(PVM)21 b(con)o(tains)g(the)g(equiv)n
(alen)o(t)f(of)h(MPI)p 783 2649 V 15 w(Resource)p 959
2649 V 16 w(Add)g(case,)i(but)e(w)o(e)g(ha)o(v)o(e)g(restricted)i(MPI)e
(resource)75 2699 y(o)o(wnership)14 b(suc)o(h)h(that)f(the)g(MPI)p
608 2699 V 16 w(Resource)p 785 2699 V 16 w(Add)g(case)h(is)f(not)f(imp)
q(ortan)o(t)f(in)i(MPI.)g(-A)o(G)-32 46 y Fj(1)-32 103
y(2)-32 159 y(3)-32 215 y(4)-32 272 y(5)-32 328 y(6)-32
385 y(7)-32 441 y(8)-32 498 y(9)-40 554 y(10)-40 611
y(11)-40 667 y(12)-40 724 y(13)-40 780 y(14)-40 836 y(15)-40
893 y(16)-40 949 y(17)-40 1006 y(18)-40 1062 y(19)-40
1119 y(20)-40 1175 y(21)-40 1232 y(22)-40 1288 y(23)-40
1345 y(24)-40 1401 y(25)-40 1457 y(26)-40 1514 y(27)-40
1570 y(28)-40 1627 y(29)-40 1683 y(30)-40 1740 y(31)-40
1796 y(32)-40 1853 y(33)-40 1909 y(34)-40 1966 y(35)-40
2022 y(36)-40 2078 y(37)-40 2135 y(38)-40 2191 y(39)-40
2248 y(40)-40 2304 y(41)-40 2361 y(42)-40 2417 y(43)-40
2474 y(44)-40 2530 y(45)-40 2587 y(46)-40 2643 y(47)-40
2699 y(48)p eop
%%Page: 10 12
10 11 bop 75 -100 a Fq(10)928 b Fk(CHAPTER)16 b(1.)34
b(D)o(YNAMIC)15 b(PR)o(OCESSES)166 45 y Fd(I)f(ha)o(v)o(e)g(c)o(hanged)
h(it)e(b)q(ecause)j(there)g(are)e(no)g(pro)q(cesses)j(an)o(y)d(more)f
(and)h(there)h(is)f(no)g(resource)j(o)o(wnership)75 102
y(or)d(ev)o(en)g(resources)i(at)e(all.)j(Therefore)e(w)o(e)f(can)g(mak)
o(e)e(do)h(with)h(the)g(sp)q(ecial)g(case)h(of)e(w)o(aiting)f(for)i
(pro)q(cesses)i(to)75 158 y(terminate.)i(I)c(am)f(not)h(sure)h(that)f
(this)g(restriction)h(is)f(desirable,)g(ho)o(w)o(ev)o(er,)g(and)g(p)q
(erhaps)i(w)o(e)e(should)g(put)g(the)75 214 y(\\what")e(bac)o(k)h(in)o
(to)e(the)j(argumen)o(t)d(list)h(for)h(MPI)p 866 214
13 2 v 15 w(NOTIFY)g(as)g(a)f(placeholder)h(for)f(future)h(extensions.)
19 b({)12 b(RL)166 354 y Fq(W)l(e)j(can)g(think)g(of)g(this)g(as)g(MPI)
g(in)o(terface)g(to)f(the)h(Pro)q(cess)g(Manager's)e(handling)k(of)d
(the)h(signal)75 410 y Fh(SIGCHILD)p Fq(.)e(The)i(exit)g(co)q(de)g
(from)f(the)g(pro)q(cess)h(\(from)f(a)g Fh(return)23
b(n)14 b Fq(or)g Fh(exit\(n\))g Fq(in)h(C)f(or)g Fh(STOP)24
b(n)14 b Fq(in)75 467 y(F)l(ortran\))g(can)h(b)q(e)h(retriev)o(ed)g
(from)e(the)h Fm(MPI)p 863 467 14 2 v 16 w(status)i Fq(\014lled)g(in)f
(the)g Fm(MPI)p 1332 467 V 15 w(W)l(AIT)p Fq(.)166 523
y(Note)h(that)g(this)h(lev)o(el)h(of)e(pro)q(cess)h(managemen)o(t)f
(allo)o(ws)h(us)g(to)f(manage)g(non-MPI)h(pro)q(cesses,)75
579 y(since)e(comm)o(unicators)f(are)g(not)g(in)o(v)o(olv)o(ed.)75
723 y Fl(1.4)59 b(A)n(ttaching)19 b(to)g(Indep)r(endent)e(Pro)r(cesses)
75 907 y Fe(Discussion:)38 b Fd(This)14 b(has)h(not)g(b)q(een)h(up)q
(dated)g(in)e(sev)o(eral)h(v)o(ersions,)g(and)g(needs)h(w)o(ork.)21
b(In)15 b(particular,)f(older)75 963 y(v)o(ersions)f(had)g(more)f
(\015exibilit)o(y)m(,)f(and)h(the)i(non-blo)q(c)o(king)d(v)o(ersions)j
(of)e(the)i(calls)e(ma)o(y)f(b)q(e)i(required)h(in)f(order)g(for)75
1020 y(a)h(serv)o(er)h(to)f(accept)h(new)f(clien)o(ts)g(while)g
(serving)g(old)f(ones.)166 1159 y Fq(So)e(far)f(w)o(e)h(ha)o(v)o(e)f
(co)o(v)o(ered)h(the)g(case)g(of)f(creating)h(new)h(pro)q(cesses.)18
b(F)l(or)11 b(clien)o(t-serv)o(er)h(applications,)75
1215 y(the)i(situation)g(is)g(di\013eren)o(t,)f(b)q(ecause)i(the)e(pro)
q(cesses)h(in)h(question)f(already)f(exist,)h(and)g(what)f(w)o(e)g
(need)75 1272 y(is)g(a)g(comm)o(unicator)f(to)g(b)q(e)h(used)h(b)o(y)e
(them)h(to)f(comm)o(unicate)h(with)g(one)g(another.)18
b(Similar)d(situations)75 1328 y(arise)20 b(in)h(other)f(applications)h
(as)f(w)o(ell.)35 b(F)l(or)19 b(example,)j(a)e(visualization)i(to)q(ol)
e(ma)o(y)f(w)o(an)o(t)g(to)g(start)75 1385 y(up)e(and)f(attac)o(h)f(to)
h(a)f(running)j(sim)o(ulation,)f(or)e(t)o(w)o(o)g(parts)h(of)g(a)f
(large)i(application)g(ma)o(y)f(b)q(e)h(started)75 1441
y(separatly)e(at)g(t)o(w)o(o)f(di\013eren)o(t)h(sites)g(and)h(then)f(w)
o(an)o(t)f(to)h(comm)o(unicate)h(with)f(eac)o(h)g(other.)166
1498 y(This)22 b(section)g(attempts)f(to)g(pro)o(vide)h(the)g
(functions)g(needed)h(to)e(solv)o(e)h(the)g(general)g(case)f(of)75
1554 y(creating)12 b(an)f(in)o(tercomm)o(unicator)g(b)q(et)o(w)o(een)h
(t)o(w)o(o)e(MPI)h(pro)q(cesses)h(with)g(no)f(kno)o(wledge)h(of)f(eac)o
(h)h(other.)75 1676 y Fi(1.4.1)49 b(Registration)17 b(and)g(Connection)
75 1762 y Fq(The)e(follo)o(wing)h(four)f(functions)h(de\014ne)g(the)g
(in)o(terface.)75 1912 y Fm(MPI)p 160 1912 V 16 w(PROCESS)p
373 1912 V 18 w(REGISTER\()g(name,)e(handle\))117 1990
y Fd(IN)155 b Fm(name)485 b Fd(string)14 b(used)h(for)e(con)o(tacting)
117 2065 y(OUT)108 b Fm(handle)465 b Fd(asso)q(ciated)15
b(with)e(the)i(name)166 2189 y Fq(The)i(form)g(of)f(the)i
Fm(name)f Fq(argumen)o(t)f(has)h(sev)o(eral)g(p)q(ossibilitie)q(s.)28
b(The)18 b(most)e(ob)o(vious)h(is)h(to)f(use)75 2246
y(the)c Fh(net-address:port-number)d Fq(format)h(that)h(curren)o(t)h
(systems)f(will)j(\014nd)e(most)f(straigh)o(tforw)o(ard.)75
2302 y(Ho)o(w)o(ev)o(er,)i(in)i(the)f(long)h(run,)f(name)g(serv)o(ers)g
(of)f(v)m(arious)i(kinds)g(ma)o(y)f(require)h(more)f(\015exibilit)o(y)l
(.)1967 46 y Fj(1)1967 103 y(2)1967 159 y(3)1967 215
y(4)1967 272 y(5)1967 328 y(6)1967 385 y(7)1967 441 y(8)1967
498 y(9)1959 554 y(10)1959 611 y(11)1959 667 y(12)1959
724 y(13)1959 780 y(14)1959 836 y(15)1959 893 y(16)1959
949 y(17)1959 1006 y(18)1959 1062 y(19)1959 1119 y(20)1959
1175 y(21)1959 1232 y(22)1959 1288 y(23)1959 1345 y(24)1959
1401 y(25)1959 1457 y(26)1959 1514 y(27)1959 1570 y(28)1959
1627 y(29)1959 1683 y(30)1959 1740 y(31)1959 1796 y(32)1959
1853 y(33)1959 1909 y(34)1959 1966 y(35)1959 2022 y(36)1959
2078 y(37)1959 2135 y(38)1959 2191 y(39)1959 2248 y(40)1959
2304 y(41)1959 2361 y(42)1959 2417 y(43)1959 2474 y(44)1959
2530 y(45)1959 2587 y(46)1959 2643 y(47)1959 2699 y(48)p
eop
%%Page: 11 13
11 12 bop 75 -100 a Fk(1.4.)34 b(A)l(TT)l(A)o(CHING)15
b(TO)h(INDEPENDENT)e(PR)o(OCESSES)645 b Fq(11)75 45 y
Fm(MPI)p 160 45 14 2 v 16 w(PROCESS)p 373 45 V 18 w(A)o(CCEPT\(mycomm,)
12 b(handle,)k(ro)q(ot,)e(new)o(comm\))117 122 y Fd(IN)155
b Fm(mycomm)412 b Fd(comm)o(unicator)11 b(o)o(v)o(er)j(whic)o(h)g(this)
g(call)f(is)h(collectiv)o(e)117 197 y(IN)155 b Fm(handle)465
b Fd(asso)q(ciated)15 b(with)e(registered)j(name)117
273 y(IN)155 b Fm(ro)q(ot)508 b Fd(the)15 b(pro)q(cess)g(that)f
(registered)i(the)e(name)117 348 y(OUT)108 b Fm(new)o(comm)397
b Fd(new)12 b(in)o(ter-comm)o(unicator,)d(whic)o(h)i(includes)h(the)g
(pro)q(cesses)905 404 y(of)h(the)i(remote)e(group)75
623 y Fm(MPI)p 160 623 V 16 w(PROCESS)p 373 623 V 18
w(CONT)l(A)o(CT\(mycomm,)f(name,)j(new)o(comm\))117 700
y Fd(IN)155 b Fm(mycomm)412 b Fd(comm)o(unicator)11 b(o)o(v)o(er)j
(whic)o(h)g(this)g(call)f(is)h(collectiv)o(e)117 775
y(IN)155 b Fm(name)485 b Fd(name)8 b(b)o(y)h(whic)o(h)h(remote)e(pro)q
(cess)j(can)f(b)q(e)g(con)o(tacted)g(\(string\))117 851
y(OUT)108 b Fm(new)o(comm)397 b Fd(new)12 b(in)o(ter-comm)o(unicator,)d
(whic)o(h)i(includes)h(the)g(pro)q(cesses)905 907 y(of)h(the)i(remote)e
(group)75 1126 y Fm(MPI)p 160 1126 V 16 w(FREE)p 285
1126 V 17 w(NAME\()i(handle\))117 1203 y Fd(IN)155 b
Fm(handle)465 b Fd(asso)q(ciated)15 b(with)e(registered)j(name)166
1328 y Fq(W)l(e)h(will)h(illustrate)g(the)f(use)g(of)f(these)h
(functions)g(with)g(a)g(clien)o(t/serv)o(er)g(example.)25
b(The)17 b(serv)o(er)75 1384 y(w)o(ould)12 b(register)f(a)h(\\name")f
(b)o(y)g(whic)o(h)i(it)f(w)o(an)o(ts)e(to)h(b)q(e)h(kno)o(wn.)19
b(The)11 b(Register)i(function)f(w)o(ould)g(return)75
1441 y(an)k(error)g(if)g(there)g(is)h(a)f(name)g(con\015ict.)24
b(The)16 b(serv)o(er)g(group)g(calls)h(MPI)p 1350 1441
V 16 w(PR)o(OCESS)p 1578 1441 V 17 w(A)o(CCEPT)f(and)75
1497 y(the)f(clien)o(t)h(group)f(calls)h(MPI)p 597 1497
V 16 w(PR)o(OCESS)p 825 1497 V 18 w(CONT)l(A)o(CT.)e(The)h(output)g(of)
f(these)i(t)o(w)o(o)d(collectiv)o(e)k(calls)75 1553 y(is)j(an)g(in)o
(ter-comm)o(unicator)g(b)q(et)o(w)o(een)g(the)f(t)o(w)o(o)g(groups.)33
b(No)o(w)19 b(an)o(y)g(pro)q(cess)h(in)h(the)e(clien)o(t)i(group)75
1610 y(can)g(comm)o(unicate)h(with)f(an)o(y)g(pro)q(cess)h(in)g(the)f
(serv)o(er)g(group)g(and)g(vice)i(v)o(ersa,)e(using)h(the)g(in)o(ter-)
75 1666 y(comm)o(unicator.)166 1723 y(Disconnection)11
b(o)q(ccurs)g(when)g(pro)q(cesses)f(call)h Fm(MPI)p 1057
1723 V 16 w(COMM)p 1215 1723 V 17 w(FREE)f Fq(on)g(the)h(in)o(ter-comm)
o(unicator.)166 1862 y Fe(Discussion:)30 b Fd(I'm)9 b(not)h(clear)h(ho)
o(w)f(the)h(serv)o(er)h(can)f(con)o(tin)o(ue)g(to)f(service)i(clien)o
(ts)f(it)f(is)g(already)g(connected)75 1918 y(to,)17
b(and)g(still)f(A)o(CCEPT)h(new)h(clien)o(ts.)27 b(Do)17
b(w)o(e)g(need)h(to)f(mak)o(e)e(A)o(ttac)o(h)i(and)g(Con)o(tact)g
(non-blo)q(c)o(king)f(calls?)75 1975 y(-A)o(G)166 2190
y Fe(Discussion:)48 b Fd(A)o(G-)17 b(This)h(is)f(an)g(old)g(discussion)
h(but)g(it)f(w)o(as)g(left)h(in)f(b)q(ecause)i(W)o(CS)e(mak)o(es)f(sev)
o(eral)75 2240 y(imp)q(ortan)o(t)c(observ)n(ations)i(in)g(it.)166
2290 y(After)h(going)e(through)h(the)g(exercise)i(of)e(replacing)g
(connections)h(with)f(pro)q(cesses,)i(I)e(think)g(I)g(understand)75
2339 y(wh)o(y)j(connections)h(w)o(ere)f(prop)q(osed)h(in)f(the)g
(\014rst)h(place.)27 b(The)17 b(problem)f(is)h(that)f(y)o(ou)h(ma)o(y)e
(w)o(an)o(t)h(to)h(prev)o(en)o(t)75 2389 y(the)g(serv)o(er)h(from)d
(blo)q(c)o(king)h(no)g(matter)g(what)g(the)h(clien)o(t)g(do)q(es.)27
b(As)17 b(prop)q(osed)g(here,)h(the)f(serv)o(er)h(will)d(blo)q(c)o(k)75
2439 y(while)i(A)m(TT)m(A)o(CHing)f(if)g(the)i(clien)o(t)f(do)q(esn't)h
(do)f(a)g(matc)o(hing)e(A)m(TT)m(A)o(CH.)h(A)h(\\connection")h(w)o(as)f
(more)f(than)75 2489 y(a)j(simple)e(pro)q(cess)k(in)e(that)g
(establishing)g(an)g(in)o(tercomm)o(unicator)e(from)g(an)i
Fb(MPI)p 1447 2489 13 2 v 14 w(Connection)h Fd(\(using)f(RE-)75
2539 y(MOTE)p 205 2539 V 16 w(A)m(TT)m(A)o(CH\))13 b(w)o(as)h(a)f
Fa(lo)n(c)n(al)g Fd(op)q(eration,)h(not)g(requiring)f(sync)o
(hronization)h(with)g(the)g(remote)g(pro)q(cesses.)166
2589 y(I)f(main)o(tain)d(that)j(this)g(only)f(sw)o(ept)i(the)g(problem)
d(under)j(the)g(rug.)k(In)13 b(e\013ect,)h(establishing)f(a)f
(connection)75 2638 y(with)g(ICONNECT/IA)o(CCEPT)h(w)o(as)g(a)f(a)g
(non)o(blo)q(c)o(king)f(collectiv)o(e)i(op)q(eration)f(that)h
(established)g(comm)o(unica-)75 2688 y(tion.)19 b(REMOTE)p
367 2688 V 15 w(A)m(TT)m(A)o(CH)14 b(w)o(as)g(really)g(only)g(a)g(lo)q
(cal)f(lo)q(okup)h(of)g(the)h(already-established)f(comm)o(unicator.)
-32 46 y Fj(1)-32 103 y(2)-32 159 y(3)-32 215 y(4)-32
272 y(5)-32 328 y(6)-32 385 y(7)-32 441 y(8)-32 498 y(9)-40
554 y(10)-40 611 y(11)-40 667 y(12)-40 724 y(13)-40 780
y(14)-40 836 y(15)-40 893 y(16)-40 949 y(17)-40 1006
y(18)-40 1062 y(19)-40 1119 y(20)-40 1175 y(21)-40 1232
y(22)-40 1288 y(23)-40 1345 y(24)-40 1401 y(25)-40 1457
y(26)-40 1514 y(27)-40 1570 y(28)-40 1627 y(29)-40 1683
y(30)-40 1740 y(31)-40 1796 y(32)-40 1853 y(33)-40 1909
y(34)-40 1966 y(35)-40 2022 y(36)-40 2078 y(37)-40 2135
y(38)-40 2191 y(39)-40 2248 y(40)-40 2304 y(41)-40 2361
y(42)-40 2417 y(43)-40 2474 y(44)-40 2530 y(45)-40 2587
y(46)-40 2643 y(47)-40 2699 y(48)p eop
%%Page: 12 14
12 13 bop 75 -100 a Fq(12)933 b Fk(CHAPTER)16 b(1.)29
b(D)o(YNAMIC)15 b(PR)o(OCESSES)75 45 y Fd(A)j(more)f(direct)i(solution)
e(is)g(\(IMHO\))i(to)f(pro)o(vide)g(a)f(non-blo)q(c)o(king)g(v)o
(ersion)h(of)f Fb(MPI)p 1495 45 13 2 v 14 w(PROCESS)p
1692 45 V 14 w(A)m(TT)m(A)o(CH)p Fd(.)75 95 y(This)d(has)g(all)e(the)j
(same)e(asso)q(ciated)i(issues)g(of)e(non)o(blo)q(c)o(king)f(collectiv)
o(e)i(op)q(erations,)g(but)g(seems)g(cleaner.)166 145
y(More)21 b(generally)m(,)g(a)f(serv)o(er)i(m)o(ust)e(alw)o(a)o(ys)f(a)
o(v)o(oid)g(collectiv)o(e)i(comm)o(unicatio)o(n)d(with)i(a)g(clien)o(t)
h(\(unless)75 195 y(non)o(blo)q(c)o(king)11 b(collectiv)o(e)h(is)g(a)o
(v)n(ailable\))f(and)h(m)o(ust)f(alw)o(a)o(ys)g(use)i(non-blo)q(c)o
(king)e(p)q(oin)o(t-to-p)q(oin)o(t)g(comm)o(unication)75
244 y(if)f(it)h(wishes)h(to)g(a)o(v)o(oid)e(deadlo)q(c)o(k)h(due)h(to)f
(an)g(unco)q(op)q(erativ)o(e/incorrect)i(clien)o(t.)k(Because)c(there)g
(are)f(\(curren)o(tly\))75 294 y(no)f(non-blo)q(c)o(king)e(collectiv)o
(e)i(op)q(erations,)g(and)f(b)q(ecause)j(these)f(w)o(ould)e(probably)g
(not)h(b)q(e)g(to)q(o)g(useful)f(to)h(a)f(serv)o(er)75
344 y(in)16 b(an)o(y)f(case)i(\(?\))25 b(W)m(e)15 b(ma)o(y)f(w)o(an)o
(t)i(to)f(a)o(v)o(oid)g(the)i(issue)f(en)o(tirely)g(and)g(pro)o(vide)g
(only)f(a)h(lo)q(cal)f(\(non-collectiv)o(e\))75 394 y(non-blo)q(c)o
(king)e(v)o(ersion)h(of)f Fb(MPI)p 586 394 V 14 w(PROCESS)p
783 394 V 13 w(IA)m(TT)m(A)o(CH)g Fd(\(i.e,)g(without)g(the)i
Fb(comm)d Fd(and)h Fb(ro)q(ot)h Fd(argumen)o(ts.)j(\).)166
444 y(If)12 b(w)o(e)h(do)f(ha)o(v)o(e)g(a)g(non)o(blo)q(c)o(king)f
(collectiv)o(e)h(op)q(eration,)g(it)g(will)f(need)j(to)e(function)g
(correctly)i(when)e(sev)o(eral)75 493 y(are)i(o)o(v)o(erlapp)q(ed.)k
(Is)d(this)f(p)q(ossible?)75 550 y(w)o(cs)75 776 y Fl(1.5)59
b(Examples)75 877 y Fm(Manager-w)o(o)o(rk)o(er)13 b(example,)i(using)h
(SP)l(A)-5 b(WN.)75 971 y Fh(/*)24 b(manager)e(*/)75
1028 y(#include)h(<mpi.h>)75 1084 y(main\(int,)g(argc,)g(char)g
(*arg[]\))75 1140 y({)147 1197 y(MPI_Status)f(status;)147
1253 y(int)h(count,)g(world_size,)f(flag;)147 1310 y(MPI_Comm)g
(everyone;)262 b(/*)23 b(intercommunicator)f(*/)147 1423
y(MPI_Init\(&argc,)f(&argv\);)147 1479 y(MPI_Comm_size\(MPI_COMM_)o
(WORLD,)f(&world_size\);)147 1536 y(if)j(\(world_size)g(!=)g(1\))242
1592 y(error\("Top)g(heavy)g(with)g(management"\);)147
1649 y(MPI_Attr_get\(MPI_COMM_W)o(ORLD,)e(MPI_UNIVERSE_SIZE,)g(&count,)
i(&flag\))147 1761 y(if)g(\(count)g(==)h(1\))242 1818
y(error\("No)f(room)g(to)h(start)f(workers"\);)147 1931
y(MPI_Spawn\("worker",)e(NULL,)i(count-1,)g(MPI_COMM_SELF,)f
(&everyone\);)147 2044 y(/*)170 2100 y(*)i(Parallel)f(code)g(here.)g
(The)h(communicator)e("everyone")h(can)g(be)h(used)170
2157 y(*)g(to)g(communicate)e(with)h(the)h(spawned)f(processes,)f
(which)h(have)h(ranks)f(0,..count-2)170 2213 y(*)h(in)g(the)f(remote)g
(group)g(of)h(the)f(intercommunicator)f("everyone".)170
2270 y(*/)147 2382 y(MPI_Finalize\(\);)75 2439 y(})75
2552 y(/*)i(worker)f(*/)75 2665 y(#include)g(<mpi.h>)1967
46 y Fj(1)1967 103 y(2)1967 159 y(3)1967 215 y(4)1967
272 y(5)1967 328 y(6)1967 385 y(7)1967 441 y(8)1967 498
y(9)1959 554 y(10)1959 611 y(11)1959 667 y(12)1959 724
y(13)1959 780 y(14)1959 836 y(15)1959 893 y(16)1959 949
y(17)1959 1006 y(18)1959 1062 y(19)1959 1119 y(20)1959
1175 y(21)1959 1232 y(22)1959 1288 y(23)1959 1345 y(24)1959
1401 y(25)1959 1457 y(26)1959 1514 y(27)1959 1570 y(28)1959
1627 y(29)1959 1683 y(30)1959 1740 y(31)1959 1796 y(32)1959
1853 y(33)1959 1909 y(34)1959 1966 y(35)1959 2022 y(36)1959
2078 y(37)1959 2135 y(38)1959 2191 y(39)1959 2248 y(40)1959
2304 y(41)1959 2361 y(42)1959 2417 y(43)1959 2474 y(44)1959
2530 y(45)1959 2587 y(46)1959 2643 y(47)1959 2699 y(48)p
eop
%%Page: 13 15
13 14 bop 75 -100 a Fk(1.5.)29 b(EXAMPLES)1398 b Fq(13)75
45 y Fh(main\(int)23 b(argc,)g(char)g(*argv[]\))75 102
y({)147 158 y(MPI_Init\(&argc,)e(&argv\);)147 271 y(/*)170
327 y(*)j(Parallel)f(code)g(here.)170 384 y(*)h(The)g(manager)f(is)g
(represented)f(as)i(the)g(process)e(with)i(rank)f(0)h(in)f(\(the)h
(remote)170 440 y(*)g(group)f(of\))h(MPI_COMM_PARENT.)45
b(If)24 b(the)f(workers)g(need)h(to)f(communicate)g(among)170
497 y(*)h(themselves,)f(they)g(can)g(either)g(extract)g(the)h(local)f
(group)g(of)h(the)170 553 y(*)g(intercommunicator)e(MPI_COMM_PARENT,)f
(or)j(use)f(MPI_COMM_WORLD.)46 b(They)170 610 y(*)24
b(should)f(be)h(the)f(same.)170 666 y(*/)147 779 y(MPI_Finalize\(\);)75
835 y(})75 1068 y Fm(Manager-w)o(o)o(rk)o(er)13 b(example,)i(using)h(A)
l(TT)l(A)o(CH.)75 1162 y Fh(/*)24 b(manager)e(*/)75 1219
y(#include)h(<mpi.h>)75 1275 y(main\(int,)g(argc,)g(char)g(*arg[]\))75
1332 y({)147 1388 y(int)g(count,)g(world_size,)f(flag;)147
1445 y(MPI_Comm)g(everyone;)333 b(/*)24 b(intercommunictor)d(*/)147
1501 y(MPI_Group)h(worker_group;)147 1614 y(MPI_Init\(&argc,)f
(&argv\);)147 1670 y(MPI_Comm_size\(MPI_COMM_)o(WORLD,)f
(&world_size\);)147 1727 y(if)j(\(world_size)g(!=)g(1\))242
1783 y(error\("Top)g(heavy)g(with)g(management"\);)147
1840 y(MPI_Attr_get\(MPI_COMM_W)o(ORLD,)e(MPI_UNIVERSE_SIZE,)g(&count,)
i(&flag\);)147 1953 y(if)g(\(count)g(==)h(1\))242 2009
y(error\("No)f(room)g(to)h(start)f(workers"\);)147 2122
y(MPI_Group_init\("worker")o(,)e(NULL,)i(count-1,)g(NULL,)g
(&worker_group\);)147 2178 y(MPI_Start_attach\(MPI_CO)o(MM_SELF)o(,)e
(0,)j(worker_group,)e(&everyone\);)147 2291 y(/*)170
2348 y(*)i(Parallel)f(code)g(here.)g(The)h(communicator)e("everyone")h
(can)g(be)h(used)170 2404 y(*)g(to)g(communicate)e(with)h(the)h
(spawned)f(processes,)f(which)h(have)h(ranks)f(0,..count-2)170
2461 y(*)h(in)g(the)f(remote)g(group)g(of)h(the)f(intercommunicator)f
("everyone".)170 2517 y(*/)147 2630 y(MPI_Finalize\(\);)75
2687 y(})-32 46 y Fj(1)-32 103 y(2)-32 159 y(3)-32 215
y(4)-32 272 y(5)-32 328 y(6)-32 385 y(7)-32 441 y(8)-32
498 y(9)-40 554 y(10)-40 611 y(11)-40 667 y(12)-40 724
y(13)-40 780 y(14)-40 836 y(15)-40 893 y(16)-40 949 y(17)-40
1006 y(18)-40 1062 y(19)-40 1119 y(20)-40 1175 y(21)-40
1232 y(22)-40 1288 y(23)-40 1345 y(24)-40 1401 y(25)-40
1457 y(26)-40 1514 y(27)-40 1570 y(28)-40 1627 y(29)-40
1683 y(30)-40 1740 y(31)-40 1796 y(32)-40 1853 y(33)-40
1909 y(34)-40 1966 y(35)-40 2022 y(36)-40 2078 y(37)-40
2135 y(38)-40 2191 y(39)-40 2248 y(40)-40 2304 y(41)-40
2361 y(42)-40 2417 y(43)-40 2474 y(44)-40 2530 y(45)-40
2587 y(46)-40 2643 y(47)-40 2699 y(48)p eop
%%Page: 14 16
14 15 bop 75 -100 a Fq(14)933 b Fk(CHAPTER)16 b(1.)29
b(D)o(YNAMIC)15 b(PR)o(OCESSES)75 102 y Fh(/*)24 b(worker)f(*/)75
214 y(#include)g(<mpi.h>)75 271 y(main\(int)g(argc,)g(char)g(*argv[]\))
75 327 y({)147 384 y(MPI_Init\(&argc,)e(&argv\);)147
497 y(/*)170 553 y(*)j(Parallel)f(code)g(here.)170 610
y(*)h(Manager)f(is)h(represented)e(as)i(the)f(process)g(with)g(rank)h
(0)f(in)h(\(the)f(remote)g(group)170 666 y(*)h(of\))g(MPI_COMM_PARENT.)
45 b(The)24 b(workers)f(can)g(communicate)f(with)i(one)f(another)170
723 y(*)h(using)f(MPI_COMM_WORLD.)170 779 y(*/)147 892
y(MPI_Finalize\(\);)75 948 y(})75 1181 y Fm(T)l(ask)16
b(fa)o(rm)d(example.)45 b Fq(This)16 b(example)g(sho)o(ws)e(ho)o(w)h
(to)f(manage)h(a)g(set)g(of)g(non-MPI)g(pro)q(cesses.)75
1288 y Fh(#include)23 b(<mpi.h>)75 1344 y(#define)g(MAXPROC)g(1000)75
1401 y(main\(int)g(argc,)g(char)g(*argv[]\))75 1457 y({)147
1513 y(MPI_Group)f(workers[MAXPROC];)147 1570 y(MPI_Group)g
(worker_group;)147 1626 y(MPI_Request)g(obituaries[MAXPROC];)147
1683 y(MPI_Status)g(statuses[MAXPROC];)45 b(/*)24 b(see)f(comment)g
(below)g(*/)147 1739 y(int)g(count,)g(nslots,)g(i,)h(deadone;)147
1796 y(char)f(**args;)147 1909 y(ThingToDo)f(*thingstodo;)147
1965 y(int)h(nthingstodo,)f(nthingsdone;)147 2078 y(MPI_Init\(&argc,)f
(&argv\);)147 2134 y(MPI_Attr_get\(MPI_COMM_W)o(ORLD,)g
(MPI_UNIVERSE_SIZE,)g(&count,)i(&flag\);)147 2191 y(nslots)g(=)147
2247 y(GetThingsToDo\(&thingsto)o(do,)e(nthingstodo\);)147
2360 y(/*)i(need)g(to)h(initialize)f(these)g(for)g(Waitany/all\(\))f
(below)h(to)h(work)f(*/)147 2417 y(for)g(\(i)h(=)f(0;)h(i)g(<)f
(MAXPROC;)g(i++\))g(obituaries[i])g(=)g(MPI_REQUEST_NULL;)147
2530 y(/*)g(start)g(up)h(initial)f(set)g(of)h(tasks)f(*/)147
2586 y(for)g(\(nthingsdone)f(=)i(0;)g(nthingsdone)e(<)i(nslots)f(&&)g
(nthingsdone)g(<)g(nthingstodo;)266 2643 y(nthingsdone++\))147
2699 y({)1967 46 y Fj(1)1967 103 y(2)1967 159 y(3)1967
215 y(4)1967 272 y(5)1967 328 y(6)1967 385 y(7)1967 441
y(8)1967 498 y(9)1959 554 y(10)1959 611 y(11)1959 667
y(12)1959 724 y(13)1959 780 y(14)1959 836 y(15)1959 893
y(16)1959 949 y(17)1959 1006 y(18)1959 1062 y(19)1959
1119 y(20)1959 1175 y(21)1959 1232 y(22)1959 1288 y(23)1959
1345 y(24)1959 1401 y(25)1959 1457 y(26)1959 1514 y(27)1959
1570 y(28)1959 1627 y(29)1959 1683 y(30)1959 1740 y(31)1959
1796 y(32)1959 1853 y(33)1959 1909 y(34)1959 1966 y(35)1959
2022 y(36)1959 2078 y(37)1959 2135 y(38)1959 2191 y(39)1959
2248 y(40)1959 2304 y(41)1959 2361 y(42)1959 2417 y(43)1959
2474 y(44)1959 2530 y(45)1959 2587 y(46)1959 2643 y(47)1959
2699 y(48)p eop
%%Page: 15 17
15 16 bop 75 -100 a Fk(1.5.)29 b(EXAMPLES)1398 b Fq(15)218
45 y Fh(SetArgs\(thingstodo[nthingsd)o(one],)21 b(&args\);)218
102 y(MPI_Group_init\("cow",)g(args,)i(1,)h(NULL,)f
(&workers[nthingsdone]\);)147 158 y(})147 214 y(merge_groups\(workers,)
e(&worker_group\);)236 b(/*)24 b(merge)f(singleton)g(groups)1340
271 y(into)g(one)h(big)f(group)g(*/)147 327 y(MPI_Group_start_indepen)o
(dent\(wo)o(rker_gro)o(up\);)147 384 y(MPI_Notify\(worker_group)o(,)e
(nslots,)i(obituaries\);)147 497 y(/*)g(spawn)g(new)h(ones)f(as)h(old)f
(ones)g(finish)h(*/)147 553 y(while\(nthingsdone)d(<)j(nthingstodo\))
147 610 y({)218 666 y(MPI_Waitany\(nslots,)d(obituaries,)i(&deadone,)f
(&status[0]\);)218 723 y(SetArgs\(thingstodo[nthingsd)o(one],)f
(&args\);)218 779 y(MPI_Group_init\("cow",)g(args,)i(1,)h
(&workers[nthingsdone]\);)218 835 y(MPI_Group_start_independent)o
(\(workers)o([nthing)o(sdone]\))o(;)218 892 y
(MPI_Notify\(&workers[nthings)o(done],)d(1,)i
(&obituaries[nthingsdone]\);)147 948 y(})147 1005 y
(MPI_Waitall\(nslots,)e(obituaries,)h(statuses\);)147
1118 y(MPI_Finalize\(\);)75 1174 y(})75 1351 y Fm(PVM-st)o(yle)16
b(SPMD)f(example)45 b Fq(This)16 b(is)g(ho)o(w)f(man)o(y)f(PVM)h
(programs)f(are)h(t)o(ypically)i(written.)j(There)75
1407 y(is)h(no)g(reason)g(they)g(can't)f(b)q(e)i(done)f(with)g(MPI-1,)h
(but)f(in)h(case)f(users)g(w)o(an)o(t)f(the)h(app)q(earance)g(of)75
1464 y(minimal)c(c)o(hange,)e(here)g(is)h(is.)k(\(V)l(ery)15
b(similar)i(to)d(the)i(manager-w)o(ork)o(er)d(example)j(ab)q(o)o(v)o
(e.\))75 1570 y Fh(/*)24 b(myprog)f(*/)75 1683 y(#include)g(<mpi.h>)75
1739 y(main\(int)g(argc,)g(char)g(*argv[]\))75 1796 y({)147
1852 y(int)g(count,)g(world_size,)f(flag;)147 1909 y(MPI_Comm)g
(everyone;)238 b(/*)23 b(intercommunicator)f(*/)147 1965
y(MPI_Comm)g(new_world;)214 b(/*)23 b(corresponding)f
(intracommunicator)g(*/)147 2078 y(MPI_Init\(&argc,)f(&argv\);)147
2191 y(if)i(\(MPI_COMM_PARENT)f(==)h(MPI_COMM_NULL\))46
b(/*)24 b(I'm)f(the)h(parent)f(*/)147 2247 y({)218 2304
y(MPI_Attr_get\(MPI_COMM_WORLD)o(,)e(MPI_UNIVERSE_SIZE,)h(&count,)h
(&flag\);)218 2360 y(if)h(\(count)f(==)g(1\))314 2417
y(error\("No)f(room)i(to)f(start)g(workers"\);)218 2473
y(MPI_Spawn\("myprog",)e(NULL,)j(count-1,)e(MPI_COMM_SELF,)g
(&everyone\);)218 2530 y(MPI_Intercomm_merge\(everyon)o(e,)f(FALSE,)i
(&new_world\);)147 2586 y(})147 2643 y(else)218 2699
y(MPI_Intercomm_merge\(MPI_COM)o(M_PARENT)o(,)e(TRUE,)i(&new_world\);)
-32 46 y Fj(1)-32 103 y(2)-32 159 y(3)-32 215 y(4)-32
272 y(5)-32 328 y(6)-32 385 y(7)-32 441 y(8)-32 498 y(9)-40
554 y(10)-40 611 y(11)-40 667 y(12)-40 724 y(13)-40 780
y(14)-40 836 y(15)-40 893 y(16)-40 949 y(17)-40 1006
y(18)-40 1062 y(19)-40 1119 y(20)-40 1175 y(21)-40 1232
y(22)-40 1288 y(23)-40 1345 y(24)-40 1401 y(25)-40 1457
y(26)-40 1514 y(27)-40 1570 y(28)-40 1627 y(29)-40 1683
y(30)-40 1740 y(31)-40 1796 y(32)-40 1853 y(33)-40 1909
y(34)-40 1966 y(35)-40 2022 y(36)-40 2078 y(37)-40 2135
y(38)-40 2191 y(39)-40 2248 y(40)-40 2304 y(41)-40 2361
y(42)-40 2417 y(43)-40 2474 y(44)-40 2530 y(45)-40 2587
y(46)-40 2643 y(47)-40 2699 y(48)p eop
%%Page: 16 18
16 17 bop 75 -100 a Fq(16)933 b Fk(CHAPTER)16 b(1.)29
b(D)o(YNAMIC)15 b(PR)o(OCESSES)170 102 y Fh(/*)24 b(SPMD)f(parallel)g
(code)g(here,)h(using)f(new_world)f(instead)h(of)h(MPI_COMM_WORLD)e(*/)
170 214 y(MPI_Finalize\(\);)75 271 y(})75 447 y Fm(Client-server)14
b(example.)44 b Fq(This)14 b(is)f(a)f(simple)j(example;)f(the)f(serv)o
(er)f(accepts)h(only)g(a)g(single)h(connection)75 503
y(at)h(a)f(time)i(and)f(serv)o(es)g(that)g(connection)h(un)o(til)g(the)
g(clien)o(t)g(requests)f(to)g(b)q(e)h(disconnected.)166
560 y(Here)21 b(is)h(the)g(serv)o(er.)38 b(It)21 b(accepts)h(a)f
(single)h(connection)h(and)e(then)h(pro)q(cesses)g(data)e(un)o(til)j
(it)75 616 y(receiv)o(es)16 b(a)f(message)g(with)g(tag)f
Fh(1)p Fq(.)20 b(A)15 b(message)g(with)h(tag)e Fh(0)h
Fq(tells)h(the)g(serv)o(er)e(to)h(exit.)75 706 y Fh(#include)23
b("mpi.h")75 763 y(main\()g(int)h(argc,)f(char)g(**argv)g(\))75
819 y({)75 875 y(MPI_Comm)g(client;)75 932 y(MPI_Status)f(status;)75
988 y(double)h(buf[MAX_DATA];)75 1045 y(int)95 b(again;)75
1158 y(MPI_Init\()23 b(&argc,)g(&argv)g(\);)75 1214 y(while)g(\(1\))h
({)170 1271 y(MPI_Server_connect\()e(MPI_COMM_WORLD,)g("cave:1234",)g
(&client)h(\);)170 1327 y(again)h(=)f(1;)170 1384 y(while)h(\(again\))f
({)266 1440 y(MPI_Recv\()g(buf,)g(MAX_DATA,)f(MPI_DOUBLE,)h(0,)g
(MPI_ANY_TAG,)505 1496 y(client,)f(&status)h(\);)266
1553 y(switch)g(\(status.tag\))f({)361 1609 y(case)i(0:)f
(MPI_Comm_free\()f(&client)h(\);)552 1666 y(MPI_Finalize\(\);)552
1722 y(return)g(0;)361 1779 y(case)h(1:)f(MPI_Comm_free\()f(&client)h
(\);)552 1835 y(again)g(=)h(0;)552 1892 y(break;)361
1948 y(case)g(2:)f(/*)h(do)f(something)g(*/)361 2005
y(...)361 2061 y(default:)552 2117 y(MPI_Abort\()g(MPI_COMM_WORLD,)f
("Unexpected)g(message)h(type")g(\);)361 2174 y(})266
2230 y(})170 2287 y(})75 2343 y(})166 2433 y Fq(Here)15
b(is)h(the)f(clien)o(t.)75 2534 y Fh(#include)23 b("mpi.h")75
2591 y(main\()g(int)h(argc,)f(char)g(**argv)g(\))75 2647
y({)75 2704 y(MPI_Comm)g(server;)1967 46 y Fj(1)1967
103 y(2)1967 159 y(3)1967 215 y(4)1967 272 y(5)1967 328
y(6)1967 385 y(7)1967 441 y(8)1967 498 y(9)1959 554 y(10)1959
611 y(11)1959 667 y(12)1959 724 y(13)1959 780 y(14)1959
836 y(15)1959 893 y(16)1959 949 y(17)1959 1006 y(18)1959
1062 y(19)1959 1119 y(20)1959 1175 y(21)1959 1232 y(22)1959
1288 y(23)1959 1345 y(24)1959 1401 y(25)1959 1457 y(26)1959
1514 y(27)1959 1570 y(28)1959 1627 y(29)1959 1683 y(30)1959
1740 y(31)1959 1796 y(32)1959 1853 y(33)1959 1909 y(34)1959
1966 y(35)1959 2022 y(36)1959 2078 y(37)1959 2135 y(38)1959
2191 y(39)1959 2248 y(40)1959 2304 y(41)1959 2361 y(42)1959
2417 y(43)1959 2474 y(44)1959 2530 y(45)1959 2587 y(46)1959
2643 y(47)1959 2699 y(48)p eop
%%Page: 17 19
17 18 bop 75 -100 a Fk(1.5.)34 b(EXAMPLES)1393 b Fq(17)75
45 y Fh(double)23 b(buf[MAX_DATA];)75 158 y(MPI_Init\()g(&argc,)g
(&argv)g(\);)75 214 y(MPI_Client_connect\()e(MPI_COMM_WORLD,)h
("cave:1234",)g(&server)h(\);)75 271 y(while)g(\(!done\))g({)170
327 y(tag)h(=)g(2;)f(/*)h(Action)f(to)g(perform)g(*/)170
384 y(MPI_Send\()g(buf,)g(n,)h(MPI_DOUBLE,)e(0,)i(tag,)f(server)g(\);)
170 440 y(/*)h(etc)f(*/)170 497 y(})75 553 y(MPI_Send\()g(buf,)g(0,)h
(MPI_DOUBLE,)e(0,)h(1,)h(server)f(\);)75 610 y(MPI_Comm_free\()f
(&client)h(\);)75 666 y(MPI_Finalize\(\);)75 723 y(})166
829 y Fq(If)17 b(the)g(serv)o(er)f(needs)i(to)e(manage)g(m)o(ultiple)i
(connections)g(at)e(once,)h(it)g(can)g(use)g Fm(MPI)p
1675 829 14 2 v 16 w(IA)o(CCEPT)75 885 y Fq(instead.)j(The)c(clien)o(t)
g(need)g(not)f(b)q(e)h(c)o(hanged.)-32 46 y Fj(1)-32
103 y(2)-32 159 y(3)-32 215 y(4)-32 272 y(5)-32 328 y(6)-32
385 y(7)-32 441 y(8)-32 498 y(9)-40 554 y(10)-40 611
y(11)-40 667 y(12)-40 724 y(13)-40 780 y(14)-40 836 y(15)-40
893 y(16)-40 949 y(17)-40 1006 y(18)-40 1062 y(19)-40
1119 y(20)-40 1175 y(21)-40 1232 y(22)-40 1288 y(23)-40
1345 y(24)-40 1401 y(25)-40 1457 y(26)-40 1514 y(27)-40
1570 y(28)-40 1627 y(29)-40 1683 y(30)-40 1740 y(31)-40
1796 y(32)-40 1853 y(33)-40 1909 y(34)-40 1966 y(35)-40
2022 y(36)-40 2078 y(37)-40 2135 y(38)-40 2191 y(39)-40
2248 y(40)-40 2304 y(41)-40 2361 y(42)-40 2417 y(43)-40
2474 y(44)-40 2530 y(45)-40 2587 y(46)-40 2643 y(47)-40
2699 y(48)p eop
%%Page: 18 20
18 19 bop 75 377 a Fo(Biblio)q(graph)m(y)75 600 y Fq([1])22
b(Al)d(Geist,)g(Adam)f(Beguelin,)j(Jac)o(k)e(Dongarra,)e(W)l(eic)o
(heng)j(Jiang,)g(Bob)e(Manc)o(hek,)h(and)g(V)l(aidy)146
656 y(Sunderam.)g Fg(PVM:)c(Par)n(al)r(lel)g(Virtual)h(Machine|A)g
(User's)f(Guide)h(and)g(T)m(utorial)g(for)g(Network)146
713 y(Par)n(al)r(lel)f(Computing)p Fq(.)20 b(MIT)15 b(Press,)g(1994.)
952 2828 y(18)p eop
%%Trailer
end
userdict /end-hook known{end-hook}if
%%EOF

From owner-mpi-comm@CS.UTK.EDU Fri Oct 27 18:46:19 1995
Return-Path: <owner-mpi-comm@CS.UTK.EDU>
Received: from CS.UTK.EDU by netlib2.cs.utk.edu with ESMTP (cf v2.9t-netlib)
	id SAA17547; Fri, 27 Oct 1995 18:46:18 -0400
Received: from localhost by CS.UTK.EDU with SMTP (cf v2.9s-UTK)
	id SAA11005; Fri, 27 Oct 1995 18:40:49 -0400
Received: from cs.umn.edu by CS.UTK.EDU with ESMTP (cf v2.9s-UTK)
	id SAA10974; Fri, 27 Oct 1995 18:40:40 -0400
Received: from peca.cs.umn.edu (peca.cs.umn.edu [128.101.224.11]) by mail.cs.umn.edu (8.6.11/8.6.6) with ESMTP 
From: glo@cs.umn.edu (Gen-Ching Lo)
Received: by peca.cs.umn.edu (8.6.11) id RAA11009; Fri, 27 Oct 1995 17:43:33 -0500
Message-Id: <199510272243.RAA11009@peca.cs.umn.edu>
Subject: subscription request
To: mpi-comm@CS.UTK.EDU, mpi-impl@mcs.anl.gov
Date: Fri, 27 Oct 1995 17:43:33 -0500 (CDT)
X-Mailer: ELM [version 2.4 PL24]
MIME-Version: 1.0
Content-Type: text/plain; charset=US-ASCII
Content-Transfer-Encoding: 7bit

Dear Sir/Madam,

I am MPI's new user on SGI clusters and would like
to receive more information about MPI. Would you 
please add my name to this discussion list?

Thank you very much for your help.

Sincerely,
Gen-Ching Lo

P.S. my email address is glo@cs.umn.edu

From mpi-comm-human@mcs.anl.gov Tue Nov 28 10:54:37 1995
Return-Path: <mpi-comm-human@mcs.anl.gov>
Received: from antares.mcs.anl.gov by netlib2.cs.utk.edu with ESMTP (cf v2.9t-netlib)
	id KAA05027; Tue, 28 Nov 1995 10:54:36 -0500
Received: (from listserv@localhost) by antares.mcs.anl.gov (8.6.10/8.6.10)
	id JAA04226 for mpi-comm-out; Tue, 28 Nov 1995 09:44:42 -0600
Received: from donner (donner.mcs.anl.gov [140.221.5.134]) by antares.mcs.anl.gov (8.6.10/8.6.10)  with ESMTP
	id JAA04158; Tue, 28 Nov 1995 09:42:31 -0600
Date: Tue, 28 Nov 1995 09:42:30 -0600
Message-Id: <199511281542.JAA17171@donner>
From: lusk@mcs.anl.gov (Rusty Lusk)
To: mpi-comm@mcs.anl.gov, mpi-core@mcs.anl.gov
Subject: MPI-2 BOF at SC95  [comp.parallel.mpi #1058]
Sender: owner-mpi-core@mcs.anl.gov
Precedence: bulk


------ Forwarded Article <LEDERMAN.95Nov27173726@descartes.super.org>
------ From lederman@descartes.super.org (Steve Huss-Lederman)

This is to announce that there will be a Birds-of-a-Feather about
MPI-2 at Supercomputing '95.  The session will be from 3:30-5:00 on
Wednesday, December 6 in Room 11A.  The first half of the session will
be an overview of the current thinking in the MPI-2 standards effort;
the second half will be public comments and input.  To give people
interested in the details of the MPI-2 standards effort a chance to
review them, the MPI Forum is making the current DRAFT of the MPI-2
document available.  It can be gotten from
ftp://ftp.mcs.anl.gov/pub/mpi/mpi2/mpi-draft.ps.Z.  To give people a
flavor of the MPI-2 standards effort, the abstract for the document is
attached below.

Hope to see you there.

The MPI Forum
----------------------------------------------------------------------
This document describes the MPI-2 effort to add extensions to the
original MPI standard.  The MPI-2 effort began in March 1995 and
the additions to the standard are scheduled to be released for public
comment at Supercomputing '96. Topics being explored for possible
inclusion in MPI-2 are dynamic processes, one-sided communications,
extended collective operations, external interfaces, additional
language bindings, real-time communications, and miscellaneous topics.

NOTE: This is the current state of some of the chapters being drafted
for possible inclusion in the MPI-2 standard document.  It represents
the ongoing work of the MPI Forum in an incomplete and tentative form,
but is being distributed with the intention of desseminating the work
of the MPI Forum and to allow people attending the BOF at
Supercomputing '95 to understand the topics under consideration.  The
proposals for MPI-2 are still very much under development.  It is very
likely that the final MPI-2 standard will differ in important ways
from this draft.  As a result, this draft should not be taken as a
promise of the final form of the MPI-2 standard.

------ End of Forwarded Article

From mpi-comm-human@mcs.anl.gov Thu Dec 14 18:32:21 1995
return-path: <mpi-comm-human@mcs.anl.gov>
received: from antares.mcs.anl.gov (mcs.anl.gov) by netlib2.cs.utk.edu (cf v2.9t-netlib)
	id AA00204; Thu, 14 Dec 95 18:19:42 EST
received: (from listserv@localhost) by antares.mcs.anl.gov (8.6.10/8.6.10)
	id QAA27492 for mpi-comm-out; Thu, 14 Dec 1995 16:45:05 -0600
received: from mcs.anl.gov (donner.mcs.anl.gov [140.221.5.134]) by antares.mcs.anl.gov (8.6.10/8.6.10)  with ESMTP
	id QAA27484; Thu, 14 Dec 1995 16:44:56 -0600
message-id: <199512142244.QAA27484@antares.mcs.anl.gov>
To: mpi-io@nas.nasa.gov
Cc: mpi-comm@mcs.anl.gov
subject: Re: Type contructor 
in-reply-to: Your message of "Thu, 14 Dec 1995 14:32:19 PST."
             <199512142229.OAA16848@win24.nas.nasa.gov> 
date: Thu, 14 Dec 1995 16:44:54 -0600
From: Rusty Lusk <lusk@mcs.anl.gov>
Sender: owner-mpi-core@mcs.anl.gov
precedence: bulk

| I would be delighted if we could get the non-I/O specific type
| constructors adopted by MPI2, but my understanding is that MPI2 isn't
| going to be released until SC96.  In the interim, I think we should
| add the type constructors to the MPI-IO draft (with the intention
| of deleting them when/if they become part of MPI2).
| 
| Does anyone know who we should be working with to make sure that any
| common type constructors have the same syntax?

There is a section of the Miscellaneous chapter of the MPI-2 draft (released
at Supercomputing '95 and posted on the Web) entitled "Additional type
constructors".  Currently it has only one new datatype constructor, the
"Contiguous struct".  The time to propose new datatype constructors for MPI-2
is right now, and the place to propose them is on the MPI-2 discussion list
mpi-misc@mcs.anl.gov.  As it so happens, I am coordinating the chapter, and
can make sure that proposals are included in the ongoing draft and discussed
at the MPI-2 meetings, but it is always best if there is an "original"
champion for new proposals at the meetings.

Rusty Lusk

P.S. You can join the above-mentioned list by sending

   subscribe mpi-misc

to

   majordomo@mcs.anl.gov

From owner-mpi-comm@CS.UTK.EDU Fri Mar  8 19:15:32 1996
Return-Path: <owner-mpi-comm@CS.UTK.EDU>
Received: from CS.UTK.EDU by netlib2.cs.utk.edu with ESMTP (cf v2.9t-netlib)
	id TAA03242; Fri, 8 Mar 1996 19:15:32 -0500
Received: from localhost by CS.UTK.EDU with SMTP (cf v2.9s-UTK)
	id TAA01803; Fri, 8 Mar 1996 19:10:50 -0500
Received: from venera.isi.edu by CS.UTK.EDU with SMTP (cf v2.9s-UTK)
	id TAA01786; Fri, 8 Mar 1996 19:10:47 -0500
Received: from ariel.isi.edu by venera.isi.edu (5.65c/5.61+local-22)
	id <AA14717>; Fri, 8 Mar 1996 16:10:38 -0800
Posted-Date: Fri, 08 Mar 1996 16:12:14 -0800
Received: by ariel.isi.edu (5.65c/4.0.3-4)
	id <AA10754>; Fri, 8 Mar 1996 16:12:14 -0800
Sender: lantang@ISI.EDU
Message-Id: <3140CCDE.41C67EA6@isi.edu>
Date: Fri, 08 Mar 1996 16:12:14 -0800
From: Lan Tang <lantang@ISI.EDU>
Organization: ISI/USC
X-Mailer: Mozilla 2.0 (X11; I; SunOS 4.1.3 sun4c)
Mime-Version: 1.0
To: mpi-comm@CS.UTK.EDU
Subject: subscribe


From mpi-comm-human@mcs.anl.gov Thu Mar 14 14:11:56 1996
Return-Path: <mpi-comm-human@mcs.anl.gov>
Received: from antares.mcs.anl.gov by netlib2.cs.utk.edu with ESMTP (cf v2.9t-netlib)
	id OAA01421; Thu, 14 Mar 1996 14:11:55 -0500
Received: (from listserv@localhost) by antares.mcs.anl.gov (8.6.10/8.6.10)
	id MAA09960 for mpi-comm-out; Thu, 14 Mar 1996 12:45:28 -0600
Received: from win24.nas.nasa.gov (win24.nas.nasa.gov [129.99.33.39]) by antares.mcs.anl.gov (8.6.10/8.6.10)  with ESMTP
	id MAA09949; Thu, 14 Mar 1996 12:45:19 -0600
Received: from localhost (nitzberg@localhost)
	by win24.nas.nasa.gov (8.6.12/NAS.6.1) with SMTP id KAA15979; Thu, 14 Mar 1996 10:45:04 -0800
Message-Id: <199603141845.KAA15979@win24.nas.nasa.gov>
X-Authentication-Warning: win24.nas.nasa.gov: Host localhost didn't use HELO protocol
To: mpi-comm@mcs.anl.gov, mpi-core@mcs.anl.gov
Cc: mpi-io@nas.nasa.gov
Subject: Re: MPI-IO Standards Process 
In-reply-to: Your message of "Thu, 14 Mar 1996 07:40:00 PST."
             <Pine.3.89.9603140718.A26357-0100000@rogue.sdsc.edu> 
Date: Thu, 14 Mar 1996 10:45:03 -0800
From: Bill Nitzberg <nitzberg@nas.nasa.gov>
Sender: owner-mpi-core@mcs.anl.gov
Precedence: bulk

Rusty,

How do we pursue proposing the addition of an I/O chapter
to the MPI2 forum?

- bill

Richard Frost writes:
> 
> It appears from your last statement that the MPI-IO group has been more
> interested (and driven by real needs) in developing an implementation than
> defining a standard. 
> 
> If you still hope to be recognized as a chapter in MPI2, why not join the
> standards effort now?  There are 30 professionals from industry, academia,
> and government labs participating in the MPI Forum. 
> 
> Rusty Lusk is maintaining a schedule of chapter discussions for the MPI 
> Forum and has publicly requested that the MPI-IO group join the Forum on 
> several occasions.
> 
> Given the outcome of last week's MPI Forum meeting, it would appear that
> the schedule could accomodate discussion of an MPI-IO chapter in the June,
> July, and August meetings. 
> 
> I encourage you to pursue this opportunity.
> 
> Richard Frost
> SDSC

From owner-mpi-comm@CS.UTK.EDU Fri Apr 19 11:27:47 1996
Return-Path: <owner-mpi-comm@CS.UTK.EDU>
Received: from CS.UTK.EDU by netlib2.cs.utk.edu with ESMTP (cf v2.9t-netlib)
	id LAA26206; Fri, 19 Apr 1996 11:27:46 -0400
Received: from localhost (root@localhost) 
        by CS.UTK.EDU with SMTP (cf v2.9s-UTK)
	id LAA05389; Fri, 19 Apr 1996 11:22:45 -0400
Received: from iraun1.ira.uka.de (iraun1.ira.uka.de [129.13.10.90]) 
        by CS.UTK.EDU with SMTP (cf v2.9s-UTK)
	id LAA05369; Fri, 19 Apr 1996 11:22:36 -0400
Received: from Orion (actually i41a2.ira.uka.de) by iraun1.ira.uka.de 
          with SMTP (PP); Fri, 19 Apr 1996 17:22:29 +0200
Received: from localhost by Orion; (5.65v3.2/1.1.8.2/04Dec95-0429PM) id AA08869;
          Fri, 19 Apr 1996 17:22:27 +0200
Message-Id: <9604191522.AA08869@Orion>
To: mpi-comm@CS.UTK.EDU
Cc: blum@ira.uka.de
Subject: SUBSCRIBE
Date: Fri, 19 Apr 96 17:22:27 +0200
From: "Joachim Blum, IPD, Uni Karlsruhe" <blum@ira.uka.de>
X-Mts: smtp

SUBSCRIBE blum@ira.uka.de

From mpi-comm-human@mcs.anl.gov Thu May  9 11:28:02 1996
Return-Path: <mpi-comm-human@mcs.anl.gov>
Received: from antares.mcs.anl.gov by netlib2.cs.utk.edu with ESMTP (cf v2.9t-netlib)
	id LAA09595; Thu, 9 May 1996 11:28:01 -0400
Received: (from listserv@localhost) by antares.mcs.anl.gov (8.6.10/8.6.10)
	id JAA23570 for mpi-comm-out; Thu, 9 May 1996 09:48:08 -0500
Received: from mcs.anl.gov (donner.mcs.anl.gov [140.221.5.134]) by antares.mcs.anl.gov (8.6.10/8.6.10)  with ESMTP
	id JAA23565; Thu, 9 May 1996 09:48:01 -0500
Message-Id: <199605091448.JAA23565@antares.mcs.anl.gov>
To: mpi-comm@mcs.anl.gov, sio-exec@cacr.caltech.edu,
        sio-hlapi@cacr.caltech.edu, dfk@cs.dartmouth.edu, choudhar@cat.syr.edu,
        mpi-io@mcs.anl.gov, mpi-io@nas.nasa.gov
Subject: MPI Forum takes up I/O
Date: Thu, 09 May 1996 09:47:58 -0500
From: Rusty Lusk <lusk@mcs.anl.gov>
Sender: owner-mpi-core@mcs.anl.gov
Precedence: bulk


At its most recent meeting, the MPI Forum voted to start a subcommittee on
parallel I/O.  This will be a new effort, since I/O was not originally
considered to be in the scope of MPI-2.  Those interested in participating in
the design of an informal standard (like MPI) for high-performance, portable
I/O, particularly in an MPI context, are welcome to attend the next meeting of
the MPI Forum.  The meeting will be the next regularly-scheduled MPI Forum
meeting, scheduled for June 5-7 in Chicago.  Forum meetings occur every six
weeks, in Chicago.  Those interested should contact me about details.

Rusty Lusk

From mpi-comm-human@mcs.anl.gov Fri May 10 15:29:56 1996
Return-Path: <mpi-comm-human@mcs.anl.gov>
Received: from antares.mcs.anl.gov by netlib2.cs.utk.edu with ESMTP (cf v2.9t-netlib)
	id PAA02699; Fri, 10 May 1996 15:29:53 -0400
Received: (from listserv@localhost) by antares.mcs.anl.gov (8.6.10/8.6.10)
	id OAA20992 for mpi-comm-out; Fri, 10 May 1996 14:10:39 -0500
Received: from brahma.ticam.utexas.edu (brahma-e.ticam.utexas.edu [128.83.68.51]) by antares.mcs.anl.gov (8.6.10/8.6.10)  with SMTP
	id MAA18845; Fri, 10 May 1996 12:44:18 -0500
Received: from agni.ticam.utexas.edu by brahma.ticam.utexas.edu (AIX 3.2/UCB 5.64/4.03)
          id AA51433; Fri, 10 May 1996 12:44:45 -0500
Received: by agni.ticam.utexas.edu (AIX 3.2/UCB 5.64/4.03)
          id AA13400; Fri, 10 May 1996 12:44:09 -0500
Date: Fri, 10 May 1996 12:44:08 -0500 (CDT)
From: "Carter Edwards : carter@ticam.utexas.edu" <carter@ticam.utexas.edu>
To: mpi-1sided@mcs.anl.gov, mpi-comm@mcs.anl.gov
Subject: Request Handlers, please
Message-Id: <Pine.A32.3.91.960510124052.12351A-100000@agni.ticam.utexas.edu>
Mime-Version: 1.0
Content-Type: TEXT/PLAIN; charset=US-ASCII
Sender: owner-mpi-core@mcs.anl.gov
Precedence: bulk


Please post the minutes of the April 24-26, 1996 meeting.
The discussion and vote to remove Request Handlers from
the MPI2 spec. is of particular interest.

It was noted in Chapter 6, External Interfaces, that
Request Handlers will reappear in a TBD Chapter on Threads.

--

I propose that Request Handler semantics be "orthogonal"
to Thread semantics.  An MPI user should be able to
use Request Handlers without having to be concerned
with Thread semantics.

A simple suggestion to achieve this "orthogonality":
  If Threads are present, then the execution of a
  Request Handler preempts the Thread from which it
  was posted.  A Request Handler could either execute
  within its posting Thread or block its posting
  Thread until the Request Handler "returns".

If a MPI User wants a particular Handler or set of Handlers
to execute in a separate Thread then the MPI User must first
create a Thread and then post the Handler(s) within that Thread.

--

This baits a larger discussion regarding MPI-2 and Threads.
If an MPI implementation internally creates Threads then
should these threads:
  1) be transparent to the MPI user and 
  2) not introduce consistency problems in the
     presence of an MPI user's Threads.

----------------------------------------------------------------------------
Carter Edwards, carter@ticam.utexas.edu, http://www.ticam.utexas.edu/~carter
----------------------------------------------------------------------------




From mpi-comm-human@mcs.anl.gov Fri May 10 16:59:41 1996
Return-Path: <mpi-comm-human@mcs.anl.gov>
Received: from antares.mcs.anl.gov by netlib2.cs.utk.edu with ESMTP (cf v2.9t-netlib)
	id QAA04769; Fri, 10 May 1996 16:59:40 -0400
Received: (from listserv@localhost) by antares.mcs.anl.gov (8.6.10/8.6.10)
	id PAA23321 for mpi-comm-out; Fri, 10 May 1996 15:36:38 -0500
Received: from Aurora.CS.MsState.Edu (aurora.cs.msstate.edu [130.18.208.91]) by antares.mcs.anl.gov (8.6.10/8.6.10)  with ESMTP
	id OAA22098; Fri, 10 May 1996 14:54:06 -0500
Received: from aurora.cs.msstate.edu (aurora.cs.msstate.edu [130.18.208.91]);
           by Aurora.CS.MsState.Edu using SMTP (SMI-8.6/7.0m-FWP-MsState);
           id OAA06492; Fri, 10 May 1996 14:53:38 -0500
Date: Fri, 10 May 1996 14:53:38 -0500 (CDT)
From: Anthony Skjellum <tony@aurora.cs.msstate.edu>
To: "Carter Edwards : carter@ticam.utexas.edu" <carter@ticam.utexas.edu>
cc: mpi-1sided@mcs.anl.gov, mpi-comm@mcs.anl.gov
Subject: Re: Request Handlers, please
In-Reply-To: <Pine.A32.3.91.960510124052.12351A-100000@agni.ticam.utexas.edu>
Message-ID: <Pine.SOL.3.90.960510145311.6396G-100000@aurora.cs.msstate.edu>
MIME-Version: 1.0
Content-Type: TEXT/PLAIN; charset=US-ASCII
Sender: owner-mpi-core@mcs.anl.gov
Precedence: bulk

Carter, there are MPI implementations that use threads inside.  They
should certainly be transparent to user process.  Windows/NT version
we are doing works this way.
-Tony

On Fri, 10 May 1996, Carter Edwards : carter@ticam.utexas.edu wrote:

> Date: Fri, 10 May 1996 12:44:08 -0500 (CDT)
> From: Carter Edwards : carter@ticam.utexas.edu <carter@ticam.utexas.edu>
> To: mpi-1sided@mcs.anl.gov, mpi-comm@mcs.anl.gov
> Subject: Request Handlers, please
> 
> 
> Please post the minutes of the April 24-26, 1996 meeting.
> The discussion and vote to remove Request Handlers from
> the MPI2 spec. is of particular interest.
> 
> It was noted in Chapter 6, External Interfaces, that
> Request Handlers will reappear in a TBD Chapter on Threads.
> 
> --
> 
> I propose that Request Handler semantics be "orthogonal"
> to Thread semantics.  An MPI user should be able to
> use Request Handlers without having to be concerned
> with Thread semantics.
> 
> A simple suggestion to achieve this "orthogonality":
>   If Threads are present, then the execution of a
>   Request Handler preempts the Thread from which it
>   was posted.  A Request Handler could either execute
>   within its posting Thread or block its posting
>   Thread until the Request Handler "returns".
> 
> If a MPI User wants a particular Handler or set of Handlers
> to execute in a separate Thread then the MPI User must first
> create a Thread and then post the Handler(s) within that Thread.
> 
> --
> 
> This baits a larger discussion regarding MPI-2 and Threads.
> If an MPI implementation internally creates Threads then
> should these threads:
>   1) be transparent to the MPI user and 
>   2) not introduce consistency problems in the
>      presence of an MPI user's Threads.
> 
> ----------------------------------------------------------------------------
> Carter Edwards, carter@ticam.utexas.edu, http://www.ticam.utexas.edu/~carter
> ----------------------------------------------------------------------------
> 
> 
> 
> 

Anthony Skjellum, PhD, Asst. Professor of Computer Science; 
Mississippi State University, Department of Computer Science & NSF ERC       
Butler, Rm 300, PO Box 9637, Corner of Perry&Barr, Mississippi State,MS 39762 
(601)325-8435 FAX: (601)325-8997;  http://www.erc.msstate.edu/~tony; Quote:
"What a rain of ashes falls on him that sees the new and cannot leave the
old."-Shakespeare  ; e-mail: tony@cs.msstate.edu;  Try MPI!



From owner-mpi-comm@CS.UTK.EDU Wed May 15 05:25:38 1996
Return-Path: <owner-mpi-comm@CS.UTK.EDU>
Received: from CS.UTK.EDU by netlib2.cs.utk.edu with ESMTP (cf v2.9t-netlib)
	id FAA16692; Wed, 15 May 1996 05:25:38 -0400
Received: from localhost (root@localhost) 
        by CS.UTK.EDU with SMTP (cf v2.9s-UTK)
	id FAA09232; Wed, 15 May 1996 05:22:44 -0400
Received: from goggins.bath.ac.uk (goggins.bath.ac.uk [138.38.32.13]) 
        by CS.UTK.EDU with ESMTP (cf v2.9s-UTK)
	id FAA09215; Wed, 15 May 1996 05:22:41 -0400
Received: from maths.Bath.AC.UK (actually host java.maths.bath.ac.uk) 
          by goggins.bath.ac.uk with SMTP (PP); Wed, 15 May 1996 10:22:20 +0100
Date: Wed, 15 May 1996 10:21:18 +0100 (BST)
From: Mr J Rodriguez <jr@maths.bath.ac.uk>
X-Sender: jr@java
To: mpi-bugs@mcs.anl.gov, mpi-comm@CS.UTK.EDU, mpi-impl@mcs.anl.gov
Subject: SUBSCRIBE
Message-ID: <Pine.SGI.3.91.960515102016.19405A-100000@java>
MIME-Version: 1.0
Content-Type: TEXT/PLAIN; charset=US-ASCII
Sender: jr@maths.bath.ac.uk

jr@maths.bath.ac.uk

From mpi-comm-human@mcs.anl.gov Fri May 17 17:11:44 1996
Return-Path: <mpi-comm-human@mcs.anl.gov>
Received: from antares.mcs.anl.gov by netlib2.cs.utk.edu with ESMTP (cf v2.9t-netlib)
	id RAA01146; Fri, 17 May 1996 17:11:43 -0400
Received: (from listserv@localhost) by antares.mcs.anl.gov (8.6.10/8.6.10)
	id PAA19627 for mpi-comm-out; Fri, 17 May 1996 15:59:13 -0500
Received: from mcs.anl.gov (godzilla.mcs.anl.gov [140.221.5.136]) by antares.mcs.anl.gov (8.6.10/8.6.10)  with ESMTP
	id PAA19613 for <mpi-comm@mcs.anl.gov>; Fri, 17 May 1996 15:59:02 -0500
Message-Id: <199605172059.PAA19613@antares.mcs.anl.gov>
To: mpi-comm@mcs.anl.gov
Subject: Minutes of last meeting are ready
Date: Fri, 17 May 1996 15:59:01 -0500
From: William Gropp <gropp@mcs.anl.gov>
Sender: owner-mpi-core@mcs.anl.gov
Precedence: bulk

In the usual place (http://www.mcs.anl.gov/Projects/mpi/mpi2/mpi2.html).

Bill

From mpi-comm-human@mcs.anl.gov Tue May 28 12:19:12 1996
Return-Path: <mpi-comm-human@mcs.anl.gov>
Received: from antares.mcs.anl.gov by netlib2.cs.utk.edu with ESMTP (cf v2.9t-netlib)
	id MAA00716; Tue, 28 May 1996 12:19:11 -0400
Received: (from listserv@localhost) by antares.mcs.anl.gov (8.6.10/8.6.10)
	id LAA23665 for mpi-comm-out; Tue, 28 May 1996 11:01:50 -0500
Received: from mcs.anl.gov (donner.mcs.anl.gov [140.221.5.134]) by antares.mcs.anl.gov (8.6.10/8.6.10)  with ESMTP
	id LAA23649; Tue, 28 May 1996 11:01:39 -0500
Message-Id: <199605281601.LAA23649@antares.mcs.anl.gov>
To: mpi-core@antares.mcs.anl.gov, mpi-comm@antares.mcs.anl.gov
Subject: tutorial on Shared memory issues
Date: Tue, 28 May 1996 11:01:37 -0500
From: Rusty Lusk <lusk@mcs.anl.gov>
Sender: owner-mpi-core@mcs.anl.gov
Precedence: bulk

Dear group,

For those who would like to better understand the issues surrounding some of
the discussions in the 1-sided communication subcommittee, I highly recommend
the excellent paper

  Shared Memory Consistency Models:  A Tutorial

  by Sarita Adve and Kourosh Gharachorloo

This is quite easy to read and uses as examples just exactly the sorts of
things people are going to want to do with put/get.  It presents the memory
model that most *users* have of shared memory, explains how modern CPUs do not
support this model, and what kinds of steps (e.g. fence) need to be taken by
programmers (or compilers, or libraries) to reconstruct the model while still
allowing optimizations.  I wish that I had read this months ago, but it is not
too late.

It is available from the Web page:

  http://www.research.digital.com/wrl/techreports/abstracts/95.7.html

(A link on that page will get you the postscript of the full 22-page paper.)

Regards,
Rusty


From mpi-comm-human@mcs.anl.gov Tue Jun 18 12:03:34 1996
Return-Path: <mpi-comm-human@mcs.anl.gov>
Received: from antares.mcs.anl.gov by netlib2.cs.utk.edu with ESMTP (cf v2.9t-netlib)
	id MAA06032; Tue, 18 Jun 1996 12:03:33 -0400
Received: (from listserv@localhost) by antares.mcs.anl.gov (8.6.10/8.6.10)
	id KAA07051 for mpi-comm-out; Tue, 18 Jun 1996 10:49:10 -0500
Received: from hermes.clab.ee.upatras.gr (hermes.clab.ee.upatras.gr [150.140.174.3]) by antares.mcs.anl.gov (8.6.10/8.6.10)  with ESMTP
	id GAA03660 for <mpi-comm@mcs.anl.gov>; Tue, 18 Jun 1996 06:47:36 -0500
Received: from miki.clab.ee.upatras.gr by hermes.clab.ee.upatras.gr with SMTP
	(1.37.109.16/16.2) id AA080321908; Tue, 18 Jun 1996 14:45:08 +0200
Message-Id: <31C696FC.6238@ee.upatras.gr>
Date: Tue, 18 Jun 1996 14:46:05 +0300
From: "Dimitris P. Ioannides" <ioannidi@ee.upatras.gr>
Reply-To: ioannidi@ee.upatras.gr
Organization: Computer Science Laboratory - Univeristy Of Patras
X-Mailer: Mozilla 3.0b3 (Win95; I)
Mime-Version: 1.0
To: mpi-comm@mcs.anl.gov
Content-Type: text/plain; charset=us-ascii
Content-Transfer-Encoding: 7bit
Sender: owner-mpi-core@mcs.anl.gov
Precedence: bulk

subscribe mpi-coll ioannidi@ee.upatras.gr


From mpi-comm-human@mcs.anl.gov Tue Jun 25 17:54:20 1996
Return-Path: <mpi-comm-human@mcs.anl.gov>
Received: from antares.mcs.anl.gov by netlib2.cs.utk.edu with ESMTP (cf v2.9t-netlib)
	id RAA05127; Tue, 25 Jun 1996 17:54:19 -0400
Received: (from listserv@localhost) by antares.mcs.anl.gov (8.6.10/8.6.10)
	id QAA18929 for mpi-comm-out; Tue, 25 Jun 1996 16:43:39 -0500
Received: from igw2.watson.ibm.com (igw2.watson.ibm.com [129.34.139.6]) by antares.mcs.anl.gov (8.6.10/8.6.10)  with ESMTP
	id QAA18924 for <mpi-comm@mcs.anl.gov>; Tue, 25 Jun 1996 16:43:29 -0500
Received: from mailhub1.watson.ibm.com (mailhub1.watson.ibm.com [9.2.249.31]) by igw2.watson.ibm.com (8.7.4/8.7.1) with ESMTP id RAA23171 for <mpi-comm@mcs.anl.gov>; Tue, 25 Jun 1996 17:43:50 -0400
Received: from watngi02.watson.ibm.com (watngi02.watson.ibm.com [9.2.235.124]) by mailhub1.watson.ibm.com (8.7.1/03-28-96) with SMTP id RAA53182 for <mpi-comm@mcs.anl.gov>; Tue, 25 Jun 1996 17:43:26 -0400
Received: by watngi02.watson.ibm.com (IBM OS/2 SENDMAIL VERSION 1.3.17/03-09-96 ) id AA5425; Tue, 25 Jun 96 17:43:23 -0400
Message-Id: <9606252143.AA5425@watngi02.watson.ibm.com>
Received: from IBM Research with "Lotus Notes Mail Gateway for SMTP" id
  CB5F00C5E17370A7852563540076DF35; Tue, 25 Jun 96 17:43:17 
To: Barry Smith <bsmith@mcs.anl.gov>
Cc: mpi-comm <mpi-comm@mcs.anl.gov>
From: Marc Snir/Watson/IBM Research
  <snir@watson.ibm.com>
Date: 25 Jun 96 17:41:09 
Subject: Re: CHANGES to MPI standard are damaging
Mime-Version: 1.0
Content-Type: Text/Plain
Sender: owner-mpi-core@mcs.anl.gov
Precedence: bulk

No syntactical changes to MPI1 are under consideration.  The basic rule is that 
MPI1 is a standard.  MPI2 may add new functions but may not change the 
functions in MPI1.

From mpi-comm-human@mcs.anl.gov Tue Jun 25 17:55:41 1996
Return-Path: <mpi-comm-human@mcs.anl.gov>
Received: from antares.mcs.anl.gov by netlib2.cs.utk.edu with ESMTP (cf v2.9t-netlib)
	id RAA05186; Tue, 25 Jun 1996 17:55:38 -0400
Received: (from listserv@localhost) by antares.mcs.anl.gov (8.6.10/8.6.10)
	id PAA16992 for mpi-comm-out; Tue, 25 Jun 1996 15:28:19 -0500
Received: from eagle (eagle.mcs.anl.gov [140.221.3.47]) by antares.mcs.anl.gov (8.6.10/8.6.10)  with ESMTP
	id PAA16987 for <mpi-comm@mcs.anl.gov>; Tue, 25 Jun 1996 15:28:11 -0500
From: Barry Smith <bsmith@mcs.anl.gov>
Date: Tue, 25 Jun 1996 15:28:10 -0500
Message-Id: <199606252028.PAA01327@eagle>
To: mpi-comm@mcs.anl.gov
Subject: CHANGES to MPI standard are damaging
Sender: owner-mpi-core@mcs.anl.gov
Precedence: bulk


  As a parallel library writer (using MPI) whose software has been
downloaded, installed, and used at 100s of sites around the world, I
urge the MPI 2 participants to strongly resist the urge to make
ANY syntactical changes in the MPI 1.1 standard.

  Any change in calling sequences (no matter how trivial or well
intentioned) causes havoc for libraries. People installing libraries on
older MPI releases or older library releases on newer MPI releases
cannot build. And most do not have the time or skills to track down
the problem. Just the minor changes to the calling sequences for the
attributes in going from MPI 1.0 to 1.1 meant that the PETSc libraries
could not be installed without change and headaches. Library users
cannot tolerate having to muck around in source figuring how to update
some library due to a trivial, cosmetic change to the standard.

  MPI already has a solid base of thousands of users and one of its
great advantages over PVM is its stability. Large MPI using libraries, 10s of
thousands of lines of code, have already been written and it is not
realistic to expect those to track changes in MPI 1.? calling sequences.
It is far better to accept MPI 1.1 with its blemishes then to make any
further changes in its syntax. MPI 2.0 may add to MPI 1.1 but it should 
not change. Otherwise I fear for the future of MPI.

        Barry Smith

  A concerned MPI user and fan




From mpi-comm-human@mcs.anl.gov Tue Jun 25 17:57:52 1996
Return-Path: <mpi-comm-human@mcs.anl.gov>
Received: from antares.mcs.anl.gov by netlib2.cs.utk.edu with ESMTP (cf v2.9t-netlib)
	id RAA05246; Tue, 25 Jun 1996 17:57:52 -0400
Received: (from listserv@localhost) by antares.mcs.anl.gov (8.6.10/8.6.10)
	id QAA19091 for mpi-comm-out; Tue, 25 Jun 1996 16:47:03 -0500
Received: from eagle (eagle.mcs.anl.gov [140.221.3.47]) by antares.mcs.anl.gov (8.6.10/8.6.10)  with ESMTP
	id QAA19084; Tue, 25 Jun 1996 16:46:51 -0500
From: Barry Smith <bsmith@mcs.anl.gov>
Message-Id: <199606252146.QAA04687@eagle>
Subject: Re: CHANGES to MPI standard are damaging
To: snir@watson.ibm.com (Marc Snir/Watson/IBM Research)
Date: Tue, 25 Jun 1996 16:46:49 -0500 (CDT)
Cc: mpi-comm@mcs.anl.gov
In-Reply-To: <9606252143.AA5423@watngi02.watson.ibm.com> from Marc Snir/Watson/IBM Research at "Jun 25, 96 05:41:09 pm"
X-Mailer: ELM [version 2.4ME+ PL10 (25)]
MIME-Version: 1.0
Content-Type: text/plain; charset=US-ASCII
Content-Transfer-Encoding: 7bit
Content-Length: 363       
Sender: owner-mpi-core@mcs.anl.gov
Precedence: bulk


  That's terrific.

   When I see people writing about changes in  MPI 1.2 I start to worry,
since 1.1 had some unneccessary cosmetic changes I hate to see that repeated
in 1.2.


> No syntactical changes to MPI1 are under consideration.  The basic rule is that 
> MPI1 is a standard.  MPI2 may add new functions but may not change the 
> functions in MPI1.
> 


From mpi-comm-human@mcs.anl.gov Tue Jun 25 18:24:09 1996
Return-Path: <mpi-comm-human@mcs.anl.gov>
Received: from antares.mcs.anl.gov by netlib2.cs.utk.edu with ESMTP (cf v2.9t-netlib)
	id SAA05493; Tue, 25 Jun 1996 18:24:08 -0400
Received: (from listserv@localhost) by antares.mcs.anl.gov (8.6.10/8.6.10)
	id RAA19685 for mpi-comm-out; Tue, 25 Jun 1996 17:10:44 -0500
Received: from sgi.sgi.com (SGI.COM [192.48.153.1]) by antares.mcs.anl.gov (8.6.10/8.6.10)  with ESMTP
	id RAA19680 for <mpi-comm@mcs.anl.gov>; Tue, 25 Jun 1996 17:10:35 -0500
Received: from mrjones.engr.sgi.com ([150.166.49.18]) by sgi.sgi.com (950413.SGI.8.6.12/950213.SGI.AUTOCF) via ESMTP id PAA00321 for <@sgi.engr.sgi.com:mpi-comm@mcs.anl.gov>; Tue, 25 Jun 1996 15:10:32 -0700
Received: by mrjones.engr.sgi.com (950413.SGI.8.6.12/940406.SGI.AUTO)
	for mpi-comm@mcs.anl.gov id PAA16752; Tue, 25 Jun 1996 15:10:31 -0700
From: "Eric Salo" <salo@mrjones.engr.sgi.com>
Message-Id: <9606251510.ZM16750@mrjones.engr.sgi.com>
Date: Tue, 25 Jun 1996 15:10:31 -0700
In-Reply-To: Barry Smith <bsmith@mcs.anl.gov>
        "CHANGES to MPI standard are damaging" (Jun 25,  3:28pm)
References: <199606252028.PAA01327@eagle>
X-Mailer: Z-Mail (3.2.3 08feb96 MediaMail)
To: mpi-comm@mcs.anl.gov
Subject: Re: CHANGES to MPI standard are damaging
Mime-Version: 1.0
Content-Type: text/plain; charset=us-ascii
Sender: owner-mpi-core@mcs.anl.gov
Precedence: bulk

Barry, is there anything specific in the current MPI-2 chapters that concerns
you? I am unaware of any proposals to change MPI-1.1 semantics, and am quite
certain that the MPI Forum would resoundingly vote down anything of the sort.

-- 
Eric Salo         Silicon Graphics Inc.             "Do you know what the
(415)933-2998     2011 N. Shoreline Blvd, 8U-808     last Xon said, just
salo@sgi.com      Mountain View, CA   94043-1389     before he died?"

From owner-mpi-comm@CS.UTK.EDU Tue Jul  9 14:39:30 1996
Return-Path: <owner-mpi-comm@CS.UTK.EDU>
Received: from CS.UTK.EDU by netlib2.cs.utk.edu with ESMTP (cf v2.9t-netlib)
	id OAA04637; Tue, 9 Jul 1996 14:39:29 -0400
Received: from localhost (root@localhost) 
        by CS.UTK.EDU with SMTP (cf v2.9s-UTK)
	id OAA00564; Tue, 9 Jul 1996 14:34:45 -0400
Received: from drawbridge.ctc.com (drawbridge.ctc.com [147.160.199.35]) 
        by CS.UTK.EDU with ESMTP (cf v2.9s-UTK)
	id OAA00556; Tue, 9 Jul 1996 14:34:32 -0400
Received: by drawbridge.ctc.com (951211.SGI.8.6.12.PATCH1042/951211.SGI)
	for <@drawbridge.ctc.com:mpi-comm@cs.utk.edu> id OAA11263; Tue, 9 Jul 1996 14:34:11 -0400
Received: from sgi10.ctc.com(147.160.31.8) by drawbridge.ctc.com via smap (V1.3)
	id sma011230; Tue Jul  9 14:31:55 1996
Received: from sgi15.ctc.com by sgi10.ctc.com via SMTP (931110.SGI/940406.SGI.AUTO)
	for @drawbridge.ctc.com:mpi-comm@cs.utk.edu id AA06045; Tue, 9 Jul 96 14:31:49 -0400
Received: by sgi15.ctc.com id OAA03872; Tue, 9 Jul 1996 14:31:48 -0400
From: "Rodrigo Bisbal" <bisbal@ctc.com>
Message-Id: <9607091431.ZM3870@sgi15.ctc.com>
Date: Tue, 9 Jul 1996 14:31:47 -0400
Reply-To: bisbal@ctc.com
X-Mailer: Z-Mail (3.2.2 10apr95 MediaMail)
To: mpi-comm@CS.UTK.EDU
Subject: subscribe
Mime-Version: 1.0
Content-Type: text/plain; charset=us-ascii

bisbal@ctc.com


From owner-mpi-comm@CS.UTK.EDU Tue Jul  9 14:53:02 1996
Return-Path: <owner-mpi-comm@CS.UTK.EDU>
Received: from CS.UTK.EDU by netlib2.cs.utk.edu with ESMTP (cf v2.9t-netlib)
	id OAA05051; Tue, 9 Jul 1996 14:53:02 -0400
Received: from localhost (root@localhost) 
        by CS.UTK.EDU with SMTP (cf v2.9s-UTK)
	id OAA02389; Tue, 9 Jul 1996 14:54:33 -0400
Received: from drawbridge.ctc.com (drawbridge.ctc.com [147.160.199.35]) 
        by CS.UTK.EDU with ESMTP (cf v2.9s-UTK)
	id OAA02374; Tue, 9 Jul 1996 14:54:26 -0400
Received: by drawbridge.ctc.com (951211.SGI.8.6.12.PATCH1042/951211.SGI)
	for <@drawbridge.ctc.com:mpi-comm@cs.utk.edu> id OAA11454; Tue, 9 Jul 1996 14:54:13 -0400
Received: from sgi10.ctc.com(147.160.31.8) by drawbridge.ctc.com via smap (V1.3)
	id sma011445; Tue Jul  9 14:52:36 1996
Received: from sgi15.ctc.com by sgi10.ctc.com via SMTP (931110.SGI/940406.SGI.AUTO)
	for @drawbridge.ctc.com:mpi-comm@cs.utk.edu id AA06548; Tue, 9 Jul 96 14:52:30 -0400
Received: by sgi15.ctc.com id OAA03955; Tue, 9 Jul 1996 14:52:29 -0400
From: "Rodrigo Bisbal" <bisbal@ctc.com>
Message-Id: <9607091452.ZM3953@sgi15.ctc.com>
Date: Tue, 9 Jul 1996 14:52:29 -0400
Reply-To: bisbal@ctc.com
X-Mailer: Z-Mail (3.2.2 10apr95 MediaMail)
To: mpi-comm@CS.UTK.EDU
Subject: buffering with mpich 
Mime-Version: 1.0
Content-Type: text/plain; charset=us-ascii

MPI version : 1.0.12 (February 1, 1996)
Implementation : mpich
Uname -s    : IRIX extreme 5.3 08031226 IP22 mips
SGI hinv:
        1 200 MHZ IP22 Processor
        FPU: MIPS R4010 Floating Point Chip Revision: 0.0
        CPU: MIPS R4400 Processor Chip Revision: 6.0
        On-board serial ports: 2
        On-board bi-directional parallel port
        Data cache size: 16 Kbytes
        Instruction cache size: 16 Kbytes
        Secondary unified instruction/data cache size: 2 Mbytes
        Main memory size: 96 Mbytes
        EISA bus: adapter 0
        Integral Ethernet: ec0, version 1
        Integral SCSI controller 1: Version WD33C93B, revision D
        Integral SCSI controller 0: Version WD33C93B, revision D


PROBLEM:

I am pushing the limits of the buffer and message size for the
nonblocking buffered send. I need to send a lot of data and continue
computing in an overlapping fashion.

This is what I've done:

. I create a buffer of 500K and attach it:
  buffer=malloc(500000);
  MPI_Buffer_attach(500000);

. then I create a message of 50K bytes size
  message=malloc(50000);

. the receiver process won't start receiving until after 10 seconds
  allowing to test if the sender buffer works.

. then I start sending 10 messages, it fills up up to 100K (2 messages), even
though
  I attached a 500K buffer ??
  The rest of the messages are not delivered until the receiver
  starts receiving.

. I am using the MPI_Bsend and MPI_Ibsend calls.

I have concluded that these buffered calls are not using the
user specified buffer. They must be using a default MPI buffering
scheme.

QUESTIONS:

1. Is there a limit for the used-defined buffer size? (can it be more that
100K?)
2. Besides attaching a buffer, what else do you need to increase the buffer
size ?
3. Is there additional flags when calling MPI_Bsend and/or MPI_Ibsend to take
full
   advantage of the buffer ?
4. Any ideas, comments ?
5. Any experiences buffering within LAM or CHIMP? (I am using mpich)


ANY COMMENTS ARE APPRECIATED:
===================================
*  Rodrigo Bisbal                 *
*  Concurrent Technologies Corp.  *
*  bisbal@ctc.com                 *
===================================



From mpi-comm-human@mcs.anl.gov Mon Aug 19 17:26:07 1996
Return-Path: <mpi-comm-human@mcs.anl.gov>
Received: from antares.mcs.anl.gov by netlib2.cs.utk.edu with ESMTP (cf v2.9t-netlib)
	id RAA02762; Mon, 19 Aug 1996 17:26:05 -0400
Received: (from listserv@localhost) by antares.mcs.anl.gov (8.6.10/8.6.10)
	id OAA01855 for mpi-comm-out; Mon, 19 Aug 1996 14:46:34 -0500
Received: from Aurora.CS.MsState.Edu (aurora.cs.msstate.edu [130.18.208.91]) by antares.mcs.anl.gov (8.6.10/8.6.10)  with ESMTP
	id OAA01697; Mon, 19 Aug 1996 14:39:19 -0500
Received: from localhost (tony@localhost);
           by Aurora.CS.MsState.Edu using SMTP (SMI-8.6/7.0m-FWP-MsState);
           id OAA26346; Mon, 19 Aug 1996 14:39:17 -0500
Date: Mon, 19 Aug 1996 14:39:16 -0500 (CDT)
From: Tony Skjellum <tony@aurora.cs.msstate.edu>
To: Tony Kimball <alk@think.com>
cc: mpi-core@mcs.anl.gov, mpi-comm@mcs.anl.gov
Subject: Re: event driven chapter
In-Reply-To: <199608191904.OAA26197@compound.Think.COM>
Message-ID: <Pine.GSO.3.95.960819143750.24831i-100000@aurora.cs.msstate.edu>
MIME-Version: 1.0
Content-Type: TEXT/PLAIN; charset=US-ASCII
Sender: owner-mpi-core@mcs.anl.gov
Precedence: bulk

Mr. Kimball:

You should take this up with the MPI-CORE reflector.  It is the policy
to reflect the postscript, which is then archived.  I understand the
concerns you raise, and so I have taken the initiative to forward to
the mpi-core group, and mpi-comm group, so it can be discussed by the
appropriate people, rather than aiming it at a subset.

This is my final communication with you on this subject.
-Tony


Anthony Skjellum, PhD, Asst. Professor of Computer Science; 
Mississippi State University, Department of Computer Science & NSF ERC       
Butler, Rm 300, PO Box 9637, Corner of Perry&Barr, Mississippi State,MS 39762 
(601)325-8435 FAX: (601)325-8997;  http://www.erc.msstate.edu/~tony; Quote:
"What a rain of ashes falls on him that sees the new and cannot leave the
old."-Shakespeare  ; e-mail: tony@cs.msstate.edu;  Try MPI!

On Mon, 19 Aug 1996, Tony Kimball wrote:

> Quoth Tony Skjellum on Mon, 19 August:
> : OK, you don't understand the MPI reflector list.  We send out the
> : postscript.  The fact that I reflected it was unintentional.  I do think
> : you know how to hit delete, so ...
> 
> I object strongly to the practice.  This is a bandwidth-profligate
> distribution technique, and therefore of detriment to the Internet
> community as a whole.  Moreover, it does material damage to those who
> must pay for the packets to recieve the unwanted drafts.  If it were
> desirable to distribute drafts by email, which I strongly contend it
> is not, it would nonetheless be no more than commonsense to separate
> the distribution lists into drafts-only and discussion-only subsets.
> I have no problem hitting delete.  That is not an issue for me.
> Locking down my Ethernet LAN for as much as a second to deliver unwanted
> materials is a significant detriment, made worse by a factor of twenty
> when I have twenty independent recipients on the LAN.  Worse yet
> is locking down the T1 external interface of my network to the
> backbone for that time.  Worse still is locking down my V.34 modem
> port for 3 full minutes, particularly if I am paying premium rates
> to read my mail in flight.
> 
> 
> 



From mpi-comm-human@mcs.anl.gov Thu Aug 29 17:52:34 1996
Return-Path: <mpi-comm-human@mcs.anl.gov>
Received: from antares.mcs.anl.gov by netlib2.cs.utk.edu with ESMTP (cf v2.9t-netlib)
	id RAA23471; Thu, 29 Aug 1996 17:52:32 -0400
Received: (from listserv@localhost) by antares.mcs.anl.gov (8.6.10/8.6.10)
	id PAA07870 for mpi-comm-out; Thu, 29 Aug 1996 15:34:45 -0500
Received: from mail.think.com (Mail1.Think.COM [131.239.33.245]) by antares.mcs.anl.gov (8.6.10/8.6.10)  with ESMTP
	id MAA02813; Thu, 29 Aug 1996 12:39:57 -0500
Received: from Early-Bird.Think.COM (Early-Bird-1.Think.COM [131.239.146.105])
    by mail.think.com (8.7.5/m3) with ESMTP id NAA20651;
    Thu, 29 Aug 1996 13:39:06 -0400 (EDT)
Received: from compound.Think.COM (fergus-2.dialup.prtel.com [206.10.99.132])
    by Early-Bird.Think.COM (8.7.5/e1) with ESMTP id NAA26694;
    Thu, 29 Aug 1996 13:39:02 -0400 (EDT)
Received: (from alk@localhost) by compound.Think.COM (8.7.5/8.7.3) id MAA01723; Thu, 29 Aug 1996 12:39:19 -0500 (CDT)
Date: Thu, 29 Aug 1996 12:39:19 -0500 (CDT)
From: Tony Kimball <alk@think.com>
Message-Id: <199608291739.MAA01723@compound.Think.COM>
To: tony@aurora.cs.msstate.edu
Cc: mpi-core@mcs.anl.gov, mpi-comm@mcs.anl.gov
Subject: Re: Newest realtime draft
References: <199608291609.LAA01626@compound.Think.COM>
	<Pine.GSO.3.95.960829112154.19600O-100000@aurora.cs.msstate.edu>
Sender: owner-mpi-core@mcs.anl.gov
Precedence: bulk

Quoth Tony Skjellum on Thu, 29 August:
: ... express your concerns directly to
: the entire MPI Forum body...

I presume the CC list is appropriate.  I must confess some reluctance
to address such a large audience without a offer of proposal, but you are
most *encouraging* on this point;-).

My own concerns would be met by splitting the various lists into
discussion and draft-distribution groups.  Thus, I would request this,
were it not that others may find the measure inadequate, and the
issue, a procedural annoyance, rather than substantive and germane,
may be raised again -- which we would all prefer to avoid, yes?
Specifically:

: ...connected to us by cellular modem, and reads his
: e-mail by downloading while flying cross country...

In consideration of such recipients, the obvious suggestion is to
establish a repository for submission of drafts, accessible by http
and ftp (and, by implication, ftp-mail), and adopt the convention that
announcements of draft submissions, and not the drafts themselves,
should be broadcast.  Absent the volunteer of such a repository, this
preferred solution fails, however.  Were it to exist, the slight
elaboration of using it as an archive for submissions to the
previously mention draft-distribution lists would serve the interests
of *all* readers.  I cannot volunteer a site, for everything which I
manage personally is in experimental/developmental use, and subject to
random downtime.

: I clearly explained these things to you before.  

My apologies: I must have somehow overlooked that explanation.
Regardless, I should prefer that personal criticisms -- and
"atavistic" is rather pejorative, you must admit -- pardon me while I
struggle to walk erect -- should be expressed in private
correspondence when possible, for otherwise there is a strong
temptation to defend oneself to an entirely uninterested audience.
Atavistic though I may be, not to mention curmudgeonly, I bear no
doubt that my concerns, however atavistically inflated, are shared by
less vocal recipients.




From mpi-comm-human@mcs.anl.gov Thu Aug 29 18:03:29 1996
Return-Path: <mpi-comm-human@mcs.anl.gov>
Received: from antares.mcs.anl.gov by netlib2.cs.utk.edu with ESMTP (cf v2.9t-netlib)
	id SAA23982; Thu, 29 Aug 1996 18:03:27 -0400
Received: (from listserv@localhost) by antares.mcs.anl.gov (8.6.10/8.6.10)
	id PAA07810 for mpi-comm-out; Thu, 29 Aug 1996 15:32:11 -0500
Received: from Aurora.CS.MsState.Edu (aurora.cs.msstate.edu [130.18.208.91]) by antares.mcs.anl.gov (8.6.10/8.6.10)  with ESMTP
	id LAA01537; Thu, 29 Aug 1996 11:34:47 -0500
Received: from localhost (tony@localhost);
           by Aurora.CS.MsState.Edu using SMTP (SMI-8.6/7.0m-FWP-MsState);
           id LAA19890; Thu, 29 Aug 1996 11:34:47 -0500
Date: Thu, 29 Aug 1996 11:34:47 -0500 (CDT)
From: Tony Skjellum <tony@aurora.cs.msstate.edu>
To: Tony Kimball <alk@think.com>
cc: mpi-core@mcs.anl.gov, mpi-comm@mcs.anl.gov
Subject: Re: Newest realtime draft
In-Reply-To: <199608291609.LAA01626@compound.Think.COM>
Message-ID: <Pine.GSO.3.95.960829112154.19600O-100000@aurora.cs.msstate.edu>
MIME-Version: 1.0
Content-Type: TEXT/PLAIN; charset=US-ASCII
Sender: owner-mpi-core@mcs.anl.gov
Precedence: bulk

Mr. Kimball:

I cannot thank you enough for reiterating your concern, but I remind you
that your subscription is voluntary, but the method of sharing information
is the convention of the Forum, of which I am but one voice among many.
Once again, I have propagated your concern to the Forum.  I cannot stop
doing transmission in this way until the MPI Forum changes its policy. 
Please address comments to those bodies, and unsubscribe in the meantime
to control bandwidth to your desktop.  You will find periodic updates at
the URLs below, and you can poll for them. 

If you were subscribing to other lists, you would get their postscript
too.  Perhaps you do, and are haranging others than me.  If so, I feel
that you are missing the opportunity to express your concerns directly to
the entire MPI Forum body, which might listen to you.  

I clearly explained these things to you before.  If you do not agree with
the terms of our voluntary organization's activities, please complain to
the group at large, not to one of those following its procedures.  I
personally am time writing this letter, because you are from a company
that might contribute to the standard; not because i have not explained
this before.  To be frank, if you were a random lurker, I would have blown
you off already, after having responded clearly twice before.

However, I do find all of this tiresome and atavistic.  Your employer
would be better served by your contributing a technical response to the
documents, rather than pursuing a crusade.   The only other person who
complained about this is connected to us by cellular modem, and reads his
e-mail by downloading while flying cross country...

Tony Skjellum



On Thu, 29 Aug 1996, Tony Kimball wrote:

> Date: Thu, 29 Aug 1996 11:09:32 -0500 (CDT)
> From: Tony Kimball <alk@think.com>
> To: tony@erc.msstate.edu
> Subject: Newest realtime draft
> 
> Quoth Tony Skjellum on Wed, 28 August:
> : See also anonymous ftp
> : as ftp://aurora.cs.msstate.edu/pub/mpi/rt-2-28aug96.ps
> : or ftp://aurora.cs.msstate.edu/pub/mpi/rt-2-28aug96.ps.Z
> : 
> 
> I very much appreciate the urls, and thank you for them
> most enthusiastically; however, I must strenuously protest
> the redudant inclusion of 203 kilobytes of uuencoded
> binary data.
> 

Anthony Skjellum, PhD, Associate Professor of Computer Science; 
Mississippi State University, Department of Computer Science & NSF ERC       
Butler, Rm 300, PO Box 9637, Corner of Perry&Barr, Mississippi State,MS 39762 
(601)325-8435 FAX: (601)325-8997;  http://www.erc.msstate.edu/~tony; Quote:
"What a rain of ashes falls on him that sees the new and cannot leave the
old."-Shakespeare  ; e-mail: tony@cs.msstate.edu;  Try MPI!



From mpi-comm-human@mcs.anl.gov Fri Sep  6 15:58:38 1996
Return-Path: <mpi-comm-human@mcs.anl.gov>
Received: from antares.mcs.anl.gov by netlib2.cs.utk.edu with ESMTP (cf v2.9t-netlib)
	id PAA24498; Fri, 6 Sep 1996 15:58:35 -0400
Received: (from listserv@localhost) by antares.mcs.anl.gov (8.6.10/8.6.10)
	id NAA17711 for mpi-comm-out; Fri, 6 Sep 1996 13:37:55 -0500
Received: from Aurora.CS.MsState.Edu (aurora.cs.msstate.edu [130.18.208.91]) by antares.mcs.anl.gov (8.6.10/8.6.10)  with ESMTP
	id NAA17495; Fri, 6 Sep 1996 13:28:05 -0500
Received: from localhost (tony@localhost);
           by Aurora.CS.MsState.Edu using SMTP (SMI-8.6/7.0m-FWP-MsState);
           id NAA22419; Fri, 6 Sep 1996 13:28:16 -0500
Date: Fri, 6 Sep 1996 13:28:16 -0500 (CDT)
From: Tony Skjellum <tony@aurora.cs.msstate.edu>
To: mpi-core@mcs.anl.gov, mpi-comm@mcs.anl.gov
cc: mpi-coll@mcs.anl.gov, mpi-realtime@mcs.anl.gov
Subject: FYI
Message-ID: <Pine.GSO.3.95.960906132306.22384J-100000@aurora.cs.msstate.edu>
MIME-Version: 1.0
Content-Type: TEXT/PLAIN; charset=US-ASCII
Sender: owner-mpi-core@mcs.anl.gov
Precedence: bulk

MPI Forum:

I just wanted to thank everyone who expressed concern about my recent
illness at the MPI Meeting.  I am much better now, and I will be in touch
with those of you who covered for me on Collective and Realtime.  These
will proceed apace for the next meeting: Andrew will send minutes for
Collective soon, and Arkady for Realtime.

I had more visitors and helpers at the hospital from the MPI Forum than
could have possibly been expected ... it was some experience to be sure.
Anyway, I was allowed to leave without staying their too long, and I was
OK to travel on Thursday, and am 99% recovered today [Friday].

For realtime aficionados, we will be setting an interim MPI/RT meeting for
late September.  Arkady will announce in minutes on the realtime
reflector.  People interested in channels under the collective chapter
should also refer to the channel activity in the realtime chapter to see
how further evolution has gone on there.

Thanks again for your concern,
Tony

Anthony Skjellum, PhD, Associate Professor of Computer Science; 
Mississippi State University, Department of Computer Science & NSF ERC       
Butler, Rm 300, PO Box 9637, Corner of Perry&Barr, Mississippi State,MS 39762 
(601)325-8435 FAX: (601)325-8997;  http://www.erc.msstate.edu/~tony; Quote:
"What a rain of ashes falls on him that sees the new and cannot leave the
old."-Shakespeare  ; e-mail: tony@cs.msstate.edu;  Try MPI!



From mpi-comm-human@mcs.anl.gov Tue Sep 17 10:48:44 1996
Return-Path: <mpi-comm-human@mcs.anl.gov>
Received: from antares.mcs.anl.gov by netlib2.cs.utk.edu with ESMTP (cf v2.9t-netlib)
	id KAA16655; Tue, 17 Sep 1996 10:48:41 -0400
Received: (from listserv@localhost) by antares.mcs.anl.gov (8.6.10/8.6.10)
	id IAA20181 for mpi-comm-out; Tue, 17 Sep 1996 08:59:55 -0500
Received: from igw2.watson.ibm.com (igw2.watson.ibm.com [129.34.139.6]) by antares.mcs.anl.gov (8.6.10/8.6.10)  with ESMTP
	id IAA20160 for <mpi-comm@mcs.anl.gov>; Tue, 17 Sep 1996 08:59:38 -0500
Received: from mailhub1.watson.ibm.com (mailhub1.watson.ibm.com [9.2.249.31]) by igw2.watson.ibm.com (8.7.4/8.7.1) with ESMTP id KAA08049 for <mpi-comm@mcs.anl.gov>; Tue, 17 Sep 1996 10:00:04 -0400
Received: from watngi01.watson.ibm.com (watngi01.watson.ibm.com [9.2.235.20]) by mailhub1.watson.ibm.com (8.7.1/09-08-96) with SMTP id JAA690040 for <mpi-comm@mcs.anl.gov>; Tue, 17 Sep 1996 09:59:35 -0400
Received: by watngi01.watson.ibm.com (IBM OS/2 SENDMAIL VERSION 1.3.17/07-11-96 ) id AA0226; Tue, 17 Sep 96 09:59:34 -0400
Message-Id: <9609171359.AA0226@watngi01.watson.ibm.com>
Received: from IBM Research with "Lotus Notes Mail Gateway for SMTP" id
  BEDF13D896ED9DD6852563A8004CC303; Tue, 17 Sep 96 09:59:33 
To: mpi-comm <mpi-comm@mcs.anl.gov>
Cc: mpi-core <mpi-core@mcs.anl.gov>
From: Marc Snir/Watson/IBM Research
  <snir@watson.ibm.com>
Date: 16 Sep 96 10:40:05 
Subject: Request for information on Fortran systems that use MPI
Mime-Version: 1.0
Content-Type: Text/Plain
Sender: owner-mpi-core@mcs.anl.gov
Precedence: bulk

The current proposal for 1sided communication in MPI2 makes the use of some 
functions (lock/unlock, for shared memory emulation) 
contingent upon the availability of dynamic memory allocation and C-like 
pointers.  The type of code that is assumed to work in Fortran is shown below:

REAL A
POINTER (P, A(100,100))  ! declare P to be an (integer) pointer to array A
CALL MPI_MEM_ALLOC(400,comm,P,ierr)  ! allocate space for array A and returns 
in P address of allocated memory;  
! now array A can be used

This is not part of standard Fortran or Fortran 90 (Fortran 90 pointers cannot 
be used for this type of code), but is widely available in many Fortran 
environments.

Questions:

1. Are there Fortran systems that do not support (integer) pointers at all?
2. Are there systems that support such pointers, but require a syntax that is 
different than the one shown in the example above?
3. On 64 bit systems, what is the datatype used for (integer) pointers?  I.e., 
what should be the type of the 3rd formal argument of MPI_MEM_ALLOC?

If your pet Fortran has problems with this kind of code, please answer; 
otherwise you will be stuck with an MPI feature that you cannot use on your 
system.

From mpi-comm-human@mcs.anl.gov Tue Sep 17 13:44:51 1996
Return-Path: <mpi-comm-human@mcs.anl.gov>
Received: from antares.mcs.anl.gov by netlib2.cs.utk.edu with ESMTP (cf v2.9t-netlib)
	id NAA19037; Tue, 17 Sep 1996 13:44:50 -0400
Received: (from listserv@localhost) by antares.mcs.anl.gov (8.6.10/8.6.10)
	id MAA25293 for mpi-comm-out; Tue, 17 Sep 1996 12:16:47 -0500
Received: from felix.dircon.co.uk (felix.dircon.co.uk [193.128.224.10]) by antares.mcs.anl.gov (8.6.10/8.6.10)  with SMTP
	id MAA24938; Tue, 17 Sep 1996 12:02:21 -0500
Received: by felix.dircon.co.uk id AA03732
  (5.67b/IDA-1.5); Tue, 17 Sep 1996 17:35:51 +0100
Message-Id: <199609171635.AA03732@felix.dircon.co.uk>
Received: from gw2-151.pool.dircon.co.uk(194.112.35.151) by amnesiac via smap (V1.3)
	id sma003698; Tue Sep 17 17:35:20 1996
Received: from localhost by jim (SMI-8.6) id RAA03777; Tue, 17 Sep 1996 17:41:04 +0100
To: Marc Snir/Watson/IBM Research <snir@watson.ibm.com>
Cc: mpi-comm <mpi-comm@mcs.anl.gov>, mpi-core <mpi-core@mcs.anl.gov>
Subject: Re: Request for information on Fortran systems that use MPI 
In-Reply-To: Your message of "16 Sep 1996 10:40:05."
             <9609171359.AA0226@watngi01.watson.ibm.com> 
Date: Tue, 17 Sep 1996 17:41:04 +0100
From: James Cownie <jcownie@dolphinics.com>
Sender: owner-mpi-core@mcs.anl.gov
Precedence: bulk


> 1. Are there Fortran systems that do not support (integer) pointers at all?

I believe that g77 is such a system.

    GNU F77 version 2.7.2 (sparc) compiled by GNU C version 2.7.2.
    GNU Fortran Front End version 0.5.16 compiled: May 30 1996 14:00:35

    jcownie@jim: g77 -o foo foo.f
    foo.f: In program `prof':
    foo.f:4: 
	     POINTER (P, A(100,100))   
	     ^
    Unimplemented or invalid form of statement at (^) -- statement ignored
    (this is a catchall diagnostic that currently applies to a wide
    variety of errors, including things like invalid ordering of
    statements)


-- Jim 

James Cownie 
Dolphin Interconnect Solutions
Phone : +44 117 9071438
E-Mail: jcownie@dolphinics.com


From mpi-comm-human@mcs.anl.gov Wed Sep 18 12:04:55 1996
Return-Path: <mpi-comm-human@mcs.anl.gov>
Received: from antares.mcs.anl.gov by netlib2.cs.utk.edu with ESMTP (cf v2.9t-netlib)
	id MAA27520; Wed, 18 Sep 1996 12:04:52 -0400
Received: (from listserv@localhost) by antares.mcs.anl.gov (8.6.10/8.6.10)
	id KAA14744 for mpi-comm-out; Wed, 18 Sep 1996 10:37:49 -0500
Received: from Aurora.CS.MsState.Edu (aurora.cs.msstate.edu [130.18.208.91]) by antares.mcs.anl.gov (8.6.10/8.6.10)  with ESMTP
	id KAA14503; Wed, 18 Sep 1996 10:29:51 -0500
Received: from localhost (tony@localhost);
           by Aurora.CS.MsState.Edu using SMTP (SMI-8.6/7.0m-FWP-MsState);
           id KAA10555; Wed, 18 Sep 1996 10:29:36 -0500
Date: Wed, 18 Sep 1996 10:29:36 -0500 (CDT)
From: Tony Skjellum <tony@aurora.cs.msstate.edu>
To: mpi-core@mcs.anl.gov, mpi-comm@mcs.anl.gov
Subject: JOD as separate document
Message-ID: <Pine.GSO.3.95.960918102844.9569L-100000@aurora.cs.msstate.edu>
MIME-Version: 1.0
Content-Type: TEXT/PLAIN; charset=US-ASCII
Sender: owner-mpi-core@mcs.anl.gov
Precedence: bulk

Folks,

I make the following proposal.  Since the JOD document is the core of MPI-3,
and since it may need chapter stratification, I suggest that it be separated from
MPI-2 document, and be physically attached, rather than being jointly managed.

Reasons:

1) Reduction of complexity
2) Reduction of work for Steve Lederman
3) Ability to begin structuring work for MPI-3
4) Ability to continue work on JOD contents without strictures of SC'96
   deadline associated with rest of MPI-2

There is no loss of generality, provided the JOD gets distributed at Supercomputing
with rest of document.

Comments?
Tony




From mpi-comm-human@mcs.anl.gov Wed Sep 18 12:09:02 1996
Return-Path: <mpi-comm-human@mcs.anl.gov>
Received: from antares.mcs.anl.gov by netlib2.cs.utk.edu with ESMTP (cf v2.9t-netlib)
	id MAA27594; Wed, 18 Sep 1996 12:09:01 -0400
Received: (from listserv@localhost) by antares.mcs.anl.gov (8.6.10/8.6.10)
	id KAA14714 for mpi-comm-out; Wed, 18 Sep 1996 10:36:40 -0500
Received: from Aurora.CS.MsState.Edu (aurora.cs.msstate.edu [130.18.208.91]) by antares.mcs.anl.gov (8.6.10/8.6.10)  with ESMTP
	id KAA14409 for <mpi-comm@mcs.anl.gov>; Wed, 18 Sep 1996 10:27:01 -0500
Received: from Ardra.CS.MsState.Edu (ardra.cs.msstate.edu [192.208.157.74]);
           by Aurora.CS.MsState.Edu using SMTP (SMI-8.6/7.0m-FWP-MsState);
           id KAA10535; Wed, 18 Sep 1996 10:27:14 -0500
From: Tony Skjellum <tony@Aurora.CS.MsState.Edu>
Received:  by Ardra.CS.MsState.Edu (SMI-8.6/6.0c-FWP);
	   id KAA16204; Wed, 18 Sep 1996 10:26:43 -0500
Date: Wed, 18 Sep 1996 10:26:43 -0500
Message-Id: <199609181526.KAA16204@Ardra.CS.MsState.Edu>
To: mpi-comm@mcs.anl.gov, mpi-core@mcs.anl.gv
Subject: JOD document
Sender: owner-mpi-core@mcs.anl.gov
Precedence: bulk

I make the following proposal.  Since the JOD document is the core of MPI-3,
and since it may need chapter stratification, I suggest that it be separated from
MPI-2 document, and be physically attached, rather than being jointly managed.

Reasons:

1) Reduction of complexity
2) Reduction of work for Steve Lederman
3) Ability to begin structuring work for MPI-3

There is no loss of generality, provided the JOD gets distributed at Supercomputing
with rest of document.

Comments?
Tony


From mpi-comm-human@mcs.anl.gov Fri Sep 20 02:09:57 1996
Return-Path: <mpi-comm-human@mcs.anl.gov>
Received: from antares.mcs.anl.gov by netlib2.cs.utk.edu with ESMTP (cf v2.9t-netlib)
	id CAA24235; Fri, 20 Sep 1996 02:09:56 -0400
Received: (from listserv@localhost) by antares.mcs.anl.gov (8.6.10/8.6.10)
	id XAA28114 for mpi-comm-out; Thu, 19 Sep 1996 23:23:43 -0500
Received: from mcs.anl.gov (donner.mcs.anl.gov [140.221.5.134]) by antares.mcs.anl.gov (8.6.10/8.6.10)  with ESMTP
	id XAA28086; Thu, 19 Sep 1996 23:22:42 -0500
Message-Id: <199609200422.XAA28086@antares.mcs.anl.gov>
To: mpi-comm@antares.mcs.anl.gov, mpi-core@antares.mcs.anl.gov
Subject: New Misc chapters
Date: Thu, 19 Sep 1996 23:22:42 -0500
From: Rusty Lusk <lusk@mcs.anl.gov>
Sender: owner-mpi-core@mcs.anl.gov
Precedence: bulk

The next two messages contain updates of the Misc 1.2 and Misc 2.0 chapters
that reflect decisions made during the last meeting and email discussion since
then.  This chapter is highly miscellaneous, and I am not sure that I have
correctly captured every issue that has been raised.  If there is something
that you have been following in Misc, please check that it has been properly
addressed.

Rusty

From mpi-comm-human@mcs.anl.gov Fri Sep 20 05:07:37 1996
Return-Path: <mpi-comm-human@mcs.anl.gov>
Received: from antares.mcs.anl.gov by netlib2.cs.utk.edu with ESMTP (cf v2.9t-netlib)
	id FAA11317; Fri, 20 Sep 1996 05:07:28 -0400
Received: (from listserv@localhost) by antares.mcs.anl.gov (8.6.10/8.6.10)
	id XAA28198 for mpi-comm-out; Thu, 19 Sep 1996 23:27:31 -0500
Received: from mcs.anl.gov (donner.mcs.anl.gov [140.221.5.134]) by antares.mcs.anl.gov (8.6.10/8.6.10)  with ESMTP
	id XAA28155; Thu, 19 Sep 1996 23:26:48 -0500
Message-Id: <199609200426.XAA28155@antares.mcs.anl.gov>
To: mpi-comm@antares.mcs.anl.gov, mpi-core@antares.mcs.anl.gov
Subject: New Misc-2.0
Date: Thu, 19 Sep 1996 23:26:46 -0500
From: Rusty Lusk <lusk@mcs.anl.gov>
Sender: owner-mpi-core@mcs.anl.gov
Precedence: bulk

%!PS-Adobe-2.0
%%Creator: dvips 5.528 Copyright 1986, 1994 Radical Eye Software
%%Title: temp.dvi
%%CreationDate: Thu Sep 19 23:25:17 1996
%%Pages: 21
%%PageOrder: Ascend
%%BoundingBox: 0 0 612 792
%%EndComments
%DVIPSCommandLine: dvips -o temp.ps temp
%DVIPSParameters: dpi=300, comments removed
%DVIPSSource:  TeX output 1996.09.19:2325
%%BeginProcSet: tex.pro
/TeXDict 250 dict def TeXDict begin /N{def}def /B{bind def}N /S{exch}N
/X{S N}B /TR{translate}N /isls false N /vsize 11 72 mul N /hsize 8.5 72
mul N /landplus90{false}def /@rigin{isls{[0 landplus90{1 -1}{-1 1}
ifelse 0 0 0]concat}if 72 Resolution div 72 VResolution div neg scale
isls{landplus90{VResolution 72 div vsize mul 0 exch}{Resolution -72 div
hsize mul 0}ifelse TR}if Resolution VResolution vsize -72 div 1 add mul
TR matrix currentmatrix dup dup 4 get round 4 exch put dup dup 5 get
round 5 exch put setmatrix}N /@landscape{/isls true N}B /@manualfeed{
statusdict /manualfeed true put}B /@copies{/#copies X}B /FMat[1 0 0 -1 0
0]N /FBB[0 0 0 0]N /nn 0 N /IE 0 N /ctr 0 N /df-tail{/nn 8 dict N nn
begin /FontType 3 N /FontMatrix fntrx N /FontBBox FBB N string /base X
array /BitMaps X /BuildChar{CharBuilder}N /Encoding IE N end dup{/foo
setfont}2 array copy cvx N load 0 nn put /ctr 0 N[}B /df{/sf 1 N /fntrx
FMat N df-tail}B /dfs{div /sf X /fntrx[sf 0 0 sf neg 0 0]N df-tail}B /E{
pop nn dup definefont setfont}B /ch-width{ch-data dup length 5 sub get}
B /ch-height{ch-data dup length 4 sub get}B /ch-xoff{128 ch-data dup
length 3 sub get sub}B /ch-yoff{ch-data dup length 2 sub get 127 sub}B
/ch-dx{ch-data dup length 1 sub get}B /ch-image{ch-data dup type
/stringtype ne{ctr get /ctr ctr 1 add N}if}B /id 0 N /rw 0 N /rc 0 N /gp
0 N /cp 0 N /G 0 N /sf 0 N /CharBuilder{save 3 1 roll S dup /base get 2
index get S /BitMaps get S get /ch-data X pop /ctr 0 N ch-dx 0 ch-xoff
ch-yoff ch-height sub ch-xoff ch-width add ch-yoff setcachedevice
ch-width ch-height true[1 0 0 -1 -.1 ch-xoff sub ch-yoff .1 add]{
ch-image}imagemask restore}B /D{/cc X dup type /stringtype ne{]}if nn
/base get cc ctr put nn /BitMaps get S ctr S sf 1 ne{dup dup length 1
sub dup 2 index S get sf div put}if put /ctr ctr 1 add N}B /I{cc 1 add D
}B /bop{userdict /bop-hook known{bop-hook}if /SI save N @rigin 0 0
moveto /V matrix currentmatrix dup 1 get dup mul exch 0 get dup mul add
.99 lt{/QV}{/RV}ifelse load def pop pop}N /eop{SI restore showpage
userdict /eop-hook known{eop-hook}if}N /@start{userdict /start-hook
known{start-hook}if pop /VResolution X /Resolution X 1000 div /DVImag X
/IE 256 array N 0 1 255{IE S 1 string dup 0 3 index put cvn put}for
65781.76 div /vsize X 65781.76 div /hsize X}N /p{show}N /RMat[1 0 0 -1 0
0]N /BDot 260 string N /rulex 0 N /ruley 0 N /v{/ruley X /rulex X V}B /V
{}B /RV statusdict begin /product where{pop product dup length 7 ge{0 7
getinterval dup(Display)eq exch 0 4 getinterval(NeXT)eq or}{pop false}
ifelse}{false}ifelse end{{gsave TR -.1 -.1 TR 1 1 scale rulex ruley
false RMat{BDot}imagemask grestore}}{{gsave TR -.1 -.1 TR rulex ruley
scale 1 1 false RMat{BDot}imagemask grestore}}ifelse B /QV{gsave
transform round exch round exch itransform moveto rulex 0 rlineto 0
ruley neg rlineto rulex neg 0 rlineto fill grestore}B /a{moveto}B /delta
0 N /tail{dup /delta X 0 rmoveto}B /M{S p delta add tail}B /b{S p tail}
B /c{-4 M}B /d{-3 M}B /e{-2 M}B /f{-1 M}B /g{0 M}B /h{1 M}B /i{2 M}B /j{
3 M}B /k{4 M}B /w{0 rmoveto}B /l{p -4 w}B /m{p -3 w}B /n{p -2 w}B /o{p
-1 w}B /q{p 1 w}B /r{p 2 w}B /s{p 3 w}B /t{p 4 w}B /x{0 S rmoveto}B /y{
3 2 roll p a}B /bos{/SS save N}B /eos{SS restore}B end
%%EndProcSet
TeXDict begin 40258431 52099146 1000 300 300
(/tmp_mnt/Net/antireo/antireo6/lusk/mpi2/report2/temp.dvi)
@start /Fa 1 1 df<FFFFF0FFFFF014027D881B>0 D E /Fb 2
111 df<00180038001000000000000000000000000001C0022004300430086000600060
006000C000C000C000C001800180018001806300E300C60078000D1D80960E>106
D<383C0044C6004702004602008E06000C06000C06000C0C00180C00180C401818401818
80300880300F00120E7F8D15>110 D E /Fc 4 52 df<07C018303018701C600C600CE0
0EE00EE00EE00EE00EE00EE00EE00EE00E600C600C701C30181C7007C00F157F9412>48
D<03000700FF000700070007000700070007000700070007000700070007000700070007
00070007007FF00C157E9412>I<0F8030E040708030C038E03840380038007000700060
00C00180030006000C08080810183FF07FF0FFF00D157E9412>I<0FE030306018701C70
1C001C00180038006007E000300018000C000E000EE00EE00EC00C401830300FE00F157F
9412>I E /Fd 52 122 df<00E001C0038007000E000E001C001C003800380038007000
700070007000E000E000E000E000E000E000E000E000E000E000E000E000700070007000
70003800380038001C001C000E000E000700038001C000E00B2A7E9E10>40
D<E000700038001C000E000E000700070003800380038001C001C001C001C000E000E000
E000E000E000E000E000E000E000E000E000E001C001C001C001C0038003800380070007
000E000E001C0038007000E0000B2A7E9E10>I<018001C0018001806186F99F7DBE1FF8
07E007E01FF87DBEF99F61860180018001C0018010127E9E15>I<E0E0E060404040C003
087C820C>44 D<FFE0FFE00B0280890E>I<03C00FF01FF83C3C381C700E700E700EE007
E007E007E007E007E007E007E007E007E007E007E007E007700E700E700E381C3C3C1FF8
0FF007E0101D7E9B15>48 D<010007003F00FF00C7000700070007000700070007000700
07000700070007000700070007000700070007000700070007000700FFF8FFF80D1C7C9B
15>I<07E01FF83C3C700E700EE007E007E007E007700E700E3C3C1FF807E01FF83C3C70
0E700EE007E007E007E007E007E007700E781E3C3C1FF807E0101D7E9B15>56
D<E0E0E0000000000000000000000000E0E0E003127C910C>58 D<7FFFFFC0FFFFFFE000
00000000000000000000000000000000000000000000000000000000000000FFFFFFE07F
FFFFC01B0C7E8F20>61 D<001C0000003E0000003E0000002E0000006700000067000000
E7800000C7800000C3800001C3C0000183C0000181C0000381E0000381E0000700F00007
00F0000600F0000E0078000FFFF8000FFFF8001C003C001C003C0018003C0038001E0038
001E0070001F0070000F0070000F00E0000780191D7F9C1C>65 D<FFF800FFFF00F00F80
F003C0F001E0F000F0F000F0F000F0F000F0F000F0F001E0F007C0FFFF80FFFE00FFFF80
F03FC0F003E0F001F0F000F0F00078F00078F00078F00078F00078F000F0F001E0F007C0
FFFF80FFFC00151D7C9C1C>I<003FC000FFF003C0F00780300F00001E00003C00003C00
00780000780000780000F00000F00000F00000F00000F00000F00000F00000F00000F000
007800007800007800003C00003C00001E00000F000807801803C07800FFF0003F80151F
7D9D1B>I<FFFC00FFFF00F00F80F003E0F001F0F000F0F00078F00038F0003CF0003CF0
001CF0001EF0001EF0001EF0001EF0001EF0001EF0001EF0001EF0003CF0003CF0003CF0
0078F000F0F000F0F003E0F00FC0FFFF00FFFC00171D7C9C1E>I<FFFFC0FFFFC0F00000
F00000F00000F00000F00000F00000F00000F00000F00000F00000F00000FFFF80FFFF80
F00000F00000F00000F00000F00000F00000F00000F00000F00000F00000F00000F00000
FFFFC0FFFFC0121D7C9C19>I<FFFF80FFFF80F00000F00000F00000F00000F00000F000
00F00000F00000F00000F00000F00000FFFF00FFFF00F00000F00000F00000F00000F000
00F00000F00000F00000F00000F00000F00000F00000F00000F00000111D7C9C18>I<00
3F8001FFF003C0F80780380F00181E00003C00003C0000780000780000780000F00000F0
0000F00000F00000F00000F00000F007F8F007F8F000387800387800387800383C00383C
00381E00380F003807803803C0F801FFF0003F80151F7D9D1C>I<F000F0F000F0F000F0
F000F0F000F0F000F0F000F0F000F0F000F0F000F0F000F0F000F0F000F0FFFFF0FFFFF0
F000F0F000F0F000F0F000F0F000F0F000F0F000F0F000F0F000F0F000F0F000F0F000F0
F000F0F000F0141D7C9C1D>I<F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0
F0F0F0F0F0F0041D7C9C0C>I<F0003CF00078F000F0F001E0F003C0F00780F00F00F01E
00F03C00F07800F0F000F0E000F1F000F3F000F77800FE7C00FC3C00FC1E00F81F00F00F
00F00F80F00780F003C0F003E0F001E0F000F0F000F0F00078F0007C161D7C9C1D>75
D<F000F000F000F000F000F000F000F000F000F000F000F000F000F000F000F000F000F0
00F000F000F000F000F000F000F000F000F000FFFEFFFE0F1D7C9C16>I<FC0007E0FC00
07E0FC0007E0EE000DE0EE000DE0EE000DE0E70019E0E70019E0E70019E0E78039E0E380
31E0E3C071E0E3C071E0E1C061E0E1C061E0E1E0E1E0E1E0E1E0E0E0C1E0E0F1C1E0E071
81E0E07181E0E07181E0E03B01E0E03B01E0E03B01E0E01E01E0E01E01E0E01E01E0E000
01E01B1D7C9C24>I<FC0070FC0070FE0070EE0070EF0070E70070E70070E78070E38070
E3C070E3C070E1E070E1E070E0E070E0F070E07070E07870E07870E03C70E03C70E01C70
E01E70E00E70E00E70E00F70E00770E007F0E003F0E003F0141D7C9C1D>I<003F000001
FFE00003FFF00007C0F8000F807C001E001E003E001F003C000F00780007807800078078
000780F00003C0F00003C0F00003C0F00003C0F00003C0F00003C0F00003C0F00003C0F8
0007C078000780780007807C000F803C000F003E001F001F003E000F807C0007C0F80003
FFF00001FFE000003F00001A1F7E9D1F>I<FFFC00FFFF00F00F80F003C0F001E0F000F0
F000F0F000F0F000F0F000F0F000F0F001E0F003E0F00FC0FFFF80FFFE00F00000F00000
F00000F00000F00000F00000F00000F00000F00000F00000F00000F00000F00000141D7C
9C1B>I<FFF800FFFF00F00F80F003C0F001E0F000F0F000F0F000F0F000F0F000F0F001
E0F003E0F00FC0FFFF80FFFF00FFF800F03C00F01C00F01E00F00F00F00F00F00780F007
80F003C0F003C0F001E0F000F0F000F0F00078151D7C9C1B>82 D<03F8000FFE001C0F00
380700700300600000E00000E00000E00000E00000F000007800007F00003FE0001FFC00
07FE0001FF00001F800007800003C00003C00001C00001C00001C00001C0C00180E00380
F007007C0E001FFC0007F000121F7E9D17>I<FFFFFF80FFFFFF80001E0000001E000000
1E0000001E0000001E0000001E0000001E0000001E0000001E0000001E0000001E000000
1E0000001E0000001E0000001E0000001E0000001E0000001E0000001E0000001E000000
1E0000001E0000001E0000001E0000001E0000001E0000001E0000191D7F9C1C>I<F000
70F00070F00070F00070F00070F00070F00070F00070F00070F00070F00070F00070F000
70F00070F00070F00070F00070F00070F00070F00070F00070F00070F000707800E07800
E03C01C01E03800F078007FE0001F800141E7C9C1D>I<F000F00070F000F80070F000F8
00707800B8006078019C00E078019C00E078019C00E03C039C01C03C031E01C03C030E01
C01E030E01801E070F03801E070F03801E060703800F060703000F0E0787000F0C078700
070C038600070C038600078C038E00079803CE00039801CC00039801CC00039801CC0001
D001C80001D000D80001F000F80001E000F80000E0007000241D7F9C27>87
D<F80001E07C0001C03E0003801E0007801F0007000F800E0007801E0007C01C0003E03C
0001E0380001F0700000F0F0000078E000007DC000003FC000001F8000001F0000000F00
00000F0000000F0000000F0000000F0000000F0000000F0000000F0000000F0000000F00
00000F0000000F00001B1D809C1C>89 D<7FFFF07FFFF00001E00003E00003C00007C000
0780000F00001F00001E00003E00003C0000780000F80000F00001F00001E00003C00007
C0000780000F80000F00001E00003E00003C00007C0000780000FFFFF0FFFFF0141D7E9C
19>I<0FC03FF07FF87038401C001C001C00FC0FFC3FFC781CE01CE01CE01CF07C7FFC7F
DC3F1C0E127E9114>97 D<E000E000E000E000E000E000E000E000E000E000E000E3E0EF
F0FFF8F87CF01CE01EE00EE00EE00EE00EE00EE00EE01CF01CF87CFFF8EFF0E3C00F1D7D
9C15>I<07E00FF81FFC3C1C70047000E000E000E000E000E000E000700070043C1C1FFC
0FF807E00E127E9112>I<000E000E000E000E000E000E000E000E000E000E000E0F8E1F
EE3FFE7C3E700E700EE00EE00EE00EE00EE00EE00EF00E701E7C3E3FFE1FEE0F8E0F1D7E
9C15>I<07C01FE03FF078787018601CFFFCFFFCFFFCE000E000E000700070043C1C3FFC
1FF807E00E127E9112>I<00FC01FC03FC07000E000E000E000E000E000E000E00FFE0FF
E00E000E000E000E000E000E000E000E000E000E000E000E000E000E000E000E000E1D80
9C0D>I<03C3C00FFFC01FFFC01C3800381C00381C00381C00381C00381C001C38001FF8
001FF0003BC0003800003800001FFC001FFF003FFF80700780E001C0E001C0E001C0F003
C07C0F803FFF001FFE0007F800121B7F9115>I<E000E000E000E000E000E000E000E000
E000E000E000E3E0EFF0FFF8F83CF01CE01CE01CE01CE01CE01CE01CE01CE01CE01CE01C
E01CE01CE01C0E1D7D9C15>I<F0F0F0F000000000000000707070707070707070707070
707070707070041D7E9C0A>I<E000E000E000E000E000E000E000E000E000E000E000E0
3CE078E0F0E1E0E3C0E780EF00FF00FF80FB80F9C0F1E0E0E0E0F0E078E038E03CE01E0F
1D7D9C14>107 D<E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0
E0031D7D9C0A>I<E3F03F00EFF8FF80FFFDFFC0F81F81E0F00F00E0E00E00E0E00E00E0
E00E00E0E00E00E0E00E00E0E00E00E0E00E00E0E00E00E0E00E00E0E00E00E0E00E00E0
E00E00E0E00E00E01B127D9122>I<E3E0EFF0FFF8F83CF01CE01CE01CE01CE01CE01CE0
1CE01CE01CE01CE01CE01CE01CE01C0E127D9115>I<03F0000FFC001FFE003C0F007807
80700380E001C0E001C0E001C0E001C0E001C0F003C07003807807803C0F001FFE000FFC
0003F00012127F9115>I<E3E0EFF0FFF8F87CF01CE01EE00EE00EE00EE00EE00EE00EE0
1CF03CF87CFFF8EFF0E3C0E000E000E000E000E000E000E000E0000F1A7D9115>I<E380
E780EF80FC00F800F000F000E000E000E000E000E000E000E000E000E000E000E0000912
7D910E>114 D<1FC03FF07FF0F030E000E000F0007F003FC01FE000F0003800388038F0
78FFF07FE01FC00D127F9110>I<1C001C001C001C001C001C00FFE0FFE01C001C001C00
1C001C001C001C001C001C001C001C001C001C201FF00FF007C00C187F970F>I<E007E0
077006700E700E381C381C381C1C381C381C380E700E700660076007E003C003C010127F
9113>118 D<E007E007700E700E780E381C381C1C181C380C380E300E70067007600360
03C001C001C001800180030003000700FE00FC00F800101A7F9113>121
D E /Fe 48 123 df<F0F0F0F004047B830E>46 D<01F00007FC000FFE001F1F003C0780
3C07807803C07803C07803C07001C0F001E0F001E0F001E0F001E0F001E0F001E0F001E0
F001E0F001E0F001E0F001E0F001E0F001E0F001E0F001E07803C07803C07803C07803C0
3C07803C07801F1F000FFE0007FC0001F00013237EA118>48 D<00C001C007C0FFC0FFC0
FBC003C003C003C003C003C003C003C003C003C003C003C003C003C003C003C003C003C0
03C003C003C003C003C003C003C003C0FFFFFFFFFFFF10227CA118>I<03F0000FFC001F
FE003C1F003007807007C06003C0E003E0C001E04001E04001E00001E00001E00001E000
03C00003C0000780000780000F00001E00003C0000780000F00001E00001C00003800007
00000E00001C0000380000700000FFFFE0FFFFE0FFFFE013227EA118>I<01F00007FC00
1FFF003E0F003807807003C02003C02003C00003C00003C00003C0000780000780000F00
001E0003FC0003F80003FE00000F000007800003C00003C00001E00001E00001E00001E0
0001E08001E0C003C0E003C07007803C0F801FFF000FFC0003F00013237EA118>I<001F
00001F00002F00002F00006F0000EF0000CF0001CF0001CF00038F00038F00078F00070F
000F0F000E0F001E0F003C0F003C0F00780F00780F00F00F00FFFFF8FFFFF8FFFFF8000F
00000F00000F00000F00000F00000F00000F00000F00000F0015217FA018>I<3FFF803F
FF803FFF803C00003C00003C00003C00003C00003C00003C00003C00003C00003CF8003F
FE003FFF003F0F803E07803C03C03803C00001E00001E00001E00001E00001E00001E000
01E04003C04003C0E003C07007807C1F003FFE000FFC0003F00013227EA018>I<007E00
01FF0003FF0007C1000F00001E00001E00003C00003C000078000078000078F800F1FE00
F7FF00FF0F80FC0780F803C0F803C0F801C0F001E0F001E0F001E0F001E0F001E07001E0
7001E07801E07803C03803C03C03801C07801F0F000FFE0007FC0001F00013237EA118>
I<FFFFE0FFFFE0FFFFE00000E00001C0000380000780000700000E00001E00001C00003C
0000380000780000780000F00000F00000E00001E00001E00001E00003C00003C00003C0
0003C00003C00007800007800007800007800007800007800007800013217EA018>I<01
F00007FC000FFE001E0F003C07803C07807803C07803C07803C07803C07803C03803803C
07801E0F000F1E0007FC0003F8000FFE001E0F003C07807803C07803C0F001E0F001E0F0
01E0F001E0F001E0F001E07803C07803C03C07803E0F801FFF0007FC0001F00013237EA1
18>I<01F00007FC000FFE001E0F003C07003807807803807803C0F003C0F001C0F001E0
F001E0F001E0F001E0F001E0F001E07003E07803E07803E03C07E03E1FE01FFDE00FF1E0
03E3C00003C00003C0000380000780000700000F00101E00183C003FF8001FF00007C000
13237EA118>I<001F0000001F0000003F8000003F8000003B8000007BC0000073C00000
71C00000F1E00000F1E00000E0E00001E0F00001E0F00001C0F00003C0780003C0780003
80780007803C0007803C0007003C000F001E000F001E000FFFFE001FFFFF001FFFFF001C
000F003C0007803C00078038000780780003C0780003C0700003C0F00001E0F00001E0E0
0001E01B237EA220>65 D<FFFC00FFFF80FFFFC0F007F0F001F0F00078F0003CF0003CF0
003CF0003CF0003CF00038F00078F000F0F003E0FFFFC0FFFF00FFFFC0F00FE0F001F8F0
0078F0003CF0001CF0001EF0001EF0001EF0001EF0001EF0003CF0007CF000F8F003F0FF
FFE0FFFFC0FFFE0017237BA220>I<000FF000007FFC0000FFFF0001F01F0003C0070007
8000000F0000001E0000003E0000003C0000003C000000780000007800000078000000F0
000000F0000000F0000000F0000000F0000000F0000000F0000000F0000000F000000078
00000078000000780000003C0000003C0000003E0000001E0000000F0000000780008003
C0038001F00F8000FFFF00007FFC00000FF00019257DA31F>I<FFFE0000FFFFC000FFFF
E000F003F000F000F800F0007C00F0003E00F0001E00F0000F00F0000F00F0000780F000
0780F0000780F00003C0F00003C0F00003C0F00003C0F00003C0F00003C0F00003C0F000
03C0F00003C0F0000380F0000780F0000780F0000780F0000F00F0001F00F0001E00F000
3C00F000FC00F003F800FFFFE000FFFFC000FFFE00001A237BA223>I<FFFFF0FFFFF0FF
FFF0F00000F00000F00000F00000F00000F00000F00000F00000F00000F00000F00000F0
0000FFFFE0FFFFE0FFFFE0F00000F00000F00000F00000F00000F00000F00000F00000F0
0000F00000F00000F00000F00000F00000FFFFF8FFFFF8FFFFF815237BA21D>I<000FF0
00003FFE0000FFFF8001F80F8003E00380078000000F0000001E0000001E0000003C0000
003C000000780000007800000078000000F0000000F0000000F0000000F0000000F00000
00F0000000F000FFC0F000FFC0F000FFC0780003C0780003C0780003C03C0003C03C0003
C01E0003C01E0003C00F0003C0078003C003E003C001F807C000FFFFC0003FFF00000FF8
001A257DA321>71 D<F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0
F0F0F0F0F0F0F0F004237CA20D>73 D<FC00007EFE0000FEFE0000FEFE0000FEF70001DE
F70001DEF70001DEF78003DEF380039EF380039EF3C0079EF3C0079EF1C0071EF1C0071E
F1E00F1EF0E00E1EF0E00E1EF0F01E1EF0F01E1EF0701C1EF0783C1EF0783C1EF038381E
F03C781EF03C781EF01C701EF01C701EF01EF01EF00EE01EF00EE01EF00FE01EF007C01E
F007C01EF007C01EF000001E1F237BA22A>77 D<001FC000007FF00001FFFC0003F07E00
07C01F000F800F801F0007C01E0003C03C0001E03C0001E0780000F0780000F0780000F0
70000070F0000078F0000078F0000078F0000078F0000078F0000078F0000078F0000078
F0000078780000F0780000F0780000F07C0001F03C0001E03E0003E01E0003C01F0007C0
0F800F8007C01F0003F07E0001FFFC00007FF000001FC0001D257DA324>79
D<FFFE00FFFF80FFFFC0F003E0F000F0F00078F00078F0003CF0003CF0003CF0003CF000
3CF0003CF00078F00078F000F0F003E0FFFFC0FFFF80FFFE00F00000F00000F00000F000
00F00000F00000F00000F00000F00000F00000F00000F00000F00000F00000F000001623
7BA21F>I<FFFC00FFFF80FFFFC0F003E0F000F0F00078F00038F0003CF0003CF0003CF0
003CF0003CF00038F00078F000F0F003E0FFFFC0FFFF80FFFE00F01E00F00F00F00700F0
0780F00380F003C0F001E0F001E0F000F0F000F0F00078F00038F0003CF0001EF0001EF0
000F18237BA21F>82 D<00FE0003FFC007FFE00F81E01E00603C00003C00007800007800
007800007800007800007C00003C00003F00001FC0000FFC0007FF0001FF80003FC00007
E00001F00000F00000F8000078000078000078000078000078000078C000F0E000F0F801
E07E07C03FFF800FFF0001FC0015257EA31B>I<FFFFFFF0FFFFFFF0FFFFFFF0000F0000
000F0000000F0000000F0000000F0000000F0000000F0000000F0000000F0000000F0000
000F0000000F0000000F0000000F0000000F0000000F0000000F0000000F0000000F0000
000F0000000F0000000F0000000F0000000F0000000F0000000F0000000F0000000F0000
000F0000000F0000000F0000000F00001C237EA221>I<07E01FF83FFC381E201E000F00
0F000F000F00FF07FF1FFF3E0F780FF00FF00FF00FF00FF83F7FFF3FEF1F8F10167E9517
>97 D<F00000F00000F00000F00000F00000F00000F00000F00000F00000F00000F00000
F00000F00000F1F000F7FC00FFFE00FC1F00F80F00F00780F00780F003C0F003C0F003C0
F003C0F003C0F003C0F003C0F003C0F00780F00780F80F00FC3E00FFFE00F7F800F1F000
12237CA219>I<01FC0007FF000FFF801F03803C0180780000780000700000F00000F000
00F00000F00000F00000F000007800007800007800003C00401F03C00FFFC007FF8001FC
0012167E9516>I<0003C00003C00003C00003C00003C00003C00003C00003C00003C000
03C00003C00003C00003C003E3C00FFBC01FFFC03F0FC03C07C07803C07803C0F003C0F0
03C0F003C0F003C0F003C0F003C0F003C0F003C07803C07803C03C07C03E0FC01FFFC00F
FBC003E3C012237EA219>I<03F00007FC001FFE003E0F003C0780780380780380F001C0
FFFFC0FFFFC0FFFFC0F00000F00000F000007000007800007800003C00801F07800FFF80
07FF0001F80012167E9516>I<003F00FF01FF03C0038007800780078007800780078007
800780FFF8FFF8FFF8078007800780078007800780078007800780078007800780078007
8007800780078007800780102380A20F>I<01F07807FFF80FFFF81F1F001E0F003C0780
3C07803C07803C07803C07801E0F001F1F000FFE001FFC0019F0003800003800003C0000
1FFE001FFFC01FFFE03FFFF07801F07800F8F00078F00078F00078F000787800F03E03E0
1FFFC00FFF8001FC0015217F9518>I<F000F000F000F000F000F000F000F000F000F000
F000F000F000F1F8F3FCF7FEFE1EF80FF80FF00FF00FF00FF00FF00FF00FF00FF00FF00F
F00FF00FF00FF00FF00FF00FF00F10237CA219>I<F0F0F0F0000000000000000000F0F0
F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F004237DA20B>I<00F000F000F000F000
000000000000000000000000000000000000F000F000F000F000F000F000F000F000F000
F000F000F000F000F000F000F000F000F000F000F000F000F000F000F000F000F000F080
F0E3E0FFE07FC01F000C2D83A20D>I<F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0
F0F0F0F0F0F0F0F0F0F0F0F0F0F0F004237DA20B>108 D<F0F807C0F3FE1FF0F7FF3FF8
FE0F7078FC0FE07CF807C03CF807C03CF007803CF007803CF007803CF007803CF007803C
F007803CF007803CF007803CF007803CF007803CF007803CF007803CF007803CF007803C
F007803C1E167C9527>I<F1F8F3FCF7FEFE1EF80FF80FF00FF00FF00FF00FF00FF00FF0
0FF00FF00FF00FF00FF00FF00FF00FF00FF00F10167C9519>I<01FC0007FF000FFF801F
07C03C01E07800F07800F0700070F00078F00078F00078F00078F00078F000787800F078
00F07C01F03E03E01F07C00FFF8007FF0001FC0015167F9518>I<F1F000F7FC00FFFE00
FC3F00F80F00F00780F00780F007C0F003C0F003C0F003C0F003C0F003C0F003C0F007C0
F00780F00F80F80F00FC3E00FFFE00F7F800F1F000F00000F00000F00000F00000F00000
F00000F00000F00000F00000F0000012207C9519>I<03E3C007FBC00FFFC01F0FC03C07
C07C03C07803C0F803C0F003C0F003C0F003C0F003C0F003C0F003C0F803C07803C07803
C03C07C03F0FC01FFFC00FFBC003E3C00003C00003C00003C00003C00003C00003C00003
C00003C00003C00003C012207E9519>I<F0E0F3E0F7E0FF00FE00FC00F800F800F000F0
00F000F000F000F000F000F000F000F000F000F000F000F0000B167C9511>I<07F01FFC
3FFE3C0E7806780078007C003F003FF01FF80FFC01FE001F000F000F000FC00FF81EFFFE
3FFC0FF010167F9513>I<0F000F000F000F000F000F00FFF8FFF8FFF80F000F000F000F
000F000F000F000F000F000F000F000F000F000F000F080F1C07FC07F803E00E1C7F9B12
>I<F00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00F
F01FF83F7FFF7FCF1F0F10167C9519>I<F007803CF00FC03CF00FC03C780DC078781DC0
78781DE078781CE0783C18E0F03C38E0F03C38F0F01C38F0E01E3871E01E3071E01E7079
E00E7079C00E7039C00F603BC007603B8007601B8007C01F8007C01F8003C01F001E167F
9521>119 D<7801F07C01E03E03C01E07C00F0780078F0007DE0003FC0001FC0000F800
00700000F80001FC0003DC00039E00078F000F07801E07801E03C03C01E07800F0F800F8
1516809516>I<F001E0F001E07803C07803C07C03C03C07803C07801E07801E07001E0F
000F0F000F0E00071E00079E00039C00039C00039C0001980001D80000F80000F00000F0
0000F00000E00000E00001E00001C00001C0000380007F80007F00007E000013207F9516
>I<7FFFC07FFFC07FFFC0000F80000F00001E00003E00007C0000780000F00001F00003
E00003C0000780000F80001F00001E00003C00007C0000FFFFC0FFFFC0FFFFC012167F95
15>I E /Ff 23 123 df<70F8F8F87005057C840D>58 D<70F8FCFC7404040408081010
2040060E7C840D>I<000001C00000078000001E00000078000001E00000078000000E00
000038000000F0000003C000000F0000003C000000F0000000F00000003C0000000F0000
0003C0000000F0000000380000000E0000000780000001E0000000780000001E00000007
80000001C01A1A7C9723>I<E0000000780000001E0000000780000001E0000000780000
001C0000000700000003C0000000F00000003C0000000F00000003C0000003C000000F00
00003C000000F0000003C00000070000001C00000078000001E00000078000001E000000
78000000E00000001A1A7C9723>62 D<0FFFFFFC1E03C0381803C0181003C0082003C008
20078008600780084007800840078008800F0010000F0000000F0000000F0000001E0000
001E0000001E0000001E0000003C0000003C0000003C0000003C00000078000000780000
007800000078000000F0000000F0000000F0000000F0000001F000007FFFC0001E1F7F9E
1B>84 D<00F1800389C00707800E03801C03803C0380380700780700780700780700F00E
00F00E00F00E00F00E10F01C20F01C20703C20705C40308C400F078014147E9318>97
D<07803F8007000700070007000E000E000E000E001C001C001CF01D0C3A0E3C0E380F38
0F700F700F700F700FE01EE01EE01EE01CE03CE038607060E031C01F0010207E9F14>I<
0000780003F80000700000700000700000700000E00000E00000E00000E00001C00001C0
00F1C00389C00707800E03801C03803C0380380700780700780700780700F00E00F00E00
F00E00F00E10F01C20F01C20703C20705C40308C400F078015207E9F18>100
D<007C01C207010E011C013C013802780C7BF07C00F000F000F000F00070007001700230
04183807C010147E9315>I<00007C0000CE00019E00039E00030C000700000700000700
000700000E00000E00000E0000FFF0000E00000E00001C00001C00001C00001C00001C00
00380000380000380000380000380000700000700000700000700000700000E00000E000
00E00000E00000C00001C000318000798000F300006200003C000017297E9F16>I<00E0
01E001E000C000000000000000000000000000000E001300238043804380438087000700
07000E000E001C001C001C20384038403840388019000E000B1F7E9E10>105
D<03C01FC0038003800380038007000700070007000E000E000E000E001C001C001C001C
0038003800380038007000700070007100E200E200E200E200640038000A207E9F0E>
108 D<1E07C07C00231861860023A032030043C034030043803803804380380380870070
07000700700700070070070007007007000E00E00E000E00E00E000E00E00E000E00E01C
101C01C01C201C01C038201C01C038401C01C0184038038018801801800F0024147E9328
>I<1E07802318C023A06043C0704380704380708700E00700E00700E00700E00E01C00E
01C00E01C00E03821C03841C07041C07081C03083803101801E017147E931B>I<007C00
01C3000301800E01C01E01C01C01E03C01E07801E07801E07801E0F003C0F003C0F003C0
F00780F00700700F00700E0030180018700007C00013147E9316>I<03C1E00462180474
1C08781C08701E08701E10E01E00E01E00E01E00E01E01C03C01C03C01C03C01C0380380
780380700380E003C1C0072380071E000700000700000E00000E00000E00000E00001C00
001C0000FFC000171D819317>I<1E1E0023210023C38043C78043878043830087000007
00000700000700000E00000E00000E00000E00001C00001C00001C00001C000038000018
000011147E9315>114 D<007C018203010603060706060E00078007F803FC01FE001F00
077007F006F006E004400820301FC010147E9315>I<00C000E001C001C001C001C00380
0380FFF8038007000700070007000E000E000E000E001C001C001C001C10382038203820
384018800F000D1C7F9B10>I<0F00601180702180E021C0E041C0E04380E08381C00701
C00701C00701C00E03800E03800E03800E03840E07080C07080C07080E0F1006131003E1
E016147E931A>I<03C1C00C62201034701038F02038F020386040700000700000700000
700000E00000E00000E00000E02061C040F1C040F1C080E2C080446300383C0014147E93
1A>120 D<0F00601180702180E021C0E041C0E04380E08381C00701C00701C00701C00E
03800E03800E03800E03800E07000C07000C07000E0F00061E0003EE00000E00000E0000
1C0078180078380070700060600021C0001F0000141D7E9316>I<01E02003F04007F8C0
0C1F8008010000020000040000080000100000600000C000010000020000040080080100
1003003F060061FC0040F80080700013147E9315>I E /Fg 26 90
df<3078F8787005057C840D>46 D<007E0001C3000301800701C00E00C00E00E01C00E0
1C00E03C01E03801E07801E07801E07801E07801E07801E0F003C0F003C0F003C0F003C0
F003C0F00380F00780E00780E00700E00700E00E00600E00701C003038003870000FC000
131F7C9D17>48 D<000C001C00FC0F380038003800380038003800700070007000700070
007000E000E000E000E000E000E001C001C001C001C001C001C0038003C0FFFE0F1E7C9D
17>I<003F8000C1E00100F00200780400780400780F007C0F807C0F807C0F0078060078
0000F80000F00001E00001C0000380000700000E00001C0000380000600000C000018000
0300200600200800401000403FFFC07FFF80FFFF80161E7E9D17>I<007F000183C00201
E00400F00700F00F00F00F01F00F01F00001E00001E00003C0000380000700000E0000F8
00000E000007000007800007C00003C00007C03007C07807C0F807C0F807C0F00780800F
00400E00201C0018780007E000141F7D9D17>I<01803001FFE003FFC003FF0003FC0002
0000020000020000040000040000040000047C000587000603800C01800801C00001C000
01E00001E00001E00001E07003C0F803C0F003C0E00380800780400700400E00201C0018
700007C000141F7D9D17>53 D<0000100000001800000038000000380000007800000078
000000FC000001BC0000013C0000033C0000023C0000063C0000043E0000081E0000081E
0000101E0000101E0000201E0000200F0000400F0000400F0000FFFF0000800F0001000F
8001000780020007800200078004000780040007800C0007C03E0007C0FF807FFC1E207E
9F22>65 D<07FFFF00007C01C0003C01E0003C00F0007800F8007800F8007800F8007800
F8007800F8007800F000F001F000F001E000F003C000F00F8000FFFE0000F00F0001E007
C001E003C001E003E001E001E001E001E001E001E003C001E003C003E003C003E003C003
C003C007C003C00F8007800F0007803E00FFFFF0001D1F7E9E20>I<0001F808000E0618
00380138007000F801E0007803C0007007800030078000300F0000301F0000301E000030
3E0000203C0000007C0000007C0000007C0000007C000000F8000000F8000000F8000000
F8000000F80000007800004078000080780000803C0000803C0001001C0002000E000200
06000C000300100001C0E000003F00001D217B9F21>I<07FFFF00007C01E0003C00F000
3C00780078003C0078003C0078001E0078001E0078001E0078001F00F0001F00F0001F00
F0001F00F0001F00F0001F00F0001F01E0001E01E0003E01E0003E01E0003E01E0003C01
E0007C03C0007803C000F003C000F003C001E003C003C003C0078007800F0007803C00FF
FFE000201F7E9E23>I<07FFFFF8007C0078003C0038003C001800780018007800080078
000800780008007800080078080800F0100000F0100000F0100000F0300000FFF00000F0
700001E0200001E0200001E0200001E0200001E0000801E0001003C0001003C0001003C0
002003C0002003C0006003C000C0078001C0078007C0FFFFFF801D1F7E9E1F>I<07FFFF
F8007C0078003C0038003C00180078001800780008007800080078000800780008007800
0800F0100000F0100000F0100000F0300000F0700000FFF00001E0600001E0200001E020
0001E0200001E0200001E0000003C0000003C0000003C0000003C0000003C0000003C000
000780000007C00000FFFE00001D1F7E9E1E>I<0001FC04000F030C003C009C0070007C
00E0003C01C0003803800018078000180F0000181F0000181E0000183E0000103C000000
7C0000007C0000007C0000007C000000F8000000F8000000F8007FFCF80003E0780001E0
780001E0780003C0780003C03C0003C03C0003C01C0003C00E0007C007000B8003801180
01E06080003F80001E217B9F24>I<07FFC7FFC0007C00F800003C007800003C00780000
7800F000007800F000007800F000007800F000007800F000007800F00000F001E00000F0
01E00000F001E00000F001E00000FFFFE00000F001E00001E003C00001E003C00001E003
C00001E003C00001E003C00001E003C00003C007800003C007800003C007800003C00780
0003C007800003C007800007800F000007C00F8000FFF8FFF800221F7E9E22>I<07FFE0
007C00003C00003C0000780000780000780000780000780000780000F00000F00000F000
00F00000F00000F00001E00001E00001E00001E00001E00001E00003C00003C00003C000
03C00003C00003C00007800007C000FFFC00131F7F9E10>I<07FFF000007E0000003C00
00003C000000780000007800000078000000780000007800000078000000F0000000F000
0000F0000000F0000000F0000000F0000001E0000001E0000001E0000001E0000001E000
8001E0010003C0010003C0010003C0030003C0020003C0060003C0060007801E0007807C
00FFFFFC00191F7E9E1C>76 D<07FC0000FFC0007C0000F800003C00017800003C000178
00004E0002F000004E0002F000004E0004F000004E0004F000004E0008F000004E0008F0
0000870011E00000870011E00000870021E00000870021E00000870041E00000838041E0
0001038083C00001038083C00001038103C00001038203C0000101C203C0000101C403C0
000201C40780000201C80780000201C80780000201D00780000200F00780000600E00780
000600E00F00000F00C00F8000FFE0C1FFF8002A1F7E9E2A>I<07FC01FFC0003E003E00
003E001800003E001800004F001000004F001000004780100000478010000043C0100000
43C010000083C020000081E020000081E020000080F020000080F0200000807820000100
78400001007C400001003C400001003C400001001E400001001E400002000F800002000F
800002000F800002000780000200078000060003800006000300000F00010000FFE00100
00221F7E9E22>I<0003F800001E0E000038070000E0038001C001C003C001E0078000E0
0F0000F00F0000F01E0000F01E0000F83E0000F83C0000F87C0000F87C0000F87C0000F8
7C0000F8F80001F0F80001F0F80001F0F80001F0F80003E0780003E0780003C0780007C0
7C0007803C000F003C001E001E001C000E0038000700F00003C3C00000FE00001D217B9F
23>I<07FFFF00007C03C0003C01E0003C00F0007800F0007800F8007800F8007800F800
7800F8007800F000F001F000F001E000F003C000F0078000F00F0000FFF80001E0000001
E0000001E0000001E0000001E0000001E0000003C0000003C0000003C0000003C0000003
C0000003C000000780000007C00000FFFC00001D1F7E9E1F>I<07FFFC00007C0700003C
03C0003C01E0007801E0007801F0007801F0007801F0007801F0007801E000F003E000F0
03C000F0078000F00F0000F03C0000FFF00001E0300001E0380001E01C0001E01C0001E0
1C0001E01E0003C03E0003C03E0003C03E0003C03E0003C03E0003C03E0207803E0407C0
1F04FFFC0F18000003E01F207E9E21>82 D<003F040060CC01803C03801C03001C070018
0600080E00080E00080E00080E00000F00000F80000FE00007FE0003FF8001FFC0007FE0
0007E00001E00000E00000F00000F04000E04000E04000E04000E06000C0600180E00380
F80300C60C0081F80016217D9F19>I<3FFFFFF03C0780F03007803060078030400F0010
400F0010C00F0010800F0010800F0010800F0010001E0000001E0000001E0000001E0000
001E0000001E0000003C0000003C0000003C0000003C0000003C0000003C000000780000
007800000078000000780000007800000078000000F0000001F800007FFFE0001C1F7A9E
21>I<FFFC3FF80F8007C007800300078003000F0002000F0002000F0002000F0002000F
0002000F0002001E0004001E0004001E0004001E0004001E0004001E0004003C0008003C
0008003C0008003C0008003C0008003C000800380010003800100038001000380020003C
0040001C0040001C0080000E0100000706000001F800001D20799E22>I<FFF07FF81FF0
1F000FC007C01F00078003000F00078003000F00078002000F000F8002000F000F800400
0F001F8004000F0017C008000F8013C00800078023C01000078023C01000078043C02000
078043C02000078083C04000078083E0400007C101E0800003C101E0800003C201E10000
03C201E1000003C401E2000003C401E2000003C801F4000003E800F4000001F000FC0000
01F000F8000001E000F8000001E000F0000001C000F0000001C00060000000C000600000
0080004000002C207A9E2F>87 D<FFF003FF1F8000F80F0000600F8000400780008007C0
018003C0010003E0020001E0040001F00C0001F0080000F0100000F8200000786000007C
4000003C8000003F0000001F0000001E0000001E0000001E0000001C0000003C0000003C
0000003C0000003C0000003C00000038000000780000007C00000FFFC000201F7A9E22>
89 D E /Fh 37 123 df<387CFEFEFE7C3807077C860F>46 D<01FC0007FF001F07C01E
03C03E03E07C01F07C01F07C01F0FC01F8FC01F8FC01F8FC01F8FC01F8FC01F8FC01F8FC
01F8FC01F8FC01F8FC01F8FC01F8FC01F87C01F07C01F07C01F03E03E01E03C01F8FC007
FF0001FC00151D7E9C1A>48 D<00E00001E0000FE000FFE000F3E00003E00003E00003E0
0003E00003E00003E00003E00003E00003E00003E00003E00003E00003E00003E00003E0
0003E00003E00003E00003E00003E00003E00003E000FFFF80FFFF80111D7C9C1A>I<07
F0001FFE00383F007C1F80FE0FC0FE0FC0FE0FE0FE07E07C07E03807E0000FE0000FC000
0FC0001F80001F00003E0000780000F00000E00001C0000380600700600E00601C00E01F
FFC03FFFC07FFFC0FFFFC0FFFFC0131D7D9C1A>I<01FC0007FF000E0F801E0FC03F07E0
3F07E03F07E03F07E01E0FC0000FC0000F80001F0001FC0001FC00000F800007C00003E0
0003F00003F83803F87C03F8FE03F8FE03F8FE03F0FC03F07807E03C0FC01FFF8003FC00
151D7E9C1A>I<0001C00003C00007C00007C0000FC0001FC0003BC00073C00063C000C3
C00183C00383C00703C00E03C00C03C01803C03803C07003C0E003C0FFFFFEFFFFFE0007
C00007C00007C00007C00007C00007C000FFFE00FFFE171D7F9C1A>I<3803803FFF803F
FF003FFE003FFC003FF0003F800030000030000030000030000033F80037FE003C1F0038
0F801007C00007C00007E00007E07807E0FC07E0FC07E0FC07E0FC07C0780FC0600F8038
1F001FFC0007F000131D7D9C1A>I<003F0001FFC007E0E00F81E01F03F01E03F03E03F0
7C03F07C01E07C0000FC1000FCFF00FDFFC0FD03E0FE01F0FE01F0FC01F8FC01F8FC01F8
FC01F87C01F87C01F87C01F83C01F03E01F01E03E00F07C007FF8001FE00151D7E9C1A>
I<6000007FFFF87FFFF87FFFF07FFFE07FFFC0E00180C00300C00300C00600000C000018
0000380000380000780000700000F00000F00001F00001F00001F00001F00003F00003F0
0003F00003F00003F00003F00001E00000C000151E7D9D1A>I<01FC0007FF000F07801E
03C01C01E03C01E03C01E03E01E03F01E03FC3C01FE3801FFF000FFE0007FF8007FFC01F
FFE03C3FF0780FF07803F8F001F8F000F8F00078F00078F000707800707C00E03E03C00F
FF8003FC00151D7E9C1A>I<01FC000FFF001F07803E03C07C03E07C01E0FC01F0FC01F0
FC01F0FC01F8FC01F8FC01F8FC01F87C03F87C03F83E05F81FFDF807F9F80041F80001F0
3C01F07E01F07E03E07E03E07E07C03C0780381F001FFC0007F000151D7E9C1A>I<07F8
001FFE00381F80780F80FC0FC0FC0FC0FC0FC0780FC0301F80001F00003E00007C000070
0000E00000E00000C00000C00000C00000C00000C00000C0000000000000000000000000
0001C00003E00007F00007F00007F00003E00001C00012207D9F19>63
D<0007FC02003FFF0E00FE03DE03F000FE07E0003E0FC0001E1F80001E3F00000E3F0000
0E7F0000067E0000067E000006FE000000FE000000FE000000FE000000FE000000FE0000
00FE0000007E0000007E0000067F0000063F0000063F00000C1F80000C0FC0001807E000
3803F0007000FE01C0003FFF800007FC001F1F7D9E26>67 D<FFFFFFE0FFFFFFE007E007
E007E001E007E000E007E0006007E0007007E0003007E0003007E0603007E0603007E060
0007E0E00007E1E00007FFE00007FFE00007E1E00007E0E00007E0600007E0600C07E060
0C07E0000C07E0001807E0001807E0001807E0003807E0007807E000F807E003F0FFFFFF
F0FFFFFFF01E1F7E9E22>69 D<FFFFFFFF07E007E007E007E007E007E007E007E007E007
E007E007E007E007E007E007E007E007E007E007E007E007E007E007E007E007E007E0FF
FFFFFF101F7E9E14>73 D<FFE000003FF8FFF000007FF807F000007F0006F80000DF0006
F80000DF0006F80000DF00067C00019F00067C00019F00063E00031F00063E00031F0006
1F00061F00061F00061F00060F800C1F00060F800C1F000607C0181F000607C0181F0006
07C0181F000603E0301F000603E0301F000601F0601F000601F0601F000600F8C01F0006
00F8C01F0006007D801F0006007D801F0006003F001F0006003F001F0006003F001F0006
001E001F00FFF01E03FFF8FFF00C03FFF82D1F7E9E32>77 D<FFFFFE00FFFFFF8007E00F
E007E003F007E001F807E001F807E001FC07E001FC07E001FC07E001FC07E001FC07E001
F807E001F807E003F007E00FE007FFFF8007FFFE0007E0000007E0000007E0000007E000
0007E0000007E0000007E0000007E0000007E0000007E0000007E0000007E00000FFFF00
00FFFF00001E1F7E9E24>80 D<07FC001FFF003F0F803F07C03F03E03F03E00C03E00003
E0007FE007FBE01F03E03C03E07C03E0F803E0F803E0F803E0FC05E07E0DE03FF8FE0FE0
7E17147F9319>97 D<FF0000FF00001F00001F00001F00001F00001F00001F00001F0000
1F00001F00001F00001F1FC01F7FF01FE0F81F807C1F007E1F003E1F003E1F003F1F003F
1F003F1F003F1F003F1F003F1F003E1F003E1F007C1F807C1EC1F81C7FE0181F8018207E
9F1D>I<01FE0007FF801F0FC03E0FC03E0FC07C0FC07C0300FC0000FC0000FC0000FC00
00FC0000FC00007C00007E00003E00603F00C01F81C007FF0001FC0013147E9317>I<01
FE0007FF800F83C01E01E03E00F07C00F07C00F8FC00F8FFFFF8FFFFF8FC0000FC0000FC
00007C00007C00003E00181E00180F807007FFE000FF8015147F9318>101
D<001F8000FFC001F3E003E7E003C7E007C7E007C3C007C00007C00007C00007C00007C0
00FFFC00FFFC0007C00007C00007C00007C00007C00007C00007C00007C00007C00007C0
0007C00007C00007C00007C00007C00007C0003FFC003FFC0013207F9F10>I<01FC3C07
FFFE0F079E1E03DE3E03E03E03E03E03E03E03E03E03E01E03C00F07800FFF0009FC0018
00001800001C00001FFF800FFFF007FFF81FFFFC3C007C70003EF0001EF0001EF0001E78
003C78003C3F01F80FFFE001FF00171E7F931A>I<1C003E007F007F007F003E001C0000
0000000000000000000000FF00FF001F001F001F001F001F001F001F001F001F001F001F
001F001F001F001F001F00FFE0FFE00B217EA00E>105 D<0038007C00FE00FE00FE007C
003800000000000000000000000001FE01FE003E003E003E003E003E003E003E003E003E
003E003E003E003E003E003E003E003E003E003E003E303E783EFC3CFC7C78783FF01FC0
0F2A83A010>I<FF00FF001F001F001F001F001F001F001F001F001F001F001F001F001F
001F001F001F001F001F001F001F001F001F001F001F001F001F001F001F00FFE0FFE00B
207E9F0E>108 D<FE0FE03F80FE1FF07FC01E70F9C3E01E407D01F01E807E01F01F807E
01F01F007C01F01F007C01F01F007C01F01F007C01F01F007C01F01F007C01F01F007C01
F01F007C01F01F007C01F01F007C01F01F007C01F01F007C01F0FFE3FF8FFEFFE3FF8FFE
27147D932C>I<FE0FC0FE3FE01E61F01EC0F81E80F81F00F81F00F81F00F81F00F81F00
F81F00F81F00F81F00F81F00F81F00F81F00F81F00F81F00F8FFE3FFFFE3FF18147D931D
>I<01FF0007FFC01F83F03E00F83E00F87C007C7C007CFC007EFC007EFC007EFC007EFC
007EFC007E7C007C7C007C3E00F83E00F81F83F007FFC001FF0017147F931A>I<FF1FC0
FF7FF01FE1F81F80FC1F007E1F007E1F003E1F003F1F003F1F003F1F003F1F003F1F003F
1F003E1F007E1F007C1F80FC1FC1F81F7FE01F1F801F00001F00001F00001F00001F0000
1F00001F0000FFE000FFE000181D7E931D>I<01F81807FE381F87783F01F83E01F87E00
F87C00F8FC00F8FC00F8FC00F8FC00F8FC00F8FC00F87C00F87E00F87E00F83F01F81F87
F80FFEF803F8F80000F80000F80000F80000F80000F80000F80000F80007FF0007FF181D
7E931C>I<FE3E00FE7F801ECFC01E8FC01E8FC01F8FC01F03001F00001F00001F00001F
00001F00001F00001F00001F00001F00001F00001F0000FFF000FFF00012147E9316>I<
0FE63FFE701E600EE006E006F800FFC07FF83FFC1FFE03FE001FC007C007E007F006F81E
FFFCC7F010147E9315>I<01800180018003800380038007800F803F80FFFCFFFC0F800F
800F800F800F800F800F800F800F800F800F860F860F860F860F8607CC03F801F00F1D7F
9C14>I<FF07F8FF07F81F00F81F00F81F00F81F00F81F00F81F00F81F00F81F00F81F00
F81F00F81F00F81F00F81F00F81F01F81F01F80F06F807FCFF03F8FF18147D931D>I<FF
E1FF00FFE1FF000F80700007C0E00007E0C00003E1800001F3800000FF0000007E000000
3E0000003F0000007F8000006F800000C7C0000183E0000381F0000701F8000E00FC00FF
81FF80FF81FF8019147F931C>120 D<3FFFE03FFFE03C07C0380F80701F80603F00603E
00607C0000F80001F80003F00003E06007C0600F80601F80E03F00C03E01C07C03C0FFFF
C0FFFFC013147F9317>122 D E /Fi 37 120 df<00003F03E00000C386700001878CF0
0003879CF00003031860000700380000070038000007003800000E003800000E00700000
0E007000000E00700000FFFFFF80001C007000001C00E000001C00E000001C00E000001C
00E000003800E000003801C000003801C000003801C000003801C000007001C000007003
8000007003800000700380000070038000006003800000E007000000E007000000E00700
0000E007000000C006000001C00E000001C00E000031860C0000798F180000F31E100000
620C6000003C07C000002429829F1C>11 D<00003FE00000E01000018038000380780003
007800070030000700000007000000070000000E0000000E0000000E000000FFFFE0000E
00E0001C01C0001C01C0001C01C0001C01C0001C03800038038000380380003803800038
070000380700007007000070071000700E2000700E2000700E2000E00E2000E0064000E0
038000E0000000C0000001C0000001C000003180000079800000F3000000620000003C00
00001D29829F1A>I<0E1F3F3F1D0102020404081020C0080E779F0E>39
D<000100020004000800100020006000C0018001800300070006000E000C001C00180038
00380030007000700060006000E000E000C000C000C000C000C000C000C000C000C000C0
00C000C000C0004000600060002000100010000800102E79A113>I<0010000008000004
000006000002000003000003000003000001000001800001800001800001800001800001
80000180000380000380000380000300000300000300000700000700000600000600000E
00000C00000C00001C0000180000380000300000700000600000E00000C0000180000100
000300000600000C0000180000300000600000800000112E80A113>I<7FF0FFE07FE00C
037D8A10>45 D<70F8F8F0E005057B840E>I<00000040000000C0000001800000018000
00030000000300000006000000060000000C000000180000001800000030000000300000
0060000000C0000000C0000001800000018000000300000003000000060000000C000000
0C0000001800000018000000300000003000000060000000C0000000C000000180000001
8000000300000003000000060000000C0000000C00000018000000180000003000000030
00000060000000C0000000C0000000800000001A2D7FA117>I<000F800030E000E07001
C0700380300380380700380F00780F00780E00781E00781E00703C00F03C00F03C00F03C
00F07801E07801E07801E07801C07003C0F003C0F00380F00780F00700700700700E0070
1C003038001870000FC000151F7C9D17>I<000200020006000E003C00DC031C001C0038
003800380038007000700070007000E000E000E000E001C001C001C001C0038003800380
03800780FFF80F1E7B9D17>I<0007C0001C200030200060E000C1E00181E00380C00700
000F00000E00001E00001E78001D84003E06003E07003C07007C07807807807807807807
80700F00700F00F00F00F00E00F01E00701C00601C0070380030700010C0000F8000131F
7B9D17>54 D<070F1F1F0E0000000000000000000070F8F8F0E008147B930E>58
D<00000200000006000000060000000E0000001E0000001E0000003F0000002F0000004F
0000004F0000008F0000010F0000010F0000020F0000020F0000040F00000C0F0000080F
0000100F0000100F0000200F80003FFF800040078000C007800080078001000780010007
800200078002000780060007801E000F80FF807FF81D207E9F22>65
D<01FFFFC0001E00F0001E0078001E0038001E003C003C003C003C003C003C003C003C00
3C0078007800780078007800F0007801E000F0078000FFFE0000F00F8000F003C001E001
C001E001E001E001E001E001E003C001E003C001E003C001E003C001C0078003C0078007
8007800F0007801E000F007800FFFFE0001E1F7D9E20>I<01FFFFFE001E001C001E000C
001E0004001E0004003C0004003C0004003C0004003C0004007808080078080000780800
0078180000F0300000FFF00000F0300000F0300001E0200001E0200001E0200001E00010
03C0002003C0002003C0004003C00040078000800780018007800100078007000F001F00
FFFFFE001F1F7D9E1F>69 D<01FFFFFC001E0038001E0018001E0008001E0008003C0008
003C0008003C0008003C00080078001000780800007808000078080000F0100000F03000
00FFF00000F0300001E0200001E0200001E0200001E0200003C0000003C0000003C00000
03C00000078000000780000007800000078000000F800000FFF800001E1F7D9E1E>I<01
FFFF00001E03C0001E00E0001E0070001E0078003C0078003C0078003C0078003C007800
7800F0007800F0007801E0007801C000F0070000F01E0000FFF00000F0380001E01C0001
E01E0001E00E0001E00F0003C01E0003C01E0003C01E0003C01E0007803C0007803C0807
803C0807803C100F801C10FFF00C20000007C01D207D9E21>82 D<0007E040001C18C000
3005800060038000C0038001C00180018001000380010003800100038001000380000003
C0000003C0000003F8000001FF800001FFE000007FF000001FF0000001F8000000780000
007800000038000000380020003800200038002000300060007000600060006000E00070
00C000E8038000C606000081F800001A217D9F1A>I<00F1800389C00707800E03801C03
803C0380380700780700780700780700F00E00F00E00F00E00F00E20F01C40F01C40703C
40705C40308C800F070013147C9317>97 D<007E0001C1000300800E07801E07801C0700
3C0200780000780000780000F00000F00000F00000F00000F00000700100700200300400
18380007C00011147C9315>99 D<0000780003F80000700000700000700000700000E000
00E00000E00000E00001C00001C000F1C00389C00707800E03801C03803C038038070078
0700780700780700F00E00F00E00F00E00F00E20F01C40F01C40703C40705C40308C800F
070015207C9F17>I<007C01C207010E011C013C013802780C7BF07C00F000F000F000F0
007000700170023804183807C010147C9315>I<00007800019C00033C00033C00071800
0700000700000E00000E00000E00000E00000E0001FFE0001C00001C00001C00001C0000
380000380000380000380000380000700000700000700000700000700000700000E00000
E00000E00000E00000C00001C00001C0000180003180007B0000F300006600003C000016
29829F0E>I<003C6000E27001C1E00380E00700E00F00E00E01C01E01C01E01C01E01C0
3C03803C03803C03803C03803C07003C07001C0F001C17000C2E0003CE00000E00000E00
001C00001C00301C00783800F0700060E0003F8000141D7E9315>I<01E0000FE00001C0
0001C00001C00001C000038000038000038000038000070000070000071E000763000E81
800F01C00E01C00E01C01C03801C03801C03801C0380380700380700380700380E10700E
20700C20701C20700C40E00CC060070014207D9F17>I<00C001E001E001C00000000000
0000000000000000000E003300230043804300470087000E000E000E001C001C001C0038
40388030807080310033001C000B1F7C9E0E>I<03C01FC0038003800380038007000700
070007000E000E000E000E001C001C001C001C0038003800380038007000700070007100
E200E200E200E200640038000A207C9F0C>108 D<1C0F80F0002630C318004740640C00
4780680E004700700E004700700E008E00E01C000E00E01C000E00E01C000E00E01C001C
01C038001C01C038001C01C038001C01C0708038038071003803806100380380E1003803
8062007007006600300300380021147C9325>I<1C0F802630C047406047806047007047
00708E00E00E00E00E00E00E00E01C01C01C01C01C01C01C038438038838030838070838
03107003303001C016147C931A>I<007C0001C3000301800E01C01E01C01C01E03C01E0
7801E07801E07801E0F003C0F003C0F003C0F00780F00700700F00700E00301800187000
07C00013147C9317>I<01C1E002621804741C04781C04701E04701E08E01E00E01E00E0
1E00E01E01C03C01C03C01C03C01C0380380780380700380E003C1C0072380071E000700
000700000E00000E00000E00000E00001C00001C0000FFC000171D809317>I<1C1E0026
61004783804787804707804703008E00000E00000E00000E00001C00001C00001C00001C
000038000038000038000038000070000030000011147C9313>114
D<00FC030206010C030C070C060C000F800FF007F803FC003E000E700EF00CF00CE00840
1020601F8010147D9313>I<018001C0038003800380038007000700FFF007000E000E00
0E000E001C001C001C001C003800380038003820704070407080708031001E000C1C7C9B
0F>I<0E00C03300E02301C04381C04301C04701C08703800E03800E03800E03801C0700
1C07001C07001C07101C0E20180E20180E201C1E200C264007C38014147C9318>I<0E03
803307802307C04383C04301C04700C08700800E00800E00800E00801C01001C01001C01
001C02001C02001C04001C04001C08000E300003C00012147C9315>I<0E00C1C03300E3
C02301C3E04381C1E04301C0E04701C060870380400E0380400E0380400E0380401C0700
801C0700801C0700801C0701001C0701001C0602001C0F02000C0F04000E13080003E1F0
001B147C931E>I E /Fj 58 122 df<007F07F001FF1FF003FF3FF00780780007007000
0F00F0000F00F0000F00F0000F00F0000F00F0000F00F0000F00F000FFF8FF80FFF8FF80
FFF8FF800F00F0000F00F0000F00F0000F00F0000F00F0000F00F0000F00F0000F00F000
0F00F0000F00F0000F00F0000F00F0000F00F0000F00F0000F00F0000F00F0000F00F000
1C20809F1B>11 D<00F8F001F8F003F8F00780F00700F00F00F00F00F00F00F00F00F00F
00F00F00F00F00F0FFF8F0FFF8F0FFF8F00F00F00F00F00F00F00F00F00F00F00F00F00F
00F00F00F00F00F00F00F00F00F00F00F00F00F00F00F00F00F00F00F00F00F01420809F
18>13 D<007000E001C00380078007000E001E001E003C003C003C007800780078007800
7000F000F000F000F000F000F000F000F000F000F000F000F00070007800780078007800
3C003C003C001E001E000E0007000780038001C000E000700C2E7EA112>40
D<E000700038001C001E000E0007000780078003C003C003C001E001E001E001E000E000
F000F000F000F000F000F000F000F000F000F000F000F000E001E001E001E001E003C003
C003C00780078007000E001E001C0038007000E0000C2E7DA112>I<0006000000060000
000600000006000000060000000600000006000000060000000600000006000000060000
00060000000600000006000000060000FFFFFFF0FFFFFFF0000600000006000000060000
000600000006000000060000000600000006000000060000000600000006000000060000
0006000000060000000600001C207D9A23>43 D<787878781830306060E0050A7D830D>
I<FFC0FFC0FFC00A037F8B0F>I<F0F0F0F004047C830D>I<00C001C00FC0FFC0FFC0F3C0
03C003C003C003C003C003C003C003C003C003C003C003C003C003C003C003C003C003C0
03C003C003C003C0FFFEFFFEFFFE0F1F7C9E17>49 D<07F0000FFC001FFE00383F00700F
00600780E00780E003C04003C04003C00003C00003C00003C0000780000780000F00000E
00001C00003C0000780000E00001C0000380000700000E00001C0000380000700000FFFF
C0FFFFC0FFFFC0121F7E9E17>I<FFFFFFF0FFFFFFF00000000000000000000000000000
000000000000000000000000000000000000FFFFFFF0FFFFFFF01C0C7D9023>61
D<001F0000001F0000003F8000003B8000003B8000007BC0000073C0000071C00000F1E0
0000E1E00000E0E00001E0F00001E0F00001C0F00003C0780003C078000380780007803C
0007803C0007003C000FFFFE000FFFFE000FFFFE001E000F001E000F003C000F803C0007
803C000780780007C0780003C0780003C0F00003E01B207F9F1E>65
D<FFF800FFFF00FFFF80F00FC0F003E0F001E0F000F0F000F0F000F0F000F0F000F0F001
E0F003C0F01F80FFFF00FFFF00FFFF80F007E0F001E0F000F0F00078F00078F00078F000
78F00078F00078F000F0F001F0F007E0FFFFC0FFFF80FFFC0015207B9F1E>I<001FC000
FFF801FFFC03E03C07800C0F00001E00003E00003C00007C0000780000780000780000F0
0000F00000F00000F00000F00000F00000F00000F000007800007800007800007C00003C
00003E00001E00000F000207800E03E03E01FFFC00FFF0001FC017227DA01D>I<FFFC00
FFFF80FFFFC0F007E0F001F0F000F8F00078F0003CF0003CF0001EF0001EF0000EF0000F
F0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0001EF0001EF0001EF0003C
F0007CF000F8F001F0F007E0FFFFC0FFFF80FFFC0018207B9F21>I<FFFFC0FFFFC0FFFF
C0F00000F00000F00000F00000F00000F00000F00000F00000F00000F00000F00000FFFF
80FFFF80FFFF80F00000F00000F00000F00000F00000F00000F00000F00000F00000F000
00F00000F00000FFFFE0FFFFE0FFFFE013207B9F1B>I<FFFFC0FFFFC0FFFFC0F00000F0
0000F00000F00000F00000F00000F00000F00000F00000F00000F00000FFFF00FFFF00FF
FF00F00000F00000F00000F00000F00000F00000F00000F00000F00000F00000F00000F0
0000F00000F00000F0000012207B9F1A>I<001FE000FFF801FFFE03E03E07800E0F0000
1E00003E00003C00007C0000780000780000780000F00000F00000F00000F00000F00000
F00000F003FEF003FE7803FE78001E78001E7C001E3C001E3E001E1E001E0F001E07801E
03E03E01FFFE00FFF8001FC017227DA01E>I<F00078F00078F00078F00078F00078F000
78F00078F00078F00078F00078F00078F00078F00078F00078FFFFF8FFFFF8FFFFF8F000
78F00078F00078F00078F00078F00078F00078F00078F00078F00078F00078F00078F000
78F00078F0007815207B9F20>I<F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0
F0F0F0F0F0F0F0F0F0F004207C9F0D>I<F0003EF0007CF000F8F001F0F003E0F007C0F0
0780F00F00F01F00F03E00F07C00F0F800F1F000F3F800F3F800F7FC00FFBC00FF1E00FE
1F00FC0F00F80780F00780F003C0F003E0F001E0F000F0F000F8F00078F0003CF0003CF0
001EF0001F18207B9F20>75 D<F00000F00000F00000F00000F00000F00000F00000F000
00F00000F00000F00000F00000F00000F00000F00000F00000F00000F00000F00000F000
00F00000F00000F00000F00000F00000F00000F00000F00000F00000FFFF80FFFF80FFFF
8011207B9F19>I<F80001F8FC0003F8FC0003F8F4000378F6000778F6000778F6000778
F3000E78F3000E78F3000E78F3801E78F3801E78F1801C78F1C03C78F1C03C78F0C03878
F0C03878F0E07878F0E07878F0607078F070F078F070F078F030E078F039E078F039E078
F019C078F019C078F019C078F00F8078F00F8078F00F8078F00000781D207B9F28>I<FC
0078FE0078FE0078F60078F70078F70078F38078F38078F38078F3C078F1C078F1E078F1
E078F0E078F0F078F07078F07078F07878F03878F03C78F03C78F01C78F01E78F00E78F0
0E78F00E78F00778F00778F00378F003F8F003F8F001F815207B9F20>I<003F000000FF
C00003FFF00007E1F8000F807C001F003E001E001E003C000F003C000F00780007807800
078078000780F00003C0F00003C0F00003C0F00003C0F00003C0F00003C0F00003C0F000
03C0F00003C0F80007C07800078078000780780007803C000F003C000F001E001E001F00
3E000F807C0007E1F80003FFF00000FFC000003F00001A227DA021>I<FFF800FFFF00FF
FF80F00FC0F003E0F001E0F000F0F000F0F000F0F000F0F000F0F000F0F000F0F001E0F0
03E0F00FC0FFFF80FFFF00FFF800F00000F00000F00000F00000F00000F00000F00000F0
0000F00000F00000F00000F00000F0000014207B9F1D>I<FFF800FFFF00FFFF80F007C0
F003E0F001E0F000F0F000F0F000F0F000F0F000F0F001E0F003E0F007C0FFFF80FFFF00
FFF800F03C00F01E00F01E00F00F00F00F00F00780F00780F003C0F001C0F001E0F000F0
F000F0F00078F00078F0003C16207B9F1D>82 D<01FC0007FF800FFFC01F03C03C00C03C
00007800007800007800007800007800007C00003C00003F00001FE0000FFC0007FE0001
FF00003F800007C00003C00003E00001E00001E00001E00001E00001E00001C0C003C0F0
07C0FC0F807FFF001FFE0003F80013227EA019>I<FFFFFFC0FFFFFFC0FFFFFFC0001E00
00001E0000001E0000001E0000001E0000001E0000001E0000001E0000001E0000001E00
00001E0000001E0000001E0000001E0000001E0000001E0000001E0000001E0000001E00
00001E0000001E0000001E0000001E0000001E0000001E0000001E0000001E0000001E00
00001E00001A207E9F1F>I<F000F0F000F0F000F0F000F0F000F0F000F0F000F0F000F0
F000F0F000F0F000F0F000F0F000F0F000F0F000F0F000F0F000F0F000F0F000F0F000F0
F000F0F000F0F000F0F000F0F000F07801E07801E03C03C03C03C01F0F800FFF0007FE00
01F80014217B9F1F>I<F00001E0F00001E0780003C0780003C0780003C03C0007803C00
07803C0007801E000F001E000F001F000F000F001E000F001E0007801C0007803C000780
3C0003C0380003C0780003C0780001E0700001E0F00001E0F00000F0E00000F1E00000F1
E0000071C000007BC000003B8000003B8000003F8000001F0000001F00001B207F9F1E>
I<F0007C000FF0007E000FF0007E000F78006E000E7800EE001E7800E7001E7800E7001E
3C00E7003C3C01E7803C3C01C7803C3C01C3803C1E01C380781E03C3C0781E0383C0780E
0381C0700F0381C0F00F0781E0F00F0701E0F0070700E0E0078700E1E0078F00E1E0078E
00F1E0038E0071C0038E0071C003CE0073C001DC00738001DC003B8001DC003B8001DC00
3B8000F8003F0000F8001F0000F8001F0028207F9F2B>I<780007807C000F003E001F00
1E001E000F003C000F807C000780780003C0F00003E1F00001F1E00000F3C000007FC000
007F8000003F0000001F0000001E0000003F0000007F8000007FC00000F3C00001F1E000
01E0F00003C0F80007C0780007803C000F003E001F001E001E000F003C000F807C0007C0
780003C0F00003E01B207F9F1E>I<F80000F87C0001F03C0001E03E0003E01F0003C00F
0007800F800F8007C00F0003C01F0003E01E0001F03C0000F07C00007878000078F00000
3CF000001CE000001FE000000FC000000780000007800000078000000780000007800000
07800000078000000780000007800000078000000780000007800000078000000780001D
20809F1E>I<FFFFF8FFFFF8FFFFF80000F00001F00001E00003C00007C0000780000F80
000F00001E00003E00003C00007C0000780000F00001F00001E00003E00003C000078000
0F80000F00001F00001E00003C00007C0000780000FFFFFCFFFFFCFFFFFC16207D9F1C>
I<07E03FF87FFC701E401F000F000F000F003F07FF1FFF7E0FF80FF00FF00FF00FF83F7F
FF3FEF1F8F10147E9316>97 D<F00000F00000F00000F00000F00000F00000F00000F000
00F00000F00000F00000F00000F1F000F7FC00FFFE00FC3E00F80F00F00F00F00780F007
80F00780F00780F00780F00780F00780F00F00F00F00F81F00FC3E00FFFC00F7F800F1E0
0011207D9F17>I<03F00FFC1FFE3E0E3C0278007800F000F000F000F000F000F0007800
78003C013E0F1FFF0FFE03F010147E9314>I<0007800007800007800007800007800007
8000078000078000078000078000078000078007C7800FF7801FFF803E1F807C07807807
80F80780F00780F00780F00780F00780F00780F00780F00780780780780F803E1F801FFF
800FF78007C78011207E9F17>I<03F0000FFC001FFE003E1F003C0700780700700380FF
FF80FFFF80FFFF80F00000F00000F000007000007800003C01003E07001FFF0007FE0001
F80011147F9314>I<007E01FE03FE078007000F000F000F000F000F000F000F00FFF0FF
F0FFF00F000F000F000F000F000F000F000F000F000F000F000F000F000F000F000F000F
000F20809F0E>I<03E0F00FFFF01FFFF03E3E003C1E00780F00780F00780F00780F0078
0F003C1E003E3E001FFC003FF80033E0003000003800003FFE003FFF801FFFC03FFFE078
03F0F000F0F000F0F000F0F801F07E07E03FFFC00FFF0003FC00141E7F9317>I<F000F0
00F000F000F000F000F000F000F000F000F000F000F1F8F3FCF7FEFC1FF80FF80FF00FF0
0FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00F10207D9F17>I<F0F0F0F0
0000000000000000F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F004207D9F0B>I<F0
0000F00000F00000F00000F00000F00000F00000F00000F00000F00000F00000F00000F0
1F00F01E00F03C00F07800F0F000F1E000F3C000F78000FFC000FFC000FFE000F9F000F8
F000F0F800F07C00F07C00F03E00F01E00F01F00F00F8011207D9F16>107
D<F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F004207D
9F0B>I<F0FC07E0F3FE1FF0F7FF3FF8FE0FF07CF807C03CF807C03CF007803CF007803C
F007803CF007803CF007803CF007803CF007803CF007803CF007803CF007803CF007803C
F007803CF007803CF007803C1E147D9325>I<F1F8F3FCF7FEFC1FF80FF80FF00FF00FF0
0FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00F10147D9317>I<01F80007FE00
1FFF803F0FC03C03C07801E07801E0F000F0F000F0F000F0F000F0F000F0F000F07801E0
7801E03C03C03F0FC01FFF8007FE0001F80014147F9317>I<F1F000F7FC00FFFE00FC3E
00F81F00F00F00F00F80F00780F00780F00780F00780F00780F00780F00F00F00F00F81F
00FC3E00FFFC00F7F800F1E000F00000F00000F00000F00000F00000F00000F00000F000
00F00000111D7D9317>I<F0E0F3E0F7E0FF00FC00FC00F800F800F000F000F000F000F0
00F000F000F000F000F000F000F0000B147D9310>114 D<07F01FFC3FFC780C78007800
78007C003FC01FF00FF803F8007C003C003CC03CF07CFFF87FF00FC00E147F9311>I<1E
001E001E001E001E001E00FFF0FFF0FFF01E001E001E001E001E001E001E001E001E001E
001E001E001E001E201FF00FF007C00C1A7F9910>I<F00FF00FF00FF00FF00FF00FF00F
F00FF00FF00FF00FF00FF00FF00FF00FF01FF03FFFFF7FEF3F0F10147D9317>I<F003C0
F003C07803807807807807803C0F003C0F003C0F001E0E001E1E001E1E000F1C000F3C00
0F3C0007380007380007B80003F00003F00001E00012147F9315>I<F01F00F0F01F80F0
F01F80F0781B81E0783B81E0783BC1E07839C1E03C31C3C03C71C3C03C71E3C01C70E380
1E60E7801E60E7801EE0E7800EE077000EC077000EC0770007C07E0007C03E0007803E00
1C147F931F>I<7801E07C03C03E07801E0F000F0F00079E0003FC0003F80001F80000F0
0001F00001F80003FC00079E000F0F000E0F001E07803C03C07801E0F801F01414809315
>I<F003C0F003C07807807807807C07803C0F003C0F001E0F001E1E000E1E000F1C000F
1C00073C0007380003B80003B80003B00001F00001F00000E00000E00001C00001C00001
C0000380000780007F00007E00007C0000121D7F9315>I E /Fk
15 117 df<020408103020604040C0C0C0C0C0C0C0C0404060203010080402071A7F920C
>40 D<8040201018080C0404060606060606060604040C081810204080071A7E920C>I<
1F00318060C04040C060C060C060C060C060C060C060C060404060C031801F000B107F8F
0F>48 D<0C003C00CC000C000C000C000C000C000C000C000C000C000C000C000C00FF80
09107E8F0F>I<1F00618040C08060C0600060006000C00180030006000C00102020207F
C0FFC00B107F8F0F>I<1F00218060C060C000C0008001800F00008000400060C060C060
804060801F000B107F8F0F>I<0300030007000F000B001300330023004300C300FFE003
000300030003001FE00B107F8F0F>I<20803F002C002000200020002F00308020400060
00600060C06080C061801F000B107F8F0F>I<0780184030C060C06000C000CF00F080E0
40C060C060C060406060C030801F000B107F8F0F>I<40007FE07FC08080808001000200
040004000C0008000800180018001800180018000B117E900F>I<1F00318060C060C060
C071803F000F00338061C0C060C060C060404060801F000B107F8F0F>I<1F00318060C0
C040C060C060C06040E021E01E600060004060C0608043003E000B107F8F0F>I<03E000
0C1800100400200200600300400100C00180C00180C00180C00180C00180600300600300
3006003006000C180003E00011117E9017>79 D<1F8030C06000C000C000C000C000C000
604030801F000A0B7F8A0E>99 D<10103030FE3030303030323232321C070F7F8E0C>
116 D E /Fl 7 104 df<FFFFFFC0FFFFFFC01A027C8B23>0 D<C0000000F00000003C00
00000F00000003C0000000F0000000380000000E0000000780000001E000000078000000
1E0000000780000001C00000078000001E00000078000001E00000078000000E00000038
000000F0000003C000000F0000003C00000070000000C000000000000000000000000000
0000000000000000000000000000000000007FFFFF80FFFFFFC01A247C9C23>21
D<00000C00000C0000180000180000300000300000600000600000C00000C00001800001
80000180000300000300000600000600000C00000C000018000018000030000030000060
0000600000C00000C0000180000180000300000300000600000600000600000C00000C00
00180000180000300000300000600000600000C00000400000162C7AA000>54
D<FFFFFFE0FFFFFFE0000C0000000C0000000C0000000C0000000C0000000C0000000C00
00000C0000000C0000000C0000000C0000000C0000000C0000000C0000000C0000000C00
00000C0000000C0000000C0000000C0000000C0000000C0000000C0000000C0000000C00
00000400001B1C7C9B23>62 D<00040000000C0000000C0000000C0000000C0000000C00
00000C0000000C0000000C0000000C0000000C0000000C0000000C0000000C0000000C00
00000C0000000C0000000C0000000C0000000C0000000C0000000C0000000C0000000C00
00000C0000000C0000FFFFFFE0FFFFFFE01B1C7C9B23>I<000F0038006000E001C001C0
01C001C001C001C001C001C001C001C001C001C001C001C001C0038007001E00F8001E00
0700038001C001C001C001C001C001C001C001C001C001C001C001C001C001C001C000E0
00600038000F102D7DA117>102 D<F8001E000700038001C001C001C001C001C001C001
C001C001C001C001C001C001C001C001C000E000600038000F0038006000E001C001C001
C001C001C001C001C001C001C001C001C001C001C001C001C0038007001E00F800102D7D
A117>I E /Fm 77 126 df<70F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F870000000000070
F8F8F870051C779B18>33 D<4010E038F078E038E038E038E038E038E038E038E038E038
E03860300D0E7B9C18>I<01C00007E0000FF0000E70001C38001C38001C38001C38001C
73F01C73F01CE3F00FE3800FC7000F87000F07001F0E003F0E007B8E0073DC00E1DC00E0
F800E0F800E07070E0787070FC707FFFE03FCFE00F03C0141C7F9B18>38
D<007000F001E003C007800F001E001C00380038007000700070007000E000E000E000E0
00E000E000E000E0007000700070007000380038001C001E000F00078003C001F000F000
700C24799F18>40 D<6000F00078003C001E000F000780038001C001C000E000E000E000
E00070007000700070007000700070007000E000E000E000E001C001C0038007800F001E
003C007800F00060000C247C9F18>I<01C00001C00001C00001C000C1C180F1C780F9CF
807FFF001FFC0007F00007F0001FFC007FFF00F9CF80F1C780C1C18001C00001C00001C0
0001C00011147D9718>I<1C3E7E7F3F1F070E1E7CF860080C788518>44
D<7FFF00FFFF80FFFF807FFF0011047D8F18>I<3078FCFC78300606778518>I<00030000
0780000780000F80000F00001F00001E00001E00003E00003C00007C0000780000780000
F80000F00001F00001E00003E00003C00003C00007C0000780000F80000F00000F00001F
00001E00003E00003C00003C00007C0000780000F80000F00000F0000060000011247D9F
18>I<01F00007FC000FFE001F1F001C07003803807803C07001C07001C0E000E0E000E0
E000E0E000E0E000E0E000E0E000E0E000E0E000E0F001E07001C07001C07803C0380380
1C07001F1F000FFE0007FC0001F000131C7E9B18>I<01800380038007800F803F80FF80
FB8043800380038003800380038003800380038003800380038003800380038003800380
7FFCFFFE7FFC0F1C7B9B18>I<03F0000FFE003FFF007C0F807003C0E001C0F000E0F000
E06000E00000E00000E00001C00001C00003C0000780000F00001E00003C0000780000F0
0001E00007C0000F80001E00E03C00E07FFFE0FFFFE07FFFE0131C7E9B18>I<07F8001F
FE003FFF007807807803C07801C03001C00001C00003C0000380000F0003FF0003FE0003
FF000007800003C00001C00000E00000E00000E0F000E0F000E0F001C0F003C07C07803F
FF001FFE0003F800131C7E9B18>I<1FFF803FFF803FFF80380000380000380000380000
3800003800003800003800003BF8003FFE003FFF003C07801803C00001C00000E00000E0
6000E0F000E0F000E0E001C07003C07C0F803FFF001FFC0003F000131C7E9B18>53
D<007E0001FF0007FF800F83C01E03C01C03C0380180380000700000700000E1F800E7FE
00FFFF00FE0780F803C0F001C0F000E0E000E0F000E07000E07000E07000E03801C03C03
C01E07800FFF0007FE0001F800131C7E9B18>I<3078FCFC783000000000000000003078
FCFC78300614779318>58 D<183C7E7E3C180000000000000000183C7E7E3E1E0E1C3C78
F060071A789318>I<000300000780001F80003F00007E0001FC0003F00007E0001FC000
3F00007E0000FC0000FC00007E00003F00001FC00007E00003F00001FC00007E00003F00
001F8000078000030011187D9918>I<7FFFC0FFFFE0FFFFE0FFFFE00000000000000000
00000000FFFFE0FFFFE0FFFFE07FFFC0130C7E9318>I<600000F00000FC00007E00003F
00001FC00007E00003F00001FC00007E00003F00001F80001F80003F00007E0001FC0003
F00007E0001FC0003F00007E0000FC0000F0000060000011187D9918>I<0FF0003FFC00
7FFF00700F00F00380F00380600780000F00003E00007C0001F00001E00003C00003C000
03C00003C00003C00003800000000000000000000000000000000003800007C00007C000
07C000038000111C7D9B18>I<00700000F80000F80000D80000D80001DC0001DC0001DC
00018C00038E00038E00038E00038E000306000707000707000707000707000FFF800FFF
800FFF800E03800E03801C01C01C01C07F07F0FF8FF87F07F0151C7F9B18>65
D<FFFC00FFFF00FFFF801C03C01C01C01C00E01C00E01C00E01C00E01C01E01C01C01C07
C01FFF801FFF001FFFC01C03C01C00E01C00F01C00701C00701C00701C00701C00F01C00
E01C03E0FFFFC0FFFF80FFFE00141C7F9B18>I<00F8E003FEE007FFE00F07E01E03E03C
01E03800E07000E07000E0700000E00000E00000E00000E00000E00000E00000E00000E0
00007000007000E07000E03800E03C00E01E01C00F07C007FF8003FE0000F800131C7E9B
18>I<7FF800FFFE007FFF001C0F801C03C01C03C01C01E01C00E01C00E01C00F01C0070
1C00701C00701C00701C00701C00701C00701C00701C00F01C00E01C00E01C01E01C01C0
1C03C01C0F807FFF00FFFE007FF800141C7F9B18>I<FFFFF0FFFFF0FFFFF01C00701C00
701C00701C00701C00001C00001C0E001C0E001C0E001FFE001FFE001FFE001C0E001C0E
001C0E001C00001C00001C00381C00381C00381C00381C0038FFFFF8FFFFF8FFFFF8151C
7F9B18>I<FFFFE0FFFFE0FFFFE01C00E01C00E01C00E01C00E01C00001C00001C1C001C
1C001C1C001FFC001FFC001FFC001C1C001C1C001C1C001C00001C00001C00001C00001C
00001C00001C0000FFC000FFC000FFC000131C7E9B18>I<01F1C003FDC00FFFC01F0FC0
1C03C03803C03801C07001C07001C0700000E00000E00000E00000E00000E00000E00FF0
E01FF0E00FF07001C07001C07003C03803C03803C01C07C01F0FC00FFFC003FDC001F1C0
141C7E9B18>I<7F07F0FF8FF87F07F01C01C01C01C01C01C01C01C01C01C01C01C01C01
C01C01C01C01C01FFFC01FFFC01FFFC01C01C01C01C01C01C01C01C01C01C01C01C01C01
C01C01C01C01C01C01C07F07F0FF8FF87F07F0151C7F9B18>I<7FFF00FFFF807FFF0001
C00001C00001C00001C00001C00001C00001C00001C00001C00001C00001C00001C00001
C00001C00001C00001C00001C00001C00001C00001C00001C00001C0007FFF00FFFF807F
FF00111C7D9B18>I<7F07F0FF87F87F07F01C03C01C07801C07001C0E001C1E001C3C00
1C38001C70001CF0001DF0001DF0001FB8001FB8001F1C001E1C001C0E001C0E001C0700
1C07001C03801C03801C01C07F03F0FF87F87F03F0151C7F9B18>75
D<7FE000FFE0007FE0000E00000E00000E00000E00000E00000E00000E00000E00000E00
000E00000E00000E00000E00000E00000E00000E00000E00000E00700E00700E00700E00
700E00707FFFF0FFFFF07FFFF0141C7F9B18>I<FC01F8FE03F8FE03F83B06E03B06E03B
06E03B06E03B8EE03B8EE0398CE0398CE039DCE039DCE039DCE038D8E038D8E038F8E038
70E03870E03800E03800E03800E03800E03800E03800E0FE03F8FE03F8FE03F8151C7F9B
18>I<7E07F0FF0FF87F07F01D81C01D81C01D81C01DC1C01CC1C01CC1C01CE1C01CE1C0
1CE1C01C61C01C71C01C71C01C31C01C39C01C39C01C39C01C19C01C19C01C1DC01C0DC0
1C0DC01C0DC07F07C0FF87C07F03C0151C7F9B18>I<0FF8003FFE007FFF00780F007007
00F00780E00380E00380E00380E00380E00380E00380E00380E00380E00380E00380E003
80E00380E00380E00380E00380E00380F00780700700780F007FFF003FFE000FF800111C
7D9B18>I<FFFE00FFFF80FFFFC01C03C01C01E01C00E01C00701C00701C00701C00701C
00701C00E01C01E01C03C01FFFC01FFF801FFE001C00001C00001C00001C00001C00001C
00001C00001C0000FF8000FF8000FF8000141C7F9B18>I<0FF8003FFE007FFF00780F00
700700F00780E00380E00380E00380E00380E00380E00380E00380E00380E00380E00380
E00380E00380E00380E00380E1E380E1E380F0E78070F700787F007FFF003FFE000FFC00
001C00001E00000E00000F0000070000070011227D9B18>I<7FF800FFFE007FFF001C0F
801C03801C03C01C01C01C01C01C01C01C03C01C03801C0F801FFF001FFE001FFE001C0F
001C07001C03801C03801C03801C03801C03801C039C1C039C1C039C7F01F8FF81F87F00
F0161C7F9B18>I<03F3801FFF803FFF807C0F80700780E00380E00380E00380E0000070
00007800003F00001FF00007FE0000FF00000F800003C00001C00000E00000E06000E0E0
00E0E001E0F001C0F80780FFFF80FFFE00E7F800131C7E9B18>I<7FFFF8FFFFF8FFFFF8
E07038E07038E07038E07038007000007000007000007000007000007000007000007000
00700000700000700000700000700000700000700000700000700000700007FF0007FF00
07FF00151C7F9B18>I<FF83FEFF83FEFF83FE1C00701C00701C00701C00701C00701C00
701C00701C00701C00701C00701C00701C00701C00701C00701C00701C00701C00701C00
701C00700E00E00F01E00783C003FF8001FF00007C00171C809B18>I<FF07F8FF07F8FF
07F81C01C01C01C01C01C01C01C00E03800E03800E03800E03800F078007070007070007
0700070700038E00038E00038E00038E00018C0001DC0001DC0001DC0000D80000F80000
F800007000151C7F9B18>I<FE03F8FE03F8FE03F87000707000707000703800E03800E0
3800E03800E03800E038F8E038F8E039DCE039DCE019DCC019DCC019DCC0198CC01D8DC0
1D8DC01D8DC01D8DC00D8D800D05800F07800F07800E0380151C7F9B18>I<7F8FE07F9F
E07F8FE00E07000F0700070E00078E00039C0003DC0001F80001F80000F00000F0000070
0000F00000F80001F80001DC00039E00038E00070F000707000E07800E03801E03C07F07
F0FF8FF87F07F0151C7F9B18>I<FF07F8FF07F8FF07F81C01C01E03C00E03800F078007
0700070700038E00038E0001DC0001DC0001DC0000F80000F80000700000700000700000
700000700000700000700000700000700001FC0003FE0001FC00151C7F9B18>I<3FFFE0
7FFFE07FFFE07001C07003C0700780700700000F00001E00001C00003C00007800007000
00F00001E00001C00003C0000780000700000F00001E00E01C00E03C00E07800E07000E0
FFFFE0FFFFE0FFFFE0131C7E9B18>I<FFF8FFF8FFF8E000E000E000E000E000E000E000
E000E000E000E000E000E000E000E000E000E000E000E000E000E000E000E000E000E000
E000E000E000E000E000FFF8FFF8FFF80D24779F18>I<FFF8FFF8FFF800380038003800
380038003800380038003800380038003800380038003800380038003800380038003800
3800380038003800380038003800380038FFF8FFF8FFF80D247F9F18>93
D<7FFF00FFFF80FFFF807FFF0011047D7F18>95 D<1FE0003FF8007FFC00781E00300E00
00070000070000FF0007FF001FFF007F0700780700E00700E00700E00700F00F00781F00
3FFFF01FFBF007E1F014147D9318>97 D<7E0000FE00007E00000E00000E00000E00000E
00000E00000E3E000EFF800FFFC00FC1E00F80E00F00700E00700E00380E00380E00380E
00380E00380E00380F00700F00700F80E00FC1E00FFFC00EFF80063E00151C809B18>I<
01FE0007FF001FFF803E0780380300700000700000E00000E00000E00000E00000E00000
E000007000007001C03801C03E03C01FFF8007FF0001FC0012147D9318>I<001F80003F
80001F8000038000038000038000038000038003E3800FFB801FFF803C1F80380F807007
80700380E00380E00380E00380E00380E00380E00380700780700780380F803C1F801FFF
F00FFBF803E3F0151C7E9B18>I<01F00007FC001FFE003E0F00380780700380700380E0
01C0E001C0FFFFC0FFFFC0FFFFC0E000007000007001C03801C03E03C01FFF8007FF0001
FC0012147D9318>I<001F80007FC000FFE000E1E001C0C001C00001C00001C0007FFFC0
FFFFC0FFFFC001C00001C00001C00001C00001C00001C00001C00001C00001C00001C000
01C00001C00001C00001C0007FFF007FFF007FFF00131C7F9B18>I<01E1F007FFF80FFF
F81E1E301C0E003807003807003807003807003807001C0E001E1E001FFC001FF80039E0
003800001C00001FFE001FFFC03FFFE07801F0700070E00038E00038E00038E000387800
F07E03F01FFFC00FFF8001FC00151F7F9318>I<7E0000FE00007E00000E00000E00000E
00000E00000E00000E3E000EFF800FFFC00FC1C00F80E00F00E00E00E00E00E00E00E00E
00E00E00E00E00E00E00E00E00E00E00E00E00E00E00E07FC3FCFFE7FE7FC3FC171C809B
18>I<03800007C00007C00007C0000380000000000000000000000000007FC000FFC000
7FC00001C00001C00001C00001C00001C00001C00001C00001C00001C00001C00001C000
01C00001C00001C000FFFF00FFFF80FFFF00111D7C9C18>I<FE0000FE0000FE00000E00
000E00000E00000E00000E00000E3FF00E7FF00E3FF00E07800E0F000E1E000E3C000E78
000EF0000FF8000FFC000F9C000F0E000E0F000E07000E03800E03C0FFC7F8FFC7F8FFC7
F8151C7F9B18>107 D<7FE000FFE0007FE00000E00000E00000E00000E00000E00000E0
0000E00000E00000E00000E00000E00000E00000E00000E00000E00000E00000E00000E0
0000E00000E00000E00000E0007FFFC0FFFFE07FFFC0131C7E9B18>I<7CE0E000FFFBF8
007FFFF8001F1F1C001E1E1C001E1E1C001C1C1C001C1C1C001C1C1C001C1C1C001C1C1C
001C1C1C001C1C1C001C1C1C001C1C1C001C1C1C001C1C1C007F1F1F00FFBFBF807F1F1F
001914819318>I<7E3E00FEFF807FFFC00FC1C00F80E00F00E00E00E00E00E00E00E00E
00E00E00E00E00E00E00E00E00E00E00E00E00E00E00E07FC3FCFFE7FE7FC3FC17148093
18>I<01F0000FFE001FFF003E0F803803807001C07001C0E000E0E000E0E000E0E000E0
E000E0F001E07001C07803C03C07803E0F801FFF000FFE0001F00013147E9318>I<7E3E
00FEFF807FFFC00FC1E00F80E00F00700E00700E00380E00380E00380E00380E00380E00
380F00700F00700F80E00FC1E00FFFC00EFF800E3E000E00000E00000E00000E00000E00
000E00000E00007FC000FFE0007FC000151E809318>I<01E38007FB801FFF803E1F8038
0F80700780700780E00380E00380E00380E00380E00380E00380700780700780380F803C
1F801FFF800FFB8003E380000380000380000380000380000380000380000380003FF800
3FF8003FF8151E7E9318>I<7F87E0FF9FF07FBFF803F87803F03003E00003C00003C000
0380000380000380000380000380000380000380000380000380007FFE00FFFF007FFE00
15147F9318>I<07F7003FFF007FFF00780F00E00700E00700E007007C00007FE0001FFC
0003FE00001F00600780E00380E00380F00380F80F00FFFF00FFFC00E7F00011147D9318
>I<0180000380000380000380000380007FFFC0FFFFC0FFFFC003800003800003800003
80000380000380000380000380000380000380400380E00380E00380E001C1C001FFC000
FF80003E0013197F9818>I<7E07E0FE0FE07E07E00E00E00E00E00E00E00E00E00E00E0
0E00E00E00E00E00E00E00E00E00E00E00E00E00E00E01E00F03E007FFFC03FFFE01FCFC
1714809318>I<7F8FF0FF8FF87F8FF01E03C00E03800E03800E03800707000707000707
00038E00038E00038E00038E0001DC0001DC0001DC0000F80000F80000700015147F9318
>I<FF8FF8FF8FF8FF8FF83800E03800E03800E01C01C01C01C01C71C01CF9C01CF9C01C
D9C01CD9C00DDD800DDD800DDD800D8D800F8F800F8F8007070015147F9318>I<7F8FF0
7F9FF07F8FF0070700078E00039E0001DC0001F80000F80000700000F00000F80001DC00
039E00038E000707000F07807F8FF0FF8FF87F8FF015147F9318>I<7F8FF0FF8FF87F8F
F00E01C00E03800E0380070380070700070700038700038600038E0001CE0001CE0000CC
0000CC0000DC0000780000780000780000700000700000700000F00000E00079E0007BC0
007F80003F00001E0000151E7F9318>I<3FFFF07FFFF07FFFF07001E07003C070078000
0F00001E00003C0000F80001F00003C0000780000F00701E00703C0070780070FFFFF0FF
FFF0FFFFF014147F9318>I<0007E0001FE0007FE000780000E00000E00000E00000E000
00E00000E00000E00000E00000E00000E00000E00001E0007FC000FF8000FF80007FC000
01E00000E00000E00000E00000E00000E00000E00000E00000E00000E00000E00000E000
007800007FE0001FE00007E013247E9F18>I<7C0000FF0000FFC00003C00000E00000E0
0000E00000E00000E00000E00000E00000E00000E00000E00000E00000F000007FC0003F
E0003FE0007FC000F00000E00000E00000E00000E00000E00000E00000E00000E00000E0
0000E00000E00003C000FFC000FF00007C000013247E9F18>125
D E /Fn 48 124 df<004000800100020006000C000C0018001800300030007000600060
006000E000E000E000E000E000E000E000E000E000E000E000E000600060006000700030
003000180018000C000C00060002000100008000400A2A7D9E10>40
D<800040002000100018000C000C000600060003000300038001800180018001C001C001
C001C001C001C001C001C001C001C001C001C0018001800180038003000300060006000C
000C00180010002000400080000A2A7E9E10>I<00060000000600000006000000060000
000600000006000000060000000600000006000000060000000600000006000000060000
FFFFFFE0FFFFFFE000060000000600000006000000060000000600000006000000060000
0006000000060000000600000006000000060000000600001B1C7E9720>43
D<60F0F0701010101020204080040C7C830C>I<FFE0FFE00B0280890E>I<60F0F0600404
7C830C>I<07C01830201C400C400EF00FF80FF807F8077007000F000E000E001C001C00
380070006000C00180030006010C01180110023FFE7FFEFFFE101C7E9B15>50
D<0FE03038401CE00EF00EF00EF00E000C001C0030006000C00080018001000100010001
00010001000000000000000000000003000780078003000F1D7E9C14>63
D<FFFFC00F00F00F00380F003C0F001C0F001E0F001E0F001E0F001E0F001C0F003C0F00
780F01F00FFFE00F00780F003C0F001E0F000E0F000F0F000F0F000F0F000F0F000F0F00
1E0F001E0F003C0F0078FFFFE0181C7E9B1D>66 D<001F808000E0618001801980070007
800E0003801C0003801C00018038000180780000807800008070000080F0000000F00000
00F0000000F0000000F0000000F0000000F0000000F00000007000008078000080780000
80380000801C0001001C0001000E000200070004000180080000E03000001FC000191E7E
9C1E>I<FFFFC0000F00F0000F003C000F000E000F0007000F0007000F0003800F0003C0
0F0001C00F0001C00F0001E00F0001E00F0001E00F0001E00F0001E00F0001E00F0001E0
0F0001E00F0001C00F0001C00F0003C00F0003800F0007800F0007000F000E000F001C00
0F007000FFFFC0001B1C7E9B20>I<FFFFFC0F003C0F000C0F00040F00040F00060F0002
0F00020F02020F02000F02000F02000F06000FFE000F06000F02000F02000F02000F0201
0F00010F00020F00020F00020F00060F00060F000C0F003CFFFFFC181C7E9B1C>I<FFF0
0F000F000F000F000F000F000F000F000F000F000F000F000F000F000F000F000F000F00
0F000F000F000F000F000F000F000F00FFF00C1C7F9B0F>73 D<FF8000FF800F8000F800
0F8000F8000BC00178000BC00178000BC001780009E002780009E002780008F004780008
F004780008F0047800087808780008780878000878087800083C107800083C107800083C
107800081E207800081E207800081E207800080F407800080F4078000807807800080780
7800080780780008030078001C03007800FF8307FF80211C7E9B26>77
D<FF007FC00F800E000F8004000BC0040009E0040009E0040008F0040008F80400087804
00083C0400083C0400081E0400080F0400080F0400080784000807C4000803C4000801E4
000801E4000800F40008007C0008007C0008003C0008003C0008001C0008000C001C000C
00FF8004001A1C7E9B1F>I<003F800000E0E0000380380007001C000E000E001C000700
3C00078038000380780003C0780003C0700001C0F00001E0F00001E0F00001E0F00001E0
F00001E0F00001E0F00001E0F00001E0700001C0780003C0780003C0380003803C000780
1C0007000E000E0007001C000380380000E0E000003F80001B1E7E9C20>I<FFFF800F00
E00F00780F003C0F001C0F001E0F001E0F001E0F001E0F001E0F001C0F003C0F00780F00
E00FFF800F00000F00000F00000F00000F00000F00000F00000F00000F00000F00000F00
000F0000FFF000171C7E9B1C>I<07E0801C1980300580700380600180E00180E00080E0
0080E00080F00000F800007C00007FC0003FF8001FFE0007FF0000FF80000F800007C000
03C00001C08001C08001C08001C0C00180C00180E00300D00200CC0C0083F800121E7E9C
17>83 D<7FFFFFC0700F01C0600F00C0400F0040400F0040C00F0020800F0020800F0020
800F0020000F0000000F0000000F0000000F0000000F0000000F0000000F0000000F0000
000F0000000F0000000F0000000F0000000F0000000F0000000F0000000F0000000F0000
001F800003FFFC001B1C7F9B1E>I<FFF07FC00F000E000F0004000F0004000F0004000F
0004000F0004000F0004000F0004000F0004000F0004000F0004000F0004000F0004000F
0004000F0004000F0004000F0004000F0004000F0004000F0004000F0004000700080007
800800038010000180100000C020000070C000001F00001A1D7E9B1F>I<FFE00FF01F00
03C00F0001800F0001000F800300078002000780020003C0040003C0040003C0040001E0
080001E0080001F0080000F0100000F0100000F830000078200000782000003C4000003C
4000003C4000001E8000001E8000001F8000000F0000000F000000060000000600000006
00001C1D7F9B1F>I<FFE0FFE0FF1F001F003C1E001E00180F001F00100F001F00100F00
1F001007801F00200780278020078027802003C027804003C043C04003C043C04003E043
C04001E081E08001E081E08001E081E08000F100F10000F100F10000F100F100007900FA
00007A007A00007A007A00003E007C00003C003C00003C003C00003C003C000018001800
00180018000018001800281D7F9B2B>I<1FC000307000783800781C00301C00001C0000
1C0001FC000F1C00381C00701C00601C00E01C40E01C40E01C40603C40304E801F870012
127E9115>97 D<FC00001C00001C00001C00001C00001C00001C00001C00001C00001C00
001C00001C7C001D86001E03001C01801C01C01C00C01C00E01C00E01C00E01C00E01C00
E01C00E01C00C01C01C01C01801E030019060010F800131D7F9C17>I<07E00C30187830
7870306000E000E000E000E000E000E00060007004300418080C3007C00E127E9112>I<
003F0000070000070000070000070000070000070000070000070000070000070003E700
0C1700180F00300700700700600700E00700E00700E00700E00700E00700E00700600700
700700300700180F000C370007C7E0131D7E9C17>I<03E00C301818300C700E6006E006
FFFEE000E000E000E00060007002300218040C1803E00F127F9112>I<00F8018C071E06
1E0E0C0E000E000E000E000E000E00FFE00E000E000E000E000E000E000E000E000E000E
000E000E000E000E000E000E007FE00F1D809C0D>I<00038003C4C00C38C01C38801818
00381C00381C00381C00381C001818001C38000C300013C0001000003000001800001FF8
001FFF001FFF803003806001C0C000C0C000C0C000C06001803003001C0E0007F800121C
7F9215>I<FC00001C00001C00001C00001C00001C00001C00001C00001C00001C00001C
00001C7C001C87001D03001E03801C03801C03801C03801C03801C03801C03801C03801C
03801C03801C03801C03801C03801C0380FF9FF0141D7F9C17>I<18003C003C00180000
00000000000000000000000000FC001C001C001C001C001C001C001C001C001C001C001C
001C001C001C001C001C00FF80091D7F9C0C>I<00C001E001E000C00000000000000000
0000000000000FE000E000E000E000E000E000E000E000E000E000E000E000E000E000E0
00E000E000E000E000E000E060E0F0C0F1C061803E000B25839C0D>I<FC00001C00001C
00001C00001C00001C00001C00001C00001C00001C00001C00001C3FC01C0F001C0C001C
08001C10001C20001C40001CE0001DE0001E70001C78001C38001C3C001C1C001C0E001C
0F001C0F80FF9FE0131D7F9C16>I<FC001C001C001C001C001C001C001C001C001C001C
001C001C001C001C001C001C001C001C001C001C001C001C001C001C001C001C001C00FF
80091D7F9C0C>I<FC7E07E0001C838838001D019018001E01E01C001C01C01C001C01C0
1C001C01C01C001C01C01C001C01C01C001C01C01C001C01C01C001C01C01C001C01C01C
001C01C01C001C01C01C001C01C01C001C01C01C00FF8FF8FF8021127F9124>I<FC7C00
1C87001D03001E03801C03801C03801C03801C03801C03801C03801C03801C03801C0380
1C03801C03801C03801C0380FF9FF014127F9117>I<03F0000E1C001806003003007003
80600180E001C0E001C0E001C0E001C0E001C0E001C06001807003803003001806000E1C
0003F00012127F9115>I<FC7C001D86001E03001C01801C01C01C00C01C00E01C00E01C
00E01C00E01C00E01C00E01C01C01C01C01C01801E03001D06001CF8001C00001C00001C
00001C00001C00001C00001C0000FF8000131A7F9117>I<FCE01D301E781E781C301C00
1C001C001C001C001C001C001C001C001C001C001C00FFC00D127F9110>114
D<1F9030704030C010C010E010F8007F803FE00FF000F880388018C018C018E010D0608F
C00D127F9110>I<04000400040004000C000C001C003C00FFE01C001C001C001C001C00
1C001C001C001C001C101C101C101C101C100C100E2003C00C1A7F9910>I<FC1F801C03
801C03801C03801C03801C03801C03801C03801C03801C03801C03801C03801C03801C03
801C07800C07800E1B8003E3F014127F9117>I<FF07E03C03801C01001C01000E02000E
020007040007040007040003880003880003D80001D00001D00000E00000E00000E00000
400013127F9116>I<FF3FCFE03C0F03801C0701801C0701001C0B01000E0B82000E0B82
000E1182000711C4000711C4000720C40003A0E80003A0E80003C0680001C0700001C070
0001803000008020001B127F911E>I<7F8FF00F03800F030007020003840001C80001D8
0000F00000700000780000F800009C00010E00020E000607000403801E07C0FF0FF81512
809116>I<FF07E03C03801C01001C01000E02000E020007040007040007040003880003
880003D80001D00001D00000E00000E00000E000004000004000008000008000F08000F1
0000F300006600003C0000131A7F9116>I<7FFC70386038407040F040E041C003C00380
07000F040E041C043C0C380870087038FFF80E127F9112>I<FFFFF01401808B15>I
E /Fo 16 118 df<78FCFCFCFC7800000000000078FCFCFCFC7806127D910D>58
D<001FE02000FFF8E003F80FE007C003E00F8001E01F0000E03E0000E03E0000607E0000
607C000060FC000000FC000000FC000000FC000000FC000000FC000000FC000000FC0000
007C0000607E0000603E0000603E0000C01F0000C00F80018007C0030003F80E0000FFFC
00001FE0001B1C7D9B22>67 D<FFFFF800FFFFFF000FC01FC00FC007E00FC001F00FC001
F80FC000F80FC000FC0FC0007C0FC0007C0FC0007E0FC0007E0FC0007E0FC0007E0FC000
7E0FC0007E0FC0007E0FC0007E0FC0007C0FC0007C0FC0007C0FC000F80FC000F80FC001
F00FC007E00FC01FC0FFFFFF00FFFFF8001F1C7E9B25>I<FFC00003FFFFE00007FF0FE0
0007F00DF0000DF00DF0000DF00DF0000DF00CF80019F00CF80019F00C7C0031F00C7C00
31F00C3E0061F00C3E0061F00C1F00C1F00C1F00C1F00C1F00C1F00C0F8181F00C0F8181
F00C07C301F00C07C301F00C03E601F00C03E601F00C01FC01F00C01FC01F00C01FC01F0
0C00F801F00C00F801F0FFC0701FFFFFC0701FFF281C7E9B2D>77
D<07F8201FFEE03C07E07801E07000E0F000E0F00060F00060F80000FE0000FFE0007FFE
003FFF003FFF800FFFC007FFE0007FE00003F00001F00000F0C000F0C000F0C000E0E000
E0F001C0FC03C0EFFF0083FC00141C7D9B1B>83 D<0FF8001C1E003E0F803E07803E07C0
1C07C00007C0007FC007E7C01F07C03C07C07C07C0F807C0F807C0F807C0780BC03E13F8
0FE1F815127F9117>97 D<03FC000E0E001C1F003C1F00781F00780E00F80000F80000F8
0000F80000F80000F800007800007801803C01801C03000E0E0003F80011127E9115>99
D<01FC000F07001C03803C01C07801C07801E0F801E0F801E0FFFFE0F80000F80000F800
007800007C00603C00601E00C00F038001FC0013127F9116>101
D<03F8F00E0F381E0F381C07303C07803C07803C07803C07801C07001E0F000E0E001BF8
001000001800001800001FFF001FFFC00FFFE01FFFF07801F8F00078F00078F000787000
707800F01E03C007FF00151B7F9118>103 D<1E003F003F003F003F001E000000000000
00000000000000FF00FF001F001F001F001F001F001F001F001F001F001F001F001F001F
001F00FFE0FFE00B1E7F9D0E>105 D<FF0FC0FF31E01F40F01F80F81F80F81F00F81F00
F81F00F81F00F81F00F81F00F81F00F81F00F81F00F81F00F81F00F8FFE7FFFFE7FF1812
7F911B>110 D<01FC000F07801C01C03C01E07800F07800F0F800F8F800F8F800F8F800
F8F800F8F800F87800F07800F03C01E01E03C00F078001FC0015127F9118>I<FE3E00FE
47001E8F801E8F801E8F801F07001F00001F00001F00001F00001F00001F00001F00001F
00001F00001F0000FFF000FFF00011127F9114>114 D<1FD830786018E018E018F000FF
807FE07FF01FF807FC007CC01CC01CE01CE018F830CFC00E127E9113>I<030003000300
0300070007000F000F003FFCFFFC1F001F001F001F001F001F001F001F001F001F0C1F0C
1F0C1F0C0F08079803F00E1A7F9913>I<FF07F8FF07F81F00F81F00F81F00F81F00F81F
00F81F00F81F00F81F00F81F00F81F00F81F00F81F00F81F01F80F01F80786FF01F8FF18
127F911B>I E /Fp 35 122 df<F8F8F8F8F805057A8411>46 D<007F000001FFC00007
FFF0000FFFF8000FC1F8001F007C003F007E003E003E003C001E007C001F007C001F007C
001F0078000F00F8000F80F8000F80F8000F80F8000F80F8000F80F8000F80F8000F80F8
000F80F8000F80F8000F80F8000F80F8000F80F8000F80F8000F80F8000F8078000F007C
001F007C001F007C001F003E003E003E003E003F007E001F80FC000FC1F8000FFFF80007
FFF00001FFC000007F000019297EA71E>48 D<00180000380000F80007F800FFF800FFF8
00F8F80000F80000F80000F80000F80000F80000F80000F80000F80000F80000F80000F8
0000F80000F80000F80000F80000F80000F80000F80000F80000F80000F80000F80000F8
0000F80000F80000F80000F80000F80000F80000F8007FFFF07FFFF07FFFF014287BA71E
>I<00FE0003FFC007FFE00FFFF01F03F83C00FC38007E78003E70003EF0001FF0001F60
001F20001F00001F00001F00001F00003E00003E00007C00007C0000F80001F00001E000
03C0000780000F00001E00003C0000780000F00001E00003C0000780000F00001E00003C
00007FFFFF7FFFFF7FFFFF7FFFFF18287EA71E>I<007F000001FFC00007FFF0000FFFF8
001FC1F8003E007C003C003E0078003E0038003E0010003E0000003E0000003E0000003C
0000007C000000FC000001F8000007F00000FFE00000FFC00000FFE00000FFF0000001FC
0000007C0000003E0000001F0000001F0000000F8000000F8000000F8000000F8000000F
8040000F8060001F00F0001F00F8003F007E007E003F81FC001FFFF8000FFFF00003FFE0
00007F000019297EA71E>I<0003F0000007F0000005F000000DF000000DF000001DF000
0039F0000039F0000079F0000079F00000F1F00000F1F00001E1F00003E1F00003E1F000
07C1F00007C1F0000F81F0000F81F0001F01F0001F01F0003E01F0007C01F0007C01F000
F801F000FFFFFF80FFFFFF80FFFFFF80FFFFFF800001F0000001F0000001F0000001F000
0001F0000001F0000001F0000001F0000001F0000001F00019277EA61E>I<3FFFFC3FFF
FC3FFFFC3FFFFC3E00003E00003E00003E00003E00003E00003E00003E00003E00003E00
003E3F003EFFC03FFFE03FFFF03FE1F83F807C3F003E3E003E00003E00001F00001F0000
1F00001F00001F00001F00001F20001F60003E70003EF8007C7C00FC3F03F81FFFF00FFF
E007FF8000FE0018287EA61E>I<0001FF00000FFFE0003FFFF8007FFFF800FE01F801F8
003003F0001007C000000F8000001F8000001F0000003E0000003E0000007E0000007C00
00007C0000007C000000F8000000F8000000F8000000F8000000F8000000F8000000F800
0000F8000000F8000000F80000007C0000007C0000007C0000007E0000003E0000003E00
00001F0000001F8000000F80000007C0000003F0000401F8001C00FE00FC007FFFFC003F
FFF8000FFFE00001FF001E2C7CAA26>67 D<FFFFF00000FFFFFC0000FFFFFF0000F8003F
C000F80007E000F80003F000F80001F800F80000FC00F800007C00F800003E00F800001E
00F800001F00F800000F00F800000F80F800000F80F800000780F8000007C0F8000007C0
F8000007C0F8000007C0F8000007C0F8000007C0F8000007C0F8000007C0F8000007C0F8
000007C0F800000780F800000F80F800000F80F800000F80F800001F00F800001F00F800
003E00F800007E00F800007C00F80000F800F80003F000F80007E000F8003FC000FFFFFF
0000FFFFFE0000FFFFF00000222A7BA92B>I<FFFFFFE0FFFFFFE0FFFFFFE0FFFFFFE0F8
000000F8000000F8000000F8000000F8000000F8000000F8000000F8000000F8000000F8
000000F8000000F8000000F8000000F8000000FFFFFF80FFFFFF80FFFFFF80FFFFFF80F8
000000F8000000F8000000F8000000F8000000F8000000F8000000F8000000F8000000F8
000000F8000000F8000000F8000000F8000000F8000000F8000000FFFFFFF0FFFFFFF0FF
FFFFF0FFFFFFF01C2A7BA924>I<F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8
F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8052A7AA911>73
D<F80000F80000F80000F80000F80000F80000F80000F80000F80000F80000F80000F800
00F80000F80000F80000F80000F80000F80000F80000F80000F80000F80000F80000F800
00F80000F80000F80000F80000F80000F80000F80000F80000F80000F80000F80000F800
00F80000F80000FFFFFFFFFFFFFFFFFFFFFFFF182A7BA920>76 D<FE0000007F80FE0000
007F80FE0000007F80FF000000FF80FB000000EF80FB800001EF80FB800001EF80FB8000
01EF80F9C00003CF80F9C00003CF80F9C00003CF80F8E000078F80F8E000078F80F8F000
0F8F80F8F0000F8F80F870000F0F80F878001F0F80F878001F0F80F838001E0F80F83C00
3E0F80F83C003E0F80F81E007C0F80F81E007C0F80F80E00780F80F80F00F80F80F80F00
F80F80F80700F00F80F80781F00F80F80781F00F80F80381E00F80F803C3E00F80F803C3
E00F80F801C3C00F80F801E7C00F80F800E7800F80F800E7800F80F800E7800F80F8007F
000F80F8007F000F80F8007F000F80F8003E000F80F80000000F80292A7BA934>I<FF00
003EFF00003EFF80003EFF80003EFBC0003EFBC0003EF9E0003EF9E0003EF9F0003EF8F0
003EF8F8003EF878003EF87C003EF83C003EF83E003EF81E003EF81F003EF81F003EF80F
803EF80F803EF807C03EF807C03EF803E03EF803E03EF801F03EF801F03EF800F03EF800
F83EF800783EF8007C3EF8003C3EF8003E3EF8001E3EF8001F3EF8000F3EF8000F3EF800
07BEF80007BEF80003FEF80003FEF80001FEF80001FE1F2A7BA92A>I<FFFFE000FFFFFC
00FFFFFF00F8003F80F8000FC0F80007E0F80001E0F80001F0F80000F0F80000F8F80000
F8F80000F8F80000F8F80000F8F80000F8F80000F0F80001F0F80001F0F80003E0F8000F
C0F8003F80FFFFFF00FFFFFE00FFFFF000F8000000F8000000F8000000F8000000F80000
00F8000000F8000000F8000000F8000000F8000000F8000000F8000000F8000000F80000
00F8000000F8000000F8000000F80000001D2A7BA926>80 D<007FC00001FFF80007FFFE
000FFFFF001FC07F003F000F007E0006007C0000007C000000F8000000F8000000F80000
00F8000000F8000000FC0000007E0000007F0000003F8000001FF800000FFF800007FFE0
0003FFF80000FFFC00000FFE000000FF0000003F0000001F8000000F8000000FC0000007
C0000007C0000007C0000007C0000007C0000007C000000F8060000F80F0001F00FC003F
00FF80FE007FFFFC001FFFF80007FFE00000FF80001A2C7DAA21>83
D<01FE000FFF803FFFC03FFFE03C03F03001F00001F80000F80000F80000F80000F80000
F8007FF807FFF81FFFF83FE0F87F00F8FC00F8F800F8F800F8F800F8FC01F87E07F87FFF
F83FFFF81FFCF80FE0F8151B7E9A1D>97 D<F80000F80000F80000F80000F80000F80000
F80000F80000F80000F80000F80000F80000F80000F80000F80000F83F00F9FFC0FBFFE0
FFFFF0FF07F0FC01F8F800FCF8007CF8007CF8007EF8003EF8003EF8003EF8003EF8003E
F8003EF8003EF8007CF8007CF8007CFC00F8FC01F8FF07F0FFFFE0FBFFC0F9FF80F87E00
172A7BA91F>I<007FC001FFF007FFFC0FFFFC1FC07C1F00083E00007C00007C00007C00
00F80000F80000F80000F80000F80000F80000F800007C00007C00007E00003E00001F00
0C1FC07C0FFFFC07FFFC01FFF0007F80161B7E9A1B>I<00003E00003E00003E00003E00
003E00003E00003E00003E00003E00003E00003E00003E00003E00003E00003E00FC3E03
FF3E07FFFE0FFFFE1FC1FE3F007E3E003E7C003E7C003EFC003EF8003EF8003EF8003EF8
003EF8003EF8003EF8003EFC003E7C003E7C003E3E007E3F00FE1FC1FE0FFFFE07FFBE03
FF3E00FC3E172A7EA91F>I<007E0003FF8007FFC00FFFE01F83F03F00F03E00787C0078
7C003878003CFFFFFCFFFFFCFFFFFCFFFFFCF80000F80000F800007800007C00007C0000
3E00003F000C1FC07C0FFFFC07FFFC01FFF0007F80161B7E9A1B>I<001FC0007FC000FF
C001FFC003F00003E00007C00007C00007C00007C00007C00007C00007C00007C00007C0
00FFFE00FFFE00FFFE0007C00007C00007C00007C00007C00007C00007C00007C00007C0
0007C00007C00007C00007C00007C00007C00007C00007C00007C00007C00007C00007C0
0007C00007C00007C000122A7FA912>I<00F8078003FE7FC00FFFFFC01FFFFFC01F07C0
003E03E0003E03E0007C01F0007C01F0007C01F0007C01F0007C01F0007C01F0003E03E0
003E03E0001F07C0001FFFC0003FFF80003BFE000038F8000078000000780000003C0000
003FFFC0003FFFF8001FFFFC001FFFFE003FFFFF007C007F00F8001F80F8000F80F8000F
80F8000F80FC001F807E003F003F80FE003FFFFE000FFFF80007FFF00000FF80001A287E
9A1E>I<F8F8F8F8F800000000000000000000F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8
F8F8F8F8F8F8F8F8F8F8052A7CA90E>105 D<F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8
F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8052A7CA90E>108
D<F83F003F00F8FFC0FFC0FBFFE3FFE0FFFFF7FFF0FF83F783F0FE01FE01F8FC00FC00F8
FC00FC00F8FC00FC00F8F800F800F8F800F800F8F800F800F8F800F800F8F800F800F8F8
00F800F8F800F800F8F800F800F8F800F800F8F800F800F8F800F800F8F800F800F8F800
F800F8F800F800F8F800F800F8F800F800F8F800F800F8F800F800F8251B7B9A30>I<F8
3F00F8FF80FBFFC0FFFFE0FF07E0FE03F0FC01F0FC01F0FC01F0F801F0F801F0F801F0F8
01F0F801F0F801F0F801F0F801F0F801F0F801F0F801F0F801F0F801F0F801F0F801F0F8
01F0F801F0F801F0141B7B9A1F>I<007F000001FFC00007FFF0000FFFF8001FC1FC003F
007E003E003E007C001F007C001F0078000F00F8000F80F8000F80F8000F80F8000F80F8
000F80F8000F80F8000F807C001F007C001F007E003F003E003E003F007E001FC1FC000F
FFF80007FFF00001FFC000007F0000191B7E9A1E>I<F83F00F9FFC0FBFFE0FFFFF0FF07
F0FC01F8F800FCF800FCF8007CF8007EF8003EF8003EF8003EF8003EF8003EF8003EF800
3EF8007CF8007CF800FCFC00F8FC03F8FF07F0FFFFE0FBFFC0F9FF80F87E00F80000F800
00F80000F80000F80000F80000F80000F80000F80000F80000F80000F8000017277B9A1F
>I<F838F8F8F9F8FBF8FFC0FF00FE00FE00FC00FC00F800F800F800F800F800F800F800
F800F800F800F800F800F800F800F800F800F8000D1B7B9A14>114
D<03FC001FFF803FFFC07FFFC07C07C0F80080F80000F80000F80000FC00007F80007FF8
003FFE001FFF0007FF8000FFC0000FE00007E00003E00003E04003E0E007E0FC0FC0FFFF
C07FFF801FFE0003F800131B7E9A17>I<07C00007C00007C00007C00007C00007C00007
C000FFFFC0FFFFC0FFFFC007C00007C00007C00007C00007C00007C00007C00007C00007
C00007C00007C00007C00007C00007C00007C00007C00007C00007C00007C04007E1C003
FFE003FFE001FF8000FC0013227FA116>I<F801F0F801F0F801F0F801F0F801F0F801F0
F801F0F801F0F801F0F801F0F801F0F801F0F801F0F801F0F801F0F801F0F801F0F801F0
F801F0F801F0F803F0F803F0FC0FF0FFFFF07FFDF03FF9F01FC1F0141B7B9A1F>I<F800
FC007CF801FC007C7C01FE00787C01DE00F87C01DE00F87C03DE00F83E03CF00F03E03CF
01F03E038F01F03E078F01F01F078F83E01F078783E01F070783E00F0F0783C00F8F07C7
C00F8F03C7C00F8E03C7C0078E03C780079E01C780079E01E78003DC01EF0003DC01EF00
03DC00EF0003D800EF0001F800FE0001F800FE0001F8007E00261B7F9A29>119
D<F8000F80FC000F807C001F007E001F003E003E003E003E001F003E001F007C001F007C
000F807C000F80F80007C0F80007C0F00007C1F00003E1F00003E1E00001E1E00001E3E0
0001F3C00000F3C00000F38000007380000073800000370000003F0000003E0000001E00
00001E0000003C0000003C0000003C0000007800000078000000F0000000F000007FE000
007FE000007FC000007F00000019277F9A1C>121 D E /Fq 9 122
df<FFFFFFE0000000000003FFFFFFFFFFFFF0000000000007FFFFFFFFFFFFF000000000
0007FFFFFFFFFFFFF800000000000FFFFFFFFFFFFFF800000000000FFFFFFF001FFFF800
000000000FFFF800001FFFFC00000000001EFFF800001FFFFC00000000001EFFF800001F
BFFE00000000003CFFF800001FBFFE00000000003CFFF800001F9FFF000000000078FFF8
00001F9FFF000000000078FFF800001F8FFF8000000000F0FFF800001F8FFF8000000000
F0FFF800001F87FFC000000001E0FFF800001F87FFC000000001E0FFF800001F87FFC000
000001E0FFF800001F83FFE000000003C0FFF800001F83FFE000000003C0FFF800001F81
FFF00000000780FFF800001F81FFF00000000780FFF800001F80FFF80000000F00FFF800
001F80FFF80000000F00FFF800001F807FFC0000001E00FFF800001F807FFC0000001E00
FFF800001F807FFC0000001E00FFF800001F803FFE0000003C00FFF800001F803FFE0000
003C00FFF800001F801FFF0000007800FFF800001F801FFF0000007800FFF800001F800F
FF800000F000FFF800001F800FFF800000F000FFF800001F8007FFC00001E000FFF80000
1F8007FFC00001E000FFF800001F8003FFE00003C000FFF800001F8003FFE00003C000FF
F800001F8003FFE00003C000FFF800001F8001FFF000078000FFF800001F8001FFF00007
8000FFF800001F8000FFF8000F0000FFF800001F8000FFF8000F0000FFF800001F80007F
FC001E0000FFF800001F80007FFC001E0000FFF800001F80003FFE003C0000FFF800001F
80003FFE003C0000FFF800001F80001FFF00780000FFF800001F80001FFF00780000FFF8
00001F80001FFF00780000FFF800001F80000FFF80F00000FFF800001F80000FFF80F000
00FFF800001F800007FFC1E00000FFF800001F800007FFC1E00000FFF800001F800003FF
E3C00000FFF800001F800003FFE3C00000FFF800001F800001FFF7800000FFF800001F80
0001FFF7800000FFF800001F800001FFF7800000FFF800001F800000FFFF000000FFF800
001F800000FFFF000000FFF800001F8000007FFE000000FFF800001F8000007FFE000000
FFF800001F8000003FFC000000FFF800001F8000003FFC000000FFF800001F8000001FF8
000000FFF800001F8000001FF8000000FFF800007FE000000FF0000000FFF800FFFFFFF0
000FF00007FFFFFFFFFFFFFFF0000FF00007FFFFFFFFFFFFFFF00007E00007FFFFFFFFFF
FFFFF00007E00007FFFFFFFFFFFFFFF00003C00007FFFFFFFF68477CC671>77
D<0007FFFC000000007FFFFFC0000001FFFFFFF8000003FFFFFFFE000007FE001FFF0000
07FF0003FFC0000FFF8001FFE0000FFF8000FFF0000FFF80007FF0000FFF80007FF8000F
FF80007FF80007FF00003FFC0007FF00003FFC0003FE00003FFC0000F800003FFC000000
00003FFC00000000003FFC00000000003FFC00000000003FFC00000007FFFFFC000000FF
FFFFFC000007FFFFFFFC00003FFFE03FFC0000FFFE003FFC0003FFF0003FFC0007FFC000
3FFC000FFF00003FFC001FFE00003FFC003FFC00003FFC007FF800003FFC007FF800003F
FC00FFF000003FFC00FFF000003FFC00FFF000003FFC00FFF000003FFC00FFF000003FFC
00FFF000007FFC007FF80000FFFC007FF80001EFFC003FFC0003EFFC003FFF0007CFFF00
0FFFC03F8FFFF807FFFFFF07FFFC01FFFFFC03FFFC007FFFF001FFFC0003FF80007FF836
2E7DAD3A>97 D<00001FFFC0000000FFFFF8000007FFFFFE00001FFFFFFF80007FFC00FF
C000FFE001FFC001FFC003FFE003FF8003FFE007FF0003FFE00FFE0003FFE00FFE0003FF
E01FFC0001FFC01FFC0001FFC03FFC0000FF803FFC00003E007FF8000000007FF8000000
007FF800000000FFF800000000FFF800000000FFF800000000FFF800000000FFF8000000
00FFF800000000FFF800000000FFF800000000FFF800000000FFF8000000007FF8000000
007FF8000000007FFC000000003FFC000000003FFC000000001FFC000000F81FFE000000
F80FFE000000F80FFF000001F007FF800003F003FFC00007E001FFE0000FC000FFF0001F
80007FFE00FF00001FFFFFFE000007FFFFF8000000FFFFE00000001FFE00002D2E7CAD35
>99 D<00001FFE00000001FFFFE0000007FFFFF800001FFFFFFE00007FFC07FF0000FFE0
01FF8001FFC0007FC003FF80003FE007FF00003FF00FFE00001FF01FFE00000FF81FFC00
000FF83FFC00000FFC3FFC000007FC7FFC000007FC7FF8000007FC7FF8000007FE7FF800
0007FEFFF8000007FEFFF8000007FEFFFFFFFFFFFEFFFFFFFFFFFEFFFFFFFFFFFEFFFFFF
FFFFFCFFF800000000FFF800000000FFF800000000FFF8000000007FF8000000007FF800
0000007FFC000000003FFC000000003FFC000000003FFC0000001C1FFE0000003E0FFE00
00003E07FF0000007E07FF000000FC03FF800001F801FFC00003F0007FF0001FE0003FFE
00FFC0001FFFFFFF800007FFFFFE000000FFFFF80000000FFF80002F2E7DAD36>101
D<00FC0001FE0003FF0007FF800FFFC01FFFE01FFFE01FFFE01FFFE01FFFE01FFFE00FFF
C007FF8003FF0001FE0000FC000000000000000000000000000000000000000000000000
00000000000000000000007FC0FFFFC0FFFFC0FFFFC0FFFFC0FFFFC003FFC001FFC001FF
C001FFC001FFC001FFC001FFC001FFC001FFC001FFC001FFC001FFC001FFC001FFC001FF
C001FFC001FFC001FFC001FFC001FFC001FFC001FFC001FFC001FFC001FFC001FFC001FF
C001FFC001FFC001FFC001FFC001FFC001FFC001FFC001FFC0FFFFFFFFFFFFFFFFFFFFFF
FFFFFFFF18497CC820>105 D<007FC000FFFFC000FFFFC000FFFFC000FFFFC000FFFFC0
0003FFC00001FFC00001FFC00001FFC00001FFC00001FFC00001FFC00001FFC00001FFC0
0001FFC00001FFC00001FFC00001FFC00001FFC00001FFC00001FFC00001FFC00001FFC0
0001FFC00001FFC00001FFC00001FFC00001FFC00001FFC00001FFC00001FFC00001FFC0
0001FFC00001FFC00001FFC00001FFC00001FFC00001FFC00001FFC00001FFC00001FFC0
0001FFC00001FFC00001FFC00001FFC00001FFC00001FFC00001FFC00001FFC00001FFC0
0001FFC00001FFC00001FFC00001FFC00001FFC00001FFC00001FFC00001FFC00001FFC0
0001FFC00001FFC00001FFC00001FFC00001FFC00001FFC00001FFC000FFFFFF80FFFFFF
80FFFFFF80FFFFFF80FFFFFF8019487CC720>108 D<007FC001FFC00000FFFFC00FFFF8
0000FFFFC03FFFFE0000FFFFC0FFFFFF0000FFFFC1FC07FF8000FFFFC3E003FFC00003FF
C7C001FFC00001FFCF0001FFE00001FFDE0000FFE00001FFDC0000FFE00001FFFC0000FF
F00001FFF80000FFF00001FFF00000FFF00001FFF00000FFF00001FFF00000FFF00001FF
E00000FFF00001FFE00000FFF00001FFE00000FFF00001FFE00000FFF00001FFE00000FF
F00001FFE00000FFF00001FFE00000FFF00001FFE00000FFF00001FFE00000FFF00001FF
E00000FFF00001FFE00000FFF00001FFE00000FFF00001FFE00000FFF00001FFE00000FF
F00001FFE00000FFF00001FFE00000FFF00001FFE00000FFF00001FFE00000FFF00001FF
E00000FFF00001FFE00000FFF00001FFE00000FFF00001FFE00000FFF00001FFE00000FF
F00001FFE00000FFF00001FFE00000FFF00001FFE00000FFF000FFFFFFC07FFFFFE0FFFF
FFC07FFFFFE0FFFFFFC07FFFFFE0FFFFFFC07FFFFFE0FFFFFFC07FFFFFE03B2E7CAD42>
110 D<000FFF00E0007FFFF3E001FFFFFFE007FFFFFFE00FF800FFE01FC0001FE03F8000
0FE03F000007E07F000003E07F000003E0FF000003E0FF000003E0FF800003E0FFC00000
00FFF0000000FFFE000000FFFFF800007FFFFFC0007FFFFFF0003FFFFFFC001FFFFFFF00
0FFFFFFF8007FFFFFFC003FFFFFFE000FFFFFFF0003FFFFFF00003FFFFF800001FFFF800
0000FFFC0000001FFC7800000FFCF8000007FCF8000003FCFC000003FCFC000003FCFE00
0003F8FE000003F8FF000003F8FF800007F0FFC0000FF0FFF0001FE0FFFC00FFC0FFFFFF
FF80FC7FFFFE00F81FFFF800E003FF8000262E7CAD2F>115 D<7FFFFFC000FFFF807FFF
FFC000FFFF807FFFFFC000FFFF807FFFFFC000FFFF807FFFFFC000FFFF8000FFF000000F
E00000FFF800000FC00000FFF800000FC000007FFC00000F8000007FFC00001F8000003F
FC00001F0000003FFE00003F0000001FFE00003E0000001FFF00007E0000000FFF00007C
0000000FFF8000FC00000007FF8000F800000007FFC001F800000003FFC001F000000003
FFE003F000000003FFE003F000000001FFF003E000000001FFF007E000000000FFF007C0
00000000FFF80FC0000000007FF80F80000000007FFC1F80000000003FFC1F0000000000
3FFE3F00000000001FFE3E00000000001FFF7E00000000000FFF7C00000000000FFFFC00
000000000FFFFC000000000007FFF8000000000007FFF8000000000003FFF00000000000
03FFF0000000000001FFE0000000000001FFE0000000000000FFC0000000000000FFC000
00000000007F800000000000007F800000000000003F000000000000003F000000000000
003F000000000000003E000000000000007E000000000000007C00000000000000FC0000
00001F8000F8000000003FC001F8000000007FE001F000000000FFF003F000000000FFF0
03E000000000FFF007E000000000FFF00FC000000000FFF01F8000000000FFF03F800000
00007FE07F00000000007F43FE00000000003FFFF800000000001FFFF0000000000007FF
C0000000000001FE00000000000039427EAD3F>121 D E /Fr 9
117 df<0001FF8000000FFFF000003FFFFC0000FF81FF0001FE007F8003FC003FC007F8
001FE00FF8001FF00FF0000FF01FF0000FF81FF0000FF83FF0000FFC3FE00007FC3FE000
07FC7FE00007FE7FE00007FE7FE00007FE7FE00007FE7FE00007FEFFE00007FFFFE00007
FFFFE00007FFFFE00007FFFFE00007FFFFE00007FFFFE00007FFFFE00007FFFFE00007FF
FFE00007FFFFE00007FFFFE00007FFFFE00007FFFFE00007FFFFE00007FFFFE00007FFFF
E00007FFFFE00007FFFFE00007FF7FE00007FE7FE00007FE7FE00007FE7FE00007FE7FE0
0007FE3FE00007FC3FF0000FFC3FF0000FFC1FF0000FF81FF0000FF80FF0000FF00FF800
1FF007F8001FE003FC003FC001FE007F8000FF81FF00003FFFFC00000FFFF0000001FF80
0028397CB731>48 D<00001E000000003E00000000FE00000003FE0000003FFE0000FFFF
FE0000FFFFFE0000FFFFFE0000FFCFFE0000000FFE0000000FFE0000000FFE0000000FFE
0000000FFE0000000FFE0000000FFE0000000FFE0000000FFE0000000FFE0000000FFE00
00000FFE0000000FFE0000000FFE0000000FFE0000000FFE0000000FFE0000000FFE0000
000FFE0000000FFE0000000FFE0000000FFE0000000FFE0000000FFE0000000FFE000000
0FFE0000000FFE0000000FFE0000000FFE0000000FFE0000000FFE0000000FFE0000000F
FE0000000FFE0000000FFE0000000FFE0000000FFE0000000FFE0000000FFE0000000FFE
0000000FFE0000000FFE0000000FFE00007FFFFFFFC07FFFFFFFC07FFFFFFFC07FFFFFFF
C0223879B731>I<0000001FFF000030000001FFFFE000F000000FFFFFFC01F000007FFF
FFFE03F00001FFFE007F87F00003FFE0000FCFF0000FFF000003FFF0001FFC000001FFF0
003FF80000007FF0007FF00000003FF000FFC00000003FF001FFC00000001FF003FF8000
00000FF007FF000000000FF00FFF0000000007F00FFE0000000007F01FFE0000000003F0
1FFE0000000003F03FFC0000000003F03FFC0000000001F03FFC0000000001F07FFC0000
000001F07FF80000000001F07FF80000000000007FF8000000000000FFF8000000000000
FFF8000000000000FFF8000000000000FFF8000000000000FFF8000000000000FFF80000
00000000FFF8000000000000FFF8000000000000FFF8000000000000FFF8000000000000
FFF80000000000007FF80000000000007FF80000000000007FF80000000000007FFC0000
000000F03FFC0000000000F03FFC0000000000F03FFC0000000000F01FFE0000000000F0
1FFE0000000001E00FFE0000000001E00FFF0000000001E007FF0000000003C003FF8000
000003C001FFC0000000078000FFE00000000F00007FF00000001F00003FF80000003E00
001FFC0000007C00000FFF000001F8000003FFE00007F0000001FFFE003FC00000007FFF
FFFF000000000FFFFFFC0000000001FFFFF000000000001FFF0000003C3D7BBB47>67
D<001FFF00000001FFFFF0000003FFFFFC000007F007FE00000FF801FF00001FFC00FF80
001FFC007FC0001FFC007FE0001FFC003FE0000FF8003FF0000FF8003FF00007F0003FF0
0001C0003FF0000000003FF0000000003FF0000000003FF0000000FFFFF000000FFFFFF0
00007FF83FF00001FF803FF00007FE003FF0000FF8003FF0001FF0003FF0003FE0003FF0
007FE0003FF0007FE0003FF000FFC0003FF000FFC0003FF000FFC0003FF000FFC0003FF0
00FFC0007FF0007FE0007FF0007FE000DFF0003FF0039FF8001FFC0F0FFFF007FFFE0FFF
F001FFFC07FFF0003FE000FFF02C267DA530>97 D<0001FFC000000FFFF800003FFFFE00
00FF80FF0001FE003F8007FC001FC00FF8000FE00FF8000FF01FF00007F03FF00007F83F
F00007F87FE00007F87FE00003FC7FE00003FC7FE00003FCFFE00003FCFFFFFFFFFCFFFF
FFFFFCFFFFFFFFFCFFE0000000FFE0000000FFE0000000FFE00000007FE00000007FE000
00007FE00000003FE00000003FF000003C1FF000003C1FF000003C0FF800007807FC0000
F803FE0001F001FF0007E000FFC03FC0003FFFFF000007FFFC000000FFE00026267DA52D
>101 D<00FF00000000FFFF00000000FFFF00000000FFFF00000000FFFF0000000007FF
0000000003FF0000000003FF0000000003FF0000000003FF0000000003FF0000000003FF
0000000003FF0000000003FF0000000003FF0000000003FF0000000003FF0000000003FF
0000000003FF0000000003FF0000000003FF0000000003FF0000000003FF007FC00003FF
01FFF80003FF07FFFC0003FF0F03FE0003FF1C01FF0003FF3001FF8003FF6000FF8003FF
E000FFC003FFC000FFC003FF8000FFC003FF8000FFC003FF8000FFC003FF0000FFC003FF
0000FFC003FF0000FFC003FF0000FFC003FF0000FFC003FF0000FFC003FF0000FFC003FF
0000FFC003FF0000FFC003FF0000FFC003FF0000FFC003FF0000FFC003FF0000FFC003FF
0000FFC003FF0000FFC003FF0000FFC003FF0000FFC003FF0000FFC003FF0000FFC003FF
0000FFC003FF0000FFC003FF0000FFC0FFFFFC3FFFFFFFFFFC3FFFFFFFFFFC3FFFFFFFFF
FC3FFFFF303C7CBB37>104 D<00FF01FF8000FFFF0FFFF000FFFF3FFFFC00FFFFFE03FF
00FFFFF000FF8003FFC0007FC003FF80003FE003FF00003FF003FF00001FF803FF00001F
FC03FF00000FFC03FF00000FFE03FF00000FFE03FF000007FE03FF000007FF03FF000007
FF03FF000007FF03FF000007FF03FF000007FF03FF000007FF03FF000007FF03FF000007
FF03FF000007FF03FF000007FE03FF000007FE03FF00000FFE03FF00000FFC03FF00000F
FC03FF00001FF803FF00001FF803FF00003FF003FF80003FE003FFC0007FC003FFF001FF
8003FFFC07FF0003FF3FFFFC0003FF0FFFF00003FF01FF000003FF0000000003FF000000
0003FF0000000003FF0000000003FF0000000003FF0000000003FF0000000003FF000000
0003FF0000000003FF0000000003FF0000000003FF0000000003FF00000000FFFFFC0000
00FFFFFC000000FFFFFC000000FFFFFC00000030377DA537>112
D<00FE03F000FFFE0FFE00FFFE1FFF00FFFE3C3F80FFFE707FC007FE60FFE003FEE0FFE0
03FEC0FFE003FFC0FFE003FF807FC003FF807FC003FF803F8003FF800E0003FF00000003
FF00000003FF00000003FF00000003FF00000003FF00000003FF00000003FF00000003FF
00000003FF00000003FF00000003FF00000003FF00000003FF00000003FF00000003FF00
000003FF00000003FF00000003FF00000003FF00000003FF000000FFFFFE0000FFFFFE00
00FFFFFE0000FFFFFE000023267DA529>114 D<00078000000780000007800000078000
00078000000F8000000F8000000F8000000F8000001F8000001F8000003F8000003F8000
007F800000FF800001FF800007FF80001FFFFFF0FFFFFFF0FFFFFFF0FFFFFFF001FF8000
01FF800001FF800001FF800001FF800001FF800001FF800001FF800001FF800001FF8000
01FF800001FF800001FF800001FF800001FF800001FF800001FF800001FF800001FF8000
01FF803C01FF803C01FF803C01FF803C01FF803C01FF803C01FF803C01FF803C00FF8078
00FFC078007FC070003FE0E0001FFFC00007FF800001FF001E377EB626>116
D E /Fs 73 123 df<001F83E000F06E3001C078780380F8780300F03007007000070070
000700700007007000070070000700700007007000FFFFFF800700700007007000070070
000700700007007000070070000700700007007000070070000700700007007000070070
000700700007007000070070000700700007007000070070007FE3FF001D20809F1B>11
D<003F0000E0C001C0C00381E00701E00701E00700000700000700000700000700000700
00FFFFE00700E00700E00700E00700E00700E00700E00700E00700E00700E00700E00700
E00700E00700E00700E00700E00700E00700E00700E07FC3FE1720809F19>I<003FE000
E0E001C1E00381E00700E00700E00700E00700E00700E00700E00700E00700E0FFFFE007
00E00700E00700E00700E00700E00700E00700E00700E00700E00700E00700E00700E007
00E00700E00700E00700E00700E00700E07FE7FE1720809F19>I<001F81F80000F04F04
0001C07C06000380F80F000300F00F000700F00F00070070000007007000000700700000
070070000007007000000700700000FFFFFFFF0007007007000700700700070070070007
007007000700700700070070070007007007000700700700070070070007007007000700
700700070070070007007007000700700700070070070007007007000700700700070070
07007FE3FE3FF02420809F26>I<7038F87CFC7EFC7E743A040204020402080408041008
1008201040200F0E7E9F17>34 D<0020004000800100020006000C000C00180018003000
300030007000600060006000E000E000E000E000E000E000E000E000E000E000E000E000
6000600060007000300030003000180018000C000C000600020001000080004000200B2E
7DA112>40 D<800040002000100008000C00060006000300030001800180018001C000C0
00C000C000E000E000E000E000E000E000E000E000E000E000E000E000C000C000C001C0
01800180018003000300060006000C00080010002000400080000B2E7DA112>I<000600
000006000000060000000600000006000000060000000600000006000000060000000600
000006000000060000000600000006000000060000FFFFFFF0FFFFFFF000060000000600
000006000000060000000600000006000000060000000600000006000000060000000600
00000600000006000000060000000600001C207D9A23>43 D<70F8FCFC74040404080810
102040060E7C840D>I<FFC0FFC00A027F8A0F>I<70F8F8F87005057C840D>I<00010003
0003000600060006000C000C000C00180018001800300030003000600060006000C000C0
00C00180018001800300030003000600060006000C000C000C0018001800180030003000
3000600060006000C000C000C000102D7DA117>I<03F0000E1C001C0E00180600380700
700380700380700380700380F003C0F003C0F003C0F003C0F003C0F003C0F003C0F003C0
F003C0F003C0F003C0F003C0F003C07003807003807003807807803807001806001C0E00
0E1C0003F000121F7E9D17>I<018003800F80F380038003800380038003800380038003
80038003800380038003800380038003800380038003800380038003800380038007C0FF
FE0F1E7C9D17>I<03F0000C1C00100E00200700400780800780F007C0F803C0F803C0F8
03C02007C00007C0000780000780000F00000E00001C0000380000700000600000C00001
80000300000600400C00401800401000803FFF807FFF80FFFF80121E7E9D17>I<03F000
0C1C00100E00200F00780F80780780780780380F80000F80000F00000F00000E00001C00
00380003F000003C00000E00000F000007800007800007C02007C0F807C0F807C0F807C0
F00780400780400F00200E001C3C0003F000121F7E9D17>I<000600000600000E00000E
00001E00002E00002E00004E00008E00008E00010E00020E00020E00040E00080E00080E
00100E00200E00200E00400E00C00E00FFFFF0000E00000E00000E00000E00000E00000E
00000E0000FFE0141E7F9D17>I<1803001FFE001FFC001FF8001FE00010000010000010
000010000010000010000011F000161C00180E001007001007800003800003800003C000
03C00003C07003C0F003C0F003C0E00380400380400700200600100E000C380003E00012
1F7E9D17>I<007C000182000701000E03800C07801C0780380300380000780000700000
700000F1F000F21C00F40600F80700F80380F80380F003C0F003C0F003C0F003C0F003C0
7003C07003C07003803803803807001807000C0E00061C0001F000121F7E9D17>I<4000
007FFFC07FFF807FFF804001008002008002008004000008000008000010000020000020
0000400000400000C00000C00001C0000180000380000380000380000380000780000780
00078000078000078000078000078000030000121F7D9D17>I<03F0000C0C0010060030
03002001806001806001806001807001807803003E03003F06001FC8000FF00003F80007
FC000C7E00103F00300F806003804001C0C001C0C000C0C000C0C000C0C0008060018020
01001002000C0C0003F000121F7E9D17>I<03F0000E18001C0C00380600380700700700
700380F00380F00380F003C0F003C0F003C0F003C0F003C07007C07007C03807C0180BC0
0E13C003E3C0000380000380000380000700300700780600780E00700C00201800107000
0FC000121F7E9D17>I<70F8F8F8700000000000000000000070F8F8F87005147C930D>I<
70F8F8F8700000000000000000000070F0F8F878080808101010202040051D7C930D>I<
7FFFFFE0FFFFFFF000000000000000000000000000000000000000000000000000000000
00000000FFFFFFF07FFFFFE01C0C7D9023>61 D<0FC0307040384038E03CF03CF03C603C
0038007000E000C001800180010003000200020002000200020002000000000000000000
000007000F800F800F8007000E207D9F15>63 D<00010000000380000003800000038000
0007C0000007C0000007C0000009E0000009E0000009E0000010F0000010F0000010F000
00207800002078000020780000403C0000403C0000403C0000801E0000801E0000FFFE00
01000F0001000F0001000F00020007800200078002000780040003C00E0003C01F0007E0
FFC03FFE1F207F9F22>65 D<FFFFE0000F80380007801E0007801F0007800F0007800F80
07800F8007800F8007800F8007800F8007800F0007801F0007801E0007803C0007FFF000
07803C0007801E0007800F0007800F8007800780078007C0078007C0078007C0078007C0
078007C00780078007800F8007800F0007801F000F803C00FFFFF0001A1F7E9E20>I<00
0FC040007030C001C009C0038005C0070003C00E0001C01E0000C01C0000C03C0000C07C
0000407C00004078000040F8000000F8000000F8000000F8000000F8000000F8000000F8
000000F8000000F8000000780000007C0000407C0000403C0000401C0000401E0000800E
000080070001000380020001C0040000703800000FC0001A217D9F21>I<FFFFE0000F80
3C0007801E000780070007800380078003C0078001E0078001E0078001F0078000F00780
00F0078000F8078000F8078000F8078000F8078000F8078000F8078000F8078000F80780
00F8078000F0078000F0078000F0078001E0078001E0078003C007800380078007000780
0E000F803C00FFFFE0001D1F7E9E23>I<FFFFFF000F800F000780030007800300078001
000780018007800080078000800780008007808080078080000780800007808000078180
0007FF800007818000078080000780800007808000078080000780002007800020078000
20078000400780004007800040078000C0078000C0078001800F800F80FFFFFF801B1F7E
9E1F>I<FFFFFF000F800F00078003000780030007800100078001800780008007800080
0780008007800080078080000780800007808000078080000781800007FF800007818000
078080000780800007808000078080000780000007800000078000000780000007800000
0780000007800000078000000FC00000FFFE0000191F7E9E1E>I<000FE0200078186000
E004E0038002E0070001E00F0000E01E0000601E0000603C0000603C0000207C00002078
000020F8000000F8000000F8000000F8000000F8000000F8000000F8000000F8007FFCF8
0003E0780001E07C0001E03C0001E03C0001E01E0001E01E0001E00F0001E0070001E003
8002E000E0046000781820000FE0001E217D9F24>I<FFF8FFF80F800F8007800F000780
0F0007800F0007800F0007800F0007800F0007800F0007800F0007800F0007800F000780
0F0007800F0007FFFF0007800F0007800F0007800F0007800F0007800F0007800F000780
0F0007800F0007800F0007800F0007800F0007800F0007800F0007800F000F800F80FFF8
FFF81D1F7E9E22>I<FFFC0FC00780078007800780078007800780078007800780078007
800780078007800780078007800780078007800780078007800780078007800FC0FFFC0E
1F7F9E10>I<FFFE000FC000078000078000078000078000078000078000078000078000
078000078000078000078000078000078000078000078000078000078000078002078002
07800207800207800607800407800407800C07801C0F807CFFFFFC171F7E9E1C>76
D<FF80001FF80F80001F800780001F0005C0002F0005C0002F0005C0002F0004E0004F00
04E0004F000470008F000470008F000470008F000438010F000438010F000438010F0004
1C020F00041C020F00041C020F00040E040F00040E040F00040E040F000407080F000407
080F000407080F000403900F000403900F000401E00F000401E00F000401E00F000E00C0
0F001F00C01F80FFE0C1FFF8251F7E9E2A>I<FF803FF807C007C007C0038005E0010005
E0010004F001000478010004780100043C0100043C0100041E0100040F0100040F010004
078100040781000403C1000401E1000401E1000400F1000400F1000400790004003D0004
003D0004001F0004001F0004000F0004000700040007000E0003001F000300FFE001001D
1F7E9E22>I<001F800000F0F00001C0380007801E000F000F000E0007001E0007803C00
03C03C0003C07C0003E0780001E0780001E0F80001F0F80001F0F80001F0F80001F0F800
01F0F80001F0F80001F0F80001F0F80001F0780001E07C0003E07C0003E03C0003C03C00
03C01E0007800E0007000F000F0007801E0001C0380000F0F000001F80001C217D9F23>
I<FFFFE0000F80780007801C0007801E0007800F0007800F8007800F8007800F8007800F
8007800F8007800F8007800F0007801E0007801C000780780007FFE00007800000078000
000780000007800000078000000780000007800000078000000780000007800000078000
0007800000078000000FC00000FFFC0000191F7E9E1F>I<FFFF80000F80F00007807800
07803C0007801E0007801E0007801F0007801F0007801F0007801F0007801E0007801E00
07803C00078078000780F00007FF80000781C0000780E0000780F0000780700007807800
078078000780780007807C0007807C0007807C0007807C0407807E0407803E040FC01E08
FFFC0F10000003E01E207E9E21>82 D<07E0800C1980100780300380600180600180E001
80E00080E00080E00080F00000F000007800007F00003FF0001FFC000FFE0003FF00001F
800007800003C00003C00001C08001C08001C08001C08001C0C00180C00380E00300F006
00CE0C0081F80012217D9F19>I<7FFFFFE0780F01E0600F0060400F0020400F0020C00F
0030800F0010800F0010800F0010800F0010000F0000000F0000000F0000000F0000000F
0000000F0000000F0000000F0000000F0000000F0000000F0000000F0000000F0000000F
0000000F0000000F0000000F0000000F0000000F0000001F800007FFFE001C1F7E9E21>
I<FFFC3FF80FC007C0078003800780010007800100078001000780010007800100078001
000780010007800100078001000780010007800100078001000780010007800100078001
00078001000780010007800100078001000780010007800100038002000380020001C002
0001C0040000E008000070180000382000000FC0001D207E9E22>I<FFF07FF81FF01F80
0FC007C00F00078003800F00078001000F0007C00100078007C00200078007C002000780
07C0020003C009E0040003C009E0040003C009E0040003E010F00C0001E010F0080001E0
10F0080001F02078080000F02078100000F02078100000F0403C10000078403C20000078
403C20000078C03E2000003C801E4000003C801E4000003C801E4000001F000F8000001F
000F8000001F000F8000001E00078000000E00070000000E00070000000C000300000004
000200002C207F9E2F>87 D<7FF83FF80FE00FC007C0070003C0020001E0040001F00C00
00F0080000781000007C1000003C2000003E4000001E4000000F8000000F800000078000
0003C0000007E0000005E0000009F0000018F8000010780000207C0000603C0000401E00
00801F0001800F0001000780020007C0070003C01F8007E0FFE01FFE1F1F7F9E22>I<08
0410082010201040204020804080408040B85CFC7EFC7E7C3E381C0F0E7B9F17>92
D<1FE000303000781800781C00300E00000E00000E00000E0000FE00078E001E0E00380E
00780E00F00E10F00E10F00E10F01E10781E103867200F83C014147E9317>97
D<0E0000FE00000E00000E00000E00000E00000E00000E00000E00000E00000E00000E00
000E3E000EC3800F01C00F00E00E00E00E00700E00700E00780E00780E00780E00780E00
780E00780E00700E00700E00E00F00E00D01C00CC300083E0015207F9F19>I<03F80E0C
1C1E381E380C70007000F000F000F000F000F000F00070007000380138011C020E0C03F0
10147E9314>I<000380003F800003800003800003800003800003800003800003800003
8000038000038003E380061B801C0780380380380380700380700380F00380F00380F003
80F00380F00380F003807003807003803803803807801C07800E1B8003E3F815207E9F19
>I<03F0000E1C001C0E00380700380700700700700380F00380F00380FFFF80F00000F0
0000F000007000007000003800801800800C010007060001F80011147F9314>I<007C00
C6018F038F07060700070007000700070007000700FFF007000700070007000700070007
00070007000700070007000700070007000700070007007FF01020809F0E>I<0000E003
E3300E3C301C1C30380E00780F00780F00780F00780F00780F00380E001C1C001E380033
E0002000002000003000003000003FFE001FFF800FFFC03001E0600070C00030C00030C0
0030C000306000603000C01C038003FC00141F7F9417>I<0E0000FE00000E00000E0000
0E00000E00000E00000E00000E00000E00000E00000E00000E3E000E43000E81800F01C0
0F01C00E01C00E01C00E01C00E01C00E01C00E01C00E01C00E01C00E01C00E01C00E01C0
0E01C00E01C00E01C0FFE7FC16207F9F19>I<1C001E003E001E001C0000000000000000
00000000000E007E000E000E000E000E000E000E000E000E000E000E000E000E000E000E
000E000E000E00FFC00A1F809E0C>I<00E001F001F001F000E000000000000000000000
0000007007F000F000700070007000700070007000700070007000700070007000700070
00700070007000700070007000706070F060F0C061803F000C28829E0E>I<0E0000FE00
000E00000E00000E00000E00000E00000E00000E00000E00000E00000E00000E0FF00E03
C00E03000E02000E04000E08000E10000E30000E70000EF8000F38000E1C000E1E000E0E
000E07000E07800E03800E03C00E03E0FFCFF815207F9F18>I<0E00FE000E000E000E00
0E000E000E000E000E000E000E000E000E000E000E000E000E000E000E000E000E000E00
0E000E000E000E000E000E000E000E00FFE00B20809F0C>I<0E1F01F000FE618618000E
81C81C000F00F00E000F00F00E000E00E00E000E00E00E000E00E00E000E00E00E000E00
E00E000E00E00E000E00E00E000E00E00E000E00E00E000E00E00E000E00E00E000E00E0
0E000E00E00E000E00E00E00FFE7FE7FE023147F9326>I<0E3E00FE43000E81800F01C0
0F01C00E01C00E01C00E01C00E01C00E01C00E01C00E01C00E01C00E01C00E01C00E01C0
0E01C00E01C00E01C0FFE7FC16147F9319>I<01F800070E001C03803801C03801C07000
E07000E0F000F0F000F0F000F0F000F0F000F0F000F07000E07000E03801C03801C01C03
80070E0001F80014147F9317>I<0E3E00FEC3800F01C00F00E00E00E00E00F00E00700E
00780E00780E00780E00780E00780E00780E00700E00F00E00E00F01E00F01C00EC3000E
3E000E00000E00000E00000E00000E00000E00000E00000E0000FFE000151D7F9319>I<
03E0800619801C05803C0780380380780380700380F00380F00380F00380F00380F00380
F003807003807803803803803807801C0B800E138003E380000380000380000380000380
000380000380000380000380003FF8151D7E9318>I<0E78FE8C0F1E0F1E0F0C0E000E00
0E000E000E000E000E000E000E000E000E000E000E000E00FFE00F147F9312>I<1F9030
704030C010C010C010E00078007F803FE00FF00070803880188018C018C018E030D0608F
800D147E9312>I<020002000200060006000E000E003E00FFF80E000E000E000E000E00
0E000E000E000E000E000E000E080E080E080E080E080610031001E00D1C7F9B12>I<0E
01C0FE1FC00E01C00E01C00E01C00E01C00E01C00E01C00E01C00E01C00E01C00E01C00E
01C00E01C00E01C00E01C00E03C00603C0030DC001F1FC16147F9319>I<FF83F81E01E0
1C00C00E00800E00800E008007010007010003820003820003820001C40001C40001EC00
00E80000E80000700000700000700000200015147F9318>I<FF9FE1FC3C0780701C0300
601C0380200E0380400E0380400E03C0400707C0800704C0800704E08003886100038871
0003C8730001D0320001D03A0000F03C0000E01C0000E01C0000601800004008001E147F
9321>I<7FC3FC0F01E00701C007018003810001C20000E40000EC00007800003800003C
00007C00004E000087000107000303800201C00601E01E01E0FF07FE1714809318>I<FF
83F81E01E01C00C00E00800E00800E008007010007010003820003820003820001C40001
C40001EC0000E80000E800007000007000007000002000002000004000004000004000F0
8000F08000F100006200003C0000151D7F9318>I<3FFF380E200E201C40384078407000
E001E001C00380078007010E011E011C0338027006700EFFFE10147F9314>I
E /Ft 46 122 df<00200040008001000300060004000C000C0018001800300030003000
7000600060006000E000E000E000E000E000E000E000E000E000E000E000E000E000E000
6000600060007000300030003000180018000C000C000400060003000100008000400020
0B327CA413>40 D<800040002000100018000C0004000600060003000300018001800180
01C000C000C000C000E000E000E000E000E000E000E000E000E000E000E000E000E000E0
00C000C000C001C0018001800180030003000600060004000C0018001000200040008000
0B327DA413>I<70F8FCFC7404040404080810102040060F7C840E>44
D<FFE0FFE00B027F8B10>I<70F8F8F87005057C840E>I<008003800F80F3800380038003
800380038003800380038003800380038003800380038003800380038003800380038003
8003800380038003800380038007C0FFFE0F217CA018>49 D<03F0000C1C001007002007
804003C04003C08003E0F003E0F801E0F801E0F801E02003E00003E00003C00003C00007
80000700000E00001C0000180000300000600000C0000180000100000200200400200800
201800603000403FFFC07FFFC0FFFFC013217EA018>I<000200000600000E00000E0000
1E00001E00002E00004E00004E00008E00008E00010E00020E00020E00040E00040E0008
0E00100E00100E00200E00200E00400E00800E00FFFFF8000E00000E00000E00000E0000
0E00000E00000E00001F0001FFF015217FA018>52 D<1000801E07001FFF001FFE001FF8
0013E00010000010000010000010000010000010000010F800130E001407001803801003
800001C00001C00001E00001E00001E00001E07001E0F001E0F001E0E001C08001C04003
C04003802007001006000C1C0003F00013227EA018>I<007E0001C1000300800601C00E
03C01C03C0180180380000380000780000700000700000F0F800F30C00F40600F40300F8
0380F801C0F001C0F001E0F001E0F001E0F001E0F001E07001E07001E07001E03801C038
01C01803801C03000C0600070C0001F00013227EA018>I<01F800060E00080300100180
2001802000C06000C06000C06000C07000C07801803E01003F02001FC4000FF80003F800
03FC00067F00083F80100F803007C06001C06000E0C000E0C00060C00060C00060C00060
6000406000C03000801803000E0E0003F00013227EA018>56 D<01F000060C000C060018
0700380380700380700380F001C0F001C0F001C0F001E0F001E0F001E0F001E0F001E070
01E07003E03803E01805E00C05E00619E003E1E00001C00001C00001C000038000038030
0300780700780600700C002018001030000FC00013227EA018>I<000180000001800000
0180000003C0000003C0000003C0000005E0000005E000000DF0000008F0000008F00000
10F800001078000010780000203C0000203C0000203C0000401E0000401E0000401E0000
800F0000800F0000FFFF000100078001000780030007C0020003C0020003C0040003E004
0001E0040001E00C0000F00C0000F03E0001F8FF800FFF20237EA225>65
D<0007E0100038183000E0063001C00170038000F0070000F00E0000701E0000701C0000
303C0000303C0000307C0000107800001078000010F8000000F8000000F8000000F80000
00F8000000F8000000F8000000F800000078000000780000107C0000103C0000103C0000
101C0000201E0000200E000040070000400380008001C0010000E0020000381C000007E0
001C247DA223>67 D<FFFFF0000F801E0007800700078003C0078001C0078000E0078000
F007800078078000780780007C0780003C0780003C0780003C0780003E0780003E078000
3E0780003E0780003E0780003E0780003E0780003E0780003E0780003C0780003C078000
7C0780007807800078078000F0078000E0078001E0078003C0078007000F801E00FFFFF8
001F227EA125>I<FFFFFFC00F8007C0078001C0078000C0078000400780004007800060
07800020078000200780002007802020078020000780200007802000078060000780E000
07FFE0000780E00007806000078020000780200007802000078020080780000807800008
078000100780001007800010078000300780003007800070078000E00F8003E0FFFFFFE0
1D227EA121>I<FFFFFFC00F8007C0078001C0078000C007800040078000400780006007
800020078000200780002007802020078020000780200007802000078060000780E00007
FFE0000780E0000780600007802000078020000780200007802000078000000780000007
8000000780000007800000078000000780000007800000078000000FC00000FFFE00001B
227EA120>I<FFFC3FFF0FC003F0078001E0078001E0078001E0078001E0078001E00780
01E0078001E0078001E0078001E0078001E0078001E0078001E0078001E0078001E007FF
FFE0078001E0078001E0078001E0078001E0078001E0078001E0078001E0078001E00780
01E0078001E0078001E0078001E0078001E0078001E0078001E00FC003F0FFFC3FFF2022
7EA125>72 D<FFFC0FC00780078007800780078007800780078007800780078007800780
078007800780078007800780078007800780078007800780078007800780078007800FC0
FFFC0E227EA112>I<FFC00003FF0FC00003F007C00003E005E00005E005E00005E004F0
0009E004F00009E004F00009E004780011E004780011E004780011E0043C0021E0043C00
21E0043C0021E0041E0041E0041E0041E0040F0081E0040F0081E0040F0081E004078101
E004078101E004078101E00403C201E00403C201E00401E401E00401E401E00401E401E0
0400F801E00400F801E00400F801E004007001E00E007001E01F007003F0FFE0203FFF28
227EA12D>77 D<FF8007FF07C000F807C0007005E0002004F0002004F000200478002004
7C0020043C0020041E0020041F0020040F002004078020040780200403C0200401E02004
01E0200400F0200400F8200400782004003C2004003E2004001E2004000F2004000F2004
0007A0040003E0040003E0040001E0040001E0040000E00E0000601F000060FFE0002020
227EA125>I<FFFFF0000F803C0007800F0007800780078007C0078003C0078003E00780
03E0078003E0078003E0078003E0078003E0078003C0078007C00780078007800F000780
3C0007FFF000078000000780000007800000078000000780000007800000078000000780
00000780000007800000078000000780000007800000078000000FC00000FFFC00001B22
7EA121>80 D<FFFFE000000F803C000007800E00000780078000078007C000078003C000
078003E000078003E000078003E000078003E000078003E000078003C000078007C00007
8007800007800E000007803C000007FFE000000780700000078038000007801C00000780
1E000007800E000007800F000007800F000007800F000007800F000007800F800007800F
800007800F800007800F808007800FC080078007C0800FC003C100FFFC01E2000000007C
0021237EA124>82 D<03F0200C0C601802603001E07000E0600060E00060E00060E00020
E00020E00020F00000F000007800007F00003FF0001FFE000FFF0003FF80003FC00007E0
0001E00000F00000F0000070800070800070800070800070C00060C00060E000C0F000C0
C80180C6070081FC0014247DA21B>I<7FFFFFF878078078600780184007800840078008
40078008C007800C80078004800780048007800480078004000780000007800000078000
000780000007800000078000000780000007800000078000000780000007800000078000
000780000007800000078000000780000007800000078000000780000007800000078000
000FC00003FFFF001E227EA123>I<0FE0001838003C0C003C0E00180700000700000700
00070000FF0007C7001E07003C0700780700700700F00708F00708F00708F00F08781708
3C23900FC1E015157E9418>97 D<0E0000FE00001E00000E00000E00000E00000E00000E
00000E00000E00000E00000E00000E00000E00000E1F000E61C00E80600F00300E00380E
003C0E001C0E001E0E001E0E001E0E001E0E001E0E001E0E001E0E001C0E003C0E00380F
00700C80600C41C0083F0017237FA21B>I<01FE000703000C07801C0780380300780000
700000F00000F00000F00000F00000F00000F00000F000007000007800403800401C0080
0C010007060001F80012157E9416>I<0000E0000FE00001E00000E00000E00000E00000
E00000E00000E00000E00000E00000E00000E00000E001F8E00704E00C02E01C01E03800
E07800E07000E0F000E0F000E0F000E0F000E0F000E0F000E0F000E07000E07800E03800
E01801E00C02E0070CF001F0FE17237EA21B>I<01FC000707000C03801C01C03801C078
01E07000E0F000E0FFFFE0F00000F00000F00000F00000F000007000007800203800201C
00400E008007030000FC0013157F9416>I<003C00C6018F038F030F0700070007000700
07000700070007000700FFF8070007000700070007000700070007000700070007000700
07000700070007000700070007807FF8102380A20F>I<00007001F198071E180E0E181C
07001C07003C07803C07803C07803C07801C07001C07000E0E000F1C0019F00010000010
00001800001800001FFE000FFFC00FFFE03800F0600030400018C00018C00018C0001860
00306000303800E00E038003FE0015217F9518>I<0E0000FE00001E00000E00000E0000
0E00000E00000E00000E00000E00000E00000E00000E00000E00000E1F800E60C00E80E0
0F00700F00700E00700E00700E00700E00700E00700E00700E00700E00700E00700E0070
0E00700E00700E00700E00700E0070FFE7FF18237FA21B>I<1C001E003E001E001C0000
0000000000000000000000000000000E00FE001E000E000E000E000E000E000E000E000E
000E000E000E000E000E000E000E000E000E00FFC00A227FA10E>I<01C003E003E003E0
01C00000000000000000000000000000000001E00FE001E000E000E000E000E000E000E0
00E000E000E000E000E000E000E000E000E000E000E000E000E000E000E000E000E060E0
F0C0F18061803E000B2C82A10F>I<0E0000FE00001E00000E00000E00000E00000E0000
0E00000E00000E00000E00000E00000E00000E00000E03FC0E01F00E01C00E01800E0200
0E04000E08000E10000E38000EF8000F1C000E1E000E0E000E07000E07800E03C00E01C0
0E01E00E00F00E00F8FFE3FE17237FA21A>I<0E1FC07F00FE60E183801E807201C00F00
3C00E00F003C00E00E003800E00E003800E00E003800E00E003800E00E003800E00E0038
00E00E003800E00E003800E00E003800E00E003800E00E003800E00E003800E00E003800
E00E003800E00E003800E0FFE3FF8FFE27157F942A>109 D<0E1F80FE60C01E80E00F00
700F00700E00700E00700E00700E00700E00700E00700E00700E00700E00700E00700E00
700E00700E00700E00700E0070FFE7FF18157F941B>I<01FC000707000C01801800C038
00E0700070700070F00078F00078F00078F00078F00078F00078F000787000707800F038
00E01C01C00E038007070001FC0015157F9418>I<0E1F00FE61C00E80600F00700E0038
0E003C0E001C0E001E0E001E0E001E0E001E0E001E0E001E0E001E0E003C0E003C0E0038
0F00700E80E00E41C00E3F000E00000E00000E00000E00000E00000E00000E00000E0000
0E0000FFE000171F7F941B>I<0E3CFE461E8F0F0F0F060F000E000E000E000E000E000E
000E000E000E000E000E000E000E000F00FFF010157F9413>114
D<0F8830786018C018C008C008E008F0007F803FE00FF001F8003C801C800C800CC00CC0
08E018D0308FC00E157E9413>I<02000200020002000600060006000E001E003E00FFF8
0E000E000E000E000E000E000E000E000E000E000E000E040E040E040E040E040E040708
030801F00E1F7F9E13>I<0E0070FE07F01E00F00E00700E00700E00700E00700E00700E
00700E00700E00700E00700E00700E00700E00700E00700E00F00E00F006017003827800
FC7F18157F941B>I<FF8FF8FF1E01E03C1C01C0180E01C0180E01E0100E01E010070260
20070270200702702003843040038438400384384001C8188001C81C8001C81C8000F00D
0000F00F0000F00F0000600600006006000060060020157F9423>119
D<FFC1FE1E00780E00300E00200E002007004007004003808003808003808001C10001C1
0000E20000E20000E2000074000074000038000038000038000010000010000020000020
00002000004000F04000F08000F180004300003C0000171F7F941A>121
D E /Fu 20 118 df<FFFF80FFFF80FFFF8011037F9016>45 D<FFFFFFE00000FFFFFFFC
000007E0007F000003E0000F800003E00003C00003E00001E00003E00000F00003E00000
780003E000003C0003E000001E0003E000001E0003E000000F0003E000000F0003E00000
0F8003E00000078003E0000007C003E0000007C003E0000003C003E0000003C003E00000
03E003E0000003E003E0000003E003E0000003E003E0000003E003E0000003E003E00000
03E003E0000003E003E0000003E003E0000003E003E0000003E003E0000003C003E00000
03C003E0000007C003E0000007C003E00000078003E00000078003E000000F8003E00000
0F0003E000001F0003E000001E0003E000003C0003E00000780003E00000F80003E00001
F00003E00003E00003E0000F800007E0003F0000FFFFFFFC0000FFFFFFE000002B317CB0
33>68 D<FFFF80FFFF8007F00003E00003E00003E00003E00003E00003E00003E00003E0
0003E00003E00003E00003E00003E00003E00003E00003E00003E00003E00003E00003E0
0003E00003E00003E00003E00003E00003E00003E00003E00003E00003E00003E00003E0
0003E00003E00003E00003E00003E00003E00003E00003E00003E00003E00003E00007F0
00FFFF80FFFF8011317DB017>73 D<FFF00000007FF8FFF00000007FF807F00000007F00
02F8000000BE0002F8000000BE0002F8000000BE00027C0000013E00027C0000013E0002
3E0000023E00023E0000023E00023E0000023E00021F0000043E00021F0000043E00021F
0000043E00020F8000083E00020F8000083E00020F8000083E000207C000103E000207C0
00103E000207C000103E000203E000203E000203E000203E000201F000403E000201F000
403E000201F000403E000200F800803E000200F800803E000200F800803E0002007C0100
3E0002007C01003E0002007C01003E0002003E02003E0002003E02003E0002003E02003E
0002001F04003E0002001F04003E0002000F88003E0002000F88003E0002000F88003E00
020007D0003E00020007D0003E00020007D0003E00020003E0003E00020003E0003E0002
0003E0003E00070001C0003E000F8001C0007F00FFF801C00FFFF8FFF800800FFFF83531
7CB03D>77 D<FFFFFFC000FFFFFFF80007E0007E0003E0001F0003E000078003E00003C0
03E00001E003E00001F003E00001F003E00000F003E00000F803E00000F803E00000F803
E00000F803E00000F803E00000F803E00000F003E00001F003E00001E003E00003E003E0
0003C003E000078003E0001F0003E0007C0003FFFFF00003E000000003E000000003E000
000003E000000003E000000003E000000003E000000003E000000003E000000003E00000
0003E000000003E000000003E000000003E000000003E000000003E000000003E0000000
03E000000003E000000003E000000003E000000007F0000000FFFF800000FFFF80000025
317CB02D>80 D<007F802001FFE02007C078600F001C601E0006E03C0003E0380001E078
0000E0700000E070000060F0000060F0000060F0000020F0000020F0000020F8000020F8
0000007C0000007E0000003F0000003FC000001FF800000FFF800007FFF80003FFFC0000
FFFF00000FFF800000FFC000001FE0000007E0000003F0000001F0000000F0000000F800
0000F88000007880000078800000788000007880000078C0000078C0000070E00000F0E0
0000E0F00000E0F80001C0EC000380C7000700C1F01E00807FFC00800FF0001D337CB125
>83 D<00FE00000303C0000C00E00010007000100038003C003C003E001C003E001E003E
001E0008001E0000001E0000001E0000001E00000FFE0000FC1E0003E01E000F801E001F
001E003E001E003C001E007C001E00F8001E04F8001E04F8001E04F8003E04F8003E0478
003E047C005E043E008F080F0307F003FC03E01E1F7D9E21>97 D<003F8000E060038018
0700040F00041E001E1C003E3C003E7C003E7C0008780000F80000F80000F80000F80000
F80000F80000F80000F80000F800007800007C00007C00003C00011E00011E00020F0002
07000403801800E060003F80181F7D9E1D>99 D<000001E000003FE000003FE0000003E0
000001E0000001E0000001E0000001E0000001E0000001E0000001E0000001E0000001E0
000001E0000001E0000001E0000001E0000001E0000001E0001F81E000F061E001C019E0
078005E00F0003E00E0003E01E0001E03C0001E03C0001E07C0001E0780001E0F80001E0
F80001E0F80001E0F80001E0F80001E0F80001E0F80001E0F80001E0F80001E0780001E0
780001E03C0001E03C0001E01C0001E01E0003E00E0005E0070009E0038011F000E061FF
003F81FF20327DB125>I<003F800000E0E0000380380007003C000E001E001E001E001C
000F003C000F007C000F0078000F8078000780F8000780F8000780FFFFFF80F8000000F8
000000F8000000F8000000F8000000F8000000780000007C0000003C0000003C0000801E
0000800E0001000F0002000780020001C00C0000F03000001FC000191F7E9E1D>I<0007
E0001C1000383800707C00E07C01E07C01C03803C00003C00003C00003C00003C00003C0
0003C00003C00003C00003C00003C00003C000FFFFC0FFFFC003C00003C00003C00003C0
0003C00003C00003C00003C00003C00003C00003C00003C00003C00003C00003C00003C0
0003C00003C00003C00003C00003C00003C00003C00003C00003C00003C00007E0007FFF
007FFF0016327FB114>I<000000F0007F030801C1C41C0380E81C070070080F0078001E
003C001E003C003E003E003E003E003E003E003E003E003E003E003E003E001E003C001E
003C000F007800070070000780E00009C1C000087F000018000000180000001800000018
000000180000001C0000000E0000000FFFF80007FFFF0003FFFF800E000FC0180001E030
0000F070000070E0000038E0000038E0000038E0000038E0000038700000707000007038
0000E01C0001C00700070001C01C00003FE0001E2F7E9F21>I<07000F801F801F800F80
0700000000000000000000000000000000000000000000000780FF80FF800F8007800780
078007800780078007800780078007800780078007800780078007800780078007800780
07800780078007800FC0FFF8FFF80D307EAF12>105 D<0780FE001FC000FF83078060F0
00FF8C03C18078000F9001E2003C0007A001E4003C0007A000F4001E0007C000F8001E00
07C000F8001E00078000F0001E00078000F0001E00078000F0001E00078000F0001E0007
8000F0001E00078000F0001E00078000F0001E00078000F0001E00078000F0001E000780
00F0001E00078000F0001E00078000F0001E00078000F0001E00078000F0001E00078000
F0001E00078000F0001E00078000F0001E00078000F0001E00078000F0001E00078000F0
001E000FC001F8003F00FFFC1FFF83FFF0FFFC1FFF83FFF0341F7E9E38>109
D<0780FE0000FF83078000FF8C03C0000F9001E00007A001E00007A000F00007C000F000
07C000F000078000F000078000F000078000F000078000F000078000F000078000F00007
8000F000078000F000078000F000078000F000078000F000078000F000078000F0000780
00F000078000F000078000F000078000F000078000F000078000F000078000F0000FC001
F800FFFC1FFF80FFFC1FFF80211F7E9E25>I<001FC00000F0780001C01C00070007000F
0007801E0003C01C0001C03C0001E03C0001E0780000F0780000F0780000F0F80000F8F8
0000F8F80000F8F80000F8F80000F8F80000F8F80000F8F80000F8780000F07C0001F03C
0001E03C0001E01E0003C01E0003C00F00078007800F0001C01C0000F07800001FC0001D
1F7E9E21>I<0783E0FF8C18FF907C0F907C07A07C07C03807C00007C00007C000078000
078000078000078000078000078000078000078000078000078000078000078000078000
0780000780000780000780000780000780000FC000FFFE00FFFE00161F7E9E19>114
D<01FC100E03301800F0300070600030E00030E00010E00010E00010F00010F800007E00
003FF0001FFF000FFFC003FFE0003FF00001F80000F880003C80003C80001CC0001CC000
1CE0001CE00018F00038F00030CC0060C301C080FE00161F7E9E1A>I<00400000400000
400000400000400000C00000C00000C00001C00001C00003C00007C0000FC0001FFFE0FF
FFE003C00003C00003C00003C00003C00003C00003C00003C00003C00003C00003C00003
C00003C00003C00003C00003C00003C01003C01003C01003C01003C01003C01003C01003
C01001C02001E02000E0400078C0001F00142C7FAB19>I<078000F000FF801FF000FF80
1FF0000F8001F000078000F000078000F000078000F000078000F000078000F000078000
F000078000F000078000F000078000F000078000F000078000F000078000F000078000F0
00078000F000078000F000078000F000078000F000078000F000078000F000078001F000
078001F000078001F000038002F00003C004F00001C008F800007030FF80001FC0FF8021
1F7E9E25>I E /Fv 5 85 df<00000000C00000000000E00000000001E00000000003E0
0000000003E00000000007E00000000007E0000000000FE0000000000FE0000000001FE0
000000001FE00000000037E00000000067E00000000067E000000000C7E000000000C7F0
0000000183F00000000183F00000000303F00000000703F00000000603F00000000C03F0
0000000C03F00000001803F00000001803F00000003003F00000003003F00000006003F0
000000C003F0000000C003F00000018003F00000018003F8000003FFFFF8000003FFFFF8
0000060001F800000E0001F800000C0001F80000180001F80000180001F80000300001F8
0000300001F80000600001F80000E00001F80000C00001F80001C00001F80001C00001F8
0007C00001FC001FC00003FC00FFF8007FFFE0FFF8007FFFE02B327BB135>65
D<000FFFFFFE0000000FFFFFFF800000007F000FE00000007E0003F00000007E0000F800
00007E0000FC0000007E00007C000000FC00003E000000FC00003E000000FC00003F0000
00FC00001F000001F800001F000001F800001F800001F800001F800001F800001F800003
F000001F800003F000001F800003F000001F800003F000001F800007E000003F800007E0
00003F800007E000003F800007E000003F80000FC000003F00000FC000007F00000FC000
007F00000FC000007F00001F8000007E00001F800000FE00001F800000FE00001F800000
FC00003F000001FC00003F000001F800003F000001F800003F000003F000007E000003E0
00007E000007E000007E00000FC000007E00000F800000FC00001F800000FC00003F0000
00FC00007E000000FC0000FC000001F80001F0000001F80003E0000001F8000FC0000003
F8007F000000FFFFFFFC000000FFFFFFE000000031317BB036>68
D<000FFFFFFFFC000FFFFFFFFC00007F0001FC00007E00007C00007E00003C00007E0000
3C00007E0000180000FC0000180000FC0000180000FC0000180000FC0000180001F80000
180001F80000180001F80000180001F80000180003F00080100003F00180000003F00180
000003F00180000007E00300000007E00300000007E00700000007E01F0000000FFFFE00
00000FFFFE0000000FC01E0000000FC00E0000001F800C0000001F800C0000001F800C00
00001F800C0000003F00180000003F00080000003F00000000003F00000000007E000000
00007E00000000007E00000000007E0000000000FC0000000000FC0000000000FC000000
0000FC0000000001F80000000001F80000000001F80000000003F800000000FFFFF00000
00FFFFF00000002E317BB02F>70 D<000FFFFFF000000FFFFFFE0000007F003F8000007E
000FC000007E0007E000007E0003F000007E0001F80000FC0001F80000FC0001F80000FC
0001F80000FC0001F80001F80003F80001F80003F80001F80003F80001F80003F00003F0
0007F00003F00007E00003F0000FC00003F0000FC00007E0001F000007E0007E000007E0
00FC000007E007F000000FFFFFC000000FFFFF0000000FC00F8000000FC003C000001F80
03E000001F8001F000001F8001F000001F8001F800003F0001F800003F0001F800003F00
01F800003F0001F800007E0003F800007E0003F800007E0003F000007E0003F00000FC00
07F00000FC0007F00000FC0007F00800FC0007F00C01F80007F01801F80007F01801F800
03F03003F80003F030FFFFE001F0E0FFFFE000FFC0000000003F002E327BB034>82
D<07FFFFFFFFF00FFFFFFFFFF00FC00FE003F01E000FC000F01C000FC000E018000FC000
E038000FC0006030001F8000E030001F8000E060001F8000C060001F8000C060003F0000
C0C0003F0000C0C0003F0000C0C0003F0000C080007E00008000007E00000000007E0000
0000007E0000000000FC0000000000FC0000000000FC0000000000FC0000000001F80000
000001F80000000001F80000000001F80000000003F00000000003F00000000003F00000
000003F00000000007E00000000007E00000000007E00000000007E0000000000FC00000
00000FC0000000000FC0000000000FC0000000001F80000000001F80000000001F800000
00001F80000000003F00000000003F00000000003F0000000000FF00000000FFFFFF0000
00FFFFFF0000002C3173B033>84 D E end
%%EndProlog
%%BeginSetup
%%Feature: *Resolution 300dpi
TeXDict begin

%%EndSetup
%%Page: 0 1
0 0 bop 795 947 a Fv(D)26 b(R)g(A)f(F)h(T)225 1038 y
Fu(Do)r(cumen)n(t)20 b(for)i(a)f(Standard)g(Message-P)n(assing)f(In)n
(terface)621 1232 y Ft(Message)c(P)o(assing)h(In)o(terface)e(F)l(orum)
766 1359 y(Septem)o(b)q(er)g(19,)h(1996)190 1417 y(This)h(w)o(ork)f(w)o
(as)h(supp)q(orted)g(in)f(part)g(b)o(y)g(NSF)g(and)h(ARP)l(A)e(under)h
(NSF)g(con)o(tract)283 1475 y(CD)o(A-9115428)j(and)e(Esprit)f(under)h
(pro)s(ject)e(HPC)i(Standards)g(\(21111\).)p eop
%%Page: 1 2
1 1 bop 166 45 a Fs(This)20 b(is)h(the)f(result)g(of)f(a)h(LaT)l(eX)g
(run)g(of)g(a)f(draft)g(of)h(a)f(single)j(c)o(hapter)d(of)h(the)g(MPIF)
f(Final)75 102 y(Rep)q(ort)d(do)q(cumen)o(t.)969 2828
y(i)p eop
%%Page: 1 3
1 2 bop 75 356 a Fr(Chapter)34 b(10)75 564 y Fq(Miscellan)m(y)75
786 y Fs(There)12 b(are)g(a)g(n)o(um)o(b)q(er)g(of)g(topics)g(that)f
(do)h(not)g(\014t)g(con)o(v)o(enien)o(tly)h(in)o(to)f(the)g(other)g(c)o
(hapters.)19 b(W)l(e)12 b(collect)75 843 y(them)j(here.)75
986 y Fp(10.1)59 b(P)n(o)n(rtable)20 b(MPI)g(Pro)r(cess)f(Sta)n(rtup)75
1135 y Fo(Curren)o(t)14 b(Status:)j Fn(P)o(assed)e(once.)166
1239 y Fs(A)f(n)o(um)o(b)q(er)g(of)f(implemen)o(tations)i(of)e(MPI-1)g
(pro)o(vide)i(a)e(startup)g(command)g(for)h(MPI)f(programs)75
1295 y(that)h(is)i(of)f(the)g(form)170 1389 y Fm(mpirun)23
b(<mpirun)g(arguments>)g(<program>)g(<program)f(arguments>)75
1483 y Fs(Separating)16 b(the)g(command)g(to)g(start)f(the)h(program)f
(from)g(the)h(program)f(itself)i(pro)o(vides)g(\015exibilit)o(y)l(,)75
1539 y(particularly)23 b(for)e(net)o(w)o(ork)g(and)h(heterogeneous)g
(implemen)o(tations.)41 b(F)l(or)21 b(example,)j(the)e(startup)75
1596 y(script)16 b(need)g(not)f(run)g(on)g(one)g(of)g(the)g(mac)o
(hines)h(that)f(will)i(b)q(e)f(executing)g(the)f(MPI)g(program)f
(itself.)166 1652 y(Ha)o(ving)i(a)f(standard)h(startup)f(mec)o(hanism)i
(also)e(extends)i(the)f(p)q(ortabilit)o(y)h(of)e(F)l(ortran,)f(C,)i
(and)75 1708 y(C++)f(programs)f(one)g(step)h(further,)f(to)g(the)h
(command)g(lines)h(and)f(scripts)g(that)f(manage)g(them.)20
b(F)l(or)75 1765 y(example,)c(a)f(v)m(alidation)i(suite)f(script)g
(that)e(runs)i(h)o(undreds)g(of)f(programs)f(can)i(b)q(e)g(a)f(p)q
(ortable)h(script)75 1821 y(if)f(it)f(is)g(written)g(using)h
Fm(mpirun)p Fs(.)k(In)c(order)e(that)h(the)g(\\statndard")f(command)h
(not)f(b)q(e)i(confused)g(with)p Fl(>)h Fk(\(Oct\))75
1878 y Fs(existing)h(practice,)f(whic)o(h)h(is)f(not)g(standard)f(and)h
(not)g(p)q(ortable)g(among)f(implemen)o(tations,)i(instead)75
1934 y(of)e Fm(mpirun)f Fs(w)o(e)h(sp)q(ecify)i Fm(mpiexec)p
Fs(.)1191 b Fl(?)16 b Fk(\(Oct\))166 1991 y Fs(It)f(is)h(prop)q(osed)f
(that)170 2085 y Fm(mpiexec)23 b(-n)h(<numprocs>)e(<program>)75
2178 y Fs(b)q(e)c(at)f(least)g(one)g(w)o(a)o(y)g(to)f(start)g
Fm(<program>)g Fs(with)i(an)f(initial)j Fj(MPI)p 1275
2178 14 2 v 15 w(COMM)p 1432 2178 V 17 w(W)o(ORLD)d Fs(whose)g(group)75
2235 y(con)o(tains)22 b Fm(<numprocs>)f Fs(pro)q(cesses.)42
b(Other)22 b(argumen)o(ts)g(to)g Fm(mpiexec)f Fs(ma)o(y)h(b)q(e)h
(implemen)o(tation-)75 2291 y(dep)q(enden)o(t.)166 2348
y(Curren)o(tly)14 b(this)g(is)g(prop)q(osed)g(as)f(advice)h(to)f
(implemen)o(tors,)i(rather)e(than)g(as)g(a)h(required)g(part)f(of)75
2404 y(MPI-2.)20 b(It)15 b(is)h(not)e(suggested)i(that)e(this)i(b)q(e)g
(the)f(only)h(w)o(a)o(y)e(to)g(start)g(MPI)h(programs.)189
2510 y Fi(A)n(dvic)n(e)c(to)j(implementors.)37 b Fs(Implemen)o(tors,)12
b(if)g(they)g(do)f(pro)o(vide)h(a)f(sp)q(ecial)i(startup)e(command)189
2567 y(for)j(MPI)i(programs,)e(are)h(advised)h(to)f(giv)o(e)g(it)h(the)
g(follo)o(wing)g(form.)j(The)d(syn)o(tax)f(is)g(c)o(hosen)h(in)189
2623 y(order)g(that)g Fm(mpiexec)g Fs(b)q(e)i(able)f(to)f(b)q(e)i(view)
o(ed)f(as)g(a)f(command-line)j(v)o(ersion)e(of)f Fj(MPI)p
1711 2623 V 16 w(SP)l(A)-5 b(WN)189 2680 y Fs(\(See)15
b(Section)h Fh(??)p Fs(\).)964 2828 y(1)p eop
%%Page: 2 4
2 3 bop 75 -100 a Fs(2)1133 b Fg(CHAPTER)15 b(10.)35
b(MISCELLANY)284 45 y Fm(mpiexec)23 b(-n)95 b(<maxprocs>)451
102 y(-soft)47 b(<)191 b(>)451 158 y(-host)47 b(<)191
b(>)451 214 y(-arch)47 b(<)191 b(>)451 271 y(-wdir)47
b(<)191 b(>)451 327 y(-path)47 b(<)191 b(>)451 384 y(-file)47
b(<)191 b(>)475 440 y(...)451 497 y(<command)23 b(line>)189
585 y Fs(for)9 b(the)i(case)f(where)g(a)g(single)i(command)e(line)i
(for)e(the)g(application)i(program)d(and)h(its)h(argumen)o(ts)189
641 y(will)23 b(su\016ce.)41 b(F)l(or)22 b(the)g(case)g(corresp)q
(onding)h(to)f Fj(MPI)p 1180 641 14 2 v 16 w(SP)l(A)-5
b(WN)p 1346 641 V 17 w(MUL)l(TIPLE)21 b Fs(there)h(are)g(t)o(w)o(o)189
698 y(p)q(ossible)17 b(formats:)189 769 y(F)l(orm)d(A:)284
861 y Fm(mpiexec)23 b({)h(<above)f(arguments>)f(})i(:)g({)f(...)h(})g
(:)f({)h(...)g(})f(:)h(...)f(:)h({)g(...)f(})189 953
y Fs(As)17 b(with)g Fj(MPI)p 448 953 V 16 w(SP)l(A)-5
b(WN)p Fs(,)18 b(all)g(the)f(argumen)o(ts)f(are)h(optional.)26
b(\(Ev)o(en)17 b(the)h Fm(-n)23 b(x)41 b Fs(argumen)o(t)16
b(is)189 1009 y(optional;)h(the)f(default)h(is)g(implemen)o(tation)h
(dep)q(enden)o(t.)25 b(It)17 b(migh)o(t)f(b)q(e)h Fm(1)p
Fs(,)f(it)h(migh)o(t)f(b)q(e)h(tak)o(en)189 1066 y(from)11
b(an)i(en)o(vironmen)o(t)g(v)m(ariable,)h(or)e(it)g(migh)o(t)h(b)q(e)g
(sp)q(eci\014ed)h(at)e(compile)i(time\).)19 b(The)13
b(names)f(of)189 1122 y(the)k(argumen)o(ts)e(are)i(tak)o(en)f(from)g
(the)h(k)o(eys)g(in)g(the)g Fm(info)f Fs(argumen)o(t)g(to)h
Fj(MPI)p 1567 1122 V 15 w(SP)l(A)-5 b(WN)p Fs(.)17 b(There)189
1179 y(ma)o(y)d(b)q(e)i(other,)e(implemen)o(tation-dep)q(end)q(en)o(t)k
(argumen)o(ts)c(as)h(w)o(ell.)189 1250 y(Note)k(that)g(F)l(orm)f(A,)h
(though)h(con)o(v)o(enien)o(t)g(to)f(t)o(yp)q(e,)h(prev)o(en)o
(tscolons)g(from)e(b)q(eing)j(program)189 1306 y(argumen)o(ts.)e
(Therefore)c(and)g(alternate,)g(\014le-based)i(form)d(is)i(allo)o(w)o
(ed:)189 1377 y(F)l(orm)e(B:)284 1470 y Fm(mpiexec)23
b(-runfile)g(<filename>)189 1562 y Fs(where)15 b(the)g(lines)i(of)e
Ff(<)p Fs(\014lename)p Ff(>)i Fs(are)e(of)g(the)g(form)f(separated)h(b)
o(y)g(the)h(colons)f(in)h(F)l(orm)f(A.)189 1633 y(\()p
Fi(End)g(of)i(advic)n(e)f(to)g(implementors.)p Fs(\))75
1710 y Fh(Example)i(10.1)23 b Fi(Start)16 b(16)h(instanc)n(es)d(of)i
Fm(myprog)g Fi(on)g(the)g(curr)n(ent)h(or)f(default)h(machine:)170
1784 y Fm(mpiexec)23 b(-n)h(16)g(myprog)75 1861 y Fh(Example)18
b(10.2)23 b Fi(Start)16 b(10)h(pr)n(o)n(c)n(esses)d(on)i(the)h(machine)
f(c)n(al)r(le)n(d)f Fm(ferrari)p Fi(:)170 1935 y Fm(mpiexec)23
b(-n)h(10)g(-host)f(ferrari)g(myprog)75 2012 y Fh(Example)18
b(10.3)23 b Fi(Start)11 b(the)h Fm(ocean)f Fi(pr)n(o)n(gr)n(am)h(on)f
(\014ve)g(suns)g(and)h(the)f Fm(atmos)g Fi(pr)n(o)n(gr)n(am)h(on)g(10)g
(RS/6000's:)170 2086 y Fm(mpiexec)23 b(-n)h(5)g(-arch)f(sun)g(ocean)g
(:)h(-n)g(10)f(-arch)h(rs6000)f(atmos)75 2163 y Fh(Example)18
b(10.4)23 b Fi(Start)17 b(thr)n(e)n(e)h(c)n(opies)f(of)h(the)g(same)f
(pr)n(o)n(gr)n(am)h(with)g(di\013er)n(ent)f(c)n(ommand-line)g(ar)n(gu-)
75 2220 y(ments:)170 2293 y Fm(mpiexec)23 b(myprog)g(infile1)g(:)h
(myprog)f(infile2)g(:)h(myprog)f(infile3)75 2371 y Fh(Example)18
b(10.5)23 b Fi(Start)11 b(the)h Fm(ocean)f Fi(pr)n(o)n(gr)n(am)h(on)f
(\014ve)g(suns)g(and)h(the)f Fm(atmos)g Fi(pr)n(o)n(gr)n(am)h(on)g(10)g
(RS/6000's)75 2427 y(\(F)m(orm)k(B\):)170 2500 y Fm(mpiexec)23
b(-runfile)g(myfile)75 2574 y Fi(wher)n(e)16 b Fm(myfile)g
Fi(c)n(ontains)170 2647 y Fm(-n)24 b(5)48 b(-arch)23
b(sun)95 b(ocean)170 2704 y(-n)24 b(10)g(-arch)f(rs6000)g(atmos)1967
46 y Fk(1)1967 103 y(2)1967 159 y(3)1967 215 y(4)1967
272 y(5)1967 328 y(6)1967 385 y(7)1967 441 y(8)1967 498
y(9)1959 554 y(10)1959 611 y(11)1959 667 y(12)1959 724
y(13)1959 780 y(14)1959 836 y(15)1959 893 y(16)1959 949
y(17)1959 1006 y(18)1959 1062 y(19)1959 1119 y(20)1959
1175 y(21)1959 1232 y(22)1959 1288 y(23)1959 1345 y(24)1959
1401 y(25)1959 1457 y(26)1959 1514 y(27)1959 1570 y(28)1959
1627 y(29)1959 1683 y(30)1959 1740 y(31)1959 1796 y(32)1959
1853 y(33)1959 1909 y(34)1959 1966 y(35)1959 2022 y(36)1959
2078 y(37)1959 2135 y(38)1959 2191 y(39)1959 2248 y(40)1959
2304 y(41)1959 2361 y(42)1959 2417 y(43)1959 2474 y(44)1959
2530 y(45)1959 2587 y(46)1959 2643 y(47)1959 2699 y(48)p
eop
%%Page: 3 5
3 4 bop 75 -100 a Fg(10.2.)34 b(LANGUA)o(GE)15 b(INTER)o(OPERABILITY)
898 b Fs(3)75 45 y Fp(10.2)59 b(Language)19 b(Interop)r(erabilit)n(y)75
148 y Fe(10.2.1)49 b(Intro)q(duction)75 281 y Fo(Curren)o(t)14
b(Status:)j Fn(P)o(assed)e(once.)166 385 y Fs(It)h(is)h(not)f(uncommon)
h(for)e(library)i(dev)o(elop)q(ers)h(to)e(use)g(one)h(language)f(to)g
(dev)o(elop)h(an)f(applica-)75 441 y(tions)g(library)g(to)f(b)q(e)h
(used)h(b)o(y)e(applications)i(dev)o(elop)q(ers)g(using)f(another)g
(language.)21 b(MPI)15 b(curren)o(tly)75 498 y(supp)q(orts)h(ANSI)g(C,)
f(ANSI)h(C++,)g(and)g(F)l(ortran)e(77)h(bindings.)23
b(It)15 b(should)i(b)q(e)f(p)q(ossible)i(for)c(applica-)75
554 y(tions)h(in)h(an)o(y)f(of)g(the)g(supp)q(orted)h(languages)f(to)g
(call)h(MPI-related)g(functions)g(in)g(another)f(language.)166
611 y(MPI)h(allo)o(ws)h(the)f(dev)o(elopmen)o(t)h(of)f(clien)o(t-serv)o
(er)i(co)q(de,)f(with)g(MPI)f(comm)o(unication)h(used)g(b)q(e-)75
667 y(t)o(w)o(een)d(a)h(parallel)h(clien)o(t)g(and)f(a)g(parallel)h
(serv)o(er.)k(It)14 b(should)i(b)q(e)g(p)q(ossible)g(to)e(co)q(de)i
(the)f(serv)o(er)f(in)i(one)75 724 y(language,)j(and)g(the)f(clien)o
(ts)i(in)f(another)f(language.)30 b(T)l(o)18 b(do)h(so,)f(in)o(tercomm)
o(unications)i(should)f(b)q(e)75 780 y(p)q(ossible)e(b)q(et)o(w)o(een)e
(applications)i(written)e(in)h(an)o(y)f(language.)166
837 y(There)g(are)g(sev)o(eral)h(issues)g(that)e(need)i(to)f(b)q(e)h
(addressed,)f(to)f(ac)o(hiev)o(e)i(in)o(terop)q(erabilit)o(y)l(.)75
930 y Fh(Initializat)q(ion)26 b Fs(W)l(e)12 b(need)h(to)f(sp)q(ecify)i
(ho)o(w)d(is)i(the)f(MPI)g(en)o(vironmen)o(t)h(initialized)i(for)d(all)
h(languages.)75 1024 y Fh(Comm)o(unication)18 b(of)g(MPI)e(opaque)i(ob)
s(jects)23 b Fs(W)l(e)13 b(need)h(to)f(sp)q(ecify)i(ho)o(w)e(are)g(MPI)
g(ob)s(ject)g(han-)189 1081 y(dles)j(passed)g(b)q(et)o(w)o(een)g
(languages.)21 b(W)l(e)16 b(also)f(need)i(to)e(sp)q(ecify)i(what)e
(happ)q(ens)h(when)g(an)g(MPI)189 1137 y(ob)s(ject)k(is)i(accessed)g
(in)g(one)f(language,)i(to)d(retriev)o(e)i(information)f(set)g(with)h
(this)f(ob)s(ject)g(in)189 1194 y(another)14 b(language.)75
1287 y Fh(In)o(terlanguage)k(comm)o(unication)24 b Fs(W)l(e)18
b(need)g(to)e(sp)q(ecify)i(ho)o(w)f(messages)g(sen)o(t)g(in)g(one)h
(language)189 1344 y(can)d(b)q(e)h(receiv)o(ed)g(in)g(another)f
(language.)166 1438 y(It)f(is)h(highly)h(desirable)g(that)d(the)i
(solution)g(for)f(in)o(terlanguage)h(in)o(terop)q(erabilit)o(y)h(b)q(e)
f(extendable)75 1494 y(to)g(new)g(languages,)g(should)h(MPI)f(bindings)
i(b)q(e)f(de\014ned)h(for)d(suc)o(h)i(languages.)75 1616
y Fe(10.2.2)49 b(Assumptions)1875 1655 y Fl(>)16 b Fk(\(Oct\))75
1702 y Fs(W)l(e)g(assume)g(that)f(con)o(v)o(en)o(tions)h(exist)h(for)e
(MPI)h(programs)f(to)g(call)i(functions)g(in)g(MPI)f(programs)e(of)75
1758 y(another)e(language.)19 b(These)13 b(con)o(v)o(en)o(tions)f(sp)q
(ecify)i(ho)o(w)e(to)f(link)j(routines)f(in)g(di\013eren)o(t)g
(langauges)f(in)o(to)75 1815 y(one)j(program,)e(ho)o(w)g(to)h(call)i
(functions)f(in)g(a)f(di\013eren)o(t)h(language,)f(ho)o(w)g(to)g(pass)g
(argumen)o(ts)g(b)q(et)o(w)o(een)75 1871 y(languages,)23
b(and)f(the)f(corresp)q(ondence)i(b)q(et)o(w)o(een)f(basic)h(data)d(t)o
(yp)q(es)i(of)f(di\013eren)o(t)h(languages.)39 b(In)75
1928 y(general,)18 b(these)f(con)o(v)o(en)o(tions)g(will)i(b)q(e)e
(implemen)o(tation)i(dep)q(enden)o(t)f(\(ho)o(w)o(ev)o(er,)e(this)h(is)
h(an)f(ongoing)75 1984 y(e\013ort)11 b(to)g(standardize)i(a)e(C)h
(calling)i(in)o(terface)e(in)g(F)l(ortran\).)18 b(F)l(urthernote,)12
b(not)f(ev)o(ery)h(basic)g(datat)o(yp)q(e)75 2040 y(ma)o(y)h(ha)o(v)o
(e)h(a)g(matc)o(hing)g(t)o(yp)q(e)g(in)h(other)e(languages.)20
b(F)l(or)14 b(example,)g(C/C++)g(c)o(haracter)g(strings)g(ma)o(y)75
2097 y(not)i(b)q(e)h(compatible)g(with)g(F)l(ortran)e
Fm(CHARACTER)f Fs(v)m(ariables.)25 b(Ho)o(w)o(ev)o(er,)15
b(w)o(e)h(assume)g(that)f(a)h(F)l(ortran)75 2153 y Fm(INTEGER)c
Fs(can)g(b)q(e)h(passed)g(to)f(a)g(C)h(or)f(C++)h(program.)18
b(W)l(e)12 b(also)h(assume)f(that)g(F)l(ortran,)g(C,)g(and)g(C++)75
2210 y(ha)o(v)o(e)j(address)g(sized)h(in)o(tegers.)1256
b Fl(?)16 b Fk(\(Oct\))75 2332 y Fe(10.2.3)49 b(Initializatio)q(n)75
2465 y Fo(Curren)o(t)14 b(Status:)j Fn(P)o(assed)e(once.)166
2568 y Fs(A)k(call)h(to)f Fm(MPI)p 441 2568 15 2 v 16
w(INIT\(\))p Fs(,)g(from)f(either)i(language,)g(initializes)i(MPI)d
(for)f(execution)i(in)g(all)g(lan-)75 2625 y(guages.)1655
b Fl(>)16 b Fk(\(Oct\))-32 46 y(1)-32 103 y(2)-32 159
y(3)-32 215 y(4)-32 272 y(5)-32 328 y(6)-32 385 y(7)-32
441 y(8)-32 498 y(9)-40 554 y(10)-40 611 y(11)-40 667
y(12)-40 724 y(13)-40 780 y(14)-40 836 y(15)-40 893 y(16)-40
949 y(17)-40 1006 y(18)-40 1062 y(19)-40 1119 y(20)-40
1175 y(21)-40 1232 y(22)-40 1288 y(23)-40 1345 y(24)-40
1401 y(25)-40 1457 y(26)-40 1514 y(27)-40 1570 y(28)-40
1627 y(29)-40 1683 y(30)-40 1740 y(31)-40 1796 y(32)-40
1853 y(33)-40 1909 y(34)-40 1966 y(35)-40 2022 y(36)-40
2078 y(37)-40 2135 y(38)-40 2191 y(39)-40 2248 y(40)-40
2304 y(41)-40 2361 y(42)-40 2417 y(43)-40 2474 y(44)-40
2530 y(45)-40 2587 y(46)-40 2643 y(47)-40 2699 y(48)p
eop
%%Page: 4 6
4 5 bop 75 -100 a Fs(4)1138 b Fg(CHAPTER)15 b(10.)30
b(MISCELLANY)189 45 y Fi(A)n(dvic)n(e)17 b(to)i(users.)56
b Fs(Certain)17 b(implemen)o(tations)i(use)g(the)e(\(inout\))h(argc,)g
(argv)e(argumen)o(ts)h(of)189 102 y(the)f(C/C++)g(v)o(ersion)g(of)g
Fj(MPI)p 736 102 14 2 v 16 w(INIT)f Fs(in)i(order)f(to)f(propagate)h
(the)g(righ)o(t)g(v)m(alue)h(for)e(argc,)h(argv)189 158
y(to)g(all)i(executing)h(pro)q(cesses.)26 b(Use)18 b(of)f(the)g(F)l
(ortran)f(v)o(ersion)i(of)f Fj(MPI)p 1424 158 V 15 w(INIT)g
Fs(to)g(initialize)j(MPI)189 214 y(ma)o(y)14 b(result)i(in)g(a)f(loss)g
(of)g(this)g(abilit)o(y)l(.)22 b(\()p Fi(End)15 b(of)i(advic)n(e)f(to)g
(users.)p Fs(\))-117 276 y Fl(?)f Fk(\(Oct\))166 321
y Fs(The)g(function)h Fm(MPI)p 512 321 15 2 v 17 w(INITIALIZED)e
Fs(returns)h(the)g(same)g(answ)o(er)g(in)h(an)o(y)f(language.)166
377 y(The)g(function)h Fm(MPI)p 512 377 V 17 w(FINALIZE)e
Fs(\014nalizes)j(the)e(MPI)h(en)o(vironmen)o(ts)f(for)g(all)h
(languages.)166 434 y(The)h(function)g Fm(MPI)p 515 434
V 17 w(ABORT)e Fs(kill)k(pro)q(cesses,)e(irresp)q(ectiv)o(e)h(of)e(the)
g(language)h(used)g(b)o(y)f(the)h(caller)75 490 y(or)e(b)o(y)g(the)g
(pro)q(cesses)h(killed.)166 547 y(The)e(MPI)g(en)o(vironmen)o(t)g(is)h
(initialized)i(in)e(the)f(same)f(manner)h(for)f(all)i(languages)f(b)o
(y)g Fj(MPI)p 1761 547 14 2 v 16 w(INIT)p Fs(.)75 603
y(I.e.,)d Fd(MPI)p 238 603 13 2 v 14 w(COMM)p 382 603
V 15 w(W)o(ORLD)f Fs(carries)g(the)g(same)g(information)g(regardless)h
(of)f(language:)17 b(same)10 b(pro)q(cesses,)75 659 y(same)15
b(en)o(vironmen)o(tal)h(attributes,)e(same)h(error)g(handlers.)189
766 y Fi(A)n(dvic)n(e)h(to)h(users.)44 b Fs(The)16 b(use)g(of)g(sev)o
(eral)g(languages)g(in)g(one)g(MPI)g(program)f(ma)o(y)g(require)i(the)
189 822 y(use)e(of)g(sp)q(ecial)i(options)e(at)g(compile)h(and/or)f
(link)i(time.)j(\()p Fi(End)c(of)g(advic)n(e)g(to)h(users.)p
Fs(\))189 928 y Fi(A)n(dvic)n(e)k(to)h(implementors.)79
b Fs(Implemen)o(tations)23 b(ma)o(y)e(selectiv)o(ely)i(link)g(language)
f(sp)q(eci\014c)189 985 y(MPI)15 b(libraries)i(only)f(to)f(co)q(des)h
(that)f(need)h(them,)g(so)f(as)g(not)g(to)g(increase)h(the)g(size)g(of)
g(binaries)189 1041 y(for)21 b(co)q(des)i(that)e(use)i(only)f(one)g
(language.)41 b(The)22 b(MPI)g(initializati)q(on)j(co)q(de)d(need)h(p)q
(erform)189 1098 y(initialization)18 b(for)c(a)h(language)g(only)g(if)h
(that)e(language)h(library)h(is)g(loaded.)k(\()p Fi(End)c(of)g(advic)n
(e)g(to)189 1154 y(implementors.)p Fs(\))75 1276 y Fe(10.2.4)49
b(T)l(ransfer)16 b(of)g(handles)75 1409 y Fo(Curren)o(t)e(Status:)j
Fn(P)o(assed)e(once.)-117 1456 y Fl(>)g Fk(\(Oct\))166
1513 y Fs(Handles)e(are)f(passed)h(across)f(languages)g(b)o(y)h(using)g
(an)f(explicit)j(C)d(wrapp)q(er)h(to)e(con)o(v)o(ert)h(handles.)75
1569 y(The)j(con)o(v)o(ersion)h(is)f(automatic)g(b)q(et)o(w)o(een)h(C)f
(and)g(C++.)166 1626 y(The)d(data)f(t)o(yp)q(e)h Fd(MPI)p
532 1626 V 14 w(Fint)g Fs(is)g(pro)o(vided)g(in)h(C)e(for)g(an)h(in)o
(teger)g(of)f(the)h(size)h(that)d(matc)o(hes)i(a)f(F)l(ortran)75
1682 y Fd(INTEGER)p Fs(;)j(usually)l(,)i Fd(MPI)p 517
1682 V 15 w(Fint)f Fs(will)i(b)q(e)f(equiv)m(alen)o(t)h(to)d
Fd(int)p Fs(.)166 1739 y(The)f(follo)o(wing)h(t)o(w)o(o)e(functions)i
(are)f(pro)o(vided)h(in)g(C)f(to)g(con)o(v)o(ert)f(from)h(a)g(F)l
(ortran)f(handle)i(\(whic)o(h)75 1795 y(is)i(an)f(in)o(teger\))g(to)f
(a)h(C)g(handle,)h(and)g(vice)g(v)o(ersa.)75 1851 y Fm(MPI)p
150 1851 15 2 v 17 w(Handle)23 b(MPI)p 406 1851 V 17
w(Int2handle\()f(MPI)p 781 1851 V 17 w(Fint)h(f)p 941
1851 V 17 w(handle,)g(MPI)p 1221 1851 V 17 w(Handle)p
1382 1851 V 16 w(type)g(handle)p 1661 1851 V 17 w(kind\))75
1938 y(MPI)p 150 1938 V 17 w(Fint)g(MPI)p 358 1938 V
17 w(Handle2int\()f(MPI)p 733 1938 V 17 w(Handle)h(c)p
941 1938 V 17 w(handle,)g(MPI)p 1221 1938 V 17 w(Handle)p
1382 1938 V 16 w(type)g(handle)p 1661 1938 V 17 w(kind\))166
2024 y Fs(If)f Fj(f)p 235 2024 14 2 v 16 w(handle)g Fs(is)g(a)f(v)m
(alid)i(F)l(ortran)e(handle)h(to)f(an)g(opaque)h(ob)s(ject,)g(and)f
Fj(handle)p 1598 2024 V 18 w(kind)h Fs(sp)q(eci\014es)75
2081 y(the)17 b(t)o(yp)q(e)f(of)h(ob)s(ject,)f(then)h
Fj(MPI)p 654 2081 V 16 w(INT2HANDLE)f Fs(returns)h(a)f(v)m(alid)i(C)f
(handle)h(to)e(that)g(same)g(ob)s(ject;)75 2137 y(if)21
b Fj(f)p 139 2137 V 16 w(handle)h Fs(is)f(a)g(n)o(ull)h(F)l(ortran)d
(handle,)k(then)e Fj(MPI)p 1016 2137 V 16 w(INT2HANDLE)f
Fs(returns)h(a)f(n)o(ull)i(C)e(handle;)k(if)75 2194 y
Fj(f)p 92 2194 V 16 w(handle)17 b Fs(is)e(an)g(in)o(v)m(alid)j(F)l
(ortran)c(handle,)i(then)f Fj(MPI)p 1011 2194 V 16 w(INT2HANDLE)g
Fs(returns)g(an)g(in)o(v)m(alid)i(C)e(handle;)75 2250
y(and)g(similarly)l(,)i(for)e Fj(MPI)p 513 2250 V 16
w(HANDLE2INT)p Fs(.)75 2356 y Fh(Example)j(10.6)23 b
Fs(The)10 b(example)h(b)q(elo)o(w)g(illustrates)g(ho)o(w)e(the)i(F)l
(ortran)e(MPI)h(function)h Fj(MPI)p 1677 2356 V 16 w(TYPE)p
1810 2356 V 16 w(COMMIT)75 2413 y Fs(can)k(b)q(e)h(implemen)o(ted)h(b)o
(y)d(wrapping)i(the)f(C)g(MPI)g(function)h Fj(MPI)p 1244
2413 V 15 w(T)l(yp)q(e)p 1351 2413 V 18 w(commit)d Fs(with)i(a)g(C)g
(wrapp)q(er)75 2469 y(to)g(do)g(handle)h(con)o(v)o(ersions.)75
2576 y Fm(!)24 b(FORTRAN)f(PROCEDURE)75 2632 y(SUBROUTINE)f
(MPI_TYPE_COMMIT\()g(DATATYPE,)h(IERR\))75 2689 y(INTEGER)g(DATATYPE,)g
(IERR)1967 46 y Fk(1)1967 103 y(2)1967 159 y(3)1967 215
y(4)1967 272 y(5)1967 328 y(6)1967 385 y(7)1967 441 y(8)1967
498 y(9)1959 554 y(10)1959 611 y(11)1959 667 y(12)1959
724 y(13)1959 780 y(14)1959 836 y(15)1959 893 y(16)1959
949 y(17)1959 1006 y(18)1959 1062 y(19)1959 1119 y(20)1959
1175 y(21)1959 1232 y(22)1959 1288 y(23)1959 1345 y(24)1959
1401 y(25)1959 1457 y(26)1959 1514 y(27)1959 1570 y(28)1959
1627 y(29)1959 1683 y(30)1959 1740 y(31)1959 1796 y(32)1959
1853 y(33)1959 1909 y(34)1959 1966 y(35)1959 2022 y(36)1959
2078 y(37)1959 2135 y(38)1959 2191 y(39)1959 2248 y(40)1959
2304 y(41)1959 2361 y(42)1959 2417 y(43)1959 2474 y(44)1959
2530 y(45)1959 2587 y(46)1959 2643 y(47)1959 2699 y(48)p
eop
%%Page: 5 7
5 6 bop 75 -100 a Fg(10.2.)34 b(LANGUA)o(GE)15 b(INTER)o(OPERABILITY)
898 b Fs(5)75 45 y Fm(CALL)23 b(MPI_X_TYPE_COMMIT\(DATATYPE,)d(IERR\))
75 102 y(RETURN)75 158 y(END)75 271 y(!)k(C)f(wrapper)75
384 y(void)g(MPI_X_TYPE_COMMIT\()f(MPI_Fint)g(*f_handle,)h(*ierr\))75
440 y({)75 497 y(MPI_Datatype)f(datatype;)75 610 y(datatype)h(=)g
(\(MPI_Datatype\)MPI_int2handle\()d(*f_handle,)j
(MPI_DATATYPE_HANDLE\);)75 666 y(*ierr)g(=)h
(\(MPI_Fint\)MPI_Type_commit)o(\()d(&datatype\);)75 723
y(*f_handle)i(=)g(MPI_handle2int\()f(\(MPI_Handle\)datatype,)75
779 y(MPI_DATATYPE_HANDLE\);)75 835 y(return\(\);)75
892 y(})166 994 y Fs(The)10 b(same)g(approac)o(h)g(can)g(b)q(e)h(used)g
(for)e(all)i(other)f(MPI)g(functions.)19 b(The)11 b(call)g(to)e
Fj(MPI)p 1637 994 14 2 v 16 w(INT2HANDLE)75 1050 y Fs(\(resp.)k
Fj(MPI)p 285 1050 V 16 w(HANDLE2INT)p Fs(\))g(can)i(b)q(e)f(omitted)g
(when)g(the)g(handle)i(is)e(an)g Fn(OUT)g Fs(\(resp.)f
Fn(IN)p Fs(\))h(argumen)o(t,)75 1107 y(rather)h(than)g
Fn(INOUT)p Fs(.)166 1256 y Fo(Discussion:)g Fn(Do)f(w)o(e)g(also)f(w)o
(an)o(t)h(C++)g(bindings)f(for)h(these)h(functions?)189
1406 y Fi(R)n(ationale.)62 b Fs(The)19 b(design)h(here)g(pro)o(vides)f
(a)g(con)o(v)o(enien)o(t)g(solution)h(for)e(the)h(prev)m(alen)o(t)h
(case,)189 1462 y(where)f(a)f(C)h(wrapp)q(er)g(is)h(used)f(to)f(allo)o
(w)i(F)l(ortran)d(co)q(de)j(to)e(call)i(a)f(C)f(library)l(,)j(or)d(C)h
(co)q(de)h(to)189 1518 y(call)g(a)f(F)l(ortran)f(library)l(.)32
b(The)19 b(use)h(of)f(C)f(wrapp)q(ers)i(is)f(m)o(uc)o(h)g(more)g(lik)o
(ely)i(than)e(the)g(use)g(of)189 1575 y(F)l(ortran)12
b(wrapp)q(ers,)i(b)q(ecause)h(it)f(is)g(m)o(uc)o(h)g(more)f(lik)o(ely)j
(that)d(a)g(v)m(ariable)j(of)d(t)o(yp)q(e)h Fd(INTEGER)f
Fs(can)189 1631 y(b)q(e)j(passed)f(to)g(C,)f(than)h(a)g(C)g(handle)h
(can)g(b)q(e)g(passed)f(to)g(F)l(ortran.)189 1706 y(The)21
b(use)h(of)f(con)o(v)o(ersion)g(functions,)j(rather)c(than)i(pro)q
(cedures,)h(allo)o(w)f(us)f(to)g(use)g(inlinin)q(g,)189
1762 y(esp)q(ecially)c(in)f(the)f(case)g(where)g(these)g(functions)h
(are)e(the)h(iden)o(tit)o(y)l(.)21 b(The)15 b(con)o(v)o(ersion)g
(function)189 1819 y(in)f(the)g(wrapp)q(er)g(do)q(es)g(not)f(catc)o(h)h
(an)f(in)o(v)m(alid)j(handle)f(argumen)o(t.)k(Instead,)14
b(an)g(in)o(v)m(alid)i(handle)189 1875 y(is)11 b(passed)h(b)q(elo)o(w)g
(to)f(the)g(library)h(function,)h(whic)o(h,)f(presumably)l(,)h(c)o(hec)
o(ks)e(its)h(input)g(argumen)o(ts.)189 1932 y(\()p Fi(End)j(of)i(r)n
(ationale.)p Fs(\))1875 1989 y Fl(>)f Fk(\(Oct\))189
2079 y Fi(A)n(dvic)n(e)d(to)h(users.)38 b Fs(The)13 b(user)g(needs)g
(to)g(co)q(erce)g(the)g(result)g(returned)g(b)o(y)f Fj(MPI)p
1560 2079 V 16 w(int2handle)j Fs(from)189 2136 y Fd(MPI)p
266 2136 13 2 v 14 w(Handle)i Fs(to)d(a)h(sp)q(eci\014c)i(handle)g(t)o
(yp)q(e.)j(\()p Fi(End)15 b(of)i(advic)n(e)f(to)g(users.)p
Fs(\))1875 2193 y Fl(?)g Fk(\(Oct\))75 2301 y Fj(C)f(and)g(C++.)46
b Fs(The)15 b(C++)h(language)f(in)o(terface)g(pro)o(vides)g(the)g
(functions)g(listed)h(b)q(elo)o(w)g(for)e(C/C++)75 2358
y(in)o(terop)q(erabilit)o(y)k(\(in)e(particular,)h(to)e(allo)o(w)i(syn)
o(tactically)g(pleasing)g(calls)g(of)f(C)g(from)f(C++)i(and/or)75
2414 y(to)h(build)i(C/F)l(ortran)d(in)o(terfaces)i(for)f(C++\).)30
b(The)19 b(tok)o(en)f Fm(CLASS)g Fs(is)h(used)g(b)q(elo)o(w)g(to)f
(indicate)i(an)o(y)75 2470 y(v)m(alid)d Fj(MPI)d Fs(opaque)i(handle)g
(name)f(\(e.g.)f Fm(Comm)p Fs(\).)166 2527 y(The)f(follo)o(wing)g
Fm(operator=\(\))e Fs(function)i(allo)o(ws)g(assignmen)o(t)f(from)g(a)g
(C)h Fj(MPI)f Fs(handle)h(to)f(a)g(C++)75 2583 y Fj(MPI)j
Fs(handle.)75 2663 y Fm(MPI::CLASS&)22 b(MPI::CLASS::operator=\(const)f
(MPI)p 1105 2663 15 2 v 16 w(CLASS&)i(data\))1875 2704
y Fl(>)16 b Fk(\(Oct\))-32 46 y(1)-32 103 y(2)-32 159
y(3)-32 215 y(4)-32 272 y(5)-32 328 y(6)-32 385 y(7)-32
441 y(8)-32 498 y(9)-40 554 y(10)-40 611 y(11)-40 667
y(12)-40 724 y(13)-40 780 y(14)-40 836 y(15)-40 893 y(16)-40
949 y(17)-40 1006 y(18)-40 1062 y(19)-40 1119 y(20)-40
1175 y(21)-40 1232 y(22)-40 1288 y(23)-40 1345 y(24)-40
1401 y(25)-40 1457 y(26)-40 1514 y(27)-40 1570 y(28)-40
1627 y(29)-40 1683 y(30)-40 1740 y(31)-40 1796 y(32)-40
1853 y(33)-40 1909 y(34)-40 1966 y(35)-40 2022 y(36)-40
2078 y(37)-40 2135 y(38)-40 2191 y(39)-40 2248 y(40)-40
2304 y(41)-40 2361 y(42)-40 2417 y(43)-40 2474 y(44)-40
2530 y(45)-40 2587 y(46)-40 2643 y(47)-40 2699 y(48)p
eop
%%Page: 6 8
6 7 bop 75 -100 a Fs(6)1138 b Fg(CHAPTER)15 b(10.)30
b(MISCELLANY)166 45 y Fs(The)17 b(constructor)f(b)q(elo)o(w)h(creates)g
(a)f(C++)i Fj(MPI)e Fs(ob)s(ject)g(from)g(a)h(C)f Fj(MPI)g
Fs(handle.)26 b(This)18 b(allo)o(ws)75 102 y(the)d(automatic)g
(promotion)g(of)g(a)f(C)h Fj(MPI)g Fs(handle)h(to)f(a)g(C++)h
Fj(MPI)e Fs(handle.)75 176 y Fm(MPI::CLASS\(const)22
b(MPI)p 556 176 15 2 v 16 w(CLASS&)h(data\))75 290 y
Fh(Example)18 b(10.7)23 b Fs(In)d(order)f(for)h(a)f(C)h(program)e(to)h
(use)i(a)e(C++)h(library)l(,)i(the)e(C++)g(library)h(m)o(ust)75
347 y(exp)q(ort)16 b(a)h(C)f(in)o(terface)h(that)f(pro)o(vides)h
(appropriate)g(con)o(v)o(ersions)f(b)q(efore)h(in)o(v)o(oking)g(the)g
(underlying)75 403 y(C++)g(library)h(call.)26 b(This)17
b(example)h(sho)o(ws)e(a)g(C)h(in)o(terface)g(function)h(that)e(in)o(v)
o(ok)o(es)g(a)h(C++)g(library)75 459 y(call)c(with)g(a)f(C)g(comm)o
(unicator;)g(the)h(comm)o(unicator)e(is)i(automatically)g(promoted)f
(to)f(a)h(C++)h(handle)75 516 y(when)j(the)f(underlying)i(C++)f
(function)g(is)g(in)o(v)o(ok)o(ed.)75 600 y Fm(void)23
b(cpp_lib_call\(MPI::Comm)e(cpp_comm\);)75 713 y(extern)i("C")g({)75
769 y(void)g(c_interface\(MPI_Comm)e(c_comm\);)75 825
y(})75 938 y(void)i(c_interface\(MPI_Comm)e(c_comm\))75
995 y({)75 1051 y(cpp_lib_call\(c_comm\);)75 1108 y(})166
1191 y Fs(The)15 b(follo)o(wing)g(function)h(allo)o(ws)f(con)o(v)o
(ersion)g(from)f(C++)h(ob)s(jects)f(to)g(C)h Fj(MPI)f
Fs(handles.)21 b(In)16 b(this)75 1248 y(case,)f(the)g(casting)g(op)q
(erator)g(is)g(o)o(v)o(erloaded)h(to)e(pro)o(vide)i(the)f(functionalit)
o(y)l(.)75 1323 y Fm(MPI::CLASS::operator)21 b(MPI)p
651 1323 V 17 w(CLASS\(\))i(const)75 1436 y Fh(Example)18
b(10.8)23 b Fs(A)15 b(C)f(library)i(routine)g(is)f(called)i(from)d(a)h
(C++)g(program.)k(The)c(C)g(library)g(routine)75 1493
y(is)h(protot)o(yp)q(ed)e(to)h(tak)o(e)f(an)i Fm(MPI)p
647 1493 V 16 w(Comm)f Fs(as)g(an)g(argumen)o(t.)75 1577
y Fm(extern)23 b("C")g({)75 1633 y(void)g(c_lib_call\(MPI_Comm)f
(c_comm\);)75 1689 y(})75 1802 y(void)h(cpp_function\(\))75
1859 y({)75 1915 y(MPI::Comm)g(cpp_comm;)75 1972 y
(cpp_comm.Dup\(MPI::COMM_WOR)o(LD\);)75 2028 y(c_lib_call\(cpp_comm\);)
75 2085 y(})189 2168 y Fi(R)n(ationale.)60 b Fs(Pro)o(viding)19
b(con)o(v)o(ersion)f(from)g(C)h(to)e(C++)i(via)g(constructors)f(and)h
(from)e(C++)189 2225 y(to)e(C)h(via)g(casting)g(allo)o(ws)h(the)f
(compiler)h(to)f(mak)o(e)f(automatic)h(con)o(v)o(ersions.)22
b(Calling)c(C)e(from)189 2281 y(C++)k(b)q(ecomes)g(trivial,)h(as)f(do)q
(es)g(the)f(pro)o(vision)i(of)e(a)g(C)h(or)f(F)l(ortran)f(in)o(terface)
i(to)f(a)g(C++)189 2338 y(library)l(.)i(\()p Fi(End)15
b(of)h(r)n(ationale.)p Fs(\))189 2421 y Fi(A)n(dvic)n(e)f(to)i
(implementors.)43 b Fs(While)17 b(the)f(pro)o(vided)g(casting)g(and)g
(promotion)f(functions)i(allo)o(w)189 2478 y(the)11 b(seamless)g(con)o
(v)o(ersions)g(b)q(et)o(w)o(een)g(C)f(and)h(C++)h Fj(MPI)e
Fs(handles,)i(there)f(are)g(sev)o(eral)g(situations)189
2534 y(in)16 b(the)f Fj(MPI)g Fs(C)g(bindings)i(\(and)e(third)h(part)o
(y)e(C)h(library)h(calls\))g(where)g(a)f Fi(p)n(ointer)g
Fs(to)f(an)i Fj(MPI)e Fs(C)189 2591 y(handle)g(is)h(required)f(\(e.g.,)
f Fm(MPI)p 742 2591 V 16 w(CANCEL)p Fs(\).)f(Curren)o(tly)l(,)i(a)f
(C++)h(user)g(w)o(ould)g(ha)o(v)o(e)f(to)g(explicitly)189
2647 y(cast)k(the)g(C++)h(handle)h(to)e(C)g(v)m(ariable,)i(and)f(then)f
(use)h(the)g Fm(&)f Fs(op)q(erator)g(to)g(get)g(its)g(address.)189
2704 y(F)l(or)d(example,)i(the)f(C++)h(syn)o(tax)e(to)h(call)h(the)f(C)
g Fm(MPI)p 1143 2704 V 17 w(Cancel\(\))f Fs(function)i(is)g(as)f(follo)
o(ws:)1967 46 y Fk(1)1967 103 y(2)1967 159 y(3)1967 215
y(4)1967 272 y(5)1967 328 y(6)1967 385 y(7)1967 441 y(8)1967
498 y(9)1959 554 y(10)1959 611 y(11)1959 667 y(12)1959
724 y(13)1959 780 y(14)1959 836 y(15)1959 893 y(16)1959
949 y(17)1959 1006 y(18)1959 1062 y(19)1959 1119 y(20)1959
1175 y(21)1959 1232 y(22)1959 1288 y(23)1959 1345 y(24)1959
1401 y(25)1959 1457 y(26)1959 1514 y(27)1959 1570 y(28)1959
1627 y(29)1959 1683 y(30)1959 1740 y(31)1959 1796 y(32)1959
1853 y(33)1959 1909 y(34)1959 1966 y(35)1959 2022 y(36)1959
2078 y(37)1959 2135 y(38)1959 2191 y(39)1959 2248 y(40)1959
2304 y(41)1959 2361 y(42)1959 2417 y(43)1959 2474 y(44)1959
2530 y(45)1959 2587 y(46)1959 2643 y(47)1959 2699 y(48)p
eop
%%Page: 7 9
7 8 bop 75 -100 a Fg(10.2.)29 b(LANGUA)o(GE)15 b(INTER)o(OPERABILITY)
903 b Fs(7)189 45 y Fm(MPI::Request)22 b(cpp_request;)189
102 y(MPI_Request)g(c_request;)189 158 y(...)189 214
y(c_request)g(=)i(cpp_request;)189 271 y(MPI_Cancel\(&c_request\);)189
396 y Fs(A)12 b(cleaner)h(syn)o(tax)e(can)i(b)q(e)g(supp)q(orted)f
(with)h(the)f(follo)o(wing)h(functions:)19 b(a)12 b(promotion)g(op)q
(erator)189 452 y(from)i(a)h(C)g Fj(MPI)g Fs(handle)h(p)q(oin)o(ter,)f
(and)h(a)f(casting)g(op)q(erator)f(to)h(a)g(C)g Fj(MPI)f
Fs(handle)j(p)q(oin)o(ter.)189 527 y Fm(MPI::CLASS\(const)k(MPI)p
669 527 15 2 v 17 w(CLASS*)i(data\))189 633 y(MPI::CLASS::operator)e
(MPI)p 765 633 V 17 w(CLASS*\(\))189 738 y Fs(If)g(these)g(functions)h
(are)e(supp)q(orted)i(b)o(y)f(the)g(implemen)o(tation,)i(a)e(C++)g
(program)f(can)h(call)189 794 y Fm(MPI)p 264 794 V 16
w(Cancel\(\))14 b Fs(as)h(follo)o(ws:)189 919 y Fm(MPI::Request)22
b(cpp_request;)189 976 y(...)189 1032 y(MPI_Cancel\(cpp_request\))o(;)
189 1157 y Fs(\()p Fi(End)15 b(of)i(advic)n(e)f(to)g(implementors.)p
Fs(\))1875 1218 y Fl(?)g Fk(\(Oct\))75 1329 y Fe(10.2.5)49
b(MPI)17 b(Opaque)g(objects)75 1462 y Fo(Curren)o(t)d(Status:)j
Fn(P)o(assed)e(once.)166 1565 y Fs(In)h(general,)f(opaque)g(ob)s(jects)
f(are)h(\\the)g(same")f(in)i(all)g(languages:)k(they)15
b(carry)g(the)g(same)g(infor-)75 1622 y(mation,)j(and)f(ha)o(v)o(e)h
(the)f(same)g(meaning)i(in)f(b)q(oth)g(languages.)27
b(The)18 b(mec)o(hanism)g(describ)q(ed)h(in)g(the)75
1678 y(previous)d(section)g(can)f(b)q(e)h(used)g(to)e(pass)h
(references)h(to)f(MPI)g(ob)s(jects)g(from)f(language)i(to)e(language.)
75 1735 y(An)h(ob)s(ject)g(created)g(in)h(one)g(language)f(can)g(b)q(e)
h(accessed,)g(mo)q(di\014ed)g(or)f(freed)h(in)g(another)e(language.)166
1791 y(W)l(e)h(examine)h(b)q(elo)o(w)g(in)g(more)f(detail,)h(issues)g
(that)e(arise)i(for)e(eac)o(h)h(t)o(yp)q(e)h(of)f(MPI)g(ob)s(ject.)75
1913 y Fe(10.2.6)49 b(Datat)o(yp)q(es)75 2046 y Fo(Curren)o(t)14
b(Status:)j Fn(P)o(assed)e(once.)166 2150 y Fs(Datat)o(yp)q(es)d(enco)q
(de)j(the)f(same)f(information)h(in)h(all)f(languages.)20
b(E.g.,)12 b(a)h(datat)o(yp)q(e)g(accessor)h(lik)o(e)75
2206 y Fj(MPI)p 160 2206 14 2 v 16 w(TYPE)p 293 2206
V 17 w(EXTENT)h Fs(will)h(return)f(the)g(same)f(information)h(in)h(all)
f(three)g(languages.)20 b(If)15 b(a)f(datat)o(yp)q(e)75
2262 y(de\014ned)22 b(in)f(one)f(language)h(is)f(used)h(for)f(a)g(comm)
o(unication)h(call)g(in)g(another)f(language,)h(then)g(the)75
2319 y(message)c(sen)o(t)h(will)h(b)q(e)f(iden)o(tical)i(to)d(the)g
(message)h(that)f(w)o(ould)h(b)q(e)g(sen)o(t)f(from)g(the)h(\014rst)f
(language:)75 2375 y(the)e(same)g(comm)o(unication)h(bu\013er)f(is)g
(accessed,)g(and)h(the)f(same)g(represen)o(tation)g(con)o(v)o(ersion)g
(is)g(p)q(er-)75 2432 y(formed,)c(if)h(needed.)20 b(All)13
b(basic)f(datat)o(yp)q(es)f(can)g(b)q(e)h(used)g(in)h(datat)o(yp)q(e)d
(constructors)h(in)h(an)o(y)f(language.)75 2488 y(If)k(a)g(datat)o(yp)q
(e)g(is)h(committed,)f(it)g(can)g(b)q(e)h(used)g(for)f(comm)o
(unication)h(in)g(an)o(y)e(languages.)166 2545 y(The)19
b(function)h Fj(MPI)p 530 2545 V 16 w(ADDRESS)g Fs(returns)f(the)h
(same)f(v)m(alue)h(in)g(all)g(languages.)32 b(On)20 b(the)f(other)75
2601 y(hand,)h(w)o(e)e(do)h(not)g(require)g(that)f(the)h(constan)o(t)f
Fd(MPI)p 1032 2601 13 2 v 15 w(BOTTOM)g Fs(has)h(the)g(same)f(v)m(alue)
i(in)g(all)g(three)75 2658 y(languages.)-32 46 y Fk(1)-32
103 y(2)-32 159 y(3)-32 215 y(4)-32 272 y(5)-32 328 y(6)-32
385 y(7)-32 441 y(8)-32 498 y(9)-40 554 y(10)-40 611
y(11)-40 667 y(12)-40 724 y(13)-40 780 y(14)-40 836 y(15)-40
893 y(16)-40 949 y(17)-40 1006 y(18)-40 1062 y(19)-40
1119 y(20)-40 1175 y(21)-40 1232 y(22)-40 1288 y(23)-40
1345 y(24)-40 1401 y(25)-40 1457 y(26)-40 1514 y(27)-40
1570 y(28)-40 1627 y(29)-40 1683 y(30)-40 1740 y(31)-40
1796 y(32)-40 1853 y(33)-40 1909 y(34)-40 1966 y(35)-40
2022 y(36)-40 2078 y(37)-40 2135 y(38)-40 2191 y(39)-40
2248 y(40)-40 2304 y(41)-40 2361 y(42)-40 2417 y(43)-40
2474 y(44)-40 2530 y(45)-40 2587 y(46)-40 2643 y(47)-40
2699 y(48)p eop
%%Page: 8 10
8 9 bop 75 -100 a Fs(8)1133 b Fg(CHAPTER)15 b(10.)35
b(MISCELLANY)75 45 y Fh(Example)18 b(10.9)75 134 y Fm(!)24
b(FORTRAN)f(CODE)75 190 y(REAL)g(R\(5\))75 247 y(INTEGER)g(TYPE,)g
(ADDR,)g(IERR)75 360 y(!)h(create)f(an)g(absolute)g(datatype)g(for)g
(array)h(R)75 416 y(CALL)f(MPI_ADDRESS\()g(R,)g(ADDR,)g(IERR\))75
473 y(CALL)g(MPI_TYPE_STRUCT\(1,)f(5,)h(ADDR,)g(MPI_REAL,)g(TYPE,)g
(IERR\))75 529 y(CALL)g(C_ROUTINE\(TYPE\))75 642 y(/*)h(C)f(code)h(*/)
75 755 y(void)f(C_ROUTINE\(MPI_Fint)f(*ftype\))75 811
y({)75 868 y(int)h(count)h(=)f(5;)75 924 y(void)g(*handle;)75
981 y(int)g(lens[2])g(=)h({1,1};)75 1037 y(MPI_Aint)f(displs[2];)75
1094 y(MPI_Datatype)f(types[2],)h(newtype;)75 1207 y(/*)h(create)f(an)g
(absolute)g(datatype)g(for)g(buffer)g(that)h(consists)70
b(*/)75 1263 y(/*)47 b(of)24 b(count,)f(followed)g(by)g(R\(5\))668
b(*/)75 1376 y(MPI_Addr\(&count,)22 b(displs[0]\);)75
1432 y(displs[1])h(=)g(0;)75 1489 y(types[0])g(=)g(MPI_INT;)75
1545 y(types[1])g(=)g(\(MPI_Datatype\)MPI_Int2handle\(f)o(type\);)75
1602 y(MPI_Type_struct\(2,)e(lens,)j(displs,)e(types,)i(&newtype\);)75
1658 y(MPI_Type_commit\(&newtype\);)75 1771 y(MPI_Send\(MPI_BOTTOM,)d
(1,)j(newtype,)e(1,)i(0,)g(MPI_COMM_WORLD\);)75 1828
y(/*)g(the)f(message)g(sent)g(contains)g(an)h(int)f(count)g(of)h(5,)f
(followed)47 b(*/)75 1884 y(/*)24 b(by)f(the)h(5)f(REAL)h(entries)f(of)
g(the)h(Fortran)f(array)g(R.)238 b(*/)75 1940 y(})189
2040 y Fi(R)n(ationale.)58 b Fs(The)18 b(curren)o(t)g(MPI)g(standard)g
(sp)q(eci\014es)i(that)d Fd(MPI)p 1363 2040 13 2 v 15
w(ADDRESS)g Fs(can)h(b)q(e)h(used)g(in)189 2096 y(initialization)i
(expressions)f(in)g(C,)e(but)h(not)f(in)i(F)l(ortran.)29
b(Since)21 b(F)l(ortran)c(do)q(es)i(not)g(supp)q(ort)189
2153 y(normally)11 b(call)h(b)o(y)f(v)m(alue,)h(then)f
Fd(MPI)p 815 2153 V 15 w(ADDRESS)f Fs(m)o(ust)g(b)q(e)i(in)f(F)l
(ortran)f(the)h(name)f(of)h(a)f(prede\014ned)189 2209
y(static)19 b(v)m(ariable,)k(e.g.,)d(a)f(v)m(ariable)j(in)f(an)f(MPI)g
(declared)h Fd(COMMON)f Fs(blo)q(c)o(k.)35 b(On)20 b(the)g(other)189
2266 y(hand,)e(in)h(C,)e(it)h(is)g(natural)f(to)g(tak)o(e)g
Fd(MPI)p 930 2266 V 15 w(BOTTOM)f(=)g(0)h Fs(\(Ca)o(v)o(eat:)23
b(De\014ning)c Fd(MPI)p 1681 2266 V 14 w(BOTTOM)189 2322
y(=)e(0)h Fs(implies)i(that)e Fd(NULL)i Fs(p)q(oin)o(ter)e(cannot)h(b)q
(e)g(distinguished)i(from)d Fd(MPI)p 1502 2322 V 14 w(BOTTOM)p
Fs(;)g(ma)o(y)f(b)q(e)189 2378 y Fd(MPI)p 266 2378 V
14 w(BOTTOM)12 b(=)i(1)f Fs(is)i(b)q(etter)f Ff(:)8 b(:)g(:)e
Fs(\))13 b(Requiring)j(that)e(the)g(F)l(ortran)f(and)h(C)g(v)m(alues)h
(b)q(e)g(the)f(same)189 2435 y(will)i(complicate)h(the)e
(initialization)j(pro)q(cess.)i(\()p Fi(End)c(of)g(r)n(ationale.)p
Fs(\))189 2534 y Fi(A)n(dvic)n(e)e(to)h(implementors.)39
b Fs(The)14 b(follo)o(wing)g(implemen)o(tation)h(can)f(b)q(e)h(used:)k
(MPI)14 b(addresses,)189 2591 y(as)e(returned)h(b)o(y)f
Fj(MPI)p 569 2591 14 2 v 16 w(ADDRESS)p Fs(,)h(will)h(ha)o(v)o(e)f(the)
f(same)h(v)m(alue)g(in)h(all)f(languages.)19 b(One)14
b(ob)o(vious)189 2647 y(c)o(hoice)e(is)g(that)g(MPI)f(addresses)h(b)q
(e)g(iden)o(tical)i(to)d(regular)h(addresses.)19 b(The)12
b(address)g(is)g(stored)f(in)189 2704 y(the)k(datat)o(yp)q(e,)f(when)h
(datat)o(yp)q(es)f(with)h(absolute)g(addresses)g(are)g(constructed.)20
b(When)15 b(a)f(send)1967 46 y Fk(1)1967 103 y(2)1967
159 y(3)1967 215 y(4)1967 272 y(5)1967 328 y(6)1967 385
y(7)1967 441 y(8)1967 498 y(9)1959 554 y(10)1959 611
y(11)1959 667 y(12)1959 724 y(13)1959 780 y(14)1959 836
y(15)1959 893 y(16)1959 949 y(17)1959 1006 y(18)1959
1062 y(19)1959 1119 y(20)1959 1175 y(21)1959 1232 y(22)1959
1288 y(23)1959 1345 y(24)1959 1401 y(25)1959 1457 y(26)1959
1514 y(27)1959 1570 y(28)1959 1627 y(29)1959 1683 y(30)1959
1740 y(31)1959 1796 y(32)1959 1853 y(33)1959 1909 y(34)1959
1966 y(35)1959 2022 y(36)1959 2078 y(37)1959 2135 y(38)1959
2191 y(39)1959 2248 y(40)1959 2304 y(41)1959 2361 y(42)1959
2417 y(43)1959 2474 y(44)1959 2530 y(45)1959 2587 y(46)1959
2643 y(47)1959 2699 y(48)p eop
%%Page: 9 11
9 10 bop 75 -100 a Fg(10.2.)34 b(LANGUA)o(GE)15 b(INTER)o(OPERABILITY)
898 b Fs(9)189 45 y(or)13 b(receiv)o(e)i(op)q(eration)f(is)h(p)q
(erformed,)f(then)g(addresses)g(stored)g(in)h(a)e(datat)o(yp)q(e)h(are)
f(in)o(terpreted)189 102 y(as)h(displacemen)o(ts)j(that)d(are)g(all)i
(augmen)o(ted)f(b)o(y)g(a)f(base)h(address.)20 b(This)c(base)f(address)
g(is)g(\(the)189 158 y(address)f(of)t(\))e Fj(buf)p Fs(,)j(or)e(zero,)h
(if)h Fj(buf)f(=)h(MPI)p 921 158 14 2 v 15 w(BOTTOM)p
Fs(.)g(Th)o(us,)e(if)i Fd(MPI)p 1403 158 13 2 v 14 w(BOTTOM)f
Fs(is)g(zero)g(then)g(a)189 214 y(send)g(or)f(receiv)o(e)i(call)g(with)
f Fj(buf)g(=)g(MPI)p 885 214 14 2 v 16 w(BOTTOM)h Fs(is)f(implemen)o
(ted)h(exactly)g(as)e(a)g(call)i(with)f(a)189 271 y(regular)h(bu\013er)
g(argumen)o(t:)k(in)d(b)q(oth)f(cases)g(the)h(base)f(address)g(is)h
Fj(buf)p Fs(.)21 b(On)15 b(the)g(other)g(hand,)g(if)189
327 y Fd(MPI)p 266 327 13 2 v 14 w(BOTTOM)e Fs(is)h(not)g(zero,)f(then)
h(the)g(implemen)o(tation)h(has)e(to)g(b)q(e)h(sligh)o(tly)h
(di\013eren)o(t.)20 b(A)14 b(test)189 384 y(is)h(p)q(erformed)f(to)g(c)
o(hec)o(k)h(whether)f Fj(buf)i(=)f(MPI)p 1011 384 14
2 v 15 w(BOTTOM)p Fs(.)g(If)g(true,)f(then)h(the)f(base)h(address)f(is)
189 440 y(zero,)g(otherwise)i(it)f(is)h Fj(buf)p Fs(.)21
b(In)16 b(particular,)f(if)h Fd(MPI)p 1083 440 13 2 v
14 w(BOTTOM)f Fs(do)q(es)h(not)f(ha)o(v)o(e)f(the)i(same)f(v)m(alue)189
497 y(in)i(F)l(ortran)f(and)h(C/C++,)g(then)g(an)f(additional)i(test)f
(for)f Fj(bu\013)h(=)g(MPI)p 1463 497 14 2 v 16 w(BOTTOM)g
Fs(is)h(needed)189 553 y(in)e(at)e(least)i(one)f(of)g(the)g(languages.)
189 628 y(It)f(ma)o(y)g(b)q(e)i(desirable)g(to)e(use)h(a)g(v)m(alue)h
(other)e(than)g(zero)h(for)f Fd(MPI)p 1339 628 13 2 v
14 w(BOTTOM)h Fs(ev)o(en)g(in)g(C/C++,)189 685 y(so)h(as)h(to)f
(distinguish)j(it)e(from)f(a)h(NULL)g(p)q(oin)o(ter.)26
b(If)17 b Fd(MPI)p 1234 685 V 14 w(BOTTOM)e(=)h(c)h Fs(then)g(one)h
(can)f(still)189 741 y(a)o(v)o(oid)f(the)g(test)g Fj(bu\013)h(=)f(MPI)p
705 741 14 2 v 16 w(BOTTOM)p Fs(,)h(b)o(y)f(using)h(the)g(displacemen)o
(t)h(from)d Fd(MPI)p 1668 741 13 2 v 15 w(BOTTOM)p Fs(,)189
798 y(i.e.,)d(the)g(regular)f(address)h(-)g(c,)g(as)g(the)g(MPI)f
(address)h(returned)g(b)o(y)g Fj(MPI)p 1441 798 14 2
v 16 w(ADDRESS)g Fs(and)g(stored)189 854 y(in)k(absolute)f(datat)o(yp)q
(es.)k(\()p Fi(End)d(of)g(advic)n(e)h(to)f(implementors.)p
Fs(\))75 976 y Fe(10.2.7)49 b(Addresses)75 1109 y Fo(Curren)o(t)14
b(Status:)j Fn(No)d(v)o(otes.)166 1213 y Fs(Some)i(of)g(the)h(datat)o
(yp)q(e)e(accessors)h(and)h(constructors)e(ha)o(v)o(e)h(argumen)o(ts)g
(of)f(t)o(yp)q(e)i Fd(MPI)p 1717 1213 13 2 v 14 w(Aint)f
Fs(\(in)75 1269 y(C\))e(or)g Fd(MPI::Aint)f Fs(in)j(C++,)f(to)e(hold)j
(addresses.)k(The)15 b(corresp)q(onding)g(argumen)o(ts,)f(in)h(F)l
(ortran,)e(ha)o(v)o(e)75 1326 y(t)o(yp)q(e)20 b Fd(INTEGER)p
Fs(.)g(This)h(causes)f(F)l(ortran)f(and)i(C/C++)f(to)g(b)q(e)h
(incompatible,)i(in)e(an)g(en)o(vironmen)o(t)75 1382
y(where)15 b(addresses)h(ha)o(v)o(e)f(64)f(bits,)h(but)h(F)l(ortran)e
Fd(INTEGER)p Fs(s)g(ha)o(v)o(e)h(32)g(bits.)166 1438
y(This)k(is)h(a)e(problem,)i(irresp)q(ectiv)o(e)h(of)d(in)o
(terlanguage)h(issues.)32 b(Supp)q(ose)20 b(that)e(a)g(F)l(ortran)g
(pro-)75 1495 y(cess)h(has)g(an)g(address)g(space)g(of)g
Fl(\025)g Fs(4)g(GB.)g(What)f(should)i(b)q(e)g(the)f(v)m(alue)h
(returned)f(in)h(F)l(ortran)e(b)o(y)75 1551 y Fj(MPI)p
160 1551 14 2 v 16 w(ADDRESS)p Fs(,)i(for)e(a)h(v)m(ariable)i(with)e
(an)h(address)f(ab)q(o)o(v)o(e)g(2)1195 1535 y Fc(32)1232
1551 y Fs(?)33 b(The)19 b(prop)q(osed)h(design)g(aims)g(to)75
1608 y(solv)o(e)15 b(this)h(issue,)g(while)g(main)o(taining)h
(compatibilit)o(y)f(with)g(curren)o(t)f(F)l(ortran)f(co)q(des.)166
1664 y(The)h(constan)o(t)g Fd(MPI)p 520 1664 13 2 v 14
w(ADDRESS)p 720 1664 V 14 w(KIND)g Fs(is)h(de\014ned)g(so)f(that,)f(in)
i(F)l(ortran)e(90,)75 1721 y Fd(INTEGER\(KIND=MPI)p 474
1721 V 14 w(ADDRESS)p 674 1721 V 14 w(KIND\))22 b Fs(is)g(an)g(address)
g(sized)h(in)o(teger)f(t)o(yp)q(e)g(\(t)o(ypically)l(,)i(but)e(not)75
1777 y(necessarily)l(,)f Fd(MPI)p 392 1777 V 15 w(ADDRESS)p
593 1777 V 14 w(KIND)e Fs(is)g(4)g(on)g(32)g(bit)g(address)h(mac)o
(hines)g(and)f(8)g(on)g(64)f(bit)i(address)75 1834 y(mac)o(hines\).)g
(Similarly)l(,)d(the)f(constan)o(t)75 1890 y Fd(MPI)p
152 1890 V 14 w(INTEGER)p 340 1890 V 15 w(KIND)g Fs(is)h(de\014ned)h
(so)f(that)f Fd(INTEGER\(KIND=MPI)p 1231 1890 V 13 w(INTEGER)p
1418 1890 V 15 w(KIND\))g Fs(is)h(a)g(default)g(size)75
1947 y Fd(INTEGER)p Fs(.)166 2003 y(There)e(are)g(sev)o(en)h(functions)
g(that)e(ha)o(v)o(e)h(address)g(argumen)o(ts:)k Fj(MPI)p
1380 2003 14 2 v 16 w(TYPE)p 1513 2003 V 17 w(HVECTOR)p
Fs(,)75 2059 y Fj(MPI)p 160 2059 V 16 w(TYPE)p 293 2059
V 17 w(HINDEXED)p Fs(,)c Fj(MPI)p 647 2059 V 15 w(TYPE)p
779 2059 V 17 w(STRUCT)p Fs(,)h Fj(MPI)p 1083 2059 V
16 w(ADDRESS)p Fs(,)f Fj(MPI)p 1411 2059 V 16 w(TYPE)p
1544 2059 V 17 w(EXTENT)75 2116 y(MPI)p 160 2116 V 16
w(TYPE)p 293 2116 V 17 w(LB)g Fs(and)g Fj(MPI)p 550 2116
V 16 w(TYPE)p 683 2116 V 17 w(UB)p Fs(.)1104 b Fl(>)16
b Fk(\(Oct\))166 2172 y Fs(F)l(our)k(new)i(functions)f(are)g(pro)o
(vided)h(to)e(supplemen)o(t)i(the)f(\014rst)g(four)g(functions)g(in)h
(this)g(list.)75 2229 y(These)15 b(functions)h(are)f(describ)q(ed)i(in)
e(Section)h(10.3,)d(page)i(13)g(.)k(The)d(remaining)g(three)f
(functions)g(are)75 2285 y(supplemen)o(ted)g(b)o(y)e(the)g(new)g
(function)h Fj(MPI)p 849 2285 V 15 w(GET)p 952 2285 V
17 w(EXTENT)p Fs(,)f(describ)q(ed)i(in)f(that)e(same)h(section.)20
b(The)75 2342 y(new)g(functions)g(are)f(synonimous)h(with)g(the)g(old)g
(functions)g(in)g(C/C++,)h(or)e(on)g(F)l(ortran)f(systems)75
2398 y(where)23 b(default)g Fd(INTEGER)p Fs(s)e(are)i(address)f(sized.)
43 b(In)23 b(F)l(ortran,)g(they)f(accept)h(argumen)o(ts)f(of)g(t)o(yp)q
(e)75 2455 y Fd(INTEGER\(KIND=MPI)p 474 2455 13 2 v 14
w(ADDRESS)p 674 2455 V 14 w(SIZE\))p Fs(,)d(wherev)o(er)g(argumen)o(ts)
f(of)h(t)o(yp)q(e)g Fd(MPI)p 1479 2455 V 15 w(Aint)g
Fs(are)g(used)h(in)g(C.)75 2511 y(On)j(F)l(ortran)e(77)h(systems)g
(that)f(do)h(not)g(supp)q(ort)h(the)f(F)l(ortran)f(90)h
Fd(KIND)g Fs(notation,)h(and)g(where)75 2568 y(addresses)e(are)g(64)f
(bits)i(whereas)f(default)h Fd(INTEGER)p Fs(s)e(are)g(32)h(bits,)h
(these)g(argumen)o(ts)e(will)j(b)q(e)e(of)75 2624 y(t)o(yp)q(e)16
b Fd(INTEGER*8)p Fs(.)k(The)c(old)h(functions)f(will)i(con)o(tin)o(ue)e
(to)f(b)q(e)i(pro)o(vided,)f(for)f(p)q(ortabilit)o(y)l(.)23
b(Ho)o(w)o(ev)o(er,)75 2680 y(users)14 b(are)g(encouraged)g(to)f(switc)
o(h)h(to)f(the)h(new)h(functions,)f(in)h(F)l(ortran,)e(so)g(as)h(to)f
(a)o(v)o(oid)g(problems)i(on)-32 46 y Fk(1)-32 103 y(2)-32
159 y(3)-32 215 y(4)-32 272 y(5)-32 328 y(6)-32 385 y(7)-32
441 y(8)-32 498 y(9)-40 554 y(10)-40 611 y(11)-40 667
y(12)-40 724 y(13)-40 780 y(14)-40 836 y(15)-40 893 y(16)-40
949 y(17)-40 1006 y(18)-40 1062 y(19)-40 1119 y(20)-40
1175 y(21)-40 1232 y(22)-40 1288 y(23)-40 1345 y(24)-40
1401 y(25)-40 1457 y(26)-40 1514 y(27)-40 1570 y(28)-40
1627 y(29)-40 1683 y(30)-40 1740 y(31)-40 1796 y(32)-40
1853 y(33)-40 1909 y(34)-40 1966 y(35)-40 2022 y(36)-40
2078 y(37)-40 2135 y(38)-40 2191 y(39)-40 2248 y(40)-40
2304 y(41)-40 2361 y(42)-40 2417 y(43)-40 2474 y(44)-40
2530 y(45)-40 2587 y(46)-40 2643 y(47)-40 2699 y(48)p
eop
%%Page: 10 12
10 11 bop 75 -100 a Fs(10)1110 b Fg(CHAPTER)15 b(10.)35
b(MISCELLANY)75 45 y Fs(systems)15 b(with)g(an)g(address)h(range)e
Ff(>)f Fs(2)767 29 y Fc(32)805 45 y Fs(,)h(and)i(to)e(pro)o(vide)i
(compatibilit)o(y)h(across)d(languages.)75 165 y Fe(10.2.8)49
b(Groups)75 298 y Fo(Curren)o(t)14 b(Status:)j Fn(P)o(assed)e(once.)166
401 y Fs(A)j(group)g(ob)s(ject)g(represen)o(t)h(the)f(same)g(group)g
(in)h(all)h(languages:)26 b(the)18 b(same)g(pro)q(cesses,)i(with)75
458 y(the)15 b(same)g(ranks.)20 b(Group)15 b(accessors)f(suc)o(h)i(as)f
Fj(MPI)p 986 458 14 2 v 15 w(GROUP)p 1153 458 V 18 w(SIZE)g
Fs(return)g(the)h(same)f(v)m(alue.)75 577 y Fe(10.2.9)49
b(Communicato)o(rs)75 710 y Fo(Curren)o(t)14 b(Status:)j
Fn(P)o(assed)e(once.)166 814 y Fs(A)k(comm)o(unicator)g(represen)o(ts)h
(the)f(same)g(group)g(and)h(same)f(comm)o(unication)h(domain)g(in)g
(all)75 870 y(languages.)25 b(In)17 b(particular,)h(a)e(message)g(sen)o
(t)h(from)f(one)h(language)g(using)g(a)g(comm)o(unicator)f(can)h(b)q(e)
75 927 y(receiv)o(ed)e(from)e(another)g(language,)h(using)h(the)f(matc)
o(hing)g(comm)o(unicator)f(on)h(another)f(pro)q(cess;)h(col-)75
983 y(lectiv)o(e)j(comm)o(unication)f(can)g(in)o(v)o(olv)o(e)g(pro)q
(cesses)g(executing)h(co)q(de)f(written)g(in)g(di\013eren)o(t)g
(languages,)75 1040 y(using)f(matc)o(hing)g(comm)o(unicators;)f
(accessors)g(suc)o(h)h(as)f Fj(MPI)p 1152 1040 V 16 w(COMM)p
1310 1040 V 16 w(SIZE)h Fs(return)f(the)h(same)f(v)m(alue;)75
1096 y(etc.)166 1153 y(T)l(op)q(ology)e(information)h(asso)q(ciated)f
(to)g(a)g(comm)o(unicator)g(can)g(b)q(e)h(accessed)g(in)h(an)o(y)e(of)f
(the)i(three)75 1209 y(languages.)75 1329 y Fe(10.2.10)50
b(A)o(ttributes)75 1462 y Fo(Curren)o(t)14 b(Status:)j
Fn(No)d(v)o(otes.)166 1565 y Fs(A)o(ttribute)k(k)o(eys)g(can)h(b)q(e)g
(allo)q(cated)g(in)g(one)f(language)h(and)f(freed)h(in)g(another.)28
b(Similarly)l(,)21 b(at-)75 1622 y(tributes)13 b(v)m(alues)i(can)e(b)q
(e)h(set)e(in)i(one)g(langage)f(and)g(accessed)g(in)h(another.)19
b(T)l(o)13 b(ac)o(hiev)o(e)h(this,)f(attribute)75 1678
y(k)o(eys)j(will)i(b)q(e)f(allo)q(cated)g(in)g(an)g(in)o(teger)f(range)
g(that)f(is)i(v)m(alid)h(all)f(languages.)24 b(The)16
b(same)g(holds)h(true)75 1735 y(for)e(system)f(de\014ned)j(attribute)e
(v)m(alues)h(\(suc)o(h)f(as)g Fd(MPI)p 1032 1735 13 2
v 15 w(T)m(A)o(G)p 1127 1735 V 14 w(UB,)d(MPI)p 1297
1735 V 14 w(IO)p Fs(,)i(etc.\))166 1791 y(A)o(ttribute)d(k)o(eys)g
(declared)h(in)g(one)f(language)g(are)g(asso)q(ciated)h(with)f(cop)o(y)
g(and)g(delete)h(functions)g(in)75 1848 y(that)e(language)g(\(the)h
(functions)g(pro)o(vided)g(b)o(y)f(the)h Fj(MPI)p 1035
1848 14 2 v 16 w(Keyval)p 1178 1848 V 15 w(create)g Fs(call\).)19
b(When)11 b(a)f(comm)o(unicator)75 1904 y(is)16 b(duplicated,)i(for)d
(eac)o(h)h(attribute,)g(the)g(corresp)q(onding)h(cop)o(y)e(function)i
(is)f(called,)i(using)e(the)g(righ)o(t)75 1960 y(calling)j(con)o(v)o
(en)o(tion)e(for)g(the)h(language)f(of)g(that)g(function;)h(and)g
(similarly)l(,)h(for)e(the)g(delete)i(callbac)o(k)75
2017 y(function.)189 2106 y Fi(A)n(dvic)n(e)i(to)h(implementors.)77
b Fs(This)22 b(requires)g(that)f(attributes)g(b)q(e)h(tagged)f(either)h
(as)f(\\C",)189 2163 y(\\C++")15 b(or)g(\\F)l(ortran",)e(and)j(that)e
(the)i(language)f(tag)g(b)q(e)h(c)o(hec)o(k)o(ed)g(in)g(order)f(to)g
(use)h(the)f(righ)o(t)189 2219 y(calling)i(con)o(v)o(en)o(tion)e(for)f
(the)i(callbac)o(k)g(function.)21 b(\()p Fi(End)15 b(of)i(advic)n(e)f
(to)g(implementors.)p Fs(\))166 2308 y(The)21 b(attribute)g
(manipulation)h(functions)g(describ)q(ed)g(in)g(section)f(5.7)f(of)h
(the)g(MPI)f(standard)75 2365 y(de\014ne)d(attributes)e(argumen)o(ts)g
(to)f(b)q(e)j(of)e(t)o(yp)q(e)g Fd(void*)h Fs(in)g(C,)f(and)h(of)f(t)o
(yp)q(e)g Fd(INTEGER)p Fs(,)f(in)j(F)l(ortran.)i(On)75
2421 y(some)14 b(systems,)f Fd(INTEGER)p Fs(s)h(will)i(ha)o(v)o(e)e(32)
f(bits,)i(while)g(C/C++)g(p)q(oin)o(ters)f(will)i(ha)o(v)o(e)e(64)g
(bits.)20 b(This)14 b(is)75 2478 y(a)j(problem)g(if)g(comm)o(unicator)g
(attributes)f(are)h(used)g(to)g(mo)o(v)o(e)f(information)h(from)f(a)g
(F)l(ortran)g(caller)75 2534 y(to)f(a)f(C/C++)i(callee,)g(or)f(vice-v)o
(ersa.)-858 b Fl(>)15 b Fk(\(Oct\))166 2591 y Fs(MPI)j(will)h(store,)e
(in)o(ternally)l(,)j(address)d(sized)i(attributes.)27
b(If)18 b(F)l(ortran)e Fd(INTEGER)p Fs(s)h(are)h(smaller,)75
2647 y(then)g(the)f(F)l(ortran)g(function)h Fj(MPI)p
694 2647 V 16 w(A)l(TTR)p 827 2647 V 17 w(GET)g Fs(will)h(return)e(the)
h(least)f(signi\014can)o(t)i(part)e(of)g(the)g(at-)75
2704 y(tribute)e(w)o(ord;)f(the)g(F)l(ortran)g(function)h
Fj(MPI)p 855 2704 V 16 w(A)l(TTR)p 988 2704 V 17 w(PUT)g
Fs(will)h(set)f(the)f(least)h(signi\014can)o(t)h(part)e(of)g(the)1967
46 y Fk(1)1967 103 y(2)1967 159 y(3)1967 215 y(4)1967
272 y(5)1967 328 y(6)1967 385 y(7)1967 441 y(8)1967 498
y(9)1959 554 y(10)1959 611 y(11)1959 667 y(12)1959 724
y(13)1959 780 y(14)1959 836 y(15)1959 893 y(16)1959 949
y(17)1959 1006 y(18)1959 1062 y(19)1959 1119 y(20)1959
1175 y(21)1959 1232 y(22)1959 1288 y(23)1959 1345 y(24)1959
1401 y(25)1959 1457 y(26)1959 1514 y(27)1959 1570 y(28)1959
1627 y(29)1959 1683 y(30)1959 1740 y(31)1959 1796 y(32)1959
1853 y(33)1959 1909 y(34)1959 1966 y(35)1959 2022 y(36)1959
2078 y(37)1959 2135 y(38)1959 2191 y(39)1959 2248 y(40)1959
2304 y(41)1959 2361 y(42)1959 2417 y(43)1959 2474 y(44)1959
2530 y(45)1959 2587 y(46)1959 2643 y(47)1959 2699 y(48)p
eop
%%Page: 11 13
11 12 bop 75 -100 a Fg(10.2.)34 b(LANGUA)o(GE)15 b(INTER)o(OPERABILITY)
876 b Fs(11)75 45 y(attribute)16 b(w)o(ord,)f(whic)o(h)i(will)g(b)q(e)g
(sign)f(extended)h(to)f(the)g(en)o(tire)g(w)o(ord.)21
b(\(These)16 b(t)o(w)o(o)f(functions)i(ma)o(y)75 102
y(b)q(e)f(in)o(v)o(ok)o(ed)f(explicitly)j(b)o(y)d(user)h(co)q(de,)f(or)
g(implicitly)l(,)j(b)o(y)d(attribute)g(cop)o(ying)h(callbac)o(k)g
(functions.\))189 208 y Fi(A)n(dvic)n(e)f(to)i(users.)40
b Fs(Users)15 b(are)g(encouraged)g(to)g(use)g(the)g(t)o(w)o(o)f(new)i
(functions)189 264 y Fj(MPI)p 274 264 14 2 v 15 w(HANDLE)p
468 264 V 17 w(A)l(TTR)p 602 264 V 17 w(GET)24 b Fs(and)f
Fj(MPI)p 909 264 V 16 w(HANDLE)p 1104 264 V 17 w(A)l(TTR)p
1238 264 V 17 w(GET)p Fs(,)g(describ)q(ed)i(in)f(Section)g
Fh(??)p Fs(,)189 321 y(page)17 b Fh(??)p Fs(.)26 b(Their)18
b(F)l(ortran)e(binding)k(sp)q(eci\014es)f(address)f(sized)g(in)o(teger)
g(argumen)o(ts,)f(th)o(us)g(pro-)189 377 y(viding)f(language)g(in)o
(terop)q(erabilit)o(y)l(.)22 b(\()p Fi(End)15 b(of)h(advic)n(e)h(to)f
(users.)p Fs(\))1875 438 y Fl(?)g Fk(\(Oct\))75 549 y
Fe(10.2.11)50 b(Requests)75 682 y Fo(Curren)o(t)14 b(Status:)j
Fn(P)o(assed)e(once.)166 785 y Fs(A)g(v)m(alid)i(request)e(created)g
(in)h(on)f(language)g(can)g(b)q(e)h(accessed,)f(up)q(dated,)h(freed,)f
(or)f(canceled)j(in)75 842 y(another)e(language.)75 964
y Fe(10.2.12)50 b(Erro)o(r)15 b(handlers)75 1097 y Fo(Curren)o(t)f
(Status:)j Fn(P)o(assed)e(once.)166 1200 y Fs(Error)c(handles)i(can)g
(b)q(e)f(allo)q(cated)i(and)e(deallo)q(cated)h(in)g(an)o(y)f(com)o
(bination)h(of)f(languages.)19 b(When)75 1257 y(an)c(MPI)h(exception)h
(o)q(ccurs,)e(then)h(the)g(last)f(error)g(handler)i(asso)q(ciated)e
(with)h(the)g(relev)m(an)o(t)g(comm)o(u-)75 1313 y(nicator)h(is)g(in)o
(v)o(ok)o(ed,)g(irresp)q(ectiv)o(e)h(of)f(the)f(language)h(en)o
(vironmen)o(t)g(where)g(the)g(error)f(o)q(ccurred)i(and)75
1370 y(the)h(en)o(vironmen)o(t)f(where)h(the)g(handler)h(w)o(as)d(asso)
q(ciated)i(with)g(the)g(comm)o(unicator.)29 b(The)19
b(handler)75 1426 y(will)e(b)q(e)f(in)o(v)o(ok)o(ed)f(with)h(the)f
(righ)o(t)g(argumen)o(t)f(passing)i(con)o(v)o(en)o(tion.)189
1532 y Fi(A)n(dvic)n(e)j(to)h(implementors.)65 b Fs(Error)18
b(handler)j(ob)s(jects)d(need)j(to)d(ha)o(v)o(e)h(a)g(language)h(tag,)f
(lik)o(e)189 1589 y(attribute)e(k)o(eys,)h(so)f(as)h(to)f(use)h(the)g
(righ)o(t)f(calling)j(con)o(v)o(en)o(tion.)27 b(These)18
b(handlers)h(ha)o(v)o(e,)f(in)g(C)189 1645 y(and)f(C++,)h(a)f(\\)p
Fm(stdargs)p Fs(")e(argumen)o(t)i(list.)26 b(It)18 b(migh)o(t)f(b)q(e)g
(useful)i(to)d(pro)o(vide)i(to)f(the)g(handler)189 1702
y(information)c(on)h(the)f(language)h(en)o(vironmen)o(t)g(where)f(the)h
(error)e(o)q(ccurred.)20 b(\()p Fi(End)14 b(of)h(advic)n(e)g(to)189
1758 y(implementors.)p Fs(\))75 1880 y Fe(10.2.13)50
b(Reduce)16 b(op)q(erations)75 2013 y Fo(Curren)o(t)e(Status:)j
Fn(P)o(assed)e(once.)166 2117 y Fs(Reduce)g(op)q(erations)e(de\014ned)i
(in)f(one)f(language)h(\(b)o(y)e(a)h(call)i(to)d Fj(MPI)p
1352 2117 V 16 w(OP)p 1430 2117 V 17 w(CREA)l(TE)p Fs(\))i(can)f(b)q(e)
h(used)75 2173 y(or)h(deallo)q(cated)h(in)g(an)o(y)f(other)g(language.)
189 2280 y Fi(A)n(dvic)n(e)h(to)h(users.)47 b Fs(Reduce)18
b(op)q(erations)e(receiv)o(e,)h(as)f(one)g(of)g(their)h(argumen)o(t,)e
(the)h(datat)o(yp)q(e)189 2336 y(of)d(the)g(op)q(erands.)20
b(Th)o(us,)14 b(one)f(can)h(de\014ne)h(\\p)q(olymorphic")f(reduce)g(op)
q(erations)g(that)f(w)o(ork)g(for)189 2392 y(C,)h(C++,)i(and)f(F)l
(ortran)f(datat)o(yp)q(es.)19 b(\()p Fi(End)d(of)g(advic)n(e)g(to)h
(users.)p Fs(\))189 2499 y Fi(A)n(dvic)n(e)c(to)i(implementors.)39
b Fs(Reduce)15 b(op)q(eration)f(ob)s(jects)f(need)h(to)f(carry)g(a)h
(language)f(tag,)g(lik)o(e)189 2555 y(attribute)h(k)o(eys,)g(so)h(as)f
(to)g(use)h(the)g(righ)o(t)f(calling)j(con)o(v)o(en)o(tion.)i(\()p
Fi(End)d(of)g(advic)n(e)f(to)h(implemen-)189 2612 y(tors.)p
Fs(\))-32 46 y Fk(1)-32 103 y(2)-32 159 y(3)-32 215 y(4)-32
272 y(5)-32 328 y(6)-32 385 y(7)-32 441 y(8)-32 498 y(9)-40
554 y(10)-40 611 y(11)-40 667 y(12)-40 724 y(13)-40 780
y(14)-40 836 y(15)-40 893 y(16)-40 949 y(17)-40 1006
y(18)-40 1062 y(19)-40 1119 y(20)-40 1175 y(21)-40 1232
y(22)-40 1288 y(23)-40 1345 y(24)-40 1401 y(25)-40 1457
y(26)-40 1514 y(27)-40 1570 y(28)-40 1627 y(29)-40 1683
y(30)-40 1740 y(31)-40 1796 y(32)-40 1853 y(33)-40 1909
y(34)-40 1966 y(35)-40 2022 y(36)-40 2078 y(37)-40 2135
y(38)-40 2191 y(39)-40 2248 y(40)-40 2304 y(41)-40 2361
y(42)-40 2417 y(43)-40 2474 y(44)-40 2530 y(45)-40 2587
y(46)-40 2643 y(47)-40 2699 y(48)p eop
%%Page: 12 14
12 13 bop 75 -100 a Fs(12)1115 b Fg(CHAPTER)15 b(10.)30
b(MISCELLANY)75 45 y Fe(10.2.14)50 b(Status)75 178 y
Fo(Curren)o(t)14 b(Status:)j Fn(V)m(ote??)166 282 y Fs(MPI)i(do)q(es)g
(not)g(pro)o(vide)g(a)g(mec)o(hanism)g(for)g(passing)g(status)f(ob)s
(jects)g(from)g(one)h(language)h(to)75 338 y(another.)189
442 y Fi(R)n(ationale.)40 b Fs(The)15 b(MPI)g(status)g(ob)s(ject)f(is)i
(not)f(really)h(an)f(opaque)g(ob)s(ject,)f(since)j(its)e(structure)189
499 y(is)k(partially)g(visible)i(to)c(the)i(user,)g(and)g(the)f(ob)s
(ject)g(is)h(allo)q(cated)g(b)o(y)g(the)f(user.)30 b(A)19
b(C)f(status)189 555 y(ob)s(ject)12 b(is)h(a)f(structure,)g(a)h(C++)g
(status)e(ob)s(ject)h(is)h(a)g(real)f(ob)s(ject,)h(and)f(a)g(F)l
(ortran)g(status)g(ob)s(ject)189 612 y(is)j(an)f(arra)o(y)l(.)19
b(Instead)c(of)f(passing)h(status)f(ob)s(jects,)g(one)h(can)f(pass)h
(requests,)f(and)h(use)g(them)g(to)189 668 y(buld)h(status)f(ob)s
(jects.)k(\()p Fi(End)c(of)i(r)n(ationale.)p Fs(\))75
790 y Fe(10.2.15)50 b(Constants)75 923 y Fo(Curren)o(t)14
b(Status:)j Fn(P)o(assed)e(once.)166 1026 y Fs(MPI)i(constan)o(ts)f(ha)
o(v)o(e)g(the)h(same)g(v)m(alue)h(in)g(all)g(languages.)25
b(This)18 b(includes,)h(error)d(co)q(des,)i(con-)75 1083
y(stan)o(ts)12 b(suc)o(h)h(as)g Fm(MPI)p 435 1083 15
2 v 17 w(PROC)p 548 1083 V 16 w(NULL)g Fs(or)f Fm(MPI)p
798 1083 V 17 w(ANY)p 887 1083 V 17 w(TAG)p Fs(,)g(etc.)19
b(This)14 b(do)q(es)f(not)f(apply)i(to)f(constan)o(t)f(handles)75
1139 y(\()p Fd(MPI)p 170 1139 13 2 v 14 w(INT,)17 b(MPI)p
357 1139 V 15 w(COMM)p 502 1139 V 14 w(W)o(ORLD,)h(MPI)p
769 1139 V 14 w(ERRORS)p 943 1139 V 14 w(RETURN,)f(MPI)p
1226 1139 V 14 w(SUM)p Fs(,)i(etc.\))33 b(These)19 b(handles)i(need)75
1196 y(to)15 b(b)q(e)h(con)o(v)o(erted,)e(as)h(explained)j(in)e
(Section)g(10.2.4.)i Fd(MPI)p 1109 1196 V 15 w(BOTTOM)d
Fs(ma)o(y)f(ha)o(v)o(e)h(di\013eren)o(t)h(v)m(alues)g(in)75
1252 y(F)l(ortran,)e(C,)g(and)i(C++.)166 1356 y Fo(Missing:)h
Fn(Need)d(to)g(add)g(the)g(new)h(MPI2)f(sp)q(ecial)g(addresses)75
1525 y Fe(10.2.16)50 b(Interlanguage)17 b(communication)75
1658 y Fo(Curren)o(t)d(Status:)j Fn(P)o(assed)e(once.)166
1761 y Fs(The)i(t)o(yp)q(e)h(matc)o(hing)f(rules)h(for)e(comm)o
(unications)i(in)g(MPI)f(are)g(not)g(c)o(hanged:)24 b(The)17
b(datat)o(yp)q(e)75 1818 y(sp)q(eci\014cation)g(for)e(eac)o(h)h(item)f
(sen)o(t)h(should)g(matc)o(h,)f(textually)l(,)h(the)f(datat)o(yp)q(e)g
(sp)q(eci\014cation)j(used)e(to)75 1874 y(receiv)o(e)g(this)g(item)f
(\(unless)h(one)g(of)e(the)i(t)o(yp)q(es)f(is)h Fd(MPI)p
1025 1874 V 14 w(P)m(A)o(CKED)p Fs(\).)c(And)k(the)f(t)o(yp)q(e)g(of)g
(a)g(message)g(item)75 1931 y(should)21 b(matc)o(h)e(the)h(t)o(yp)q(e)f
(declaration)i(for)e(the)h(corresp)q(onding)g(comm)o(unication)h
(bu\013er)f(lo)q(cation,)75 1987 y(unless)c(the)g(t)o(yp)q(e)f(is)h
Fd(MPI)p 513 1987 V 14 w(BYTE)e Fs(or)h Fd(MPI)p 781
1987 V 14 w(P)m(A)o(CKED)p Fs(.)e(In)o(terlanguage)i(comm)o(unication)h
(is)g(allo)o(w)o(ed,)f(if)h(it)75 2044 y(complies)h(with)e(these)h
(rules.)75 2148 y Fh(Example)i(10.10)23 b Fs(In)16 b(the)g(example)g(b)
q(elo)o(w,)g(a)f(F)l(ortran)g(arra)o(y)f(is)i(sen)o(t)g(from)f(F)l
(ortran)f(and)i(receiv)o(ed)75 2204 y(in)g(C.)75 2308
y Fm(!)24 b(FORTRAN)f(CODE)75 2365 y(REAL)g(R\(5\))75
2421 y(INTEGER)g(TYPE,)g(ADDR,)g(IERR,)g(MYRANK)75 2534
y(!)h(create)f(an)g(absolute)g(datatype)g(for)g(array)h(R)75
2591 y(CALL)f(MPI_ADDRESS\()g(R,)g(ADDR\))75 2647 y(CALL)g
(MPI_TYPE_STRUCT\(1,)f(5,)h(ADDR,)g(MPI_REAL,)g(TYPE,)g(IERR\))75
2704 y(CALL)g(MPI_TYPE_COMMIT\()f(TYPE\))1967 46 y Fk(1)1967
103 y(2)1967 159 y(3)1967 215 y(4)1967 272 y(5)1967 328
y(6)1967 385 y(7)1967 441 y(8)1967 498 y(9)1959 554 y(10)1959
611 y(11)1959 667 y(12)1959 724 y(13)1959 780 y(14)1959
836 y(15)1959 893 y(16)1959 949 y(17)1959 1006 y(18)1959
1062 y(19)1959 1119 y(20)1959 1175 y(21)1959 1232 y(22)1959
1288 y(23)1959 1345 y(24)1959 1401 y(25)1959 1457 y(26)1959
1514 y(27)1959 1570 y(28)1959 1627 y(29)1959 1683 y(30)1959
1740 y(31)1959 1796 y(32)1959 1853 y(33)1959 1909 y(34)1959
1966 y(35)1959 2022 y(36)1959 2078 y(37)1959 2135 y(38)1959
2191 y(39)1959 2248 y(40)1959 2304 y(41)1959 2361 y(42)1959
2417 y(43)1959 2474 y(44)1959 2530 y(45)1959 2587 y(46)1959
2643 y(47)1959 2699 y(48)p eop
%%Page: 13 15
13 14 bop 75 -100 a Fg(10.3.)34 b(NEW)15 b(D)o(A)l(T)l(A)l(TYPE)g
(MANIPULA)l(TION)i(FUNCTIONS)574 b Fs(13)75 102 y Fm(CALL)23
b(MPI_COMM_RANK\()f(MPI_COMM_WORLD,)g(MYRANK,)h(IERR\))75
158 y(IF)h(\(MYRANK.EQ.0\))e(THEN)75 214 y(CALL)h(MPI_SEND\()g
(MPI_BOTTOM,)f(1,)i(TYPE,)f(1,)h(0,)f(MPI_COMM_WORLD,)f(IERR\))75
271 y(ELSE)75 327 y(CALL)h(MPI_HANDLE2INT\(TYPE,)e(CODE\))75
384 y(CALL)i(C_ROUTINE\(CODE\))75 440 y(END)g(IF)75 610
y(/*)h(C)f(code)h(*/)75 723 y(void)f(C_ROUTINE\(MPI_Fint)f(*fhandle\))
75 779 y({)75 835 y(void)h(*handle;)75 892 y(MPI_Datatype)f(type;)75
948 y(MPI_Status)g(status;)75 1061 y(type)h(=)h
(\(MPI_Datatype\)MPI_Int2hand)o(le\(fhand)o(le\);)75
1174 y(MPI_Recv\()f(MPI_BOTTOM,)f(1,)i(type,)f(0,)g(0,)h
(MPI_COMM_WORLD,)e(status\);)75 1231 y(})166 1337 y Fs(MPI)17
b(implemen)o(tors)h(ma)o(y)f(w)o(eak)o(en)g(these)h(t)o(yp)q(e)f(matc)o
(hing)h(rules,)g(and)g(allo)o(w)g(messages)e(to)h(b)q(e)75
1393 y(sen)o(t)c(with)g(F)l(ortran)f(t)o(yp)q(es)h(and)g(receiv)o(ed)h
(with)f(C)g(t)o(yp)q(es,)g(and)g(vice)h(v)o(ersa,)e(when)h(those)g(t)o
(yp)q(es)g(matc)o(h.)75 1450 y(I.e.,)g(if)h(the)f(F)l(ortran)f(t)o(yp)q
(e)h Fd(INTEGER)f Fs(is)i(iden)o(tical)h(to)d(the)i(C)e(t)o(yp)q(e)i
Fd(int)p Fs(,)f(then)h(an)f(MPI)g(implemen)o(tation)75
1506 y(ma)o(y)22 b(allo)o(w)g(data)g(to)f(b)q(e)i(sen)o(t)g(with)f
(datat)o(yp)q(e)g Fd(MPI)p 1035 1506 13 2 v 14 w(INTEGER)g
Fs(and)g(b)q(e)h(receiv)o(ed)h(with)e(datat)o(yp)q(e)75
1563 y Fd(MPI)p 152 1563 V 14 w(INT)p Fs(.)15 b(Ho)o(w)o(ev)o(er,)f
(suc)o(h)i(co)q(de)f(is)h(not)f(p)q(ortable.)906 b Fl(>)16
b Fk(\(Oct\))75 1706 y Fp(10.3)59 b(New)20 b(datat)n(yp)r(e)d
(manipulation)i(functions)75 1807 y Fs(New)e(functions)h(are)e(pro)o
(vided)i(to)f(supplemen)o(t)h(the)f(t)o(yp)q(e)g(manipulation)h
(functions)g(that)e(ha)o(v)o(e)h(ad-)75 1864 y(dress)d(sized)i(in)o
(teger)e(argumen)o(ts.)k(The)d(new)f(functions)h(will)h(use,)e(in)h
(their)g(F)l(ortran)e(binding)j(address)75 1920 y(sized)g
Fd(INTEGER)p Fs(s,)d(th)o(us)i(solving)g(problems)g(curren)o(tly)g
(encoun)o(tered)h(when)f(the)g(application)h(address)75
1977 y(range)h(is)i Ff(>)e Fs(2)325 1960 y Fc(32)362
1977 y Fs(.)27 b(Also,)18 b(a)g(new,)g(more)f(con)o(v)o(enien)o(t)h(t)o
(yp)q(e)g(constructor)f(is)h(pro)o(vided)h(to)e(mo)q(dify)h(the)75
2033 y(lo)o(w)o(er)d(b)q(ound)h(and)f(exten)o(t)g(of)g(a)g(datat)o(yp)q
(e.)75 2155 y Fe(10.3.1)49 b(T)l(yp)q(e)17 b(constructo)o(rs)d(with)j
(explicit)g(addresses)75 2241 y Fs(The)11 b(four)f(functions)h(b)q(elo)
o(w)h(supplemen)o(t)f(the)g(four)f(corresp)q(onding)i(t)o(yp)q(e)f
(constructor)e(functions)j(from)75 2297 y Fj(MPI-1)p
Fs(.)18 b(The)c(new)f(functions)g(are)g(synon)o(ymous)g(with)g(the)g
(old)g(functions)h(in)g(C/C++,)f(or)f(on)h(F)l(ortran)75
2354 y(systems)k(where)h(default)h Fd(INTEGER)p Fs(s)e(are)g(address)h
(sized.)29 b(In)19 b(F)l(ortran,)d(they)i(accept)g(argumen)o(ts)f(of)75
2410 y(t)o(yp)q(e)e Fd(INTEGER\(KIND=MPI)p 576 2410 V
13 w(ADDRESS)p 775 2410 V 15 w(SIZE\))p Fs(,)f(wherev)o(er)g(argumen)o
(ts)g(of)g(t)o(yp)q(e)h Fd(MPI)p 1558 2410 V 14 w(Aint)g
Fs(are)f(used)h(in)75 2467 y(C.)i(On)i(F)l(ortran)d(77)i(systems)f
(that)g(do)h(not)f(supp)q(ort)h(the)g(F)l(ortran)f(90)g
Fd(KIND)h Fs(notation,)g(and)g(where)75 2523 y(addresses)c(are)g(64)f
(bits)h(whereas)g(default)h Fd(INTEGER)p Fs(s)e(are)g(32)h(bits,)g
(these)g(argumen)o(ts)f(will)j(b)q(e)e(of)g(t)o(yp)q(e)75
2580 y Fd(INTEGER*8)p Fs(.)19 b(The)c(old)g(functions)h(will)h(con)o
(tin)o(ue)e(to)g(b)q(e)g(pro)o(vided,)h(for)e(p)q(ortabilit)o(y)l(.)21
b(Ho)o(w)o(ev)o(er,)14 b(users)75 2636 y(are)h(encouraged)g(to)g(switc)
o(h)g(to)g(the)g(new)h(functions,)f(in)h(F)l(ortran.)166
2692 y(The)f(new)h(functions)g(are)f(listed)h(b)q(elo)o(w.)-32
46 y Fk(1)-32 103 y(2)-32 159 y(3)-32 215 y(4)-32 272
y(5)-32 328 y(6)-32 385 y(7)-32 441 y(8)-32 498 y(9)-40
554 y(10)-40 611 y(11)-40 667 y(12)-40 724 y(13)-40 780
y(14)-40 836 y(15)-40 893 y(16)-40 949 y(17)-40 1006
y(18)-40 1062 y(19)-40 1119 y(20)-40 1175 y(21)-40 1232
y(22)-40 1288 y(23)-40 1345 y(24)-40 1401 y(25)-40 1457
y(26)-40 1514 y(27)-40 1570 y(28)-40 1627 y(29)-40 1683
y(30)-40 1740 y(31)-40 1796 y(32)-40 1853 y(33)-40 1909
y(34)-40 1966 y(35)-40 2022 y(36)-40 2078 y(37)-40 2135
y(38)-40 2191 y(39)-40 2248 y(40)-40 2304 y(41)-40 2361
y(42)-40 2417 y(43)-40 2474 y(44)-40 2530 y(45)-40 2587
y(46)-40 2643 y(47)-40 2699 y(48)p eop
%%Page: 14 16
14 15 bop 75 -100 a Fs(14)1110 b Fg(CHAPTER)15 b(10.)35
b(MISCELLANY)75 45 y Fj(MPI)p 160 45 14 2 v 16 w(TYPE)p
293 45 V 17 w(HVECTOR)p 521 45 V 17 w(X\()16 b(count,)g(blo)q
(cklength,)g(stride,)g(oldt)o(yp)q(e,)g(newt)o(yp)q(e\))117
122 y Fn(IN)155 b Fj(count)482 b Fn(n)o(um)o(b)q(er)13
b(of)h(blo)q(c)o(ks)g(\(nonnegativ)o(e)f(in)o(teger\))117
197 y(IN)155 b Fj(blo)q(cklength)371 b Fn(n)o(um)o(b)q(er)16
b(of)h(elemen)o(ts)g(in)f(eac)o(h)i(blo)q(c)o(k)e(\(nonnegativ)o(e)h
(in)o(te-)905 254 y(ger\))117 329 y(IN)155 b Fj(stride)484
b Fn(n)o(um)o(b)q(er)13 b(of)g(b)o(ytes)h(b)q(et)o(w)o(een)h(start)f
(of)f(eac)o(h)h(blo)q(c)o(k)f(\(in)o(teger\))117 404
y(IN)155 b Fj(oldt)o(yp)q(e)450 b Fn(old)13 b(datat)o(yp)q(e)i
(\(handle\))117 479 y(OUT)108 b Fj(newt)o(yp)q(e)433
b Fn(new)15 b(datat)o(yp)q(e)f(\(handle\))75 604 y Fm(int)23
b(MPI)p 245 604 15 2 v 17 w(Type)p 358 604 V 17 w(hvector)p
543 604 V 16 w(x\(int)g(count,)g(int)h(blocklength,)e(MPI)p
1347 604 V 17 w(Aint)h(stride,)393 660 y(MPI)p 468 660
V 17 w(Datatype)g(oldtype,)f(MPI)p 986 660 V 17 w(Datatype)h
(*newtype\))75 747 y(MPI)p 150 747 V 17 w(TYPE)p 263
747 V 16 w(HVECTOR)p 447 747 V 17 w(X\(COUNT,)f(BLOCKLENGTH,)h(STIDE,)g
(OLDTYPE,)f(NEWTYPE,)h(IERROR\))170 803 y(INTEGER)g(COUNT,)g
(BLOCKLENGTH,)g(OLDTYPE,)f(NEWTYPE,)h(IERROR)170 860
y(INTEGER\(KIND=MPI)p 557 860 V 15 w(ADDRESS)p 740 860
V 17 w(SIZE\))g(STRIDE)75 1041 y Fj(MPI)p 160 1041 14
2 v 16 w(TYPE)p 293 1041 V 17 w(HINDEXED)p 537 1041 V
16 w(X\()14 b(count,)h(a)o(rra)o(y)p 843 1041 V 14 w(of)p
894 1041 V 16 w(blo)q(cklengths,)h(a)o(rra)o(y)p 1267
1041 V 15 w(of)p 1319 1041 V 16 w(displacements,)f(oldt)o(yp)q(e,)g
(new-)75 1097 y(t)o(yp)q(e\))117 1174 y Fn(IN)155 b Fj(count)482
b Fn(n)o(um)o(b)q(er)34 b(of)f(blo)q(c)o(ks)h({)g(also)f(n)o(um)o(b)q
(er)h(of)f(en)o(tries)i(in)905 1231 y Fd(a)o(rra)o(y)p
992 1231 13 2 v 15 w(of)p 1041 1231 V 15 w(displacements)19
b Fn(and)f Fd(a)o(rra)o(y)p 1483 1231 V 15 w(of)p 1532
1231 V 14 w(blo)q(cklengths)i Fn(\(in)o(te-)905 1287
y(ger\))117 1362 y(IN)155 b Fj(a)o(rra)o(y)p 416 1362
14 2 v 15 w(of)p 468 1362 V 16 w(blo)q(cklengths)191
b Fn(n)o(um)o(b)q(er)15 b(of)g(elemen)o(ts)h(in)f(eac)o(h)h(blo)q(c)o
(k)g(\(arra)o(y)f(of)g(nonnega-)905 1419 y(tiv)o(e)f(in)o(tegers\))117
1494 y(IN)155 b Fj(a)o(rra)o(y)p 416 1494 V 15 w(of)p
468 1494 V 16 w(displacements)164 b Fn(b)o(yte)14 b(displacemen)o(t)g
(of)f(eac)o(h)h(blo)q(c)o(k)g(\(arra)o(y)g(of)f(in)o(teger\))117
1569 y(IN)155 b Fj(oldt)o(yp)q(e)450 b Fn(old)13 b(datat)o(yp)q(e)i
(\(handle\))117 1644 y(OUT)108 b Fj(newt)o(yp)q(e)433
b Fn(new)15 b(datat)o(yp)q(e)f(\(handle\))75 1769 y Fm(int)23
b(MPI)p 245 1769 15 2 v 17 w(Type)p 358 1769 V 17 w(hindexed)p
567 1769 V 16 w(x\(int)g(count,)g(int)h(*array)p 1133
1769 V 16 w(of)p 1197 1769 V 17 w(blocklengths,)393 1825
y(MPI)p 468 1825 V 17 w(Aint)f(*array)p 748 1825 V 17
w(of)p 813 1825 V 17 w(displacements,)e(MPI)p 1259 1825
V 17 w(Datatype)i(oldtype,)393 1881 y(MPI)p 468 1881
V 17 w(Datatype)g(*newtype\))75 1968 y(MPI)p 150 1968
V 17 w(TYPE)p 263 1968 V 16 w(HINDEXED)p 471 1968 V 16
w(X\(COUNT,)g(ARRAY)p 822 1968 V 17 w(OF)p 887 1968 V
17 w(BLOCKLENGTHS,)f(ARRAY)p 1358 1968 V 16 w(OF)p 1422
1968 V 17 w(DISPLACEMENTS,)393 2024 y(OLDTYPE,)h(NEWTYPE,)g(IERROR\))
170 2081 y(INTEGER)g(COUNT,)g(ARRAY)p 651 2081 V 17 w(OF)p
716 2081 V 17 w(BLOCKLENGTHS\(*\),)e(OLDTYPE,)i(NEWTYPE,)g(IERROR)170
2137 y(INTEGER\(KIND=MPI)p 557 2137 V 15 w(ADDRESS)p
740 2137 V 17 w(SIZE\))g(ARRAY)p 1020 2137 V 16 w(OF)p
1084 2137 V 17 w(DISPLACEMENTS\(*\))1967 46 y Fk(1)1967
103 y(2)1967 159 y(3)1967 215 y(4)1967 272 y(5)1967 328
y(6)1967 385 y(7)1967 441 y(8)1967 498 y(9)1959 554 y(10)1959
611 y(11)1959 667 y(12)1959 724 y(13)1959 780 y(14)1959
836 y(15)1959 893 y(16)1959 949 y(17)1959 1006 y(18)1959
1062 y(19)1959 1119 y(20)1959 1175 y(21)1959 1232 y(22)1959
1288 y(23)1959 1345 y(24)1959 1401 y(25)1959 1457 y(26)1959
1514 y(27)1959 1570 y(28)1959 1627 y(29)1959 1683 y(30)1959
1740 y(31)1959 1796 y(32)1959 1853 y(33)1959 1909 y(34)1959
1966 y(35)1959 2022 y(36)1959 2078 y(37)1959 2135 y(38)1959
2191 y(39)1959 2248 y(40)1959 2304 y(41)1959 2361 y(42)1959
2417 y(43)1959 2474 y(44)1959 2530 y(45)1959 2587 y(46)1959
2643 y(47)1959 2699 y(48)p eop
%%Page: 15 17
15 16 bop 75 -100 a Fg(10.3.)34 b(NEW)15 b(D)o(A)l(T)l(A)l(TYPE)g
(MANIPULA)l(TION)i(FUNCTIONS)574 b Fs(15)75 45 y Fj(MPI)p
160 45 14 2 v 16 w(TYPE)p 293 45 V 17 w(STRUCT)p 486
45 V 17 w(X\(count,)12 b(a)o(rra)o(y)p 776 45 V 14 w(of)p
827 45 V 16 w(blo)q(cklengths,)h(a)o(rra)o(y)p 1197 45
V 15 w(of)p 1249 45 V 16 w(displacements,)g(a)o(rra)o(y)p
1646 45 V 14 w(of)p 1697 45 V 16 w(t)o(yp)q(es,)f(new-)75
102 y(t)o(yp)q(e\))117 179 y Fn(IN)155 b Fj(count)482
b Fn(n)o(um)o(b)q(er)18 b(of)h(blo)q(c)o(ks)g(\(in)o(teger\))g({)g
(also)f(n)o(um)o(b)q(er)h(of)f(en)o(tries)905 235 y(in)c(arra)o(ys)h
Fd(a)o(rra)o(y)p 1167 235 13 2 v 15 w(of)p 1216 235 V
14 w(t)o(yp)q(es)p Fn(,)h Fd(a)o(rra)o(y)p 1432 235 V
15 w(of)p 1481 235 V 14 w(displacements)g Fn(and)e Fd(a)o(r-)905
292 y(ra)o(y)p 959 292 V 15 w(of)p 1008 292 V 15 w(blo)q(cklengths)117
367 y Fn(IN)155 b Fj(a)o(rra)o(y)p 416 367 14 2 v 15
w(of)p 468 367 V 16 w(blo)q(cklength)208 b Fn(n)o(um)o(b)q(er)13
b(of)h(elemen)o(ts)f(in)h(eac)o(h)g(blo)q(c)o(k)g(\(arra)o(y)g(of)f(in)
o(teger\))117 442 y(IN)155 b Fj(a)o(rra)o(y)p 416 442
V 15 w(of)p 468 442 V 16 w(displacements)164 b Fn(b)o(yte)14
b(displacemen)o(t)g(of)f(eac)o(h)h(blo)q(c)o(k)g(\(arra)o(y)g(of)f(in)o
(teger\))117 517 y(IN)155 b Fj(a)o(rra)o(y)p 416 517
V 15 w(of)p 468 517 V 16 w(t)o(yp)q(es)327 b Fn(t)o(yp)q(e)20
b(of)f(elemen)o(ts)g(in)g(eac)o(h)h(blo)q(c)o(k)f(\(arra)o(y)g(of)g
(handles)g(to)905 574 y(datat)o(yp)q(e)14 b(ob)r(jects\))117
649 y(OUT)108 b Fj(newt)o(yp)q(e)433 b Fn(new)15 b(datat)o(yp)q(e)f
(\(handle\))75 773 y Fm(int)23 b(MPI)p 245 773 15 2 v
17 w(Type)p 358 773 V 17 w(struc)p 495 773 V 16 w(xt\(int)g(count,)g
(int)h(*array)p 1085 773 V 16 w(of)p 1149 773 V 17 w(blocklengths,)393
830 y(MPI)p 468 830 V 17 w(Aint)f(*array)p 748 830 V
17 w(of)p 813 830 V 17 w(displacements,)e(MPI)p 1259
830 V 17 w(Datatype)i(*array)p 1635 830 V 16 w(of)p 1699
830 V 17 w(types,)393 886 y(MPI)p 468 886 V 17 w(Datatype)g(*newtype\))
75 972 y(MPI)p 150 972 V 17 w(TYPE)p 263 972 V 16 w(STRUCT)p
423 972 V 17 w(X\(COUNT,)g(ARRAY)p 775 972 V 16 w(OF)p
839 972 V 17 w(BLOCKLENGTHS,)f(ARRAY)p 1310 972 V 17
w(OF)p 1375 972 V 16 w(DISPLACEMENTS,)393 1029 y(ARRAY)p
516 1029 V 17 w(OF)p 581 1029 V 17 w(TYPES,)h(NEWTYPE,)f(IERROR\))170
1085 y(INTEGER)h(COUNT,)g(ARRAY)p 651 1085 V 17 w(OF)p
716 1085 V 17 w(BLOCKLENGTHS\(*\),)e(ARRAY)p 1258 1085
V 17 w(OF)p 1323 1085 V 17 w(TYPES\(*\),)i(NEWTYPE,)170
1142 y(IERROR)170 1198 y(INTEGER\(KIND=MPI)p 557 1198
V 15 w(ADDRESS)p 740 1198 V 17 w(SIZE\))g(ARRAY)p 1020
1198 V 16 w(OF)p 1084 1198 V 17 w(DISPLACEMENTS\(*\),)75
1379 y Fj(MPI)p 160 1379 14 2 v 16 w(ADDRESS)p 378 1379
V 17 w(X\(lo)q(cation,)15 b(address\))117 1456 y Fn(IN)155
b Fj(lo)q(cation)437 b Fn(lo)q(cation)13 b(in)h(caller)f(memory)f(\(c)o
(hoice\))117 1532 y(OUT)108 b Fj(address)449 b Fn(address)15
b(of)f(lo)q(cation)f(\(in)o(teger\))75 1656 y Fm(int)23
b(MPI)p 245 1656 15 2 v 17 w(Address)p 430 1656 V 16
w(x\(void*)g(location,)g(MPI)p 948 1656 V 17 w(Aint)g(*address\))75
1743 y(MPI)p 150 1743 V 17 w(ADDRESS)p 335 1743 V 16
w(X\(LOCATION,)f(ADDRESS,)h(IERROR\))170 1799 y(<type>)g(LOCATION\(*\))
170 1855 y(INTEGER)g(IERROR)170 1912 y(INTEGER\(KIND=MPI)p
557 1912 V 15 w(ADDRESS)p 740 1912 V 17 w(SIZE\))g(ADDRESS)189
2048 y Fi(A)n(dvic)n(e)d(to)h(users.)72 b Fs(Curren)o(t)20
b(F)l(ortran)g(MPI)g(co)q(des)h(will)h(run)f(unmo)q(di\014ed,)i(and)e
(will)h(p)q(ort)189 2105 y(to)f(an)o(y)g(system.)39 b(Ho)o(w)o(ev)o
(er,)22 b(they)g(ma)o(y)f(fail)h(if)g(addresses)g(larger)g(than)f(2)
1558 2088 y Fc(32)1610 2105 y Fl(\000)15 b Fs(1)21 b(are)g(used)189
2161 y(in)f(the)f(program.)31 b(New)19 b(co)q(des)h(should)g(b)q(e)g
(written)f(so)g(that)g(they)g(use)h(the)f(new)h(functions.)189
2218 y(This)e(pro)o(vides)h(compatibilit)o(y)g(with)f(C/C++)g(and)h(a)o
(v)o(oids)e(errors)g(on)h(64)g(bit)g(arc)o(hitectures.)189
2274 y(Ho)o(w)o(ev)o(er,)13 b(suc)o(h)i(newly)g(written)g(co)q(des)g
(ma)o(y)e(need)j(to)e(b)q(e)h(\(sligh)o(tly\))g(rewritten)f(to)g(p)q
(ort)h(to)e(old)189 2330 y(F)l(ortran)k(77)g(en)o(vironmen)o(ts)i(that)
f(do)g(not)g(supp)q(ort)g Fd(KIND)g Fs(declarations.)30
b(\()p Fi(End)18 b(of)i(advic)n(e)f(to)189 2387 y(users.)p
Fs(\))1875 2448 y Fl(?)d Fk(\(Oct\))75 2558 y Fe(10.3.2)49
b(Extent)16 b(and)h(Bounds)f(of)h(Datat)o(yp)q(es)75
2644 y Fs(The)d(follo)o(wing)h(function)g(supplemen)o(ts)h(the)e(three)
g(functions)h Fj(MPI)p 1266 2644 14 2 v 16 w(TYPE)p 1399
2644 V 17 w(UB,)f(MPI)p 1586 2644 V 16 w(TYPE)p 1719
2644 V 17 w(LB)g Fs(and)75 2701 y Fj(MPI)p 160 2701 V
16 w(TYPE)p 293 2701 V 17 w(EXTENT)p Fs(.)h(It)g(also)g(returns)h
(address)f(sized)h(in)o(tegers,)f(in)h(the)f(F)l(ortran)f(binding.)-32
46 y Fk(1)-32 103 y(2)-32 159 y(3)-32 215 y(4)-32 272
y(5)-32 328 y(6)-32 385 y(7)-32 441 y(8)-32 498 y(9)-40
554 y(10)-40 611 y(11)-40 667 y(12)-40 724 y(13)-40 780
y(14)-40 836 y(15)-40 893 y(16)-40 949 y(17)-40 1006
y(18)-40 1062 y(19)-40 1119 y(20)-40 1175 y(21)-40 1232
y(22)-40 1288 y(23)-40 1345 y(24)-40 1401 y(25)-40 1457
y(26)-40 1514 y(27)-40 1570 y(28)-40 1627 y(29)-40 1683
y(30)-40 1740 y(31)-40 1796 y(32)-40 1853 y(33)-40 1909
y(34)-40 1966 y(35)-40 2022 y(36)-40 2078 y(37)-40 2135
y(38)-40 2191 y(39)-40 2248 y(40)-40 2304 y(41)-40 2361
y(42)-40 2417 y(43)-40 2474 y(44)-40 2530 y(45)-40 2587
y(46)-40 2643 y(47)-40 2699 y(48)p eop
%%Page: 16 18
16 17 bop 75 -100 a Fs(16)1110 b Fg(CHAPTER)15 b(10.)35
b(MISCELLANY)75 45 y Fj(MPI)p 160 45 14 2 v 16 w(GET)p
264 45 V 17 w(EXTENT)p 459 45 V 17 w(X\(datat)o(yp)q(e,)16
b(lb,)f(extent\))117 122 y Fn(IN)155 b Fj(datat)o(yp)q(e)424
b Fn(datat)o(yp)q(e)14 b(to)g(get)g(information)d(on)117
197 y(OUT)108 b Fj(lb)553 b Fn(lo)o(w)o(er)14 b(b)q(ound)g(of)f(datat)o
(yp)q(e)117 273 y(OUT)108 b Fj(extent)471 b Fn(exten)o(t)15
b(of)e(datat)o(yp)q(e)75 397 y Fm(int)23 b(MPI)p 245
397 15 2 v 17 w(Get)p 334 397 V 17 w(extent)p 495 397
V 16 w(x\(MPI)p 631 397 V 17 w(Datatype)g(datatype,)f(MPI)p
1173 397 V 17 w(Aint)h(*lb,)h(MPI)p 1501 397 V 16 w(Aint)g(*extent\))75
483 y(MPI)p 150 483 V 17 w(GET)p 239 483 V 17 w(EXTENT)p
400 483 V 16 w(X\(DATATYPE,)e(LB,)i(EXTENT,)f(IERROR\))170
540 y(INTEGER)g(DATATYPE,)g(IERROR)170 596 y(INTEGER\(KIND)g(=)g(MPI)p
603 596 V 17 w(ADDRESS)p 788 596 V 16 w(SIZE\))h(LB,)f(EXTENT)-117
633 y Fl(>)15 b Fk(\(Oct\))75 683 y Fm(int)23 b(MPI::Datatype::Get)p
605 683 V 15 w(extent)p 764 683 V 17 w(x\(MPI::Aint&)f(lb,)h
(MPI::Aint&)g(extent\))g(const)166 769 y Fs(Returns)16
b(the)f(lo)o(w)o(er)g(b)q(ound)h(and)f(the)g(exten)o(t)g(of)g
Fj(datat)o(yp)q(e)h Fs(\(as)f(de\014ned)h(b)o(y)f(the)h(MPI)f
(standard,)75 826 y(Section)h(3.12.2\).)166 882 y(MPI)21
b(allo)o(ws)h(one)f(to)g(c)o(hange)h(the)f(exten)o(t)g(of)g(a)h(datat)o
(yp)q(e,)g(using)g(lo)o(w)o(er)f(b)q(ound)h(and)g(upp)q(er)75
939 y(b)q(ound)e(mark)o(ers)e(\()p Fd(MPI)p 490 939 13
2 v 14 w(LB)h Fs(and)g Fd(MPI)p 740 939 V 14 w(UB)p Fs(\).)f(This)h(is)
h(useful,)g(as)f(it)g(allo)o(ws)g(to)f(con)o(trol)h(the)g(stride)g(of)
75 995 y(successiv)o(e)e(datat)o(yp)q(es)e(that)g(are)g(replicated)i(b)
o(y)e(datat)o(yp)q(e)g(constructors,)g(or)g(are)g(replicated)i(b)o(y)f
(the)75 1052 y Fj(count)k Fs(argumen)o(t)e(in)i(a)e(send)h(or)g(reciev)
o(e)g(call.)32 b(Ho)o(w)o(ev)o(er,)19 b(the)f(curren)o(t)h(mec)o
(hanism)h(for)e(ac)o(hieving)75 1108 y(it)h(is)h(painful;)i(also)d(it)h
(is)f(restrictiv)o(e,)i(as)d Fd(MPI)p 906 1108 V 15 w(LB)h
Fs(and)g Fd(MPI)p 1157 1108 V 14 w(UB)g Fs(are)f(\\stic)o(ky":)28
b(once)19 b(presen)o(t)g(in)h(a)75 1165 y(datat)o(yp)q(e,)d(they)h
(cannot)g(b)q(e)g(o)o(v)o(eriden)g(\(e.g.,)f(the)h(upp)q(er)h(b)q(ound)
f(can)g(b)q(e)g(mo)o(v)o(ed)g(up,)g(b)o(y)g(adding)g(a)75
1221 y(new)13 b Fd(MPI)p 243 1221 V 14 w(UB)g Fs(mark)o(er,)f(but)h
(cannot)g(b)q(e)g(mo)o(v)o(ed)g(do)o(wn)f(b)q(elo)o(w)i(an)f(existing)h
Fj(MPI)p 1474 1221 14 2 v 15 w(UB)g Fs(mark)o(er\).)k(A)13
b(new)-1992 b Fl(>)15 b Fk(\(Oct\))75 1277 y Fs(t)o(yp)q(e)g
(constructor)g(is)g(pro)o(vided)h(to)f(facilitate)h(these)f(c)o
(hanges.)75 1428 y Fj(MPI)p 160 1428 V 16 w(TYPE)p 293
1428 V 17 w(RESIZED)p 492 1428 V 16 w(X\(oldt)o(yp)q(e,)h(lb,)f
(extent,)i(newt)o(yp)q(e\))117 1506 y Fn(IN)155 b Fj(oldt)o(yp)q(e)450
b Fn(input)14 b(datat)o(yp)q(e)g(\(handle\))117 1581
y(IN)155 b Fj(lb)553 b Fn(new)15 b(lo)o(w)o(er)e(b)q(ound)h(of)f(datat)
o(yp)q(e)h(\(in)o(teger\))117 1656 y(IN)155 b Fj(extent)471
b Fn(new)15 b(exten)o(t)f(of)g(datat)o(yp)q(e)g(\(in)o(teger\))117
1731 y(OUT)108 b Fj(newt)o(yp)q(e)433 b Fn(output)14
b(datat)o(yp)q(e)g(\(handle\))75 1855 y Fm(int)23 b(MPI)p
245 1855 15 2 v 17 w(Type)p 358 1855 V 17 w(resized)p
543 1855 V 16 w(x\(MPI)p 679 1855 V 17 w(Datatype)f(oldtype,)h(MPI)p
1197 1855 V 17 w(Aint)g(lb,)h(MPI)p 1501 1855 V 16 w(Aint)g(extent,)393
1912 y(MPI)p 468 1912 V 17 w(Datatype)f(*newtype\))75
1998 y(MPI)p 150 1998 V 17 w(TYPE)p 263 1998 V 16 w(RESIZED)p
447 1998 V 17 w(X\(OLDTYPE,)f(LB,)i(EXTENT,)e(NEWTYPE,)h(IERROR\))170
2055 y(INTEGER)g(DATATYPE,)g(NEWTYPE,)g(IERROR)170 2111
y(INTEGER\(KIND=MPI)p 557 2111 V 15 w(ADDRESS)p 740 2111
V 17 w(SIZE\))g(LB,)g(EXTENT)75 2198 y(int)g(MPI::Datatype::Resized)p
701 2198 V 15 w(x\(const)g(MPI::Datatype&)e(type,)j(const)f(MPI::Aint&)
393 2254 y(lb,)h(const)f(MPI::Aint&)f(extent\))-117 2290
y Fl(?)15 b Fk(\(Oct\))166 2341 y Fs(Returns)f(in)g Fj(newt)o(yp)q(e)i
Fs(a)d(handle)i(to)e(a)g(new)h(datat)o(yp)q(e)f(that)g(is)h(iden)o
(tical)h(to)e Fj(oldt)o(yp)q(e)p Fs(,)i(except)f(that)75
2397 y(the)k(lo)o(w)o(er)f(b)q(ound)i(of)e(this)h(new)g(datat)o(yp)q(e)
g(is)g(set)f(to)g(b)q(e)i Fj(lb)p Fs(,)f(and)g(its)g(upp)q(er)h(b)q
(ound)f(is)h(set)e(to)g(b)q(e)i Fj(lb)75 2454 y Fs(+)h
Fj(extent)p Fs(.)34 b(This)20 b(is)g(as)f(if)h(an)o(y)f(previous)h
Fh(lb)g Fs(and)g Fh(ub)f Fs(mark)o(ers)g(w)o(ere)g(erased,)h(and)g(a)f
(new)h(pair)f(of)-1992 b Fl(>)15 b Fk(\(Oct\))75 2510
y Fs(lo)o(w)o(er)i(b)q(ound)i(and)f(upp)q(er)h(b)q(ound)f(mark)o(ers)f
(w)o(ere)h(put)g(in)g(the)g(p)q(ositions)h(indicated)g(b)o(y)f(the)g
Fj(lb)g Fs(and)75 2566 y Fj(extent)g Fs(argumen)o(ts.)24
b(This)17 b(a\013ects)f(the)h(b)q(eha)o(vior)h(of)e(the)h(datat)o(yp)q
(e)f(when)h(used)h(in)f(comm)o(unication)75 2623 y(op)q(erations,)e
(with)h Fj(count)g Ff(>)d Fs(1,)h(and)i(when)g(used)f(in)h(the)g
(construction)f(of)g(new)g(deriv)o(ed)i(datat)o(yp)q(es.)1967
46 y Fk(1)1967 103 y(2)1967 159 y(3)1967 215 y(4)1967
272 y(5)1967 328 y(6)1967 385 y(7)1967 441 y(8)1967 498
y(9)1959 554 y(10)1959 611 y(11)1959 667 y(12)1959 724
y(13)1959 780 y(14)1959 836 y(15)1959 893 y(16)1959 949
y(17)1959 1006 y(18)1959 1062 y(19)1959 1119 y(20)1959
1175 y(21)1959 1232 y(22)1959 1288 y(23)1959 1345 y(24)1959
1401 y(25)1959 1457 y(26)1959 1514 y(27)1959 1570 y(28)1959
1627 y(29)1959 1683 y(30)1959 1740 y(31)1959 1796 y(32)1959
1853 y(33)1959 1909 y(34)1959 1966 y(35)1959 2022 y(36)1959
2078 y(37)1959 2135 y(38)1959 2191 y(39)1959 2248 y(40)1959
2304 y(41)1959 2361 y(42)1959 2417 y(43)1959 2474 y(44)1959
2530 y(45)1959 2587 y(46)1959 2643 y(47)1959 2699 y(48)p
eop
%%Page: 17 19
17 18 bop 75 -100 a Fg(10.3.)34 b(NEW)15 b(D)o(A)l(T)l(A)l(TYPE)g
(MANIPULA)l(TION)i(FUNCTIONS)574 b Fs(17)189 45 y Fi(A)n(dvic)n(e)14
b(to)i(users.)40 b Fs(It)14 b(is)h(strongly)f(recommended)i(that)e
(users)g(use)h(these)g(t)o(w)o(o)e(new)i(functions,)189
102 y(rah)o(ter)h(than)h(the)g(old)g(MPI)h(functions)f(to)g(set)g(and)g
(access)g(lo)o(w)o(er)g(b)q(ound,)h(upp)q(er)g(b)q(ound)g(and)189
158 y(exten)o(t)d(of)f(datat)o(yp)q(es.)20 b(\()p Fi(End)15
b(of)i(advic)n(e)f(to)g(users.)p Fs(\))1875 211 y Fl(>)g
Fk(\(Oct\))75 320 y Fe(10.3.3)49 b(T)l(rue)16 b(Extent)g(of)g(Datat)o
(yp)q(es)75 406 y Fs(Supp)q(ose)22 b(w)o(e)f(implemen)o(t)h(gather)f
(as)f(a)h(spanning)h(tree)f(implemen)o(ted)i(on)e(top)g(of)f(p)q(oin)o
(t-to-p)q(oin)o(t)75 462 y(routines.)f(Since)11 b(the)g(recv)f
(bu\013er)g(is)h(only)g(v)m(alid)h(on)e(the)h(ro)q(ot)e(pro)q(cess,)i
(one)g(will)g(need)h(to)d(allo)q(cate)i(some)75 519 y(temp)q(orary)i
(space)i(for)e(receiving)j(data)d(on)h(in)o(termediate)h(no)q(des.)20
b(The)14 b(di\016cultly)i(is)f(in)f(determining)75 575
y(the)21 b(size)h(one)f(needs)h(to)f(allo)q(cate.)38
b(This)21 b(o)q(ccurs)h(since)g(the)f(user)g(can)h(mo)q(dify)f(the)g
(exten)o(t)g(using)75 632 y(the)h Fd(MPI)p 237 632 13
2 v 14 w(UB)g Fs(and)g Fd(MPI)p 500 632 V 14 w(LB)g Fs(v)m(alues.)42
b(The)22 b(writer)g(of)f(the)i(gather)e(routine)h(could)h(determine)h
(this)75 688 y(information)16 b(b)o(y)g(deco)q(ding)i(the)e(datat)o(yp)
q(e.)21 b(Ho)o(w)o(ev)o(er,)15 b(this)i(is)f(more)g(w)o(ork)f(and)h
(more)g(painful)h(than)75 745 y(desired.)k(Th)o(us,)15
b(a)g(new)g(function)h(is)g(pro)o(vided)g(whic)o(h)g(returns)f(the)g
(true)g(exten)o(t)g(of)g(the)g(datat)o(yp)q(e.)75 895
y Fj(MPI)p 160 895 14 2 v 16 w(TRUE)p 294 895 V 17 w(EXTENT)p
489 895 V 17 w(X\(datat)o(yp)q(e,)h(true)p 821 895 V
17 w(lb,)f(true)p 975 895 V 17 w(extent\))117 973 y Fn(IN)155
b Fj(datat)o(yp)q(e)424 b Fn(datat)o(yp)q(e)14 b(to)g(get)g
(information)d(on)117 1047 y(OUT)108 b Fj(true)p 396
1047 V 17 w(lb)461 b Fn(true)15 b(lo)o(w)o(er)e(b)q(ound)h(of)g(datat)o
(yp)q(e)117 1121 y(OUT)108 b Fj(true)p 396 1121 V 17
w(extent)379 b Fn(true)15 b(size)g(of)e(datat)o(yp)q(e)75
1245 y Fm(int)23 b(MPI)p 245 1245 15 2 v 17 w(True)p
358 1245 V 17 w(extent)p 519 1245 V 16 w(x\(MPI)p 655
1245 V 17 w(Datatype)f(datatype,)h(MPI)p 1197 1245 V
17 w(Aint)g(*true)p 1453 1245 V 17 w(lb,)g(MPI)p 1637
1245 V 17 w(Aint)393 1301 y(*true)p 516 1301 V 17 w(extent\))75
1388 y(MPI)p 150 1388 V 17 w(TRUE)p 263 1388 V 16 w(EXTENT)p
423 1388 V 17 w(X\(DATATYPE,)f(TRUE)p 822 1388 V 17 w(LB,)h(TRUE)p
1030 1388 V 17 w(EXTENT,)g(IERROR\))170 1444 y(INTEGER)g(DATATYPE,)g
(IERROR)170 1501 y(INTGER\(KIND)g(=)h(MPI)p 580 1501
V 16 w(ADDRESS)p 764 1501 V 17 w(SIZE\))f(TRUE)p 1020
1501 V 16 w(LB,)h(TRUE)p 1228 1501 V 16 w(EXTENT)1875
1537 y Fl(>)16 b Fk(\(Oct\))75 1587 y Fm(int)23 b(MPI::Datatype::True)p
629 1587 V 15 w(extent)p 788 1587 V 16 w(x\(MPI::Aint&)g(true)p
1211 1587 V 16 w(lb,)h(MPI::Aint&)e(true)p 1681 1587
V 17 w(extent\))393 1644 y(const)166 1730 y Fj(true)p
244 1730 14 2 v 17 w(lb)14 b Fs(returns)f(the)g(o\013set)g(of)g(the)g
(lo)o(w)o(est)g(unit)h(of)f(store)g(whic)o(h)h(is)g(addressed)g(b)o(y)f
(the)h(datat)o(yp)q(e,)75 1787 y(i.e.,)j(the)g(lo)o(w)o(er)f(b)q(ound)i
(of)f(the)g(corresp)q(onding)h(t)o(yp)q(emap,)e(ignoring)i
Fd(MPI)p 1391 1787 13 2 v 14 w(LB)f Fs(mark)o(ers.)24
b Fj(true)p 1743 1787 14 2 v 17 w(extent)75 1843 y Fs(returns)12
b(the)h(true)f(size)h(of)f(the)g(datat)o(yp)q(e,)g(i.e.,)h(the)f(exten)
o(t)g(of)g(the)h(corresp)q(onding)g(t)o(yp)q(emap,)f(ignoring)75
1900 y Fd(MPI)p 152 1900 13 2 v 14 w(LB)17 b Fs(and)h
Fj(MPI)p 407 1900 14 2 v 16 w(UB)f Fs(mark)o(ers,)f(and)i(p)q
(erforming)f(no)g(rounding)h(for)e(alignmen)o(t.)27 b(If)17
b(the)g(t)o(yp)q(emap)75 1956 y(asso)q(ciated)e(with)h
Fj(datat)o(yp)q(e)h Fs(is)189 2044 y Ff(T)6 b(y)r(pemap)12
b Fs(=)h Fl(f)p Fs(\()p Ff(ty)r(pe)562 2051 y Fc(0)581
2044 y Ff(;)8 b(disp)686 2051 y Fc(0)705 2044 y Fs(\))p
Ff(;)g(:)g(:)g(:)t(;)g Fs(\()p Ff(ty)r(pe)926 2051 y
Fb(n)p Fa(\000)p Fc(1)994 2044 y Ff(;)g(disp)1099 2051
y Fb(n)p Fa(\000)p Fc(1)1166 2044 y Fs(\))p Fl(g)75 2132
y Fs(Then)189 2219 y Ff(tr)q(ue)p 277 2219 V 16 w(l)q(b)p
Fs(\()p Ff(T)e(y)r(pemap)p Fs(\))11 b(=)i Ff(min)691
2226 y Fb(j)709 2219 y Fl(f)p Ff(disp)816 2226 y Fb(j)861
2219 y Fs(:)28 b Ff(ty)r(pe)986 2226 y Fb(j)1017 2219
y Fl(6)p Fs(=)13 b Fh(lb)p Fl(g)p Ff(;)189 2317 y(tr)q(ue)p
277 2317 V 16 w(ub)p Fs(\()p Ff(T)6 b(y)r(pemap)p Fs(\))12
b(=)g Ff(max)709 2324 y Fb(j)728 2317 y Fl(f)p Ff(disp)835
2324 y Fb(j)862 2317 y Fs(+)f Ff(siz)r(eof)5 b Fs(\()p
Ff(ty)r(pe)1140 2324 y Fb(j)1158 2317 y Fs(\))28 b(:)f
Ff(ty)r(pe)1328 2324 y Fb(j)1360 2317 y Fl(6)p Fs(=)13
b Fh(ub)p Fl(g)p Ff(;)75 2415 y Fs(and)189 2503 y Ff(tr)q(ue)p
277 2503 V 16 w(extent)p Fs(\()p Ff(T)6 b(y)r(pemap)p
Fs(\))13 b(=)g Ff(tr)q(ue)p 790 2503 V 17 w(ub)p Fs(\()p
Ff(T)6 b(y)r(pemap)p Fs(\))j Fl(\000)h Ff(tr)q(ue)p 1216
2503 V 17 w(l)q(b)p Fs(\()p Ff(ty)r(pemap)p Fs(\))p Ff(:)75
2591 y Fs(\(Compares)k(this)i(with)f(the)h(de\014nitions)h(in)f
(Section)g(3.12.3)d(of)i(the)g(MPI)g(standard.\))166
2647 y(The)25 b Fj(true)p 347 2647 V 17 w(extent)h Fs(is)e(the)h(minim)
o(um)g(n)o(um)o(b)q(er)g(of)f(b)o(ytes)g(of)g(memory)g(necessary)g(to)g
(hold)h(a)75 2704 y(datat)o(yp)q(e)15 b(\(uncompressed\).)1285
b Fl(?)16 b Fk(\(Oct\))-32 46 y(1)-32 103 y(2)-32 159
y(3)-32 215 y(4)-32 272 y(5)-32 328 y(6)-32 385 y(7)-32
441 y(8)-32 498 y(9)-40 554 y(10)-40 611 y(11)-40 667
y(12)-40 724 y(13)-40 780 y(14)-40 836 y(15)-40 893 y(16)-40
949 y(17)-40 1006 y(18)-40 1062 y(19)-40 1119 y(20)-40
1175 y(21)-40 1232 y(22)-40 1288 y(23)-40 1345 y(24)-40
1401 y(25)-40 1457 y(26)-40 1514 y(27)-40 1570 y(28)-40
1627 y(29)-40 1683 y(30)-40 1740 y(31)-40 1796 y(32)-40
1853 y(33)-40 1909 y(34)-40 1966 y(35)-40 2022 y(36)-40
2078 y(37)-40 2135 y(38)-40 2191 y(39)-40 2248 y(40)-40
2304 y(41)-40 2361 y(42)-40 2417 y(43)-40 2474 y(44)-40
2530 y(45)-40 2587 y(46)-40 2643 y(47)-40 2699 y(48)p
eop
%%Page: 18 20
18 19 bop 75 -100 a Fs(18)1110 b Fg(CHAPTER)15 b(10.)35
b(MISCELLANY)75 45 y Fp(10.4)59 b(Continuable)19 b(Erro)n(rs)75
147 y Fs(T)o(ypically)l(,)j(MPI)d(sa)o(ys)g(nothing)h(ab)q(out)g(the)f
(in)o(ternal)h(state)f(of)g(itself)i(after)d(an)i(error)f(handler)h
(has)75 203 y(b)q(een)14 b(in)o(v)o(ok)o(ed.)20 b(There)13
b(are)g(a)g(n)o(um)o(b)q(er)g(of)g(error)f(classes)i(within)g(MPI)f
(that)g(should)h(ha)o(v)o(e)f(no)g(negativ)o(e)75 259
y(impact)19 b(on)f(the)g(in)o(ternal)h(state)f(of)g(MPI.)g(That)g(is)g
(to)g(sa)o(y)l(,)g(if)h(one)g(of)e(the)i("con)o(tin)o(uable")g(errors)e
(is)75 316 y(detected)g(and)h(no)e(other)h(external)g(ev)o(en)o(ts)g
(cause)g(degradation,)g(it)g(is)g(safe)g(to)f(con)o(tin)o(ue)h(using)h
(MPI)75 372 y(within)e(an)g(application.)166 429 y(The)f("con)o(tin)o
(uable")h(error)f(classes)g(are:)75 535 y Fm(MPI_ERR_BUFFER)237
b(/*)23 b(invalid)g(buffer)g(pointer)g(*/)75 592 y(MPI_ERR_COUNT)261
b(/*)23 b(invalid)g(count)g(argument)g(*/)75 648 y(MPI_ERR_TYPE)285
b(/*)23 b(invalid)g(datatype)g(argument)g(*/)75 704 y(MPI_ERR_TAG)309
b(/*)23 b(invalid)g(tag)h(argument)e(*/)75 761 y(MPI_ERR_COMM)285
b(/*)23 b(invalid)g(communicator)f(*/)75 817 y(MPI_ERR_KEYVAL)237
b(/*)23 b(invalid)g(key)h(value)f(*/)75 874 y(MPI_ERR_ROOT)285
b(/*)23 b(invalid)g(root)h(*/)75 930 y(MPI_ERR_RANK)285
b(/*)23 b(invalid)g(rank)h(*/)75 987 y(MPI_ERR_GROUP)261
b(/*)23 b(invalid)g(group)g(*/)75 1043 y(MPI_ERR_TOPOLOGY)189
b(/*)23 b(invalid)g(topology)g(*/)75 1100 y(MPI_ERR_DIMS)285
b(/*)23 b(invalid)g(dimension)g(argument)g(*/)75 1156
y(MPI_ERR_ARG)309 b(/*)23 b(invalid)g(argument)g(*/)75
1262 y Fs(The)13 b(follo)o(wing)h(errors)f(pro)o(vide)g(no)g(guaran)o
(tees,)g(although)g(implemen)o(tors)h(are)f(encouraged)g(to)f(mak)o(e)
75 1319 y(errors)i("con)o(tin)o(uable")i(whenev)o(er)g(p)q(ossible:)75
1413 y Fm(MPI_ERR_OP)333 b(/*)23 b(invalid)g(operation)g(*/)75
1469 y(MPI_ERR_REQUEST)213 b(/*)23 b(invalid)g(request)g(handle)g(*/)75
1526 y(MPI_ERR_UNKNOWN)213 b(/*)23 b(unknown)g(error)g(*/)75
1582 y(MPI_ERR_TRUNCATE)189 b(/*)23 b(message)g(truncated)g(on)g
(receive)g(*/)75 1638 y(MPI_ERR_OTHER)261 b(/*)23 b(Other)g(error)h(*/)
75 1695 y(MPI_ERR_INTERN)237 b(/*)23 b(internal)g(MPI)h(error)f(*/)75
1751 y(MPI_ERR_IN_STATUS)165 b(/*)23 b(error)g(code)h(is)f(in)h(status)
f(*/)75 1808 y(MPI_ERR_PENDING)213 b(/*)23 b(pending)g(request)g(*/)75
1864 y(MPI_ERR_SYSRESOURCE)117 b(/*)23 b(out)h(of)f(system)g(resources)
g(*/)h(/*)f(where)g(in)h(MPI?)f(*/)166 1958 y Fs(W)l(e)12
b(also)f(pro)o(vide)i(the)e(function)i(to)e(indicate)i(whether)f(MPI)g
(b)q(eliev)o(es)h(an)f(error)f(is)h("con)o(tin)o(uable")75
2015 y(or)j(not:)75 2166 y Fj(MPI)p 160 2166 14 2 v 16
w(ERR)p 261 2166 V 17 w(IS)p 316 2166 V 16 w(CONTINUABLE)h(\(erro)o(r,)
d(\015ag\))117 2243 y Fn(IN)155 b Fj(Erro)o(r)490 b Fn(MPI)14
b(Error)h(Status)f(\(actual)g(status)h(or)f(a)f(class\))117
2318 y(OUT)108 b Fj(Flag)505 b Fn(Bo)q(olean)13 b(indication)f(of)h
(whether)h(the)g(implemen)o(tation)c(al-)905 2374 y(lo)o(ws)19
b(safe)h(con)o(tin)o(ued)g(op)q(eration)g(in)f(the)i(ev)o(en)o(t)f(of)f
(Error)905 2431 y(b)q(eing)14 b(encoun)o(tered)75 2555
y Fm(int)23 b(MPI)p 245 2555 15 2 v 17 w(Err)p 334 2555
V 17 w(is)p 399 2555 V 17 w(continuable\()f(int)i(error,)f(int)g(*flag)
g(\))75 2642 y(MPI)p 150 2642 V 17 w(ERR)p 239 2642 V
17 w(IS)p 304 2642 V 16 w(CONTINUABLE\()g(ERROR,)g(FLAG,)g(IERROR)g(\))
170 2698 y(INTEGER)g(ERROR,)g(IERROR)1967 46 y Fk(1)1967
103 y(2)1967 159 y(3)1967 215 y(4)1967 272 y(5)1967 328
y(6)1967 385 y(7)1967 441 y(8)1967 498 y(9)1959 554 y(10)1959
611 y(11)1959 667 y(12)1959 724 y(13)1959 780 y(14)1959
836 y(15)1959 893 y(16)1959 949 y(17)1959 1006 y(18)1959
1062 y(19)1959 1119 y(20)1959 1175 y(21)1959 1232 y(22)1959
1288 y(23)1959 1345 y(24)1959 1401 y(25)1959 1457 y(26)1959
1514 y(27)1959 1570 y(28)1959 1627 y(29)1959 1683 y(30)1959
1740 y(31)1959 1796 y(32)1959 1853 y(33)1959 1909 y(34)1959
1966 y(35)1959 2022 y(36)1959 2078 y(37)1959 2135 y(38)1959
2191 y(39)1959 2248 y(40)1959 2304 y(41)1959 2361 y(42)1959
2417 y(43)1959 2474 y(44)1959 2530 y(45)1959 2587 y(46)1959
2643 y(47)1959 2699 y(48)p eop
%%Page: 19 21
19 20 bop 75 -100 a Fg(10.5.)34 b(NEW)15 b(ELEMENT)l(AR)l(Y)h(D)o(A)l
(T)l(A)l(TYPES)883 b Fs(19)170 45 y Fm(LOGICAL)23 b(FLAG)75
132 y(static)g(int)g(MPI::Err)p 532 132 15 2 v 17 w(is)p
597 132 V 16 w(continuable\()g(int)g(error,)g(bool&)g(flag)h(\))1875
172 y Fl(>)16 b Fk(\(Oct\))166 218 y Fs(There)c(is)h(a)f(new,)h(con)o
(tin)o(uable)g(error)f(class,)h Fj(MPI)p 1026 218 14
2 v 16 w(ERR)p 1127 218 V 17 w(W)o(OULDBLOCK)p Fs(.)f(This)g(error)g
(class)h(ma)o(y)75 274 y(b)q(e)j(used)g(b)o(y)g(a)f(non-blo)q(c)o(king)
i(function)f(to)f(inform)h(the)f(caller)i(that)e(the)g(op)q(eration)h
(cannot)f(pro)q(ceed)75 331 y(without)g(blo)q(c)o(king.)22
b(When)15 b(this)h(error)e(is)i(returned,)f(the)h(state)e(of)h(the)g
(application)i(is)f(equiv)m(alen)o(t)h(to)75 387 y(the)e(one)h(prior)f
(to)g(the)g(function)h(call.)166 444 y(An)d(implemen)o(tation)h(is)f
(not)g(required)g(to)f(use)i(this)f(error)f(class,)h(but)g(if)g(it)g
(do)q(es,)g(it)g(m)o(ust)f(pro)o(vide)75 500 y(the)j(functionalit)o(y)i
(describ)q(ed.)166 604 y Fo(Discussion:)33 b Fn(What)13
b(do)q(es)h(it)f(mean)f(when)i(a)f(con)o(tin)o(uable)f(error)j(o)q
(ccurs)f(in)f(a)g(collectiv)o(e)g(op)q(eration?)166 708
y Fs(There)k(is)g(a)f(prede\014ned)i(error)e(handler)h
Fj(MPI)p 969 708 V 16 w(CONT)p 1110 708 V 17 w(ERRORS)p
1299 708 V 18 w(RETURN)p Fs(,)h(whic)o(h)f(allo)o(ws)g(con-)75
764 y(tin)o(uable)e(erorrs)e(to)f(return)i(error)f(co)q(des)h(and)f
(non-con)o(tin)o(uable)j(errors)c(to)h(ab)q(ort.)19 b(The)14
b(default)g(error)75 821 y(handler)i(is)g Fj(MPI)p 370
821 V 16 w(ERRORS)p 558 821 V 18 w(ARE)p 662 821 V 17
w(F)l(A)l(T)l(AL)p Fs(.)75 927 y Fh(Example)i(10.11)118
b Fm(MPI_Errhandler_set\(MPI_COMM)o(_WORLD,)20 b
(MPI_CONT_ERRORS_RETURN\);)170 983 y(err)k(=)g(MPI_Isend\()e(...)i(,)f
(&req\);)170 1040 y(if)h(\()g(err)f(!=)h(MPI_SUCCESS\))e({)266
1096 y(MPI_Error_class\(err,&clas)o(s\);)266 1153 y(if)h(\(class)h(==)f
(MPI_ERR_WOULDBLOCK\))e({)361 1209 y(MPI_Send\()i(...)g(\);)266
1266 y(else)361 1322 y(...)266 1379 y(})170 1435 y(})1875
1489 y Fl(?)16 b Fk(\(Oct\))75 1628 y Fp(10.5)59 b(New)20
b(Elementa)n(ry)e(Datat)n(yp)r(es)75 1777 y Fo(Discussion:)34
b Fn(Do)13 b(w)o(e)h(need)h Fd(MPI)p 644 1777 13 2 v
14 w(W)o(CHAR)p Fn(,)e(to)h(tak)o(e)g(care)h(of)e(Unico)q(de?)-32
46 y Fk(1)-32 103 y(2)-32 159 y(3)-32 215 y(4)-32 272
y(5)-32 328 y(6)-32 385 y(7)-32 441 y(8)-32 498 y(9)-40
554 y(10)-40 611 y(11)-40 667 y(12)-40 724 y(13)-40 780
y(14)-40 836 y(15)-40 893 y(16)-40 949 y(17)-40 1006
y(18)-40 1062 y(19)-40 1119 y(20)-40 1175 y(21)-40 1232
y(22)-40 1288 y(23)-40 1345 y(24)-40 1401 y(25)-40 1457
y(26)-40 1514 y(27)-40 1570 y(28)-40 1627 y(29)-40 1683
y(30)-40 1740 y(31)-40 1796 y(32)-40 1853 y(33)-40 1909
y(34)-40 1966 y(35)-40 2022 y(36)-40 2078 y(37)-40 2135
y(38)-40 2191 y(39)-40 2248 y(40)-40 2304 y(41)-40 2361
y(42)-40 2417 y(43)-40 2474 y(44)-40 2530 y(45)-40 2587
y(46)-40 2643 y(47)-40 2699 y(48)p eop
%%Trailer
end
userdict /end-hook known{end-hook}if
%%EOF

From mpi-comm-human@mcs.anl.gov Fri Sep 20 06:08:35 1996
Return-Path: <mpi-comm-human@mcs.anl.gov>
Received: from antares.mcs.anl.gov by netlib2.cs.utk.edu with ESMTP (cf v2.9t-netlib)
	id GAA25799; Fri, 20 Sep 1996 06:08:26 -0400
Received: (from listserv@localhost) by antares.mcs.anl.gov (8.6.10/8.6.10)
	id XAA28152 for mpi-comm-out; Thu, 19 Sep 1996 23:26:32 -0500
Received: from mcs.anl.gov (donner.mcs.anl.gov [140.221.5.134]) by antares.mcs.anl.gov (8.6.10/8.6.10)  with ESMTP
	id XAA28135; Thu, 19 Sep 1996 23:26:02 -0500
Message-Id: <199609200426.XAA28135@antares.mcs.anl.gov>
To: mpi-comm@antares.mcs.anl.gov, mpi-core@antares.mcs.anl.gov
Subject: Misc-1.2
Date: Thu, 19 Sep 1996 23:26:00 -0500
From: Rusty Lusk <lusk@mcs.anl.gov>
Sender: owner-mpi-core@mcs.anl.gov
Precedence: bulk

%!PS-Adobe-2.0
%%Creator: dvips 5.528 Copyright 1986, 1994 Radical Eye Software
%%Title: temp.dvi
%%CreationDate: Thu Sep 19 16:46:18 1996
%%Pages: 23
%%PageOrder: Ascend
%%BoundingBox: 0 0 612 792
%%EndComments
%DVIPSCommandLine: dvips -o temp.ps temp
%DVIPSParameters: dpi=300, comments removed
%DVIPSSource:  TeX output 1996.09.19:1646
%%BeginProcSet: tex.pro
/TeXDict 250 dict def TeXDict begin /N{def}def /B{bind def}N /S{exch}N
/X{S N}B /TR{translate}N /isls false N /vsize 11 72 mul N /hsize 8.5 72
mul N /landplus90{false}def /@rigin{isls{[0 landplus90{1 -1}{-1 1}
ifelse 0 0 0]concat}if 72 Resolution div 72 VResolution div neg scale
isls{landplus90{VResolution 72 div vsize mul 0 exch}{Resolution -72 div
hsize mul 0}ifelse TR}if Resolution VResolution vsize -72 div 1 add mul
TR matrix currentmatrix dup dup 4 get round 4 exch put dup dup 5 get
round 5 exch put setmatrix}N /@landscape{/isls true N}B /@manualfeed{
statusdict /manualfeed true put}B /@copies{/#copies X}B /FMat[1 0 0 -1 0
0]N /FBB[0 0 0 0]N /nn 0 N /IE 0 N /ctr 0 N /df-tail{/nn 8 dict N nn
begin /FontType 3 N /FontMatrix fntrx N /FontBBox FBB N string /base X
array /BitMaps X /BuildChar{CharBuilder}N /Encoding IE N end dup{/foo
setfont}2 array copy cvx N load 0 nn put /ctr 0 N[}B /df{/sf 1 N /fntrx
FMat N df-tail}B /dfs{div /sf X /fntrx[sf 0 0 sf neg 0 0]N df-tail}B /E{
pop nn dup definefont setfont}B /ch-width{ch-data dup length 5 sub get}
B /ch-height{ch-data dup length 4 sub get}B /ch-xoff{128 ch-data dup
length 3 sub get sub}B /ch-yoff{ch-data dup length 2 sub get 127 sub}B
/ch-dx{ch-data dup length 1 sub get}B /ch-image{ch-data dup type
/stringtype ne{ctr get /ctr ctr 1 add N}if}B /id 0 N /rw 0 N /rc 0 N /gp
0 N /cp 0 N /G 0 N /sf 0 N /CharBuilder{save 3 1 roll S dup /base get 2
index get S /BitMaps get S get /ch-data X pop /ctr 0 N ch-dx 0 ch-xoff
ch-yoff ch-height sub ch-xoff ch-width add ch-yoff setcachedevice
ch-width ch-height true[1 0 0 -1 -.1 ch-xoff sub ch-yoff .1 add]{
ch-image}imagemask restore}B /D{/cc X dup type /stringtype ne{]}if nn
/base get cc ctr put nn /BitMaps get S ctr S sf 1 ne{dup dup length 1
sub dup 2 index S get sf div put}if put /ctr ctr 1 add N}B /I{cc 1 add D
}B /bop{userdict /bop-hook known{bop-hook}if /SI save N @rigin 0 0
moveto /V matrix currentmatrix dup 1 get dup mul exch 0 get dup mul add
.99 lt{/QV}{/RV}ifelse load def pop pop}N /eop{SI restore showpage
userdict /eop-hook known{eop-hook}if}N /@start{userdict /start-hook
known{start-hook}if pop /VResolution X /Resolution X 1000 div /DVImag X
/IE 256 array N 0 1 255{IE S 1 string dup 0 3 index put cvn put}for
65781.76 div /vsize X 65781.76 div /hsize X}N /p{show}N /RMat[1 0 0 -1 0
0]N /BDot 260 string N /rulex 0 N /ruley 0 N /v{/ruley X /rulex X V}B /V
{}B /RV statusdict begin /product where{pop product dup length 7 ge{0 7
getinterval dup(Display)eq exch 0 4 getinterval(NeXT)eq or}{pop false}
ifelse}{false}ifelse end{{gsave TR -.1 -.1 TR 1 1 scale rulex ruley
false RMat{BDot}imagemask grestore}}{{gsave TR -.1 -.1 TR rulex ruley
scale 1 1 false RMat{BDot}imagemask grestore}}ifelse B /QV{gsave
transform round exch round exch itransform moveto rulex 0 rlineto 0
ruley neg rlineto rulex neg 0 rlineto fill grestore}B /a{moveto}B /delta
0 N /tail{dup /delta X 0 rmoveto}B /M{S p delta add tail}B /b{S p tail}
B /c{-4 M}B /d{-3 M}B /e{-2 M}B /f{-1 M}B /g{0 M}B /h{1 M}B /i{2 M}B /j{
3 M}B /k{4 M}B /w{0 rmoveto}B /l{p -4 w}B /m{p -3 w}B /n{p -2 w}B /o{p
-1 w}B /q{p 1 w}B /r{p 2 w}B /s{p 3 w}B /t{p 4 w}B /x{0 S rmoveto}B /y{
3 2 roll p a}B /bos{/SS save N}B /eos{SS restore}B end
%%EndProcSet
TeXDict begin 40258431 52099146 1000 300 300
(/tmp_mnt/Net/antireo/antireo6/lusk/mpi2/report2/temp.dvi)
@start /Fa 1 106 df<030007800780030000000000000000007F807F80038003800380
038003800380038003800380038003800380FFFCFFFC0E187D9714>105
D E /Fb 12 122 df<387CFEFEFE7C3807077C860F>46 D<00E00001E0000FE000FFE000
F3E00003E00003E00003E00003E00003E00003E00003E00003E00003E00003E00003E000
03E00003E00003E00003E00003E00003E00003E00003E00003E00003E00003E000FFFF80
FFFF80111D7C9C1A>49 D<01FC0007FF000E0F801E0FC03F07E03F07E03F07E03F07E01E
0FC0000FC0000F80001F0001FC0001FC00000F800007C00003E00003F00003F83803F87C
03F8FE03F8FE03F8FE03F0FC03F07807E03C0FC01FFF8003FC00151D7E9C1A>51
D<FFFFFFE0FFFFFFE007E007E007E001E007E000E007E0006007E0007007E0003007E000
3007E0603007E0603007E0600007E0E00007E1E00007FFE00007FFE00007E1E00007E0E0
0007E0600007E0600C07E0600C07E0000C07E0001807E0001807E0001807E0003807E000
7807E000F807E003F0FFFFFFF0FFFFFFF01E1F7E9E22>69 D<07FC001FFF003F0F803F07
C03F03E03F03E00C03E00003E0007FE007FBE01F03E03C03E07C03E0F803E0F803E0F803
E0FC05E07E0DE03FF8FE0FE07E17147F9319>97 D<01FE0007FF800F83C01E01E03E00F0
7C00F07C00F8FC00F8FFFFF8FFFFF8FC0000FC0000FC00007C00007C00003E00181E0018
0F807007FFE000FF8015147F9318>101 D<FF00FF001F001F001F001F001F001F001F00
1F001F001F001F001F001F001F001F001F001F001F001F001F001F001F001F001F001F00
1F001F001F00FFE0FFE00B207E9F0E>108 D<FE0FE03F80FE1FF07FC01E70F9C3E01E40
7D01F01E807E01F01F807E01F01F007C01F01F007C01F01F007C01F01F007C01F01F007C
01F01F007C01F01F007C01F01F007C01F01F007C01F01F007C01F01F007C01F01F007C01
F0FFE3FF8FFEFFE3FF8FFE27147D932C>I<FF1FC0FF7FF01FE1F81F80FC1F007E1F007E
1F003E1F003F1F003F1F003F1F003F1F003F1F003F1F003E1F007E1F007C1F80FC1FC1F8
1F7FE01F1F801F00001F00001F00001F00001F00001F00001F0000FFE000FFE000181D7E
931D>112 D<01800180018003800380038007800F803F80FFFCFFFC0F800F800F800F80
0F800F800F800F800F800F800F860F860F860F860F8607CC03F801F00F1D7F9C14>116
D<FFE1FF00FFE1FF000F80700007C0E00007E0C00003E1800001F3800000FF0000007E00
00003E0000003F0000007F8000006F800000C7C0000183E0000381F0000701F8000E00FC
00FF81FF80FF81FF8019147F931C>120 D<FFE07F80FFE07F801F001C000F8018000F80
180007C0300007C0300003E0600003E0600001F0C00001F0C00001F9C00000F9800000FF
8000007F0000007F0000003E0000003E0000001C0000001C000000180000001800007830
0000FC300000FC600000C0E00000E1C000007F8000001E000000191D7F931C>I
E /Fc 4 103 df<70F8FCFC74040404080810102040060E7C840D>59
D<00F1800389C00707800E03801C03803C0380380700780700780700780700F00E00F00E
00F00E00F00E10F01C20F01C20703C20705C40308C400F078014147E9318>97
D<07803F8007000700070007000E000E000E000E001C001C001CF01D0C3A0E3C0E380F38
0F700F700F700F700FE01EE01EE01EE01CE03CE038607060E031C01F0010207E9F14>I<
00007C0000CE00019E00039E00030C000700000700000700000700000E00000E00000E00
00FFF0000E00000E00001C00001C00001C00001C00001C00003800003800003800003800
00380000700000700000700000700000700000E00000E00000E00000E00000C00001C000
318000798000F300006200003C000017297E9F16>102 D E /Fd
33 122 df<00E001C0038007000E000E001C001C003800380038007000700070007000E0
00E000E000E000E000E000E000E000E000E000E000E00070007000700070003800380038
001C001C000E000E000700038001C000E00B2A7E9E10>40 D<E000700038001C000E000E
000700070003800380038001C001C001C001C000E000E000E000E000E000E000E000E000
E000E000E000E001C001C001C001C0038003800380070007000E000E001C0038007000E0
000B2A7E9E10>I<E0E0E060404040C003087C820C>44 D<001C0000003E0000003E0000
002E0000006700000067000000E7800000C7800000C3800001C3C0000183C0000181C000
0381E0000381E0000700F0000700F0000600F0000E0078000FFFF8000FFFF8001C003C00
1C003C0018003C0038001E0038001E0070001F0070000F0070000F00E0000780191D7F9C
1C>65 D<FFF800FFFF00F00F80F003C0F001E0F000F0F000F0F000F0F000F0F000F0F001
E0F007C0FFFF80FFFE00FFFF80F03FC0F003E0F001F0F000F0F00078F00078F00078F000
78F00078F000F0F001E0F007C0FFFF80FFFC00151D7C9C1C>I<003FC000FFF003C0F007
80300F00001E00003C00003C0000780000780000780000F00000F00000F00000F00000F0
0000F00000F00000F00000F000007800007800007800003C00003C00001E00000F000807
801803C07800FFF0003F80151F7D9D1B>I<FFFC00FFFF00F00F80F003E0F001F0F000F0
F00078F00038F0003CF0003CF0001CF0001EF0001EF0001EF0001EF0001EF0001EF0001E
F0001EF0003CF0003CF0003CF00078F000F0F000F0F003E0F00FC0FFFF00FFFC00171D7C
9C1E>I<FFFFC0FFFFC0F00000F00000F00000F00000F00000F00000F00000F00000F000
00F00000F00000FFFF80FFFF80F00000F00000F00000F00000F00000F00000F00000F000
00F00000F00000F00000F00000FFFFC0FFFFC0121D7C9C19>I<003F8001FFF003C0F807
80380F00181E00003C00003C0000780000780000780000F00000F00000F00000F00000F0
0000F00000F007F8F007F8F000387800387800387800383C00383C00381E00380F003807
803803C0F801FFF0003F80151F7D9D1C>71 D<F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0
F0F0F0F0F0F0F0F0F0F0F0F0041D7C9C0C>73 D<F000F000F000F000F000F000F000F000
F000F000F000F000F000F000F000F000F000F000F000F000F000F000F000F000F000F000
F000FFFEFFFE0F1D7C9C16>76 D<FC0007E0FC0007E0FC0007E0EE000DE0EE000DE0EE00
0DE0E70019E0E70019E0E70019E0E78039E0E38031E0E3C071E0E3C071E0E1C061E0E1C0
61E0E1E0E1E0E1E0E1E0E0E0C1E0E0F1C1E0E07181E0E07181E0E07181E0E03B01E0E03B
01E0E03B01E0E01E01E0E01E01E0E01E01E0E00001E01B1D7C9C24>I<FC0070FC0070FE
0070EE0070EF0070E70070E70070E78070E38070E3C070E3C070E1E070E1E070E0E070E0
F070E07070E07870E07870E03C70E03C70E01C70E01E70E00E70E00E70E00F70E00770E0
07F0E003F0E003F0141D7C9C1D>I<003F000001FFE00003FFF00007C0F8000F807C001E
001E003E001F003C000F00780007807800078078000780F00003C0F00003C0F00003C0F0
0003C0F00003C0F00003C0F00003C0F00003C0F80007C078000780780007807C000F803C
000F003E001F001F003E000F807C0007C0F80003FFF00001FFE000003F00001A1F7E9D1F
>I<FFFC00FFFF00F00F80F003C0F001E0F000F0F000F0F000F0F000F0F000F0F000F0F0
01E0F003E0F00FC0FFFF80FFFE00F00000F00000F00000F00000F00000F00000F00000F0
0000F00000F00000F00000F00000F00000141D7C9C1B>I<003F000001FFE00003FFF000
07C0F8000F807C001F003E003E001F003C000F00780007807800078078000780F00003C0
F00003C0F00003C0F00003C0F00003C0F00003C0F00003C0F00003C0F00003C078000780
78000780780E07803C0F0F003E079F001E03DE000F83FC0007C1F80003FFF00001FFF800
003F780000003C0000003E0000001F0000000F801A237E9D1F>I<FFF800FFFF00F00F80
F003C0F001E0F000F0F000F0F000F0F000F0F000F0F001E0F003E0F00FC0FFFF80FFFF00
FFF800F03C00F01C00F01E00F00F00F00F00F00780F00780F003C0F003C0F001E0F000F0
F000F0F00078151D7C9C1B>I<03F8000FFE001C0F00380700700300600000E00000E000
00E00000E00000F000007800007F00003FE0001FFC0007FE0001FF00001F800007800003
C00003C00001C00001C00001C00001C0C00180E00380F007007C0E001FFC0007F000121F
7E9D17>I<FFFFFF80FFFFFF80001E0000001E0000001E0000001E0000001E0000001E00
00001E0000001E0000001E0000001E0000001E0000001E0000001E0000001E0000001E00
00001E0000001E0000001E0000001E0000001E0000001E0000001E0000001E0000001E00
00001E0000001E0000001E0000191D7F9C1C>I<F00070F00070F00070F00070F00070F0
0070F00070F00070F00070F00070F00070F00070F00070F00070F00070F00070F00070F0
0070F00070F00070F00070F00070F000707800E07800E03C01C01E03800F078007FE0001
F800141E7C9C1D>I<78000E007C001E003C003C001E0038000F0070000F00F0000781E0
0003C1C00001C3C00001E7800000F70000007E0000003E0000003C0000003C0000007E00
000077000000E7800001E3800003C1C0000381E0000700F0000F00F8000E0078001C003C
003C003E0078001F0070000F00F0000F80191D7F9C1C>88 D<F80001E07C0001C03E0003
801E0007801F0007000F800E0007801E0007C01C0003E03C0001E0380001F0700000F0F0
000078E000007DC000003FC000001F8000001F0000000F0000000F0000000F0000000F00
00000F0000000F0000000F0000000F0000000F0000000F0000000F0000000F00001B1D80
9C1C>I<0FC03FF07FF87038401C001C001C00FC0FFC3FFC781CE01CE01CE01CF07C7FFC
7FDC3F1C0E127E9114>97 D<E000E000E000E000E000E000E000E000E000E000E000E3E0
EFF0FFF8F87CF01CE01EE00EE00EE00EE00EE00EE00EE01CF01CF87CFFF8EFF0E3C00F1D
7D9C15>I<000E000E000E000E000E000E000E000E000E000E000E0F8E1FEE3FFE7C3E70
0E700EE00EE00EE00EE00EE00EE00EF00E701E7C3E3FFE1FEE0F8E0F1D7E9C15>100
D<07C01FE03FF078787018601CFFFCFFFCFFFCE000E000E000700070043C1C3FFC1FF807
E00E127E9112>I<E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0
E0031D7D9C0A>108 D<E3E0EFF0FFF8F83CF01CE01CE01CE01CE01CE01CE01CE01CE01C
E01CE01CE01CE01CE01C0E127D9115>110 D<E3E0EFF0FFF8F87CF01CE01EE00EE00EE0
0EE00EE00EE00EE01CF03CF87CFFF8EFF0E3C0E000E000E000E000E000E000E000E0000F
1A7D9115>112 D<1C001C001C001C001C001C00FFE0FFE01C001C001C001C001C001C00
1C001C001C001C001C001C001C201FF00FF007C00C187F970F>116
D<E01CE01CE01CE01CE01CE01CE01CE01CE01CE01CE01CE01CE01CE01CE07CFFFC7FDC3F
1C0E127D9115>I<7003807807003C0E001C1C000E1C0007380003F00001E00001C00001
E00003F0000738000E18000E1C001C0E00380700700380F003C01212809113>120
D<E007E007700E700E780E381C381C1C181C380C380E300E7006700760036003C001C001
C001800180030003000700FE00FC00F800101A7F9113>I E /Fe
24 119 df<00003F03E00000C386700001878CF00003879CF00003031860000700380000
070038000007003800000E003800000E007000000E007000000E00700000FFFFFF80001C
007000001C00E000001C00E000001C00E000001C00E000003800E000003801C000003801
C000003801C000003801C000007001C00000700380000070038000007003800000700380
00006003800000E007000000E007000000E007000000E007000000C006000001C00E0000
01C00E000031860C0000798F180000F31E100000620C6000003C07C000002429829F1C>
11 D<70F8F8F0E005057B840E>46 D<00000200000006000000060000000E0000001E00
00001E0000003F0000002F0000004F0000004F0000008F0000010F0000010F0000020F00
00020F0000040F00000C0F0000080F0000100F0000100F0000200F80003FFF8000400780
00C007800080078001000780010007800200078002000780060007801E000F80FF807FF8
1D207E9F22>65 D<01FFFFFE001E001C001E000C001E0004001E0004003C0004003C0004
003C0004003C00040078080800780800007808000078180000F0300000FFF00000F03000
00F0300001E0200001E0200001E0200001E0001003C0002003C0002003C0004003C00040
078000800780018007800100078007000F001F00FFFFFE001F1F7D9E1F>69
D<01FFFF00001E03C0001E00E0001E0070001E0078003C0078003C0078003C0078003C00
78007800F0007800F0007801E0007801C000F0070000F01E0000FFF00000F0380001E01C
0001E01E0001E00E0001E00F0003C01E0003C01E0003C01E0003C01E0007803C0007803C
0807803C0807803C100F801C10FFF00C20000007C01D207D9E21>82
D<00F1800389C00707800E03801C03803C0380380700780700780700780700F00E00F00E
00F00E00F00E20F01C40F01C40703C40705C40308C800F070013147C9317>97
D<07803F8007000700070007000E000E000E000E001C001C001CF01D0C3A0E3C0E380F38
0F700F700F700F700FE01EE01EE01EE01CE03CE038607060E031C01F0010207B9F15>I<
007E0001C1000300800E07801E07801C07003C0200780000780000780000F00000F00000
F00000F00000F0000070010070020030040018380007C00011147C9315>I<0000780003
F80000700000700000700000700000E00000E00000E00000E00001C00001C000F1C00389
C00707800E03801C03803C0380380700780700780700780700F00E00F00E00F00E00F00E
20F01C40F01C40703C40705C40308C800F070015207C9F17>I<007C01C207010E011C01
3C013802780C7BF07C00F000F000F000F0007000700170023804183807C010147C9315>
I<00007800019C00033C00033C000718000700000700000E00000E00000E00000E00000E
0001FFE0001C00001C00001C00001C000038000038000038000038000038000070000070
0000700000700000700000700000E00000E00000E00000E00000C00001C00001C0000180
003180007B0000F300006600003C00001629829F0E>I<003C6000E27001C1E00380E007
00E00F00E00E01C01E01C01E01C01E01C03C03803C03803C03803C03803C07003C07001C
0F001C17000C2E0003CE00000E00000E00001C00001C00301C00783800F0700060E0003F
8000141D7E9315>I<01E0000FE00001C00001C00001C00001C000038000038000038000
038000070000070000071E000763000E81800F01C00E01C00E01C01C03801C03801C0380
1C0380380700380700380700380E10700E20700C20701C20700C40E00CC060070014207D
9F17>I<00C001E001E001C000000000000000000000000000000E003300230043804300
470087000E000E000E001C001C001C003840388030807080310033001C000B1F7C9E0E>
I<03C01FC0038003800380038007000700070007000E000E000E000E001C001C001C001C
0038003800380038007000700070007100E200E200E200E200640038000A207C9F0C>
108 D<1C0F80F0002630C318004740640C004780680E004700700E004700700E008E00E0
1C000E00E01C000E00E01C000E00E01C001C01C038001C01C038001C01C038001C01C070
8038038071003803806100380380E10038038062007007006600300300380021147C9325
>I<1C0F802630C04740604780604700704700708E00E00E00E00E00E00E00E01C01C01C
01C01C01C01C03843803883803083807083803107003303001C016147C931A>I<007C00
01C3000301800E01C01E01C01C01E03C01E07801E07801E07801E0F003C0F003C0F003C0
F00780F00700700F00700E0030180018700007C00013147C9317>I<01C1E00262180474
1C04781C04701E04701E08E01E00E01E00E01E00E01E01C03C01C03C01C03C01C0380380
780380700380E003C1C0072380071E000700000700000E00000E00000E00000E00001C00
001C0000FFC000171D809317>I<1C1E002661004783804787804707804703008E00000E
00000E00000E00001C00001C00001C00001C000038000038000038000038000070000030
000011147C9313>114 D<00FC030206010C030C070C060C000F800FF007F803FC003E00
0E700EF00CF00CE008401020601F8010147D9313>I<018001C003800380038003800700
0700FFF007000E000E000E000E001C001C001C001C003800380038003820704070407080
708031001E000C1C7C9B0F>I<0E00C03300E02301C04381C04301C04701C08703800E03
800E03800E03801C07001C07001C07001C07101C0E20180E20180E201C1E200C264007C3
8014147C9318>I<0E03803307802307C04383C04301C04700C08700800E00800E00800E
00801C01001C01001C01001C02001C02001C04001C04001C08000E300003C00012147C93
15>I E /Ff 50 123 df<000078007C7800FC7801FC7803C00003800007800007800007
8000078000078000078000078000078000FFFC78FFFC78FFFC7807807807807807807807
807807807807807807807807807807807807807807807807807807807807807807807807
8078078078078078078078152480A31A>12 D<FFE0FFE0FFE00B037F8C10>45
D<F0F0F0F004047B830E>I<00C001C007C0FFC0FFC0FBC003C003C003C003C003C003C0
03C003C003C003C003C003C003C003C003C003C003C003C003C003C003C003C003C003C0
03C0FFFFFFFFFFFF10227CA118>49 D<03F0000FFC001FFE003C1F003007807007C06003
C0E003E0C001E04001E04001E00001E00001E00001E00003C00003C0000780000780000F
00001E00003C0000780000F00001E00001C0000380000700000E00001C00003800007000
00FFFFE0FFFFE0FFFFE013227EA118>I<01F00007FC001FFF003E0F003807807003C020
03C02003C00003C00003C00003C0000780000780000F00001E0003FC0003F80003FE0000
0F000007800003C00003C00001E00001E00001E00001E00001E08001E0C003C0E003C070
07803C0F801FFF000FFC0003F00013237EA118>I<001F00001F00002F00002F00006F00
00EF0000CF0001CF0001CF00038F00038F00078F00070F000F0F000E0F001E0F003C0F00
3C0F00780F00780F00F00F00FFFFF8FFFFF8FFFFF8000F00000F00000F00000F00000F00
000F00000F00000F00000F0015217FA018>I<FFFFE0FFFFE0FFFFE00000E00001C00003
80000780000700000E00001E00001C00003C0000380000780000780000F00000F00000E0
0001E00001E00001E00003C00003C00003C00003C00003C0000780000780000780000780
0007800007800007800013217EA018>55 D<01F00007FC000FFE001E0F003C07803C0780
7803C07803C07803C07803C07803C03803803C07801E0F000F1E0007FC0003F8000FFE00
1E0F003C07807803C07803C0F001E0F001E0F001E0F001E0F001E0F001E07803C07803C0
3C07803E0F801FFF0007FC0001F00013237EA118>I<01F00007FC000FFE001E0F003C07
003807807803807803C0F003C0F001C0F001E0F001E0F001E0F001E0F001E0F001E07003
E07803E07803E03C07E03E1FE01FFDE00FF1E003E3C00003C00003C00003800007800007
00000F00101E00183C003FF8001FF00007C00013237EA118>I<001F0000001F0000003F
8000003F8000003B8000007BC0000073C0000071C00000F1E00000F1E00000E0E00001E0
F00001E0F00001C0F00003C0780003C078000380780007803C0007803C0007003C000F00
1E000F001E000FFFFE001FFFFF001FFFFF001C000F003C0007803C000780380007807800
03C0780003C0700003C0F00001E0F00001E0E00001E01B237EA220>65
D<FFFC00FFFF80FFFFC0F007F0F001F0F00078F0003CF0003CF0003CF0003CF0003CF000
38F00078F000F0F003E0FFFFC0FFFF00FFFFC0F00FE0F001F8F00078F0003CF0001CF000
1EF0001EF0001EF0001EF0001EF0003CF0007CF000F8F003F0FFFFE0FFFFC0FFFE001723
7BA220>I<000FF000007FFC0000FFFF0001F01F0003C00700078000000F0000001E0000
003E0000003C0000003C000000780000007800000078000000F0000000F0000000F00000
00F0000000F0000000F0000000F0000000F0000000F00000007800000078000000780000
003C0000003C0000003E0000001E0000000F0000000780008003C0038001F00F8000FFFF
00007FFC00000FF00019257DA31F>I<FFFE0000FFFFC000FFFFE000F003F000F000F800
F0007C00F0003E00F0001E00F0000F00F0000F00F0000780F0000780F0000780F00003C0
F00003C0F00003C0F00003C0F00003C0F00003C0F00003C0F00003C0F00003C0F0000380
F0000780F0000780F0000780F0000F00F0001F00F0001E00F0003C00F000FC00F003F800
FFFFE000FFFFC000FFFE00001A237BA223>I<FFFFF0FFFFF0FFFFF0F00000F00000F000
00F00000F00000F00000F00000F00000F00000F00000F00000F00000FFFFE0FFFFE0FFFF
E0F00000F00000F00000F00000F00000F00000F00000F00000F00000F00000F00000F000
00F00000F00000FFFFF8FFFFF8FFFFF815237BA21D>I<FFFFF0FFFFF0FFFFF0F00000F0
0000F00000F00000F00000F00000F00000F00000F00000F00000F00000F00000F00000FF
FFC0FFFFC0FFFFC0F00000F00000F00000F00000F00000F00000F00000F00000F00000F0
0000F00000F00000F00000F00000F00000F0000014237BA21C>I<000FF000003FFE0000
FFFF8001F80F8003E00380078000000F0000001E0000001E0000003C0000003C00000078
0000007800000078000000F0000000F0000000F0000000F0000000F0000000F0000000F0
00FFC0F000FFC0F000FFC0780003C0780003C0780003C03C0003C03C0003C01E0003C01E
0003C00F0003C0078003C003E003C001F807C000FFFFC0003FFF00000FF8001A257DA321
>I<F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0
F004237CA20D>73 D<F00000F00000F00000F00000F00000F00000F00000F00000F00000
F00000F00000F00000F00000F00000F00000F00000F00000F00000F00000F00000F00000
F00000F00000F00000F00000F00000F00000F00000F00000F00000F00000F00000FFFFC0
FFFFC0FFFFC012237BA21A>76 D<FC00007EFE0000FEFE0000FEFE0000FEF70001DEF700
01DEF70001DEF78003DEF380039EF380039EF3C0079EF3C0079EF1C0071EF1C0071EF1E0
0F1EF0E00E1EF0E00E1EF0F01E1EF0F01E1EF0701C1EF0783C1EF0783C1EF038381EF03C
781EF03C781EF01C701EF01C701EF01EF01EF00EE01EF00EE01EF00FE01EF007C01EF007
C01EF007C01EF000001E1F237BA22A>I<FC001EFE001EFE001EFE001EF7001EF7001EF3
801EF3801EF3C01EF1C01EF1C01EF1E01EF0E01EF0F01EF0F01EF0781EF0781EF0381EF0
3C1EF03C1EF01E1EF01E1EF00E1EF00F1EF0071EF0071EF0079EF0039EF0039EF001DEF0
01DEF000FEF000FEF000FEF0007E17237BA222>I<001FC000007FF00001FFFC0003F07E
0007C01F000F800F801F0007C01E0003C03C0001E03C0001E0780000F0780000F0780000
F070000070F0000078F0000078F0000078F0000078F0000078F0000078F0000078F00000
78F0000078780000F0780000F0780000F07C0001F03C0001E03E0003E01E0003C01F0007
C00F800F8007C01F0003F07E0001FFFC00007FF000001FC0001D257DA324>I<FFFE00FF
FF80FFFFC0F003E0F000F0F00078F00078F0003CF0003CF0003CF0003CF0003CF0003CF0
0078F00078F000F0F003E0FFFFC0FFFF80FFFE00F00000F00000F00000F00000F00000F0
0000F00000F00000F00000F00000F00000F00000F00000F00000F0000016237BA21F>I<
FFFC00FFFF80FFFFC0F003E0F000F0F00078F00038F0003CF0003CF0003CF0003CF0003C
F00038F00078F000F0F003E0FFFFC0FFFF80FFFE00F01E00F00F00F00700F00780F00380
F003C0F001E0F001E0F000F0F000F0F00078F00038F0003CF0001EF0001EF0000F18237B
A21F>82 D<00FE0003FFC007FFE00F81E01E00603C00003C000078000078000078000078
00007800007C00003C00003F00001FC0000FFC0007FF0001FF80003FC00007E00001F000
00F00000F8000078000078000078000078000078000078C000F0E000F0F801E07E07C03F
FF800FFF0001FC0015257EA31B>I<FFFFFFF0FFFFFFF0FFFFFFF0000F0000000F000000
0F0000000F0000000F0000000F0000000F0000000F0000000F0000000F0000000F000000
0F0000000F0000000F0000000F0000000F0000000F0000000F0000000F0000000F000000
0F0000000F0000000F0000000F0000000F0000000F0000000F0000000F0000000F000000
0F0000000F0000000F00001C237EA221>I<F0003CF0003CF0003CF0003CF0003CF0003C
F0003CF0003CF0003CF0003CF0003CF0003CF0003CF0003CF0003CF0003CF0003CF0003C
F0003CF0003CF0003CF0003CF0003CF0003CF0003CF0003CF0003C780078780078780078
3C00F01E01E01F87E00FFFC003FF0000FC0016247BA221>I<FFFFFEFFFFFEFFFFFE0000
3C00007C0000F80000F00001F00001E00003E00007C0000780000F80000F00001F00003E
00003C00007C0000780000F80001F00001E00003E00003C00007C0000F80000F00001F00
001E00003E00007C0000780000FFFFFFFFFFFFFFFFFF18237DA21E>90
D<07E01FF83FFC381E201E000F000F000F000F00FF07FF1FFF3E0F780FF00FF00FF00FF0
0FF83F7FFF3FEF1F8F10167E9517>97 D<F00000F00000F00000F00000F00000F00000F0
0000F00000F00000F00000F00000F00000F00000F1F000F7FC00FFFE00FC1F00F80F00F0
0780F00780F003C0F003C0F003C0F003C0F003C0F003C0F003C0F003C0F00780F00780F8
0F00FC3E00FFFE00F7F800F1F00012237CA219>I<01FC0007FF000FFF801F03803C0180
780000780000700000F00000F00000F00000F00000F00000F00000780000780000780000
3C00401F03C00FFFC007FF8001FC0012167E9516>I<0003C00003C00003C00003C00003
C00003C00003C00003C00003C00003C00003C00003C00003C003E3C00FFBC01FFFC03F0F
C03C07C07803C07803C0F003C0F003C0F003C0F003C0F003C0F003C0F003C0F003C07803
C07803C03C07C03E0FC01FFFC00FFBC003E3C012237EA219>I<03F00007FC001FFE003E
0F003C0780780380780380F001C0FFFFC0FFFFC0FFFFC0F00000F00000F0000070000078
00007800003C00801F07800FFF8007FF0001F80012167E9516>I<003F00FF01FF03C003
8007800780078007800780078007800780FFF8FFF8FFF807800780078007800780078007
80078007800780078007800780078007800780078007800780102380A20F>I<01F07807
FFF80FFFF81F1F001E0F003C07803C07803C07803C07803C07801E0F001F1F000FFE001F
FC0019F0003800003800003C00001FFE001FFFC01FFFE03FFFF07801F07800F8F00078F0
0078F00078F000787800F03E03E01FFFC00FFF8001FC0015217F9518>I<F0F0F0F00000
00000000000000F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F004237DA20B>
105 D<F00000F00000F00000F00000F00000F00000F00000F00000F00000F00000F00000
F00000F00000F01F80F03F00F03E00F07C00F0F800F1F000F3E000F7C000FFC000FFC000
FFE000FFE000FDF000F8F800F07800F07C00F03E00F01E00F01F00F00F00F00F80F007C0
12237CA218>107 D<F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0
F0F0F0F0F0F0F0F004237DA20B>I<F0F807C0F3FE1FF0F7FF3FF8FE0F7078FC0FE07CF8
07C03CF807C03CF007803CF007803CF007803CF007803CF007803CF007803CF007803CF0
07803CF007803CF007803CF007803CF007803CF007803CF007803CF007803C1E167C9527
>I<F1F8F3FCF7FEFE1EF80FF80FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00F
F00FF00FF00FF00FF00F10167C9519>I<01FC0007FF000FFF801F07C03C01E07800F078
00F0700070F00078F00078F00078F00078F00078F000787800F07800F07C01F03E03E01F
07C00FFF8007FF0001FC0015167F9518>I<F1F000F7FC00FFFE00FC3F00F80F00F00780
F00780F007C0F003C0F003C0F003C0F003C0F003C0F003C0F007C0F00780F00F80F80F00
FC3E00FFFE00F7F800F1F000F00000F00000F00000F00000F00000F00000F00000F00000
F00000F0000012207C9519>I<F0E0F3E0F7E0FF00FE00FC00F800F800F000F000F000F0
00F000F000F000F000F000F000F000F000F000F0000B167C9511>114
D<07F01FFC3FFE3C0E7806780078007C003F003FF01FF80FFC01FE001F000F000F000FC0
0FF81EFFFE3FFC0FF010167F9513>I<0F000F000F000F000F000F00FFF8FFF8FFF80F00
0F000F000F000F000F000F000F000F000F000F000F000F000F000F080F1C07FC07F803E0
0E1C7F9B12>I<F00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF0
0FF00FF00FF01FF83F7FFF7FCF1F0F10167C9519>I<F001E0F001E07803C07803C07803
C03C07803C07803C07801E07001E0F001E0F000F0E000F1E000F1E00071C00079C0007BC
0003B80003B80003F80001F00001F00013167F9516>I<7801F07C01E03E03C01E07C00F
0780078F0007DE0003FC0001FC0000F80000700000F80001FC0003DC00039E00078F000F
07801E07801E03C03C01E07800F0F800F81516809516>120 D<F001E0F001E07803C078
03C07C03C03C07803C07801E07801E07001E0F000F0F000F0E00071E00079E00039C0003
9C00039C0001980001D80000F80000F00000F00000F00000E00000E00001E00001C00001
C0000380007F80007F00007E000013207F9516>I<7FFFC07FFFC07FFFC0000F80000F00
001E00003E00007C0000780000F00001F00003E00003C0000780000F80001F00001E0000
3C00007C0000FFFFC0FFFFC0FFFFC012167F9515>I E /Fg 32 90
df<FFC0FFC00A027D8A0F>45 D<3078F8787005057C840D>I<007E0001C3000301800701
C00E00C00E00E01C00E01C00E03C01E03801E07801E07801E07801E07801E07801E0F003
C0F003C0F003C0F003C0F003C0F00380F00780E00780E00700E00700E00E00600E00701C
003038003870000FC000131F7C9D17>48 D<000C001C00FC0F3800380038003800380038
00700070007000700070007000E000E000E000E000E000E001C001C001C001C001C001C0
038003C0FFFE0F1E7C9D17>I<003F8000C1E00100F00200780400780400780F007C0F80
7C0F807C0F00780600780000F80000F00001E00001C0000380000700000E00001C000038
0000600000C0000180000300200600200800401000403FFFC07FFF80FFFF80161E7E9D17
>I<007F000183C00201E00400F00700F00F00F00F01F00F01F00001E00001E00003C000
0380000700000E0000F800000E000007000007800007C00003C00007C03007C07807C0F8
07C0F807C0F00780800F00400E00201C0018780007E000141F7D9D17>I<01803001FFE0
03FFC003FF0003FC00020000020000020000040000040000040000047C00058700060380
0C01800801C00001C00001E00001E00001E00001E07003C0F803C0F003C0E00380800780
400700400E00201C0018700007C000141F7D9D17>53 D<2000003FFFE07FFFC07FFF8040
0100C0020080020080040000080000100000200000400000400000800001800003000003
00000700000600000E00000E00001E00001C00001C00003C00003C00003C000078000078
0000780000300000131F799D17>55 D<003F0000C1C00100600200600400300C00300C00
300C00300C00600E00600F80C00FC18007F60003FC0001FC0001FF00063F800C0F801007
C03003C06001C06000C0C000C0C000C0C000C0C00080C0010060030030040018180007E0
00141F7D9D17>I<007E0001C3000301800601C00E01C01C00C03C00E03C00E03C01E078
01E07801E07801E07801E07803E07803E03803C03807C01C0BC00C13C003E38000078000
0780000700000E00600E00F01C00F01800E0300080600041C0003F0000131F7C9D17>I<
0000100000001800000038000000380000007800000078000000FC000001BC0000013C00
00033C0000023C0000063C0000043E0000081E0000081E0000101E0000101E0000201E00
00200F0000400F0000400F0000FFFF0000800F0001000F80010007800200078002000780
04000780040007800C0007C03E0007C0FF807FFC1E207E9F22>65
D<0001F808000E061800380138007000F801E0007803C0007007800030078000300F0000
301F0000301E0000303E0000203C0000007C0000007C0000007C0000007C000000F80000
00F8000000F8000000F8000000F80000007800004078000080780000803C0000803C0001
001C0002000E00020006000C000300100001C0E000003F00001D217B9F21>67
D<07FFFF00007C01E0003C00F0003C00780078003C0078003C0078001E0078001E007800
1E0078001F00F0001F00F0001F00F0001F00F0001F00F0001F00F0001F01E0001E01E000
3E01E0003E01E0003E01E0003C01E0007C03C0007803C000F003C000F003C001E003C003
C003C0078007800F0007803C00FFFFE000201F7E9E23>I<07FFFFF8007C0078003C0038
003C001800780018007800080078000800780008007800080078080800F0100000F01000
00F0100000F0300000FFF00000F0700001E0200001E0200001E0200001E0200001E00008
01E0001003C0001003C0001003C0002003C0002003C0006003C000C0078001C0078007C0
FFFFFF801D1F7E9E1F>I<07FFFFF8007C0078003C0038003C0018007800180078000800
78000800780008007800080078000800F0100000F0100000F0100000F0300000F0700000
FFF00001E0600001E0200001E0200001E0200001E0200001E0000003C0000003C0000003
C0000003C0000003C0000003C000000780000007C00000FFFE00001D1F7E9E1E>I<0001
FC04000F030C003C009C0070007C00E0003C01C0003803800018078000180F0000181F00
00181E0000183E0000103C0000007C0000007C0000007C0000007C000000F8000000F800
0000F8007FFCF80003E0780001E0780001E0780003C0780003C03C0003C03C0003C01C00
03C00E0007C007000B800380118001E06080003F80001E217B9F24>I<07FFC7FFC0007C
00F800003C007800003C007800007800F000007800F000007800F000007800F000007800
F000007800F00000F001E00000F001E00000F001E00000F001E00000FFFFE00000F001E0
0001E003C00001E003C00001E003C00001E003C00001E003C00001E003C00003C0078000
03C007800003C007800003C007800003C007800003C007800007800F000007C00F8000FF
F8FFF800221F7E9E22>I<07FFE0007C00003C00003C0000780000780000780000780000
780000780000F00000F00000F00000F00000F00000F00001E00001E00001E00001E00001
E00001E00003C00003C00003C00003C00003C00003C00007800007C000FFFC00131F7F9E
10>I<07FFE07FE0007C001F00003C000C00003C00180000780010000078004000007800
800000780100000078020000007804000000F008000000F010000000F060000000F0F000
0000F1F0000000F278000001E478000001E878000001F03C000001E03C000001E01E0000
01E01E000003C00F000003C00F000003C00F000003C007800003C007800003C003C00007
8003C00007C007E000FFFC3FFC00231F7E9E23>75 D<07FFF000007E0000003C0000003C
000000780000007800000078000000780000007800000078000000F0000000F0000000F0
000000F0000000F0000000F0000001E0000001E0000001E0000001E0000001E0008001E0
010003C0010003C0010003C0030003C0020003C0060003C0060007801E0007807C00FFFF
FC00191F7E9E1C>I<07FC0000FFC0007C0000F800003C00017800003C00017800004E00
02F000004E0002F000004E0004F000004E0004F000004E0008F000004E0008F000008700
11E00000870011E00000870021E00000870021E00000870041E00000838041E000010380
83C00001038083C00001038103C00001038203C0000101C203C0000101C403C0000201C4
0780000201C80780000201C80780000201D00780000200F00780000600E00780000600E0
0F00000F00C00F8000FFE0C1FFF8002A1F7E9E2A>I<07FC01FFC0003E003E00003E0018
00003E001800004F001000004F001000004780100000478010000043C010000043C01000
0083C020000081E020000081E020000080F020000080F020000080782000010078400001
007C400001003C400001003C400001001E400001001E400002000F800002000F80000200
0F800002000780000200078000060003800006000300000F00010000FFE0010000221F7E
9E22>I<0003F800001E0E000038070000E0038001C001C003C001E0078000E00F0000F0
0F0000F01E0000F01E0000F83E0000F83C0000F87C0000F87C0000F87C0000F87C0000F8
F80001F0F80001F0F80001F0F80001F0F80003E0780003E0780003C0780007C07C000780
3C000F003C001E001E001C000E0038000700F00003C3C00000FE00001D217B9F23>I<07
FFFF00007C03C0003C01E0003C00F0007800F0007800F8007800F8007800F8007800F800
7800F000F001F000F001E000F003C000F0078000F00F0000FFF80001E0000001E0000001
E0000001E0000001E0000001E0000003C0000003C0000003C0000003C0000003C0000003
C000000780000007C00000FFFC00001D1F7E9E1F>I<07FFFC00007C0700003C03C0003C
01E0007801E0007801F0007801F0007801F0007801F0007801E000F003E000F003C000F0
078000F00F0000F03C0000FFF00001E0300001E0380001E01C0001E01C0001E01C0001E0
1E0003C03E0003C03E0003C03E0003C03E0003C03E0003C03E0207803E0407C01F04FFFC
0F18000003E01F207E9E21>82 D<003F040060CC01803C03801C03001C0700180600080E
00080E00080E00080E00000F00000F80000FE00007FE0003FF8001FFC0007FE00007E000
01E00000E00000F00000F04000E04000E04000E04000E06000C0600180E00380F80300C6
0C0081F80016217D9F19>I<3FFFFFF03C0780F03007803060078030400F0010400F0010
C00F0010800F0010800F0010800F0010001E0000001E0000001E0000001E0000001E0000
001E0000003C0000003C0000003C0000003C0000003C0000003C00000078000000780000
0078000000780000007800000078000000F0000001F800007FFFE0001C1F7A9E21>I<FF
FC3FF80F8007C007800300078003000F0002000F0002000F0002000F0002000F0002000F
0002001E0004001E0004001E0004001E0004001E0004001E0004003C0008003C0008003C
0008003C0008003C0008003C000800380010003800100038001000380020003C0040001C
0040001C0080000E0100000706000001F800001D20799E22>I<FFF003FE1F8000F80F00
00600F0000400F0000400F8000800780018007800100078002000780020007C0040003C0
040003C0080003C0080003C0100003E0100001E0200001E0200001E0400001E0400001F0
800000F1000000F1000000F2000000F2000000FC0000007C000000780000007800000070
000000700000002000001F207A9E22>I<FFF07FF81FF01F000FC007C01F00078003000F
00078003000F00078002000F000F8002000F000F8004000F001F8004000F0017C008000F
8013C00800078023C01000078023C01000078043C02000078043C02000078083C0400007
8083E0400007C101E0800003C101E0800003C201E1000003C201E1000003C401E2000003
C401E2000003C801F4000003E800F4000001F000FC000001F000F8000001E000F8000001
E000F0000001C000F0000001C00060000000C0006000000080004000002C207A9E2F>I<
03FFC0FFC0007F007E00003E003800001E003000001E002000000F004000000F00800000
0F81000000078200000007C600000003C400000003E800000001F000000001F000000000
F000000000F800000000F8000000017C000000023C000000043C0000000C1E000000081E
000000101F000000200F000000400F800000C0078000008007C000010003C000070003E0
001F8007E000FFE01FFE00221F7F9E22>I<FFF003FF1F8000F80F0000600F8000400780
008007C0018003C0010003E0020001E0040001F00C0001F0080000F0100000F820000078
6000007C4000003C8000003F0000001F0000001E0000001E0000001E0000001C0000003C
0000003C0000003C0000003C0000003C00000038000000780000007C00000FFFC000201F
7A9E22>I E /Fh 15 117 df<020408103020604040C0C0C0C0C0C0C0C0404060203010
080402071A7F920C>40 D<8040201018080C0404060606060606060604040C0818102040
80071A7E920C>I<1F00318060C04040C060C060C060C060C060C060C060C060404060C0
31801F000B107F8F0F>48 D<0C003C00CC000C000C000C000C000C000C000C000C000C00
0C000C000C00FF8009107E8F0F>I<1F00618040C08060C0600060006000C00180030006
000C00102020207FC0FFC00B107F8F0F>I<1F00218060C060C000C0008001800F000080
00400060C060C060804060801F000B107F8F0F>I<0300030007000F000B001300330023
004300C300FFE003000300030003001FE00B107F8F0F>I<20803F002C00200020002000
2F0030802040006000600060C06080C061801F000B107F8F0F>I<0780184030C060C060
00C000CF00F080E040C060C060C060406060C030801F000B107F8F0F>I<40007FE07FC0
8080808001000200040004000C0008000800180018001800180018000B117E900F>I<1F
00318060C060C060C071803F000F00338061C0C060C060C060404060801F000B107F8F0F
>I<1F00318060C0C040C060C060C06040E021E01E600060004060C0608043003E000B10
7F8F0F>I<03E0000C1800100400200200600300400100C00180C00180C00180C00180C0
01806003006003003006003006000C180003E00011117E9017>79
D<1F8030C06000C000C000C000C000C000604030801F000A0B7F8A0E>99
D<10103030FE3030303030323232321C070F7F8E0C>116 D E /Fi
3 64 df<03C00FF01FF83FFC7FFE7FFEFFFFFFFFFFFFFFFFFFFFFFFF7FFE7FFE3FFC1FF8
0FF003C010127D9317>15 D<FFFFFFE0FFFFFFE0000C0000000C0000000C0000000C0000
000C0000000C0000000C0000000C0000000C0000000C0000000C0000000C0000000C0000
000C0000000C0000000C0000000C0000000C0000000C0000000C0000000C0000000C0000
000C0000000C0000000C0000000400001B1C7C9B23>62 D<00040000000C0000000C0000
000C0000000C0000000C0000000C0000000C0000000C0000000C0000000C0000000C0000
000C0000000C0000000C0000000C0000000C0000000C0000000C0000000C0000000C0000
000C0000000C0000000C0000000C0000000C0000FFFFFFE0FFFFFFE01B1C7C9B23>I
E /Fj 60 123 df<00F8F001F8F003F8F00780F00700F00F00F00F00F00F00F00F00F00F
00F00F00F00F00F0FFF8F0FFF8F0FFF8F00F00F00F00F00F00F00F00F00F00F00F00F00F
00F00F00F00F00F00F00F00F00F00F00F00F00F00F00F00F00F00F00F00F00F01420809F
18>13 D<007000E001C00380078007000E001E001E003C003C003C007800780078007800
7000F000F000F000F000F000F000F000F000F000F000F000F00070007800780078007800
3C003C003C001E001E000E0007000780038001C000E000700C2E7EA112>40
D<E000700038001C001E000E0007000780078003C003C003C001E001E001E001E000E000
F000F000F000F000F000F000F000F000F000F000F000F000E001E001E001E001E003C003
C003C00780078007000E001E001C0038007000E0000C2E7DA112>I<7878787818303060
60E0050A7D830D>44 D<FFC0FFC0FFC00A037F8B0F>I<F0F0F0F004047C830D>I<03F000
07F8001FFE001E1E003C0F00380700780780780780700380F003C0F003C0F003C0F003C0
F003C0F003C0F003C0F003C0F003C0F003C0F003C0F003C0F003C0F003C0780780780780
7807803807003C0F001E1E001FFE000FFC0003F00012207E9E17>48
D<00C001C00FC0FFC0FFC0F3C003C003C003C003C003C003C003C003C003C003C003C003
C003C003C003C003C003C003C003C003C003C003C0FFFEFFFEFFFE0F1F7C9E17>I<F0F0
F0F0000000000000000000000000F0F0F0F004147C930D>58 D<FFFFFFF0FFFFFFF00000
000000000000000000000000000000000000000000000000000000000000FFFFFFF0FFFF
FFF01C0C7D9023>61 D<001F0000001F0000003F8000003B8000003B8000007BC0000073
C0000071C00000F1E00000E1E00000E0E00001E0F00001E0F00001C0F00003C0780003C0
78000380780007803C0007803C0007003C000FFFFE000FFFFE000FFFFE001E000F001E00
0F003C000F803C0007803C000780780007C0780003C0780003C0F00003E01B207F9F1E>
65 D<FFF800FFFF00FFFF80F00FC0F003E0F001E0F000F0F000F0F000F0F000F0F000F0
F001E0F003C0F01F80FFFF00FFFF00FFFF80F007E0F001E0F000F0F00078F00078F00078
F00078F00078F00078F000F0F001F0F007E0FFFFC0FFFF80FFFC0015207B9F1E>I<001F
C000FFF801FFFC03E03C07800C0F00001E00003E00003C00007C00007800007800007800
00F00000F00000F00000F00000F00000F00000F00000F000007800007800007800007C00
003C00003E00001E00000F000207800E03E03E01FFFC00FFF0001FC017227DA01D>I<FF
FC00FFFF80FFFFC0F007E0F001F0F000F8F00078F0003CF0003CF0001EF0001EF0000EF0
000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0001EF0001EF0001EF0
003CF0007CF000F8F001F0F007E0FFFFC0FFFF80FFFC0018207B9F21>I<FFFFC0FFFFC0
FFFFC0F00000F00000F00000F00000F00000F00000F00000F00000F00000F00000F00000
FFFF80FFFF80FFFF80F00000F00000F00000F00000F00000F00000F00000F00000F00000
F00000F00000F00000FFFFE0FFFFE0FFFFE013207B9F1B>I<FFFFC0FFFFC0FFFFC0F000
00F00000F00000F00000F00000F00000F00000F00000F00000F00000F00000FFFF00FFFF
00FFFF00F00000F00000F00000F00000F00000F00000F00000F00000F00000F00000F000
00F00000F00000F00000F0000012207B9F1A>I<001FE000FFF801FFFE03E03E07800E0F
00001E00003E00003C00007C0000780000780000780000F00000F00000F00000F00000F0
0000F00000F003FEF003FE7803FE78001E78001E7C001E3C001E3E001E1E001E0F001E07
801E03E03E01FFFE00FFF8001FC017227DA01E>I<F00078F00078F00078F00078F00078
F00078F00078F00078F00078F00078F00078F00078F00078F00078FFFFF8FFFFF8FFFFF8
F00078F00078F00078F00078F00078F00078F00078F00078F00078F00078F00078F00078
F00078F00078F0007815207B9F20>I<F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0
F0F0F0F0F0F0F0F0F0F0F0F004207C9F0D>I<F0003EF0007CF000F8F001F0F003E0F007
C0F00780F00F00F01F00F03E00F07C00F0F800F1F000F3F800F3F800F7FC00FFBC00FF1E
00FE1F00FC0F00F80780F00780F003C0F003E0F001E0F000F0F000F8F00078F0003CF000
3CF0001EF0001F18207B9F20>75 D<F00000F00000F00000F00000F00000F00000F00000
F00000F00000F00000F00000F00000F00000F00000F00000F00000F00000F00000F00000
F00000F00000F00000F00000F00000F00000F00000F00000F00000F00000FFFF80FFFF80
FFFF8011207B9F19>I<F80001F8FC0003F8FC0003F8F4000378F6000778F6000778F600
0778F3000E78F3000E78F3000E78F3801E78F3801E78F1801C78F1C03C78F1C03C78F0C0
3878F0C03878F0E07878F0E07878F0607078F070F078F070F078F030E078F039E078F039
E078F019C078F019C078F019C078F00F8078F00F8078F00F8078F00000781D207B9F28>
I<FC0078FE0078FE0078F60078F70078F70078F38078F38078F38078F3C078F1C078F1E0
78F1E078F0E078F0F078F07078F07078F07878F03878F03C78F03C78F01C78F01E78F00E
78F00E78F00E78F00778F00778F00378F003F8F003F8F001F815207B9F20>I<003F0000
00FFC00003FFF00007E1F8000F807C001F003E001E001E003C000F003C000F0078000780
7800078078000780F00003C0F00003C0F00003C0F00003C0F00003C0F00003C0F00003C0
F00003C0F00003C0F80007C07800078078000780780007803C000F003C000F001E001E00
1F003E000F807C0007E1F80003FFF00000FFC000003F00001A227DA021>I<FFF800FFFF
00FFFF80F00FC0F003E0F001E0F000F0F000F0F000F0F000F0F000F0F000F0F000F0F001
E0F003E0F00FC0FFFF80FFFF00FFF800F00000F00000F00000F00000F00000F00000F000
00F00000F00000F00000F00000F00000F0000014207B9F1D>I<003F000000FFC00003FF
F00007E1F8000F807C001F003E001E001E003C000F003C000F0078000780780007807800
0780F00003C0F00003C0F00003C0F00003C0F00003C0F00003C0F00003C0F00003C0F000
03C0F00003C07800078078000780781E07803C0F0F003C0F8F001E079E001F03FE000F83
FC0007E1F80003FFF00000FFF800003F780000007C0000003E0000001E0000001F000000
0F801A277DA021>I<FFF800FFFF00FFFF80F007C0F003E0F001E0F000F0F000F0F000F0
F000F0F000F0F001E0F003E0F007C0FFFF80FFFF00FFF800F03C00F01E00F01E00F00F00
F00F00F00780F00780F003C0F001C0F001E0F000F0F000F0F00078F00078F0003C16207B
9F1D>I<01FC0007FF800FFFC01F03C03C00C03C00007800007800007800007800007800
007C00003C00003F00001FE0000FFC0007FE0001FF00003F800007C00003C00003E00001
E00001E00001E00001E00001E00001C0C003C0F007C0FC0F807FFF001FFE0003F8001322
7EA019>I<FFFFFFC0FFFFFFC0FFFFFFC0001E0000001E0000001E0000001E0000001E00
00001E0000001E0000001E0000001E0000001E0000001E0000001E0000001E0000001E00
00001E0000001E0000001E0000001E0000001E0000001E0000001E0000001E0000001E00
00001E0000001E0000001E0000001E0000001E0000001E00001A207E9F1F>I<F000F0F0
00F0F000F0F000F0F000F0F000F0F000F0F000F0F000F0F000F0F000F0F000F0F000F0F0
00F0F000F0F000F0F000F0F000F0F000F0F000F0F000F0F000F0F000F0F000F0F000F078
01E07801E03C03C03C03C01F0F800FFF0007FE0001F80014217B9F1F>I<F00001E0F000
01E0780003C0780003C0780003C03C0007803C0007803C0007801E000F001E000F001F00
0F000F001E000F001E0007801C0007803C0007803C0003C0380003C0780003C0780001E0
700001E0F00001E0F00000F0E00000F1E00000F1E0000071C000007BC000003B8000003B
8000003F8000001F0000001F00001B207F9F1E>I<F0007C000FF0007E000FF0007E000F
78006E000E7800EE001E7800E7001E7800E7001E3C00E7003C3C01E7803C3C01C7803C3C
01C3803C1E01C380781E03C3C0781E0383C0780E0381C0700F0381C0F00F0781E0F00F07
01E0F0070700E0E0078700E1E0078F00E1E0078E00F1E0038E0071C0038E0071C003CE00
73C001DC00738001DC003B8001DC003B8001DC003B8000F8003F0000F8001F0000F8001F
0028207F9F2B>I<780007807C000F003E001F001E001E000F003C000F807C0007807800
03C0F00003E1F00001F1E00000F3C000007FC000007F8000003F0000001F0000001E0000
003F0000007F8000007FC00000F3C00001F1E00001E0F00003C0F80007C0780007803C00
0F003E001F001E001E000F003C000F807C0007C0780003C0F00003E01B207F9F1E>I<F8
0000F87C0001F03C0001E03E0003E01F0003C00F0007800F800F8007C00F0003C01F0003
E01E0001F03C0000F07C00007878000078F000003CF000001CE000001FE000000FC00000
078000000780000007800000078000000780000007800000078000000780000007800000
078000000780000007800000078000000780001D20809F1E>I<FFFFF8FFFFF8FFFFF800
00F00001F00001E00003C00007C0000780000F80000F00001E00003E00003C00007C0000
780000F00001F00001E00003E00003C0000780000F80000F00001F00001E00003C00007C
0000780000FFFFFCFFFFFCFFFFFC16207D9F1C>I<07E03FF87FFC701E401F000F000F00
0F003F07FF1FFF7E0FF80FF00FF00FF00FF83F7FFF3FEF1F8F10147E9316>97
D<F00000F00000F00000F00000F00000F00000F00000F00000F00000F00000F00000F000
00F1F000F7FC00FFFE00FC3E00F80F00F00F00F00780F00780F00780F00780F00780F007
80F00780F00F00F00F00F81F00FC3E00FFFC00F7F800F1E00011207D9F17>I<03F00FFC
1FFE3E0E3C0278007800F000F000F000F000F000F000780078003C013E0F1FFF0FFE03F0
10147E9314>I<0007800007800007800007800007800007800007800007800007800007
8000078000078007C7800FF7801FFF803E1F807C0780780780F80780F00780F00780F007
80F00780F00780F00780F00780780780780F803E1F801FFF800FF78007C78011207E9F17
>I<03F0000FFC001FFE003E1F003C0700780700700380FFFF80FFFF80FFFF80F00000F0
0000F000007000007800003C01003E07001FFF0007FE0001F80011147F9314>I<007E01
FE03FE078007000F000F000F000F000F000F000F00FFF0FFF0FFF00F000F000F000F000F
000F000F000F000F000F000F000F000F000F000F000F000F000F20809F0E>I<03E0F00F
FFF01FFFF03E3E003C1E00780F00780F00780F00780F00780F003C1E003E3E001FFC003F
F80033E0003000003800003FFE003FFF801FFFC03FFFE07803F0F000F0F000F0F000F0F8
01F07E07E03FFFC00FFF0003FC00141E7F9317>I<F000F000F000F000F000F000F000F0
00F000F000F000F000F1F8F3FCF7FEFC1FF80FF80FF00FF00FF00FF00FF00FF00FF00FF0
0FF00FF00FF00FF00FF00FF00F10207D9F17>I<F0F0F0F00000000000000000F0F0F0F0
F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F004207D9F0B>I<F00000F00000F00000F00000F0
0000F00000F00000F00000F00000F00000F00000F00000F01F00F01E00F03C00F07800F0
F000F1E000F3C000F78000FFC000FFC000FFE000F9F000F8F000F0F800F07C00F07C00F0
3E00F01E00F01F00F00F8011207D9F16>107 D<F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0
F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F004207D9F0B>I<F0FC07E0F3FE1FF0F7FF3FF8FE
0FF07CF807C03CF807C03CF007803CF007803CF007803CF007803CF007803CF007803CF0
07803CF007803CF007803CF007803CF007803CF007803CF007803CF007803C1E147D9325
>I<F1F8F3FCF7FEFC1FF80FF80FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00F
F00FF00FF00F10147D9317>I<01F80007FE001FFF803F0FC03C03C07801E07801E0F000
F0F000F0F000F0F000F0F000F0F000F07801E07801E03C03C03F0FC01FFF8007FE0001F8
0014147F9317>I<F1F000F7FC00FFFE00FC3E00F81F00F00F00F00F80F00780F00780F0
0780F00780F00780F00780F00F00F00F00F81F00FC3E00FFFC00F7F800F1E000F00000F0
0000F00000F00000F00000F00000F00000F00000F00000111D7D9317>I<03C7800FF780
1FFF803E1F807C0F80780780780780F00780F00780F00780F00780F00780F00780F80780
7807807C0F803E1F801FFF800FF78007C780000780000780000780000780000780000780
000780000780000780111D7E9317>I<F0E0F3E0F7E0FF00FC00FC00F800F800F000F000
F000F000F000F000F000F000F000F000F000F0000B147D9310>I<07F01FFC3FFC780C78
00780078007C003FC01FF00FF803F8007C003C003CC03CF07CFFF87FF00FC00E147F9311
>I<1E001E001E001E001E001E00FFF0FFF0FFF01E001E001E001E001E001E001E001E00
1E001E001E001E001E001E201FF00FF007C00C1A7F9910>I<F00FF00FF00FF00FF00FF0
0FF00FF00FF00FF00FF00FF00FF00FF00FF00FF01FF03FFFFF7FEF3F0F10147D9317>I<
F003C0F003C07803807807807807803C0F003C0F003C0F001E0E001E1E001E1E000F1C00
0F3C000F3C0007380007380007B80003F00003F00001E00012147F9315>I<F01F00F0F0
1F80F0F01F80F0781B81E0783B81E0783BC1E07839C1E03C31C3C03C71C3C03C71E3C01C
70E3801E60E7801E60E7801EE0E7800EE077000EC077000EC0770007C07E0007C03E0007
803E001C147F931F>I<7801E07C03C03E07801E0F000F0F00079E0003FC0003F80001F8
0000F00001F00001F80003FC00079E000F0F000E0F001E07803C03C07801E0F801F01414
809315>I<F003C0F003C07807807807807C07803C0F003C0F001E0F001E1E000E1E000F
1C000F1C00073C0007380003B80003B80003B00001F00001F00000E00000E00001C00001
C00001C0000380000780007F00007E00007C0000121D7F9315>I<7FFF7FFF7FFF003E00
3C007800F800F001E003E007C007800F001F001E003C007C00FFFFFFFFFFFF10147F9314
>I E /Fk 73 126 df<030600078F00078F00078F00078F00078F00078F007FFFC0FFFF
E0FFFFE07FFFC00F1E000F1E000F1E000F1E000F1E000F1E007FFFC0FFFFE0FFFFE07FFF
C01E3C001E3C001E3C001E3C001E3C001E3C000C1800131C7E9B18>35
D<01C00007E0000FF0000E70001C38001C38001C38001C38001C73F01C73F01CE3F00FE3
800FC7000F87000F07001F0E003F0E007B8E0073DC00E1DC00E0F800E0F800E07070E078
7070FC707FFFE03FCFE00F03C0141C7F9B18>38 D<007000F001E003C007800F001E001C
00380038007000700070007000E000E000E000E000E000E000E000E00070007000700070
00380038001C001E000F00078003C001F000F000700C24799F18>40
D<6000F00078003C001E000F000780038001C001C000E000E000E000E000700070007000
70007000700070007000E000E000E000E001C001C0038007800F001E003C007800F00060
000C247C9F18>I<01C00001C00001C00001C000C1C180F1C780F9CF807FFF001FFC0007
F00007F0001FFC007FFF00F9CF80F1C780C1C18001C00001C00001C00001C00011147D97
18>I<1C3E7E7F3F1F070E1E7CF860080C788518>44 D<3078FCFC78300606778518>46
D<000300000780000780000F80000F00001F00001E00001E00003E00003C00007C000078
0000780000F80000F00001F00001E00003E00003C00003C00007C0000780000F80000F00
000F00001F00001E00003E00003C00003C00007C0000780000F80000F00000F000006000
0011247D9F18>I<01800380038007800F803F80FF80FB80438003800380038003800380
038003800380038003800380038003800380038003807FFCFFFE7FFC0F1C7B9B18>49
D<03F0000FFE003FFF007C0F807003C0E001C0F000E0F000E06000E00000E00000E00001
C00001C00003C0000780000F00001E00003C0000780000F00001E00007C0000F80001E00
E03C00E07FFFE0FFFFE07FFFE0131C7E9B18>I<07F8001FFE003FFF007807807803C078
01C03001C00001C00003C0000380000F0003FF0003FE0003FF000007800003C00001C000
00E00000E00000E0F000E0F000E0F001C0F003C07C07803FFF001FFE0003F800131C7E9B
18>I<001F00003F0000770000770000E70001E70001C7000387000787000707000E0700
1E07003C0700380700780700F00700FFFFF8FFFFF8FFFFF8000700000700000700000700
000700000700007FF000FFF8007FF0151C7F9B18>I<03F8000FFE001FFF003E0F803803
807001C07001C07001C07001C03803803C07801FFF0007FC000FFE001F1F003C07807001
C0F001E0E000E0E000E0E000E0E000E07001C07803C03E0F801FFF000FFE0003F800131C
7E9B18>56 D<3078FCFC783000000000000000003078FCFC78300614779318>58
D<183C7E7E3C180000000000000000183C7E7E3E1E0E1C3C78F060071A789318>I<7FFF
C0FFFFE0FFFFE0FFFFE0000000000000000000000000FFFFE0FFFFE0FFFFE07FFFC0130C
7E9318>61 D<0FF0003FFC007FFF00700F00F00380F00380600780000F00003E00007C00
01F00001E00003C00003C00003C00003C00003C000038000000000000000000000000000
00000003800007C00007C00007C000038000111C7D9B18>63 D<00700000F80000F80000
D80000D80001DC0001DC0001DC00018C00038E00038E00038E00038E0003060007070007
07000707000707000FFF800FFF800FFF800E03800E03801C01C01C01C07F07F0FF8FF87F
07F0151C7F9B18>65 D<FFFC00FFFF00FFFF801C03C01C01C01C00E01C00E01C00E01C00
E01C01E01C01C01C07C01FFF801FFF001FFFC01C03C01C00E01C00F01C00701C00701C00
701C00701C00F01C00E01C03E0FFFFC0FFFF80FFFE00141C7F9B18>I<00F8E003FEE007
FFE00F07E01E03E03C01E03800E07000E07000E0700000E00000E00000E00000E00000E0
0000E00000E00000E000007000007000E07000E03800E03C00E01E01C00F07C007FF8003
FE0000F800131C7E9B18>I<7FF800FFFE007FFF001C0F801C03C01C03C01C01E01C00E0
1C00E01C00F01C00701C00701C00701C00701C00701C00701C00701C00701C00F01C00E0
1C00E01C01E01C01C01C03C01C0F807FFF00FFFE007FF800141C7F9B18>I<FFFFF0FFFF
F0FFFFF01C00701C00701C00701C00701C00001C00001C0E001C0E001C0E001FFE001FFE
001FFE001C0E001C0E001C0E001C00001C00001C00381C00381C00381C00381C0038FFFF
F8FFFFF8FFFFF8151C7F9B18>I<FFFFE0FFFFE0FFFFE01C00E01C00E01C00E01C00E01C
00001C00001C1C001C1C001C1C001FFC001FFC001FFC001C1C001C1C001C1C001C00001C
00001C00001C00001C00001C00001C0000FFC000FFC000FFC000131C7E9B18>I<01F1C0
03FDC00FFFC01F0FC01C03C03803C03801C07001C07001C0700000E00000E00000E00000
E00000E00000E00FF0E01FF0E00FF07001C07001C07003C03803C03803C01C07C01F0FC0
0FFFC003FDC001F1C0141C7E9B18>I<7F07F0FF8FF87F07F01C01C01C01C01C01C01C01
C01C01C01C01C01C01C01C01C01C01C01FFFC01FFFC01FFFC01C01C01C01C01C01C01C01
C01C01C01C01C01C01C01C01C01C01C01C01C07F07F0FF8FF87F07F0151C7F9B18>I<7F
FF00FFFF807FFF0001C00001C00001C00001C00001C00001C00001C00001C00001C00001
C00001C00001C00001C00001C00001C00001C00001C00001C00001C00001C00001C00001
C0007FFF00FFFF807FFF00111C7D9B18>I<7F07F0FF87F87F07F01C03C01C07801C0700
1C0E001C1E001C3C001C38001C70001CF0001DF0001DF0001FB8001FB8001F1C001E1C00
1C0E001C0E001C07001C07001C03801C03801C01C07F03F0FF87F87F03F0151C7F9B18>
75 D<7FE000FFE0007FE0000E00000E00000E00000E00000E00000E00000E00000E0000
0E00000E00000E00000E00000E00000E00000E00000E00000E00000E00700E00700E0070
0E00700E00707FFFF0FFFFF07FFFF0141C7F9B18>I<FC01F8FE03F8FE03F83B06E03B06
E03B06E03B06E03B8EE03B8EE0398CE0398CE039DCE039DCE039DCE038D8E038D8E038F8
E03870E03870E03800E03800E03800E03800E03800E03800E0FE03F8FE03F8FE03F8151C
7F9B18>I<7E07F0FF0FF87F07F01D81C01D81C01D81C01DC1C01CC1C01CC1C01CE1C01C
E1C01CE1C01C61C01C71C01C71C01C31C01C39C01C39C01C39C01C19C01C19C01C1DC01C
0DC01C0DC01C0DC07F07C0FF87C07F03C0151C7F9B18>I<0FF8003FFE007FFF00780F00
700700F00780E00380E00380E00380E00380E00380E00380E00380E00380E00380E00380
E00380E00380E00380E00380E00380E00380F00780700700780F007FFF003FFE000FF800
111C7D9B18>I<FFFE00FFFF80FFFFC01C03C01C01E01C00E01C00701C00701C00701C00
701C00701C00E01C01E01C03C01FFFC01FFF801FFE001C00001C00001C00001C00001C00
001C00001C00001C0000FF8000FF8000FF8000141C7F9B18>I<0FF8003FFE007FFF0078
0F00700700F00780E00380E00380E00380E00380E00380E00380E00380E00380E00380E0
0380E00380E00380E00380E00380E1E380E1E380F0E78070F700787F007FFF003FFE000F
FC00001C00001E00000E00000F0000070000070011227D9B18>I<7FF800FFFE007FFF00
1C0F801C03801C03C01C01C01C01C01C01C01C03C01C03801C0F801FFF001FFE001FFE00
1C0F001C07001C03801C03801C03801C03801C03801C039C1C039C1C039C7F01F8FF81F8
7F00F0161C7F9B18>I<03F3801FFF803FFF807C0F80700780E00380E00380E00380E000
007000007800003F00001FF00007FE0000FF00000F800003C00001C00000E00000E06000
E0E000E0E001E0F001C0F80780FFFF80FFFE00E7F800131C7E9B18>I<7FFFF8FFFFF8FF
FFF8E07038E07038E07038E0703800700000700000700000700000700000700000700000
700000700000700000700000700000700000700000700000700000700000700007FF0007
FF0007FF00151C7F9B18>I<FF83FEFF83FEFF83FE1C00701C00701C00701C00701C0070
1C00701C00701C00701C00701C00701C00701C00701C00701C00701C00701C00701C0070
1C00701C00700E00E00F01E00783C003FF8001FF00007C00171C809B18>I<FF07F8FF07
F8FF07F81C01C01C01C01C01C01C01C00E03800E03800E03800E03800F07800707000707
00070700070700038E00038E00038E00038E00018C0001DC0001DC0001DC0000D80000F8
0000F800007000151C7F9B18>I<FE03F8FE03F8FE03F87000707000707000703800E038
00E03800E03800E03800E038F8E038F8E039DCE039DCE019DCC019DCC019DCC0198CC01D
8DC01D8DC01D8DC01D8DC00D8D800D05800F07800F07800E0380151C7F9B18>I<7F8FE0
7F9FE07F8FE00E07000F0700070E00078E00039C0003DC0001F80001F80000F00000F000
00700000F00000F80001F80001DC00039E00038E00070F000707000E07800E03801E03C0
7F07F0FF8FF87F07F0151C7F9B18>I<FF07F8FF07F8FF07F81C01C01E03C00E03800F07
80070700070700038E00038E0001DC0001DC0001DC0000F80000F8000070000070000070
0000700000700000700000700000700000700001FC0003FE0001FC00151C7F9B18>I<3F
FFE07FFFE07FFFE07001C07003C0700780700700000F00001E00001C00003C0000780000
700000F00001E00001C00003C0000780000700000F00001E00E01C00E03C00E07800E070
00E0FFFFE0FFFFE0FFFFE0131C7E9B18>I<FFF8FFF8FFF8E000E000E000E000E000E000
E000E000E000E000E000E000E000E000E000E000E000E000E000E000E000E000E000E000
E000E000E000E000E000E000FFF8FFF8FFF80D24779F18>I<FFF8FFF8FFF80038003800
380038003800380038003800380038003800380038003800380038003800380038003800
38003800380038003800380038003800380038FFF8FFF8FFF80D247F9F18>93
D<7FFF00FFFF80FFFF807FFF0011047D7F18>95 D<1FE0003FF8007FFC00781E00300E00
00070000070000FF0007FF001FFF007F0700780700E00700E00700E00700F00F00781F00
3FFFF01FFBF007E1F014147D9318>97 D<7E0000FE00007E00000E00000E00000E00000E
00000E00000E3E000EFF800FFFC00FC1E00F80E00F00700E00700E00380E00380E00380E
00380E00380E00380F00700F00700F80E00FC1E00FFFC00EFF80063E00151C809B18>I<
01FE0007FF001FFF803E0780380300700000700000E00000E00000E00000E00000E00000
E000007000007001C03801C03E03C01FFF8007FF0001FC0012147D9318>I<001F80003F
80001F8000038000038000038000038000038003E3800FFB801FFF803C1F80380F807007
80700380E00380E00380E00380E00380E00380E00380700780700780380F803C1F801FFF
F00FFBF803E3F0151C7E9B18>I<01F00007FC001FFE003E0F00380780700380700380E0
01C0E001C0FFFFC0FFFFC0FFFFC0E000007000007001C03801C03E03C01FFF8007FF0001
FC0012147D9318>I<001F80007FC000FFE000E1E001C0C001C00001C00001C0007FFFC0
FFFFC0FFFFC001C00001C00001C00001C00001C00001C00001C00001C00001C00001C000
01C00001C00001C00001C0007FFF007FFF007FFF00131C7F9B18>I<01E1F007FFF80FFF
F81E1E301C0E003807003807003807003807003807001C0E001E1E001FFC001FF80039E0
003800001C00001FFE001FFFC03FFFE07801F0700070E00038E00038E00038E000387800
F07E03F01FFFC00FFF8001FC00151F7F9318>I<7E0000FE00007E00000E00000E00000E
00000E00000E00000E3E000EFF800FFFC00FC1C00F80E00F00E00E00E00E00E00E00E00E
00E00E00E00E00E00E00E00E00E00E00E00E00E00E00E07FC3FCFFE7FE7FC3FC171C809B
18>I<03800007C00007C00007C0000380000000000000000000000000007FC000FFC000
7FC00001C00001C00001C00001C00001C00001C00001C00001C00001C00001C00001C000
01C00001C00001C000FFFF00FFFF80FFFF00111D7C9C18>I<0038007C007C007C003800
000000000000000FFC1FFC0FFC001C001C001C001C001C001C001C001C001C001C001C00
1C001C001C001C001C001C001C001C001C001C001C6038F078FFF07FE03F800E277E9C18
>I<FE0000FE0000FE00000E00000E00000E00000E00000E00000E3FF00E7FF00E3FF00E
07800E0F000E1E000E3C000E78000EF0000FF8000FFC000F9C000F0E000E0F000E07000E
03800E03C0FFC7F8FFC7F8FFC7F8151C7F9B18>I<7FE000FFE0007FE00000E00000E000
00E00000E00000E00000E00000E00000E00000E00000E00000E00000E00000E00000E000
00E00000E00000E00000E00000E00000E00000E00000E0007FFFC0FFFFE07FFFC0131C7E
9B18>I<7CE0E000FFFBF8007FFFF8001F1F1C001E1E1C001E1E1C001C1C1C001C1C1C00
1C1C1C001C1C1C001C1C1C001C1C1C001C1C1C001C1C1C001C1C1C001C1C1C001C1C1C00
7F1F1F00FFBFBF807F1F1F001914819318>I<7E3E00FEFF807FFFC00FC1C00F80E00F00
E00E00E00E00E00E00E00E00E00E00E00E00E00E00E00E00E00E00E00E00E00E00E07FC3
FCFFE7FE7FC3FC1714809318>I<01F0000FFE001FFF003E0F803803807001C07001C0E0
00E0E000E0E000E0E000E0E000E0F001E07001C07803C03C07803E0F801FFF000FFE0001
F00013147E9318>I<7E3E00FEFF807FFFC00FC1E00F80E00F00700E00700E00380E0038
0E00380E00380E00380E00380F00700F00700F80E00FC1E00FFFC00EFF800E3E000E0000
0E00000E00000E00000E00000E00000E00007FC000FFE0007FC000151E809318>I<01E3
8007FB801FFF803E1F80380F80700780700780E00380E00380E00380E00380E00380E003
80700780700780380F803C1F801FFF800FFB8003E3800003800003800003800003800003
80000380000380003FF8003FF8003FF8151E7E9318>I<7F87E0FF9FF07FBFF803F87803
F03003E00003C00003C00003800003800003800003800003800003800003800003800003
80007FFE00FFFF007FFE0015147F9318>I<07F7003FFF007FFF00780F00E00700E00700
E007007C00007FE0001FFC0003FE00001F00600780E00380E00380F00380F80F00FFFF00
FFFC00E7F00011147D9318>I<0180000380000380000380000380007FFFC0FFFFC0FFFF
C00380000380000380000380000380000380000380000380000380000380400380E00380
E00380E001C1C001FFC000FF80003E0013197F9818>I<7E07E0FE0FE07E07E00E00E00E
00E00E00E00E00E00E00E00E00E00E00E00E00E00E00E00E00E00E00E00E00E00E01E00F
03E007FFFC03FFFE01FCFC1714809318>I<7F8FF0FF8FF87F8FF01E03C00E03800E0380
0E0380070700070700070700038E00038E00038E00038E0001DC0001DC0001DC0000F800
00F80000700015147F9318>I<FF8FF8FF8FF8FF8FF83800E03800E03800E01C01C01C01
C01C71C01CF9C01CF9C01CD9C01CD9C00DDD800DDD800DDD800D8D800F8F800F8F800707
0015147F9318>I<7F8FF07F9FF07F8FF0070700078E00039E0001DC0001F80000F80000
700000F00000F80001DC00039E00038E000707000F07807F8FF0FF8FF87F8FF015147F93
18>I<7F8FF0FF8FF87F8FF00E01C00E03800E0380070380070700070700038700038600
038E0001CE0001CE0000CC0000CC0000DC00007800007800007800007000007000007000
00F00000E00079E0007BC0007F80003F00001E0000151E7F9318>I<3FFFF07FFFF07FFF
F07001E07003C0700780000F00001E00003C0000F80001F00003C0000780000F00701E00
703C0070780070FFFFF0FFFFF0FFFFF014147F9318>I<0007E0001FE0007FE000780000
E00000E00000E00000E00000E00000E00000E00000E00000E00000E00000E00001E0007F
C000FF8000FF80007FC00001E00000E00000E00000E00000E00000E00000E00000E00000
E00000E00000E00000E000007800007FE0001FE00007E013247E9F18>I<7C0000FF0000
FFC00003C00000E00000E00000E00000E00000E00000E00000E00000E00000E00000E000
00E00000F000007FC0003FE0003FE0007FC000F00000E00000E00000E00000E00000E000
00E00000E00000E00000E00000E00000E00003C000FFC000FF00007C000013247E9F18>
125 D E /Fl 70 123 df<007E1F0001C1B1800303E3C00703C3C00E03C1800E01C0000E
01C0000E01C0000E01C0000E01C0000E01C000FFFFFC000E01C0000E01C0000E01C0000E
01C0000E01C0000E01C0000E01C0000E01C0000E01C0000E01C0000E01C0000E01C0000E
01C0000E01C0000E01C0000E01C0007F87FC001A1D809C18>11 D<007E0001C180030180
0703C00E03C00E01800E00000E00000E00000E00000E0000FFFFC00E01C00E01C00E01C0
0E01C00E01C00E01C00E01C00E01C00E01C00E01C00E01C00E01C00E01C00E01C00E01C0
0E01C07F87F8151D809C17>I<007FC001C1C00303C00703C00E01C00E01C00E01C00E01
C00E01C00E01C00E01C0FFFFC00E01C00E01C00E01C00E01C00E01C00E01C00E01C00E01
C00E01C00E01C00E01C00E01C00E01C00E01C00E01C00E01C07FCFF8151D809C17>I<60
60F0F0F8F86868080808080808101010102020404080800D0C7F9C15>34
D<00E0000001900000030800000308000007080000070800000708000007080000071000
0007100000072000000740000003C03FE003800F00038006000380040005C0040009C008
0010E0100030E010006070200060702000E0384000E03C4000E01C8000E00F0020E00700
20700780403009C0401830E18007C03E001B1F7E9D20>38 D<004000800100020006000C
000C0018001800300030007000600060006000E000E000E000E000E000E000E000E000E0
00E000E000E000600060006000700030003000180018000C000C00060002000100008000
400A2A7D9E10>40 D<800040002000100018000C000C0006000600030003000380018001
80018001C001C001C001C001C001C001C001C001C001C001C001C0018001800180038003
000300060006000C000C00180010002000400080000A2A7E9E10>I<60F0F07010101010
20204080040C7C830C>44 D<FFE0FFE00B0280890E>I<60F0F06004047C830C>I<03C00C
301818300C300C700E60066006E007E007E007E007E007E007E007E007E007E007E007E0
07E00760066006700E300C300C18180C3007E0101D7E9B15>48 D<030007003F00C70007
000700070007000700070007000700070007000700070007000700070007000700070007
000700070007000F80FFF80D1C7C9B15>I<07C01830201C400C400EF00FF80FF807F807
7007000F000E000E001C001C00380070006000C00180030006010C01180110023FFE7FFE
FFFE101C7E9B15>I<07E01830201C201C781E780E781E381E001C001C00180030006007
E00030001C001C000E000F000F700FF80FF80FF80FF00E401C201C183007E0101D7E9B15
>I<000C00000C00001C00003C00003C00005C0000DC00009C00011C00031C00021C0004
1C000C1C00081C00101C00301C00201C00401C00C01C00FFFFC0001C00001C00001C0000
1C00001C00001C00001C0001FFC0121C7F9B15>I<300C3FF83FF03FC020002000200020
002000200023E024302818301C200E000E000F000F000F600FF00FF00FF00F800E401E40
1C2038187007C0101D7E9B15>I<00F0030C06040C0E181E301E300C700070006000E3E0
E430E818F00CF00EE006E007E007E007E007E007600760077006300E300C18180C3003E0
101D7E9B15>I<4000007FFF807FFF007FFF004002008004008004008008000010000010
0000200000600000400000C00000C00001C0000180000180000380000380000380000380
00078000078000078000078000078000078000030000111D7E9B15>I<03E00C30100820
0C20066006600660067006780C3E083FB01FE007F007F818FC307E601E600FC007C003C0
03C003C00360026004300C1C1007E0101D7E9B15>I<03C00C301818300C700C600EE006
E006E007E007E007E007E0076007700F300F18170C2707C700060006000E300C780C7818
7010203030C00F80101D7E9B15>I<60F0F0600000000000000000000060F0F06004127C
910C>I<60F0F0600000000000000000000060F0F0701010101020204080041A7C910C>I<
7FFFFFC0FFFFFFE000000000000000000000000000000000000000000000000000000000
00000000FFFFFFE07FFFFFC01B0C7E8F20>61 D<0FE03038401CE00EF00EF00EF00E000C
001C0030006000C000800180010001000100010001000100000000000000000000000300
0780078003000F1D7E9C14>63 D<000600000006000000060000000F0000000F0000000F
00000017800000178000001780000023C0000023C0000023C0000041E0000041E0000041
E0000080F0000080F0000180F8000100780001FFF80003007C0002003C0002003C000600
3E0004001E0004001E000C001F001E001F00FF80FFF01C1D7F9C1F>65
D<FFFFC00F00F00F00380F003C0F001C0F001E0F001E0F001E0F001E0F001C0F003C0F00
780F01F00FFFE00F00780F003C0F001E0F000E0F000F0F000F0F000F0F000F0F000F0F00
1E0F001E0F003C0F0078FFFFE0181C7E9B1D>I<001F808000E061800180198007000780
0E0003801C0003801C00018038000180780000807800008070000080F0000000F0000000
F0000000F0000000F0000000F0000000F0000000F0000000700000807800008078000080
380000801C0001001C0001000E000200070004000180080000E03000001FC000191E7E9C
1E>I<FFFFC0000F00F0000F003C000F000E000F0007000F0007000F0003800F0003C00F
0001C00F0001C00F0001E00F0001E00F0001E00F0001E00F0001E00F0001E00F0001E00F
0001E00F0001C00F0001C00F0003C00F0003800F0007800F0007000F000E000F001C000F
007000FFFFC0001B1C7E9B20>I<FFFFFC0F003C0F000C0F00040F00040F00060F00020F
00020F02020F02000F02000F02000F06000FFE000F06000F02000F02000F02000F02010F
00010F00020F00020F00020F00060F00060F000C0F003CFFFFFC181C7E9B1C>I<FFFFF8
0F00780F00180F00080F00080F000C0F00040F00040F02040F02000F02000F02000F0600
0FFE000F06000F02000F02000F02000F02000F00000F00000F00000F00000F00000F0000
0F00000F8000FFF800161C7E9B1B>I<001F808000E0618001801980070007800E000380
1C0003801C00018038000180780000807800008070000080F0000000F0000000F0000000
F0000000F0000000F0000000F000FFF0F0000F8070000780780007807800078038000780
1C0007801C0007800E00078007000B800180118000E06080001F80001C1E7E9C21>I<FF
F3FFC00F003C000F003C000F003C000F003C000F003C000F003C000F003C000F003C000F
003C000F003C000F003C000F003C000FFFFC000F003C000F003C000F003C000F003C000F
003C000F003C000F003C000F003C000F003C000F003C000F003C000F003C000F003C00FF
F3FFC01A1C7E9B1F>I<FFF00F000F000F000F000F000F000F000F000F000F000F000F00
0F000F000F000F000F000F000F000F000F000F000F000F000F000F00FFF00C1C7F9B0F>
I<1FFF00F800780078007800780078007800780078007800780078007800780078007800
780078007800787078F878F878F878F0F040E021C01F00101D7F9B15>I<FFF8000F8000
0F00000F00000F00000F00000F00000F00000F00000F00000F00000F00000F00000F0000
0F00000F00000F00000F00000F00080F00080F00080F00180F00180F00100F00300F0070
0F01F0FFFFF0151C7E9B1A>76 D<FF8000FF800F8000F8000F8000F8000BC00178000BC0
0178000BC001780009E002780009E002780008F004780008F004780008F0047800087808
780008780878000878087800083C107800083C107800083C107800081E207800081E2078
00081E207800080F407800080F4078000807807800080780780008078078000803007800
1C03007800FF8307FF80211C7E9B26>I<FF007FC00F800E000F8004000BC0040009E004
0009E0040008F0040008F8040008780400083C0400083C0400081E0400080F0400080F04
00080784000807C4000803C4000801E4000801E4000800F40008007C0008007C0008003C
0008003C0008001C0008000C001C000C00FF8004001A1C7E9B1F>I<003F800000E0E000
0380380007001C000E000E001C0007003C00078038000380780003C0780003C0700001C0
F00001E0F00001E0F00001E0F00001E0F00001E0F00001E0F00001E0F00001E0700001C0
780003C0780003C0380003803C0007801C0007000E000E0007001C000380380000E0E000
003F80001B1E7E9C20>I<FFFF800F00E00F00780F003C0F001C0F001E0F001E0F001E0F
001E0F001E0F001C0F003C0F00780F00E00FFF800F00000F00000F00000F00000F00000F
00000F00000F00000F00000F00000F00000F0000FFF000171C7E9B1C>I<FFFF00000F01
E0000F0078000F003C000F001C000F001E000F001E000F001E000F001E000F001C000F00
3C000F0078000F01E0000FFF00000F03C0000F00E0000F00F0000F0078000F0078000F00
78000F0078000F0078000F0078000F0078100F0078100F0038100F003C20FFF01C200000
07C01C1D7E9B1F>82 D<07E0801C1980300580700380600180E00180E00080E00080E000
80F00000F800007C00007FC0003FF8001FFE0007FF0000FF80000F800007C00003C00001
C08001C08001C08001C0C00180C00180E00300D00200CC0C0083F800121E7E9C17>I<7F
FFFFC0700F01C0600F00C0400F0040400F0040C00F0020800F0020800F0020800F002000
0F0000000F0000000F0000000F0000000F0000000F0000000F0000000F0000000F000000
0F0000000F0000000F0000000F0000000F0000000F0000000F0000000F0000001F800003
FFFC001B1C7F9B1E>I<FFF07FC00F000E000F0004000F0004000F0004000F0004000F00
04000F0004000F0004000F0004000F0004000F0004000F0004000F0004000F0004000F00
04000F0004000F0004000F0004000F0004000F0004000F00040007000800078008000380
10000180100000C020000070C000001F00001A1D7E9B1F>I<0808101020204040404080
8080808080B0B0F8F8787830300D0C7A9C15>92 D<1FC000307000783800781C00301C00
001C00001C0001FC000F1C00381C00701C00601C00E01C40E01C40E01C40603C40304E80
1F870012127E9115>97 D<FC00001C00001C00001C00001C00001C00001C00001C00001C
00001C00001C00001C7C001D86001E03001C01801C01C01C00C01C00E01C00E01C00E01C
00E01C00E01C00E01C00C01C01C01C01801E030019060010F800131D7F9C17>I<07E00C
301878307870306000E000E000E000E000E000E00060007004300418080C3007C00E127E
9112>I<003F000007000007000007000007000007000007000007000007000007000007
0003E7000C1700180F00300700700700600700E00700E00700E00700E00700E00700E007
00600700700700300700180F000C370007C7E0131D7E9C17>I<03E00C301818300C700E
6006E006FFFEE000E000E000E00060007002300218040C1803E00F127F9112>I<00F801
8C071E061E0E0C0E000E000E000E000E000E00FFE00E000E000E000E000E000E000E000E
000E000E000E000E000E000E000E000E007FE00F1D809C0D>I<00038003C4C00C38C01C
3880181800381C00381C00381C00381C001818001C38000C300013C00010000030000018
00001FF8001FFF001FFF803003806001C0C000C0C000C0C000C06001803003001C0E0007
F800121C7F9215>I<FC00001C00001C00001C00001C00001C00001C00001C00001C0000
1C00001C00001C7C001C87001D03001E03801C03801C03801C03801C03801C03801C0380
1C03801C03801C03801C03801C03801C03801C0380FF9FF0141D7F9C17>I<18003C003C
0018000000000000000000000000000000FC001C001C001C001C001C001C001C001C001C
001C001C001C001C001C001C001C00FF80091D7F9C0C>I<00C001E001E000C000000000
000000000000000000000FE000E000E000E000E000E000E000E000E000E000E000E000E0
00E000E000E000E000E000E000E000E060E0F0C0F1C061803E000B25839C0D>I<FC0000
1C00001C00001C00001C00001C00001C00001C00001C00001C00001C00001C3FC01C0F00
1C0C001C08001C10001C20001C40001CE0001DE0001E70001C78001C38001C3C001C1C00
1C0E001C0F001C0F80FF9FE0131D7F9C16>I<FC001C001C001C001C001C001C001C001C
001C001C001C001C001C001C001C001C001C001C001C001C001C001C001C001C001C001C
001C00FF80091D7F9C0C>I<FC7E07E0001C838838001D019018001E01E01C001C01C01C
001C01C01C001C01C01C001C01C01C001C01C01C001C01C01C001C01C01C001C01C01C00
1C01C01C001C01C01C001C01C01C001C01C01C001C01C01C00FF8FF8FF8021127F9124>
I<FC7C001C87001D03001E03801C03801C03801C03801C03801C03801C03801C03801C03
801C03801C03801C03801C03801C0380FF9FF014127F9117>I<03F0000E1C0018060030
0300700380600180E001C0E001C0E001C0E001C0E001C0E001C060018070038030030018
06000E1C0003F00012127F9115>I<FC7C001D86001E03001C01801C01C01C00C01C00E0
1C00E01C00E01C00E01C00E01C00E01C01C01C01C01C01801E03001D06001CF8001C0000
1C00001C00001C00001C00001C00001C0000FF8000131A7F9117>I<03C1000C3300180B
00300F00700700700700E00700E00700E00700E00700E00700E00700600700700700300F
00180F000C370007C700000700000700000700000700000700000700000700003FE0131A
7E9116>I<FCE01D301E781E781C301C001C001C001C001C001C001C001C001C001C001C
001C00FFC00D127F9110>I<1F9030704030C010C010E010F8007F803FE00FF000F88038
8018C018C018E010D0608FC00D127F9110>I<04000400040004000C000C001C003C00FF
E01C001C001C001C001C001C001C001C001C001C101C101C101C101C100C100E2003C00C
1A7F9910>I<FC1F801C03801C03801C03801C03801C03801C03801C03801C03801C0380
1C03801C03801C03801C03801C07800C07800E1B8003E3F014127F9117>I<FF07E03C03
801C01001C01000E02000E020007040007040007040003880003880003D80001D00001D0
0000E00000E00000E00000400013127F9116>I<FF3FCFE03C0F03801C0701801C070100
1C0B01000E0B82000E0B82000E1182000711C4000711C4000720C40003A0E80003A0E800
03C0680001C0700001C0700001803000008020001B127F911E>I<7F8FF00F03800F0300
07020003840001C80001D80000F00000700000780000F800009C00010E00020E00060700
0403801E07C0FF0FF81512809116>I<FF07E03C03801C01001C01000E02000E02000704
0007040007040003880003880003D80001D00001D00000E00000E00000E0000040000040
00008000008000F08000F10000F300006600003C0000131A7F9116>I<7FFC7038603840
7040F040E041C003C0038007000F040E041C043C0C380870087038FFF80E127F9112>I
E /Fm 17 119 df<78FCFCFCFC7800000000000078FCFCFCFC7806127D910D>58
D<00038000000380000007C0000007C0000007C000000FE000000FE000001FF000001BF0
00001BF0000031F8000031F8000061FC000060FC0000E0FE0000C07E0000C07E0001803F
0001FFFF0003FFFF8003001F8003001F8006000FC006000FC00E000FE00C0007E0FFC07F
FEFFC07FFE1F1C7E9B24>65 D<001FE02000FFF8E003F80FE007C003E00F8001E01F0000
E03E0000E03E0000607E0000607C000060FC000000FC000000FC000000FC000000FC0000
00FC000000FC000000FC0000007C0000607E0000603E0000603E0000C01F0000C00F8001
8007C0030003F80E0000FFFC00001FE0001B1C7D9B22>67 D<FFFFF800FFFFFF000FC01F
C00FC007E00FC001F00FC001F80FC000F80FC000FC0FC0007C0FC0007C0FC0007E0FC000
7E0FC0007E0FC0007E0FC0007E0FC0007E0FC0007E0FC0007E0FC0007C0FC0007C0FC000
7C0FC000F80FC000F80FC001F00FC007E00FC01FC0FFFFFF00FFFFF8001F1C7E9B25>I<
07F8201FFEE03C07E07801E07000E0F000E0F00060F00060F80000FE0000FFE0007FFE00
3FFF003FFF800FFFC007FFE0007FE00003F00001F00000F0C000F0C000F0C000E0E000E0
F001C0FC03C0EFFF0083FC00141C7D9B1B>83 D<0FF8001C1E003E0F803E07803E07C01C
07C00007C0007FC007E7C01F07C03C07C07C07C0F807C0F807C0F807C0780BC03E13F80F
E1F815127F9117>97 D<03FC000E0E001C1F003C1F00781F00780E00F80000F80000F800
00F80000F80000F800007800007801803C01801C03000E0E0003F80011127E9115>99
D<01FC000F07001C03803C01C07801C07801E0F801E0F801E0FFFFE0F80000F80000F800
007800007C00603C00601E00C00F038001FC0013127F9116>101
D<1E003F003F003F003F001E00000000000000000000000000FF00FF001F001F001F001F
001F001F001F001F001F001F001F001F001F001F00FFE0FFE00B1E7F9D0E>105
D<FF00FF001F001F001F001F001F001F001F001F001F001F001F001F001F001F001F001F
001F001F001F001F001F001F001F001F001F00FFE0FFE00B1D7F9C0E>108
D<FF0FC0FF31E01F40F01F80F81F80F81F00F81F00F81F00F81F00F81F00F81F00F81F00
F81F00F81F00F81F00F81F00F8FFE7FFFFE7FF18127F911B>110
D<01FC000F07801C01C03C01E07800F07800F0F800F8F800F8F800F8F800F8F800F8F800
F87800F07800F03C01E01E03C00F078001FC0015127F9118>I<FE3E00FE47001E8F801E
8F801E8F801F07001F00001F00001F00001F00001F00001F00001F00001F00001F00001F
0000FFF000FFF00011127F9114>114 D<1FD830786018E018E018F000FF807FE07FF01F
F807FC007CC01CC01CE01CE018F830CFC00E127E9113>I<030003000300030007000700
0F000F003FFCFFFC1F001F001F001F001F001F001F001F001F001F0C1F0C1F0C1F0C0F08
079803F00E1A7F9913>I<FF07F8FF07F81F00F81F00F81F00F81F00F81F00F81F00F81F
00F81F00F81F00F81F00F81F00F81F00F81F01F80F01F80786FF01F8FF18127F911B>I<
FFC1FCFFC1FC1F00601F80E00F80C00FC0C007C18007C18003E30003E30001F60001F600
01FE0000FC0000FC0000780000780000300016127F9119>I E /Fn
53 123 df<00000F80003F8F80007F8F8000FF8F8001FF8F8003E0000003C0000007C000
0007C0000007C0000007C0000007C0000007C0000007C0000007C0000007C00000FFFF8F
80FFFF8F80FFFF8F8007C00F8007C00F8007C00F8007C00F8007C00F8007C00F8007C00F
8007C00F8007C00F8007C00F8007C00F8007C00F8007C00F8007C00F8007C00F8007C00F
8007C00F8007C00F8007C00F8007C00F8007C00F8007C00F8007C00F8007C00F80192B7F
AA20>12 D<FFFEFFFEFFFE0F037F8E14>45 D<F8F8F8F8F805057A8411>I<007F000001
FFC00007FFF0000FFFF8000FC1F8001F007C003F007E003E003E003C001E007C001F007C
001F007C001F0078000F00F8000F80F8000F80F8000F80F8000F80F8000F80F8000F80F8
000F80F8000F80F8000F80F8000F80F8000F80F8000F80F8000F80F8000F80F8000F8078
000F007C001F007C001F007C001F003E003E003E003E003F007E001F80FC000FC1F8000F
FFF80007FFF00001FFC000007F000019297EA71E>48 D<00180000380000F80007F800FF
F800FFF800F8F80000F80000F80000F80000F80000F80000F80000F80000F80000F80000
F80000F80000F80000F80000F80000F80000F80000F80000F80000F80000F80000F80000
F80000F80000F80000F80000F80000F80000F80000F80000F8007FFFF07FFFF07FFFF014
287BA71E>I<00FE0003FFC007FFE00FFFF01F03F83C00FC38007E78003E70003EF0001F
F0001F60001F20001F00001F00001F00001F00003E00003E00007C00007C0000F80001F0
0001E00003C0000780000F00001E00003C0000780000F00001E00003C0000780000F0000
1E00003C00007FFFFF7FFFFF7FFFFF7FFFFF18287EA71E>I<007F000001FFC00007FFF0
000FFFF8001FC1F8003E007C003C003E0078003E0038003E0010003E0000003E0000003E
0000003C0000007C000000FC000001F8000007F00000FFE00000FFC00000FFE00000FFF0
000001FC0000007C0000003E0000001F0000001F0000000F8000000F8000000F8000000F
8000000F8040000F8060001F00F0001F00F8003F007E007E003F81FC001FFFF8000FFFF0
0003FFE000007F000019297EA71E>I<0003F0000007F0000005F000000DF000000DF000
001DF0000039F0000039F0000079F0000079F00000F1F00000F1F00001E1F00003E1F000
03E1F00007C1F00007C1F0000F81F0000F81F0001F01F0001F01F0003E01F0007C01F000
7C01F000F801F000FFFFFF80FFFFFF80FFFFFF80FFFFFF800001F0000001F0000001F000
0001F0000001F0000001F0000001F0000001F0000001F0000001F00019277EA61E>I<3F
FFFC3FFFFC3FFFFC3FFFFC3E00003E00003E00003E00003E00003E00003E00003E00003E
00003E00003E3F003EFFC03FFFE03FFFF03FE1F83F807C3F003E3E003E00003E00001F00
001F00001F00001F00001F00001F00001F20001F60003E70003EF8007C7C00FC3F03F81F
FFF00FFFE007FF8000FE0018287EA61E>I<000FF000003FFC0000FFFC0001FFFC0003F8
0C0007E000000FC000000F8000001F0000001E0000003E0000003C0000007C0000007C00
00007C3FE000F8FFF000F9FFF800FBFFFC00FF807E00FF003E00FE003F00FC001F00FC00
1F00FC000F80F8000F80F8000F80F8000F80F8000F8078000F807C000F807C000F807C00
0F003E001F003E001F001F003E001F807C000FC1FC0007FFF80003FFF00001FFC000007F
000019297EA71E>I<FFFFFF80FFFFFF80FFFFFF80FFFFFF800000078000000F0000001E
0000003C0000007C00000078000000F0000001F0000001E0000003C0000007C000000780
00000F8000000F0000001F0000001F0000001E0000003E0000003E0000007C0000007C00
00007C00000078000000F8000000F8000000F8000000F8000000F8000001F0000001F000
0001F0000001F0000001F0000001F0000001F0000019277EA61E>I<007F000001FFC000
07FFF0000FFFF8001FC1FC003F007E003E003E007E003F007C001F007C001F007C001F00
7C001F007C001F003E003E003E003E001F007C000FC1F80007FFF00003FFE00003FFE000
0FFFF8001FC1FC003F007E003E003E007C001F007C001F00F8000F80F8000F80F8000F80
F8000F80F8000F80F8000F807C001F007C001F007E003F003F007E001FC1FC000FFFF800
07FFF00003FFE000007F000019297EA71E>I<007F000001FFC00003FFE0000FFFF0000F
C1F8001F007C003E007C007C003E007C001E007C001F00F8001F00F8001F00F8000F00F8
000F80F8000F80F8000F80F8000F80F8001F807C001F807C001F807E003F803E007F803F
00FF801FFFEF800FFFCF8007FF8F8003FE1F0000001F0000001F0000001E0000003E0000
003E0000007C0000007C000000F8001801F0001E07E0003FFFC0001FFF80000FFE000003
F8000019297EA71E>I<0001F000000003F800000003F800000007FC00000007BC000000
07BC0000000F3E0000000F1E0000000F1E0000001F1F0000001E1F0000001E0F0000003E
0F8000003C0F8000003C078000007C07C000007807C00000F803E00000F803E00000F003
E00001F001F00001F001F00001E001F00003E000F80003E000F80003C000F80007FFFFFC
0007FFFFFC000FFFFFFE000F80003E000F80003E001F00003F001F00001F001E00001F00
3E00000F803E00000F803C00000F807C000007C07C000007C078000007C0F8000003E0F8
000003E0232A7EA928>65 D<0001FF00000FFFE0003FFFF8007FFFF800FE01F801F80030
03F0001007C000000F8000001F8000001F0000003E0000003E0000007E0000007C000000
7C0000007C000000F8000000F8000000F8000000F8000000F8000000F8000000F8000000
F8000000F8000000F80000007C0000007C0000007C0000007E0000003E0000003E000000
1F0000001F8000000F80000007C0000003F0000401F8001C00FE00FC007FFFFC003FFFF8
000FFFE00001FF001E2C7CAA26>67 D<FFFFF00000FFFFFC0000FFFFFF0000F8003FC000
F80007E000F80003F000F80001F800F80000FC00F800007C00F800003E00F800001E00F8
00001F00F800000F00F800000F80F800000F80F800000780F8000007C0F8000007C0F800
0007C0F8000007C0F8000007C0F8000007C0F8000007C0F8000007C0F8000007C0F80000
07C0F800000780F800000F80F800000F80F800000F80F800001F00F800001F00F800003E
00F800007E00F800007C00F80000F800F80003F000F80007E000F8003FC000FFFFFF0000
FFFFFE0000FFFFF00000222A7BA92B>I<FFFFFFE0FFFFFFE0FFFFFFE0FFFFFFE0F80000
00F8000000F8000000F8000000F8000000F8000000F8000000F8000000F8000000F80000
00F8000000F8000000F8000000F8000000FFFFFF80FFFFFF80FFFFFF80FFFFFF80F80000
00F8000000F8000000F8000000F8000000F8000000F8000000F8000000F8000000F80000
00F8000000F8000000F8000000F8000000F8000000F8000000FFFFFFF0FFFFFFF0FFFFFF
F0FFFFFFF01C2A7BA924>I<FFFFFFC0FFFFFFC0FFFFFFC0FFFFFFC0F8000000F8000000
F8000000F8000000F8000000F8000000F8000000F8000000F8000000F8000000F8000000
F8000000F8000000F8000000F8000000FFFFFE00FFFFFE00FFFFFE00FFFFFE00F8000000
F8000000F8000000F8000000F8000000F8000000F8000000F8000000F8000000F8000000
F8000000F8000000F8000000F8000000F8000000F8000000F8000000F8000000F8000000
1A2A7BA922>I<F800003EF800003EF800003EF800003EF800003EF800003EF800003EF8
00003EF800003EF800003EF800003EF800003EF800003EF800003EF800003EF800003EF8
00003EF800003EFFFFFFFEFFFFFFFEFFFFFFFEFFFFFFFEF800003EF800003EF800003EF8
00003EF800003EF800003EF800003EF800003EF800003EF800003EF800003EF800003EF8
00003EF800003EF800003EF800003EF800003EF800003EF800003EF800003E1F2A7BA92A
>72 D<F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8
F8F8F8F8F8F8F8F8F8052A7AA911>I<F800003F80F800007F00F80000FE00F80001FC00
F80003F800F80007F000F8000FE000F8001FC000F8003F8000F8007F0000F800FE0000F8
01FC0000F803F80000F803F00000F807E00000F80FC00000F81F800000F83F800000F87F
C00000F8FFE00000F9FBE00000FBF3F00000FFE1F80000FFC0F80000FF807C0000FF007E
0000FE003E0000FC001F0000F8001F8000F8000F8000F80007C000F80007E000F80003E0
00F80001F000F80001F800F80000FC00F800007C00F800007E00F800003F00F800001F00
F800000F80F800000FC0222A7BA92A>75 D<FE0000007F80FE0000007F80FE0000007F80
FF000000FF80FB000000EF80FB800001EF80FB800001EF80FB800001EF80F9C00003CF80
F9C00003CF80F9C00003CF80F8E000078F80F8E000078F80F8F0000F8F80F8F0000F8F80
F870000F0F80F878001F0F80F878001F0F80F838001E0F80F83C003E0F80F83C003E0F80
F81E007C0F80F81E007C0F80F80E00780F80F80F00F80F80F80F00F80F80F80700F00F80
F80781F00F80F80781F00F80F80381E00F80F803C3E00F80F803C3E00F80F801C3C00F80
F801E7C00F80F800E7800F80F800E7800F80F800E7800F80F8007F000F80F8007F000F80
F8007F000F80F8003E000F80F80000000F80292A7BA934>77 D<FF00003EFF00003EFF80
003EFF80003EFBC0003EFBC0003EF9E0003EF9E0003EF9F0003EF8F0003EF8F8003EF878
003EF87C003EF83C003EF83E003EF81E003EF81F003EF81F003EF80F803EF80F803EF807
C03EF807C03EF803E03EF803E03EF801F03EF801F03EF800F03EF800F83EF800783EF800
7C3EF8003C3EF8003E3EF8001E3EF8001F3EF8000F3EF8000F3EF80007BEF80007BEF800
03FEF80003FEF80001FEF80001FE1F2A7BA92A>I<0001FC0000000FFF8000003FFFE000
007FFFF00001FE03FC0003F800FE0007E0003F0007C0001F000F80000F801F000007C01F
000007C03E000003E03E000003E07C000001F07C000001F07C000001F078000000F0F800
0000F8F8000000F8F8000000F8F8000000F8F8000000F8F8000000F8F8000000F8F80000
00F8F8000000F8F8000000F87C000001F07C000001F07C000001F07E000003F03E000003
E03F000007E01F000007C01F80000FC00FC0001F8007E0003F0007F0007F0003F800FE00
01FE03FC0000FFFFF800003FFFE000000FFF80000001FC0000252C7DAA2C>I<FFFFE000
FFFFFC00FFFFFF00F8003F80F8000FC0F80007E0F80001E0F80001F0F80000F0F80000F8
F80000F8F80000F8F80000F8F80000F8F80000F8F80000F0F80001F0F80001F0F80003E0
F8000FC0F8003F80FFFFFF00FFFFFE00FFFFF000F8000000F8000000F8000000F8000000
F8000000F8000000F8000000F8000000F8000000F8000000F8000000F8000000F8000000
F8000000F8000000F8000000F8000000F80000001D2A7BA926>I<FFFFE000FFFFFC00FF
FFFF00F8003FC0F80007E0F80001F0F80000F8F80000F8F800007CF800007CF800007CF8
00007CF800007CF800007CF80000F8F80000F8F80001F0F80007F0F8003FE0FFFFFF80FF
FFFF00FFFFFC00FFFFF000F801F000F800F800F8007800F8007C00F8003C00F8003E00F8
001F00F8001F00F8000F80F8000780F80007C0F80003E0F80003E0F80001F0F80001F0F8
0000F8F800007CF800007CF800003E1F2A7BA927>82 D<007FC00001FFF80007FFFE000F
FFFF001FC07F003F000F007E0006007C0000007C000000F8000000F8000000F8000000F8
000000F8000000FC0000007E0000007F0000003F8000001FF800000FFF800007FFE00003
FFF80000FFFC00000FFE000000FF0000003F0000001F8000000F8000000FC0000007C000
0007C0000007C0000007C0000007C0000007C000000F8060000F80F0001F00FC003F00FF
80FE007FFFFC001FFFF80007FFE00000FF80001A2C7DAA21>I<FFFFFFFFF0FFFFFFFFF0
FFFFFFFFF0FFFFFFFFF00000F800000000F800000000F800000000F800000000F8000000
00F800000000F800000000F800000000F800000000F800000000F800000000F800000000
F800000000F800000000F800000000F800000000F800000000F800000000F800000000F8
00000000F800000000F800000000F800000000F800000000F800000000F800000000F800
000000F800000000F800000000F800000000F800000000F800000000F800000000F80000
0000F800000000F800000000F800000000F80000242A7EA929>I<F8000000F8FC000000
F87C000001F07C000001F03E000003E03E000003E03E000003E01F000007C01F000007C0
1F800007C00F80000F800F80000F8007C0000F0007C0001F0007C0001F0003E0003E0003
E0003E0003E0003E0001F0007C0001F0007C0000F800780000F800F80000F800F800007C
00F000007C01F000007C01F000003E03E000003E03E000001E03C000001F07C000001F07
C000000F078000000F8F8000000F8F800000078F00000007CF00000003DE00000003DE00
000003FE00000001FC00000001FC00000001FC0000252A7FA928>86
D<F80001FC0000F8F80003FC0000F8FC0003FE0000F87C0003FE0001F07C0003DE0001F0
7C0007DE0001F03E0007DF0001E03E00079F0003E03E00078F0003E03E000F8F0003E01F
000F8F8003C01F000F0F8007C01F000F078007C01F001F07C007C00F801F07C007800F80
1E07C00F800F801E03C00F800F803E03E00F8007C03C03E00F0007C03C03E01F0007C03C
01E01F0003C07C01F01E0003E07801F01E0003E07800F03E0003E07800F03E0001E0F800
F03C0001E0F000F83C0001F0F000787C0001F0F000787C0000F0F00078780000F1E0007C
780000F9E0003C780000F9E0003CF8000079C0003CF0000079C0003CF0000079C0001CF0
00007BC0001EF000003B80001EE000003F80001FE000003F80000FE000001F80000FC000
001F00000FC000352A7FA938>I<01FE000FFF803FFFC03FFFE03C03F03001F00001F800
00F80000F80000F80000F80000F8007FF807FFF81FFFF83FE0F87F00F8FC00F8F800F8F8
00F8F800F8FC01F87E07F87FFFF83FFFF81FFCF80FE0F8151B7E9A1D>97
D<F80000F80000F80000F80000F80000F80000F80000F80000F80000F80000F80000F800
00F80000F80000F80000F83F00F9FFC0FBFFE0FFFFF0FF07F0FC01F8F800FCF8007CF800
7CF8007EF8003EF8003EF8003EF8003EF8003EF8003EF8003EF8007CF8007CF8007CFC00
F8FC01F8FF07F0FFFFE0FBFFC0F9FF80F87E00172A7BA91F>I<007FC001FFF007FFFC0F
FFFC1FC07C1F00083E00007C00007C00007C0000F80000F80000F80000F80000F80000F8
0000F800007C00007C00007E00003E00001F000C1FC07C0FFFFC07FFFC01FFF0007F8016
1B7E9A1B>I<00003E00003E00003E00003E00003E00003E00003E00003E00003E00003E
00003E00003E00003E00003E00003E00FC3E03FF3E07FFFE0FFFFE1FC1FE3F007E3E003E
7C003E7C003EFC003EF8003EF8003EF8003EF8003EF8003EF8003EF8003EFC003E7C003E
7C003E3E007E3F00FE1FC1FE0FFFFE07FFBE03FF3E00FC3E172A7EA91F>I<007E0003FF
8007FFC00FFFE01F83F03F00F03E00787C00787C003878003CFFFFFCFFFFFCFFFFFCFFFF
FCF80000F80000F800007800007C00007C00003E00003F000C1FC07C0FFFFC07FFFC01FF
F0007F80161B7E9A1B>I<001FC0007FC000FFC001FFC003F00003E00007C00007C00007
C00007C00007C00007C00007C00007C00007C000FFFE00FFFE00FFFE0007C00007C00007
C00007C00007C00007C00007C00007C00007C00007C00007C00007C00007C00007C00007
C00007C00007C00007C00007C00007C00007C00007C00007C00007C000122A7FA912>I<
00F8078003FE7FC00FFFFFC01FFFFFC01F07C0003E03E0003E03E0007C01F0007C01F000
7C01F0007C01F0007C01F0007C01F0003E03E0003E03E0001F07C0001FFFC0003FFF8000
3BFE000038F8000078000000780000003C0000003FFFC0003FFFF8001FFFFC001FFFFE00
3FFFFF007C007F00F8001F80F8000F80F8000F80F8000F80FC001F807E003F003F80FE00
3FFFFE000FFFF80007FFF00000FF80001A287E9A1E>I<F80000F80000F80000F80000F8
0000F80000F80000F80000F80000F80000F80000F80000F80000F80000F80000F83F00F8
FF80FBFFC0FFFFE0FF07E0FE03F0FC01F0FC01F0FC01F0F801F0F801F0F801F0F801F0F8
01F0F801F0F801F0F801F0F801F0F801F0F801F0F801F0F801F0F801F0F801F0F801F0F8
01F0F801F0142A7BA91F>I<F8F8F8F8F800000000000000000000F8F8F8F8F8F8F8F8F8
F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8052A7CA90E>I<F8F8F8F8F8F8F8F8F8F8F8
F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8052A7CA90E
>108 D<F83F003F00F8FFC0FFC0FBFFE3FFE0FFFFF7FFF0FF83F783F0FE01FE01F8FC00
FC00F8FC00FC00F8FC00FC00F8F800F800F8F800F800F8F800F800F8F800F800F8F800F8
00F8F800F800F8F800F800F8F800F800F8F800F800F8F800F800F8F800F800F8F800F800
F8F800F800F8F800F800F8F800F800F8F800F800F8F800F800F8F800F800F8251B7B9A30
>I<F83F00F8FF80FBFFC0FFFFE0FF07E0FE03F0FC01F0FC01F0FC01F0F801F0F801F0F8
01F0F801F0F801F0F801F0F801F0F801F0F801F0F801F0F801F0F801F0F801F0F801F0F8
01F0F801F0F801F0F801F0141B7B9A1F>I<007F000001FFC00007FFF0000FFFF8001FC1
FC003F007E003E003E007C001F007C001F0078000F00F8000F80F8000F80F8000F80F800
0F80F8000F80F8000F80F8000F807C001F007C001F007E003F003E003E003F007E001FC1
FC000FFFF80007FFF00001FFC000007F0000191B7E9A1E>I<F83F00F9FFC0FBFFE0FFFF
F0FF07F0FC01F8F800FCF800FCF8007CF8007EF8003EF8003EF8003EF8003EF8003EF800
3EF8003EF8007CF8007CF800FCFC00F8FC03F8FF07F0FFFFE0FBFFC0F9FF80F87E00F800
00F80000F80000F80000F80000F80000F80000F80000F80000F80000F80000F800001727
7B9A1F>I<F838F8F8F9F8FBF8FFC0FF00FE00FE00FC00FC00F800F800F800F800F800F8
00F800F800F800F800F800F800F800F800F800F800F8000D1B7B9A14>114
D<03FC001FFF803FFFC07FFFC07C07C0F80080F80000F80000F80000FC00007F80007FF8
003FFE001FFF0007FF8000FFC0000FE00007E00003E00003E04003E0E007E0FC0FC0FFFF
C07FFF801FFE0003F800131B7E9A17>I<07C00007C00007C00007C00007C00007C00007
C000FFFFC0FFFFC0FFFFC007C00007C00007C00007C00007C00007C00007C00007C00007
C00007C00007C00007C00007C00007C00007C00007C00007C00007C00007C04007E1C003
FFE003FFE001FF8000FC0013227FA116>I<F801F0F801F0F801F0F801F0F801F0F801F0
F801F0F801F0F801F0F801F0F801F0F801F0F801F0F801F0F801F0F801F0F801F0F801F0
F801F0F801F0F803F0F803F0FC0FF0FFFFF07FFDF03FF9F01FC1F0141B7B9A1F>I<F800
0F80FC000F807C001F007C001F007E001F003E003E003E003E001F003C001F007C001F00
7C000F8078000F80F8000F80F80007C0F00007C1F00007C1F00003E1E00003E3E00001E3
C00001E3C00001F3C00000F7800000F7800000F78000007F0000007F0000007F0000191B
7F9A1C>I<F800FC007CF801FC007C7C01FE00787C01DE00F87C01DE00F87C03DE00F83E
03CF00F03E03CF01F03E038F01F03E078F01F01F078F83E01F078783E01F070783E00F0F
0783C00F8F07C7C00F8F03C7C00F8E03C7C0078E03C780079E01C780079E01E78003DC01
EF0003DC01EF0003DC00EF0003D800EF0001F800FE0001F800FE0001F8007E00261B7F9A
29>I<7C000FC03E001F803F001F001F803E000F807C0007C0FC0003E0F80001F1F00001
FBE00000FFC000007FC000003F8000001F0000001F0000003F8000007FC00000FBC00000
F3E00001F1F00003E0F80007C07C000F807C000F803E001F001F003E000F807E000FC0FC
0007E01B1B809A1C>I<F8000F80FC000F807C001F007E001F003E003E003E003E001F00
3E001F007C001F007C000F807C000F80F80007C0F80007C0F00007C1F00003E1F00003E1
E00001E1E00001E3E00001F3C00000F3C00000F38000007380000073800000370000003F
0000003E0000001E0000001E0000003C0000003C0000003C0000007800000078000000F0
000000F000007FE000007FE000007FC000007F00000019277F9A1C>I<FFFFF8FFFFF8FF
FFF8FFFFF00003F00007E00007C0000FC0001F80001F00003E00007E0000FC0000F80001
F80003F00003E00007C0000FC0001F80001F00003F00007E00007FFFFCFFFFFCFFFFFCFF
FFFC161B7E9A1A>I E /Fo 15 122 df<07E00FF03FFC3FFC7FFEFFFFFFFFFFFFFFFFFF
FFFFFF7FFE3FFC3FFC0FF007E01010788F21>46 D<000001E00000000003F0000000000F
F0000000003FF000000000FFF00000000FFFF0000003FFFFF00000FFFFFFF00000FFFFFF
F00000FFFFFFF00000FFF0FFF00000FC00FFF000000000FFF000000000FFF000000000FF
F000000000FFF000000000FFF000000000FFF000000000FFF000000000FFF000000000FF
F000000000FFF000000000FFF000000000FFF000000000FFF000000000FFF000000000FF
F000000000FFF000000000FFF000000000FFF000000000FFF000000000FFF000000000FF
F000000000FFF000000000FFF000000000FFF000000000FFF000000000FFF000000000FF
F000000000FFF000000000FFF000000000FFF000000000FFF000000000FFF000000000FF
F000000000FFF000000000FFF000000000FFF000000000FFF000000000FFF000000000FF
F000000000FFF000000000FFF000000000FFF000000000FFF000000000FFF000000000FF
F000000000FFF000000000FFF000000000FFF000000000FFF000000000FFF000000000FF
F000003FFFFFFFFFC03FFFFFFFFFC03FFFFFFFFFC03FFFFFFFFFC03FFFFFFFFFC02A4478
C33B>49 D<0000FFE00000000FFFFE0000003FFFFFC00000FFFFFFF00003FFFFFFFC0007
FC01FFFE000FE0007FFF001FC0001FFF803F80000FFFC03FE00007FFE07FF80007FFE07F
FC0003FFF0FFFC0003FFF0FFFE0001FFF8FFFE0001FFF8FFFE0001FFF8FFFE0000FFFCFF
FE0000FFFC7FFC0000FFFC7FFC0000FFFC3FF80000FFFC1FF00000FFFC0FE00000FFFC00
000001FFFC00000001FFF800000001FFF800000001FFF000000003FFF000000003FFE000
000003FFE000000007FFC000000007FF800000000FFF800000001FFF000000001FFE0000
00003FFC000000007FF8000000007FE000000000FFC000000001FF8000000003FF000000
0007FC000000000FF8000000001FF0000000003FC0000000007F80007C0000FF00007C00
00FE00007C0001FC00007C0003F00000F80007E00000F8000FC00000F8001F800000F800
3F000001F8007C000003F800FFFFFFFFF801FFFFFFFFF003FFFFFFFFF007FFFFFFFFF00F
FFFFFFFFF01FFFFFFFFFF03FFFFFFFFFF07FFFFFFFFFF07FFFFFFFFFF0FFFFFFFFFFE0FF
FFFFFFFFE0FFFFFFFFFFE0FFFFFFFFFFE02E447AC33B>I<FFFFFFE0000000000003FFFF
FFFFFFFFF0000000000007FFFFFFFFFFFFF0000000000007FFFFFFFFFFFFF80000000000
0FFFFFFFFFFFFFF800000000000FFFFFFF001FFFF800000000000FFFF800001FFFFC0000
0000001EFFF800001FFFFC00000000001EFFF800001FBFFE00000000003CFFF800001FBF
FE00000000003CFFF800001F9FFF000000000078FFF800001F9FFF000000000078FFF800
001F8FFF8000000000F0FFF800001F8FFF8000000000F0FFF800001F87FFC000000001E0
FFF800001F87FFC000000001E0FFF800001F87FFC000000001E0FFF800001F83FFE00000
0003C0FFF800001F83FFE000000003C0FFF800001F81FFF00000000780FFF800001F81FF
F00000000780FFF800001F80FFF80000000F00FFF800001F80FFF80000000F00FFF80000
1F807FFC0000001E00FFF800001F807FFC0000001E00FFF800001F807FFC0000001E00FF
F800001F803FFE0000003C00FFF800001F803FFE0000003C00FFF800001F801FFF000000
7800FFF800001F801FFF0000007800FFF800001F800FFF800000F000FFF800001F800FFF
800000F000FFF800001F8007FFC00001E000FFF800001F8007FFC00001E000FFF800001F
8003FFE00003C000FFF800001F8003FFE00003C000FFF800001F8003FFE00003C000FFF8
00001F8001FFF000078000FFF800001F8001FFF000078000FFF800001F8000FFF8000F00
00FFF800001F8000FFF8000F0000FFF800001F80007FFC001E0000FFF800001F80007FFC
001E0000FFF800001F80003FFE003C0000FFF800001F80003FFE003C0000FFF800001F80
001FFF00780000FFF800001F80001FFF00780000FFF800001F80001FFF00780000FFF800
001F80000FFF80F00000FFF800001F80000FFF80F00000FFF800001F800007FFC1E00000
FFF800001F800007FFC1E00000FFF800001F800003FFE3C00000FFF800001F800003FFE3
C00000FFF800001F800001FFF7800000FFF800001F800001FFF7800000FFF800001F8000
01FFF7800000FFF800001F800000FFFF000000FFF800001F800000FFFF000000FFF80000
1F8000007FFE000000FFF800001F8000007FFE000000FFF800001F8000003FFC000000FF
F800001F8000003FFC000000FFF800001F8000001FF8000000FFF800001F8000001FF800
0000FFF800007FE000000FF0000000FFF800FFFFFFF0000FF00007FFFFFFFFFFFFFFF000
0FF00007FFFFFFFFFFFFFFF00007E00007FFFFFFFFFFFFFFF00007E00007FFFFFFFFFFFF
FFF00003C00007FFFFFFFF68477CC671>77 D<0007FFFC000000007FFFFFC0000001FFFF
FFF8000003FFFFFFFE000007FE001FFF000007FF0003FFC0000FFF8001FFE0000FFF8000
FFF0000FFF80007FF0000FFF80007FF8000FFF80007FF80007FF00003FFC0007FF00003F
FC0003FE00003FFC0000F800003FFC00000000003FFC00000000003FFC00000000003FFC
00000000003FFC00000007FFFFFC000000FFFFFFFC000007FFFFFFFC00003FFFE03FFC00
00FFFE003FFC0003FFF0003FFC0007FFC0003FFC000FFF00003FFC001FFE00003FFC003F
FC00003FFC007FF800003FFC007FF800003FFC00FFF000003FFC00FFF000003FFC00FFF0
00003FFC00FFF000003FFC00FFF000003FFC00FFF000007FFC007FF80000FFFC007FF800
01EFFC003FFC0003EFFC003FFF0007CFFF000FFFC03F8FFFF807FFFFFF07FFFC01FFFFFC
03FFFC007FFFF001FFFC0003FF80007FF8362E7DAD3A>97 D<00001FFFC0000000FFFFF8
000007FFFFFE00001FFFFFFF80007FFC00FFC000FFE001FFC001FFC003FFE003FF8003FF
E007FF0003FFE00FFE0003FFE00FFE0003FFE01FFC0001FFC01FFC0001FFC03FFC0000FF
803FFC00003E007FF8000000007FF8000000007FF800000000FFF800000000FFF8000000
00FFF800000000FFF800000000FFF800000000FFF800000000FFF800000000FFF8000000
00FFF800000000FFF8000000007FF8000000007FF8000000007FFC000000003FFC000000
003FFC000000001FFC000000F81FFE000000F80FFE000000F80FFF000001F007FF800003
F003FFC00007E001FFE0000FC000FFF0001F80007FFE00FF00001FFFFFFE000007FFFFF8
000000FFFFE00000001FFE00002D2E7CAD35>99 D<00001FFE00000001FFFFE0000007FF
FFF800001FFFFFFE00007FFC07FF0000FFE001FF8001FFC0007FC003FF80003FE007FF00
003FF00FFE00001FF01FFE00000FF81FFC00000FF83FFC00000FFC3FFC000007FC7FFC00
0007FC7FF8000007FC7FF8000007FE7FF8000007FEFFF8000007FEFFF8000007FEFFFFFF
FFFFFEFFFFFFFFFFFEFFFFFFFFFFFEFFFFFFFFFFFCFFF800000000FFF800000000FFF800
000000FFF8000000007FF8000000007FF8000000007FFC000000003FFC000000003FFC00
0000003FFC0000001C1FFE0000003E0FFE0000003E07FF0000007E07FF000000FC03FF80
0001F801FFC00003F0007FF0001FE0003FFE00FFC0001FFFFFFF800007FFFFFE000000FF
FFF80000000FFF80002F2E7DAD36>101 D<000000FFC000000007FFF80000003FFFFC00
0000FFFFFF000001FFC1FF000007FF03FF80000FFC03FF80000FF807FFC0001FF807FFC0
003FF007FFC0003FF007FFC0003FE003FF80007FE003FF80007FE001FF00007FE000FE00
007FE0003800007FE0000000007FE0000000007FE0000000007FE0000000007FE0000000
007FE0000000007FE0000000007FE0000000007FE0000000007FE0000000FFFFFFFE0000
FFFFFFFE0000FFFFFFFE0000FFFFFFFE0000FFFFFFFE0000007FF0000000007FF0000000
007FF0000000007FF0000000007FF0000000007FF0000000007FF0000000007FF0000000
007FF0000000007FF0000000007FF0000000007FF0000000007FF0000000007FF0000000
007FF0000000007FF0000000007FF0000000007FF0000000007FF0000000007FF0000000
007FF0000000007FF0000000007FF0000000007FF0000000007FF0000000007FF0000000
007FF0000000007FF0000000007FF0000000007FF0000000007FF0000000007FF0000000
007FF0000000007FF0000000007FF0000000007FF00000003FFFFFF800003FFFFFF80000
3FFFFFF800003FFFFFF800003FFFFFF800002A487DC724>I<00FC0001FE0003FF0007FF
800FFFC01FFFE01FFFE01FFFE01FFFE01FFFE01FFFE00FFFC007FF8003FF0001FE0000FC
00000000000000000000000000000000000000000000000000000000000000000000007F
C0FFFFC0FFFFC0FFFFC0FFFFC0FFFFC003FFC001FFC001FFC001FFC001FFC001FFC001FF
C001FFC001FFC001FFC001FFC001FFC001FFC001FFC001FFC001FFC001FFC001FFC001FF
C001FFC001FFC001FFC001FFC001FFC001FFC001FFC001FFC001FFC001FFC001FFC001FF
C001FFC001FFC001FFC001FFC0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF18497CC820>105
D<007FC000FFFFC000FFFFC000FFFFC000FFFFC000FFFFC00003FFC00001FFC00001FFC0
0001FFC00001FFC00001FFC00001FFC00001FFC00001FFC00001FFC00001FFC00001FFC0
0001FFC00001FFC00001FFC00001FFC00001FFC00001FFC00001FFC00001FFC00001FFC0
0001FFC00001FFC00001FFC00001FFC00001FFC00001FFC00001FFC00001FFC00001FFC0
0001FFC00001FFC00001FFC00001FFC00001FFC00001FFC00001FFC00001FFC00001FFC0
0001FFC00001FFC00001FFC00001FFC00001FFC00001FFC00001FFC00001FFC00001FFC0
0001FFC00001FFC00001FFC00001FFC00001FFC00001FFC00001FFC00001FFC00001FFC0
0001FFC00001FFC00001FFC00001FFC000FFFFFF80FFFFFF80FFFFFF80FFFFFF80FFFFFF
8019487CC720>108 D<007FC001FFC00000FFFFC00FFFF80000FFFFC03FFFFE0000FFFF
C0FFFFFF0000FFFFC1FC07FF8000FFFFC3E003FFC00003FFC7C001FFC00001FFCF0001FF
E00001FFDE0000FFE00001FFDC0000FFE00001FFFC0000FFF00001FFF80000FFF00001FF
F00000FFF00001FFF00000FFF00001FFF00000FFF00001FFE00000FFF00001FFE00000FF
F00001FFE00000FFF00001FFE00000FFF00001FFE00000FFF00001FFE00000FFF00001FF
E00000FFF00001FFE00000FFF00001FFE00000FFF00001FFE00000FFF00001FFE00000FF
F00001FFE00000FFF00001FFE00000FFF00001FFE00000FFF00001FFE00000FFF00001FF
E00000FFF00001FFE00000FFF00001FFE00000FFF00001FFE00000FFF00001FFE00000FF
F00001FFE00000FFF00001FFE00000FFF00001FFE00000FFF00001FFE00000FFF00001FF
E00000FFF00001FFE00000FFF000FFFFFFC07FFFFFE0FFFFFFC07FFFFFE0FFFFFFC07FFF
FFE0FFFFFFC07FFFFFE0FFFFFFC07FFFFFE03B2E7CAD42>110 D<00000FFF0000000000
FFFFF000000007FFFFFE0000001FFFFFFF8000003FFC03FFC00000FFE0007FF00001FF80
001FF80003FF00000FFC0007FE000007FE000FFE000007FF000FFC000003FF001FFC0000
03FF803FFC000003FFC03FF8000001FFC03FF8000001FFC07FF8000001FFE07FF8000001
FFE07FF8000001FFE0FFF8000001FFF0FFF8000001FFF0FFF8000001FFF0FFF8000001FF
F0FFF8000001FFF0FFF8000001FFF0FFF8000001FFF0FFF8000001FFF0FFF8000001FFF0
FFF8000001FFF07FF8000001FFE07FF8000001FFE07FF8000001FFE07FF8000001FFE03F
FC000003FFC03FFC000003FFC01FFC000003FF801FFE000007FF800FFE000007FF0007FF
00000FFE0003FF80001FFC0001FFC0003FF80000FFE0007FF000007FFC03FFE000001FFF
FFFF80000007FFFFFE00000000FFFFF0000000000FFF000000342E7DAD3B>I<00FF803F
8000FFFF80FFF000FFFF83FFFC00FFFF87FFFE00FFFF8FC3FF00FFFF8F07FF0003FF9E0F
FF8001FFBC0FFF8001FFB80FFF8001FFF80FFF8001FFF00FFF8001FFF007FF0001FFF007
FF0001FFE003FE0001FFE000F80001FFE000000001FFE000000001FFC000000001FFC000
000001FFC000000001FFC000000001FFC000000001FFC000000001FFC000000001FFC000
000001FFC000000001FFC000000001FFC000000001FFC000000001FFC000000001FFC000
000001FFC000000001FFC000000001FFC000000001FFC000000001FFC000000001FFC000
000001FFC000000001FFC000000001FFC000000001FFC0000000FFFFFFE00000FFFFFFE0
0000FFFFFFE00000FFFFFFE00000FFFFFFE00000292E7CAD31>114
D<000FFF00E0007FFFF3E001FFFFFFE007FFFFFFE00FF800FFE01FC0001FE03F80000FE0
3F000007E07F000003E07F000003E0FF000003E0FF000003E0FF800003E0FFC0000000FF
F0000000FFFE000000FFFFF800007FFFFFC0007FFFFFF0003FFFFFFC001FFFFFFF000FFF
FFFF8007FFFFFFC003FFFFFFE000FFFFFFF0003FFFFFF00003FFFFF800001FFFF8000000
FFFC0000001FFC7800000FFCF8000007FCF8000003FCFC000003FCFC000003FCFE000003
F8FE000003F8FF000003F8FF800007F0FFC0000FF0FFF0001FE0FFFC00FFC0FFFFFFFF80
FC7FFFFE00F81FFFF800E003FF8000262E7CAD2F>I<7FFFFFC000FFFF807FFFFFC000FF
FF807FFFFFC000FFFF807FFFFFC000FFFF807FFFFFC000FFFF8000FFF000000FE00000FF
F800000FC00000FFF800000FC000007FFC00000F8000007FFC00001F8000003FFC00001F
0000003FFE00003F0000001FFE00003E0000001FFF00007E0000000FFF00007C0000000F
FF8000FC00000007FF8000F800000007FFC001F800000003FFC001F000000003FFE003F0
00000003FFE003F000000001FFF003E000000001FFF007E000000000FFF007C000000000
FFF80FC0000000007FF80F80000000007FFC1F80000000003FFC1F00000000003FFE3F00
000000001FFE3E00000000001FFF7E00000000000FFF7C00000000000FFFFC0000000000
0FFFFC000000000007FFF8000000000007FFF8000000000003FFF0000000000003FFF000
0000000001FFE0000000000001FFE0000000000000FFC0000000000000FFC00000000000
007F800000000000007F800000000000003F000000000000003F000000000000003F0000
00000000003E000000000000007E000000000000007C00000000000000FC000000001F80
00F8000000003FC001F8000000007FE001F000000000FFF003F000000000FFF003E00000
0000FFF007E000000000FFF00FC000000000FFF01F8000000000FFF03F80000000007FE0
7F00000000007F43FE00000000003FFFF800000000001FFFF0000000000007FFC0000000
000001FE00000000000039427EAD3F>121 D E /Fp 8 117 df<0003FF8000001FFFF000
007FFFFE0000FE03FF0001F000FF8003C000FFC00780007FE00FF0007FF00FF8007FF01F
FC007FF81FFE007FF81FFE007FF81FFE007FF81FFE007FF81FFE007FF80FFC007FF007F8
007FF003F0007FF0000000FFE0000000FFC0000001FF80000001FF00000003FE00000007
FC0000001FF000000FFFC000000FFF8000000FFFF800000003FE00000000FF800000007F
E00000003FF00000003FF80000003FFC0000001FFC0000001FFE0000001FFE0200001FFF
1FC0001FFF3FE0001FFF7FF0001FFF7FF0001FFFFFF8001FFFFFF8001FFFFFF8001FFEFF
F8001FFEFFF0001FFE7FF0003FFC7FE0003FFC3FC0003FF81F80007FF01FE000FFE007FC
03FFC003FFFFFF0001FFFFFE00003FFFF0000007FF800028397CB731>51
D<0000001FFF000030000001FFFFE000F000000FFFFFFC01F000007FFFFFFE03F00001FF
FE007F87F00003FFE0000FCFF0000FFF000003FFF0001FFC000001FFF0003FF80000007F
F0007FF00000003FF000FFC00000003FF001FFC00000001FF003FF800000000FF007FF00
0000000FF00FFF0000000007F00FFE0000000007F01FFE0000000003F01FFE0000000003
F03FFC0000000003F03FFC0000000001F03FFC0000000001F07FFC0000000001F07FF800
00000001F07FF80000000000007FF8000000000000FFF8000000000000FFF80000000000
00FFF8000000000000FFF8000000000000FFF8000000000000FFF8000000000000FFF800
0000000000FFF8000000000000FFF8000000000000FFF8000000000000FFF80000000000
007FF80000000000007FF80000000000007FF80000000000007FFC0000000000F03FFC00
00000000F03FFC0000000000F03FFC0000000000F01FFE0000000000F01FFE0000000001
E00FFE0000000001E00FFF0000000001E007FF0000000003C003FF8000000003C001FFC0
000000078000FFE00000000F00007FF00000001F00003FF80000003E00001FFC0000007C
00000FFF000001F8000003FFE00007F0000001FFFE003FC00000007FFFFFFF000000000F
FFFFFC0000000001FFFFF000000000001FFF0000003C3D7BBB47>67
D<001FFF00000001FFFFF0000003FFFFFC000007F007FE00000FF801FF00001FFC00FF80
001FFC007FC0001FFC007FE0001FFC003FE0000FF8003FF0000FF8003FF00007F0003FF0
0001C0003FF0000000003FF0000000003FF0000000003FF0000000FFFFF000000FFFFFF0
00007FF83FF00001FF803FF00007FE003FF0000FF8003FF0001FF0003FF0003FE0003FF0
007FE0003FF0007FE0003FF000FFC0003FF000FFC0003FF000FFC0003FF000FFC0003FF0
00FFC0007FF0007FE0007FF0007FE000DFF0003FF0039FF8001FFC0F0FFFF007FFFE0FFF
F001FFFC07FFF0003FE000FFF02C267DA530>97 D<0001FFC000000FFFF800003FFFFE00
00FF80FF0001FE003F8007FC001FC00FF8000FE00FF8000FF01FF00007F03FF00007F83F
F00007F87FE00007F87FE00003FC7FE00003FC7FE00003FCFFE00003FCFFFFFFFFFCFFFF
FFFFFCFFFFFFFFFCFFE0000000FFE0000000FFE0000000FFE00000007FE00000007FE000
00007FE00000003FE00000003FF000003C1FF000003C1FF000003C0FF800007807FC0000
F803FE0001F001FF0007E000FFC03FC0003FFFFF000007FFFC000000FFE00026267DA52D
>101 D<00FF00000000FFFF00000000FFFF00000000FFFF00000000FFFF0000000007FF
0000000003FF0000000003FF0000000003FF0000000003FF0000000003FF0000000003FF
0000000003FF0000000003FF0000000003FF0000000003FF0000000003FF0000000003FF
0000000003FF0000000003FF0000000003FF0000000003FF0000000003FF007FC00003FF
01FFF80003FF07FFFC0003FF0F03FE0003FF1C01FF0003FF3001FF8003FF6000FF8003FF
E000FFC003FFC000FFC003FF8000FFC003FF8000FFC003FF8000FFC003FF0000FFC003FF
0000FFC003FF0000FFC003FF0000FFC003FF0000FFC003FF0000FFC003FF0000FFC003FF
0000FFC003FF0000FFC003FF0000FFC003FF0000FFC003FF0000FFC003FF0000FFC003FF
0000FFC003FF0000FFC003FF0000FFC003FF0000FFC003FF0000FFC003FF0000FFC003FF
0000FFC003FF0000FFC003FF0000FFC0FFFFFC3FFFFFFFFFFC3FFFFFFFFFFC3FFFFFFFFF
FC3FFFFF303C7CBB37>104 D<00FF01FF8000FFFF0FFFF000FFFF3FFFFC00FFFFFE03FF
00FFFFF000FF8003FFC0007FC003FF80003FE003FF00003FF003FF00001FF803FF00001F
FC03FF00000FFC03FF00000FFE03FF00000FFE03FF000007FE03FF000007FF03FF000007
FF03FF000007FF03FF000007FF03FF000007FF03FF000007FF03FF000007FF03FF000007
FF03FF000007FF03FF000007FE03FF000007FE03FF00000FFE03FF00000FFC03FF00000F
FC03FF00001FF803FF00001FF803FF00003FF003FF80003FE003FFC0007FC003FFF001FF
8003FFFC07FF0003FF3FFFFC0003FF0FFFF00003FF01FF000003FF0000000003FF000000
0003FF0000000003FF0000000003FF0000000003FF0000000003FF0000000003FF000000
0003FF0000000003FF0000000003FF0000000003FF0000000003FF00000000FFFFFC0000
00FFFFFC000000FFFFFC000000FFFFFC00000030377DA537>112
D<00FE03F000FFFE0FFE00FFFE1FFF00FFFE3C3F80FFFE707FC007FE60FFE003FEE0FFE0
03FEC0FFE003FFC0FFE003FF807FC003FF807FC003FF803F8003FF800E0003FF00000003
FF00000003FF00000003FF00000003FF00000003FF00000003FF00000003FF00000003FF
00000003FF00000003FF00000003FF00000003FF00000003FF00000003FF00000003FF00
000003FF00000003FF00000003FF00000003FF00000003FF000000FFFFFE0000FFFFFE00
00FFFFFE0000FFFFFE000023267DA529>114 D<00078000000780000007800000078000
00078000000F8000000F8000000F8000000F8000001F8000001F8000003F8000003F8000
007F800000FF800001FF800007FF80001FFFFFF0FFFFFFF0FFFFFFF0FFFFFFF001FF8000
01FF800001FF800001FF800001FF800001FF800001FF800001FF800001FF800001FF8000
01FF800001FF800001FF800001FF800001FF800001FF800001FF800001FF800001FF8000
01FF803C01FF803C01FF803C01FF803C01FF803C01FF803C01FF803C01FF803C00FF8078
00FFC078007FC070003FE0E0001FFFC00007FF800001FF001E377EB626>116
D E /Fq 83 124 df<001F83E000F06E3001C078780380F8780300F03007007000070070
000700700007007000070070000700700007007000FFFFFF800700700007007000070070
000700700007007000070070000700700007007000070070000700700007007000070070
000700700007007000070070000700700007007000070070007FE3FF001D20809F1B>11
D<003F0000E0C001C0C00381E00701E00701E00700000700000700000700000700000700
00FFFFE00700E00700E00700E00700E00700E00700E00700E00700E00700E00700E00700
E00700E00700E00700E00700E00700E00700E00700E07FC3FE1720809F19>I<003FE000
E0E001C1E00381E00700E00700E00700E00700E00700E00700E00700E00700E0FFFFE007
00E00700E00700E00700E00700E00700E00700E00700E00700E00700E00700E00700E007
00E00700E00700E00700E00700E00700E07FE7FE1720809F19>I<001F81F80000F04F04
0001C07C06000380F80F000300F00F000700F00F00070070000007007000000700700000
070070000007007000000700700000FFFFFFFF0007007007000700700700070070070007
007007000700700700070070070007007007000700700700070070070007007007000700
700700070070070007007007000700700700070070070007007007000700700700070070
07007FE3FE3FF02420809F26>I<001F81FF0000F06F070001C07C0F000380F80F000300
F00700070070070007007007000700700700070070070007007007000700700700070070
0700FFFFFFFF000700700700070070070007007007000700700700070070070007007007
000700700700070070070007007007000700700700070070070007007007000700700700
070070070007007007000700700700070070070007007007007FE3FE3FF02420809F26>
I<70F8F8F8F8F8F8F8707070707070707070702020202020000000000070F8F8F8700521
7CA00D>33 D<7038F87CFC7EFC7E743A0402040204020804080410081008201040200F0E
7E9F17>I<00780000008400000184000003020000070200000702000007020000070200
00070400000704000007080000070800000310000003A00FFC03C003E0038001C001C000
8001C0010003E0010004E0020008F00200187004003078080070380800701C1000F01E10
00F00E2000F0074000F003C0087003C0087801C010380670301C18386007E00F801E227E
A023>38 D<70F8FCFC74040404080810102040060E7C9F0D>I<00200040008001000200
06000C000C00180018003000300030007000600060006000E000E000E000E000E000E000
E000E000E000E000E000E0006000600060007000300030003000180018000C000C000600
020001000080004000200B2E7DA112>I<800040002000100008000C0006000600030003
0001800180018001C000C000C000C000E000E000E000E000E000E000E000E000E000E000
E000E000C000C000C001C001800180018003000300060006000C00080010002000400080
000B2E7DA112>I<01800180018001800180C183F18F399C0FF003C003C00FF0399CF18F
C1830180018001800180018010147DA117>I<0006000000060000000600000006000000
060000000600000006000000060000000600000006000000060000000600000006000000
06000000060000FFFFFFF0FFFFFFF0000600000006000000060000000600000006000000
060000000600000006000000060000000600000006000000060000000600000006000000
0600001C207D9A23>I<70F8FCFC74040404080810102040060E7C840D>I<FFC0FFC00A02
7F8A0F>I<70F8F8F87005057C840D>I<000100030003000600060006000C000C000C0018
0018001800300030003000600060006000C000C000C00180018001800300030003000600
060006000C000C000C00180018001800300030003000600060006000C000C000C000102D
7DA117>I<03F0000E1C001C0E00180600380700700380700380700380700380F003C0F0
03C0F003C0F003C0F003C0F003C0F003C0F003C0F003C0F003C0F003C0F003C0F003C070
03807003807003807807803807001806001C0E000E1C0003F000121F7E9D17>I<018003
800F80F38003800380038003800380038003800380038003800380038003800380038003
800380038003800380038003800380038007C0FFFE0F1E7C9D17>I<03F0000C1C00100E
00200700400780800780F007C0F803C0F803C0F803C02007C00007C0000780000780000F
00000E00001C0000380000700000600000C0000180000300000600400C00401800401000
803FFF807FFF80FFFF80121E7E9D17>I<03F0000C1C00100E00200F00780F8078078078
0780380F80000F80000F00000F00000E00001C0000380003F000003C00000E00000F0000
07800007800007C02007C0F807C0F807C0F807C0F00780400780400F00200E001C3C0003
F000121F7E9D17>I<000600000600000E00000E00001E00002E00002E00004E00008E00
008E00010E00020E00020E00040E00080E00080E00100E00200E00200E00400E00C00E00
FFFFF0000E00000E00000E00000E00000E00000E00000E0000FFE0141E7F9D17>I<1803
001FFE001FFC001FF8001FE00010000010000010000010000010000010000011F000161C
00180E001007001007800003800003800003C00003C00003C07003C0F003C0F003C0E003
80400380400700200600100E000C380003E000121F7E9D17>I<007C000182000701000E
03800C07801C0780380300380000780000700000700000F1F000F21C00F40600F80700F8
0380F80380F003C0F003C0F003C0F003C0F003C07003C07003C070038038038038070018
07000C0E00061C0001F000121F7E9D17>I<4000007FFFC07FFF807FFF80400100800200
80020080040000080000080000100000200000200000400000400000C00000C00001C000
018000038000038000038000038000078000078000078000078000078000078000078000
030000121F7D9D17>I<03F0000C0C001006003003002001806001806001806001807001
807803003E03003F06001FC8000FF00003F80007FC000C7E00103F00300F806003804001
C0C001C0C000C0C000C0C000C0C000806001802001001002000C0C0003F000121F7E9D17
>I<03F0000E18001C0C00380600380700700700700380F00380F00380F003C0F003C0F0
03C0F003C0F003C07007C07007C03807C0180BC00E13C003E3C000038000038000038000
0700300700780600780E00700C002018001070000FC000121F7E9D17>I<70F8F8F87000
00000000000000000070F8F8F87005147C930D>I<70F8F8F87000000000000000000000
70F0F8F878080808101010202040051D7C930D>I<7FFFFFE0FFFFFFF000000000000000
00000000000000000000000000000000000000000000000000FFFFFFF07FFFFFE01C0C7D
9023>61 D<0FC0307040384038E03CF03CF03C603C0038007000E000C001800180010003
000200020002000200020002000000000000000000000007000F800F800F8007000E207D
9F15>63 D<000100000003800000038000000380000007C0000007C0000007C0000009E0
000009E0000009E0000010F0000010F0000010F00000207800002078000020780000403C
0000403C0000403C0000801E0000801E0000FFFE0001000F0001000F0001000F00020007
800200078002000780040003C00E0003C01F0007E0FFC03FFE1F207F9F22>65
D<FFFFE0000F80380007801E0007801F0007800F0007800F8007800F8007800F8007800F
8007800F8007800F0007801F0007801E0007803C0007FFF00007803C0007801E0007800F
0007800F8007800780078007C0078007C0078007C0078007C0078007C00780078007800F
8007800F0007801F000F803C00FFFFF0001A1F7E9E20>I<000FC040007030C001C009C0
038005C0070003C00E0001C01E0000C01C0000C03C0000C07C0000407C00004078000040
F8000000F8000000F8000000F8000000F8000000F8000000F8000000F8000000F8000000
780000007C0000407C0000403C0000401C0000401E0000800E0000800700010003800200
01C0040000703800000FC0001A217D9F21>I<FFFFE0000F803C0007801E000780070007
800380078003C0078001E0078001E0078001F0078000F0078000F0078000F8078000F807
8000F8078000F8078000F8078000F8078000F8078000F8078000F8078000F0078000F007
8000F0078001E0078001E0078003C0078003800780070007800E000F803C00FFFFE0001D
1F7E9E23>I<FFFFFF000F800F0007800300078003000780010007800180078000800780
008007800080078080800780800007808000078080000781800007FF8000078180000780
800007808000078080000780800007800020078000200780002007800040078000400780
0040078000C0078000C0078001800F800F80FFFFFF801B1F7E9E1F>I<FFFFFF000F800F
000780030007800300078001000780018007800080078000800780008007800080078080
000780800007808000078080000781800007FF8000078180000780800007808000078080
000780800007800000078000000780000007800000078000000780000007800000078000
000FC00000FFFE0000191F7E9E1E>I<FFF8FFF80F800F8007800F0007800F0007800F00
07800F0007800F0007800F0007800F0007800F0007800F0007800F0007800F0007800F00
07FFFF0007800F0007800F0007800F0007800F0007800F0007800F0007800F0007800F00
07800F0007800F0007800F0007800F0007800F0007800F000F800F80FFF8FFF81D1F7E9E
22>72 D<FFFC0FC007800780078007800780078007800780078007800780078007800780
07800780078007800780078007800780078007800780078007800FC0FFFC0E1F7F9E10>
I<0FFFC0007C00003C00003C00003C00003C00003C00003C00003C00003C00003C00003C
00003C00003C00003C00003C00003C00003C00003C00003C00003C00003C00003C00203C
00F83C00F83C00F83C00F0380040780040700030E0000F800012207E9E17>I<FFFE000F
C00007800007800007800007800007800007800007800007800007800007800007800007
800007800007800007800007800007800007800007800207800207800207800207800607
800407800407800C07801C0F807CFFFFFC171F7E9E1C>76 D<FF80001FF80F80001F8007
80001F0005C0002F0005C0002F0005C0002F0004E0004F0004E0004F000470008F000470
008F000470008F000438010F000438010F000438010F00041C020F00041C020F00041C02
0F00040E040F00040E040F00040E040F000407080F000407080F000407080F000403900F
000403900F000401E00F000401E00F000401E00F000E00C00F001F00C01F80FFE0C1FFF8
251F7E9E2A>I<FF803FF807C007C007C0038005E0010005E0010004F001000478010004
780100043C0100043C0100041E0100040F0100040F010004078100040781000403C10004
01E1000401E1000400F1000400F1000400790004003D0004003D0004001F0004001F0004
000F0004000700040007000E0003001F000300FFE001001D1F7E9E22>I<001F800000F0
F00001C0380007801E000F000F000E0007001E0007803C0003C03C0003C07C0003E07800
01E0780001E0F80001F0F80001F0F80001F0F80001F0F80001F0F80001F0F80001F0F800
01F0F80001F0780001E07C0003E07C0003E03C0003C03C0003C01E0007800E0007000F00
0F0007801E0001C0380000F0F000001F80001C217D9F23>I<FFFFE0000F80780007801C
0007801E0007800F0007800F8007800F8007800F8007800F8007800F8007800F8007800F
0007801E0007801C000780780007FFE00007800000078000000780000007800000078000
0007800000078000000780000007800000078000000780000007800000078000000FC000
00FFFC0000191F7E9E1F>I<FFFF80000F80F0000780780007803C0007801E0007801E00
07801F0007801F0007801F0007801F0007801E0007801E0007803C00078078000780F000
07FF80000781C0000780E0000780F0000780700007807800078078000780780007807C00
07807C0007807C0007807C0407807E0407803E040FC01E08FFFC0F10000003E01E207E9E
21>82 D<07E0800C1980100780300380600180600180E00180E00080E00080E00080F000
00F000007800007F00003FF0001FFC000FFE0003FF00001F800007800003C00003C00001
C08001C08001C08001C08001C0C00180C00380E00300F00600CE0C0081F80012217D9F19
>I<7FFFFFE0780F01E0600F0060400F0020400F0020C00F0030800F0010800F0010800F
0010800F0010000F0000000F0000000F0000000F0000000F0000000F0000000F0000000F
0000000F0000000F0000000F0000000F0000000F0000000F0000000F0000000F0000000F
0000000F0000000F0000001F800007FFFE001C1F7E9E21>I<FFFC3FF80FC007C0078003
800780010007800100078001000780010007800100078001000780010007800100078001
000780010007800100078001000780010007800100078001000780010007800100078001
00078001000780010007800100038002000380020001C0020001C0040000E00800007018
0000382000000FC0001D207E9E22>I<FFF003FE1F8000F80F0000600F80006007800040
0780004003C0008003C0008003C0008001E0010001E0010001F0010000F0020000F00200
00F806000078040000780400003C0800003C0800003C0800001E1000001E1000001F3000
000F2000000F20000007C0000007C0000007C00000038000000380000003800000010000
1F207F9E22>I<FFF07FF81FF01F800FC007C00F00078003800F00078001000F0007C001
00078007C00200078007C00200078007C0020003C009E0040003C009E0040003C009E004
0003E010F00C0001E010F0080001E010F0080001F02078080000F02078100000F0207810
0000F0403C10000078403C20000078403C20000078C03E2000003C801E4000003C801E40
00003C801E4000001F000F8000001F000F8000001F000F8000001E00078000000E000700
00000E00070000000C000300000004000200002C207F9E2F>I<7FF83FF80FE00FC007C0
070003C0020001E0040001F00C0000F0080000781000007C1000003C2000003E4000001E
4000000F8000000F8000000780000003C0000007E0000005E0000009F0000018F8000010
780000207C0000603C0000401E0000801F0001800F0001000780020007C0070003C01F80
07E0FFE01FFE1F1F7F9E22>I<FFF003FF1F8000F80F8000600780004007C0004003E000
8001E0008001F0010000F0030000F80200007C0400003C0400003E0800001E0800001F10
00000FB0000007A0000007C0000003C0000003C0000003C0000003C0000003C0000003C0
000003C0000003C0000003C0000003C0000003C0000007C000007FFE00201F7F9E22>I<
FEFEC0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0
C0C0C0C0C0C0C0FEFE072D7CA10D>91 D<080410082010201040204020804080408040B8
5CFC7EFC7E7C3E381C0F0E7B9F17>I<FEFE060606060606060606060606060606060606
0606060606060606060606060606060606060606060606FEFE072D7FA10D>I<1FE00030
3000781800781C00300E00000E00000E00000E0000FE00078E001E0E00380E00780E00F0
0E10F00E10F00E10F01E10781E103867200F83C014147E9317>97
D<0E0000FE00000E00000E00000E00000E00000E00000E00000E00000E00000E00000E00
000E3E000EC3800F01C00F00E00E00E00E00700E00700E00780E00780E00780E00780E00
780E00780E00700E00700E00E00F00E00D01C00CC300083E0015207F9F19>I<03F80E0C
1C1E381E380C70007000F000F000F000F000F000F00070007000380138011C020E0C03F0
10147E9314>I<000380003F800003800003800003800003800003800003800003800003
8000038000038003E380061B801C0780380380380380700380700380F00380F00380F003
80F00380F00380F003807003807003803803803807801C07800E1B8003E3F815207E9F19
>I<03F0000E1C001C0E00380700380700700700700380F00380F00380FFFF80F00000F0
0000F000007000007000003800801800800C010007060001F80011147F9314>I<007C00
C6018F038F07060700070007000700070007000700FFF007000700070007000700070007
00070007000700070007000700070007000700070007007FF01020809F0E>I<0000E003
E3300E3C301C1C30380E00780F00780F00780F00780F00780F00380E001C1C001E380033
E0002000002000003000003000003FFE001FFF800FFFC03001E0600070C00030C00030C0
0030C000306000603000C01C038003FC00141F7F9417>I<0E0000FE00000E00000E0000
0E00000E00000E00000E00000E00000E00000E00000E00000E3E000E43000E81800F01C0
0F01C00E01C00E01C00E01C00E01C00E01C00E01C00E01C00E01C00E01C00E01C00E01C0
0E01C00E01C00E01C0FFE7FC16207F9F19>I<1C001E003E001E001C0000000000000000
00000000000E007E000E000E000E000E000E000E000E000E000E000E000E000E000E000E
000E000E000E00FFC00A1F809E0C>I<00E001F001F001F000E000000000000000000000
0000007007F000F000700070007000700070007000700070007000700070007000700070
00700070007000700070007000706070F060F0C061803F000C28829E0E>I<0E0000FE00
000E00000E00000E00000E00000E00000E00000E00000E00000E00000E00000E0FF00E03
C00E03000E02000E04000E08000E10000E30000E70000EF8000F38000E1C000E1E000E0E
000E07000E07800E03800E03C00E03E0FFCFF815207F9F18>I<0E00FE000E000E000E00
0E000E000E000E000E000E000E000E000E000E000E000E000E000E000E000E000E000E00
0E000E000E000E000E000E000E000E00FFE00B20809F0C>I<0E1F01F000FE618618000E
81C81C000F00F00E000F00F00E000E00E00E000E00E00E000E00E00E000E00E00E000E00
E00E000E00E00E000E00E00E000E00E00E000E00E00E000E00E00E000E00E00E000E00E0
0E000E00E00E000E00E00E00FFE7FE7FE023147F9326>I<0E3E00FE43000E81800F01C0
0F01C00E01C00E01C00E01C00E01C00E01C00E01C00E01C00E01C00E01C00E01C00E01C0
0E01C00E01C00E01C0FFE7FC16147F9319>I<01F800070E001C03803801C03801C07000
E07000E0F000F0F000F0F000F0F000F0F000F0F000F07000E07000E03801C03801C01C03
80070E0001F80014147F9317>I<0E3E00FEC3800F01C00F00E00E00E00E00F00E00700E
00780E00780E00780E00780E00780E00780E00700E00F00E00E00F01E00F01C00EC3000E
3E000E00000E00000E00000E00000E00000E00000E00000E0000FFE000151D7F9319>I<
03E0800619801C05803C0780380380780380700380F00380F00380F00380F00380F00380
F003807003807803803803803807801C0B800E138003E380000380000380000380000380
000380000380000380000380003FF8151D7E9318>I<0E78FE8C0F1E0F1E0F0C0E000E00
0E000E000E000E000E000E000E000E000E000E000E000E00FFE00F147F9312>I<1F9030
704030C010C010C010E00078007F803FE00FF00070803880188018C018C018E030D0608F
800D147E9312>I<020002000200060006000E000E003E00FFF80E000E000E000E000E00
0E000E000E000E000E000E000E080E080E080E080E080610031001E00D1C7F9B12>I<0E
01C0FE1FC00E01C00E01C00E01C00E01C00E01C00E01C00E01C00E01C00E01C00E01C00E
01C00E01C00E01C00E01C00E03C00603C0030DC001F1FC16147F9319>I<FF83F81E01E0
1C00C00E00800E00800E008007010007010003820003820003820001C40001C40001EC00
00E80000E80000700000700000700000200015147F9318>I<FF9FE1FC3C0780701C0300
601C0380200E0380400E0380400E03C0400707C0800704C0800704E08003886100038871
0003C8730001D0320001D03A0000F03C0000E01C0000E01C0000601800004008001E147F
9321>I<7FC3FC0F01E00701C007018003810001C20000E40000EC00007800003800003C
00007C00004E000087000107000303800201C00601E01E01E0FF07FE1714809318>I<FF
83F81E01E01C00C00E00800E00800E008007010007010003820003820003820001C40001
C40001EC0000E80000E800007000007000007000002000002000004000004000004000F0
8000F08000F100006200003C0000151D7F9318>I<3FFF380E200E201C40384078407000
E001E001C00380078007010E011E011C0338027006700EFFFE10147F9314>I<FFFFFC16
01808C17>I E /Fr 46 122 df<00200040008001000300060004000C000C0018001800
3000300030007000600060006000E000E000E000E000E000E000E000E000E000E000E000
E000E000E0006000600060007000300030003000180018000C000C000400060003000100
0080004000200B327CA413>40 D<800040002000100018000C0004000600060003000300
01800180018001C000C000C000C000E000E000E000E000E000E000E000E000E000E000E0
00E000E000E000C000C000C001C0018001800180030003000600060004000C0018001000
2000400080000B327DA413>I<70F8FCFC7404040404080810102040060F7C840E>44
D<FFE0FFE00B027F8B10>I<70F8F8F87005057C840E>I<008003800F80F3800380038003
800380038003800380038003800380038003800380038003800380038003800380038003
8003800380038003800380038007C0FFFE0F217CA018>49 D<03F0000C1C001007002007
804003C04003C08003E0F003E0F801E0F801E0F801E02003E00003E00003C00003C00007
80000700000E00001C0000180000300000600000C0000180000100000200200400200800
201800603000403FFFC07FFFC0FFFFC013217EA018>I<000200000600000E00000E0000
1E00001E00002E00004E00004E00008E00008E00010E00020E00020E00040E00040E0008
0E00100E00100E00200E00200E00400E00800E00FFFFF8000E00000E00000E00000E0000
0E00000E00000E00001F0001FFF015217FA018>52 D<1000801E07001FFF001FFE001FF8
0013E00010000010000010000010000010000010000010F800130E001407001803801003
800001C00001C00001E00001E00001E00001E07001E0F001E0F001E0E001C08001C04003
C04003802007001006000C1C0003F00013227EA018>I<007E0001C1000300800601C00E
03C01C03C0180180380000380000780000700000700000F0F800F30C00F40600F40300F8
0380F801C0F001C0F001E0F001E0F001E0F001E0F001E07001E07001E07001E03801C038
01C01803801C03000C0600070C0001F00013227EA018>I<01F800060E00080300100180
2001802000C06000C06000C06000C07000C07801803E01003F02001FC4000FF80003F800
03FC00067F00083F80100F803007C06001C06000E0C000E0C00060C00060C00060C00060
6000406000C03000801803000E0E0003F00013227EA018>56 D<01F000060C000C060018
0700380380700380700380F001C0F001C0F001C0F001E0F001E0F001E0F001E0F001E070
01E07003E03803E01805E00C05E00619E003E1E00001C00001C00001C000038000038030
0300780700780600700C002018001030000FC00013227EA018>I<000180000001800000
0180000003C0000003C0000003C0000005E0000005E000000DF0000008F0000008F00000
10F800001078000010780000203C0000203C0000203C0000401E0000401E0000401E0000
800F0000800F0000FFFF000100078001000780030007C0020003C0020003C0040003E004
0001E0040001E00C0000F00C0000F03E0001F8FF800FFF20237EA225>65
D<0007E0100038183000E0063001C00170038000F0070000F00E0000701E0000701C0000
303C0000303C0000307C0000107800001078000010F8000000F8000000F8000000F80000
00F8000000F8000000F8000000F800000078000000780000107C0000103C0000103C0000
101C0000201E0000200E000040070000400380008001C0010000E0020000381C000007E0
001C247DA223>67 D<FFFFF0000F801E0007800700078003C0078001C0078000E0078000
F007800078078000780780007C0780003C0780003C0780003C0780003E0780003E078000
3E0780003E0780003E0780003E0780003E0780003E0780003E0780003C0780003C078000
7C0780007807800078078000F0078000E0078001E0078003C0078007000F801E00FFFFF8
001F227EA125>I<FFFFFFC00F8007C0078001C0078000C0078000400780004007800060
07800020078000200780002007802020078020000780200007802000078060000780E000
07FFE0000780E00007806000078020000780200007802000078020080780000807800008
078000100780001007800010078000300780003007800070078000E00F8003E0FFFFFFE0
1D227EA121>I<FFFFFFC00F8007C0078001C0078000C007800040078000400780006007
800020078000200780002007802020078020000780200007802000078060000780E00007
FFE0000780E0000780600007802000078020000780200007802000078000000780000007
8000000780000007800000078000000780000007800000078000000FC00000FFFE00001B
227EA120>I<FFFC3FFF0FC003F0078001E0078001E0078001E0078001E0078001E00780
01E0078001E0078001E0078001E0078001E0078001E0078001E0078001E0078001E007FF
FFE0078001E0078001E0078001E0078001E0078001E0078001E0078001E0078001E00780
01E0078001E0078001E0078001E0078001E0078001E0078001E00FC003F0FFFC3FFF2022
7EA125>72 D<FFFC0FC00780078007800780078007800780078007800780078007800780
078007800780078007800780078007800780078007800780078007800780078007800FC0
FFFC0E227EA112>I<FFC00003FF0FC00003F007C00003E005E00005E005E00005E004F0
0009E004F00009E004F00009E004780011E004780011E004780011E0043C0021E0043C00
21E0043C0021E0041E0041E0041E0041E0040F0081E0040F0081E0040F0081E004078101
E004078101E004078101E00403C201E00403C201E00401E401E00401E401E00401E401E0
0400F801E00400F801E00400F801E004007001E00E007001E01F007003F0FFE0203FFF28
227EA12D>77 D<FF8007FF07C000F807C0007005E0002004F0002004F000200478002004
7C0020043C0020041E0020041F0020040F002004078020040780200403C0200401E02004
01E0200400F0200400F8200400782004003C2004003E2004001E2004000F2004000F2004
0007A0040003E0040003E0040001E0040001E0040000E00E0000601F000060FFE0002020
227EA125>I<FFFFF0000F803C0007800F0007800780078007C0078003C0078003E00780
03E0078003E0078003E0078003E0078003E0078003C0078007C00780078007800F000780
3C0007FFF000078000000780000007800000078000000780000007800000078000000780
00000780000007800000078000000780000007800000078000000FC00000FFFC00001B22
7EA121>80 D<FFFFE000000F803C000007800E00000780078000078007C000078003C000
078003E000078003E000078003E000078003E000078003E000078003C000078007C00007
8007800007800E000007803C000007FFE000000780700000078038000007801C00000780
1E000007800E000007800F000007800F000007800F000007800F000007800F800007800F
800007800F800007800F808007800FC080078007C0800FC003C100FFFC01E2000000007C
0021237EA124>82 D<03F0200C0C601802603001E07000E0600060E00060E00060E00020
E00020E00020F00000F000007800007F00003FF0001FFE000FFF0003FF80003FC00007E0
0001E00000F00000F0000070800070800070800070800070C00060C00060E000C0F000C0
C80180C6070081FC0014247DA21B>I<7FFFFFF878078078600780184007800840078008
40078008C007800C80078004800780048007800480078004000780000007800000078000
000780000007800000078000000780000007800000078000000780000007800000078000
000780000007800000078000000780000007800000078000000780000007800000078000
000FC00003FFFF001E227EA123>I<0FE0001838003C0C003C0E00180700000700000700
00070000FF0007C7001E07003C0700780700700700F00708F00708F00708F00F08781708
3C23900FC1E015157E9418>97 D<0E0000FE00001E00000E00000E00000E00000E00000E
00000E00000E00000E00000E00000E00000E00000E1F000E61C00E80600F00300E00380E
003C0E001C0E001E0E001E0E001E0E001E0E001E0E001E0E001E0E001C0E003C0E00380F
00700C80600C41C0083F0017237FA21B>I<01FE000703000C07801C0780380300780000
700000F00000F00000F00000F00000F00000F00000F000007000007800403800401C0080
0C010007060001F80012157E9416>I<0000E0000FE00001E00000E00000E00000E00000
E00000E00000E00000E00000E00000E00000E00000E001F8E00704E00C02E01C01E03800
E07800E07000E0F000E0F000E0F000E0F000E0F000E0F000E0F000E07000E07800E03800
E01801E00C02E0070CF001F0FE17237EA21B>I<01FC000707000C03801C01C03801C078
01E07000E0F000E0FFFFE0F00000F00000F00000F00000F000007000007800203800201C
00400E008007030000FC0013157F9416>I<003C00C6018F038F030F0700070007000700
07000700070007000700FFF8070007000700070007000700070007000700070007000700
07000700070007000700070007807FF8102380A20F>I<00007001F198071E180E0E181C
07001C07003C07803C07803C07803C07801C07001C07000E0E000F1C0019F00010000010
00001800001800001FFE000FFFC00FFFE03800F0600030400018C00018C00018C0001860
00306000303800E00E038003FE0015217F9518>I<0E0000FE00001E00000E00000E0000
0E00000E00000E00000E00000E00000E00000E00000E00000E00000E1F800E60C00E80E0
0F00700F00700E00700E00700E00700E00700E00700E00700E00700E00700E00700E0070
0E00700E00700E00700E00700E0070FFE7FF18237FA21B>I<1C001E003E001E001C0000
0000000000000000000000000000000E00FE001E000E000E000E000E000E000E000E000E
000E000E000E000E000E000E000E000E000E00FFC00A227FA10E>I<01C003E003E003E0
01C00000000000000000000000000000000001E00FE001E000E000E000E000E000E000E0
00E000E000E000E000E000E000E000E000E000E000E000E000E000E000E000E000E060E0
F0C0F18061803E000B2C82A10F>I<0E0000FE00001E00000E00000E00000E00000E0000
0E00000E00000E00000E00000E00000E00000E00000E03FC0E01F00E01C00E01800E0200
0E04000E08000E10000E38000EF8000F1C000E1E000E0E000E07000E07800E03C00E01C0
0E01E00E00F00E00F8FFE3FE17237FA21A>I<0E1FC07F00FE60E183801E807201C00F00
3C00E00F003C00E00E003800E00E003800E00E003800E00E003800E00E003800E00E0038
00E00E003800E00E003800E00E003800E00E003800E00E003800E00E003800E00E003800
E00E003800E00E003800E0FFE3FF8FFE27157F942A>109 D<0E1F80FE60C01E80E00F00
700F00700E00700E00700E00700E00700E00700E00700E00700E00700E00700E00700E00
700E00700E00700E00700E0070FFE7FF18157F941B>I<01FC000707000C01801800C038
00E0700070700070F00078F00078F00078F00078F00078F00078F000787000707800F038
00E01C01C00E038007070001FC0015157F9418>I<0E1F00FE61C00E80600F00700E0038
0E003C0E001C0E001E0E001E0E001E0E001E0E001E0E001E0E001E0E003C0E003C0E0038
0F00700E80E00E41C00E3F000E00000E00000E00000E00000E00000E00000E00000E0000
0E0000FFE000171F7F941B>I<0E3CFE461E8F0F0F0F060F000E000E000E000E000E000E
000E000E000E000E000E000E000E000F00FFF010157F9413>114
D<0F8830786018C018C008C008E008F0007F803FE00FF001F8003C801C800C800CC00CC0
08E018D0308FC00E157E9413>I<02000200020002000600060006000E001E003E00FFF8
0E000E000E000E000E000E000E000E000E000E000E000E040E040E040E040E040E040708
030801F00E1F7F9E13>I<0E0070FE07F01E00F00E00700E00700E00700E00700E00700E
00700E00700E00700E00700E00700E00700E00700E00700E00F00E00F006017003827800
FC7F18157F941B>I<FF8FF8FF1E01E03C1C01C0180E01C0180E01E0100E01E010070260
20070270200702702003843040038438400384384001C8188001C81C8001C81C8000F00D
0000F00F0000F00F0000600600006006000060060020157F9423>119
D<FFC1FE1E00780E00300E00200E002007004007004003808003808003808001C10001C1
0000E20000E20000E2000074000074000038000038000038000010000010000020000020
00002000004000F04000F08000F180004300003C0000171F7F941A>121
D E /Fs 20 118 df<FFFF80FFFF80FFFF8011037F9016>45 D<FFFFFFE00000FFFFFFFC
000007E0007F000003E0000F800003E00003C00003E00001E00003E00000F00003E00000
780003E000003C0003E000001E0003E000001E0003E000000F0003E000000F0003E00000
0F8003E00000078003E0000007C003E0000007C003E0000003C003E0000003C003E00000
03E003E0000003E003E0000003E003E0000003E003E0000003E003E0000003E003E00000
03E003E0000003E003E0000003E003E0000003E003E0000003E003E0000003C003E00000
03C003E0000007C003E0000007C003E00000078003E00000078003E000000F8003E00000
0F0003E000001F0003E000001E0003E000003C0003E00000780003E00000F80003E00001
F00003E00003E00003E0000F800007E0003F0000FFFFFFFC0000FFFFFFE000002B317CB0
33>68 D<FFFF80FFFF8007F00003E00003E00003E00003E00003E00003E00003E00003E0
0003E00003E00003E00003E00003E00003E00003E00003E00003E00003E00003E00003E0
0003E00003E00003E00003E00003E00003E00003E00003E00003E00003E00003E00003E0
0003E00003E00003E00003E00003E00003E00003E00003E00003E00003E00003E00007F0
00FFFF80FFFF8011317DB017>73 D<FFF00000007FF8FFF00000007FF807F00000007F00
02F8000000BE0002F8000000BE0002F8000000BE00027C0000013E00027C0000013E0002
3E0000023E00023E0000023E00023E0000023E00021F0000043E00021F0000043E00021F
0000043E00020F8000083E00020F8000083E00020F8000083E000207C000103E000207C0
00103E000207C000103E000203E000203E000203E000203E000201F000403E000201F000
403E000201F000403E000200F800803E000200F800803E000200F800803E0002007C0100
3E0002007C01003E0002007C01003E0002003E02003E0002003E02003E0002003E02003E
0002001F04003E0002001F04003E0002000F88003E0002000F88003E0002000F88003E00
020007D0003E00020007D0003E00020007D0003E00020003E0003E00020003E0003E0002
0003E0003E00070001C0003E000F8001C0007F00FFF801C00FFFF8FFF800800FFFF83531
7CB03D>77 D<FFFFFFC000FFFFFFF80007E0007E0003E0001F0003E000078003E00003C0
03E00001E003E00001F003E00001F003E00000F003E00000F803E00000F803E00000F803
E00000F803E00000F803E00000F803E00000F003E00001F003E00001E003E00003E003E0
0003C003E000078003E0001F0003E0007C0003FFFFF00003E000000003E000000003E000
000003E000000003E000000003E000000003E000000003E000000003E000000003E00000
0003E000000003E000000003E000000003E000000003E000000003E000000003E0000000
03E000000003E000000003E000000003E000000007F0000000FFFF800000FFFF80000025
317CB02D>80 D<007F802001FFE02007C078600F001C601E0006E03C0003E0380001E078
0000E0700000E070000060F0000060F0000060F0000020F0000020F0000020F8000020F8
0000007C0000007E0000003F0000003FC000001FF800000FFF800007FFF80003FFFC0000
FFFF00000FFF800000FFC000001FE0000007E0000003F0000001F0000000F0000000F800
0000F88000007880000078800000788000007880000078C0000078C0000070E00000F0E0
0000E0F00000E0F80001C0EC000380C7000700C1F01E00807FFC00800FF0001D337CB125
>83 D<00FE00000303C0000C00E00010007000100038003C003C003E001C003E001E003E
001E0008001E0000001E0000001E0000001E00000FFE0000FC1E0003E01E000F801E001F
001E003E001E003C001E007C001E00F8001E04F8001E04F8001E04F8003E04F8003E0478
003E047C005E043E008F080F0307F003FC03E01E1F7D9E21>97 D<003F8000E060038018
0700040F00041E001E1C003E3C003E7C003E7C0008780000F80000F80000F80000F80000
F80000F80000F80000F80000F800007800007C00007C00003C00011E00011E00020F0002
07000403801800E060003F80181F7D9E1D>99 D<000001E000003FE000003FE0000003E0
000001E0000001E0000001E0000001E0000001E0000001E0000001E0000001E0000001E0
000001E0000001E0000001E0000001E0000001E0000001E0001F81E000F061E001C019E0
078005E00F0003E00E0003E01E0001E03C0001E03C0001E07C0001E0780001E0F80001E0
F80001E0F80001E0F80001E0F80001E0F80001E0F80001E0F80001E0F80001E0780001E0
780001E03C0001E03C0001E01C0001E01E0003E00E0005E0070009E0038011F000E061FF
003F81FF20327DB125>I<003F800000E0E0000380380007003C000E001E001E001E001C
000F003C000F007C000F0078000F8078000780F8000780F8000780FFFFFF80F8000000F8
000000F8000000F8000000F8000000F8000000780000007C0000003C0000003C0000801E
0000800E0001000F0002000780020001C00C0000F03000001FC000191F7E9E1D>I<0007
E0001C1000383800707C00E07C01E07C01C03803C00003C00003C00003C00003C00003C0
0003C00003C00003C00003C00003C00003C000FFFFC0FFFFC003C00003C00003C00003C0
0003C00003C00003C00003C00003C00003C00003C00003C00003C00003C00003C00003C0
0003C00003C00003C00003C00003C00003C00003C00003C00003C00003C00007E0007FFF
007FFF0016327FB114>I<000000F0007F030801C1C41C0380E81C070070080F0078001E
003C001E003C003E003E003E003E003E003E003E003E003E003E003E003E001E003C001E
003C000F007800070070000780E00009C1C000087F000018000000180000001800000018
000000180000001C0000000E0000000FFFF80007FFFF0003FFFF800E000FC0180001E030
0000F070000070E0000038E0000038E0000038E0000038E0000038700000707000007038
0000E01C0001C00700070001C01C00003FE0001E2F7E9F21>I<07000F801F801F800F80
0700000000000000000000000000000000000000000000000780FF80FF800F8007800780
078007800780078007800780078007800780078007800780078007800780078007800780
07800780078007800FC0FFF8FFF80D307EAF12>105 D<0780FE001FC000FF83078060F0
00FF8C03C18078000F9001E2003C0007A001E4003C0007A000F4001E0007C000F8001E00
07C000F8001E00078000F0001E00078000F0001E00078000F0001E00078000F0001E0007
8000F0001E00078000F0001E00078000F0001E00078000F0001E00078000F0001E000780
00F0001E00078000F0001E00078000F0001E00078000F0001E00078000F0001E00078000
F0001E00078000F0001E00078000F0001E00078000F0001E00078000F0001E00078000F0
001E000FC001F8003F00FFFC1FFF83FFF0FFFC1FFF83FFF0341F7E9E38>109
D<0780FE0000FF83078000FF8C03C0000F9001E00007A001E00007A000F00007C000F000
07C000F000078000F000078000F000078000F000078000F000078000F000078000F00007
8000F000078000F000078000F000078000F000078000F000078000F000078000F0000780
00F000078000F000078000F000078000F000078000F000078000F000078000F0000FC001
F800FFFC1FFF80FFFC1FFF80211F7E9E25>I<001FC00000F0780001C01C00070007000F
0007801E0003C01C0001C03C0001E03C0001E0780000F0780000F0780000F0F80000F8F8
0000F8F80000F8F80000F8F80000F8F80000F8F80000F8F80000F8780000F07C0001F03C
0001E03C0001E01E0003C01E0003C00F00078007800F0001C01C0000F07800001FC0001D
1F7E9E21>I<0783E0FF8C18FF907C0F907C07A07C07C03807C00007C00007C000078000
078000078000078000078000078000078000078000078000078000078000078000078000
0780000780000780000780000780000780000FC000FFFE00FFFE00161F7E9E19>114
D<01FC100E03301800F0300070600030E00030E00010E00010E00010F00010F800007E00
003FF0001FFF000FFFC003FFE0003FF00001F80000F880003C80003C80001CC0001CC000
1CE0001CE00018F00038F00030CC0060C301C080FE00161F7E9E1A>I<00400000400000
400000400000400000C00000C00000C00001C00001C00003C00007C0000FC0001FFFE0FF
FFE003C00003C00003C00003C00003C00003C00003C00003C00003C00003C00003C00003
C00003C00003C00003C00003C00003C01003C01003C01003C01003C01003C01003C01003
C01001C02001E02000E0400078C0001F00142C7FAB19>I<078000F000FF801FF000FF80
1FF0000F8001F000078000F000078000F000078000F000078000F000078000F000078000
F000078000F000078000F000078000F000078000F000078000F000078000F000078000F0
00078000F000078000F000078000F000078000F000078000F000078000F000078001F000
078001F000078001F000038002F00003C004F00001C008F800007030FF80001FC0FF8021
1F7E9E25>I E /Ft 5 85 df<00000000C00000000000E00000000001E00000000003E0
0000000003E00000000007E00000000007E0000000000FE0000000000FE0000000001FE0
000000001FE00000000037E00000000067E00000000067E000000000C7E000000000C7F0
0000000183F00000000183F00000000303F00000000703F00000000603F00000000C03F0
0000000C03F00000001803F00000001803F00000003003F00000003003F00000006003F0
000000C003F0000000C003F00000018003F00000018003F8000003FFFFF8000003FFFFF8
0000060001F800000E0001F800000C0001F80000180001F80000180001F80000300001F8
0000300001F80000600001F80000E00001F80000C00001F80001C00001F80001C00001F8
0007C00001FC001FC00003FC00FFF8007FFFE0FFF8007FFFE02B327BB135>65
D<000FFFFFFE0000000FFFFFFF800000007F000FE00000007E0003F00000007E0000F800
00007E0000FC0000007E00007C000000FC00003E000000FC00003E000000FC00003F0000
00FC00001F000001F800001F000001F800001F800001F800001F800001F800001F800003
F000001F800003F000001F800003F000001F800003F000001F800007E000003F800007E0
00003F800007E000003F800007E000003F80000FC000003F00000FC000007F00000FC000
007F00000FC000007F00001F8000007E00001F800000FE00001F800000FE00001F800000
FC00003F000001FC00003F000001F800003F000001F800003F000003F000007E000003E0
00007E000007E000007E00000FC000007E00000F800000FC00001F800000FC00003F0000
00FC00007E000000FC0000FC000001F80001F0000001F80003E0000001F8000FC0000003
F8007F000000FFFFFFFC000000FFFFFFE000000031317BB036>68
D<000FFFFFFFFC000FFFFFFFFC00007F0001FC00007E00007C00007E00003C00007E0000
3C00007E0000180000FC0000180000FC0000180000FC0000180000FC0000180001F80000
180001F80000180001F80000180001F80000180003F00080100003F00180000003F00180
000003F00180000007E00300000007E00300000007E00700000007E01F0000000FFFFE00
00000FFFFE0000000FC01E0000000FC00E0000001F800C0000001F800C0000001F800C00
00001F800C0000003F00180000003F00080000003F00000000003F00000000007E000000
00007E00000000007E00000000007E0000000000FC0000000000FC0000000000FC000000
0000FC0000000001F80000000001F80000000001F80000000003F800000000FFFFF00000
00FFFFF00000002E317BB02F>70 D<000FFFFFF000000FFFFFFE0000007F003F8000007E
000FC000007E0007E000007E0003F000007E0001F80000FC0001F80000FC0001F80000FC
0001F80000FC0001F80001F80003F80001F80003F80001F80003F80001F80003F00003F0
0007F00003F00007E00003F0000FC00003F0000FC00007E0001F000007E0007E000007E0
00FC000007E007F000000FFFFFC000000FFFFF0000000FC00F8000000FC003C000001F80
03E000001F8001F000001F8001F000001F8001F800003F0001F800003F0001F800003F00
01F800003F0001F800007E0003F800007E0003F800007E0003F000007E0003F00000FC00
07F00000FC0007F00000FC0007F00800FC0007F00C01F80007F01801F80007F01801F800
03F03003F80003F030FFFFE001F0E0FFFFE000FFC0000000003F002E327BB034>82
D<07FFFFFFFFF00FFFFFFFFFF00FC00FE003F01E000FC000F01C000FC000E018000FC000
E038000FC0006030001F8000E030001F8000E060001F8000C060001F8000C060003F0000
C0C0003F0000C0C0003F0000C0C0003F0000C080007E00008000007E00000000007E0000
0000007E0000000000FC0000000000FC0000000000FC0000000000FC0000000001F80000
000001F80000000001F80000000001F80000000003F00000000003F00000000003F00000
000003F00000000007E00000000007E00000000007E00000000007E0000000000FC00000
00000FC0000000000FC0000000000FC0000000001F80000000001F80000000001F800000
00001F80000000003F00000000003F00000000003F0000000000FF00000000FFFFFF0000
00FFFFFF0000002C3173B033>84 D E end
%%EndProlog
%%BeginSetup
%%Feature: *Resolution 300dpi
TeXDict begin

%%EndSetup
%%Page: 0 1
0 0 bop 795 947 a Ft(D)26 b(R)g(A)f(F)h(T)225 1038 y
Fs(Do)r(cumen)n(t)20 b(for)i(a)f(Standard)g(Message-P)n(assing)f(In)n
(terface)621 1232 y Fr(Message)c(P)o(assing)h(In)o(terface)e(F)l(orum)
766 1359 y(Septem)o(b)q(er)g(19,)h(1996)190 1417 y(This)h(w)o(ork)f(w)o
(as)h(supp)q(orted)g(in)f(part)g(b)o(y)g(NSF)g(and)h(ARP)l(A)e(under)h
(NSF)g(con)o(tract)283 1475 y(CD)o(A-9115428)j(and)e(Esprit)f(under)h
(pro)s(ject)e(HPC)i(Standards)g(\(21111\).)p eop
%%Page: 1 2
1 1 bop 166 45 a Fq(This)20 b(is)h(the)f(result)g(of)f(a)h(LaT)l(eX)g
(run)g(of)g(a)f(draft)g(of)h(a)f(single)j(c)o(hapter)d(of)h(the)g(MPIF)
f(Final)75 102 y(Rep)q(ort)d(do)q(cumen)o(t.)969 2828
y(i)p eop
%%Page: 1 3
1 2 bop 75 356 a Fp(Chapter)34 b(3)75 564 y Fo(Miscellan)m(y)41
b(for)g(1.2)75 805 y Fn(3.1)59 b(V)n(ersion)20 b(Numb)r(er)75
953 y Fm(Curren)o(t)12 b(Status:)k Fl(P)o(assed)d(once.)20
b Fq(In)14 b(order)f(to)f(cop)q(e)i(with)g(c)o(hanges)f(to)f(the)i(MPI)
f(Standard,)g(there)g(are)75 1057 y(b)q(oth)j(compile-time)h(and)f
(run-time)g(w)o(a)o(ys)e(to)h(determine)h(whic)o(h)g(v)o(ersion)g(of)f
(the)h(standard)e(is)i(in)h(use)75 1114 y(in)f(the)f(en)o(vironmen)o(t)
h(one)f(is)h(using.)166 1170 y(The)e(\\v)o(ersion")g(will)h(b)q(e)g
(represen)o(ted)f(b)o(y)g(t)o(w)o(o)e(separate)i(in)o(tegers,)g(for)f
(the)h(v)o(ersion)g(and)g(sub)o(v)o(er-)75 1227 y(sion:)166
1283 y(In)i(C,)170 1367 y Fk(#define)23 b(MPI_VERSION)94
b(1)170 1423 y(#define)23 b(MPI_SUBVERSION)f(2)75 1507
y Fq(in)16 b(F)l(ortran,)170 1591 y Fk(INTEGER)23 b(MPI_VERSION,)g
(MPI_SUBVERSION)170 1648 y(PARAMETER)g(\(MPI_VERSION)94
b(=)24 b(1\))170 1704 y(PARAMETER)f(\(MPI_SUBVERSION)f(=)i(2\))75
1788 y Fq(and)15 b(in)h(C++,)170 1872 y Fk(const)24 b(int)f
(MPI::VERSION)f(=)i(1)170 1928 y(const)g(int)f(MPI::SUBVERSION)f(=)i(2)
75 2012 y Fq(F)l(or)15 b(run)o(time)g(determination,)75
2163 y Fj(MPI)p 160 2163 14 2 v 16 w(GET)p 264 2163 V
17 w(VERSION\()h(version,)f(subversion)h(\))117 2240
y Fl(OUT)108 b Fj(version)456 b Fl(v)o(ersion)14 b(n)o(um)o(b)q(er)117
2313 y(OUT)108 b Fj(subversion)393 b Fl(sub)o(v)o(ersion)15
b(n)o(um)o(b)q(er)75 2438 y Fk(int)23 b(MPI)p 245 2438
15 2 v 17 w(Get)p 334 2438 V 17 w(version\()g(int)g(*version,)g(int)g
(*subversion)g(\))75 2524 y(MPI)p 150 2524 V 17 w(GET)p
239 2524 V 17 w(VERSION\()f(VERSION,)h(SUBVERSION,)f(IERROR)h(\))170
2581 y(INTEGER)g(VERSION,)g(SUBVERSION,)f(IERROR)1875
2617 y Fi(>)16 b Fh(\(Oct\))75 2667 y Fk(static)23 b(int)g(MPI::Get)p
532 2667 V 17 w(version\()f(int&)i(version,)e(int&)i(subversion)e(\))
1875 2704 y Fi(?)16 b Fh(\(Oct\))964 2828 y Fq(1)p eop
%%Page: 2 4
2 3 bop 75 -100 a Fq(2)970 b Fg(CHAPTER)15 b(3.)35 b(MISCELLANY)17
b(F)o(OR)e(1.2)75 45 y Fn(3.2)59 b(T)-5 b(reatment)18
b(of)i(MPI)p 670 45 18 2 v 21 w(Status)75 147 y Fq(The)25
b(follo)o(wing)g(prop)q(osals)g(add)g(to,)g(but)g(do)g(not)f(c)o
(hange,)i(the)f(functionalit)o(y)h(asso)q(ciated)f(with)75
203 y Fj(MPI)p 160 203 14 2 v 16 w(ST)l(A)l(TUS)p Fq(.)75
325 y Ff(3.2.1)49 b(P)o(assing)17 b(MPI)p 481 325 15
2 v 18 w(ST)l(A)l(TUS)p 676 325 V 18 w(IGNORE)g(fo)o(r)f(MPI)p
1044 325 V 18 w(Status)75 458 y Fm(Curren)o(t)e(Status:)j
Fl(P)o(assed)e(once.)166 561 y Fq(Ev)o(ery)10 b(call)i(to)e
Fj(MPI)p 507 561 14 2 v 16 w(RECV)h Fq(includes)i(a)e
Fj(status)h Fq(argumen)o(t,)f(where)g(the)f(system)h(can)f(return)h
(details)75 618 y(ab)q(out)18 b(the)g(message)g(receiv)o(ed.)31
b(There)18 b(are)g(also)g(a)g(n)o(um)o(b)q(er)h(of)f(other)g(MPI)g
(calls,)i(particularly)f(in)-1991 b Fi(>)15 b Fh(\(Oct\))75
674 y Fq(MPI-2,)20 b(where)f Fj(status)i Fq(is)f(returned.)33
b(An)19 b(ob)s(ject)g(of)g(t)o(yp)q(e)g Fj(MPI)p 1234
674 V 16 w(ST)l(A)l(TUS)h Fq(is)g(not)f(an)g Fj(MPI)g
Fq(opaque)-117 676 y Fi(?)c Fh(\(Oct\))75 731 y Fq(ob)s(ject;)h(its)h
(structure)g(is)g(declared)h(in)f Fk(mpi.h)f Fq(and)h
Fk(mpif.h)p Fq(,)e(and)i(it)g(exists)g(in)g(the)g(users')f(program.)75
787 y(In)i(man)o(y)e(cases)h(application)i(programs)d(are)g
(constructed)i(so)e(that)h(it)g(is)g(unnecessary)h(for)f(them)g(to)75
844 y(examine)j(the)g Fk(status)f Fq(\014elds.)35 b(In)20
b(these)g(cases)f(it)h(is)g(a)g(w)o(aste)e(for)h(the)h(user)g(to)f
(allo)q(cate)h(a)g(status)75 900 y(ob)s(ject,)f(and)h(it)f(is)h
(particularly)g(w)o(asteful)f(for)g(the)g Fj(MPI)f Fq(implemen)o
(tation)j(to)d(\014ll)j(in)f(\014elds)h(in)f(this)75
957 y(ob)s(ject.)166 1013 y(T)l(o)h(cop)q(e)h(with)g(this)g(problem,)i
(there)d(is)h(a)g(pre-de\014ned)h(constan)o(t,)f Fj(MPI)p
1502 1013 V 16 w(ST)l(A)l(TUS)p 1683 1013 V 17 w(IGNORE)p
Fq(,)75 1070 y(whic)o(h,)i(when)e(passed)g(to)f(a)h(receiv)o(e)h(or)e
(test)g(function,)j(informs)e(the)g(implemen)o(tation)h(that)e(the)75
1126 y(status)13 b(\014elds)h(are)f(not)g(to)g(b)q(e)h(\014lled)i(in.)k
(Note)13 b(that)g Fj(MPI)p 1059 1126 V 15 w(ST)l(A)l(TUS)p
1239 1126 V 18 w(IGNORE)i Fq(is)e(not)h(a)f(sp)q(ecial)i(t)o(yp)q(e)e
(of)75 1183 y Fj(MPI)p 160 1183 V 16 w(ST)l(A)l(TUS)i
Fq(ob)s(ject;)f(rather,)f(it)h(is)h(a)f(sp)q(ecial)i(v)m(alue)f(for)f
(the)g(argumen)o(t.)k(That)c(is,)h(in)f(C)g(one)h(w)o(ould)75
1239 y(exp)q(ect)h(it)f(to)g(b)q(e)h(NULL,)g(not)e(the)i(address)f(of)g
(a)g(sp)q(ecial)i Fj(MPI)p 1179 1239 V 15 w(ST)l(A)l(TUS)p
Fq(.)166 1295 y(In)12 b(general,)h(this)f(optimization)g(can)g(apply)g
(to)f(all)i(functions)f(for)f(whic)o(h)h Fj(MPI)p 1514
1295 V 16 w(Status)i Fq(or)d(an)g(arra)o(y)75 1352 y(of)k
Fj(MPI)p 212 1352 V 16 w(Status)p Fq('s)i(is)f(an)g(argumen)o(t.)k
(These)c(are)f(all)i(the)e(v)m(arious)h(forms)f(of)g
Fj(MPI)p 1493 1352 V 16 w(RECV)p Fq(,)h Fj(MPI)p 1735
1352 V 16 w(TEST)p Fq(,)75 1408 y(and)i Fj(MPI)p 251
1408 V 15 w(W)l(AIT)p Fq(.)f(When)h(an)f(arra)o(y)g(is)g(passed,)h(as)f
(in)h(the)p 1132 1408 V 34 w Fj(ANY)g Fq(and)p 1349 1408
V 34 w Fj(ALL)f Fq(functions,)h(a)f(separate)75 1465
y(constan)o(t,)d Fj(MPI)p 356 1465 V 16 w(ST)l(A)l(TUSES)p
589 1465 V 18 w(IGNORE)p Fq(,)i(is)f(passed)h(for)e(the)i(arra)o(y)e
(argumen)o(t.)166 1521 y Fj(MPI)p 251 1521 V 16 w(ST)l(A)l(TUS)p
432 1521 V 17 w(IGNORE)g Fq(and)e Fj(MPI)p 794 1521 V
16 w(ST)l(A)l(TUSES)p 1027 1521 V 18 w(IGNORE)i Fq(are)e(not)g
(required)h(to)f(ha)o(v)o(e)g(the)g(same)-1992 b Fi(>)15
b Fh(\(Oct\))75 1578 y Fq(v)m(alues)h(in)g(C)f(and)h(F)l(ortran.)166
1634 y(It)d(is)g(not)g(allo)o(w)o(ed)g(to)f(ha)o(v)o(e)g(some)h(of)f
(the)h(statuses)f(in)i(an)f(arra)o(y)e(of)i(statuses)f(for)p
1574 1634 V 28 w Fj(ANY)i Fq(and)p 1782 1634 V 29 w Fj(ALL)75
1691 y Fq(functions)j(set)g(to)f Fj(MPI)p 487 1691 V
16 w(ST)l(A)l(TUS)p 668 1691 V 17 w(IGNORE)p Fq(;)i(one)e(either)i(sp)q
(eci\014es)g(ignoring)f Fe(al)r(l)34 b Fq(of)17 b(the)f(statuses)g(in)
75 1747 y(suc)o(h)e(a)g(call)h(with)f Fj(MPI)p 482 1747
V 16 w(ST)l(A)l(TUSES)p 715 1747 V 18 w(IGNORE)p Fq(,)h(or)f
Fe(none)i Fq(of)e(themm)g(b)o(y)f(passing)i(normal)f(statuses)f(in)75
1804 y(alll)k(p)q(ositions)f(in)g(the)f(arra)o(y)f(of)h(statuses.)-932
b Fi(?)15 b Fh(\(Oct\))75 1925 y Ff(3.2.2)49 b(Non-destructive)16
b(T)l(est)f(of)i(MPI)p 808 1925 15 2 v 18 w(Status)75
2058 y Fm(Curren)o(t)d(Status:)j Fl(P)o(assed)e(once.)166
2162 y Fq(This)22 b(call)g(is)g(useful)g(for)f(accessing)h(the)f
(information)h(asso)q(ciated)f(with)h(a)f(request,)h(without)75
2218 y(deleting)c(the)f(request)f(\(in)h(case)g(the)g(user)f(is)i(exp)q
(ected)f(to)f(access)h(it)g(after)f(the)g(handler\).)25
b(It)17 b(allo)o(ws)75 2275 y(one)11 b(to)e(la)o(y)o(er)i(libraries)h
(more)e(con)o(v)o(enien)o(tly)l(,)i(since)g(m)o(ultiple)g(la)o(y)o(ers)
e(of)h(soft)o(w)o(are)d(ma)o(y)i(access)h(the)f(same)75
2331 y(completed)17 b(request)f(and)g(extract)f(from)g(it)h(the)g
(status)f(information.)21 b(This)c(will)g(also)f(b)q(e)g(imp)q(ortan)o
(t)75 2388 y(for)g(language)i(in)o(terop)q(erabilit)o(y)h(if)e(w)o(e)g
(decide)i(that)d(status)g(ob)s(jects)h(cannot)f(b)q(e)i(transferred)f
(across)75 2444 y(language)d(b)q(oundaries,)g(since)h(with)f(this)g
(function)g(the)g(request)f(ob)s(ject)g(can)h(b)q(e)g(transferred)f
(instead.)1967 46 y Fh(1)1967 103 y(2)1967 159 y(3)1967
215 y(4)1967 272 y(5)1967 328 y(6)1967 385 y(7)1967 441
y(8)1967 498 y(9)1959 554 y(10)1959 611 y(11)1959 667
y(12)1959 724 y(13)1959 780 y(14)1959 836 y(15)1959 893
y(16)1959 949 y(17)1959 1006 y(18)1959 1062 y(19)1959
1119 y(20)1959 1175 y(21)1959 1232 y(22)1959 1288 y(23)1959
1345 y(24)1959 1401 y(25)1959 1457 y(26)1959 1514 y(27)1959
1570 y(28)1959 1627 y(29)1959 1683 y(30)1959 1740 y(31)1959
1796 y(32)1959 1853 y(33)1959 1909 y(34)1959 1966 y(35)1959
2022 y(36)1959 2078 y(37)1959 2135 y(38)1959 2191 y(39)1959
2248 y(40)1959 2304 y(41)1959 2361 y(42)1959 2417 y(43)1959
2474 y(44)1959 2530 y(45)1959 2587 y(46)1959 2643 y(47)1959
2699 y(48)p eop
%%Page: 3 5
3 4 bop 75 -100 a Fg(3.3.)34 b(ERR)o(OR)17 b(CLASS)f(F)o(OR)f(INV)-5
b(ALID)16 b(KEYV)-5 b(AL)818 b Fq(3)75 45 y Fj(MPI)p
160 45 14 2 v 16 w(GET)p 264 45 V 17 w(ST)l(A)l(TUS\()16
b(request,)g(\015ag,)f(status)i(\))117 122 y Fl(IN)155
b Fj(request)452 b Fl(an)14 b Fd(MPI)p 1040 122 13 2
v 14 w(REQUEST)f Fl(ob)r(ject)117 197 y(OUT)108 b Fj(\015ag)518
b Fl(\015ag,)13 b(same)g(as)h(from)e Fd(MPI)p 1325 197
V 15 w(TEST)117 273 y Fl(OUT)108 b Fj(status)476 b Fd(MPI)p
982 273 V 15 w(ST)m(A)m(TUS)12 b Fl(ob)r(ject)j(if)e(\015ag)g(is)h
(true)75 397 y Fk(int)23 b(MPI)p 245 397 15 2 v 17 w(Get)p
334 397 V 17 w(status\(MPI)p 591 397 V 16 w(Request)g(request,)f(int)i
(*flag,)f(MPI)p 1347 397 V 17 w(Status)g(*status\))75
483 y(MPI)p 150 483 V 17 w(GET)p 239 483 V 17 w(STATUS\()f(REQUEST,)h
(FLAG,)g(STATUS,)g(IERROR\))170 540 y(INTEGER)g(REQUEST,)g(FLAG,)g
(STATUS\(MPI)p 962 540 V 16 w(STATUS)p 1122 540 V 16
w(SIZE\),)h(IERROR)75 626 y(int)f(MPI::Request::Get)p
581 626 V 15 w(status\(bool&)g(flag,)g(MPI::Status&)f(status\))h(const)
166 713 y Fq(Sets)18 b(\015ag=true)g(if)h(the)f(request)h(has)f
(completed,)h(and,)g(if)g(so,)f(returns)g(in)h(status)f(the)g(request)
75 769 y(status.)34 b(Ho)o(w)o(ev)o(er,)20 b(unlik)o(e)i(test)d(or)h(w)
o(ait,)g(it)h(do)q(es)f(not)g(deallo)q(cate)h(or)f(inactiv)m(ate)h(the)
f(request;)i(a)75 826 y(subsequen)o(t)16 b(call)g(to)f(test,)f(w)o(ait)
h(or)f(free)i(should)g(b)q(e)g(executed)g(with)f(that)g(request)75
969 y Fn(3.3)59 b(Erro)n(r)21 b(Class)f(fo)n(r)h(Invalid)e(Keyval)1875
1026 y Fi(>)d Fh(\(Oct\))75 1118 y Fm(Curren)o(t)e(Status:)j
Fl(P)o(assed)e(once.)166 1221 y Fq(There)d(is)f(a)h(new)f(MPI)h(error)e
(class:)19 b Fj(MPI)p 875 1221 14 2 v 15 w(ERR)p 975
1221 V 18 w(KEYV)l(AL)p Fq(.)11 b(It)h(can)f(b)q(e)h(returned)g(b)o(y)f
Fj(MPI)p 1692 1221 V 16 w(A)o(ttr)p 1785 1221 V 17 w(put)p
Fq(,)75 1278 y Fj(MPI)p 160 1278 V 16 w(A)o(ttr)p 253
1278 V 17 w(get)p Fq(,)16 b Fj(MPI)p 440 1278 V 16 w(A)o(ttr)p
533 1278 V 16 w(delete)p Fq(,)i Fj(MPI)p 772 1278 V 16
w(Keyval)p 915 1278 V 15 w(free)p Fq(,)e Fj(MPI)p 1111
1278 V 16 w(Comm)p 1253 1278 V 14 w(dup)p Fq(,)i(and)e
Fj(MPI)p 1538 1278 V 16 w(Comm)p 1680 1278 V 14 w(free)p
Fq(.)23 b(The)75 1334 y(last)15 b(t)o(w)o(o)f(are)h(b)q(ecause)h
Fj(k)o(eyval)f Fq(is)h(an)f(argumen)o(t)f(to)h(the)g(cop)o(y)g(and)h
(delete)g(functions)g(for)e(attributes.)8 b Fi(?)16 b
Fh(\(Oct\))1875 1393 y Fi(>)g Fh(\(Oct\))1875 1451 y
Fi(>)g Fh(\(Oct\))75 1478 y Fn(A)k(new)f(reduce)g(op)r(eration)75
1626 y Fm(Curren)o(t)14 b(Status:)j Fl(New)d(for)g(Octob)q(er.)166
1730 y Fq(A)e(new)h(prede\014ned)h(op)q(eration,)f Fd(MPI)p
811 1730 13 2 v 14 w(REPLA)o(CE)p Fq(,)d(is)j(de\014ned.)20
b(It)13 b(corresp)q(onds)f(to)g(the)h(asso)q(ciativ)o(e)75
1786 y(function)18 b Fc(f)5 b Fq(\()p Fc(a;)j(b)p Fq(\))15
b(=)h Fc(b)p Fq(;)i(i.e.,)f(the)g(curren)o(t)h(v)m(alue)g(in)g(the)g
(target)e(memory)h(is)h(replaced)g(b)o(y)f(the)h(v)m(alue)75
1843 y(supplied)g(b)o(y)d(the)g(origin.)21 b(This)15
b(op)q(eration)h(can)f(b)q(e)h(applied)h(on)e(an)o(y)g(basic)h(datat)o
(yp)q(e.)166 1947 y Fm(Discussion:)35 b Fl(This)15 b(needs)g(a)f
(rationale.)19 b(It)14 b(can)h(b)q(e)g(used)g(to)f(do)g(one-sided)h
(broadcasts)g(\(should)f(it)g(b)q(e)75 2003 y(f\(a,b\))i(=)h(a\)?)27
b(It)17 b(w)o(ould)f(b)q(e)i(wierd)f(in)f(a)h(reduce)i(op)q(eration,)e
(and)f(could)h(b)q(e)h(easily)e(done)h(b)o(y)g(the)g(user)h(as)f(a)75
2059 y(user-de\014ned)f(function.)1875 2107 y Fi(?)g
Fh(\(Oct\))75 2250 y Fn(3.4)59 b(A)20 b(F)n(o)n(rtran)h(Problem)e(with)
h(Register)e(Optimization)75 2399 y Fm(Curren)o(t)c(Status:)j
Fl(A)d(new)g(discussion.)189 2552 y Fe(A)n(dvic)n(e)h(to)i(users.)189
2627 y Fq(MPI)d(pro)o(vides)g(op)q(erations)g(whic)o(h)h(ma)o(y)e(b)q
(e)i(hidden)h(from)d(the)h(user)g(co)q(de)h(and)f(run)h(in)f(parallel)
189 2684 y(with)g(it,)h(accessing)g(the)f(same)g(memory)g(as)g(user)g
(co)q(de.)20 b(Examples)15 b(include)i(the)d(data)g(transfer)-32
46 y Fh(1)-32 103 y(2)-32 159 y(3)-32 215 y(4)-32 272
y(5)-32 328 y(6)-32 385 y(7)-32 441 y(8)-32 498 y(9)-40
554 y(10)-40 611 y(11)-40 667 y(12)-40 724 y(13)-40 780
y(14)-40 836 y(15)-40 893 y(16)-40 949 y(17)-40 1006
y(18)-40 1062 y(19)-40 1119 y(20)-40 1175 y(21)-40 1232
y(22)-40 1288 y(23)-40 1345 y(24)-40 1401 y(25)-40 1457
y(26)-40 1514 y(27)-40 1570 y(28)-40 1627 y(29)-40 1683
y(30)-40 1740 y(31)-40 1796 y(32)-40 1853 y(33)-40 1909
y(34)-40 1966 y(35)-40 2022 y(36)-40 2078 y(37)-40 2135
y(38)-40 2191 y(39)-40 2248 y(40)-40 2304 y(41)-40 2361
y(42)-40 2417 y(43)-40 2474 y(44)-40 2530 y(45)-40 2587
y(46)-40 2643 y(47)-40 2699 y(48)p eop
%%Page: 4 6
4 5 bop 75 -100 a Fq(4)970 b Fg(CHAPTER)15 b(3.)35 b(MISCELLANY)17
b(F)o(OR)e(1.2)189 45 y Fq(for)10 b(an)h Fj(MPI)p 398
45 14 2 v 16 w(RECV)h Fq(The)f(optimizer)i(of)d(a)h(compiler)i(will)f
(assume)f(that)g(it)g(can)h(recognize)g(p)q(erio)q(ds)189
102 y(when)j(a)g(cop)o(y)g(of)g(a)f(v)m(ariable)j(can)e(b)q(e)h(k)o
(ept)f(in)h(a)e(register)h(without)g(reloading)h(from)f(or)f(storing)
189 158 y(to)e(memory)l(.)18 b(When)13 b(the)g(user)g(co)q(de)g(is)g(w)
o(orking)f(with)h(a)f(register)h(cop)o(y)f(of)g(some)h(v)m(ariable)g
(while)189 214 y(the)i(hidden)i(op)q(eration)f(reads)f(or)g(writes)g
(the)h(memory)f(cop)o(y)l(,)g(problems)h(o)q(ccur.)k(This)c(section)189
271 y(discusses)g(register)f(optimization)h(pitfalls.)189
346 y(When)f(a)f(v)m(ariable)i(is)f(lo)q(cal)h(to)e(a)g(F)l(ortran)f
(subroutine)j(\(i.e.)k(not)14 b(in)h(a)g(COMMON)f(blo)q(c)o(k\),)h(the)
189 403 y(compiler)g(will)i(assume)d(that)g(it)h(cannot)f(b)q(e)h(mo)q
(di\014ed)h(b)o(y)f(a)f(called)i(subroutine)f(unless)h(it)f(is)g(an)189
459 y(actual)g(argumen)o(t)g(of)h(the)f(call.)23 b(In)16
b(the)g(most)e(common)i(link)m(age)h(con)o(v)o(en)o(tion,)e(the)h
(subroutine)189 515 y(is)d(exp)q(ected)i(to)d(sa)o(v)o(e)h(and)g
(restore)g(certain)h(registers.)19 b(Th)o(us,)13 b(the)g(optimizer)i
(will)g(assume)e(that)189 572 y(a)k(register)h(whic)o(h)h(held)g(a)e(v)
m(alid)j(cop)o(y)d(of)h(suc)o(h)g(a)g(v)m(ariable)h(b)q(efore)f(the)g
(call)h(will)g(still)h(hold)e(a)189 628 y(v)m(alid)e(cop)o(y)g(on)f
(return.)189 703 y(Normally)22 b(users)g(are)g(not)g(a\017icted)g(with)
h(this.)41 b(But)22 b(the)g(user)g(should)h(pa)o(y)f(atten)o(tion)g(to)
189 760 y(this)f(section)g(if)g(in)h(his/her)f(program)e(a)i(bu\013er)f
(argumen)o(t)g(to)g(an)h Fj(MPI)p 1498 760 V 16 w(SEND)p
Fq(,)f Fj(MPI)p 1746 760 V 16 w(RECV)189 816 y Fq(etc.)25
b(uses)18 b(a)f(name)g(whic)o(h)h(hides)g(the)f(actual)h(v)m(ariables)g
(in)o(v)o(olv)o(ed.)27 b Fj(MPI)p 1493 816 V 16 w(BOTTOM)18
b Fq(with)f(an)189 873 y(MPI)p 281 873 V 16 w(Datat)o(yp)q(e)i(con)o
(taining)i(absolute)g(addresses)f(is)h(one)f(example.)36
b(Creating)20 b(a)f(datat)o(yp)q(e)189 929 y(whic)o(h)14
b(uses)f(one)g(v)m(ariable)i(as)e(an)g(anc)o(hor)f(and)i(brings)f
(along)h(others)e(b)o(y)h(using)h Fj(MPI)p 1659 929 V
16 w(ADDRESS)189 986 y Fq(to)h(determine)j(their)f(o\013sets)e(from)g
(the)i(anc)o(hor)f(is)h(another.)22 b(The)17 b(anc)o(hor)f(v)m(ariable)
i(w)o(ould)e(b)q(e)189 1042 y(the)g(only)h(one)f(men)o(tioned)h(in)g
(the)g(call.)24 b(Also)16 b(atten)o(tion)g(m)o(ust)g(b)q(e)h(pa)o(y)o
(ed)f(if)h(MPI)f(op)q(erations)189 1099 y(are)f(used)g(that)g(run)g(in)
h(parallel)h(with)f(the)f(user's)g(application.)189 1174
y(The)g(follo)o(wing)h(example)g(sho)o(ws,)e(what)h(F)l(ortran)f
(compilers)i(are)f(allo)o(w)o(ed)h(to)e(do:)224 1299
y(This)i(source)f(...)663 b(can)15 b(b)q(e)h(compiled)h(as:)224
1363 y(call)f(MPI)p 399 1363 V 17 w(ADDRESS\(buf,bufaddr,ierr\))189
b(call)16 b(MPI)p 1344 1363 V 17 w(ADDRESS\(buf,...\))224
1420 y(call)g(MPI)p 399 1420 V 17 w(TYPE)p 545 1420 V
16 w(STR)o(UCT\(1,1,bufaddr,)163 b(call)16 b(MPI)p 1344
1420 V 17 w(TYPE)p 1490 1420 V 16 w(STR)o(UCT\(...\))590
1476 y(MPI)p 682 1476 V 17 w(REAL,t)o(yp,ierr\))224 1533
y(call)g(MPI)p 399 1533 V 17 w(TYPE)p 545 1533 V 16 w(COMMIT\(t)o(yp\))
308 b(call)16 b(MPI)p 1344 1533 V 17 w(TYPE)p 1490 1533
V 16 w(COMMIT\(...\))224 1589 y(v)m(al)p 283 1589 V 17
w(old)g(=)g(buf)681 b(register)15 b(=)h(buf)1169 1646
y(v)m(al)p 1228 1646 V 17 w(old)g(=)f(register)224 1702
y(call)h(MPI)p 399 1702 V 17 w(RECV\(MPI)p 654 1702 V
16 w(BOTTOM,1,t)o(yp,...\))107 b(call)16 b(MPI)p 1344
1702 V 17 w(RECV\(MPI)p 1599 1702 V 16 w(BOTTOM,...\))224
1759 y(v)m(al)p 283 1759 V 17 w(new)g(=)f(buf)664 b(v)m(al)p
1228 1759 V 17 w(new)16 b(=)f(register)189 1884 y(The)j(compiler)g(do)q
(es)g(not)g(in)o(v)m(alidate)h(the)f(register)g(b)q(ecause)g(it)g
(cannot)f(see)h(that)f Fj(MPI)p 1746 1884 V 16 w(RECV)189
1940 y Fq(c)o(hanges)h(the)g(v)m(alue)i(of)e Fj(buf)p
Fq(.)30 b(The)19 b(access)f(of)g Fj(buf)i Fq(is)f(hidden)h(b)o(y)e(the)
h(use)f(of)g Fj(MPI)p 1659 1940 V 16 w(ADDRESS)189 1997
y Fq(and)d Fj(MPI)p 362 1997 V 16 w(BOTTOM)p Fq(.)189
2072 y(The)g(next)g(example)h(sho)o(ws)f(extreme,)g(but)g(allo)o(w)o
(ed)h(p)q(ossibilities!)224 2197 y(Source)424 b(compiled)17
b(as)322 b(or)15 b(compiled)i(as)224 2261 y(call)f(MPI)p
399 2261 V 17 w(IRECV\(buf,..req\))i(call)f(MPI)p 955
2261 V 16 w(IRECV\(buf,..req\))h(call)f(MPI)p 1510 2261
V 16 w(IRECV\(buf,..req\))779 2318 y(register)e(=)h(buf)278
b(b1)15 b(=)h(buf)224 2374 y(call)g(MPI)p 399 2374 V
17 w(W)-5 b(AIT\(req,..\))104 b(call)17 b(MPI)p 955 2374
V 16 w(W)-5 b(AIT\(req,..\))104 b(call)17 b(MPI)p 1510
2374 V 16 w(W)-5 b(AIT\(req,..\))224 2431 y(b1)15 b(=)h(buf)377
b(b1)15 b(:=)g(register)189 2556 y Fj(MPI)p 274 2556
V 15 w(W)l(AIT)e Fq(or)f(a)g(parallel)i(thread)e(mo)q(di\014es)i
Fj(buf)f Fq(b)q(et)o(w)o(een)g(the)f(in)o(v)o(o)q(cation)h(of)f
Fj(MPI)p 1648 2556 V 16 w(IRECV)h Fq(and)189 2612 y(the)j(\014nish)h
(of)f Fj(MPI)p 528 2612 V 16 w(W)l(AIT)p Fq(.)g(But)g(the)g(compiler)i
(cannot)e(see)g(an)o(y)g(p)q(ossibilit)o(y)i(that)e Fj(buf)h
Fq(can)f(b)q(e)189 2669 y(c)o(hanged)g(after)e Fj(MPI)p
557 2669 V 16 w(IRECV)i Fq(has)g(\014nished.)23 b(And)16
b(therefore)f(it)h(can)g(sc)o(hedule)h(the)f(load)g(of)f
Fj(buf)1967 46 y Fh(1)1967 103 y(2)1967 159 y(3)1967
215 y(4)1967 272 y(5)1967 328 y(6)1967 385 y(7)1967 441
y(8)1967 498 y(9)1959 554 y(10)1959 611 y(11)1959 667
y(12)1959 724 y(13)1959 780 y(14)1959 836 y(15)1959 893
y(16)1959 949 y(17)1959 1006 y(18)1959 1062 y(19)1959
1119 y(20)1959 1175 y(21)1959 1232 y(22)1959 1288 y(23)1959
1345 y(24)1959 1401 y(25)1959 1457 y(26)1959 1514 y(27)1959
1570 y(28)1959 1627 y(29)1959 1683 y(30)1959 1740 y(31)1959
1796 y(32)1959 1853 y(33)1959 1909 y(34)1959 1966 y(35)1959
2022 y(36)1959 2078 y(37)1959 2135 y(38)1959 2191 y(39)1959
2248 y(40)1959 2304 y(41)1959 2361 y(42)1959 2417 y(43)1959
2474 y(44)1959 2530 y(45)1959 2587 y(46)1959 2643 y(47)1959
2699 y(48)p eop
%%Page: 5 7
5 6 bop 75 -100 a Fg(3.5.)34 b(TR)o(UE)15 b(EXTENT)g(OF)g(D)o(A)l(T)l
(A)l(TYPES)958 b Fq(5)189 45 y(earlier)14 b(than)g(t)o(yp)q(ed)g(in)h
(the)f(source.)20 b(It)13 b(has)h(no)g(reason)f(to)h(a)o(v)o(oid)f
(using)i(a)e(register)h(to)f(hold)i Fj(buf)189 102 y
Fq(across)f(the)h(call)i(to)d Fj(MPI)p 625 102 14 2 v
16 w(W)l(AIT)p Fq(.)h(It)g(also)g(can)h(reorder)f(the)g(instructions)h
(as)f(in)h(the)f(left)h(case.)189 177 y(T)l(o)c(prev)o(en)o(t)h
(instruction)h(reordering)g(or)e(the)h(allo)q(cation)h(of)f(a)g(v)m
(ariable)h(or)f(bu\013er)g(in)h(a)e(register,)189 233
y(there)j(are)g(three)g(p)q(ossibilities)k(in)d(p)q(ortable)f(F)l
(ortran)f(co)q(de:)243 327 y Fi(\017)23 b Fq(One)d(can)f(put)h(the)g(v)
m(ariables)g(and)g(bu\013ers)f(in)o(to)h(common)f(blo)q(c)o(ks;)j(then)
e(they)f(will)i(b)q(e)289 383 y(allo)q(cated)d(in)g(the)g(memory)e
(while)j(an)o(y)e(library)h(subroutine)h(\(e.g.)25 b(an)18
b(MPI)f(routine\))g(is)289 440 y(called)c(pro)o(vided)f(that)f(the)h
(compiler)h(cannot)e(analyze)h(that)f(the)h(library)g(subroutine)h(do)q
(es)289 496 y(not)h(use)i(these)f(common)g(blo)q(c)o(ks,)h(or)243
569 y Fi(\017)23 b Fq(one)11 b(can)h(declare)g(them)f(as)g(V)o(OLA)l
(TILE,)h(but)g(this)g(is)f(not)g(part)g(of)g(the)g(standards)g(F)l
(ortran)289 626 y(77)f(and)h(90,)g(and)g(y)o(our)f(co)q(de)i(will)h
(not)d(b)q(e)i(p)q(ortable)f(b)q(ecause)h(there)f(are)g(compilers)h
(without)289 682 y(V)o(OLA)l(TILE,)k(and)f(normally)h(it)g(prev)o(en)o
(ts)e(an)o(y)h(optimization,)h(or)243 755 y Fi(\017)23
b Fq(one)14 b(can)g(call)h(a)f(dumm)o(y)g(routine)g(with)g(the)h(v)m
(ariable)g(or)e(bu\013er)h(as)g(an)g(actual)g(argumen)o(t;)289
812 y(if)22 b(the)h(dumm)o(y)f(routine)h(is)f(not)g(part)g(of)g(the)g
(application)i(then)f(the)f(compiler)i(m)o(ust)289 868
y(allo)q(cate)16 b(the)f(v)m(ariable)i(or)e(bu\013er)h(in)g(the)f
(memory)g(while)i(that)e(subroutine)h(is)g(executed;)289
925 y Fj(MPI)p 374 925 V 15 w(ADDRESS)h Fq(can)e(b)q(e)h(used)g(as)e
(dumm)o(y)h(routine.)189 1019 y(High)e(qualit)o(y)g(F)l(ortran)f
(implemen)o(tations)i(ma)o(y)e(pro)o(vide)i(mec)o(hanisms)f(to)f(a)o(v)
o(oid)h(the)g(problem,)189 1075 y(without)18 b(disabling)j
(optimizations.)31 b(Ho)o(w)o(ev)o(er,)18 b(co)q(de)h(that)f(do)q(es)h
(not)f(use)h(one)g(of)f(the)h(three)189 1131 y(solutions)d(describ)q
(ed)h(ab)q(o)o(v)o(e)d(ma)o(y)h(not)g(b)q(e)h(p)q(ortable.)189
1207 y(In)h(C,)f(subroutines)i(whic)o(h)g(mo)q(dify)f(v)m(ariables)h
(that)e(are)h(not)f(in)i(the)f(parameter)f(list)i(will)g(not)189
1263 y(cause)e(register)h(optimization)g(problems.)25
b(This)17 b(is)g(b)q(ecause)g(taking)g(p)q(oin)o(ters)g(to)f(storage)f
(ob-)189 1319 y(jects)d(b)o(y)g(using)h(the)g(&)f(op)q(erator)g(and)g
(later)h(referencing)g(the)g(ob)s(jects)f(b)o(y)g(w)o(a)o(y)f(of)h(the)
h(p)q(oin)o(ter)f(is)189 1376 y(an)j(in)o(tegral)g(part)g(of)f(the)i
(language.)k(A)15 b(C)g(compiler)h(understands)g(the)f(implications,)i
(so)e(that)189 1432 y(the)g(problem)h(should)h(not)e(o)q(ccur,)h(in)g
(general.)21 b(Ho)o(w)o(ev)o(er,)14 b(some)i(compilers)g(do)g(o\013er)e
(optional)189 1489 y(aggressiv)o(e)g(optimization)j(lev)o(els)f(whic)o
(h)g(ma)o(y)f(not)f(b)q(e)i(safe.)189 1564 y(\()p Fe(End)f(of)i(advic)n
(e)f(to)g(users.)p Fq(\))p 75 1670 827 2 v 75 1727 a(The)f(follo)o
(wing)h(advice)h(m)o(ust)d(b)q(e)i(added)g(in)75 1795
y(-)f(MPI)g(2,)g(c)o(hapter)g(?.?)21 b(Handlers,)75 1851
y(-)15 b Fj(MPI)p 190 1851 14 2 v 16 w(ADDRESS)h Fq(\(MPI)f(1.1,)f
(page)h(70,)f(line)j(16\),)d(and)h(in)75 1908 y(-)g Fj(MPI)p
190 1908 V 16 w(IRECV)h Fq(\(MPI)f(1.1,)e(\\Non)o(blo)q(c)o(king)k
(comm)o(unication",)e(end)h(of)e(page)h(40\))189 2014
y Fe(A)n(dvic)n(e)i(to)i(users.)53 b Fq(T)l(o)17 b(prev)o(en)o(t)g
(troubles)h(with)g(the)f(register)g(optimization)i(of)e(the)g(F)l
(ortran)189 2071 y(compilers)i(please)g(pa)o(y)e(atten)o(tion)h(to)f
(the)h(hin)o(ts)g(in)h(section)g(3.4)e(\\A)g(F)l(ortran)g(Problem)i
(with)189 2127 y(register)c(optimization")h(on)f(page)g(3.)k(\()p
Fe(End)d(of)g(advic)n(e)g(to)h(users.)p Fq(\))1875 2188
y Fi(?)f Fh(\(Oct\))75 2320 y Fn(3.5)59 b(T)-5 b(rue)20
b(Extent)d(of)k(Datat)n(yp)r(es)75 2469 y Fm(Curren)o(t)14
b(Status:)j Fl(P)o(assed)e(once.)166 2573 y Fq(Supp)q(ose)23
b(w)o(e)f(implemen)o(t)h(gather)f(as)g(a)f(spanning)i(tree)f(implemen)o
(ted)i(on)e(top)g(of)g(p)q(oin)o(t-to-)75 2629 y(p)q(oin)o(t)e
(routines.)34 b(Since)22 b(the)d(recv)h(bu\013er)g(is)g(only)h(v)m
(alid)g(on)f(the)g(ro)q(ot)f(pro)q(cess,)i(one)f(will)h(need)g(to)75
2685 y(allo)q(cate)f(some)f(temp)q(orary)g(space)h(for)f(receiving)i
(data)e(on)g(in)o(termediate)i(no)q(des.)33 b(The)20
b(di\016cultly)-32 46 y Fh(1)-32 103 y(2)-32 159 y(3)-32
215 y(4)-32 272 y(5)-32 328 y(6)-32 385 y(7)-32 441 y(8)-32
498 y(9)-40 554 y(10)-40 611 y(11)-40 667 y(12)-40 724
y(13)-40 780 y(14)-40 836 y(15)-40 893 y(16)-40 949 y(17)-40
1006 y(18)-40 1062 y(19)-40 1119 y(20)-40 1175 y(21)-40
1232 y(22)-40 1288 y(23)-40 1345 y(24)-40 1401 y(25)-40
1457 y(26)-40 1514 y(27)-40 1570 y(28)-40 1627 y(29)-40
1683 y(30)-40 1740 y(31)-40 1796 y(32)-40 1853 y(33)-40
1909 y(34)-40 1966 y(35)-40 2022 y(36)-40 2078 y(37)-40
2135 y(38)-40 2191 y(39)-40 2248 y(40)-40 2304 y(41)-40
2361 y(42)-40 2417 y(43)-40 2474 y(44)-40 2530 y(45)-40
2587 y(46)-40 2643 y(47)-40 2699 y(48)p eop
%%Page: 6 8
6 7 bop 75 -100 a Fq(6)970 b Fg(CHAPTER)15 b(3.)35 b(MISCELLANY)17
b(F)o(OR)e(1.2)75 45 y Fq(is)20 b(in)g(determining)h(the)f(size)g(one)f
(needs)i(to)d(allo)q(ciate.)34 b(This)20 b(o)q(ccurs)g(since)h(the)e
(user)h(can)f(mo)q(dify)75 102 y(the)g(exten)o(t)h(using)g(the)f
Fd(MPI)p 583 102 13 2 v 14 w(UB)g Fq(and)h Fd(MPI)p 841
102 V 14 w(LB)f Fq(v)m(alues.)34 b(The)20 b(writer)f(of)g(the)g(gather)
g(routine)h(could)75 158 y(determine)14 b(this)f(information)g(b)o(y)g
(deco)q(ding)h(the)f(datat)o(yp)q(e.)18 b(Ho)o(w)o(ev)o(er,)12
b(this)h(is)g(more)g(w)o(ork)e(and)i(more)75 214 y(painful)j(than)e
(desired.)20 b(Th)o(us,)14 b(a)g(new)g(function)h(is)g(pro)o(vided)g
(whic)o(h)f(returns)g(the)h(true)e(exten)o(t)h(of)g(the)75
271 y(datat)o(yp)q(e.)75 422 y Fj(MPI)p 160 422 14 2
v 16 w(TRUE)p 294 422 V 17 w(EXTENT\(datat)o(yp)q(e,)j(true)p
775 422 V 17 w(lb,)e(true)p 929 422 V 17 w(extent\))117
499 y Fl(IN)155 b Fj(datat)o(yp)q(e)424 b Fl(datat)o(yp)q(e)14
b(to)g(get)g(information)d(on)117 574 y(OUT)108 b Fj(true)p
396 574 V 17 w(lb)461 b Fl(true)15 b(lo)o(w)o(er)e(b)q(ound)h(of)g
(datat)o(yp)q(e)117 649 y(OUT)108 b Fj(true)p 396 649
V 17 w(extent)379 b Fl(true)15 b(size)g(of)e(datat)o(yp)q(e)75
774 y Fk(int)23 b(MPI)p 245 774 15 2 v 17 w(True)p 358
774 V 17 w(extent\(MPI)p 615 774 V 16 w(Datatype)f(datatype,)h(MPI)p
1156 774 V 17 w(Aint)g(*true)p 1412 774 V 17 w(lb,)g(MPI)p
1596 774 V 17 w(Aint)393 830 y(*true)p 516 830 V 17 w(extent\))75
917 y(MPI)p 150 917 V 17 w(TRUE)p 263 917 V 16 w(EXTENT\(DATATYPE,)f
(TRUE)p 781 917 V 17 w(LB,)h(TRUE)p 989 917 V 17 w(EXTENT,)g(IERROR\))
170 973 y(INTEGER)g(DATATYPE,)g(TRUE)p 699 973 V 17 w(LB,)g(TRUE)p
907 973 V 17 w(EXTENT,)g(IERROR)166 1060 y Fj(true)p
244 1060 14 2 v 17 w(lb)14 b Fq(returns)f(the)g(o\013set)g(of)g(the)g
(lo)o(w)o(est)g(unit)h(of)f(store)g(whic)o(h)h(is)g(addressed)g(b)o(y)f
(the)h(datat)o(yp)q(e.)75 1116 y Fj(true)p 153 1116 V
17 w(extent)k Fq(returns)f(the)g(true)f(size)i(of)e(the)h(datat)o(yp)q
(e.)24 b(The)17 b Fj(true)p 1244 1116 V 17 w(extent)i
Fq(is)e(the)g(minim)o(um)h(n)o(um)o(b)q(er)75 1173 y(of)13
b(b)o(ytes)g(of)h(memory)f(necessary)g(to)g(hold)i(a)e(datat)o(yp)q(e)g
(and)h(ignores)g(the)f Fj(LB)h Fq(and)g Fj(UB)g Fq(that)e(ma)o(y)h(ha)o
(v)o(e)75 1229 y(b)q(een)j(used)g(in)g(creating)g(the)f(datat)o(yp)q
(e.)166 1326 y Fm(Alternativ)o(es)o(:)166 1376 y Fl(If)e(w)o(e)i(w)o
(an)o(t)e(to)h(b)q(e)g(consisten)o(t)h(with)f(the)g(MPI1)g(exten)o(t)h
(functions,)f(w)o(e)g(w)o(ould)f(need)i(three)g(functions:)166
1426 y Fd(MPI)p 243 1426 13 2 v 14 w(TRUE)p 366 1426
V 15 w(LB\(datat)o(yp)q(e,)g(lb\))166 1475 y(MPI)p 243
1475 V 14 w(TRUE)p 366 1475 V 15 w(UB\(datat)o(yp)q(e,)f(ub\))166
1525 y(MPI)p 243 1525 V 14 w(TRUE)p 366 1525 V 15 w(EXTENT\(datat)o(yp)
q(e,)h(extent\))166 1575 y Fl(On)f(the)h(other)f(hand,)f(w)o(e)i(ma)o
(y)c(not)j(w)o(an)o(t)g(to)f(mak)o(e)g(the)h(same)f(mistak)o(e)g(t)o
(wice...)75 1766 y Fn(3.6)59 b(Datat)n(yp)r(e)18 b(extent)75
1914 y Fm(Curren)o(t)c(Status:)j Fl(P)o(assed)e(once.)166
2018 y Fq(MPI)21 b(allo)o(ws)h(one)f(to)g(c)o(hange)h(the)f(exten)o(t)g
(of)g(a)h(datat)o(yp)q(e,)g(using)g(lo)o(w)o(er)f(b)q(ound)h(and)g(upp)
q(er)75 2074 y(b)q(ound)e(mark)o(ers)e(\()p Fd(MPI)p
490 2074 V 14 w(LB)h Fq(and)g Fd(MPI)p 740 2074 V 14
w(UB)p Fq(\).)f(This)h(is)h(useful,)g(as)f(it)g(allo)o(ws)g(to)f(con)o
(trol)h(the)g(stride)g(of)75 2131 y(successiv)o(e)e(datat)o(yp)q(es)e
(that)g(are)g(replicated)i(b)o(y)e(datat)o(yp)q(e)g(constructors,)g(or)
g(are)g(replicated)i(b)o(y)f(the)75 2187 y Fj(count)k
Fq(argumen)o(t)e(in)i(a)e(send)h(or)g(reciev)o(e)g(call.)32
b(Ho)o(w)o(ev)o(er,)19 b(the)f(curren)o(t)h(mec)o(hanism)h(for)e(ac)o
(hieving)75 2244 y(it)h(is)h(painful;)i(also)d(it)h(is)f(restrictiv)o
(e,)i(as)d Fd(MPI)p 906 2244 V 15 w(LB)h Fq(and)g Fd(MPI)p
1157 2244 V 14 w(UB)g Fq(are)f(\\stic)o(ky":)28 b(once)19
b(presen)o(t)g(in)h(a)75 2300 y(datat)o(yp)q(e,)d(they)h(cannot)g(b)q
(e)g(o)o(v)o(eriden)g(\(e.g.,)f(the)h(upp)q(er)h(b)q(ound)f(can)g(b)q
(e)g(mo)o(v)o(ed)g(up,)g(b)o(y)g(adding)g(a)75 2357 y(new)13
b Fd(MPI)p 243 2357 V 14 w(UB)g Fq(mark)o(er,)f(but)h(cannot)g(b)q(e)g
(mo)o(v)o(ed)g(do)o(wn)f(b)q(elo)o(w)i(an)f(existing)h
Fj(MPI)p 1474 2357 14 2 v 15 w(UB)g Fq(mark)o(er\).)k(A)13
b(new)75 2413 y(function)j(is)g(pro)o(vided)g(to)e(facilitate)i(these)g
(c)o(hanges.)1967 46 y Fh(1)1967 103 y(2)1967 159 y(3)1967
215 y(4)1967 272 y(5)1967 328 y(6)1967 385 y(7)1967 441
y(8)1967 498 y(9)1959 554 y(10)1959 611 y(11)1959 667
y(12)1959 724 y(13)1959 780 y(14)1959 836 y(15)1959 893
y(16)1959 949 y(17)1959 1006 y(18)1959 1062 y(19)1959
1119 y(20)1959 1175 y(21)1959 1232 y(22)1959 1288 y(23)1959
1345 y(24)1959 1401 y(25)1959 1457 y(26)1959 1514 y(27)1959
1570 y(28)1959 1627 y(29)1959 1683 y(30)1959 1740 y(31)1959
1796 y(32)1959 1853 y(33)1959 1909 y(34)1959 1966 y(35)1959
2022 y(36)1959 2078 y(37)1959 2135 y(38)1959 2191 y(39)1959
2248 y(40)1959 2304 y(41)1959 2361 y(42)1959 2417 y(43)1959
2474 y(44)1959 2530 y(45)1959 2587 y(46)1959 2643 y(47)1959
2699 y(48)p eop
%%Page: 7 9
7 8 bop 75 -100 a Fg(3.7.)34 b(MPI-1.0)14 b(AND)i(MPI-1.1)e(CLARIFICA)l
(TIONS)802 b Fq(7)75 45 y Fj(MPI)p 160 45 14 2 v 16 w(SET)p
259 45 V 17 w(EXTENT\(datat)o(yp)q(e,)16 b(lb,)f(extent\))117
122 y Fl(INOUT)62 b Fj(datat)o(yp)q(e)424 b Fl(datat)o(yp)q(e)14
b(to)g(up)q(date)h(exten)o(t)117 197 y(IN)155 b Fj(true)p
396 197 V 17 w(lb)461 b Fl(new)15 b(lo)o(w)o(er)e(b)q(ound)h(of)f
(datat)o(yp)q(e)117 273 y(IN)155 b Fj(true)p 396 273
V 17 w(extent)379 b Fl(new)15 b(exten)o(t)f(of)g(datat)o(yp)q(e)75
397 y Fk(int)23 b(MPI)p 245 397 15 2 v 17 w(Set)p 334
397 V 17 w(extent\(MPI)p 591 397 V 16 w(Datatype)g(datatype,)f(MPI)p
1132 397 V 17 w(Aint)h(lb,)h(MPI)p 1436 397 V 17 w(Aint)f(extent\))75
483 y(MPI)p 150 483 V 17 w(TRUE)p 263 483 V 16 w(EXTENT\(DATATYPE,)f
(LB,)i(EXTENT,)e(IERROR\))170 540 y(INTEGER)h(DATATYPE,)g(LB,)g
(EXTENT,)g(IERROR)166 626 y Fq(Resets)13 b(the)g(lo)o(w)o(er)g(b)q
(ound)h(and)f(the)h(exten)o(t)e(\(and,)h(hence,)h(the)g(upp)q(er)g(b)q
(ound\))f(of)g Fj(datat)o(yp)q(e)p Fq(.)21 b(The)75 683
y(new)e(settings)f(will)i(a\013ect)e(the)h(outcome)f(of)g(send)h(or)f
(receiv)o(e)h(op)q(erations)g(that)e(use)i Fj(datat)o(yp)q(e)p
Fq(,)i(and)75 739 y(a\013ects)14 b(the)i(v)m(alue)g(of)f(datat)o(yp)q
(es)g(constructed)g(using)h Fj(datat)o(yp)q(e)h Fq(as)e(an)g(agumen)o
(t,)f(after)h(the)g(call)i(w)o(as)75 796 y(made.)i(Ho)o(w)o(ev)o(er,)11
b(datat)o(yp)q(es)h(that)f(w)o(ere)h(previously)i(constructed)e(using)h
Fj(datat)o(yp)q(e)h Fq(are)e(not)g(a\013ected.)189 902
y Fe(R)n(ationale.)189 977 y Fq(This)h(is)g(consisten)o(t)f(to)g(the)h
(MPI)f(statemen)o(t)g(that)g(\\the)g(system)g(b)q(eha)o(v)o(es)h(as)f
(if)h(input)g(datat)o(yp)q(e)189 1034 y(argumen)o(ts)h(to)h(deriv)o(ed)
h(datat)o(yp)q(e)e(constructors)h(are)g(passed)g(b)o(y)g(v)m(alue".)189
1109 y(\()p Fe(End)g(of)i(r)n(ationale.)p Fq(\))189 1215
y Fe(A)n(dvic)n(e)g(to)h(users.)51 b Fq(It)17 b(is)g(recommended)h
(that)f(uses)g(use)g(the)g(function)h Fj(MPI)p 1571 1215
14 2 v 16 w(SET)p 1670 1215 V 17 w(EXTENT)p Fq(,)189
1271 y(rather)c(than)h Fd(MPI)p 508 1271 13 2 v 15 w(LB)g
Fq(and)g Fd(MPI)p 751 1271 V 15 w(UB)f Fq(mark)o(ers.)189
1347 y(\()p Fe(End)h(of)i(advic)n(e)f(to)g(users.)p Fq(\))1875
1408 y Fi(?)g Fh(\(Oct\))75 1540 y Fn(3.7)59 b(MPI-1.0)19
b(and)h(MPI-1.1)f(Cla)n(ri\014cations)75 1643 y Ff(3.7.1)49
b(Cla)o(ri\014cation)18 b(of)e(MPI)p 627 1643 15 2 v
18 w(FINALIZE)1875 1672 y Fi(>)g Fh(\(Oct\))75 1776 y
Fm(Curren)o(t)e(Status:)j Fl(Not)d(v)o(oted)g(on.)166
1880 y Fq(This)j(routine)f(cleans)h(up)f(all)h(MPI)f(state.)22
b(Eac)o(h)16 b(pro)q(cess)g(m)o(ust)f(call)i Fj(MPI)p
1485 1880 14 2 v 16 w(FINALIZE)e Fq(b)q(efore)i(it)75
1936 y(exits.)j(Once)c(this)f(routine)g(returns,)f(no)h(MPI)g(routine)g
(\(ev)o(en)g(not)f Fj(MPI)p 1338 1936 V 16 w(INIT)p Fq(\))f(ma)o(y)h(b)
q(e)i(called.)21 b(Eac)o(h)75 1992 y(pro)q(cess)11 b(m)o(ust)e
(complete)j(an)o(y)e(p)q(ending)i(comm)o(unication)f(it)g(initiated)h
(b)q(efore)e(it)h(calls)g Fj(MPI)p 1656 1992 V 16 w(FINALIZE)p
Fq(.)75 2049 y(If)16 b(the)g(call)h(returns,)e(eac)o(h)h(pro)q(cess)g
(ma)o(y)f(con)o(tin)o(ue)i(lo)q(cal)f(computations,)g(or)f(exit,)h
(without)g(partici-)75 2105 y(pating)g(in)g(further)g
Fj(MPI)f Fq(comm)o(unication)h(with)g(other)f(pro)q(cesses.)22
b Fj(MPI)p 1362 2105 V 16 w(FINALIZE)14 b Fq(is)j(collectiv)o(e)g(on)75
2162 y Fj(MPI)p 160 2162 V 16 w(COMM)p 318 2162 V 16
w(W)o(ORLD)p Fq(.)1369 b Fi(>)16 b Fh(\(Oct\))166 2218
y Fq(It)f(is)h(not)f(required)h(that)e Fj(MPI)p 703 2218
V 16 w(Finalize)h Fq(return,)g(ev)o(en)g(on)h(one)f(pro)q(cess.)1875
2220 y Fi(?)h Fh(\(Oct\))189 2325 y Fe(A)n(dvic)n(e)11
b(to)i(implementors.)38 b Fq(Ev)o(en)11 b(though)g(a)g(pro)q(cess)h
(has)f(completed)i(all)f(the)f(comm)o(unication)189 2381
y(it)j(initiated,)h(suc)o(h)g(comm)o(unication)f(ma)o(y)f(not)h(y)o(et)
g(b)q(e)g(completed)h(from)e(the)h(viewp)q(oin)o(t)h(of)f(the)189
2437 y(underlying)j(MPI)f(system.)k(E.g.,)14 b(a)h(blo)q(c)o(king)i
(send)f(ma)o(y)f(ha)o(v)o(e)g(completed,)i(ev)o(en)e(though)h(the)189
2494 y(data)k(is)h(still)h(bu\013ered)f(at)f(the)h(sender.)37
b(The)20 b(MPI)h(implemen)o(tation)h(m)o(ust)e(ensure)h(that)f(a)189
2550 y(pro)q(cess)14 b(has)g(completed)h(an)o(y)f(in)o(v)o(olv)o(emen)o
(t)g(in)h(MPI)f(comm)o(unication)h(b)q(efore)f Fj(MPI)p
1669 2550 V 16 w(FINALIZE)189 2607 y Fq(returns.)26 b(Th)o(us,)17
b(if)h(a)e(pro)q(cess)i(exits)g(after)e(the)h(call)i(to)d
Fj(MPI)p 1271 2607 V 16 w(FINALIZE)p Fq(,)g(this)i(will)h(not)e(cause)
189 2663 y(an)e(ongoing)g(comm)o(unication)h(to)e(fail.)21
b(\()p Fe(End)16 b(of)g(advic)n(e)g(to)h(implementors.)p
Fq(\))-32 46 y Fh(1)-32 103 y(2)-32 159 y(3)-32 215 y(4)-32
272 y(5)-32 328 y(6)-32 385 y(7)-32 441 y(8)-32 498 y(9)-40
554 y(10)-40 611 y(11)-40 667 y(12)-40 724 y(13)-40 780
y(14)-40 836 y(15)-40 893 y(16)-40 949 y(17)-40 1006
y(18)-40 1062 y(19)-40 1119 y(20)-40 1175 y(21)-40 1232
y(22)-40 1288 y(23)-40 1345 y(24)-40 1401 y(25)-40 1457
y(26)-40 1514 y(27)-40 1570 y(28)-40 1627 y(29)-40 1683
y(30)-40 1740 y(31)-40 1796 y(32)-40 1853 y(33)-40 1909
y(34)-40 1966 y(35)-40 2022 y(36)-40 2078 y(37)-40 2135
y(38)-40 2191 y(39)-40 2248 y(40)-40 2304 y(41)-40 2361
y(42)-40 2417 y(43)-40 2474 y(44)-40 2530 y(45)-40 2587
y(46)-40 2643 y(47)-40 2699 y(48)p eop
%%Page: 8 10
8 9 bop 75 -100 a Fq(8)970 b Fg(CHAPTER)15 b(3.)35 b(MISCELLANY)17
b(F)o(OR)e(1.2)189 45 y Fe(A)n(dvic)n(e)i(to)i(implementors.)54
b Fq(Although)18 b(it)g(is)g(not)f(required,)i(it)f(has)f(b)q(een)i
(found)f(that)f(users)189 102 y(exp)q(ect)f(that)f(at)f(least)i(one)f
(pro)q(cess)h(return,)f(so)g(that)g(they)h(can)f(kno)o(w)g(that)g(the)g
(MPI)h(p)q(ortion)189 158 y(of)e(the)g(computation)g(is)h(o)o(v)o(er.)k
(In)c(addition,)g(in)g(a)f(POSIX)i(en)o(vironmen)o(t,)e(they)h(ma)o(y)e
(desire)j(to)189 214 y(supply)f(an)f(exit)g(co)q(de)h(for)e(eac)o(h)h
(pro)q(cess)g(that)f(returns)h(from)f Fj(MPI)p 1357 214
14 2 v 16 w(FINALIZE)p Fq(.)g(\()p Fe(End)h(of)h(advic)n(e)189
271 y(to)h(implementors.)p Fq(\))-117 332 y Fi(>)f Fh(\(Oct\))75
464 y Fn(3.8)59 b(Determining)19 b(Whether)g(MPI)h(Has)g(Finished)75
613 y Fm(Curren)o(t)14 b(Status:)j Fl(No)d(v)o(otes.)166
716 y Fq(One)i(of)f(the)h(goals)f(of)h Fj(MPI)f Fq(w)o(as)f(to)h(allo)o
(w)h(for)f(la)o(y)o(ered)h(libraries.)23 b(In)16 b(order)f(for)g(a)h
(library)g(to)f(do)75 773 y(this)k(cleanly)l(,)i(it)e(needs)g(to)f(kno)
o(w)g(if)h Fj(MPI)f Fq(is)i(activ)o(e.)30 b(In)19 b Fj(MPI-1)f
Fq(the)h(function)g Fj(MPI)p 1590 773 V 16 w(Initialized)g
Fq(w)o(as)75 829 y(pro)o(vided)c(to)g(tell)g(if)g Fj(MPI)f
Fq(had)h(b)q(een)h(initialzed.)23 b(The)15 b(problem)g(arises)g(in)g
(kno)o(wing)g(if)g Fj(MPI)f Fq(has)h(b)q(een)75 886 y(\014nalized.)31
b(Once)19 b Fj(MPI)f Fq(has)g(b)q(een)h(\014nalized)h(it)f(is)g(no)f
(longer)g(activ)o(e)h(and)f(cannot)g(b)q(e)h(restarted.)28
b(A)75 942 y(library)16 b(needs)g(to)e(b)q(e)i(able)g(to)e(determine)i
(this)f(to)g(act)f(accordingly)l(.)22 b(Do)14 b(ac)o(hiev)o(e)i(this)f
(the)g(follo)o(wing)75 999 y(function)h(is)g(needed:)75
1150 y Fj(MPI)p 160 1150 V 16 w(FINALIZED\(\015ag\))117
1227 y Fl(OUT)108 b Fj(\015ag)518 b Fl(true)15 b(if)e
Fd(MPI)g Fl(w)o(as)h(\014nalized)g(\(logical\).)75 1351
y Fk(int)23 b(MPI)p 245 1351 15 2 v 17 w(Finalized\(int)f(*flag\))75
1438 y(MPI)p 150 1438 V 17 w(FINALIZED\(flag,)g(IERROR\)\))170
1494 y(FLAG,)i(IERROR)75 1581 y(int)f(MPI::Finalized\(bool)f
(&flag\)\)?????)166 1667 y Fq(This)17 b(function)g(returns)f(true)g(if)
h Fj(MPI)p 833 1667 14 2 v 16 w(FINALIZE)e Fq(has)h(returned.)23
b(Th)o(us,)16 b(it)h(will)h(return)e(false)g(if)75 1724
y(called)k(in)f(a)f(callbac)o(k)h(routine)f(in)o(v)o(ok)o(ed)h(b)o(y)f
Fj(MPI)p 960 1724 V 16 w(FINALIZE)p Fq(.)f(It)h(is)g(legal)h(to)f(call)
h Fj(MPI)p 1636 1724 V 16 w(FINALIZED)75 1780 y Fq(b)q(efore)c
Fj(MPI)p 296 1780 V 16 w(INIT)g Fq(and)g(after)g Fj(MPI)p
694 1780 V 15 w(FINALIZE)p Fq(.)-1030 b Fi(?)15 b Fh(\(Oct\))-117
1839 y Fi(>)g Fh(\(Oct\))75 1902 y Ff(3.8.1)49 b(Cla)o(ri\014cation)18
b(of)e(status)f(after)h(MPI)p 875 1902 15 2 v 18 w(Isend)75
2035 y Fm(Curren)o(t)e(Status:)j Fl(No)d(v)o(otes.)166
2138 y Fq(A)22 b Fj(status)i Fq(returned)e(b)o(y)g(a)g(call)h(to)e
Fj(MPI)p 900 2138 14 2 v 16 w(W)l(AIT)p Fq(,)g Fj(MPI)p
1145 2138 V 16 w(TEST)p Fq(,)h(or)f(an)o(y)h(of)f(the)h(other)g(deriv)o
(ed)75 2195 y(functions,)j(where)f(the)f Fj(request)h
Fq(corresp)q(onds)g(to)e(a)h(send)g(call,)j(is)e(unde\014ned,)i(with)d
(t)o(w)o(o)f(excep-)75 2251 y(tions:)36 b(The)24 b(error)f(status)f
(\014eld)j(will)g(con)o(tain)e(v)m(alid)i(information)f(if)f(the)h(w)o
(ait)f(or)g(test)f(call)j(re-)75 2308 y(turned)20 b(with)g
Fd(MPI)p 411 2308 13 2 v 15 w(ERROR)p 563 2308 V 13 w(IN)p
617 2308 V 15 w(ST)m(A)m(TUS)p Fq(;)f(and)h(the)g(returned)g(status)f
(can)h(b)q(e)g(querried)h(b)o(y)f(the)g(call)75 2364
y Fj(MPI)p 160 2364 14 2 v 16 w(TEST)p 290 2364 V 16
w(CANCELLED)p Fq(.)-690 b Fi(?)15 b Fh(\(Oct\))75 2486
y Ff(3.8.2)49 b(Cla)o(ri\014cation)18 b(of)e(MPI)p 627
2486 15 2 v 18 w(INTERCOMM)p 936 2486 V 20 w(CREA)l(TE)75
2619 y Fm(Curren)o(t)e(Status:)j Fl(P)o(assed)e(once.)1967
46 y Fh(1)1967 103 y(2)1967 159 y(3)1967 215 y(4)1967
272 y(5)1967 328 y(6)1967 385 y(7)1967 441 y(8)1967 498
y(9)1959 554 y(10)1959 611 y(11)1959 667 y(12)1959 724
y(13)1959 780 y(14)1959 836 y(15)1959 893 y(16)1959 949
y(17)1959 1006 y(18)1959 1062 y(19)1959 1119 y(20)1959
1175 y(21)1959 1232 y(22)1959 1288 y(23)1959 1345 y(24)1959
1401 y(25)1959 1457 y(26)1959 1514 y(27)1959 1570 y(28)1959
1627 y(29)1959 1683 y(30)1959 1740 y(31)1959 1796 y(32)1959
1853 y(33)1959 1909 y(34)1959 1966 y(35)1959 2022 y(36)1959
2078 y(37)1959 2135 y(38)1959 2191 y(39)1959 2248 y(40)1959
2304 y(41)1959 2361 y(42)1959 2417 y(43)1959 2474 y(44)1959
2530 y(45)1959 2587 y(46)1959 2643 y(47)1959 2699 y(48)p
eop
%%Page: 9 11
9 10 bop 75 -100 a Fg(3.8.)34 b(DETERMINING)15 b(WHETHER)h
Fj(MPI)e Fg(HAS)i(FINISHED)630 b Fq(9)75 45 y Fj(The)11
b(Problem:)44 b Fq(The)12 b(MPI)e(1.1)g(standard)h(sa)o(ys,)f(in)i(the)
f(discussion)h(of)f Fj(MPI)p 1389 45 14 2 v 16 w(INTERCOMM)p
1679 45 V 16 w(CREA)l(TE)p Fq(,)75 102 y(b)q(oth)k(that)189
195 y(The)g(groups)g(m)o(ust)g(b)q(e)g(disjoin)o(t)75
289 y(and)g(that)189 383 y(The)g(leaders)h(ma)o(y)e(b)q(e)i(the)g(same)
e(pro)q(cess.)75 477 y(T)l(o)d(further)h(m)o(uddy)g(the)g(w)o(aters,)e
(the)i(reason)f(giv)o(en)i(for)e(\\The)g(groups)g(m)o(ust)h(b)q(e)g
(disjoin)o(t")g(is)g(based)g(on)75 533 y(concerns)18
b(ab)q(out)g(the)g(implmen)o(tation)g(of)g Fj(MPI)p 922
533 V 15 w(INTERCOMM)p 1211 533 V 17 w(CREA)l(TE)h Fq(that)e(are)g(not)
h(applicable)75 590 y(for)d(the)g(case)g(where)h(the)f(leaders)h(are)f
(the)g(same)g(pro)q(cess.)75 710 y Fj(The)h(Fix:)45 b
Fq(Delete)15 b(the)h(text:)189 804 y(\(the)f(t)o(w)o(o)e(leaders)j
(could)h(b)q(e)e(the)h(same)f(pro)q(cess\))75 897 y(from)f(the)i
(discussion)h(of)d Fj(MPI)p 610 897 V 16 w(INTERCOMM)p
900 897 V 17 w(CREA)l(TE)p Fq(.)166 954 y(Replace)j(the)e(text:)189
1048 y(All)f(in)o(ter-comm)o(unicator)g(constructors)e(are)h(blo)q(c)o
(king)h(and)g(require)g(that)e(the)i(lo)q(cal)g(and)189
1104 y(remote)g(groups)h(b)q(e)h(disjoin)o(t)g(in)g(order)f(to)f(a)o(v)
o(oid)h(deadlo)q(c)o(k.)75 1198 y(with)189 1292 y(All)f(in)o(ter-comm)o
(unicator)g(constructors)e(are)h(blo)q(c)o(king)h(and)g(require)g(that)
e(the)i(lo)q(cal)g(and)189 1348 y(remote)g(groups)h(b)q(e)h(disjoin)o
(t.)289 1454 y Fe(A)n(dvic)n(e)e(to)h(users.)40 b Fq(The)14
b(groups)g(m)o(ust)f(b)q(e)i(disjoin)o(t)g(for)e(sev)o(eral)h(reasons.)
19 b(Primar-)289 1511 y(ily)l(,)12 b(this)f(is)g(the)f(in)o(ten)o(t)h
(of)f(the)g(in)o(tercomm)o(unicators)h({)f(to)g(pro)o(vide)h(a)f(comm)o
(unicator)289 1567 y(for)17 b(comm)o(unication)i(b)q(et)o(w)o(een)g
(disjoin)o(t)f(groups.)29 b(This)19 b(is)f(re\015ected)h(in)g(the)g
(de\014-)289 1624 y(nition)e(of)f Fj(MPI)p 559 1624 V
15 w(INTERCOMM)p 848 1624 V 17 w(MERGE)p Fq(,)g(whic)o(h)h(allo)o(ws)g
(the)f(user)g(to)f(con)o(trol)h(the)289 1680 y(ranking)k(of)g(the)g
(pro)q(cesses)g(in)h(the)g(created)f(in)o(tracomm)o(unicator;)h(this)g
(ranking)289 1737 y(mak)o(es)c(little)i(sense)f(if)g(the)g(groups)g
(are)f(not)h(disjoin)o(t.)28 b(In)18 b(addition,)h(the)f(natural)289
1793 y(extension)c(of)g(collectiv)o(e)i(op)q(erations)e(to)f(in)o
(tercomm)o(unicators)h(\(b)q(eing)h(considered)289 1850
y(for)i(MPI-2\))h(mak)o(es)f(the)h(most)g(sense)g(when)h(the)f(groups)g
(are)f(disjoin)o(t.)30 b(It)18 b(is)g(the)289 1906 y(in)o(ten)o(t)i(of)
g(the)g(MPI)g(de\014nition)i(not)e(to)f(preclude)j(future)f
(extensions.)35 b(\()p Fe(End)20 b(of)289 1963 y(advic)n(e)c(to)g
(users.)p Fq(\))75 2084 y Ff(3.8.3)49 b(Cla)o(ri\014cation)18
b(of)e(Binding)i(of)f(MPI)p 854 2084 15 2 v 18 w(T)l(yp)q(e)p
971 2084 V 18 w(size)75 2217 y Fm(Curren)o(t)d(Status:)j
Fl(P)o(assed)e(once.)166 2321 y Fq(This)i(clari\014cation)h(is)f
(needed)h(in)f(the)g(MPI-1)f(description)i(of)e Fj(MPI)p
1369 2321 14 2 v 16 w(T)l(yp)q(e)p 1477 2321 V 17 w(size)p
Fq(,)h(since)g(the)g(issue)75 2378 y(rep)q(eatedly)f(arises.)k(It)c(is)
f(a)g(clari\014cation)i(of)e(the)g(binding.)189 2484
y Fe(A)n(dvic)n(e)20 b(to)j(users.)76 b Fq(The)21 b(binding)i(of)e
Fj(MPI)p 1004 2484 V 16 w(T)l(yp)q(e)p 1112 2484 V 17
w(size)p Fq(,)i(sp)q(eci\014cally)l(,)i(whether)d(the)f(output)189
2540 y(argumen)o(t)e(in)i(C)g(is)f(of)g(t)o(yp)q(e)h
Fk(int)f Fq(as)g(in)h(the)f(curren)o(t)h(standard)f(or)f(should)j(b)q
(e)f(c)o(hanged)g(to)189 2597 y(something)14 b(else,)i(has)e(b)q(een)i
(extensiv)o(ely)f(discussed)h(b)o(y)f(the)g(MPI)f(F)l(orum.)19
b(The)c(\014nal)g(decision)189 2653 y(is)g(to)g(lea)o(v)o(e)g(it)h(an)f
Fk(int)p Fq(.)k(\()p Fe(End)d(of)g(advic)n(e)g(to)h(users.)p
Fq(\))-32 46 y Fh(1)-32 103 y(2)-32 159 y(3)-32 215 y(4)-32
272 y(5)-32 328 y(6)-32 385 y(7)-32 441 y(8)-32 498 y(9)-40
554 y(10)-40 611 y(11)-40 667 y(12)-40 724 y(13)-40 780
y(14)-40 836 y(15)-40 893 y(16)-40 949 y(17)-40 1006
y(18)-40 1062 y(19)-40 1119 y(20)-40 1175 y(21)-40 1232
y(22)-40 1288 y(23)-40 1345 y(24)-40 1401 y(25)-40 1457
y(26)-40 1514 y(27)-40 1570 y(28)-40 1627 y(29)-40 1683
y(30)-40 1740 y(31)-40 1796 y(32)-40 1853 y(33)-40 1909
y(34)-40 1966 y(35)-40 2022 y(36)-40 2078 y(37)-40 2135
y(38)-40 2191 y(39)-40 2248 y(40)-40 2304 y(41)-40 2361
y(42)-40 2417 y(43)-40 2474 y(44)-40 2530 y(45)-40 2587
y(46)-40 2643 y(47)-40 2699 y(48)p eop
%%Page: 10 12
10 11 bop 75 -100 a Fq(10)952 b Fg(CHAPTER)16 b(3.)29
b(MISCELLANY)17 b(F)o(OR)e(1.2)75 45 y Ff(3.8.4)49 b(Cla)o
(ri\014cation)18 b(of)e(MPI)p 627 45 15 2 v 18 w(REDUCE)75
131 y Fq(The)f(curren)o(t)h(text)e(on)h(p.)20 b(115)15
b(lines)i(25-28)d(from)g(MPI-1.1)h(\(June)h(12,)e(1995\))f(sa)o(ys:)166
187 y(The)j Fj(datat)o(yp)q(e)i Fq(argumen)o(t)e(of)f
Fj(MPI)p 783 187 14 2 v 16 w(REDUCE)i Fq(m)o(ust)f(b)q(e)g(compatible)i
(with)e Fj(op)p Fq(.)23 b(Prede\014ned)18 b(op-)75 244
y(erators)h(w)o(ork)g(only)i(with)f(the)g Fj(MPI)g Fq(t)o(yp)q(es)g
(listed)h(in)g(Sec.)35 b(4.9.2)18 b(and)j(Sec.)35 b(4.9.3.)d
(User-de\014ned)75 300 y(op)q(erators)14 b(ma)o(y)h(op)q(erate)g(on)g
(general,)g(deriv)o(ed)h(datat)o(yp)q(es.)166 357 y(This)g(text)e(is)i
(c)o(hanged)g(to:)166 413 y(The)g Fj(datat)o(yp)q(e)i
Fq(argumen)o(t)e(of)f Fj(MPI)p 783 413 V 16 w(REDUCE)i
Fq(m)o(ust)f(b)q(e)g(compatible)i(with)e Fj(op)p Fq(.)23
b(Prede\014ned)18 b(op-)75 470 y(erators)c(w)o(ork)h(only)h(with)f(the)
h Fj(MPI)f Fq(t)o(yp)q(es)g(listed)i(in)f(Sec.)21 b(4.9.2)14
b(and)h(Sec.)21 b(4.9.3.)e(F)l(urthermore,)c(the)75 526
y Fj(datat)o(yp)q(e)20 b Fq(and)e Fj(op)h Fq(giv)o(en)f(for)g
(prede\014ned)i(op)q(erators)d(m)o(ust)h(b)q(e)h(the)f(same)g(on)g(all)
h(pro)q(cesses.)30 b(User-)75 583 y(de\014ned)15 b(op)q(erators)e(ma)o
(y)g(op)q(erate)g(on)h(general,)g(deriv)o(ed)h(datat)o(yp)q(es)e
(without)g(the)h(restrictions)g(ab)q(o)o(v)o(e)75 639
y(for)h(prede\014ned)h(op)q(erators.)-681 b Fi(>)15 b
Fh(\(Oct\))166 695 y Fq(Note)10 b(that)f(it)i(is)f(p)q(ossible)i(for)e
(users)g(to)f(supply)j(di\013eren)o(t)e(user-de\014ned)i(op)q(erations)
e(to)g Fj(MPI)p 1750 695 V 16 w(REDUCE)75 752 y Fq(in)23
b(eac)o(h)e(pro)q(cess.)40 b Fj(MPI)21 b Fq(do)q(es)h(not)f(de\014ne)i
(whic)o(h)g(op)q(erations)e(are)h(used)g(in)h(this)f(case)f(on)h(whic)o
(h)75 808 y(op)q(erands.)189 915 y Fe(A)n(dvic)n(e)e(to)h(users.)71
b Fq(Users)20 b(should)i(mak)o(e)d(no)i(assumptions)f(ab)q(out)g(ho)o
(w)g Fj(MPI)p 1638 915 V 16 w(RECUCE)h Fq(is)189 971
y(implemen)o(ted.)29 b(Safest)17 b(is)h(to)f(ensure)i(that)e(the)g
(same)h(function)g(is)g(passed)g(to)f Fj(MPI)p 1685 971
V 16 w(REDUCE)189 1028 y Fq(b)o(y)e(eac)o(h)g(pro)q(cess.)20
b(\()p Fe(End)c(of)g(advic)n(e)g(to)h(users.)p Fq(\))-117
1089 y Fi(?)e Fh(\(Oct\))75 1221 y Fn(3.9)59 b(New)20
b(Datat)n(yp)r(es)75 1324 y Ff(3.9.1)49 b(Simple)17 b(Struct)d(T)l(yp)q
(es)75 1457 y Fm(Curren)o(t)g(Status:)j Fl(Not)d(v)o(oted)g(on)f(y)o
(et.)75 1655 y Fj(MPI)p 160 1655 V 16 w(TYPE)p 293 1655
V 17 w(SIMPLE)p 469 1655 V 15 w(STRUCT\(count,)k(a)o(rra)o(y)p
908 1655 V 14 w(of)p 959 1655 V 16 w(blo)q(cklengths,)h(a)o(rra)o(y)p
1334 1655 V 14 w(of)p 1385 1655 V 16 w(t)o(yp)q(es,)e(newt)o(yp)q(e\))
117 1732 y Fl(IN)155 b Fj(count)482 b Fl(n)o(um)o(b)q(er)13
b(of)h(blo)q(c)o(ks)g(\(in)o(teger\))117 1807 y(IN)155
b Fj(a)o(rra)o(y)p 416 1807 V 15 w(of)p 468 1807 V 16
w(blo)q(cklengths)191 b Fl(n)o(um)o(b)q(er)13 b(of)h(elemen)o(ts)f(in)h
(eac)o(h)g(blo)q(c)o(k)g(\(arra)o(y)g(of)f(in)o(teger\))117
1882 y(IN)155 b Fj(a)o(rra)o(y)p 416 1882 V 15 w(of)p
468 1882 V 16 w(t)o(yp)q(es)327 b Fl(t)o(yp)q(e)15 b(of)e(elemen)o(ts)h
(in)f(eac)o(h)h(blo)q(c)o(k)g(\(arra)o(y)g(of)f(handle\))117
1958 y(OUT)108 b Fj(newt)o(yp)q(e)433 b Fl(new)15 b(datat)o(yp)q(e)f
(\(handle\))166 2082 y Fq(Eac)o(h)c(t)o(yp)q(e)h(in)g(the)g
Fj(a)o(rra)o(y)p 592 2082 V 14 w(of)p 643 2082 V 16 w(t)o(yp)q(es)h
Fq(list)g(m)o(ust)e(b)q(e)h(a)f Fe(p)n(ortable)h Fq(datat)o(yp)q(e:)17
b(I.e.,)10 b(a)h(basic)g(datat)o(yp)q(e,)f(or)75 2138
y(a)g(datat)o(yp)q(e)f(constructed)i(from)e(a)h(p)q(ortable)h(datat)o
(yp)q(e)e(using)i(one)f(of)g(the)g(constructors)g Fj(MPI)p
1681 2138 V 15 w(TYPE)p 1813 2138 V 17 w(CONTIGUOUS,)75
2195 y(MPI)p 160 2195 V 16 w(TYPE)p 293 2195 V 17 w(VECTOR,)16
b(MPI)p 600 2195 V 15 w(TYPE)p 732 2195 V 17 w(INDEXED,)f
Fq(or)g Fj(MPI)p 1110 2195 V 16 w(TYPE)p 1243 2195 V
16 w(SIMPLE)p 1418 2195 V 16 w(STRUCT)p Fq(.)166 2251
y(This)22 b(t)o(yp)q(e)g(constructor)f(is)i(similar)f(to)g
Fj(MPI)p 988 2251 V 15 w(TYPE)p 1120 2251 V 17 w(STRUCT)p
Fq(,)g(except)h(that)e(the)h(user)g(do)q(es)75 2308 y(not)e(supply)h
(an)f(arra)o(y)e(of)i(displacemen)o(ts.)35 b(Instead,)22
b(the)e(successiv)o(e)h(blo)q(c)o(ks)f(are)g(assumed)g(to)f(b)q(e)75
2364 y(con)o(tiguous.)g(P)o(adding)11 b(spaces)h(are)e(added,)j
(according)e(to)g(the)g(default)h(alignmen)o(t)g(rules)g(for)e
(structure)75 2421 y(comp)q(onen)o(ts.)21 b(This)c(facilitates)f(the)g
(construction)g(of)f(datat)o(yp)q(es)g(for)g(structures,)g(as)h(the)f
(user)h(need)75 2477 y(not)f(compute)g(displacemen)o(ts.)-743
b Fi(>)15 b Fh(\(Oct\))166 2534 y Fq(This)h(can)f(probably)h(b)q(e)g
(more)e(elegan)o(tly)i(expressed)g(in)g(terms)f(of)g(exten)o(ts.)-117
2536 y Fi(?)g Fh(\(Oct\))75 2640 y Fb(Example)j(3.1)k
Fq(The)14 b(follo)o(wing)g(co)q(de)f(declares)h(a)f(structure)g(t)o(yp)
q(e)g(and)h(creates)f(a)g(datat)o(yp)q(e)f(for)h(that)75
2696 y(structure)i(t)o(yp)q(e.)1967 46 y Fh(1)1967 103
y(2)1967 159 y(3)1967 215 y(4)1967 272 y(5)1967 328 y(6)1967
385 y(7)1967 441 y(8)1967 498 y(9)1959 554 y(10)1959
611 y(11)1959 667 y(12)1959 724 y(13)1959 780 y(14)1959
836 y(15)1959 893 y(16)1959 949 y(17)1959 1006 y(18)1959
1062 y(19)1959 1119 y(20)1959 1175 y(21)1959 1232 y(22)1959
1288 y(23)1959 1345 y(24)1959 1401 y(25)1959 1457 y(26)1959
1514 y(27)1959 1570 y(28)1959 1627 y(29)1959 1683 y(30)1959
1740 y(31)1959 1796 y(32)1959 1853 y(33)1959 1909 y(34)1959
1966 y(35)1959 2022 y(36)1959 2078 y(37)1959 2135 y(38)1959
2191 y(39)1959 2248 y(40)1959 2304 y(41)1959 2361 y(42)1959
2417 y(43)1959 2474 y(44)1959 2530 y(45)1959 2587 y(46)1959
2643 y(47)1959 2699 y(48)p eop
%%Page: 11 13
11 12 bop 75 -100 a Fg(3.9.)34 b(NEW)15 b(D)o(A)l(T)l(A)l(TYPES)1245
b Fq(11)75 45 y Fk(struct)23 b(record)g({)147 102 y(char)g(name;)147
158 y(double)g(position[3];)147 214 y(float)47 b(mass;)147
271 y(})75 384 y(MPI_Datatype)22 b(record_type;)75 440
y(MPI_datatype)g(types[3])h(=)h({MPI_CHAR,)e(MPI_DOUBLE,)h(MPI_FLOAT};)
75 497 y(int)238 b(lengths[3])23 b(=)g({1,)h(3,)f(1};)75
610 y(MPI_Type_simple_struct\()e(3,)i(lengths,)g(types,)g
(record_type\);)189 704 y Fe(R)n(ationale.)76 b Fq(The)21
b(co)q(de)h(ab)q(o)o(v)o(e)f(is)h(m)o(uc)o(h)f(simpler)h(and)g(more)e
(natural)i(than)f(the)g(curren)o(t)189 760 y(approac)o(h,)14
b(that)h(uses)g Fj(MPI)p 677 760 14 2 v 16 w(TYPE)p 810
760 V 17 w(STRUCT)p Fq(,)g(and)h(requires)g(to)e(compute)h(displacemen)
o(ts.)189 834 y(It)i(also)g(pro)o(vides)h(a)f(de\014nition)i(of)e(the)h
(record)f(t)o(yp)q(e)h(that)e(is)i(arc)o(hitecture)g(indep)q(enden)o(t)
i(\(as-)189 890 y(suming)c(that)e(compilers)j(don't)e(\014ddle)i(with)e
(the)h(order)f(of)g(\014elds,)h(whic)o(h)g(is)g(true)f(in)i(C\))d({)i
(this)189 947 y(facilitates)f(transfer)e(of)h(records)g(using)h(RMA,)f
(an)g(\014ts)g(w)o(ell)h(with)g(v)m(arious)f(prop)q(osals)h(for)e
(third)189 1003 y(part)o(y)h(transfers.)19 b(\()p Fe(End)d(of)g(r)n
(ationale.)p Fq(\))189 1097 y Fe(A)n(dvic)n(e)h(to)h(users.)50
b Fq(Datat)o(yp)q(es)16 b(constructed)h(using)h Fj(MPI)p
1231 1097 V 16 w(TYPE)p 1364 1097 V 16 w(SIMPLE)p 1539
1097 V 16 w(STRUCT)g Fq(should)189 1154 y(b)q(e)i(used)g(only)g(for)f
(structures)g(that)g(use)h(the)g(default)g(alignmen)o(t)g(rules.)34
b(They)20 b(should)g(not)189 1210 y(b)q(e)c(used)h(if)f(alignmen)o(t)g
(rules)h(ha)o(v)o(e)f(b)q(een)h(c)o(hanged,)f(using)g(compiler)h
(options)f(or)g(compilation)189 1267 y(pragmas.)j(\()p
Fe(End)c(of)i(advic)n(e)f(to)g(users.)p Fq(\))189 1361
y Fe(A)n(dvic)n(e)g(to)h(implementors.)47 b Fq(The)16
b(datat)o(yp)q(e)g(constructor)f Fj(MPI)p 1330 1361 V
16 w(TYPE)p 1463 1361 V 17 w(SIMPLE)p 1639 1361 V 15
w(STRUCT)i Fq(is)189 1417 y(most)e(easily)i(implemen)o(ted)h(on)e
(systems)g(that)f(use)h Fe(natur)n(al)g Fq(data)g(alignmen)o(t)h
(rules.)23 b(On)17 b(suc)o(h)189 1474 y(systems,)12 b(eac)o(h)h(basic)g
(datat)o(yp)q(e)f(has)g(an)h(exten)o(t)f(and)h(an)g(alignmen)o(t;)h
(the)e(alignmen)o(t)i(of)e(a)g(com-)189 1530 y(p)q(ound)j(t)o(yp)q(e)g
(is)h(the)f(strictest)f(alignmen)o(t)i(of)e(a)g(comp)q(onen)o(t.)20
b(P)o(adding)c(is)f(added)g(so)g(that)f(eac)o(h)189 1587
y(comp)q(onen)o(t)f(is)h(aligned)g(at)f(its)g(natural)g(alignmen)o(t.)
20 b(W)l(e)13 b(can)g(then)h(deriv)o(e)g(ob)o(vious)f(de\014nitions)189
1643 y(for)h(the)h(exten)o(t)g(and)h(alignmen)o(t)g(of)e(p)q(ortable)i
(MPI)f(datat)o(yp)q(es:)189 1700 y(The)g(exten)o(t)f(and)h(alignmen)o
(t)g(of)f(a)h(basic)g(datat)o(yp)q(e)f(is)i(the)e(exten)o(t)h(and)g
(alignmen)o(t)g(of)f(the)h(cor-)189 1756 y(resp)q(onding)h(language)f
(t)o(yp)q(e.)189 1812 y(The)10 b(alignmen)o(t)h(of)f(a)f(datat)o(yp)q
(e)h(built)i(with)e(one)g(of)g(the)g(constructors)g Fj(MPI)p
1487 1812 V 15 w(TYPE)p 1619 1812 V 17 w(CONTIGUOUS,)189
1869 y(MPI)p 274 1869 V 15 w(TYPE)p 406 1869 V 17 w(VECTOR,)26
b Fq(and)e Fj(PI)p 780 1869 V 16 w(TYPE)p 913 1869 V
17 w(INDEXED)h Fq(is)g(the)f(alignmen)o(t)h(of)f(the)h(comp)q(onen)o(t)
189 1925 y(datat)o(yp)q(e;)14 b(the)h(exten)o(t)g(of)g(the)g(comp)q
(ound)h(datat)o(yp)q(e)f(is)g(as)g(de\014ned)i(in)f(MPI1.)189
1982 y(The)h(alignmen)o(t)g(of)f(a)g(datat)o(yp)q(e)h(built)h(b)o(y)e
(a)h(call)g(to)f Fj(MPI)p 1221 1982 V 16 w(TYPE)p 1354
1982 V 17 w(SIMPLE)p 1530 1982 V 16 w(STRUCT\(n,)h(lens,)189
2038 y(t)o(yp)q(es,)i(newt)o(yp)q(e\))h Fq(is)e(max)643
2045 y Fa(i)672 2038 y Fk(alignment)p Fq(\()p Fk(types)p
Fq([)p Fk(i)p Fq(]\);)e(the)i(exten)o(t)g(is)g(computed)h(b)o(y)f(la)o
(ying)g(out)189 2095 y(the)h(comp)q(onen)o(ts)g(with)h(minimal)h
(padding)f(added)g(so)f(that)g(eac)o(h)h(comp)q(onen)o(t)f(starts)f(at)
h(its)189 2151 y(alignmen)o(t.)189 2225 y(Some)g(compilers)h(treat)f
(the)g(\014rst)g(comp)q(onen)o(t)g(of)g(a)g(structure)g(di\013eren)o
(tly)l(.)33 b(E.g.,)18 b(the)i(IBM)189 2281 y(compiler)d(aligns)h
(doubles)f(at)f(w)o(ord)g(b)q(oundaries,)i(but)f(align)g(a)f(structure)
g(that)g(starts)f(with)i(a)189 2338 y(double)j(comp)q(onen)o(t)f(at)f
(doublew)o(ord)i(b)q(oundaries.)32 b(The)19 b(de\014nition)i(of)d(the)h
(alignmen)o(t)h(of)e(a)189 2394 y(datat)o(yp)q(e)h(built)i(with)f
Fj(MPI)p 690 2394 V 16 w(TYPE)p 823 2394 V 16 w(SIMPLE)p
998 2394 V 16 w(STRUCT)h Fq(is)f(c)o(hanged,)h(accordingly)l(.)34
b(\()p Fe(End)20 b(of)189 2450 y(advic)n(e)c(to)g(implementors.)p
Fq(\))75 2571 y Ff(3.9.2)49 b(Contiguous)17 b(Struct)e(T)l(yp)q(es)75
2704 y Fm(Curren)o(t)f(Status:)j Fl(F)m(ailed)c(6-7-10)f(at)i(Septem)o
(b)q(er)g(meeting.)-32 46 y Fh(1)-32 103 y(2)-32 159
y(3)-32 215 y(4)-32 272 y(5)-32 328 y(6)-32 385 y(7)-32
441 y(8)-32 498 y(9)-40 554 y(10)-40 611 y(11)-40 667
y(12)-40 724 y(13)-40 780 y(14)-40 836 y(15)-40 893 y(16)-40
949 y(17)-40 1006 y(18)-40 1062 y(19)-40 1119 y(20)-40
1175 y(21)-40 1232 y(22)-40 1288 y(23)-40 1345 y(24)-40
1401 y(25)-40 1457 y(26)-40 1514 y(27)-40 1570 y(28)-40
1627 y(29)-40 1683 y(30)-40 1740 y(31)-40 1796 y(32)-40
1853 y(33)-40 1909 y(34)-40 1966 y(35)-40 2022 y(36)-40
2078 y(37)-40 2135 y(38)-40 2191 y(39)-40 2248 y(40)-40
2304 y(41)-40 2361 y(42)-40 2417 y(43)-40 2474 y(44)-40
2530 y(45)-40 2587 y(46)-40 2643 y(47)-40 2699 y(48)p
eop
%%Page: 12 14
12 13 bop 75 -100 a Fq(12)947 b Fg(CHAPTER)15 b(3.)35
b(MISCELLANY)17 b(F)o(OR)e(1.2)166 45 y Fq(Data)j(structures)i(ma)o(y)f
(con)o(tain)h(padding)g(holes,)i(added)e(for)f(alignmen)o(t.)34
b(The)20 b(de\014nition)h(of)75 102 y(an)f(MPI)g(datat)o(yp)q(e,)g
(done)g(using)g(the)g Fj(MPI)p 865 102 14 2 v 16 w(TYPE)p
998 102 V 17 w(STRUCT)g Fq(constructor,)g(do)q(es)g(not)g(distinguish)
75 158 y(b)q(et)o(w)o(een)15 b(holes)g(that)f(con)o(tains)g(no)h
(signi\014can)o(t)g(data,)f(and)h(are)f(there)h(only)g(for)f(alignmen)o
(t)h(purp)q(oses,)75 214 y(and)k(b)q(et)o(w)o(een)g(holes)g(that)f(ma)o
(y)f(con)o(tain)i(signi\014can)o(t)g(data)f(and)h(w)o(ere)f(purp)q
(osefully)j(left)e(out)f(b)o(y)g(a)75 271 y(user)k(that)e(wishes)i(not)
f(to)g(o)o(v)o(erwrite)g(some)g(of)g(the)g(information)h(in)g(a)f
(structure.)38 b(As)22 b(a)f(result,)75 327 y(MPI)g(cannot)g(o)o(v)o
(erwrite)f(these)h(holes,)i(this)f(prev)o(en)o(ts)e(the)i(ob)o(vious)f
(optimization)h(of)e(shipping)j(a)75 384 y(data)13 b(structure)h(as)g
(a)f(con)o(tiguous)h(blo)q(c)o(k)h(of)f(data,)f(padding)i(holes)f
(included.)22 b(The)15 b(t)o(yp)q(e)f(constructor)75
440 y Fj(MPI)p 160 440 V 16 w(TYPE)p 293 440 V 17 w(CONTIGUOUS)p
598 440 V 18 w(STRUCT)d Fq(marks)f(an)o(y)g(suc)o(h)h(holes)g(as)g
(\\don)o(t-care")e(lo)q(cations,)j(allo)o(wing)75 497
y(the)j(implemen)o(tation)i(to)d(o)o(v)o(erwrite)h(them.)75
648 y Fj(MPI)p 160 648 V 16 w(TYPE)p 293 648 V 17 w(CONTIGUOUS)p
598 648 V 18 w(STRUCT\(count,)j(a)o(rra)o(y)p 1041 648
V 14 w(of)p 1092 648 V 16 w(blo)q(cklengths,)h(a)o(rra)o(y)p
1468 648 V 14 w(of)p 1519 648 V 16 w(displacements,)g(a)o(r-)75
704 y(ra)o(y)p 136 704 V 15 w(of)p 188 704 V 16 w(t)o(yp)q(es,)e(newt)o
(yp)q(e\))117 781 y Fl(IN)155 b Fj(count)482 b Fl(n)o(um)o(b)q(er)13
b(of)h(blo)q(c)o(ks)g(\(in)o(teger\))117 856 y(IN)155
b Fj(a)o(rra)o(y)p 416 856 V 15 w(of)p 468 856 V 16 w(blo)q(cklengths)
191 b Fl(n)o(um)o(b)q(er)13 b(of)h(elemen)o(ts)f(in)h(eac)o(h)g(blo)q
(c)o(k)g(\(arra)o(y)g(of)f(in)o(teger\))117 932 y(IN)155
b Fj(a)o(rra)o(y)p 416 932 V 15 w(of)p 468 932 V 16 w(displacements)164
b Fl(b)o(yte)14 b(displacemen)o(t)g(of)f(eac)o(h)h(blo)q(c)o(k)g
(\(arra)o(y)g(of)f(in)o(teger\))117 1007 y(IN)155 b Fj(a)o(rra)o(y)p
416 1007 V 15 w(of)p 468 1007 V 16 w(t)o(yp)q(es)327
b Fl(t)o(yp)q(e)15 b(of)e(elemen)o(ts)h(in)f(eac)o(h)h(blo)q(c)o(k)g
(\(arra)o(y)g(of)f(handle\))117 1082 y(OUT)108 b Fj(newt)o(yp)q(e)433
b Fl(new)15 b(datat)o(yp)q(e)f(\(handle\))166 1206 y
Fq(The)c(seman)o(tics)h(of)e Fj(MPI)p 587 1206 V 16 w(TYPE)p
720 1206 V 17 w(CONTIGUOUS)p 1025 1206 V 18 w(STRUCT)i
Fq(are)f(iden)o(tical)i(to)d Fj(MPI)p 1611 1206 V 16
w(TYPE)p 1744 1206 V 17 w(STRUCT)p Fq(,)75 1263 y(except)15
b(that,)e(if)h(a)g(receiv)o(e)h(call)g(uses)g(a)e(datat)o(yp)q(e)h
(constructed)g(with)h(this)f(constructor,)f(then)i(the)f(in-)75
1319 y(ternal)f(holes)h(in)f(the)g(structure)g(can)g(b)q(e)g(o)o(v)o
(erwritten.)18 b(The)13 b(same)g(rule)h(\(namely)l(,)f(that)f(holes)i
(b)q(et)o(w)o(een)75 1376 y(comp)q(onen)o(ts)c(can)g(b)q(e)h(o)o(v)o
(erwritten\))e(applies)j(also)e(to)g(datat)o(yp)q(es)f(constructed)h
(using)h Fj(MPI)p 1635 1376 V 16 w(TYPE)p 1768 1376 V
17 w(SIMPLE)p 1944 1376 V 16 w(STRUCT)p Fq(.)166 1479
y Fm(Discussion:)29 b Fl(It)10 b(is)f(reasonable)g(to)g(assume)g(that)h
(holes)f(in)g(la)o(y)o(outs)f(de\014ned)j(using)e Fd(MPI)p
1576 1479 13 2 v 14 w(TYPE)p 1698 1479 V 14 w(SIMPLE)p
1857 1479 V 15 w(STRUCT)75 1536 y Fl(con)o(tain)14 b(no)h(signi\014can)
o(t)f(information,)e(since)k(this)f(datat)o(yp)q(e)g(constructor)h(is)f
(exp)q(ected)i(to)e(b)q(e)g(used)h(for)f(sp)q(ec-)75
1592 y(ifying)f(the)h(la)o(y)o(out)f(of)h(structures.)24
b(Users)16 b(will)e(b)q(e)i(required)g(to)f(use)h Fd(MPI)p
1271 1592 V 14 w(TYPE)p 1393 1592 V 14 w(STRUCT)f Fl(when)g(holes)h
(hold)75 1649 y(signi\014can)o(t)d(information.)189 1802
y Fe(A)n(dvic)n(e)e(to)i(users.)38 b Fq(Users)11 b(should)i(arrange)d
(the)i(\014elds)g(in)g(a)f(C)h(struct)e(t)o(yp)q(e)i(in)g(descending)h
(order)189 1859 y(of)i(their)i(size.)24 b(This)17 b(arrangemen)o(t)e
(has)h(t)o(w)o(o)f(adv)m(an)o(tages:)21 b(\014rstly)c(it)f(ma)o(y)g
(reduce)h(the)f(size)h(of)189 1915 y(the)i(struct)f(b)o(y)h
(eliminating)i(padding)f(b)q(et)o(w)o(een)f(elemen)o(ts)h(with)f
(di\013eren)o(t)g(alignmen)o(ts)h(\(this)189 1972 y(is)c(generally)i
(true)e(for)g(C)g(programs\).)22 b(Secondly)l(,)c(it)e(ma)o(y)g
(increase)h(the)g(n)o(um)o(b)q(er)f(of)g(cases)h(for)189
2028 y(whic)o(h)d(the)f(implemen)o(tation)h(can)g(p)q(erform)f(blo)q(c)
o(k)g(copies)i(b)o(y)e(ensuring)h(that)e(the)h(\014rst)g(elemen)o(t)189
2085 y(of)19 b(the)g(structure)g(has)h(the)f(most)g(stringen)o(t)g
(alignmen)o(t)h(requiremen)o(ts.)33 b(\()p Fe(End)19
b(of)i(advic)n(e)f(to)189 2141 y(users.)p Fq(\))189 2247
y Fe(A)n(dvic)n(e)15 b(to)i(implementors.)39 b Fq(An)16
b(implemen)o(tation)g(ma)o(y)f(ignore)g(the)h(constructor)189
2304 y Fj(MPI)p 274 2304 14 2 v 15 w(TYPE)p 406 2304
V 17 w(CONTIGUOUS)p 711 2304 V 18 w(STRUCT)p Fq(,)21
b(and)f(handle)i(it)e(exactly)h(as)f Fj(MPI)p 1539 2304
V 16 w(TYPE)p 1672 2304 V 17 w(STRUCT)p Fq(.)189 2360
y(Th)o(us,)f(there)g(is)h(\(almost\))d(no)i(o)o(v)o(erhead)g(in)g(supp)
q(orting)h(this)f(constructor,)g(without)g(taking)189
2417 y(adv)m(an)o(tage)f(of)h(it.)32 b(One)20 b(p)q(ossible)h(w)o(a)o
(y)d(of)h(taking)g(adv)m(an)o(tage)g(of)g(it,)h(is)g(to)e(adopt)h(a)g
(canoni-)189 2473 y(cal)d(\\wire")g(represen)o(tation)g(for)g
(structures.)22 b(Supp)q(ose)17 b(that)f(the)g(compiler)h(uses,)g(b)o
(y)f(default,)189 2530 y(natural)g(alignmen)o(t)i(rules)f(for)f
(structures:)23 b(eac)o(h)16 b(basic)i(comp)q(onen)o(t)e(is)i(aligned)g
(at)e(a)g(natural)189 2586 y(b)q(oundary)l(.)k(Supp)q(ose)14
b(that)f(one)h(adopts)f(natural)h(alignmen)o(t)g(rules)h(for)e
(messages)g(on)g(the)h(wire,)189 2642 y(in)19 b(a)f(homogeneous)g(en)o
(vironmen)o(t:)27 b(messages)18 b(are)g(padded)h(so)f(that)g(eac)o(h)g
(basic)h(elemen)o(t)g(is)189 2699 y(aligned)d(at)f(a)g(natural)g(b)q
(oundary)l(.)20 b(Then)1967 46 y Fh(1)1967 103 y(2)1967
159 y(3)1967 215 y(4)1967 272 y(5)1967 328 y(6)1967 385
y(7)1967 441 y(8)1967 498 y(9)1959 554 y(10)1959 611
y(11)1959 667 y(12)1959 724 y(13)1959 780 y(14)1959 836
y(15)1959 893 y(16)1959 949 y(17)1959 1006 y(18)1959
1062 y(19)1959 1119 y(20)1959 1175 y(21)1959 1232 y(22)1959
1288 y(23)1959 1345 y(24)1959 1401 y(25)1959 1457 y(26)1959
1514 y(27)1959 1570 y(28)1959 1627 y(29)1959 1683 y(30)1959
1740 y(31)1959 1796 y(32)1959 1853 y(33)1959 1909 y(34)1959
1966 y(35)1959 2022 y(36)1959 2078 y(37)1959 2135 y(38)1959
2191 y(39)1959 2248 y(40)1959 2304 y(41)1959 2361 y(42)1959
2417 y(43)1959 2474 y(44)1959 2530 y(45)1959 2587 y(46)1959
2643 y(47)1959 2699 y(48)p eop
%%Page: 13 15
13 14 bop 75 -100 a Fg(3.9.)34 b(NEW)15 b(D)o(A)l(T)l(A)l(TYPES)1245
b Fq(13)189 45 y(\(1\))14 b(A)i(receiv)o(er)g(can)f(alw)o(a)o(ys)g
(deco)q(de)h(an)g(incoming)h(message)d(and)i(retriev)o(e)g(correctly)f
(the)h(ba-)189 102 y(sic)k(comp)q(onen)o(ts.)31 b(This)20
b(b)q(ecause)g(the)g(basic)g(datat)o(yp)q(e)e(of)h(the)g(elemen)o(t)h
(indicates)h(at)e(what)189 158 y(b)q(oundary)c(it)h(is)f(aligned.)189
214 y(\(2\))f(A)h(sender)g(can)h(blo)q(c)o(k)f(cop)o(y)g(a)g(structure)
g(on)o(to)f(the)h(\\wire")g(\(most)f(lik)o(ely)l(,)j(on)o(to)d(a)g
(message)189 271 y(bu\013er\),)19 b(when)g(the)g(structure)g(is)g
(naturally)h(aligned,)h Fe(r)n(elative)e(to)h(the)g(start)g(of)f(the)h
(sending)189 327 y(bu\013er)p Fq(.)26 b(This)18 b(optimization)g(do)q
(es)g(not)e(require)j(that)d(the)h(sending)i(datat)o(yp)q(e)e(b)q(e)h
(built)g(using)189 384 y Fj(MPI)p 274 384 14 2 v 15 w(TYPE)p
406 384 V 17 w(CONTIGUOUS)p 711 384 V 18 w(STRUCT)p Fq(:)c(The)g(MPI)f
(library)i(can)e(scan)h(datat)o(yp)q(es,)f(when)h(they)189
440 y(are)h(committed,)f(and)i(recognize)g(when)g(a)e(datat)o(yp)q(e)h
(\(or)f(a)h(datat)o(yp)q(e)g(fragmen)o(t\))f(is)h(naturally)189
497 y(aligned.)24 b(Blo)q(c)o(k)17 b(cop)o(ying)g(can)g(b)q(e)g(used)g
(ev)o(en)f(if)h(the)g(holes)g(in)g(the)f(datat)o(yp)q(e)g(con)o(tain)g
(signi\014-)189 553 y(can)o(t)e(information.)189 610
y(\(3\))h(A)h(receiv)o(er)h(can)f(blo)q(c)o(k)h(cop)o(y)f(an)g
(incoming)i(message)d(on)o(to)h(the)g(receiv)o(e)h(bu\013er)f(when)h
(the)189 666 y(receiving)e(structure)f(is)h(naturally)g(aligned)h
Fe(r)n(elative)f(to)g(the)h(start)g(of)f(the)h(r)n(e)n(c)n(eiving)d
(bu\013er)i Fq(and)189 723 y(holes)10 b(can)h(b)q(e)g(ignored.)18
b(I.e.,)11 b(when)g(the)f(receiving)i(datat)o(yp)q(e)d(is)i(built)g
(using)g Fj(MPI)p 1597 723 V 16 w(TYPE)p 1730 723 V 17
w(CONTIGUOUS)p 2035 723 V 18 w(STRUCT)189 779 y Fq(or)i
Fj(MPI)p 328 779 V 16 w(TYPE)p 461 779 V 17 w(SIMPLE)p
637 779 V 16 w(STRUCT)h Fq(and)g(is)h(naturally)f(aligned,)i(relativ)o
(e)e(to)g(its)g(\014rst)f(p)q(osition.)189 853 y(The)k(same)h(wire)g
(represen)o(tation)f(ma)o(y)g(b)q(e)h(used)g(in)h(a)e(heterogenous)h
(en)o(vironmen)o(t,)g(in)g(cases)189 909 y(where)h(data)e(con)o(v)o
(ersion)i(is)g(done)g(at)f(the)h(destination;)i(the)e(destination)g
(has)g(to)f(kno)o(w,)g(not)189 966 y(only)c(the)h(basic)g(datat)o(yp)q
(es)e(used)i(b)o(y)f(the)h(source,)f(but)g(also)h(the)f(alignmen)o(t)h
(rules)g(used)g(b)o(y)f(the)189 1022 y(source.)189 1096
y(Example:)34 b(Consider)23 b(a)f(C)g(structure)g Fk(struct)h({char)g
(a[2];)g(float)g(b[2];)h(double)f(c})p Fq(;)189 1153
y(assume)16 b(that)g(\015oats)g(are)g(4)h(b)o(ytes)f(and)h(doubles)h
(are)e(8)g(b)o(ytes,)h(and)g(structures)f(are)g(naturally)189
1209 y(aligned.)36 b(The)20 b(memory)f(la)o(y)o(out)h(is)44
b Fk([c][c]xx[ffff][ffff]xxxx[dddd)o(dddd])p Fq(,)18
b(and)i(the)189 1266 y(structure)15 b(is)g(aligned)i(to)d(an)i(8)e(b)o
(yte)h(b)q(oundary)l(.)189 1340 y(Case)c(1:)18 b(The)12
b(en)o(tire)g(structure)f(is)h(comm)o(unicated.)20 b(Sender)12
b(constructs)f(a)h(datat)o(yp)q(e)f(for)g(struc-)189
1396 y(ture)f(using)h Fj(MPI)p 479 1396 V 15 w(TYPE)p
611 1396 V 17 w(STRUCT,)g(MPI)p 910 1396 V 15 w(TYPE)p
1042 1396 V 17 w(SIMPLE)p 1218 1396 V 16 w(STRUCT)g Fq(or)f
Fj(MPI)p 1554 1396 V 15 w(TYPE)p 1686 1396 V 17 w(CONTIGUOUS)p
1991 1396 V 18 w(STRUCT)p Fq(;)189 1452 y(receiv)o(er)16
b(constructs)g(a)g(datat)o(yp)q(e)g(for)f(this)i(structure,)e(using)i
Fj(MPI)p 1379 1452 V 16 w(CONTIGUOUS)p 1683 1452 V 18
w(STRUCT)189 1509 y Fq(or)12 b Fj(MPI)p 327 1509 V 16
w(TYPE)p 460 1509 V 16 w(SIMPLE)p 635 1509 V 16 w(STRUCT)p
Fq(.)h(Then)g(the)g(la)o(y)o(outs)f(in)h(the)g(sender)g(memory)l(,)g
(on)f(the)h(wire,)189 1565 y(and)i(in)h(the)f(receiv)o(er)h(memory)f
(are)g(iden)o(tical,)h(and)g(data)e(can)i(b)q(e)g(simply)g(copied.)189
1639 y(Case)10 b(2:)17 b(comm)o(unication)12 b(in)o(v)o(olv)o(es)f
(only)h(the)f(second)g(of)f(the)h(t)o(w)o(o)f(c)o(haracters,)g(and)h
(the)g(remain-)189 1696 y(der)f(of)g(the)g(structure.)18
b(Receiv)o(er)11 b(constructs)f(the)g(datat)o(yp)q(e)g(using)h
Fj(MPI)p 1441 1696 V 16 w(CONTIGUOUS)p 1745 1696 V 18
w(STRUCT)p Fq(.)189 1752 y(The)19 b(memory)f(la)o(y)o(out)g(is)h
Fk([c]xx[ffff][ffff]xxxx[dddddd)o(dd])p Fq(,)d(and)j(the)g(wire)g(la)o
(y)o(out)f(is)189 1809 y Fk([c]xxx[ffff][ffff]xxxx[)o(dddddddd)o(])p
Fq(.)e(The)c(datat)o(yp)q(e)f(is)h(not)g(naturally)g(aligned,)h(so)f
(that)189 1865 y(blo)q(c)o(k)k(cop)o(ying)g(cannot)f(b)q(e)h(used)g(at)
f(the)h(sender)g(or)f(the)g(receiv)o(er.)22 b(Ho)o(w)o(ev)o(er,)14
b(a)h(smart)f(imple-)189 1922 y(men)o(tation)h(ma)o(y)g(realize)i(that)
e(the)h(fragmen)o(t)f(starting)g(from)g(the)h(\015oat)f(is)i(naturally)
f(aligned,)189 1978 y(relativ)o(e)e(to)e(the)i(start)e(of)h(the)g
(bu\013er,)h(so)f(that)f(blo)q(c)o(k)j(cop)o(ying)e(can)h(b)q(e)g(used)
g(for)f(this)g(fragmen)o(t.)189 2052 y(Case)f(3:)19 b(comm)o(unication)
14 b(in)o(v)o(olv)o(es)g(only)f(the)g(t)o(w)o(o)f(\015oats)h(and)g(the)
g(double.)21 b(The)13 b(memory)g(la)o(y-)189 2108 y(out)c(is)i
Fk([ffff][ffff]xxxx[dddddddd])o Fq(.)16 b(The)10 b(la)o(y)o(out)g(on)g
(the)g(wire)g(is)h Fk([ffff][ffff][dddddddd])p Fq(.)189
2165 y(The)j(datat)o(yp)q(e)f(is)i(not)f(naturally)g(aligned,)i
(relativ)o(e)e(to)g(its)g(start,)e(so)i(that)f(blo)q(c)o(k)i(cop)o
(ying)g(can-)189 2221 y(not)f(b)q(e)i(used.)21 b(\()p
Fe(End)15 b(of)i(advic)n(e)f(to)g(implementors.)p Fq(\))166
2360 y Fm(Alternativ)o(es)o(:)134 2432 y Fl(1.)22 b(No)14
b(new)h(function)f Fd(MPI)p 581 2432 13 2 v 14 w(TYPE)p
703 2432 V 15 w(CONTIGUOUS)p 985 2432 V 12 w(STRUCT)p
Fl(:)g(instead,)g(holes)h(can)g(b)q(e)g(o)o(v)o(erwritten)g(only)189
2482 y(for)f(datat)o(yp)q(es)i(built)e(with)g Fd(MPI)p
717 2482 V 15 w(TYPE)p 840 2482 V 14 w(SIMPLE)p 999 2482
V 15 w(STRUCT)p Fl(.)f(The)j(argumen)o(t)e(is)g(that,)h(at)g(least)g
(in)f(the)189 2532 y(scenario)f(I)g(presen)o(ted,)i(hole)d(o)o(v)o
(erwriting)h(is)g(tak)o(en)g(adv)n(an)o(tage)f(of)g(only)g(for)h
(structures)i(with)e(a)f(natural)189 2581 y(alignmen)o(t.)j(But,)f
(then,)g(their)h(la)o(y)o(out)d(can)i(b)q(e)h(sp)q(eci\014ed)g(using)f
Fd(MPI)p 1308 2581 V 14 w(TYPE)p 1430 2581 V 15 w(SIMPLE)p
1590 2581 V 14 w(STRUCT)p Fl(.)134 2654 y(2.)22 b(Both)d(sender)h(and)f
(receiv)o(er)h(are)g(required)f(to)g(use)h Fd(MPI)p 1126
2654 V 14 w(TYPE)p 1248 2654 V 14 w(CONTIGUOUS)p 1529
2654 V 13 w(STRUCT)p Fl(,)e(and)g(the)189 2704 y(datat)o(yp)q(es)c(on)f
(b)q(oth)h(ends)g(ha)o(v)o(e)g(to)f(b)q(e)h(structurally)g(equiv)n
(alen)o(t,)f(i.e.,)f(de\014ned)j(b)o(y)e(the)h(same)f(sequence)-32
46 y Fh(1)-32 103 y(2)-32 159 y(3)-32 215 y(4)-32 272
y(5)-32 328 y(6)-32 385 y(7)-32 441 y(8)-32 498 y(9)-40
554 y(10)-40 611 y(11)-40 667 y(12)-40 724 y(13)-40 780
y(14)-40 836 y(15)-40 893 y(16)-40 949 y(17)-40 1006
y(18)-40 1062 y(19)-40 1119 y(20)-40 1175 y(21)-40 1232
y(22)-40 1288 y(23)-40 1345 y(24)-40 1401 y(25)-40 1457
y(26)-40 1514 y(27)-40 1570 y(28)-40 1627 y(29)-40 1683
y(30)-40 1740 y(31)-40 1796 y(32)-40 1853 y(33)-40 1909
y(34)-40 1966 y(35)-40 2022 y(36)-40 2078 y(37)-40 2135
y(38)-40 2191 y(39)-40 2248 y(40)-40 2304 y(41)-40 2361
y(42)-40 2417 y(43)-40 2474 y(44)-40 2530 y(45)-40 2587
y(46)-40 2643 y(47)-40 2699 y(48)p eop
%%Page: 14 16
14 15 bop 75 -100 a Fq(14)947 b Fg(CHAPTER)15 b(3.)35
b(MISCELLANY)17 b(F)o(OR)e(1.2)189 45 y Fl(of)e(de\014nitions.)18
b(There)d(are)f(sev)o(eral)h(p)q(ossible)f(v)n(arian)o(ts)f(for)g(suc)o
(h)i(prop)q(osal)189 107 y(\(a\))20 b(This)g(construct)i(can)e(b)q(e)h
(only)e(used)i(in)f(a)g(homogeneous)f(en)o(vironmen)o(t.)36
b(But,)22 b(then,)g(w)o(e)e(lose)189 157 y(p)q(ortabilit)o(y)11
b(to)h(heterogeneous)j(en)o(vironmen)o(t,)c(and)i(w)o(e)g(ac)o(hiev)o
(e)f(little)g(that)h(could)f(not)h(b)q(e)g(ac)o(hiev)o(ed)g(b)o(y)189
207 y(using)g Fd(MPI)p 374 207 13 2 v 15 w(BYTE)p Fl(.)189
269 y(\(b\))18 b(This)g(construct)i(can)e(b)q(e)g(used)h(p)q(ortably)m
(,)f(with)g(enhanced)h(p)q(erformance)f(obtained)g(in)f(a)h(homo-)189
319 y(geneous)i(en)o(vironmen)o(t.)36 b(E.g.,)20 b(a)g(homogeneous)f
(implem)o(en)o(tation)e(will)i(use)h(blo)q(c)o(k)g(cop)o(ying,)g(while)
189 369 y(a)d(heterogeneous)j(implemen)o(tatio)o(n)15
b(will)i(mo)o(v)o(e)f(elemen)o(t)h(b)o(y)h(elemen)o(t)f(\(at)h(least,)g
(for)g(heterogeneous)189 419 y(comm)o(unicators\).)j(This)16
b(assumes)g(that,)g(in)f(a)h(homogeneous)e(en)o(vironmen)o(t,)h
(di\013eren)o(t)i(pro)q(cesses)i(are)189 469 y(compiled)8
b(with)i(the)g(same)f(data)h(alignmen)o(t)d(options.)17
b(Also,)10 b(this)g(runs)g(coun)o(ter)h(the)g(datat)o(yp)q(e)f(matc)o
(hing)189 518 y(rules)k(in)g(MPI,)f(where)i(only)e(signature)i(matc)o
(hing)d(is)h(required.)189 581 y(\(c\))d Fd(MPI)p 326
581 V 14 w(TYPE)p 448 581 V 14 w(CONTIGUOUS)p 729 581
V 13 w(STRUCT)f Fl(can)g(b)q(e)i(matc)o(hed)d(with)h(other)i(datat)o
(yp)q(es,)f(as)g(long)e(as)i(signa-)189 630 y(tures)g(matc)o(h;)f
(impro)o(v)o(ed)f(p)q(erformance)h(is)g(ac)o(hiev)o(ed)h(when)f(b)q
(oth)h(ends)g(use)g Fd(MPI)p 1463 630 V 14 w(TYPE)p 1585
630 V 15 w(CONTIGUOUS)p 1867 630 V 12 w(STRUCT)p Fl(.)189
680 y(But,)i(then,)h(the)g(wire)g(proto)q(col)f(m)o(ust)f(b)q(e)i(so)f
(that)h(individual)d(elemen)o(ts)i(can)h(b)q(e)f(extracted,)i(in)e
(case)h(the)189 730 y(receiv)o(er)k(do)q(es)f(not)f(use)i
Fd(MPI)p 664 730 V 14 w(TYPE)p 786 730 V 14 w(CONTIGUOUS)p
1067 730 V 13 w(STRUCT)p Fl(.)d(In)i(this)f(case,)i(asking)e(the)h
(sender)h(to)189 780 y(use)g Fd(MPI)p 340 780 V 14 w(TYPE)p
462 780 V 15 w(CONTIGUOUS)p 744 780 V 12 w(STRUCT)f Fl(do)q(es)h(not)g
(pro)o(vide)f(additional)f(function)h(o)o(v)o(er)h(the)g(main)189
830 y(prop)q(osal.)g(The)d(di\013erence)h(is)f(only)e(whether)j(the)f
(use)g(asserts)i(that)d(the)h(sending)g(datat)o(yp)q(e)f(has)h(a)f
(nat-)189 879 y(ural)i(la)o(y)o(out)g(\(using)h Fd(MPI)p
608 879 V 14 w(TYPE)p 730 879 V 14 w(CONTIGUOUS)p 1011
879 V 13 w(STRUCT)p Fl(\),)f(or)h(whether)h(MPI)f(disco)o(v)o(ers)h
(that)f(fact)189 929 y(b)o(y)d(itself.)75 1123 y Ff(3.9.3)49
b(Convenient)17 b(F)o(o)o(rm)d(of)j(MPI)p 731 1123 15
2 v 18 w(T)l(yp)q(e)p 848 1123 V 18 w(indexed)p 1018
1123 V 18 w(blo)q(ck)75 1256 y Fm(Curren)o(t)d(Status:)j
Fl(P)o(assed)e(once.)166 1360 y Fq(This)d(prop)q(osal)g(is)g(to)f(allo)
o(w)h(constan)o(t)f(blo)q(c)o(ksize)i(and)f(arbitrary)f(displacemen)o
(ts)i(in)f(the)g(in)o(terface)75 1416 y(to)e Fj(MPI)p
211 1416 14 2 v 15 w(TYPE)p 343 1416 V 17 w(INDEXED)p
Fq(.)g(The)g(routine)h(no)o(w)f(tak)o(es)f Fj(a)o(rra)o(y)p
1114 1416 V 14 w(of)p 1165 1416 V 16 w(blo)q(cklengths)k
Fq(and)d Fj(a)o(rra)o(y)p 1605 1416 V 15 w(of)p 1657
1416 V 16 w(displacements)75 1473 y Fq(as)17 b(argumen)o(ts.)27
b(There)18 b(are)f(man)o(y)h(co)q(des)g(using)g(indirect)i(addressing)e
(arising)g(from)f(unstructured)75 1529 y(grids)f(where)h(the)f(blo)q(c)
o(ksize)i(is)e(alw)o(a)o(ys)f(1)h(\(gather/scatter\).)k(W)l(e)c(prop)q
(ose)g(this)h(in)o(terface,)f(allo)o(wing)75 1586 y(for)f(constan)o(t)f
(blo)q(c)o(ksize)j(and)e(arbitrary)g(displacemen)o(ts.)75
1737 y Fj(MPI)p 160 1737 V 16 w(TYPE)p 293 1737 V 17
w(INDEXED)p 505 1737 V 16 w(BLOCK\()g(count,)i(blo)q(cklength,)h(a)o
(rra)o(y)p 1180 1737 V 14 w(of)p 1231 1737 V 16 w(displacements,)g
(oldt)o(yp)q(e,)f(newt)o(yp)q(e\))117 1870 y Fl(IN)155
b Fj(count)482 b Fl(length)14 b(of)f(arra)o(y)h(of)f(displacemen)o(ts)
117 1945 y(IN)155 b Fj(blo)q(cklength)371 b Fl(size)15
b(of)e(blo)q(c)o(k)117 2021 y(IN)155 b Fj(a)o(rra)o(y)p
416 2021 V 15 w(of)p 468 2021 V 16 w(displacements)164
b Fl(arra)o(y)14 b(of)f(displacemen)o(ts)117 2096 y(IN)155
b Fj(oldt)o(yp)q(e)450 b Fl(old)13 b(datat)o(yp)q(e)117
2171 y(OUT)108 b Fj(newt)o(yp)q(e)433 b Fl(new)15 b(datat)o(yp)q(e)75
2295 y Fk(int)23 b(MPI)p 245 2295 15 2 v 17 w(Type)p
358 2295 V 17 w(Indexed)p 543 2295 V 16 w(Block\()g(int)h(count,)f(int)
g(blocklength,)393 2352 y(int*)g(array)p 635 2352 V 17
w(of)p 700 2352 V 17 w(displacements,)f(MPI)p 1147 2352
V 17 w(Datatype)g(oldtype,)393 2408 y(MPI)p 468 2408
V 17 w(Datatype*)h(newtype)f(\))75 2495 y(MPI)p 150 2495
V 17 w(TYPE)p 263 2495 V 16 w(INDEXED)p 447 2495 V 17
w(BLOCK\(COUNT,)g(BLOCKLENGTH,)g(ARRAY)p 1204 2495 V
17 w(OF)p 1269 2495 V 16 w(DISPLACEMENTS,)g(OLDTYPE,)393
2551 y(NEWTYPE,)h(IERROR\))170 2608 y(INTEGER)g(COUNT,)g(INTEGER)g
(BLOCKLENGTH,)g(ARRAY)p 1153 2608 V 16 w(OF)p 1217 2608
V 17 w(DISPLACEMENT\(*\),)f(OLDTYPE,)170 2664 y(NEWTYPE,)h(IERROR)-117
2700 y Fi(>)15 b Fh(\(Oct\))1967 46 y(1)1967 103 y(2)1967
159 y(3)1967 215 y(4)1967 272 y(5)1967 328 y(6)1967 385
y(7)1967 441 y(8)1967 498 y(9)1959 554 y(10)1959 611
y(11)1959 667 y(12)1959 724 y(13)1959 780 y(14)1959 836
y(15)1959 893 y(16)1959 949 y(17)1959 1006 y(18)1959
1062 y(19)1959 1119 y(20)1959 1175 y(21)1959 1232 y(22)1959
1288 y(23)1959 1345 y(24)1959 1401 y(25)1959 1457 y(26)1959
1514 y(27)1959 1570 y(28)1959 1627 y(29)1959 1683 y(30)1959
1740 y(31)1959 1796 y(32)1959 1853 y(33)1959 1909 y(34)1959
1966 y(35)1959 2022 y(36)1959 2078 y(37)1959 2135 y(38)1959
2191 y(39)1959 2248 y(40)1959 2304 y(41)1959 2361 y(42)1959
2417 y(43)1959 2474 y(44)1959 2530 y(45)1959 2587 y(46)1959
2643 y(47)1959 2699 y(48)p eop
%%Page: 15 17
15 16 bop 75 -100 a Fg(3.10.)34 b(MINOR)16 b(CORRECTIONS)1109
b Fq(15)75 45 y Fk(int)23 b(MPI::Datatype::Indexed)p
701 45 15 2 v 15 w(Block\()g(int)g(count,)g(int)h(blocklength,)393
102 y(const)f(int)h(array)p 755 102 V 16 w(of)p 819 102
V 17 w(displacements[],)393 158 y(const)f(MPI::Datatype&)f(oldtype)h
(\))1875 198 y Fi(?)16 b Fh(\(Oct\))75 331 y Fn(3.10)59
b(Mino)n(r)21 b(Co)n(rrections)75 480 y Fm(Curren)o(t)14
b(Status:)j Fl(P)o(assed)e(once.)166 584 y Fq(The)i(follo)o(wing)i
(corrections)e(to)g Fj(MPI-1.1)f Fq(are)h(\(all)h(page)f(and)g(line)i
(n)o(um)o(b)q(ers)f(are)f(for)g(the)g(June)75 640 y(12,)d(1995)g(v)o
(ersion)i(without)f(c)o(hangebars\):)143 746 y Fi(\017)23
b Fq(P)o(age)14 b(19,)g(lines)j(1-2)e(reads)189 803 y(for)f(\(64)g
(bit\))i(C)f(in)o(tegers)g(declared)i(to)d(b)q(e)i(of)f(t)o(yp)q(e)g
Fj(longlong)g(int)189 859 y Fq(but)g(should)h(read)189
916 y(for)e(\(64)g(bit\))i(C)f(in)o(tegers)g(declared)i(to)d(b)q(e)i
(of)f(t)o(yp)q(e)g Fj(long)g(long)g(int)189 1088 y Fm(Discussion)o(:)
189 1156 y Fl(Just)f(to)g(mak)o(e)f(it)g(correct)j(C)d(so)h(it)g(is)g
(long)f(long.)1875 1212 y Fi(>)j Fh(\(Oct\))143 1297
y Fi(\017)23 b Fq(P)o(age)14 b(41,)g(lines)j(16-18)d(reads)189
1354 y(A)19 b Fb(empt)o(y)g Fq(status)g(is)h(a)f(status)g(whic)o(h)i
(is)f(set)f(to)g(return)h Fj(tag)g(=)g(MPI)p 1460 1354
14 2 v 16 w(ANY)p 1568 1354 V 17 w(T)l(A)o(G)p Fq(,)f
Fj(source)i(=)189 1410 y(MPI)p 274 1410 V 15 w(ANY)p
381 1410 V 18 w(SOURCE)p Fq(,)11 b(and)g(is)h(also)e(in)o(ternally)j
(con\014gured)e(so)g(that)f(calls)h(to)g Fj(MPI)p 1601
1410 V 15 w(GET)p 1704 1410 V 17 w(COUNT)189 1467 y Fq(and)k
Fj(MPI)p 362 1467 V 16 w(GET)p 466 1467 V 17 w(ELEMENTS)g
Fq(return)g Fj(count)i(=)e(0)p Fq(.)189 1523 y(but)g(should)h(read)189
1580 y(A)j Fb(empt)o(y)g Fq(status)g(is)h(a)f(status)g(whic)o(h)i(is)f
(set)f(to)g(return)h Fj(tag)g(=)g(MPI)p 1460 1580 V 16
w(ANY)p 1568 1580 V 17 w(T)l(A)o(G)p Fq(,)f Fj(source)i(=)189
1636 y(MPI)p 274 1636 V 15 w(ANY)p 381 1636 V 18 w(SOURCE)p
Fq(,)c Fj(erro)o(r)e(=)i(MPI)p 842 1636 V 16 w(SUCCESS)p
Fq(,)h(and)f(is)g(also)g(in)o(ternally)h(con\014gured)f(so)g(that)189
1693 y(calls)f(to)e Fj(MPI)p 430 1693 V 16 w(GET)p 534
1693 V 17 w(COUNT)i Fq(and)f Fj(MPI)p 893 1693 V 16 w(GET)p
997 1693 V 17 w(ELEMENTS)g Fq(return)g Fj(count)i(=)e(0)p
Fq(.)189 1865 y Fm(Discussion)o(:)189 1933 y Fl(Filling)d(in)h(the)h
(error)h(\014eld)f(got)g(forgotten.)1875 1989 y Fi(?)i
Fh(\(Oct\))143 2074 y Fi(\017)23 b Fq(P)o(age)14 b(71,)g(line)j(10)e
(reads)189 2131 y(and)g(do)g(not)g(a\013ect)f(the)i(the)f(con)o(ten)o
(t)g(of)f(a)h(message)189 2187 y(but)g(should)h(read)189
2244 y(and)f(do)g(not)g(a\013ect)f(the)i(con)o(ten)o(t)e(of)h(a)g
(message)189 2416 y Fm(Discussion)o(:)189 2484 y Fl(This)e(is)h(a)g
(trivial)e(t)o(yp)q(o)i(of)f(ha)o(ving)g(the)h(2)g(times.)143
2626 y Fi(\017)23 b Fq(P)o(age)14 b(74,)g(lines)j(39-45)d(read)189
2682 y(A)i(datat)o(yp)q(e)f(ma)o(y)g(sp)q(ecify)i(o)o(v)o(erlapping)g
(en)o(tries.)22 b(The)16 b(use)g(of)g(suc)o(h)g(a)f(datat)o(yp)q(e)h
(in)g(a)g(receiv)o(e)-32 46 y Fh(1)-32 103 y(2)-32 159
y(3)-32 215 y(4)-32 272 y(5)-32 328 y(6)-32 385 y(7)-32
441 y(8)-32 498 y(9)-40 554 y(10)-40 611 y(11)-40 667
y(12)-40 724 y(13)-40 780 y(14)-40 836 y(15)-40 893 y(16)-40
949 y(17)-40 1006 y(18)-40 1062 y(19)-40 1119 y(20)-40
1175 y(21)-40 1232 y(22)-40 1288 y(23)-40 1345 y(24)-40
1401 y(25)-40 1457 y(26)-40 1514 y(27)-40 1570 y(28)-40
1627 y(29)-40 1683 y(30)-40 1740 y(31)-40 1796 y(32)-40
1853 y(33)-40 1909 y(34)-40 1966 y(35)-40 2022 y(36)-40
2078 y(37)-40 2135 y(38)-40 2191 y(39)-40 2248 y(40)-40
2304 y(41)-40 2361 y(42)-40 2417 y(43)-40 2474 y(44)-40
2530 y(45)-40 2587 y(46)-40 2643 y(47)-40 2699 y(48)p
eop
%%Page: 16 18
16 17 bop 75 -100 a Fq(16)947 b Fg(CHAPTER)15 b(3.)35
b(MISCELLANY)17 b(F)o(OR)e(1.2)189 45 y Fq(op)q(eration)f(is)h
(erroneous.)k(\(This)14 b(is)h(erroneous)f(ev)o(en)g(if)h(the)f(actual)
g(message)g(receiv)o(ed)h(is)g(short)189 102 y(enough)g(not)g(to)g
(write)g(an)o(y)g(en)o(try)g(more)f(than)h(once.\))189
174 y(A)i(datat)o(yp)q(e)g(ma)o(y)g(sp)q(ecify)i(o)o(v)o(erlapping)g
(en)o(tries.)27 b(If)18 b(suc)o(h)g(a)g(datat)o(yp)q(e)f(is)h(used)g
(in)h(a)e(receiv)o(e)189 231 y(op)q(eration,)d(that)h(is,)g(if)g(some)g
(part)f(of)h(the)f(receiv)o(e)i(bu\013er)f(is)h(written)f(more)f(than)h
(once)g(b)o(y)g(the)189 287 y(receiv)o(e)h(op)q(eration,)f(then)g(the)h
(call)g(is)g(erroneous.)189 359 y(The)i(\014rst)f(part)g(w)o(as)h(an)f
Fj(MPI-1.1)g Fq(addition.)29 b(The)18 b(second)g(part)f(o)o(v)o(erlaps)
h(with)g(it.)28 b(The)18 b(old)189 416 y(text)c(will)j(b)q(e)f(remo)o
(v)o(ed)f(so)g(it)g(no)o(w)g(reads)189 472 y(A)h(datat)o(yp)q(e)f(ma)o
(y)g(sp)q(ecify)i(o)o(v)o(erlapping)g(en)o(tries.)22
b(The)16 b(use)g(of)g(suc)o(h)g(a)f(datat)o(yp)q(e)h(in)g(a)g(receiv)o
(e)189 529 y(op)q(eration)e(is)h(erroneous.)k(\(This)14
b(is)h(erroneous)f(ev)o(en)g(if)h(the)f(actual)g(message)g(receiv)o(ed)
h(is)g(short)189 585 y(enough)g(not)g(to)g(write)g(an)o(y)g(en)o(try)g
(more)f(than)h(once.\))189 698 y Fm(Discussion)o(:)189
764 y Fl(The)f(in)o(ten)o(t)h(is)f(to)g(remo)o(v)o(e)f(duplicate)h
(text)h(whic)o(h)f(seems)h(to)f(ha)o(v)o(e)g(b)q(een)h(left.)k(No)14
b(c)o(hange)h(in)f(meaning)189 814 y(is)f(in)o(tended.)143
950 y Fi(\017)23 b Fq(P)o(age)14 b(90,)g(line)j(3)e(reads)189
1006 y(MPI)p 281 1006 14 2 v 16 w(P)o(ac)o(k)p 393 1006
V 16 w(size\(coun)o(t,)g(MPI)p 724 1006 V 16 w(CHAR,)h(&k2\);)189
1063 y(but)f(should)h(read)189 1119 y(MPI)p 281 1119
V 16 w(P)o(ac)o(k)p 393 1119 V 16 w(size\(coun)o(t,)f(MPI)p
724 1119 V 16 w(CHAR,)h(comm,)e(&k2\);)189 1289 y Fm(Discussion)o(:)189
1355 y Fl(This)f(is)h(a)g(minor)e(\014x)i(to)f(an)h(example)f(for)g(a)h
(missing)e(argumen)o(t.)143 1490 y Fi(\017)23 b Fq(P)o(age)14
b(90,)g(line)j(10)e(reads)189 1547 y(MPI)p 281 1547 V
16 w(P)o(ac)o(k\(c)o(hr,)f(coun)o(t,)g(MPI)p 726 1547
V 17 w(CHAR,)h(&lbuf,)h(k,)f(&p)q(osition,)h(comm\);)189
1603 y(but)f(should)h(read)189 1660 y(MPI)p 281 1660
V 16 w(P)o(ac)o(k\(c)o(hr,)e(coun)o(t,)g(MPI)p 726 1660
V 17 w(CHAR,)h(lbuf,)h(k,)f(&p)q(osition,)h(comm\);)189
1829 y Fm(Discussion)o(:)189 1895 y Fl(This)e(is)h(a)f(minor)f(\014x)i
(to)g(an)f(example)g(for)g(an)g(argumen)o(t)g(that)h(is)g(declared)g
(to)g(b)q(e)g(a)g(p)q(oin)o(ter)g(and)f(then)189 1945
y(passed)h(with)e(&.)143 2081 y Fi(\017)23 b Fq(P)o(age)14
b(109,)g(lines)j(26/27)d(and)h(page)g(110,)f(lines)j(28/29)d(reads)189
2137 y(The)h Fk(j)p Fq(th)g(blo)q(c)o(k)g(of)g(data)f(sen)o(t)h(from)f
(eac)o(h)h(pro)q(cess)g(is)h(receiv)o(ed)g(b)o(y)f(ev)o(ery)f(pro)q
(cess)i(and)f(placed)189 2194 y(in)h(the)f Fk(j)p Fq(th)g(blo)q(c)o(k)h
(of)f(the)g(bu\013er)g Fj(recvbuf)p Fq(.)189 2250 y(but)g(should)h
(read)189 2307 y(The)g(blo)q(c)o(k)i(of)e(data)g(sen)o(t)g(from)g(the)g
Fk(j)p Fq(th)h(pro)q(cess)g(is)g(receiv)o(ed)g(b)o(y)g(ev)o(ery)f(pro)q
(cess)h(and)g(placed)189 2363 y(in)f(the)f Fk(j)p Fq(th)g(blo)q(c)o(k)h
(of)f(the)g(bu\013er)g Fj(recvbuf)p Fq(.)189 2533 y Fm(Discussion)o(:)
189 2598 y Fl(This)e(is)g(related)h(to)f(a)f(subtle)i(p)q(oin)o(t)f(in)
g(usage.)18 b(The)13 b(sendbuf)h(is)f(a)g(single)g(item)f(whereas)i
(the)g(recvbuf)g(is)189 2648 y(an)f(\\arra)o(y")g(of)h(items.)1967
46 y Fh(1)1967 103 y(2)1967 159 y(3)1967 215 y(4)1967
272 y(5)1967 328 y(6)1967 385 y(7)1967 441 y(8)1967 498
y(9)1959 554 y(10)1959 611 y(11)1959 667 y(12)1959 724
y(13)1959 780 y(14)1959 836 y(15)1959 893 y(16)1959 949
y(17)1959 1006 y(18)1959 1062 y(19)1959 1119 y(20)1959
1175 y(21)1959 1232 y(22)1959 1288 y(23)1959 1345 y(24)1959
1401 y(25)1959 1457 y(26)1959 1514 y(27)1959 1570 y(28)1959
1627 y(29)1959 1683 y(30)1959 1740 y(31)1959 1796 y(32)1959
1853 y(33)1959 1909 y(34)1959 1966 y(35)1959 2022 y(36)1959
2078 y(37)1959 2135 y(38)1959 2191 y(39)1959 2248 y(40)1959
2304 y(41)1959 2361 y(42)1959 2417 y(43)1959 2474 y(44)1959
2530 y(45)1959 2587 y(46)1959 2643 y(47)1959 2699 y(48)p
eop
%%Page: 17 19
17 18 bop 75 -100 a Fg(3.10.)34 b(MINOR)16 b(CORRECTIONS)1109
b Fq(17)143 45 y Fi(\017)23 b Fq(P)o(age)14 b(117,)g(lines)j(22/23)d
(reads)189 102 y(MPI)h(pro)o(vides)g(sev)o(en)h(suc)o(h)f(prede\014ned)
i(datat)o(yp)q(es.)189 158 y(but)e(should)h(read)189
214 y(MPI)f(pro)o(vides)g(nine)i(suc)o(h)e(prede\014ned)i(datat)o(yp)q
(es.)189 442 y Fm(Discussion)o(:)189 509 y Fl(This)c(is)h(an)g(ob)o
(vious)f(mistak)o(e.)k(There)e(are)f(nine)g(listed)g(on)f(line)h
(28-40.)143 647 y Fi(\017)23 b Fq(P)o(age)14 b(122,)g(lines)j(35-36)d
(read)204 704 y Fj(MPI)p 289 704 14 2 v 16 w(OP)p 367
704 V 16 w(FREE\()i(op\))230 893 y Fl(IN)156 b Fj(op)541
b Fl(op)q(eration)14 b(\(handle\))189 1035 y Fq(but)h(should)h(read)204
1091 y Fj(MPI)p 289 1091 V 16 w(OP)p 367 1091 V 16 w(FREE\()g(op\))230
1280 y Fl(INOUT)63 b Fj(op)541 b Fl(op)q(eration)14 b(\(handle\))189
1463 y Fm(Discussion)o(:)189 1530 y Fl(This)j(app)q(ears)g(to)g(ha)o(v)
o(e)g(b)q(een)h(a)f(mistak)o(e.)26 b(This)17 b(function)g(frees)h(the)g
(function)e(p)q(oin)o(ter)i(and)f(sets)h(its)189 1580
y(v)n(alue)10 b(to)h(MPI)p 424 1580 13 2 v 15 w(OP)p
499 1580 V 15 w(NULL.)g(Th)o(us,)g(it)g(is)g(b)q(oth)g(input)g(and)f
(output)i(as)f(are)g(the)g(free)h(routines)g(for)e(Groups,)189
1629 y(Comms,)g(etc.)143 1768 y Fi(\017)23 b Fq(P)o(age)14
b(125,)g(line)j(1)e(reads)189 1824 y(CALL)h(MPI)p 420
1824 14 2 v 16 w(ALLREDUCE\(sum,)f(c,)g(n,)g(MPI)p 1040
1824 V 17 w(REAL,)g(MPI)p 1300 1824 V 17 w(SUM,)g(0,)f(comm,)g(ierr\))
189 1881 y(but)h(should)h(read)189 1937 y(CALL)g(MPI)p
420 1937 V 16 w(ALLREDUCE\(sum,)f(c,)g(n,)g(MPI)p 1040
1937 V 17 w(REAL,)g(MPI)p 1300 1937 V 17 w(SUM,)g(comm,)f(ierr\))189
2108 y Fm(Discussion)o(:)189 2175 y Fl(The)g(extra)h(argumen)o(t)e(app)
q(ears)j(to)e(b)q(e)h(left)f(o)o(v)o(er)g(from)f(the)i(previous)f
(example)f(with)h(MPI)p 1670 2175 13 2 v 16 w(REDUCE.)189
2225 y(This)f(is)h(a)g(mistak)o(e.)143 2363 y Fi(\017)23
b Fq(P)o(age)14 b(194,)g(line)j(48)e(reads)189 2420 y
Fj(MPI)p 274 2420 14 2 v 15 w(ERRHANDLER)p 582 2420 V
18 w(CREA)l(TE\(FUNCTION,)h(HANDLER,)g(IERROR\))189 2476
y Fq(but)f(should)h(read)189 2533 y Fj(MPI)p 274 2533
V 15 w(ERRHANDLER)p 582 2533 V 18 w(CREA)l(TE\(FUNCTION,)g(ERRHANDLER,)
h(IERROR\))189 2704 y Fm(Discussion)o(:)-32 46 y Fh(1)-32
103 y(2)-32 159 y(3)-32 215 y(4)-32 272 y(5)-32 328 y(6)-32
385 y(7)-32 441 y(8)-32 498 y(9)-40 554 y(10)-40 611
y(11)-40 667 y(12)-40 724 y(13)-40 780 y(14)-40 836 y(15)-40
893 y(16)-40 949 y(17)-40 1006 y(18)-40 1062 y(19)-40
1119 y(20)-40 1175 y(21)-40 1232 y(22)-40 1288 y(23)-40
1345 y(24)-40 1401 y(25)-40 1457 y(26)-40 1514 y(27)-40
1570 y(28)-40 1627 y(29)-40 1683 y(30)-40 1740 y(31)-40
1796 y(32)-40 1853 y(33)-40 1909 y(34)-40 1966 y(35)-40
2022 y(36)-40 2078 y(37)-40 2135 y(38)-40 2191 y(39)-40
2248 y(40)-40 2304 y(41)-40 2361 y(42)-40 2417 y(43)-40
2474 y(44)-40 2530 y(45)-40 2587 y(46)-40 2643 y(47)-40
2699 y(48)p eop
%%Page: 18 20
18 19 bop 75 -100 a Fq(18)947 b Fg(CHAPTER)15 b(3.)35
b(MISCELLANY)17 b(F)o(OR)e(1.2)189 45 y Fl(This)e(is)h(a)g(small)d(t)o
(yp)q(o)j(to)g(matc)o(h)f(all)f(the)j(other)f(names)f(for)h(this)g
(argumen)o(t.)143 186 y Fi(\017)23 b Fq(P)o(age)14 b(196,)g(lines)j
(1-2)e(reads)204 243 y Fj(MPI)p 289 243 14 2 v 16 w(ERRHANDLER)p
598 243 V 17 w(FREE\()h(errhandler)f(\))230 433 y Fl(IN)156
b Fj(errhandler)397 b Fl(MPI)14 b(error)h(handler)f(\(handle\))189
576 y Fq(but)h(should)h(read)204 633 y Fj(MPI)p 289 633
V 16 w(ERRHANDLER)p 598 633 V 17 w(FREE\()g(errhandler)f(\))230
823 y Fl(INOUT)63 b Fj(errhandler)397 b Fl(MPI)14 b(error)h(handler)f
(\(handle\))189 1007 y Fm(Discussion)o(:)189 1075 y Fl(This)c(app)q
(ears)h(to)f(ha)o(v)o(e)h(b)q(een)g(a)f(mistak)o(e.)16
b(This)10 b(function)g(frees)i(the)f(function)f(p)q(oin)o(ter)g(and)h
(sets)g(its)g(v)n(alue)189 1125 y(to)h(MPI)p 321 1125
13 2 v 15 w(ERRHANDLER)p 636 1125 V 14 w(NULL.)g(Th)o(us,)h(it)f(is)g
(b)q(oth)h(input)f(and)g(output)h(as)f(are)h(the)g(free)g(routines)g
(for)189 1175 y(Groups,)g(Comms,)e(etc.)143 1316 y Fi(\017)23
b Fq(P)o(age)14 b(203,)g(line)j(1)e(reads)189 1372 y
Fj(MPI)p 274 1372 14 2 v 15 w(PCONTROL\(level\))189 1429
y Fq(but)g(should)h(read)189 1485 y Fj(MPI)p 274 1485
V 15 w(PCONTROL\(LEVEL\))189 1657 y Fm(Discussion)o(:)189
1726 y Fl(This)d(is)h(a)g(minor)e(t)o(yp)q(o.)143 1867
y Fi(\017)23 b Fq(P)o(age)14 b(210,)g(line)j(44)e(reads)189
1923 y Fd(MPI)p 266 1923 13 2 v 14 w(PENDING)189 1980
y Fq(but)g(should)h(read)189 2036 y Fd(MPI)p 266 2036
V 14 w(ERR)p 359 2036 V 14 w(PENDING)189 2209 y Fm(Discussion)o(:)189
2277 y Fl(This)d(is)h(a)g(t)o(yp)q(o.)k(See)c(page)g(197,)f(line)g(20)h
(for)f(the)i(original)d(de\014nition.)143 2418 y Fi(\017)23
b Fq(P)o(age)14 b(211,)g(line)j(44)e(reads)189 2475 y
Fd(MPI)p 266 2475 V 14 w(DOUBLE)p 445 2475 V 14 w(COMPLEX)189
2531 y Fq(but)g(should)h(b)q(e)g(mo)o(v)o(ed)f(to)f(P)o(age)h(212,)f
(line)j(22)d(since)j(it)e(is)h(an)f(optional)h(F)l(ortran)e(datat)o(yp)
q(e.)189 2647 y Fm(Discussion)o(:)1967 46 y Fh(1)1967
103 y(2)1967 159 y(3)1967 215 y(4)1967 272 y(5)1967 328
y(6)1967 385 y(7)1967 441 y(8)1967 498 y(9)1959 554 y(10)1959
611 y(11)1959 667 y(12)1959 724 y(13)1959 780 y(14)1959
836 y(15)1959 893 y(16)1959 949 y(17)1959 1006 y(18)1959
1062 y(19)1959 1119 y(20)1959 1175 y(21)1959 1232 y(22)1959
1288 y(23)1959 1345 y(24)1959 1401 y(25)1959 1457 y(26)1959
1514 y(27)1959 1570 y(28)1959 1627 y(29)1959 1683 y(30)1959
1740 y(31)1959 1796 y(32)1959 1853 y(33)1959 1909 y(34)1959
1966 y(35)1959 2022 y(36)1959 2078 y(37)1959 2135 y(38)1959
2191 y(39)1959 2248 y(40)1959 2304 y(41)1959 2361 y(42)1959
2417 y(43)1959 2474 y(44)1959 2530 y(45)1959 2587 y(46)1959
2643 y(47)1959 2699 y(48)p eop
%%Page: 19 21
19 20 bop 75 -100 a Fg(3.10.)34 b(MINOR)16 b(CORRECTIONS)1109
b Fq(19)189 45 y Fl(On)20 b(page)h(19,)f(lines)h(2-3,)f(it)g(clearly)h
(states)g(this)f(is)h(an)f(optional)f(F)m(ortran)h(datat)o(yp)q(e.)37
b(It)21 b(is)f(listed)189 95 y(incorrectly)14 b(in)g(the)g(app)q
(endix.)1875 150 y Fi(>)i Fh(\(Oct\))143 236 y Fi(\017)23
b Fq(P)o(age)14 b(212,)g(add)h(new)h(lines)h(of)d(text)h(at)g(line)i
(22)d(and)i(line)g(25)f(to)g(read:)189 292 y(etc.)189
349 y(Th)o(us,)f(the)i(text)e(will)j(no)o(w)e(read:)189
518 y Fk(/*)23 b(optional)g(datatypes)g(\(Fortran\))f(*/)189
574 y(MPI_INTEGER1)189 631 y(MPI_INTEGER2)189 687 y(MPI_INTEGER4)189
744 y(MPI_REAL2)189 800 y(MPI_REAL4)189 857 y(MPI_REAL8)189
913 y(etc.)189 1026 y(/*)h(optional)g(datatypes)g(\(C\))g(*/)189
1082 y(MPI_LONG_LONG_INT)189 1139 y(etc.)189 1292 y Fm(Discussion)o(:)
189 1360 y Fl(On)15 b(page)g(19,)f(line)g(6,)h(concludes)h(the)f(list)f
(of)h(optional)e(datat)o(yp)q(es)j(with)e(etc.)22 b(It)15
b(w)o(as)g(not)g(in)o(tended)g(to)189 1410 y(b)q(e)f(a)g(complete)g
(list)g(of)f(all)g(p)q(ossible)i(ones.)20 b(Some)13 b(ha)o(v)o(e)h(in)o
(terpreted)i(the)e(app)q(endix)h(to)f(b)q(e)h(a)f(complete)189
1460 y(list)f(since)h(only)f(the)h(ones)h(explictly)e(on)g(page)h(19)f
(are)h(listed.)k(Adding)13 b(etc.,)h(to)g(the)g(F)m(ortran)f(and)h(C)f
(list)189 1510 y(in)g(the)i(app)q(endix)e(will)g(mak)o(e)f(it)i(clear)g
(these)h(are)g(only)e(some)g(of)g(the)i(p)q(ossible)f(optional)e(datat)
o(yp)q(es.)1875 1565 y Fi(?)k Fh(\(Oct\))143 1651 y Fi(\017)23
b Fq(P)o(age)14 b(213,)g(line)j(28.)i(The)d(follo)o(wing)g(text)e
(should)i(b)q(e)g(added:)189 1707 y(/*)9 b(Prede\014ned)j(functions)f
(in)g(C)e(and)i(F)l(ortran)e(*/)g(MPI)p 1137 1707 14
2 v 17 w(NULL)p 1278 1707 V 17 w(COPY)p 1428 1707 V 17
w(FN)g(MPI)p 1607 1707 V 17 w(NULL)p 1748 1707 V 17 w(DELETE)p
1954 1707 V 16 w(FN)189 1764 y(MPI)p 281 1764 V 16 w(DUP)p
397 1764 V 16 w(FN)189 1880 y Fm(Discussion)o(:)189 1948
y Fl(These)15 b(are)f(missing)e(and)i(de\014ned)h(on)e(pages)i(169,)d
(line)i(17)f(and)h(p.)k(170,)13 b(line)g(4.)143 2089
y Fi(\017)23 b Fq(P)o(age)14 b(220,)g(lines)j(19-20)d(reads)189
2146 y Fj(int)i(double)g(MPI)p 479 2146 V 16 w(Wtime\(void\))189
2202 y(int)g(double)g(MPI)p 479 2202 V 16 w(Wtick\(void\))189
2258 y Fq(but)f(should)h(read)189 2315 y Fj(double)g(MPI)p
413 2315 V 16 w(Wtime\(void\))189 2371 y(double)g(MPI)p
413 2371 V 16 w(Wtick\(void\))189 2544 y Fm(Discussion)o(:)189
2612 y Fl(This)d(w)o(as)h(a)g(mistak)o(e)e(caused)j(b)o(y)f(the)g
(macros.)-32 46 y Fh(1)-32 103 y(2)-32 159 y(3)-32 215
y(4)-32 272 y(5)-32 328 y(6)-32 385 y(7)-32 441 y(8)-32
498 y(9)-40 554 y(10)-40 611 y(11)-40 667 y(12)-40 724
y(13)-40 780 y(14)-40 836 y(15)-40 893 y(16)-40 949 y(17)-40
1006 y(18)-40 1062 y(19)-40 1119 y(20)-40 1175 y(21)-40
1232 y(22)-40 1288 y(23)-40 1345 y(24)-40 1401 y(25)-40
1457 y(26)-40 1514 y(27)-40 1570 y(28)-40 1627 y(29)-40
1683 y(30)-40 1740 y(31)-40 1796 y(32)-40 1853 y(33)-40
1909 y(34)-40 1966 y(35)-40 2022 y(36)-40 2078 y(37)-40
2135 y(38)-40 2191 y(39)-40 2248 y(40)-40 2304 y(41)-40
2361 y(42)-40 2417 y(43)-40 2474 y(44)-40 2530 y(45)-40
2587 y(46)-40 2643 y(47)-40 2699 y(48)p eop
%%Page: 20 22
20 21 bop 75 -100 a Fq(20)947 b Fg(CHAPTER)15 b(3.)35
b(MISCELLANY)17 b(F)o(OR)e(1.2)143 45 y Fi(\017)23 b
Fq(P)o(age)14 b(222,)g(line)j(34)e(reads)189 102 y Fj(INTEGER)f
(REQUEST,)g(COUNT,)g(D)o(A)l(T)l(A)l(TYPE,)g(DEST,)g(T)l(A)o(G,)f
(COMM,)g(REQUEST,)i(IERROR)189 158 y Fq(but)g(should)h(read)189
214 y Fj(INTEGER)f(COUNT,)h(D)o(A)l(T)l(A)l(TYPE,)g(DEST,)f(T)l(A)o(G,)
g(COMM,)g(REQUEST,)h(IERROR)189 387 y Fm(Discussion)o(:)189
455 y Fl(An)e(extra)g(argumen)o(t)f(got)g(added.)19 b(It)14
b(needs)h(to)f(b)q(e)g(remo)o(v)o(ed.)143 596 y Fi(\017)23
b Fq(P)o(age)14 b(222,)g(line)j(38)e(reads)189 653 y
Fj(INTEGER)f(REQUEST,)g(COUNT,)g(D)o(A)l(T)l(A)l(TYPE,)g(DEST,)g(T)l(A)
o(G,)f(COMM,)g(REQUEST,)i(IERROR)189 709 y Fq(but)g(should)h(read)189
766 y Fj(INTEGER)f(COUNT,)h(D)o(A)l(T)l(A)l(TYPE,)g(DEST,)f(T)l(A)o(G,)
g(COMM,)g(REQUEST,)h(IERROR)189 938 y Fm(Discussion)o(:)189
1006 y Fl(An)e(extra)g(argumen)o(t)f(got)g(added.)19
b(It)14 b(needs)h(to)f(b)q(e)g(remo)o(v)o(ed.)143 1147
y Fi(\017)23 b Fq(P)o(age)14 b(227,)g(lines)j(19-20)d(reads)189
1204 y Fj(MPI)p 274 1204 14 2 v 15 w(INTERCOMM)p 563
1204 V 17 w(MERGE\(INTERCOMM,)i(HIGH,)f(INTRA)o(COMM,)g(IERROR\))189
1260 y(INTEGER)g(INTERCOMM,)h(INTRA)o(COMM,)f(IERROR)189
1317 y Fq(but)g(should)h(read)189 1373 y Fj(MPI)p 274
1373 V 15 w(INTERCOMM)p 563 1373 V 17 w(MERGE\(INTERCOMM,)g(HIGH,)f
(NEWINTRA)o(COMM,)g(IERROR\))189 1430 y(INTEGER)g(INTERCOMM,)h
(NEWINTRA)o(COMM,)f(IERROR)189 1602 y Fm(Discussion)o(:)189
1670 y Fl(This)g(mak)o(es)e(it)i(matc)o(h)f(the)i(de\014nition)e(in)h
(the)g(text)h(on)f(P)o(age)g(159,)f(lines)h(34-36.)20
b(It)15 b(only)g(c)o(hanges)g(the)189 1720 y(name)d(of)i(the)g(argumen)
o(t.)143 1861 y Fi(\017)23 b Fq(P)o(age)14 b(228,)g(line)j(46)e(reads)
189 1918 y Fj(MPI)p 274 1918 V 15 w(ERRHANDLER)p 582
1918 V 18 w(CREA)l(TE\(FUNCTION,)h(HANDLER,)g(IERROR\))189
1974 y Fq(but)f(should)h(read)189 2031 y Fj(MPI)p 274
2031 V 15 w(ERRHANDLER)p 582 2031 V 18 w(CREA)l(TE\(FUNCTION,)g
(ERRHANDLER,)h(IERROR\))189 2203 y Fm(Discussion)o(:)189
2271 y Fl(This)c(c)o(hange)i(mak)o(es)d(the)j(app)q(endix)f(consistan)o
(t)g(with)g(c)o(hange)g(on)g(p.)k(194,)12 b(line)i(48.)143
2412 y Fi(\017)23 b Fq(P)o(age)14 b(229,)g(line)j(33)e(reads)189
2469 y Fj(MPI)p 274 2469 V 15 w(PCONTROL\(level\))189
2525 y Fq(but)g(should)h(read)189 2582 y Fj(MPI)p 274
2582 V 15 w(PCONTROL\(LEVEL\))1967 46 y Fh(1)1967 103
y(2)1967 159 y(3)1967 215 y(4)1967 272 y(5)1967 328 y(6)1967
385 y(7)1967 441 y(8)1967 498 y(9)1959 554 y(10)1959
611 y(11)1959 667 y(12)1959 724 y(13)1959 780 y(14)1959
836 y(15)1959 893 y(16)1959 949 y(17)1959 1006 y(18)1959
1062 y(19)1959 1119 y(20)1959 1175 y(21)1959 1232 y(22)1959
1288 y(23)1959 1345 y(24)1959 1401 y(25)1959 1457 y(26)1959
1514 y(27)1959 1570 y(28)1959 1627 y(29)1959 1683 y(30)1959
1740 y(31)1959 1796 y(32)1959 1853 y(33)1959 1909 y(34)1959
1966 y(35)1959 2022 y(36)1959 2078 y(37)1959 2135 y(38)1959
2191 y(39)1959 2248 y(40)1959 2304 y(41)1959 2361 y(42)1959
2417 y(43)1959 2474 y(44)1959 2530 y(45)1959 2587 y(46)1959
2643 y(47)1959 2699 y(48)p eop
%%Page: 21 23
21 22 bop 75 -100 a Fg(3.10.)34 b(MINOR)16 b(CORRECTIONS)1109
b Fq(21)189 45 y Fm(Discussion)o(:)189 114 y Fl(This)13
b(is)h(to)g(mak)o(e)e(the)j(language)e(binding)g(the)h(same)f(as)h(the)
h(c)o(hange)f(to)g(P)o(age)f(203,)g(line)g(1.)-32 46
y Fh(1)-32 103 y(2)-32 159 y(3)-32 215 y(4)-32 272 y(5)-32
328 y(6)-32 385 y(7)-32 441 y(8)-32 498 y(9)-40 554 y(10)-40
611 y(11)-40 667 y(12)-40 724 y(13)-40 780 y(14)-40 836
y(15)-40 893 y(16)-40 949 y(17)-40 1006 y(18)-40 1062
y(19)-40 1119 y(20)-40 1175 y(21)-40 1232 y(22)-40 1288
y(23)-40 1345 y(24)-40 1401 y(25)-40 1457 y(26)-40 1514
y(27)-40 1570 y(28)-40 1627 y(29)-40 1683 y(30)-40 1740
y(31)-40 1796 y(32)-40 1853 y(33)-40 1909 y(34)-40 1966
y(35)-40 2022 y(36)-40 2078 y(37)-40 2135 y(38)-40 2191
y(39)-40 2248 y(40)-40 2304 y(41)-40 2361 y(42)-40 2417
y(43)-40 2474 y(44)-40 2530 y(45)-40 2587 y(46)-40 2643
y(47)-40 2699 y(48)p eop
%%Trailer
end
userdict /end-hook known{end-hook}if
%%EOF

From mpi-comm-human@mcs.anl.gov Fri Sep 20 08:44:04 1996
Return-Path: <mpi-comm-human@mcs.anl.gov>
Received: from antares.mcs.anl.gov by netlib2.cs.utk.edu with ESMTP (cf v2.9t-netlib)
	id IAA27997; Fri, 20 Sep 1996 08:43:34 -0400
Received: (from listserv@localhost) by antares.mcs.anl.gov (8.6.10/8.6.10)
	id XAA28152 for mpi-comm-out; Thu, 19 Sep 1996 23:26:32 -0500
Received: from mcs.anl.gov (donner.mcs.anl.gov [140.221.5.134]) by antares.mcs.anl.gov (8.6.10/8.6.10)  with ESMTP
	id XAA28135; Thu, 19 Sep 1996 23:26:02 -0500
Message-Id: <199609200426.XAA28135@antares.mcs.anl.gov>
To: mpi-comm@antares.mcs.anl.gov, mpi-core@antares.mcs.anl.gov
Subject: Misc-1.2
Date: Thu, 19 Sep 1996 23:26:00 -0500
From: Rusty Lusk <lusk@mcs.anl.gov>
Sender: owner-mpi-core@mcs.anl.gov
Precedence: bulk

%!PS-Adobe-2.0
%%Creator: dvips 5.528 Copyright 1986, 1994 Radical Eye Software
%%Title: temp.dvi
%%CreationDate: Thu Sep 19 16:46:18 1996
%%Pages: 23
%%PageOrder: Ascend
%%BoundingBox: 0 0 612 792
%%EndComments
%DVIPSCommandLine: dvips -o temp.ps temp
%DVIPSParameters: dpi=300, comments removed
%DVIPSSource:  TeX output 1996.09.19:1646
%%BeginProcSet: tex.pro
/TeXDict 250 dict def TeXDict begin /N{def}def /B{bind def}N /S{exch}N
/X{S N}B /TR{translate}N /isls false N /vsize 11 72 mul N /hsize 8.5 72
mul N /landplus90{false}def /@rigin{isls{[0 landplus90{1 -1}{-1 1}
ifelse 0 0 0]concat}if 72 Resolution div 72 VResolution div neg scale
isls{landplus90{VResolution 72 div vsize mul 0 exch}{Resolution -72 div
hsize mul 0}ifelse TR}if Resolution VResolution vsize -72 div 1 add mul
TR matrix currentmatrix dup dup 4 get round 4 exch put dup dup 5 get
round 5 exch put setmatrix}N /@landscape{/isls true N}B /@manualfeed{
statusdict /manualfeed true put}B /@copies{/#copies X}B /FMat[1 0 0 -1 0
0]N /FBB[0 0 0 0]N /nn 0 N /IE 0 N /ctr 0 N /df-tail{/nn 8 dict N nn
begin /FontType 3 N /FontMatrix fntrx N /FontBBox FBB N string /base X
array /BitMaps X /BuildChar{CharBuilder}N /Encoding IE N end dup{/foo
setfont}2 array copy cvx N load 0 nn put /ctr 0 N[}B /df{/sf 1 N /fntrx
FMat N df-tail}B /dfs{div /sf X /fntrx[sf 0 0 sf neg 0 0]N df-tail}B /E{
pop nn dup definefont setfont}B /ch-width{ch-data dup length 5 sub get}
B /ch-height{ch-data dup length 4 sub get}B /ch-xoff{128 ch-data dup
length 3 sub get sub}B /ch-yoff{ch-data dup length 2 sub get 127 sub}B
/ch-dx{ch-data dup length 1 sub get}B /ch-image{ch-data dup type
/stringtype ne{ctr get /ctr ctr 1 add N}if}B /id 0 N /rw 0 N /rc 0 N /gp
0 N /cp 0 N /G 0 N /sf 0 N /CharBuilder{save 3 1 roll S dup /base get 2
index get S /BitMaps get S get /ch-data X pop /ctr 0 N ch-dx 0 ch-xoff
ch-yoff ch-height sub ch-xoff ch-width add ch-yoff setcachedevice
ch-width ch-height true[1 0 0 -1 -.1 ch-xoff sub ch-yoff .1 add]{
ch-image}imagemask restore}B /D{/cc X dup type /stringtype ne{]}if nn
/base get cc ctr put nn /BitMaps get S ctr S sf 1 ne{dup dup length 1
sub dup 2 index S get sf div put}if put /ctr ctr 1 add N}B /I{cc 1 add D
}B /bop{userdict /bop-hook known{bop-hook}if /SI save N @rigin 0 0
moveto /V matrix currentmatrix dup 1 get dup mul exch 0 get dup mul add
.99 lt{/QV}{/RV}ifelse load def pop pop}N /eop{SI restore showpage
userdict /eop-hook known{eop-hook}if}N /@start{userdict /start-hook
known{start-hook}if pop /VResolution X /Resolution X 1000 div /DVImag X
/IE 256 array N 0 1 255{IE S 1 string dup 0 3 index put cvn put}for
65781.76 div /vsize X 65781.76 div /hsize X}N /p{show}N /RMat[1 0 0 -1 0
0]N /BDot 260 string N /rulex 0 N /ruley 0 N /v{/ruley X /rulex X V}B /V
{}B /RV statusdict begin /product where{pop product dup length 7 ge{0 7
getinterval dup(Display)eq exch 0 4 getinterval(NeXT)eq or}{pop false}
ifelse}{false}ifelse end{{gsave TR -.1 -.1 TR 1 1 scale rulex ruley
false RMat{BDot}imagemask grestore}}{{gsave TR -.1 -.1 TR rulex ruley
scale 1 1 false RMat{BDot}imagemask grestore}}ifelse B /QV{gsave
transform round exch round exch itransform moveto rulex 0 rlineto 0
ruley neg rlineto rulex neg 0 rlineto fill grestore}B /a{moveto}B /delta
0 N /tail{dup /delta X 0 rmoveto}B /M{S p delta add tail}B /b{S p tail}
B /c{-4 M}B /d{-3 M}B /e{-2 M}B /f{-1 M}B /g{0 M}B /h{1 M}B /i{2 M}B /j{
3 M}B /k{4 M}B /w{0 rmoveto}B /l{p -4 w}B /m{p -3 w}B /n{p -2 w}B /o{p
-1 w}B /q{p 1 w}B /r{p 2 w}B /s{p 3 w}B /t{p 4 w}B /x{0 S rmoveto}B /y{
3 2 roll p a}B /bos{/SS save N}B /eos{SS restore}B end
%%EndProcSet
TeXDict begin 40258431 52099146 1000 300 300
(/tmp_mnt/Net/antireo/antireo6/lusk/mpi2/report2/temp.dvi)
@start /Fa 1 106 df<030007800780030000000000000000007F807F80038003800380
038003800380038003800380038003800380FFFCFFFC0E187D9714>105
D E /Fb 12 122 df<387CFEFEFE7C3807077C860F>46 D<00E00001E0000FE000FFE000
F3E00003E00003E00003E00003E00003E00003E00003E00003E00003E00003E00003E000
03E00003E00003E00003E00003E00003E00003E00003E00003E00003E00003E000FFFF80
FFFF80111D7C9C1A>49 D<01FC0007FF000E0F801E0FC03F07E03F07E03F07E03F07E01E
0FC0000FC0000F80001F0001FC0001FC00000F800007C00003E00003F00003F83803F87C
03F8FE03F8FE03F8FE03F0FC03F07807E03C0FC01FFF8003FC00151D7E9C1A>51
D<FFFFFFE0FFFFFFE007E007E007E001E007E000E007E0006007E0007007E0003007E000
3007E0603007E0603007E0600007E0E00007E1E00007FFE00007FFE00007E1E00007E0E0
0007E0600007E0600C07E0600C07E0000C07E0001807E0001807E0001807E0003807E000
7807E000F807E003F0FFFFFFF0FFFFFFF01E1F7E9E22>69 D<07FC001FFF003F0F803F07
C03F03E03F03E00C03E00003E0007FE007FBE01F03E03C03E07C03E0F803E0F803E0F803
E0FC05E07E0DE03FF8FE0FE07E17147F9319>97 D<01FE0007FF800F83C01E01E03E00F0
7C00F07C00F8FC00F8FFFFF8FFFFF8FC0000FC0000FC00007C00007C00003E00181E0018
0F807007FFE000FF8015147F9318>101 D<FF00FF001F001F001F001F001F001F001F00
1F001F001F001F001F001F001F001F001F001F001F001F001F001F001F001F001F001F00
1F001F001F00FFE0FFE00B207E9F0E>108 D<FE0FE03F80FE1FF07FC01E70F9C3E01E40
7D01F01E807E01F01F807E01F01F007C01F01F007C01F01F007C01F01F007C01F01F007C
01F01F007C01F01F007C01F01F007C01F01F007C01F01F007C01F01F007C01F01F007C01
F0FFE3FF8FFEFFE3FF8FFE27147D932C>I<FF1FC0FF7FF01FE1F81F80FC1F007E1F007E
1F003E1F003F1F003F1F003F1F003F1F003F1F003F1F003E1F007E1F007C1F80FC1FC1F8
1F7FE01F1F801F00001F00001F00001F00001F00001F00001F0000FFE000FFE000181D7E
931D>112 D<01800180018003800380038007800F803F80FFFCFFFC0F800F800F800F80
0F800F800F800F800F800F800F860F860F860F860F8607CC03F801F00F1D7F9C14>116
D<FFE1FF00FFE1FF000F80700007C0E00007E0C00003E1800001F3800000FF0000007E00
00003E0000003F0000007F8000006F800000C7C0000183E0000381F0000701F8000E00FC
00FF81FF80FF81FF8019147F931C>120 D<FFE07F80FFE07F801F001C000F8018000F80
180007C0300007C0300003E0600003E0600001F0C00001F0C00001F9C00000F9800000FF
8000007F0000007F0000003E0000003E0000001C0000001C000000180000001800007830
0000FC300000FC600000C0E00000E1C000007F8000001E000000191D7F931C>I
E /Fc 4 103 df<70F8FCFC74040404080810102040060E7C840D>59
D<00F1800389C00707800E03801C03803C0380380700780700780700780700F00E00F00E
00F00E00F00E10F01C20F01C20703C20705C40308C400F078014147E9318>97
D<07803F8007000700070007000E000E000E000E001C001C001CF01D0C3A0E3C0E380F38
0F700F700F700F700FE01EE01EE01EE01CE03CE038607060E031C01F0010207E9F14>I<
00007C0000CE00019E00039E00030C000700000700000700000700000E00000E00000E00
00FFF0000E00000E00001C00001C00001C00001C00001C00003800003800003800003800
00380000700000700000700000700000700000E00000E00000E00000E00000C00001C000
318000798000F300006200003C000017297E9F16>102 D E /Fd
33 122 df<00E001C0038007000E000E001C001C003800380038007000700070007000E0
00E000E000E000E000E000E000E000E000E000E000E00070007000700070003800380038
001C001C000E000E000700038001C000E00B2A7E9E10>40 D<E000700038001C000E000E
000700070003800380038001C001C001C001C000E000E000E000E000E000E000E000E000
E000E000E000E001C001C001C001C0038003800380070007000E000E001C0038007000E0
000B2A7E9E10>I<E0E0E060404040C003087C820C>44 D<001C0000003E0000003E0000
002E0000006700000067000000E7800000C7800000C3800001C3C0000183C0000181C000
0381E0000381E0000700F0000700F0000600F0000E0078000FFFF8000FFFF8001C003C00
1C003C0018003C0038001E0038001E0070001F0070000F0070000F00E0000780191D7F9C
1C>65 D<FFF800FFFF00F00F80F003C0F001E0F000F0F000F0F000F0F000F0F000F0F001
E0F007C0FFFF80FFFE00FFFF80F03FC0F003E0F001F0F000F0F00078F00078F00078F000
78F00078F000F0F001E0F007C0FFFF80FFFC00151D7C9C1C>I<003FC000FFF003C0F007
80300F00001E00003C00003C0000780000780000780000F00000F00000F00000F00000F0
0000F00000F00000F00000F000007800007800007800003C00003C00001E00000F000807
801803C07800FFF0003F80151F7D9D1B>I<FFFC00FFFF00F00F80F003E0F001F0F000F0
F00078F00038F0003CF0003CF0001CF0001EF0001EF0001EF0001EF0001EF0001EF0001E
F0001EF0003CF0003CF0003CF00078F000F0F000F0F003E0F00FC0FFFF00FFFC00171D7C
9C1E>I<FFFFC0FFFFC0F00000F00000F00000F00000F00000F00000F00000F00000F000
00F00000F00000FFFF80FFFF80F00000F00000F00000F00000F00000F00000F00000F000
00F00000F00000F00000F00000FFFFC0FFFFC0121D7C9C19>I<003F8001FFF003C0F807
80380F00181E00003C00003C0000780000780000780000F00000F00000F00000F00000F0
0000F00000F007F8F007F8F000387800387800387800383C00383C00381E00380F003807
803803C0F801FFF0003F80151F7D9D1C>71 D<F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0
F0F0F0F0F0F0F0F0F0F0F0F0041D7C9C0C>73 D<F000F000F000F000F000F000F000F000
F000F000F000F000F000F000F000F000F000F000F000F000F000F000F000F000F000F000
F000FFFEFFFE0F1D7C9C16>76 D<FC0007E0FC0007E0FC0007E0EE000DE0EE000DE0EE00
0DE0E70019E0E70019E0E70019E0E78039E0E38031E0E3C071E0E3C071E0E1C061E0E1C0
61E0E1E0E1E0E1E0E1E0E0E0C1E0E0F1C1E0E07181E0E07181E0E07181E0E03B01E0E03B
01E0E03B01E0E01E01E0E01E01E0E01E01E0E00001E01B1D7C9C24>I<FC0070FC0070FE
0070EE0070EF0070E70070E70070E78070E38070E3C070E3C070E1E070E1E070E0E070E0
F070E07070E07870E07870E03C70E03C70E01C70E01E70E00E70E00E70E00F70E00770E0
07F0E003F0E003F0141D7C9C1D>I<003F000001FFE00003FFF00007C0F8000F807C001E
001E003E001F003C000F00780007807800078078000780F00003C0F00003C0F00003C0F0
0003C0F00003C0F00003C0F00003C0F00003C0F80007C078000780780007807C000F803C
000F003E001F001F003E000F807C0007C0F80003FFF00001FFE000003F00001A1F7E9D1F
>I<FFFC00FFFF00F00F80F003C0F001E0F000F0F000F0F000F0F000F0F000F0F000F0F0
01E0F003E0F00FC0FFFF80FFFE00F00000F00000F00000F00000F00000F00000F00000F0
0000F00000F00000F00000F00000F00000141D7C9C1B>I<003F000001FFE00003FFF000
07C0F8000F807C001F003E003E001F003C000F00780007807800078078000780F00003C0
F00003C0F00003C0F00003C0F00003C0F00003C0F00003C0F00003C0F00003C078000780
78000780780E07803C0F0F003E079F001E03DE000F83FC0007C1F80003FFF00001FFF800
003F780000003C0000003E0000001F0000000F801A237E9D1F>I<FFF800FFFF00F00F80
F003C0F001E0F000F0F000F0F000F0F000F0F000F0F001E0F003E0F00FC0FFFF80FFFF00
FFF800F03C00F01C00F01E00F00F00F00F00F00780F00780F003C0F003C0F001E0F000F0
F000F0F00078151D7C9C1B>I<03F8000FFE001C0F00380700700300600000E00000E000
00E00000E00000F000007800007F00003FE0001FFC0007FE0001FF00001F800007800003
C00003C00001C00001C00001C00001C0C00180E00380F007007C0E001FFC0007F000121F
7E9D17>I<FFFFFF80FFFFFF80001E0000001E0000001E0000001E0000001E0000001E00
00001E0000001E0000001E0000001E0000001E0000001E0000001E0000001E0000001E00
00001E0000001E0000001E0000001E0000001E0000001E0000001E0000001E0000001E00
00001E0000001E0000001E0000191D7F9C1C>I<F00070F00070F00070F00070F00070F0
0070F00070F00070F00070F00070F00070F00070F00070F00070F00070F00070F00070F0
0070F00070F00070F00070F00070F000707800E07800E03C01C01E03800F078007FE0001
F800141E7C9C1D>I<78000E007C001E003C003C001E0038000F0070000F00F0000781E0
0003C1C00001C3C00001E7800000F70000007E0000003E0000003C0000003C0000007E00
000077000000E7800001E3800003C1C0000381E0000700F0000F00F8000E0078001C003C
003C003E0078001F0070000F00F0000F80191D7F9C1C>88 D<F80001E07C0001C03E0003
801E0007801F0007000F800E0007801E0007C01C0003E03C0001E0380001F0700000F0F0
000078E000007DC000003FC000001F8000001F0000000F0000000F0000000F0000000F00
00000F0000000F0000000F0000000F0000000F0000000F0000000F0000000F00001B1D80
9C1C>I<0FC03FF07FF87038401C001C001C00FC0FFC3FFC781CE01CE01CE01CF07C7FFC
7FDC3F1C0E127E9114>97 D<E000E000E000E000E000E000E000E000E000E000E000E3E0
EFF0FFF8F87CF01CE01EE00EE00EE00EE00EE00EE00EE01CF01CF87CFFF8EFF0E3C00F1D
7D9C15>I<000E000E000E000E000E000E000E000E000E000E000E0F8E1FEE3FFE7C3E70
0E700EE00EE00EE00EE00EE00EE00EF00E701E7C3E3FFE1FEE0F8E0F1D7E9C15>100
D<07C01FE03FF078787018601CFFFCFFFCFFFCE000E000E000700070043C1C3FFC1FF807
E00E127E9112>I<E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0
E0031D7D9C0A>108 D<E3E0EFF0FFF8F83CF01CE01CE01CE01CE01CE01CE01CE01CE01C
E01CE01CE01CE01CE01C0E127D9115>110 D<E3E0EFF0FFF8F87CF01CE01EE00EE00EE0
0EE00EE00EE00EE01CF03CF87CFFF8EFF0E3C0E000E000E000E000E000E000E000E0000F
1A7D9115>112 D<1C001C001C001C001C001C00FFE0FFE01C001C001C001C001C001C00
1C001C001C001C001C001C001C201FF00FF007C00C187F970F>116
D<E01CE01CE01CE01CE01CE01CE01CE01CE01CE01CE01CE01CE01CE01CE07CFFFC7FDC3F
1C0E127D9115>I<7003807807003C0E001C1C000E1C0007380003F00001E00001C00001
E00003F0000738000E18000E1C001C0E00380700700380F003C01212809113>120
D<E007E007700E700E780E381C381C1C181C380C380E300E7006700760036003C001C001
C001800180030003000700FE00FC00F800101A7F9113>I E /Fe
24 119 df<00003F03E00000C386700001878CF00003879CF00003031860000700380000
070038000007003800000E003800000E007000000E007000000E00700000FFFFFF80001C
007000001C00E000001C00E000001C00E000001C00E000003800E000003801C000003801
C000003801C000003801C000007001C00000700380000070038000007003800000700380
00006003800000E007000000E007000000E007000000E007000000C006000001C00E0000
01C00E000031860C0000798F180000F31E100000620C6000003C07C000002429829F1C>
11 D<70F8F8F0E005057B840E>46 D<00000200000006000000060000000E0000001E00
00001E0000003F0000002F0000004F0000004F0000008F0000010F0000010F0000020F00
00020F0000040F00000C0F0000080F0000100F0000100F0000200F80003FFF8000400780
00C007800080078001000780010007800200078002000780060007801E000F80FF807FF8
1D207E9F22>65 D<01FFFFFE001E001C001E000C001E0004001E0004003C0004003C0004
003C0004003C00040078080800780800007808000078180000F0300000FFF00000F03000
00F0300001E0200001E0200001E0200001E0001003C0002003C0002003C0004003C00040
078000800780018007800100078007000F001F00FFFFFE001F1F7D9E1F>69
D<01FFFF00001E03C0001E00E0001E0070001E0078003C0078003C0078003C0078003C00
78007800F0007800F0007801E0007801C000F0070000F01E0000FFF00000F0380001E01C
0001E01E0001E00E0001E00F0003C01E0003C01E0003C01E0003C01E0007803C0007803C
0807803C0807803C100F801C10FFF00C20000007C01D207D9E21>82
D<00F1800389C00707800E03801C03803C0380380700780700780700780700F00E00F00E
00F00E00F00E20F01C40F01C40703C40705C40308C800F070013147C9317>97
D<07803F8007000700070007000E000E000E000E001C001C001CF01D0C3A0E3C0E380F38
0F700F700F700F700FE01EE01EE01EE01CE03CE038607060E031C01F0010207B9F15>I<
007E0001C1000300800E07801E07801C07003C0200780000780000780000F00000F00000
F00000F00000F0000070010070020030040018380007C00011147C9315>I<0000780003
F80000700000700000700000700000E00000E00000E00000E00001C00001C000F1C00389
C00707800E03801C03803C0380380700780700780700780700F00E00F00E00F00E00F00E
20F01C40F01C40703C40705C40308C800F070015207C9F17>I<007C01C207010E011C01
3C013802780C7BF07C00F000F000F000F0007000700170023804183807C010147C9315>
I<00007800019C00033C00033C000718000700000700000E00000E00000E00000E00000E
0001FFE0001C00001C00001C00001C000038000038000038000038000038000070000070
0000700000700000700000700000E00000E00000E00000E00000C00001C00001C0000180
003180007B0000F300006600003C00001629829F0E>I<003C6000E27001C1E00380E007
00E00F00E00E01C01E01C01E01C01E01C03C03803C03803C03803C03803C07003C07001C
0F001C17000C2E0003CE00000E00000E00001C00001C00301C00783800F0700060E0003F
8000141D7E9315>I<01E0000FE00001C00001C00001C00001C000038000038000038000
038000070000070000071E000763000E81800F01C00E01C00E01C01C03801C03801C0380
1C0380380700380700380700380E10700E20700C20701C20700C40E00CC060070014207D
9F17>I<00C001E001E001C000000000000000000000000000000E003300230043804300
470087000E000E000E001C001C001C003840388030807080310033001C000B1F7C9E0E>
I<03C01FC0038003800380038007000700070007000E000E000E000E001C001C001C001C
0038003800380038007000700070007100E200E200E200E200640038000A207C9F0C>
108 D<1C0F80F0002630C318004740640C004780680E004700700E004700700E008E00E0
1C000E00E01C000E00E01C000E00E01C001C01C038001C01C038001C01C038001C01C070
8038038071003803806100380380E10038038062007007006600300300380021147C9325
>I<1C0F802630C04740604780604700704700708E00E00E00E00E00E00E00E01C01C01C
01C01C01C01C03843803883803083807083803107003303001C016147C931A>I<007C00
01C3000301800E01C01E01C01C01E03C01E07801E07801E07801E0F003C0F003C0F003C0
F00780F00700700F00700E0030180018700007C00013147C9317>I<01C1E00262180474
1C04781C04701E04701E08E01E00E01E00E01E00E01E01C03C01C03C01C03C01C0380380
780380700380E003C1C0072380071E000700000700000E00000E00000E00000E00001C00
001C0000FFC000171D809317>I<1C1E002661004783804787804707804703008E00000E
00000E00000E00001C00001C00001C00001C000038000038000038000038000070000030
000011147C9313>114 D<00FC030206010C030C070C060C000F800FF007F803FC003E00
0E700EF00CF00CE008401020601F8010147D9313>I<018001C003800380038003800700
0700FFF007000E000E000E000E001C001C001C001C003800380038003820704070407080
708031001E000C1C7C9B0F>I<0E00C03300E02301C04381C04301C04701C08703800E03
800E03800E03801C07001C07001C07001C07101C0E20180E20180E201C1E200C264007C3
8014147C9318>I<0E03803307802307C04383C04301C04700C08700800E00800E00800E
00801C01001C01001C01001C02001C02001C04001C04001C08000E300003C00012147C93
15>I E /Ff 50 123 df<000078007C7800FC7801FC7803C00003800007800007800007
8000078000078000078000078000078000FFFC78FFFC78FFFC7807807807807807807807
807807807807807807807807807807807807807807807807807807807807807807807807
8078078078078078078078152480A31A>12 D<FFE0FFE0FFE00B037F8C10>45
D<F0F0F0F004047B830E>I<00C001C007C0FFC0FFC0FBC003C003C003C003C003C003C0
03C003C003C003C003C003C003C003C003C003C003C003C003C003C003C003C003C003C0
03C0FFFFFFFFFFFF10227CA118>49 D<03F0000FFC001FFE003C1F003007807007C06003
C0E003E0C001E04001E04001E00001E00001E00001E00003C00003C0000780000780000F
00001E00003C0000780000F00001E00001C0000380000700000E00001C00003800007000
00FFFFE0FFFFE0FFFFE013227EA118>I<01F00007FC001FFF003E0F003807807003C020
03C02003C00003C00003C00003C0000780000780000F00001E0003FC0003F80003FE0000
0F000007800003C00003C00001E00001E00001E00001E00001E08001E0C003C0E003C070
07803C0F801FFF000FFC0003F00013237EA118>I<001F00001F00002F00002F00006F00
00EF0000CF0001CF0001CF00038F00038F00078F00070F000F0F000E0F001E0F003C0F00
3C0F00780F00780F00F00F00FFFFF8FFFFF8FFFFF8000F00000F00000F00000F00000F00
000F00000F00000F00000F0015217FA018>I<FFFFE0FFFFE0FFFFE00000E00001C00003
80000780000700000E00001E00001C00003C0000380000780000780000F00000F00000E0
0001E00001E00001E00003C00003C00003C00003C00003C0000780000780000780000780
0007800007800007800013217EA018>55 D<01F00007FC000FFE001E0F003C07803C0780
7803C07803C07803C07803C07803C03803803C07801E0F000F1E0007FC0003F8000FFE00
1E0F003C07807803C07803C0F001E0F001E0F001E0F001E0F001E0F001E07803C07803C0
3C07803E0F801FFF0007FC0001F00013237EA118>I<01F00007FC000FFE001E0F003C07
003807807803807803C0F003C0F001C0F001E0F001E0F001E0F001E0F001E0F001E07003
E07803E07803E03C07E03E1FE01FFDE00FF1E003E3C00003C00003C00003800007800007
00000F00101E00183C003FF8001FF00007C00013237EA118>I<001F0000001F0000003F
8000003F8000003B8000007BC0000073C0000071C00000F1E00000F1E00000E0E00001E0
F00001E0F00001C0F00003C0780003C078000380780007803C0007803C0007003C000F00
1E000F001E000FFFFE001FFFFF001FFFFF001C000F003C0007803C000780380007807800
03C0780003C0700003C0F00001E0F00001E0E00001E01B237EA220>65
D<FFFC00FFFF80FFFFC0F007F0F001F0F00078F0003CF0003CF0003CF0003CF0003CF000
38F00078F000F0F003E0FFFFC0FFFF00FFFFC0F00FE0F001F8F00078F0003CF0001CF000
1EF0001EF0001EF0001EF0001EF0003CF0007CF000F8F003F0FFFFE0FFFFC0FFFE001723
7BA220>I<000FF000007FFC0000FFFF0001F01F0003C00700078000000F0000001E0000
003E0000003C0000003C000000780000007800000078000000F0000000F0000000F00000
00F0000000F0000000F0000000F0000000F0000000F00000007800000078000000780000
003C0000003C0000003E0000001E0000000F0000000780008003C0038001F00F8000FFFF
00007FFC00000FF00019257DA31F>I<FFFE0000FFFFC000FFFFE000F003F000F000F800
F0007C00F0003E00F0001E00F0000F00F0000F00F0000780F0000780F0000780F00003C0
F00003C0F00003C0F00003C0F00003C0F00003C0F00003C0F00003C0F00003C0F0000380
F0000780F0000780F0000780F0000F00F0001F00F0001E00F0003C00F000FC00F003F800
FFFFE000FFFFC000FFFE00001A237BA223>I<FFFFF0FFFFF0FFFFF0F00000F00000F000
00F00000F00000F00000F00000F00000F00000F00000F00000F00000FFFFE0FFFFE0FFFF
E0F00000F00000F00000F00000F00000F00000F00000F00000F00000F00000F00000F000
00F00000F00000FFFFF8FFFFF8FFFFF815237BA21D>I<FFFFF0FFFFF0FFFFF0F00000F0
0000F00000F00000F00000F00000F00000F00000F00000F00000F00000F00000F00000FF
FFC0FFFFC0FFFFC0F00000F00000F00000F00000F00000F00000F00000F00000F00000F0
0000F00000F00000F00000F00000F00000F0000014237BA21C>I<000FF000003FFE0000
FFFF8001F80F8003E00380078000000F0000001E0000001E0000003C0000003C00000078
0000007800000078000000F0000000F0000000F0000000F0000000F0000000F0000000F0
00FFC0F000FFC0F000FFC0780003C0780003C0780003C03C0003C03C0003C01E0003C01E
0003C00F0003C0078003C003E003C001F807C000FFFFC0003FFF00000FF8001A257DA321
>I<F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0
F004237CA20D>73 D<F00000F00000F00000F00000F00000F00000F00000F00000F00000
F00000F00000F00000F00000F00000F00000F00000F00000F00000F00000F00000F00000
F00000F00000F00000F00000F00000F00000F00000F00000F00000F00000F00000FFFFC0
FFFFC0FFFFC012237BA21A>76 D<FC00007EFE0000FEFE0000FEFE0000FEF70001DEF700
01DEF70001DEF78003DEF380039EF380039EF3C0079EF3C0079EF1C0071EF1C0071EF1E0
0F1EF0E00E1EF0E00E1EF0F01E1EF0F01E1EF0701C1EF0783C1EF0783C1EF038381EF03C
781EF03C781EF01C701EF01C701EF01EF01EF00EE01EF00EE01EF00FE01EF007C01EF007
C01EF007C01EF000001E1F237BA22A>I<FC001EFE001EFE001EFE001EF7001EF7001EF3
801EF3801EF3C01EF1C01EF1C01EF1E01EF0E01EF0F01EF0F01EF0781EF0781EF0381EF0
3C1EF03C1EF01E1EF01E1EF00E1EF00F1EF0071EF0071EF0079EF0039EF0039EF001DEF0
01DEF000FEF000FEF000FEF0007E17237BA222>I<001FC000007FF00001FFFC0003F07E
0007C01F000F800F801F0007C01E0003C03C0001E03C0001E0780000F0780000F0780000
F070000070F0000078F0000078F0000078F0000078F0000078F0000078F0000078F00000
78F0000078780000F0780000F0780000F07C0001F03C0001E03E0003E01E0003C01F0007
C00F800F8007C01F0003F07E0001FFFC00007FF000001FC0001D257DA324>I<FFFE00FF
FF80FFFFC0F003E0F000F0F00078F00078F0003CF0003CF0003CF0003CF0003CF0003CF0
0078F00078F000F0F003E0FFFFC0FFFF80FFFE00F00000F00000F00000F00000F00000F0
0000F00000F00000F00000F00000F00000F00000F00000F00000F0000016237BA21F>I<
FFFC00FFFF80FFFFC0F003E0F000F0F00078F00038F0003CF0003CF0003CF0003CF0003C
F00038F00078F000F0F003E0FFFFC0FFFF80FFFE00F01E00F00F00F00700F00780F00380
F003C0F001E0F001E0F000F0F000F0F00078F00038F0003CF0001EF0001EF0000F18237B
A21F>82 D<00FE0003FFC007FFE00F81E01E00603C00003C000078000078000078000078
00007800007C00003C00003F00001FC0000FFC0007FF0001FF80003FC00007E00001F000
00F00000F8000078000078000078000078000078000078C000F0E000F0F801E07E07C03F
FF800FFF0001FC0015257EA31B>I<FFFFFFF0FFFFFFF0FFFFFFF0000F0000000F000000
0F0000000F0000000F0000000F0000000F0000000F0000000F0000000F0000000F000000
0F0000000F0000000F0000000F0000000F0000000F0000000F0000000F0000000F000000
0F0000000F0000000F0000000F0000000F0000000F0000000F0000000F0000000F000000
0F0000000F0000000F00001C237EA221>I<F0003CF0003CF0003CF0003CF0003CF0003C
F0003CF0003CF0003CF0003CF0003CF0003CF0003CF0003CF0003CF0003CF0003CF0003C
F0003CF0003CF0003CF0003CF0003CF0003CF0003CF0003CF0003C780078780078780078
3C00F01E01E01F87E00FFFC003FF0000FC0016247BA221>I<FFFFFEFFFFFEFFFFFE0000
3C00007C0000F80000F00001F00001E00003E00007C0000780000F80000F00001F00003E
00003C00007C0000780000F80001F00001E00003E00003C00007C0000F80000F00001F00
001E00003E00007C0000780000FFFFFFFFFFFFFFFFFF18237DA21E>90
D<07E01FF83FFC381E201E000F000F000F000F00FF07FF1FFF3E0F780FF00FF00FF00FF0
0FF83F7FFF3FEF1F8F10167E9517>97 D<F00000F00000F00000F00000F00000F00000F0
0000F00000F00000F00000F00000F00000F00000F1F000F7FC00FFFE00FC1F00F80F00F0
0780F00780F003C0F003C0F003C0F003C0F003C0F003C0F003C0F003C0F00780F00780F8
0F00FC3E00FFFE00F7F800F1F00012237CA219>I<01FC0007FF000FFF801F03803C0180
780000780000700000F00000F00000F00000F00000F00000F00000780000780000780000
3C00401F03C00FFFC007FF8001FC0012167E9516>I<0003C00003C00003C00003C00003
C00003C00003C00003C00003C00003C00003C00003C00003C003E3C00FFBC01FFFC03F0F
C03C07C07803C07803C0F003C0F003C0F003C0F003C0F003C0F003C0F003C0F003C07803
C07803C03C07C03E0FC01FFFC00FFBC003E3C012237EA219>I<03F00007FC001FFE003E
0F003C0780780380780380F001C0FFFFC0FFFFC0FFFFC0F00000F00000F0000070000078
00007800003C00801F07800FFF8007FF0001F80012167E9516>I<003F00FF01FF03C003
8007800780078007800780078007800780FFF8FFF8FFF807800780078007800780078007
80078007800780078007800780078007800780078007800780102380A20F>I<01F07807
FFF80FFFF81F1F001E0F003C07803C07803C07803C07803C07801E0F001F1F000FFE001F
FC0019F0003800003800003C00001FFE001FFFC01FFFE03FFFF07801F07800F8F00078F0
0078F00078F000787800F03E03E01FFFC00FFF8001FC0015217F9518>I<F0F0F0F00000
00000000000000F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F004237DA20B>
105 D<F00000F00000F00000F00000F00000F00000F00000F00000F00000F00000F00000
F00000F00000F01F80F03F00F03E00F07C00F0F800F1F000F3E000F7C000FFC000FFC000
FFE000FFE000FDF000F8F800F07800F07C00F03E00F01E00F01F00F00F00F00F80F007C0
12237CA218>107 D<F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0
F0F0F0F0F0F0F0F004237DA20B>I<F0F807C0F3FE1FF0F7FF3FF8FE0F7078FC0FE07CF8
07C03CF807C03CF007803CF007803CF007803CF007803CF007803CF007803CF007803CF0
07803CF007803CF007803CF007803CF007803CF007803CF007803CF007803C1E167C9527
>I<F1F8F3FCF7FEFE1EF80FF80FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00F
F00FF00FF00FF00FF00F10167C9519>I<01FC0007FF000FFF801F07C03C01E07800F078
00F0700070F00078F00078F00078F00078F00078F000787800F07800F07C01F03E03E01F
07C00FFF8007FF0001FC0015167F9518>I<F1F000F7FC00FFFE00FC3F00F80F00F00780
F00780F007C0F003C0F003C0F003C0F003C0F003C0F003C0F007C0F00780F00F80F80F00
FC3E00FFFE00F7F800F1F000F00000F00000F00000F00000F00000F00000F00000F00000
F00000F0000012207C9519>I<F0E0F3E0F7E0FF00FE00FC00F800F800F000F000F000F0
00F000F000F000F000F000F000F000F000F000F0000B167C9511>114
D<07F01FFC3FFE3C0E7806780078007C003F003FF01FF80FFC01FE001F000F000F000FC0
0FF81EFFFE3FFC0FF010167F9513>I<0F000F000F000F000F000F00FFF8FFF8FFF80F00
0F000F000F000F000F000F000F000F000F000F000F000F000F000F080F1C07FC07F803E0
0E1C7F9B12>I<F00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF0
0FF00FF00FF01FF83F7FFF7FCF1F0F10167C9519>I<F001E0F001E07803C07803C07803
C03C07803C07803C07801E07001E0F001E0F000F0E000F1E000F1E00071C00079C0007BC
0003B80003B80003F80001F00001F00013167F9516>I<7801F07C01E03E03C01E07C00F
0780078F0007DE0003FC0001FC0000F80000700000F80001FC0003DC00039E00078F000F
07801E07801E03C03C01E07800F0F800F81516809516>120 D<F001E0F001E07803C078
03C07C03C03C07803C07801E07801E07001E0F000F0F000F0E00071E00079E00039C0003
9C00039C0001980001D80000F80000F00000F00000F00000E00000E00001E00001C00001
C0000380007F80007F00007E000013207F9516>I<7FFFC07FFFC07FFFC0000F80000F00
001E00003E00007C0000780000F00001F00003E00003C0000780000F80001F00001E0000
3C00007C0000FFFFC0FFFFC0FFFFC012167F9515>I E /Fg 32 90
df<FFC0FFC00A027D8A0F>45 D<3078F8787005057C840D>I<007E0001C3000301800701
C00E00C00E00E01C00E01C00E03C01E03801E07801E07801E07801E07801E07801E0F003
C0F003C0F003C0F003C0F003C0F00380F00780E00780E00700E00700E00E00600E00701C
003038003870000FC000131F7C9D17>48 D<000C001C00FC0F3800380038003800380038
00700070007000700070007000E000E000E000E000E000E001C001C001C001C001C001C0
038003C0FFFE0F1E7C9D17>I<003F8000C1E00100F00200780400780400780F007C0F80
7C0F807C0F00780600780000F80000F00001E00001C0000380000700000E00001C000038
0000600000C0000180000300200600200800401000403FFFC07FFF80FFFF80161E7E9D17
>I<007F000183C00201E00400F00700F00F00F00F01F00F01F00001E00001E00003C000
0380000700000E0000F800000E000007000007800007C00003C00007C03007C07807C0F8
07C0F807C0F00780800F00400E00201C0018780007E000141F7D9D17>I<01803001FFE0
03FFC003FF0003FC00020000020000020000040000040000040000047C00058700060380
0C01800801C00001C00001E00001E00001E00001E07003C0F803C0F003C0E00380800780
400700400E00201C0018700007C000141F7D9D17>53 D<2000003FFFE07FFFC07FFF8040
0100C0020080020080040000080000100000200000400000400000800001800003000003
00000700000600000E00000E00001E00001C00001C00003C00003C00003C000078000078
0000780000300000131F799D17>55 D<003F0000C1C00100600200600400300C00300C00
300C00300C00600E00600F80C00FC18007F60003FC0001FC0001FF00063F800C0F801007
C03003C06001C06000C0C000C0C000C0C000C0C00080C0010060030030040018180007E0
00141F7D9D17>I<007E0001C3000301800601C00E01C01C00C03C00E03C00E03C01E078
01E07801E07801E07801E07803E07803E03803C03807C01C0BC00C13C003E38000078000
0780000700000E00600E00F01C00F01800E0300080600041C0003F0000131F7C9D17>I<
0000100000001800000038000000380000007800000078000000FC000001BC0000013C00
00033C0000023C0000063C0000043E0000081E0000081E0000101E0000101E0000201E00
00200F0000400F0000400F0000FFFF0000800F0001000F80010007800200078002000780
04000780040007800C0007C03E0007C0FF807FFC1E207E9F22>65
D<0001F808000E061800380138007000F801E0007803C0007007800030078000300F0000
301F0000301E0000303E0000203C0000007C0000007C0000007C0000007C000000F80000
00F8000000F8000000F8000000F80000007800004078000080780000803C0000803C0001
001C0002000E00020006000C000300100001C0E000003F00001D217B9F21>67
D<07FFFF00007C01E0003C00F0003C00780078003C0078003C0078001E0078001E007800
1E0078001F00F0001F00F0001F00F0001F00F0001F00F0001F00F0001F01E0001E01E000
3E01E0003E01E0003E01E0003C01E0007C03C0007803C000F003C000F003C001E003C003
C003C0078007800F0007803C00FFFFE000201F7E9E23>I<07FFFFF8007C0078003C0038
003C001800780018007800080078000800780008007800080078080800F0100000F01000
00F0100000F0300000FFF00000F0700001E0200001E0200001E0200001E0200001E00008
01E0001003C0001003C0001003C0002003C0002003C0006003C000C0078001C0078007C0
FFFFFF801D1F7E9E1F>I<07FFFFF8007C0078003C0038003C0018007800180078000800
78000800780008007800080078000800F0100000F0100000F0100000F0300000F0700000
FFF00001E0600001E0200001E0200001E0200001E0200001E0000003C0000003C0000003
C0000003C0000003C0000003C000000780000007C00000FFFE00001D1F7E9E1E>I<0001
FC04000F030C003C009C0070007C00E0003C01C0003803800018078000180F0000181F00
00181E0000183E0000103C0000007C0000007C0000007C0000007C000000F8000000F800
0000F8007FFCF80003E0780001E0780001E0780003C0780003C03C0003C03C0003C01C00
03C00E0007C007000B800380118001E06080003F80001E217B9F24>I<07FFC7FFC0007C
00F800003C007800003C007800007800F000007800F000007800F000007800F000007800
F000007800F00000F001E00000F001E00000F001E00000F001E00000FFFFE00000F001E0
0001E003C00001E003C00001E003C00001E003C00001E003C00001E003C00003C0078000
03C007800003C007800003C007800003C007800003C007800007800F000007C00F8000FF
F8FFF800221F7E9E22>I<07FFE0007C00003C00003C0000780000780000780000780000
780000780000F00000F00000F00000F00000F00000F00001E00001E00001E00001E00001
E00001E00003C00003C00003C00003C00003C00003C00007800007C000FFFC00131F7F9E
10>I<07FFE07FE0007C001F00003C000C00003C00180000780010000078004000007800
800000780100000078020000007804000000F008000000F010000000F060000000F0F000
0000F1F0000000F278000001E478000001E878000001F03C000001E03C000001E01E0000
01E01E000003C00F000003C00F000003C00F000003C007800003C007800003C003C00007
8003C00007C007E000FFFC3FFC00231F7E9E23>75 D<07FFF000007E0000003C0000003C
000000780000007800000078000000780000007800000078000000F0000000F0000000F0
000000F0000000F0000000F0000001E0000001E0000001E0000001E0000001E0008001E0
010003C0010003C0010003C0030003C0020003C0060003C0060007801E0007807C00FFFF
FC00191F7E9E1C>I<07FC0000FFC0007C0000F800003C00017800003C00017800004E00
02F000004E0002F000004E0004F000004E0004F000004E0008F000004E0008F000008700
11E00000870011E00000870021E00000870021E00000870041E00000838041E000010380
83C00001038083C00001038103C00001038203C0000101C203C0000101C403C0000201C4
0780000201C80780000201C80780000201D00780000200F00780000600E00780000600E0
0F00000F00C00F8000FFE0C1FFF8002A1F7E9E2A>I<07FC01FFC0003E003E00003E0018
00003E001800004F001000004F001000004780100000478010000043C010000043C01000
0083C020000081E020000081E020000080F020000080F020000080782000010078400001
007C400001003C400001003C400001001E400001001E400002000F800002000F80000200
0F800002000780000200078000060003800006000300000F00010000FFE0010000221F7E
9E22>I<0003F800001E0E000038070000E0038001C001C003C001E0078000E00F0000F0
0F0000F01E0000F01E0000F83E0000F83C0000F87C0000F87C0000F87C0000F87C0000F8
F80001F0F80001F0F80001F0F80001F0F80003E0780003E0780003C0780007C07C000780
3C000F003C001E001E001C000E0038000700F00003C3C00000FE00001D217B9F23>I<07
FFFF00007C03C0003C01E0003C00F0007800F0007800F8007800F8007800F8007800F800
7800F000F001F000F001E000F003C000F0078000F00F0000FFF80001E0000001E0000001
E0000001E0000001E0000001E0000003C0000003C0000003C0000003C0000003C0000003
C000000780000007C00000FFFC00001D1F7E9E1F>I<07FFFC00007C0700003C03C0003C
01E0007801E0007801F0007801F0007801F0007801F0007801E000F003E000F003C000F0
078000F00F0000F03C0000FFF00001E0300001E0380001E01C0001E01C0001E01C0001E0
1E0003C03E0003C03E0003C03E0003C03E0003C03E0003C03E0207803E0407C01F04FFFC
0F18000003E01F207E9E21>82 D<003F040060CC01803C03801C03001C0700180600080E
00080E00080E00080E00000F00000F80000FE00007FE0003FF8001FFC0007FE00007E000
01E00000E00000F00000F04000E04000E04000E04000E06000C0600180E00380F80300C6
0C0081F80016217D9F19>I<3FFFFFF03C0780F03007803060078030400F0010400F0010
C00F0010800F0010800F0010800F0010001E0000001E0000001E0000001E0000001E0000
001E0000003C0000003C0000003C0000003C0000003C0000003C00000078000000780000
0078000000780000007800000078000000F0000001F800007FFFE0001C1F7A9E21>I<FF
FC3FF80F8007C007800300078003000F0002000F0002000F0002000F0002000F0002000F
0002001E0004001E0004001E0004001E0004001E0004001E0004003C0008003C0008003C
0008003C0008003C0008003C000800380010003800100038001000380020003C0040001C
0040001C0080000E0100000706000001F800001D20799E22>I<FFF003FE1F8000F80F00
00600F0000400F0000400F8000800780018007800100078002000780020007C0040003C0
040003C0080003C0080003C0100003E0100001E0200001E0200001E0400001E0400001F0
800000F1000000F1000000F2000000F2000000FC0000007C000000780000007800000070
000000700000002000001F207A9E22>I<FFF07FF81FF01F000FC007C01F00078003000F
00078003000F00078002000F000F8002000F000F8004000F001F8004000F0017C008000F
8013C00800078023C01000078023C01000078043C02000078043C02000078083C0400007
8083E0400007C101E0800003C101E0800003C201E1000003C201E1000003C401E2000003
C401E2000003C801F4000003E800F4000001F000FC000001F000F8000001E000F8000001
E000F0000001C000F0000001C00060000000C0006000000080004000002C207A9E2F>I<
03FFC0FFC0007F007E00003E003800001E003000001E002000000F004000000F00800000
0F81000000078200000007C600000003C400000003E800000001F000000001F000000000
F000000000F800000000F8000000017C000000023C000000043C0000000C1E000000081E
000000101F000000200F000000400F800000C0078000008007C000010003C000070003E0
001F8007E000FFE01FFE00221F7F9E22>I<FFF003FF1F8000F80F0000600F8000400780
008007C0018003C0010003E0020001E0040001F00C0001F0080000F0100000F820000078
6000007C4000003C8000003F0000001F0000001E0000001E0000001E0000001C0000003C
0000003C0000003C0000003C0000003C00000038000000780000007C00000FFFC000201F
7A9E22>I E /Fh 15 117 df<020408103020604040C0C0C0C0C0C0C0C0404060203010
080402071A7F920C>40 D<8040201018080C0404060606060606060604040C0818102040
80071A7E920C>I<1F00318060C04040C060C060C060C060C060C060C060C060404060C0
31801F000B107F8F0F>48 D<0C003C00CC000C000C000C000C000C000C000C000C000C00
0C000C000C00FF8009107E8F0F>I<1F00618040C08060C0600060006000C00180030006
000C00102020207FC0FFC00B107F8F0F>I<1F00218060C060C000C0008001800F000080
00400060C060C060804060801F000B107F8F0F>I<0300030007000F000B001300330023
004300C300FFE003000300030003001FE00B107F8F0F>I<20803F002C00200020002000
2F0030802040006000600060C06080C061801F000B107F8F0F>I<0780184030C060C060
00C000CF00F080E040C060C060C060406060C030801F000B107F8F0F>I<40007FE07FC0
8080808001000200040004000C0008000800180018001800180018000B117E900F>I<1F
00318060C060C060C071803F000F00338061C0C060C060C060404060801F000B107F8F0F
>I<1F00318060C0C040C060C060C06040E021E01E600060004060C0608043003E000B10
7F8F0F>I<03E0000C1800100400200200600300400100C00180C00180C00180C00180C0
01806003006003003006003006000C180003E00011117E9017>79
D<1F8030C06000C000C000C000C000C000604030801F000A0B7F8A0E>99
D<10103030FE3030303030323232321C070F7F8E0C>116 D E /Fi
3 64 df<03C00FF01FF83FFC7FFE7FFEFFFFFFFFFFFFFFFFFFFFFFFF7FFE7FFE3FFC1FF8
0FF003C010127D9317>15 D<FFFFFFE0FFFFFFE0000C0000000C0000000C0000000C0000
000C0000000C0000000C0000000C0000000C0000000C0000000C0000000C0000000C0000
000C0000000C0000000C0000000C0000000C0000000C0000000C0000000C0000000C0000
000C0000000C0000000C0000000400001B1C7C9B23>62 D<00040000000C0000000C0000
000C0000000C0000000C0000000C0000000C0000000C0000000C0000000C0000000C0000
000C0000000C0000000C0000000C0000000C0000000C0000000C0000000C0000000C0000
000C0000000C0000000C0000000C0000000C0000FFFFFFE0FFFFFFE01B1C7C9B23>I
E /Fj 60 123 df<00F8F001F8F003F8F00780F00700F00F00F00F00F00F00F00F00F00F
00F00F00F00F00F0FFF8F0FFF8F0FFF8F00F00F00F00F00F00F00F00F00F00F00F00F00F
00F00F00F00F00F00F00F00F00F00F00F00F00F00F00F00F00F00F00F00F00F01420809F
18>13 D<007000E001C00380078007000E001E001E003C003C003C007800780078007800
7000F000F000F000F000F000F000F000F000F000F000F000F00070007800780078007800
3C003C003C001E001E000E0007000780038001C000E000700C2E7EA112>40
D<E000700038001C001E000E0007000780078003C003C003C001E001E001E001E000E000
F000F000F000F000F000F000F000F000F000F000F000F000E001E001E001E001E003C003
C003C00780078007000E001E001C0038007000E0000C2E7DA112>I<7878787818303060
60E0050A7D830D>44 D<FFC0FFC0FFC00A037F8B0F>I<F0F0F0F004047C830D>I<03F000
07F8001FFE001E1E003C0F00380700780780780780700380F003C0F003C0F003C0F003C0
F003C0F003C0F003C0F003C0F003C0F003C0F003C0F003C0F003C0F003C0780780780780
7807803807003C0F001E1E001FFE000FFC0003F00012207E9E17>48
D<00C001C00FC0FFC0FFC0F3C003C003C003C003C003C003C003C003C003C003C003C003
C003C003C003C003C003C003C003C003C003C003C0FFFEFFFEFFFE0F1F7C9E17>I<F0F0
F0F0000000000000000000000000F0F0F0F004147C930D>58 D<FFFFFFF0FFFFFFF00000
000000000000000000000000000000000000000000000000000000000000FFFFFFF0FFFF
FFF01C0C7D9023>61 D<001F0000001F0000003F8000003B8000003B8000007BC0000073
C0000071C00000F1E00000E1E00000E0E00001E0F00001E0F00001C0F00003C0780003C0
78000380780007803C0007803C0007003C000FFFFE000FFFFE000FFFFE001E000F001E00
0F003C000F803C0007803C000780780007C0780003C0780003C0F00003E01B207F9F1E>
65 D<FFF800FFFF00FFFF80F00FC0F003E0F001E0F000F0F000F0F000F0F000F0F000F0
F001E0F003C0F01F80FFFF00FFFF00FFFF80F007E0F001E0F000F0F00078F00078F00078
F00078F00078F00078F000F0F001F0F007E0FFFFC0FFFF80FFFC0015207B9F1E>I<001F
C000FFF801FFFC03E03C07800C0F00001E00003E00003C00007C00007800007800007800
00F00000F00000F00000F00000F00000F00000F00000F000007800007800007800007C00
003C00003E00001E00000F000207800E03E03E01FFFC00FFF0001FC017227DA01D>I<FF
FC00FFFF80FFFFC0F007E0F001F0F000F8F00078F0003CF0003CF0001EF0001EF0000EF0
000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0001EF0001EF0001EF0
003CF0007CF000F8F001F0F007E0FFFFC0FFFF80FFFC0018207B9F21>I<FFFFC0FFFFC0
FFFFC0F00000F00000F00000F00000F00000F00000F00000F00000F00000F00000F00000
FFFF80FFFF80FFFF80F00000F00000F00000F00000F00000F00000F00000F00000F00000
F00000F00000F00000FFFFE0FFFFE0FFFFE013207B9F1B>I<FFFFC0FFFFC0FFFFC0F000
00F00000F00000F00000F00000F00000F00000F00000F00000F00000F00000FFFF00FFFF
00FFFF00F00000F00000F00000F00000F00000F00000F00000F00000F00000F00000F000
00F00000F00000F00000F0000012207B9F1A>I<001FE000FFF801FFFE03E03E07800E0F
00001E00003E00003C00007C0000780000780000780000F00000F00000F00000F00000F0
0000F00000F003FEF003FE7803FE78001E78001E7C001E3C001E3E001E1E001E0F001E07
801E03E03E01FFFE00FFF8001FC017227DA01E>I<F00078F00078F00078F00078F00078
F00078F00078F00078F00078F00078F00078F00078F00078F00078FFFFF8FFFFF8FFFFF8
F00078F00078F00078F00078F00078F00078F00078F00078F00078F00078F00078F00078
F00078F00078F0007815207B9F20>I<F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0
F0F0F0F0F0F0F0F0F0F0F0F004207C9F0D>I<F0003EF0007CF000F8F001F0F003E0F007
C0F00780F00F00F01F00F03E00F07C00F0F800F1F000F3F800F3F800F7FC00FFBC00FF1E
00FE1F00FC0F00F80780F00780F003C0F003E0F001E0F000F0F000F8F00078F0003CF000
3CF0001EF0001F18207B9F20>75 D<F00000F00000F00000F00000F00000F00000F00000
F00000F00000F00000F00000F00000F00000F00000F00000F00000F00000F00000F00000
F00000F00000F00000F00000F00000F00000F00000F00000F00000F00000FFFF80FFFF80
FFFF8011207B9F19>I<F80001F8FC0003F8FC0003F8F4000378F6000778F6000778F600
0778F3000E78F3000E78F3000E78F3801E78F3801E78F1801C78F1C03C78F1C03C78F0C0
3878F0C03878F0E07878F0E07878F0607078F070F078F070F078F030E078F039E078F039
E078F019C078F019C078F019C078F00F8078F00F8078F00F8078F00000781D207B9F28>
I<FC0078FE0078FE0078F60078F70078F70078F38078F38078F38078F3C078F1C078F1E0
78F1E078F0E078F0F078F07078F07078F07878F03878F03C78F03C78F01C78F01E78F00E
78F00E78F00E78F00778F00778F00378F003F8F003F8F001F815207B9F20>I<003F0000
00FFC00003FFF00007E1F8000F807C001F003E001E001E003C000F003C000F0078000780
7800078078000780F00003C0F00003C0F00003C0F00003C0F00003C0F00003C0F00003C0
F00003C0F00003C0F80007C07800078078000780780007803C000F003C000F001E001E00
1F003E000F807C0007E1F80003FFF00000FFC000003F00001A227DA021>I<FFF800FFFF
00FFFF80F00FC0F003E0F001E0F000F0F000F0F000F0F000F0F000F0F000F0F000F0F001
E0F003E0F00FC0FFFF80FFFF00FFF800F00000F00000F00000F00000F00000F00000F000
00F00000F00000F00000F00000F00000F0000014207B9F1D>I<003F000000FFC00003FF
F00007E1F8000F807C001F003E001E001E003C000F003C000F0078000780780007807800
0780F00003C0F00003C0F00003C0F00003C0F00003C0F00003C0F00003C0F00003C0F000
03C0F00003C07800078078000780781E07803C0F0F003C0F8F001E079E001F03FE000F83
FC0007E1F80003FFF00000FFF800003F780000007C0000003E0000001E0000001F000000
0F801A277DA021>I<FFF800FFFF00FFFF80F007C0F003E0F001E0F000F0F000F0F000F0
F000F0F000F0F001E0F003E0F007C0FFFF80FFFF00FFF800F03C00F01E00F01E00F00F00
F00F00F00780F00780F003C0F001C0F001E0F000F0F000F0F00078F00078F0003C16207B
9F1D>I<01FC0007FF800FFFC01F03C03C00C03C00007800007800007800007800007800
007C00003C00003F00001FE0000FFC0007FE0001FF00003F800007C00003C00003E00001
E00001E00001E00001E00001E00001C0C003C0F007C0FC0F807FFF001FFE0003F8001322
7EA019>I<FFFFFFC0FFFFFFC0FFFFFFC0001E0000001E0000001E0000001E0000001E00
00001E0000001E0000001E0000001E0000001E0000001E0000001E0000001E0000001E00
00001E0000001E0000001E0000001E0000001E0000001E0000001E0000001E0000001E00
00001E0000001E0000001E0000001E0000001E0000001E00001A207E9F1F>I<F000F0F0
00F0F000F0F000F0F000F0F000F0F000F0F000F0F000F0F000F0F000F0F000F0F000F0F0
00F0F000F0F000F0F000F0F000F0F000F0F000F0F000F0F000F0F000F0F000F0F000F078
01E07801E03C03C03C03C01F0F800FFF0007FE0001F80014217B9F1F>I<F00001E0F000
01E0780003C0780003C0780003C03C0007803C0007803C0007801E000F001E000F001F00
0F000F001E000F001E0007801C0007803C0007803C0003C0380003C0780003C0780001E0
700001E0F00001E0F00000F0E00000F1E00000F1E0000071C000007BC000003B8000003B
8000003F8000001F0000001F00001B207F9F1E>I<F0007C000FF0007E000FF0007E000F
78006E000E7800EE001E7800E7001E7800E7001E3C00E7003C3C01E7803C3C01C7803C3C
01C3803C1E01C380781E03C3C0781E0383C0780E0381C0700F0381C0F00F0781E0F00F07
01E0F0070700E0E0078700E1E0078F00E1E0078E00F1E0038E0071C0038E0071C003CE00
73C001DC00738001DC003B8001DC003B8001DC003B8000F8003F0000F8001F0000F8001F
0028207F9F2B>I<780007807C000F003E001F001E001E000F003C000F807C0007807800
03C0F00003E1F00001F1E00000F3C000007FC000007F8000003F0000001F0000001E0000
003F0000007F8000007FC00000F3C00001F1E00001E0F00003C0F80007C0780007803C00
0F003E001F001E001E000F003C000F807C0007C0780003C0F00003E01B207F9F1E>I<F8
0000F87C0001F03C0001E03E0003E01F0003C00F0007800F800F8007C00F0003C01F0003
E01E0001F03C0000F07C00007878000078F000003CF000001CE000001FE000000FC00000
078000000780000007800000078000000780000007800000078000000780000007800000
078000000780000007800000078000000780001D20809F1E>I<FFFFF8FFFFF8FFFFF800
00F00001F00001E00003C00007C0000780000F80000F00001E00003E00003C00007C0000
780000F00001F00001E00003E00003C0000780000F80000F00001F00001E00003C00007C
0000780000FFFFFCFFFFFCFFFFFC16207D9F1C>I<07E03FF87FFC701E401F000F000F00
0F003F07FF1FFF7E0FF80FF00FF00FF00FF83F7FFF3FEF1F8F10147E9316>97
D<F00000F00000F00000F00000F00000F00000F00000F00000F00000F00000F00000F000
00F1F000F7FC00FFFE00FC3E00F80F00F00F00F00780F00780F00780F00780F00780F007
80F00780F00F00F00F00F81F00FC3E00FFFC00F7F800F1E00011207D9F17>I<03F00FFC
1FFE3E0E3C0278007800F000F000F000F000F000F000780078003C013E0F1FFF0FFE03F0
10147E9314>I<0007800007800007800007800007800007800007800007800007800007
8000078000078007C7800FF7801FFF803E1F807C0780780780F80780F00780F00780F007
80F00780F00780F00780F00780780780780F803E1F801FFF800FF78007C78011207E9F17
>I<03F0000FFC001FFE003E1F003C0700780700700380FFFF80FFFF80FFFF80F00000F0
0000F000007000007800003C01003E07001FFF0007FE0001F80011147F9314>I<007E01
FE03FE078007000F000F000F000F000F000F000F00FFF0FFF0FFF00F000F000F000F000F
000F000F000F000F000F000F000F000F000F000F000F000F000F20809F0E>I<03E0F00F
FFF01FFFF03E3E003C1E00780F00780F00780F00780F00780F003C1E003E3E001FFC003F
F80033E0003000003800003FFE003FFF801FFFC03FFFE07803F0F000F0F000F0F000F0F8
01F07E07E03FFFC00FFF0003FC00141E7F9317>I<F000F000F000F000F000F000F000F0
00F000F000F000F000F1F8F3FCF7FEFC1FF80FF80FF00FF00FF00FF00FF00FF00FF00FF0
0FF00FF00FF00FF00FF00FF00F10207D9F17>I<F0F0F0F00000000000000000F0F0F0F0
F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F004207D9F0B>I<F00000F00000F00000F00000F0
0000F00000F00000F00000F00000F00000F00000F00000F01F00F01E00F03C00F07800F0
F000F1E000F3C000F78000FFC000FFC000FFE000F9F000F8F000F0F800F07C00F07C00F0
3E00F01E00F01F00F00F8011207D9F16>107 D<F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0
F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F004207D9F0B>I<F0FC07E0F3FE1FF0F7FF3FF8FE
0FF07CF807C03CF807C03CF007803CF007803CF007803CF007803CF007803CF007803CF0
07803CF007803CF007803CF007803CF007803CF007803CF007803CF007803C1E147D9325
>I<F1F8F3FCF7FEFC1FF80FF80FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00F
F00FF00FF00F10147D9317>I<01F80007FE001FFF803F0FC03C03C07801E07801E0F000
F0F000F0F000F0F000F0F000F0F000F07801E07801E03C03C03F0FC01FFF8007FE0001F8
0014147F9317>I<F1F000F7FC00FFFE00FC3E00F81F00F00F00F00F80F00780F00780F0
0780F00780F00780F00780F00F00F00F00F81F00FC3E00FFFC00F7F800F1E000F00000F0
0000F00000F00000F00000F00000F00000F00000F00000111D7D9317>I<03C7800FF780
1FFF803E1F807C0F80780780780780F00780F00780F00780F00780F00780F00780F80780
7807807C0F803E1F801FFF800FF78007C780000780000780000780000780000780000780
000780000780000780111D7E9317>I<F0E0F3E0F7E0FF00FC00FC00F800F800F000F000
F000F000F000F000F000F000F000F000F000F0000B147D9310>I<07F01FFC3FFC780C78
00780078007C003FC01FF00FF803F8007C003C003CC03CF07CFFF87FF00FC00E147F9311
>I<1E001E001E001E001E001E00FFF0FFF0FFF01E001E001E001E001E001E001E001E00
1E001E001E001E001E001E201FF00FF007C00C1A7F9910>I<F00FF00FF00FF00FF00FF0
0FF00FF00FF00FF00FF00FF00FF00FF00FF00FF01FF03FFFFF7FEF3F0F10147D9317>I<
F003C0F003C07803807807807807803C0F003C0F003C0F001E0E001E1E001E1E000F1C00
0F3C000F3C0007380007380007B80003F00003F00001E00012147F9315>I<F01F00F0F0
1F80F0F01F80F0781B81E0783B81E0783BC1E07839C1E03C31C3C03C71C3C03C71E3C01C
70E3801E60E7801E60E7801EE0E7800EE077000EC077000EC0770007C07E0007C03E0007
803E001C147F931F>I<7801E07C03C03E07801E0F000F0F00079E0003FC0003F80001F8
0000F00001F00001F80003FC00079E000F0F000E0F001E07803C03C07801E0F801F01414
809315>I<F003C0F003C07807807807807C07803C0F003C0F001E0F001E1E000E1E000F
1C000F1C00073C0007380003B80003B80003B00001F00001F00000E00000E00001C00001
C00001C0000380000780007F00007E00007C0000121D7F9315>I<7FFF7FFF7FFF003E00
3C007800F800F001E003E007C007800F001F001E003C007C00FFFFFFFFFFFF10147F9314
>I E /Fk 73 126 df<030600078F00078F00078F00078F00078F00078F007FFFC0FFFF
E0FFFFE07FFFC00F1E000F1E000F1E000F1E000F1E000F1E007FFFC0FFFFE0FFFFE07FFF
C01E3C001E3C001E3C001E3C001E3C001E3C000C1800131C7E9B18>35
D<01C00007E0000FF0000E70001C38001C38001C38001C38001C73F01C73F01CE3F00FE3
800FC7000F87000F07001F0E003F0E007B8E0073DC00E1DC00E0F800E0F800E07070E078
7070FC707FFFE03FCFE00F03C0141C7F9B18>38 D<007000F001E003C007800F001E001C
00380038007000700070007000E000E000E000E000E000E000E000E00070007000700070
00380038001C001E000F00078003C001F000F000700C24799F18>40
D<6000F00078003C001E000F000780038001C001C000E000E000E000E000700070007000
70007000700070007000E000E000E000E001C001C0038007800F001E003C007800F00060
000C247C9F18>I<01C00001C00001C00001C000C1C180F1C780F9CF807FFF001FFC0007
F00007F0001FFC007FFF00F9CF80F1C780C1C18001C00001C00001C00001C00011147D97
18>I<1C3E7E7F3F1F070E1E7CF860080C788518>44 D<3078FCFC78300606778518>46
D<000300000780000780000F80000F00001F00001E00001E00003E00003C00007C000078
0000780000F80000F00001F00001E00003E00003C00003C00007C0000780000F80000F00
000F00001F00001E00003E00003C00003C00007C0000780000F80000F00000F000006000
0011247D9F18>I<01800380038007800F803F80FF80FB80438003800380038003800380
038003800380038003800380038003800380038003807FFCFFFE7FFC0F1C7B9B18>49
D<03F0000FFE003FFF007C0F807003C0E001C0F000E0F000E06000E00000E00000E00001
C00001C00003C0000780000F00001E00003C0000780000F00001E00007C0000F80001E00
E03C00E07FFFE0FFFFE07FFFE0131C7E9B18>I<07F8001FFE003FFF007807807803C078
01C03001C00001C00003C0000380000F0003FF0003FE0003FF000007800003C00001C000
00E00000E00000E0F000E0F000E0F001C0F003C07C07803FFF001FFE0003F800131C7E9B
18>I<001F00003F0000770000770000E70001E70001C7000387000787000707000E0700
1E07003C0700380700780700F00700FFFFF8FFFFF8FFFFF8000700000700000700000700
000700000700007FF000FFF8007FF0151C7F9B18>I<03F8000FFE001FFF003E0F803803
807001C07001C07001C07001C03803803C07801FFF0007FC000FFE001F1F003C07807001
C0F001E0E000E0E000E0E000E0E000E07001C07803C03E0F801FFF000FFE0003F800131C
7E9B18>56 D<3078FCFC783000000000000000003078FCFC78300614779318>58
D<183C7E7E3C180000000000000000183C7E7E3E1E0E1C3C78F060071A789318>I<7FFF
C0FFFFE0FFFFE0FFFFE0000000000000000000000000FFFFE0FFFFE0FFFFE07FFFC0130C
7E9318>61 D<0FF0003FFC007FFF00700F00F00380F00380600780000F00003E00007C00
01F00001E00003C00003C00003C00003C00003C000038000000000000000000000000000
00000003800007C00007C00007C000038000111C7D9B18>63 D<00700000F80000F80000
D80000D80001DC0001DC0001DC00018C00038E00038E00038E00038E0003060007070007
07000707000707000FFF800FFF800FFF800E03800E03801C01C01C01C07F07F0FF8FF87F
07F0151C7F9B18>65 D<FFFC00FFFF00FFFF801C03C01C01C01C00E01C00E01C00E01C00
E01C01E01C01C01C07C01FFF801FFF001FFFC01C03C01C00E01C00F01C00701C00701C00
701C00701C00F01C00E01C03E0FFFFC0FFFF80FFFE00141C7F9B18>I<00F8E003FEE007
FFE00F07E01E03E03C01E03800E07000E07000E0700000E00000E00000E00000E00000E0
0000E00000E00000E000007000007000E07000E03800E03C00E01E01C00F07C007FF8003
FE0000F800131C7E9B18>I<7FF800FFFE007FFF001C0F801C03C01C03C01C01E01C00E0
1C00E01C00F01C00701C00701C00701C00701C00701C00701C00701C00701C00F01C00E0
1C00E01C01E01C01C01C03C01C0F807FFF00FFFE007FF800141C7F9B18>I<FFFFF0FFFF
F0FFFFF01C00701C00701C00701C00701C00001C00001C0E001C0E001C0E001FFE001FFE
001FFE001C0E001C0E001C0E001C00001C00001C00381C00381C00381C00381C0038FFFF
F8FFFFF8FFFFF8151C7F9B18>I<FFFFE0FFFFE0FFFFE01C00E01C00E01C00E01C00E01C
00001C00001C1C001C1C001C1C001FFC001FFC001FFC001C1C001C1C001C1C001C00001C
00001C00001C00001C00001C00001C0000FFC000FFC000FFC000131C7E9B18>I<01F1C0
03FDC00FFFC01F0FC01C03C03803C03801C07001C07001C0700000E00000E00000E00000
E00000E00000E00FF0E01FF0E00FF07001C07001C07003C03803C03803C01C07C01F0FC0
0FFFC003FDC001F1C0141C7E9B18>I<7F07F0FF8FF87F07F01C01C01C01C01C01C01C01
C01C01C01C01C01C01C01C01C01C01C01FFFC01FFFC01FFFC01C01C01C01C01C01C01C01
C01C01C01C01C01C01C01C01C01C01C01C01C07F07F0FF8FF87F07F0151C7F9B18>I<7F
FF00FFFF807FFF0001C00001C00001C00001C00001C00001C00001C00001C00001C00001
C00001C00001C00001C00001C00001C00001C00001C00001C00001C00001C00001C00001
C0007FFF00FFFF807FFF00111C7D9B18>I<7F07F0FF87F87F07F01C03C01C07801C0700
1C0E001C1E001C3C001C38001C70001CF0001DF0001DF0001FB8001FB8001F1C001E1C00
1C0E001C0E001C07001C07001C03801C03801C01C07F03F0FF87F87F03F0151C7F9B18>
75 D<7FE000FFE0007FE0000E00000E00000E00000E00000E00000E00000E00000E0000
0E00000E00000E00000E00000E00000E00000E00000E00000E00000E00700E00700E0070
0E00700E00707FFFF0FFFFF07FFFF0141C7F9B18>I<FC01F8FE03F8FE03F83B06E03B06
E03B06E03B06E03B8EE03B8EE0398CE0398CE039DCE039DCE039DCE038D8E038D8E038F8
E03870E03870E03800E03800E03800E03800E03800E03800E0FE03F8FE03F8FE03F8151C
7F9B18>I<7E07F0FF0FF87F07F01D81C01D81C01D81C01DC1C01CC1C01CC1C01CE1C01C
E1C01CE1C01C61C01C71C01C71C01C31C01C39C01C39C01C39C01C19C01C19C01C1DC01C
0DC01C0DC01C0DC07F07C0FF87C07F03C0151C7F9B18>I<0FF8003FFE007FFF00780F00
700700F00780E00380E00380E00380E00380E00380E00380E00380E00380E00380E00380
E00380E00380E00380E00380E00380E00380F00780700700780F007FFF003FFE000FF800
111C7D9B18>I<FFFE00FFFF80FFFFC01C03C01C01E01C00E01C00701C00701C00701C00
701C00701C00E01C01E01C03C01FFFC01FFF801FFE001C00001C00001C00001C00001C00
001C00001C00001C0000FF8000FF8000FF8000141C7F9B18>I<0FF8003FFE007FFF0078
0F00700700F00780E00380E00380E00380E00380E00380E00380E00380E00380E00380E0
0380E00380E00380E00380E00380E1E380E1E380F0E78070F700787F007FFF003FFE000F
FC00001C00001E00000E00000F0000070000070011227D9B18>I<7FF800FFFE007FFF00
1C0F801C03801C03C01C01C01C01C01C01C01C03C01C03801C0F801FFF001FFE001FFE00
1C0F001C07001C03801C03801C03801C03801C03801C039C1C039C1C039C7F01F8FF81F8
7F00F0161C7F9B18>I<03F3801FFF803FFF807C0F80700780E00380E00380E00380E000
007000007800003F00001FF00007FE0000FF00000F800003C00001C00000E00000E06000
E0E000E0E001E0F001C0F80780FFFF80FFFE00E7F800131C7E9B18>I<7FFFF8FFFFF8FF
FFF8E07038E07038E07038E0703800700000700000700000700000700000700000700000
700000700000700000700000700000700000700000700000700000700000700007FF0007
FF0007FF00151C7F9B18>I<FF83FEFF83FEFF83FE1C00701C00701C00701C00701C0070
1C00701C00701C00701C00701C00701C00701C00701C00701C00701C00701C00701C0070
1C00701C00700E00E00F01E00783C003FF8001FF00007C00171C809B18>I<FF07F8FF07
F8FF07F81C01C01C01C01C01C01C01C00E03800E03800E03800E03800F07800707000707
00070700070700038E00038E00038E00038E00018C0001DC0001DC0001DC0000D80000F8
0000F800007000151C7F9B18>I<FE03F8FE03F8FE03F87000707000707000703800E038
00E03800E03800E03800E038F8E038F8E039DCE039DCE019DCC019DCC019DCC0198CC01D
8DC01D8DC01D8DC01D8DC00D8D800D05800F07800F07800E0380151C7F9B18>I<7F8FE0
7F9FE07F8FE00E07000F0700070E00078E00039C0003DC0001F80001F80000F00000F000
00700000F00000F80001F80001DC00039E00038E00070F000707000E07800E03801E03C0
7F07F0FF8FF87F07F0151C7F9B18>I<FF07F8FF07F8FF07F81C01C01E03C00E03800F07
80070700070700038E00038E0001DC0001DC0001DC0000F80000F8000070000070000070
0000700000700000700000700000700000700001FC0003FE0001FC00151C7F9B18>I<3F
FFE07FFFE07FFFE07001C07003C0700780700700000F00001E00001C00003C0000780000
700000F00001E00001C00003C0000780000700000F00001E00E01C00E03C00E07800E070
00E0FFFFE0FFFFE0FFFFE0131C7E9B18>I<FFF8FFF8FFF8E000E000E000E000E000E000
E000E000E000E000E000E000E000E000E000E000E000E000E000E000E000E000E000E000
E000E000E000E000E000E000FFF8FFF8FFF80D24779F18>I<FFF8FFF8FFF80038003800
380038003800380038003800380038003800380038003800380038003800380038003800
38003800380038003800380038003800380038FFF8FFF8FFF80D247F9F18>93
D<7FFF00FFFF80FFFF807FFF0011047D7F18>95 D<1FE0003FF8007FFC00781E00300E00
00070000070000FF0007FF001FFF007F0700780700E00700E00700E00700F00F00781F00
3FFFF01FFBF007E1F014147D9318>97 D<7E0000FE00007E00000E00000E00000E00000E
00000E00000E3E000EFF800FFFC00FC1E00F80E00F00700E00700E00380E00380E00380E
00380E00380E00380F00700F00700F80E00FC1E00FFFC00EFF80063E00151C809B18>I<
01FE0007FF001FFF803E0780380300700000700000E00000E00000E00000E00000E00000
E000007000007001C03801C03E03C01FFF8007FF0001FC0012147D9318>I<001F80003F
80001F8000038000038000038000038000038003E3800FFB801FFF803C1F80380F807007
80700380E00380E00380E00380E00380E00380E00380700780700780380F803C1F801FFF
F00FFBF803E3F0151C7E9B18>I<01F00007FC001FFE003E0F00380780700380700380E0
01C0E001C0FFFFC0FFFFC0FFFFC0E000007000007001C03801C03E03C01FFF8007FF0001
FC0012147D9318>I<001F80007FC000FFE000E1E001C0C001C00001C00001C0007FFFC0
FFFFC0FFFFC001C00001C00001C00001C00001C00001C00001C00001C00001C00001C000
01C00001C00001C00001C0007FFF007FFF007FFF00131C7F9B18>I<01E1F007FFF80FFF
F81E1E301C0E003807003807003807003807003807001C0E001E1E001FFC001FF80039E0
003800001C00001FFE001FFFC03FFFE07801F0700070E00038E00038E00038E000387800
F07E03F01FFFC00FFF8001FC00151F7F9318>I<7E0000FE00007E00000E00000E00000E
00000E00000E00000E3E000EFF800FFFC00FC1C00F80E00F00E00E00E00E00E00E00E00E
00E00E00E00E00E00E00E00E00E00E00E00E00E00E00E07FC3FCFFE7FE7FC3FC171C809B
18>I<03800007C00007C00007C0000380000000000000000000000000007FC000FFC000
7FC00001C00001C00001C00001C00001C00001C00001C00001C00001C00001C00001C000
01C00001C00001C000FFFF00FFFF80FFFF00111D7C9C18>I<0038007C007C007C003800
000000000000000FFC1FFC0FFC001C001C001C001C001C001C001C001C001C001C001C00
1C001C001C001C001C001C001C001C001C001C001C6038F078FFF07FE03F800E277E9C18
>I<FE0000FE0000FE00000E00000E00000E00000E00000E00000E3FF00E7FF00E3FF00E
07800E0F000E1E000E3C000E78000EF0000FF8000FFC000F9C000F0E000E0F000E07000E
03800E03C0FFC7F8FFC7F8FFC7F8151C7F9B18>I<7FE000FFE0007FE00000E00000E000
00E00000E00000E00000E00000E00000E00000E00000E00000E00000E00000E00000E000
00E00000E00000E00000E00000E00000E00000E00000E0007FFFC0FFFFE07FFFC0131C7E
9B18>I<7CE0E000FFFBF8007FFFF8001F1F1C001E1E1C001E1E1C001C1C1C001C1C1C00
1C1C1C001C1C1C001C1C1C001C1C1C001C1C1C001C1C1C001C1C1C001C1C1C001C1C1C00
7F1F1F00FFBFBF807F1F1F001914819318>I<7E3E00FEFF807FFFC00FC1C00F80E00F00
E00E00E00E00E00E00E00E00E00E00E00E00E00E00E00E00E00E00E00E00E00E00E07FC3
FCFFE7FE7FC3FC1714809318>I<01F0000FFE001FFF003E0F803803807001C07001C0E0
00E0E000E0E000E0E000E0E000E0F001E07001C07803C03C07803E0F801FFF000FFE0001
F00013147E9318>I<7E3E00FEFF807FFFC00FC1E00F80E00F00700E00700E00380E0038
0E00380E00380E00380E00380F00700F00700F80E00FC1E00FFFC00EFF800E3E000E0000
0E00000E00000E00000E00000E00000E00007FC000FFE0007FC000151E809318>I<01E3
8007FB801FFF803E1F80380F80700780700780E00380E00380E00380E00380E00380E003
80700780700780380F803C1F801FFF800FFB8003E3800003800003800003800003800003
80000380000380003FF8003FF8003FF8151E7E9318>I<7F87E0FF9FF07FBFF803F87803
F03003E00003C00003C00003800003800003800003800003800003800003800003800003
80007FFE00FFFF007FFE0015147F9318>I<07F7003FFF007FFF00780F00E00700E00700
E007007C00007FE0001FFC0003FE00001F00600780E00380E00380F00380F80F00FFFF00
FFFC00E7F00011147D9318>I<0180000380000380000380000380007FFFC0FFFFC0FFFF
C00380000380000380000380000380000380000380000380000380000380400380E00380
E00380E001C1C001FFC000FF80003E0013197F9818>I<7E07E0FE0FE07E07E00E00E00E
00E00E00E00E00E00E00E00E00E00E00E00E00E00E00E00E00E00E00E00E00E00E01E00F
03E007FFFC03FFFE01FCFC1714809318>I<7F8FF0FF8FF87F8FF01E03C00E03800E0380
0E0380070700070700070700038E00038E00038E00038E0001DC0001DC0001DC0000F800
00F80000700015147F9318>I<FF8FF8FF8FF8FF8FF83800E03800E03800E01C01C01C01
C01C71C01CF9C01CF9C01CD9C01CD9C00DDD800DDD800DDD800D8D800F8F800F8F800707
0015147F9318>I<7F8FF07F9FF07F8FF0070700078E00039E0001DC0001F80000F80000
700000F00000F80001DC00039E00038E000707000F07807F8FF0FF8FF87F8FF015147F93
18>I<7F8FF0FF8FF87F8FF00E01C00E03800E0380070380070700070700038700038600
038E0001CE0001CE0000CC0000CC0000DC00007800007800007800007000007000007000
00F00000E00079E0007BC0007F80003F00001E0000151E7F9318>I<3FFFF07FFFF07FFF
F07001E07003C0700780000F00001E00003C0000F80001F00003C0000780000F00701E00
703C0070780070FFFFF0FFFFF0FFFFF014147F9318>I<0007E0001FE0007FE000780000
E00000E00000E00000E00000E00000E00000E00000E00000E00000E00000E00001E0007F
C000FF8000FF80007FC00001E00000E00000E00000E00000E00000E00000E00000E00000
E00000E00000E00000E000007800007FE0001FE00007E013247E9F18>I<7C0000FF0000
FFC00003C00000E00000E00000E00000E00000E00000E00000E00000E00000E00000E000
00E00000F000007FC0003FE0003FE0007FC000F00000E00000E00000E00000E00000E000
00E00000E00000E00000E00000E00000E00003C000FFC000FF00007C000013247E9F18>
125 D E /Fl 70 123 df<007E1F0001C1B1800303E3C00703C3C00E03C1800E01C0000E
01C0000E01C0000E01C0000E01C0000E01C000FFFFFC000E01C0000E01C0000E01C0000E
01C0000E01C0000E01C0000E01C0000E01C0000E01C0000E01C0000E01C0000E01C0000E
01C0000E01C0000E01C0000E01C0007F87FC001A1D809C18>11 D<007E0001C180030180
0703C00E03C00E01800E00000E00000E00000E00000E0000FFFFC00E01C00E01C00E01C0
0E01C00E01C00E01C00E01C00E01C00E01C00E01C00E01C00E01C00E01C00E01C00E01C0
0E01C07F87F8151D809C17>I<007FC001C1C00303C00703C00E01C00E01C00E01C00E01
C00E01C00E01C00E01C0FFFFC00E01C00E01C00E01C00E01C00E01C00E01C00E01C00E01
C00E01C00E01C00E01C00E01C00E01C00E01C00E01C00E01C07FCFF8151D809C17>I<60
60F0F0F8F86868080808080808101010102020404080800D0C7F9C15>34
D<00E0000001900000030800000308000007080000070800000708000007080000071000
0007100000072000000740000003C03FE003800F00038006000380040005C0040009C008
0010E0100030E010006070200060702000E0384000E03C4000E01C8000E00F0020E00700
20700780403009C0401830E18007C03E001B1F7E9D20>38 D<004000800100020006000C
000C0018001800300030007000600060006000E000E000E000E000E000E000E000E000E0
00E000E000E000600060006000700030003000180018000C000C00060002000100008000
400A2A7D9E10>40 D<800040002000100018000C000C0006000600030003000380018001
80018001C001C001C001C001C001C001C001C001C001C001C001C0018001800180038003
000300060006000C000C00180010002000400080000A2A7E9E10>I<60F0F07010101010
20204080040C7C830C>44 D<FFE0FFE00B0280890E>I<60F0F06004047C830C>I<03C00C
301818300C300C700E60066006E007E007E007E007E007E007E007E007E007E007E007E0
07E00760066006700E300C300C18180C3007E0101D7E9B15>48 D<030007003F00C70007
000700070007000700070007000700070007000700070007000700070007000700070007
000700070007000F80FFF80D1C7C9B15>I<07C01830201C400C400EF00FF80FF807F807
7007000F000E000E001C001C00380070006000C00180030006010C01180110023FFE7FFE
FFFE101C7E9B15>I<07E01830201C201C781E780E781E381E001C001C00180030006007
E00030001C001C000E000F000F700FF80FF80FF80FF00E401C201C183007E0101D7E9B15
>I<000C00000C00001C00003C00003C00005C0000DC00009C00011C00031C00021C0004
1C000C1C00081C00101C00301C00201C00401C00C01C00FFFFC0001C00001C00001C0000
1C00001C00001C00001C0001FFC0121C7F9B15>I<300C3FF83FF03FC020002000200020
002000200023E024302818301C200E000E000F000F000F600FF00FF00FF00F800E401E40
1C2038187007C0101D7E9B15>I<00F0030C06040C0E181E301E300C700070006000E3E0
E430E818F00CF00EE006E007E007E007E007E007600760077006300E300C18180C3003E0
101D7E9B15>I<4000007FFF807FFF007FFF004002008004008004008008000010000010
0000200000600000400000C00000C00001C0000180000180000380000380000380000380
00078000078000078000078000078000078000030000111D7E9B15>I<03E00C30100820
0C20066006600660067006780C3E083FB01FE007F007F818FC307E601E600FC007C003C0
03C003C00360026004300C1C1007E0101D7E9B15>I<03C00C301818300C700C600EE006
E006E007E007E007E007E0076007700F300F18170C2707C700060006000E300C780C7818
7010203030C00F80101D7E9B15>I<60F0F0600000000000000000000060F0F06004127C
910C>I<60F0F0600000000000000000000060F0F0701010101020204080041A7C910C>I<
7FFFFFC0FFFFFFE000000000000000000000000000000000000000000000000000000000
00000000FFFFFFE07FFFFFC01B0C7E8F20>61 D<0FE03038401CE00EF00EF00EF00E000C
001C0030006000C000800180010001000100010001000100000000000000000000000300
0780078003000F1D7E9C14>63 D<000600000006000000060000000F0000000F0000000F
00000017800000178000001780000023C0000023C0000023C0000041E0000041E0000041
E0000080F0000080F0000180F8000100780001FFF80003007C0002003C0002003C000600
3E0004001E0004001E000C001F001E001F00FF80FFF01C1D7F9C1F>65
D<FFFFC00F00F00F00380F003C0F001C0F001E0F001E0F001E0F001E0F001C0F003C0F00
780F01F00FFFE00F00780F003C0F001E0F000E0F000F0F000F0F000F0F000F0F000F0F00
1E0F001E0F003C0F0078FFFFE0181C7E9B1D>I<001F808000E061800180198007000780
0E0003801C0003801C00018038000180780000807800008070000080F0000000F0000000
F0000000F0000000F0000000F0000000F0000000F0000000700000807800008078000080
380000801C0001001C0001000E000200070004000180080000E03000001FC000191E7E9C
1E>I<FFFFC0000F00F0000F003C000F000E000F0007000F0007000F0003800F0003C00F
0001C00F0001C00F0001E00F0001E00F0001E00F0001E00F0001E00F0001E00F0001E00F
0001E00F0001C00F0001C00F0003C00F0003800F0007800F0007000F000E000F001C000F
007000FFFFC0001B1C7E9B20>I<FFFFFC0F003C0F000C0F00040F00040F00060F00020F
00020F02020F02000F02000F02000F06000FFE000F06000F02000F02000F02000F02010F
00010F00020F00020F00020F00060F00060F000C0F003CFFFFFC181C7E9B1C>I<FFFFF8
0F00780F00180F00080F00080F000C0F00040F00040F02040F02000F02000F02000F0600
0FFE000F06000F02000F02000F02000F02000F00000F00000F00000F00000F00000F0000
0F00000F8000FFF800161C7E9B1B>I<001F808000E0618001801980070007800E000380
1C0003801C00018038000180780000807800008070000080F0000000F0000000F0000000
F0000000F0000000F0000000F000FFF0F0000F8070000780780007807800078038000780
1C0007801C0007800E00078007000B800180118000E06080001F80001C1E7E9C21>I<FF
F3FFC00F003C000F003C000F003C000F003C000F003C000F003C000F003C000F003C000F
003C000F003C000F003C000F003C000FFFFC000F003C000F003C000F003C000F003C000F
003C000F003C000F003C000F003C000F003C000F003C000F003C000F003C000F003C00FF
F3FFC01A1C7E9B1F>I<FFF00F000F000F000F000F000F000F000F000F000F000F000F00
0F000F000F000F000F000F000F000F000F000F000F000F000F000F00FFF00C1C7F9B0F>
I<1FFF00F800780078007800780078007800780078007800780078007800780078007800
780078007800787078F878F878F878F0F040E021C01F00101D7F9B15>I<FFF8000F8000
0F00000F00000F00000F00000F00000F00000F00000F00000F00000F00000F00000F0000
0F00000F00000F00000F00000F00080F00080F00080F00180F00180F00100F00300F0070
0F01F0FFFFF0151C7E9B1A>76 D<FF8000FF800F8000F8000F8000F8000BC00178000BC0
0178000BC001780009E002780009E002780008F004780008F004780008F0047800087808
780008780878000878087800083C107800083C107800083C107800081E207800081E2078
00081E207800080F407800080F4078000807807800080780780008078078000803007800
1C03007800FF8307FF80211C7E9B26>I<FF007FC00F800E000F8004000BC0040009E004
0009E0040008F0040008F8040008780400083C0400083C0400081E0400080F0400080F04
00080784000807C4000803C4000801E4000801E4000800F40008007C0008007C0008003C
0008003C0008001C0008000C001C000C00FF8004001A1C7E9B1F>I<003F800000E0E000
0380380007001C000E000E001C0007003C00078038000380780003C0780003C0700001C0
F00001E0F00001E0F00001E0F00001E0F00001E0F00001E0F00001E0F00001E0700001C0
780003C0780003C0380003803C0007801C0007000E000E0007001C000380380000E0E000
003F80001B1E7E9C20>I<FFFF800F00E00F00780F003C0F001C0F001E0F001E0F001E0F
001E0F001E0F001C0F003C0F00780F00E00FFF800F00000F00000F00000F00000F00000F
00000F00000F00000F00000F00000F00000F0000FFF000171C7E9B1C>I<FFFF00000F01
E0000F0078000F003C000F001C000F001E000F001E000F001E000F001E000F001C000F00
3C000F0078000F01E0000FFF00000F03C0000F00E0000F00F0000F0078000F0078000F00
78000F0078000F0078000F0078000F0078100F0078100F0038100F003C20FFF01C200000
07C01C1D7E9B1F>82 D<07E0801C1980300580700380600180E00180E00080E00080E000
80F00000F800007C00007FC0003FF8001FFE0007FF0000FF80000F800007C00003C00001
C08001C08001C08001C0C00180C00180E00300D00200CC0C0083F800121E7E9C17>I<7F
FFFFC0700F01C0600F00C0400F0040400F0040C00F0020800F0020800F0020800F002000
0F0000000F0000000F0000000F0000000F0000000F0000000F0000000F0000000F000000
0F0000000F0000000F0000000F0000000F0000000F0000000F0000000F0000001F800003
FFFC001B1C7F9B1E>I<FFF07FC00F000E000F0004000F0004000F0004000F0004000F00
04000F0004000F0004000F0004000F0004000F0004000F0004000F0004000F0004000F00
04000F0004000F0004000F0004000F0004000F0004000F00040007000800078008000380
10000180100000C020000070C000001F00001A1D7E9B1F>I<0808101020204040404080
8080808080B0B0F8F8787830300D0C7A9C15>92 D<1FC000307000783800781C00301C00
001C00001C0001FC000F1C00381C00701C00601C00E01C40E01C40E01C40603C40304E80
1F870012127E9115>97 D<FC00001C00001C00001C00001C00001C00001C00001C00001C
00001C00001C00001C7C001D86001E03001C01801C01C01C00C01C00E01C00E01C00E01C
00E01C00E01C00E01C00C01C01C01C01801E030019060010F800131D7F9C17>I<07E00C
301878307870306000E000E000E000E000E000E00060007004300418080C3007C00E127E
9112>I<003F000007000007000007000007000007000007000007000007000007000007
0003E7000C1700180F00300700700700600700E00700E00700E00700E00700E00700E007
00600700700700300700180F000C370007C7E0131D7E9C17>I<03E00C301818300C700E
6006E006FFFEE000E000E000E00060007002300218040C1803E00F127F9112>I<00F801
8C071E061E0E0C0E000E000E000E000E000E00FFE00E000E000E000E000E000E000E000E
000E000E000E000E000E000E000E000E007FE00F1D809C0D>I<00038003C4C00C38C01C
3880181800381C00381C00381C00381C001818001C38000C300013C00010000030000018
00001FF8001FFF001FFF803003806001C0C000C0C000C0C000C06001803003001C0E0007
F800121C7F9215>I<FC00001C00001C00001C00001C00001C00001C00001C00001C0000
1C00001C00001C7C001C87001D03001E03801C03801C03801C03801C03801C03801C0380
1C03801C03801C03801C03801C03801C03801C0380FF9FF0141D7F9C17>I<18003C003C
0018000000000000000000000000000000FC001C001C001C001C001C001C001C001C001C
001C001C001C001C001C001C001C00FF80091D7F9C0C>I<00C001E001E000C000000000
000000000000000000000FE000E000E000E000E000E000E000E000E000E000E000E000E0
00E000E000E000E000E000E000E000E060E0F0C0F1C061803E000B25839C0D>I<FC0000
1C00001C00001C00001C00001C00001C00001C00001C00001C00001C00001C3FC01C0F00
1C0C001C08001C10001C20001C40001CE0001DE0001E70001C78001C38001C3C001C1C00
1C0E001C0F001C0F80FF9FE0131D7F9C16>I<FC001C001C001C001C001C001C001C001C
001C001C001C001C001C001C001C001C001C001C001C001C001C001C001C001C001C001C
001C00FF80091D7F9C0C>I<FC7E07E0001C838838001D019018001E01E01C001C01C01C
001C01C01C001C01C01C001C01C01C001C01C01C001C01C01C001C01C01C001C01C01C00
1C01C01C001C01C01C001C01C01C001C01C01C001C01C01C00FF8FF8FF8021127F9124>
I<FC7C001C87001D03001E03801C03801C03801C03801C03801C03801C03801C03801C03
801C03801C03801C03801C03801C0380FF9FF014127F9117>I<03F0000E1C0018060030
0300700380600180E001C0E001C0E001C0E001C0E001C0E001C060018070038030030018
06000E1C0003F00012127F9115>I<FC7C001D86001E03001C01801C01C01C00C01C00E0
1C00E01C00E01C00E01C00E01C00E01C01C01C01C01C01801E03001D06001CF8001C0000
1C00001C00001C00001C00001C00001C0000FF8000131A7F9117>I<03C1000C3300180B
00300F00700700700700E00700E00700E00700E00700E00700E00700600700700700300F
00180F000C370007C700000700000700000700000700000700000700000700003FE0131A
7E9116>I<FCE01D301E781E781C301C001C001C001C001C001C001C001C001C001C001C
001C00FFC00D127F9110>I<1F9030704030C010C010E010F8007F803FE00FF000F88038
8018C018C018E010D0608FC00D127F9110>I<04000400040004000C000C001C003C00FF
E01C001C001C001C001C001C001C001C001C001C101C101C101C101C100C100E2003C00C
1A7F9910>I<FC1F801C03801C03801C03801C03801C03801C03801C03801C03801C0380
1C03801C03801C03801C03801C07800C07800E1B8003E3F014127F9117>I<FF07E03C03
801C01001C01000E02000E020007040007040007040003880003880003D80001D00001D0
0000E00000E00000E00000400013127F9116>I<FF3FCFE03C0F03801C0701801C070100
1C0B01000E0B82000E0B82000E1182000711C4000711C4000720C40003A0E80003A0E800
03C0680001C0700001C0700001803000008020001B127F911E>I<7F8FF00F03800F0300
07020003840001C80001D80000F00000700000780000F800009C00010E00020E00060700
0403801E07C0FF0FF81512809116>I<FF07E03C03801C01001C01000E02000E02000704
0007040007040003880003880003D80001D00001D00000E00000E00000E0000040000040
00008000008000F08000F10000F300006600003C0000131A7F9116>I<7FFC7038603840
7040F040E041C003C0038007000F040E041C043C0C380870087038FFF80E127F9112>I
E /Fm 17 119 df<78FCFCFCFC7800000000000078FCFCFCFC7806127D910D>58
D<00038000000380000007C0000007C0000007C000000FE000000FE000001FF000001BF0
00001BF0000031F8000031F8000061FC000060FC0000E0FE0000C07E0000C07E0001803F
0001FFFF0003FFFF8003001F8003001F8006000FC006000FC00E000FE00C0007E0FFC07F
FEFFC07FFE1F1C7E9B24>65 D<001FE02000FFF8E003F80FE007C003E00F8001E01F0000
E03E0000E03E0000607E0000607C000060FC000000FC000000FC000000FC000000FC0000
00FC000000FC000000FC0000007C0000607E0000603E0000603E0000C01F0000C00F8001
8007C0030003F80E0000FFFC00001FE0001B1C7D9B22>67 D<FFFFF800FFFFFF000FC01F
C00FC007E00FC001F00FC001F80FC000F80FC000FC0FC0007C0FC0007C0FC0007E0FC000
7E0FC0007E0FC0007E0FC0007E0FC0007E0FC0007E0FC0007E0FC0007C0FC0007C0FC000
7C0FC000F80FC000F80FC001F00FC007E00FC01FC0FFFFFF00FFFFF8001F1C7E9B25>I<
07F8201FFEE03C07E07801E07000E0F000E0F00060F00060F80000FE0000FFE0007FFE00
3FFF003FFF800FFFC007FFE0007FE00003F00001F00000F0C000F0C000F0C000E0E000E0
F001C0FC03C0EFFF0083FC00141C7D9B1B>83 D<0FF8001C1E003E0F803E07803E07C01C
07C00007C0007FC007E7C01F07C03C07C07C07C0F807C0F807C0F807C0780BC03E13F80F
E1F815127F9117>97 D<03FC000E0E001C1F003C1F00781F00780E00F80000F80000F800
00F80000F80000F800007800007801803C01801C03000E0E0003F80011127E9115>99
D<01FC000F07001C03803C01C07801C07801E0F801E0F801E0FFFFE0F80000F80000F800
007800007C00603C00601E00C00F038001FC0013127F9116>101
D<1E003F003F003F003F001E00000000000000000000000000FF00FF001F001F001F001F
001F001F001F001F001F001F001F001F001F001F00FFE0FFE00B1E7F9D0E>105
D<FF00FF001F001F001F001F001F001F001F001F001F001F001F001F001F001F001F001F
001F001F001F001F001F001F001F001F001F00FFE0FFE00B1D7F9C0E>108
D<FF0FC0FF31E01F40F01F80F81F80F81F00F81F00F81F00F81F00F81F00F81F00F81F00
F81F00F81F00F81F00F81F00F8FFE7FFFFE7FF18127F911B>110
D<01FC000F07801C01C03C01E07800F07800F0F800F8F800F8F800F8F800F8F800F8F800
F87800F07800F03C01E01E03C00F078001FC0015127F9118>I<FE3E00FE47001E8F801E
8F801E8F801F07001F00001F00001F00001F00001F00001F00001F00001F00001F00001F
0000FFF000FFF00011127F9114>114 D<1FD830786018E018E018F000FF807FE07FF01F
F807FC007CC01CC01CE01CE018F830CFC00E127E9113>I<030003000300030007000700
0F000F003FFCFFFC1F001F001F001F001F001F001F001F001F001F0C1F0C1F0C1F0C0F08
079803F00E1A7F9913>I<FF07F8FF07F81F00F81F00F81F00F81F00F81F00F81F00F81F
00F81F00F81F00F81F00F81F00F81F00F81F01F80F01F80786FF01F8FF18127F911B>I<
FFC1FCFFC1FC1F00601F80E00F80C00FC0C007C18007C18003E30003E30001F60001F600
01FE0000FC0000FC0000780000780000300016127F9119>I E /Fn
53 123 df<00000F80003F8F80007F8F8000FF8F8001FF8F8003E0000003C0000007C000
0007C0000007C0000007C0000007C0000007C0000007C0000007C0000007C00000FFFF8F
80FFFF8F80FFFF8F8007C00F8007C00F8007C00F8007C00F8007C00F8007C00F8007C00F
8007C00F8007C00F8007C00F8007C00F8007C00F8007C00F8007C00F8007C00F8007C00F
8007C00F8007C00F8007C00F8007C00F8007C00F8007C00F8007C00F8007C00F80192B7F
AA20>12 D<FFFEFFFEFFFE0F037F8E14>45 D<F8F8F8F8F805057A8411>I<007F000001
FFC00007FFF0000FFFF8000FC1F8001F007C003F007E003E003E003C001E007C001F007C
001F007C001F0078000F00F8000F80F8000F80F8000F80F8000F80F8000F80F8000F80F8
000F80F8000F80F8000F80F8000F80F8000F80F8000F80F8000F80F8000F80F8000F8078
000F007C001F007C001F007C001F003E003E003E003E003F007E001F80FC000FC1F8000F
FFF80007FFF00001FFC000007F000019297EA71E>48 D<00180000380000F80007F800FF
F800FFF800F8F80000F80000F80000F80000F80000F80000F80000F80000F80000F80000
F80000F80000F80000F80000F80000F80000F80000F80000F80000F80000F80000F80000
F80000F80000F80000F80000F80000F80000F80000F80000F8007FFFF07FFFF07FFFF014
287BA71E>I<00FE0003FFC007FFE00FFFF01F03F83C00FC38007E78003E70003EF0001F
F0001F60001F20001F00001F00001F00001F00003E00003E00007C00007C0000F80001F0
0001E00003C0000780000F00001E00003C0000780000F00001E00003C0000780000F0000
1E00003C00007FFFFF7FFFFF7FFFFF7FFFFF18287EA71E>I<007F000001FFC00007FFF0
000FFFF8001FC1F8003E007C003C003E0078003E0038003E0010003E0000003E0000003E
0000003C0000007C000000FC000001F8000007F00000FFE00000FFC00000FFE00000FFF0
000001FC0000007C0000003E0000001F0000001F0000000F8000000F8000000F8000000F
8000000F8040000F8060001F00F0001F00F8003F007E007E003F81FC001FFFF8000FFFF0
0003FFE000007F000019297EA71E>I<0003F0000007F0000005F000000DF000000DF000
001DF0000039F0000039F0000079F0000079F00000F1F00000F1F00001E1F00003E1F000
03E1F00007C1F00007C1F0000F81F0000F81F0001F01F0001F01F0003E01F0007C01F000
7C01F000F801F000FFFFFF80FFFFFF80FFFFFF80FFFFFF800001F0000001F0000001F000
0001F0000001F0000001F0000001F0000001F0000001F0000001F00019277EA61E>I<3F
FFFC3FFFFC3FFFFC3FFFFC3E00003E00003E00003E00003E00003E00003E00003E00003E
00003E00003E3F003EFFC03FFFE03FFFF03FE1F83F807C3F003E3E003E00003E00001F00
001F00001F00001F00001F00001F00001F20001F60003E70003EF8007C7C00FC3F03F81F
FFF00FFFE007FF8000FE0018287EA61E>I<000FF000003FFC0000FFFC0001FFFC0003F8
0C0007E000000FC000000F8000001F0000001E0000003E0000003C0000007C0000007C00
00007C3FE000F8FFF000F9FFF800FBFFFC00FF807E00FF003E00FE003F00FC001F00FC00
1F00FC000F80F8000F80F8000F80F8000F80F8000F8078000F807C000F807C000F807C00
0F003E001F003E001F001F003E001F807C000FC1FC0007FFF80003FFF00001FFC000007F
000019297EA71E>I<FFFFFF80FFFFFF80FFFFFF80FFFFFF800000078000000F0000001E
0000003C0000007C00000078000000F0000001F0000001E0000003C0000007C000000780
00000F8000000F0000001F0000001F0000001E0000003E0000003E0000007C0000007C00
00007C00000078000000F8000000F8000000F8000000F8000000F8000001F0000001F000
0001F0000001F0000001F0000001F0000001F0000019277EA61E>I<007F000001FFC000
07FFF0000FFFF8001FC1FC003F007E003E003E007E003F007C001F007C001F007C001F00
7C001F007C001F003E003E003E003E001F007C000FC1F80007FFF00003FFE00003FFE000
0FFFF8001FC1FC003F007E003E003E007C001F007C001F00F8000F80F8000F80F8000F80
F8000F80F8000F80F8000F807C001F007C001F007E003F003F007E001FC1FC000FFFF800
07FFF00003FFE000007F000019297EA71E>I<007F000001FFC00003FFE0000FFFF0000F
C1F8001F007C003E007C007C003E007C001E007C001F00F8001F00F8001F00F8000F00F8
000F80F8000F80F8000F80F8000F80F8001F807C001F807C001F807E003F803E007F803F
00FF801FFFEF800FFFCF8007FF8F8003FE1F0000001F0000001F0000001E0000003E0000
003E0000007C0000007C000000F8001801F0001E07E0003FFFC0001FFF80000FFE000003
F8000019297EA71E>I<0001F000000003F800000003F800000007FC00000007BC000000
07BC0000000F3E0000000F1E0000000F1E0000001F1F0000001E1F0000001E0F0000003E
0F8000003C0F8000003C078000007C07C000007807C00000F803E00000F803E00000F003
E00001F001F00001F001F00001E001F00003E000F80003E000F80003C000F80007FFFFFC
0007FFFFFC000FFFFFFE000F80003E000F80003E001F00003F001F00001F001E00001F00
3E00000F803E00000F803C00000F807C000007C07C000007C078000007C0F8000003E0F8
000003E0232A7EA928>65 D<0001FF00000FFFE0003FFFF8007FFFF800FE01F801F80030
03F0001007C000000F8000001F8000001F0000003E0000003E0000007E0000007C000000
7C0000007C000000F8000000F8000000F8000000F8000000F8000000F8000000F8000000
F8000000F8000000F80000007C0000007C0000007C0000007E0000003E0000003E000000
1F0000001F8000000F80000007C0000003F0000401F8001C00FE00FC007FFFFC003FFFF8
000FFFE00001FF001E2C7CAA26>67 D<FFFFF00000FFFFFC0000FFFFFF0000F8003FC000
F80007E000F80003F000F80001F800F80000FC00F800007C00F800003E00F800001E00F8
00001F00F800000F00F800000F80F800000F80F800000780F8000007C0F8000007C0F800
0007C0F8000007C0F8000007C0F8000007C0F8000007C0F8000007C0F8000007C0F80000
07C0F800000780F800000F80F800000F80F800000F80F800001F00F800001F00F800003E
00F800007E00F800007C00F80000F800F80003F000F80007E000F8003FC000FFFFFF0000
FFFFFE0000FFFFF00000222A7BA92B>I<FFFFFFE0FFFFFFE0FFFFFFE0FFFFFFE0F80000
00F8000000F8000000F8000000F8000000F8000000F8000000F8000000F8000000F80000
00F8000000F8000000F8000000F8000000FFFFFF80FFFFFF80FFFFFF80FFFFFF80F80000
00F8000000F8000000F8000000F8000000F8000000F8000000F8000000F8000000F80000
00F8000000F8000000F8000000F8000000F8000000F8000000FFFFFFF0FFFFFFF0FFFFFF
F0FFFFFFF01C2A7BA924>I<FFFFFFC0FFFFFFC0FFFFFFC0FFFFFFC0F8000000F8000000
F8000000F8000000F8000000F8000000F8000000F8000000F8000000F8000000F8000000
F8000000F8000000F8000000F8000000FFFFFE00FFFFFE00FFFFFE00FFFFFE00F8000000
F8000000F8000000F8000000F8000000F8000000F8000000F8000000F8000000F8000000
F8000000F8000000F8000000F8000000F8000000F8000000F8000000F8000000F8000000
1A2A7BA922>I<F800003EF800003EF800003EF800003EF800003EF800003EF800003EF8
00003EF800003EF800003EF800003EF800003EF800003EF800003EF800003EF800003EF8
00003EF800003EFFFFFFFEFFFFFFFEFFFFFFFEFFFFFFFEF800003EF800003EF800003EF8
00003EF800003EF800003EF800003EF800003EF800003EF800003EF800003EF800003EF8
00003EF800003EF800003EF800003EF800003EF800003EF800003EF800003E1F2A7BA92A
>72 D<F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8
F8F8F8F8F8F8F8F8F8052A7AA911>I<F800003F80F800007F00F80000FE00F80001FC00
F80003F800F80007F000F8000FE000F8001FC000F8003F8000F8007F0000F800FE0000F8
01FC0000F803F80000F803F00000F807E00000F80FC00000F81F800000F83F800000F87F
C00000F8FFE00000F9FBE00000FBF3F00000FFE1F80000FFC0F80000FF807C0000FF007E
0000FE003E0000FC001F0000F8001F8000F8000F8000F80007C000F80007E000F80003E0
00F80001F000F80001F800F80000FC00F800007C00F800007E00F800003F00F800001F00
F800000F80F800000FC0222A7BA92A>75 D<FE0000007F80FE0000007F80FE0000007F80
FF000000FF80FB000000EF80FB800001EF80FB800001EF80FB800001EF80F9C00003CF80
F9C00003CF80F9C00003CF80F8E000078F80F8E000078F80F8F0000F8F80F8F0000F8F80
F870000F0F80F878001F0F80F878001F0F80F838001E0F80F83C003E0F80F83C003E0F80
F81E007C0F80F81E007C0F80F80E00780F80F80F00F80F80F80F00F80F80F80700F00F80
F80781F00F80F80781F00F80F80381E00F80F803C3E00F80F803C3E00F80F801C3C00F80
F801E7C00F80F800E7800F80F800E7800F80F800E7800F80F8007F000F80F8007F000F80
F8007F000F80F8003E000F80F80000000F80292A7BA934>77 D<FF00003EFF00003EFF80
003EFF80003EFBC0003EFBC0003EF9E0003EF9E0003EF9F0003EF8F0003EF8F8003EF878
003EF87C003EF83C003EF83E003EF81E003EF81F003EF81F003EF80F803EF80F803EF807
C03EF807C03EF803E03EF803E03EF801F03EF801F03EF800F03EF800F83EF800783EF800
7C3EF8003C3EF8003E3EF8001E3EF8001F3EF8000F3EF8000F3EF80007BEF80007BEF800
03FEF80003FEF80001FEF80001FE1F2A7BA92A>I<0001FC0000000FFF8000003FFFE000
007FFFF00001FE03FC0003F800FE0007E0003F0007C0001F000F80000F801F000007C01F
000007C03E000003E03E000003E07C000001F07C000001F07C000001F078000000F0F800
0000F8F8000000F8F8000000F8F8000000F8F8000000F8F8000000F8F8000000F8F80000
00F8F8000000F8F8000000F87C000001F07C000001F07C000001F07E000003F03E000003
E03F000007E01F000007C01F80000FC00FC0001F8007E0003F0007F0007F0003F800FE00
01FE03FC0000FFFFF800003FFFE000000FFF80000001FC0000252C7DAA2C>I<FFFFE000
FFFFFC00FFFFFF00F8003F80F8000FC0F80007E0F80001E0F80001F0F80000F0F80000F8
F80000F8F80000F8F80000F8F80000F8F80000F8F80000F0F80001F0F80001F0F80003E0
F8000FC0F8003F80FFFFFF00FFFFFE00FFFFF000F8000000F8000000F8000000F8000000
F8000000F8000000F8000000F8000000F8000000F8000000F8000000F8000000F8000000
F8000000F8000000F8000000F8000000F80000001D2A7BA926>I<FFFFE000FFFFFC00FF
FFFF00F8003FC0F80007E0F80001F0F80000F8F80000F8F800007CF800007CF800007CF8
00007CF800007CF800007CF80000F8F80000F8F80001F0F80007F0F8003FE0FFFFFF80FF
FFFF00FFFFFC00FFFFF000F801F000F800F800F8007800F8007C00F8003C00F8003E00F8
001F00F8001F00F8000F80F8000780F80007C0F80003E0F80003E0F80001F0F80001F0F8
0000F8F800007CF800007CF800003E1F2A7BA927>82 D<007FC00001FFF80007FFFE000F
FFFF001FC07F003F000F007E0006007C0000007C000000F8000000F8000000F8000000F8
000000F8000000FC0000007E0000007F0000003F8000001FF800000FFF800007FFE00003
FFF80000FFFC00000FFE000000FF0000003F0000001F8000000F8000000FC0000007C000
0007C0000007C0000007C0000007C0000007C000000F8060000F80F0001F00FC003F00FF
80FE007FFFFC001FFFF80007FFE00000FF80001A2C7DAA21>I<FFFFFFFFF0FFFFFFFFF0
FFFFFFFFF0FFFFFFFFF00000F800000000F800000000F800000000F800000000F8000000
00F800000000F800000000F800000000F800000000F800000000F800000000F800000000
F800000000F800000000F800000000F800000000F800000000F800000000F800000000F8
00000000F800000000F800000000F800000000F800000000F800000000F800000000F800
000000F800000000F800000000F800000000F800000000F800000000F800000000F80000
0000F800000000F800000000F800000000F80000242A7EA929>I<F8000000F8FC000000
F87C000001F07C000001F03E000003E03E000003E03E000003E01F000007C01F000007C0
1F800007C00F80000F800F80000F8007C0000F0007C0001F0007C0001F0003E0003E0003
E0003E0003E0003E0001F0007C0001F0007C0000F800780000F800F80000F800F800007C
00F000007C01F000007C01F000003E03E000003E03E000001E03C000001F07C000001F07
C000000F078000000F8F8000000F8F800000078F00000007CF00000003DE00000003DE00
000003FE00000001FC00000001FC00000001FC0000252A7FA928>86
D<F80001FC0000F8F80003FC0000F8FC0003FE0000F87C0003FE0001F07C0003DE0001F0
7C0007DE0001F03E0007DF0001E03E00079F0003E03E00078F0003E03E000F8F0003E01F
000F8F8003C01F000F0F8007C01F000F078007C01F001F07C007C00F801F07C007800F80
1E07C00F800F801E03C00F800F803E03E00F8007C03C03E00F0007C03C03E01F0007C03C
01E01F0003C07C01F01E0003E07801F01E0003E07800F03E0003E07800F03E0001E0F800
F03C0001E0F000F83C0001F0F000787C0001F0F000787C0000F0F00078780000F1E0007C
780000F9E0003C780000F9E0003CF8000079C0003CF0000079C0003CF0000079C0001CF0
00007BC0001EF000003B80001EE000003F80001FE000003F80000FE000001F80000FC000
001F00000FC000352A7FA938>I<01FE000FFF803FFFC03FFFE03C03F03001F00001F800
00F80000F80000F80000F80000F8007FF807FFF81FFFF83FE0F87F00F8FC00F8F800F8F8
00F8F800F8FC01F87E07F87FFFF83FFFF81FFCF80FE0F8151B7E9A1D>97
D<F80000F80000F80000F80000F80000F80000F80000F80000F80000F80000F80000F800
00F80000F80000F80000F83F00F9FFC0FBFFE0FFFFF0FF07F0FC01F8F800FCF8007CF800
7CF8007EF8003EF8003EF8003EF8003EF8003EF8003EF8003EF8007CF8007CF8007CFC00
F8FC01F8FF07F0FFFFE0FBFFC0F9FF80F87E00172A7BA91F>I<007FC001FFF007FFFC0F
FFFC1FC07C1F00083E00007C00007C00007C0000F80000F80000F80000F80000F80000F8
0000F800007C00007C00007E00003E00001F000C1FC07C0FFFFC07FFFC01FFF0007F8016
1B7E9A1B>I<00003E00003E00003E00003E00003E00003E00003E00003E00003E00003E
00003E00003E00003E00003E00003E00FC3E03FF3E07FFFE0FFFFE1FC1FE3F007E3E003E
7C003E7C003EFC003EF8003EF8003EF8003EF8003EF8003EF8003EF8003EFC003E7C003E
7C003E3E007E3F00FE1FC1FE0FFFFE07FFBE03FF3E00FC3E172A7EA91F>I<007E0003FF
8007FFC00FFFE01F83F03F00F03E00787C00787C003878003CFFFFFCFFFFFCFFFFFCFFFF
FCF80000F80000F800007800007C00007C00003E00003F000C1FC07C0FFFFC07FFFC01FF
F0007F80161B7E9A1B>I<001FC0007FC000FFC001FFC003F00003E00007C00007C00007
C00007C00007C00007C00007C00007C00007C000FFFE00FFFE00FFFE0007C00007C00007
C00007C00007C00007C00007C00007C00007C00007C00007C00007C00007C00007C00007
C00007C00007C00007C00007C00007C00007C00007C00007C00007C000122A7FA912>I<
00F8078003FE7FC00FFFFFC01FFFFFC01F07C0003E03E0003E03E0007C01F0007C01F000
7C01F0007C01F0007C01F0007C01F0003E03E0003E03E0001F07C0001FFFC0003FFF8000
3BFE000038F8000078000000780000003C0000003FFFC0003FFFF8001FFFFC001FFFFE00
3FFFFF007C007F00F8001F80F8000F80F8000F80F8000F80FC001F807E003F003F80FE00
3FFFFE000FFFF80007FFF00000FF80001A287E9A1E>I<F80000F80000F80000F80000F8
0000F80000F80000F80000F80000F80000F80000F80000F80000F80000F80000F83F00F8
FF80FBFFC0FFFFE0FF07E0FE03F0FC01F0FC01F0FC01F0F801F0F801F0F801F0F801F0F8
01F0F801F0F801F0F801F0F801F0F801F0F801F0F801F0F801F0F801F0F801F0F801F0F8
01F0F801F0142A7BA91F>I<F8F8F8F8F800000000000000000000F8F8F8F8F8F8F8F8F8
F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8052A7CA90E>I<F8F8F8F8F8F8F8F8F8F8F8
F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8052A7CA90E
>108 D<F83F003F00F8FFC0FFC0FBFFE3FFE0FFFFF7FFF0FF83F783F0FE01FE01F8FC00
FC00F8FC00FC00F8FC00FC00F8F800F800F8F800F800F8F800F800F8F800F800F8F800F8
00F8F800F800F8F800F800F8F800F800F8F800F800F8F800F800F8F800F800F8F800F800
F8F800F800F8F800F800F8F800F800F8F800F800F8F800F800F8F800F800F8251B7B9A30
>I<F83F00F8FF80FBFFC0FFFFE0FF07E0FE03F0FC01F0FC01F0FC01F0F801F0F801F0F8
01F0F801F0F801F0F801F0F801F0F801F0F801F0F801F0F801F0F801F0F801F0F801F0F8
01F0F801F0F801F0F801F0141B7B9A1F>I<007F000001FFC00007FFF0000FFFF8001FC1
FC003F007E003E003E007C001F007C001F0078000F00F8000F80F8000F80F8000F80F800
0F80F8000F80F8000F80F8000F807C001F007C001F007E003F003E003E003F007E001FC1
FC000FFFF80007FFF00001FFC000007F0000191B7E9A1E>I<F83F00F9FFC0FBFFE0FFFF
F0FF07F0FC01F8F800FCF800FCF8007CF8007EF8003EF8003EF8003EF8003EF8003EF800
3EF8003EF8007CF8007CF800FCFC00F8FC03F8FF07F0FFFFE0FBFFC0F9FF80F87E00F800
00F80000F80000F80000F80000F80000F80000F80000F80000F80000F80000F800001727
7B9A1F>I<F838F8F8F9F8FBF8FFC0FF00FE00FE00FC00FC00F800F800F800F800F800F8
00F800F800F800F800F800F800F800F800F800F800F8000D1B7B9A14>114
D<03FC001FFF803FFFC07FFFC07C07C0F80080F80000F80000F80000FC00007F80007FF8
003FFE001FFF0007FF8000FFC0000FE00007E00003E00003E04003E0E007E0FC0FC0FFFF
C07FFF801FFE0003F800131B7E9A17>I<07C00007C00007C00007C00007C00007C00007
C000FFFFC0FFFFC0FFFFC007C00007C00007C00007C00007C00007C00007C00007C00007
C00007C00007C00007C00007C00007C00007C00007C00007C00007C00007C04007E1C003
FFE003FFE001FF8000FC0013227FA116>I<F801F0F801F0F801F0F801F0F801F0F801F0
F801F0F801F0F801F0F801F0F801F0F801F0F801F0F801F0F801F0F801F0F801F0F801F0
F801F0F801F0F803F0F803F0FC0FF0FFFFF07FFDF03FF9F01FC1F0141B7B9A1F>I<F800
0F80FC000F807C001F007C001F007E001F003E003E003E003E001F003C001F007C001F00
7C000F8078000F80F8000F80F80007C0F00007C1F00007C1F00003E1E00003E3E00001E3
C00001E3C00001F3C00000F7800000F7800000F78000007F0000007F0000007F0000191B
7F9A1C>I<F800FC007CF801FC007C7C01FE00787C01DE00F87C01DE00F87C03DE00F83E
03CF00F03E03CF01F03E038F01F03E078F01F01F078F83E01F078783E01F070783E00F0F
0783C00F8F07C7C00F8F03C7C00F8E03C7C0078E03C780079E01C780079E01E78003DC01
EF0003DC01EF0003DC00EF0003D800EF0001F800FE0001F800FE0001F8007E00261B7F9A
29>I<7C000FC03E001F803F001F001F803E000F807C0007C0FC0003E0F80001F1F00001
FBE00000FFC000007FC000003F8000001F0000001F0000003F8000007FC00000FBC00000
F3E00001F1F00003E0F80007C07C000F807C000F803E001F001F003E000F807E000FC0FC
0007E01B1B809A1C>I<F8000F80FC000F807C001F007E001F003E003E003E003E001F00
3E001F007C001F007C000F807C000F80F80007C0F80007C0F00007C1F00003E1F00003E1
E00001E1E00001E3E00001F3C00000F3C00000F38000007380000073800000370000003F
0000003E0000001E0000001E0000003C0000003C0000003C0000007800000078000000F0
000000F000007FE000007FE000007FC000007F00000019277F9A1C>I<FFFFF8FFFFF8FF
FFF8FFFFF00003F00007E00007C0000FC0001F80001F00003E00007E0000FC0000F80001
F80003F00003E00007C0000FC0001F80001F00003F00007E00007FFFFCFFFFFCFFFFFCFF
FFFC161B7E9A1A>I E /Fo 15 122 df<07E00FF03FFC3FFC7FFEFFFFFFFFFFFFFFFFFF
FFFFFF7FFE3FFC3FFC0FF007E01010788F21>46 D<000001E00000000003F0000000000F
F0000000003FF000000000FFF00000000FFFF0000003FFFFF00000FFFFFFF00000FFFFFF
F00000FFFFFFF00000FFF0FFF00000FC00FFF000000000FFF000000000FFF000000000FF
F000000000FFF000000000FFF000000000FFF000000000FFF000000000FFF000000000FF
F000000000FFF000000000FFF000000000FFF000000000FFF000000000FFF000000000FF
F000000000FFF000000000FFF000000000FFF000000000FFF000000000FFF000000000FF
F000000000FFF000000000FFF000000000FFF000000000FFF000000000FFF000000000FF
F000000000FFF000000000FFF000000000FFF000000000FFF000000000FFF000000000FF
F000000000FFF000000000FFF000000000FFF000000000FFF000000000FFF000000000FF
F000000000FFF000000000FFF000000000FFF000000000FFF000000000FFF000000000FF
F000000000FFF000000000FFF000000000FFF000000000FFF000000000FFF000000000FF
F000003FFFFFFFFFC03FFFFFFFFFC03FFFFFFFFFC03FFFFFFFFFC03FFFFFFFFFC02A4478
C33B>49 D<0000FFE00000000FFFFE0000003FFFFFC00000FFFFFFF00003FFFFFFFC0007
FC01FFFE000FE0007FFF001FC0001FFF803F80000FFFC03FE00007FFE07FF80007FFE07F
FC0003FFF0FFFC0003FFF0FFFE0001FFF8FFFE0001FFF8FFFE0001FFF8FFFE0000FFFCFF
FE0000FFFC7FFC0000FFFC7FFC0000FFFC3FF80000FFFC1FF00000FFFC0FE00000FFFC00
000001FFFC00000001FFF800000001FFF800000001FFF000000003FFF000000003FFE000
000003FFE000000007FFC000000007FF800000000FFF800000001FFF000000001FFE0000
00003FFC000000007FF8000000007FE000000000FFC000000001FF8000000003FF000000
0007FC000000000FF8000000001FF0000000003FC0000000007F80007C0000FF00007C00
00FE00007C0001FC00007C0003F00000F80007E00000F8000FC00000F8001F800000F800
3F000001F8007C000003F800FFFFFFFFF801FFFFFFFFF003FFFFFFFFF007FFFFFFFFF00F
FFFFFFFFF01FFFFFFFFFF03FFFFFFFFFF07FFFFFFFFFF07FFFFFFFFFF0FFFFFFFFFFE0FF
FFFFFFFFE0FFFFFFFFFFE0FFFFFFFFFFE02E447AC33B>I<FFFFFFE0000000000003FFFF
FFFFFFFFF0000000000007FFFFFFFFFFFFF0000000000007FFFFFFFFFFFFF80000000000
0FFFFFFFFFFFFFF800000000000FFFFFFF001FFFF800000000000FFFF800001FFFFC0000
0000001EFFF800001FFFFC00000000001EFFF800001FBFFE00000000003CFFF800001FBF
FE00000000003CFFF800001F9FFF000000000078FFF800001F9FFF000000000078FFF800
001F8FFF8000000000F0FFF800001F8FFF8000000000F0FFF800001F87FFC000000001E0
FFF800001F87FFC000000001E0FFF800001F87FFC000000001E0FFF800001F83FFE00000
0003C0FFF800001F83FFE000000003C0FFF800001F81FFF00000000780FFF800001F81FF
F00000000780FFF800001F80FFF80000000F00FFF800001F80FFF80000000F00FFF80000
1F807FFC0000001E00FFF800001F807FFC0000001E00FFF800001F807FFC0000001E00FF
F800001F803FFE0000003C00FFF800001F803FFE0000003C00FFF800001F801FFF000000
7800FFF800001F801FFF0000007800FFF800001F800FFF800000F000FFF800001F800FFF
800000F000FFF800001F8007FFC00001E000FFF800001F8007FFC00001E000FFF800001F
8003FFE00003C000FFF800001F8003FFE00003C000FFF800001F8003FFE00003C000FFF8
00001F8001FFF000078000FFF800001F8001FFF000078000FFF800001F8000FFF8000F00
00FFF800001F8000FFF8000F0000FFF800001F80007FFC001E0000FFF800001F80007FFC
001E0000FFF800001F80003FFE003C0000FFF800001F80003FFE003C0000FFF800001F80
001FFF00780000FFF800001F80001FFF00780000FFF800001F80001FFF00780000FFF800
001F80000FFF80F00000FFF800001F80000FFF80F00000FFF800001F800007FFC1E00000
FFF800001F800007FFC1E00000FFF800001F800003FFE3C00000FFF800001F800003FFE3
C00000FFF800001F800001FFF7800000FFF800001F800001FFF7800000FFF800001F8000
01FFF7800000FFF800001F800000FFFF000000FFF800001F800000FFFF000000FFF80000
1F8000007FFE000000FFF800001F8000007FFE000000FFF800001F8000003FFC000000FF
F800001F8000003FFC000000FFF800001F8000001FF8000000FFF800001F8000001FF800
0000FFF800007FE000000FF0000000FFF800FFFFFFF0000FF00007FFFFFFFFFFFFFFF000
0FF00007FFFFFFFFFFFFFFF00007E00007FFFFFFFFFFFFFFF00007E00007FFFFFFFFFFFF
FFF00003C00007FFFFFFFF68477CC671>77 D<0007FFFC000000007FFFFFC0000001FFFF
FFF8000003FFFFFFFE000007FE001FFF000007FF0003FFC0000FFF8001FFE0000FFF8000
FFF0000FFF80007FF0000FFF80007FF8000FFF80007FF80007FF00003FFC0007FF00003F
FC0003FE00003FFC0000F800003FFC00000000003FFC00000000003FFC00000000003FFC
00000000003FFC00000007FFFFFC000000FFFFFFFC000007FFFFFFFC00003FFFE03FFC00
00FFFE003FFC0003FFF0003FFC0007FFC0003FFC000FFF00003FFC001FFE00003FFC003F
FC00003FFC007FF800003FFC007FF800003FFC00FFF000003FFC00FFF000003FFC00FFF0
00003FFC00FFF000003FFC00FFF000003FFC00FFF000007FFC007FF80000FFFC007FF800
01EFFC003FFC0003EFFC003FFF0007CFFF000FFFC03F8FFFF807FFFFFF07FFFC01FFFFFC
03FFFC007FFFF001FFFC0003FF80007FF8362E7DAD3A>97 D<00001FFFC0000000FFFFF8
000007FFFFFE00001FFFFFFF80007FFC00FFC000FFE001FFC001FFC003FFE003FF8003FF
E007FF0003FFE00FFE0003FFE00FFE0003FFE01FFC0001FFC01FFC0001FFC03FFC0000FF
803FFC00003E007FF8000000007FF8000000007FF800000000FFF800000000FFF8000000
00FFF800000000FFF800000000FFF800000000FFF800000000FFF800000000FFF8000000
00FFF800000000FFF8000000007FF8000000007FF8000000007FFC000000003FFC000000
003FFC000000001FFC000000F81FFE000000F80FFE000000F80FFF000001F007FF800003
F003FFC00007E001FFE0000FC000FFF0001F80007FFE00FF00001FFFFFFE000007FFFFF8
000000FFFFE00000001FFE00002D2E7CAD35>99 D<00001FFE00000001FFFFE0000007FF
FFF800001FFFFFFE00007FFC07FF0000FFE001FF8001FFC0007FC003FF80003FE007FF00
003FF00FFE00001FF01FFE00000FF81FFC00000FF83FFC00000FFC3FFC000007FC7FFC00
0007FC7FF8000007FC7FF8000007FE7FF8000007FEFFF8000007FEFFF8000007FEFFFFFF
FFFFFEFFFFFFFFFFFEFFFFFFFFFFFEFFFFFFFFFFFCFFF800000000FFF800000000FFF800
000000FFF8000000007FF8000000007FF8000000007FFC000000003FFC000000003FFC00
0000003FFC0000001C1FFE0000003E0FFE0000003E07FF0000007E07FF000000FC03FF80
0001F801FFC00003F0007FF0001FE0003FFE00FFC0001FFFFFFF800007FFFFFE000000FF
FFF80000000FFF80002F2E7DAD36>101 D<000000FFC000000007FFF80000003FFFFC00
0000FFFFFF000001FFC1FF000007FF03FF80000FFC03FF80000FF807FFC0001FF807FFC0
003FF007FFC0003FF007FFC0003FE003FF80007FE003FF80007FE001FF00007FE000FE00
007FE0003800007FE0000000007FE0000000007FE0000000007FE0000000007FE0000000
007FE0000000007FE0000000007FE0000000007FE0000000007FE0000000FFFFFFFE0000
FFFFFFFE0000FFFFFFFE0000FFFFFFFE0000FFFFFFFE0000007FF0000000007FF0000000
007FF0000000007FF0000000007FF0000000007FF0000000007FF0000000007FF0000000
007FF0000000007FF0000000007FF0000000007FF0000000007FF0000000007FF0000000
007FF0000000007FF0000000007FF0000000007FF0000000007FF0000000007FF0000000
007FF0000000007FF0000000007FF0000000007FF0000000007FF0000000007FF0000000
007FF0000000007FF0000000007FF0000000007FF0000000007FF0000000007FF0000000
007FF0000000007FF0000000007FF0000000007FF00000003FFFFFF800003FFFFFF80000
3FFFFFF800003FFFFFF800003FFFFFF800002A487DC724>I<00FC0001FE0003FF0007FF
800FFFC01FFFE01FFFE01FFFE01FFFE01FFFE01FFFE00FFFC007FF8003FF0001FE0000FC
00000000000000000000000000000000000000000000000000000000000000000000007F
C0FFFFC0FFFFC0FFFFC0FFFFC0FFFFC003FFC001FFC001FFC001FFC001FFC001FFC001FF
C001FFC001FFC001FFC001FFC001FFC001FFC001FFC001FFC001FFC001FFC001FFC001FF
C001FFC001FFC001FFC001FFC001FFC001FFC001FFC001FFC001FFC001FFC001FFC001FF
C001FFC001FFC001FFC001FFC0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF18497CC820>105
D<007FC000FFFFC000FFFFC000FFFFC000FFFFC000FFFFC00003FFC00001FFC00001FFC0
0001FFC00001FFC00001FFC00001FFC00001FFC00001FFC00001FFC00001FFC00001FFC0
0001FFC00001FFC00001FFC00001FFC00001FFC00001FFC00001FFC00001FFC00001FFC0
0001FFC00001FFC00001FFC00001FFC00001FFC00001FFC00001FFC00001FFC00001FFC0
0001FFC00001FFC00001FFC00001FFC00001FFC00001FFC00001FFC00001FFC00001FFC0
0001FFC00001FFC00001FFC00001FFC00001FFC00001FFC00001FFC00001FFC00001FFC0
0001FFC00001FFC00001FFC00001FFC00001FFC00001FFC00001FFC00001FFC00001FFC0
0001FFC00001FFC00001FFC00001FFC000FFFFFF80FFFFFF80FFFFFF80FFFFFF80FFFFFF
8019487CC720>108 D<007FC001FFC00000FFFFC00FFFF80000FFFFC03FFFFE0000FFFF
C0FFFFFF0000FFFFC1FC07FF8000FFFFC3E003FFC00003FFC7C001FFC00001FFCF0001FF
E00001FFDE0000FFE00001FFDC0000FFE00001FFFC0000FFF00001FFF80000FFF00001FF
F00000FFF00001FFF00000FFF00001FFF00000FFF00001FFE00000FFF00001FFE00000FF
F00001FFE00000FFF00001FFE00000FFF00001FFE00000FFF00001FFE00000FFF00001FF
E00000FFF00001FFE00000FFF00001FFE00000FFF00001FFE00000FFF00001FFE00000FF
F00001FFE00000FFF00001FFE00000FFF00001FFE00000FFF00001FFE00000FFF00001FF
E00000FFF00001FFE00000FFF00001FFE00000FFF00001FFE00000FFF00001FFE00000FF
F00001FFE00000FFF00001FFE00000FFF00001FFE00000FFF00001FFE00000FFF00001FF
E00000FFF00001FFE00000FFF000FFFFFFC07FFFFFE0FFFFFFC07FFFFFE0FFFFFFC07FFF
FFE0FFFFFFC07FFFFFE0FFFFFFC07FFFFFE03B2E7CAD42>110 D<00000FFF0000000000
FFFFF000000007FFFFFE0000001FFFFFFF8000003FFC03FFC00000FFE0007FF00001FF80
001FF80003FF00000FFC0007FE000007FE000FFE000007FF000FFC000003FF001FFC0000
03FF803FFC000003FFC03FF8000001FFC03FF8000001FFC07FF8000001FFE07FF8000001
FFE07FF8000001FFE0FFF8000001FFF0FFF8000001FFF0FFF8000001FFF0FFF8000001FF
F0FFF8000001FFF0FFF8000001FFF0FFF8000001FFF0FFF8000001FFF0FFF8000001FFF0
FFF8000001FFF07FF8000001FFE07FF8000001FFE07FF8000001FFE07FF8000001FFE03F
FC000003FFC03FFC000003FFC01FFC000003FF801FFE000007FF800FFE000007FF0007FF
00000FFE0003FF80001FFC0001FFC0003FF80000FFE0007FF000007FFC03FFE000001FFF
FFFF80000007FFFFFE00000000FFFFF0000000000FFF000000342E7DAD3B>I<00FF803F
8000FFFF80FFF000FFFF83FFFC00FFFF87FFFE00FFFF8FC3FF00FFFF8F07FF0003FF9E0F
FF8001FFBC0FFF8001FFB80FFF8001FFF80FFF8001FFF00FFF8001FFF007FF0001FFF007
FF0001FFE003FE0001FFE000F80001FFE000000001FFE000000001FFC000000001FFC000
000001FFC000000001FFC000000001FFC000000001FFC000000001FFC000000001FFC000
000001FFC000000001FFC000000001FFC000000001FFC000000001FFC000000001FFC000
000001FFC000000001FFC000000001FFC000000001FFC000000001FFC000000001FFC000
000001FFC000000001FFC000000001FFC000000001FFC0000000FFFFFFE00000FFFFFFE0
0000FFFFFFE00000FFFFFFE00000FFFFFFE00000292E7CAD31>114
D<000FFF00E0007FFFF3E001FFFFFFE007FFFFFFE00FF800FFE01FC0001FE03F80000FE0
3F000007E07F000003E07F000003E0FF000003E0FF000003E0FF800003E0FFC0000000FF
F0000000FFFE000000FFFFF800007FFFFFC0007FFFFFF0003FFFFFFC001FFFFFFF000FFF
FFFF8007FFFFFFC003FFFFFFE000FFFFFFF0003FFFFFF00003FFFFF800001FFFF8000000
FFFC0000001FFC7800000FFCF8000007FCF8000003FCFC000003FCFC000003FCFE000003
F8FE000003F8FF000003F8FF800007F0FFC0000FF0FFF0001FE0FFFC00FFC0FFFFFFFF80
FC7FFFFE00F81FFFF800E003FF8000262E7CAD2F>I<7FFFFFC000FFFF807FFFFFC000FF
FF807FFFFFC000FFFF807FFFFFC000FFFF807FFFFFC000FFFF8000FFF000000FE00000FF
F800000FC00000FFF800000FC000007FFC00000F8000007FFC00001F8000003FFC00001F
0000003FFE00003F0000001FFE00003E0000001FFF00007E0000000FFF00007C0000000F
FF8000FC00000007FF8000F800000007FFC001F800000003FFC001F000000003FFE003F0
00000003FFE003F000000001FFF003E000000001FFF007E000000000FFF007C000000000
FFF80FC0000000007FF80F80000000007FFC1F80000000003FFC1F00000000003FFE3F00
000000001FFE3E00000000001FFF7E00000000000FFF7C00000000000FFFFC0000000000
0FFFFC000000000007FFF8000000000007FFF8000000000003FFF0000000000003FFF000
0000000001FFE0000000000001FFE0000000000000FFC0000000000000FFC00000000000
007F800000000000007F800000000000003F000000000000003F000000000000003F0000
00000000003E000000000000007E000000000000007C00000000000000FC000000001F80
00F8000000003FC001F8000000007FE001F000000000FFF003F000000000FFF003E00000
0000FFF007E000000000FFF00FC000000000FFF01F8000000000FFF03F80000000007FE0
7F00000000007F43FE00000000003FFFF800000000001FFFF0000000000007FFC0000000
000001FE00000000000039427EAD3F>121 D E /Fp 8 117 df<0003FF8000001FFFF000
007FFFFE0000FE03FF0001F000FF8003C000FFC00780007FE00FF0007FF00FF8007FF01F
FC007FF81FFE007FF81FFE007FF81FFE007FF81FFE007FF81FFE007FF80FFC007FF007F8
007FF003F0007FF0000000FFE0000000FFC0000001FF80000001FF00000003FE00000007
FC0000001FF000000FFFC000000FFF8000000FFFF800000003FE00000000FF800000007F
E00000003FF00000003FF80000003FFC0000001FFC0000001FFE0000001FFE0200001FFF
1FC0001FFF3FE0001FFF7FF0001FFF7FF0001FFFFFF8001FFFFFF8001FFFFFF8001FFEFF
F8001FFEFFF0001FFE7FF0003FFC7FE0003FFC3FC0003FF81F80007FF01FE000FFE007FC
03FFC003FFFFFF0001FFFFFE00003FFFF0000007FF800028397CB731>51
D<0000001FFF000030000001FFFFE000F000000FFFFFFC01F000007FFFFFFE03F00001FF
FE007F87F00003FFE0000FCFF0000FFF000003FFF0001FFC000001FFF0003FF80000007F
F0007FF00000003FF000FFC00000003FF001FFC00000001FF003FF800000000FF007FF00
0000000FF00FFF0000000007F00FFE0000000007F01FFE0000000003F01FFE0000000003
F03FFC0000000003F03FFC0000000001F03FFC0000000001F07FFC0000000001F07FF800
00000001F07FF80000000000007FF8000000000000FFF8000000000000FFF80000000000
00FFF8000000000000FFF8000000000000FFF8000000000000FFF8000000000000FFF800
0000000000FFF8000000000000FFF8000000000000FFF8000000000000FFF80000000000
007FF80000000000007FF80000000000007FF80000000000007FFC0000000000F03FFC00
00000000F03FFC0000000000F03FFC0000000000F01FFE0000000000F01FFE0000000001
E00FFE0000000001E00FFF0000000001E007FF0000000003C003FF8000000003C001FFC0
000000078000FFE00000000F00007FF00000001F00003FF80000003E00001FFC0000007C
00000FFF000001F8000003FFE00007F0000001FFFE003FC00000007FFFFFFF000000000F
FFFFFC0000000001FFFFF000000000001FFF0000003C3D7BBB47>67
D<001FFF00000001FFFFF0000003FFFFFC000007F007FE00000FF801FF00001FFC00FF80
001FFC007FC0001FFC007FE0001FFC003FE0000FF8003FF0000FF8003FF00007F0003FF0
0001C0003FF0000000003FF0000000003FF0000000003FF0000000FFFFF000000FFFFFF0
00007FF83FF00001FF803FF00007FE003FF0000FF8003FF0001FF0003FF0003FE0003FF0
007FE0003FF0007FE0003FF000FFC0003FF000FFC0003FF000FFC0003FF000FFC0003FF0
00FFC0007FF0007FE0007FF0007FE000DFF0003FF0039FF8001FFC0F0FFFF007FFFE0FFF
F001FFFC07FFF0003FE000FFF02C267DA530>97 D<0001FFC000000FFFF800003FFFFE00
00FF80FF0001FE003F8007FC001FC00FF8000FE00FF8000FF01FF00007F03FF00007F83F
F00007F87FE00007F87FE00003FC7FE00003FC7FE00003FCFFE00003FCFFFFFFFFFCFFFF
FFFFFCFFFFFFFFFCFFE0000000FFE0000000FFE0000000FFE00000007FE00000007FE000
00007FE00000003FE00000003FF000003C1FF000003C1FF000003C0FF800007807FC0000
F803FE0001F001FF0007E000FFC03FC0003FFFFF000007FFFC000000FFE00026267DA52D
>101 D<00FF00000000FFFF00000000FFFF00000000FFFF00000000FFFF0000000007FF
0000000003FF0000000003FF0000000003FF0000000003FF0000000003FF0000000003FF
0000000003FF0000000003FF0000000003FF0000000003FF0000000003FF0000000003FF
0000000003FF0000000003FF0000000003FF0000000003FF0000000003FF007FC00003FF
01FFF80003FF07FFFC0003FF0F03FE0003FF1C01FF0003FF3001FF8003FF6000FF8003FF
E000FFC003FFC000FFC003FF8000FFC003FF8000FFC003FF8000FFC003FF0000FFC003FF
0000FFC003FF0000FFC003FF0000FFC003FF0000FFC003FF0000FFC003FF0000FFC003FF
0000FFC003FF0000FFC003FF0000FFC003FF0000FFC003FF0000FFC003FF0000FFC003FF
0000FFC003FF0000FFC003FF0000FFC003FF0000FFC003FF0000FFC003FF0000FFC003FF
0000FFC003FF0000FFC003FF0000FFC0FFFFFC3FFFFFFFFFFC3FFFFFFFFFFC3FFFFFFFFF
FC3FFFFF303C7CBB37>104 D<00FF01FF8000FFFF0FFFF000FFFF3FFFFC00FFFFFE03FF
00FFFFF000FF8003FFC0007FC003FF80003FE003FF00003FF003FF00001FF803FF00001F
FC03FF00000FFC03FF00000FFE03FF00000FFE03FF000007FE03FF000007FF03FF000007
FF03FF000007FF03FF000007FF03FF000007FF03FF000007FF03FF000007FF03FF000007
FF03FF000007FF03FF000007FE03FF000007FE03FF00000FFE03FF00000FFC03FF00000F
FC03FF00001FF803FF00001FF803FF00003FF003FF80003FE003FFC0007FC003FFF001FF
8003FFFC07FF0003FF3FFFFC0003FF0FFFF00003FF01FF000003FF0000000003FF000000
0003FF0000000003FF0000000003FF0000000003FF0000000003FF0000000003FF000000
0003FF0000000003FF0000000003FF0000000003FF0000000003FF00000000FFFFFC0000
00FFFFFC000000FFFFFC000000FFFFFC00000030377DA537>112
D<00FE03F000FFFE0FFE00FFFE1FFF00FFFE3C3F80FFFE707FC007FE60FFE003FEE0FFE0
03FEC0FFE003FFC0FFE003FF807FC003FF807FC003FF803F8003FF800E0003FF00000003
FF00000003FF00000003FF00000003FF00000003FF00000003FF00000003FF00000003FF
00000003FF00000003FF00000003FF00000003FF00000003FF00000003FF00000003FF00
000003FF00000003FF00000003FF00000003FF00000003FF000000FFFFFE0000FFFFFE00
00FFFFFE0000FFFFFE000023267DA529>114 D<00078000000780000007800000078000
00078000000F8000000F8000000F8000000F8000001F8000001F8000003F8000003F8000
007F800000FF800001FF800007FF80001FFFFFF0FFFFFFF0FFFFFFF0FFFFFFF001FF8000
01FF800001FF800001FF800001FF800001FF800001FF800001FF800001FF800001FF8000
01FF800001FF800001FF800001FF800001FF800001FF800001FF800001FF800001FF8000
01FF803C01FF803C01FF803C01FF803C01FF803C01FF803C01FF803C01FF803C00FF8078
00FFC078007FC070003FE0E0001FFFC00007FF800001FF001E377EB626>116
D E /Fq 83 124 df<001F83E000F06E3001C078780380F8780300F03007007000070070
000700700007007000070070000700700007007000FFFFFF800700700007007000070070
000700700007007000070070000700700007007000070070000700700007007000070070
000700700007007000070070000700700007007000070070007FE3FF001D20809F1B>11
D<003F0000E0C001C0C00381E00701E00701E00700000700000700000700000700000700
00FFFFE00700E00700E00700E00700E00700E00700E00700E00700E00700E00700E00700
E00700E00700E00700E00700E00700E00700E00700E07FC3FE1720809F19>I<003FE000
E0E001C1E00381E00700E00700E00700E00700E00700E00700E00700E00700E0FFFFE007
00E00700E00700E00700E00700E00700E00700E00700E00700E00700E00700E00700E007
00E00700E00700E00700E00700E00700E07FE7FE1720809F19>I<001F81F80000F04F04
0001C07C06000380F80F000300F00F000700F00F00070070000007007000000700700000
070070000007007000000700700000FFFFFFFF0007007007000700700700070070070007
007007000700700700070070070007007007000700700700070070070007007007000700
700700070070070007007007000700700700070070070007007007000700700700070070
07007FE3FE3FF02420809F26>I<001F81FF0000F06F070001C07C0F000380F80F000300
F00700070070070007007007000700700700070070070007007007000700700700070070
0700FFFFFFFF000700700700070070070007007007000700700700070070070007007007
000700700700070070070007007007000700700700070070070007007007000700700700
070070070007007007000700700700070070070007007007007FE3FE3FF02420809F26>
I<70F8F8F8F8F8F8F8707070707070707070702020202020000000000070F8F8F8700521
7CA00D>33 D<7038F87CFC7EFC7E743A0402040204020804080410081008201040200F0E
7E9F17>I<00780000008400000184000003020000070200000702000007020000070200
00070400000704000007080000070800000310000003A00FFC03C003E0038001C001C000
8001C0010003E0010004E0020008F00200187004003078080070380800701C1000F01E10
00F00E2000F0074000F003C0087003C0087801C010380670301C18386007E00F801E227E
A023>38 D<70F8FCFC74040404080810102040060E7C9F0D>I<00200040008001000200
06000C000C00180018003000300030007000600060006000E000E000E000E000E000E000
E000E000E000E000E000E0006000600060007000300030003000180018000C000C000600
020001000080004000200B2E7DA112>I<800040002000100008000C0006000600030003
0001800180018001C000C000C000C000E000E000E000E000E000E000E000E000E000E000
E000E000C000C000C001C001800180018003000300060006000C00080010002000400080
000B2E7DA112>I<01800180018001800180C183F18F399C0FF003C003C00FF0399CF18F
C1830180018001800180018010147DA117>I<0006000000060000000600000006000000
060000000600000006000000060000000600000006000000060000000600000006000000
06000000060000FFFFFFF0FFFFFFF0000600000006000000060000000600000006000000
060000000600000006000000060000000600000006000000060000000600000006000000
0600001C207D9A23>I<70F8FCFC74040404080810102040060E7C840D>I<FFC0FFC00A02
7F8A0F>I<70F8F8F87005057C840D>I<000100030003000600060006000C000C000C0018
0018001800300030003000600060006000C000C000C00180018001800300030003000600
060006000C000C000C00180018001800300030003000600060006000C000C000C000102D
7DA117>I<03F0000E1C001C0E00180600380700700380700380700380700380F003C0F0
03C0F003C0F003C0F003C0F003C0F003C0F003C0F003C0F003C0F003C0F003C0F003C070
03807003807003807807803807001806001C0E000E1C0003F000121F7E9D17>I<018003
800F80F38003800380038003800380038003800380038003800380038003800380038003
800380038003800380038003800380038007C0FFFE0F1E7C9D17>I<03F0000C1C00100E
00200700400780800780F007C0F803C0F803C0F803C02007C00007C0000780000780000F
00000E00001C0000380000700000600000C0000180000300000600400C00401800401000
803FFF807FFF80FFFF80121E7E9D17>I<03F0000C1C00100E00200F00780F8078078078
0780380F80000F80000F00000F00000E00001C0000380003F000003C00000E00000F0000
07800007800007C02007C0F807C0F807C0F807C0F00780400780400F00200E001C3C0003
F000121F7E9D17>I<000600000600000E00000E00001E00002E00002E00004E00008E00
008E00010E00020E00020E00040E00080E00080E00100E00200E00200E00400E00C00E00
FFFFF0000E00000E00000E00000E00000E00000E00000E0000FFE0141E7F9D17>I<1803
001FFE001FFC001FF8001FE00010000010000010000010000010000010000011F000161C
00180E001007001007800003800003800003C00003C00003C07003C0F003C0F003C0E003
80400380400700200600100E000C380003E000121F7E9D17>I<007C000182000701000E
03800C07801C0780380300380000780000700000700000F1F000F21C00F40600F80700F8
0380F80380F003C0F003C0F003C0F003C0F003C07003C07003C070038038038038070018
07000C0E00061C0001F000121F7E9D17>I<4000007FFFC07FFF807FFF80400100800200
80020080040000080000080000100000200000200000400000400000C00000C00001C000
018000038000038000038000038000078000078000078000078000078000078000078000
030000121F7D9D17>I<03F0000C0C001006003003002001806001806001806001807001
807803003E03003F06001FC8000FF00003F80007FC000C7E00103F00300F806003804001
C0C001C0C000C0C000C0C000C0C000806001802001001002000C0C0003F000121F7E9D17
>I<03F0000E18001C0C00380600380700700700700380F00380F00380F003C0F003C0F0
03C0F003C0F003C07007C07007C03807C0180BC00E13C003E3C000038000038000038000
0700300700780600780E00700C002018001070000FC000121F7E9D17>I<70F8F8F87000
00000000000000000070F8F8F87005147C930D>I<70F8F8F87000000000000000000000
70F0F8F878080808101010202040051D7C930D>I<7FFFFFE0FFFFFFF000000000000000
00000000000000000000000000000000000000000000000000FFFFFFF07FFFFFE01C0C7D
9023>61 D<0FC0307040384038E03CF03CF03C603C0038007000E000C001800180010003
000200020002000200020002000000000000000000000007000F800F800F8007000E207D
9F15>63 D<000100000003800000038000000380000007C0000007C0000007C0000009E0
000009E0000009E0000010F0000010F0000010F00000207800002078000020780000403C
0000403C0000403C0000801E0000801E0000FFFE0001000F0001000F0001000F00020007
800200078002000780040003C00E0003C01F0007E0FFC03FFE1F207F9F22>65
D<FFFFE0000F80380007801E0007801F0007800F0007800F8007800F8007800F8007800F
8007800F8007800F0007801F0007801E0007803C0007FFF00007803C0007801E0007800F
0007800F8007800780078007C0078007C0078007C0078007C0078007C00780078007800F
8007800F0007801F000F803C00FFFFF0001A1F7E9E20>I<000FC040007030C001C009C0
038005C0070003C00E0001C01E0000C01C0000C03C0000C07C0000407C00004078000040
F8000000F8000000F8000000F8000000F8000000F8000000F8000000F8000000F8000000
780000007C0000407C0000403C0000401C0000401E0000800E0000800700010003800200
01C0040000703800000FC0001A217D9F21>I<FFFFE0000F803C0007801E000780070007
800380078003C0078001E0078001E0078001F0078000F0078000F0078000F8078000F807
8000F8078000F8078000F8078000F8078000F8078000F8078000F8078000F0078000F007
8000F0078001E0078001E0078003C0078003800780070007800E000F803C00FFFFE0001D
1F7E9E23>I<FFFFFF000F800F0007800300078003000780010007800180078000800780
008007800080078080800780800007808000078080000781800007FF8000078180000780
800007808000078080000780800007800020078000200780002007800040078000400780
0040078000C0078000C0078001800F800F80FFFFFF801B1F7E9E1F>I<FFFFFF000F800F
000780030007800300078001000780018007800080078000800780008007800080078080
000780800007808000078080000781800007FF8000078180000780800007808000078080
000780800007800000078000000780000007800000078000000780000007800000078000
000FC00000FFFE0000191F7E9E1E>I<FFF8FFF80F800F8007800F0007800F0007800F00
07800F0007800F0007800F0007800F0007800F0007800F0007800F0007800F0007800F00
07FFFF0007800F0007800F0007800F0007800F0007800F0007800F0007800F0007800F00
07800F0007800F0007800F0007800F0007800F0007800F000F800F80FFF8FFF81D1F7E9E
22>72 D<FFFC0FC007800780078007800780078007800780078007800780078007800780
07800780078007800780078007800780078007800780078007800FC0FFFC0E1F7F9E10>
I<0FFFC0007C00003C00003C00003C00003C00003C00003C00003C00003C00003C00003C
00003C00003C00003C00003C00003C00003C00003C00003C00003C00003C00003C00203C
00F83C00F83C00F83C00F0380040780040700030E0000F800012207E9E17>I<FFFE000F
C00007800007800007800007800007800007800007800007800007800007800007800007
800007800007800007800007800007800007800007800207800207800207800207800607
800407800407800C07801C0F807CFFFFFC171F7E9E1C>76 D<FF80001FF80F80001F8007
80001F0005C0002F0005C0002F0005C0002F0004E0004F0004E0004F000470008F000470
008F000470008F000438010F000438010F000438010F00041C020F00041C020F00041C02
0F00040E040F00040E040F00040E040F000407080F000407080F000407080F000403900F
000403900F000401E00F000401E00F000401E00F000E00C00F001F00C01F80FFE0C1FFF8
251F7E9E2A>I<FF803FF807C007C007C0038005E0010005E0010004F001000478010004
780100043C0100043C0100041E0100040F0100040F010004078100040781000403C10004
01E1000401E1000400F1000400F1000400790004003D0004003D0004001F0004001F0004
000F0004000700040007000E0003001F000300FFE001001D1F7E9E22>I<001F800000F0
F00001C0380007801E000F000F000E0007001E0007803C0003C03C0003C07C0003E07800
01E0780001E0F80001F0F80001F0F80001F0F80001F0F80001F0F80001F0F80001F0F800
01F0F80001F0780001E07C0003E07C0003E03C0003C03C0003C01E0007800E0007000F00
0F0007801E0001C0380000F0F000001F80001C217D9F23>I<FFFFE0000F80780007801C
0007801E0007800F0007800F8007800F8007800F8007800F8007800F8007800F8007800F
0007801E0007801C000780780007FFE00007800000078000000780000007800000078000
0007800000078000000780000007800000078000000780000007800000078000000FC000
00FFFC0000191F7E9E1F>I<FFFF80000F80F0000780780007803C0007801E0007801E00
07801F0007801F0007801F0007801F0007801E0007801E0007803C00078078000780F000
07FF80000781C0000780E0000780F0000780700007807800078078000780780007807C00
07807C0007807C0007807C0407807E0407803E040FC01E08FFFC0F10000003E01E207E9E
21>82 D<07E0800C1980100780300380600180600180E00180E00080E00080E00080F000
00F000007800007F00003FF0001FFC000FFE0003FF00001F800007800003C00003C00001
C08001C08001C08001C08001C0C00180C00380E00300F00600CE0C0081F80012217D9F19
>I<7FFFFFE0780F01E0600F0060400F0020400F0020C00F0030800F0010800F0010800F
0010800F0010000F0000000F0000000F0000000F0000000F0000000F0000000F0000000F
0000000F0000000F0000000F0000000F0000000F0000000F0000000F0000000F0000000F
0000000F0000000F0000001F800007FFFE001C1F7E9E21>I<FFFC3FF80FC007C0078003
800780010007800100078001000780010007800100078001000780010007800100078001
000780010007800100078001000780010007800100078001000780010007800100078001
00078001000780010007800100038002000380020001C0020001C0040000E00800007018
0000382000000FC0001D207E9E22>I<FFF003FE1F8000F80F0000600F80006007800040
0780004003C0008003C0008003C0008001E0010001E0010001F0010000F0020000F00200
00F806000078040000780400003C0800003C0800003C0800001E1000001E1000001F3000
000F2000000F20000007C0000007C0000007C00000038000000380000003800000010000
1F207F9E22>I<FFF07FF81FF01F800FC007C00F00078003800F00078001000F0007C001
00078007C00200078007C00200078007C0020003C009E0040003C009E0040003C009E004
0003E010F00C0001E010F0080001E010F0080001F02078080000F02078100000F0207810
0000F0403C10000078403C20000078403C20000078C03E2000003C801E4000003C801E40
00003C801E4000001F000F8000001F000F8000001F000F8000001E00078000000E000700
00000E00070000000C000300000004000200002C207F9E2F>I<7FF83FF80FE00FC007C0
070003C0020001E0040001F00C0000F0080000781000007C1000003C2000003E4000001E
4000000F8000000F8000000780000003C0000007E0000005E0000009F0000018F8000010
780000207C0000603C0000401E0000801F0001800F0001000780020007C0070003C01F80
07E0FFE01FFE1F1F7F9E22>I<FFF003FF1F8000F80F8000600780004007C0004003E000
8001E0008001F0010000F0030000F80200007C0400003C0400003E0800001E0800001F10
00000FB0000007A0000007C0000003C0000003C0000003C0000003C0000003C0000003C0
000003C0000003C0000003C0000003C0000003C0000007C000007FFE00201F7F9E22>I<
FEFEC0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0
C0C0C0C0C0C0C0FEFE072D7CA10D>91 D<080410082010201040204020804080408040B8
5CFC7EFC7E7C3E381C0F0E7B9F17>I<FEFE060606060606060606060606060606060606
0606060606060606060606060606060606060606060606FEFE072D7FA10D>I<1FE00030
3000781800781C00300E00000E00000E00000E0000FE00078E001E0E00380E00780E00F0
0E10F00E10F00E10F01E10781E103867200F83C014147E9317>97
D<0E0000FE00000E00000E00000E00000E00000E00000E00000E00000E00000E00000E00
000E3E000EC3800F01C00F00E00E00E00E00700E00700E00780E00780E00780E00780E00
780E00780E00700E00700E00E00F00E00D01C00CC300083E0015207F9F19>I<03F80E0C
1C1E381E380C70007000F000F000F000F000F000F00070007000380138011C020E0C03F0
10147E9314>I<000380003F800003800003800003800003800003800003800003800003
8000038000038003E380061B801C0780380380380380700380700380F00380F00380F003
80F00380F00380F003807003807003803803803807801C07800E1B8003E3F815207E9F19
>I<03F0000E1C001C0E00380700380700700700700380F00380F00380FFFF80F00000F0
0000F000007000007000003800801800800C010007060001F80011147F9314>I<007C00
C6018F038F07060700070007000700070007000700FFF007000700070007000700070007
00070007000700070007000700070007000700070007007FF01020809F0E>I<0000E003
E3300E3C301C1C30380E00780F00780F00780F00780F00780F00380E001C1C001E380033
E0002000002000003000003000003FFE001FFF800FFFC03001E0600070C00030C00030C0
0030C000306000603000C01C038003FC00141F7F9417>I<0E0000FE00000E00000E0000
0E00000E00000E00000E00000E00000E00000E00000E00000E3E000E43000E81800F01C0
0F01C00E01C00E01C00E01C00E01C00E01C00E01C00E01C00E01C00E01C00E01C00E01C0
0E01C00E01C00E01C0FFE7FC16207F9F19>I<1C001E003E001E001C0000000000000000
00000000000E007E000E000E000E000E000E000E000E000E000E000E000E000E000E000E
000E000E000E00FFC00A1F809E0C>I<00E001F001F001F000E000000000000000000000
0000007007F000F000700070007000700070007000700070007000700070007000700070
00700070007000700070007000706070F060F0C061803F000C28829E0E>I<0E0000FE00
000E00000E00000E00000E00000E00000E00000E00000E00000E00000E00000E0FF00E03
C00E03000E02000E04000E08000E10000E30000E70000EF8000F38000E1C000E1E000E0E
000E07000E07800E03800E03C00E03E0FFCFF815207F9F18>I<0E00FE000E000E000E00
0E000E000E000E000E000E000E000E000E000E000E000E000E000E000E000E000E000E00
0E000E000E000E000E000E000E000E00FFE00B20809F0C>I<0E1F01F000FE618618000E
81C81C000F00F00E000F00F00E000E00E00E000E00E00E000E00E00E000E00E00E000E00
E00E000E00E00E000E00E00E000E00E00E000E00E00E000E00E00E000E00E00E000E00E0
0E000E00E00E000E00E00E00FFE7FE7FE023147F9326>I<0E3E00FE43000E81800F01C0
0F01C00E01C00E01C00E01C00E01C00E01C00E01C00E01C00E01C00E01C00E01C00E01C0
0E01C00E01C00E01C0FFE7FC16147F9319>I<01F800070E001C03803801C03801C07000
E07000E0F000F0F000F0F000F0F000F0F000F0F000F07000E07000E03801C03801C01C03
80070E0001F80014147F9317>I<0E3E00FEC3800F01C00F00E00E00E00E00F00E00700E
00780E00780E00780E00780E00780E00780E00700E00F00E00E00F01E00F01C00EC3000E
3E000E00000E00000E00000E00000E00000E00000E00000E0000FFE000151D7F9319>I<
03E0800619801C05803C0780380380780380700380F00380F00380F00380F00380F00380
F003807003807803803803803807801C0B800E138003E380000380000380000380000380
000380000380000380000380003FF8151D7E9318>I<0E78FE8C0F1E0F1E0F0C0E000E00
0E000E000E000E000E000E000E000E000E000E000E000E00FFE00F147F9312>I<1F9030
704030C010C010C010E00078007F803FE00FF00070803880188018C018C018E030D0608F
800D147E9312>I<020002000200060006000E000E003E00FFF80E000E000E000E000E00
0E000E000E000E000E000E000E080E080E080E080E080610031001E00D1C7F9B12>I<0E
01C0FE1FC00E01C00E01C00E01C00E01C00E01C00E01C00E01C00E01C00E01C00E01C00E
01C00E01C00E01C00E01C00E03C00603C0030DC001F1FC16147F9319>I<FF83F81E01E0
1C00C00E00800E00800E008007010007010003820003820003820001C40001C40001EC00
00E80000E80000700000700000700000200015147F9318>I<FF9FE1FC3C0780701C0300
601C0380200E0380400E0380400E03C0400707C0800704C0800704E08003886100038871
0003C8730001D0320001D03A0000F03C0000E01C0000E01C0000601800004008001E147F
9321>I<7FC3FC0F01E00701C007018003810001C20000E40000EC00007800003800003C
00007C00004E000087000107000303800201C00601E01E01E0FF07FE1714809318>I<FF
83F81E01E01C00C00E00800E00800E008007010007010003820003820003820001C40001
C40001EC0000E80000E800007000007000007000002000002000004000004000004000F0
8000F08000F100006200003C0000151D7F9318>I<3FFF380E200E201C40384078407000
E001E001C00380078007010E011E011C0338027006700EFFFE10147F9314>I<FFFFFC16
01808C17>I E /Fr 46 122 df<00200040008001000300060004000C000C0018001800
3000300030007000600060006000E000E000E000E000E000E000E000E000E000E000E000
E000E000E0006000600060007000300030003000180018000C000C000400060003000100
0080004000200B327CA413>40 D<800040002000100018000C0004000600060003000300
01800180018001C000C000C000C000E000E000E000E000E000E000E000E000E000E000E0
00E000E000E000C000C000C001C0018001800180030003000600060004000C0018001000
2000400080000B327DA413>I<70F8FCFC7404040404080810102040060F7C840E>44
D<FFE0FFE00B027F8B10>I<70F8F8F87005057C840E>I<008003800F80F3800380038003
800380038003800380038003800380038003800380038003800380038003800380038003
8003800380038003800380038007C0FFFE0F217CA018>49 D<03F0000C1C001007002007
804003C04003C08003E0F003E0F801E0F801E0F801E02003E00003E00003C00003C00007
80000700000E00001C0000180000300000600000C0000180000100000200200400200800
201800603000403FFFC07FFFC0FFFFC013217EA018>I<000200000600000E00000E0000
1E00001E00002E00004E00004E00008E00008E00010E00020E00020E00040E00040E0008
0E00100E00100E00200E00200E00400E00800E00FFFFF8000E00000E00000E00000E0000
0E00000E00000E00001F0001FFF015217FA018>52 D<1000801E07001FFF001FFE001FF8
0013E00010000010000010000010000010000010000010F800130E001407001803801003
800001C00001C00001E00001E00001E00001E07001E0F001E0F001E0E001C08001C04003
C04003802007001006000C1C0003F00013227EA018>I<007E0001C1000300800601C00E
03C01C03C0180180380000380000780000700000700000F0F800F30C00F40600F40300F8
0380F801C0F001C0F001E0F001E0F001E0F001E0F001E07001E07001E07001E03801C038
01C01803801C03000C0600070C0001F00013227EA018>I<01F800060E00080300100180
2001802000C06000C06000C06000C07000C07801803E01003F02001FC4000FF80003F800
03FC00067F00083F80100F803007C06001C06000E0C000E0C00060C00060C00060C00060
6000406000C03000801803000E0E0003F00013227EA018>56 D<01F000060C000C060018
0700380380700380700380F001C0F001C0F001C0F001E0F001E0F001E0F001E0F001E070
01E07003E03803E01805E00C05E00619E003E1E00001C00001C00001C000038000038030
0300780700780600700C002018001030000FC00013227EA018>I<000180000001800000
0180000003C0000003C0000003C0000005E0000005E000000DF0000008F0000008F00000
10F800001078000010780000203C0000203C0000203C0000401E0000401E0000401E0000
800F0000800F0000FFFF000100078001000780030007C0020003C0020003C0040003E004
0001E0040001E00C0000F00C0000F03E0001F8FF800FFF20237EA225>65
D<0007E0100038183000E0063001C00170038000F0070000F00E0000701E0000701C0000
303C0000303C0000307C0000107800001078000010F8000000F8000000F8000000F80000
00F8000000F8000000F8000000F800000078000000780000107C0000103C0000103C0000
101C0000201E0000200E000040070000400380008001C0010000E0020000381C000007E0
001C247DA223>67 D<FFFFF0000F801E0007800700078003C0078001C0078000E0078000
F007800078078000780780007C0780003C0780003C0780003C0780003E0780003E078000
3E0780003E0780003E0780003E0780003E0780003E0780003E0780003C0780003C078000
7C0780007807800078078000F0078000E0078001E0078003C0078007000F801E00FFFFF8
001F227EA125>I<FFFFFFC00F8007C0078001C0078000C0078000400780004007800060
07800020078000200780002007802020078020000780200007802000078060000780E000
07FFE0000780E00007806000078020000780200007802000078020080780000807800008
078000100780001007800010078000300780003007800070078000E00F8003E0FFFFFFE0
1D227EA121>I<FFFFFFC00F8007C0078001C0078000C007800040078000400780006007
800020078000200780002007802020078020000780200007802000078060000780E00007
FFE0000780E0000780600007802000078020000780200007802000078000000780000007
8000000780000007800000078000000780000007800000078000000FC00000FFFE00001B
227EA120>I<FFFC3FFF0FC003F0078001E0078001E0078001E0078001E0078001E00780
01E0078001E0078001E0078001E0078001E0078001E0078001E0078001E0078001E007FF
FFE0078001E0078001E0078001E0078001E0078001E0078001E0078001E0078001E00780
01E0078001E0078001E0078001E0078001E0078001E0078001E00FC003F0FFFC3FFF2022
7EA125>72 D<FFFC0FC00780078007800780078007800780078007800780078007800780
078007800780078007800780078007800780078007800780078007800780078007800FC0
FFFC0E227EA112>I<FFC00003FF0FC00003F007C00003E005E00005E005E00005E004F0
0009E004F00009E004F00009E004780011E004780011E004780011E0043C0021E0043C00
21E0043C0021E0041E0041E0041E0041E0040F0081E0040F0081E0040F0081E004078101
E004078101E004078101E00403C201E00403C201E00401E401E00401E401E00401E401E0
0400F801E00400F801E00400F801E004007001E00E007001E01F007003F0FFE0203FFF28
227EA12D>77 D<FF8007FF07C000F807C0007005E0002004F0002004F000200478002004
7C0020043C0020041E0020041F0020040F002004078020040780200403C0200401E02004
01E0200400F0200400F8200400782004003C2004003E2004001E2004000F2004000F2004
0007A0040003E0040003E0040001E0040001E0040000E00E0000601F000060FFE0002020
227EA125>I<FFFFF0000F803C0007800F0007800780078007C0078003C0078003E00780
03E0078003E0078003E0078003E0078003E0078003C0078007C00780078007800F000780
3C0007FFF000078000000780000007800000078000000780000007800000078000000780
00000780000007800000078000000780000007800000078000000FC00000FFFC00001B22
7EA121>80 D<FFFFE000000F803C000007800E00000780078000078007C000078003C000
078003E000078003E000078003E000078003E000078003E000078003C000078007C00007
8007800007800E000007803C000007FFE000000780700000078038000007801C00000780
1E000007800E000007800F000007800F000007800F000007800F000007800F800007800F
800007800F800007800F808007800FC080078007C0800FC003C100FFFC01E2000000007C
0021237EA124>82 D<03F0200C0C601802603001E07000E0600060E00060E00060E00020
E00020E00020F00000F000007800007F00003FF0001FFE000FFF0003FF80003FC00007E0
0001E00000F00000F0000070800070800070800070800070C00060C00060E000C0F000C0
C80180C6070081FC0014247DA21B>I<7FFFFFF878078078600780184007800840078008
40078008C007800C80078004800780048007800480078004000780000007800000078000
000780000007800000078000000780000007800000078000000780000007800000078000
000780000007800000078000000780000007800000078000000780000007800000078000
000FC00003FFFF001E227EA123>I<0FE0001838003C0C003C0E00180700000700000700
00070000FF0007C7001E07003C0700780700700700F00708F00708F00708F00F08781708
3C23900FC1E015157E9418>97 D<0E0000FE00001E00000E00000E00000E00000E00000E
00000E00000E00000E00000E00000E00000E00000E1F000E61C00E80600F00300E00380E
003C0E001C0E001E0E001E0E001E0E001E0E001E0E001E0E001E0E001C0E003C0E00380F
00700C80600C41C0083F0017237FA21B>I<01FE000703000C07801C0780380300780000
700000F00000F00000F00000F00000F00000F00000F000007000007800403800401C0080
0C010007060001F80012157E9416>I<0000E0000FE00001E00000E00000E00000E00000
E00000E00000E00000E00000E00000E00000E00000E001F8E00704E00C02E01C01E03800
E07800E07000E0F000E0F000E0F000E0F000E0F000E0F000E0F000E07000E07800E03800
E01801E00C02E0070CF001F0FE17237EA21B>I<01FC000707000C03801C01C03801C078
01E07000E0F000E0FFFFE0F00000F00000F00000F00000F000007000007800203800201C
00400E008007030000FC0013157F9416>I<003C00C6018F038F030F0700070007000700
07000700070007000700FFF8070007000700070007000700070007000700070007000700
07000700070007000700070007807FF8102380A20F>I<00007001F198071E180E0E181C
07001C07003C07803C07803C07803C07801C07001C07000E0E000F1C0019F00010000010
00001800001800001FFE000FFFC00FFFE03800F0600030400018C00018C00018C0001860
00306000303800E00E038003FE0015217F9518>I<0E0000FE00001E00000E00000E0000
0E00000E00000E00000E00000E00000E00000E00000E00000E00000E1F800E60C00E80E0
0F00700F00700E00700E00700E00700E00700E00700E00700E00700E00700E00700E0070
0E00700E00700E00700E00700E0070FFE7FF18237FA21B>I<1C001E003E001E001C0000
0000000000000000000000000000000E00FE001E000E000E000E000E000E000E000E000E
000E000E000E000E000E000E000E000E000E00FFC00A227FA10E>I<01C003E003E003E0
01C00000000000000000000000000000000001E00FE001E000E000E000E000E000E000E0
00E000E000E000E000E000E000E000E000E000E000E000E000E000E000E000E000E060E0
F0C0F18061803E000B2C82A10F>I<0E0000FE00001E00000E00000E00000E00000E0000
0E00000E00000E00000E00000E00000E00000E00000E03FC0E01F00E01C00E01800E0200
0E04000E08000E10000E38000EF8000F1C000E1E000E0E000E07000E07800E03C00E01C0
0E01E00E00F00E00F8FFE3FE17237FA21A>I<0E1FC07F00FE60E183801E807201C00F00
3C00E00F003C00E00E003800E00E003800E00E003800E00E003800E00E003800E00E0038
00E00E003800E00E003800E00E003800E00E003800E00E003800E00E003800E00E003800
E00E003800E00E003800E0FFE3FF8FFE27157F942A>109 D<0E1F80FE60C01E80E00F00
700F00700E00700E00700E00700E00700E00700E00700E00700E00700E00700E00700E00
700E00700E00700E00700E0070FFE7FF18157F941B>I<01FC000707000C01801800C038
00E0700070700070F00078F00078F00078F00078F00078F00078F000787000707800F038
00E01C01C00E038007070001FC0015157F9418>I<0E1F00FE61C00E80600F00700E0038
0E003C0E001C0E001E0E001E0E001E0E001E0E001E0E001E0E001E0E003C0E003C0E0038
0F00700E80E00E41C00E3F000E00000E00000E00000E00000E00000E00000E00000E0000
0E0000FFE000171F7F941B>I<0E3CFE461E8F0F0F0F060F000E000E000E000E000E000E
000E000E000E000E000E000E000E000F00FFF010157F9413>114
D<0F8830786018C018C008C008E008F0007F803FE00FF001F8003C801C800C800CC00CC0
08E018D0308FC00E157E9413>I<02000200020002000600060006000E001E003E00FFF8
0E000E000E000E000E000E000E000E000E000E000E000E040E040E040E040E040E040708
030801F00E1F7F9E13>I<0E0070FE07F01E00F00E00700E00700E00700E00700E00700E
00700E00700E00700E00700E00700E00700E00700E00700E00F00E00F006017003827800
FC7F18157F941B>I<FF8FF8FF1E01E03C1C01C0180E01C0180E01E0100E01E010070260
20070270200702702003843040038438400384384001C8188001C81C8001C81C8000F00D
0000F00F0000F00F0000600600006006000060060020157F9423>119
D<FFC1FE1E00780E00300E00200E002007004007004003808003808003808001C10001C1
0000E20000E20000E2000074000074000038000038000038000010000010000020000020
00002000004000F04000F08000F180004300003C0000171F7F941A>121
D E /Fs 20 118 df<FFFF80FFFF80FFFF8011037F9016>45 D<FFFFFFE00000FFFFFFFC
000007E0007F000003E0000F800003E00003C00003E00001E00003E00000F00003E00000
780003E000003C0003E000001E0003E000001E0003E000000F0003E000000F0003E00000
0F8003E00000078003E0000007C003E0000007C003E0000003C003E0000003C003E00000
03E003E0000003E003E0000003E003E0000003E003E0000003E003E0000003E003E00000
03E003E0000003E003E0000003E003E0000003E003E0000003E003E0000003C003E00000
03C003E0000007C003E0000007C003E00000078003E00000078003E000000F8003E00000
0F0003E000001F0003E000001E0003E000003C0003E00000780003E00000F80003E00001
F00003E00003E00003E0000F800007E0003F0000FFFFFFFC0000FFFFFFE000002B317CB0
33>68 D<FFFF80FFFF8007F00003E00003E00003E00003E00003E00003E00003E00003E0
0003E00003E00003E00003E00003E00003E00003E00003E00003E00003E00003E00003E0
0003E00003E00003E00003E00003E00003E00003E00003E00003E00003E00003E00003E0
0003E00003E00003E00003E00003E00003E00003E00003E00003E00003E00003E00007F0
00FFFF80FFFF8011317DB017>73 D<FFF00000007FF8FFF00000007FF807F00000007F00
02F8000000BE0002F8000000BE0002F8000000BE00027C0000013E00027C0000013E0002
3E0000023E00023E0000023E00023E0000023E00021F0000043E00021F0000043E00021F
0000043E00020F8000083E00020F8000083E00020F8000083E000207C000103E000207C0
00103E000207C000103E000203E000203E000203E000203E000201F000403E000201F000
403E000201F000403E000200F800803E000200F800803E000200F800803E0002007C0100
3E0002007C01003E0002007C01003E0002003E02003E0002003E02003E0002003E02003E
0002001F04003E0002001F04003E0002000F88003E0002000F88003E0002000F88003E00
020007D0003E00020007D0003E00020007D0003E00020003E0003E00020003E0003E0002
0003E0003E00070001C0003E000F8001C0007F00FFF801C00FFFF8FFF800800FFFF83531
7CB03D>77 D<FFFFFFC000FFFFFFF80007E0007E0003E0001F0003E000078003E00003C0
03E00001E003E00001F003E00001F003E00000F003E00000F803E00000F803E00000F803
E00000F803E00000F803E00000F803E00000F003E00001F003E00001E003E00003E003E0
0003C003E000078003E0001F0003E0007C0003FFFFF00003E000000003E000000003E000
000003E000000003E000000003E000000003E000000003E000000003E000000003E00000
0003E000000003E000000003E000000003E000000003E000000003E000000003E0000000
03E000000003E000000003E000000003E000000007F0000000FFFF800000FFFF80000025
317CB02D>80 D<007F802001FFE02007C078600F001C601E0006E03C0003E0380001E078
0000E0700000E070000060F0000060F0000060F0000020F0000020F0000020F8000020F8
0000007C0000007E0000003F0000003FC000001FF800000FFF800007FFF80003FFFC0000
FFFF00000FFF800000FFC000001FE0000007E0000003F0000001F0000000F0000000F800
0000F88000007880000078800000788000007880000078C0000078C0000070E00000F0E0
0000E0F00000E0F80001C0EC000380C7000700C1F01E00807FFC00800FF0001D337CB125
>83 D<00FE00000303C0000C00E00010007000100038003C003C003E001C003E001E003E
001E0008001E0000001E0000001E0000001E00000FFE0000FC1E0003E01E000F801E001F
001E003E001E003C001E007C001E00F8001E04F8001E04F8001E04F8003E04F8003E0478
003E047C005E043E008F080F0307F003FC03E01E1F7D9E21>97 D<003F8000E060038018
0700040F00041E001E1C003E3C003E7C003E7C0008780000F80000F80000F80000F80000
F80000F80000F80000F80000F800007800007C00007C00003C00011E00011E00020F0002
07000403801800E060003F80181F7D9E1D>99 D<000001E000003FE000003FE0000003E0
000001E0000001E0000001E0000001E0000001E0000001E0000001E0000001E0000001E0
000001E0000001E0000001E0000001E0000001E0000001E0001F81E000F061E001C019E0
078005E00F0003E00E0003E01E0001E03C0001E03C0001E07C0001E0780001E0F80001E0
F80001E0F80001E0F80001E0F80001E0F80001E0F80001E0F80001E0F80001E0780001E0
780001E03C0001E03C0001E01C0001E01E0003E00E0005E0070009E0038011F000E061FF
003F81FF20327DB125>I<003F800000E0E0000380380007003C000E001E001E001E001C
000F003C000F007C000F0078000F8078000780F8000780F8000780FFFFFF80F8000000F8
000000F8000000F8000000F8000000F8000000780000007C0000003C0000003C0000801E
0000800E0001000F0002000780020001C00C0000F03000001FC000191F7E9E1D>I<0007
E0001C1000383800707C00E07C01E07C01C03803C00003C00003C00003C00003C00003C0
0003C00003C00003C00003C00003C00003C000FFFFC0FFFFC003C00003C00003C00003C0
0003C00003C00003C00003C00003C00003C00003C00003C00003C00003C00003C00003C0
0003C00003C00003C00003C00003C00003C00003C00003C00003C00003C00007E0007FFF
007FFF0016327FB114>I<000000F0007F030801C1C41C0380E81C070070080F0078001E
003C001E003C003E003E003E003E003E003E003E003E003E003E003E003E001E003C001E
003C000F007800070070000780E00009C1C000087F000018000000180000001800000018
000000180000001C0000000E0000000FFFF80007FFFF0003FFFF800E000FC0180001E030
0000F070000070E0000038E0000038E0000038E0000038E0000038700000707000007038
0000E01C0001C00700070001C01C00003FE0001E2F7E9F21>I<07000F801F801F800F80
0700000000000000000000000000000000000000000000000780FF80FF800F8007800780
078007800780078007800780078007800780078007800780078007800780078007800780
07800780078007800FC0FFF8FFF80D307EAF12>105 D<0780FE001FC000FF83078060F0
00FF8C03C18078000F9001E2003C0007A001E4003C0007A000F4001E0007C000F8001E00
07C000F8001E00078000F0001E00078000F0001E00078000F0001E00078000F0001E0007
8000F0001E00078000F0001E00078000F0001E00078000F0001E00078000F0001E000780
00F0001E00078000F0001E00078000F0001E00078000F0001E00078000F0001E00078000
F0001E00078000F0001E00078000F0001E00078000F0001E00078000F0001E00078000F0
001E000FC001F8003F00FFFC1FFF83FFF0FFFC1FFF83FFF0341F7E9E38>109
D<0780FE0000FF83078000FF8C03C0000F9001E00007A001E00007A000F00007C000F000
07C000F000078000F000078000F000078000F000078000F000078000F000078000F00007
8000F000078000F000078000F000078000F000078000F000078000F000078000F0000780
00F000078000F000078000F000078000F000078000F000078000F000078000F0000FC001
F800FFFC1FFF80FFFC1FFF80211F7E9E25>I<001FC00000F0780001C01C00070007000F
0007801E0003C01C0001C03C0001E03C0001E0780000F0780000F0780000F0F80000F8F8
0000F8F80000F8F80000F8F80000F8F80000F8F80000F8F80000F8780000F07C0001F03C
0001E03C0001E01E0003C01E0003C00F00078007800F0001C01C0000F07800001FC0001D
1F7E9E21>I<0783E0FF8C18FF907C0F907C07A07C07C03807C00007C00007C000078000
078000078000078000078000078000078000078000078000078000078000078000078000
0780000780000780000780000780000780000FC000FFFE00FFFE00161F7E9E19>114
D<01FC100E03301800F0300070600030E00030E00010E00010E00010F00010F800007E00
003FF0001FFF000FFFC003FFE0003FF00001F80000F880003C80003C80001CC0001CC000
1CE0001CE00018F00038F00030CC0060C301C080FE00161F7E9E1A>I<00400000400000
400000400000400000C00000C00000C00001C00001C00003C00007C0000FC0001FFFE0FF
FFE003C00003C00003C00003C00003C00003C00003C00003C00003C00003C00003C00003
C00003C00003C00003C00003C00003C01003C01003C01003C01003C01003C01003C01003
C01001C02001E02000E0400078C0001F00142C7FAB19>I<078000F000FF801FF000FF80
1FF0000F8001F000078000F000078000F000078000F000078000F000078000F000078000
F000078000F000078000F000078000F000078000F000078000F000078000F000078000F0
00078000F000078000F000078000F000078000F000078000F000078000F000078001F000
078001F000078001F000038002F00003C004F00001C008F800007030FF80001FC0FF8021
1F7E9E25>I E /Ft 5 85 df<00000000C00000000000E00000000001E00000000003E0
0000000003E00000000007E00000000007E0000000000FE0000000000FE0000000001FE0
000000001FE00000000037E00000000067E00000000067E000000000C7E000000000C7F0
0000000183F00000000183F00000000303F00000000703F00000000603F00000000C03F0
0000000C03F00000001803F00000001803F00000003003F00000003003F00000006003F0
000000C003F0000000C003F00000018003F00000018003F8000003FFFFF8000003FFFFF8
0000060001F800000E0001F800000C0001F80000180001F80000180001F80000300001F8
0000300001F80000600001F80000E00001F80000C00001F80001C00001F80001C00001F8
0007C00001FC001FC00003FC00FFF8007FFFE0FFF8007FFFE02B327BB135>65
D<000FFFFFFE0000000FFFFFFF800000007F000FE00000007E0003F00000007E0000F800
00007E0000FC0000007E00007C000000FC00003E000000FC00003E000000FC00003F0000
00FC00001F000001F800001F000001F800001F800001F800001F800001F800001F800003
F000001F800003F000001F800003F000001F800003F000001F800007E000003F800007E0
00003F800007E000003F800007E000003F80000FC000003F00000FC000007F00000FC000
007F00000FC000007F00001F8000007E00001F800000FE00001F800000FE00001F800000
FC00003F000001FC00003F000001F800003F000001F800003F000003F000007E000003E0
00007E000007E000007E00000FC000007E00000F800000FC00001F800000FC00003F0000
00FC00007E000000FC0000FC000001F80001F0000001F80003E0000001F8000FC0000003
F8007F000000FFFFFFFC000000FFFFFFE000000031317BB036>68
D<000FFFFFFFFC000FFFFFFFFC00007F0001FC00007E00007C00007E00003C00007E0000
3C00007E0000180000FC0000180000FC0000180000FC0000180000FC0000180001F80000
180001F80000180001F80000180001F80000180003F00080100003F00180000003F00180
000003F00180000007E00300000007E00300000007E00700000007E01F0000000FFFFE00
00000FFFFE0000000FC01E0000000FC00E0000001F800C0000001F800C0000001F800C00
00001F800C0000003F00180000003F00080000003F00000000003F00000000007E000000
00007E00000000007E00000000007E0000000000FC0000000000FC0000000000FC000000
0000FC0000000001F80000000001F80000000001F80000000003F800000000FFFFF00000
00FFFFF00000002E317BB02F>70 D<000FFFFFF000000FFFFFFE0000007F003F8000007E
000FC000007E0007E000007E0003F000007E0001F80000FC0001F80000FC0001F80000FC
0001F80000FC0001F80001F80003F80001F80003F80001F80003F80001F80003F00003F0
0007F00003F00007E00003F0000FC00003F0000FC00007E0001F000007E0007E000007E0
00FC000007E007F000000FFFFFC000000FFFFF0000000FC00F8000000FC003C000001F80
03E000001F8001F000001F8001F000001F8001F800003F0001F800003F0001F800003F00
01F800003F0001F800007E0003F800007E0003F800007E0003F000007E0003F00000FC00
07F00000FC0007F00000FC0007F00800FC0007F00C01F80007F01801F80007F01801F800
03F03003F80003F030FFFFE001F0E0FFFFE000FFC0000000003F002E327BB034>82
D<07FFFFFFFFF00FFFFFFFFFF00FC00FE003F01E000FC000F01C000FC000E018000FC000
E038000FC0006030001F8000E030001F8000E060001F8000C060001F8000C060003F0000
C0C0003F0000C0C0003F0000C0C0003F0000C080007E00008000007E00000000007E0000
0000007E0000000000FC0000000000FC0000000000FC0000000000FC0000000001F80000
000001F80000000001F80000000001F80000000003F00000000003F00000000003F00000
000003F00000000007E00000000007E00000000007E00000000007E0000000000FC00000
00000FC0000000000FC0000000000FC0000000001F80000000001F80000000001F800000
00001F80000000003F00000000003F00000000003F0000000000FF00000000FFFFFF0000
00FFFFFF0000002C3173B033>84 D E end
%%EndProlog
%%BeginSetup
%%Feature: *Resolution 300dpi
TeXDict begin

%%EndSetup
%%Page: 0 1
0 0 bop 795 947 a Ft(D)26 b(R)g(A)f(F)h(T)225 1038 y
Fs(Do)r(cumen)n(t)20 b(for)i(a)f(Standard)g(Message-P)n(assing)f(In)n
(terface)621 1232 y Fr(Message)c(P)o(assing)h(In)o(terface)e(F)l(orum)
766 1359 y(Septem)o(b)q(er)g(19,)h(1996)190 1417 y(This)h(w)o(ork)f(w)o
(as)h(supp)q(orted)g(in)f(part)g(b)o(y)g(NSF)g(and)h(ARP)l(A)e(under)h
(NSF)g(con)o(tract)283 1475 y(CD)o(A-9115428)j(and)e(Esprit)f(under)h
(pro)s(ject)e(HPC)i(Standards)g(\(21111\).)p eop
%%Page: 1 2
1 1 bop 166 45 a Fq(This)20 b(is)h(the)f(result)g(of)f(a)h(LaT)l(eX)g
(run)g(of)g(a)f(draft)g(of)h(a)f(single)j(c)o(hapter)d(of)h(the)g(MPIF)
f(Final)75 102 y(Rep)q(ort)d(do)q(cumen)o(t.)969 2828
y(i)p eop
%%Page: 1 3
1 2 bop 75 356 a Fp(Chapter)34 b(3)75 564 y Fo(Miscellan)m(y)41
b(for)g(1.2)75 805 y Fn(3.1)59 b(V)n(ersion)20 b(Numb)r(er)75
953 y Fm(Curren)o(t)12 b(Status:)k Fl(P)o(assed)d(once.)20
b Fq(In)14 b(order)f(to)f(cop)q(e)i(with)g(c)o(hanges)f(to)f(the)i(MPI)
f(Standard,)g(there)g(are)75 1057 y(b)q(oth)j(compile-time)h(and)f
(run-time)g(w)o(a)o(ys)e(to)h(determine)h(whic)o(h)g(v)o(ersion)g(of)f
(the)h(standard)e(is)i(in)h(use)75 1114 y(in)f(the)f(en)o(vironmen)o(t)
h(one)f(is)h(using.)166 1170 y(The)e(\\v)o(ersion")g(will)h(b)q(e)g
(represen)o(ted)f(b)o(y)g(t)o(w)o(o)e(separate)i(in)o(tegers,)g(for)f
(the)h(v)o(ersion)g(and)g(sub)o(v)o(er-)75 1227 y(sion:)166
1283 y(In)i(C,)170 1367 y Fk(#define)23 b(MPI_VERSION)94
b(1)170 1423 y(#define)23 b(MPI_SUBVERSION)f(2)75 1507
y Fq(in)16 b(F)l(ortran,)170 1591 y Fk(INTEGER)23 b(MPI_VERSION,)g
(MPI_SUBVERSION)170 1648 y(PARAMETER)g(\(MPI_VERSION)94
b(=)24 b(1\))170 1704 y(PARAMETER)f(\(MPI_SUBVERSION)f(=)i(2\))75
1788 y Fq(and)15 b(in)h(C++,)170 1872 y Fk(const)24 b(int)f
(MPI::VERSION)f(=)i(1)170 1928 y(const)g(int)f(MPI::SUBVERSION)f(=)i(2)
75 2012 y Fq(F)l(or)15 b(run)o(time)g(determination,)75
2163 y Fj(MPI)p 160 2163 14 2 v 16 w(GET)p 264 2163 V
17 w(VERSION\()h(version,)f(subversion)h(\))117 2240
y Fl(OUT)108 b Fj(version)456 b Fl(v)o(ersion)14 b(n)o(um)o(b)q(er)117
2313 y(OUT)108 b Fj(subversion)393 b Fl(sub)o(v)o(ersion)15
b(n)o(um)o(b)q(er)75 2438 y Fk(int)23 b(MPI)p 245 2438
15 2 v 17 w(Get)p 334 2438 V 17 w(version\()g(int)g(*version,)g(int)g
(*subversion)g(\))75 2524 y(MPI)p 150 2524 V 17 w(GET)p
239 2524 V 17 w(VERSION\()f(VERSION,)h(SUBVERSION,)f(IERROR)h(\))170
2581 y(INTEGER)g(VERSION,)g(SUBVERSION,)f(IERROR)1875
2617 y Fi(>)16 b Fh(\(Oct\))75 2667 y Fk(static)23 b(int)g(MPI::Get)p
532 2667 V 17 w(version\()f(int&)i(version,)e(int&)i(subversion)e(\))
1875 2704 y Fi(?)16 b Fh(\(Oct\))964 2828 y Fq(1)p eop
%%Page: 2 4
2 3 bop 75 -100 a Fq(2)970 b Fg(CHAPTER)15 b(3.)35 b(MISCELLANY)17
b(F)o(OR)e(1.2)75 45 y Fn(3.2)59 b(T)-5 b(reatment)18
b(of)i(MPI)p 670 45 18 2 v 21 w(Status)75 147 y Fq(The)25
b(follo)o(wing)g(prop)q(osals)g(add)g(to,)g(but)g(do)g(not)f(c)o
(hange,)i(the)f(functionalit)o(y)h(asso)q(ciated)f(with)75
203 y Fj(MPI)p 160 203 14 2 v 16 w(ST)l(A)l(TUS)p Fq(.)75
325 y Ff(3.2.1)49 b(P)o(assing)17 b(MPI)p 481 325 15
2 v 18 w(ST)l(A)l(TUS)p 676 325 V 18 w(IGNORE)g(fo)o(r)f(MPI)p
1044 325 V 18 w(Status)75 458 y Fm(Curren)o(t)e(Status:)j
Fl(P)o(assed)e(once.)166 561 y Fq(Ev)o(ery)10 b(call)i(to)e
Fj(MPI)p 507 561 14 2 v 16 w(RECV)h Fq(includes)i(a)e
Fj(status)h Fq(argumen)o(t,)f(where)g(the)f(system)h(can)f(return)h
(details)75 618 y(ab)q(out)18 b(the)g(message)g(receiv)o(ed.)31
b(There)18 b(are)g(also)g(a)g(n)o(um)o(b)q(er)h(of)f(other)g(MPI)g
(calls,)i(particularly)f(in)-1991 b Fi(>)15 b Fh(\(Oct\))75
674 y Fq(MPI-2,)20 b(where)f Fj(status)i Fq(is)f(returned.)33
b(An)19 b(ob)s(ject)g(of)g(t)o(yp)q(e)g Fj(MPI)p 1234
674 V 16 w(ST)l(A)l(TUS)h Fq(is)g(not)f(an)g Fj(MPI)g
Fq(opaque)-117 676 y Fi(?)c Fh(\(Oct\))75 731 y Fq(ob)s(ject;)h(its)h
(structure)g(is)g(declared)h(in)f Fk(mpi.h)f Fq(and)h
Fk(mpif.h)p Fq(,)e(and)i(it)g(exists)g(in)g(the)g(users')f(program.)75
787 y(In)i(man)o(y)e(cases)h(application)i(programs)d(are)g
(constructed)i(so)e(that)h(it)g(is)g(unnecessary)h(for)f(them)g(to)75
844 y(examine)j(the)g Fk(status)f Fq(\014elds.)35 b(In)20
b(these)g(cases)f(it)h(is)g(a)g(w)o(aste)e(for)h(the)h(user)g(to)f
(allo)q(cate)h(a)g(status)75 900 y(ob)s(ject,)f(and)h(it)f(is)h
(particularly)g(w)o(asteful)f(for)g(the)g Fj(MPI)f Fq(implemen)o
(tation)j(to)d(\014ll)j(in)f(\014elds)h(in)f(this)75
957 y(ob)s(ject.)166 1013 y(T)l(o)h(cop)q(e)h(with)g(this)g(problem,)i
(there)d(is)h(a)g(pre-de\014ned)h(constan)o(t,)f Fj(MPI)p
1502 1013 V 16 w(ST)l(A)l(TUS)p 1683 1013 V 17 w(IGNORE)p
Fq(,)75 1070 y(whic)o(h,)i(when)e(passed)g(to)f(a)h(receiv)o(e)h(or)e
(test)g(function,)j(informs)e(the)g(implemen)o(tation)h(that)e(the)75
1126 y(status)13 b(\014elds)h(are)f(not)g(to)g(b)q(e)h(\014lled)i(in.)k
(Note)13 b(that)g Fj(MPI)p 1059 1126 V 15 w(ST)l(A)l(TUS)p
1239 1126 V 18 w(IGNORE)i Fq(is)e(not)h(a)f(sp)q(ecial)i(t)o(yp)q(e)e
(of)75 1183 y Fj(MPI)p 160 1183 V 16 w(ST)l(A)l(TUS)i
Fq(ob)s(ject;)f(rather,)f(it)h(is)h(a)f(sp)q(ecial)i(v)m(alue)f(for)f
(the)g(argumen)o(t.)k(That)c(is,)h(in)f(C)g(one)h(w)o(ould)75
1239 y(exp)q(ect)h(it)f(to)g(b)q(e)h(NULL,)g(not)e(the)i(address)f(of)g
(a)g(sp)q(ecial)i Fj(MPI)p 1179 1239 V 15 w(ST)l(A)l(TUS)p
Fq(.)166 1295 y(In)12 b(general,)h(this)f(optimization)g(can)g(apply)g
(to)f(all)i(functions)f(for)f(whic)o(h)h Fj(MPI)p 1514
1295 V 16 w(Status)i Fq(or)d(an)g(arra)o(y)75 1352 y(of)k
Fj(MPI)p 212 1352 V 16 w(Status)p Fq('s)i(is)f(an)g(argumen)o(t.)k
(These)c(are)f(all)i(the)e(v)m(arious)h(forms)f(of)g
Fj(MPI)p 1493 1352 V 16 w(RECV)p Fq(,)h Fj(MPI)p 1735
1352 V 16 w(TEST)p Fq(,)75 1408 y(and)i Fj(MPI)p 251
1408 V 15 w(W)l(AIT)p Fq(.)f(When)h(an)f(arra)o(y)g(is)g(passed,)h(as)f
(in)h(the)p 1132 1408 V 34 w Fj(ANY)g Fq(and)p 1349 1408
V 34 w Fj(ALL)f Fq(functions,)h(a)f(separate)75 1465
y(constan)o(t,)d Fj(MPI)p 356 1465 V 16 w(ST)l(A)l(TUSES)p
589 1465 V 18 w(IGNORE)p Fq(,)i(is)f(passed)h(for)e(the)i(arra)o(y)e
(argumen)o(t.)166 1521 y Fj(MPI)p 251 1521 V 16 w(ST)l(A)l(TUS)p
432 1521 V 17 w(IGNORE)g Fq(and)e Fj(MPI)p 794 1521 V
16 w(ST)l(A)l(TUSES)p 1027 1521 V 18 w(IGNORE)i Fq(are)e(not)g
(required)h(to)f(ha)o(v)o(e)g(the)g(same)-1992 b Fi(>)15
b Fh(\(Oct\))75 1578 y Fq(v)m(alues)h(in)g(C)f(and)h(F)l(ortran.)166
1634 y(It)d(is)g(not)g(allo)o(w)o(ed)g(to)f(ha)o(v)o(e)g(some)h(of)f
(the)h(statuses)f(in)i(an)f(arra)o(y)e(of)i(statuses)f(for)p
1574 1634 V 28 w Fj(ANY)i Fq(and)p 1782 1634 V 29 w Fj(ALL)75
1691 y Fq(functions)j(set)g(to)f Fj(MPI)p 487 1691 V
16 w(ST)l(A)l(TUS)p 668 1691 V 17 w(IGNORE)p Fq(;)i(one)e(either)i(sp)q
(eci\014es)g(ignoring)f Fe(al)r(l)34 b Fq(of)17 b(the)f(statuses)g(in)
75 1747 y(suc)o(h)e(a)g(call)h(with)f Fj(MPI)p 482 1747
V 16 w(ST)l(A)l(TUSES)p 715 1747 V 18 w(IGNORE)p Fq(,)h(or)f
Fe(none)i Fq(of)e(themm)g(b)o(y)f(passing)i(normal)f(statuses)f(in)75
1804 y(alll)k(p)q(ositions)f(in)g(the)f(arra)o(y)f(of)h(statuses.)-932
b Fi(?)15 b Fh(\(Oct\))75 1925 y Ff(3.2.2)49 b(Non-destructive)16
b(T)l(est)f(of)i(MPI)p 808 1925 15 2 v 18 w(Status)75
2058 y Fm(Curren)o(t)d(Status:)j Fl(P)o(assed)e(once.)166
2162 y Fq(This)22 b(call)g(is)g(useful)g(for)f(accessing)h(the)f
(information)h(asso)q(ciated)f(with)h(a)f(request,)h(without)75
2218 y(deleting)c(the)f(request)f(\(in)h(case)g(the)g(user)f(is)i(exp)q
(ected)f(to)f(access)h(it)g(after)f(the)g(handler\).)25
b(It)17 b(allo)o(ws)75 2275 y(one)11 b(to)e(la)o(y)o(er)i(libraries)h
(more)e(con)o(v)o(enien)o(tly)l(,)i(since)g(m)o(ultiple)g(la)o(y)o(ers)
e(of)h(soft)o(w)o(are)d(ma)o(y)i(access)h(the)f(same)75
2331 y(completed)17 b(request)f(and)g(extract)f(from)g(it)h(the)g
(status)f(information.)21 b(This)c(will)g(also)f(b)q(e)g(imp)q(ortan)o
(t)75 2388 y(for)g(language)i(in)o(terop)q(erabilit)o(y)h(if)e(w)o(e)g
(decide)i(that)d(status)g(ob)s(jects)h(cannot)f(b)q(e)i(transferred)f
(across)75 2444 y(language)d(b)q(oundaries,)g(since)h(with)f(this)g
(function)g(the)g(request)f(ob)s(ject)g(can)h(b)q(e)g(transferred)f
(instead.)1967 46 y Fh(1)1967 103 y(2)1967 159 y(3)1967
215 y(4)1967 272 y(5)1967 328 y(6)1967 385 y(7)1967 441
y(8)1967 498 y(9)1959 554 y(10)1959 611 y(11)1959 667
y(12)1959 724 y(13)1959 780 y(14)1959 836 y(15)1959 893
y(16)1959 949 y(17)1959 1006 y(18)1959 1062 y(19)1959
1119 y(20)1959 1175 y(21)1959 1232 y(22)1959 1288 y(23)1959
1345 y(24)1959 1401 y(25)1959 1457 y(26)1959 1514 y(27)1959
1570 y(28)1959 1627 y(29)1959 1683 y(30)1959 1740 y(31)1959
1796 y(32)1959 1853 y(33)1959 1909 y(34)1959 1966 y(35)1959
2022 y(36)1959 2078 y(37)1959 2135 y(38)1959 2191 y(39)1959
2248 y(40)1959 2304 y(41)1959 2361 y(42)1959 2417 y(43)1959
2474 y(44)1959 2530 y(45)1959 2587 y(46)1959 2643 y(47)1959
2699 y(48)p eop
%%Page: 3 5
3 4 bop 75 -100 a Fg(3.3.)34 b(ERR)o(OR)17 b(CLASS)f(F)o(OR)f(INV)-5
b(ALID)16 b(KEYV)-5 b(AL)818 b Fq(3)75 45 y Fj(MPI)p
160 45 14 2 v 16 w(GET)p 264 45 V 17 w(ST)l(A)l(TUS\()16
b(request,)g(\015ag,)f(status)i(\))117 122 y Fl(IN)155
b Fj(request)452 b Fl(an)14 b Fd(MPI)p 1040 122 13 2
v 14 w(REQUEST)f Fl(ob)r(ject)117 197 y(OUT)108 b Fj(\015ag)518
b Fl(\015ag,)13 b(same)g(as)h(from)e Fd(MPI)p 1325 197
V 15 w(TEST)117 273 y Fl(OUT)108 b Fj(status)476 b Fd(MPI)p
982 273 V 15 w(ST)m(A)m(TUS)12 b Fl(ob)r(ject)j(if)e(\015ag)g(is)h
(true)75 397 y Fk(int)23 b(MPI)p 245 397 15 2 v 17 w(Get)p
334 397 V 17 w(status\(MPI)p 591 397 V 16 w(Request)g(request,)f(int)i
(*flag,)f(MPI)p 1347 397 V 17 w(Status)g(*status\))75
483 y(MPI)p 150 483 V 17 w(GET)p 239 483 V 17 w(STATUS\()f(REQUEST,)h
(FLAG,)g(STATUS,)g(IERROR\))170 540 y(INTEGER)g(REQUEST,)g(FLAG,)g
(STATUS\(MPI)p 962 540 V 16 w(STATUS)p 1122 540 V 16
w(SIZE\),)h(IERROR)75 626 y(int)f(MPI::Request::Get)p
581 626 V 15 w(status\(bool&)g(flag,)g(MPI::Status&)f(status\))h(const)
166 713 y Fq(Sets)18 b(\015ag=true)g(if)h(the)f(request)h(has)f
(completed,)h(and,)g(if)g(so,)f(returns)g(in)h(status)f(the)g(request)
75 769 y(status.)34 b(Ho)o(w)o(ev)o(er,)20 b(unlik)o(e)i(test)d(or)h(w)
o(ait,)g(it)h(do)q(es)f(not)g(deallo)q(cate)h(or)f(inactiv)m(ate)h(the)
f(request;)i(a)75 826 y(subsequen)o(t)16 b(call)g(to)f(test,)f(w)o(ait)
h(or)f(free)i(should)g(b)q(e)g(executed)g(with)f(that)g(request)75
969 y Fn(3.3)59 b(Erro)n(r)21 b(Class)f(fo)n(r)h(Invalid)e(Keyval)1875
1026 y Fi(>)d Fh(\(Oct\))75 1118 y Fm(Curren)o(t)e(Status:)j
Fl(P)o(assed)e(once.)166 1221 y Fq(There)d(is)f(a)h(new)f(MPI)h(error)e
(class:)19 b Fj(MPI)p 875 1221 14 2 v 15 w(ERR)p 975
1221 V 18 w(KEYV)l(AL)p Fq(.)11 b(It)h(can)f(b)q(e)h(returned)g(b)o(y)f
Fj(MPI)p 1692 1221 V 16 w(A)o(ttr)p 1785 1221 V 17 w(put)p
Fq(,)75 1278 y Fj(MPI)p 160 1278 V 16 w(A)o(ttr)p 253
1278 V 17 w(get)p Fq(,)16 b Fj(MPI)p 440 1278 V 16 w(A)o(ttr)p
533 1278 V 16 w(delete)p Fq(,)i Fj(MPI)p 772 1278 V 16
w(Keyval)p 915 1278 V 15 w(free)p Fq(,)e Fj(MPI)p 1111
1278 V 16 w(Comm)p 1253 1278 V 14 w(dup)p Fq(,)i(and)e
Fj(MPI)p 1538 1278 V 16 w(Comm)p 1680 1278 V 14 w(free)p
Fq(.)23 b(The)75 1334 y(last)15 b(t)o(w)o(o)f(are)h(b)q(ecause)h
Fj(k)o(eyval)f Fq(is)h(an)f(argumen)o(t)f(to)h(the)g(cop)o(y)g(and)h
(delete)g(functions)g(for)e(attributes.)8 b Fi(?)16 b
Fh(\(Oct\))1875 1393 y Fi(>)g Fh(\(Oct\))1875 1451 y
Fi(>)g Fh(\(Oct\))75 1478 y Fn(A)k(new)f(reduce)g(op)r(eration)75
1626 y Fm(Curren)o(t)14 b(Status:)j Fl(New)d(for)g(Octob)q(er.)166
1730 y Fq(A)e(new)h(prede\014ned)h(op)q(eration,)f Fd(MPI)p
811 1730 13 2 v 14 w(REPLA)o(CE)p Fq(,)d(is)j(de\014ned.)20
b(It)13 b(corresp)q(onds)f(to)g(the)h(asso)q(ciativ)o(e)75
1786 y(function)18 b Fc(f)5 b Fq(\()p Fc(a;)j(b)p Fq(\))15
b(=)h Fc(b)p Fq(;)i(i.e.,)f(the)g(curren)o(t)h(v)m(alue)g(in)g(the)g
(target)e(memory)h(is)h(replaced)g(b)o(y)f(the)h(v)m(alue)75
1843 y(supplied)g(b)o(y)d(the)g(origin.)21 b(This)15
b(op)q(eration)h(can)f(b)q(e)h(applied)h(on)e(an)o(y)g(basic)h(datat)o
(yp)q(e.)166 1947 y Fm(Discussion:)35 b Fl(This)15 b(needs)g(a)f
(rationale.)19 b(It)14 b(can)h(b)q(e)g(used)g(to)f(do)g(one-sided)h
(broadcasts)g(\(should)f(it)g(b)q(e)75 2003 y(f\(a,b\))i(=)h(a\)?)27
b(It)17 b(w)o(ould)f(b)q(e)i(wierd)f(in)f(a)h(reduce)i(op)q(eration,)e
(and)f(could)h(b)q(e)h(easily)e(done)h(b)o(y)g(the)g(user)h(as)f(a)75
2059 y(user-de\014ned)f(function.)1875 2107 y Fi(?)g
Fh(\(Oct\))75 2250 y Fn(3.4)59 b(A)20 b(F)n(o)n(rtran)h(Problem)e(with)
h(Register)e(Optimization)75 2399 y Fm(Curren)o(t)c(Status:)j
Fl(A)d(new)g(discussion.)189 2552 y Fe(A)n(dvic)n(e)h(to)i(users.)189
2627 y Fq(MPI)d(pro)o(vides)g(op)q(erations)g(whic)o(h)h(ma)o(y)e(b)q
(e)i(hidden)h(from)d(the)h(user)g(co)q(de)h(and)f(run)h(in)f(parallel)
189 2684 y(with)g(it,)h(accessing)g(the)f(same)g(memory)g(as)g(user)g
(co)q(de.)20 b(Examples)15 b(include)i(the)d(data)g(transfer)-32
46 y Fh(1)-32 103 y(2)-32 159 y(3)-32 215 y(4)-32 272
y(5)-32 328 y(6)-32 385 y(7)-32 441 y(8)-32 498 y(9)-40
554 y(10)-40 611 y(11)-40 667 y(12)-40 724 y(13)-40 780
y(14)-40 836 y(15)-40 893 y(16)-40 949 y(17)-40 1006
y(18)-40 1062 y(19)-40 1119 y(20)-40 1175 y(21)-40 1232
y(22)-40 1288 y(23)-40 1345 y(24)-40 1401 y(25)-40 1457
y(26)-40 1514 y(27)-40 1570 y(28)-40 1627 y(29)-40 1683
y(30)-40 1740 y(31)-40 1796 y(32)-40 1853 y(33)-40 1909
y(34)-40 1966 y(35)-40 2022 y(36)-40 2078 y(37)-40 2135
y(38)-40 2191 y(39)-40 2248 y(40)-40 2304 y(41)-40 2361
y(42)-40 2417 y(43)-40 2474 y(44)-40 2530 y(45)-40 2587
y(46)-40 2643 y(47)-40 2699 y(48)p eop
%%Page: 4 6
4 5 bop 75 -100 a Fq(4)970 b Fg(CHAPTER)15 b(3.)35 b(MISCELLANY)17
b(F)o(OR)e(1.2)189 45 y Fq(for)10 b(an)h Fj(MPI)p 398
45 14 2 v 16 w(RECV)h Fq(The)f(optimizer)i(of)d(a)h(compiler)i(will)f
(assume)f(that)g(it)g(can)h(recognize)g(p)q(erio)q(ds)189
102 y(when)j(a)g(cop)o(y)g(of)g(a)f(v)m(ariable)j(can)e(b)q(e)h(k)o
(ept)f(in)h(a)e(register)h(without)g(reloading)h(from)f(or)f(storing)
189 158 y(to)e(memory)l(.)18 b(When)13 b(the)g(user)g(co)q(de)g(is)g(w)
o(orking)f(with)h(a)f(register)h(cop)o(y)f(of)g(some)h(v)m(ariable)g
(while)189 214 y(the)i(hidden)i(op)q(eration)f(reads)f(or)g(writes)g
(the)h(memory)f(cop)o(y)l(,)g(problems)h(o)q(ccur.)k(This)c(section)189
271 y(discusses)g(register)f(optimization)h(pitfalls.)189
346 y(When)f(a)f(v)m(ariable)i(is)f(lo)q(cal)h(to)e(a)g(F)l(ortran)f
(subroutine)j(\(i.e.)k(not)14 b(in)h(a)g(COMMON)f(blo)q(c)o(k\),)h(the)
189 403 y(compiler)g(will)i(assume)d(that)g(it)h(cannot)f(b)q(e)h(mo)q
(di\014ed)h(b)o(y)f(a)f(called)i(subroutine)f(unless)h(it)f(is)g(an)189
459 y(actual)g(argumen)o(t)g(of)h(the)f(call.)23 b(In)16
b(the)g(most)e(common)i(link)m(age)h(con)o(v)o(en)o(tion,)e(the)h
(subroutine)189 515 y(is)d(exp)q(ected)i(to)d(sa)o(v)o(e)h(and)g
(restore)g(certain)h(registers.)19 b(Th)o(us,)13 b(the)g(optimizer)i
(will)g(assume)e(that)189 572 y(a)k(register)h(whic)o(h)h(held)g(a)e(v)
m(alid)j(cop)o(y)d(of)h(suc)o(h)g(a)g(v)m(ariable)h(b)q(efore)f(the)g
(call)h(will)g(still)h(hold)e(a)189 628 y(v)m(alid)e(cop)o(y)g(on)f
(return.)189 703 y(Normally)22 b(users)g(are)g(not)g(a\017icted)g(with)
h(this.)41 b(But)22 b(the)g(user)g(should)h(pa)o(y)f(atten)o(tion)g(to)
189 760 y(this)f(section)g(if)g(in)h(his/her)f(program)e(a)i(bu\013er)f
(argumen)o(t)g(to)g(an)h Fj(MPI)p 1498 760 V 16 w(SEND)p
Fq(,)f Fj(MPI)p 1746 760 V 16 w(RECV)189 816 y Fq(etc.)25
b(uses)18 b(a)f(name)g(whic)o(h)h(hides)g(the)f(actual)h(v)m(ariables)g
(in)o(v)o(olv)o(ed.)27 b Fj(MPI)p 1493 816 V 16 w(BOTTOM)18
b Fq(with)f(an)189 873 y(MPI)p 281 873 V 16 w(Datat)o(yp)q(e)i(con)o
(taining)i(absolute)g(addresses)f(is)h(one)f(example.)36
b(Creating)20 b(a)f(datat)o(yp)q(e)189 929 y(whic)o(h)14
b(uses)f(one)g(v)m(ariable)i(as)e(an)g(anc)o(hor)f(and)i(brings)f
(along)h(others)e(b)o(y)h(using)h Fj(MPI)p 1659 929 V
16 w(ADDRESS)189 986 y Fq(to)h(determine)j(their)f(o\013sets)e(from)g
(the)i(anc)o(hor)f(is)h(another.)22 b(The)17 b(anc)o(hor)f(v)m(ariable)
i(w)o(ould)e(b)q(e)189 1042 y(the)g(only)h(one)f(men)o(tioned)h(in)g
(the)g(call.)24 b(Also)16 b(atten)o(tion)g(m)o(ust)g(b)q(e)h(pa)o(y)o
(ed)f(if)h(MPI)f(op)q(erations)189 1099 y(are)f(used)g(that)g(run)g(in)
h(parallel)h(with)f(the)f(user's)g(application.)189 1174
y(The)g(follo)o(wing)h(example)g(sho)o(ws,)e(what)h(F)l(ortran)f
(compilers)i(are)f(allo)o(w)o(ed)h(to)e(do:)224 1299
y(This)i(source)f(...)663 b(can)15 b(b)q(e)h(compiled)h(as:)224
1363 y(call)f(MPI)p 399 1363 V 17 w(ADDRESS\(buf,bufaddr,ierr\))189
b(call)16 b(MPI)p 1344 1363 V 17 w(ADDRESS\(buf,...\))224
1420 y(call)g(MPI)p 399 1420 V 17 w(TYPE)p 545 1420 V
16 w(STR)o(UCT\(1,1,bufaddr,)163 b(call)16 b(MPI)p 1344
1420 V 17 w(TYPE)p 1490 1420 V 16 w(STR)o(UCT\(...\))590
1476 y(MPI)p 682 1476 V 17 w(REAL,t)o(yp,ierr\))224 1533
y(call)g(MPI)p 399 1533 V 17 w(TYPE)p 545 1533 V 16 w(COMMIT\(t)o(yp\))
308 b(call)16 b(MPI)p 1344 1533 V 17 w(TYPE)p 1490 1533
V 16 w(COMMIT\(...\))224 1589 y(v)m(al)p 283 1589 V 17
w(old)g(=)g(buf)681 b(register)15 b(=)h(buf)1169 1646
y(v)m(al)p 1228 1646 V 17 w(old)g(=)f(register)224 1702
y(call)h(MPI)p 399 1702 V 17 w(RECV\(MPI)p 654 1702 V
16 w(BOTTOM,1,t)o(yp,...\))107 b(call)16 b(MPI)p 1344
1702 V 17 w(RECV\(MPI)p 1599 1702 V 16 w(BOTTOM,...\))224
1759 y(v)m(al)p 283 1759 V 17 w(new)g(=)f(buf)664 b(v)m(al)p
1228 1759 V 17 w(new)16 b(=)f(register)189 1884 y(The)j(compiler)g(do)q
(es)g(not)g(in)o(v)m(alidate)h(the)f(register)g(b)q(ecause)g(it)g
(cannot)f(see)h(that)f Fj(MPI)p 1746 1884 V 16 w(RECV)189
1940 y Fq(c)o(hanges)h(the)g(v)m(alue)i(of)e Fj(buf)p
Fq(.)30 b(The)19 b(access)f(of)g Fj(buf)i Fq(is)f(hidden)h(b)o(y)e(the)
h(use)f(of)g Fj(MPI)p 1659 1940 V 16 w(ADDRESS)189 1997
y Fq(and)d Fj(MPI)p 362 1997 V 16 w(BOTTOM)p Fq(.)189
2072 y(The)g(next)g(example)h(sho)o(ws)f(extreme,)g(but)g(allo)o(w)o
(ed)h(p)q(ossibilities!)224 2197 y(Source)424 b(compiled)17
b(as)322 b(or)15 b(compiled)i(as)224 2261 y(call)f(MPI)p
399 2261 V 17 w(IRECV\(buf,..req\))i(call)f(MPI)p 955
2261 V 16 w(IRECV\(buf,..req\))h(call)f(MPI)p 1510 2261
V 16 w(IRECV\(buf,..req\))779 2318 y(register)e(=)h(buf)278
b(b1)15 b(=)h(buf)224 2374 y(call)g(MPI)p 399 2374 V
17 w(W)-5 b(AIT\(req,..\))104 b(call)17 b(MPI)p 955 2374
V 16 w(W)-5 b(AIT\(req,..\))104 b(call)17 b(MPI)p 1510
2374 V 16 w(W)-5 b(AIT\(req,..\))224 2431 y(b1)15 b(=)h(buf)377
b(b1)15 b(:=)g(register)189 2556 y Fj(MPI)p 274 2556
V 15 w(W)l(AIT)e Fq(or)f(a)g(parallel)i(thread)e(mo)q(di\014es)i
Fj(buf)f Fq(b)q(et)o(w)o(een)g(the)f(in)o(v)o(o)q(cation)h(of)f
Fj(MPI)p 1648 2556 V 16 w(IRECV)h Fq(and)189 2612 y(the)j(\014nish)h
(of)f Fj(MPI)p 528 2612 V 16 w(W)l(AIT)p Fq(.)g(But)g(the)g(compiler)i
(cannot)e(see)g(an)o(y)g(p)q(ossibilit)o(y)i(that)e Fj(buf)h
Fq(can)f(b)q(e)189 2669 y(c)o(hanged)g(after)e Fj(MPI)p
557 2669 V 16 w(IRECV)i Fq(has)g(\014nished.)23 b(And)16
b(therefore)f(it)h(can)g(sc)o(hedule)h(the)f(load)g(of)f
Fj(buf)1967 46 y Fh(1)1967 103 y(2)1967 159 y(3)1967
215 y(4)1967 272 y(5)1967 328 y(6)1967 385 y(7)1967 441
y(8)1967 498 y(9)1959 554 y(10)1959 611 y(11)1959 667
y(12)1959 724 y(13)1959 780 y(14)1959 836 y(15)1959 893
y(16)1959 949 y(17)1959 1006 y(18)1959 1062 y(19)1959
1119 y(20)1959 1175 y(21)1959 1232 y(22)1959 1288 y(23)1959
1345 y(24)1959 1401 y(25)1959 1457 y(26)1959 1514 y(27)1959
1570 y(28)1959 1627 y(29)1959 1683 y(30)1959 1740 y(31)1959
1796 y(32)1959 1853 y(33)1959 1909 y(34)1959 1966 y(35)1959
2022 y(36)1959 2078 y(37)1959 2135 y(38)1959 2191 y(39)1959
2248 y(40)1959 2304 y(41)1959 2361 y(42)1959 2417 y(43)1959
2474 y(44)1959 2530 y(45)1959 2587 y(46)1959 2643 y(47)1959
2699 y(48)p eop
%%Page: 5 7
5 6 bop 75 -100 a Fg(3.5.)34 b(TR)o(UE)15 b(EXTENT)g(OF)g(D)o(A)l(T)l
(A)l(TYPES)958 b Fq(5)189 45 y(earlier)14 b(than)g(t)o(yp)q(ed)g(in)h
(the)f(source.)20 b(It)13 b(has)h(no)g(reason)f(to)h(a)o(v)o(oid)f
(using)i(a)e(register)h(to)f(hold)i Fj(buf)189 102 y
Fq(across)f(the)h(call)i(to)d Fj(MPI)p 625 102 14 2 v
16 w(W)l(AIT)p Fq(.)h(It)g(also)g(can)h(reorder)f(the)g(instructions)h
(as)f(in)h(the)f(left)h(case.)189 177 y(T)l(o)c(prev)o(en)o(t)h
(instruction)h(reordering)g(or)e(the)h(allo)q(cation)h(of)f(a)g(v)m
(ariable)h(or)f(bu\013er)g(in)h(a)e(register,)189 233
y(there)j(are)g(three)g(p)q(ossibilities)k(in)d(p)q(ortable)f(F)l
(ortran)f(co)q(de:)243 327 y Fi(\017)23 b Fq(One)d(can)f(put)h(the)g(v)
m(ariables)g(and)g(bu\013ers)f(in)o(to)h(common)f(blo)q(c)o(ks;)j(then)
e(they)f(will)i(b)q(e)289 383 y(allo)q(cated)d(in)g(the)g(memory)e
(while)j(an)o(y)e(library)h(subroutine)h(\(e.g.)25 b(an)18
b(MPI)f(routine\))g(is)289 440 y(called)c(pro)o(vided)f(that)f(the)h
(compiler)h(cannot)e(analyze)h(that)f(the)h(library)g(subroutine)h(do)q
(es)289 496 y(not)h(use)i(these)f(common)g(blo)q(c)o(ks,)h(or)243
569 y Fi(\017)23 b Fq(one)11 b(can)h(declare)g(them)f(as)g(V)o(OLA)l
(TILE,)h(but)g(this)g(is)f(not)g(part)g(of)g(the)g(standards)g(F)l
(ortran)289 626 y(77)f(and)h(90,)g(and)g(y)o(our)f(co)q(de)i(will)h
(not)d(b)q(e)i(p)q(ortable)f(b)q(ecause)h(there)f(are)g(compilers)h
(without)289 682 y(V)o(OLA)l(TILE,)k(and)f(normally)h(it)g(prev)o(en)o
(ts)e(an)o(y)h(optimization,)h(or)243 755 y Fi(\017)23
b Fq(one)14 b(can)g(call)h(a)f(dumm)o(y)g(routine)g(with)g(the)h(v)m
(ariable)g(or)e(bu\013er)h(as)g(an)g(actual)g(argumen)o(t;)289
812 y(if)22 b(the)h(dumm)o(y)f(routine)h(is)f(not)g(part)g(of)g(the)g
(application)i(then)f(the)f(compiler)i(m)o(ust)289 868
y(allo)q(cate)16 b(the)f(v)m(ariable)i(or)e(bu\013er)h(in)g(the)f
(memory)g(while)i(that)e(subroutine)h(is)g(executed;)289
925 y Fj(MPI)p 374 925 V 15 w(ADDRESS)h Fq(can)e(b)q(e)h(used)g(as)e
(dumm)o(y)h(routine.)189 1019 y(High)e(qualit)o(y)g(F)l(ortran)f
(implemen)o(tations)i(ma)o(y)e(pro)o(vide)i(mec)o(hanisms)f(to)f(a)o(v)
o(oid)h(the)g(problem,)189 1075 y(without)18 b(disabling)j
(optimizations.)31 b(Ho)o(w)o(ev)o(er,)18 b(co)q(de)h(that)f(do)q(es)h
(not)f(use)h(one)g(of)f(the)h(three)189 1131 y(solutions)d(describ)q
(ed)h(ab)q(o)o(v)o(e)d(ma)o(y)h(not)g(b)q(e)h(p)q(ortable.)189
1207 y(In)h(C,)f(subroutines)i(whic)o(h)g(mo)q(dify)f(v)m(ariables)h
(that)e(are)h(not)f(in)i(the)f(parameter)f(list)i(will)g(not)189
1263 y(cause)e(register)h(optimization)g(problems.)25
b(This)17 b(is)g(b)q(ecause)g(taking)g(p)q(oin)o(ters)g(to)f(storage)f
(ob-)189 1319 y(jects)d(b)o(y)g(using)h(the)g(&)f(op)q(erator)g(and)g
(later)h(referencing)g(the)g(ob)s(jects)f(b)o(y)g(w)o(a)o(y)f(of)h(the)
h(p)q(oin)o(ter)f(is)189 1376 y(an)j(in)o(tegral)g(part)g(of)f(the)i
(language.)k(A)15 b(C)g(compiler)h(understands)g(the)f(implications,)i
(so)e(that)189 1432 y(the)g(problem)h(should)h(not)e(o)q(ccur,)h(in)g
(general.)21 b(Ho)o(w)o(ev)o(er,)14 b(some)i(compilers)g(do)g(o\013er)e
(optional)189 1489 y(aggressiv)o(e)g(optimization)j(lev)o(els)f(whic)o
(h)g(ma)o(y)f(not)f(b)q(e)i(safe.)189 1564 y(\()p Fe(End)f(of)i(advic)n
(e)f(to)g(users.)p Fq(\))p 75 1670 827 2 v 75 1727 a(The)f(follo)o
(wing)h(advice)h(m)o(ust)d(b)q(e)i(added)g(in)75 1795
y(-)f(MPI)g(2,)g(c)o(hapter)g(?.?)21 b(Handlers,)75 1851
y(-)15 b Fj(MPI)p 190 1851 14 2 v 16 w(ADDRESS)h Fq(\(MPI)f(1.1,)f
(page)h(70,)f(line)j(16\),)d(and)h(in)75 1908 y(-)g Fj(MPI)p
190 1908 V 16 w(IRECV)h Fq(\(MPI)f(1.1,)e(\\Non)o(blo)q(c)o(king)k
(comm)o(unication",)e(end)h(of)e(page)h(40\))189 2014
y Fe(A)n(dvic)n(e)i(to)i(users.)53 b Fq(T)l(o)17 b(prev)o(en)o(t)g
(troubles)h(with)g(the)f(register)g(optimization)i(of)e(the)g(F)l
(ortran)189 2071 y(compilers)i(please)g(pa)o(y)e(atten)o(tion)h(to)f
(the)h(hin)o(ts)g(in)h(section)g(3.4)e(\\A)g(F)l(ortran)g(Problem)i
(with)189 2127 y(register)c(optimization")h(on)f(page)g(3.)k(\()p
Fe(End)d(of)g(advic)n(e)g(to)h(users.)p Fq(\))1875 2188
y Fi(?)f Fh(\(Oct\))75 2320 y Fn(3.5)59 b(T)-5 b(rue)20
b(Extent)d(of)k(Datat)n(yp)r(es)75 2469 y Fm(Curren)o(t)14
b(Status:)j Fl(P)o(assed)e(once.)166 2573 y Fq(Supp)q(ose)23
b(w)o(e)f(implemen)o(t)h(gather)f(as)g(a)f(spanning)i(tree)f(implemen)o
(ted)i(on)e(top)g(of)g(p)q(oin)o(t-to-)75 2629 y(p)q(oin)o(t)e
(routines.)34 b(Since)22 b(the)d(recv)h(bu\013er)g(is)g(only)h(v)m
(alid)g(on)f(the)g(ro)q(ot)f(pro)q(cess,)i(one)f(will)h(need)g(to)75
2685 y(allo)q(cate)f(some)f(temp)q(orary)g(space)h(for)f(receiving)i
(data)e(on)g(in)o(termediate)i(no)q(des.)33 b(The)20
b(di\016cultly)-32 46 y Fh(1)-32 103 y(2)-32 159 y(3)-32
215 y(4)-32 272 y(5)-32 328 y(6)-32 385 y(7)-32 441 y(8)-32
498 y(9)-40 554 y(10)-40 611 y(11)-40 667 y(12)-40 724
y(13)-40 780 y(14)-40 836 y(15)-40 893 y(16)-40 949 y(17)-40
1006 y(18)-40 1062 y(19)-40 1119 y(20)-40 1175 y(21)-40
1232 y(22)-40 1288 y(23)-40 1345 y(24)-40 1401 y(25)-40
1457 y(26)-40 1514 y(27)-40 1570 y(28)-40 1627 y(29)-40
1683 y(30)-40 1740 y(31)-40 1796 y(32)-40 1853 y(33)-40
1909 y(34)-40 1966 y(35)-40 2022 y(36)-40 2078 y(37)-40
2135 y(38)-40 2191 y(39)-40 2248 y(40)-40 2304 y(41)-40
2361 y(42)-40 2417 y(43)-40 2474 y(44)-40 2530 y(45)-40
2587 y(46)-40 2643 y(47)-40 2699 y(48)p eop
%%Page: 6 8
6 7 bop 75 -100 a Fq(6)970 b Fg(CHAPTER)15 b(3.)35 b(MISCELLANY)17
b(F)o(OR)e(1.2)75 45 y Fq(is)20 b(in)g(determining)h(the)f(size)g(one)f
(needs)i(to)d(allo)q(ciate.)34 b(This)20 b(o)q(ccurs)g(since)h(the)e
(user)h(can)f(mo)q(dify)75 102 y(the)g(exten)o(t)h(using)g(the)f
Fd(MPI)p 583 102 13 2 v 14 w(UB)g Fq(and)h Fd(MPI)p 841
102 V 14 w(LB)f Fq(v)m(alues.)34 b(The)20 b(writer)f(of)g(the)g(gather)
g(routine)h(could)75 158 y(determine)14 b(this)f(information)g(b)o(y)g
(deco)q(ding)h(the)f(datat)o(yp)q(e.)18 b(Ho)o(w)o(ev)o(er,)12
b(this)h(is)g(more)g(w)o(ork)e(and)i(more)75 214 y(painful)j(than)e
(desired.)20 b(Th)o(us,)14 b(a)g(new)g(function)h(is)g(pro)o(vided)g
(whic)o(h)f(returns)g(the)h(true)e(exten)o(t)h(of)g(the)75
271 y(datat)o(yp)q(e.)75 422 y Fj(MPI)p 160 422 14 2
v 16 w(TRUE)p 294 422 V 17 w(EXTENT\(datat)o(yp)q(e,)j(true)p
775 422 V 17 w(lb,)e(true)p 929 422 V 17 w(extent\))117
499 y Fl(IN)155 b Fj(datat)o(yp)q(e)424 b Fl(datat)o(yp)q(e)14
b(to)g(get)g(information)d(on)117 574 y(OUT)108 b Fj(true)p
396 574 V 17 w(lb)461 b Fl(true)15 b(lo)o(w)o(er)e(b)q(ound)h(of)g
(datat)o(yp)q(e)117 649 y(OUT)108 b Fj(true)p 396 649
V 17 w(extent)379 b Fl(true)15 b(size)g(of)e(datat)o(yp)q(e)75
774 y Fk(int)23 b(MPI)p 245 774 15 2 v 17 w(True)p 358
774 V 17 w(extent\(MPI)p 615 774 V 16 w(Datatype)f(datatype,)h(MPI)p
1156 774 V 17 w(Aint)g(*true)p 1412 774 V 17 w(lb,)g(MPI)p
1596 774 V 17 w(Aint)393 830 y(*true)p 516 830 V 17 w(extent\))75
917 y(MPI)p 150 917 V 17 w(TRUE)p 263 917 V 16 w(EXTENT\(DATATYPE,)f
(TRUE)p 781 917 V 17 w(LB,)h(TRUE)p 989 917 V 17 w(EXTENT,)g(IERROR\))
170 973 y(INTEGER)g(DATATYPE,)g(TRUE)p 699 973 V 17 w(LB,)g(TRUE)p
907 973 V 17 w(EXTENT,)g(IERROR)166 1060 y Fj(true)p
244 1060 14 2 v 17 w(lb)14 b Fq(returns)f(the)g(o\013set)g(of)g(the)g
(lo)o(w)o(est)g(unit)h(of)f(store)g(whic)o(h)h(is)g(addressed)g(b)o(y)f
(the)h(datat)o(yp)q(e.)75 1116 y Fj(true)p 153 1116 V
17 w(extent)k Fq(returns)f(the)g(true)f(size)i(of)e(the)h(datat)o(yp)q
(e.)24 b(The)17 b Fj(true)p 1244 1116 V 17 w(extent)i
Fq(is)e(the)g(minim)o(um)h(n)o(um)o(b)q(er)75 1173 y(of)13
b(b)o(ytes)g(of)h(memory)f(necessary)g(to)g(hold)i(a)e(datat)o(yp)q(e)g
(and)h(ignores)g(the)f Fj(LB)h Fq(and)g Fj(UB)g Fq(that)e(ma)o(y)h(ha)o
(v)o(e)75 1229 y(b)q(een)j(used)g(in)g(creating)g(the)f(datat)o(yp)q
(e.)166 1326 y Fm(Alternativ)o(es)o(:)166 1376 y Fl(If)e(w)o(e)i(w)o
(an)o(t)e(to)h(b)q(e)g(consisten)o(t)h(with)f(the)g(MPI1)g(exten)o(t)h
(functions,)f(w)o(e)g(w)o(ould)f(need)i(three)g(functions:)166
1426 y Fd(MPI)p 243 1426 13 2 v 14 w(TRUE)p 366 1426
V 15 w(LB\(datat)o(yp)q(e,)g(lb\))166 1475 y(MPI)p 243
1475 V 14 w(TRUE)p 366 1475 V 15 w(UB\(datat)o(yp)q(e,)f(ub\))166
1525 y(MPI)p 243 1525 V 14 w(TRUE)p 366 1525 V 15 w(EXTENT\(datat)o(yp)
q(e,)h(extent\))166 1575 y Fl(On)f(the)h(other)f(hand,)f(w)o(e)i(ma)o
(y)c(not)j(w)o(an)o(t)g(to)f(mak)o(e)g(the)h(same)f(mistak)o(e)g(t)o
(wice...)75 1766 y Fn(3.6)59 b(Datat)n(yp)r(e)18 b(extent)75
1914 y Fm(Curren)o(t)c(Status:)j Fl(P)o(assed)e(once.)166
2018 y Fq(MPI)21 b(allo)o(ws)h(one)f(to)g(c)o(hange)h(the)f(exten)o(t)g
(of)g(a)h(datat)o(yp)q(e,)g(using)g(lo)o(w)o(er)f(b)q(ound)h(and)g(upp)
q(er)75 2074 y(b)q(ound)e(mark)o(ers)e(\()p Fd(MPI)p
490 2074 V 14 w(LB)h Fq(and)g Fd(MPI)p 740 2074 V 14
w(UB)p Fq(\).)f(This)h(is)h(useful,)g(as)f(it)g(allo)o(ws)g(to)f(con)o
(trol)h(the)g(stride)g(of)75 2131 y(successiv)o(e)e(datat)o(yp)q(es)e
(that)g(are)g(replicated)i(b)o(y)e(datat)o(yp)q(e)g(constructors,)g(or)
g(are)g(replicated)i(b)o(y)f(the)75 2187 y Fj(count)k
Fq(argumen)o(t)e(in)i(a)e(send)h(or)g(reciev)o(e)g(call.)32
b(Ho)o(w)o(ev)o(er,)19 b(the)f(curren)o(t)h(mec)o(hanism)h(for)e(ac)o
(hieving)75 2244 y(it)h(is)h(painful;)i(also)d(it)h(is)f(restrictiv)o
(e,)i(as)d Fd(MPI)p 906 2244 V 15 w(LB)h Fq(and)g Fd(MPI)p
1157 2244 V 14 w(UB)g Fq(are)f(\\stic)o(ky":)28 b(once)19
b(presen)o(t)g(in)h(a)75 2300 y(datat)o(yp)q(e,)d(they)h(cannot)g(b)q
(e)g(o)o(v)o(eriden)g(\(e.g.,)f(the)h(upp)q(er)h(b)q(ound)f(can)g(b)q
(e)g(mo)o(v)o(ed)g(up,)g(b)o(y)g(adding)g(a)75 2357 y(new)13
b Fd(MPI)p 243 2357 V 14 w(UB)g Fq(mark)o(er,)f(but)h(cannot)g(b)q(e)g
(mo)o(v)o(ed)g(do)o(wn)f(b)q(elo)o(w)i(an)f(existing)h
Fj(MPI)p 1474 2357 14 2 v 15 w(UB)g Fq(mark)o(er\).)k(A)13
b(new)75 2413 y(function)j(is)g(pro)o(vided)g(to)e(facilitate)i(these)g
(c)o(hanges.)1967 46 y Fh(1)1967 103 y(2)1967 159 y(3)1967
215 y(4)1967 272 y(5)1967 328 y(6)1967 385 y(7)1967 441
y(8)1967 498 y(9)1959 554 y(10)1959 611 y(11)1959 667
y(12)1959 724 y(13)1959 780 y(14)1959 836 y(15)1959 893
y(16)1959 949 y(17)1959 1006 y(18)1959 1062 y(19)1959
1119 y(20)1959 1175 y(21)1959 1232 y(22)1959 1288 y(23)1959
1345 y(24)1959 1401 y(25)1959 1457 y(26)1959 1514 y(27)1959
1570 y(28)1959 1627 y(29)1959 1683 y(30)1959 1740 y(31)1959
1796 y(32)1959 1853 y(33)1959 1909 y(34)1959 1966 y(35)1959
2022 y(36)1959 2078 y(37)1959 2135 y(38)1959 2191 y(39)1959
2248 y(40)1959 2304 y(41)1959 2361 y(42)1959 2417 y(43)1959
2474 y(44)1959 2530 y(45)1959 2587 y(46)1959 2643 y(47)1959
2699 y(48)p eop
%%Page: 7 9
7 8 bop 75 -100 a Fg(3.7.)34 b(MPI-1.0)14 b(AND)i(MPI-1.1)e(CLARIFICA)l
(TIONS)802 b Fq(7)75 45 y Fj(MPI)p 160 45 14 2 v 16 w(SET)p
259 45 V 17 w(EXTENT\(datat)o(yp)q(e,)16 b(lb,)f(extent\))117
122 y Fl(INOUT)62 b Fj(datat)o(yp)q(e)424 b Fl(datat)o(yp)q(e)14
b(to)g(up)q(date)h(exten)o(t)117 197 y(IN)155 b Fj(true)p
396 197 V 17 w(lb)461 b Fl(new)15 b(lo)o(w)o(er)e(b)q(ound)h(of)f
(datat)o(yp)q(e)117 273 y(IN)155 b Fj(true)p 396 273
V 17 w(extent)379 b Fl(new)15 b(exten)o(t)f(of)g(datat)o(yp)q(e)75
397 y Fk(int)23 b(MPI)p 245 397 15 2 v 17 w(Set)p 334
397 V 17 w(extent\(MPI)p 591 397 V 16 w(Datatype)g(datatype,)f(MPI)p
1132 397 V 17 w(Aint)h(lb,)h(MPI)p 1436 397 V 17 w(Aint)f(extent\))75
483 y(MPI)p 150 483 V 17 w(TRUE)p 263 483 V 16 w(EXTENT\(DATATYPE,)f
(LB,)i(EXTENT,)e(IERROR\))170 540 y(INTEGER)h(DATATYPE,)g(LB,)g
(EXTENT,)g(IERROR)166 626 y Fq(Resets)13 b(the)g(lo)o(w)o(er)g(b)q
(ound)h(and)f(the)h(exten)o(t)e(\(and,)h(hence,)h(the)g(upp)q(er)g(b)q
(ound\))f(of)g Fj(datat)o(yp)q(e)p Fq(.)21 b(The)75 683
y(new)e(settings)f(will)i(a\013ect)e(the)h(outcome)f(of)g(send)h(or)f
(receiv)o(e)h(op)q(erations)g(that)e(use)i Fj(datat)o(yp)q(e)p
Fq(,)i(and)75 739 y(a\013ects)14 b(the)i(v)m(alue)g(of)f(datat)o(yp)q
(es)g(constructed)g(using)h Fj(datat)o(yp)q(e)h Fq(as)e(an)g(agumen)o
(t,)f(after)h(the)g(call)i(w)o(as)75 796 y(made.)i(Ho)o(w)o(ev)o(er,)11
b(datat)o(yp)q(es)h(that)f(w)o(ere)h(previously)i(constructed)e(using)h
Fj(datat)o(yp)q(e)h Fq(are)e(not)g(a\013ected.)189 902
y Fe(R)n(ationale.)189 977 y Fq(This)h(is)g(consisten)o(t)f(to)g(the)h
(MPI)f(statemen)o(t)g(that)g(\\the)g(system)g(b)q(eha)o(v)o(es)h(as)f
(if)h(input)g(datat)o(yp)q(e)189 1034 y(argumen)o(ts)h(to)h(deriv)o(ed)
h(datat)o(yp)q(e)e(constructors)h(are)g(passed)g(b)o(y)g(v)m(alue".)189
1109 y(\()p Fe(End)g(of)i(r)n(ationale.)p Fq(\))189 1215
y Fe(A)n(dvic)n(e)g(to)h(users.)51 b Fq(It)17 b(is)g(recommended)h
(that)f(uses)g(use)g(the)g(function)h Fj(MPI)p 1571 1215
14 2 v 16 w(SET)p 1670 1215 V 17 w(EXTENT)p Fq(,)189
1271 y(rather)c(than)h Fd(MPI)p 508 1271 13 2 v 15 w(LB)g
Fq(and)g Fd(MPI)p 751 1271 V 15 w(UB)f Fq(mark)o(ers.)189
1347 y(\()p Fe(End)h(of)i(advic)n(e)f(to)g(users.)p Fq(\))1875
1408 y Fi(?)g Fh(\(Oct\))75 1540 y Fn(3.7)59 b(MPI-1.0)19
b(and)h(MPI-1.1)f(Cla)n(ri\014cations)75 1643 y Ff(3.7.1)49
b(Cla)o(ri\014cation)18 b(of)e(MPI)p 627 1643 15 2 v
18 w(FINALIZE)1875 1672 y Fi(>)g Fh(\(Oct\))75 1776 y
Fm(Curren)o(t)e(Status:)j Fl(Not)d(v)o(oted)g(on.)166
1880 y Fq(This)j(routine)f(cleans)h(up)f(all)h(MPI)f(state.)22
b(Eac)o(h)16 b(pro)q(cess)g(m)o(ust)f(call)i Fj(MPI)p
1485 1880 14 2 v 16 w(FINALIZE)e Fq(b)q(efore)i(it)75
1936 y(exits.)j(Once)c(this)f(routine)g(returns,)f(no)h(MPI)g(routine)g
(\(ev)o(en)g(not)f Fj(MPI)p 1338 1936 V 16 w(INIT)p Fq(\))f(ma)o(y)h(b)
q(e)i(called.)21 b(Eac)o(h)75 1992 y(pro)q(cess)11 b(m)o(ust)e
(complete)j(an)o(y)e(p)q(ending)i(comm)o(unication)f(it)g(initiated)h
(b)q(efore)e(it)h(calls)g Fj(MPI)p 1656 1992 V 16 w(FINALIZE)p
Fq(.)75 2049 y(If)16 b(the)g(call)h(returns,)e(eac)o(h)h(pro)q(cess)g
(ma)o(y)f(con)o(tin)o(ue)i(lo)q(cal)f(computations,)g(or)f(exit,)h
(without)g(partici-)75 2105 y(pating)g(in)g(further)g
Fj(MPI)f Fq(comm)o(unication)h(with)g(other)f(pro)q(cesses.)22
b Fj(MPI)p 1362 2105 V 16 w(FINALIZE)14 b Fq(is)j(collectiv)o(e)g(on)75
2162 y Fj(MPI)p 160 2162 V 16 w(COMM)p 318 2162 V 16
w(W)o(ORLD)p Fq(.)1369 b Fi(>)16 b Fh(\(Oct\))166 2218
y Fq(It)f(is)h(not)f(required)h(that)e Fj(MPI)p 703 2218
V 16 w(Finalize)h Fq(return,)g(ev)o(en)g(on)h(one)f(pro)q(cess.)1875
2220 y Fi(?)h Fh(\(Oct\))189 2325 y Fe(A)n(dvic)n(e)11
b(to)i(implementors.)38 b Fq(Ev)o(en)11 b(though)g(a)g(pro)q(cess)h
(has)f(completed)i(all)f(the)f(comm)o(unication)189 2381
y(it)j(initiated,)h(suc)o(h)g(comm)o(unication)f(ma)o(y)f(not)h(y)o(et)
g(b)q(e)g(completed)h(from)e(the)h(viewp)q(oin)o(t)h(of)f(the)189
2437 y(underlying)j(MPI)f(system.)k(E.g.,)14 b(a)h(blo)q(c)o(king)i
(send)f(ma)o(y)f(ha)o(v)o(e)g(completed,)i(ev)o(en)e(though)h(the)189
2494 y(data)k(is)h(still)h(bu\013ered)f(at)f(the)h(sender.)37
b(The)20 b(MPI)h(implemen)o(tation)h(m)o(ust)e(ensure)h(that)f(a)189
2550 y(pro)q(cess)14 b(has)g(completed)h(an)o(y)f(in)o(v)o(olv)o(emen)o
(t)g(in)h(MPI)f(comm)o(unication)h(b)q(efore)f Fj(MPI)p
1669 2550 V 16 w(FINALIZE)189 2607 y Fq(returns.)26 b(Th)o(us,)17
b(if)h(a)e(pro)q(cess)i(exits)g(after)e(the)h(call)i(to)d
Fj(MPI)p 1271 2607 V 16 w(FINALIZE)p Fq(,)g(this)i(will)h(not)e(cause)
189 2663 y(an)e(ongoing)g(comm)o(unication)h(to)e(fail.)21
b(\()p Fe(End)16 b(of)g(advic)n(e)g(to)h(implementors.)p
Fq(\))-32 46 y Fh(1)-32 103 y(2)-32 159 y(3)-32 215 y(4)-32
272 y(5)-32 328 y(6)-32 385 y(7)-32 441 y(8)-32 498 y(9)-40
554 y(10)-40 611 y(11)-40 667 y(12)-40 724 y(13)-40 780
y(14)-40 836 y(15)-40 893 y(16)-40 949 y(17)-40 1006
y(18)-40 1062 y(19)-40 1119 y(20)-40 1175 y(21)-40 1232
y(22)-40 1288 y(23)-40 1345 y(24)-40 1401 y(25)-40 1457
y(26)-40 1514 y(27)-40 1570 y(28)-40 1627 y(29)-40 1683
y(30)-40 1740 y(31)-40 1796 y(32)-40 1853 y(33)-40 1909
y(34)-40 1966 y(35)-40 2022 y(36)-40 2078 y(37)-40 2135
y(38)-40 2191 y(39)-40 2248 y(40)-40 2304 y(41)-40 2361
y(42)-40 2417 y(43)-40 2474 y(44)-40 2530 y(45)-40 2587
y(46)-40 2643 y(47)-40 2699 y(48)p eop
%%Page: 8 10
8 9 bop 75 -100 a Fq(8)970 b Fg(CHAPTER)15 b(3.)35 b(MISCELLANY)17
b(F)o(OR)e(1.2)189 45 y Fe(A)n(dvic)n(e)i(to)i(implementors.)54
b Fq(Although)18 b(it)g(is)g(not)f(required,)i(it)f(has)f(b)q(een)i
(found)f(that)f(users)189 102 y(exp)q(ect)f(that)f(at)f(least)i(one)f
(pro)q(cess)h(return,)f(so)g(that)g(they)h(can)f(kno)o(w)g(that)g(the)g
(MPI)h(p)q(ortion)189 158 y(of)e(the)g(computation)g(is)h(o)o(v)o(er.)k
(In)c(addition,)g(in)g(a)f(POSIX)i(en)o(vironmen)o(t,)e(they)h(ma)o(y)e
(desire)j(to)189 214 y(supply)f(an)f(exit)g(co)q(de)h(for)e(eac)o(h)h
(pro)q(cess)g(that)f(returns)h(from)f Fj(MPI)p 1357 214
14 2 v 16 w(FINALIZE)p Fq(.)g(\()p Fe(End)h(of)h(advic)n(e)189
271 y(to)h(implementors.)p Fq(\))-117 332 y Fi(>)f Fh(\(Oct\))75
464 y Fn(3.8)59 b(Determining)19 b(Whether)g(MPI)h(Has)g(Finished)75
613 y Fm(Curren)o(t)14 b(Status:)j Fl(No)d(v)o(otes.)166
716 y Fq(One)i(of)f(the)h(goals)f(of)h Fj(MPI)f Fq(w)o(as)f(to)h(allo)o
(w)h(for)f(la)o(y)o(ered)h(libraries.)23 b(In)16 b(order)f(for)g(a)h
(library)g(to)f(do)75 773 y(this)k(cleanly)l(,)i(it)e(needs)g(to)f(kno)
o(w)g(if)h Fj(MPI)f Fq(is)i(activ)o(e.)30 b(In)19 b Fj(MPI-1)f
Fq(the)h(function)g Fj(MPI)p 1590 773 V 16 w(Initialized)g
Fq(w)o(as)75 829 y(pro)o(vided)c(to)g(tell)g(if)g Fj(MPI)f
Fq(had)h(b)q(een)h(initialzed.)23 b(The)15 b(problem)g(arises)g(in)g
(kno)o(wing)g(if)g Fj(MPI)f Fq(has)h(b)q(een)75 886 y(\014nalized.)31
b(Once)19 b Fj(MPI)f Fq(has)g(b)q(een)h(\014nalized)h(it)f(is)g(no)f
(longer)g(activ)o(e)h(and)f(cannot)g(b)q(e)h(restarted.)28
b(A)75 942 y(library)16 b(needs)g(to)e(b)q(e)i(able)g(to)e(determine)i
(this)f(to)g(act)f(accordingly)l(.)22 b(Do)14 b(ac)o(hiev)o(e)i(this)f
(the)g(follo)o(wing)75 999 y(function)h(is)g(needed:)75
1150 y Fj(MPI)p 160 1150 V 16 w(FINALIZED\(\015ag\))117
1227 y Fl(OUT)108 b Fj(\015ag)518 b Fl(true)15 b(if)e
Fd(MPI)g Fl(w)o(as)h(\014nalized)g(\(logical\).)75 1351
y Fk(int)23 b(MPI)p 245 1351 15 2 v 17 w(Finalized\(int)f(*flag\))75
1438 y(MPI)p 150 1438 V 17 w(FINALIZED\(flag,)g(IERROR\)\))170
1494 y(FLAG,)i(IERROR)75 1581 y(int)f(MPI::Finalized\(bool)f
(&flag\)\)?????)166 1667 y Fq(This)17 b(function)g(returns)f(true)g(if)
h Fj(MPI)p 833 1667 14 2 v 16 w(FINALIZE)e Fq(has)h(returned.)23
b(Th)o(us,)16 b(it)h(will)h(return)e(false)g(if)75 1724
y(called)k(in)f(a)f(callbac)o(k)h(routine)f(in)o(v)o(ok)o(ed)h(b)o(y)f
Fj(MPI)p 960 1724 V 16 w(FINALIZE)p Fq(.)f(It)h(is)g(legal)h(to)f(call)
h Fj(MPI)p 1636 1724 V 16 w(FINALIZED)75 1780 y Fq(b)q(efore)c
Fj(MPI)p 296 1780 V 16 w(INIT)g Fq(and)g(after)g Fj(MPI)p
694 1780 V 15 w(FINALIZE)p Fq(.)-1030 b Fi(?)15 b Fh(\(Oct\))-117
1839 y Fi(>)g Fh(\(Oct\))75 1902 y Ff(3.8.1)49 b(Cla)o(ri\014cation)18
b(of)e(status)f(after)h(MPI)p 875 1902 15 2 v 18 w(Isend)75
2035 y Fm(Curren)o(t)e(Status:)j Fl(No)d(v)o(otes.)166
2138 y Fq(A)22 b Fj(status)i Fq(returned)e(b)o(y)g(a)g(call)h(to)e
Fj(MPI)p 900 2138 14 2 v 16 w(W)l(AIT)p Fq(,)g Fj(MPI)p
1145 2138 V 16 w(TEST)p Fq(,)h(or)f(an)o(y)h(of)f(the)h(other)g(deriv)o
(ed)75 2195 y(functions,)j(where)f(the)f Fj(request)h
Fq(corresp)q(onds)g(to)e(a)h(send)g(call,)j(is)e(unde\014ned,)i(with)d
(t)o(w)o(o)f(excep-)75 2251 y(tions:)36 b(The)24 b(error)f(status)f
(\014eld)j(will)g(con)o(tain)e(v)m(alid)i(information)f(if)f(the)h(w)o
(ait)f(or)g(test)f(call)j(re-)75 2308 y(turned)20 b(with)g
Fd(MPI)p 411 2308 13 2 v 15 w(ERROR)p 563 2308 V 13 w(IN)p
617 2308 V 15 w(ST)m(A)m(TUS)p Fq(;)f(and)h(the)g(returned)g(status)f
(can)h(b)q(e)g(querried)h(b)o(y)f(the)g(call)75 2364
y Fj(MPI)p 160 2364 14 2 v 16 w(TEST)p 290 2364 V 16
w(CANCELLED)p Fq(.)-690 b Fi(?)15 b Fh(\(Oct\))75 2486
y Ff(3.8.2)49 b(Cla)o(ri\014cation)18 b(of)e(MPI)p 627
2486 15 2 v 18 w(INTERCOMM)p 936 2486 V 20 w(CREA)l(TE)75
2619 y Fm(Curren)o(t)e(Status:)j Fl(P)o(assed)e(once.)1967
46 y Fh(1)1967 103 y(2)1967 159 y(3)1967 215 y(4)1967
272 y(5)1967 328 y(6)1967 385 y(7)1967 441 y(8)1967 498
y(9)1959 554 y(10)1959 611 y(11)1959 667 y(12)1959 724
y(13)1959 780 y(14)1959 836 y(15)1959 893 y(16)1959 949
y(17)1959 1006 y(18)1959 1062 y(19)1959 1119 y(20)1959
1175 y(21)1959 1232 y(22)1959 1288 y(23)1959 1345 y(24)1959
1401 y(25)1959 1457 y(26)1959 1514 y(27)1959 1570 y(28)1959
1627 y(29)1959 1683 y(30)1959 1740 y(31)1959 1796 y(32)1959
1853 y(33)1959 1909 y(34)1959 1966 y(35)1959 2022 y(36)1959
2078 y(37)1959 2135 y(38)1959 2191 y(39)1959 2248 y(40)1959
2304 y(41)1959 2361 y(42)1959 2417 y(43)1959 2474 y(44)1959
2530 y(45)1959 2587 y(46)1959 2643 y(47)1959 2699 y(48)p
eop
%%Page: 9 11
9 10 bop 75 -100 a Fg(3.8.)34 b(DETERMINING)15 b(WHETHER)h
Fj(MPI)e Fg(HAS)i(FINISHED)630 b Fq(9)75 45 y Fj(The)11
b(Problem:)44 b Fq(The)12 b(MPI)e(1.1)g(standard)h(sa)o(ys,)f(in)i(the)
f(discussion)h(of)f Fj(MPI)p 1389 45 14 2 v 16 w(INTERCOMM)p
1679 45 V 16 w(CREA)l(TE)p Fq(,)75 102 y(b)q(oth)k(that)189
195 y(The)g(groups)g(m)o(ust)g(b)q(e)g(disjoin)o(t)75
289 y(and)g(that)189 383 y(The)g(leaders)h(ma)o(y)e(b)q(e)i(the)g(same)
e(pro)q(cess.)75 477 y(T)l(o)d(further)h(m)o(uddy)g(the)g(w)o(aters,)e
(the)i(reason)f(giv)o(en)i(for)e(\\The)g(groups)g(m)o(ust)h(b)q(e)g
(disjoin)o(t")g(is)g(based)g(on)75 533 y(concerns)18
b(ab)q(out)g(the)g(implmen)o(tation)g(of)g Fj(MPI)p 922
533 V 15 w(INTERCOMM)p 1211 533 V 17 w(CREA)l(TE)h Fq(that)e(are)g(not)
h(applicable)75 590 y(for)d(the)g(case)g(where)h(the)f(leaders)h(are)f
(the)g(same)g(pro)q(cess.)75 710 y Fj(The)h(Fix:)45 b
Fq(Delete)15 b(the)h(text:)189 804 y(\(the)f(t)o(w)o(o)e(leaders)j
(could)h(b)q(e)e(the)h(same)f(pro)q(cess\))75 897 y(from)f(the)i
(discussion)h(of)d Fj(MPI)p 610 897 V 16 w(INTERCOMM)p
900 897 V 17 w(CREA)l(TE)p Fq(.)166 954 y(Replace)j(the)e(text:)189
1048 y(All)f(in)o(ter-comm)o(unicator)g(constructors)e(are)h(blo)q(c)o
(king)h(and)g(require)g(that)e(the)i(lo)q(cal)g(and)189
1104 y(remote)g(groups)h(b)q(e)h(disjoin)o(t)g(in)g(order)f(to)f(a)o(v)
o(oid)h(deadlo)q(c)o(k.)75 1198 y(with)189 1292 y(All)f(in)o(ter-comm)o
(unicator)g(constructors)e(are)h(blo)q(c)o(king)h(and)g(require)g(that)
e(the)i(lo)q(cal)g(and)189 1348 y(remote)g(groups)h(b)q(e)h(disjoin)o
(t.)289 1454 y Fe(A)n(dvic)n(e)e(to)h(users.)40 b Fq(The)14
b(groups)g(m)o(ust)f(b)q(e)i(disjoin)o(t)g(for)e(sev)o(eral)h(reasons.)
19 b(Primar-)289 1511 y(ily)l(,)12 b(this)f(is)g(the)f(in)o(ten)o(t)h
(of)f(the)g(in)o(tercomm)o(unicators)h({)f(to)g(pro)o(vide)h(a)f(comm)o
(unicator)289 1567 y(for)17 b(comm)o(unication)i(b)q(et)o(w)o(een)g
(disjoin)o(t)f(groups.)29 b(This)19 b(is)f(re\015ected)h(in)g(the)g
(de\014-)289 1624 y(nition)e(of)f Fj(MPI)p 559 1624 V
15 w(INTERCOMM)p 848 1624 V 17 w(MERGE)p Fq(,)g(whic)o(h)h(allo)o(ws)g
(the)f(user)g(to)f(con)o(trol)h(the)289 1680 y(ranking)k(of)g(the)g
(pro)q(cesses)g(in)h(the)g(created)f(in)o(tracomm)o(unicator;)h(this)g
(ranking)289 1737 y(mak)o(es)c(little)i(sense)f(if)g(the)g(groups)g
(are)f(not)h(disjoin)o(t.)28 b(In)18 b(addition,)h(the)f(natural)289
1793 y(extension)c(of)g(collectiv)o(e)i(op)q(erations)e(to)f(in)o
(tercomm)o(unicators)h(\(b)q(eing)h(considered)289 1850
y(for)i(MPI-2\))h(mak)o(es)f(the)h(most)g(sense)g(when)h(the)f(groups)g
(are)f(disjoin)o(t.)30 b(It)18 b(is)g(the)289 1906 y(in)o(ten)o(t)i(of)
g(the)g(MPI)g(de\014nition)i(not)e(to)f(preclude)j(future)f
(extensions.)35 b(\()p Fe(End)20 b(of)289 1963 y(advic)n(e)c(to)g
(users.)p Fq(\))75 2084 y Ff(3.8.3)49 b(Cla)o(ri\014cation)18
b(of)e(Binding)i(of)f(MPI)p 854 2084 15 2 v 18 w(T)l(yp)q(e)p
971 2084 V 18 w(size)75 2217 y Fm(Curren)o(t)d(Status:)j
Fl(P)o(assed)e(once.)166 2321 y Fq(This)i(clari\014cation)h(is)f
(needed)h(in)f(the)g(MPI-1)f(description)i(of)e Fj(MPI)p
1369 2321 14 2 v 16 w(T)l(yp)q(e)p 1477 2321 V 17 w(size)p
Fq(,)h(since)g(the)g(issue)75 2378 y(rep)q(eatedly)f(arises.)k(It)c(is)
f(a)g(clari\014cation)i(of)e(the)g(binding.)189 2484
y Fe(A)n(dvic)n(e)20 b(to)j(users.)76 b Fq(The)21 b(binding)i(of)e
Fj(MPI)p 1004 2484 V 16 w(T)l(yp)q(e)p 1112 2484 V 17
w(size)p Fq(,)i(sp)q(eci\014cally)l(,)i(whether)d(the)f(output)189
2540 y(argumen)o(t)e(in)i(C)g(is)f(of)g(t)o(yp)q(e)h
Fk(int)f Fq(as)g(in)h(the)f(curren)o(t)h(standard)f(or)f(should)j(b)q
(e)f(c)o(hanged)g(to)189 2597 y(something)14 b(else,)i(has)e(b)q(een)i
(extensiv)o(ely)f(discussed)h(b)o(y)f(the)g(MPI)f(F)l(orum.)19
b(The)c(\014nal)g(decision)189 2653 y(is)g(to)g(lea)o(v)o(e)g(it)h(an)f
Fk(int)p Fq(.)k(\()p Fe(End)d(of)g(advic)n(e)g(to)h(users.)p
Fq(\))-32 46 y Fh(1)-32 103 y(2)-32 159 y(3)-32 215 y(4)-32
272 y(5)-32 328 y(6)-32 385 y(7)-32 441 y(8)-32 498 y(9)-40
554 y(10)-40 611 y(11)-40 667 y(12)-40 724 y(13)-40 780
y(14)-40 836 y(15)-40 893 y(16)-40 949 y(17)-40 1006
y(18)-40 1062 y(19)-40 1119 y(20)-40 1175 y(21)-40 1232
y(22)-40 1288 y(23)-40 1345 y(24)-40 1401 y(25)-40 1457
y(26)-40 1514 y(27)-40 1570 y(28)-40 1627 y(29)-40 1683
y(30)-40 1740 y(31)-40 1796 y(32)-40 1853 y(33)-40 1909
y(34)-40 1966 y(35)-40 2022 y(36)-40 2078 y(37)-40 2135
y(38)-40 2191 y(39)-40 2248 y(40)-40 2304 y(41)-40 2361
y(42)-40 2417 y(43)-40 2474 y(44)-40 2530 y(45)-40 2587
y(46)-40 2643 y(47)-40 2699 y(48)p eop
%%Page: 10 12
10 11 bop 75 -100 a Fq(10)952 b Fg(CHAPTER)16 b(3.)29
b(MISCELLANY)17 b(F)o(OR)e(1.2)75 45 y Ff(3.8.4)49 b(Cla)o
(ri\014cation)18 b(of)e(MPI)p 627 45 15 2 v 18 w(REDUCE)75
131 y Fq(The)f(curren)o(t)h(text)e(on)h(p.)20 b(115)15
b(lines)i(25-28)d(from)g(MPI-1.1)h(\(June)h(12,)e(1995\))f(sa)o(ys:)166
187 y(The)j Fj(datat)o(yp)q(e)i Fq(argumen)o(t)e(of)f
Fj(MPI)p 783 187 14 2 v 16 w(REDUCE)i Fq(m)o(ust)f(b)q(e)g(compatible)i
(with)e Fj(op)p Fq(.)23 b(Prede\014ned)18 b(op-)75 244
y(erators)h(w)o(ork)g(only)i(with)f(the)g Fj(MPI)g Fq(t)o(yp)q(es)g
(listed)h(in)g(Sec.)35 b(4.9.2)18 b(and)j(Sec.)35 b(4.9.3.)d
(User-de\014ned)75 300 y(op)q(erators)14 b(ma)o(y)h(op)q(erate)g(on)g
(general,)g(deriv)o(ed)h(datat)o(yp)q(es.)166 357 y(This)g(text)e(is)i
(c)o(hanged)g(to:)166 413 y(The)g Fj(datat)o(yp)q(e)i
Fq(argumen)o(t)e(of)f Fj(MPI)p 783 413 V 16 w(REDUCE)i
Fq(m)o(ust)f(b)q(e)g(compatible)i(with)e Fj(op)p Fq(.)23
b(Prede\014ned)18 b(op-)75 470 y(erators)c(w)o(ork)h(only)h(with)f(the)
h Fj(MPI)f Fq(t)o(yp)q(es)g(listed)i(in)f(Sec.)21 b(4.9.2)14
b(and)h(Sec.)21 b(4.9.3.)e(F)l(urthermore,)c(the)75 526
y Fj(datat)o(yp)q(e)20 b Fq(and)e Fj(op)h Fq(giv)o(en)f(for)g
(prede\014ned)i(op)q(erators)d(m)o(ust)h(b)q(e)h(the)f(same)g(on)g(all)
h(pro)q(cesses.)30 b(User-)75 583 y(de\014ned)15 b(op)q(erators)e(ma)o
(y)g(op)q(erate)g(on)h(general,)g(deriv)o(ed)h(datat)o(yp)q(es)e
(without)g(the)h(restrictions)g(ab)q(o)o(v)o(e)75 639
y(for)h(prede\014ned)h(op)q(erators.)-681 b Fi(>)15 b
Fh(\(Oct\))166 695 y Fq(Note)10 b(that)f(it)i(is)f(p)q(ossible)i(for)e
(users)g(to)f(supply)j(di\013eren)o(t)e(user-de\014ned)i(op)q(erations)
e(to)g Fj(MPI)p 1750 695 V 16 w(REDUCE)75 752 y Fq(in)23
b(eac)o(h)e(pro)q(cess.)40 b Fj(MPI)21 b Fq(do)q(es)h(not)f(de\014ne)i
(whic)o(h)g(op)q(erations)e(are)h(used)g(in)h(this)f(case)f(on)h(whic)o
(h)75 808 y(op)q(erands.)189 915 y Fe(A)n(dvic)n(e)e(to)h(users.)71
b Fq(Users)20 b(should)i(mak)o(e)d(no)i(assumptions)f(ab)q(out)g(ho)o
(w)g Fj(MPI)p 1638 915 V 16 w(RECUCE)h Fq(is)189 971
y(implemen)o(ted.)29 b(Safest)17 b(is)h(to)f(ensure)i(that)e(the)g
(same)h(function)g(is)g(passed)g(to)f Fj(MPI)p 1685 971
V 16 w(REDUCE)189 1028 y Fq(b)o(y)e(eac)o(h)g(pro)q(cess.)20
b(\()p Fe(End)c(of)g(advic)n(e)g(to)h(users.)p Fq(\))-117
1089 y Fi(?)e Fh(\(Oct\))75 1221 y Fn(3.9)59 b(New)20
b(Datat)n(yp)r(es)75 1324 y Ff(3.9.1)49 b(Simple)17 b(Struct)d(T)l(yp)q
(es)75 1457 y Fm(Curren)o(t)g(Status:)j Fl(Not)d(v)o(oted)g(on)f(y)o
(et.)75 1655 y Fj(MPI)p 160 1655 V 16 w(TYPE)p 293 1655
V 17 w(SIMPLE)p 469 1655 V 15 w(STRUCT\(count,)k(a)o(rra)o(y)p
908 1655 V 14 w(of)p 959 1655 V 16 w(blo)q(cklengths,)h(a)o(rra)o(y)p
1334 1655 V 14 w(of)p 1385 1655 V 16 w(t)o(yp)q(es,)e(newt)o(yp)q(e\))
117 1732 y Fl(IN)155 b Fj(count)482 b Fl(n)o(um)o(b)q(er)13
b(of)h(blo)q(c)o(ks)g(\(in)o(teger\))117 1807 y(IN)155
b Fj(a)o(rra)o(y)p 416 1807 V 15 w(of)p 468 1807 V 16
w(blo)q(cklengths)191 b Fl(n)o(um)o(b)q(er)13 b(of)h(elemen)o(ts)f(in)h
(eac)o(h)g(blo)q(c)o(k)g(\(arra)o(y)g(of)f(in)o(teger\))117
1882 y(IN)155 b Fj(a)o(rra)o(y)p 416 1882 V 15 w(of)p
468 1882 V 16 w(t)o(yp)q(es)327 b Fl(t)o(yp)q(e)15 b(of)e(elemen)o(ts)h
(in)f(eac)o(h)h(blo)q(c)o(k)g(\(arra)o(y)g(of)f(handle\))117
1958 y(OUT)108 b Fj(newt)o(yp)q(e)433 b Fl(new)15 b(datat)o(yp)q(e)f
(\(handle\))166 2082 y Fq(Eac)o(h)c(t)o(yp)q(e)h(in)g(the)g
Fj(a)o(rra)o(y)p 592 2082 V 14 w(of)p 643 2082 V 16 w(t)o(yp)q(es)h
Fq(list)g(m)o(ust)e(b)q(e)h(a)f Fe(p)n(ortable)h Fq(datat)o(yp)q(e:)17
b(I.e.,)10 b(a)h(basic)g(datat)o(yp)q(e,)f(or)75 2138
y(a)g(datat)o(yp)q(e)f(constructed)i(from)e(a)h(p)q(ortable)h(datat)o
(yp)q(e)e(using)i(one)f(of)g(the)g(constructors)g Fj(MPI)p
1681 2138 V 15 w(TYPE)p 1813 2138 V 17 w(CONTIGUOUS,)75
2195 y(MPI)p 160 2195 V 16 w(TYPE)p 293 2195 V 17 w(VECTOR,)16
b(MPI)p 600 2195 V 15 w(TYPE)p 732 2195 V 17 w(INDEXED,)f
Fq(or)g Fj(MPI)p 1110 2195 V 16 w(TYPE)p 1243 2195 V
16 w(SIMPLE)p 1418 2195 V 16 w(STRUCT)p Fq(.)166 2251
y(This)22 b(t)o(yp)q(e)g(constructor)f(is)i(similar)f(to)g
Fj(MPI)p 988 2251 V 15 w(TYPE)p 1120 2251 V 17 w(STRUCT)p
Fq(,)g(except)h(that)e(the)h(user)g(do)q(es)75 2308 y(not)e(supply)h
(an)f(arra)o(y)e(of)i(displacemen)o(ts.)35 b(Instead,)22
b(the)e(successiv)o(e)h(blo)q(c)o(ks)f(are)g(assumed)g(to)f(b)q(e)75
2364 y(con)o(tiguous.)g(P)o(adding)11 b(spaces)h(are)e(added,)j
(according)e(to)g(the)g(default)h(alignmen)o(t)g(rules)g(for)e
(structure)75 2421 y(comp)q(onen)o(ts.)21 b(This)c(facilitates)f(the)g
(construction)g(of)f(datat)o(yp)q(es)g(for)g(structures,)g(as)h(the)f
(user)h(need)75 2477 y(not)f(compute)g(displacemen)o(ts.)-743
b Fi(>)15 b Fh(\(Oct\))166 2534 y Fq(This)h(can)f(probably)h(b)q(e)g
(more)e(elegan)o(tly)i(expressed)g(in)g(terms)f(of)g(exten)o(ts.)-117
2536 y Fi(?)g Fh(\(Oct\))75 2640 y Fb(Example)j(3.1)k
Fq(The)14 b(follo)o(wing)g(co)q(de)f(declares)h(a)f(structure)g(t)o(yp)
q(e)g(and)h(creates)f(a)g(datat)o(yp)q(e)f(for)h(that)75
2696 y(structure)i(t)o(yp)q(e.)1967 46 y Fh(1)1967 103
y(2)1967 159 y(3)1967 215 y(4)1967 272 y(5)1967 328 y(6)1967
385 y(7)1967 441 y(8)1967 498 y(9)1959 554 y(10)1959
611 y(11)1959 667 y(12)1959 724 y(13)1959 780 y(14)1959
836 y(15)1959 893 y(16)1959 949 y(17)1959 1006 y(18)1959
1062 y(19)1959 1119 y(20)1959 1175 y(21)1959 1232 y(22)1959
1288 y(23)1959 1345 y(24)1959 1401 y(25)1959 1457 y(26)1959
1514 y(27)1959 1570 y(28)1959 1627 y(29)1959 1683 y(30)1959
1740 y(31)1959 1796 y(32)1959 1853 y(33)1959 1909 y(34)1959
1966 y(35)1959 2022 y(36)1959 2078 y(37)1959 2135 y(38)1959
2191 y(39)1959 2248 y(40)1959 2304 y(41)1959 2361 y(42)1959
2417 y(43)1959 2474 y(44)1959 2530 y(45)1959 2587 y(46)1959
2643 y(47)1959 2699 y(48)p eop
%%Page: 11 13
11 12 bop 75 -100 a Fg(3.9.)34 b(NEW)15 b(D)o(A)l(T)l(A)l(TYPES)1245
b Fq(11)75 45 y Fk(struct)23 b(record)g({)147 102 y(char)g(name;)147
158 y(double)g(position[3];)147 214 y(float)47 b(mass;)147
271 y(})75 384 y(MPI_Datatype)22 b(record_type;)75 440
y(MPI_datatype)g(types[3])h(=)h({MPI_CHAR,)e(MPI_DOUBLE,)h(MPI_FLOAT};)
75 497 y(int)238 b(lengths[3])23 b(=)g({1,)h(3,)f(1};)75
610 y(MPI_Type_simple_struct\()e(3,)i(lengths,)g(types,)g
(record_type\);)189 704 y Fe(R)n(ationale.)76 b Fq(The)21
b(co)q(de)h(ab)q(o)o(v)o(e)f(is)h(m)o(uc)o(h)f(simpler)h(and)g(more)e
(natural)i(than)f(the)g(curren)o(t)189 760 y(approac)o(h,)14
b(that)h(uses)g Fj(MPI)p 677 760 14 2 v 16 w(TYPE)p 810
760 V 17 w(STRUCT)p Fq(,)g(and)h(requires)g(to)e(compute)h(displacemen)
o(ts.)189 834 y(It)i(also)g(pro)o(vides)h(a)f(de\014nition)i(of)e(the)h
(record)f(t)o(yp)q(e)h(that)e(is)i(arc)o(hitecture)g(indep)q(enden)o(t)
i(\(as-)189 890 y(suming)c(that)e(compilers)j(don't)e(\014ddle)i(with)e
(the)h(order)f(of)g(\014elds,)h(whic)o(h)g(is)g(true)f(in)i(C\))d({)i
(this)189 947 y(facilitates)f(transfer)e(of)h(records)g(using)h(RMA,)f
(an)g(\014ts)g(w)o(ell)h(with)g(v)m(arious)f(prop)q(osals)h(for)e
(third)189 1003 y(part)o(y)h(transfers.)19 b(\()p Fe(End)d(of)g(r)n
(ationale.)p Fq(\))189 1097 y Fe(A)n(dvic)n(e)h(to)h(users.)50
b Fq(Datat)o(yp)q(es)16 b(constructed)h(using)h Fj(MPI)p
1231 1097 V 16 w(TYPE)p 1364 1097 V 16 w(SIMPLE)p 1539
1097 V 16 w(STRUCT)g Fq(should)189 1154 y(b)q(e)i(used)g(only)g(for)f
(structures)g(that)g(use)h(the)g(default)g(alignmen)o(t)g(rules.)34
b(They)20 b(should)g(not)189 1210 y(b)q(e)c(used)h(if)f(alignmen)o(t)g
(rules)h(ha)o(v)o(e)f(b)q(een)h(c)o(hanged,)f(using)g(compiler)h
(options)f(or)g(compilation)189 1267 y(pragmas.)j(\()p
Fe(End)c(of)i(advic)n(e)f(to)g(users.)p Fq(\))189 1361
y Fe(A)n(dvic)n(e)g(to)h(implementors.)47 b Fq(The)16
b(datat)o(yp)q(e)g(constructor)f Fj(MPI)p 1330 1361 V
16 w(TYPE)p 1463 1361 V 17 w(SIMPLE)p 1639 1361 V 15
w(STRUCT)i Fq(is)189 1417 y(most)e(easily)i(implemen)o(ted)h(on)e
(systems)g(that)f(use)h Fe(natur)n(al)g Fq(data)g(alignmen)o(t)h
(rules.)23 b(On)17 b(suc)o(h)189 1474 y(systems,)12 b(eac)o(h)h(basic)g
(datat)o(yp)q(e)f(has)g(an)h(exten)o(t)f(and)h(an)g(alignmen)o(t;)h
(the)e(alignmen)o(t)i(of)e(a)g(com-)189 1530 y(p)q(ound)j(t)o(yp)q(e)g
(is)h(the)f(strictest)f(alignmen)o(t)i(of)e(a)g(comp)q(onen)o(t.)20
b(P)o(adding)c(is)f(added)g(so)g(that)f(eac)o(h)189 1587
y(comp)q(onen)o(t)f(is)h(aligned)g(at)f(its)g(natural)g(alignmen)o(t.)
20 b(W)l(e)13 b(can)g(then)h(deriv)o(e)g(ob)o(vious)f(de\014nitions)189
1643 y(for)h(the)h(exten)o(t)g(and)h(alignmen)o(t)g(of)e(p)q(ortable)i
(MPI)f(datat)o(yp)q(es:)189 1700 y(The)g(exten)o(t)f(and)h(alignmen)o
(t)g(of)f(a)h(basic)g(datat)o(yp)q(e)f(is)i(the)e(exten)o(t)h(and)g
(alignmen)o(t)g(of)f(the)h(cor-)189 1756 y(resp)q(onding)h(language)f
(t)o(yp)q(e.)189 1812 y(The)10 b(alignmen)o(t)h(of)f(a)f(datat)o(yp)q
(e)h(built)i(with)e(one)g(of)g(the)g(constructors)g Fj(MPI)p
1487 1812 V 15 w(TYPE)p 1619 1812 V 17 w(CONTIGUOUS,)189
1869 y(MPI)p 274 1869 V 15 w(TYPE)p 406 1869 V 17 w(VECTOR,)26
b Fq(and)e Fj(PI)p 780 1869 V 16 w(TYPE)p 913 1869 V
17 w(INDEXED)h Fq(is)g(the)f(alignmen)o(t)h(of)f(the)h(comp)q(onen)o(t)
189 1925 y(datat)o(yp)q(e;)14 b(the)h(exten)o(t)g(of)g(the)g(comp)q
(ound)h(datat)o(yp)q(e)f(is)g(as)g(de\014ned)i(in)f(MPI1.)189
1982 y(The)h(alignmen)o(t)g(of)f(a)g(datat)o(yp)q(e)h(built)h(b)o(y)e
(a)h(call)g(to)f Fj(MPI)p 1221 1982 V 16 w(TYPE)p 1354
1982 V 17 w(SIMPLE)p 1530 1982 V 16 w(STRUCT\(n,)h(lens,)189
2038 y(t)o(yp)q(es,)i(newt)o(yp)q(e\))h Fq(is)e(max)643
2045 y Fa(i)672 2038 y Fk(alignment)p Fq(\()p Fk(types)p
Fq([)p Fk(i)p Fq(]\);)e(the)i(exten)o(t)g(is)g(computed)h(b)o(y)f(la)o
(ying)g(out)189 2095 y(the)h(comp)q(onen)o(ts)g(with)h(minimal)h
(padding)f(added)g(so)f(that)g(eac)o(h)h(comp)q(onen)o(t)f(starts)f(at)
h(its)189 2151 y(alignmen)o(t.)189 2225 y(Some)g(compilers)h(treat)f
(the)g(\014rst)g(comp)q(onen)o(t)g(of)g(a)g(structure)g(di\013eren)o
(tly)l(.)33 b(E.g.,)18 b(the)i(IBM)189 2281 y(compiler)d(aligns)h
(doubles)f(at)f(w)o(ord)g(b)q(oundaries,)i(but)f(align)g(a)f(structure)
g(that)g(starts)f(with)i(a)189 2338 y(double)j(comp)q(onen)o(t)f(at)f
(doublew)o(ord)i(b)q(oundaries.)32 b(The)19 b(de\014nition)i(of)d(the)h
(alignmen)o(t)h(of)e(a)189 2394 y(datat)o(yp)q(e)h(built)i(with)f
Fj(MPI)p 690 2394 V 16 w(TYPE)p 823 2394 V 16 w(SIMPLE)p
998 2394 V 16 w(STRUCT)h Fq(is)f(c)o(hanged,)h(accordingly)l(.)34
b(\()p Fe(End)20 b(of)189 2450 y(advic)n(e)c(to)g(implementors.)p
Fq(\))75 2571 y Ff(3.9.2)49 b(Contiguous)17 b(Struct)e(T)l(yp)q(es)75
2704 y Fm(Curren)o(t)f(Status:)j Fl(F)m(ailed)c(6-7-10)f(at)i(Septem)o
(b)q(er)g(meeting.)-32 46 y Fh(1)-32 103 y(2)-32 159
y(3)-32 215 y(4)-32 272 y(5)-32 328 y(6)-32 385 y(7)-32
441 y(8)-32 498 y(9)-40 554 y(10)-40 611 y(11)-40 667
y(12)-40 724 y(13)-40 780 y(14)-40 836 y(15)-40 893 y(16)-40
949 y(17)-40 1006 y(18)-40 1062 y(19)-40 1119 y(20)-40
1175 y(21)-40 1232 y(22)-40 1288 y(23)-40 1345 y(24)-40
1401 y(25)-40 1457 y(26)-40 1514 y(27)-40 1570 y(28)-40
1627 y(29)-40 1683 y(30)-40 1740 y(31)-40 1796 y(32)-40
1853 y(33)-40 1909 y(34)-40 1966 y(35)-40 2022 y(36)-40
2078 y(37)-40 2135 y(38)-40 2191 y(39)-40 2248 y(40)-40
2304 y(41)-40 2361 y(42)-40 2417 y(43)-40 2474 y(44)-40
2530 y(45)-40 2587 y(46)-40 2643 y(47)-40 2699 y(48)p
eop
%%Page: 12 14
12 13 bop 75 -100 a Fq(12)947 b Fg(CHAPTER)15 b(3.)35
b(MISCELLANY)17 b(F)o(OR)e(1.2)166 45 y Fq(Data)j(structures)i(ma)o(y)f
(con)o(tain)h(padding)g(holes,)i(added)e(for)f(alignmen)o(t.)34
b(The)20 b(de\014nition)h(of)75 102 y(an)f(MPI)g(datat)o(yp)q(e,)g
(done)g(using)g(the)g Fj(MPI)p 865 102 14 2 v 16 w(TYPE)p
998 102 V 17 w(STRUCT)g Fq(constructor,)g(do)q(es)g(not)g(distinguish)
75 158 y(b)q(et)o(w)o(een)15 b(holes)g(that)f(con)o(tains)g(no)h
(signi\014can)o(t)g(data,)f(and)h(are)f(there)h(only)g(for)f(alignmen)o
(t)h(purp)q(oses,)75 214 y(and)k(b)q(et)o(w)o(een)g(holes)g(that)f(ma)o
(y)f(con)o(tain)i(signi\014can)o(t)g(data)f(and)h(w)o(ere)f(purp)q
(osefully)j(left)e(out)f(b)o(y)g(a)75 271 y(user)k(that)e(wishes)i(not)
f(to)g(o)o(v)o(erwrite)g(some)g(of)g(the)g(information)h(in)g(a)f
(structure.)38 b(As)22 b(a)f(result,)75 327 y(MPI)g(cannot)g(o)o(v)o
(erwrite)f(these)h(holes,)i(this)f(prev)o(en)o(ts)e(the)i(ob)o(vious)f
(optimization)h(of)e(shipping)j(a)75 384 y(data)13 b(structure)h(as)g
(a)f(con)o(tiguous)h(blo)q(c)o(k)h(of)f(data,)f(padding)i(holes)f
(included.)22 b(The)15 b(t)o(yp)q(e)f(constructor)75
440 y Fj(MPI)p 160 440 V 16 w(TYPE)p 293 440 V 17 w(CONTIGUOUS)p
598 440 V 18 w(STRUCT)d Fq(marks)f(an)o(y)g(suc)o(h)h(holes)g(as)g
(\\don)o(t-care")e(lo)q(cations,)j(allo)o(wing)75 497
y(the)j(implemen)o(tation)i(to)d(o)o(v)o(erwrite)h(them.)75
648 y Fj(MPI)p 160 648 V 16 w(TYPE)p 293 648 V 17 w(CONTIGUOUS)p
598 648 V 18 w(STRUCT\(count,)j(a)o(rra)o(y)p 1041 648
V 14 w(of)p 1092 648 V 16 w(blo)q(cklengths,)h(a)o(rra)o(y)p
1468 648 V 14 w(of)p 1519 648 V 16 w(displacements,)g(a)o(r-)75
704 y(ra)o(y)p 136 704 V 15 w(of)p 188 704 V 16 w(t)o(yp)q(es,)e(newt)o
(yp)q(e\))117 781 y Fl(IN)155 b Fj(count)482 b Fl(n)o(um)o(b)q(er)13
b(of)h(blo)q(c)o(ks)g(\(in)o(teger\))117 856 y(IN)155
b Fj(a)o(rra)o(y)p 416 856 V 15 w(of)p 468 856 V 16 w(blo)q(cklengths)
191 b Fl(n)o(um)o(b)q(er)13 b(of)h(elemen)o(ts)f(in)h(eac)o(h)g(blo)q
(c)o(k)g(\(arra)o(y)g(of)f(in)o(teger\))117 932 y(IN)155
b Fj(a)o(rra)o(y)p 416 932 V 15 w(of)p 468 932 V 16 w(displacements)164
b Fl(b)o(yte)14 b(displacemen)o(t)g(of)f(eac)o(h)h(blo)q(c)o(k)g
(\(arra)o(y)g(of)f(in)o(teger\))117 1007 y(IN)155 b Fj(a)o(rra)o(y)p
416 1007 V 15 w(of)p 468 1007 V 16 w(t)o(yp)q(es)327
b Fl(t)o(yp)q(e)15 b(of)e(elemen)o(ts)h(in)f(eac)o(h)h(blo)q(c)o(k)g
(\(arra)o(y)g(of)f(handle\))117 1082 y(OUT)108 b Fj(newt)o(yp)q(e)433
b Fl(new)15 b(datat)o(yp)q(e)f(\(handle\))166 1206 y
Fq(The)c(seman)o(tics)h(of)e Fj(MPI)p 587 1206 V 16 w(TYPE)p
720 1206 V 17 w(CONTIGUOUS)p 1025 1206 V 18 w(STRUCT)i
Fq(are)f(iden)o(tical)i(to)d Fj(MPI)p 1611 1206 V 16
w(TYPE)p 1744 1206 V 17 w(STRUCT)p Fq(,)75 1263 y(except)15
b(that,)e(if)h(a)g(receiv)o(e)h(call)g(uses)g(a)e(datat)o(yp)q(e)h
(constructed)g(with)h(this)f(constructor,)f(then)i(the)f(in-)75
1319 y(ternal)f(holes)h(in)f(the)g(structure)g(can)g(b)q(e)g(o)o(v)o
(erwritten.)18 b(The)13 b(same)g(rule)h(\(namely)l(,)f(that)f(holes)i
(b)q(et)o(w)o(een)75 1376 y(comp)q(onen)o(ts)c(can)g(b)q(e)h(o)o(v)o
(erwritten\))e(applies)j(also)e(to)g(datat)o(yp)q(es)f(constructed)h
(using)h Fj(MPI)p 1635 1376 V 16 w(TYPE)p 1768 1376 V
17 w(SIMPLE)p 1944 1376 V 16 w(STRUCT)p Fq(.)166 1479
y Fm(Discussion:)29 b Fl(It)10 b(is)f(reasonable)g(to)g(assume)g(that)h
(holes)f(in)g(la)o(y)o(outs)f(de\014ned)j(using)e Fd(MPI)p
1576 1479 13 2 v 14 w(TYPE)p 1698 1479 V 14 w(SIMPLE)p
1857 1479 V 15 w(STRUCT)75 1536 y Fl(con)o(tain)14 b(no)h(signi\014can)
o(t)f(information,)e(since)k(this)f(datat)o(yp)q(e)g(constructor)h(is)f
(exp)q(ected)i(to)e(b)q(e)g(used)h(for)f(sp)q(ec-)75
1592 y(ifying)f(the)h(la)o(y)o(out)f(of)h(structures.)24
b(Users)16 b(will)e(b)q(e)i(required)g(to)f(use)h Fd(MPI)p
1271 1592 V 14 w(TYPE)p 1393 1592 V 14 w(STRUCT)f Fl(when)g(holes)h
(hold)75 1649 y(signi\014can)o(t)d(information.)189 1802
y Fe(A)n(dvic)n(e)e(to)i(users.)38 b Fq(Users)11 b(should)i(arrange)d
(the)i(\014elds)g(in)g(a)f(C)h(struct)e(t)o(yp)q(e)i(in)g(descending)h
(order)189 1859 y(of)i(their)i(size.)24 b(This)17 b(arrangemen)o(t)e
(has)h(t)o(w)o(o)f(adv)m(an)o(tages:)21 b(\014rstly)c(it)f(ma)o(y)g
(reduce)h(the)f(size)h(of)189 1915 y(the)i(struct)f(b)o(y)h
(eliminating)i(padding)f(b)q(et)o(w)o(een)f(elemen)o(ts)h(with)f
(di\013eren)o(t)g(alignmen)o(ts)h(\(this)189 1972 y(is)c(generally)i
(true)e(for)g(C)g(programs\).)22 b(Secondly)l(,)c(it)e(ma)o(y)g
(increase)h(the)g(n)o(um)o(b)q(er)f(of)g(cases)h(for)189
2028 y(whic)o(h)d(the)f(implemen)o(tation)h(can)g(p)q(erform)f(blo)q(c)
o(k)g(copies)i(b)o(y)e(ensuring)h(that)e(the)h(\014rst)g(elemen)o(t)189
2085 y(of)19 b(the)g(structure)g(has)h(the)f(most)g(stringen)o(t)g
(alignmen)o(t)h(requiremen)o(ts.)33 b(\()p Fe(End)19
b(of)i(advic)n(e)f(to)189 2141 y(users.)p Fq(\))189 2247
y Fe(A)n(dvic)n(e)15 b(to)i(implementors.)39 b Fq(An)16
b(implemen)o(tation)g(ma)o(y)f(ignore)g(the)h(constructor)189
2304 y Fj(MPI)p 274 2304 14 2 v 15 w(TYPE)p 406 2304
V 17 w(CONTIGUOUS)p 711 2304 V 18 w(STRUCT)p Fq(,)21
b(and)f(handle)i(it)e(exactly)h(as)f Fj(MPI)p 1539 2304
V 16 w(TYPE)p 1672 2304 V 17 w(STRUCT)p Fq(.)189 2360
y(Th)o(us,)f(there)g(is)h(\(almost\))d(no)i(o)o(v)o(erhead)g(in)g(supp)
q(orting)h(this)f(constructor,)g(without)g(taking)189
2417 y(adv)m(an)o(tage)f(of)h(it.)32 b(One)20 b(p)q(ossible)h(w)o(a)o
(y)d(of)h(taking)g(adv)m(an)o(tage)g(of)g(it,)h(is)g(to)e(adopt)h(a)g
(canoni-)189 2473 y(cal)d(\\wire")g(represen)o(tation)g(for)g
(structures.)22 b(Supp)q(ose)17 b(that)f(the)g(compiler)h(uses,)g(b)o
(y)f(default,)189 2530 y(natural)g(alignmen)o(t)i(rules)f(for)f
(structures:)23 b(eac)o(h)16 b(basic)i(comp)q(onen)o(t)e(is)i(aligned)g
(at)e(a)g(natural)189 2586 y(b)q(oundary)l(.)k(Supp)q(ose)14
b(that)f(one)h(adopts)f(natural)h(alignmen)o(t)g(rules)h(for)e
(messages)g(on)g(the)h(wire,)189 2642 y(in)19 b(a)f(homogeneous)g(en)o
(vironmen)o(t:)27 b(messages)18 b(are)g(padded)h(so)f(that)g(eac)o(h)g
(basic)h(elemen)o(t)g(is)189 2699 y(aligned)d(at)f(a)g(natural)g(b)q
(oundary)l(.)20 b(Then)1967 46 y Fh(1)1967 103 y(2)1967
159 y(3)1967 215 y(4)1967 272 y(5)1967 328 y(6)1967 385
y(7)1967 441 y(8)1967 498 y(9)1959 554 y(10)1959 611
y(11)1959 667 y(12)1959 724 y(13)1959 780 y(14)1959 836
y(15)1959 893 y(16)1959 949 y(17)1959 1006 y(18)1959
1062 y(19)1959 1119 y(20)1959 1175 y(21)1959 1232 y(22)1959
1288 y(23)1959 1345 y(24)1959 1401 y(25)1959 1457 y(26)1959
1514 y(27)1959 1570 y(28)1959 1627 y(29)1959 1683 y(30)1959
1740 y(31)1959 1796 y(32)1959 1853 y(33)1959 1909 y(34)1959
1966 y(35)1959 2022 y(36)1959 2078 y(37)1959 2135 y(38)1959
2191 y(39)1959 2248 y(40)1959 2304 y(41)1959 2361 y(42)1959
2417 y(43)1959 2474 y(44)1959 2530 y(45)1959 2587 y(46)1959
2643 y(47)1959 2699 y(48)p eop
%%Page: 13 15
13 14 bop 75 -100 a Fg(3.9.)34 b(NEW)15 b(D)o(A)l(T)l(A)l(TYPES)1245
b Fq(13)189 45 y(\(1\))14 b(A)i(receiv)o(er)g(can)f(alw)o(a)o(ys)g
(deco)q(de)h(an)g(incoming)h(message)d(and)i(retriev)o(e)g(correctly)f
(the)h(ba-)189 102 y(sic)k(comp)q(onen)o(ts.)31 b(This)20
b(b)q(ecause)g(the)g(basic)g(datat)o(yp)q(e)e(of)h(the)g(elemen)o(t)h
(indicates)h(at)e(what)189 158 y(b)q(oundary)c(it)h(is)f(aligned.)189
214 y(\(2\))f(A)h(sender)g(can)h(blo)q(c)o(k)f(cop)o(y)g(a)g(structure)
g(on)o(to)f(the)h(\\wire")g(\(most)f(lik)o(ely)l(,)j(on)o(to)d(a)g
(message)189 271 y(bu\013er\),)19 b(when)g(the)g(structure)g(is)g
(naturally)h(aligned,)h Fe(r)n(elative)e(to)h(the)g(start)g(of)f(the)h
(sending)189 327 y(bu\013er)p Fq(.)26 b(This)18 b(optimization)g(do)q
(es)g(not)e(require)j(that)d(the)h(sending)i(datat)o(yp)q(e)e(b)q(e)h
(built)g(using)189 384 y Fj(MPI)p 274 384 14 2 v 15 w(TYPE)p
406 384 V 17 w(CONTIGUOUS)p 711 384 V 18 w(STRUCT)p Fq(:)c(The)g(MPI)f
(library)i(can)e(scan)h(datat)o(yp)q(es,)f(when)h(they)189
440 y(are)h(committed,)f(and)i(recognize)g(when)g(a)e(datat)o(yp)q(e)h
(\(or)f(a)h(datat)o(yp)q(e)g(fragmen)o(t\))f(is)h(naturally)189
497 y(aligned.)24 b(Blo)q(c)o(k)17 b(cop)o(ying)g(can)g(b)q(e)g(used)g
(ev)o(en)f(if)h(the)g(holes)g(in)g(the)f(datat)o(yp)q(e)g(con)o(tain)g
(signi\014-)189 553 y(can)o(t)e(information.)189 610
y(\(3\))h(A)h(receiv)o(er)h(can)f(blo)q(c)o(k)h(cop)o(y)f(an)g
(incoming)i(message)d(on)o(to)h(the)g(receiv)o(e)h(bu\013er)f(when)h
(the)189 666 y(receiving)e(structure)f(is)h(naturally)g(aligned)h
Fe(r)n(elative)f(to)g(the)h(start)g(of)f(the)h(r)n(e)n(c)n(eiving)d
(bu\013er)i Fq(and)189 723 y(holes)10 b(can)h(b)q(e)g(ignored.)18
b(I.e.,)11 b(when)g(the)f(receiving)i(datat)o(yp)q(e)d(is)i(built)g
(using)g Fj(MPI)p 1597 723 V 16 w(TYPE)p 1730 723 V 17
w(CONTIGUOUS)p 2035 723 V 18 w(STRUCT)189 779 y Fq(or)i
Fj(MPI)p 328 779 V 16 w(TYPE)p 461 779 V 17 w(SIMPLE)p
637 779 V 16 w(STRUCT)h Fq(and)g(is)h(naturally)f(aligned,)i(relativ)o
(e)e(to)g(its)g(\014rst)f(p)q(osition.)189 853 y(The)k(same)h(wire)g
(represen)o(tation)f(ma)o(y)g(b)q(e)h(used)g(in)h(a)e(heterogenous)h
(en)o(vironmen)o(t,)g(in)g(cases)189 909 y(where)h(data)e(con)o(v)o
(ersion)i(is)g(done)g(at)f(the)h(destination;)i(the)e(destination)g
(has)g(to)f(kno)o(w,)g(not)189 966 y(only)c(the)h(basic)g(datat)o(yp)q
(es)e(used)i(b)o(y)f(the)h(source,)f(but)g(also)h(the)f(alignmen)o(t)h
(rules)g(used)g(b)o(y)f(the)189 1022 y(source.)189 1096
y(Example:)34 b(Consider)23 b(a)f(C)g(structure)g Fk(struct)h({char)g
(a[2];)g(float)g(b[2];)h(double)f(c})p Fq(;)189 1153
y(assume)16 b(that)g(\015oats)g(are)g(4)h(b)o(ytes)f(and)h(doubles)h
(are)e(8)g(b)o(ytes,)h(and)g(structures)f(are)g(naturally)189
1209 y(aligned.)36 b(The)20 b(memory)f(la)o(y)o(out)h(is)44
b Fk([c][c]xx[ffff][ffff]xxxx[dddd)o(dddd])p Fq(,)18
b(and)i(the)189 1266 y(structure)15 b(is)g(aligned)i(to)d(an)i(8)e(b)o
(yte)h(b)q(oundary)l(.)189 1340 y(Case)c(1:)18 b(The)12
b(en)o(tire)g(structure)f(is)h(comm)o(unicated.)20 b(Sender)12
b(constructs)f(a)h(datat)o(yp)q(e)f(for)g(struc-)189
1396 y(ture)f(using)h Fj(MPI)p 479 1396 V 15 w(TYPE)p
611 1396 V 17 w(STRUCT,)g(MPI)p 910 1396 V 15 w(TYPE)p
1042 1396 V 17 w(SIMPLE)p 1218 1396 V 16 w(STRUCT)g Fq(or)f
Fj(MPI)p 1554 1396 V 15 w(TYPE)p 1686 1396 V 17 w(CONTIGUOUS)p
1991 1396 V 18 w(STRUCT)p Fq(;)189 1452 y(receiv)o(er)16
b(constructs)g(a)g(datat)o(yp)q(e)g(for)f(this)i(structure,)e(using)i
Fj(MPI)p 1379 1452 V 16 w(CONTIGUOUS)p 1683 1452 V 18
w(STRUCT)189 1509 y Fq(or)12 b Fj(MPI)p 327 1509 V 16
w(TYPE)p 460 1509 V 16 w(SIMPLE)p 635 1509 V 16 w(STRUCT)p
Fq(.)h(Then)g(the)g(la)o(y)o(outs)f(in)h(the)g(sender)g(memory)l(,)g
(on)f(the)h(wire,)189 1565 y(and)i(in)h(the)f(receiv)o(er)h(memory)f
(are)g(iden)o(tical,)h(and)g(data)e(can)i(b)q(e)g(simply)g(copied.)189
1639 y(Case)10 b(2:)17 b(comm)o(unication)12 b(in)o(v)o(olv)o(es)f
(only)h(the)f(second)g(of)f(the)h(t)o(w)o(o)f(c)o(haracters,)g(and)h
(the)g(remain-)189 1696 y(der)f(of)g(the)g(structure.)18
b(Receiv)o(er)11 b(constructs)f(the)g(datat)o(yp)q(e)g(using)h
Fj(MPI)p 1441 1696 V 16 w(CONTIGUOUS)p 1745 1696 V 18
w(STRUCT)p Fq(.)189 1752 y(The)19 b(memory)f(la)o(y)o(out)g(is)h
Fk([c]xx[ffff][ffff]xxxx[dddddd)o(dd])p Fq(,)d(and)j(the)g(wire)g(la)o
(y)o(out)f(is)189 1809 y Fk([c]xxx[ffff][ffff]xxxx[)o(dddddddd)o(])p
Fq(.)e(The)c(datat)o(yp)q(e)f(is)h(not)g(naturally)g(aligned,)h(so)f
(that)189 1865 y(blo)q(c)o(k)k(cop)o(ying)g(cannot)f(b)q(e)h(used)g(at)
f(the)h(sender)g(or)f(the)g(receiv)o(er.)22 b(Ho)o(w)o(ev)o(er,)14
b(a)h(smart)f(imple-)189 1922 y(men)o(tation)h(ma)o(y)g(realize)i(that)
e(the)h(fragmen)o(t)f(starting)g(from)g(the)h(\015oat)f(is)i(naturally)
f(aligned,)189 1978 y(relativ)o(e)e(to)e(the)i(start)e(of)h(the)g
(bu\013er,)h(so)f(that)f(blo)q(c)o(k)j(cop)o(ying)e(can)h(b)q(e)g(used)
g(for)f(this)g(fragmen)o(t.)189 2052 y(Case)f(3:)19 b(comm)o(unication)
14 b(in)o(v)o(olv)o(es)g(only)f(the)g(t)o(w)o(o)f(\015oats)h(and)g(the)
g(double.)21 b(The)13 b(memory)g(la)o(y-)189 2108 y(out)c(is)i
Fk([ffff][ffff]xxxx[dddddddd])o Fq(.)16 b(The)10 b(la)o(y)o(out)g(on)g
(the)g(wire)g(is)h Fk([ffff][ffff][dddddddd])p Fq(.)189
2165 y(The)j(datat)o(yp)q(e)f(is)i(not)f(naturally)g(aligned,)i
(relativ)o(e)e(to)g(its)g(start,)e(so)i(that)f(blo)q(c)o(k)i(cop)o
(ying)g(can-)189 2221 y(not)f(b)q(e)i(used.)21 b(\()p
Fe(End)15 b(of)i(advic)n(e)f(to)g(implementors.)p Fq(\))166
2360 y Fm(Alternativ)o(es)o(:)134 2432 y Fl(1.)22 b(No)14
b(new)h(function)f Fd(MPI)p 581 2432 13 2 v 14 w(TYPE)p
703 2432 V 15 w(CONTIGUOUS)p 985 2432 V 12 w(STRUCT)p
Fl(:)g(instead,)g(holes)h(can)g(b)q(e)g(o)o(v)o(erwritten)g(only)189
2482 y(for)f(datat)o(yp)q(es)i(built)e(with)g Fd(MPI)p
717 2482 V 15 w(TYPE)p 840 2482 V 14 w(SIMPLE)p 999 2482
V 15 w(STRUCT)p Fl(.)f(The)j(argumen)o(t)e(is)g(that,)h(at)g(least)g
(in)f(the)189 2532 y(scenario)f(I)g(presen)o(ted,)i(hole)d(o)o(v)o
(erwriting)h(is)g(tak)o(en)g(adv)n(an)o(tage)f(of)g(only)g(for)h
(structures)i(with)e(a)f(natural)189 2581 y(alignmen)o(t.)j(But,)f
(then,)g(their)h(la)o(y)o(out)d(can)i(b)q(e)h(sp)q(eci\014ed)g(using)f
Fd(MPI)p 1308 2581 V 14 w(TYPE)p 1430 2581 V 15 w(SIMPLE)p
1590 2581 V 14 w(STRUCT)p Fl(.)134 2654 y(2.)22 b(Both)d(sender)h(and)f
(receiv)o(er)h(are)g(required)f(to)g(use)h Fd(MPI)p 1126
2654 V 14 w(TYPE)p 1248 2654 V 14 w(CONTIGUOUS)p 1529
2654 V 13 w(STRUCT)p Fl(,)e(and)g(the)189 2704 y(datat)o(yp)q(es)c(on)f
(b)q(oth)h(ends)g(ha)o(v)o(e)g(to)f(b)q(e)h(structurally)g(equiv)n
(alen)o(t,)f(i.e.,)f(de\014ned)j(b)o(y)e(the)h(same)f(sequence)-32
46 y Fh(1)-32 103 y(2)-32 159 y(3)-32 215 y(4)-32 272
y(5)-32 328 y(6)-32 385 y(7)-32 441 y(8)-32 498 y(9)-40
554 y(10)-40 611 y(11)-40 667 y(12)-40 724 y(13)-40 780
y(14)-40 836 y(15)-40 893 y(16)-40 949 y(17)-40 1006
y(18)-40 1062 y(19)-40 1119 y(20)-40 1175 y(21)-40 1232
y(22)-40 1288 y(23)-40 1345 y(24)-40 1401 y(25)-40 1457
y(26)-40 1514 y(27)-40 1570 y(28)-40 1627 y(29)-40 1683
y(30)-40 1740 y(31)-40 1796 y(32)-40 1853 y(33)-40 1909
y(34)-40 1966 y(35)-40 2022 y(36)-40 2078 y(37)-40 2135
y(38)-40 2191 y(39)-40 2248 y(40)-40 2304 y(41)-40 2361
y(42)-40 2417 y(43)-40 2474 y(44)-40 2530 y(45)-40 2587
y(46)-40 2643 y(47)-40 2699 y(48)p eop
%%Page: 14 16
14 15 bop 75 -100 a Fq(14)947 b Fg(CHAPTER)15 b(3.)35
b(MISCELLANY)17 b(F)o(OR)e(1.2)189 45 y Fl(of)e(de\014nitions.)18
b(There)d(are)f(sev)o(eral)h(p)q(ossible)f(v)n(arian)o(ts)f(for)g(suc)o
(h)i(prop)q(osal)189 107 y(\(a\))20 b(This)g(construct)i(can)e(b)q(e)h
(only)e(used)i(in)f(a)g(homogeneous)f(en)o(vironmen)o(t.)36
b(But,)22 b(then,)g(w)o(e)e(lose)189 157 y(p)q(ortabilit)o(y)11
b(to)h(heterogeneous)j(en)o(vironmen)o(t,)c(and)i(w)o(e)g(ac)o(hiev)o
(e)f(little)g(that)h(could)f(not)h(b)q(e)g(ac)o(hiev)o(ed)g(b)o(y)189
207 y(using)g Fd(MPI)p 374 207 13 2 v 15 w(BYTE)p Fl(.)189
269 y(\(b\))18 b(This)g(construct)i(can)e(b)q(e)g(used)h(p)q(ortably)m
(,)f(with)g(enhanced)h(p)q(erformance)f(obtained)g(in)f(a)h(homo-)189
319 y(geneous)i(en)o(vironmen)o(t.)36 b(E.g.,)20 b(a)g(homogeneous)f
(implem)o(en)o(tation)e(will)i(use)h(blo)q(c)o(k)g(cop)o(ying,)g(while)
189 369 y(a)d(heterogeneous)j(implemen)o(tatio)o(n)15
b(will)i(mo)o(v)o(e)f(elemen)o(t)h(b)o(y)h(elemen)o(t)f(\(at)h(least,)g
(for)g(heterogeneous)189 419 y(comm)o(unicators\).)j(This)16
b(assumes)g(that,)g(in)f(a)h(homogeneous)e(en)o(vironmen)o(t,)h
(di\013eren)o(t)i(pro)q(cesses)i(are)189 469 y(compiled)8
b(with)i(the)g(same)f(data)h(alignmen)o(t)d(options.)17
b(Also,)10 b(this)g(runs)g(coun)o(ter)h(the)g(datat)o(yp)q(e)f(matc)o
(hing)189 518 y(rules)k(in)g(MPI,)f(where)i(only)e(signature)i(matc)o
(hing)d(is)h(required.)189 581 y(\(c\))d Fd(MPI)p 326
581 V 14 w(TYPE)p 448 581 V 14 w(CONTIGUOUS)p 729 581
V 13 w(STRUCT)f Fl(can)g(b)q(e)i(matc)o(hed)d(with)h(other)i(datat)o
(yp)q(es,)f(as)g(long)e(as)i(signa-)189 630 y(tures)g(matc)o(h;)f
(impro)o(v)o(ed)f(p)q(erformance)h(is)g(ac)o(hiev)o(ed)h(when)f(b)q
(oth)h(ends)g(use)g Fd(MPI)p 1463 630 V 14 w(TYPE)p 1585
630 V 15 w(CONTIGUOUS)p 1867 630 V 12 w(STRUCT)p Fl(.)189
680 y(But,)i(then,)h(the)g(wire)g(proto)q(col)f(m)o(ust)f(b)q(e)i(so)f
(that)h(individual)d(elemen)o(ts)i(can)h(b)q(e)f(extracted,)i(in)e
(case)h(the)189 730 y(receiv)o(er)k(do)q(es)f(not)f(use)i
Fd(MPI)p 664 730 V 14 w(TYPE)p 786 730 V 14 w(CONTIGUOUS)p
1067 730 V 13 w(STRUCT)p Fl(.)d(In)i(this)f(case,)i(asking)e(the)h
(sender)h(to)189 780 y(use)g Fd(MPI)p 340 780 V 14 w(TYPE)p
462 780 V 15 w(CONTIGUOUS)p 744 780 V 12 w(STRUCT)f Fl(do)q(es)h(not)g
(pro)o(vide)f(additional)f(function)h(o)o(v)o(er)h(the)g(main)189
830 y(prop)q(osal.)g(The)d(di\013erence)h(is)f(only)e(whether)j(the)f
(use)g(asserts)i(that)d(the)h(sending)g(datat)o(yp)q(e)f(has)h(a)f
(nat-)189 879 y(ural)i(la)o(y)o(out)g(\(using)h Fd(MPI)p
608 879 V 14 w(TYPE)p 730 879 V 14 w(CONTIGUOUS)p 1011
879 V 13 w(STRUCT)p Fl(\),)f(or)h(whether)h(MPI)f(disco)o(v)o(ers)h
(that)f(fact)189 929 y(b)o(y)d(itself.)75 1123 y Ff(3.9.3)49
b(Convenient)17 b(F)o(o)o(rm)d(of)j(MPI)p 731 1123 15
2 v 18 w(T)l(yp)q(e)p 848 1123 V 18 w(indexed)p 1018
1123 V 18 w(blo)q(ck)75 1256 y Fm(Curren)o(t)d(Status:)j
Fl(P)o(assed)e(once.)166 1360 y Fq(This)d(prop)q(osal)g(is)g(to)f(allo)
o(w)h(constan)o(t)f(blo)q(c)o(ksize)i(and)f(arbitrary)f(displacemen)o
(ts)i(in)f(the)g(in)o(terface)75 1416 y(to)e Fj(MPI)p
211 1416 14 2 v 15 w(TYPE)p 343 1416 V 17 w(INDEXED)p
Fq(.)g(The)g(routine)h(no)o(w)f(tak)o(es)f Fj(a)o(rra)o(y)p
1114 1416 V 14 w(of)p 1165 1416 V 16 w(blo)q(cklengths)k
Fq(and)d Fj(a)o(rra)o(y)p 1605 1416 V 15 w(of)p 1657
1416 V 16 w(displacements)75 1473 y Fq(as)17 b(argumen)o(ts.)27
b(There)18 b(are)f(man)o(y)h(co)q(des)g(using)g(indirect)i(addressing)e
(arising)g(from)f(unstructured)75 1529 y(grids)f(where)h(the)f(blo)q(c)
o(ksize)i(is)e(alw)o(a)o(ys)f(1)h(\(gather/scatter\).)k(W)l(e)c(prop)q
(ose)g(this)h(in)o(terface,)f(allo)o(wing)75 1586 y(for)f(constan)o(t)f
(blo)q(c)o(ksize)j(and)e(arbitrary)g(displacemen)o(ts.)75
1737 y Fj(MPI)p 160 1737 V 16 w(TYPE)p 293 1737 V 17
w(INDEXED)p 505 1737 V 16 w(BLOCK\()g(count,)i(blo)q(cklength,)h(a)o
(rra)o(y)p 1180 1737 V 14 w(of)p 1231 1737 V 16 w(displacements,)g
(oldt)o(yp)q(e,)f(newt)o(yp)q(e\))117 1870 y Fl(IN)155
b Fj(count)482 b Fl(length)14 b(of)f(arra)o(y)h(of)f(displacemen)o(ts)
117 1945 y(IN)155 b Fj(blo)q(cklength)371 b Fl(size)15
b(of)e(blo)q(c)o(k)117 2021 y(IN)155 b Fj(a)o(rra)o(y)p
416 2021 V 15 w(of)p 468 2021 V 16 w(displacements)164
b Fl(arra)o(y)14 b(of)f(displacemen)o(ts)117 2096 y(IN)155
b Fj(oldt)o(yp)q(e)450 b Fl(old)13 b(datat)o(yp)q(e)117
2171 y(OUT)108 b Fj(newt)o(yp)q(e)433 b Fl(new)15 b(datat)o(yp)q(e)75
2295 y Fk(int)23 b(MPI)p 245 2295 15 2 v 17 w(Type)p
358 2295 V 17 w(Indexed)p 543 2295 V 16 w(Block\()g(int)h(count,)f(int)
g(blocklength,)393 2352 y(int*)g(array)p 635 2352 V 17
w(of)p 700 2352 V 17 w(displacements,)f(MPI)p 1147 2352
V 17 w(Datatype)g(oldtype,)393 2408 y(MPI)p 468 2408
V 17 w(Datatype*)h(newtype)f(\))75 2495 y(MPI)p 150 2495
V 17 w(TYPE)p 263 2495 V 16 w(INDEXED)p 447 2495 V 17
w(BLOCK\(COUNT,)g(BLOCKLENGTH,)g(ARRAY)p 1204 2495 V
17 w(OF)p 1269 2495 V 16 w(DISPLACEMENTS,)g(OLDTYPE,)393
2551 y(NEWTYPE,)h(IERROR\))170 2608 y(INTEGER)g(COUNT,)g(INTEGER)g
(BLOCKLENGTH,)g(ARRAY)p 1153 2608 V 16 w(OF)p 1217 2608
V 17 w(DISPLACEMENT\(*\),)f(OLDTYPE,)170 2664 y(NEWTYPE,)h(IERROR)-117
2700 y Fi(>)15 b Fh(\(Oct\))1967 46 y(1)1967 103 y(2)1967
159 y(3)1967 215 y(4)1967 272 y(5)1967 328 y(6)1967 385
y(7)1967 441 y(8)1967 498 y(9)1959 554 y(10)1959 611
y(11)1959 667 y(12)1959 724 y(13)1959 780 y(14)1959 836
y(15)1959 893 y(16)1959 949 y(17)1959 1006 y(18)1959
1062 y(19)1959 1119 y(20)1959 1175 y(21)1959 1232 y(22)1959
1288 y(23)1959 1345 y(24)1959 1401 y(25)1959 1457 y(26)1959
1514 y(27)1959 1570 y(28)1959 1627 y(29)1959 1683 y(30)1959
1740 y(31)1959 1796 y(32)1959 1853 y(33)1959 1909 y(34)1959
1966 y(35)1959 2022 y(36)1959 2078 y(37)1959 2135 y(38)1959
2191 y(39)1959 2248 y(40)1959 2304 y(41)1959 2361 y(42)1959
2417 y(43)1959 2474 y(44)1959 2530 y(45)1959 2587 y(46)1959
2643 y(47)1959 2699 y(48)p eop
%%Page: 15 17
15 16 bop 75 -100 a Fg(3.10.)34 b(MINOR)16 b(CORRECTIONS)1109
b Fq(15)75 45 y Fk(int)23 b(MPI::Datatype::Indexed)p
701 45 15 2 v 15 w(Block\()g(int)g(count,)g(int)h(blocklength,)393
102 y(const)f(int)h(array)p 755 102 V 16 w(of)p 819 102
V 17 w(displacements[],)393 158 y(const)f(MPI::Datatype&)f(oldtype)h
(\))1875 198 y Fi(?)16 b Fh(\(Oct\))75 331 y Fn(3.10)59
b(Mino)n(r)21 b(Co)n(rrections)75 480 y Fm(Curren)o(t)14
b(Status:)j Fl(P)o(assed)e(once.)166 584 y Fq(The)i(follo)o(wing)i
(corrections)e(to)g Fj(MPI-1.1)f Fq(are)h(\(all)h(page)f(and)g(line)i
(n)o(um)o(b)q(ers)f(are)f(for)g(the)g(June)75 640 y(12,)d(1995)g(v)o
(ersion)i(without)f(c)o(hangebars\):)143 746 y Fi(\017)23
b Fq(P)o(age)14 b(19,)g(lines)j(1-2)e(reads)189 803 y(for)f(\(64)g
(bit\))i(C)f(in)o(tegers)g(declared)i(to)d(b)q(e)i(of)f(t)o(yp)q(e)g
Fj(longlong)g(int)189 859 y Fq(but)g(should)h(read)189
916 y(for)e(\(64)g(bit\))i(C)f(in)o(tegers)g(declared)i(to)d(b)q(e)i
(of)f(t)o(yp)q(e)g Fj(long)g(long)g(int)189 1088 y Fm(Discussion)o(:)
189 1156 y Fl(Just)f(to)g(mak)o(e)f(it)g(correct)j(C)d(so)h(it)g(is)g
(long)f(long.)1875 1212 y Fi(>)j Fh(\(Oct\))143 1297
y Fi(\017)23 b Fq(P)o(age)14 b(41,)g(lines)j(16-18)d(reads)189
1354 y(A)19 b Fb(empt)o(y)g Fq(status)g(is)h(a)f(status)g(whic)o(h)i
(is)f(set)f(to)g(return)h Fj(tag)g(=)g(MPI)p 1460 1354
14 2 v 16 w(ANY)p 1568 1354 V 17 w(T)l(A)o(G)p Fq(,)f
Fj(source)i(=)189 1410 y(MPI)p 274 1410 V 15 w(ANY)p
381 1410 V 18 w(SOURCE)p Fq(,)11 b(and)g(is)h(also)e(in)o(ternally)j
(con\014gured)e(so)g(that)f(calls)h(to)g Fj(MPI)p 1601
1410 V 15 w(GET)p 1704 1410 V 17 w(COUNT)189 1467 y Fq(and)k
Fj(MPI)p 362 1467 V 16 w(GET)p 466 1467 V 17 w(ELEMENTS)g
Fq(return)g Fj(count)i(=)e(0)p Fq(.)189 1523 y(but)g(should)h(read)189
1580 y(A)j Fb(empt)o(y)g Fq(status)g(is)h(a)f(status)g(whic)o(h)i(is)f
(set)f(to)g(return)h Fj(tag)g(=)g(MPI)p 1460 1580 V 16
w(ANY)p 1568 1580 V 17 w(T)l(A)o(G)p Fq(,)f Fj(source)i(=)189
1636 y(MPI)p 274 1636 V 15 w(ANY)p 381 1636 V 18 w(SOURCE)p
Fq(,)c Fj(erro)o(r)e(=)i(MPI)p 842 1636 V 16 w(SUCCESS)p
Fq(,)h(and)f(is)g(also)g(in)o(ternally)h(con\014gured)f(so)g(that)189
1693 y(calls)f(to)e Fj(MPI)p 430 1693 V 16 w(GET)p 534
1693 V 17 w(COUNT)i Fq(and)f Fj(MPI)p 893 1693 V 16 w(GET)p
997 1693 V 17 w(ELEMENTS)g Fq(return)g Fj(count)i(=)e(0)p
Fq(.)189 1865 y Fm(Discussion)o(:)189 1933 y Fl(Filling)d(in)h(the)h
(error)h(\014eld)f(got)g(forgotten.)1875 1989 y Fi(?)i
Fh(\(Oct\))143 2074 y Fi(\017)23 b Fq(P)o(age)14 b(71,)g(line)j(10)e
(reads)189 2131 y(and)g(do)g(not)g(a\013ect)f(the)i(the)f(con)o(ten)o
(t)g(of)f(a)h(message)189 2187 y(but)g(should)h(read)189
2244 y(and)f(do)g(not)g(a\013ect)f(the)i(con)o(ten)o(t)e(of)h(a)g
(message)189 2416 y Fm(Discussion)o(:)189 2484 y Fl(This)e(is)h(a)g
(trivial)e(t)o(yp)q(o)i(of)f(ha)o(ving)g(the)h(2)g(times.)143
2626 y Fi(\017)23 b Fq(P)o(age)14 b(74,)g(lines)j(39-45)d(read)189
2682 y(A)i(datat)o(yp)q(e)f(ma)o(y)g(sp)q(ecify)i(o)o(v)o(erlapping)g
(en)o(tries.)22 b(The)16 b(use)g(of)g(suc)o(h)g(a)f(datat)o(yp)q(e)h
(in)g(a)g(receiv)o(e)-32 46 y Fh(1)-32 103 y(2)-32 159
y(3)-32 215 y(4)-32 272 y(5)-32 328 y(6)-32 385 y(7)-32
441 y(8)-32 498 y(9)-40 554 y(10)-40 611 y(11)-40 667
y(12)-40 724 y(13)-40 780 y(14)-40 836 y(15)-40 893 y(16)-40
949 y(17)-40 1006 y(18)-40 1062 y(19)-40 1119 y(20)-40
1175 y(21)-40 1232 y(22)-40 1288 y(23)-40 1345 y(24)-40
1401 y(25)-40 1457 y(26)-40 1514 y(27)-40 1570 y(28)-40
1627 y(29)-40 1683 y(30)-40 1740 y(31)-40 1796 y(32)-40
1853 y(33)-40 1909 y(34)-40 1966 y(35)-40 2022 y(36)-40
2078 y(37)-40 2135 y(38)-40 2191 y(39)-40 2248 y(40)-40
2304 y(41)-40 2361 y(42)-40 2417 y(43)-40 2474 y(44)-40
2530 y(45)-40 2587 y(46)-40 2643 y(47)-40 2699 y(48)p
eop
%%Page: 16 18
16 17 bop 75 -100 a Fq(16)947 b Fg(CHAPTER)15 b(3.)35
b(MISCELLANY)17 b(F)o(OR)e(1.2)189 45 y Fq(op)q(eration)f(is)h
(erroneous.)k(\(This)14 b(is)h(erroneous)f(ev)o(en)g(if)h(the)f(actual)
g(message)g(receiv)o(ed)h(is)g(short)189 102 y(enough)g(not)g(to)g
(write)g(an)o(y)g(en)o(try)g(more)f(than)h(once.\))189
174 y(A)i(datat)o(yp)q(e)g(ma)o(y)g(sp)q(ecify)i(o)o(v)o(erlapping)g
(en)o(tries.)27 b(If)18 b(suc)o(h)g(a)g(datat)o(yp)q(e)f(is)h(used)g
(in)h(a)e(receiv)o(e)189 231 y(op)q(eration,)d(that)h(is,)g(if)g(some)g
(part)f(of)h(the)f(receiv)o(e)i(bu\013er)f(is)h(written)f(more)f(than)h
(once)g(b)o(y)g(the)189 287 y(receiv)o(e)h(op)q(eration,)f(then)g(the)h
(call)g(is)g(erroneous.)189 359 y(The)i(\014rst)f(part)g(w)o(as)h(an)f
Fj(MPI-1.1)g Fq(addition.)29 b(The)18 b(second)g(part)f(o)o(v)o(erlaps)
h(with)g(it.)28 b(The)18 b(old)189 416 y(text)c(will)j(b)q(e)f(remo)o
(v)o(ed)f(so)g(it)g(no)o(w)g(reads)189 472 y(A)h(datat)o(yp)q(e)f(ma)o
(y)g(sp)q(ecify)i(o)o(v)o(erlapping)g(en)o(tries.)22
b(The)16 b(use)g(of)g(suc)o(h)g(a)f(datat)o(yp)q(e)h(in)g(a)g(receiv)o
(e)189 529 y(op)q(eration)e(is)h(erroneous.)k(\(This)14
b(is)h(erroneous)f(ev)o(en)g(if)h(the)f(actual)g(message)g(receiv)o(ed)
h(is)g(short)189 585 y(enough)g(not)g(to)g(write)g(an)o(y)g(en)o(try)g
(more)f(than)h(once.\))189 698 y Fm(Discussion)o(:)189
764 y Fl(The)f(in)o(ten)o(t)h(is)f(to)g(remo)o(v)o(e)f(duplicate)h
(text)h(whic)o(h)f(seems)h(to)f(ha)o(v)o(e)g(b)q(een)h(left.)k(No)14
b(c)o(hange)h(in)f(meaning)189 814 y(is)f(in)o(tended.)143
950 y Fi(\017)23 b Fq(P)o(age)14 b(90,)g(line)j(3)e(reads)189
1006 y(MPI)p 281 1006 14 2 v 16 w(P)o(ac)o(k)p 393 1006
V 16 w(size\(coun)o(t,)g(MPI)p 724 1006 V 16 w(CHAR,)h(&k2\);)189
1063 y(but)f(should)h(read)189 1119 y(MPI)p 281 1119
V 16 w(P)o(ac)o(k)p 393 1119 V 16 w(size\(coun)o(t,)f(MPI)p
724 1119 V 16 w(CHAR,)h(comm,)e(&k2\);)189 1289 y Fm(Discussion)o(:)189
1355 y Fl(This)f(is)h(a)g(minor)e(\014x)i(to)f(an)h(example)f(for)g(a)h
(missing)e(argumen)o(t.)143 1490 y Fi(\017)23 b Fq(P)o(age)14
b(90,)g(line)j(10)e(reads)189 1547 y(MPI)p 281 1547 V
16 w(P)o(ac)o(k\(c)o(hr,)f(coun)o(t,)g(MPI)p 726 1547
V 17 w(CHAR,)h(&lbuf,)h(k,)f(&p)q(osition,)h(comm\);)189
1603 y(but)f(should)h(read)189 1660 y(MPI)p 281 1660
V 16 w(P)o(ac)o(k\(c)o(hr,)e(coun)o(t,)g(MPI)p 726 1660
V 17 w(CHAR,)h(lbuf,)h(k,)f(&p)q(osition,)h(comm\);)189
1829 y Fm(Discussion)o(:)189 1895 y Fl(This)e(is)h(a)f(minor)f(\014x)i
(to)g(an)f(example)g(for)g(an)g(argumen)o(t)g(that)h(is)g(declared)g
(to)g(b)q(e)g(a)g(p)q(oin)o(ter)g(and)f(then)189 1945
y(passed)h(with)e(&.)143 2081 y Fi(\017)23 b Fq(P)o(age)14
b(109,)g(lines)j(26/27)d(and)h(page)g(110,)f(lines)j(28/29)d(reads)189
2137 y(The)h Fk(j)p Fq(th)g(blo)q(c)o(k)g(of)g(data)f(sen)o(t)h(from)f
(eac)o(h)h(pro)q(cess)g(is)h(receiv)o(ed)g(b)o(y)f(ev)o(ery)f(pro)q
(cess)i(and)f(placed)189 2194 y(in)h(the)f Fk(j)p Fq(th)g(blo)q(c)o(k)h
(of)f(the)g(bu\013er)g Fj(recvbuf)p Fq(.)189 2250 y(but)g(should)h
(read)189 2307 y(The)g(blo)q(c)o(k)i(of)e(data)g(sen)o(t)g(from)g(the)g
Fk(j)p Fq(th)h(pro)q(cess)g(is)g(receiv)o(ed)g(b)o(y)g(ev)o(ery)f(pro)q
(cess)h(and)g(placed)189 2363 y(in)f(the)f Fk(j)p Fq(th)g(blo)q(c)o(k)h
(of)f(the)g(bu\013er)g Fj(recvbuf)p Fq(.)189 2533 y Fm(Discussion)o(:)
189 2598 y Fl(This)e(is)g(related)h(to)f(a)f(subtle)i(p)q(oin)o(t)f(in)
g(usage.)18 b(The)13 b(sendbuf)h(is)f(a)g(single)g(item)f(whereas)i
(the)g(recvbuf)g(is)189 2648 y(an)f(\\arra)o(y")g(of)h(items.)1967
46 y Fh(1)1967 103 y(2)1967 159 y(3)1967 215 y(4)1967
272 y(5)1967 328 y(6)1967 385 y(7)1967 441 y(8)1967 498
y(9)1959 554 y(10)1959 611 y(11)1959 667 y(12)1959 724
y(13)1959 780 y(14)1959 836 y(15)1959 893 y(16)1959 949
y(17)1959 1006 y(18)1959 1062 y(19)1959 1119 y(20)1959
1175 y(21)1959 1232 y(22)1959 1288 y(23)1959 1345 y(24)1959
1401 y(25)1959 1457 y(26)1959 1514 y(27)1959 1570 y(28)1959
1627 y(29)1959 1683 y(30)1959 1740 y(31)1959 1796 y(32)1959
1853 y(33)1959 1909 y(34)1959 1966 y(35)1959 2022 y(36)1959
2078 y(37)1959 2135 y(38)1959 2191 y(39)1959 2248 y(40)1959
2304 y(41)1959 2361 y(42)1959 2417 y(43)1959 2474 y(44)1959
2530 y(45)1959 2587 y(46)1959 2643 y(47)1959 2699 y(48)p
eop
%%Page: 17 19
17 18 bop 75 -100 a Fg(3.10.)34 b(MINOR)16 b(CORRECTIONS)1109
b Fq(17)143 45 y Fi(\017)23 b Fq(P)o(age)14 b(117,)g(lines)j(22/23)d
(reads)189 102 y(MPI)h(pro)o(vides)g(sev)o(en)h(suc)o(h)f(prede\014ned)
i(datat)o(yp)q(es.)189 158 y(but)e(should)h(read)189
214 y(MPI)f(pro)o(vides)g(nine)i(suc)o(h)e(prede\014ned)i(datat)o(yp)q
(es.)189 442 y Fm(Discussion)o(:)189 509 y Fl(This)c(is)h(an)g(ob)o
(vious)f(mistak)o(e.)k(There)e(are)f(nine)g(listed)g(on)f(line)h
(28-40.)143 647 y Fi(\017)23 b Fq(P)o(age)14 b(122,)g(lines)j(35-36)d
(read)204 704 y Fj(MPI)p 289 704 14 2 v 16 w(OP)p 367
704 V 16 w(FREE\()i(op\))230 893 y Fl(IN)156 b Fj(op)541
b Fl(op)q(eration)14 b(\(handle\))189 1035 y Fq(but)h(should)h(read)204
1091 y Fj(MPI)p 289 1091 V 16 w(OP)p 367 1091 V 16 w(FREE\()g(op\))230
1280 y Fl(INOUT)63 b Fj(op)541 b Fl(op)q(eration)14 b(\(handle\))189
1463 y Fm(Discussion)o(:)189 1530 y Fl(This)j(app)q(ears)g(to)g(ha)o(v)
o(e)g(b)q(een)h(a)f(mistak)o(e.)26 b(This)17 b(function)g(frees)h(the)g
(function)e(p)q(oin)o(ter)i(and)f(sets)h(its)189 1580
y(v)n(alue)10 b(to)h(MPI)p 424 1580 13 2 v 15 w(OP)p
499 1580 V 15 w(NULL.)g(Th)o(us,)g(it)g(is)g(b)q(oth)g(input)g(and)f
(output)i(as)f(are)g(the)g(free)h(routines)g(for)e(Groups,)189
1629 y(Comms,)g(etc.)143 1768 y Fi(\017)23 b Fq(P)o(age)14
b(125,)g(line)j(1)e(reads)189 1824 y(CALL)h(MPI)p 420
1824 14 2 v 16 w(ALLREDUCE\(sum,)f(c,)g(n,)g(MPI)p 1040
1824 V 17 w(REAL,)g(MPI)p 1300 1824 V 17 w(SUM,)g(0,)f(comm,)g(ierr\))
189 1881 y(but)h(should)h(read)189 1937 y(CALL)g(MPI)p
420 1937 V 16 w(ALLREDUCE\(sum,)f(c,)g(n,)g(MPI)p 1040
1937 V 17 w(REAL,)g(MPI)p 1300 1937 V 17 w(SUM,)g(comm,)f(ierr\))189
2108 y Fm(Discussion)o(:)189 2175 y Fl(The)g(extra)h(argumen)o(t)e(app)
q(ears)j(to)e(b)q(e)h(left)f(o)o(v)o(er)g(from)f(the)i(previous)f
(example)f(with)h(MPI)p 1670 2175 13 2 v 16 w(REDUCE.)189
2225 y(This)f(is)h(a)g(mistak)o(e.)143 2363 y Fi(\017)23
b Fq(P)o(age)14 b(194,)g(line)j(48)e(reads)189 2420 y
Fj(MPI)p 274 2420 14 2 v 15 w(ERRHANDLER)p 582 2420 V
18 w(CREA)l(TE\(FUNCTION,)h(HANDLER,)g(IERROR\))189 2476
y Fq(but)f(should)h(read)189 2533 y Fj(MPI)p 274 2533
V 15 w(ERRHANDLER)p 582 2533 V 18 w(CREA)l(TE\(FUNCTION,)g(ERRHANDLER,)
h(IERROR\))189 2704 y Fm(Discussion)o(:)-32 46 y Fh(1)-32
103 y(2)-32 159 y(3)-32 215 y(4)-32 272 y(5)-32 328 y(6)-32
385 y(7)-32 441 y(8)-32 498 y(9)-40 554 y(10)-40 611
y(11)-40 667 y(12)-40 724 y(13)-40 780 y(14)-40 836 y(15)-40
893 y(16)-40 949 y(17)-40 1006 y(18)-40 1062 y(19)-40
1119 y(20)-40 1175 y(21)-40 1232 y(22)-40 1288 y(23)-40
1345 y(24)-40 1401 y(25)-40 1457 y(26)-40 1514 y(27)-40
1570 y(28)-40 1627 y(29)-40 1683 y(30)-40 1740 y(31)-40
1796 y(32)-40 1853 y(33)-40 1909 y(34)-40 1966 y(35)-40
2022 y(36)-40 2078 y(37)-40 2135 y(38)-40 2191 y(39)-40
2248 y(40)-40 2304 y(41)-40 2361 y(42)-40 2417 y(43)-40
2474 y(44)-40 2530 y(45)-40 2587 y(46)-40 2643 y(47)-40
2699 y(48)p eop
%%Page: 18 20
18 19 bop 75 -100 a Fq(18)947 b Fg(CHAPTER)15 b(3.)35
b(MISCELLANY)17 b(F)o(OR)e(1.2)189 45 y Fl(This)e(is)h(a)g(small)d(t)o
(yp)q(o)j(to)g(matc)o(h)f(all)f(the)j(other)f(names)f(for)h(this)g
(argumen)o(t.)143 186 y Fi(\017)23 b Fq(P)o(age)14 b(196,)g(lines)j
(1-2)e(reads)204 243 y Fj(MPI)p 289 243 14 2 v 16 w(ERRHANDLER)p
598 243 V 17 w(FREE\()h(errhandler)f(\))230 433 y Fl(IN)156
b Fj(errhandler)397 b Fl(MPI)14 b(error)h(handler)f(\(handle\))189
576 y Fq(but)h(should)h(read)204 633 y Fj(MPI)p 289 633
V 16 w(ERRHANDLER)p 598 633 V 17 w(FREE\()g(errhandler)f(\))230
823 y Fl(INOUT)63 b Fj(errhandler)397 b Fl(MPI)14 b(error)h(handler)f
(\(handle\))189 1007 y Fm(Discussion)o(:)189 1075 y Fl(This)c(app)q
(ears)h(to)f(ha)o(v)o(e)h(b)q(een)g(a)f(mistak)o(e.)16
b(This)10 b(function)g(frees)i(the)f(function)f(p)q(oin)o(ter)g(and)h
(sets)g(its)g(v)n(alue)189 1125 y(to)h(MPI)p 321 1125
13 2 v 15 w(ERRHANDLER)p 636 1125 V 14 w(NULL.)g(Th)o(us,)h(it)f(is)g
(b)q(oth)h(input)f(and)g(output)h(as)f(are)h(the)g(free)g(routines)g
(for)189 1175 y(Groups,)g(Comms,)e(etc.)143 1316 y Fi(\017)23
b Fq(P)o(age)14 b(203,)g(line)j(1)e(reads)189 1372 y
Fj(MPI)p 274 1372 14 2 v 15 w(PCONTROL\(level\))189 1429
y Fq(but)g(should)h(read)189 1485 y Fj(MPI)p 274 1485
V 15 w(PCONTROL\(LEVEL\))189 1657 y Fm(Discussion)o(:)189
1726 y Fl(This)d(is)h(a)g(minor)e(t)o(yp)q(o.)143 1867
y Fi(\017)23 b Fq(P)o(age)14 b(210,)g(line)j(44)e(reads)189
1923 y Fd(MPI)p 266 1923 13 2 v 14 w(PENDING)189 1980
y Fq(but)g(should)h(read)189 2036 y Fd(MPI)p 266 2036
V 14 w(ERR)p 359 2036 V 14 w(PENDING)189 2209 y Fm(Discussion)o(:)189
2277 y Fl(This)d(is)h(a)g(t)o(yp)q(o.)k(See)c(page)g(197,)f(line)g(20)h
(for)f(the)i(original)d(de\014nition.)143 2418 y Fi(\017)23
b Fq(P)o(age)14 b(211,)g(line)j(44)e(reads)189 2475 y
Fd(MPI)p 266 2475 V 14 w(DOUBLE)p 445 2475 V 14 w(COMPLEX)189
2531 y Fq(but)g(should)h(b)q(e)g(mo)o(v)o(ed)f(to)f(P)o(age)h(212,)f
(line)j(22)d(since)j(it)e(is)h(an)f(optional)h(F)l(ortran)e(datat)o(yp)
q(e.)189 2647 y Fm(Discussion)o(:)1967 46 y Fh(1)1967
103 y(2)1967 159 y(3)1967 215 y(4)1967 272 y(5)1967 328
y(6)1967 385 y(7)1967 441 y(8)1967 498 y(9)1959 554 y(10)1959
611 y(11)1959 667 y(12)1959 724 y(13)1959 780 y(14)1959
836 y(15)1959 893 y(16)1959 949 y(17)1959 1006 y(18)1959
1062 y(19)1959 1119 y(20)1959 1175 y(21)1959 1232 y(22)1959
1288 y(23)1959 1345 y(24)1959 1401 y(25)1959 1457 y(26)1959
1514 y(27)1959 1570 y(28)1959 1627 y(29)1959 1683 y(30)1959
1740 y(31)1959 1796 y(32)1959 1853 y(33)1959 1909 y(34)1959
1966 y(35)1959 2022 y(36)1959 2078 y(37)1959 2135 y(38)1959
2191 y(39)1959 2248 y(40)1959 2304 y(41)1959 2361 y(42)1959
2417 y(43)1959 2474 y(44)1959 2530 y(45)1959 2587 y(46)1959
2643 y(47)1959 2699 y(48)p eop
%%Page: 19 21
19 20 bop 75 -100 a Fg(3.10.)34 b(MINOR)16 b(CORRECTIONS)1109
b Fq(19)189 45 y Fl(On)20 b(page)h(19,)f(lines)h(2-3,)f(it)g(clearly)h
(states)g(this)f(is)h(an)f(optional)f(F)m(ortran)h(datat)o(yp)q(e.)37
b(It)21 b(is)f(listed)189 95 y(incorrectly)14 b(in)g(the)g(app)q
(endix.)1875 150 y Fi(>)i Fh(\(Oct\))143 236 y Fi(\017)23
b Fq(P)o(age)14 b(212,)g(add)h(new)h(lines)h(of)d(text)h(at)g(line)i
(22)d(and)i(line)g(25)f(to)g(read:)189 292 y(etc.)189
349 y(Th)o(us,)f(the)i(text)e(will)j(no)o(w)e(read:)189
518 y Fk(/*)23 b(optional)g(datatypes)g(\(Fortran\))f(*/)189
574 y(MPI_INTEGER1)189 631 y(MPI_INTEGER2)189 687 y(MPI_INTEGER4)189
744 y(MPI_REAL2)189 800 y(MPI_REAL4)189 857 y(MPI_REAL8)189
913 y(etc.)189 1026 y(/*)h(optional)g(datatypes)g(\(C\))g(*/)189
1082 y(MPI_LONG_LONG_INT)189 1139 y(etc.)189 1292 y Fm(Discussion)o(:)
189 1360 y Fl(On)15 b(page)g(19,)f(line)g(6,)h(concludes)h(the)f(list)f
(of)h(optional)e(datat)o(yp)q(es)j(with)e(etc.)22 b(It)15
b(w)o(as)g(not)g(in)o(tended)g(to)189 1410 y(b)q(e)f(a)g(complete)g
(list)g(of)f(all)g(p)q(ossible)i(ones.)20 b(Some)13 b(ha)o(v)o(e)h(in)o
(terpreted)i(the)e(app)q(endix)h(to)f(b)q(e)h(a)f(complete)189
1460 y(list)f(since)h(only)f(the)h(ones)h(explictly)e(on)g(page)h(19)f
(are)h(listed.)k(Adding)13 b(etc.,)h(to)g(the)g(F)m(ortran)f(and)h(C)f
(list)189 1510 y(in)g(the)i(app)q(endix)e(will)g(mak)o(e)f(it)i(clear)g
(these)h(are)g(only)e(some)g(of)g(the)i(p)q(ossible)f(optional)e(datat)
o(yp)q(es.)1875 1565 y Fi(?)k Fh(\(Oct\))143 1651 y Fi(\017)23
b Fq(P)o(age)14 b(213,)g(line)j(28.)i(The)d(follo)o(wing)g(text)e
(should)i(b)q(e)g(added:)189 1707 y(/*)9 b(Prede\014ned)j(functions)f
(in)g(C)e(and)i(F)l(ortran)e(*/)g(MPI)p 1137 1707 14
2 v 17 w(NULL)p 1278 1707 V 17 w(COPY)p 1428 1707 V 17
w(FN)g(MPI)p 1607 1707 V 17 w(NULL)p 1748 1707 V 17 w(DELETE)p
1954 1707 V 16 w(FN)189 1764 y(MPI)p 281 1764 V 16 w(DUP)p
397 1764 V 16 w(FN)189 1880 y Fm(Discussion)o(:)189 1948
y Fl(These)15 b(are)f(missing)e(and)i(de\014ned)h(on)e(pages)i(169,)d
(line)i(17)f(and)h(p.)k(170,)13 b(line)g(4.)143 2089
y Fi(\017)23 b Fq(P)o(age)14 b(220,)g(lines)j(19-20)d(reads)189
2146 y Fj(int)i(double)g(MPI)p 479 2146 V 16 w(Wtime\(void\))189
2202 y(int)g(double)g(MPI)p 479 2202 V 16 w(Wtick\(void\))189
2258 y Fq(but)f(should)h(read)189 2315 y Fj(double)g(MPI)p
413 2315 V 16 w(Wtime\(void\))189 2371 y(double)g(MPI)p
413 2371 V 16 w(Wtick\(void\))189 2544 y Fm(Discussion)o(:)189
2612 y Fl(This)d(w)o(as)h(a)g(mistak)o(e)e(caused)j(b)o(y)f(the)g
(macros.)-32 46 y Fh(1)-32 103 y(2)-32 159 y(3)-32 215
y(4)-32 272 y(5)-32 328 y(6)-32 385 y(7)-32 441 y(8)-32
498 y(9)-40 554 y(10)-40 611 y(11)-40 667 y(12)-40 724
y(13)-40 780 y(14)-40 836 y(15)-40 893 y(16)-40 949 y(17)-40
1006 y(18)-40 1062 y(19)-40 1119 y(20)-40 1175 y(21)-40
1232 y(22)-40 1288 y(23)-40 1345 y(24)-40 1401 y(25)-40
1457 y(26)-40 1514 y(27)-40 1570 y(28)-40 1627 y(29)-40
1683 y(30)-40 1740 y(31)-40 1796 y(32)-40 1853 y(33)-40
1909 y(34)-40 1966 y(35)-40 2022 y(36)-40 2078 y(37)-40
2135 y(38)-40 2191 y(39)-40 2248 y(40)-40 2304 y(41)-40
2361 y(42)-40 2417 y(43)-40 2474 y(44)-40 2530 y(45)-40
2587 y(46)-40 2643 y(47)-40 2699 y(48)p eop
%%Page: 20 22
20 21 bop 75 -100 a Fq(20)947 b Fg(CHAPTER)15 b(3.)35
b(MISCELLANY)17 b(F)o(OR)e(1.2)143 45 y Fi(\017)23 b
Fq(P)o(age)14 b(222,)g(line)j(34)e(reads)189 102 y Fj(INTEGER)f
(REQUEST,)g(COUNT,)g(D)o(A)l(T)l(A)l(TYPE,)g(DEST,)g(T)l(A)o(G,)f
(COMM,)g(REQUEST,)i(IERROR)189 158 y Fq(but)g(should)h(read)189
214 y Fj(INTEGER)f(COUNT,)h(D)o(A)l(T)l(A)l(TYPE,)g(DEST,)f(T)l(A)o(G,)
g(COMM,)g(REQUEST,)h(IERROR)189 387 y Fm(Discussion)o(:)189
455 y Fl(An)e(extra)g(argumen)o(t)f(got)g(added.)19 b(It)14
b(needs)h(to)f(b)q(e)g(remo)o(v)o(ed.)143 596 y Fi(\017)23
b Fq(P)o(age)14 b(222,)g(line)j(38)e(reads)189 653 y
Fj(INTEGER)f(REQUEST,)g(COUNT,)g(D)o(A)l(T)l(A)l(TYPE,)g(DEST,)g(T)l(A)
o(G,)f(COMM,)g(REQUEST,)i(IERROR)189 709 y Fq(but)g(should)h(read)189
766 y Fj(INTEGER)f(COUNT,)h(D)o(A)l(T)l(A)l(TYPE,)g(DEST,)f(T)l(A)o(G,)
g(COMM,)g(REQUEST,)h(IERROR)189 938 y Fm(Discussion)o(:)189
1006 y Fl(An)e(extra)g(argumen)o(t)f(got)g(added.)19
b(It)14 b(needs)h(to)f(b)q(e)g(remo)o(v)o(ed.)143 1147
y Fi(\017)23 b Fq(P)o(age)14 b(227,)g(lines)j(19-20)d(reads)189
1204 y Fj(MPI)p 274 1204 14 2 v 15 w(INTERCOMM)p 563
1204 V 17 w(MERGE\(INTERCOMM,)i(HIGH,)f(INTRA)o(COMM,)g(IERROR\))189
1260 y(INTEGER)g(INTERCOMM,)h(INTRA)o(COMM,)f(IERROR)189
1317 y Fq(but)g(should)h(read)189 1373 y Fj(MPI)p 274
1373 V 15 w(INTERCOMM)p 563 1373 V 17 w(MERGE\(INTERCOMM,)g(HIGH,)f
(NEWINTRA)o(COMM,)g(IERROR\))189 1430 y(INTEGER)g(INTERCOMM,)h
(NEWINTRA)o(COMM,)f(IERROR)189 1602 y Fm(Discussion)o(:)189
1670 y Fl(This)g(mak)o(es)e(it)i(matc)o(h)f(the)i(de\014nition)e(in)h
(the)g(text)h(on)f(P)o(age)g(159,)f(lines)h(34-36.)20
b(It)15 b(only)g(c)o(hanges)g(the)189 1720 y(name)d(of)i(the)g(argumen)
o(t.)143 1861 y Fi(\017)23 b Fq(P)o(age)14 b(228,)g(line)j(46)e(reads)
189 1918 y Fj(MPI)p 274 1918 V 15 w(ERRHANDLER)p 582
1918 V 18 w(CREA)l(TE\(FUNCTION,)h(HANDLER,)g(IERROR\))189
1974 y Fq(but)f(should)h(read)189 2031 y Fj(MPI)p 274
2031 V 15 w(ERRHANDLER)p 582 2031 V 18 w(CREA)l(TE\(FUNCTION,)g
(ERRHANDLER,)h(IERROR\))189 2203 y Fm(Discussion)o(:)189
2271 y Fl(This)c(c)o(hange)i(mak)o(es)d(the)j(app)q(endix)f(consistan)o
(t)g(with)g(c)o(hange)g(on)g(p.)k(194,)12 b(line)i(48.)143
2412 y Fi(\017)23 b Fq(P)o(age)14 b(229,)g(line)j(33)e(reads)189
2469 y Fj(MPI)p 274 2469 V 15 w(PCONTROL\(level\))189
2525 y Fq(but)g(should)h(read)189 2582 y Fj(MPI)p 274
2582 V 15 w(PCONTROL\(LEVEL\))1967 46 y Fh(1)1967 103
y(2)1967 159 y(3)1967 215 y(4)1967 272 y(5)1967 328 y(6)1967
385 y(7)1967 441 y(8)1967 498 y(9)1959 554 y(10)1959
611 y(11)1959 667 y(12)1959 724 y(13)1959 780 y(14)1959
836 y(15)1959 893 y(16)1959 949 y(17)1959 1006 y(18)1959
1062 y(19)1959 1119 y(20)1959 1175 y(21)1959 1232 y(22)1959
1288 y(23)1959 1345 y(24)1959 1401 y(25)1959 1457 y(26)1959
1514 y(27)1959 1570 y(28)1959 1627 y(29)1959 1683 y(30)1959
1740 y(31)1959 1796 y(32)1959 1853 y(33)1959 1909 y(34)1959
1966 y(35)1959 2022 y(36)1959 2078 y(37)1959 2135 y(38)1959
2191 y(39)1959 2248 y(40)1959 2304 y(41)1959 2361 y(42)1959
2417 y(43)1959 2474 y(44)1959 2530 y(45)1959 2587 y(46)1959
2643 y(47)1959 2699 y(48)p eop
%%Page: 21 23
21 22 bop 75 -100 a Fg(3.10.)34 b(MINOR)16 b(CORRECTIONS)1109
b Fq(21)189 45 y Fm(Discussion)o(:)189 114 y Fl(This)13
b(is)h(to)g(mak)o(e)e(the)j(language)e(binding)g(the)h(same)f(as)h(the)
h(c)o(hange)f(to)g(P)o(age)f(203,)g(line)g(1.)-32 46
y Fh(1)-32 103 y(2)-32 159 y(3)-32 215 y(4)-32 272 y(5)-32
328 y(6)-32 385 y(7)-32 441 y(8)-32 498 y(9)-40 554 y(10)-40
611 y(11)-40 667 y(12)-40 724 y(13)-40 780 y(14)-40 836
y(15)-40 893 y(16)-40 949 y(17)-40 1006 y(18)-40 1062
y(19)-40 1119 y(20)-40 1175 y(21)-40 1232 y(22)-40 1288
y(23)-40 1345 y(24)-40 1401 y(25)-40 1457 y(26)-40 1514
y(27)-40 1570 y(28)-40 1627 y(29)-40 1683 y(30)-40 1740
y(31)-40 1796 y(32)-40 1853 y(33)-40 1909 y(34)-40 1966
y(35)-40 2022 y(36)-40 2078 y(37)-40 2135 y(38)-40 2191
y(39)-40 2248 y(40)-40 2304 y(41)-40 2361 y(42)-40 2417
y(43)-40 2474 y(44)-40 2530 y(45)-40 2587 y(46)-40 2643
y(47)-40 2699 y(48)p eop
%%Trailer
end
userdict /end-hook known{end-hook}if
%%EOF

From mpi-comm-human@mcs.anl.gov Tue Oct  1 22:20:39 1996
Return-Path: <mpi-comm-human@mcs.anl.gov>
Received: from antares.mcs.anl.gov by netlib2.cs.utk.edu with ESMTP (cf v2.9t-netlib)
	id WAA19375; Tue, 1 Oct 1996 22:20:38 -0400
Received: (from listserv@localhost) by antares.mcs.anl.gov (8.6.10/8.6.10)
	id UAA23838 for mpi-comm-out; Tue, 1 Oct 1996 20:58:56 -0500
Received: from Aurora.CS.MsState.Edu (aurora.cs.msstate.edu [130.18.208.91]) by antares.mcs.anl.gov (8.6.10/8.6.10)  with ESMTP
	id NAA17219; Tue, 1 Oct 1996 13:49:04 -0500
Received:  (tony@localhost);
           by Aurora.CS.MsState.Edu (SMI-8.6/7.0m-FWP-MsState);
           id NAA14832; Tue, 1 Oct 1996 13:48:59 -0500
Date: Tue, 1 Oct 1996 13:48:59 -0500
From: Tony Skjellum <tony@Aurora.CS.MsState.Edu>
Message-Id: <199610011848.NAA14832@Aurora.CS.MsState.Edu>
To: mpi-comm@mcs.anl.gov, mpi-core@mcs.anl.gov
Subject: New collective chapter
Sender: owner-mpi-core@mcs.anl.gov
Precedence: bulk

The new collective chapter, as mentioned on mpi-coll group, is available.
-Tony

See ftp://aurora.cs.msstate.edu/pub/mpi/coll-2-30sep96.ps (or .ps.gz)

Please review as it is on time and ready for firm consideration, following updates
since last meeting.



From mpi-comm-human@mcs.anl.gov Tue Oct  8 00:05:01 1996
Return-Path: <mpi-comm-human@mcs.anl.gov>
Received: from antares.mcs.anl.gov by netlib2.cs.utk.edu with ESMTP (cf v2.9t-netlib)
	id AAA19824; Tue, 8 Oct 1996 00:04:58 -0400
Received: (from listserv@localhost) by antares.mcs.anl.gov (8.6.10/8.6.10)
	id WAA02177 for mpi-comm-out; Mon, 7 Oct 1996 22:49:46 -0500
Received: from mcs.anl.gov (donner.mcs.anl.gov [140.221.5.134]) by antares.mcs.anl.gov (8.6.10/8.6.10)  with ESMTP
	id WAA02163; Mon, 7 Oct 1996 22:49:26 -0500
Message-Id: <199610080349.WAA02163@antares.mcs.anl.gov>
To: mpi@whale.cdac.ernet.in (MPI account)
cc: mpi-bugs@mcs.anl.gov, gropp@mcs.anl.gov, mpi-comm@mcs.anl.gov,
        mpi-impl@mcs.anl.gov, mpi-maint@antares.mcs.anl.gov
Subject: Re: [MPI #2000] MPI related Problems on SMPs 
In-reply-to: Your message of "Mon, 07 Oct 1996 21:05:09 +0700."
             <9610071535.AA05076@whale.parcom.ernet.in> 
X-Request-Do: resolve
Date: Mon, 07 Oct 1996 22:49:26 -0500
From: Rusty Lusk <lusk@mcs.anl.gov>
Sender: owner-mpi-core@mcs.anl.gov
Precedence: bulk

| 	MPI : MPICH version 1.12 over p4 (tcp/ip) 
| 

You should get 1.0.13 and apply the patches available at
http://www.mcs.anl.gov/mpi/mpich (get the big patch)

| 	Configuration option: -arch=solaris -device=ch_p4 -comm=shared
| 

We have not extensively testing this configuration with solaris but it should
work. 

| 
| Questions:
| 	1. What is the suitable programming model for  our architecture with MPIlike SIMD,MIMD..

MPI provides access to the message-passing model.  The shared memory will be
used to provide fast message passing within a machine.

| 	2. How do we place the tasks for SIMD or MIMD 
| 	eg; in the pg file

You should read the sections on this in the User's Manual in the doc directory.

| 	3. Our MPI v1.12 with -comm=shared has been configured on a 8 node Ultra2s and with SIMD code ( all same executables ) it goes through , but with MIMD code ( different executables sharing memory ) it does'nt work , Why?

To get shared memory, you must fork, thus getting multiple copies of the same
executable.

| 	4. Is there any other MPI version specific for SMPs or any other configuration option to be done for MPICH
| 

You can use your configuration without the -comm=shared option, getting
sockets for all communication.


From owner-mpi-comm@CS.UTK.EDU Mon Nov 18 10:33:01 1996
Return-Path: <owner-mpi-comm@CS.UTK.EDU>
Received: from CS.UTK.EDU by netlib2.cs.utk.edu with ESMTP (cf v2.9t-netlib)
	id KAA12632; Mon, 18 Nov 1996 10:33:01 -0500
Received: from localhost (root@localhost) 
        by CS.UTK.EDU with SMTP (cf v2.9s-UTK)
	id KAA12051; Mon, 18 Nov 1996 10:25:46 -0500
Received: from wotan.inpro.de ([193.96.109.254]) 
        by CS.UTK.EDU with ESMTP (cf v2.9s-UTK)
	id KAA12029; Mon, 18 Nov 1996 10:25:38 -0500
Received: from bonnie.inpro.de
	by wotan.inpro.de with ESMTP (1.39.111.2/GEN-1.2.10)
	via EUnet id AA149719117; Mon, 18 Nov 1996 15:58:37 +0100
From: "R.Kuepfer" <kuepfer@inpro.de>
Message-Id: <199611181516.AA253180177@bonnie.inpro.de>
Received: by bonnie.inpro.de (1.37.109.18/GEN-1.1.5)
	id AA253180177; Mon, 18 Nov 1996 16:16:17 +0100
Subject: add to list
To: mpi-comm@CS.UTK.EDU
Date: Mon, 18 Nov 96 16:16:17 MEZ
Mailer: Elm [revision: 70.85]

please add kuepfer@inpro.de to the mailing list.


thanks

rodrigo kuepfer

From mpi-comm-human@mcs.anl.gov Mon Dec 16 23:14:02 1996
Return-Path: <mpi-comm-human@mcs.anl.gov>
Received: from antares.mcs.anl.gov by netlib2.cs.utk.edu with ESMTP (cf v2.9t-netlib)
	id XAA26927; Mon, 16 Dec 1996 23:14:01 -0500
Received: (from listserv@localhost) by antares.mcs.anl.gov (8.6.10/8.6.10)
	id VAA14780 for mpi-comm-out; Mon, 16 Dec 1996 21:55:07 -0600
Received: from palrel3.hp.com (palrel3.hp.com [15.253.88.10]) by antares.mcs.anl.gov (8.6.10/8.6.10)  with ESMTP
	id QAA10522 for <mpi-comm@mcs.anl.gov>; Mon, 16 Dec 1996 16:39:10 -0600
Received: from hplrss.hpl.hp.com (hplrss.hpl.hp.com [15.9.128.220]) by palrel3.hp.com with ESMTP (8.7.5/8.7.3) id OAA24321 for <mpi-comm@mcs.anl.gov>; Mon, 16 Dec 1996 14:39:24 -0800 (PST)
Received: (from schreibr@localhost) by hplrss.hpl.hp.com (8.7.1/8.7.1) id OAA27477 for mpi-comm@mcs.anl.gov; Mon, 16 Dec 1996 14:40:38 -0800 (PST)
Date: Mon, 16 Dec 1996 14:40:38 -0800 (PST)
From: Rob Schreiber <schreibr@hplrss.hpl.hp.com>
Message-Id: <199612162240.OAA27477@hplrss.hpl.hp.com>
To: mpi-comm@mcs.anl.gov
Subject: PPoPP Conference
Mime-Version: 1.0
Content-Type: text/plain; charset=X-roman8
Content-Transfer-Encoding: 7bit
Sender: owner-mpi-core@mcs.anl.gov
Precedence: bulk




On behalf of the program committee, I would like to invite submissions
to the ACM PPoPP (Principles and Practices of Parallel Programming)
Conference.  The developments in MPI implementation and use are very
apropriate for this years conference, which empahsizes practical aspects
of parallel programming.

The conference will take place July 18-21, 1997 in Las Vegas, Nevada.
For information about the conference, see the web page:
http://www.tc.cornell.edu/PPoPP/

The deadline for submission, December 13, has passed;
it can be extended by contacting the program
committee chair, Keshav Pingali (pingali@cs.cornell.edu).

Please pass along this invitation to other interested
HPF users, implementors, and researchers.

-- Rob Schreiber                    



From mpi-comm-human@mcs.anl.gov Fri Dec 20 09:56:40 1996
Return-Path: <mpi-comm-human@mcs.anl.gov>
Received: from antares.mcs.anl.gov by netlib2.cs.utk.edu with ESMTP (cf v2.9t-netlib)
	id JAA23782; Fri, 20 Dec 1996 09:56:39 -0500
Received: (from listserv@localhost) by antares.mcs.anl.gov (8.6.10/8.6.10)
	id IAA16301 for mpi-comm-out; Fri, 20 Dec 1996 08:23:36 -0600
Received: from acacia.sucs.soton.ac.uk (acacia.sucs.soton.ac.uk [152.78.128.232]) by antares.mcs.anl.gov (8.6.10/8.6.10)  with ESMTP
	id IAA16275; Fri, 20 Dec 1996 08:22:35 -0600
Received: from bright.ecs.soton.ac.uk (bright.ecs.soton.ac.uk [152.78.64.201])
   by acacia.sucs.soton.ac.uk (8.8.2/server) with SMTP id OAA00851;
   Fri, 20 Dec 1996 14:22:22 GMT
Received: from bacchus by bright.ecs.soton.ac.uk; Fri, 20 Dec 96 14:21:39 GMT
Message-Id: <32BAA133.59E2B600@ecs.soton.ac.uk>
Date: Fri, 20 Dec 1996 14:22:43 +0000
From: Robin Allen <R.W.Allen@ecs.soton.ac.uk>
Organization: ECS
X-Mailer: Mozilla 2.0 (X11; I; SunOS 4.1.3_U1 sun4c)
Mime-Version: 1.0
To: mpi-core@mcs.anl.gov
Cc: mpi-coll@mcs.anl.gov, mpi-comm@mcs.anl.gov, hpff@cs.rice.edu
Subject: Announcement: Upcoming Software Tools Workshop
Content-Type: text/plain; charset=us-ascii
Content-Transfer-Encoding: 7bit
Sender: owner-mpi-core@mcs.anl.gov
Precedence: bulk

Hi all.
This is to announce an upcoming European software tools workshop, Brussels, 5
February 1997. If you are interested in attending, please reply to the address
at the end of the message, not the mail address of this message! Thanks.



European Commission workshop for High-Performance Computing and Networking
(HPCN) Software Tools

Brussels, 5 February 1997

The European Commission recently engaged Smith System Engineering and the
PAC to undertake a survey of HPCN software tools.
The Commission's objectives in performing this survey were to assess the
current status of HPCN tools and to develop a strategy for further
investment and exploitation. The results of the survey will be presented by
Smith and the PAC at the forthcoming workshop in Brussels. Details of the
venue and agenda will be distributed in January.
In addition to providing feedback on the findings of the survey, the
workshop will be used to stimulate discussion on the 'way ahead' for
European HPCN software tools. In particular, it will provide a forum for
debate on software tool development, the EC's framework programme and the
newly forming Technology Transfer Node (TTN) network.
The workshop will last one day with the morning dedicated to presentation
of the study's results and the EC's perspectives. In the afternoon, two
parallel sessions will debate the current issues in HPCN software tool
development. The findings of the two sessions will then be consolidated and
discussed.
If you are interested in taking part in the workshop please mail your details

To: Dr Daron Green                      Fax: +44 1483 442304

Name:

Address:

Company:

Tel:

email:

Stuart A Haire
System Engineer

/////////////////////////////////
/ Smith System Engineering Ltd  /
/ Surrey Research Park          /
/ Guildford                     /
/ Surrey                        /
/ GU2 5YP                       /
/ e-mail: sahaire@smithsys.co.uk/
/ tel: +44 (0)1483 442103       /
/ fax: +44 (0)1483 442304       /
/ mobile: 0468 946960           /
/////////////////////////////////

From mpi-comm-human@mcs.anl.gov Sat Jan 11 20:35:46 1997
Return-Path: <mpi-comm-human@mcs.anl.gov>
Received: from antares.mcs.anl.gov by netlib2.cs.utk.edu with ESMTP (cf v2.9t-netlib)
	id UAA01706; Sat, 11 Jan 1997 20:35:45 -0500
Received: (from listserv@localhost) by antares.mcs.anl.gov (8.6.10/8.6.10)
	id TAA12044 for mpi-comm-out; Sat, 11 Jan 1997 19:24:41 -0600
Received: from franklin.sdsc.edu (franklin.sdsc.edu [132.249.40.106]) by antares.mcs.anl.gov (8.6.10/8.6.10)  with ESMTP
	id TAA27558 for <mpi-comm@mcs.anl.gov>; Fri, 10 Jan 1997 19:55:24 -0600
Received: from flopsy.sdsc.edu (flopsy.sdsc.edu [132.249.34.127]) by franklin.sdsc.edu (8.8.3/8.8.3/SDSCserver-14) with SMTP id RAA19519 for <mpi-comm@mcs.anl.gov>; Fri, 10 Jan 1997 17:55:32 -0800 (PST)
From: Susan Lindsey <lindsey@sdsc.edu>
Received: by flopsy.sdsc.edu (4.1/1.11-client)
	id AA04331; Fri, 10 Jan 97 17:55:32 PST
Message-Id: <9701110155.AA04331@flopsy.sdsc.edu>
Subject: subscribe mpi-comm lindsey@sdsc.edu
To: mpi-comm@mcs.anl.gov
Date: Fri, 10 Jan 1997 17:55:31 -0800 (PST)
Reply-To: lindsey@sdsc.edu
X-Susan'S-Band-O-The-Month: Sublime
X-Mailer: ELM [version 2.4 PL25]
Mime-Version: 1.0
Content-Type: text/plain; charset=US-ASCII
Content-Transfer-Encoding: 7bit
Sender: owner-mpi-core@mcs.anl.gov
Precedence: bulk

subscribe mpi-comm lindsey@sdsc.edu



From mpi-comm-human@mcs.anl.gov Mon Jan 13 19:25:23 1997
Return-Path: <mpi-comm-human@mcs.anl.gov>
Received: from antares.mcs.anl.gov by netlib2.cs.utk.edu with ESMTP (cf v2.9t-netlib)
	id TAA19198; Mon, 13 Jan 1997 19:25:22 -0500
Received: (from listserv@localhost) by antares.mcs.anl.gov (8.6.10/8.6.10)
	id SAA23373 for mpi-comm-out; Mon, 13 Jan 1997 18:00:06 -0600
Received: from tbag.osc.edu (tbag.osc.edu [128.146.36.50]) by antares.mcs.anl.gov (8.6.10/8.6.10)  with ESMTP
	id RAA22802 for <mpi-comm@mcs.anl.gov>; Mon, 13 Jan 1997 17:37:57 -0600
Received:  for gdburns@tbag.osc.edu
	by tbag.osc.edu (8.7.1/950822.1) id SAA24739; Mon, 13 Jan 1997 18:38:19 -0500 (EST)
Date: Mon, 13 Jan 1997 18:38:19 -0500 (EST)
From: Greg Burns <gdburns@tbag.osc.edu>
Message-Id: <199701132338.SAA24739@tbag.osc.edu>
To: mpi-comm@mcs.anl.gov
Sender: owner-mpi-core@mcs.anl.gov
Precedence: bulk


unsubscribe gdburns@osc.edu


From mpi-comm-human@mcs.anl.gov Fri Jan 24 02:06:40 1997
Return-Path: <mpi-comm-human@mcs.anl.gov>
Received: from antares.mcs.anl.gov by netlib2.cs.utk.edu with ESMTP (cf v2.9t-netlib)
	id CAA25463; Fri, 24 Jan 1997 02:06:40 -0500
Received: (from listserv@localhost) by antares.mcs.anl.gov (8.6.10/8.6.10)
	id AAA05267 for mpi-comm-out; Fri, 24 Jan 1997 00:48:43 -0600
Received: from hitiij.hitachi.co.jp (root@hitiij.hitachi.co.jp [133.145.224.3]) by antares.mcs.anl.gov (8.6.10/8.6.10)  with ESMTP
	id AAA05262 for <mpi-comm@mcs.anl.gov>; Fri, 24 Jan 1997 00:48:39 -0600
Received: from hcrlgw92.crl.hitachi.co.jp by hitiij.hitachi.co.jp (8.8.3+2.6Wbeta9/3.4Wbeta6-hitiij) id PAA20192; Fri, 24 Jan 1997 15:50:09 +0900 (JST)
Received: from hcrlgw2.crl.hitachi.co.jp by hcrlgw92.crl.hitachi.co.jp (4.1/6.4J.6)
	id AA11417; Fri, 24 Jan 97 15:49:54 JST
Received: from [133.144.18.33] by hcrlgw2.crl.hitachi.co.jp (5.61/6.4J.6)
	id AA16638; Fri, 24 Jan 97 15:49:52 +0900
Message-Id: <32E85E0E.78C9@crl.hitachi.co.jp>
Date: Fri, 24 Jan 1997 16:00:30 +0900
From: Nobutoshi Sagawa <sagawa@crl.hitachi.co.jp>
Reply-To: sagawa@crl.hitachi.co.jp
Organization: Hitachi Central Research Lab.
X-Mailer: Mozilla 3.0 (Win16; I)
Mime-Version: 1.0
To: mpi-comm@mcs.anl.gov
Cc: KENTA.NAKAMURA@soft12.nichijo.soft.hitachi.co.jp
Subject: typo?
Content-Type: text/plain; charset=iso-2022-jp
Content-Transfer-Encoding: 7bit
Sender: owner-mpi-core@mcs.anl.gov
Precedence: bulk

We seem to have found a typo error in MPI1.1.

The C argument "recvtag" for MPI_Sendrecv is defined as "MPI_Dagatype"
which we believe should be just "int".

Forgive us if this issue has been already raised.

 
---------------------------------------------------------------
                     Kenta Nakamura
                       Software Development Center, Hitachi Ltd.

                     Nobutoshi Sagawa
                       Processor System Department
                       Central Research Laboratory, Hitachi Ltd.
---------------------------------------------------------------

From owner-mpi-comm@CS.UTK.EDU Sun Jun 29 15:07:32 1997
Return-Path: <owner-mpi-comm@CS.UTK.EDU>
Received: from CS.UTK.EDU by netlib2.cs.utk.edu with ESMTP (cf v2.9t-netlib)
	id PAA22519; Sun, 29 Jun 1997 15:07:31 -0400
Received: from localhost (root@localhost) 
        by CS.UTK.EDU with SMTP (cf v2.9s-UTK)
	id PAA06215; Sun, 29 Jun 1997 15:11:52 -0400
Received: from home.iis.com.br (root@home.iis.com.br [200.255.216.6]) 
        by CS.UTK.EDU with ESMTP (cf v2.9s-UTK)
	id PAA06208; Sun, 29 Jun 1997 15:11:47 -0400
Received: from LOGIN.iis.com.br (rio-as7-tty10.iis.com.br [200.255.216.169]) by home.iis.com.br (8.7.5/8.6.11) with SMTP id QAA28956 for <mpi-comm@cs.utk.edu>; Sun, 29 Jun 1997 16:08:49 -0300
Message-Id: <1.5.4.32.19970629190850.0066ead8@hotmail.com>
X-Sender: rmalmeida@hotmail.com (Unverified)
X-Mailer: Windows Eudora Light Version 1.5.4 (32)
Mime-Version: 1.0
Content-Type: text/plain; charset="us-ascii"
Date: Sun, 29 Jun 1997 16:08:50 -0300
To: mpi-comm@CS.UTK.EDU
From: Reginaldo Almeida <rmalmeida@hotmail.com>



From mpi-comm-human@mcs.anl.gov Tue Jul 22 18:43:59 1997
Return-Path: <mpi-comm-human@mcs.anl.gov>
Received: from antares.mcs.anl.gov by netlib2.cs.utk.edu with ESMTP (cf v2.9t-netlib)
	id SAA17910; Tue, 22 Jul 1997 18:43:59 -0400
Received: (from listserv@localhost) by antares.mcs.anl.gov (8.6.10/8.6.10)
	id RAA22006 for mpi-comm-out; Tue, 22 Jul 1997 17:20:56 -0500
Received: from beowulf.ucsd.edu (greinman@beowulf.ucsd.edu [132.239.17.2]) by antares.mcs.anl.gov (8.6.10/8.6.10)  with ESMTP
	id RAA21997 for <mpi-comm@mcs.anl.gov>; Tue, 22 Jul 1997 17:20:49 -0500
Received: (from greinman@localhost) by beowulf.ucsd.edu (8.8.3/8.8.3/External-1.2) id PAA15024 for mpi-comm@mcs.anl.gov; Tue, 22 Jul 1997 15:20:43 -0700 (PDT)
Date: Tue, 22 Jul 1997 15:20:43 -0700 (PDT)
From: Glenn Reinman <greinman@cs.ucsd.edu>
Message-Id: <199707222220.PAA15024@beowulf.ucsd.edu>
To: mpi-comm@mcs.anl.gov
Subject: MPI v2.0 - shared memory and signals?
Sender: owner-mpi-core@mcs.anl.gov
Precedence: bulk

Hi,
	I'm interested in using shared memory between two processes running
MPI.  Is this to be implemented in the new version, and if so, will it be 
limited by the constraints of the operating system's shared memory primitives
(i.e. UNIX only allows 6 shared memory segments per process).  Also, are signals
(i.e. some form of asynchronous interrupt, hopefully handled by some custom
procedure) to be implemented in the new version?  My intent is to handle 
contention at a processor by migrating "work" (rather than processes as in
CONDOR) by signalling a slave to communicate results/data and terminate.  I 
hope this is the correct forum to ask this question, and if it has already been
discussed, if you could please direct me to the archives, I'd appreciate it.  
Thanks.

Glenn

From mpi-comm-human@mcs.anl.gov Wed Jul 23 10:43:13 1997
Return-Path: <mpi-comm-human@mcs.anl.gov>
Received: from antares.mcs.anl.gov by netlib2.cs.utk.edu with ESMTP (cf v2.9t-netlib)
	id KAA27768; Wed, 23 Jul 1997 10:43:12 -0400
Received: (from listserv@localhost) by antares.mcs.anl.gov (8.6.10/8.6.10)
	id JAA07729 for mpi-comm-out; Wed, 23 Jul 1997 09:26:02 -0500
Received: from parrot.rz.kp.dlr.de (parrot.rz.kp.dlr.de [129.247.102.29]) by antares.mcs.anl.gov (8.6.10/8.6.10)  with ESMTP
	id JAA07718 for <mpi-comm@mcs.anl.gov>; Wed, 23 Jul 1997 09:25:54 -0500
Received: from parrot ([129.247.102.29]) by parrot.rz.kp.dlr.de
          (Netscape Mail Server v2.02) with SMTP id AAA10895
          for <mpi-comm@mcs.anl.gov>; Wed, 23 Jul 1997 16:25:02 +0200
Message-ID: <33D6143D.EE4@dlr.de>
Date: Wed, 23 Jul 1997 16:25:01 +0200
From: Martin Strietzel <Martin.Strietzel@dlr.de>
Organization: DLR DV-HP
X-Mailer: Mozilla 3.0 (X11; I; SunOS 5.5.1 sun4m)
MIME-Version: 1.0
To: mpi-comm@mcs.anl.gov
Subject: Process management
Content-Type: text/plain; charset=us-ascii
Content-Transfer-Encoding: 7bit
Sender: owner-mpi-core@mcs.anl.gov
Precedence: bulk

Hello,

we'd like to communicate between to different programs using MPI
intercommunicators. The point is how to start this programs in one
MPI-world. 
We could do this by using MPICH and manipulating the proc-group files by
hand, but I would prefer a MPI implementation which already allows to
start two different executables with one 'mpirun' statement, or to spawn
a new process by 'mpi_comm_spawn'?
Does anybody know which implementation includes these MPI 2
functionalities already?

	Thanks,
		Martin
		
-- 

    Martin Strietzel                   

    Deutsche Forschungsanstalt fuer Luft- und Raumfahrt
    Linder Hoehe 
    51147 Koeln (Wahnheide)        mailto:Martin.Strietzel@dlr.de

    Tel.: +49 (0)2203/601-2059     Fax: +49 (0)2203/601-2104
       or +49 (0)2203/601-3620

From mpi-comm-human@mcs.anl.gov Mon Nov 16 13:44:39 1998
Return-Path: <mpi-comm-human@mcs.anl.gov>
Received: from antares.mcs.anl.gov by netlib2.cs.utk.edu with ESMTP (cf v2.9t-netlib)
	id NAA16382; Mon, 16 Nov 1998 13:44:38 -0500
Received: (from listserv@localhost) by antares.mcs.anl.gov (8.6.10/8.6.10)
	id MAA23277 for mpi-comm-out; Mon, 16 Nov 1998 12:09:00 -0600
Received: from timbuk-e1.cray.com (timbuk-e1.cray.com [128.162.1.30]) by antares.mcs.anl.gov (8.6.10/8.6.10)  with ESMTP
	id MAA23270; Mon, 16 Nov 1998 12:08:48 -0600
Received: from ledzep.cray.com (ledzep.cray.com [137.38.226.97]) by timbuk-e1.cray.com (8.8.8/CRI-gate-news-1.3) with ESMTP id MAA29531; Mon, 16 Nov 1998 12:08:40 -0600 (CST)
Received: from ironwood-e185.cray.com (root@ironwood-e185.cray.com [128.162.185.212]) by ledzep.cray.com (8.8.8/craymail-smart) with ESMTP id MAA5482983; Mon, 16 Nov 1998 12:08:39 -0600 (CST)
Received: from fsgi118.cray.com (fsgi118 [128.162.190.136]) by ironwood-e185.cray.com (8.8.4/ASC-news-e1.0) with ESMTP id MAA27571; Mon, 16 Nov 1998 12:08:28 -0600 (CST)
From: Karl Feind <kaf@sgi.com>
Received: by fsgi118.cray.com (8.8.8/SGI-client.1.6) id MAA09295; Mon, 16 Nov 1998 12:05:51 -0600 (CST)
Message-Id: <199811161805.MAA09295@fsgi118.cray.com>
Date: Mon, 16 Nov 1998 12:05:51 -0600 (CST)
To: mpi-comm@mcs.anl.gov, kaf@sgi.com
Subject: MPI-2 thread safety and collectives
Cc: judith@sgi.com, gropp@mcs.anl.gov
Sender: owner-mpi-core@mcs.anl.gov
Precedence: bulk



I'd like to get some opinions about interpreting an aspect of the MPI-2 thread 
safety specification which deals with collectives.

-----------------------------------------------------------------------------
  MPI-2 Standard, Section 8.7.1, paragraphs 1-3:

   Threads

   In a thread-compliant implementation, an MPI process is a process that
   may be multi-threaded. Each thread can issue MPI calls; however,
   threads are not separately addressable: a rank in a send or receive
   call identifies a process, not a thread. A message sent to a process
   can be received by any thread in this process.

   Rationale.

   This model corresponds to the POSIX model of interprocess
   communication: the fact that a process is multi-threaded, rather than
   single-threaded, does not affect the external interface of this
   process. MPI implementations where MPI `processes' are POSIX threads
   inside a single POSIX process are not thread-compliant by this
   definition (indeed, their ``processes'' are single-threaded). ( End of
   rationale.)

   Advice to users.

   It is the user's responsibility to prevent races when threads within
   the same application post conflicting communication calls. The user
   can make sure that two threads in the same process will not issue
   conflicting communication calls by using distinct communicators at
   each thread. ( End of advice to users.)
-----------------------------------------------------------------------------

The basic question is simple.   How do you define "conflicting communication
calls"?   There are two possible interpretations:

     	1) Any MPI collective call on the same communicator.
    or	2) The same MPI collective  call on the same communicator.

When I read the text of the standard, I tend to take interpretation #1,
but one MPI Forum member I talked to recalls the forum specifically taking 
interpretation #2.    Hence I want to get more feedback to ensure that I'm
interpreting this correctly.

I think that choosing interpretation #1 would be very desirable because it
would permit some MPI collectives to be layered on top of other collectives
without introducing thread-safety problems.   As a common example, the ROMIO
MPI I/O software is layered on MPI collectives.   Interpretation #1 would
permit ROMIO to be layered and still not violate thread-safety.

Consider scenario S1 below, which illustrates this thread-safety issue as
it affects the ROMIO MPI-2 I/O layered implementation.

ROMIO function MPI_File_open()  calls MPI_Allreduce() using the communicator
passed by the user into MPI_File_open.    Suppose the user had another thread
executing an MPI_Allreduce() collective operation on the same communicator.

If a race condition allows the threads to execute in different orders,
we would get an incorrect result:

		Scenario S1
		-----------

     |  Process 0                       |       Process 1
     |  ---------                       |       ---------
     |                                  |
Time |  thread A calls MPI_Allreduce    |       thread C calls MPI_Allreduce
 |   |  via MPI_File_open               |
 |   |                                  |
 |   |  thread B calls MPI_Allreduce    |       thread D calls MPI_Allreduce
 |   |                                  |       via MPI_File_open
 V   |                                  |


Under interpretation #1, you could say that the user needs to ensure 
that all threads issuing any collective calls on the same communicator 
must be properly ordered by the user.  With this interpretation, scenario
S1 would be erroneous and the implementation wouldn't need to deal with
the matching up of the collective calls on multiple threads.

Notice that under both interpretations, a scenario like S2 should 
be erroneous because the same collective function is called by
the two threads.

                Scenario S2
                -----------

     |  Process 0                       |       Process 1
     |  ---------                       |       ---------
     |                                  |
Time |  thread A calls MPI_Allreduce    |       thread C calls MPI_Allreduce
 |   |  for MPI_MAX operation           |       for MPI_SUM operation
 |   |                                  |
 |   |  thread B calls MPI_Allreduce    |       thread D calls MPI_Allreduce
 |   |  for MPI_SUM operation           |       for MPI_MAX operation
 V   |                                  |



Thanks for any opinions or recollections of forum discussions on this matter.


Karl Feind                                    E-Mail: kaf@sgi.com
Silicon Graphics                              Phone:  612/683-5673
655F Lone Oak Drive                           Fax:    612/683-5276
Eagan, MN  55121

From mpi-comm-human@mcs.anl.gov Mon Nov 16 15:40:26 1998
Return-Path: <mpi-comm-human@mcs.anl.gov>
Received: from antares.mcs.anl.gov by netlib2.cs.utk.edu with ESMTP (cf v2.9t-netlib)
	id PAA18659; Mon, 16 Nov 1998 15:40:26 -0500
Received: (from listserv@localhost) by antares.mcs.anl.gov (8.6.10/8.6.10)
	id OAA28787 for mpi-comm-out; Mon, 16 Nov 1998 14:03:00 -0600
Received: from Mpi.Mpi-softtech.Com (mpi.MPI-SoftTech.Com [208.152.187.97]) by antares.mcs.anl.gov (8.6.10/8.6.10)  with ESMTP
	id OAA28594; Mon, 16 Nov 1998 14:00:21 -0600
Received: from localhost (tony@localhost);
           by Mpi.Mpi-softtech.Com using SMTP (8.8.5/7.0m-FWP-MsState);
           id OAA11782; Mon, 16 Nov 1998 14:01:33 -0600 (CST)
Date: Mon, 16 Nov 1998 14:01:32 -0600 (CST)
From: Tony Skjellum <tony@MPI-Softtech.Com>
To: Karl Feind <kaf@sgi.com>
cc: mpi-comm@mcs.anl.gov, judith@sgi.com, gropp@mcs.anl.gov
Subject: Re: MPI-2 thread safety and collectives
In-Reply-To: <199811161805.MAA09295@fsgi118.cray.com>
Message-ID: <Pine.GSO.3.95.981116135541.11629D-100000@mpi.mpi-softtech.com>
MIME-Version: 1.0
Content-Type: TEXT/PLAIN; charset=US-ASCII
Sender: owner-mpi-core@mcs.anl.gov
Precedence: bulk

Karl,

First of all, we discussed for a long time that if one serialized the
sequence of collective operations in a set of threads (same communicator),
and that if this sequence was the same across the communicator
(independent of number of threads in each process), that this was prima
facie legal.  

If this is not what was finally agreed on, then interpretation #1 is the
right one in my opinion.  

Common implementations allow collectives to be insulated from each other
by the semantics of the operations (with a backup that each collective has
its own tag, but that is generally unneeded).  That would suggest your
interpretation #2, but that depends generally on the strategy used in
MPICH and other implementations to utilize collective tags per operation.
In fact, for most collective operations, the effective total order is
enough to gain separation (avoid race condition) from multiple invocations
of the same operation or different operations without the tag, so that
anything that implicates this tag as a condition of thread safety is not
desirable IMHO.

-Tony

Anthony Skjellum, PhD, President (tony@mpi-softtech.com) 
MPI Software Technology, Inc., Ste 201, 1 Research Blvd., Starkville, MS 39759
+1-(601)320-4300 x15; FAX: +1-(601)320-4301; http://www.mpi-softtech.com
*The source for MPI, MPI-2, MPI/RT, Embedded & High Performance Middleware(tm)*


On Mon, 16 Nov 1998, Karl Feind wrote:

> 
> 
> I'd like to get some opinions about interpreting an aspect of the MPI-2 thread 
> safety specification which deals with collectives.
> 
> -----------------------------------------------------------------------------
>   MPI-2 Standard, Section 8.7.1, paragraphs 1-3:
> 
>    Threads
> 
>    In a thread-compliant implementation, an MPI process is a process that
>    may be multi-threaded. Each thread can issue MPI calls; however,
>    threads are not separately addressable: a rank in a send or receive
>    call identifies a process, not a thread. A message sent to a process
>    can be received by any thread in this process.
> 
>    Rationale.
> 
>    This model corresponds to the POSIX model of interprocess
>    communication: the fact that a process is multi-threaded, rather than
>    single-threaded, does not affect the external interface of this
>    process. MPI implementations where MPI `processes' are POSIX threads
>    inside a single POSIX process are not thread-compliant by this
>    definition (indeed, their ``processes'' are single-threaded). ( End of
>    rationale.)
> 
>    Advice to users.
> 
>    It is the user's responsibility to prevent races when threads within
>    the same application post conflicting communication calls. The user
>    can make sure that two threads in the same process will not issue
>    conflicting communication calls by using distinct communicators at
>    each thread. ( End of advice to users.)
> -----------------------------------------------------------------------------
> 
> The basic question is simple.   How do you define "conflicting communication
> calls"?   There are two possible interpretations:
> 
>      	1) Any MPI collective call on the same communicator.
>     or	2) The same MPI collective  call on the same communicator.
> 
> When I read the text of the standard, I tend to take interpretation #1,
> but one MPI Forum member I talked to recalls the forum specifically taking 
> interpretation #2.    Hence I want to get more feedback to ensure that I'm
> interpreting this correctly.
> 
> I think that choosing interpretation #1 would be very desirable because it
> would permit some MPI collectives to be layered on top of other collectives
> without introducing thread-safety problems.   As a common example, the ROMIO
> MPI I/O software is layered on MPI collectives.   Interpretation #1 would
> permit ROMIO to be layered and still not violate thread-safety.
> 
> Consider scenario S1 below, which illustrates this thread-safety issue as
> it affects the ROMIO MPI-2 I/O layered implementation.
> 
> ROMIO function MPI_File_open()  calls MPI_Allreduce() using the communicator
> passed by the user into MPI_File_open.    Suppose the user had another thread
> executing an MPI_Allreduce() collective operation on the same communicator.
> 
> If a race condition allows the threads to execute in different orders,
> we would get an incorrect result:
> 
> 		Scenario S1
> 		-----------
> 
>      |  Process 0                       |       Process 1
>      |  ---------                       |       ---------
>      |                                  |
> Time |  thread A calls MPI_Allreduce    |       thread C calls MPI_Allreduce
>  |   |  via MPI_File_open               |
>  |   |                                  |
>  |   |  thread B calls MPI_Allreduce    |       thread D calls MPI_Allreduce
>  |   |                                  |       via MPI_File_open
>  V   |                                  |
> 
> 
> Under interpretation #1, you could say that the user needs to ensure 
> that all threads issuing any collective calls on the same communicator 
> must be properly ordered by the user.  With this interpretation, scenario
> S1 would be erroneous and the implementation wouldn't need to deal with
> the matching up of the collective calls on multiple threads.
> 
> Notice that under both interpretations, a scenario like S2 should 
> be erroneous because the same collective function is called by
> the two threads.
> 
>                 Scenario S2
>                 -----------
> 
>      |  Process 0                       |       Process 1
>      |  ---------                       |       ---------
>      |                                  |
> Time |  thread A calls MPI_Allreduce    |       thread C calls MPI_Allreduce
>  |   |  for MPI_MAX operation           |       for MPI_SUM operation
>  |   |                                  |
>  |   |  thread B calls MPI_Allreduce    |       thread D calls MPI_Allreduce
>  |   |  for MPI_SUM operation           |       for MPI_MAX operation
>  V   |                                  |
> 
> 
> 
> Thanks for any opinions or recollections of forum discussions on this matter.
> 
> 
> Karl Feind                                    E-Mail: kaf@sgi.com
> Silicon Graphics                              Phone:  612/683-5673
> 655F Lone Oak Drive                           Fax:    612/683-5276
> Eagan, MN  55121
> 



From mpi-comm-human@mcs.anl.gov Mon Nov 16 17:31:41 1998
Return-Path: <mpi-comm-human@mcs.anl.gov>
Received: from antares.mcs.anl.gov by netlib2.cs.utk.edu with ESMTP (cf v2.9t-netlib)
	id RAA20226; Mon, 16 Nov 1998 17:31:41 -0500
Received: (from listserv@localhost) by antares.mcs.anl.gov (8.6.10/8.6.10)
	id QAA04886 for mpi-comm-out; Mon, 16 Nov 1998 16:11:30 -0600
Received: from smtp4.ny.us.ibm.COM (smtp4.ny.us.ibm.com [198.133.22.43]) by antares.mcs.anl.gov (8.6.10/8.6.10)  with ESMTP
	id PAA03096 for <mpi-comm@mcs.anl.gov>; Mon, 16 Nov 1998 15:33:25 -0600
From: snir@us.ibm.com
Received: from northrelay01.pok.ibm.com (northrelay01.pok.ibm.com [9.117.200.21])
	by smtp4.ny.us.ibm.COM (8.8.7/8.8.7) with ESMTP id QAA46590;
	Mon, 16 Nov 1998 16:19:52 -0500
Received: from us.ibm.com (d51mta03.pok.ibm.com [9.117.200.31])
	by northrelay01.pok.ibm.com (8.8.7/NCO v1.2) with SMTP id QAA106110;
	Mon, 16 Nov 1998 16:32:48 -0500
Received: by us.ibm.com(Lotus SMTP MTA Internal build v4.6.2  (651.2 6-10-1998))  id 852566BE.007659B2 ; Mon, 16 Nov 1998 16:32:41 -0500
X-Lotus-FromDomain: IBMUS
To: Karl Feind <kaf@sgi.com>
cc: mpi-comm@mcs.anl.gov
Message-ID: <852566BE.0076591C.00@us.ibm.com>
Date: Mon, 16 Nov 1998 16:22:59 -0500
Subject: Re: MPI-2 thread safety and collectives
Mime-Version: 1.0
Content-type: text/plain; charset=us-ascii
Content-Disposition: inline
Sender: owner-mpi-core@mcs.anl.gov
Precedence: bulk


The MPI2 standards specifies:  "matching of collective calls on a
communicator, window or file handle is done according to the order in which
the call are issued on each process.  If concurrent threads issue such
calls on the same communicator, window or file handle, it is up to the user
to ensure that the call are correctly ordered, using interthread
communication. "   The text speaks of calls done on the same object
(communicator, file,, or window), not on calls done on distinct objects.
A code of the form

                  Process 0
Process 1
thread 0.0                          thread 0.1
thread 1.0                           thread 1.1
MPI_Barrier(comm1)  MPI_Barrier(comm2)              MPI_Barrier(comm1)
MPI_Barrier(comm2)

is perfectly legal, and should work.
(Suppose that the threads do not execute concurrently: thread 0.0 and 1.1
start.  At this point both threads are blocked and cannot continue.  But
"Blocking MPI calls will block the calling thread only".  Thus, 0.1, and
1.0 can start executing.  At this point, matching calls occurred at both
processes and the collective calls must complete, according to the usual
MPI progress rule.)

Similarly a collective call on a window can be concurrent with a collective
call with a communicator, and the code should work -- the argument is same
as in my simpler example.

 If Romio uses the user provided communicator to synchronize file accesses,
then the implementation is incorrect, since it may lead to illegal code,
where concurrent threads issue collective calls on THE SAME communicator in
the worng order.  Besides, such an implementation violates a frequently
reiterated rule of good MPI design: if one develops a collective library,
then such a library should use private communicators for its internal
communications, to avoid races.  The recommended approach would be to cache
this private communicator with the window object.


Marc Snir
Senior Manager, Scalable Parallel Systems
IBM T J Watson Research Center, PO Box 218, Yorktown Heights 10598
Tel: 914 945 3204 (862 3204) Fax: 914 945 4425 (862 44245)
URL: http://www.research.ibm.com/people/s/snir


......................
Consider scenario S1 below, which illustrates this thread-safety issue as
it affects the ROMIO MPI-2 I/O layered implementation.

ROMIO function MPI_File_open()  calls MPI_Allreduce() using the
communicator
passed by the user into MPI_File_open.    Suppose the user had another
thread
executing an MPI_Allreduce() collective operation on the same communicator.

If a race condition allows the threads to execute in different orders,
we would get an incorrect result:

          Scenario S1
          -----------

     |  Process 0                       |       Process 1
     |  ---------                       |       ---------
     |                                  |
Time |  thread A calls MPI_Allreduce    |       thread C calls
MPI_Allreduce
 |   |  via MPI_File_open               |
 |   |                                  |
 |   |  thread B calls MPI_Allreduce    |       thread D calls
MPI_Allreduce
 |   |                                  |       via MPI_File_open
 V   |                                  |


Under interpretation #1, you could say that the user needs to ensure
that all threads issuing any collective calls on the same communicator
must be properly ordered by the user.  With this interpretation, scenario
S1 would be erroneous and the implementation wouldn't need to deal with
the matching up of the collective calls on multiple threads.

Notice that under both interpretations, a scenario like S2 should
be erroneous because the same collective function is called by
the two threads.

                Scenario S2
                -----------

     |  Process 0                       |       Process 1
     |  ---------                       |       ---------
     |                                  |
Time |  thread A calls MPI_Allreduce    |       thread C calls
MPI_Allreduce
 |   |  for MPI_MAX operation           |       for MPI_SUM operation
 |   |                                  |
 |   |  thread B calls MPI_Allreduce    |       thread D calls
MPI_Allreduce
 |   |  for MPI_SUM operation           |       for MPI_MAX operation
 V   |                                  |



Thanks for any opinions or recollections of forum discussions on this
matter.


Karl Feind                                    E-Mail: kaf@sgi.com
Silicon Graphics                              Phone:  612/683-5673
655F Lone Oak Drive                           Fax:    612/683-5276
Eagan, MN  55121






From mpi-comm-human@mcs.anl.gov Mon Nov 16 17:34:14 1998
Return-Path: <mpi-comm-human@mcs.anl.gov>
Received: from antares.mcs.anl.gov by netlib2.cs.utk.edu with ESMTP (cf v2.9t-netlib)
	id RAA20287; Mon, 16 Nov 1998 17:34:13 -0500
Received: (from listserv@localhost) by antares.mcs.anl.gov (8.6.10/8.6.10)
	id QAA05442 for mpi-comm-out; Mon, 16 Nov 1998 16:23:08 -0600
Received: from smtp4.ny.us.ibm.COM (smtp4.ny.us.ibm.com [198.133.22.43]) by antares.mcs.anl.gov (8.6.10/8.6.10)  with ESMTP
	id PAA03096 for <mpi-comm@mcs.anl.gov>; Mon, 16 Nov 1998 15:33:25 -0600
From: snir@us.ibm.com
Received: from northrelay01.pok.ibm.com (northrelay01.pok.ibm.com [9.117.200.21])
	by smtp4.ny.us.ibm.COM (8.8.7/8.8.7) with ESMTP id QAA46590;
	Mon, 16 Nov 1998 16:19:52 -0500
Received: from us.ibm.com (d51mta03.pok.ibm.com [9.117.200.31])
	by northrelay01.pok.ibm.com (8.8.7/NCO v1.2) with SMTP id QAA106110;
	Mon, 16 Nov 1998 16:32:48 -0500
Received: by us.ibm.com(Lotus SMTP MTA Internal build v4.6.2  (651.2 6-10-1998))  id 852566BE.007659B2 ; Mon, 16 Nov 1998 16:32:41 -0500
X-Lotus-FromDomain: IBMUS
To: Karl Feind <kaf@sgi.com>
cc: mpi-comm@mcs.anl.gov
Message-ID: <852566BE.0076591C.00@us.ibm.com>
Date: Mon, 16 Nov 1998 16:22:59 -0500
Subject: Re: MPI-2 thread safety and collectives
Mime-Version: 1.0
Content-type: text/plain; charset=us-ascii
Content-Disposition: inline
Sender: owner-mpi-core@mcs.anl.gov
Precedence: bulk


The MPI2 standards specifies:  "matching of collective calls on a
communicator, window or file handle is done according to the order in which
the call are issued on each process.  If concurrent threads issue such
calls on the same communicator, window or file handle, it is up to the user
to ensure that the call are correctly ordered, using interthread
communication. "   The text speaks of calls done on the same object
(communicator, file,, or window), not on calls done on distinct objects.
A code of the form

                  Process 0
Process 1
thread 0.0                          thread 0.1
thread 1.0                           thread 1.1
MPI_Barrier(comm1)  MPI_Barrier(comm2)              MPI_Barrier(comm1)
MPI_Barrier(comm2)

is perfectly legal, and should work.
(Suppose that the threads do not execute concurrently: thread 0.0 and 1.1
start.  At this point both threads are blocked and cannot continue.  But
"Blocking MPI calls will block the calling thread only".  Thus, 0.1, and
1.0 can start executing.  At this point, matching calls occurred at both
processes and the collective calls must complete, according to the usual
MPI progress rule.)

Similarly a collective call on a window can be concurrent with a collective
call with a communicator, and the code should work -- the argument is same
as in my simpler example.

 If Romio uses the user provided communicator to synchronize file accesses,
then the implementation is incorrect, since it may lead to illegal code,
where concurrent threads issue collective calls on THE SAME communicator in
the worng order.  Besides, such an implementation violates a frequently
reiterated rule of good MPI design: if one develops a collective library,
then such a library should use private communicators for its internal
communications, to avoid races.  The recommended approach would be to cache
this private communicator with the window object.


Marc Snir
Senior Manager, Scalable Parallel Systems
IBM T J Watson Research Center, PO Box 218, Yorktown Heights 10598
Tel: 914 945 3204 (862 3204) Fax: 914 945 4425 (862 44245)
URL: http://www.research.ibm.com/people/s/snir


......................
Consider scenario S1 below, which illustrates this thread-safety issue as
it affects the ROMIO MPI-2 I/O layered implementation.

ROMIO function MPI_File_open()  calls MPI_Allreduce() using the
communicator
passed by the user into MPI_File_open.    Suppose the user had another
thread
executing an MPI_Allreduce() collective operation on the same communicator.

If a race condition allows the threads to execute in different orders,
we would get an incorrect result:

          Scenario S1
          -----------

     |  Process 0                       |       Process 1
     |  ---------                       |       ---------
     |                                  |
Time |  thread A calls MPI_Allreduce    |       thread C calls
MPI_Allreduce
 |   |  via MPI_File_open               |
 |   |                                  |
 |   |  thread B calls MPI_Allreduce    |       thread D calls
MPI_Allreduce
 |   |                                  |       via MPI_File_open
 V   |                                  |


Under interpretation #1, you could say that the user needs to ensure
that all threads issuing any collective calls on the same communicator
must be properly ordered by the user.  With this interpretation, scenario
S1 would be erroneous and the implementation wouldn't need to deal with
the matching up of the collective calls on multiple threads.

Notice that under both interpretations, a scenario like S2 should
be erroneous because the same collective function is called by
the two threads.

                Scenario S2
                -----------

     |  Process 0                       |       Process 1
     |  ---------                       |       ---------
     |                                  |
Time |  thread A calls MPI_Allreduce    |       thread C calls
MPI_Allreduce
 |   |  for MPI_MAX operation           |       for MPI_SUM operation
 |   |                                  |
 |   |  thread B calls MPI_Allreduce    |       thread D calls
MPI_Allreduce
 |   |  for MPI_SUM operation           |       for MPI_MAX operation
 V   |                                  |



Thanks for any opinions or recollections of forum discussions on this
matter.


Karl Feind                                    E-Mail: kaf@sgi.com
Silicon Graphics                              Phone:  612/683-5673
655F Lone Oak Drive                           Fax:    612/683-5276
Eagan, MN  55121






From mpi-comm-human@mcs.anl.gov Sun Feb 28 14:21:23 1999
Return-Path: <mpi-comm-human@mcs.anl.gov>
Received: from antares.mcs.anl.gov (mcs.anl.gov [140.221.9.6]) 
           by netlib2.cs.utk.edu with ESMTP (cf v2.9t-netlib)
	   id OAA03687; Sun, 28 Feb 1999 14:21:22 -0500
Received: (from listserv@localhost) by antares.mcs.anl.gov (8.6.10/8.6.10)
	id NAA03183 for mpi-comm-out; Sun, 28 Feb 1999 13:14:12 -0600
Received: from miller.cs.uwm.edu (fethiye@miller.cs.uwm.edu [129.89.143.22]) by antares.mcs.anl.gov (8.6.10/8.6.10)  with ESMTP
	id NAA03178 for <mpi-comm@mcs.anl.gov>; Sun, 28 Feb 1999 13:14:06 -0600
Received: from localhost (fethiye@localhost)
	by miller.cs.uwm.edu (8.9.1a/8.9.1a) with SMTP id NAA24170
	for <mpi-comm@mcs.anl.gov>; Sun, 28 Feb 1999 13:14:04 -0600 (CST)
Date: Sun, 28 Feb 1999 13:14:02 -0600 (CST)
From: Fethiye Akbulut <fethiye@miller.cs.uwm.edu>
To: mpi-comm@mcs.anl.gov
Subject: MPI_Abort
Message-ID: <Pine.OSF.4.02.9902281309120.23710-100000@miller.cs.uwm.edu>
MIME-Version: 1.0
Content-Type: TEXT/PLAIN; charset=US-ASCII
Sender: owner-mpi-core@mcs.anl.gov
Precedence: bulk

Hi all,

I am so new with MPI and not so sure if this is the right forum to ask
questions about the difficulties I am facing with MPI, but here comes one:

I have several processors competing to finish a job. All I want to do is
to kill the other processes when one is done. Yes, I know MPI_Abort would
do that, and it really kills but it also generates all the error messages.
So, is there another way of doing this? Or, is there a way not to show
these error messages generated?

Also, what about the error_code part of MPI_Abort? Is there any site which
gives a listing of which integer correspond to which kind of `error'
generated?

Thanks,
Fethiye


From mpi-comm-human@mcs.anl.gov Sun Feb 28 16:10:26 1999
Return-Path: <mpi-comm-human@mcs.anl.gov>
Received: from antares.mcs.anl.gov (mcs.anl.gov [140.221.9.6]) 
           by netlib2.cs.utk.edu with ESMTP (cf v2.9t-netlib)
	   id QAA06018; Sun, 28 Feb 1999 16:10:25 -0500
Received: (from listserv@localhost) by antares.mcs.anl.gov (8.6.10/8.6.10)
	id PAA04707 for mpi-comm-out; Sun, 28 Feb 1999 15:07:09 -0600
Received: from george.lbl.gov (george.lbl.gov [131.243.2.12]) by antares.mcs.anl.gov (8.6.10/8.6.10)  with ESMTP
	id PAA04702 for <mpi-comm@mcs.anl.gov>; Sun, 28 Feb 1999 15:07:03 -0600
Received: from localhost (wcs@localhost)
	by george.lbl.gov (8.9.2/8.9.2) with SMTP id NAA14446;
	Sun, 28 Feb 1999 13:06:56 -0800 (PST)
X-Authentication-Warning: george.lbl.gov: wcs owned process doing -bs
Date: Sun, 28 Feb 1999 13:06:55 -0800 (PST)
From: Bill Saphir <wcs@nersc.gov>
X-Sender: wcs@george.lbl.gov
To: Fethiye Akbulut <fethiye@miller.cs.uwm.edu>
cc: mpi-comm@mcs.anl.gov
Subject: Re: MPI_Abort
In-Reply-To: <Pine.OSF.4.02.9902281309120.23710-100000@miller.cs.uwm.edu>
Message-ID: <Pine.GSO.4.02A.9902281239090.14240-100000@george.lbl.gov>
MIME-Version: 1.0
Content-Type: TEXT/PLAIN; charset=US-ASCII
Sender: owner-mpi-core@mcs.anl.gov
Precedence: bulk




On Sun, 28 Feb 1999, Fethiye Akbulut wrote:

> Hi all,
> 
> I am so new with MPI and not so sure if this is the right forum to ask
> questions about the difficulties I am facing with MPI, but here comes one:
> 
> I have several processors competing to finish a job. All I want to do is
> to kill the other processes when one is done. Yes, I know MPI_Abort would
> do that, and it really kills but it also generates all the error messages.
> So, is there another way of doing this? Or, is there a way not to show
> these error messages generated?

No. 

The general rule in MPI is that operations are cooperative.  That is,
one process cannot do something to another without the explicit
cooperation of the other process. This both improves performance and
eliminates race conditions. The "MPI" way of shutting down is for all
processes to call MPI_Finalize() and exit. In your case, the process
that "wins" would need to send a message to the others to enable
cooperative shutdown, and all processes would need to poll. 
Admittedly not pretty. 

As for not showing the error messages, the standard is silent. It would
be possible for an implementation to decide not to show an error
message, or to not show an error message for certain error codes, but
this would be implementation dependent.

> Also, what about the error_code part of MPI_Abort? Is there any site which
> gives a listing of which integer correspond to which kind of `error'
> generated?

The code can be anything you want. I don't believe this code is
necessarily related to error codes returned by MPI routines, as
described in section 7.3 of the standard, "Error codes and classes", at
http://www.mpi-forum.org/docs/mpi-11-html/node149.html#Node149.

Bill




From mpi-comm-human@mcs.anl.gov Mon Mar  1 07:19:41 1999
Return-Path: <mpi-comm-human@mcs.anl.gov>
Received: from antares.mcs.anl.gov (mcs.anl.gov [140.221.9.6]) 
           by netlib2.cs.utk.edu with ESMTP (cf v2.9t-netlib)
	   id HAA23487; Mon, 1 Mar 1999 07:19:39 -0500
Received: (from listserv@localhost) by antares.mcs.anl.gov (8.6.10/8.6.10)
	id FAA12353 for mpi-comm-out; Mon, 1 Mar 1999 05:34:17 -0600
Received: from marraco.udl.es (marraco.udl.es [193.144.8.14]) by antares.mcs.anl.gov (8.6.10/8.6.10)  with ESMTP
	id FAA12244 for <mpi-comm@mcs.anl.gov>; Mon, 1 Mar 1999 05:24:20 -0600
Received: from eup.udl.es (fermat.udl.net [10.50.54.28]) by marraco.udl.es (8.8.5/8.8.5) with SMTP id MAA17460 for <mpi-comm@mcs.anl.gov>; Mon, 1 Mar 1999 12:19:14 -0100 (GMT)
Received: from alumnes.eup.udl.es by eup.udl.es (SMI-8.6/SMI-SVR4)
	id MAA16038; Mon, 1 Mar 1999 12:22:22 +0100
Received: by alumnes.eup.udl.es (SMI-8.6/SMI-SVR4)
	id MAA25398; Mon, 1 Mar 1999 12:15:36 +0100
Date: Mon, 1 Mar 1999 12:15:36 +0100
From: d4373174@alumnes.eup.udl.es (Ferran Eloi Gutierrez Martos)
Message-Id: <199903011115.MAA25398@alumnes.eup.udl.es>
To: mpi-comm@mcs.anl.gov
Subject: Having problems with LAM under LINUX
Content-Type: X-sun-attachment
Sender: owner-mpi-core@mcs.anl.gov
Precedence: bulk

----------
X-Sun-Data-Type: text
X-Sun-Data-Description: text
X-Sun-Data-Name: text
X-Sun-Charset: us-ascii
X-Sun-Content-Lines: 44

Hi all:

My name is Ferran

I am new with MPI LAM and I have not any problems with mpich, but with LAM I can't execute:
lamboot.

My problem is:

It seems that when I install LAM  6.1 (under Linux RedHat 5.2) the PATH is not correctely set.

The steps that I follow to install are:

(untar the file into /home/arqui/lam61)
tar xvf lam61-patch.tar


First I apply the patches with : 
 cat lam61-patch[0-9][0-9] | patch -p0

Next I create the symbolic link Config/config pointing config.linux.ix86 with:
ln -s config.linux.ix86 config

The I edit config and I set the variable HOME = /home/arqui/lam61
(and I save config)

After I do:

make >& LOG &




And the when I try to run lamboot it falls, it seems that paths doesn't set.
And hcc falls, and recon falls, and all falls.



Well , I attach my LOG in this mail.


Thank you.

Ferran Eloi
----------
X-Sun-Data-Type: default
X-Sun-Data-Description: default
X-Sun-Data-Name: LOG
X-Sun-Encoding-Info: uuencode
X-Sun-Content-Lines: 2448

begin 600 LOG
M<VAA<F4O:#H*;6%K95LQ73H@16YT97)I;F<@9&ER96-T;W)Y(& O:&]M92]A
M<G%U:2]L86TV,2]S:&%R92]H)PIM86ME6S%=.B!.;W1H:6YG('1O(&)E(&1O
M;F4@9F]R(&!C;&5A;B<N"FUA:V5;,5TZ($QE879I;F<@9&ER96-T;W)Y(& O
M:&]M92]A<G%U:2]L86TV,2]S:&%R92]H)PIL:6(O;W1B+6]B:CH*;6%K95LQ
M73H@16YT97)I;F<@9&ER96-T;W)Y(& O:&]M92]A<G%U:2]L86TV,2]L:6(O
M;W1B+6]B:B<*"6%R9W,Z"FUA:V5;,ETZ($5N=&5R:6YG(&1I<F5C=&]R>2!@
M+VAO;64O87)Q=6DO;&%M-C$O;&EB+V]T8BUO8FHO87)G<R<*+V)I;B]R;2 M
M9B!A;&Q?87)G=BYO(&%L;%]O<'0N;R!D;U]A<F=S+F\@;F1I7W!A<G-E+F\@
M;F1I7W)E<V]L=F4N;R!P87)S95]I9"YO('!D:5]P87)S92YO("!L:6)A<F=S
M+F$*;6%K95LR73H@3&5A=FEN9R!D:7)E8W1O<GD@8"]H;VUE+V%R<75I+VQA
M;38Q+VQI8B]O=&(M;V)J+V%R9W,G"@EM<&DZ"FUA:V5;,ETZ($5N=&5R:6YG
M(&1I<F5C=&]R>2!@+VAO;64O87)Q=6DO;&%M-C$O;&EB+V]T8BUO8FHO;7!I
M)PHO8FEN+W)M("UF(')P:2YS:&TN;R!T8W N;&]W+F\@<VAM+FQO=RYO('-H
M;2YS>7-V+F\@<WES=G-L;W N;R!A8F]R="YO(&%C8V5P="YO(&%D9')E<W,N
M;R!A;&QG871H97(N;R!A;&QG871H97)V+F\@86QL<F5D=6-E+F\@86QL=&]A
M;&PN;R!A;&QT;V%L;'8N;R!A='1R9&5L+F\@871T<F=E="YO(&%T=')P=70N
M;R!B87)R:65R+F\@8F-A<W0N;R!B<V5N9"YO(&)S96YD:6YI="YO(&)U9F%T
M=&%C:"YO(&)U9F1E=&%C:"YO(&,R8V)U9BYO(&-A;F-E;"YO(&-A<G1C;V]R
M9',N;R!C87)T8W)E871E+F\@8V%R=&1I;6=E="YO(&-A<G1G970N;R!C87)T
M;6%P+F\@8V%R=')A;FLN;R!C87)T<VAI9G0N;R!C87)T<W5B+F\@8V-M<"YO
M(&-C<F5A=&4N;R!C9&ES8V]N;F5C="YO(&-D=7 N;R!C9G)E92YO(&-G<F]U
M<"YO(&-O;FYE8W0N;R!C<F%N:RYO(&-R9W)O=7 N;R!C<G-I>F4N;R!C<VEZ
M92YO(&-S<&QI="YO(&-T97-T:6YT97(N;R!D:6US8W)E871E+F\@9'5P9FXN
M;R!E<G)C;&%S<RYO(&5R<F-R96%T92YO(&5R<F9R964N;R!E<G)G970N;R!E
M<G)S970N;R!E<G)S=')I;F<N;R!F:6YA;&EZ92YO(&=A=&AE<BYO(&=A=&AE
M<G8N;R!G8VUP+F\@9V1I9F8N;R!G971C;W5N="YO(&=E=&5L96TN;R!G971P
M<F]C;F%M92YO(&=E='9E<G-I;VXN;R!G97AC;"YO(&=F<F5E+F\@9VEN8VPN
M;R!G:6YT97(N;R!G<F%N:RYO(&=R87!H8W)E871E+F\@9W)A<&AD:6US9V5T
M+F\@9W)A<&AG970N;R!G<F%P:&UA<"YO(&=R87!H;F)R+F\@9W)A<&AN8G)C
M;W5N="YO(&=R97AC;"YO(&=R:6YC;"YO(&=S:7IE+F\@9W1R86YK<RYO(&=U
M;FEO;BYO(&EB<V5N9"YO(&EC8W)E871E+F\@:6-M97)G92YO(&EN9F]C<F5A
M=&4N;R!I;F9O9&5L+F\@:6YF;V1U<"YO(&EN9F]F<F5E+F\@:6YF;V=E="YO
M(&EN9F]G971N:V5Y<RYO(&EN9F]G971N=&@N;R!I;F9O9V5T=FQE;BYO(&EN
M9F]S970N;R!I;FET+F\@:6YI=&5D+F\@:7!R;V)E+F\@:7)E8W8N;R!I<G-E
M;F0N;R!I<V5N9"YO(&ES<V5N9"YO(&ME>6-R96%T92YO(&ME>69R964N;R!L
M86UA='1R+F\@;&%M8G5F+F\@;&%M8VED+F\@;&%M8VQO8VMS+F\@;&%M8V]M
M;2YO(&QA;61E9F5R<BYO(&QA;61T>7!E+F\@;&%M9F%U;'0N;R!L86UI;FET
M+F\@;&%M:6YI=&5D+F\@;&%M;6ES8RYO(&QA;7!A8VLN;R!L86UP;W)T<RYO
M(&QA;7!R;V-S+F\@;&%M<F5D=6-E+F\@;&%M<F5Q<RYO(&QA;7-E;F0N;R!L
M86UT97-T+F\@;&%M=')A8V4N;R!L86UU;G!A8VLN;R!L86UU<&1O=VXN;R!M
M,FPN;R!M<&EE=&,N;R!M<&EL7VED+F\@;7!I;%]S:6=N86PN;R!M<&EL7W-P
M87=N+F\@;7!I;%]T<F%C92YO(&YA;65G970N;R!N86UE<'5B+F\@;F%M975N
M<'5B+F\@;W!C<F5A=&4N;R!O<&9R964N;R!P86-K+F\@<&%C:W-I>F4N;R!P
M8V]N=')O;"YO('!O<G1C;&]S92YO('!O<G1O<&5N+F\@<')O8F4N;R!R96-V
M+F\@<F5C=FEN:70N;R!R961U8V4N;R!R961U8V5S8V%T=&5R+F\@<F5Q9G)E
M92YO(')P:2YL86UD+F\@<G-E;F0N;R!R<V5N9&EN:70N;R!S8V%N+F\@<V-A
M='1E<BYO('-C871T97)V+F\@<V5N9"YO('-E;F1I;FET+F\@<V5N9')E8W8N
M;R!S96YD<F5C=G)E<"YO('-P87=N+F\@<W!A=VYM=6QT+F\@<W-E;F0N;R!S
M<V5N9&EN:70N;R!S=&%R="YO('-T87)T86QL+F\@=&-O;6UI="YO('1C;VYT
M:6<N;R!T97-T+F\@=&5S=&%L;"YO('1E<W1A;GDN;R!T97-T8V%N8V5L+F\@
M=&5S='-O;64N;R!T97AT96YT+F\@=&9R964N;R!T:&EN9&5X+F\@=&AV96-T
M;W(N;R!T:6YD97@N;R!T;&(N;R!T;W!O=&5S="YO('1S:7IE+F\@='-T<G5C
M="YO('1U8BYO('1V96-T;W(N;R!U;G!A8VLN;R!W86ET+F\@=V%I=&%L;"YO
M('=A:71A;GDN;R!W86ET<V]M92YO('=T:6-K+F\@=W1I;64N;R!-4$DN;R!A
M8F]R=%]F+F\@86-C97!T7V8N;R!A9&1R97-S7V8N;R!A;&QG871H97)?9BYO
M(&%L;&=A=&AE<G9?9BYO(&%L;')E9'5C95]F+F\@86QL=&]A;&Q?9BYO(&%L
M;'1O86QL=E]F+F\@871T<F1E;%]F+F\@871T<F=E=%]F+F\@871T<G!U=%]F
M+F\@8F%R<FEE<E]F+F\@8F-A<W1?9BYO(&)S96YD7V8N;R!B<V5N9&EN:71?
M9BYO(&)U9F%T=&%C:%]F+F\@8G5F9&5T86-H7V8N;R!C86YC96Q?9BYO(&-A
M<G1C;V]R9'-?9BYO(&-A<G1C<F5A=&5?9BYO(&-A<G1D:6UG971?9BYO(&-A
M<G1G971?9BYO(&-A<G1M87!?9BYO(&-A<G1R86YK7V8N;R!C87)T<VAI9G1?
M9BYO(&-A<G1S=6)?9BYO(&-C;7!?9BYO(&-C<F5A=&5?9BYO(&-D:7-C;VYN
M96-T7V8N;R!C9'5P7V8N;R!C9G)E95]F+F\@8V=R;W5P7V8N;R!C;VYN96-T
M7V8N;R!C<F%N:U]F+F\@8W)G<F]U<%]F+F\@8W)S:7IE7V8N;R!C<VEZ95]F
M+F\@8W-P;&ET7V8N;R!C=&5S=&EN=&5R7V8N;R!D:6US8W)E871E7V8N;R!D
M=7!F;E]F+F\@97)R8VQA<W-?9BYO(&5R<F-R96%T95]F+F\@97)R9G)E95]F
M+F\@97)R9V5T7V8N;R!E<G)S971?9BYO(&5R<G-T<FEN9U]F+F\@9FEN86QI
M>F5?9BYO(&=A=&AE<E]F+F\@9V%T:&5R=E]F+F\@9V-M<%]F+F\@9V1I9F9?
M9BYO(&=E=&-O=6YT7V8N;R!G971E;&5M7V8N;R!G971P<F]C;F%M95]F+F\@
M9V5T=F5R<VEO;E]F+F\@9V5X8VQ?9BYO(&=F<F5E7V8N;R!G:6YC;%]F+F\@
M9VEN=&5R7V8N;R!G<F%N:U]F+F\@9W)A<&AC<F5A=&5?9BYO(&=R87!H9&EM
M<V=E=%]F+F\@9W)A<&AG971?9BYO(&=R87!H;6%P7V8N;R!G<F%P:&YB<E]F
M+F\@9W)A<&AN8G)C;W5N=%]F+F\@9W)E>&-L7V8N;R!G<FEN8VQ?9BYO(&=S
M:7IE7V8N;R!G=')A;FMS7V8N;R!G=6YI;VY?9BYO(&EB<V5N9%]F+F\@:6-C
M<F5A=&5?9BYO(&EC;65R9V5?9BYO(&EN9F]C<F5A=&5?9BYO(&EN9F]D96Q?
M9BYO(&EN9F]D=7!?9BYO(&EN9F]F<F5E7V8N;R!I;F9O9V5T7V8N;R!I;F9O
M9V5T;FME>7-?9BYO(&EN9F]G971N=&A?9BYO(&EN9F]G971V;&5N7V8N;R!I
M;F9O<V5T7V8N;R!I;FET7V8N;R!I;FET961?9BYO(&EP<F]B95]F+F\@:7)E
M8W9?9BYO(&ER<V5N9%]F+F\@:7-E;F1?9BYO(&ES<V5N9%]F+F\@:V5Y8W)E
M871E7V8N;R!K97EF<F5E7V8N;R!M<&EL7VED7V8N;R!M<&EL7W-I9VYA;%]F
M+F\@;7!I;%]S<&%W;E]F+F\@;7!I;%]T<F%C95]F+F\@;F%M96=E=%]F+F\@
M;F%M97!U8E]F+F\@;F%M975N<'5B7V8N;R!O<&-R96%T95]F+F\@;W!F<F5E
M7V8N;R!P86-K7V8N;R!P86-K<VEZ95]F+F\@<&-O;G1R;VQ?9BYO('!O<G1C
M;&]S95]F+F\@<&]R=&]P96Y?9BYO('!R;V)E7V8N;R!R96-V7V8N;R!R96-V
M:6YI=%]F+F\@<F5D=6-E7V8N;R!R961U8V5S8V%T=&5R7V8N;R!R97%F<F5E
M7V8N;R!R<V5N9%]F+F\@<G-E;F1I;FET7V8N;R!S8V%N7V8N;R!S8V%T=&5R
M7V8N;R!S8V%T=&5R=E]F+F\@<V5N9%]F+F\@<V5N9&EN:71?9BYO('-E;F1R
M96-V7V8N;R!S96YD<F5C=G)E<%]F+F\@<W!A=VY?9BYO('-P87=N;75L=%]F
M+F\@<W-E;F1?9BYO('-S96YD:6YI=%]F+F\@<W1A<G1?9BYO('-T87)T86QL
M7V8N;R!T8V]M;6ET7V8N;R!T8V]N=&EG7V8N;R!T97-T7V8N;R!T97-T86QL
M7V8N;R!T97-T86YY7V8N;R!T97-T8V%N8V5L7V8N;R!T97-T<V]M95]F+F\@
M=&5X=&5N=%]F+F\@=&9R965?9BYO('1H:6YD97A?9BYO('1H=F5C=&]R7V8N
M;R!T:6YD97A?9BYO('1L8E]F+F\@=&]P;W1E<W1?9BYO('1S:7IE7V8N;R!T
M<W1R=6-T7V8N;R!T=6)?9BYO('1V96-T;W)?9BYO('5N<&%C:U]F+F\@=V%I
M=%]F+F\@=V%I=&%L;%]F+F\@=V%I=&%N>5]F+F\@=V%I='-O;65?9BYO('=T
M:6-K7V8N;R!W=&EM95]F+F\@;&EB;7!I+F$*;6%K95LR73H@3&5A=FEN9R!D
M:7)E8W1O<GD@8"]H;VUE+V%R<75I+VQA;38Q+VQI8B]O=&(M;V)J+VUP:2<*
M"70Z"FUA:V5;,ETZ($5N=&5R:6YG(&1I<F5C=&]R>2!@+VAO;64O87)Q=6DO
M;&%M-C$O;&EB+V]T8BUO8FHO="<*"0EE=&,Z"FUA:V5;,UTZ($5N=&5R:6YG
M(&1I<F5C=&]R>2!@+VAO;64O87)Q=6DO;&%M-C$O;&EB+V]T8BUO8FHO="]E
M=&,G"B]B:6XO<FT@+68@871O<RYO(&)L:W1Y<&4N;R!C;VUB:6YE+F\@9F%I
M;"YO(&9E=RYO(&8R8W-T<FEN9RYO(&=E=&EN971A9&1R+F\@9V5T=V]R:V1I
M<BYO(&EE964N;R!I=&]A+F\@:VEP<F]C+F\@;&%M=6YI>"YO(&QD=&EM97(N
M;R!L:6]A='1A8V@N;R!L<&%T=&%C:"YO(&QP9&5T86-H+F\@;6EC<F]S;&5E
M<"YO(&UR=RYO(&YM<V=C;VYV+F\@;F]D97-P:6XN;R!P86YI8RYO('!A=&AS
M96%R8V@N;R!P<FEM92YO(')E=BYO(')T<G-T;W)E+F\@<W1O:2YO('1E<G)O
M<BYO('1T:6UE+F\@=F-T86)L92YO(%0N;R!S;V-K970N;R!S<F9D+F\@;&EB
M971C+F$*;6%K95LS73H@3&5A=FEN9R!D:7)E8W1O<GD@8"]H;VUE+V%R<75I
M+VQA;38Q+VQI8B]O=&(M;V)J+W0O971C)PH)"69R97$Z"FUA:V5;,UTZ($5N
M=&5R:6YG(&1I<F5C=&]R>2!@+VAO;64O87)Q=6DO;&%M-C$O;&EB+V]T8BUO
M8FHO="]F<F5Q)PHO8FEN+W)M("UF(')F871E>&ET+F\@<F9A=7@N;R!R9F-L
M;W-E+F\@<F9L<V5E:RYO(')F;W!E;BYO(')F<F5A9"YO(')F<VEM<&QE>"YO
M(')F<W1A="YO(')F=W)I=&4N;R!L:6)F<F5Q+F$*;6%K95LS73H@3&5A=FEN
M9R!D:7)E8W1O<GD@8"]H;VUE+V%R<75I+VQA;38Q+VQI8B]O=&(M;V)J+W0O
M9G)E<2<*"0EK<F5Q.@IM86ME6S-=.B!%;G1E<FEN9R!D:7)E8W1O<GD@8"]H
M;VUE+V%R<75I+VQA;38Q+VQI8B]O=&(M;V)J+W0O:W)E<2<*+V)I;B]R;2 M
M9B!C;&EE;G1I;RYO(&-O=71E<BYO(&MC<F5A=&4N;R!K871T86-H+F\@:V1E
M=&%C:"YO(&MD;V]M+F\@:V5N=&5R+F\@:V5X:70N;R!K:6QL+F\@:VEN:70N
M;R!K<F5C=BYO(&MS96YD+F\@:W-I9VYA;"YO(&MS<BYO(&MS=&%T92YO(&MT
M<F%C92YO(&QI8FMR97$N80IM86ME6S-=.B!,96%V:6YG(&1I<F5C=&]R>2!@
M+VAO;64O87)Q=6DO;&%M-C$O;&EB+V]T8BUO8FHO="]K<F5Q)PH)"6YR97$Z
M"FUA:V5;,UTZ($5N=&5R:6YG(&1I<F5C=&]R>2!@+VAO;64O87)Q=6DO;&%M
M-C$O;&EB+V]T8BUO8FHO="]N<F5Q)PHO8FEN+W)M("UF(&)F:7!R;V)E+F\@
M8F9I<V5L96-T+F\@8F9R96-V+F\@8F9S96QE8W0N;R!D<F5C=BYO(&1S96YD
M+F\@9'-F<BYO(&9R96-V+F\@9V5T;F5T+F\@9V5T<F5N="YO(&=E=&YO9&5S
M+F\@;G!R;V)E+F\@;G)E8W8N;R!N<V5N9"YO('!R96-V+F\@<'-E;F0N;R!T
M<F5C=BYO('1S96YD+F\@;&EB;G)E<2YA"FUA:V5;,UTZ($QE879I;F<@9&ER
M96-T;W)Y(& O:&]M92]A<G%U:2]L86TV,2]L:6(O;W1B+6]B:B]T+VYR97$G
M"@D)=&]O;',Z"FUA:V5;,UTZ($5N=&5R:6YG(&1I<F5C=&]R>2!@+VAO;64O
M87)Q=6DO;&%M-C$O;&EB+V]T8BUO8FHO="]T;V]L<R<*+V)I;B]R;2 M9B!A
M;&Q?:&%S:"YO(&%L;%]L:7-T+F\@86QL7W%U975E+F\@86QL7W-H87-H+F\@
M86QL7W-L:7-T+F\@86QL7W-Q=65U92YO(&QI8G1O;VQS+F$*;6%K95LS73H@
M3&5A=FEN9R!D:7)E8W1O<GD@8"]H;VUE+V%R<75I+VQA;38Q+VQI8B]O=&(M
M;V)J+W0O=&]O;',G"B]B:6XO<FT@+68@;&EB="YA"FUA:V5;,ETZ($QE879I
M;F<@9&ER96-T;W)Y(& O:&]M92]A<G%U:2]L86TV,2]L:6(O;W1B+6]B:B]T
M)PH)=')I;&QI=6TZ"FUA:V5;,ETZ($5N=&5R:6YG(&1I<F5C=&]R>2!@+VAO
M;64O87)Q=6DO;&%M-C$O;&EB+V]T8BUO8FHO=')I;&QI=6TG"B]B:6XO<FT@
M+68@87!P7VUG;70N;R!A<V-?<&%R<V4N;R!A<V-?<G5N+F\@87-C7W-C:&5D
M=6QE+F\@9V5T<VUA<G0N;R!G971W;W)K9&ER+F\@;&1O;&EN:W,N;R!L9F]P
M96YF9"YO(')B9G!A<FUS+F\@<F)F;&]O:RYO(')B9G-T871E+F\@<F)F<W=E
M97 N;R!R8F9S=V5E<#$N;R!R8F9W:7!E+F\@<F5C:&\N;R!R9FQA="YO(')F
M;&-L96%N+F\@<F9S=&%T92YO(')G970N;R!R;&]A9"YO(')P8W)E871E+F\@
M<G!D;V]M+F\@<G!G;RYO(')P;&]A9&=O+F\@<G!S<&%W;BYO(')P<W1A=&4N
M;R!R<'=A:70N;R!R<G-E=')E;G1S+F\@<G)S971S;6%R="YO(')T<F9G970N
M;R!R=')G970N;R!R=')N86UE+F\@<G1R<VEM<&QE>"YO(%1224PN;R!L:6)T
M<FEL;&EU;2YA"FUA:V5;,ETZ($QE879I;F<@9&ER96-T;W)Y(& O:&]M92]A
M<G%U:2]L86TV,2]L:6(O;W1B+6]B:B]T<FEL;&EU;2<*"71S=&1I;SH*;6%K
M95LR73H@16YT97)I;F<@9&ER96-T;W)Y(& O:&]M92]A<G%U:2]L86TV,2]L
M:6(O;W1B+6]B:B]T<W1D:6\G"B]B:6XO<FT@+68@7W1I;V(N;R!G971B=68N
M;R!I;VUA<"YO('1F8VQO<V4N;R!T9F1O<&5N+F\@=&9F;'5S:"YO('1F9V5T
M8RYO('1F9V5T<RYO('1F;W!E;BYO('1F<')I;G0N;R!T9G!U=&,N;R!T9G!U
M=',N;R!T9G)E860N;R!T9G-C86XN;R!T9G-E96LN;R!T9G=R:71E+F\@='!R
M:6YT+F\@='-C86XN;R!T<V5T8G5F+F\@;&EB='-T9&EO+F$*;6%K95LR73H@
M3&5A=FEN9R!D:7)E8W1O<GD@8"]H;VUE+V%R<75I+VQA;38Q+VQI8B]O=&(M
M;V)J+W1S=&1I;R<*;6%K95LQ73H@3&5A=FEN9R!D:7)E8W1O<GD@8"]H;VUE
M+V%R<75I+VQA;38Q+VQI8B]O=&(M;V)J)PIT;V]L<RUO8FHZ"FUA:V5;,5TZ
M($5N=&5R:6YG(&1I<F5C=&]R>2!@+VAO;64O87)Q=6DO;&%M-C$O=&]O;',M
M;V)J)PH):&)O;W0Z"FUA:V5;,ETZ($5N=&5R:6YG(&1I<F5C=&]R>2!@+VAO
M;64O87)Q=6DO;&%M-C$O=&]O;',M;V)J+VAB;V]T)PHO8FEN+W)M("UF(&AB
M;V]T+F\@<')O8U]S8VAE;6$N;R!H8F]O= IM86ME6S)=.B!,96%V:6YG(&1I
M<F5C=&]R>2!@+VAO;64O87)Q=6DO;&%M-C$O=&]O;',M;V)J+VAB;V]T)PH)
M:&-C.@IM86ME6S)=.B!%;G1E<FEN9R!D:7)E8W1O<GD@8"]H;VUE+V%R<75I
M+VQA;38Q+W1O;VQS+6]B:B]H8V,G"B]B:6XO<FT@+68@:&-C+F\@<')O8U]S
M8VAE;6$N;R!H8V,*;6%K95LR73H@3&5A=FEN9R!D:7)E8W1O<GD@8"]H;VUE
M+V%R<75I+VQA;38Q+W1O;VQS+6]B:B]H8V,G"@EH9C<W.@IM86ME6S)=.B!%
M;G1E<FEN9R!D:7)E8W1O<GD@8"]H;VUE+V%R<75I+VQA;38Q+W1O;VQS+6]B
M:B]H9C<W)PHO8FEN+W)M("UF(&AF-S<N;R!P<F]C7W-C:&5M82YO(&AF-S<*
M;6%K95LR73H@3&5A=FEN9R!D:7)E8W1O<GD@8"]H;VUE+V%R<75I+VQA;38Q
M+W1O;VQS+6]B:B]H9C<W)PH);&%M8F]O=#H*;6%K95LR73H@16YT97)I;F<@
M9&ER96-T;W)Y(& O:&]M92]A<G%U:2]L86TV,2]T;V]L<RUO8FHO;&%M8F]O
M="<*+V)I;B]R;2 M9B!B:&]S='!A<G-E+F\@8F]O='-O8VMI;RYO(&EN971E
M>&5C+F\@;&%M;F5T+F\@;&%M8F]O="YO(&QA;6)O;W1A9V5N="YO(&YO9&5S
M<&EN+F\@;&%M8F]O= IM86ME6S)=.B!,96%V:6YG(&1I<F5C=&]R>2!@+VAO
M;64O87)Q=6DO;&%M-C$O=&]O;',M;V)J+VQA;6)O;W0G"@ER96-O;CH*;6%K
M95LR73H@16YT97)I;F<@9&ER96-T;W)Y(& O:&]M92]A<G%U:2]L86TV,2]T
M;V]L<RUO8FHO<F5C;VXG"B]B:6XO<FT@+68@8FAO<W1P87)S92YO(&EN971E
M>&5C+F\@;&%M;F5T+F\@<F5C;VXN;R!R96-O;@IM86ME6S)=.B!,96%V:6YG
M(&1I<F5C=&]R>2!@+VAO;64O87)Q=6DO;&%M-C$O=&]O;',M;V)J+W)E8V]N
M)PH)=&MI;&PZ"FUA:V5;,ETZ($5N=&5R:6YG(&1I<F5C=&]R>2!@+VAO;64O
M87)Q=6DO;&%M-C$O=&]O;',M;V)J+W1K:6QL)PHO8FEN+W)M("UF('1K:6QL
M+F\@<G!I+FUO<"YO('1K:6QL"FUA:V5;,ETZ($QE879I;F<@9&ER96-T;W)Y
M(& O:&]M92]A<G%U:2]L86TV,2]T;V]L<RUO8FHO=&MI;&PG"@EW:7!E.@IM
M86ME6S)=.B!%;G1E<FEN9R!D:7)E8W1O<GD@8"]H;VUE+V%R<75I+VQA;38Q
M+W1O;VQS+6]B:B]W:7!E)PHO8FEN+W)M("UF(&)H;W-T<&%R<V4N;R!I;F5T
M97AE8RYO(&QA;6YE="YO('=I<&4N;R!W:7!E"FUA:V5;,ETZ($QE879I;F<@
M9&ER96-T;W)Y(& O:&]M92]A<G%U:2]L86TV,2]T;V]L<RUO8FHO=VEP92<*
M;6%K95LQ73H@3&5A=FEN9R!D:7)E8W1O<GD@8"]H;VUE+V%R<75I+VQA;38Q
M+W1O;VQS+6]B:B<*;W1B+6]B:CH*;6%K95LQ73H@16YT97)I;F<@9&ER96-T
M;W)Y(& O:&]M92]A<G%U:2]L86TV,2]O=&(M;V)J)PH)8F9C=&PZ"FUA:V5;
M,ETZ($5N=&5R:6YG(&1I<F5C=&]R>2!@+VAO;64O87)Q=6DO;&%M-C$O;W1B
M+6]B:B]B9F-T;"<*+V)I;B]R;2 M9B!B9F-T;"YO(&)F8W1L"FUA:V5;,ETZ
M($QE879I;F<@9&ER96-T;W)Y(& O:&]M92]A<G%U:2]L86TV,2]O=&(M;V)J
M+V)F8W1L)PH)8F9S=&%T93H*;6%K95LR73H@16YT97)I;F<@9&ER96-T;W)Y
M(& O:&]M92]A<G%U:2]L86TV,2]O=&(M;V)J+V)F<W1A=&4G"B]B:6XO<FT@
M+68@8F9S=&%T92YO(&)F<W1A=&4*;6%K95LR73H@3&5A=FEN9R!D:7)E8W1O
M<GD@8"]H;VUE+V%R<75I+VQA;38Q+V]T8BUO8FHO8F9S=&%T92<*"61O;VTZ
M"FUA:V5;,ETZ($5N=&5R:6YG(&1I<F5C=&]R>2!@+VAO;64O87)Q=6DO;&%M
M-C$O;W1B+6]B:B]D;V]M)PHO8FEN+W)M("UF(&1O;VTN;R!D;V]M"FUA:V5;
M,ETZ($QE879I;F<@9&ER96-T;W)Y(& O:&]M92]A<G%U:2]L86TV,2]O=&(M
M;V)J+V1O;VTG"@EF8W1L.@IM86ME6S)=.B!%;G1E<FEN9R!D:7)E8W1O<GD@
M8"]H;VUE+V%R<75I+VQA;38Q+V]T8BUO8FHO9F-T;"<*+V)I;B]R;2 M9B!F
M8W1L+F\@9F-T; IM86ME6S)=.B!,96%V:6YG(&1I<F5C=&]R>2!@+VAO;64O
M87)Q=6DO;&%M-C$O;W1B+6]B:B]F8W1L)PH)9G-T871E.@IM86ME6S)=.B!%
M;G1E<FEN9R!D:7)E8W1O<GD@8"]H;VUE+V%R<75I+VQA;38Q+V]T8BUO8FHO
M9G-T871E)PHO8FEN+W)M("UF(&9S=&%T92YO(&9S=&%T90IM86ME6S)=.B!,
M96%V:6YG(&1I<F5C=&]R>2!@+VAO;64O87)Q=6DO;&%M-C$O;W1B+6]B:B]F
M<W1A=&4G"@EL86UC;&5A;CH*;6%K95LR73H@16YT97)I;F<@9&ER96-T;W)Y
M(& O:&]M92]A<G%U:2]L86TV,2]O=&(M;V)J+VQA;6-L96%N)PHO8FEN+W)M
M("UF(&QA;6-L96%N+F\@;F]D97-P:6XN;R!R<&DN;6]P+F\@;&%M8VQE86X*
M;6%K95LR73H@3&5A=FEN9R!D:7)E8W1O<GD@8"]H;VUE+V%R<75I+VQA;38Q
M+V]T8BUO8FHO;&%M8VQE86XG"@EL86UG<F]W.@IM86ME6S)=.B!%;G1E<FEN
M9R!D:7)E8W1O<GD@8"]H;VUE+V%R<75I+VQA;38Q+V]T8BUO8FHO;&%M9W)O
M=R<*+V)I;B]R;2 M9B!B;V]T<V]C:VEO+F\@:6YE=&5X96,N;R!L86UB;V]T
M86=E;G0N;R!L86UG<F]W+F\@;&%M9W)O=PIM86ME6S)=.B!,96%V:6YG(&1I
M<F5C=&]R>2!@+VAO;64O87)Q=6DO;&%M-C$O;W1B+6]B:B]L86UG<F]W)PH)
M;&%M<VAR:6YK.@IM86ME6S)=.B!%;G1E<FEN9R!D:7)E8W1O<GD@8"]H;VUE
M+V%R<75I+VQA;38Q+V]T8BUO8FHO;&%M<VAR:6YK)PHO8FEN+W)M("UF(&EN
M971E>&5C+F\@;&%M<VAR:6YK+F\@;&%M<VAR:6YK"FUA:V5;,ETZ($QE879I
M;F<@9&ER96-T;W)Y(& O:&]M92]A<G%U:2]L86TV,2]O=&(M;V)J+VQA;7-H
M<FEN:R<*"6QA;71R86-E.@IM86ME6S)=.B!%;G1E<FEN9R!D:7)E8W1O<GD@
M8"]H;VUE+V%R<75I+VQA;38Q+V]T8BUO8FHO;&%M=')A8V4G"B]B:6XO<FT@
M+68@;&%M=')A8V4N;R!T<F1R86EN7VUP:2YO(&QA;71R86-E"FUA:V5;,ETZ
M($QE879I;F<@9&ER96-T;W)Y(& O:&]M92]A<G%U:2]L86TV,2]O=&(M;V)J
M+VQA;71R86-E)PH);&]A9&=O.@IM86ME6S)=.B!%;G1E<FEN9R!D:7)E8W1O
M<GD@8"]H;VUE+V%R<75I+VQA;38Q+V]T8BUO8FHO;&]A9&=O)PHO8FEN+W)M
M("UF(&QO861G;RYO(&QO861G;PIM86ME6S)=.B!,96%V:6YG(&1I<F5C=&]R
M>2!@+VAO;64O87)Q=6DO;&%M-C$O;W1B+6]B:B]L;V%D9V\G"@EM<&EM<V<Z
M"FUA:V5;,ETZ($5N=&5R:6YG(&1I<F5C=&]R>2!@+VAO;64O87)Q=6DO;&%M
M-C$O;W1B+6]B:B]M<&EM<V<G"B]B:6XO<FT@+68@;7!I;7-G+F\@;7!I9F]R
M;6]U="YO(&UP:71R7V-O;2YO(&UP:71R7V1T>7!E+F\@;7!I=')?9'1P<FEN
M="YO(&UP:71R7V1A=&$N;R!M<&EM<V<*;6%K95LR73H@3&5A=FEN9R!D:7)E
M8W1O<GD@8"]H;VUE+V%R<75I+VQA;38Q+V]T8BUO8FHO;7!I;7-G)PH);7!I
M<G5N.@IM86ME6S)=.B!%;G1E<FEN9R!D:7)E8W1O<GD@8"]H;VUE+V%R<75I
M+VQA;38Q+V]T8BUO8FHO;7!I<G5N)PHO8FEN+W)M("UF(&UP:7)U;BYO(&UP
M:7)U;@IM86ME6S)=.B!,96%V:6YG(&1I<F5C=&]R>2!@+VAO;64O87)Q=6DO
M;&%M-C$O;W1B+6]B:B]M<&ER=6XG"@EM<&ET87-K.@IM86ME6S)=.B!%;G1E
M<FEN9R!D:7)E8W1O<GD@8"]H;VUE+V%R<75I+VQA;38Q+V]T8BUO8FHO;7!I
M=&%S:R<*+V)I;B]R;2 M9B!M<&ET87-K+F\@;7!I=')?8V]M+F\@;7!I=')?
M9'1Y<&4N;R!M<&ET<E]D='!R:6YT+F\@;7!I971C+F\@;7!I9F]R;6]U="YO
M(&UP:71A<VL*;6%K95LR73H@3&5A=FEN9R!D:7)E8W1O<GD@8"]H;VUE+V%R
M<75I+VQA;38Q+V]T8BUO8FHO;7!I=&%S:R<*"7-T871E.@IM86ME6S)=.B!%
M;G1E<FEN9R!D:7)E8W1O<GD@8"]H;VUE+V%R<75I+VQA;38Q+V]T8BUO8FHO
M<W1A=&4G"B]B:6XO<FT@+68@<W1A=&4N;R!S=&%T90IM86ME6S)=.B!,96%V
M:6YG(&1I<F5C=&]R>2!@+VAO;64O87)Q=6DO;&%M-C$O;W1B+6]B:B]S=&%T
M92<*"7-Y<SH*;6%K95LR73H@16YT97)I;F<@9&ER96-T;W)Y(& O:&]M92]A
M<G%U:2]L86TV,2]O=&(M;V)J+W-Y<R<*"0EL86UD.@IM86ME6S-=.B!%;G1E
M<FEN9R!D:7)E8W1O<GD@8"]H;VUE+V%R<75I+VQA;38Q+V]T8BUO8FHO<WES
M+VQA;60G"B]B:6XO<FT@+68@8V]U=&5R+F\@:V5R;F5L:6\N;R!K:6YN97(N
M;R!K:7!R;V,N;R!K:VEL;"YO(&MO=71E<BYO(')O=71E<BYO(')T9&EN:70N
M;&%M+F\@8G5F9F5R9"YO(&)O;W1S;V-K:6\N;R!D:5]B;V]T86=E;G0N;R!D
M:5]B;V]T8VUD+F\@9&E?=V%I="YI;G0N;R!D;&E?:6YE="YO(&1L;U]I;F5T
M+F\@9&]?;&]A9"YO(&1O7VEN='(N;R!D;U]W86ET+FEN="YO(&5C:&]D+F\@
M8F9O<G=A<F0N;R!F;&%T9"YO(&QO861D+F\@:V5N>6%D+F\@<'%C<F5A=&4N
M;R!P<61E=&%C:"YO('!Q9&]O;2YO('!Q<W1A=&4N;R!R<&DN;6]P+F\@9F1E
M<V,N;R!F9F%C92YO(&9I;&5D+F\@9G%C;&]S92YO(&9Q9C<W+F\@9G%L<V5E
M:RYO(&9Q;W!E;BYO(&9Q<F5A9"YO(&9Q<VEM<&QE>"YO(&9Q<W1A=&4N;R!F
M<7=R:71E+F\@9G%O<&5N9F0N;R!T<F%C960N;R!T<F)U9BYO(&ME>&ET+F\@
M;G)E8W8N;R!N<V5N9"YO(')R97$N;R!S='5B+F\@=')I;&QI=6TN;R!I;V0N
M;R!I;V0N:6YT+F\@(&QA;60*;6%K95LS73H@3&5A=FEN9R!D:7)E8W1O<GD@
M8"]H;VUE+V%R<75I+VQA;38Q+V]T8BUO8FHO<WES+VQA;60G"FUA:V5;,ETZ
M($QE879I;F<@9&ER96-T;W)Y(& O:&]M92]A<G%U:2]L86TV,2]O=&(M;V)J
M+W-Y<R<*"71P:6YG.@IM86ME6S)=.B!%;G1E<FEN9R!D:7)E8W1O<GD@8"]H
M;VUE+V%R<75I+VQA;38Q+V]T8BUO8FHO='!I;F<G"B]B:6XO<FT@+68@='!I
M;F<N;R!T<&EN9PIM86ME6S)=.B!,96%V:6YG(&1I<F5C=&]R>2!@+VAO;64O
M87)Q=6DO;&%M-C$O;W1B+6]B:B]T<&EN9R<*;6%K95LQ73H@3&5A=FEN9R!D
M:7)E8W1O<GD@8"]H;VUE+V%R<75I+VQA;38Q+V]T8BUO8FHG"G-C:&5M83H*
M;6%K95LQ73H@16YT97)I;F<@9&ER96-T;W)Y(& O:&]M92]A<G%U:2]L86TV
M,2]S8VAE;6$G"FUA:V5;,5TZ($YO=&AI;F<@=&\@8F4@9&]N92!F;W(@8&-L
M96%N)RX*;6%K95LQ73H@3&5A=FEN9R!D:7)E8W1O<GD@8"]H;VUE+V%R<75I
M+VQA;38Q+W-C:&5M82<*;6%N.@IM86ME6S%=.B!%;G1E<FEN9R!D:7)E8W1O
M<GD@8"]H;VUE+V%R<75I+VQA;38Q+VUA;B<*;6%K95LQ73H@3F]T:&EN9R!T
M;R!B92!D;VYE(&9O<B!@8VQE86XG+@IM86ME6S%=.B!,96%V:6YG(&1I<F5C
M=&]R>2!@+VAO;64O87)Q=6DO;&%M-C$O;6%N)PIS:&%R92]H.@IM86ME6S%=
M.B!%;G1E<FEN9R!D:7)E8W1O<GD@8"]H;VUE+V%R<75I+VQA;38Q+W-H87)E
M+V@G"F=E;F5R871I;F<@9&5P96YD96YC:65S"FUA:V5;,ETZ($5N=&5R:6YG
M(&1I<F5C=&]R>2!@+VAO;64O87)Q=6DO;&%M-C$O<VAA<F4O:"<*;6%K95LR
M73H@3F]T:&EN9R!T;R!B92!D;VYE(&9O<B!@:6YS=&%L;"<N"FUA:V5;,ETZ
M($QE879I;F<@9&ER96-T;W)Y(& O:&]M92]A<G%U:2]L86TV,2]S:&%R92]H
M)PIM86ME6S%=.B!,96%V:6YG(&1I<F5C=&]R>2!@+VAO;64O87)Q=6DO;&%M
M-C$O<VAA<F4O:"<*;&EB+V]T8BUO8FHZ"FUA:V5;,5TZ($5N=&5R:6YG(&1I
M<F5C=&]R>2!@+VAO;64O87)Q=6DO;&%M-C$O;&EB+V]T8BUO8FHG"@EA<F=S
M.@IM86ME6S)=.B!%;G1E<FEN9R!D:7)E8W1O<GD@8"]H;VUE+V%R<75I+VQA
M;38Q+VQI8B]O=&(M;V)J+V%R9W,G"F=E;F5R871I;F<@9&5P96YD96YC:65S
M"FUA:V5;,ETZ($QE879I;F<@9&ER96-T;W)Y(& O:&]M92]A<G%U:2]L86TV
M,2]L:6(O;W1B+6]B:B]A<F=S)PH);7!I.@IM86ME6S)=.B!%;G1E<FEN9R!D
M:7)E8W1O<GD@8"]H;VUE+V%R<75I+VQA;38Q+VQI8B]O=&(M;V)J+VUP:2<*
M9V5N97)A=&EN9R!D97!E;F1E;F-I97,*;6%K95LR73H@3&5A=FEN9R!D:7)E
M8W1O<GD@8"]H;VUE+V%R<75I+VQA;38Q+VQI8B]O=&(M;V)J+VUP:2<*"70Z
M"FUA:V5;,ETZ($5N=&5R:6YG(&1I<F5C=&]R>2!@+VAO;64O87)Q=6DO;&%M
M-C$O;&EB+V]T8BUO8FHO="<*"0EE=&,Z"FUA:V5;,UTZ($5N=&5R:6YG(&1I
M<F5C=&]R>2!@+VAO;64O87)Q=6DO;&%M-C$O;&EB+V]T8BUO8FHO="]E=&,G
M"F=E;F5R871I;F<@9&5P96YD96YC:65S"FUA:V5;,UTZ($QE879I;F<@9&ER
M96-T;W)Y(& O:&]M92]A<G%U:2]L86TV,2]L:6(O;W1B+6]B:B]T+V5T8R<*
M"0EF<F5Q.@IM86ME6S-=.B!%;G1E<FEN9R!D:7)E8W1O<GD@8"]H;VUE+V%R
M<75I+VQA;38Q+VQI8B]O=&(M;V)J+W0O9G)E<2<*9V5N97)A=&EN9R!D97!E
M;F1E;F-I97,*;6%K95LS73H@3&5A=FEN9R!D:7)E8W1O<GD@8"]H;VUE+V%R
M<75I+VQA;38Q+VQI8B]O=&(M;V)J+W0O9G)E<2<*"0EK<F5Q.@IM86ME6S-=
M.B!%;G1E<FEN9R!D:7)E8W1O<GD@8"]H;VUE+V%R<75I+VQA;38Q+VQI8B]O
M=&(M;V)J+W0O:W)E<2<*9V5N97)A=&EN9R!D97!E;F1E;F-I97,*;6%K95LS
M73H@3&5A=FEN9R!D:7)E8W1O<GD@8"]H;VUE+V%R<75I+VQA;38Q+VQI8B]O
M=&(M;V)J+W0O:W)E<2<*"0EN<F5Q.@IM86ME6S-=.B!%;G1E<FEN9R!D:7)E
M8W1O<GD@8"]H;VUE+V%R<75I+VQA;38Q+VQI8B]O=&(M;V)J+W0O;G)E<2<*
M9V5N97)A=&EN9R!D97!E;F1E;F-I97,*;6%K95LS73H@3&5A=FEN9R!D:7)E
M8W1O<GD@8"]H;VUE+V%R<75I+VQA;38Q+VQI8B]O=&(M;V)J+W0O;G)E<2<*
M"0ET;V]L<SH*;6%K95LS73H@16YT97)I;F<@9&ER96-T;W)Y(& O:&]M92]A
M<G%U:2]L86TV,2]L:6(O;W1B+6]B:B]T+W1O;VQS)PIG96YE<F%T:6YG(&1E
M<&5N9&5N8VEE<PIM86ME6S-=.B!,96%V:6YG(&1I<F5C=&]R>2!@+VAO;64O
M87)Q=6DO;&%M-C$O;&EB+V]T8BUO8FHO="]T;V]L<R<*;6%K95LR73H@3&5A
M=FEN9R!D:7)E8W1O<GD@8"]H;VUE+V%R<75I+VQA;38Q+VQI8B]O=&(M;V)J
M+W0G"@ET<FEL;&EU;3H*;6%K95LR73H@16YT97)I;F<@9&ER96-T;W)Y(& O
M:&]M92]A<G%U:2]L86TV,2]L:6(O;W1B+6]B:B]T<FEL;&EU;2<*9V5N97)A
M=&EN9R!D97!E;F1E;F-I97,*;6%K95LR73H@3&5A=FEN9R!D:7)E8W1O<GD@
M8"]H;VUE+V%R<75I+VQA;38Q+VQI8B]O=&(M;V)J+W1R:6QL:75M)PH)='-T
M9&EO.@IM86ME6S)=.B!%;G1E<FEN9R!D:7)E8W1O<GD@8"]H;VUE+V%R<75I
M+VQA;38Q+VQI8B]O=&(M;V)J+W1S=&1I;R<*9V5N97)A=&EN9R!D97!E;F1E
M;F-I97,*;6%K95LR73H@3&5A=FEN9R!D:7)E8W1O<GD@8"]H;VUE+V%R<75I
M+VQA;38Q+VQI8B]O=&(M;V)J+W1S=&1I;R<*;6%K95LQ73H@3&5A=FEN9R!D
M:7)E8W1O<GD@8"]H;VUE+V%R<75I+VQA;38Q+VQI8B]O=&(M;V)J)PIT;V]L
M<RUO8FHZ"FUA:V5;,5TZ($5N=&5R:6YG(&1I<F5C=&]R>2!@+VAO;64O87)Q
M=6DO;&%M-C$O=&]O;',M;V)J)PH):&)O;W0Z"FUA:V5;,ETZ($5N=&5R:6YG
M(&1I<F5C=&]R>2!@+VAO;64O87)Q=6DO;&%M-C$O=&]O;',M;V)J+VAB;V]T
M)PIG96YE<F%T:6YG(&1E<&5N9&5N8VEE<PIM86ME6S)=.B!,96%V:6YG(&1I
M<F5C=&]R>2!@+VAO;64O87)Q=6DO;&%M-C$O=&]O;',M;V)J+VAB;V]T)PH)
M:&-C.@IM86ME6S)=.B!%;G1E<FEN9R!D:7)E8W1O<GD@8"]H;VUE+V%R<75I
M+VQA;38Q+W1O;VQS+6]B:B]H8V,G"F=E;F5R871I;F<@9&5P96YD96YC:65S
M"FUA:V5;,ETZ($QE879I;F<@9&ER96-T;W)Y(& O:&]M92]A<G%U:2]L86TV
M,2]T;V]L<RUO8FHO:&-C)PH):&8W-SH*;6%K95LR73H@16YT97)I;F<@9&ER
M96-T;W)Y(& O:&]M92]A<G%U:2]L86TV,2]T;V]L<RUO8FHO:&8W-R<*9V5N
M97)A=&EN9R!D97!E;F1E;F-I97,*;6%K95LR73H@3&5A=FEN9R!D:7)E8W1O
M<GD@8"]H;VUE+V%R<75I+VQA;38Q+W1O;VQS+6]B:B]H9C<W)PH);&%M8F]O
M=#H*;6%K95LR73H@16YT97)I;F<@9&ER96-T;W)Y(& O:&]M92]A<G%U:2]L
M86TV,2]T;V]L<RUO8FHO;&%M8F]O="<*9V5N97)A=&EN9R!D97!E;F1E;F-I
M97,*;6%K95LR73H@3&5A=FEN9R!D:7)E8W1O<GD@8"]H;VUE+V%R<75I+VQA
M;38Q+W1O;VQS+6]B:B]L86UB;V]T)PH)<F5C;VXZ"FUA:V5;,ETZ($5N=&5R
M:6YG(&1I<F5C=&]R>2!@+VAO;64O87)Q=6DO;&%M-C$O=&]O;',M;V)J+W)E
M8V]N)PIG96YE<F%T:6YG(&1E<&5N9&5N8VEE<PIM86ME6S)=.B!,96%V:6YG
M(&1I<F5C=&]R>2!@+VAO;64O87)Q=6DO;&%M-C$O=&]O;',M;V)J+W)E8V]N
M)PH)=&MI;&PZ"FUA:V5;,ETZ($5N=&5R:6YG(&1I<F5C=&]R>2!@+VAO;64O
M87)Q=6DO;&%M-C$O=&]O;',M;V)J+W1K:6QL)PIG96YE<F%T:6YG(&1E<&5N
M9&5N8VEE<PIM86ME6S)=.B!,96%V:6YG(&1I<F5C=&]R>2!@+VAO;64O87)Q
M=6DO;&%M-C$O=&]O;',M;V)J+W1K:6QL)PH)=VEP93H*;6%K95LR73H@16YT
M97)I;F<@9&ER96-T;W)Y(& O:&]M92]A<G%U:2]L86TV,2]T;V]L<RUO8FHO
M=VEP92<*9V5N97)A=&EN9R!D97!E;F1E;F-I97,*;6%K95LR73H@3&5A=FEN
M9R!D:7)E8W1O<GD@8"]H;VUE+V%R<75I+VQA;38Q+W1O;VQS+6]B:B]W:7!E
M)PIM86ME6S%=.B!,96%V:6YG(&1I<F5C=&]R>2!@+VAO;64O87)Q=6DO;&%M
M-C$O=&]O;',M;V)J)PIO=&(M;V)J.@IM86ME6S%=.B!%;G1E<FEN9R!D:7)E
M8W1O<GD@8"]H;VUE+V%R<75I+VQA;38Q+V]T8BUO8FHG"@EB9F-T;#H*;6%K
M95LR73H@16YT97)I;F<@9&ER96-T;W)Y(& O:&]M92]A<G%U:2]L86TV,2]O
M=&(M;V)J+V)F8W1L)PIG96YE<F%T:6YG(&1E<&5N9&5N8VEE<PIM86ME6S)=
M.B!,96%V:6YG(&1I<F5C=&]R>2!@+VAO;64O87)Q=6DO;&%M-C$O;W1B+6]B
M:B]B9F-T;"<*"6)F<W1A=&4Z"FUA:V5;,ETZ($5N=&5R:6YG(&1I<F5C=&]R
M>2!@+VAO;64O87)Q=6DO;&%M-C$O;W1B+6]B:B]B9G-T871E)PIG96YE<F%T
M:6YG(&1E<&5N9&5N8VEE<PIM86ME6S)=.B!,96%V:6YG(&1I<F5C=&]R>2!@
M+VAO;64O87)Q=6DO;&%M-C$O;W1B+6]B:B]B9G-T871E)PH)9&]O;3H*;6%K
M95LR73H@16YT97)I;F<@9&ER96-T;W)Y(& O:&]M92]A<G%U:2]L86TV,2]O
M=&(M;V)J+V1O;VTG"F=E;F5R871I;F<@9&5P96YD96YC:65S"FUA:V5;,ETZ
M($QE879I;F<@9&ER96-T;W)Y(& O:&]M92]A<G%U:2]L86TV,2]O=&(M;V)J
M+V1O;VTG"@EF8W1L.@IM86ME6S)=.B!%;G1E<FEN9R!D:7)E8W1O<GD@8"]H
M;VUE+V%R<75I+VQA;38Q+V]T8BUO8FHO9F-T;"<*9V5N97)A=&EN9R!D97!E
M;F1E;F-I97,*;6%K95LR73H@3&5A=FEN9R!D:7)E8W1O<GD@8"]H;VUE+V%R
M<75I+VQA;38Q+V]T8BUO8FHO9F-T;"<*"69S=&%T93H*;6%K95LR73H@16YT
M97)I;F<@9&ER96-T;W)Y(& O:&]M92]A<G%U:2]L86TV,2]O=&(M;V)J+V9S
M=&%T92<*9V5N97)A=&EN9R!D97!E;F1E;F-I97,*;6%K95LR73H@3&5A=FEN
M9R!D:7)E8W1O<GD@8"]H;VUE+V%R<75I+VQA;38Q+V]T8BUO8FHO9G-T871E
M)PH);&%M8VQE86XZ"FUA:V5;,ETZ($5N=&5R:6YG(&1I<F5C=&]R>2!@+VAO
M;64O87)Q=6DO;&%M-C$O;W1B+6]B:B]L86UC;&5A;B<*9V5N97)A=&EN9R!D
M97!E;F1E;F-I97,*;6%K95LR73H@3&5A=FEN9R!D:7)E8W1O<GD@8"]H;VUE
M+V%R<75I+VQA;38Q+V]T8BUO8FHO;&%M8VQE86XG"@EL86UG<F]W.@IM86ME
M6S)=.B!%;G1E<FEN9R!D:7)E8W1O<GD@8"]H;VUE+V%R<75I+VQA;38Q+V]T
M8BUO8FHO;&%M9W)O=R<*9V5N97)A=&EN9R!D97!E;F1E;F-I97,*;6%K95LR
M73H@3&5A=FEN9R!D:7)E8W1O<GD@8"]H;VUE+V%R<75I+VQA;38Q+V]T8BUO
M8FHO;&%M9W)O=R<*"6QA;7-H<FEN:SH*;6%K95LR73H@16YT97)I;F<@9&ER
M96-T;W)Y(& O:&]M92]A<G%U:2]L86TV,2]O=&(M;V)J+VQA;7-H<FEN:R<*
M9V5N97)A=&EN9R!D97!E;F1E;F-I97,*;6%K95LR73H@3&5A=FEN9R!D:7)E
M8W1O<GD@8"]H;VUE+V%R<75I+VQA;38Q+V]T8BUO8FHO;&%M<VAR:6YK)PH)
M;&%M=')A8V4Z"FUA:V5;,ETZ($5N=&5R:6YG(&1I<F5C=&]R>2!@+VAO;64O
M87)Q=6DO;&%M-C$O;W1B+6]B:B]L86UT<F%C92<*9V5N97)A=&EN9R!D97!E
M;F1E;F-I97,*;6%K95LR73H@3&5A=FEN9R!D:7)E8W1O<GD@8"]H;VUE+V%R
M<75I+VQA;38Q+V]T8BUO8FHO;&%M=')A8V4G"@EL;V%D9V\Z"FUA:V5;,ETZ
M($5N=&5R:6YG(&1I<F5C=&]R>2!@+VAO;64O87)Q=6DO;&%M-C$O;W1B+6]B
M:B]L;V%D9V\G"F=E;F5R871I;F<@9&5P96YD96YC:65S"FUA:V5;,ETZ($QE
M879I;F<@9&ER96-T;W)Y(& O:&]M92]A<G%U:2]L86TV,2]O=&(M;V)J+VQO
M861G;R<*"6UP:6US9SH*;6%K95LR73H@16YT97)I;F<@9&ER96-T;W)Y(& O
M:&]M92]A<G%U:2]L86TV,2]O=&(M;V)J+VUP:6US9R<*9V5N97)A=&EN9R!D
M97!E;F1E;F-I97,*;6%K95LR73H@3&5A=FEN9R!D:7)E8W1O<GD@8"]H;VUE
M+V%R<75I+VQA;38Q+V]T8BUO8FHO;7!I;7-G)PH);7!I<G5N.@IM86ME6S)=
M.B!%;G1E<FEN9R!D:7)E8W1O<GD@8"]H;VUE+V%R<75I+VQA;38Q+V]T8BUO
M8FHO;7!I<G5N)PIG96YE<F%T:6YG(&1E<&5N9&5N8VEE<PIM86ME6S)=.B!,
M96%V:6YG(&1I<F5C=&]R>2!@+VAO;64O87)Q=6DO;&%M-C$O;W1B+6]B:B]M
M<&ER=6XG"@EM<&ET87-K.@IM86ME6S)=.B!%;G1E<FEN9R!D:7)E8W1O<GD@
M8"]H;VUE+V%R<75I+VQA;38Q+V]T8BUO8FHO;7!I=&%S:R<*9V5N97)A=&EN
M9R!D97!E;F1E;F-I97,*;6%K95LR73H@3&5A=FEN9R!D:7)E8W1O<GD@8"]H
M;VUE+V%R<75I+VQA;38Q+V]T8BUO8FHO;7!I=&%S:R<*"7-T871E.@IM86ME
M6S)=.B!%;G1E<FEN9R!D:7)E8W1O<GD@8"]H;VUE+V%R<75I+VQA;38Q+V]T
M8BUO8FHO<W1A=&4G"F=E;F5R871I;F<@9&5P96YD96YC:65S"FUA:V5;,ETZ
M($QE879I;F<@9&ER96-T;W)Y(& O:&]M92]A<G%U:2]L86TV,2]O=&(M;V)J
M+W-T871E)PH)<WES.@IM86ME6S)=.B!%;G1E<FEN9R!D:7)E8W1O<GD@8"]H
M;VUE+V%R<75I+VQA;38Q+V]T8BUO8FHO<WES)PH)"6QA;60Z"FUA:V5;,UTZ
M($5N=&5R:6YG(&1I<F5C=&]R>2!@+VAO;64O87)Q=6DO;&%M-C$O;W1B+6]B
M:B]S>7,O;&%M9"<*9V5N97)A=&EN9R!D97!E;F1E;F-I97,*;6%K95LS73H@
M3&5A=FEN9R!D:7)E8W1O<GD@8"]H;VUE+V%R<75I+VQA;38Q+V]T8BUO8FHO
M<WES+VQA;60G"FUA:V5;,ETZ($QE879I;F<@9&ER96-T;W)Y(& O:&]M92]A
M<G%U:2]L86TV,2]O=&(M;V)J+W-Y<R<*"71P:6YG.@IM86ME6S)=.B!%;G1E
M<FEN9R!D:7)E8W1O<GD@8"]H;VUE+V%R<75I+VQA;38Q+V]T8BUO8FHO='!I
M;F<G"F=E;F5R871I;F<@9&5P96YD96YC:65S"FUA:V5;,ETZ($QE879I;F<@
M9&ER96-T;W)Y(& O:&]M92]A<G%U:2]L86TV,2]O=&(M;V)J+W1P:6YG)PIM
M86ME6S%=.B!,96%V:6YG(&1I<F5C=&]R>2!@+VAO;64O87)Q=6DO;&%M-C$O
M;W1B+6]B:B<*<V-H96UA.@IM86ME6S%=.B!%;G1E<FEN9R!D:7)E8W1O<GD@
M8"]H;VUE+V%R<75I+VQA;38Q+W-C:&5M82<*;6%K95LQ73H@3F]T:&EN9R!T
M;R!B92!D;VYE(&9O<B!@9&5P96YD)RX*;6%K95LQ73H@3&5A=FEN9R!D:7)E
M8W1O<GD@8"]H;VUE+V%R<75I+VQA;38Q+W-C:&5M82<*;6%N.@IM86ME6S%=
M.B!%;G1E<FEN9R!D:7)E8W1O<GD@8"]H;VUE+V%R<75I+VQA;38Q+VUA;B<*
M;6%K95LQ73H@3F]T:&EN9R!T;R!B92!D;VYE(&9O<B!@9&5P96YD)RX*;6%K
M95LQ73H@3&5A=FEN9R!D:7)E8W1O<GD@8"]H;VUE+V%R<75I+VQA;38Q+VUA
M;B<*<VAA<F4O:#H*;6%K95LQ73H@16YT97)I;F<@9&ER96-T;W)Y(& O:&]M
M92]A<G%U:2]L86TV,2]S:&%R92]H)PIM86ME6S%=.B!.;W1H:6YG('1O(&)E
M(&1O;F4@9F]R(&!I;G-T86QL)RX*;6%K95LQ73H@3&5A=FEN9R!D:7)E8W1O
M<GD@8"]H;VUE+V%R<75I+VQA;38Q+W-H87)E+V@G"FQI8B]O=&(M;V)J.@IM
M86ME6S%=.B!%;G1E<FEN9R!D:7)E8W1O<GD@8"]H;VUE+V%R<75I+VQA;38Q
M+VQI8B]O=&(M;V)J)PH)87)G<SH*;6%K95LR73H@16YT97)I;F<@9&ER96-T
M;W)Y(& O:&]M92]A<G%U:2]L86TV,2]L:6(O;W1B+6]B:B]A<F=S)PIG8V,@
M+4\@+41,24Y56" M1&EX.#8@+4DO:&]M92]A<G%U:2]L86TV,2]H(" M8R N
M+B\N+B\N+B]S:&%R92]A<F=S+V%L;%]A<F=V+F,*9V-C("U/("U$3$E.55@@
M+41I>#@V("U)+VAO;64O87)Q=6DO;&%M-C$O:" @+6,@+BXO+BXO+BXO<VAA
M<F4O87)G<R]A;&Q?;W!T+F,*9V-C("U/("U$3$E.55@@+41I>#@V("U)+VAO
M;64O87)Q=6DO;&%M-C$O:" @+6,@+BXO+BXO+BXO<VAA<F4O87)G<R]D;U]A
M<F=S+F,*9V-C("U/("U$3$E.55@@+41I>#@V("U)+VAO;64O87)Q=6DO;&%M
M-C$O:" @+6,@+BXO+BXO+BXO<VAA<F4O87)G<R]N9&E?<&%R<V4N8PIG8V,@
M+4\@+41,24Y56" M1&EX.#8@+4DO:&]M92]A<G%U:2]L86TV,2]H(" M8R N
M+B\N+B\N+B]S:&%R92]A<F=S+VYD:5]R97-O;'9E+F,*9V-C("U/("U$3$E.
M55@@+41I>#@V("U)+VAO;64O87)Q=6DO;&%M-C$O:" @+6,@+BXO+BXO+BXO
M<VAA<F4O87)G<R]P87)S95]I9"YC"F=C8R M3R M1$Q)3E58("U$:7@X-B M
M22]H;VUE+V%R<75I+VQA;38Q+V@@("UC("XN+RXN+RXN+W-H87)E+V%R9W,O
M<&1I7W!A<G-E+F,*+V)I;B]R;2 M9B!L:6)A<F=S+F$*87(@<G8@;&EB87)G
M<RYA(&%L;%]A<F=V+F\@86QL7V]P="YO(&1O7V%R9W,N;R!N9&E?<&%R<V4N
M;R!N9&E?<F5S;VQV92YO('!A<G-E7VED+F\@<&1I7W!A<G-E+F\@"F$@+2!A
M;&Q?87)G=BYO"F$@+2!A;&Q?;W!T+F\*82 M(&1O7V%R9W,N;PIA("T@;F1I
M7W!A<G-E+F\*82 M(&YD:5]R97-O;'9E+F\*82 M('!A<G-E7VED+F\*82 M
M('!D:5]P87)S92YO"G)A;FQI8B!L:6)A<F=S+F$*+V)I;B]C<"!L:6)A<F=S
M+F$@+VAO;64O87)Q=6DO;&%M-C$O;&EB+VQI8F%R9W,N80IR86YL:6(@+VAO
M;64O87)Q=6DO;&%M-C$O;&EB+VQI8F%R9W,N80IM86ME6S)=.B!,96%V:6YG
M(&1I<F5C=&]R>2!@+VAO;64O87)Q=6DO;&%M-C$O;&EB+V]T8BUO8FHO87)G
M<R<*"6UP:3H*;6%K95LR73H@16YT97)I;F<@9&ER96-T;W)Y(& O:&]M92]A
M<G%U:2]L86TV,2]L:6(O;W1B+6]B:B]M<&DG"F=C8R M3R M1$Q)3E58("U$
M:7@X-B M22]H;VUE+V%R<75I+VQA;38Q+V@@+4124$E?4TA-("U$4TA-7U-9
M4U8@+41-4$E?1T52/3@@+6,@+BXO+BXO+BXO<VAA<F4O;7!I+W)P:2YS:&TN
M8PIG8V,@+4\@+41,24Y56" M1&EX.#8@+4DO:&]M92]A<G%U:2]L86TV,2]H
M("U$4E!)7U-(32 M1%-(35]365-6("U$35!)7T=%4CTX("UC("XN+RXN+RXN
M+W-H87)E+VUP:2]T8W N;&]W+F,*9V-C("U/("U$3$E.55@@+41I>#@V("U)
M+VAO;64O87)Q=6DO;&%M-C$O:" M1%)025]32$T@+4132$U?4UE35B M1$U0
M25]'15(]." M8R N+B\N+B\N+B]S:&%R92]M<&DO<VAM+FQO=RYC"F=C8R M
M3R M1$Q)3E58("U$:7@X-B M22]H;VUE+V%R<75I+VQA;38Q+V@@+4124$E?
M4TA-("U$4TA-7U-94U8@+41-4$E?1T52/3@@+6,@+BXO+BXO+BXO<VAA<F4O
M;7!I+W-H;2YS>7-V+F,*9V-C("U/("U$3$E.55@@+41I>#@V("U)+VAO;64O
M87)Q=6DO;&%M-C$O:" M1%)025]32$T@+4132$U?4UE35B M1$U025]'15(]
M." M8R N+B\N+B\N+B]S:&%R92]M<&DO<WES=G-L;W N8PIG8V,@+4\@+41,
M24Y56" M1&EX.#8@+4DO:&]M92]A<G%U:2]L86TV,2]H("U$4E!)7U-(32 M
M1%-(35]365-6("U$35!)7T=%4CTX("UC("XN+RXN+RXN+W-H87)E+VUP:2]A
M8F]R="YC"F=C8R M3R M1$Q)3E58("U$:7@X-B M22]H;VUE+V%R<75I+VQA
M;38Q+V@@+4124$E?4TA-("U$4TA-7U-94U8@+41-4$E?1T52/3@@+6,@+BXO
M+BXO+BXO<VAA<F4O;7!I+V%C8V5P="YC"F=C8R M3R M1$Q)3E58("U$:7@X
M-B M22]H;VUE+V%R<75I+VQA;38Q+V@@+4124$E?4TA-("U$4TA-7U-94U8@
M+41-4$E?1T52/3@@+6,@+BXO+BXO+BXO<VAA<F4O;7!I+V%D9')E<W,N8PIG
M8V,@+4\@+41,24Y56" M1&EX.#8@+4DO:&]M92]A<G%U:2]L86TV,2]H("U$
M4E!)7U-(32 M1%-(35]365-6("U$35!)7T=%4CTX("UC("XN+RXN+RXN+W-H
M87)E+VUP:2]A;&QG871H97(N8PIG8V,@+4\@+41,24Y56" M1&EX.#8@+4DO
M:&]M92]A<G%U:2]L86TV,2]H("U$4E!)7U-(32 M1%-(35]365-6("U$35!)
M7T=%4CTX("UC("XN+RXN+RXN+W-H87)E+VUP:2]A;&QG871H97)V+F,*9V-C
M("U/("U$3$E.55@@+41I>#@V("U)+VAO;64O87)Q=6DO;&%M-C$O:" M1%)0
M25]32$T@+4132$U?4UE35B M1$U025]'15(]." M8R N+B\N+B\N+B]S:&%R
M92]M<&DO86QL<F5D=6-E+F,*9V-C("U/("U$3$E.55@@+41I>#@V("U)+VAO
M;64O87)Q=6DO;&%M-C$O:" M1%)025]32$T@+4132$U?4UE35B M1$U025]'
M15(]." M8R N+B\N+B\N+B]S:&%R92]M<&DO86QL=&]A;&PN8PIG8V,@+4\@
M+41,24Y56" M1&EX.#8@+4DO:&]M92]A<G%U:2]L86TV,2]H("U$4E!)7U-(
M32 M1%-(35]365-6("U$35!)7T=%4CTX("UC("XN+RXN+RXN+W-H87)E+VUP
M:2]A;&QT;V%L;'8N8PIG8V,@+4\@+41,24Y56" M1&EX.#8@+4DO:&]M92]A
M<G%U:2]L86TV,2]H("U$4E!)7U-(32 M1%-(35]365-6("U$35!)7T=%4CTX
M("UC("XN+RXN+RXN+W-H87)E+VUP:2]A='1R9&5L+F,*9V-C("U/("U$3$E.
M55@@+41I>#@V("U)+VAO;64O87)Q=6DO;&%M-C$O:" M1%)025]32$T@+413
M2$U?4UE35B M1$U025]'15(]." M8R N+B\N+B\N+B]S:&%R92]M<&DO871T
M<F=E="YC"F=C8R M3R M1$Q)3E58("U$:7@X-B M22]H;VUE+V%R<75I+VQA
M;38Q+V@@+4124$E?4TA-("U$4TA-7U-94U8@+41-4$E?1T52/3@@+6,@+BXO
M+BXO+BXO<VAA<F4O;7!I+V%T=')P=70N8PIG8V,@+4\@+41,24Y56" M1&EX
M.#8@+4DO:&]M92]A<G%U:2]L86TV,2]H("U$4E!)7U-(32 M1%-(35]365-6
M("U$35!)7T=%4CTX("UC("XN+RXN+RXN+W-H87)E+VUP:2]B87)R:65R+F,*
M9V-C("U/("U$3$E.55@@+41I>#@V("U)+VAO;64O87)Q=6DO;&%M-C$O:" M
M1%)025]32$T@+4132$U?4UE35B M1$U025]'15(]." M8R N+B\N+B\N+B]S
M:&%R92]M<&DO8F-A<W0N8PIG8V,@+4\@+41,24Y56" M1&EX.#8@+4DO:&]M
M92]A<G%U:2]L86TV,2]H("U$4E!)7U-(32 M1%-(35]365-6("U$35!)7T=%
M4CTX("UC("XN+RXN+RXN+W-H87)E+VUP:2]B<V5N9"YC"F=C8R M3R M1$Q)
M3E58("U$:7@X-B M22]H;VUE+V%R<75I+VQA;38Q+V@@+4124$E?4TA-("U$
M4TA-7U-94U8@+41-4$E?1T52/3@@+6,@+BXO+BXO+BXO<VAA<F4O;7!I+V)S
M96YD:6YI="YC"F=C8R M3R M1$Q)3E58("U$:7@X-B M22]H;VUE+V%R<75I
M+VQA;38Q+V@@+4124$E?4TA-("U$4TA-7U-94U8@+41-4$E?1T52/3@@+6,@
M+BXO+BXO+BXO<VAA<F4O;7!I+V)U9F%T=&%C:"YC"F=C8R M3R M1$Q)3E58
M("U$:7@X-B M22]H;VUE+V%R<75I+VQA;38Q+V@@+4124$E?4TA-("U$4TA-
M7U-94U8@+41-4$E?1T52/3@@+6,@+BXO+BXO+BXO<VAA<F4O;7!I+V)U9F1E
M=&%C:"YC"F=C8R M3R M1$Q)3E58("U$:7@X-B M22]H;VUE+V%R<75I+VQA
M;38Q+V@@+4124$E?4TA-("U$4TA-7U-94U8@+41-4$E?1T52/3@@+6,@+BXO
M+BXO+BXO<VAA<F4O;7!I+V,R8V)U9BYC"F=C8R M3R M1$Q)3E58("U$:7@X
M-B M22]H;VUE+V%R<75I+VQA;38Q+V@@+4124$E?4TA-("U$4TA-7U-94U8@
M+41-4$E?1T52/3@@+6,@+BXO+BXO+BXO<VAA<F4O;7!I+V-A;F-E;"YC"F=C
M8R M3R M1$Q)3E58("U$:7@X-B M22]H;VUE+V%R<75I+VQA;38Q+V@@+412
M4$E?4TA-("U$4TA-7U-94U8@+41-4$E?1T52/3@@+6,@+BXO+BXO+BXO<VAA
M<F4O;7!I+V-A<G1C;V]R9',N8PIG8V,@+4\@+41,24Y56" M1&EX.#8@+4DO
M:&]M92]A<G%U:2]L86TV,2]H("U$4E!)7U-(32 M1%-(35]365-6("U$35!)
M7T=%4CTX("UC("XN+RXN+RXN+W-H87)E+VUP:2]C87)T8W)E871E+F,*9V-C
M("U/("U$3$E.55@@+41I>#@V("U)+VAO;64O87)Q=6DO;&%M-C$O:" M1%)0
M25]32$T@+4132$U?4UE35B M1$U025]'15(]." M8R N+B\N+B\N+B]S:&%R
M92]M<&DO8V%R=&1I;6=E="YC"F=C8R M3R M1$Q)3E58("U$:7@X-B M22]H
M;VUE+V%R<75I+VQA;38Q+V@@+4124$E?4TA-("U$4TA-7U-94U8@+41-4$E?
M1T52/3@@+6,@+BXO+BXO+BXO<VAA<F4O;7!I+V-A<G1G970N8PIG8V,@+4\@
M+41,24Y56" M1&EX.#8@+4DO:&]M92]A<G%U:2]L86TV,2]H("U$4E!)7U-(
M32 M1%-(35]365-6("U$35!)7T=%4CTX("UC("XN+RXN+RXN+W-H87)E+VUP
M:2]C87)T;6%P+F,*9V-C("U/("U$3$E.55@@+41I>#@V("U)+VAO;64O87)Q
M=6DO;&%M-C$O:" M1%)025]32$T@+4132$U?4UE35B M1$U025]'15(]." M
M8R N+B\N+B\N+B]S:&%R92]M<&DO8V%R=')A;FLN8PIG8V,@+4\@+41,24Y5
M6" M1&EX.#8@+4DO:&]M92]A<G%U:2]L86TV,2]H("U$4E!)7U-(32 M1%-(
M35]365-6("U$35!)7T=%4CTX("UC("XN+RXN+RXN+W-H87)E+VUP:2]C87)T
M<VAI9G0N8PIG8V,@+4\@+41,24Y56" M1&EX.#8@+4DO:&]M92]A<G%U:2]L
M86TV,2]H("U$4E!)7U-(32 M1%-(35]365-6("U$35!)7T=%4CTX("UC("XN
M+RXN+RXN+W-H87)E+VUP:2]C87)T<W5B+F,*9V-C("U/("U$3$E.55@@+41I
M>#@V("U)+VAO;64O87)Q=6DO;&%M-C$O:" M1%)025]32$T@+4132$U?4UE3
M5B M1$U025]'15(]." M8R N+B\N+B\N+B]S:&%R92]M<&DO8V-M<"YC"F=C
M8R M3R M1$Q)3E58("U$:7@X-B M22]H;VUE+V%R<75I+VQA;38Q+V@@+412
M4$E?4TA-("U$4TA-7U-94U8@+41-4$E?1T52/3@@+6,@+BXO+BXO+BXO<VAA
M<F4O;7!I+V-C<F5A=&4N8PIG8V,@+4\@+41,24Y56" M1&EX.#8@+4DO:&]M
M92]A<G%U:2]L86TV,2]H("U$4E!)7U-(32 M1%-(35]365-6("U$35!)7T=%
M4CTX("UC("XN+RXN+RXN+W-H87)E+VUP:2]C9&ES8V]N;F5C="YC"F=C8R M
M3R M1$Q)3E58("U$:7@X-B M22]H;VUE+V%R<75I+VQA;38Q+V@@+4124$E?
M4TA-("U$4TA-7U-94U8@+41-4$E?1T52/3@@+6,@+BXO+BXO+BXO<VAA<F4O
M;7!I+V-D=7 N8PIG8V,@+4\@+41,24Y56" M1&EX.#8@+4DO:&]M92]A<G%U
M:2]L86TV,2]H("U$4E!)7U-(32 M1%-(35]365-6("U$35!)7T=%4CTX("UC
M("XN+RXN+RXN+W-H87)E+VUP:2]C9G)E92YC"F=C8R M3R M1$Q)3E58("U$
M:7@X-B M22]H;VUE+V%R<75I+VQA;38Q+V@@+4124$E?4TA-("U$4TA-7U-9
M4U8@+41-4$E?1T52/3@@+6,@+BXO+BXO+BXO<VAA<F4O;7!I+V-G<F]U<"YC
M"F=C8R M3R M1$Q)3E58("U$:7@X-B M22]H;VUE+V%R<75I+VQA;38Q+V@@
M+4124$E?4TA-("U$4TA-7U-94U8@+41-4$E?1T52/3@@+6,@+BXO+BXO+BXO
M<VAA<F4O;7!I+V-O;FYE8W0N8PIG8V,@+4\@+41,24Y56" M1&EX.#8@+4DO
M:&]M92]A<G%U:2]L86TV,2]H("U$4E!)7U-(32 M1%-(35]365-6("U$35!)
M7T=%4CTX("UC("XN+RXN+RXN+W-H87)E+VUP:2]C<F%N:RYC"F=C8R M3R M
M1$Q)3E58("U$:7@X-B M22]H;VUE+V%R<75I+VQA;38Q+V@@+4124$E?4TA-
M("U$4TA-7U-94U8@+41-4$E?1T52/3@@+6,@+BXO+BXO+BXO<VAA<F4O;7!I
M+V-R9W)O=7 N8PIG8V,@+4\@+41,24Y56" M1&EX.#8@+4DO:&]M92]A<G%U
M:2]L86TV,2]H("U$4E!)7U-(32 M1%-(35]365-6("U$35!)7T=%4CTX("UC
M("XN+RXN+RXN+W-H87)E+VUP:2]C<G-I>F4N8PIG8V,@+4\@+41,24Y56" M
M1&EX.#8@+4DO:&]M92]A<G%U:2]L86TV,2]H("U$4E!)7U-(32 M1%-(35]3
M65-6("U$35!)7T=%4CTX("UC("XN+RXN+RXN+W-H87)E+VUP:2]C<VEZ92YC
M"F=C8R M3R M1$Q)3E58("U$:7@X-B M22]H;VUE+V%R<75I+VQA;38Q+V@@
M+4124$E?4TA-("U$4TA-7U-94U8@+41-4$E?1T52/3@@+6,@+BXO+BXO+BXO
M<VAA<F4O;7!I+V-S<&QI="YC"F=C8R M3R M1$Q)3E58("U$:7@X-B M22]H
M;VUE+V%R<75I+VQA;38Q+V@@+4124$E?4TA-("U$4TA-7U-94U8@+41-4$E?
M1T52/3@@+6,@+BXO+BXO+BXO<VAA<F4O;7!I+V-T97-T:6YT97(N8PIG8V,@
M+4\@+41,24Y56" M1&EX.#8@+4DO:&]M92]A<G%U:2]L86TV,2]H("U$4E!)
M7U-(32 M1%-(35]365-6("U$35!)7T=%4CTX("UC("XN+RXN+RXN+W-H87)E
M+VUP:2]D:6US8W)E871E+F,*9V-C("U/("U$3$E.55@@+41I>#@V("U)+VAO
M;64O87)Q=6DO;&%M-C$O:" M1%)025]32$T@+4132$U?4UE35B M1$U025]'
M15(]." M8R N+B\N+B\N+B]S:&%R92]M<&DO9'5P9FXN8PIG8V,@+4\@+41,
M24Y56" M1&EX.#8@+4DO:&]M92]A<G%U:2]L86TV,2]H("U$4E!)7U-(32 M
M1%-(35]365-6("U$35!)7T=%4CTX("UC("XN+RXN+RXN+W-H87)E+VUP:2]E
M<G)C;&%S<RYC"F=C8R M3R M1$Q)3E58("U$:7@X-B M22]H;VUE+V%R<75I
M+VQA;38Q+V@@+4124$E?4TA-("U$4TA-7U-94U8@+41-4$E?1T52/3@@+6,@
M+BXO+BXO+BXO<VAA<F4O;7!I+V5R<F-R96%T92YC"F=C8R M3R M1$Q)3E58
M("U$:7@X-B M22]H;VUE+V%R<75I+VQA;38Q+V@@+4124$E?4TA-("U$4TA-
M7U-94U8@+41-4$E?1T52/3@@+6,@+BXO+BXO+BXO<VAA<F4O;7!I+V5R<F9R
M964N8PIG8V,@+4\@+41,24Y56" M1&EX.#8@+4DO:&]M92]A<G%U:2]L86TV
M,2]H("U$4E!)7U-(32 M1%-(35]365-6("U$35!)7T=%4CTX("UC("XN+RXN
M+RXN+W-H87)E+VUP:2]E<G)G970N8PIG8V,@+4\@+41,24Y56" M1&EX.#8@
M+4DO:&]M92]A<G%U:2]L86TV,2]H("U$4E!)7U-(32 M1%-(35]365-6("U$
M35!)7T=%4CTX("UC("XN+RXN+RXN+W-H87)E+VUP:2]E<G)S970N8PIG8V,@
M+4\@+41,24Y56" M1&EX.#8@+4DO:&]M92]A<G%U:2]L86TV,2]H("U$4E!)
M7U-(32 M1%-(35]365-6("U$35!)7T=%4CTX("UC("XN+RXN+RXN+W-H87)E
M+VUP:2]E<G)S=')I;F<N8PIG8V,@+4\@+41,24Y56" M1&EX.#8@+4DO:&]M
M92]A<G%U:2]L86TV,2]H("U$4E!)7U-(32 M1%-(35]365-6("U$35!)7T=%
M4CTX("UC("XN+RXN+RXN+W-H87)E+VUP:2]F:6YA;&EZ92YC"F=C8R M3R M
M1$Q)3E58("U$:7@X-B M22]H;VUE+V%R<75I+VQA;38Q+V@@+4124$E?4TA-
M("U$4TA-7U-94U8@+41-4$E?1T52/3@@+6,@+BXO+BXO+BXO<VAA<F4O;7!I
M+V=A=&AE<BYC"F=C8R M3R M1$Q)3E58("U$:7@X-B M22]H;VUE+V%R<75I
M+VQA;38Q+V@@+4124$E?4TA-("U$4TA-7U-94U8@+41-4$E?1T52/3@@+6,@
M+BXO+BXO+BXO<VAA<F4O;7!I+V=A=&AE<G8N8PIG8V,@+4\@+41,24Y56" M
M1&EX.#8@+4DO:&]M92]A<G%U:2]L86TV,2]H("U$4E!)7U-(32 M1%-(35]3
M65-6("U$35!)7T=%4CTX("UC("XN+RXN+RXN+W-H87)E+VUP:2]G8VUP+F,*
M9V-C("U/("U$3$E.55@@+41I>#@V("U)+VAO;64O87)Q=6DO;&%M-C$O:" M
M1%)025]32$T@+4132$U?4UE35B M1$U025]'15(]." M8R N+B\N+B\N+B]S
M:&%R92]M<&DO9V1I9F8N8PIG8V,@+4\@+41,24Y56" M1&EX.#8@+4DO:&]M
M92]A<G%U:2]L86TV,2]H("U$4E!)7U-(32 M1%-(35]365-6("U$35!)7T=%
M4CTX("UC("XN+RXN+RXN+W-H87)E+VUP:2]G971C;W5N="YC"F=C8R M3R M
M1$Q)3E58("U$:7@X-B M22]H;VUE+V%R<75I+VQA;38Q+V@@+4124$E?4TA-
M("U$4TA-7U-94U8@+41-4$E?1T52/3@@+6,@+BXO+BXO+BXO<VAA<F4O;7!I
M+V=E=&5L96TN8PIG8V,@+4\@+41,24Y56" M1&EX.#8@+4DO:&]M92]A<G%U
M:2]L86TV,2]H("U$4E!)7U-(32 M1%-(35]365-6("U$35!)7T=%4CTX("UC
M("XN+RXN+RXN+W-H87)E+VUP:2]G971P<F]C;F%M92YC"F=C8R M3R M1$Q)
M3E58("U$:7@X-B M22]H;VUE+V%R<75I+VQA;38Q+V@@+4124$E?4TA-("U$
M4TA-7U-94U8@+41-4$E?1T52/3@@+6,@+BXO+BXO+BXO<VAA<F4O;7!I+V=E
M='9E<G-I;VXN8PIG8V,@+4\@+41,24Y56" M1&EX.#8@+4DO:&]M92]A<G%U
M:2]L86TV,2]H("U$4E!)7U-(32 M1%-(35]365-6("U$35!)7T=%4CTX("UC
M("XN+RXN+RXN+W-H87)E+VUP:2]G97AC;"YC"F=C8R M3R M1$Q)3E58("U$
M:7@X-B M22]H;VUE+V%R<75I+VQA;38Q+V@@+4124$E?4TA-("U$4TA-7U-9
M4U8@+41-4$E?1T52/3@@+6,@+BXO+BXO+BXO<VAA<F4O;7!I+V=F<F5E+F,*
M9V-C("U/("U$3$E.55@@+41I>#@V("U)+VAO;64O87)Q=6DO;&%M-C$O:" M
M1%)025]32$T@+4132$U?4UE35B M1$U025]'15(]." M8R N+B\N+B\N+B]S
M:&%R92]M<&DO9VEN8VPN8PIG8V,@+4\@+41,24Y56" M1&EX.#8@+4DO:&]M
M92]A<G%U:2]L86TV,2]H("U$4E!)7U-(32 M1%-(35]365-6("U$35!)7T=%
M4CTX("UC("XN+RXN+RXN+W-H87)E+VUP:2]G:6YT97(N8PIG8V,@+4\@+41,
M24Y56" M1&EX.#8@+4DO:&]M92]A<G%U:2]L86TV,2]H("U$4E!)7U-(32 M
M1%-(35]365-6("U$35!)7T=%4CTX("UC("XN+RXN+RXN+W-H87)E+VUP:2]G
M<F%N:RYC"F=C8R M3R M1$Q)3E58("U$:7@X-B M22]H;VUE+V%R<75I+VQA
M;38Q+V@@+4124$E?4TA-("U$4TA-7U-94U8@+41-4$E?1T52/3@@+6,@+BXO
M+BXO+BXO<VAA<F4O;7!I+V=R87!H8W)E871E+F,*9V-C("U/("U$3$E.55@@
M+41I>#@V("U)+VAO;64O87)Q=6DO;&%M-C$O:" M1%)025]32$T@+4132$U?
M4UE35B M1$U025]'15(]." M8R N+B\N+B\N+B]S:&%R92]M<&DO9W)A<&AD
M:6US9V5T+F,*9V-C("U/("U$3$E.55@@+41I>#@V("U)+VAO;64O87)Q=6DO
M;&%M-C$O:" M1%)025]32$T@+4132$U?4UE35B M1$U025]'15(]." M8R N
M+B\N+B\N+B]S:&%R92]M<&DO9W)A<&AG970N8PIG8V,@+4\@+41,24Y56" M
M1&EX.#8@+4DO:&]M92]A<G%U:2]L86TV,2]H("U$4E!)7U-(32 M1%-(35]3
M65-6("U$35!)7T=%4CTX("UC("XN+RXN+RXN+W-H87)E+VUP:2]G<F%P:&UA
M<"YC"F=C8R M3R M1$Q)3E58("U$:7@X-B M22]H;VUE+V%R<75I+VQA;38Q
M+V@@+4124$E?4TA-("U$4TA-7U-94U8@+41-4$E?1T52/3@@+6,@+BXO+BXO
M+BXO<VAA<F4O;7!I+V=R87!H;F)R+F,*9V-C("U/("U$3$E.55@@+41I>#@V
M("U)+VAO;64O87)Q=6DO;&%M-C$O:" M1%)025]32$T@+4132$U?4UE35B M
M1$U025]'15(]." M8R N+B\N+B\N+B]S:&%R92]M<&DO9W)A<&AN8G)C;W5N
M="YC"F=C8R M3R M1$Q)3E58("U$:7@X-B M22]H;VUE+V%R<75I+VQA;38Q
M+V@@+4124$E?4TA-("U$4TA-7U-94U8@+41-4$E?1T52/3@@+6,@+BXO+BXO
M+BXO<VAA<F4O;7!I+V=R97AC;"YC"F=C8R M3R M1$Q)3E58("U$:7@X-B M
M22]H;VUE+V%R<75I+VQA;38Q+V@@+4124$E?4TA-("U$4TA-7U-94U8@+41-
M4$E?1T52/3@@+6,@+BXO+BXO+BXO<VAA<F4O;7!I+V=R:6YC;"YC"F=C8R M
M3R M1$Q)3E58("U$:7@X-B M22]H;VUE+V%R<75I+VQA;38Q+V@@+4124$E?
M4TA-("U$4TA-7U-94U8@+41-4$E?1T52/3@@+6,@+BXO+BXO+BXO<VAA<F4O
M;7!I+V=S:7IE+F,*9V-C("U/("U$3$E.55@@+41I>#@V("U)+VAO;64O87)Q
M=6DO;&%M-C$O:" M1%)025]32$T@+4132$U?4UE35B M1$U025]'15(]." M
M8R N+B\N+B\N+B]S:&%R92]M<&DO9W1R86YK<RYC"F=C8R M3R M1$Q)3E58
M("U$:7@X-B M22]H;VUE+V%R<75I+VQA;38Q+V@@+4124$E?4TA-("U$4TA-
M7U-94U8@+41-4$E?1T52/3@@+6,@+BXO+BXO+BXO<VAA<F4O;7!I+V=U;FEO
M;BYC"F=C8R M3R M1$Q)3E58("U$:7@X-B M22]H;VUE+V%R<75I+VQA;38Q
M+V@@+4124$E?4TA-("U$4TA-7U-94U8@+41-4$E?1T52/3@@+6,@+BXO+BXO
M+BXO<VAA<F4O;7!I+VEB<V5N9"YC"F=C8R M3R M1$Q)3E58("U$:7@X-B M
M22]H;VUE+V%R<75I+VQA;38Q+V@@+4124$E?4TA-("U$4TA-7U-94U8@+41-
M4$E?1T52/3@@+6,@+BXO+BXO+BXO<VAA<F4O;7!I+VEC8W)E871E+F,*9V-C
M("U/("U$3$E.55@@+41I>#@V("U)+VAO;64O87)Q=6DO;&%M-C$O:" M1%)0
M25]32$T@+4132$U?4UE35B M1$U025]'15(]." M8R N+B\N+B\N+B]S:&%R
M92]M<&DO:6-M97)G92YC"F=C8R M3R M1$Q)3E58("U$:7@X-B M22]H;VUE
M+V%R<75I+VQA;38Q+V@@+4124$E?4TA-("U$4TA-7U-94U8@+41-4$E?1T52
M/3@@+6,@+BXO+BXO+BXO<VAA<F4O;7!I+VEN9F]C<F5A=&4N8PIG8V,@+4\@
M+41,24Y56" M1&EX.#8@+4DO:&]M92]A<G%U:2]L86TV,2]H("U$4E!)7U-(
M32 M1%-(35]365-6("U$35!)7T=%4CTX("UC("XN+RXN+RXN+W-H87)E+VUP
M:2]I;F9O9&5L+F,*9V-C("U/("U$3$E.55@@+41I>#@V("U)+VAO;64O87)Q
M=6DO;&%M-C$O:" M1%)025]32$T@+4132$U?4UE35B M1$U025]'15(]." M
M8R N+B\N+B\N+B]S:&%R92]M<&DO:6YF;V1U<"YC"F=C8R M3R M1$Q)3E58
M("U$:7@X-B M22]H;VUE+V%R<75I+VQA;38Q+V@@+4124$E?4TA-("U$4TA-
M7U-94U8@+41-4$E?1T52/3@@+6,@+BXO+BXO+BXO<VAA<F4O;7!I+VEN9F]F
M<F5E+F,*9V-C("U/("U$3$E.55@@+41I>#@V("U)+VAO;64O87)Q=6DO;&%M
M-C$O:" M1%)025]32$T@+4132$U?4UE35B M1$U025]'15(]." M8R N+B\N
M+B\N+B]S:&%R92]M<&DO:6YF;V=E="YC"F=C8R M3R M1$Q)3E58("U$:7@X
M-B M22]H;VUE+V%R<75I+VQA;38Q+V@@+4124$E?4TA-("U$4TA-7U-94U8@
M+41-4$E?1T52/3@@+6,@+BXO+BXO+BXO<VAA<F4O;7!I+VEN9F]G971N:V5Y
M<RYC"F=C8R M3R M1$Q)3E58("U$:7@X-B M22]H;VUE+V%R<75I+VQA;38Q
M+V@@+4124$E?4TA-("U$4TA-7U-94U8@+41-4$E?1T52/3@@+6,@+BXO+BXO
M+BXO<VAA<F4O;7!I+VEN9F]G971N=&@N8PIG8V,@+4\@+41,24Y56" M1&EX
M.#8@+4DO:&]M92]A<G%U:2]L86TV,2]H("U$4E!)7U-(32 M1%-(35]365-6
M("U$35!)7T=%4CTX("UC("XN+RXN+RXN+W-H87)E+VUP:2]I;F9O9V5T=FQE
M;BYC"F=C8R M3R M1$Q)3E58("U$:7@X-B M22]H;VUE+V%R<75I+VQA;38Q
M+V@@+4124$E?4TA-("U$4TA-7U-94U8@+41-4$E?1T52/3@@+6,@+BXO+BXO
M+BXO<VAA<F4O;7!I+VEN9F]S970N8PIG8V,@+4\@+41,24Y56" M1&EX.#8@
M+4DO:&]M92]A<G%U:2]L86TV,2]H("U$4E!)7U-(32 M1%-(35]365-6("U$
M35!)7T=%4CTX("UC("XN+RXN+RXN+W-H87)E+VUP:2]I;FET+F,*9V-C("U/
M("U$3$E.55@@+41I>#@V("U)+VAO;64O87)Q=6DO;&%M-C$O:" M1%)025]3
M2$T@+4132$U?4UE35B M1$U025]'15(]." M8R N+B\N+B\N+B]S:&%R92]M
M<&DO:6YI=&5D+F,*9V-C("U/("U$3$E.55@@+41I>#@V("U)+VAO;64O87)Q
M=6DO;&%M-C$O:" M1%)025]32$T@+4132$U?4UE35B M1$U025]'15(]." M
M8R N+B\N+B\N+B]S:&%R92]M<&DO:7!R;V)E+F,*9V-C("U/("U$3$E.55@@
M+41I>#@V("U)+VAO;64O87)Q=6DO;&%M-C$O:" M1%)025]32$T@+4132$U?
M4UE35B M1$U025]'15(]." M8R N+B\N+B\N+B]S:&%R92]M<&DO:7)E8W8N
M8PIG8V,@+4\@+41,24Y56" M1&EX.#8@+4DO:&]M92]A<G%U:2]L86TV,2]H
M("U$4E!)7U-(32 M1%-(35]365-6("U$35!)7T=%4CTX("UC("XN+RXN+RXN
M+W-H87)E+VUP:2]I<G-E;F0N8PIG8V,@+4\@+41,24Y56" M1&EX.#8@+4DO
M:&]M92]A<G%U:2]L86TV,2]H("U$4E!)7U-(32 M1%-(35]365-6("U$35!)
M7T=%4CTX("UC("XN+RXN+RXN+W-H87)E+VUP:2]I<V5N9"YC"F=C8R M3R M
M1$Q)3E58("U$:7@X-B M22]H;VUE+V%R<75I+VQA;38Q+V@@+4124$E?4TA-
M("U$4TA-7U-94U8@+41-4$E?1T52/3@@+6,@+BXO+BXO+BXO<VAA<F4O;7!I
M+VES<V5N9"YC"F=C8R M3R M1$Q)3E58("U$:7@X-B M22]H;VUE+V%R<75I
M+VQA;38Q+V@@+4124$E?4TA-("U$4TA-7U-94U8@+41-4$E?1T52/3@@+6,@
M+BXO+BXO+BXO<VAA<F4O;7!I+VME>6-R96%T92YC"F=C8R M3R M1$Q)3E58
M("U$:7@X-B M22]H;VUE+V%R<75I+VQA;38Q+V@@+4124$E?4TA-("U$4TA-
M7U-94U8@+41-4$E?1T52/3@@+6,@+BXO+BXO+BXO<VAA<F4O;7!I+VME>69R
M964N8PIG8V,@+4\@+41,24Y56" M1&EX.#8@+4DO:&]M92]A<G%U:2]L86TV
M,2]H("U$4E!)7U-(32 M1%-(35]365-6("U$35!)7T=%4CTX("UC("XN+RXN
M+RXN+W-H87)E+VUP:2]L86UA='1R+F,*9V-C("U/("U$3$E.55@@+41I>#@V
M("U)+VAO;64O87)Q=6DO;&%M-C$O:" M1%)025]32$T@+4132$U?4UE35B M
M1$U025]'15(]." M8R N+B\N+B\N+B]S:&%R92]M<&DO;&%M8G5F+F,*9V-C
M("U/("U$3$E.55@@+41I>#@V("U)+VAO;64O87)Q=6DO;&%M-C$O:" M1%)0
M25]32$T@+4132$U?4UE35B M1$U025]'15(]." M8R N+B\N+B\N+B]S:&%R
M92]M<&DO;&%M8VED+F,*9V-C("U/("U$3$E.55@@+41I>#@V("U)+VAO;64O
M87)Q=6DO;&%M-C$O:" M1%)025]32$T@+4132$U?4UE35B M1$U025]'15(]
M." M8R N+B\N+B\N+B]S:&%R92]M<&DO;&%M8VQO8VMS+F,*9V-C("U/("U$
M3$E.55@@+41I>#@V("U)+VAO;64O87)Q=6DO;&%M-C$O:" M1%)025]32$T@
M+4132$U?4UE35B M1$U025]'15(]." M8R N+B\N+B\N+B]S:&%R92]M<&DO
M;&%M8V]M;2YC"F=C8R M3R M1$Q)3E58("U$:7@X-B M22]H;VUE+V%R<75I
M+VQA;38Q+V@@+4124$E?4TA-("U$4TA-7U-94U8@+41-4$E?1T52/3@@+6,@
M+BXO+BXO+BXO<VAA<F4O;7!I+VQA;61E9F5R<BYC"F=C8R M3R M1$Q)3E58
M("U$:7@X-B M22]H;VUE+V%R<75I+VQA;38Q+V@@+4124$E?4TA-("U$4TA-
M7U-94U8@+41-4$E?1T52/3@@+6,@+BXO+BXO+BXO<VAA<F4O;7!I+VQA;61T
M>7!E+F,*9V-C("U/("U$3$E.55@@+41I>#@V("U)+VAO;64O87)Q=6DO;&%M
M-C$O:" M1%)025]32$T@+4132$U?4UE35B M1$U025]'15(]." M8R N+B\N
M+B\N+B]S:&%R92]M<&DO;&%M9F%U;'0N8PIG8V,@+4\@+41,24Y56" M1&EX
M.#8@+4DO:&]M92]A<G%U:2]L86TV,2]H("U$4E!)7U-(32 M1%-(35]365-6
M("U$35!)7T=%4CTX("UC("XN+RXN+RXN+W-H87)E+VUP:2]L86UI;FET+F,*
M9V-C("U/("U$3$E.55@@+41I>#@V("U)+VAO;64O87)Q=6DO;&%M-C$O:" M
M1%)025]32$T@+4132$U?4UE35B M1$U025]'15(]." M8R N+B\N+B\N+B]S
M:&%R92]M<&DO;&%M:6YI=&5D+F,*9V-C("U/("U$3$E.55@@+41I>#@V("U)
M+VAO;64O87)Q=6DO;&%M-C$O:" M1%)025]32$T@+4132$U?4UE35B M1$U0
M25]'15(]." M8R N+B\N+B\N+B]S:&%R92]M<&DO;&%M;6ES8RYC"F=C8R M
M3R M1$Q)3E58("U$:7@X-B M22]H;VUE+V%R<75I+VQA;38Q+V@@+4124$E?
M4TA-("U$4TA-7U-94U8@+41-4$E?1T52/3@@+6,@+BXO+BXO+BXO<VAA<F4O
M;7!I+VQA;7!A8VLN8PIG8V,@+4\@+41,24Y56" M1&EX.#8@+4DO:&]M92]A
M<G%U:2]L86TV,2]H("U$4E!)7U-(32 M1%-(35]365-6("U$35!)7T=%4CTX
M("UC("XN+RXN+RXN+W-H87)E+VUP:2]L86UP;W)T<RYC"F=C8R M3R M1$Q)
M3E58("U$:7@X-B M22]H;VUE+V%R<75I+VQA;38Q+V@@+4124$E?4TA-("U$
M4TA-7U-94U8@+41-4$E?1T52/3@@+6,@+BXO+BXO+BXO<VAA<F4O;7!I+VQA
M;7!R;V-S+F,*9V-C("U/("U$3$E.55@@+41I>#@V("U)+VAO;64O87)Q=6DO
M;&%M-C$O:" M1%)025]32$T@+4132$U?4UE35B M1$U025]'15(]." M8R N
M+B\N+B\N+B]S:&%R92]M<&DO;&%M<F5D=6-E+F,*9V-C("U/("U$3$E.55@@
M+41I>#@V("U)+VAO;64O87)Q=6DO;&%M-C$O:" M1%)025]32$T@+4132$U?
M4UE35B M1$U025]'15(]." M8R N+B\N+B\N+B]S:&%R92]M<&DO;&%M<F5Q
M<RYC"F=C8R M3R M1$Q)3E58("U$:7@X-B M22]H;VUE+V%R<75I+VQA;38Q
M+V@@+4124$E?4TA-("U$4TA-7U-94U8@+41-4$E?1T52/3@@+6,@+BXO+BXO
M+BXO<VAA<F4O;7!I+VQA;7-E;F0N8PIG8V,@+4\@+41,24Y56" M1&EX.#8@
M+4DO:&]M92]A<G%U:2]L86TV,2]H("U$4E!)7U-(32 M1%-(35]365-6("U$
M35!)7T=%4CTX("UC("XN+RXN+RXN+W-H87)E+VUP:2]L86UT97-T+F,*9V-C
M("U/("U$3$E.55@@+41I>#@V("U)+VAO;64O87)Q=6DO;&%M-C$O:" M1%)0
M25]32$T@+4132$U?4UE35B M1$U025]'15(]." M8R N+B\N+B\N+B]S:&%R
M92]M<&DO;&%M=')A8V4N8PIG8V,@+4\@+41,24Y56" M1&EX.#8@+4DO:&]M
M92]A<G%U:2]L86TV,2]H("U$4E!)7U-(32 M1%-(35]365-6("U$35!)7T=%
M4CTX("UC("XN+RXN+RXN+W-H87)E+VUP:2]L86UU;G!A8VLN8PIG8V,@+4\@
M+41,24Y56" M1&EX.#8@+4DO:&]M92]A<G%U:2]L86TV,2]H("U$4E!)7U-(
M32 M1%-(35]365-6("U$35!)7T=%4CTX("UC("XN+RXN+RXN+W-H87)E+VUP
M:2]L86UU<&1O=VXN8PIG8V,@+4\@+41,24Y56" M1&EX.#8@+4DO:&]M92]A
M<G%U:2]L86TV,2]H("U$4E!)7U-(32 M1%-(35]365-6("U$35!)7T=%4CTX
M("UC("XN+RXN+RXN+W-H87)E+VUP:2]M,FPN8PIG8V,@+4\@+41,24Y56" M
M1&EX.#8@+4DO:&]M92]A<G%U:2]L86TV,2]H("U$4E!)7U-(32 M1%-(35]3
M65-6("U$35!)7T=%4CTX("UC("XN+RXN+RXN+W-H87)E+VUP:2]M<&EE=&,N
M8PIG8V,@+4\@+41,24Y56" M1&EX.#8@+4DO:&]M92]A<G%U:2]L86TV,2]H
M("U$4E!)7U-(32 M1%-(35]365-6("U$35!)7T=%4CTX("UC("XN+RXN+RXN
M+W-H87)E+VUP:2]M<&EL7VED+F,*9V-C("U/("U$3$E.55@@+41I>#@V("U)
M+VAO;64O87)Q=6DO;&%M-C$O:" M1%)025]32$T@+4132$U?4UE35B M1$U0
M25]'15(]." M8R N+B\N+B\N+B]S:&%R92]M<&DO;7!I;%]S:6=N86PN8PIG
M8V,@+4\@+41,24Y56" M1&EX.#8@+4DO:&]M92]A<G%U:2]L86TV,2]H("U$
M4E!)7U-(32 M1%-(35]365-6("U$35!)7T=%4CTX("UC("XN+RXN+RXN+W-H
M87)E+VUP:2]M<&EL7W-P87=N+F,*9V-C("U/("U$3$E.55@@+41I>#@V("U)
M+VAO;64O87)Q=6DO;&%M-C$O:" M1%)025]32$T@+4132$U?4UE35B M1$U0
M25]'15(]." M8R N+B\N+B\N+B]S:&%R92]M<&DO;7!I;%]T<F%C92YC"F=C
M8R M3R M1$Q)3E58("U$:7@X-B M22]H;VUE+V%R<75I+VQA;38Q+V@@+412
M4$E?4TA-("U$4TA-7U-94U8@+41-4$E?1T52/3@@+6,@+BXO+BXO+BXO<VAA
M<F4O;7!I+VYA;65G970N8PIG8V,@+4\@+41,24Y56" M1&EX.#8@+4DO:&]M
M92]A<G%U:2]L86TV,2]H("U$4E!)7U-(32 M1%-(35]365-6("U$35!)7T=%
M4CTX("UC("XN+RXN+RXN+W-H87)E+VUP:2]N86UE<'5B+F,*9V-C("U/("U$
M3$E.55@@+41I>#@V("U)+VAO;64O87)Q=6DO;&%M-C$O:" M1%)025]32$T@
M+4132$U?4UE35B M1$U025]'15(]." M8R N+B\N+B\N+B]S:&%R92]M<&DO
M;F%M975N<'5B+F,*9V-C("U/("U$3$E.55@@+41I>#@V("U)+VAO;64O87)Q
M=6DO;&%M-C$O:" M1%)025]32$T@+4132$U?4UE35B M1$U025]'15(]." M
M8R N+B\N+B\N+B]S:&%R92]M<&DO;W!C<F5A=&4N8PIG8V,@+4\@+41,24Y5
M6" M1&EX.#8@+4DO:&]M92]A<G%U:2]L86TV,2]H("U$4E!)7U-(32 M1%-(
M35]365-6("U$35!)7T=%4CTX("UC("XN+RXN+RXN+W-H87)E+VUP:2]O<&9R
M964N8PIG8V,@+4\@+41,24Y56" M1&EX.#8@+4DO:&]M92]A<G%U:2]L86TV
M,2]H("U$4E!)7U-(32 M1%-(35]365-6("U$35!)7T=%4CTX("UC("XN+RXN
M+RXN+W-H87)E+VUP:2]P86-K+F,*9V-C("U/("U$3$E.55@@+41I>#@V("U)
M+VAO;64O87)Q=6DO;&%M-C$O:" M1%)025]32$T@+4132$U?4UE35B M1$U0
M25]'15(]." M8R N+B\N+B\N+B]S:&%R92]M<&DO<&%C:W-I>F4N8PIG8V,@
M+4\@+41,24Y56" M1&EX.#8@+4DO:&]M92]A<G%U:2]L86TV,2]H("U$4E!)
M7U-(32 M1%-(35]365-6("U$35!)7T=%4CTX("UC("XN+RXN+RXN+W-H87)E
M+VUP:2]P8V]N=')O;"YC"F=C8R M3R M1$Q)3E58("U$:7@X-B M22]H;VUE
M+V%R<75I+VQA;38Q+V@@+4124$E?4TA-("U$4TA-7U-94U8@+41-4$E?1T52
M/3@@+6,@+BXO+BXO+BXO<VAA<F4O;7!I+W!O<G1C;&]S92YC"F=C8R M3R M
M1$Q)3E58("U$:7@X-B M22]H;VUE+V%R<75I+VQA;38Q+V@@+4124$E?4TA-
M("U$4TA-7U-94U8@+41-4$E?1T52/3@@+6,@+BXO+BXO+BXO<VAA<F4O;7!I
M+W!O<G1O<&5N+F,*9V-C("U/("U$3$E.55@@+41I>#@V("U)+VAO;64O87)Q
M=6DO;&%M-C$O:" M1%)025]32$T@+4132$U?4UE35B M1$U025]'15(]." M
M8R N+B\N+B\N+B]S:&%R92]M<&DO<')O8F4N8PIG8V,@+4\@+41,24Y56" M
M1&EX.#8@+4DO:&]M92]A<G%U:2]L86TV,2]H("U$4E!)7U-(32 M1%-(35]3
M65-6("U$35!)7T=%4CTX("UC("XN+RXN+RXN+W-H87)E+VUP:2]R96-V+F,*
M9V-C("U/("U$3$E.55@@+41I>#@V("U)+VAO;64O87)Q=6DO;&%M-C$O:" M
M1%)025]32$T@+4132$U?4UE35B M1$U025]'15(]." M8R N+B\N+B\N+B]S
M:&%R92]M<&DO<F5C=FEN:70N8PIG8V,@+4\@+41,24Y56" M1&EX.#8@+4DO
M:&]M92]A<G%U:2]L86TV,2]H("U$4E!)7U-(32 M1%-(35]365-6("U$35!)
M7T=%4CTX("UC("XN+RXN+RXN+W-H87)E+VUP:2]R961U8V4N8PIG8V,@+4\@
M+41,24Y56" M1&EX.#8@+4DO:&]M92]A<G%U:2]L86TV,2]H("U$4E!)7U-(
M32 M1%-(35]365-6("U$35!)7T=%4CTX("UC("XN+RXN+RXN+W-H87)E+VUP
M:2]R961U8V5S8V%T=&5R+F,*9V-C("U/("U$3$E.55@@+41I>#@V("U)+VAO
M;64O87)Q=6DO;&%M-C$O:" M1%)025]32$T@+4132$U?4UE35B M1$U025]'
M15(]." M8R N+B\N+B\N+B]S:&%R92]M<&DO<F5Q9G)E92YC"F=C8R M3R M
M1$Q)3E58("U$:7@X-B M22]H;VUE+V%R<75I+VQA;38Q+V@@+4124$E?4TA-
M("U$4TA-7U-94U8@+41-4$E?1T52/3@@+6,@+BXO+BXO+BXO<VAA<F4O;7!I
M+W)P:2YL86UD+F,*9V-C("U/("U$3$E.55@@+41I>#@V("U)+VAO;64O87)Q
M=6DO;&%M-C$O:" M1%)025]32$T@+4132$U?4UE35B M1$U025]'15(]." M
M8R N+B\N+B\N+B]S:&%R92]M<&DO<G-E;F0N8PIG8V,@+4\@+41,24Y56" M
M1&EX.#8@+4DO:&]M92]A<G%U:2]L86TV,2]H("U$4E!)7U-(32 M1%-(35]3
M65-6("U$35!)7T=%4CTX("UC("XN+RXN+RXN+W-H87)E+VUP:2]R<V5N9&EN
M:70N8PIG8V,@+4\@+41,24Y56" M1&EX.#8@+4DO:&]M92]A<G%U:2]L86TV
M,2]H("U$4E!)7U-(32 M1%-(35]365-6("U$35!)7T=%4CTX("UC("XN+RXN
M+RXN+W-H87)E+VUP:2]S8V%N+F,*9V-C("U/("U$3$E.55@@+41I>#@V("U)
M+VAO;64O87)Q=6DO;&%M-C$O:" M1%)025]32$T@+4132$U?4UE35B M1$U0
M25]'15(]." M8R N+B\N+B\N+B]S:&%R92]M<&DO<V-A='1E<BYC"F=C8R M
M3R M1$Q)3E58("U$:7@X-B M22]H;VUE+V%R<75I+VQA;38Q+V@@+4124$E?
M4TA-("U$4TA-7U-94U8@+41-4$E?1T52/3@@+6,@+BXO+BXO+BXO<VAA<F4O
M;7!I+W-C871T97)V+F,*9V-C("U/("U$3$E.55@@+41I>#@V("U)+VAO;64O
M87)Q=6DO;&%M-C$O:" M1%)025]32$T@+4132$U?4UE35B M1$U025]'15(]
M." M8R N+B\N+B\N+B]S:&%R92]M<&DO<V5N9"YC"F=C8R M3R M1$Q)3E58
M("U$:7@X-B M22]H;VUE+V%R<75I+VQA;38Q+V@@+4124$E?4TA-("U$4TA-
M7U-94U8@+41-4$E?1T52/3@@+6,@+BXO+BXO+BXO<VAA<F4O;7!I+W-E;F1I
M;FET+F,*9V-C("U/("U$3$E.55@@+41I>#@V("U)+VAO;64O87)Q=6DO;&%M
M-C$O:" M1%)025]32$T@+4132$U?4UE35B M1$U025]'15(]." M8R N+B\N
M+B\N+B]S:&%R92]M<&DO<V5N9')E8W8N8PIG8V,@+4\@+41,24Y56" M1&EX
M.#8@+4DO:&]M92]A<G%U:2]L86TV,2]H("U$4E!)7U-(32 M1%-(35]365-6
M("U$35!)7T=%4CTX("UC("XN+RXN+RXN+W-H87)E+VUP:2]S96YD<F5C=G)E
M<"YC"F=C8R M3R M1$Q)3E58("U$:7@X-B M22]H;VUE+V%R<75I+VQA;38Q
M+V@@+4124$E?4TA-("U$4TA-7U-94U8@+41-4$E?1T52/3@@+6,@+BXO+BXO
M+BXO<VAA<F4O;7!I+W-P87=N+F,*9V-C("U/("U$3$E.55@@+41I>#@V("U)
M+VAO;64O87)Q=6DO;&%M-C$O:" M1%)025]32$T@+4132$U?4UE35B M1$U0
M25]'15(]." M8R N+B\N+B\N+B]S:&%R92]M<&DO<W!A=VYM=6QT+F,*9V-C
M("U/("U$3$E.55@@+41I>#@V("U)+VAO;64O87)Q=6DO;&%M-C$O:" M1%)0
M25]32$T@+4132$U?4UE35B M1$U025]'15(]." M8R N+B\N+B\N+B]S:&%R
M92]M<&DO<W-E;F0N8PIG8V,@+4\@+41,24Y56" M1&EX.#8@+4DO:&]M92]A
M<G%U:2]L86TV,2]H("U$4E!)7U-(32 M1%-(35]365-6("U$35!)7T=%4CTX
M("UC("XN+RXN+RXN+W-H87)E+VUP:2]S<V5N9&EN:70N8PIG8V,@+4\@+41,
M24Y56" M1&EX.#8@+4DO:&]M92]A<G%U:2]L86TV,2]H("U$4E!)7U-(32 M
M1%-(35]365-6("U$35!)7T=%4CTX("UC("XN+RXN+RXN+W-H87)E+VUP:2]S
M=&%R="YC"F=C8R M3R M1$Q)3E58("U$:7@X-B M22]H;VUE+V%R<75I+VQA
M;38Q+V@@+4124$E?4TA-("U$4TA-7U-94U8@+41-4$E?1T52/3@@+6,@+BXO
M+BXO+BXO<VAA<F4O;7!I+W-T87)T86QL+F,*9V-C("U/("U$3$E.55@@+41I
M>#@V("U)+VAO;64O87)Q=6DO;&%M-C$O:" M1%)025]32$T@+4132$U?4UE3
M5B M1$U025]'15(]." M8R N+B\N+B\N+B]S:&%R92]M<&DO=&-O;6UI="YC
M"F=C8R M3R M1$Q)3E58("U$:7@X-B M22]H;VUE+V%R<75I+VQA;38Q+V@@
M+4124$E?4TA-("U$4TA-7U-94U8@+41-4$E?1T52/3@@+6,@+BXO+BXO+BXO
M<VAA<F4O;7!I+W1C;VYT:6<N8PIG8V,@+4\@+41,24Y56" M1&EX.#8@+4DO
M:&]M92]A<G%U:2]L86TV,2]H("U$4E!)7U-(32 M1%-(35]365-6("U$35!)
M7T=%4CTX("UC("XN+RXN+RXN+W-H87)E+VUP:2]T97-T+F,*9V-C("U/("U$
M3$E.55@@+41I>#@V("U)+VAO;64O87)Q=6DO;&%M-C$O:" M1%)025]32$T@
M+4132$U?4UE35B M1$U025]'15(]." M8R N+B\N+B\N+B]S:&%R92]M<&DO
M=&5S=&%L;"YC"F=C8R M3R M1$Q)3E58("U$:7@X-B M22]H;VUE+V%R<75I
M+VQA;38Q+V@@+4124$E?4TA-("U$4TA-7U-94U8@+41-4$E?1T52/3@@+6,@
M+BXO+BXO+BXO<VAA<F4O;7!I+W1E<W1A;GDN8PIG8V,@+4\@+41,24Y56" M
M1&EX.#8@+4DO:&]M92]A<G%U:2]L86TV,2]H("U$4E!)7U-(32 M1%-(35]3
M65-6("U$35!)7T=%4CTX("UC("XN+RXN+RXN+W-H87)E+VUP:2]T97-T8V%N
M8V5L+F,*9V-C("U/("U$3$E.55@@+41I>#@V("U)+VAO;64O87)Q=6DO;&%M
M-C$O:" M1%)025]32$T@+4132$U?4UE35B M1$U025]'15(]." M8R N+B\N
M+B\N+B]S:&%R92]M<&DO=&5S='-O;64N8PIG8V,@+4\@+41,24Y56" M1&EX
M.#8@+4DO:&]M92]A<G%U:2]L86TV,2]H("U$4E!)7U-(32 M1%-(35]365-6
M("U$35!)7T=%4CTX("UC("XN+RXN+RXN+W-H87)E+VUP:2]T97AT96YT+F,*
M9V-C("U/("U$3$E.55@@+41I>#@V("U)+VAO;64O87)Q=6DO;&%M-C$O:" M
M1%)025]32$T@+4132$U?4UE35B M1$U025]'15(]." M8R N+B\N+B\N+B]S
M:&%R92]M<&DO=&9R964N8PIG8V,@+4\@+41,24Y56" M1&EX.#8@+4DO:&]M
M92]A<G%U:2]L86TV,2]H("U$4E!)7U-(32 M1%-(35]365-6("U$35!)7T=%
M4CTX("UC("XN+RXN+RXN+W-H87)E+VUP:2]T:&EN9&5X+F,*9V-C("U/("U$
M3$E.55@@+41I>#@V("U)+VAO;64O87)Q=6DO;&%M-C$O:" M1%)025]32$T@
M+4132$U?4UE35B M1$U025]'15(]." M8R N+B\N+B\N+B]S:&%R92]M<&DO
M=&AV96-T;W(N8PIG8V,@+4\@+41,24Y56" M1&EX.#8@+4DO:&]M92]A<G%U
M:2]L86TV,2]H("U$4E!)7U-(32 M1%-(35]365-6("U$35!)7T=%4CTX("UC
M("XN+RXN+RXN+W-H87)E+VUP:2]T:6YD97@N8PIG8V,@+4\@+41,24Y56" M
M1&EX.#8@+4DO:&]M92]A<G%U:2]L86TV,2]H("U$4E!)7U-(32 M1%-(35]3
M65-6("U$35!)7T=%4CTX("UC("XN+RXN+RXN+W-H87)E+VUP:2]T;&(N8PIG
M8V,@+4\@+41,24Y56" M1&EX.#8@+4DO:&]M92]A<G%U:2]L86TV,2]H("U$
M4E!)7U-(32 M1%-(35]365-6("U$35!)7T=%4CTX("UC("XN+RXN+RXN+W-H
M87)E+VUP:2]T;W!O=&5S="YC"F=C8R M3R M1$Q)3E58("U$:7@X-B M22]H
M;VUE+V%R<75I+VQA;38Q+V@@+4124$E?4TA-("U$4TA-7U-94U8@+41-4$E?
M1T52/3@@+6,@+BXO+BXO+BXO<VAA<F4O;7!I+W1S:7IE+F,*9V-C("U/("U$
M3$E.55@@+41I>#@V("U)+VAO;64O87)Q=6DO;&%M-C$O:" M1%)025]32$T@
M+4132$U?4UE35B M1$U025]'15(]." M8R N+B\N+B\N+B]S:&%R92]M<&DO
M='-T<G5C="YC"F=C8R M3R M1$Q)3E58("U$:7@X-B M22]H;VUE+V%R<75I
M+VQA;38Q+V@@+4124$E?4TA-("U$4TA-7U-94U8@+41-4$E?1T52/3@@+6,@
M+BXO+BXO+BXO<VAA<F4O;7!I+W1U8BYC"F=C8R M3R M1$Q)3E58("U$:7@X
M-B M22]H;VUE+V%R<75I+VQA;38Q+V@@+4124$E?4TA-("U$4TA-7U-94U8@
M+41-4$E?1T52/3@@+6,@+BXO+BXO+BXO<VAA<F4O;7!I+W1V96-T;W(N8PIG
M8V,@+4\@+41,24Y56" M1&EX.#8@+4DO:&]M92]A<G%U:2]L86TV,2]H("U$
M4E!)7U-(32 M1%-(35]365-6("U$35!)7T=%4CTX("UC("XN+RXN+RXN+W-H
M87)E+VUP:2]U;G!A8VLN8PIG8V,@+4\@+41,24Y56" M1&EX.#8@+4DO:&]M
M92]A<G%U:2]L86TV,2]H("U$4E!)7U-(32 M1%-(35]365-6("U$35!)7T=%
M4CTX("UC("XN+RXN+RXN+W-H87)E+VUP:2]W86ET+F,*9V-C("U/("U$3$E.
M55@@+41I>#@V("U)+VAO;64O87)Q=6DO;&%M-C$O:" M1%)025]32$T@+413
M2$U?4UE35B M1$U025]'15(]." M8R N+B\N+B\N+B]S:&%R92]M<&DO=V%I
M=&%L;"YC"F=C8R M3R M1$Q)3E58("U$:7@X-B M22]H;VUE+V%R<75I+VQA
M;38Q+V@@+4124$E?4TA-("U$4TA-7U-94U8@+41-4$E?1T52/3@@+6,@+BXO
M+BXO+BXO<VAA<F4O;7!I+W=A:71A;GDN8PIG8V,@+4\@+41,24Y56" M1&EX
M.#8@+4DO:&]M92]A<G%U:2]L86TV,2]H("U$4E!)7U-(32 M1%-(35]365-6
M("U$35!)7T=%4CTX("UC("XN+RXN+RXN+W-H87)E+VUP:2]W86ET<V]M92YC
M"F=C8R M3R M1$Q)3E58("U$:7@X-B M22]H;VUE+V%R<75I+VQA;38Q+V@@
M+4124$E?4TA-("U$4TA-7U-94U8@+41-4$E?1T52/3@@+6,@+BXO+BXO+BXO
M<VAA<F4O;7!I+W=T:6-K+F,*9V-C("U/("U$3$E.55@@+41I>#@V("U)+VAO
M;64O87)Q=6DO;&%M-C$O:" M1%)025]32$T@+4132$U?4UE35B M1$U025]'
M15(]." M8R N+B\N+B\N+B]S:&%R92]M<&DO=W1I;64N8PIG8V,@+4\@+41,
M24Y56" M1&EX.#8@+4DO:&]M92]A<G%U:2]L86TV,2]H("U$4E!)7U-(32 M
M1%-(35]365-6("U$35!)7T=%4CTX("UC("XN+RXN+RXN+W-H87)E+VUP:2]F
M-S<O35!)+F,*9V-C("U/("U$3$E.55@@+41I>#@V("U)+VAO;64O87)Q=6DO
M;&%M-C$O:" M1%)025]32$T@+4132$U?4UE35B M1$U025]'15(]." M8R N
M+B\N+B\N+B]S:&%R92]M<&DO9C<W+V%B;W)T7V8N8PIG8V,@+4\@+41,24Y5
M6" M1&EX.#8@+4DO:&]M92]A<G%U:2]L86TV,2]H("U$4E!)7U-(32 M1%-(
M35]365-6("U$35!)7T=%4CTX("UC("XN+RXN+RXN+W-H87)E+VUP:2]F-S<O
M86-C97!T7V8N8PIG8V,@+4\@+41,24Y56" M1&EX.#8@+4DO:&]M92]A<G%U
M:2]L86TV,2]H("U$4E!)7U-(32 M1%-(35]365-6("U$35!)7T=%4CTX("UC
M("XN+RXN+RXN+W-H87)E+VUP:2]F-S<O861D<F5S<U]F+F,*9V-C("U/("U$
M3$E.55@@+41I>#@V("U)+VAO;64O87)Q=6DO;&%M-C$O:" M1%)025]32$T@
M+4132$U?4UE35B M1$U025]'15(]." M8R N+B\N+B\N+B]S:&%R92]M<&DO
M9C<W+V%L;&=A=&AE<E]F+F,*9V-C("U/("U$3$E.55@@+41I>#@V("U)+VAO
M;64O87)Q=6DO;&%M-C$O:" M1%)025]32$T@+4132$U?4UE35B M1$U025]'
M15(]." M8R N+B\N+B\N+B]S:&%R92]M<&DO9C<W+V%L;&=A=&AE<G9?9BYC
M"F=C8R M3R M1$Q)3E58("U$:7@X-B M22]H;VUE+V%R<75I+VQA;38Q+V@@
M+4124$E?4TA-("U$4TA-7U-94U8@+41-4$E?1T52/3@@+6,@+BXO+BXO+BXO
M<VAA<F4O;7!I+V8W-R]A;&QR961U8V5?9BYC"F=C8R M3R M1$Q)3E58("U$
M:7@X-B M22]H;VUE+V%R<75I+VQA;38Q+V@@+4124$E?4TA-("U$4TA-7U-9
M4U8@+41-4$E?1T52/3@@+6,@+BXO+BXO+BXO<VAA<F4O;7!I+V8W-R]A;&QT
M;V%L;%]F+F,*9V-C("U/("U$3$E.55@@+41I>#@V("U)+VAO;64O87)Q=6DO
M;&%M-C$O:" M1%)025]32$T@+4132$U?4UE35B M1$U025]'15(]." M8R N
M+B\N+B\N+B]S:&%R92]M<&DO9C<W+V%L;'1O86QL=E]F+F,*9V-C("U/("U$
M3$E.55@@+41I>#@V("U)+VAO;64O87)Q=6DO;&%M-C$O:" M1%)025]32$T@
M+4132$U?4UE35B M1$U025]'15(]." M8R N+B\N+B\N+B]S:&%R92]M<&DO
M9C<W+V%T=')D96Q?9BYC"F=C8R M3R M1$Q)3E58("U$:7@X-B M22]H;VUE
M+V%R<75I+VQA;38Q+V@@+4124$E?4TA-("U$4TA-7U-94U8@+41-4$E?1T52
M/3@@+6,@+BXO+BXO+BXO<VAA<F4O;7!I+V8W-R]A='1R9V5T7V8N8PIG8V,@
M+4\@+41,24Y56" M1&EX.#8@+4DO:&]M92]A<G%U:2]L86TV,2]H("U$4E!)
M7U-(32 M1%-(35]365-6("U$35!)7T=%4CTX("UC("XN+RXN+RXN+W-H87)E
M+VUP:2]F-S<O871T<G!U=%]F+F,*9V-C("U/("U$3$E.55@@+41I>#@V("U)
M+VAO;64O87)Q=6DO;&%M-C$O:" M1%)025]32$T@+4132$U?4UE35B M1$U0
M25]'15(]." M8R N+B\N+B\N+B]S:&%R92]M<&DO9C<W+V)A<G)I97)?9BYC
M"F=C8R M3R M1$Q)3E58("U$:7@X-B M22]H;VUE+V%R<75I+VQA;38Q+V@@
M+4124$E?4TA-("U$4TA-7U-94U8@+41-4$E?1T52/3@@+6,@+BXO+BXO+BXO
M<VAA<F4O;7!I+V8W-R]B8V%S=%]F+F,*9V-C("U/("U$3$E.55@@+41I>#@V
M("U)+VAO;64O87)Q=6DO;&%M-C$O:" M1%)025]32$T@+4132$U?4UE35B M
M1$U025]'15(]." M8R N+B\N+B\N+B]S:&%R92]M<&DO9C<W+V)S96YD7V8N
M8PIG8V,@+4\@+41,24Y56" M1&EX.#8@+4DO:&]M92]A<G%U:2]L86TV,2]H
M("U$4E!)7U-(32 M1%-(35]365-6("U$35!)7T=%4CTX("UC("XN+RXN+RXN
M+W-H87)E+VUP:2]F-S<O8G-E;F1I;FET7V8N8PIG8V,@+4\@+41,24Y56" M
M1&EX.#8@+4DO:&]M92]A<G%U:2]L86TV,2]H("U$4E!)7U-(32 M1%-(35]3
M65-6("U$35!)7T=%4CTX("UC("XN+RXN+RXN+W-H87)E+VUP:2]F-S<O8G5F
M871T86-H7V8N8PIG8V,@+4\@+41,24Y56" M1&EX.#8@+4DO:&]M92]A<G%U
M:2]L86TV,2]H("U$4E!)7U-(32 M1%-(35]365-6("U$35!)7T=%4CTX("UC
M("XN+RXN+RXN+W-H87)E+VUP:2]F-S<O8G5F9&5T86-H7V8N8PIG8V,@+4\@
M+41,24Y56" M1&EX.#8@+4DO:&]M92]A<G%U:2]L86TV,2]H("U$4E!)7U-(
M32 M1%-(35]365-6("U$35!)7T=%4CTX("UC("XN+RXN+RXN+W-H87)E+VUP
M:2]F-S<O8V%N8V5L7V8N8PIG8V,@+4\@+41,24Y56" M1&EX.#8@+4DO:&]M
M92]A<G%U:2]L86TV,2]H("U$4E!)7U-(32 M1%-(35]365-6("U$35!)7T=%
M4CTX("UC("XN+RXN+RXN+W-H87)E+VUP:2]F-S<O8V%R=&-O;W)D<U]F+F,*
M9V-C("U/("U$3$E.55@@+41I>#@V("U)+VAO;64O87)Q=6DO;&%M-C$O:" M
M1%)025]32$T@+4132$U?4UE35B M1$U025]'15(]." M8R N+B\N+B\N+B]S
M:&%R92]M<&DO9C<W+V-A<G1C<F5A=&5?9BYC"F=C8R M3R M1$Q)3E58("U$
M:7@X-B M22]H;VUE+V%R<75I+VQA;38Q+V@@+4124$E?4TA-("U$4TA-7U-9
M4U8@+41-4$E?1T52/3@@+6,@+BXO+BXO+BXO<VAA<F4O;7!I+V8W-R]C87)T
M9&EM9V5T7V8N8PIG8V,@+4\@+41,24Y56" M1&EX.#8@+4DO:&]M92]A<G%U
M:2]L86TV,2]H("U$4E!)7U-(32 M1%-(35]365-6("U$35!)7T=%4CTX("UC
M("XN+RXN+RXN+W-H87)E+VUP:2]F-S<O8V%R=&=E=%]F+F,*9V-C("U/("U$
M3$E.55@@+41I>#@V("U)+VAO;64O87)Q=6DO;&%M-C$O:" M1%)025]32$T@
M+4132$U?4UE35B M1$U025]'15(]." M8R N+B\N+B\N+B]S:&%R92]M<&DO
M9C<W+V-A<G1M87!?9BYC"F=C8R M3R M1$Q)3E58("U$:7@X-B M22]H;VUE
M+V%R<75I+VQA;38Q+V@@+4124$E?4TA-("U$4TA-7U-94U8@+41-4$E?1T52
M/3@@+6,@+BXO+BXO+BXO<VAA<F4O;7!I+V8W-R]C87)T<F%N:U]F+F,*9V-C
M("U/("U$3$E.55@@+41I>#@V("U)+VAO;64O87)Q=6DO;&%M-C$O:" M1%)0
M25]32$T@+4132$U?4UE35B M1$U025]'15(]." M8R N+B\N+B\N+B]S:&%R
M92]M<&DO9C<W+V-A<G1S:&EF=%]F+F,*9V-C("U/("U$3$E.55@@+41I>#@V
M("U)+VAO;64O87)Q=6DO;&%M-C$O:" M1%)025]32$T@+4132$U?4UE35B M
M1$U025]'15(]." M8R N+B\N+B\N+B]S:&%R92]M<&DO9C<W+V-A<G1S=6)?
M9BYC"F=C8R M3R M1$Q)3E58("U$:7@X-B M22]H;VUE+V%R<75I+VQA;38Q
M+V@@+4124$E?4TA-("U$4TA-7U-94U8@+41-4$E?1T52/3@@+6,@+BXO+BXO
M+BXO<VAA<F4O;7!I+V8W-R]C8VUP7V8N8PIG8V,@+4\@+41,24Y56" M1&EX
M.#8@+4DO:&]M92]A<G%U:2]L86TV,2]H("U$4E!)7U-(32 M1%-(35]365-6
M("U$35!)7T=%4CTX("UC("XN+RXN+RXN+W-H87)E+VUP:2]F-S<O8V-R96%T
M95]F+F,*9V-C("U/("U$3$E.55@@+41I>#@V("U)+VAO;64O87)Q=6DO;&%M
M-C$O:" M1%)025]32$T@+4132$U?4UE35B M1$U025]'15(]." M8R N+B\N
M+B\N+B]S:&%R92]M<&DO9C<W+V-D:7-C;VYN96-T7V8N8PIG8V,@+4\@+41,
M24Y56" M1&EX.#8@+4DO:&]M92]A<G%U:2]L86TV,2]H("U$4E!)7U-(32 M
M1%-(35]365-6("U$35!)7T=%4CTX("UC("XN+RXN+RXN+W-H87)E+VUP:2]F
M-S<O8V1U<%]F+F,*9V-C("U/("U$3$E.55@@+41I>#@V("U)+VAO;64O87)Q
M=6DO;&%M-C$O:" M1%)025]32$T@+4132$U?4UE35B M1$U025]'15(]." M
M8R N+B\N+B\N+B]S:&%R92]M<&DO9C<W+V-F<F5E7V8N8PIG8V,@+4\@+41,
M24Y56" M1&EX.#8@+4DO:&]M92]A<G%U:2]L86TV,2]H("U$4E!)7U-(32 M
M1%-(35]365-6("U$35!)7T=%4CTX("UC("XN+RXN+RXN+W-H87)E+VUP:2]F
M-S<O8V=R;W5P7V8N8PIG8V,@+4\@+41,24Y56" M1&EX.#8@+4DO:&]M92]A
M<G%U:2]L86TV,2]H("U$4E!)7U-(32 M1%-(35]365-6("U$35!)7T=%4CTX
M("UC("XN+RXN+RXN+W-H87)E+VUP:2]F-S<O8V]N;F5C=%]F+F,*9V-C("U/
M("U$3$E.55@@+41I>#@V("U)+VAO;64O87)Q=6DO;&%M-C$O:" M1%)025]3
M2$T@+4132$U?4UE35B M1$U025]'15(]." M8R N+B\N+B\N+B]S:&%R92]M
M<&DO9C<W+V-R86YK7V8N8PIG8V,@+4\@+41,24Y56" M1&EX.#8@+4DO:&]M
M92]A<G%U:2]L86TV,2]H("U$4E!)7U-(32 M1%-(35]365-6("U$35!)7T=%
M4CTX("UC("XN+RXN+RXN+W-H87)E+VUP:2]F-S<O8W)G<F]U<%]F+F,*9V-C
M("U/("U$3$E.55@@+41I>#@V("U)+VAO;64O87)Q=6DO;&%M-C$O:" M1%)0
M25]32$T@+4132$U?4UE35B M1$U025]'15(]." M8R N+B\N+B\N+B]S:&%R
M92]M<&DO9C<W+V-R<VEZ95]F+F,*9V-C("U/("U$3$E.55@@+41I>#@V("U)
M+VAO;64O87)Q=6DO;&%M-C$O:" M1%)025]32$T@+4132$U?4UE35B M1$U0
M25]'15(]." M8R N+B\N+B\N+B]S:&%R92]M<&DO9C<W+V-S:7IE7V8N8PIG
M8V,@+4\@+41,24Y56" M1&EX.#8@+4DO:&]M92]A<G%U:2]L86TV,2]H("U$
M4E!)7U-(32 M1%-(35]365-6("U$35!)7T=%4CTX("UC("XN+RXN+RXN+W-H
M87)E+VUP:2]F-S<O8W-P;&ET7V8N8PIG8V,@+4\@+41,24Y56" M1&EX.#8@
M+4DO:&]M92]A<G%U:2]L86TV,2]H("U$4E!)7U-(32 M1%-(35]365-6("U$
M35!)7T=%4CTX("UC("XN+RXN+RXN+W-H87)E+VUP:2]F-S<O8W1E<W1I;G1E
M<E]F+F,*9V-C("U/("U$3$E.55@@+41I>#@V("U)+VAO;64O87)Q=6DO;&%M
M-C$O:" M1%)025]32$T@+4132$U?4UE35B M1$U025]'15(]." M8R N+B\N
M+B\N+B]S:&%R92]M<&DO9C<W+V1I;7-C<F5A=&5?9BYC"F=C8R M3R M1$Q)
M3E58("U$:7@X-B M22]H;VUE+V%R<75I+VQA;38Q+V@@+4124$E?4TA-("U$
M4TA-7U-94U8@+41-4$E?1T52/3@@+6,@+BXO+BXO+BXO<VAA<F4O;7!I+V8W
M-R]D=7!F;E]F+F,*9V-C("U/("U$3$E.55@@+41I>#@V("U)+VAO;64O87)Q
M=6DO;&%M-C$O:" M1%)025]32$T@+4132$U?4UE35B M1$U025]'15(]." M
M8R N+B\N+B\N+B]S:&%R92]M<&DO9C<W+V5R<F-L87-S7V8N8PIG8V,@+4\@
M+41,24Y56" M1&EX.#8@+4DO:&]M92]A<G%U:2]L86TV,2]H("U$4E!)7U-(
M32 M1%-(35]365-6("U$35!)7T=%4CTX("UC("XN+RXN+RXN+W-H87)E+VUP
M:2]F-S<O97)R8W)E871E7V8N8PIG8V,@+4\@+41,24Y56" M1&EX.#8@+4DO
M:&]M92]A<G%U:2]L86TV,2]H("U$4E!)7U-(32 M1%-(35]365-6("U$35!)
M7T=%4CTX("UC("XN+RXN+RXN+W-H87)E+VUP:2]F-S<O97)R9G)E95]F+F,*
M9V-C("U/("U$3$E.55@@+41I>#@V("U)+VAO;64O87)Q=6DO;&%M-C$O:" M
M1%)025]32$T@+4132$U?4UE35B M1$U025]'15(]." M8R N+B\N+B\N+B]S
M:&%R92]M<&DO9C<W+V5R<F=E=%]F+F,*9V-C("U/("U$3$E.55@@+41I>#@V
M("U)+VAO;64O87)Q=6DO;&%M-C$O:" M1%)025]32$T@+4132$U?4UE35B M
M1$U025]'15(]." M8R N+B\N+B\N+B]S:&%R92]M<&DO9C<W+V5R<G-E=%]F
M+F,*9V-C("U/("U$3$E.55@@+41I>#@V("U)+VAO;64O87)Q=6DO;&%M-C$O
M:" M1%)025]32$T@+4132$U?4UE35B M1$U025]'15(]." M8R N+B\N+B\N
M+B]S:&%R92]M<&DO9C<W+V5R<G-T<FEN9U]F+F,*9V-C("U/("U$3$E.55@@
M+41I>#@V("U)+VAO;64O87)Q=6DO;&%M-C$O:" M1%)025]32$T@+4132$U?
M4UE35B M1$U025]'15(]." M8R N+B\N+B\N+B]S:&%R92]M<&DO9C<W+V9I
M;F%L:7IE7V8N8PIG8V,@+4\@+41,24Y56" M1&EX.#8@+4DO:&]M92]A<G%U
M:2]L86TV,2]H("U$4E!)7U-(32 M1%-(35]365-6("U$35!)7T=%4CTX("UC
M("XN+RXN+RXN+W-H87)E+VUP:2]F-S<O9V%T:&5R7V8N8PIG8V,@+4\@+41,
M24Y56" M1&EX.#8@+4DO:&]M92]A<G%U:2]L86TV,2]H("U$4E!)7U-(32 M
M1%-(35]365-6("U$35!)7T=%4CTX("UC("XN+RXN+RXN+W-H87)E+VUP:2]F
M-S<O9V%T:&5R=E]F+F,*9V-C("U/("U$3$E.55@@+41I>#@V("U)+VAO;64O
M87)Q=6DO;&%M-C$O:" M1%)025]32$T@+4132$U?4UE35B M1$U025]'15(]
M." M8R N+B\N+B\N+B]S:&%R92]M<&DO9C<W+V=C;7!?9BYC"F=C8R M3R M
M1$Q)3E58("U$:7@X-B M22]H;VUE+V%R<75I+VQA;38Q+V@@+4124$E?4TA-
M("U$4TA-7U-94U8@+41-4$E?1T52/3@@+6,@+BXO+BXO+BXO<VAA<F4O;7!I
M+V8W-R]G9&EF9E]F+F,*9V-C("U/("U$3$E.55@@+41I>#@V("U)+VAO;64O
M87)Q=6DO;&%M-C$O:" M1%)025]32$T@+4132$U?4UE35B M1$U025]'15(]
M." M8R N+B\N+B\N+B]S:&%R92]M<&DO9C<W+V=E=&-O=6YT7V8N8PIG8V,@
M+4\@+41,24Y56" M1&EX.#8@+4DO:&]M92]A<G%U:2]L86TV,2]H("U$4E!)
M7U-(32 M1%-(35]365-6("U$35!)7T=%4CTX("UC("XN+RXN+RXN+W-H87)E
M+VUP:2]F-S<O9V5T96QE;5]F+F,*9V-C("U/("U$3$E.55@@+41I>#@V("U)
M+VAO;64O87)Q=6DO;&%M-C$O:" M1%)025]32$T@+4132$U?4UE35B M1$U0
M25]'15(]." M8R N+B\N+B\N+B]S:&%R92]M<&DO9C<W+V=E='!R;V-N86UE
M7V8N8PIG8V,@+4\@+41,24Y56" M1&EX.#8@+4DO:&]M92]A<G%U:2]L86TV
M,2]H("U$4E!)7U-(32 M1%-(35]365-6("U$35!)7T=%4CTX("UC("XN+RXN
M+RXN+W-H87)E+VUP:2]F-S<O9V5T=F5R<VEO;E]F+F,*9V-C("U/("U$3$E.
M55@@+41I>#@V("U)+VAO;64O87)Q=6DO;&%M-C$O:" M1%)025]32$T@+413
M2$U?4UE35B M1$U025]'15(]." M8R N+B\N+B\N+B]S:&%R92]M<&DO9C<W
M+V=E>&-L7V8N8PIG8V,@+4\@+41,24Y56" M1&EX.#8@+4DO:&]M92]A<G%U
M:2]L86TV,2]H("U$4E!)7U-(32 M1%-(35]365-6("U$35!)7T=%4CTX("UC
M("XN+RXN+RXN+W-H87)E+VUP:2]F-S<O9V9R965?9BYC"F=C8R M3R M1$Q)
M3E58("U$:7@X-B M22]H;VUE+V%R<75I+VQA;38Q+V@@+4124$E?4TA-("U$
M4TA-7U-94U8@+41-4$E?1T52/3@@+6,@+BXO+BXO+BXO<VAA<F4O;7!I+V8W
M-R]G:6YC;%]F+F,*9V-C("U/("U$3$E.55@@+41I>#@V("U)+VAO;64O87)Q
M=6DO;&%M-C$O:" M1%)025]32$T@+4132$U?4UE35B M1$U025]'15(]." M
M8R N+B\N+B\N+B]S:&%R92]M<&DO9C<W+V=I;G1E<E]F+F,*9V-C("U/("U$
M3$E.55@@+41I>#@V("U)+VAO;64O87)Q=6DO;&%M-C$O:" M1%)025]32$T@
M+4132$U?4UE35B M1$U025]'15(]." M8R N+B\N+B\N+B]S:&%R92]M<&DO
M9C<W+V=R86YK7V8N8PIG8V,@+4\@+41,24Y56" M1&EX.#8@+4DO:&]M92]A
M<G%U:2]L86TV,2]H("U$4E!)7U-(32 M1%-(35]365-6("U$35!)7T=%4CTX
M("UC("XN+RXN+RXN+W-H87)E+VUP:2]F-S<O9W)A<&AC<F5A=&5?9BYC"F=C
M8R M3R M1$Q)3E58("U$:7@X-B M22]H;VUE+V%R<75I+VQA;38Q+V@@+412
M4$E?4TA-("U$4TA-7U-94U8@+41-4$E?1T52/3@@+6,@+BXO+BXO+BXO<VAA
M<F4O;7!I+V8W-R]G<F%P:&1I;7-G971?9BYC"F=C8R M3R M1$Q)3E58("U$
M:7@X-B M22]H;VUE+V%R<75I+VQA;38Q+V@@+4124$E?4TA-("U$4TA-7U-9
M4U8@+41-4$E?1T52/3@@+6,@+BXO+BXO+BXO<VAA<F4O;7!I+V8W-R]G<F%P
M:&=E=%]F+F,*9V-C("U/("U$3$E.55@@+41I>#@V("U)+VAO;64O87)Q=6DO
M;&%M-C$O:" M1%)025]32$T@+4132$U?4UE35B M1$U025]'15(]." M8R N
M+B\N+B\N+B]S:&%R92]M<&DO9C<W+V=R87!H;6%P7V8N8PIG8V,@+4\@+41,
M24Y56" M1&EX.#8@+4DO:&]M92]A<G%U:2]L86TV,2]H("U$4E!)7U-(32 M
M1%-(35]365-6("U$35!)7T=%4CTX("UC("XN+RXN+RXN+W-H87)E+VUP:2]F
M-S<O9W)A<&AN8G)?9BYC"F=C8R M3R M1$Q)3E58("U$:7@X-B M22]H;VUE
M+V%R<75I+VQA;38Q+V@@+4124$E?4TA-("U$4TA-7U-94U8@+41-4$E?1T52
M/3@@+6,@+BXO+BXO+BXO<VAA<F4O;7!I+V8W-R]G<F%P:&YB<F-O=6YT7V8N
M8PIG8V,@+4\@+41,24Y56" M1&EX.#8@+4DO:&]M92]A<G%U:2]L86TV,2]H
M("U$4E!)7U-(32 M1%-(35]365-6("U$35!)7T=%4CTX("UC("XN+RXN+RXN
M+W-H87)E+VUP:2]F-S<O9W)E>&-L7V8N8PIG8V,@+4\@+41,24Y56" M1&EX
M.#8@+4DO:&]M92]A<G%U:2]L86TV,2]H("U$4E!)7U-(32 M1%-(35]365-6
M("U$35!)7T=%4CTX("UC("XN+RXN+RXN+W-H87)E+VUP:2]F-S<O9W)I;F-L
M7V8N8PIG8V,@+4\@+41,24Y56" M1&EX.#8@+4DO:&]M92]A<G%U:2]L86TV
M,2]H("U$4E!)7U-(32 M1%-(35]365-6("U$35!)7T=%4CTX("UC("XN+RXN
M+RXN+W-H87)E+VUP:2]F-S<O9W-I>F5?9BYC"F=C8R M3R M1$Q)3E58("U$
M:7@X-B M22]H;VUE+V%R<75I+VQA;38Q+V@@+4124$E?4TA-("U$4TA-7U-9
M4U8@+41-4$E?1T52/3@@+6,@+BXO+BXO+BXO<VAA<F4O;7!I+V8W-R]G=')A
M;FMS7V8N8PIG8V,@+4\@+41,24Y56" M1&EX.#8@+4DO:&]M92]A<G%U:2]L
M86TV,2]H("U$4E!)7U-(32 M1%-(35]365-6("U$35!)7T=%4CTX("UC("XN
M+RXN+RXN+W-H87)E+VUP:2]F-S<O9W5N:6]N7V8N8PIG8V,@+4\@+41,24Y5
M6" M1&EX.#8@+4DO:&]M92]A<G%U:2]L86TV,2]H("U$4E!)7U-(32 M1%-(
M35]365-6("U$35!)7T=%4CTX("UC("XN+RXN+RXN+W-H87)E+VUP:2]F-S<O
M:6)S96YD7V8N8PIG8V,@+4\@+41,24Y56" M1&EX.#8@+4DO:&]M92]A<G%U
M:2]L86TV,2]H("U$4E!)7U-(32 M1%-(35]365-6("U$35!)7T=%4CTX("UC
M("XN+RXN+RXN+W-H87)E+VUP:2]F-S<O:6-C<F5A=&5?9BYC"F=C8R M3R M
M1$Q)3E58("U$:7@X-B M22]H;VUE+V%R<75I+VQA;38Q+V@@+4124$E?4TA-
M("U$4TA-7U-94U8@+41-4$E?1T52/3@@+6,@+BXO+BXO+BXO<VAA<F4O;7!I
M+V8W-R]I8VUE<F=E7V8N8PIG8V,@+4\@+41,24Y56" M1&EX.#8@+4DO:&]M
M92]A<G%U:2]L86TV,2]H("U$4E!)7U-(32 M1%-(35]365-6("U$35!)7T=%
M4CTX("UC("XN+RXN+RXN+W-H87)E+VUP:2]F-S<O:6YF;V-R96%T95]F+F,*
M9V-C("U/("U$3$E.55@@+41I>#@V("U)+VAO;64O87)Q=6DO;&%M-C$O:" M
M1%)025]32$T@+4132$U?4UE35B M1$U025]'15(]." M8R N+B\N+B\N+B]S
M:&%R92]M<&DO9C<W+VEN9F]D96Q?9BYC"F=C8R M3R M1$Q)3E58("U$:7@X
M-B M22]H;VUE+V%R<75I+VQA;38Q+V@@+4124$E?4TA-("U$4TA-7U-94U8@
M+41-4$E?1T52/3@@+6,@+BXO+BXO+BXO<VAA<F4O;7!I+V8W-R]I;F9O9'5P
M7V8N8PIG8V,@+4\@+41,24Y56" M1&EX.#8@+4DO:&]M92]A<G%U:2]L86TV
M,2]H("U$4E!)7U-(32 M1%-(35]365-6("U$35!)7T=%4CTX("UC("XN+RXN
M+RXN+W-H87)E+VUP:2]F-S<O:6YF;V9R965?9BYC"F=C8R M3R M1$Q)3E58
M("U$:7@X-B M22]H;VUE+V%R<75I+VQA;38Q+V@@+4124$E?4TA-("U$4TA-
M7U-94U8@+41-4$E?1T52/3@@+6,@+BXO+BXO+BXO<VAA<F4O;7!I+V8W-R]I
M;F9O9V5T7V8N8PIG8V,@+4\@+41,24Y56" M1&EX.#8@+4DO:&]M92]A<G%U
M:2]L86TV,2]H("U$4E!)7U-(32 M1%-(35]365-6("U$35!)7T=%4CTX("UC
M("XN+RXN+RXN+W-H87)E+VUP:2]F-S<O:6YF;V=E=&YK97ES7V8N8PIG8V,@
M+4\@+41,24Y56" M1&EX.#8@+4DO:&]M92]A<G%U:2]L86TV,2]H("U$4E!)
M7U-(32 M1%-(35]365-6("U$35!)7T=%4CTX("UC("XN+RXN+RXN+W-H87)E
M+VUP:2]F-S<O:6YF;V=E=&YT:%]F+F,*9V-C("U/("U$3$E.55@@+41I>#@V
M("U)+VAO;64O87)Q=6DO;&%M-C$O:" M1%)025]32$T@+4132$U?4UE35B M
M1$U025]'15(]." M8R N+B\N+B\N+B]S:&%R92]M<&DO9C<W+VEN9F]G971V
M;&5N7V8N8PIG8V,@+4\@+41,24Y56" M1&EX.#8@+4DO:&]M92]A<G%U:2]L
M86TV,2]H("U$4E!)7U-(32 M1%-(35]365-6("U$35!)7T=%4CTX("UC("XN
M+RXN+RXN+W-H87)E+VUP:2]F-S<O:6YF;W-E=%]F+F,*9V-C("U/("U$3$E.
M55@@+41I>#@V("U)+VAO;64O87)Q=6DO;&%M-C$O:" M1%)025]32$T@+413
M2$U?4UE35B M1$U025]'15(]." M8R N+B\N+B\N+B]S:&%R92]M<&DO9C<W
M+VEN:71?9BYC"F=C8R M3R M1$Q)3E58("U$:7@X-B M22]H;VUE+V%R<75I
M+VQA;38Q+V@@+4124$E?4TA-("U$4TA-7U-94U8@+41-4$E?1T52/3@@+6,@
M+BXO+BXO+BXO<VAA<F4O;7!I+V8W-R]I;FET961?9BYC"F=C8R M3R M1$Q)
M3E58("U$:7@X-B M22]H;VUE+V%R<75I+VQA;38Q+V@@+4124$E?4TA-("U$
M4TA-7U-94U8@+41-4$E?1T52/3@@+6,@+BXO+BXO+BXO<VAA<F4O;7!I+V8W
M-R]I<')O8F5?9BYC"F=C8R M3R M1$Q)3E58("U$:7@X-B M22]H;VUE+V%R
M<75I+VQA;38Q+V@@+4124$E?4TA-("U$4TA-7U-94U8@+41-4$E?1T52/3@@
M+6,@+BXO+BXO+BXO<VAA<F4O;7!I+V8W-R]I<F5C=E]F+F,*9V-C("U/("U$
M3$E.55@@+41I>#@V("U)+VAO;64O87)Q=6DO;&%M-C$O:" M1%)025]32$T@
M+4132$U?4UE35B M1$U025]'15(]." M8R N+B\N+B\N+B]S:&%R92]M<&DO
M9C<W+VER<V5N9%]F+F,*9V-C("U/("U$3$E.55@@+41I>#@V("U)+VAO;64O
M87)Q=6DO;&%M-C$O:" M1%)025]32$T@+4132$U?4UE35B M1$U025]'15(]
M." M8R N+B\N+B\N+B]S:&%R92]M<&DO9C<W+VES96YD7V8N8PIG8V,@+4\@
M+41,24Y56" M1&EX.#8@+4DO:&]M92]A<G%U:2]L86TV,2]H("U$4E!)7U-(
M32 M1%-(35]365-6("U$35!)7T=%4CTX("UC("XN+RXN+RXN+W-H87)E+VUP
M:2]F-S<O:7-S96YD7V8N8PIG8V,@+4\@+41,24Y56" M1&EX.#8@+4DO:&]M
M92]A<G%U:2]L86TV,2]H("U$4E!)7U-(32 M1%-(35]365-6("U$35!)7T=%
M4CTX("UC("XN+RXN+RXN+W-H87)E+VUP:2]F-S<O:V5Y8W)E871E7V8N8PIG
M8V,@+4\@+41,24Y56" M1&EX.#8@+4DO:&]M92]A<G%U:2]L86TV,2]H("U$
M4E!)7U-(32 M1%-(35]365-6("U$35!)7T=%4CTX("UC("XN+RXN+RXN+W-H
M87)E+VUP:2]F-S<O:V5Y9G)E95]F+F,*9V-C("U/("U$3$E.55@@+41I>#@V
M("U)+VAO;64O87)Q=6DO;&%M-C$O:" M1%)025]32$T@+4132$U?4UE35B M
M1$U025]'15(]." M8R N+B\N+B\N+B]S:&%R92]M<&DO9C<W+VUP:6Q?:61?
M9BYC"F=C8R M3R M1$Q)3E58("U$:7@X-B M22]H;VUE+V%R<75I+VQA;38Q
M+V@@+4124$E?4TA-("U$4TA-7U-94U8@+41-4$E?1T52/3@@+6,@+BXO+BXO
M+BXO<VAA<F4O;7!I+V8W-R]M<&EL7W-I9VYA;%]F+F,*9V-C("U/("U$3$E.
M55@@+41I>#@V("U)+VAO;64O87)Q=6DO;&%M-C$O:" M1%)025]32$T@+413
M2$U?4UE35B M1$U025]'15(]." M8R N+B\N+B\N+B]S:&%R92]M<&DO9C<W
M+VUP:6Q?<W!A=VY?9BYC"F=C8R M3R M1$Q)3E58("U$:7@X-B M22]H;VUE
M+V%R<75I+VQA;38Q+V@@+4124$E?4TA-("U$4TA-7U-94U8@+41-4$E?1T52
M/3@@+6,@+BXO+BXO+BXO<VAA<F4O;7!I+V8W-R]M<&EL7W1R86-E7V8N8PIG
M8V,@+4\@+41,24Y56" M1&EX.#8@+4DO:&]M92]A<G%U:2]L86TV,2]H("U$
M4E!)7U-(32 M1%-(35]365-6("U$35!)7T=%4CTX("UC("XN+RXN+RXN+W-H
M87)E+VUP:2]F-S<O;F%M96=E=%]F+F,*9V-C("U/("U$3$E.55@@+41I>#@V
M("U)+VAO;64O87)Q=6DO;&%M-C$O:" M1%)025]32$T@+4132$U?4UE35B M
M1$U025]'15(]." M8R N+B\N+B\N+B]S:&%R92]M<&DO9C<W+VYA;65P=6)?
M9BYC"F=C8R M3R M1$Q)3E58("U$:7@X-B M22]H;VUE+V%R<75I+VQA;38Q
M+V@@+4124$E?4TA-("U$4TA-7U-94U8@+41-4$E?1T52/3@@+6,@+BXO+BXO
M+BXO<VAA<F4O;7!I+V8W-R]N86UE=6YP=6)?9BYC"F=C8R M3R M1$Q)3E58
M("U$:7@X-B M22]H;VUE+V%R<75I+VQA;38Q+V@@+4124$E?4TA-("U$4TA-
M7U-94U8@+41-4$E?1T52/3@@+6,@+BXO+BXO+BXO<VAA<F4O;7!I+V8W-R]O
M<&-R96%T95]F+F,*9V-C("U/("U$3$E.55@@+41I>#@V("U)+VAO;64O87)Q
M=6DO;&%M-C$O:" M1%)025]32$T@+4132$U?4UE35B M1$U025]'15(]." M
M8R N+B\N+B\N+B]S:&%R92]M<&DO9C<W+V]P9G)E95]F+F,*9V-C("U/("U$
M3$E.55@@+41I>#@V("U)+VAO;64O87)Q=6DO;&%M-C$O:" M1%)025]32$T@
M+4132$U?4UE35B M1$U025]'15(]." M8R N+B\N+B\N+B]S:&%R92]M<&DO
M9C<W+W!A8VM?9BYC"F=C8R M3R M1$Q)3E58("U$:7@X-B M22]H;VUE+V%R
M<75I+VQA;38Q+V@@+4124$E?4TA-("U$4TA-7U-94U8@+41-4$E?1T52/3@@
M+6,@+BXO+BXO+BXO<VAA<F4O;7!I+V8W-R]P86-K<VEZ95]F+F,*9V-C("U/
M("U$3$E.55@@+41I>#@V("U)+VAO;64O87)Q=6DO;&%M-C$O:" M1%)025]3
M2$T@+4132$U?4UE35B M1$U025]'15(]." M8R N+B\N+B\N+B]S:&%R92]M
M<&DO9C<W+W!C;VYT<F]L7V8N8PIG8V,@+4\@+41,24Y56" M1&EX.#8@+4DO
M:&]M92]A<G%U:2]L86TV,2]H("U$4E!)7U-(32 M1%-(35]365-6("U$35!)
M7T=%4CTX("UC("XN+RXN+RXN+W-H87)E+VUP:2]F-S<O<&]R=&-L;W-E7V8N
M8PIG8V,@+4\@+41,24Y56" M1&EX.#8@+4DO:&]M92]A<G%U:2]L86TV,2]H
M("U$4E!)7U-(32 M1%-(35]365-6("U$35!)7T=%4CTX("UC("XN+RXN+RXN
M+W-H87)E+VUP:2]F-S<O<&]R=&]P96Y?9BYC"F=C8R M3R M1$Q)3E58("U$
M:7@X-B M22]H;VUE+V%R<75I+VQA;38Q+V@@+4124$E?4TA-("U$4TA-7U-9
M4U8@+41-4$E?1T52/3@@+6,@+BXO+BXO+BXO<VAA<F4O;7!I+V8W-R]P<F]B
M95]F+F,*9V-C("U/("U$3$E.55@@+41I>#@V("U)+VAO;64O87)Q=6DO;&%M
M-C$O:" M1%)025]32$T@+4132$U?4UE35B M1$U025]'15(]." M8R N+B\N
M+B\N+B]S:&%R92]M<&DO9C<W+W)E8W9?9BYC"F=C8R M3R M1$Q)3E58("U$
M:7@X-B M22]H;VUE+V%R<75I+VQA;38Q+V@@+4124$E?4TA-("U$4TA-7U-9
M4U8@+41-4$E?1T52/3@@+6,@+BXO+BXO+BXO<VAA<F4O;7!I+V8W-R]R96-V
M:6YI=%]F+F,*9V-C("U/("U$3$E.55@@+41I>#@V("U)+VAO;64O87)Q=6DO
M;&%M-C$O:" M1%)025]32$T@+4132$U?4UE35B M1$U025]'15(]." M8R N
M+B\N+B\N+B]S:&%R92]M<&DO9C<W+W)E9'5C95]F+F,*9V-C("U/("U$3$E.
M55@@+41I>#@V("U)+VAO;64O87)Q=6DO;&%M-C$O:" M1%)025]32$T@+413
M2$U?4UE35B M1$U025]'15(]." M8R N+B\N+B\N+B]S:&%R92]M<&DO9C<W
M+W)E9'5C97-C871T97)?9BYC"F=C8R M3R M1$Q)3E58("U$:7@X-B M22]H
M;VUE+V%R<75I+VQA;38Q+V@@+4124$E?4TA-("U$4TA-7U-94U8@+41-4$E?
M1T52/3@@+6,@+BXO+BXO+BXO<VAA<F4O;7!I+V8W-R]R97%F<F5E7V8N8PIG
M8V,@+4\@+41,24Y56" M1&EX.#8@+4DO:&]M92]A<G%U:2]L86TV,2]H("U$
M4E!)7U-(32 M1%-(35]365-6("U$35!)7T=%4CTX("UC("XN+RXN+RXN+W-H
M87)E+VUP:2]F-S<O<G-E;F1?9BYC"F=C8R M3R M1$Q)3E58("U$:7@X-B M
M22]H;VUE+V%R<75I+VQA;38Q+V@@+4124$E?4TA-("U$4TA-7U-94U8@+41-
M4$E?1T52/3@@+6,@+BXO+BXO+BXO<VAA<F4O;7!I+V8W-R]R<V5N9&EN:71?
M9BYC"F=C8R M3R M1$Q)3E58("U$:7@X-B M22]H;VUE+V%R<75I+VQA;38Q
M+V@@+4124$E?4TA-("U$4TA-7U-94U8@+41-4$E?1T52/3@@+6,@+BXO+BXO
M+BXO<VAA<F4O;7!I+V8W-R]S8V%N7V8N8PIG8V,@+4\@+41,24Y56" M1&EX
M.#8@+4DO:&]M92]A<G%U:2]L86TV,2]H("U$4E!)7U-(32 M1%-(35]365-6
M("U$35!)7T=%4CTX("UC("XN+RXN+RXN+W-H87)E+VUP:2]F-S<O<V-A='1E
M<E]F+F,*9V-C("U/("U$3$E.55@@+41I>#@V("U)+VAO;64O87)Q=6DO;&%M
M-C$O:" M1%)025]32$T@+4132$U?4UE35B M1$U025]'15(]." M8R N+B\N
M+B\N+B]S:&%R92]M<&DO9C<W+W-C871T97)V7V8N8PIG8V,@+4\@+41,24Y5
M6" M1&EX.#8@+4DO:&]M92]A<G%U:2]L86TV,2]H("U$4E!)7U-(32 M1%-(
M35]365-6("U$35!)7T=%4CTX("UC("XN+RXN+RXN+W-H87)E+VUP:2]F-S<O
M<V5N9%]F+F,*9V-C("U/("U$3$E.55@@+41I>#@V("U)+VAO;64O87)Q=6DO
M;&%M-C$O:" M1%)025]32$T@+4132$U?4UE35B M1$U025]'15(]." M8R N
M+B\N+B\N+B]S:&%R92]M<&DO9C<W+W-E;F1I;FET7V8N8PIG8V,@+4\@+41,
M24Y56" M1&EX.#8@+4DO:&]M92]A<G%U:2]L86TV,2]H("U$4E!)7U-(32 M
M1%-(35]365-6("U$35!)7T=%4CTX("UC("XN+RXN+RXN+W-H87)E+VUP:2]F
M-S<O<V5N9')E8W9?9BYC"F=C8R M3R M1$Q)3E58("U$:7@X-B M22]H;VUE
M+V%R<75I+VQA;38Q+V@@+4124$E?4TA-("U$4TA-7U-94U8@+41-4$E?1T52
M/3@@+6,@+BXO+BXO+BXO<VAA<F4O;7!I+V8W-R]S96YD<F5C=G)E<%]F+F,*
M9V-C("U/("U$3$E.55@@+41I>#@V("U)+VAO;64O87)Q=6DO;&%M-C$O:" M
M1%)025]32$T@+4132$U?4UE35B M1$U025]'15(]." M8R N+B\N+B\N+B]S
M:&%R92]M<&DO9C<W+W-P87=N7V8N8PIG8V,@+4\@+41,24Y56" M1&EX.#8@
M+4DO:&]M92]A<G%U:2]L86TV,2]H("U$4E!)7U-(32 M1%-(35]365-6("U$
M35!)7T=%4CTX("UC("XN+RXN+RXN+W-H87)E+VUP:2]F-S<O<W!A=VYM=6QT
M7V8N8PIG8V,@+4\@+41,24Y56" M1&EX.#8@+4DO:&]M92]A<G%U:2]L86TV
M,2]H("U$4E!)7U-(32 M1%-(35]365-6("U$35!)7T=%4CTX("UC("XN+RXN
M+RXN+W-H87)E+VUP:2]F-S<O<W-E;F1?9BYC"F=C8R M3R M1$Q)3E58("U$
M:7@X-B M22]H;VUE+V%R<75I+VQA;38Q+V@@+4124$E?4TA-("U$4TA-7U-9
M4U8@+41-4$E?1T52/3@@+6,@+BXO+BXO+BXO<VAA<F4O;7!I+V8W-R]S<V5N
M9&EN:71?9BYC"F=C8R M3R M1$Q)3E58("U$:7@X-B M22]H;VUE+V%R<75I
M+VQA;38Q+V@@+4124$E?4TA-("U$4TA-7U-94U8@+41-4$E?1T52/3@@+6,@
M+BXO+BXO+BXO<VAA<F4O;7!I+V8W-R]S=&%R=%]F+F,*9V-C("U/("U$3$E.
M55@@+41I>#@V("U)+VAO;64O87)Q=6DO;&%M-C$O:" M1%)025]32$T@+413
M2$U?4UE35B M1$U025]'15(]." M8R N+B\N+B\N+B]S:&%R92]M<&DO9C<W
M+W-T87)T86QL7V8N8PIG8V,@+4\@+41,24Y56" M1&EX.#8@+4DO:&]M92]A
M<G%U:2]L86TV,2]H("U$4E!)7U-(32 M1%-(35]365-6("U$35!)7T=%4CTX
M("UC("XN+RXN+RXN+W-H87)E+VUP:2]F-S<O=&-O;6UI=%]F+F,*9V-C("U/
M("U$3$E.55@@+41I>#@V("U)+VAO;64O87)Q=6DO;&%M-C$O:" M1%)025]3
M2$T@+4132$U?4UE35B M1$U025]'15(]." M8R N+B\N+B\N+B]S:&%R92]M
M<&DO9C<W+W1C;VYT:6=?9BYC"F=C8R M3R M1$Q)3E58("U$:7@X-B M22]H
M;VUE+V%R<75I+VQA;38Q+V@@+4124$E?4TA-("U$4TA-7U-94U8@+41-4$E?
M1T52/3@@+6,@+BXO+BXO+BXO<VAA<F4O;7!I+V8W-R]T97-T7V8N8PIG8V,@
M+4\@+41,24Y56" M1&EX.#8@+4DO:&]M92]A<G%U:2]L86TV,2]H("U$4E!)
M7U-(32 M1%-(35]365-6("U$35!)7T=%4CTX("UC("XN+RXN+RXN+W-H87)E
M+VUP:2]F-S<O=&5S=&%L;%]F+F,*9V-C("U/("U$3$E.55@@+41I>#@V("U)
M+VAO;64O87)Q=6DO;&%M-C$O:" M1%)025]32$T@+4132$U?4UE35B M1$U0
M25]'15(]." M8R N+B\N+B\N+B]S:&%R92]M<&DO9C<W+W1E<W1A;GE?9BYC
M"F=C8R M3R M1$Q)3E58("U$:7@X-B M22]H;VUE+V%R<75I+VQA;38Q+V@@
M+4124$E?4TA-("U$4TA-7U-94U8@+41-4$E?1T52/3@@+6,@+BXO+BXO+BXO
M<VAA<F4O;7!I+V8W-R]T97-T8V%N8V5L7V8N8PIG8V,@+4\@+41,24Y56" M
M1&EX.#8@+4DO:&]M92]A<G%U:2]L86TV,2]H("U$4E!)7U-(32 M1%-(35]3
M65-6("U$35!)7T=%4CTX("UC("XN+RXN+RXN+W-H87)E+VUP:2]F-S<O=&5S
M='-O;65?9BYC"F=C8R M3R M1$Q)3E58("U$:7@X-B M22]H;VUE+V%R<75I
M+VQA;38Q+V@@+4124$E?4TA-("U$4TA-7U-94U8@+41-4$E?1T52/3@@+6,@
M+BXO+BXO+BXO<VAA<F4O;7!I+V8W-R]T97AT96YT7V8N8PIG8V,@+4\@+41,
M24Y56" M1&EX.#8@+4DO:&]M92]A<G%U:2]L86TV,2]H("U$4E!)7U-(32 M
M1%-(35]365-6("U$35!)7T=%4CTX("UC("XN+RXN+RXN+W-H87)E+VUP:2]F
M-S<O=&9R965?9BYC"F=C8R M3R M1$Q)3E58("U$:7@X-B M22]H;VUE+V%R
M<75I+VQA;38Q+V@@+4124$E?4TA-("U$4TA-7U-94U8@+41-4$E?1T52/3@@
M+6,@+BXO+BXO+BXO<VAA<F4O;7!I+V8W-R]T:&EN9&5X7V8N8PIG8V,@+4\@
M+41,24Y56" M1&EX.#8@+4DO:&]M92]A<G%U:2]L86TV,2]H("U$4E!)7U-(
M32 M1%-(35]365-6("U$35!)7T=%4CTX("UC("XN+RXN+RXN+W-H87)E+VUP
M:2]F-S<O=&AV96-T;W)?9BYC"F=C8R M3R M1$Q)3E58("U$:7@X-B M22]H
M;VUE+V%R<75I+VQA;38Q+V@@+4124$E?4TA-("U$4TA-7U-94U8@+41-4$E?
M1T52/3@@+6,@+BXO+BXO+BXO<VAA<F4O;7!I+V8W-R]T:6YD97A?9BYC"F=C
M8R M3R M1$Q)3E58("U$:7@X-B M22]H;VUE+V%R<75I+VQA;38Q+V@@+412
M4$E?4TA-("U$4TA-7U-94U8@+41-4$E?1T52/3@@+6,@+BXO+BXO+BXO<VAA
M<F4O;7!I+V8W-R]T;&)?9BYC"F=C8R M3R M1$Q)3E58("U$:7@X-B M22]H
M;VUE+V%R<75I+VQA;38Q+V@@+4124$E?4TA-("U$4TA-7U-94U8@+41-4$E?
M1T52/3@@+6,@+BXO+BXO+BXO<VAA<F4O;7!I+V8W-R]T;W!O=&5S=%]F+F,*
M9V-C("U/("U$3$E.55@@+41I>#@V("U)+VAO;64O87)Q=6DO;&%M-C$O:" M
M1%)025]32$T@+4132$U?4UE35B M1$U025]'15(]." M8R N+B\N+B\N+B]S
M:&%R92]M<&DO9C<W+W1S:7IE7V8N8PIG8V,@+4\@+41,24Y56" M1&EX.#8@
M+4DO:&]M92]A<G%U:2]L86TV,2]H("U$4E!)7U-(32 M1%-(35]365-6("U$
M35!)7T=%4CTX("UC("XN+RXN+RXN+W-H87)E+VUP:2]F-S<O='-T<G5C=%]F
M+F,*9V-C("U/("U$3$E.55@@+41I>#@V("U)+VAO;64O87)Q=6DO;&%M-C$O
M:" M1%)025]32$T@+4132$U?4UE35B M1$U025]'15(]." M8R N+B\N+B\N
M+B]S:&%R92]M<&DO9C<W+W1U8E]F+F,*9V-C("U/("U$3$E.55@@+41I>#@V
M("U)+VAO;64O87)Q=6DO;&%M-C$O:" M1%)025]32$T@+4132$U?4UE35B M
M1$U025]'15(]." M8R N+B\N+B\N+B]S:&%R92]M<&DO9C<W+W1V96-T;W)?
M9BYC"F=C8R M3R M1$Q)3E58("U$:7@X-B M22]H;VUE+V%R<75I+VQA;38Q
M+V@@+4124$E?4TA-("U$4TA-7U-94U8@+41-4$E?1T52/3@@+6,@+BXO+BXO
M+BXO<VAA<F4O;7!I+V8W-R]U;G!A8VM?9BYC"F=C8R M3R M1$Q)3E58("U$
M:7@X-B M22]H;VUE+V%R<75I+VQA;38Q+V@@+4124$E?4TA-("U$4TA-7U-9
M4U8@+41-4$E?1T52/3@@+6,@+BXO+BXO+BXO<VAA<F4O;7!I+V8W-R]W86ET
M7V8N8PIG8V,@+4\@+41,24Y56" M1&EX.#8@+4DO:&]M92]A<G%U:2]L86TV
M,2]H("U$4E!)7U-(32 M1%-(35]365-6("U$35!)7T=%4CTX("UC("XN+RXN
M+RXN+W-H87)E+VUP:2]F-S<O=V%I=&%L;%]F+F,*9V-C("U/("U$3$E.55@@
M+41I>#@V("U)+VAO;64O87)Q=6DO;&%M-C$O:" M1%)025]32$T@+4132$U?
M4UE35B M1$U025]'15(]." M8R N+B\N+B\N+B]S:&%R92]M<&DO9C<W+W=A
M:71A;GE?9BYC"F=C8R M3R M1$Q)3E58("U$:7@X-B M22]H;VUE+V%R<75I
M+VQA;38Q+V@@+4124$E?4TA-("U$4TA-7U-94U8@+41-4$E?1T52/3@@+6,@
M+BXO+BXO+BXO<VAA<F4O;7!I+V8W-R]W86ET<V]M95]F+F,*9V-C("U/("U$
M3$E.55@@+41I>#@V("U)+VAO;64O87)Q=6DO;&%M-C$O:" M1%)025]32$T@
M+4132$U?4UE35B M1$U025]'15(]." M8R N+B\N+B\N+B]S:&%R92]M<&DO
M9C<W+W=T:6-K7V8N8PIG8V,@+4\@+41,24Y56" M1&EX.#8@+4DO:&]M92]A
M<G%U:2]L86TV,2]H("U$4E!)7U-(32 M1%-(35]365-6("U$35!)7T=%4CTX
M("UC("XN+RXN+RXN+W-H87)E+VUP:2]F-S<O=W1I;65?9BYC"B]B:6XO<FT@
M+68@;&EB;7!I+F$*87(@<G8@;&EB;7!I+F$@<G!I+G-H;2YO('1C<"YL;W<N
M;R!S:&TN;&]W+F\@<VAM+G-Y<W8N;R!S>7-V<VQO<"YO(&%B;W)T+F\@86-C
M97!T+F\@861D<F5S<RYO(&%L;&=A=&AE<BYO(&%L;&=A=&AE<G8N;R!A;&QR
M961U8V4N;R!A;&QT;V%L;"YO(&%L;'1O86QL=BYO(&%T=')D96PN;R!A='1R
M9V5T+F\@871T<G!U="YO(&)A<G)I97(N;R!B8V%S="YO(&)S96YD+F\@8G-E
M;F1I;FET+F\@8G5F871T86-H+F\@8G5F9&5T86-H+F\@8S)C8G5F+F\@8V%N
M8V5L+F\@8V%R=&-O;W)D<RYO(&-A<G1C<F5A=&4N;R!C87)T9&EM9V5T+F\@
M8V%R=&=E="YO(&-A<G1M87 N;R!C87)T<F%N:RYO(&-A<G1S:&EF="YO(&-A
M<G1S=6(N;R!C8VUP+F\@8V-R96%T92YO(&-D:7-C;VYN96-T+F\@8V1U<"YO
M(&-F<F5E+F\@8V=R;W5P+F\@8V]N;F5C="YO(&-R86YK+F\@8W)G<F]U<"YO
M(&-R<VEZ92YO(&-S:7IE+F\@8W-P;&ET+F\@8W1E<W1I;G1E<BYO(&1I;7-C
M<F5A=&4N;R!D=7!F;BYO(&5R<F-L87-S+F\@97)R8W)E871E+F\@97)R9G)E
M92YO(&5R<F=E="YO(&5R<G-E="YO(&5R<G-T<FEN9RYO(&9I;F%L:7IE+F\@
M9V%T:&5R+F\@9V%T:&5R=BYO(&=C;7 N;R!G9&EF9BYO(&=E=&-O=6YT+F\@
M9V5T96QE;2YO(&=E='!R;V-N86UE+F\@9V5T=F5R<VEO;BYO(&=E>&-L+F\@
M9V9R964N;R!G:6YC;"YO(&=I;G1E<BYO(&=R86YK+F\@9W)A<&AC<F5A=&4N
M;R!G<F%P:&1I;7-G970N;R!G<F%P:&=E="YO(&=R87!H;6%P+F\@9W)A<&AN
M8G(N;R!G<F%P:&YB<F-O=6YT+F\@9W)E>&-L+F\@9W)I;F-L+F\@9W-I>F4N
M;R!G=')A;FMS+F\@9W5N:6]N+F\@:6)S96YD+F\@:6-C<F5A=&4N;R!I8VUE
M<F=E+F\@:6YF;V-R96%T92YO(&EN9F]D96PN;R!I;F9O9'5P+F\@:6YF;V9R
M964N;R!I;F9O9V5T+F\@:6YF;V=E=&YK97ES+F\@:6YF;V=E=&YT:"YO(&EN
M9F]G971V;&5N+F\@:6YF;W-E="YO(&EN:70N;R!I;FET960N;R!I<')O8F4N
M;R!I<F5C=BYO(&ER<V5N9"YO(&ES96YD+F\@:7-S96YD+F\@:V5Y8W)E871E
M+F\@:V5Y9G)E92YO(&QA;6%T='(N;R!L86UB=68N;R!L86UC:60N;R!L86UC
M;&]C:W,N;R!L86UC;VUM+F\@;&%M9&5F97)R+F\@;&%M9'1Y<&4N;R!L86UF
M875L="YO(&QA;6EN:70N;R!L86UI;FET960N;R!L86UM:7-C+F\@;&%M<&%C
M:RYO(&QA;7!O<G1S+F\@;&%M<')O8W,N;R!L86UR961U8V4N;R!L86UR97%S
M+F\@;&%M<V5N9"YO(&QA;71E<W0N;R!L86UT<F%C92YO(&QA;75N<&%C:RYO
M(&QA;75P9&]W;BYO(&TR;"YO(&UP:65T8RYO(&UP:6Q?:60N;R!M<&EL7W-I
M9VYA;"YO(&UP:6Q?<W!A=VXN;R!M<&EL7W1R86-E+F\@;F%M96=E="YO(&YA
M;65P=6(N;R!N86UE=6YP=6(N;R!O<&-R96%T92YO(&]P9G)E92YO('!A8VLN
M;R!P86-K<VEZ92YO('!C;VYT<F]L+F\@<&]R=&-L;W-E+F\@<&]R=&]P96XN
M;R!P<F]B92YO(')E8W8N;R!R96-V:6YI="YO(')E9'5C92YO(')E9'5C97-C
M871T97(N;R!R97%F<F5E+F\@<G!I+FQA;60N;R!R<V5N9"YO(')S96YD:6YI
M="YO('-C86XN;R!S8V%T=&5R+F\@<V-A='1E<G8N;R!S96YD+F\@<V5N9&EN
M:70N;R!S96YD<F5C=BYO('-E;F1R96-V<F5P+F\@<W!A=VXN;R!S<&%W;FUU
M;'0N;R!S<V5N9"YO('-S96YD:6YI="YO('-T87)T+F\@<W1A<G1A;&PN;R!T
M8V]M;6ET+F\@=&-O;G1I9RYO('1E<W0N;R!T97-T86QL+F\@=&5S=&%N>2YO
M('1E<W1C86YC96PN;R!T97-T<V]M92YO('1E>'1E;G0N;R!T9G)E92YO('1H
M:6YD97@N;R!T:'9E8W1O<BYO('1I;F1E>"YO('1L8BYO('1O<&]T97-T+F\@
M='-I>F4N;R!T<W1R=6-T+F\@='5B+F\@='9E8W1O<BYO('5N<&%C:RYO('=A
M:70N;R!W86ET86QL+F\@=V%I=&%N>2YO('=A:71S;VUE+F\@=W1I8VLN;R!W
M=&EM92YO($U022YO(&%B;W)T7V8N;R!A8V-E<'1?9BYO(&%D9')E<W-?9BYO
M(&%L;&=A=&AE<E]F+F\@86QL9V%T:&5R=E]F+F\@86QL<F5D=6-E7V8N;R!A
M;&QT;V%L;%]F+F\@86QL=&]A;&QV7V8N;R!A='1R9&5L7V8N;R!A='1R9V5T
M7V8N;R!A='1R<'5T7V8N;R!B87)R:65R7V8N;R!B8V%S=%]F+F\@8G-E;F1?
M9BYO(&)S96YD:6YI=%]F+F\@8G5F871T86-H7V8N;R!B=69D971A8VA?9BYO
M(&-A;F-E;%]F+F\@8V%R=&-O;W)D<U]F+F\@8V%R=&-R96%T95]F+F\@8V%R
M=&1I;6=E=%]F+F\@8V%R=&=E=%]F+F\@8V%R=&UA<%]F+F\@8V%R=')A;FM?
M9BYO(&-A<G1S:&EF=%]F+F\@8V%R='-U8E]F+F\@8V-M<%]F+F\@8V-R96%T
M95]F+F\@8V1I<V-O;FYE8W1?9BYO(&-D=7!?9BYO(&-F<F5E7V8N;R!C9W)O
M=7!?9BYO(&-O;FYE8W1?9BYO(&-R86YK7V8N;R!C<F=R;W5P7V8N;R!C<G-I
M>F5?9BYO(&-S:7IE7V8N;R!C<W!L:71?9BYO(&-T97-T:6YT97)?9BYO(&1I
M;7-C<F5A=&5?9BYO(&1U<&9N7V8N;R!E<G)C;&%S<U]F+F\@97)R8W)E871E
M7V8N;R!E<G)F<F5E7V8N;R!E<G)G971?9BYO(&5R<G-E=%]F+F\@97)R<W1R
M:6YG7V8N;R!F:6YA;&EZ95]F+F\@9V%T:&5R7V8N;R!G871H97)V7V8N;R!G
M8VUP7V8N;R!G9&EF9E]F+F\@9V5T8V]U;G1?9BYO(&=E=&5L96U?9BYO(&=E
M='!R;V-N86UE7V8N;R!G971V97)S:6]N7V8N;R!G97AC;%]F+F\@9V9R965?
M9BYO(&=I;F-L7V8N;R!G:6YT97)?9BYO(&=R86YK7V8N;R!G<F%P:&-R96%T
M95]F+F\@9W)A<&AD:6US9V5T7V8N;R!G<F%P:&=E=%]F+F\@9W)A<&AM87!?
M9BYO(&=R87!H;F)R7V8N;R!G<F%P:&YB<F-O=6YT7V8N;R!G<F5X8VQ?9BYO
M(&=R:6YC;%]F+F\@9W-I>F5?9BYO(&=T<F%N:W-?9BYO(&=U;FEO;E]F+F\@
M:6)S96YD7V8N;R!I8V-R96%T95]F+F\@:6-M97)G95]F+F\@:6YF;V-R96%T
M95]F+F\@:6YF;V1E;%]F+F\@:6YF;V1U<%]F+F\@:6YF;V9R965?9BYO(&EN
M9F]G971?9BYO(&EN9F]G971N:V5Y<U]F+F\@:6YF;V=E=&YT:%]F+F\@:6YF
M;V=E='9L96Y?9BYO(&EN9F]S971?9BYO(&EN:71?9BYO(&EN:71E9%]F+F\@
M:7!R;V)E7V8N;R!I<F5C=E]F+F\@:7)S96YD7V8N;R!I<V5N9%]F+F\@:7-S
M96YD7V8N;R!K97EC<F5A=&5?9BYO(&ME>69R965?9BYO(&UP:6Q?:61?9BYO
M(&UP:6Q?<VEG;F%L7V8N;R!M<&EL7W-P87=N7V8N;R!M<&EL7W1R86-E7V8N
M;R!N86UE9V5T7V8N;R!N86UE<'5B7V8N;R!N86UE=6YP=6)?9BYO(&]P8W)E
M871E7V8N;R!O<&9R965?9BYO('!A8VM?9BYO('!A8VMS:7IE7V8N;R!P8V]N
M=')O;%]F+F\@<&]R=&-L;W-E7V8N;R!P;W)T;W!E;E]F+F\@<')O8F5?9BYO
M(')E8W9?9BYO(')E8W9I;FET7V8N;R!R961U8V5?9BYO(')E9'5C97-C871T
M97)?9BYO(')E<69R965?9BYO(')S96YD7V8N;R!R<V5N9&EN:71?9BYO('-C
M86Y?9BYO('-C871T97)?9BYO('-C871T97)V7V8N;R!S96YD7V8N;R!S96YD
M:6YI=%]F+F\@<V5N9')E8W9?9BYO('-E;F1R96-V<F5P7V8N;R!S<&%W;E]F
M+F\@<W!A=VYM=6QT7V8N;R!S<V5N9%]F+F\@<W-E;F1I;FET7V8N;R!S=&%R
M=%]F+F\@<W1A<G1A;&Q?9BYO('1C;VUM:71?9BYO('1C;VYT:6=?9BYO('1E
M<W1?9BYO('1E<W1A;&Q?9BYO('1E<W1A;GE?9BYO('1E<W1C86YC96Q?9BYO
M('1E<W1S;VUE7V8N;R!T97AT96YT7V8N;R!T9G)E95]F+F\@=&AI;F1E>%]F
M+F\@=&AV96-T;W)?9BYO('1I;F1E>%]F+F\@=&QB7V8N;R!T;W!O=&5S=%]F
M+F\@='-I>F5?9BYO('1S=')U8W1?9BYO('1U8E]F+F\@='9E8W1O<E]F+F\@
M=6YP86-K7V8N;R!W86ET7V8N;R!W86ET86QL7V8N;R!W86ET86YY7V8N;R!W
M86ET<V]M95]F+F\@=W1I8VM?9BYO('=T:6UE7V8N;PIA("T@<G!I+G-H;2YO
M"F$@+2!T8W N;&]W+F\*82 M('-H;2YL;W<N;PIA("T@<VAM+G-Y<W8N;PIA
M("T@<WES=G-L;W N;PIA("T@86)O<G0N;PIA("T@86-C97!T+F\*82 M(&%D
M9')E<W,N;PIA("T@86QL9V%T:&5R+F\*82 M(&%L;&=A=&AE<G8N;PIA("T@
M86QL<F5D=6-E+F\*82 M(&%L;'1O86QL+F\*82 M(&%L;'1O86QL=BYO"F$@
M+2!A='1R9&5L+F\*82 M(&%T=')G970N;PIA("T@871T<G!U="YO"F$@+2!B
M87)R:65R+F\*82 M(&)C87-T+F\*82 M(&)S96YD+F\*82 M(&)S96YD:6YI
M="YO"F$@+2!B=69A='1A8V@N;PIA("T@8G5F9&5T86-H+F\*82 M(&,R8V)U
M9BYO"F$@+2!C86YC96PN;PIA("T@8V%R=&-O;W)D<RYO"F$@+2!C87)T8W)E
M871E+F\*82 M(&-A<G1D:6UG970N;PIA("T@8V%R=&=E="YO"F$@+2!C87)T
M;6%P+F\*82 M(&-A<G1R86YK+F\*82 M(&-A<G1S:&EF="YO"F$@+2!C87)T
M<W5B+F\*82 M(&-C;7 N;PIA("T@8V-R96%T92YO"F$@+2!C9&ES8V]N;F5C
M="YO"F$@+2!C9'5P+F\*82 M(&-F<F5E+F\*82 M(&-G<F]U<"YO"F$@+2!C
M;VYN96-T+F\*82 M(&-R86YK+F\*82 M(&-R9W)O=7 N;PIA("T@8W)S:7IE
M+F\*82 M(&-S:7IE+F\*82 M(&-S<&QI="YO"F$@+2!C=&5S=&EN=&5R+F\*
M82 M(&1I;7-C<F5A=&4N;PIA("T@9'5P9FXN;PIA("T@97)R8VQA<W,N;PIA
M("T@97)R8W)E871E+F\*82 M(&5R<F9R964N;PIA("T@97)R9V5T+F\*82 M
M(&5R<G-E="YO"F$@+2!E<G)S=')I;F<N;PIA("T@9FEN86QI>F4N;PIA("T@
M9V%T:&5R+F\*82 M(&=A=&AE<G8N;PIA("T@9V-M<"YO"F$@+2!G9&EF9BYO
M"F$@+2!G971C;W5N="YO"F$@+2!G971E;&5M+F\*82 M(&=E='!R;V-N86UE
M+F\*82 M(&=E='9E<G-I;VXN;PIA("T@9V5X8VPN;PIA("T@9V9R964N;PIA
M("T@9VEN8VPN;PIA("T@9VEN=&5R+F\*82 M(&=R86YK+F\*82 M(&=R87!H
M8W)E871E+F\*82 M(&=R87!H9&EM<V=E="YO"F$@+2!G<F%P:&=E="YO"F$@
M+2!G<F%P:&UA<"YO"F$@+2!G<F%P:&YB<BYO"F$@+2!G<F%P:&YB<F-O=6YT
M+F\*82 M(&=R97AC;"YO"F$@+2!G<FEN8VPN;PIA("T@9W-I>F4N;PIA("T@
M9W1R86YK<RYO"F$@+2!G=6YI;VXN;PIA("T@:6)S96YD+F\*82 M(&EC8W)E
M871E+F\*82 M(&EC;65R9V4N;PIA("T@:6YF;V-R96%T92YO"F$@+2!I;F9O
M9&5L+F\*82 M(&EN9F]D=7 N;PIA("T@:6YF;V9R964N;PIA("T@:6YF;V=E
M="YO"F$@+2!I;F9O9V5T;FME>7,N;PIA("T@:6YF;V=E=&YT:"YO"F$@+2!I
M;F9O9V5T=FQE;BYO"F$@+2!I;F9O<V5T+F\*82 M(&EN:70N;PIA("T@:6YI
M=&5D+F\*82 M(&EP<F]B92YO"F$@+2!I<F5C=BYO"F$@+2!I<G-E;F0N;PIA
M("T@:7-E;F0N;PIA("T@:7-S96YD+F\*82 M(&ME>6-R96%T92YO"F$@+2!K
M97EF<F5E+F\*82 M(&QA;6%T='(N;PIA("T@;&%M8G5F+F\*82 M(&QA;6-I
M9"YO"F$@+2!L86UC;&]C:W,N;PIA("T@;&%M8V]M;2YO"F$@+2!L86UD969E
M<G(N;PIA("T@;&%M9'1Y<&4N;PIA("T@;&%M9F%U;'0N;PIA("T@;&%M:6YI
M="YO"F$@+2!L86UI;FET960N;PIA("T@;&%M;6ES8RYO"F$@+2!L86UP86-K
M+F\*82 M(&QA;7!O<G1S+F\*82 M(&QA;7!R;V-S+F\*82 M(&QA;7)E9'5C
M92YO"F$@+2!L86UR97%S+F\*82 M(&QA;7-E;F0N;PIA("T@;&%M=&5S="YO
M"F$@+2!L86UT<F%C92YO"F$@+2!L86UU;G!A8VLN;PIA("T@;&%M=7!D;W=N
M+F\*82 M(&TR;"YO"F$@+2!M<&EE=&,N;PIA("T@;7!I;%]I9"YO"F$@+2!M
M<&EL7W-I9VYA;"YO"F$@+2!M<&EL7W-P87=N+F\*82 M(&UP:6Q?=')A8V4N
M;PIA("T@;F%M96=E="YO"F$@+2!N86UE<'5B+F\*82 M(&YA;65U;G!U8BYO
M"F$@+2!O<&-R96%T92YO"F$@+2!O<&9R964N;PIA("T@<&%C:RYO"F$@+2!P
M86-K<VEZ92YO"F$@+2!P8V]N=')O;"YO"F$@+2!P;W)T8VQO<V4N;PIA("T@
M<&]R=&]P96XN;PIA("T@<')O8F4N;PIA("T@<F5C=BYO"F$@+2!R96-V:6YI
M="YO"F$@+2!R961U8V4N;PIA("T@<F5D=6-E<V-A='1E<BYO"F$@+2!R97%F
M<F5E+F\*82 M(')P:2YL86UD+F\*82 M(')S96YD+F\*82 M(')S96YD:6YI
M="YO"F$@+2!S8V%N+F\*82 M('-C871T97(N;PIA("T@<V-A='1E<G8N;PIA
M("T@<V5N9"YO"F$@+2!S96YD:6YI="YO"F$@+2!S96YD<F5C=BYO"F$@+2!S
M96YD<F5C=G)E<"YO"F$@+2!S<&%W;BYO"F$@+2!S<&%W;FUU;'0N;PIA("T@
M<W-E;F0N;PIA("T@<W-E;F1I;FET+F\*82 M('-T87)T+F\*82 M('-T87)T
M86QL+F\*82 M('1C;VUM:70N;PIA("T@=&-O;G1I9RYO"F$@+2!T97-T+F\*
M82 M('1E<W1A;&PN;PIA("T@=&5S=&%N>2YO"F$@+2!T97-T8V%N8V5L+F\*
M82 M('1E<W1S;VUE+F\*82 M('1E>'1E;G0N;PIA("T@=&9R964N;PIA("T@
M=&AI;F1E>"YO"F$@+2!T:'9E8W1O<BYO"F$@+2!T:6YD97@N;PIA("T@=&QB
M+F\*82 M('1O<&]T97-T+F\*82 M('1S:7IE+F\*82 M('1S=')U8W0N;PIA
M("T@='5B+F\*82 M('1V96-T;W(N;PIA("T@=6YP86-K+F\*82 M('=A:70N
M;PIA("T@=V%I=&%L;"YO"F$@+2!W86ET86YY+F\*82 M('=A:71S;VUE+F\*
M82 M('=T:6-K+F\*82 M('=T:6UE+F\*82 M($U022YO"F$@+2!A8F]R=%]F
M+F\*82 M(&%C8V5P=%]F+F\*82 M(&%D9')E<W-?9BYO"F$@+2!A;&QG871H
M97)?9BYO"F$@+2!A;&QG871H97)V7V8N;PIA("T@86QL<F5D=6-E7V8N;PIA
M("T@86QL=&]A;&Q?9BYO"F$@+2!A;&QT;V%L;'9?9BYO"F$@+2!A='1R9&5L
M7V8N;PIA("T@871T<F=E=%]F+F\*82 M(&%T=')P=71?9BYO"F$@+2!B87)R
M:65R7V8N;PIA("T@8F-A<W1?9BYO"F$@+2!B<V5N9%]F+F\*82 M(&)S96YD
M:6YI=%]F+F\*82 M(&)U9F%T=&%C:%]F+F\*82 M(&)U9F1E=&%C:%]F+F\*
M82 M(&-A;F-E;%]F+F\*82 M(&-A<G1C;V]R9'-?9BYO"F$@+2!C87)T8W)E
M871E7V8N;PIA("T@8V%R=&1I;6=E=%]F+F\*82 M(&-A<G1G971?9BYO"F$@
M+2!C87)T;6%P7V8N;PIA("T@8V%R=')A;FM?9BYO"F$@+2!C87)T<VAI9G1?
M9BYO"F$@+2!C87)T<W5B7V8N;PIA("T@8V-M<%]F+F\*82 M(&-C<F5A=&5?
M9BYO"F$@+2!C9&ES8V]N;F5C=%]F+F\*82 M(&-D=7!?9BYO"F$@+2!C9G)E
M95]F+F\*82 M(&-G<F]U<%]F+F\*82 M(&-O;FYE8W1?9BYO"F$@+2!C<F%N
M:U]F+F\*82 M(&-R9W)O=7!?9BYO"F$@+2!C<G-I>F5?9BYO"F$@+2!C<VEZ
M95]F+F\*82 M(&-S<&QI=%]F+F\*82 M(&-T97-T:6YT97)?9BYO"F$@+2!D
M:6US8W)E871E7V8N;PIA("T@9'5P9FY?9BYO"F$@+2!E<G)C;&%S<U]F+F\*
M82 M(&5R<F-R96%T95]F+F\*82 M(&5R<F9R965?9BYO"F$@+2!E<G)G971?
M9BYO"F$@+2!E<G)S971?9BYO"F$@+2!E<G)S=')I;F=?9BYO"F$@+2!F:6YA
M;&EZ95]F+F\*82 M(&=A=&AE<E]F+F\*82 M(&=A=&AE<G9?9BYO"F$@+2!G
M8VUP7V8N;PIA("T@9V1I9F9?9BYO"F$@+2!G971C;W5N=%]F+F\*82 M(&=E
M=&5L96U?9BYO"F$@+2!G971P<F]C;F%M95]F+F\*82 M(&=E='9E<G-I;VY?
M9BYO"F$@+2!G97AC;%]F+F\*82 M(&=F<F5E7V8N;PIA("T@9VEN8VQ?9BYO
M"F$@+2!G:6YT97)?9BYO"F$@+2!G<F%N:U]F+F\*82 M(&=R87!H8W)E871E
M7V8N;PIA("T@9W)A<&AD:6US9V5T7V8N;PIA("T@9W)A<&AG971?9BYO"F$@
M+2!G<F%P:&UA<%]F+F\*82 M(&=R87!H;F)R7V8N;PIA("T@9W)A<&AN8G)C
M;W5N=%]F+F\*82 M(&=R97AC;%]F+F\*82 M(&=R:6YC;%]F+F\*82 M(&=S
M:7IE7V8N;PIA("T@9W1R86YK<U]F+F\*82 M(&=U;FEO;E]F+F\*82 M(&EB
M<V5N9%]F+F\*82 M(&EC8W)E871E7V8N;PIA("T@:6-M97)G95]F+F\*82 M
M(&EN9F]C<F5A=&5?9BYO"F$@+2!I;F9O9&5L7V8N;PIA("T@:6YF;V1U<%]F
M+F\*82 M(&EN9F]F<F5E7V8N;PIA("T@:6YF;V=E=%]F+F\*82 M(&EN9F]G
M971N:V5Y<U]F+F\*82 M(&EN9F]G971N=&A?9BYO"F$@+2!I;F9O9V5T=FQE
M;E]F+F\*82 M(&EN9F]S971?9BYO"F$@+2!I;FET7V8N;PIA("T@:6YI=&5D
M7V8N;PIA("T@:7!R;V)E7V8N;PIA("T@:7)E8W9?9BYO"F$@+2!I<G-E;F1?
M9BYO"F$@+2!I<V5N9%]F+F\*82 M(&ES<V5N9%]F+F\*82 M(&ME>6-R96%T
M95]F+F\*82 M(&ME>69R965?9BYO"F$@+2!M<&EL7VED7V8N;PIA("T@;7!I
M;%]S:6=N86Q?9BYO"F$@+2!M<&EL7W-P87=N7V8N;PIA("T@;7!I;%]T<F%C
M95]F+F\*82 M(&YA;65G971?9BYO"F$@+2!N86UE<'5B7V8N;PIA("T@;F%M
M975N<'5B7V8N;PIA("T@;W!C<F5A=&5?9BYO"F$@+2!O<&9R965?9BYO"F$@
M+2!P86-K7V8N;PIA("T@<&%C:W-I>F5?9BYO"F$@+2!P8V]N=')O;%]F+F\*
M82 M('!O<G1C;&]S95]F+F\*82 M('!O<G1O<&5N7V8N;PIA("T@<')O8F5?
M9BYO"F$@+2!R96-V7V8N;PIA("T@<F5C=FEN:71?9BYO"F$@+2!R961U8V5?
M9BYO"F$@+2!R961U8V5S8V%T=&5R7V8N;PIA("T@<F5Q9G)E95]F+F\*82 M
M(')S96YD7V8N;PIA("T@<G-E;F1I;FET7V8N;PIA("T@<V-A;E]F+F\*82 M
M('-C871T97)?9BYO"F$@+2!S8V%T=&5R=E]F+F\*82 M('-E;F1?9BYO"F$@
M+2!S96YD:6YI=%]F+F\*82 M('-E;F1R96-V7V8N;PIA("T@<V5N9')E8W9R
M97!?9BYO"F$@+2!S<&%W;E]F+F\*82 M('-P87=N;75L=%]F+F\*82 M('-S
M96YD7V8N;PIA("T@<W-E;F1I;FET7V8N;PIA("T@<W1A<G1?9BYO"F$@+2!S
M=&%R=&%L;%]F+F\*82 M('1C;VUM:71?9BYO"F$@+2!T8V]N=&EG7V8N;PIA
M("T@=&5S=%]F+F\*82 M('1E<W1A;&Q?9BYO"F$@+2!T97-T86YY7V8N;PIA
M("T@=&5S=&-A;F-E;%]F+F\*82 M('1E<W1S;VUE7V8N;PIA("T@=&5X=&5N
M=%]F+F\*82 M('1F<F5E7V8N;PIA("T@=&AI;F1E>%]F+F\*82 M('1H=F5C
M=&]R7V8N;PIA("T@=&EN9&5X7V8N;PIA("T@=&QB7V8N;PIA("T@=&]P;W1E
M<W1?9BYO"F$@+2!T<VEZ95]F+F\*82 M('1S=')U8W1?9BYO"F$@+2!T=6)?
M9BYO"F$@+2!T=F5C=&]R7V8N;PIA("T@=6YP86-K7V8N;PIA("T@=V%I=%]F
M+F\*82 M('=A:71A;&Q?9BYO"F$@+2!W86ET86YY7V8N;PIA("T@=V%I='-O
M;65?9BYO"F$@+2!W=&EC:U]F+F\*82 M('=T:6UE7V8N;PIR86YL:6(@;&EB
M;7!I+F$*+V)I;B]C<"!L:6)M<&DN82 O:&]M92]A<G%U:2]L86TV,2]L:6(O
M;&EB;7!I+F$*<F%N;&EB("]H;VUE+V%R<75I+VQA;38Q+VQI8B]L:6)M<&DN
M80IM86ME6S)=.B!,96%V:6YG(&1I<F5C=&]R>2!@+VAO;64O87)Q=6DO;&%M
M-C$O;&EB+V]T8BUO8FHO;7!I)PH)=#H*;6%K95LR73H@16YT97)I;F<@9&ER
M96-T;W)Y(& O:&]M92]A<G%U:2]L86TV,2]L:6(O;W1B+6]B:B]T)PH)"65T
M8SH*;6%K95LS73H@16YT97)I;F<@9&ER96-T;W)Y(& O:&]M92]A<G%U:2]L
M86TV,2]L:6(O;W1B+6]B:B]T+V5T8R<*9V-C("U/("U$3$E.55@@+41I>#@V
M("U)+VAO;64O87)Q=6DO;&%M-C$O:" @+6,@+BXO+BXO+BXO+BXO<VAA<F4O
M971C+V%T;W,N8PIG8V,@+4\@+41,24Y56" M1&EX.#8@+4DO:&]M92]A<G%U
M:2]L86TV,2]H(" M8R N+B\N+B\N+B\N+B]S:&%R92]E=&,O8FQK='EP92YC
M"F=C8R M3R M1$Q)3E58("U$:7@X-B M22]H;VUE+V%R<75I+VQA;38Q+V@@
M("UC("XN+RXN+RXN+RXN+W-H87)E+V5T8R]C;VUB:6YE+F,*9V-C("U/("U$
M3$E.55@@+41I>#@V("U)+VAO;64O87)Q=6DO;&%M-C$O:" @+6,@+BXO+BXO
M+BXO;W1B+W0O971C+V9A:6PN8PIG8V,@+4\@+41,24Y56" M1&EX.#8@+4DO
M:&]M92]A<G%U:2]L86TV,2]H(" M8R N+B\N+B\N+B\N+B]S:&%R92]E=&,O
M9F5W+F,*9V-C("U/("U$3$E.55@@+41I>#@V("U)+VAO;64O87)Q=6DO;&%M
M-C$O:" @+6,@+BXO+BXO+BXO+BXO<VAA<F4O971C+V8R8W-T<FEN9RYC"F=C
M8R M3R M1$Q)3E58("U$:7@X-B M22]H;VUE+V%R<75I+VQA;38Q+V@@("UC
M("XN+RXN+RXN+V]T8B]T+V5T8R]G971I;F5T861D<BYC"F=C8R M3R M1$Q)
M3E58("U$:7@X-B M22]H;VUE+V%R<75I+VQA;38Q+V@@("UC("XN+RXN+RXN
M+RXN+W-H87)E+V5T8R]G971W;W)K9&ER+F,*9V-C("U/("U$3$E.55@@+41I
M>#@V("U)+VAO;64O87)Q=6DO;&%M-C$O:" @+6,@+BXO+BXO+BXO;W1B+W0O
M971C+VEE964N8PIG8V,@+4\@+41,24Y56" M1&EX.#8@+4DO:&]M92]A<G%U
M:2]L86TV,2]H(" M8R N+B\N+B\N+B\N+B]S:&%R92]E=&,O:71O82YC"F=C
M8R M3R M1$Q)3E58("U$:7@X-B M22]H;VUE+V%R<75I+VQA;38Q+V@@("UC
M("XN+RXN+RXN+RXN+V]T8B]S>7,O:V5R;F5L+VMI<')O8RYC"F=C8R M3R M
M1$Q)3E58("U$:7@X-B M22]H;VUE+V%R<75I+VQA;38Q+V@@("UC("XN+RXN
M+RXN+RXN+W-H87)E+V5T8R]L86UU;FEX+F,*9V-C("U/("U$3$E.55@@+41I
M>#@V("U)+VAO;64O87)Q=6DO;&%M-C$O:" @+6,@+BXO+BXO+BXO;W1B+W0O
M971C+VQD=&EM97(N8PIG8V,@+4\@+41,24Y56" M1&EX.#8@+4DO:&]M92]A
M<G%U:2]L86TV,2]H(" M8R N+B\N+B\N+B]O=&(O=')I;&QI=6TO;&EO871T
M86-H+F,*9V-C("U/("U$3$E.55@@+41I>#@V("U)+VAO;64O87)Q=6DO;&%M
M-C$O:" @+6,@+BXO+BXO+BXO;W1B+W1R:6QL:75M+VQP871T86-H+F,*9V-C
M("U/("U$3$E.55@@+41I>#@V("U)+VAO;64O87)Q=6DO;&%M-C$O:" @+6,@
M+BXO+BXO+BXO+BXO<VAA<F4O=')I;&QI=6TO;'!D971A8V@N8PIG8V,@+4\@
M+41,24Y56" M1&EX.#8@+4DO:&]M92]A<G%U:2]L86TV,2]H(" M8R N+B\N
M+B\N+B\N+B]S:&%R92]E=&,O;6EC<F]S;&5E<"YC"F=C8R M3R M1$Q)3E58
M("U$:7@X-B M22]H;VUE+V%R<75I+VQA;38Q+V@@("UC("XN+RXN+RXN+RXN
M+W-H87)E+V5T8R]M<G<N8PIG8V,@+4\@+41,24Y56" M1&EX.#8@+4DO:&]M
M92]A<G%U:2]L86TV,2]H(" M8R N+B\N+B\N+B\N+B]S:&%R92]E=&,O;FUS
M9V-O;G8N8PIG8V,@+4\@+41,24Y56" M1&EX.#8@+4DO:&]M92]A<G%U:2]L
M86TV,2]H(" M8R N+B\N+B\N+B\N+B]S:&%R92]E=&,O;F]D97-P:6XN8PIG
M8V,@+4\@+41,24Y56" M1&EX.#8@+4DO:&]M92]A<G%U:2]L86TV,2]H(" M
M8R N+B\N+B\N+B]O=&(O="]E=&,O<&%N:6,N8PIG8V,@+4\@+41,24Y56" M
M1&EX.#8@+4DO:&]M92]A<G%U:2]L86TV,2]H(" M8R N+B\N+B\N+B\N+B]S
M:&%R92]E=&,O<&%T:'-E87)C:"YC"F=C8R M3R M1$Q)3E58("U$:7@X-B M
M22]H;VUE+V%R<75I+VQA;38Q+V@@("UC("XN+RXN+RXN+RXN+W-H87)E+V5T
M8R]P<FEM92YC"F=C8R M3R M1$Q)3E58("U$:7@X-B M22]H;VUE+V%R<75I
M+VQA;38Q+V@@("UC("XN+RXN+RXN+RXN+W-H87)E+V5T8R]R978N8PIG8V,@
M+4\@+41,24Y56" M1&EX.#8@+4DO:&]M92]A<G%U:2]L86TV,2]H(" M8R N
M+B\N+B\N+B\N+B]S:&%R92]T<FEL;&EU;2]R=')S=&]R92YC"F=C8R M3R M
M1$Q)3E58("U$:7@X-B M22]H;VUE+V%R<75I+VQA;38Q+V@@("UC("XN+RXN
M+RXN+RXN+W-H87)E+V5T8R]S=&]I+F,*9V-C("U/("U$3$E.55@@+41I>#@V
M("U)+VAO;64O87)Q=6DO;&%M-C$O:" @+6,@+BXO+BXO+BXO+BXO<VAA<F4O
M971C+W1E<G)O<BYC"F=C8R M3R M1$Q)3E58("U$:7@X-B M22]H;VUE+V%R
M<75I+VQA;38Q+V@@("UC("XN+RXN+RXN+V]T8B]T+V5T8R]T=&EM92YC"F=C
M8R M3R M1$Q)3E58("U$:7@X-B M22]H;VUE+V%R<75I+VQA;38Q+V@@("UC
M("XN+RXN+RXN+RXN+W-H87)E+V5T8R]V8W1A8FQE+F,*9V-C("U/("U$3$E.
M55@@+41I>#@V("U)+VAO;64O87)Q=6DO;&%M-C$O:" @+6,@+BXO+BXO+BXO
M+BXO<VAA<F4O971C+U0N8PIG8V,@+4\@+41,24Y56" M1&EX.#8@+4DO:&]M
M92]A<G%U:2]L86TV,2]H(" M8R N+B\N+B\N+B]O=&(O="]E=&,O<V]C:V5T
M+F,*9V-C("U/("U$3$E.55@@+41I>#@V("U)+VAO;64O87)Q=6DO;&%M-C$O
M:" @+6,@+BXO+BXO+BXO;W1B+W0O971C+W-R9F0N8PHO8FEN+W)M("UF(&QI
M8F5T8RYA"F%R(')V(&QI8F5T8RYA(&%T;W,N;R!B;&MT>7!E+F\@8V]M8FEN
M92YO(&9A:6PN;R!F97<N;R!F,F-S=')I;F<N;R!G971I;F5T861D<BYO(&=E
M='=O<FMD:7(N;R!I965E+F\@:71O82YO(&MI<')O8RYO(&QA;75N:7@N;R!L
M9'1I;65R+F\@;&EO871T86-H+F\@;'!A='1A8V@N;R!L<&1E=&%C:"YO(&UI
M8W)O<VQE97 N;R!M<G<N;R!N;7-G8V]N=BYO(&YO9&5S<&EN+F\@<&%N:6,N
M;R!P871H<V5A<F-H+F\@<')I;64N;R!R978N;R!R=')S=&]R92YO('-T;VDN
M;R!T97)R;W(N;R!T=&EM92YO('9C=&%B;&4N;R!4+F\@<V]C:V5T+F\@<W)F
M9"YO"F$@+2!A=&]S+F\*82 M(&)L:W1Y<&4N;PIA("T@8V]M8FEN92YO"F$@
M+2!F86EL+F\*82 M(&9E=RYO"F$@+2!F,F-S=')I;F<N;PIA("T@9V5T:6YE
M=&%D9'(N;PIA("T@9V5T=V]R:V1I<BYO"F$@+2!I965E+F\*82 M(&ET;V$N
M;PIA("T@:VEP<F]C+F\*82 M(&QA;75N:7@N;PIA("T@;&1T:6UE<BYO"F$@
M+2!L:6]A='1A8V@N;PIA("T@;'!A='1A8V@N;PIA("T@;'!D971A8V@N;PIA
M("T@;6EC<F]S;&5E<"YO"F$@+2!M<G<N;PIA("T@;FUS9V-O;G8N;PIA("T@
M;F]D97-P:6XN;PIA("T@<&%N:6,N;PIA("T@<&%T:'-E87)C:"YO"F$@+2!P
M<FEM92YO"F$@+2!R978N;PIA("T@<G1R<W1O<F4N;PIA("T@<W1O:2YO"F$@
M+2!T97)R;W(N;PIA("T@='1I;64N;PIA("T@=F-T86)L92YO"F$@+2!4+F\*
M82 M('-O8VME="YO"F$@+2!S<F9D+F\*;6%K95LS73H@3&5A=FEN9R!D:7)E
M8W1O<GD@8"]H;VUE+V%R<75I+VQA;38Q+VQI8B]O=&(M;V)J+W0O971C)PH)
M"69R97$Z"FUA:V5;,UTZ($5N=&5R:6YG(&1I<F5C=&]R>2!@+VAO;64O87)Q
M=6DO;&%M-C$O;&EB+V]T8BUO8FHO="]F<F5Q)PIG8V,@+4\@+41,24Y56" M
M1&EX.#8@+4DO:&]M92]A<G%U:2]L86TV,2]H(" M8R N+B\N+B\N+B\N+B]S
M:&%R92]F<F5Q+W)F871E>&ET+F,*9V-C("U/("U$3$E.55@@+41I>#@V("U)
M+VAO;64O87)Q=6DO;&%M-C$O:" @+6,@+BXO+BXO+BXO+BXO<VAA<F4O9G)E
M<2]R9F%U>"YC"F=C8R M3R M1$Q)3E58("U$:7@X-B M22]H;VUE+V%R<75I
M+VQA;38Q+V@@("UC("XN+RXN+RXN+RXN+W-H87)E+V9R97$O<F9C;&]S92YC
M"F=C8R M3R M1$Q)3E58("U$:7@X-B M22]H;VUE+V%R<75I+VQA;38Q+V@@
M("UC("XN+RXN+RXN+RXN+W-H87)E+V9R97$O<F9L<V5E:RYC"F=C8R M3R M
M1$Q)3E58("U$:7@X-B M22]H;VUE+V%R<75I+VQA;38Q+V@@("UC("XN+RXN
M+RXN+RXN+W-H87)E+V9R97$O<F9O<&5N+F,*9V-C("U/("U$3$E.55@@+41I
M>#@V("U)+VAO;64O87)Q=6DO;&%M-C$O:" @+6,@+BXO+BXO+BXO+BXO<VAA
M<F4O9G)E<2]R9G)E860N8PIG8V,@+4\@+41,24Y56" M1&EX.#8@+4DO:&]M
M92]A<G%U:2]L86TV,2]H(" M8R N+B\N+B\N+B\N+B]S:&%R92]F<F5Q+W)F
M<VEM<&QE>"YC"F=C8R M3R M1$Q)3E58("U$:7@X-B M22]H;VUE+V%R<75I
M+VQA;38Q+V@@("UC("XN+RXN+RXN+RXN+W-H87)E+V9R97$O<F9S=&%T+F,*
M9V-C("U/("U$3$E.55@@+41I>#@V("U)+VAO;64O87)Q=6DO;&%M-C$O:" @
M+6,@+BXO+BXO+BXO+BXO<VAA<F4O9G)E<2]R9G=R:71E+F,*+V)I;B]R;2 M
M9B!L:6)F<F5Q+F$*87(@<G8@;&EB9G)E<2YA(')F871E>&ET+F\@<F9A=7@N
M;R!R9F-L;W-E+F\@<F9L<V5E:RYO(')F;W!E;BYO(')F<F5A9"YO(')F<VEM
M<&QE>"YO(')F<W1A="YO(')F=W)I=&4N;PIA("T@<F9A=&5X:70N;PIA("T@
M<F9A=7@N;PIA("T@<F9C;&]S92YO"F$@+2!R9FQS965K+F\*82 M(')F;W!E
M;BYO"F$@+2!R9G)E860N;PIA("T@<F9S:6UP;&5X+F\*82 M(')F<W1A="YO
M"F$@+2!R9G=R:71E+F\*;6%K95LS73H@3&5A=FEN9R!D:7)E8W1O<GD@8"]H
M;VUE+V%R<75I+VQA;38Q+VQI8B]O=&(M;V)J+W0O9G)E<2<*"0EK<F5Q.@IM
M86ME6S-=.B!%;G1E<FEN9R!D:7)E8W1O<GD@8"]H;VUE+V%R<75I+VQA;38Q
M+VQI8B]O=&(M;V)J+W0O:W)E<2<*9V-C("U/("U$3$E.55@@+41I>#@V("U)
M+VAO;64O87)Q=6DO;&%M-C$O:" @+6,@+BXO+BXO+BXO;W1B+W0O:W)E<2]C
M;&EE;G1I;RYC"F=C8R M3R M1$Q)3E58("U$:7@X-B M22]H;VUE+V%R<75I
M+VQA;38Q+V@@("UC("XN+RXN+RXN+V]T8B]T+VMR97$O8V]U=&5R+F,*9V-C
M("U/("U$3$E.55@@+41I>#@V("U)+VAO;64O87)Q=6DO;&%M-C$O:" @+6,@
M+BXO+BXO+BXO;W1B+W0O:W)E<2]K8W)E871E+F,*9V-C("U/("U$3$E.55@@
M+41I>#@V("U)+VAO;64O87)Q=6DO;&%M-C$O:" @+6,@+BXO+BXO+BXO;W1B
M+W0O:W)E<2]K871T86-H+F,*9V-C("U/("U$3$E.55@@+41I>#@V("U)+VAO
M;64O87)Q=6DO;&%M-C$O:" @+6,@+BXO+BXO+BXO;W1B+W0O:W)E<2]K9&5T
M86-H+F,*9V-C("U/("U$3$E.55@@+41I>#@V("U)+VAO;64O87)Q=6DO;&%M
M-C$O:" @+6,@+BXO+BXO+BXO+BXO<VAA<F4O:W)E<2]K9&]O;2YC"F=C8R M
M3R M1$Q)3E58("U$:7@X-B M22]H;VUE+V%R<75I+VQA;38Q+V@@("UC("XN
M+RXN+RXN+RXN+W-H87)E+VMR97$O:V5N=&5R+F,*9V-C("U/("U$3$E.55@@
M+41I>#@V("U)+VAO;64O87)Q=6DO;&%M-C$O:" @+6,@+BXO+BXO+BXO+BXO
M<VAA<F4O:W)E<2]K97AI="YC"F=C8R M3R M1$Q)3E58("U$:7@X-B M22]H
M;VUE+V%R<75I+VQA;38Q+V@@("UC("XN+RXN+RXN+RXN+W-H87)E+V5T8R]K
M:6QL+F,*9V-C("U/("U$3$E.55@@+41I>#@V("U)+VAO;64O87)Q=6DO;&%M
M-C$O:" @+6,@+BXO+BXO+BXO+BXO<VAA<F4O:W)E<2]K:6YI="YC"F=C8R M
M3R M1$Q)3E58("U$:7@X-B M22]H;VUE+V%R<75I+VQA;38Q+V@@("UC("XN
M+RXN+RXN+RXN+W-H87)E+VMR97$O:W)E8W8N8PIG8V,@+4\@+41,24Y56" M
M1&EX.#8@+4DO:&]M92]A<G%U:2]L86TV,2]H(" M8R N+B\N+B\N+B\N+B]S
M:&%R92]K<F5Q+VMS96YD+F,*9V-C("U/("U$3$E.55@@+41I>#@V("U)+VAO
M;64O87)Q=6DO;&%M-C$O:" @+6,@+BXO+BXO+BXO+BXO<VAA<F4O:W)E<2]K
M<VEG;F%L+F,*9V-C("U/("U$3$E.55@@+41I>#@V("U)+VAO;64O87)Q=6DO
M;&%M-C$O:" @+6,@+BXO+BXO+BXO+BXO<VAA<F4O:W)E<2]K<W(N8PIG8V,@
M+4\@+41,24Y56" M1&EX.#8@+4DO:&]M92]A<G%U:2]L86TV,2]H(" M8R N
M+B\N+B\N+B\N+B]S:&%R92]K<F5Q+VMS=&%T92YC"F=C8R M3R M1$Q)3E58
M("U$:7@X-B M22]H;VUE+V%R<75I+VQA;38Q+V@@("UC("XN+RXN+RXN+RXN
M+W-H87)E+VMR97$O:W1R86-E+F,*+V)I;B]R;2 M9B!L:6)K<F5Q+F$*87(@
M<G8@;&EB:W)E<2YA(&-L:65N=&EO+F\@8V]U=&5R+F\@:V-R96%T92YO(&MA
M='1A8V@N;R!K9&5T86-H+F\@:V1O;VTN;R!K96YT97(N;R!K97AI="YO(&MI
M;&PN;R!K:6YI="YO(&MR96-V+F\@:W-E;F0N;R!K<VEG;F%L+F\@:W-R+F\@
M:W-T871E+F\@:W1R86-E+F\*82 M(&-L:65N=&EO+F\*82 M(&-O=71E<BYO
M"F$@+2!K8W)E871E+F\*82 M(&MA='1A8V@N;PIA("T@:V1E=&%C:"YO"F$@
M+2!K9&]O;2YO"F$@+2!K96YT97(N;PIA("T@:V5X:70N;PIA("T@:VEL;"YO
M"F$@+2!K:6YI="YO"F$@+2!K<F5C=BYO"F$@+2!K<V5N9"YO"F$@+2!K<VEG
M;F%L+F\*82 M(&MS<BYO"F$@+2!K<W1A=&4N;PIA("T@:W1R86-E+F\*;6%K
M95LS73H@3&5A=FEN9R!D:7)E8W1O<GD@8"]H;VUE+V%R<75I+VQA;38Q+VQI
M8B]O=&(M;V)J+W0O:W)E<2<*"0EN<F5Q.@IM86ME6S-=.B!%;G1E<FEN9R!D
M:7)E8W1O<GD@8"]H;VUE+V%R<75I+VQA;38Q+VQI8B]O=&(M;V)J+W0O;G)E
M<2<*9V-C("U/("U$3$E.55@@+41I>#@V("U)+VAO;64O87)Q=6DO;&%M-C$O
M:" @+6,@+BXO+BXO+BXO+BXO<VAA<F4O;G)E<2]B9FEP<F]B92YC"F=C8R M
M3R M1$Q)3E58("U$:7@X-B M22]H;VUE+V%R<75I+VQA;38Q+V@@("UC("XN
M+RXN+RXN+RXN+W-H87)E+VYR97$O8F9I<V5L96-T+F,*9V-C("U/("U$3$E.
M55@@+41I>#@V("U)+VAO;64O87)Q=6DO;&%M-C$O:" @+6,@+BXO+BXO+BXO
M+BXO<VAA<F4O;G)E<2]B9G)E8W8N8PIG8V,@+4\@+41,24Y56" M1&EX.#8@
M+4DO:&]M92]A<G%U:2]L86TV,2]H(" M8R N+B\N+B\N+B\N+B]S:&%R92]N
M<F5Q+V)F<V5L96-T+F,*9V-C("U/("U$3$E.55@@+41I>#@V("U)+VAO;64O
M87)Q=6DO;&%M-C$O:" @+6,@+BXO+BXO+BXO+BXO<VAA<F4O;G)E<2]D<F5C
M=BYC"F=C8R M3R M1$Q)3E58("U$:7@X-B M22]H;VUE+V%R<75I+VQA;38Q
M+V@@("UC("XN+RXN+RXN+RXN+W-H87)E+VYR97$O9'-E;F0N8PIG8V,@+4\@
M+41,24Y56" M1&EX.#8@+4DO:&]M92]A<G%U:2]L86TV,2]H(" M8R N+B\N
M+B\N+B\N+B]S:&%R92]N<F5Q+V1S9G(N8PIG8V,@+4\@+41,24Y56" M1&EX
M.#8@+4DO:&]M92]A<G%U:2]L86TV,2]H(" M8R N+B\N+B\N+B\N+B]S:&%R
M92]N<F5Q+V9R96-V+F,*9V-C("U/("U$3$E.55@@+41I>#@V("U)+VAO;64O
M87)Q=6DO;&%M-C$O:" @+6,@+BXO+BXO+BXO+BXO<VAA<F4O<G)E<2]G971N
M970N8PIG8V,@+4\@+41,24Y56" M1&EX.#8@+4DO:&]M92]A<G%U:2]L86TV
M,2]H(" M8R N+B\N+B\N+B\N+B]S:&%R92]R<F5Q+V=E=')E;G0N8PIG8V,@
M+4\@+41,24Y56" M1&EX.#8@+4DO:&]M92]A<G%U:2]L86TV,2]H(" M8R N
M+B\N+B\N+B\N+B]S:&%R92]R<F5Q+V=E=&YO9&5S+F,*9V-C("U/("U$3$E.
M55@@+41I>#@V("U)+VAO;64O87)Q=6DO;&%M-C$O:" @+6,@+BXO+BXO+BXO
M+BXO<VAA<F4O;G)E<2]N<')O8F4N8PIG8V,@+4\@+41,24Y56" M1&EX.#8@
M+4DO:&]M92]A<G%U:2]L86TV,2]H(" M8R N+B\N+B\N+B\N+B]S:&%R92]N
M<F5Q+VYR96-V+F,*9V-C("U/("U$3$E.55@@+41I>#@V("U)+VAO;64O87)Q
M=6DO;&%M-C$O:" @+6,@+BXO+BXO+BXO+BXO<VAA<F4O;G)E<2]N<V5N9"YC
M"F=C8R M3R M1$Q)3E58("U$:7@X-B M22]H;VUE+V%R<75I+VQA;38Q+V@@
M("UC("XN+RXN+RXN+V]T8B]T+VYR97$O<')E8W8N8PIG8V,@+4\@+41,24Y5
M6" M1&EX.#8@+4DO:&]M92]A<G%U:2]L86TV,2]H(" M8R N+B\N+B\N+B]O
M=&(O="]N<F5Q+W!S96YD+F,*9V-C("U/("U$3$E.55@@+41I>#@V("U)+VAO
M;64O87)Q=6DO;&%M-C$O:" @+6,@+BXO+BXO+BXO+BXO<VAA<F4O;G)E<2]T
M<F5C=BYC"F=C8R M3R M1$Q)3E58("U$:7@X-B M22]H;VUE+V%R<75I+VQA
M;38Q+V@@("UC("XN+RXN+RXN+RXN+W-H87)E+VYR97$O='-E;F0N8PHO8FEN
M+W)M("UF(&QI8FYR97$N80IA<B!R=B!L:6)N<F5Q+F$@8F9I<')O8F4N;R!B
M9FES96QE8W0N;R!B9G)E8W8N;R!B9G-E;&5C="YO(&1R96-V+F\@9'-E;F0N
M;R!D<V9R+F\@9G)E8W8N;R!G971N970N;R!G971R96YT+F\@9V5T;F]D97,N
M;R!N<')O8F4N;R!N<F5C=BYO(&YS96YD+F\@<')E8W8N;R!P<V5N9"YO('1R
M96-V+F\@='-E;F0N;PIA("T@8F9I<')O8F4N;PIA("T@8F9I<V5L96-T+F\*
M82 M(&)F<F5C=BYO"F$@+2!B9G-E;&5C="YO"F$@+2!D<F5C=BYO"F$@+2!D
M<V5N9"YO"F$@+2!D<V9R+F\*82 M(&9R96-V+F\*82 M(&=E=&YE="YO"F$@
M+2!G971R96YT+F\*82 M(&=E=&YO9&5S+F\*82 M(&YP<F]B92YO"F$@+2!N
M<F5C=BYO"F$@+2!N<V5N9"YO"F$@+2!P<F5C=BYO"F$@+2!P<V5N9"YO"F$@
M+2!T<F5C=BYO"F$@+2!T<V5N9"YO"FUA:V5;,UTZ($QE879I;F<@9&ER96-T
M;W)Y(& O:&]M92]A<G%U:2]L86TV,2]L:6(O;W1B+6]B:B]T+VYR97$G"@D)
M=&]O;',Z"FUA:V5;,UTZ($5N=&5R:6YG(&1I<F5C=&]R>2!@+VAO;64O87)Q
M=6DO;&%M-C$O;&EB+V]T8BUO8FHO="]T;V]L<R<*9V-C("U/("U$3$E.55@@
M+41I>#@V("U)+VAO;64O87)Q=6DO;&%M-C$O:" @+6,@+BXO+BXO+BXO+BXO
M<VAA<F4O971C+V%L;%]H87-H+F,*9V-C("U/("U$3$E.55@@+41I>#@V("U)
M+VAO;64O87)Q=6DO;&%M-C$O:" @+6,@+BXO+BXO+BXO+BXO<VAA<F4O971C
M+V%L;%]L:7-T+F,*9V-C("U/("U$3$E.55@@+41I>#@V("U)+VAO;64O87)Q
M=6DO;&%M-C$O:" @+6,@+BXO+BXO+BXO+BXO<VAA<F4O971C+V%L;%]Q=65U
M92YC"F=C8R M3R M1$Q)3E58("U$:7@X-B M22]H;VUE+V%R<75I+VQA;38Q
M+V@@("UC("XN+RXN+RXN+RXN+W-H87)E+V5T8R]A;&Q?<VAA<V@N8PIG8V,@
M+4\@+41,24Y56" M1&EX.#8@+4DO:&]M92]A<G%U:2]L86TV,2]H(" M8R N
M+B\N+B\N+B\N+B]S:&%R92]E=&,O86QL7W-L:7-T+F,*9V-C("U/("U$3$E.
M55@@+41I>#@V("U)+VAO;64O87)Q=6DO;&%M-C$O:" @+6,@+BXO+BXO+BXO
M+BXO<VAA<F4O971C+V%L;%]S<75E=64N8PHO8FEN+W)M("UF(&QI8G1O;VQS
M+F$*87(@<G8@;&EB=&]O;',N82!A;&Q?:&%S:"YO(&%L;%]L:7-T+F\@86QL
M7W%U975E+F\@86QL7W-H87-H+F\@86QL7W-L:7-T+F\@86QL7W-Q=65U92YO
M"F$@+2!A;&Q?:&%S:"YO"F$@+2!A;&Q?;&ES="YO"F$@+2!A;&Q?<75E=64N
M;PIA("T@86QL7W-H87-H+F\*82 M(&%L;%]S;&ES="YO"F$@+2!A;&Q?<W%U
M975E+F\*;6%K95LS73H@3&5A=FEN9R!D:7)E8W1O<GD@8"]H;VUE+V%R<75I
M+VQA;38Q+VQI8B]O=&(M;V)J+W0O=&]O;',G"B]B:6XO<FT@+68@;&EB="YA
M"F%R(')V(&QI8G0N82 J+RHN;PIA("T@971C+U0N;PIA("T@971C+V%T;W,N
M;PIA("T@971C+V)L:W1Y<&4N;PIA("T@971C+V-O;6)I;F4N;PIA("T@971C
M+V8R8W-T<FEN9RYO"F$@+2!E=&,O9F%I;"YO"F$@+2!E=&,O9F5W+F\*82 M
M(&5T8R]G971I;F5T861D<BYO"F$@+2!E=&,O9V5T=V]R:V1I<BYO"F$@+2!E
M=&,O:65E92YO"F$@+2!E=&,O:71O82YO"F$@+2!E=&,O:VEP<F]C+F\*82 M
M(&5T8R]L86UU;FEX+F\*82 M(&5T8R]L9'1I;65R+F\*82 M(&5T8R]L:6]A
M='1A8V@N;PIA("T@971C+VQP871T86-H+F\*82 M(&5T8R]L<&1E=&%C:"YO
M"F$@+2!E=&,O;6EC<F]S;&5E<"YO"F$@+2!E=&,O;7)W+F\*82 M(&5T8R]N
M;7-G8V]N=BYO"F$@+2!E=&,O;F]D97-P:6XN;PIA("T@971C+W!A;FEC+F\*
M82 M(&5T8R]P871H<V5A<F-H+F\*82 M(&5T8R]P<FEM92YO"F$@+2!E=&,O
M<F5V+F\*82 M(&5T8R]R=')S=&]R92YO"F$@+2!E=&,O<V]C:V5T+F\*82 M
M(&5T8R]S<F9D+F\*82 M(&5T8R]S=&]I+F\*82 M(&5T8R]T97)R;W(N;PIA
M("T@971C+W1T:6UE+F\*82 M(&5T8R]V8W1A8FQE+F\*82 M(&9R97$O<F9A
M=&5X:70N;PIA("T@9G)E<2]R9F%U>"YO"F$@+2!F<F5Q+W)F8VQO<V4N;PIA
M("T@9G)E<2]R9FQS965K+F\*82 M(&9R97$O<F9O<&5N+F\*82 M(&9R97$O
M<F9R96%D+F\*82 M(&9R97$O<F9S:6UP;&5X+F\*82 M(&9R97$O<F9S=&%T
M+F\*82 M(&9R97$O<F9W<FET92YO"F$@+2!K<F5Q+V-L:65N=&EO+F\*82 M
M(&MR97$O8V]U=&5R+F\*82 M(&MR97$O:V%T=&%C:"YO"F$@+2!K<F5Q+VMC
M<F5A=&4N;PIA("T@:W)E<2]K9&5T86-H+F\*82 M(&MR97$O:V1O;VTN;PIA
M("T@:W)E<2]K96YT97(N;PIA("T@:W)E<2]K97AI="YO"F$@+2!K<F5Q+VMI
M;&PN;PIA("T@:W)E<2]K:6YI="YO"F$@+2!K<F5Q+VMR96-V+F\*82 M(&MR
M97$O:W-E;F0N;PIA("T@:W)E<2]K<VEG;F%L+F\*82 M(&MR97$O:W-R+F\*
M82 M(&MR97$O:W-T871E+F\*82 M(&MR97$O:W1R86-E+F\*82 M(&YR97$O
M8F9I<')O8F4N;PIA("T@;G)E<2]B9FES96QE8W0N;PIA("T@;G)E<2]B9G)E
M8W8N;PIA("T@;G)E<2]B9G-E;&5C="YO"F$@+2!N<F5Q+V1R96-V+F\*82 M
M(&YR97$O9'-E;F0N;PIA("T@;G)E<2]D<V9R+F\*82 M(&YR97$O9G)E8W8N
M;PIA("T@;G)E<2]G971N970N;PIA("T@;G)E<2]G971N;V1E<RYO"F$@+2!N
M<F5Q+V=E=')E;G0N;PIA("T@;G)E<2]N<')O8F4N;PIA("T@;G)E<2]N<F5C
M=BYO"F$@+2!N<F5Q+VYS96YD+F\*82 M(&YR97$O<')E8W8N;PIA("T@;G)E
M<2]P<V5N9"YO"F$@+2!N<F5Q+W1R96-V+F\*82 M(&YR97$O='-E;F0N;PIA
M("T@=&]O;',O86QL7VAA<V@N;PIA("T@=&]O;',O86QL7VQI<W0N;PIA("T@
M=&]O;',O86QL7W%U975E+F\*82 M('1O;VQS+V%L;%]S:&%S:"YO"F$@+2!T
M;V]L<R]A;&Q?<VQI<W0N;PIA("T@=&]O;',O86QL7W-Q=65U92YO"G)A;FQI
M8B!L:6)T+F$*+V)I;B]C<"!L:6)T+F$@+VAO;64O87)Q=6DO;&%M-C$O;&EB
M+VQI8G0N80IR86YL:6(@+VAO;64O87)Q=6DO;&%M-C$O;&EB+VQI8G0N80IM
M86ME6S)=.B!,96%V:6YG(&1I<F5C=&]R>2!@+VAO;64O87)Q=6DO;&%M-C$O
M;&EB+V]T8BUO8FHO="<*"71R:6QL:75M.@IM86ME6S)=.B!%;G1E<FEN9R!D
M:7)E8W1O<GD@8"]H;VUE+V%R<75I+VQA;38Q+VQI8B]O=&(M;V)J+W1R:6QL
M:75M)PIG8V,@+4\@+41,24Y56" M1&EX.#8@+4DO:&]M92]A<G%U:2]L86TV
M,2]H("U)+BXO+BXO+BXO<VAA<F4O8F]O=" @+6,@+BXO+BXO+BXO<VAA<F4O
M8F]O="]A<'!?;6=M="YC"F=C8R M3R M1$Q)3E58("U$:7@X-B M22]H;VUE
M+V%R<75I+VQA;38Q+V@@+4DN+B\N+B\N+B]S:&%R92]B;V]T(" M8R N+B\N
M+B\N+B]S:&%R92]B;V]T+V%S8U]P87)S92YC"F=C8R M3R M1$Q)3E58("U$
M:7@X-B M22]H;VUE+V%R<75I+VQA;38Q+V@@+4DN+B\N+B\N+B]S:&%R92]B
M;V]T(" M8R N+B\N+B\N+B]S:&%R92]B;V]T+V%S8U]R=6XN8PIG8V,@+4\@
M+41,24Y56" M1&EX.#8@+4DO:&]M92]A<G%U:2]L86TV,2]H("U)+BXO+BXO
M+BXO<VAA<F4O8F]O=" @+6,@+BXO+BXO+BXO<VAA<F4O8F]O="]A<V-?<V-H
M961U;&4N8PIG8V,@+4\@+41,24Y56" M1&EX.#8@+4DO:&]M92]A<G%U:2]L
M86TV,2]H("U)+BXO+BXO+BXO<VAA<F4O8F]O=" @+6,@+BXO+BXO+BXO<VAA
M<F4O<G)E<2]G971S;6%R="YC"F=C8R M3R M1$Q)3E58("U$:7@X-B M22]H
M;VUE+V%R<75I+VQA;38Q+V@@+4DN+B\N+B\N+B]S:&%R92]B;V]T(" M8R N
M+B\N+B\N+B]S:&%R92]E=&,O9V5T=V]R:V1I<BYC"F=C8R M3R M1$Q)3E58
M("U$:7@X-B M22]H;VUE+V%R<75I+VQA;38Q+V@@+4DN+B\N+B\N+B]S:&%R
M92]B;V]T(" M8R N+B\N+B\N+B]S:&%R92]T<FEL;&EU;2]L9&]L:6YK<RYC
M"F=C8R M3R M1$Q)3E58("U$:7@X-B M22]H;VUE+V%R<75I+VQA;38Q+V@@
M+4DN+B\N+B\N+B]S:&%R92]B;V]T(" M8R N+B\N+B\N+B]S:&%R92]F<F5Q
M+VQF;W!E;F9D+F,*9V-C("U/("U$3$E.55@@+41I>#@V("U)+VAO;64O87)Q
M=6DO;&%M-C$O:" M22XN+RXN+RXN+W-H87)E+V)O;W0@("UC("XN+RXN+RXN
M+W-H87)E+W1R:6QL:75M+W)B9G!A<FUS+F,*9V-C("U/("U$3$E.55@@+41I
M>#@V("U)+VAO;64O87)Q=6DO;&%M-C$O:" M22XN+RXN+RXN+W-H87)E+V)O
M;W0@("UC("XN+RXN+RXN+W-H87)E+W1R:6QL:75M+W)B9FQO;VLN8PIG8V,@
M+4\@+41,24Y56" M1&EX.#8@+4DO:&]M92]A<G%U:2]L86TV,2]H("U)+BXO
M+BXO+BXO<VAA<F4O8F]O=" @+6,@+BXO+BXO+BXO<VAA<F4O=')I;&QI=6TO
M<F)F<W1A=&4N8PIG8V,@+4\@+41,24Y56" M1&EX.#8@+4DO:&]M92]A<G%U
M:2]L86TV,2]H("U)+BXO+BXO+BXO<VAA<F4O8F]O=" @+6,@+BXO+BXO+BXO
M<VAA<F4O=')I;&QI=6TO<F)F<W=E97 N8PIG8V,@+4\@+41,24Y56" M1&EX
M.#8@+4DO:&]M92]A<G%U:2]L86TV,2]H("U)+BXO+BXO+BXO<VAA<F4O8F]O
M=" @+6,@+BXO+BXO+BXO<VAA<F4O=')I;&QI=6TO<F)F<W=E97 Q+F,*9V-C
M("U/("U$3$E.55@@+41I>#@V("U)+VAO;64O87)Q=6DO;&%M-C$O:" M22XN
M+RXN+RXN+W-H87)E+V)O;W0@("UC("XN+RXN+RXN+W-H87)E+W1R:6QL:75M
M+W)B9G=I<&4N8PIG8V,@+4\@+41,24Y56" M1&EX.#8@+4DO:&]M92]A<G%U
M:2]L86TV,2]H("U)+BXO+BXO+BXO<VAA<F4O8F]O=" @+6,@+BXO+BXO+BXO
M<VAA<F4O=')I;&QI=6TO<F5C:&\N8PIG8V,@+4\@+41,24Y56" M1&EX.#8@
M+4DO:&]M92]A<G%U:2]L86TV,2]H("U)+BXO+BXO+BXO<VAA<F4O8F]O=" @
M+6,@+BXO+BXO+BXO<VAA<F4O=')I;&QI=6TO<F9L870N8PIG8V,@+4\@+41,
M24Y56" M1&EX.#8@+4DO:&]M92]A<G%U:2]L86TV,2]H("U)+BXO+BXO+BXO
M<VAA<F4O8F]O=" @+6,@+BXO+BXO+BXO<VAA<F4O=')I;&QI=6TO<F9L8VQE
M86XN8PIG8V,@+4\@+41,24Y56" M1&EX.#8@+4DO:&]M92]A<G%U:2]L86TV
M,2]H("U)+BXO+BXO+BXO<VAA<F4O8F]O=" @+6,@+BXO+BXO+BXO<VAA<F4O
M9G)E<2]R9G-T871E+F,*9V-C("U/("U$3$E.55@@+41I>#@V("U)+VAO;64O
M87)Q=6DO;&%M-C$O:" M22XN+RXN+RXN+W-H87)E+V)O;W0@("UC("XN+RXN
M+RXN+W-H87)E+W1R:6QL:75M+W)G970N8PIG8V,@+4\@+41,24Y56" M1&EX
M.#8@+4DO:&]M92]A<G%U:2]L86TV,2]H("U)+BXO+BXO+BXO<VAA<F4O8F]O
M=" @+6,@+BXO+BXO+BXO<VAA<F4O=')I;&QI=6TO<FQO860N8PIG8V,@+4\@
M+41,24Y56" M1&EX.#8@+4DO:&]M92]A<G%U:2]L86TV,2]H("U)+BXO+BXO
M+BXO<VAA<F4O8F]O=" @+6,@+BXO+BXO+BXO<VAA<F4O=')I;&QI=6TO<G!C
M<F5A=&4N8PIG8V,@+4\@+41,24Y56" M1&EX.#8@+4DO:&]M92]A<G%U:2]L
M86TV,2]H("U)+BXO+BXO+BXO<VAA<F4O8F]O=" @+6,@+BXO+BXO+BXO<VAA
M<F4O=')I;&QI=6TO<G!D;V]M+F,*9V-C("U/("U$3$E.55@@+41I>#@V("U)
M+VAO;64O87)Q=6DO;&%M-C$O:" M22XN+RXN+RXN+W-H87)E+V)O;W0@("UC
M("XN+RXN+RXN+W-H87)E+W1R:6QL:75M+W)P9V\N8PIG8V,@+4\@+41,24Y5
M6" M1&EX.#8@+4DO:&]M92]A<G%U:2]L86TV,2]H("U)+BXO+BXO+BXO<VAA
M<F4O8F]O=" @+6,@+BXO+BXO+BXO<VAA<F4O=')I;&QI=6TO<G!L;V%D9V\N
M8PIG8V,@+4\@+41,24Y56" M1&EX.#8@+4DO:&]M92]A<G%U:2]L86TV,2]H
M("U)+BXO+BXO+BXO<VAA<F4O8F]O=" @+6,@+BXO+BXO+BXO<VAA<F4O=')I
M;&QI=6TO<G!S<&%W;BYC"F=C8R M3R M1$Q)3E58("U$:7@X-B M22]H;VUE
M+V%R<75I+VQA;38Q+V@@+4DN+B\N+B\N+B]S:&%R92]B;V]T(" M8R N+B\N
M+B\N+B]S:&%R92]T<FEL;&EU;2]R<'-T871E+F,*9V-C("U/("U$3$E.55@@
M+41I>#@V("U)+VAO;64O87)Q=6DO;&%M-C$O:" M22XN+RXN+RXN+W-H87)E
M+V)O;W0@("UC("XN+RXN+RXN+W-H87)E+W1R:6QL:75M+W)P=V%I="YC"F=C
M8R M3R M1$Q)3E58("U$:7@X-B M22]H;VUE+V%R<75I+VQA;38Q+V@@+4DN
M+B\N+B\N+B]S:&%R92]B;V]T(" M8R N+B\N+B\N+B]S:&%R92]R<F5Q+W)R
M<V5T<F5N=',N8PIG8V,@+4\@+41,24Y56" M1&EX.#8@+4DO:&]M92]A<G%U
M:2]L86TV,2]H("U)+BXO+BXO+BXO<VAA<F4O8F]O=" @+6,@+BXO+BXO+BXO
M<VAA<F4O<G)E<2]R<G-E='-M87)T+F,*9V-C("U/("U$3$E.55@@+41I>#@V
M("U)+VAO;64O87)Q=6DO;&%M-C$O:" M22XN+RXN+RXN+W-H87)E+V)O;W0@
M("UC("XN+RXN+RXN+W-H87)E+W1R:6QL:75M+W)T<F9G970N8PIG8V,@+4\@
M+41,24Y56" M1&EX.#8@+4DO:&]M92]A<G%U:2]L86TV,2]H("U)+BXO+BXO
M+BXO<VAA<F4O8F]O=" @+6,@+BXO+BXO+BXO<VAA<F4O=')I;&QI=6TO<G1R
M9V5T+F,*9V-C("U/("U$3$E.55@@+41I>#@V("U)+VAO;64O87)Q=6DO;&%M
M-C$O:" M22XN+RXN+RXN+W-H87)E+V)O;W0@("UC("XN+RXN+RXN+W-H87)E
M+W1R:6QL:75M+W)T<FYA;64N8PIG8V,@+4\@+41,24Y56" M1&EX.#8@+4DO
M:&]M92]A<G%U:2]L86TV,2]H("U)+BXO+BXO+BXO<VAA<F4O8F]O=" @+6,@
M+BXO+BXO+BXO<VAA<F4O=')I;&QI=6TO<G1R<VEM<&QE>"YC"F=C8R M3R M
M1$Q)3E58("U$:7@X-B M22]H;VUE+V%R<75I+VQA;38Q+V@@+4DN+B\N+B\N
M+B]S:&%R92]B;V]T(" M8R N+B\N+B\N+B]S:&%R92]T<FEL;&EU;2]44DE,
M+F,*+V)I;B]R;2 M9B!L:6)T<FEL;&EU;2YA"F%R(')V(&QI8G1R:6QL:75M
M+F$@87!P7VUG;70N;R!A<V-?<&%R<V4N;R!A<V-?<G5N+F\@87-C7W-C:&5D
M=6QE+F\@9V5T<VUA<G0N;R!G971W;W)K9&ER+F\@;&1O;&EN:W,N;R!L9F]P
M96YF9"YO(')B9G!A<FUS+F\@<F)F;&]O:RYO(')B9G-T871E+F\@<F)F<W=E
M97 N;R!R8F9S=V5E<#$N;R!R8F9W:7!E+F\@<F5C:&\N;R!R9FQA="YO(')F
M;&-L96%N+F\@<F9S=&%T92YO(')G970N;R!R;&]A9"YO(')P8W)E871E+F\@
M<G!D;V]M+F\@<G!G;RYO(')P;&]A9&=O+F\@<G!S<&%W;BYO(')P<W1A=&4N
M;R!R<'=A:70N;R!R<G-E=')E;G1S+F\@<G)S971S;6%R="YO(')T<F9G970N
M;R!R=')G970N;R!R=')N86UE+F\@<G1R<VEM<&QE>"YO(%1224PN;PIA("T@
M87!P7VUG;70N;PIA("T@87-C7W!A<G-E+F\*82 M(&%S8U]R=6XN;PIA("T@
M87-C7W-C:&5D=6QE+F\*82 M(&=E='-M87)T+F\*82 M(&=E='=O<FMD:7(N
M;PIA("T@;&1O;&EN:W,N;PIA("T@;&9O<&5N9F0N;PIA("T@<F)F<&%R;7,N
M;PIA("T@<F)F;&]O:RYO"F$@+2!R8F9S=&%T92YO"F$@+2!R8F9S=V5E<"YO
M"F$@+2!R8F9S=V5E<#$N;PIA("T@<F)F=VEP92YO"F$@+2!R96-H;RYO"F$@
M+2!R9FQA="YO"F$@+2!R9FQC;&5A;BYO"F$@+2!R9G-T871E+F\*82 M(')G
M970N;PIA("T@<FQO860N;PIA("T@<G!C<F5A=&4N;PIA("T@<G!D;V]M+F\*
M82 M(')P9V\N;PIA("T@<G!L;V%D9V\N;PIA("T@<G!S<&%W;BYO"F$@+2!R
M<'-T871E+F\*82 M(')P=V%I="YO"F$@+2!R<G-E=')E;G1S+F\*82 M(')R
M<V5T<VUA<G0N;PIA("T@<G1R9F=E="YO"F$@+2!R=')G970N;PIA("T@<G1R
M;F%M92YO"F$@+2!R=')S:6UP;&5X+F\*82 M(%1224PN;PIR86YL:6(@;&EB
M=')I;&QI=6TN80HO8FEN+V-P(&QI8G1R:6QL:75M+F$@+VAO;64O87)Q=6DO
M;&%M-C$O;&EB+VQI8G1R:6QL:75M+F$*<F%N;&EB("]H;VUE+V%R<75I+VQA
M;38Q+VQI8B]L:6)T<FEL;&EU;2YA"FUA:V5;,ETZ($QE879I;F<@9&ER96-T
M;W)Y(& O:&]M92]A<G%U:2]L86TV,2]L:6(O;W1B+6]B:B]T<FEL;&EU;2<*
M"71S=&1I;SH*;6%K95LR73H@16YT97)I;F<@9&ER96-T;W)Y(& O:&]M92]A
M<G%U:2]L86TV,2]L:6(O;W1B+6]B:B]T<W1D:6\G"F=C8R M3R M1$Q)3E58
M("U$:7@X-B M22]H;VUE+V%R<75I+VQA;38Q+V@@("UC("XN+RXN+RXN+W-H
M87)E+W1S=&1I;R]?=&EO8BYC"F=C8R M3R M1$Q)3E58("U$:7@X-B M22]H
M;VUE+V%R<75I+VQA;38Q+V@@("UC("XN+RXN+RXN+W-H87)E+W1S=&1I;R]G
M971B=68N8PIG8V,@+4\@+41,24Y56" M1&EX.#8@+4DO:&]M92]A<G%U:2]L
M86TV,2]H(" M8R N+B\N+B\N+B]S:&%R92]T<W1D:6\O:6]M87 N8PIG8V,@
M+4\@+41,24Y56" M1&EX.#8@+4DO:&]M92]A<G%U:2]L86TV,2]H(" M8R N
M+B\N+B\N+B]S:&%R92]T<W1D:6\O=&9C;&]S92YC"F=C8R M3R M1$Q)3E58
M("U$:7@X-B M22]H;VUE+V%R<75I+VQA;38Q+V@@("UC("XN+RXN+RXN+W-H
M87)E+W1S=&1I;R]T9F1O<&5N+F,*9V-C("U/("U$3$E.55@@+41I>#@V("U)
M+VAO;64O87)Q=6DO;&%M-C$O:" @+6,@+BXO+BXO+BXO<VAA<F4O='-T9&EO
M+W1F9FQU<V@N8PIG8V,@+4\@+41,24Y56" M1&EX.#8@+4DO:&]M92]A<G%U
M:2]L86TV,2]H(" M8R N+B\N+B\N+B]S:&%R92]T<W1D:6\O=&9G971C+F,*
M9V-C("U/("U$3$E.55@@+41I>#@V("U)+VAO;64O87)Q=6DO;&%M-C$O:" @
M+6,@+BXO+BXO+BXO<VAA<F4O='-T9&EO+W1F9V5T<RYC"F=C8R M3R M1$Q)
M3E58("U$:7@X-B M22]H;VUE+V%R<75I+VQA;38Q+V@@("UC("XN+RXN+RXN
M+W-H87)E+W1S=&1I;R]T9F]P96XN8PIG8V,@+4\@+41,24Y56" M1&EX.#8@
M+4DO:&]M92]A<G%U:2]L86TV,2]H(" M8R N+B\N+B\N+B]S:&%R92]T<W1D
M:6\O=&9P<FEN="YC"F=C8R M3R M1$Q)3E58("U$:7@X-B M22]H;VUE+V%R
M<75I+VQA;38Q+V@@("UC("XN+RXN+RXN+W-H87)E+W1S=&1I;R]T9G!U=&,N
M8PIG8V,@+4\@+41,24Y56" M1&EX.#8@+4DO:&]M92]A<G%U:2]L86TV,2]H
M(" M8R N+B\N+B\N+B]S:&%R92]T<W1D:6\O=&9P=71S+F,*9V-C("U/("U$
M3$E.55@@+41I>#@V("U)+VAO;64O87)Q=6DO;&%M-C$O:" @+6,@+BXO+BXO
M+BXO<VAA<F4O='-T9&EO+W1F<F5A9"YC"F=C8R M3R M1$Q)3E58("U$:7@X
M-B M22]H;VUE+V%R<75I+VQA;38Q+V@@("UC("XN+RXN+RXN+W-H87)E+W1S
M=&1I;R]T9G-C86XN8PIG8V,@+4\@+41,24Y56" M1&EX.#8@+4DO:&]M92]A
M<G%U:2]L86TV,2]H(" M8R N+B\N+B\N+B]S:&%R92]T<W1D:6\O=&9S965K
M+F,*9V-C("U/("U$3$E.55@@+41I>#@V("U)+VAO;64O87)Q=6DO;&%M-C$O
M:" @+6,@+BXO+BXO+BXO<VAA<F4O='-T9&EO+W1F=W)I=&4N8PIG8V,@+4\@
M+41,24Y56" M1&EX.#8@+4DO:&]M92]A<G%U:2]L86TV,2]H(" M8R N+B\N
M+B\N+B]S:&%R92]T<W1D:6\O='!R:6YT+F,*9V-C("U/("U$3$E.55@@+41I
M>#@V("U)+VAO;64O87)Q=6DO;&%M-C$O:" @+6,@+BXO+BXO+BXO<VAA<F4O
M='-T9&EO+W1S8V%N+F,*9V-C("U/("U$3$E.55@@+41I>#@V("U)+VAO;64O
M87)Q=6DO;&%M-C$O:" @+6,@+BXO+BXO+BXO<VAA<F4O='-T9&EO+W1S971B
M=68N8PHO8FEN+W)M("UF(&QI8G1S=&1I;RYA"F%R(')V(&QI8G1S=&1I;RYA
M(%]T:6]B+F\@9V5T8G5F+F\@:6]M87 N;R!T9F-L;W-E+F\@=&9D;W!E;BYO
M('1F9FQU<V@N;R!T9F=E=&,N;R!T9F=E=',N;R!T9F]P96XN;R!T9G!R:6YT
M+F\@=&9P=71C+F\@=&9P=71S+F\@=&9R96%D+F\@=&9S8V%N+F\@=&9S965K
M+F\@=&9W<FET92YO('1P<FEN="YO('1S8V%N+F\@='-E=&)U9BYO"F$@+2!?
M=&EO8BYO"F$@+2!G971B=68N;PIA("T@:6]M87 N;PIA("T@=&9C;&]S92YO
M"F$@+2!T9F1O<&5N+F\*82 M('1F9FQU<V@N;PIA("T@=&9G971C+F\*82 M
M('1F9V5T<RYO"F$@+2!T9F]P96XN;PIA("T@=&9P<FEN="YO"F$@+2!T9G!U
M=&,N;PIA("T@=&9P=71S+F\*82 M('1F<F5A9"YO"F$@+2!T9G-C86XN;PIA
M("T@=&9S965K+F\*82 M('1F=W)I=&4N;PIA("T@='!R:6YT+F\*82 M('1S
M8V%N+F\*82 M('1S971B=68N;PIR86YL:6(@;&EB='-T9&EO+F$*+V)I;B]C
M<"!L:6)T<W1D:6\N82 O:&]M92]A<G%U:2]L86TV,2]L:6(O;&EB='-T9&EO
M+F$*<F%N;&EB("]H;VUE+V%R<75I+VQA;38Q+VQI8B]L:6)T<W1D:6\N80IM
M86ME6S)=.B!,96%V:6YG(&1I<F5C=&]R>2!@+VAO;64O87)Q=6DO;&%M-C$O
M;&EB+V]T8BUO8FHO='-T9&EO)PIM86ME6S%=.B!,96%V:6YG(&1I<F5C=&]R
M>2!@+VAO;64O87)Q=6DO;&%M-C$O;&EB+V]T8BUO8FHG"G1O;VQS+6]B:CH*
M;6%K95LQ73H@16YT97)I;F<@9&ER96-T;W)Y(& O:&]M92]A<G%U:2]L86TV
M,2]T;V]L<RUO8FHG"@EH8F]O=#H*;6%K95LR73H@16YT97)I;F<@9&ER96-T
M;W)Y(& O:&]M92]A<G%U:2]L86TV,2]T;V]L<RUO8FHO:&)O;W0G"F=C8R M
M3R M1$Q)3E58("U$:7@X-B M22]H;VUE+V%R<75I+VQA;38Q+V@@+4DN+B\N
M+B]S:&%R92]B;V]T("U$1$5&4%-#2$5-03U<(B]H;VUE+V%R<75I+VQA;38Q
M+V)O;W1<(B M8R N+B\N+B]T;V]L<R]H8F]O="]H8F]O="YC"F=C8R M3R M
M1$Q)3E58("U$:7@X-B M22]H;VUE+V%R<75I+VQA;38Q+V@@+4DN+B\N+B]S
M:&%R92]B;V]T("U$1$5&4%-#2$5-03U<(B]H;VUE+V%R<75I+VQA;38Q+V)O
M;W1<(B M8R N+B\N+B]S:&%R92]B;V]T+W!R;V-?<V-H96UA+F,*9V-C(" M
M;R!H8F]O="!H8F]O="YO('!R;V-?<V-H96UA+F\@+4PO:&]M92]A<G%U:2]L
M86TV,2]L:6(@+6QA<F=S("UL=" *+V)I;B]C<"!H8F]O=" O:&]M92]A<G%U
M:2]L86TV,2]B:6XO:&)O;W0*;6%K95LR73H@3&5A=FEN9R!D:7)E8W1O<GD@
M8"]H;VUE+V%R<75I+VQA;38Q+W1O;VQS+6]B:B]H8F]O="<*"6AC8SH*;6%K
M95LR73H@16YT97)I;F<@9&ER96-T;W)Y(& O:&]M92]A<G%U:2]L86TV,2]T
M;V]L<RUO8FHO:&-C)PIG8V,@+4\@+41,24Y56" M1&EX.#8@+4DO:&]M92]A
M<G%U:2]L86TV,2]H("U)+BXO+BXO<VAA<F4O8F]O=" M1$1%1E ]7"(O:&]M
M92]A<G%U:2]L86TV,5PB("U$1$5&5$-#/5PB9V-C7"(@+41/4SU<(BU$3$E.
M55A<(B M1$-053U<(BU$:7@X-EPB("U$4UE33$E"4STG(B(G("UC("XN+RXN
M+W1O;VQS+VAC8R]H8V,N8PIG8V,@+4\@+41,24Y56" M1&EX.#8@+4DO:&]M
M92]A<G%U:2]L86TV,2]H("U)+BXO+BXO<VAA<F4O8F]O=" M1$1%1E ]7"(O
M:&]M92]A<G%U:2]L86TV,5PB("U$1$5&5$-#/5PB9V-C7"(@+41/4SU<(BU$
M3$E.55A<(B M1$-053U<(BU$:7@X-EPB("U$4UE33$E"4STG(B(G("UC("XN
M+RXN+W-H87)E+V)O;W0O<')O8U]S8VAE;6$N8PIG8V,@("UO(&AC8R!H8V,N
M;R!P<F]C7W-C:&5M82YO("U,+VAO;64O87)Q=6DO;&%M-C$O;&EB("UL87)G
M<R M;'0*+V)I;B]C<"!H8V,@+VAO;64O87)Q=6DO;&%M-C$O8FEN+VAC8PIM
M86ME6S)=.B!,96%V:6YG(&1I<F5C=&]R>2!@+VAO;64O87)Q=6DO;&%M-C$O
M=&]O;',M;V)J+VAC8R<*"6AF-S<Z"FUA:V5;,ETZ($5N=&5R:6YG(&1I<F5C
M=&]R>2!@+VAO;64O87)Q=6DO;&%M-C$O=&]O;',M;V)J+VAF-S<G"F=C8R M
M3R M1$Q)3E58("U$:7@X-B M22]H;VUE+V%R<75I+VQA;38Q+V@@+4DN+B\N
M+B]S:&%R92]B;V]T("U$1$5&4#U<(B]H;VUE+V%R<75I+VQA;38Q7"(@+41$
M14941C<W/5PB9S<W7"(@+41365-,24)3/2<B(B<@+6,@+BXO+BXO=&]O;',O
M:&8W-R]H9C<W+F,*9V-C("U/("U$3$E.55@@+41I>#@V("U)+VAO;64O87)Q
M=6DO;&%M-C$O:" M22XN+RXN+W-H87)E+V)O;W0@+41$1490/5PB+VAO;64O
M87)Q=6DO;&%M-C%<(B M1$1%1E1&-S<]7")G-S=<(B M1%-94TQ)0E,])R(B
M)R M8R N+B\N+B]S:&%R92]B;V]T+W!R;V-?<V-H96UA+F,*9V-C(" M;R!H
M9C<W(&AF-S<N;R!P<F]C7W-C:&5M82YO("U,+VAO;64O87)Q=6DO;&%M-C$O
M;&EB("UL87)G<R M;'0*+V)I;B]C<"!H9C<W("]H;VUE+V%R<75I+VQA;38Q
M+V)I;B]H9C<W"FUA:V5;,ETZ($QE879I;F<@9&ER96-T;W)Y(& O:&]M92]A
M<G%U:2]L86TV,2]T;V]L<RUO8FHO:&8W-R<*"6QA;6)O;W0Z"FUA:V5;,ETZ
M($5N=&5R:6YG(&1I<F5C=&]R>2!@+VAO;64O87)Q=6DO;&%M-C$O=&]O;',M
M;V)J+VQA;6)O;W0G"F=C8R M3R M1$Q)3E58("U$:7@X-B M22XN+RXN+W-H
M87)E+V)O;W0@+4DO:&]M92]A<G%U:2]L86TV,2]H("U$1$5&4$)(3U-4/5PB
M+VAO;64O87)Q=6DO;&%M-C$O8F]O=%PB("U$5$]?0D]/5#TV," M1%)32#U<
M(B]U<W(O8FEN+W)S:%PB("U$3U,]7"),24Y56%PB("U$0U!5/5PB:7@X-EPB
M("U$4E!)/5PB4E!)7U-(35PB("U$4TA-/5PB4TA-7U-94U9<(B M8R N+B\N
M+B]S:&%R92]B;V]T+V)H;W-T<&%R<V4N8PIG8V,@+4\@+41,24Y56" M1&EX
M.#8@+4DN+B\N+B]S:&%R92]B;V]T("U)+VAO;64O87)Q=6DO;&%M-C$O:" M
M1$1%1E!"2$]35#U<(B]H;VUE+V%R<75I+VQA;38Q+V)O;W1<(B M1%1/7T)/
M3U0]-C @+4124T@]7"(O=7-R+V)I;B]R<VA<(B M1$]3/5PB3$E.55A<(B M
M1$-053U<(FEX.#9<(B M1%)023U<(E)025]32$U<(B M1%-(33U<(E-(35]3
M65-67"(@+6,@+BXO+BXO<VAA<F4O971C+V)O;W1S;V-K:6\N8PIG8V,@+4\@
M+41,24Y56" M1&EX.#8@+4DN+B\N+B]S:&%R92]B;V]T("U)+VAO;64O87)Q
M=6DO;&%M-C$O:" M1$1%1E!"2$]35#U<(B]H;VUE+V%R<75I+VQA;38Q+V)O
M;W1<(B M1%1/7T)/3U0]-C @+4124T@]7"(O=7-R+V)I;B]R<VA<(B M1$]3
M/5PB3$E.55A<(B M1$-053U<(FEX.#9<(B M1%)023U<(E)025]32$U<(B M
M1%-(33U<(E-(35]365-67"(@+6,@+BXO+BXO<VAA<F4O8F]O="]I;F5T97AE
M8RYC"F=C8R M3R M1$Q)3E58("U$:7@X-B M22XN+RXN+W-H87)E+V)O;W0@
M+4DO:&]M92]A<G%U:2]L86TV,2]H("U$1$5&4$)(3U-4/5PB+VAO;64O87)Q
M=6DO;&%M-C$O8F]O=%PB("U$5$]?0D]/5#TV," M1%)32#U<(B]U<W(O8FEN
M+W)S:%PB("U$3U,]7"),24Y56%PB("U$0U!5/5PB:7@X-EPB("U$4E!)/5PB
M4E!)7U-(35PB("U$4TA-/5PB4TA-7U-94U9<(B M8R N+B\N+B]S:&%R92]B
M;V]T+VQA;6YE="YC"F=C8R M3R M1$Q)3E58("U$:7@X-B M22XN+RXN+W-H
M87)E+V)O;W0@+4DO:&]M92]A<G%U:2]L86TV,2]H("U$1$5&4$)(3U-4/5PB
M+VAO;64O87)Q=6DO;&%M-C$O8F]O=%PB("U$5$]?0D]/5#TV," M1%)32#U<
M(B]U<W(O8FEN+W)S:%PB("U$3U,]7"),24Y56%PB("U$0U!5/5PB:7@X-EPB
M("U$4E!)/5PB4E!)7U-(35PB("U$4TA-/5PB4TA-7U-94U9<(B M8R N+B\N
M+B]T;V]L<R]L86UB;V]T+VQA;6)O;W0N8PIG8V,@+4\@+41,24Y56" M1&EX
M.#8@+4DN+B\N+B]S:&%R92]B;V]T("U)+VAO;64O87)Q=6DO;&%M-C$O:" M
M1$1%1E!"2$]35#U<(B]H;VUE+V%R<75I+VQA;38Q+V)O;W1<(B M1%1/7T)/
M3U0]-C @+4124T@]7"(O=7-R+V)I;B]R<VA<(B M1$]3/5PB3$E.55A<(B M
M1$-053U<(FEX.#9<(B M1%)023U<(E)025]32$U<(B M1%-(33U<(E-(35]3
M65-67"(@+6,@+BXO+BXO<VAA<F4O8F]O="]L86UB;V]T86=E;G0N8PIG8V,@
M+4\@+41,24Y56" M1&EX.#8@+4DN+B\N+B]S:&%R92]B;V]T("U)+VAO;64O
M87)Q=6DO;&%M-C$O:" M1$1%1E!"2$]35#U<(B]H;VUE+V%R<75I+VQA;38Q
M+V)O;W1<(B M1%1/7T)/3U0]-C @+4124T@]7"(O=7-R+V)I;B]R<VA<(B M
M1$]3/5PB3$E.55A<(B M1$-053U<(FEX.#9<(B M1%)023U<(E)025]32$U<
M(B M1%-(33U<(E-(35]365-67"(@+6,@+BXO+BXO<VAA<F4O971C+VYO9&5S
M<&EN+F,*9V-C(" M;R!L86UB;V]T(&)H;W-T<&%R<V4N;R!B;V]T<V]C:VEO
M+F\@:6YE=&5X96,N;R!L86UN970N;R!L86UB;V]T+F\@;&%M8F]O=&%G96YT
M+F\@;F]D97-P:6XN;R M3"]H;VUE+V%R<75I+VQA;38Q+VQI8B M;&%R9W,@
M+6QT( HO8FEN+V-P(&QA;6)O;W0@+VAO;64O87)Q=6DO;&%M-C$O8FEN+VQA
M;6)O;W0*;6%K95LR73H@3&5A=FEN9R!D:7)E8W1O<GD@8"]H;VUE+V%R<75I
M+VQA;38Q+W1O;VQS+6]B:B]L86UB;V]T)PH)<F5C;VXZ"FUA:V5;,ETZ($5N
M=&5R:6YG(&1I<F5C=&]R>2!@+VAO;64O87)Q=6DO;&%M-C$O=&]O;',M;V)J
M+W)E8V]N)PIG8V,@+4\@+41,24Y56" M1&EX.#8@+4DO:&]M92]A<G%U:2]L
M86TV,2]H("U)+BXO+BXO<VAA<F4O8F]O=" M1$1%1E!"2$]35#U<(B]H;VUE
M+V%R<75I+VQA;38Q+V)O;W1<(B M1%)32#U<(B]U<W(O8FEN+W)S:%PB("UC
M("XN+RXN+W-H87)E+V)O;W0O8FAO<W1P87)S92YC"F=C8R M3R M1$Q)3E58
M("U$:7@X-B M22]H;VUE+V%R<75I+VQA;38Q+V@@+4DN+B\N+B]S:&%R92]B
M;V]T("U$1$5&4$)(3U-4/5PB+VAO;64O87)Q=6DO;&%M-C$O8F]O=%PB("U$
M4E-(/5PB+W5S<B]B:6XO<G-H7"(@+6,@+BXO+BXO<VAA<F4O8F]O="]I;F5T
M97AE8RYC"F=C8R M3R M1$Q)3E58("U$:7@X-B M22]H;VUE+V%R<75I+VQA
M;38Q+V@@+4DN+B\N+B]S:&%R92]B;V]T("U$1$5&4$)(3U-4/5PB+VAO;64O
M87)Q=6DO;&%M-C$O8F]O=%PB("U$4E-(/5PB+W5S<B]B:6XO<G-H7"(@+6,@
M+BXO+BXO<VAA<F4O8F]O="]L86UN970N8PIG8V,@+4\@+41,24Y56" M1&EX
M.#8@+4DO:&]M92]A<G%U:2]L86TV,2]H("U)+BXO+BXO<VAA<F4O8F]O=" M
M1$1%1E!"2$]35#U<(B]H;VUE+V%R<75I+VQA;38Q+V)O;W1<(B M1%)32#U<
M(B]U<W(O8FEN+W)S:%PB("UC("XN+RXN+W1O;VQS+W)E8V]N+W)E8V]N+F,*
M9V-C(" M;R!R96-O;B!B:&]S='!A<G-E+F\@:6YE=&5X96,N;R!L86UN970N
M;R!R96-O;BYO("U,+VAO;64O87)Q=6DO;&%M-C$O;&EB("UL87)G<R M;'0@
M"B]B:6XO8W @<F5C;VX@+VAO;64O87)Q=6DO;&%M-C$O8FEN+W)E8V]N"FUA
M:V5;,ETZ($QE879I;F<@9&ER96-T;W)Y(& O:&]M92]A<G%U:2]L86TV,2]T
M;V]L<RUO8FHO<F5C;VXG"@ET:VEL;#H*;6%K95LR73H@16YT97)I;F<@9&ER
M96-T;W)Y(& O:&]M92]A<G%U:2]L86TV,2]T;V]L<RUO8FHO=&MI;&PG"F=C
M8R M3R M1$Q)3E58("U$:7@X-B M22]H;VUE+V%R<75I+VQA;38Q+V@@+412
M4$E?4TA-("U$4TA-7U-94U8@+41233TG(B]B:6XO<FT@+68B)R M8R N+B\N
M+B]T;V]L<R]T:VEL;"]T:VEL;"YC"F=C8R M3R M1$Q)3E58("U$:7@X-B M
M22]H;VUE+V%R<75I+VQA;38Q+V@@+4124$E?4TA-("U$4TA-7U-94U8@+412
M33TG(B]B:6XO<FT@+68B)R M8R N+B\N+B]S:&%R92]M<&DO<G!I+FUO<"YC
M"F=C8R @+6\@=&MI;&P@=&MI;&PN;R!R<&DN;6]P+F\@+4PO:&]M92]A<G%U
M:2]L86TV,2]L:6(@+6QM<&D@+6QT<W1D:6\@+6QA<F=S("UL=')I;&QI=6T@
M+6QT("UL;7!I( HO8FEN+V-P('1K:6QL("]H;VUE+V%R<75I+VQA;38Q+V)I
M;B]T:VEL; IM86ME6S)=.B!,96%V:6YG(&1I<F5C=&]R>2!@+VAO;64O87)Q
M=6DO;&%M-C$O=&]O;',M;V)J+W1K:6QL)PH)=VEP93H*;6%K95LR73H@16YT
M97)I;F<@9&ER96-T;W)Y(& O:&]M92]A<G%U:2]L86TV,2]T;V]L<RUO8FHO
M=VEP92<*9V-C("U/("U$3$E.55@@+41I>#@V("U)+VAO;64O87)Q=6DO;&%M
M-C$O:" M22XN+RXN+W-H87)E+V)O;W0@+41$14900DA/4U0]7"(O:&]M92]A
M<G%U:2]L86TV,2]B;V]T7"(@+4124T@]7"(O=7-R+V)I;B]R<VA<(B M8R N
M+B\N+B]S:&%R92]B;V]T+V)H;W-T<&%R<V4N8PIG8V,@+4\@+41,24Y56" M
M1&EX.#8@+4DO:&]M92]A<G%U:2]L86TV,2]H("U)+BXO+BXO<VAA<F4O8F]O
M=" M1$1%1E!"2$]35#U<(B]H;VUE+V%R<75I+VQA;38Q+V)O;W1<(B M1%)3
M2#U<(B]U<W(O8FEN+W)S:%PB("UC("XN+RXN+W-H87)E+V)O;W0O:6YE=&5X
M96,N8PIG8V,@+4\@+41,24Y56" M1&EX.#8@+4DO:&]M92]A<G%U:2]L86TV
M,2]H("U)+BXO+BXO<VAA<F4O8F]O=" M1$1%1E!"2$]35#U<(B]H;VUE+V%R
M<75I+VQA;38Q+V)O;W1<(B M1%)32#U<(B]U<W(O8FEN+W)S:%PB("UC("XN
M+RXN+W-H87)E+V)O;W0O;&%M;F5T+F,*9V-C("U/("U$3$E.55@@+41I>#@V
M("U)+VAO;64O87)Q=6DO;&%M-C$O:" M22XN+RXN+W-H87)E+V)O;W0@+41$
M14900DA/4U0]7"(O:&]M92]A<G%U:2]L86TV,2]B;V]T7"(@+4124T@]7"(O
M=7-R+V)I;B]R<VA<(B M8R N+B\N+B]T;V]L<R]W:7!E+W=I<&4N8PIG8V,@
M("UO('=I<&4@8FAO<W1P87)S92YO(&EN971E>&5C+F\@;&%M;F5T+F\@=VEP
M92YO("U,+VAO;64O87)Q=6DO;&%M-C$O;&EB("UL87)G<R M;'0@"B]B:6XO
M8W @=VEP92 O:&]M92]A<G%U:2]L86TV,2]B:6XO=VEP90IM86ME6S)=.B!,
M96%V:6YG(&1I<F5C=&]R>2!@+VAO;64O87)Q=6DO;&%M-C$O=&]O;',M;V)J
M+W=I<&4G"FUA:V5;,5TZ($QE879I;F<@9&ER96-T;W)Y(& O:&]M92]A<G%U
M:2]L86TV,2]T;V]L<RUO8FHG"F]T8BUO8FHZ"FUA:V5;,5TZ($5N=&5R:6YG
M(&1I<F5C=&]R>2!@+VAO;64O87)Q=6DO;&%M-C$O;W1B+6]B:B<*"6)F8W1L
M.@IM86ME6S)=.B!%;G1E<FEN9R!D:7)E8W1O<GD@8"]H;VUE+V%R<75I+VQA
M;38Q+V]T8BUO8FHO8F9C=&PG"F=C8R M3R M1$Q)3E58("U$:7@X-B M22]H
M;VUE+V%R<75I+VQA;38Q+V@@("UC("XN+RXN+V]T8B]B9F-T;"]B9F-T;"YC
M"F=C8R @+6\@8F9C=&P@8F9C=&PN;R M3"]H;VUE+V%R<75I+VQA;38Q+VQI
M8B M;&%R9W,@+6QT<FEL;&EU;2 M;'0@"B]B:6XO8W @8F9C=&P@+VAO;64O
M87)Q=6DO;&%M-C$O8FEN+V)F8W1L"FUA:V5;,ETZ($QE879I;F<@9&ER96-T
M;W)Y(& O:&]M92]A<G%U:2]L86TV,2]O=&(M;V)J+V)F8W1L)PH)8F9S=&%T
M93H*;6%K95LR73H@16YT97)I;F<@9&ER96-T;W)Y(& O:&]M92]A<G%U:2]L
M86TV,2]O=&(M;V)J+V)F<W1A=&4G"F=C8R M3R M1$Q)3E58("U$:7@X-B M
M22]H;VUE+V%R<75I+VQA;38Q+V@@("UC("XN+RXN+V]T8B]B9G-T871E+V)F
M<W1A=&4N8PIG8V,@("UO(&)F<W1A=&4@8F9S=&%T92YO("U,+VAO;64O87)Q
M=6DO;&%M-C$O;&EB("UL87)G<R M;'1R:6QL:75M("UL=" *+V)I;B]C<"!B
M9G-T871E("]H;VUE+V%R<75I+VQA;38Q+V)I;B]B9G-T871E"FUA:V5;,ETZ
M($QE879I;F<@9&ER96-T;W)Y(& O:&]M92]A<G%U:2]L86TV,2]O=&(M;V)J
M+V)F<W1A=&4G"@ED;V]M.@IM86ME6S)=.B!%;G1E<FEN9R!D:7)E8W1O<GD@
M8"]H;VUE+V%R<75I+VQA;38Q+V]T8BUO8FHO9&]O;2<*9V-C("U/("U$3$E.
M55@@+41I>#@V("U)+VAO;64O87)Q=6DO;&%M-C$O:" @+6,@+BXO+BXO;W1B
M+V1O;VTO9&]O;2YC"F=C8R @+6\@9&]O;2!D;V]M+F\@+4PO:&]M92]A<G%U
M:2]L86TV,2]L:6(@+6QA<F=S("UL=')I;&QI=6T@+6QT( HO8FEN+V-P(&1O
M;VT@+VAO;64O87)Q=6DO;&%M-C$O8FEN+V1O;VT*;6%K95LR73H@3&5A=FEN
M9R!D:7)E8W1O<GD@8"]H;VUE+V%R<75I+VQA;38Q+V]T8BUO8FHO9&]O;2<*
M"69C=&PZ"FUA:V5;,ETZ($5N=&5R:6YG(&1I<F5C=&]R>2!@+VAO;64O87)Q
M=6DO;&%M-C$O;W1B+6]B:B]F8W1L)PIG8V,@+4\@+41,24Y56" M1&EX.#8@
M+4DO:&]M92]A<G%U:2]L86TV,2]H(" M8R N+B\N+B]O=&(O9F-T;"]F8W1L
M+F,*9V-C(" M;R!F8W1L(&9C=&PN;R M3"]H;VUE+V%R<75I+VQA;38Q+VQI
M8B M;&%R9W,@+6QT( HO8FEN+V-P(&9C=&P@+VAO;64O87)Q=6DO;&%M-C$O
M8FEN+V9C=&P*;6%K95LR73H@3&5A=FEN9R!D:7)E8W1O<GD@8"]H;VUE+V%R
M<75I+VQA;38Q+V]T8BUO8FHO9F-T;"<*"69S=&%T93H*;6%K95LR73H@16YT
M97)I;F<@9&ER96-T;W)Y(& O:&]M92]A<G%U:2]L86TV,2]O=&(M;V)J+V9S
M=&%T92<*9V-C("U/("U$3$E.55@@+41I>#@V("U)+VAO;64O87)Q=6DO;&%M
M-C$O:" @+6,@+BXO+BXO;W1B+V9S=&%T92]F<W1A=&4N8PIG8V,@("UO(&9S
M=&%T92!F<W1A=&4N;R M3"]H;VUE+V%R<75I+VQA;38Q+VQI8B M;&%R9W,@
M+6QT<FEL;&EU;2 M;'0@"B]B:6XO8W @9G-T871E("]H;VUE+V%R<75I+VQA
M;38Q+V)I;B]F<W1A=&4*;6%K95LR73H@3&5A=FEN9R!D:7)E8W1O<GD@8"]H
M;VUE+V%R<75I+VQA;38Q+V]T8BUO8FHO9G-T871E)PH);&%M8VQE86XZ"FUA
M:V5;,ETZ($5N=&5R:6YG(&1I<F5C=&]R>2!@+VAO;64O87)Q=6DO;&%M-C$O
M;W1B+6]B:B]L86UC;&5A;B<*9V-C("U/("U$3$E.55@@+41I>#@V("U)+VAO
M;64O87)Q=6DO;&%M-C$O:" M1%)025]32$T@+4132$U?4UE35B M1%)-/2<B
M+V)I;B]R;2 M9B(G("UC("XN+RXN+V]T8B]L86UC;&5A;B]L86UC;&5A;BYC
M"F=C8R M3R M1$Q)3E58("U$:7@X-B M22]H;VUE+V%R<75I+VQA;38Q+V@@
M+4124$E?4TA-("U$4TA-7U-94U8@+41233TG(B]B:6XO<FT@+68B)R M8R N
M+B\N+B]S:&%R92]E=&,O;F]D97-P:6XN8PIG8V,@+4\@+41,24Y56" M1&EX
M.#8@+4DO:&]M92]A<G%U:2]L86TV,2]H("U$4E!)7U-(32 M1%-(35]365-6
M("U$4DT])R(O8FEN+W)M("UF(B<@+6,@+BXO+BXO<VAA<F4O;7!I+W)P:2YM
M;W N8PIG8V,@("UO(&QA;6-L96%N(&QA;6-L96%N+F\@;F]D97-P:6XN;R!R
M<&DN;6]P+F\@+4PO:&]M92]A<G%U:2]L86TV,2]L:6(@+6QA<F=S("UL=')I
M;&QI=6T@+6QT("UL;7!I( HO8FEN+V-P(&QA;6-L96%N("]H;VUE+V%R<75I
M+VQA;38Q+V)I;B]L86UC;&5A;@IM86ME6S)=.B!,96%V:6YG(&1I<F5C=&]R
M>2!@+VAO;64O87)Q=6DO;&%M-C$O;W1B+6]B:B]L86UC;&5A;B<*"6QA;6=R
M;W<Z"FUA:V5;,ETZ($5N=&5R:6YG(&1I<F5C=&]R>2!@+VAO;64O87)Q=6DO
M;&%M-C$O;W1B+6]B:B]L86UG<F]W)PIG8V,@+4\@+41,24Y56" M1&EX.#8@
M+4DO:&]M92]A<G%U:2]L86TV,2]H("U)+BXO+BXO<VAA<F4O8F]O=" M1%)3
M2#U<(B]U<W(O8FEN+W)S:%PB("UC("XN+RXN+W-H87)E+V5T8R]B;V]T<V]C
M:VEO+F,*9V-C("U/("U$3$E.55@@+41I>#@V("U)+VAO;64O87)Q=6DO;&%M
M-C$O:" M22XN+RXN+W-H87)E+V)O;W0@+4124T@]7"(O=7-R+V)I;B]R<VA<
M(B M8R N+B\N+B]S:&%R92]B;V]T+VEN971E>&5C+F,*9V-C("U/("U$3$E.
M55@@+41I>#@V("U)+VAO;64O87)Q=6DO;&%M-C$O:" M22XN+RXN+W-H87)E
M+V)O;W0@+4124T@]7"(O=7-R+V)I;B]R<VA<(B M8R N+B\N+B]S:&%R92]B
M;V]T+VQA;6)O;W1A9V5N="YC"F=C8R M3R M1$Q)3E58("U$:7@X-B M22]H
M;VUE+V%R<75I+VQA;38Q+V@@+4DN+B\N+B]S:&%R92]B;V]T("U$4E-(/5PB
M+W5S<B]B:6XO<G-H7"(@+6,@+BXO+BXO;W1B+VQA;6=R;W<O;&%M9W)O=RYC
M"F=C8R @+6\@;&%M9W)O=R!B;V]T<V]C:VEO+F\@:6YE=&5X96,N;R!L86UB
M;V]T86=E;G0N;R!L86UG<F]W+F\@+4PO:&]M92]A<G%U:2]L86TV,2]L:6(@
M+6QA<F=S("UL=')I;&QI=6T@+6QT( HO8FEN+V-P(&QA;6=R;W<@+VAO;64O
M87)Q=6DO;&%M-C$O8FEN+VQA;6=R;W<*;6%K95LR73H@3&5A=FEN9R!D:7)E
M8W1O<GD@8"]H;VUE+V%R<75I+VQA;38Q+V]T8BUO8FHO;&%M9W)O=R<*"6QA
M;7-H<FEN:SH*;6%K95LR73H@16YT97)I;F<@9&ER96-T;W)Y(& O:&]M92]A
M<G%U:2]L86TV,2]O=&(M;V)J+VQA;7-H<FEN:R<*9V-C("U/("U$3$E.55@@
M+41I>#@V("U)+VAO;64O87)Q=6DO;&%M-C$O:" M22XN+RXN+W-H87)E+V)O
M;W0@+4124T@]7"(O=7-R+V)I;B]R<VA<(B M8R N+B\N+B]S:&%R92]B;V]T
M+VEN971E>&5C+F,*9V-C("U/("U$3$E.55@@+41I>#@V("U)+VAO;64O87)Q
M=6DO;&%M-C$O:" M22XN+RXN+W-H87)E+V)O;W0@+4124T@]7"(O=7-R+V)I
M;B]R<VA<(B M8R N+B\N+B]O=&(O;&%M<VAR:6YK+VQA;7-H<FEN:RYC"F=C
M8R @+6\@;&%M<VAR:6YK(&EN971E>&5C+F\@;&%M<VAR:6YK+F\@+4PO:&]M
M92]A<G%U:2]L86TV,2]L:6(@+6QA<F=S("UL=')I;&QI=6T@+6QT( HO8FEN
M+V-P(&QA;7-H<FEN:R O:&]M92]A<G%U:2]L86TV,2]B:6XO;&%M<VAR:6YK
M"FUA:V5;,ETZ($QE879I;F<@9&ER96-T;W)Y(& O:&]M92]A<G%U:2]L86TV
M,2]O=&(M;V)J+VQA;7-H<FEN:R<*"6QA;71R86-E.@IM86ME6S)=.B!%;G1E
M<FEN9R!D:7)E8W1O<GD@8"]H;VUE+V%R<75I+VQA;38Q+V]T8BUO8FHO;&%M
M=')A8V4G"F=C8R M3R M1$Q)3E58("U$:7@X-B M22]H;VUE+V%R<75I+VQA
M;38Q+V@@("UC("XN+RXN+V]T8B]L86UT<F%C92]L86UT<F%C92YC"F=C8R M
M3R M1$Q)3E58("U$:7@X-B M22]H;VUE+V%R<75I+VQA;38Q+V@@("UC("XN
M+RXN+W-H87)E+V5T8R]T<F1R86EN7VUP:2YC"F=C8R @+6\@;&%M=')A8V4@
M;&%M=')A8V4N;R!T<F1R86EN7VUP:2YO("U,+VAO;64O87)Q=6DO;&%M-C$O
M;&EB("UL87)G<R M;'1R:6QL:75M("UL=" *+V)I;B]C<"!L86UT<F%C92 O
M:&]M92]A<G%U:2]L86TV,2]B:6XO;&%M=')A8V4*;6%K95LR73H@3&5A=FEN
M9R!D:7)E8W1O<GD@8"]H;VUE+V%R<75I+VQA;38Q+V]T8BUO8FHO;&%M=')A
M8V4G"@EL;V%D9V\Z"FUA:V5;,ETZ($5N=&5R:6YG(&1I<F5C=&]R>2!@+VAO
M;64O87)Q=6DO;&%M-C$O;W1B+6]B:B]L;V%D9V\G"F=C8R M3R M1$Q)3E58
M("U$:7@X-B M22]H;VUE+V%R<75I+VQA;38Q+V@@+4DN+B\N+B]S:&%R92]B
M;V]T(" M8R N+B\N+B]O=&(O;&]A9&=O+VQO861G;RYC"F=C8R @+6\@;&]A
M9&=O(&QO861G;RYO("U,+VAO;64O87)Q=6DO;&%M-C$O;&EB("UL=')I;&QI
M=6T@+6QA<F=S("UL=" *+V)I;B]C<"!L;V%D9V\@+VAO;64O87)Q=6DO;&%M
M-C$O8FEN+VQO861G;PIM86ME6S)=.B!,96%V:6YG(&1I<F5C=&]R>2!@+VAO
M;64O87)Q=6DO;&%M-C$O;W1B+6]B:B]L;V%D9V\G"@EM<&EM<V<Z"FUA:V5;
M,ETZ($5N=&5R:6YG(&1I<F5C=&]R>2!@+VAO;64O87)Q=6DO;&%M-C$O;W1B
M+6]B:B]M<&EM<V<G"F=C8R M3R M1$Q)3E58("U$:7@X-B M22]H;VUE+V%R
M<75I+VQA;38Q+V@@("UC("XN+RXN+V]T8B]M<&EM<V<O;7!I;7-G+F,*9V-C
M("U/("U$3$E.55@@+41I>#@V("U)+VAO;64O87)Q=6DO;&%M-C$O:" @+6,@
M+BXO+BXO<VAA<F4O971C+VUP:69O<FUO=70N8PIG8V,@+4\@+41,24Y56" M
M1&EX.#8@+4DO:&]M92]A<G%U:2]L86TV,2]H(" M8R N+B\N+B]S:&%R92]E
M=&,O;7!I=')?8V]M+F,*9V-C("U/("U$3$E.55@@+41I>#@V("U)+VAO;64O
M87)Q=6DO;&%M-C$O:" @+6,@+BXO+BXO<VAA<F4O971C+VUP:71R7V1T>7!E
M+F,*9V-C("U/("U$3$E.55@@+41I>#@V("U)+VAO;64O87)Q=6DO;&%M-C$O
M:" @+6,@+BXO+BXO<VAA<F4O971C+VUP:71R7V1T<')I;G0N8PIG8V,@+4\@
M+41,24Y56" M1&EX.#8@+4DO:&]M92]A<G%U:2]L86TV,2]H(" M8R N+B\N
M+B]O=&(O;7!I;7-G+VUP:71R7V1A=&$N8PIG8V,@("UO(&UP:6US9R!M<&EM
M<V<N;R!M<&EF;W)M;W5T+F\@;7!I=')?8V]M+F\@;7!I=')?9'1Y<&4N;R!M
M<&ET<E]D='!R:6YT+F\@;7!I=')?9&%T82YO("U,+VAO;64O87)Q=6DO;&%M
M-C$O;&EB("UL;7!I("UL=')I;&QI=6T@+6QA<F=S("UL=" *+V)I;B]C<"!M
M<&EM<V<@+VAO;64O87)Q=6DO;&%M-C$O8FEN+VUP:6US9PIM86ME6S)=.B!,
M96%V:6YG(&1I<F5C=&]R>2!@+VAO;64O87)Q=6DO;&%M-C$O;W1B+6]B:B]M
M<&EM<V<G"@EM<&ER=6XZ"FUA:V5;,ETZ($5N=&5R:6YG(&1I<F5C=&]R>2!@
M+VAO;64O87)Q=6DO;&%M-C$O;W1B+6]B:B]M<&ER=6XG"F=C8R M3R M1$Q)
M3E58("U$:7@X-B M22]H;VUE+V%R<75I+VQA;38Q+V@@+4DN+B\N+B]S:&%R
M92]B;V]T("U$1$5&4%-#2$5-03U<(B]H;VUE+V%R<75I+VQA;38Q+V)O;W1<
M(B M1$U025]'15(]." M8R N+B\N+B]O=&(O;7!I<G5N+VUP:7)U;BYC"F=C
M8R @+6\@;7!I<G5N(&UP:7)U;BYO("U,+VAO;64O87)Q=6DO;&%M-C$O;&EB
M("UL=')I;&QI=6T@+6QA<F=S("UL=" *+V)I;B]C<"!M<&ER=6X@+VAO;64O
M87)Q=6DO;&%M-C$O8FEN+VUP:7)U;@IM86ME6S)=.B!,96%V:6YG(&1I<F5C
M=&]R>2!@+VAO;64O87)Q=6DO;&%M-C$O;W1B+6]B:B]M<&ER=6XG"@EM<&ET
M87-K.@IM86ME6S)=.B!%;G1E<FEN9R!D:7)E8W1O<GD@8"]H;VUE+V%R<75I
M+VQA;38Q+V]T8BUO8FHO;7!I=&%S:R<*9V-C("U/("U$3$E.55@@+41I>#@V
M("U)+VAO;64O87)Q=6DO;&%M-C$O:" @+6,@+BXO+BXO;W1B+VUP:71A<VLO
M;7!I=&%S:RYC"F=C8R M3R M1$Q)3E58("U$:7@X-B M22]H;VUE+V%R<75I
M+VQA;38Q+V@@("UC("XN+RXN+W-H87)E+V5T8R]M<&ET<E]C;VTN8PIG8V,@
M+4\@+41,24Y56" M1&EX.#8@+4DO:&]M92]A<G%U:2]L86TV,2]H(" M8R N
M+B\N+B]S:&%R92]E=&,O;7!I=')?9'1Y<&4N8PIG8V,@+4\@+41,24Y56" M
M1&EX.#8@+4DO:&]M92]A<G%U:2]L86TV,2]H(" M8R N+B\N+B]S:&%R92]E
M=&,O;7!I=')?9'1P<FEN="YC"F=C8R M3R M1$Q)3E58("U$:7@X-B M22]H
M;VUE+V%R<75I+VQA;38Q+V@@("UC("XN+RXN+W-H87)E+VUP:2]M<&EE=&,N
M8PIG8V,@+4\@+41,24Y56" M1&EX.#8@+4DO:&]M92]A<G%U:2]L86TV,2]H
M(" M8R N+B\N+B]S:&%R92]E=&,O;7!I9F]R;6]U="YC"F=C8R @+6\@;7!I
M=&%S:R!M<&ET87-K+F\@;7!I=')?8V]M+F\@;7!I=')?9'1Y<&4N;R!M<&ET
M<E]D='!R:6YT+F\@;7!I971C+F\@;7!I9F]R;6]U="YO("U,+VAO;64O87)Q
M=6DO;&%M-C$O;&EB("UL87)G<R M;'1R:6QL:75M("UL=" *+V)I;B]C<"!M
M<&ET87-K("]H;VUE+V%R<75I+VQA;38Q+V)I;B]M<&ET87-K"FUA:V5;,ETZ
M($QE879I;F<@9&ER96-T;W)Y(& O:&]M92]A<G%U:2]L86TV,2]O=&(M;V)J
M+VUP:71A<VLG"@ES=&%T93H*;6%K95LR73H@16YT97)I;F<@9&ER96-T;W)Y
M(& O:&]M92]A<G%U:2]L86TV,2]O=&(M;V)J+W-T871E)PIG8V,@+4\@+41,
M24Y56" M1&EX.#8@+4DO:&]M92]A<G%U:2]L86TV,2]H(" M8R N+B\N+B]O
M=&(O<W1A=&4O<W1A=&4N8PIG8V,@("UO('-T871E('-T871E+F\@+4PO:&]M
M92]A<G%U:2]L86TV,2]L:6(@+6QA<F=S("UL=')I;&QI=6T@+6QT( HO8FEN
M+V-P('-T871E("]H;VUE+V%R<75I+VQA;38Q+V)I;B]S=&%T90IM86ME6S)=
M.B!,96%V:6YG(&1I<F5C=&]R>2!@+VAO;64O87)Q=6DO;&%M-C$O;W1B+6]B
M:B]S=&%T92<*"7-Y<SH*;6%K95LR73H@16YT97)I;F<@9&ER96-T;W)Y(& O
M:&]M92]A<G%U:2]L86TV,2]O=&(M;V)J+W-Y<R<*"0EL86UD.@IM86ME6S-=
M.B!%;G1E<FEN9R!D:7)E8W1O<GD@8"]H;VUE+V%R<75I+VQA;38Q+V]T8BUO
M8FHO<WES+VQA;60G"F=C8R M3R M1$Q)3E58("U$:7@X-B M22]H;VUE+V%R
M<75I+VQA;38Q+V@@+4DN+B\N+B\N+B]O=&(O<WES+V9I;&5D("U$5$]?1$Q/
M7T%#2STU,# P,# @+4143U]$3$]?241,13TV," M1%1/7T1,3U]%4U1)34%4
M13TS," M1$1/34%84D5314Y$/3$P," M1%)025]32$T@+4132$U?4UE35B M
M1%)-/2<B+V)I;B]R;2 M9B(G("UC("XN+RXN+RXN+V]T8B]S>7,O;&%M9"]C
M;W5T97(N8PIG8V,@+4\@+41,24Y56" M1&EX.#8@+4DO:&]M92]A<G%U:2]L
M86TV,2]H("U)+BXO+BXO+BXO;W1B+W-Y<R]F:6QE9" M1%1/7T1,3U]!0TL]
M-3 P,# P("U$5$]?1$Q/7TE$3$4]-C @+4143U]$3$]?15-424U!5$4],S @
M+41$3TU!6%)%4T5.1#TQ,# @+4124$E?4TA-("U$4TA-7U-94U8@+41233TG
M(B]B:6XO<FT@+68B)R M8R N+B\N+B\N+B]O=&(O<WES+VME<FYE;"]K97)N
M96QI;RYC"F=C8R M3R M1$Q)3E58("U$:7@X-B M22]H;VUE+V%R<75I+VQA
M;38Q+V@@+4DN+B\N+B\N+B]O=&(O<WES+V9I;&5D("U$5$]?1$Q/7T%#2STU
M,# P,# @+4143U]$3$]?241,13TV," M1%1/7T1,3U]%4U1)34%413TS," M
M1$1/34%84D5314Y$/3$P," M1%)025]32$T@+4132$U?4UE35B M1%)-/2<B
M+V)I;B]R;2 M9B(G("UC("XN+RXN+RXN+W-H87)E+VME<FYE;"]K:6YN97(N
M8PIG8V,@+4\@+41,24Y56" M1&EX.#8@+4DO:&]M92]A<G%U:2]L86TV,2]H
M("U)+BXO+BXO+BXO;W1B+W-Y<R]F:6QE9" M1%1/7T1,3U]!0TL]-3 P,# P
M("U$5$]?1$Q/7TE$3$4]-C @+4143U]$3$]?15-424U!5$4],S @+41$3TU!
M6%)%4T5.1#TQ,# @+4124$E?4TA-("U$4TA-7U-94U8@+41233TG(B]B:6XO
M<FT@+68B)R M8R N+B\N+B\N+B]O=&(O<WES+VQA;60O:VEP<F]C+F,*9V-C
M("U/("U$3$E.55@@+41I>#@V("U)+VAO;64O87)Q=6DO;&%M-C$O:" M22XN
M+RXN+RXN+V]T8B]S>7,O9FEL960@+4143U]$3$]?04-+/34P,# P," M1%1/
M7T1,3U])1$Q%/38P("U$5$]?1$Q/7T535$E-051%/3,P("U$1$]-05A215-%
M3D0],3 P("U$4E!)7U-(32 M1%-(35]365-6("U$4DT])R(O8FEN+W)M("UF
M(B<@+6,@+BXO+BXO+BXO;W1B+W-Y<R]K97)N96PO:VMI;&PN8PIG8V,@+4\@
M+41,24Y56" M1&EX.#8@+4DO:&]M92]A<G%U:2]L86TV,2]H("U)+BXO+BXO
M+BXO;W1B+W-Y<R]F:6QE9" M1%1/7T1,3U]!0TL]-3 P,# P("U$5$]?1$Q/
M7TE$3$4]-C @+4143U]$3$]?15-424U!5$4],S @+41$3TU!6%)%4T5.1#TQ
M,# @+4124$E?4TA-("U$4TA-7U-94U8@+41233TG(B]B:6XO<FT@+68B)R M
M8R N+B\N+B\N+B]O=&(O<WES+VME<FYE;"]K;W5T97(N8PIG8V,@+4\@+41,
M24Y56" M1&EX.#8@+4DO:&]M92]A<G%U:2]L86TV,2]H("U)+BXO+BXO+BXO
M;W1B+W-Y<R]F:6QE9" M1%1/7T1,3U]!0TL]-3 P,# P("U$5$]?1$Q/7TE$
M3$4]-C @+4143U]$3$]?15-424U!5$4],S @+41$3TU!6%)%4T5.1#TQ,# @
M+4124$E?4TA-("U$4TA-7U-94U8@+41233TG(B]B:6XO<FT@+68B)R M8R N
M+B\N+B\N+B]S:&%R92]R;W5T97(O<F]U=&5R+F,*9V-C("U/("U$3$E.55@@
M+41I>#@V("U)+VAO;64O87)Q=6DO;&%M-C$O:" M22XN+RXN+RXN+V]T8B]S
M>7,O9FEL960@+4143U]$3$]?04-+/34P,# P," M1%1/7T1,3U])1$Q%/38P
M("U$5$]?1$Q/7T535$E-051%/3,P("U$1$]-05A215-%3D0],3 P("U$4E!)
M7U-(32 M1%-(35]365-6("U$4DT])R(O8FEN+W)M("UF(B<@+6,@+BXO+BXO
M+BXO;W1B+W-Y<R]R;W5T97(O<G1D:6YI="YL86TN8PIG8V,@+4\@+41,24Y5
M6" M1&EX.#8@+4DO:&]M92]A<G%U:2]L86TV,2]H("U)+BXO+BXO+BXO;W1B
M+W-Y<R]F:6QE9" M1%1/7T1,3U]!0TL]-3 P,# P("U$5$]?1$Q/7TE$3$4]
M-C @+4143U]$3$]?15-424U!5$4],S @+41$3TU!6%)%4T5.1#TQ,# @+412
M4$E?4TA-("U$4TA-7U-94U8@+41233TG(B]B:6XO<FT@+68B)R M8R N+B\N
M+B\N+B]S:&%R92]B=69F97)D+V)U9F9E<F0N8PIG8V,@+4\@+41,24Y56" M
M1&EX.#8@+4DO:&]M92]A<G%U:2]L86TV,2]H("U)+BXO+BXO+BXO;W1B+W-Y
M<R]F:6QE9" M1%1/7T1,3U]!0TL]-3 P,# P("U$5$]?1$Q/7TE$3$4]-C @
M+4143U]$3$]?15-424U!5$4],S @+41$3TU!6%)%4T5.1#TQ,# @+4124$E?
M4TA-("U$4TA-7U-94U8@+41233TG(B]B:6XO<FT@+68B)R M8R N+B\N+B\N
M+B]S:&%R92]E=&,O8F]O='-O8VMI;RYC"F=C8R M3R M1$Q)3E58("U$:7@X
M-B M22]H;VUE+V%R<75I+VQA;38Q+V@@+4DN+B\N+B\N+B]O=&(O<WES+V9I
M;&5D("U$5$]?1$Q/7T%#2STU,# P,# @+4143U]$3$]?241,13TV," M1%1/
M7T1,3U]%4U1)34%413TS," M1$1/34%84D5314Y$/3$P," M1%)025]32$T@
M+4132$U?4UE35B M1%)-/2<B+V)I;B]R;2 M9B(G("UC("XN+RXN+RXN+V]T
M8B]S>7,O9&QI7VEN970O9&E?8F]O=&%G96YT+F,*9V-C("U/("U$3$E.55@@
M+41I>#@V("U)+VAO;64O87)Q=6DO;&%M-C$O:" M22XN+RXN+RXN+V]T8B]S
M>7,O9FEL960@+4143U]$3$]?04-+/34P,# P," M1%1/7T1,3U])1$Q%/38P
M("U$5$]?1$Q/7T535$E-051%/3,P("U$1$]-05A215-%3D0],3 P("U$4E!)
M7U-(32 M1%-(35]365-6("U$4DT])R(O8FEN+W)M("UF(B<@+6,@+BXO+BXO
M+BXO;W1B+W-Y<R]D;&E?:6YE="]D:5]B;V]T8VUD+F,*9V-C("U/("U$3$E.
M55@@+41I>#@V("U)+VAO;64O87)Q=6DO;&%M-C$O:" M22XN+RXN+RXN+V]T
M8B]S>7,O9FEL960@+4143U]$3$]?04-+/34P,# P," M1%1/7T1,3U])1$Q%
M/38P("U$5$]?1$Q/7T535$E-051%/3,P("U$1$]-05A215-%3D0],3 P("U$
M4E!)7U-(32 M1%-(35]365-6("U$4DT])R(O8FEN+W)M("UF(B<@+6,@+BXO
M+BXO+BXO;W1B+W-Y<R]L86UD+V1I7W=A:70N:6YT+F,*9V-C("U/("U$3$E.
M55@@+41I>#@V("U)+VAO;64O87)Q=6DO;&%M-C$O:" M22XN+RXN+RXN+V]T
M8B]S>7,O9FEL960@+4143U]$3$]?04-+/34P,# P," M1%1/7T1,3U])1$Q%
M/38P("U$5$]?1$Q/7T535$E-051%/3,P("U$1$]-05A215-%3D0],3 P("U$
M4E!)7U-(32 M1%-(35]365-6("U$4DT])R(O8FEN+W)M("UF(B<@+6,@+BXO
M+BXO+BXO;W1B+W-Y<R]D;&E?:6YE="]D;&E?:6YE="YC"F=C8R M3R M1$Q)
M3E58("U$:7@X-B M22]H;VUE+V%R<75I+VQA;38Q+V@@+4DN+B\N+B\N+B]O
M=&(O<WES+V9I;&5D("U$5$]?1$Q/7T%#2STU,# P,# @+4143U]$3$]?241,
M13TV," M1%1/7T1,3U]%4U1)34%413TS," M1$1/34%84D5314Y$/3$P," M
M1%)025]32$T@+4132$U?4UE35B M1%)-/2<B+V)I;B]R;2 M9B(G("UC("XN
M+RXN+RXN+V]T8B]S>7,O9&QO7VEN970O9&QO7VEN970N8PIG8V,@+4\@+41,
M24Y56" M1&EX.#8@+4DO:&]M92]A<G%U:2]L86TV,2]H("U)+BXO+BXO+BXO
M;W1B+W-Y<R]F:6QE9" M1%1/7T1,3U]!0TL]-3 P,# P("U$5$]?1$Q/7TE$
M3$4]-C @+4143U]$3$]?15-424U!5$4],S @+41$3TU!6%)%4T5.1#TQ,# @
M+4124$E?4TA-("U$4TA-7U-94U8@+41233TG(B]B:6XO<FT@+68B)R M8R N
M+B\N+B\N+B]O=&(O<WES+V1L;U]I;F5T+V1O7VQO860N8PIG8V,@+4\@+41,
M24Y56" M1&EX.#8@+4DO:&]M92]A<G%U:2]L86TV,2]H("U)+BXO+BXO+BXO
M;W1B+W-Y<R]F:6QE9" M1%1/7T1,3U]!0TL]-3 P,# P("U$5$]?1$Q/7TE$
M3$4]-C @+4143U]$3$]?15-424U!5$4],S @+41$3TU!6%)%4T5.1#TQ,# @
M+4124$E?4TA-("U$4TA-7U-94U8@+41233TG(B]B:6XO<FT@+68B)R M8R N
M+B\N+B\N+B]O=&(O<WES+V1L;U]I;F5T+V1O7VEN='(N8PIG8V,@+4\@+41,
M24Y56" M1&EX.#8@+4DO:&]M92]A<G%U:2]L86TV,2]H("U)+BXO+BXO+BXO
M;W1B+W-Y<R]F:6QE9" M1%1/7T1,3U]!0TL]-3 P,# P("U$5$]?1$Q/7TE$
M3$4]-C @+4143U]$3$]?15-424U!5$4],S @+41$3TU!6%)%4T5.1#TQ,# @
M+4124$E?4TA-("U$4TA-7U-94U8@+41233TG(B]B:6XO<FT@+68B)R M8R N
M+B\N+B\N+B]O=&(O<WES+VQA;60O9&]?=V%I="YI;G0N8PIG8V,@+4\@+41,
M24Y56" M1&EX.#8@+4DO:&]M92]A<G%U:2]L86TV,2]H("U)+BXO+BXO+BXO
M;W1B+W-Y<R]F:6QE9" M1%1/7T1,3U]!0TL]-3 P,# P("U$5$]?1$Q/7TE$
M3$4]-C @+4143U]$3$]?15-424U!5$4],S @+41$3TU!6%)%4T5.1#TQ,# @
M+4124$E?4TA-("U$4TA-7U-94U8@+41233TG(B]B:6XO<FT@+68B)R M8R N
M+B\N+B\N+B]S:&%R92]E8VAO9"]E8VAO9"YC"F=C8R M3R M1$Q)3E58("U$
M:7@X-B M22]H;VUE+V%R<75I+VQA;38Q+V@@+4DN+B\N+B\N+B]O=&(O<WES
M+V9I;&5D("U$5$]?1$Q/7T%#2STU,# P,# @+4143U]$3$]?241,13TV," M
M1%1/7T1,3U]%4U1)34%413TS," M1$1/34%84D5314Y$/3$P," M1%)025]3
M2$T@+4132$U?4UE35B M1%)-/2<B+V)I;B]R;2 M9B(G("UC("XN+RXN+RXN
M+W-H87)E+V)F;W)W87)D+V)F;W)W87)D+F,*9V-C("U/("U$3$E.55@@+41I
M>#@V("U)+VAO;64O87)Q=6DO;&%M-C$O:" M22XN+RXN+RXN+V]T8B]S>7,O
M9FEL960@+4143U]$3$]?04-+/34P,# P," M1%1/7T1,3U])1$Q%/38P("U$
M5$]?1$Q/7T535$E-051%/3,P("U$1$]-05A215-%3D0],3 P("U$4E!)7U-(
M32 M1%-(35]365-6("U$4DT])R(O8FEN+W)M("UF(B<@+6,@+BXO+BXO+BXO
M;W1B+W-Y<R]F;&%T9"]F;&%T9"YC"F=C8R M3R M1$Q)3E58("U$:7@X-B M
M22]H;VUE+V%R<75I+VQA;38Q+V@@+4DN+B\N+B\N+B]O=&(O<WES+V9I;&5D
M("U$5$]?1$Q/7T%#2STU,# P,# @+4143U]$3$]?241,13TV," M1%1/7T1,
M3U]%4U1)34%413TS," M1$1/34%84D5314Y$/3$P," M1%)025]32$T@+413
M2$U?4UE35B M1%)-/2<B+V)I;B]R;2 M9B(G("UC("XN+RXN+RXN+V]T8B]S
M>7,O;&]A9&0O;&]A9&0N8PIG8V,@+4\@+41,24Y56" M1&EX.#8@+4DO:&]M
M92]A<G%U:2]L86TV,2]H("U)+BXO+BXO+BXO;W1B+W-Y<R]F:6QE9" M1%1/
M7T1,3U]!0TL]-3 P,# P("U$5$]?1$Q/7TE$3$4]-C @+4143U]$3$]?15-4
M24U!5$4],S @+41$3TU!6%)%4T5.1#TQ,# @+4124$E?4TA-("U$4TA-7U-9
M4U8@+41233TG(B]B:6XO<FT@+68B)R M8R N+B\N+B\N+B]O=&(O<WES+VME
M;GEA9"]K96YY860N8PIG8V,@+4\@+41,24Y56" M1&EX.#8@+4DO:&]M92]A
M<G%U:2]L86TV,2]H("U)+BXO+BXO+BXO;W1B+W-Y<R]F:6QE9" M1%1/7T1,
M3U]!0TL]-3 P,# P("U$5$]?1$Q/7TE$3$4]-C @+4143U]$3$]?15-424U!
M5$4],S @+41$3TU!6%)%4T5.1#TQ,# @+4124$E?4TA-("U$4TA-7U-94U8@
M+41233TG(B]B:6XO<FT@+68B)R M8R N+B\N+B\N+B]O=&(O<WES+VME;GEA
M9"]P<6-R96%T92YC"F=C8R M3R M1$Q)3E58("U$:7@X-B M22]H;VUE+V%R
M<75I+VQA;38Q+V@@+4DN+B\N+B\N+B]O=&(O<WES+V9I;&5D("U$5$]?1$Q/
M7T%#2STU,# P,# @+4143U]$3$]?241,13TV," M1%1/7T1,3U]%4U1)34%4
M13TS," M1$1/34%84D5314Y$/3$P," M1%)025]32$T@+4132$U?4UE35B M
M1%)-/2<B+V)I;B]R;2 M9B(G("UC("XN+RXN+RXN+V]T8B]S>7,O:V5N>6%D
M+W!Q9&5T86-H+F,*9V-C("U/("U$3$E.55@@+41I>#@V("U)+VAO;64O87)Q
M=6DO;&%M-C$O:" M22XN+RXN+RXN+V]T8B]S>7,O9FEL960@+4143U]$3$]?
M04-+/34P,# P," M1%1/7T1,3U])1$Q%/38P("U$5$]?1$Q/7T535$E-051%
M/3,P("U$1$]-05A215-%3D0],3 P("U$4E!)7U-(32 M1%-(35]365-6("U$
M4DT])R(O8FEN+W)M("UF(B<@+6,@+BXO+BXO+BXO;W1B+W-Y<R]K96YY860O
M<'%D;V]M+F,*9V-C("U/("U$3$E.55@@+41I>#@V("U)+VAO;64O87)Q=6DO
M;&%M-C$O:" M22XN+RXN+RXN+V]T8B]S>7,O9FEL960@+4143U]$3$]?04-+
M/34P,# P," M1%1/7T1,3U])1$Q%/38P("U$5$]?1$Q/7T535$E-051%/3,P
M("U$1$]-05A215-%3D0],3 P("U$4E!)7U-(32 M1%-(35]365-6("U$4DT]
M)R(O8FEN+W)M("UF(B<@+6,@+BXO+BXO+BXO;W1B+W-Y<R]K96YY860O<'%S
M=&%T92YC"F=C8R M3R M1$Q)3E58("U$:7@X-B M22]H;VUE+V%R<75I+VQA
M;38Q+V@@+4DN+B\N+B\N+B]O=&(O<WES+V9I;&5D("U$5$]?1$Q/7T%#2STU
M,# P,# @+4143U]$3$]?241,13TV," M1%1/7T1,3U]%4U1)34%413TS," M
M1$1/34%84D5314Y$/3$P," M1%)025]32$T@+4132$U?4UE35B M1%)-/2<B
M+V)I;B]R;2 M9B(G("UC("XN+RXN+RXN+W-H87)E+VUP:2]R<&DN;6]P+F,*
M9V-C("U/("U$3$E.55@@+41I>#@V("U)+VAO;64O87)Q=6DO;&%M-C$O:" M
M22XN+RXN+RXN+V]T8B]S>7,O9FEL960@+4143U]$3$]?04-+/34P,# P," M
M1%1/7T1,3U])1$Q%/38P("U$5$]?1$Q/7T535$E-051%/3,P("U$1$]-05A2
M15-%3D0],3 P("U$4E!)7U-(32 M1%-(35]365-6("U$4DT])R(O8FEN+W)M
M("UF(B<@+6,@+BXO+BXO+BXO;W1B+W-Y<R]F:6QE9"]F9&5S8RYC"F=C8R M
M3R M1$Q)3E58("U$:7@X-B M22]H;VUE+V%R<75I+VQA;38Q+V@@+4DN+B\N
M+B\N+B]O=&(O<WES+V9I;&5D("U$5$]?1$Q/7T%#2STU,# P,# @+4143U]$
M3$]?241,13TV," M1%1/7T1,3U]%4U1)34%413TS," M1$1/34%84D5314Y$
M/3$P," M1%)025]32$T@+4132$U?4UE35B M1%)-/2<B+V)I;B]R;2 M9B(G
M("UC("XN+RXN+RXN+V]T8B]S>7,O9FEL960O9F9A8V4N8PIG8V,@+4\@+41,
M24Y56" M1&EX.#8@+4DO:&]M92]A<G%U:2]L86TV,2]H("U)+BXO+BXO+BXO
M;W1B+W-Y<R]F:6QE9" M1%1/7T1,3U]!0TL]-3 P,# P("U$5$]?1$Q/7TE$
M3$4]-C @+4143U]$3$]?15-424U!5$4],S @+41$3TU!6%)%4T5.1#TQ,# @
M+4124$E?4TA-("U$4TA-7U-94U8@+41233TG(B]B:6XO<FT@+68B)R M8R N
M+B\N+B\N+B]O=&(O<WES+V9I;&5D+V9I;&5D+F,*9V-C("U/("U$3$E.55@@
M+41I>#@V("U)+VAO;64O87)Q=6DO;&%M-C$O:" M22XN+RXN+RXN+V]T8B]S
M>7,O9FEL960@+4143U]$3$]?04-+/34P,# P," M1%1/7T1,3U])1$Q%/38P
M("U$5$]?1$Q/7T535$E-051%/3,P("U$1$]-05A215-%3D0],3 P("U$4E!)
M7U-(32 M1%-(35]365-6("U$4DT])R(O8FEN+W)M("UF(B<@+6,@+BXO+BXO
M+BXO;W1B+W-Y<R]F:6QE9"]F<6-L;W-E+F,*9V-C("U/("U$3$E.55@@+41I
M>#@V("U)+VAO;64O87)Q=6DO;&%M-C$O:" M22XN+RXN+RXN+V]T8B]S>7,O
M9FEL960@+4143U]$3$]?04-+/34P,# P," M1%1/7T1,3U])1$Q%/38P("U$
M5$]?1$Q/7T535$E-051%/3,P("U$1$]-05A215-%3D0],3 P("U$4E!)7U-(
M32 M1%-(35]365-6("U$4DT])R(O8FEN+W)M("UF(B<@+6,@+BXO+BXO+BXO
M;W1B+W-Y<R]F:6QE9"]F<68W-RYC"F=C8R M3R M1$Q)3E58("U$:7@X-B M
M22]H;VUE+V%R<75I+VQA;38Q+V@@+4DN+B\N+B\N+B]O=&(O<WES+V9I;&5D
M("U$5$]?1$Q/7T%#2STU,# P,# @+4143U]$3$]?241,13TV," M1%1/7T1,
M3U]%4U1)34%413TS," M1$1/34%84D5314Y$/3$P," M1%)025]32$T@+413
M2$U?4UE35B M1%)-/2<B+V)I;B]R;2 M9B(G("UC("XN+RXN+RXN+V]T8B]S
M>7,O9FEL960O9G%L<V5E:RYC"F=C8R M3R M1$Q)3E58("U$:7@X-B M22]H
M;VUE+V%R<75I+VQA;38Q+V@@+4DN+B\N+B\N+B]O=&(O<WES+V9I;&5D("U$
M5$]?1$Q/7T%#2STU,# P,# @+4143U]$3$]?241,13TV," M1%1/7T1,3U]%
M4U1)34%413TS," M1$1/34%84D5314Y$/3$P," M1%)025]32$T@+4132$U?
M4UE35B M1%)-/2<B+V)I;B]R;2 M9B(G("UC("XN+RXN+RXN+V]T8B]S>7,O
M9FEL960O9G%O<&5N+F,*9V-C("U/("U$3$E.55@@+41I>#@V("U)+VAO;64O
M87)Q=6DO;&%M-C$O:" M22XN+RXN+RXN+V]T8B]S>7,O9FEL960@+4143U]$
M3$]?04-+/34P,# P," M1%1/7T1,3U])1$Q%/38P("U$5$]?1$Q/7T535$E-
M051%/3,P("U$1$]-05A215-%3D0],3 P("U$4E!)7U-(32 M1%-(35]365-6
M("U$4DT])R(O8FEN+W)M("UF(B<@+6,@+BXO+BXO+BXO;W1B+W-Y<R]F:6QE
M9"]F<7)E860N8PIG8V,@+4\@+41,24Y56" M1&EX.#8@+4DO:&]M92]A<G%U
M:2]L86TV,2]H("U)+BXO+BXO+BXO;W1B+W-Y<R]F:6QE9" M1%1/7T1,3U]!
M0TL]-3 P,# P("U$5$]?1$Q/7TE$3$4]-C @+4143U]$3$]?15-424U!5$4]
M,S @+41$3TU!6%)%4T5.1#TQ,# @+4124$E?4TA-("U$4TA-7U-94U8@+412
M33TG(B]B:6XO<FT@+68B)R M8R N+B\N+B\N+B]O=&(O<WES+V9I;&5D+V9Q
M<VEM<&QE>"YC"F=C8R M3R M1$Q)3E58("U$:7@X-B M22]H;VUE+V%R<75I
M+VQA;38Q+V@@+4DN+B\N+B\N+B]O=&(O<WES+V9I;&5D("U$5$]?1$Q/7T%#
M2STU,# P,# @+4143U]$3$]?241,13TV," M1%1/7T1,3U]%4U1)34%413TS
M," M1$1/34%84D5314Y$/3$P," M1%)025]32$T@+4132$U?4UE35B M1%)-
M/2<B+V)I;B]R;2 M9B(G("UC("XN+RXN+RXN+V]T8B]S>7,O9FEL960O9G%S
M=&%T92YC"F=C8R M3R M1$Q)3E58("U$:7@X-B M22]H;VUE+V%R<75I+VQA
M;38Q+V@@+4DN+B\N+B\N+B]O=&(O<WES+V9I;&5D("U$5$]?1$Q/7T%#2STU
M,# P,# @+4143U]$3$]?241,13TV," M1%1/7T1,3U]%4U1)34%413TS," M
M1$1/34%84D5314Y$/3$P," M1%)025]32$T@+4132$U?4UE35B M1%)-/2<B
M+V)I;B]R;2 M9B(G("UC("XN+RXN+RXN+V]T8B]S>7,O9FEL960O9G%W<FET
M92YC"F=C8R M3R M1$Q)3E58("U$:7@X-B M22]H;VUE+V%R<75I+VQA;38Q
M+V@@+4DN+B\N+B\N+B]O=&(O<WES+V9I;&5D("U$5$]?1$Q/7T%#2STU,# P
M,# @+4143U]$3$]?241,13TV," M1%1/7T1,3U]%4U1)34%413TS," M1$1/
M34%84D5314Y$/3$P," M1%)025]32$T@+4132$U?4UE35B M1%)-/2<B+V)I
M;B]R;2 M9B(G("UC("XN+RXN+RXN+V]T8B]S>7,O9FEL960O9G%O<&5N9F0N
M8PIG8V,@+4\@+41,24Y56" M1&EX.#8@+4DO:&]M92]A<G%U:2]L86TV,2]H
M("U)+BXO+BXO+BXO;W1B+W-Y<R]F:6QE9" M1%1/7T1,3U]!0TL]-3 P,# P
M("U$5$]?1$Q/7TE$3$4]-C @+4143U]$3$]?15-424U!5$4],S @+41$3TU!
M6%)%4T5.1#TQ,# @+4124$E?4TA-("U$4TA-7U-94U8@+41233TG(B]B:6XO
M<FT@+68B)R M8R N+B\N+B\N+B]S:&%R92]T<F%C960O=')A8V5D+F,*9V-C
M("U/("U$3$E.55@@+41I>#@V("U)+VAO;64O87)Q=6DO;&%M-C$O:" M22XN
M+RXN+RXN+V]T8B]S>7,O9FEL960@+4143U]$3$]?04-+/34P,# P," M1%1/
M7T1,3U])1$Q%/38P("U$5$]?1$Q/7T535$E-051%/3,P("U$1$]-05A215-%
M3D0],3 P("U$4E!)7U-(32 M1%-(35]365-6("U$4DT])R(O8FEN+W)M("UF
M(B<@+6,@+BXO+BXO+BXO<VAA<F4O=')A8V5D+W1R8G5F+F,*9V-C("U/("U$
M3$E.55@@+41I>#@V("U)+VAO;64O87)Q=6DO;&%M-C$O:" M22XN+RXN+RXN
M+V]T8B]S>7,O9FEL960@+4143U]$3$]?04-+/34P,# P," M1%1/7T1,3U])
M1$Q%/38P("U$5$]?1$Q/7T535$E-051%/3,P("U$1$]-05A215-%3D0],3 P
M("U$4E!)7U-(32 M1%-(35]365-6("U$4DT])R(O8FEN+W)M("UF(B<@+6,@
M+BXO+BXO+BXO;W1B+W-Y<R]L86UD+VME>&ET+F,*9V-C("U/("U$3$E.55@@
M+41I>#@V("U)+VAO;64O87)Q=6DO;&%M-C$O:" M22XN+RXN+RXN+V]T8B]S
M>7,O9FEL960@+4143U]$3$]?04-+/34P,# P," M1%1/7T1,3U])1$Q%/38P
M("U$5$]?1$Q/7T535$E-051%/3,P("U$1$]-05A215-%3D0],3 P("U$4E!)
M7U-(32 M1%-(35]365-6("U$4DT])R(O8FEN+W)M("UF(B<@+6,@+BXO+BXO
M+BXO;W1B+W-Y<R]L86UD+VYR96-V+F,*9V-C("U/("U$3$E.55@@+41I>#@V
M("U)+VAO;64O87)Q=6DO;&%M-C$O:" M22XN+RXN+RXN+V]T8B]S>7,O9FEL
M960@+4143U]$3$]?04-+/34P,# P," M1%1/7T1,3U])1$Q%/38P("U$5$]?
M1$Q/7T535$E-051%/3,P("U$1$]-05A215-%3D0],3 P("U$4E!)7U-(32 M
M1%-(35]365-6("U$4DT])R(O8FEN+W)M("UF(B<@+6,@+BXO+BXO+BXO;W1B
M+W-Y<R]L86UD+VYS96YD+F,*9V-C("U/("U$3$E.55@@+41I>#@V("U)+VAO
M;64O87)Q=6DO;&%M-C$O:" M22XN+RXN+RXN+V]T8B]S>7,O9FEL960@+414
M3U]$3$]?04-+/34P,# P," M1%1/7T1,3U])1$Q%/38P("U$5$]?1$Q/7T53
M5$E-051%/3,P("U$1$]-05A215-%3D0],3 P("U$4E!)7U-(32 M1%-(35]3
M65-6("U$4DT])R(O8FEN+W)M("UF(B<@+6,@+BXO+BXO+BXO;W1B+W-Y<R]L
M86UD+W)R97$N8PIG8V,@+4\@+41,24Y56" M1&EX.#8@+4DO:&]M92]A<G%U
M:2]L86TV,2]H("U)+BXO+BXO+BXO;W1B+W-Y<R]F:6QE9" M1%1/7T1,3U]!
M0TL]-3 P,# P("U$5$]?1$Q/7TE$3$4]-C @+4143U]$3$]?15-424U!5$4]
M,S @+41$3TU!6%)%4T5.1#TQ,# @+4124$E?4TA-("U$4TA-7U-94U8@+412
M33TG(B]B:6XO<FT@+68B)R M8R N+B\N+B\N+B]O=&(O<WES+VQA;60O<W1U
M8BYC"F=C8R M3R M1$Q)3E58("U$:7@X-B M22]H;VUE+V%R<75I+VQA;38Q
M+V@@+4DN+B\N+B\N+B]O=&(O<WES+V9I;&5D("U$5$]?1$Q/7T%#2STU,# P
M,# @+4143U]$3$]?241,13TV," M1%1/7T1,3U]%4U1)34%413TS," M1$1/
M34%84D5314Y$/3$P," M1%)025]32$T@+4132$U?4UE35B M1%)-/2<B+V)I
M;B]R;2 M9B(G("UC("XN+RXN+RXN+V]T8B]S>7,O;&%M9"]T<FEL;&EU;2YC
M"F=C8R M3R M1$Q)3E58("U$:7@X-B M22]H;VUE+V%R<75I+VQA;38Q+V@@
M+4DN+B\N+B\N+B]O=&(O<WES+V9I;&5D("U$5$]?1$Q/7T%#2STU,# P,# @
M+4143U]$3$]?241,13TV," M1%1/7T1,3U]%4U1)34%413TS," M1$1/34%8
M4D5314Y$/3$P," M1%)025]32$T@+4132$U?4UE35B M1%)-/2<B+V)I;B]R
M;2 M9B(G("UC("XN+RXN+RXN+V]T8B]S>7,O:6]D+VEO9"YC"F=C8R M3R M
M1$Q)3E58("U$:7@X-B M22]H;VUE+V%R<75I+VQA;38Q+V@@+4DN+B\N+B\N
M+B]O=&(O<WES+V9I;&5D("U$5$]?1$Q/7T%#2STU,# P,# @+4143U]$3$]?
M241,13TV," M1%1/7T1,3U]%4U1)34%413TS," M1$1/34%84D5314Y$/3$P
M," M1%)025]32$T@+4132$U?4UE35B M1%)-/2<B+V)I;B]R;2 M9B(G("UC
M("XN+RXN+RXN+V]T8B]S>7,O;&%M9"]I;V0N:6YT+F,*9V-C(" M;R!L86UD
M(&-O=71E<BYO(&ME<FYE;&EO+F\@:VEN;F5R+F\@:VEP<F]C+F\@:VMI;&PN
M;R!K;W5T97(N;R!R;W5T97(N;R!R=&1I;FET+FQA;2YO(&)U9F9E<F0N;R!B
M;V]T<V]C:VEO+F\@9&E?8F]O=&%G96YT+F\@9&E?8F]O=&-M9"YO(&1I7W=A
M:70N:6YT+F\@9&QI7VEN970N;R!D;&]?:6YE="YO(&1O7VQO860N;R!D;U]I
M;G1R+F\@9&]?=V%I="YI;G0N;R!E8VAO9"YO(&)F;W)W87)D+F\@9FQA=&0N
M;R!L;V%D9"YO(&ME;GEA9"YO('!Q8W)E871E+F\@<'%D971A8V@N;R!P<61O
M;VTN;R!P<7-T871E+F\@<G!I+FUO<"YO(&9D97-C+F\@9F9A8V4N;R!F:6QE
M9"YO(&9Q8VQO<V4N;R!F<68W-RYO(&9Q;'-E96LN;R!F<6]P96XN;R!F<7)E
M860N;R!F<7-I;7!L97@N;R!F<7-T871E+F\@9G%W<FET92YO(&9Q;W!E;F9D
M+F\@=')A8V5D+F\@=')B=68N;R!K97AI="YO(&YR96-V+F\@;G-E;F0N;R!R
M<F5Q+F\@<W1U8BYO('1R:6QL:75M+F\@:6]D+F\@:6]D+FEN="YO(" M3"]H
M;VUE+V%R<75I+VQA;38Q+VQI8B M;&%R9W,@+6QT<FEL;&EU;2 M;'0@+6QM
M<&D@"B]B:6XO8W @;&%M9" O:&]M92]A<G%U:2]L86TV,2]B:6XO;&%M9 IM
M86ME6S-=.B!,96%V:6YG(&1I<F5C=&]R>2!@+VAO;64O87)Q=6DO;&%M-C$O
M;W1B+6]B:B]S>7,O;&%M9"<*;6%K95LR73H@3&5A=FEN9R!D:7)E8W1O<GD@
M8"]H;VUE+V%R<75I+VQA;38Q+V]T8BUO8FHO<WES)PH)='!I;F<Z"FUA:V5;
M,ETZ($5N=&5R:6YG(&1I<F5C=&]R>2!@+VAO;64O87)Q=6DO;&%M-C$O;W1B
M+6]B:B]T<&EN9R<*9V-C("U/("U$3$E.55@@+41I>#@V("U)+VAO;64O87)Q
M=6DO;&%M-C$O:" @+6,@+BXO+BXO;W1B+W1P:6YG+W1P:6YG+F,*9V-C(" M
M;R!T<&EN9R!T<&EN9RYO("U,+VAO;64O87)Q=6DO;&%M-C$O;&EB("UL87)G
M<R M;'1R:6QL:75M("UL=" *+V)I;B]C<"!T<&EN9R O:&]M92]A<G%U:2]L
M86TV,2]B:6XO='!I;F<*;6%K95LR73H@3&5A=FEN9R!D:7)E8W1O<GD@8"]H
M;VUE+V%R<75I+VQA;38Q+V]T8BUO8FHO='!I;F<G"FUA:V5;,5TZ($QE879I
M;F<@9&ER96-T;W)Y(& O:&]M92]A<G%U:2]L86TV,2]O=&(M;V)J)PIS8VAE
M;6$Z"FUA:V5;,5TZ($5N=&5R:6YG(&1I<F5C=&]R>2!@+VAO;64O87)Q=6DO
M;&%M-C$O<V-H96UA)PHO8FEN+V-P(&-O;F8N;&%M("]H;VUE+V%R<75I+VQA
M;38Q+V)O;W0O8V]N9BYL86T*+V)I;B]C<"!C;VYF+F]T8B O:&]M92]A<G%U
M:2]L86TV,2]B;V]T+V-O;F8N;W1B"B]B:6XO8W @8FAO<W0N9&5F("]H;VUE
M+V%R<75I+VQA;38Q+V)O;W0O8FAO<W0N9&5F"B]B:6XO8W @8FAO<W0N;&%M
M("]H;VUE+V%R<75I+VQA;38Q+V)O;W0O8FAO<W0N;&%M"FUA:V5;,5TZ($QE
M879I;F<@9&ER96-T;W)Y(& O:&]M92]A<G%U:2]L86TV,2]S8VAE;6$G"FUA
M;CH*;6%K95LQ73H@16YT97)I;F<@9&ER96-T;W)Y(& O:&]M92]A<G%U:2]L
M86TV,2]M86XG"FUA:V5;,5TZ($YO=&AI;F<@=&\@8F4@9&]N92!F;W(@8&EN
M<W1A;&PG+@IM86ME6S%=.B!,96%V:6YG(&1I<F5C=&]R>2!@+VAO;64O87)Q
.=6DO;&%M-C$O;6%N)PI=
 
end

From mpi-comm-human@mcs.anl.gov Tue Mar  2 21:07:28 1999
Return-Path: <mpi-comm-human@mcs.anl.gov>
Received: from antares.mcs.anl.gov (mcs.anl.gov [140.221.9.6]) 
           by netlib2.cs.utk.edu with ESMTP (cf v2.9t-netlib)
	   id VAA28714; Tue, 2 Mar 1999 21:07:28 -0500
Received: (from listserv@localhost) by antares.mcs.anl.gov (8.6.10/8.6.10)
	id UAA14235 for mpi-comm-out; Tue, 2 Mar 1999 20:04:55 -0600
Received: from miller.cs.uwm.edu (fethiye@miller.cs.uwm.edu [129.89.143.22]) by antares.mcs.anl.gov (8.6.10/8.6.10)  with ESMTP
	id UAA14229 for <mpi-comm@mcs.anl.gov>; Tue, 2 Mar 1999 20:04:49 -0600
Received: from localhost (fethiye@localhost)
	by miller.cs.uwm.edu (8.9.1a/8.9.1a) with SMTP id UAA13982;
	Tue, 2 Mar 1999 20:04:45 -0600 (CST)
Date: Tue, 2 Mar 1999 20:04:45 -0600 (CST)
From: Fethiye Akbulut <fethiye@miller.cs.uwm.edu>
To: Bill Saphir <wcs@nersc.gov>
cc: mpi-comm@mcs.anl.gov
Subject: MPI_Iprobe?
In-Reply-To: <Pine.GSO.4.02A.9902281239090.14240-100000@george.lbl.gov>
Message-ID: <Pine.OSF.4.02.9903021957120.69-100000@miller.cs.uwm.edu>
MIME-Version: 1.0
Content-Type: TEXT/PLAIN; charset=US-ASCII
Sender: owner-mpi-core@mcs.anl.gov
Precedence: bulk


Hi all,

OK, since MPI_Abort does put the errors to stdout and it is not what we
want I am trying another suggested way: using MPI_Iprobe.

Here, I still have questions...

In Dr.Pacheco's Book, it is written that MPI_Iprobe function searches for
an incoming message matching three of the given parameters. And when it
does match, then the flag is turned and we should use MPI_Recv to receive
the message sent. So far, it is great.

But, in my situation, since I want to kill the other processes when I am
done, I don't want to wait for them to come to the same stage as I am. So,
where should I put this MPI_Iprobe and MPI_Recv funstions? Do they have to
follow each other?

Thank you in advance,
Fethiye


From mpi-comm-human@mcs.anl.gov Thu Mar  4 18:57:15 1999
Return-Path: <mpi-comm-human@mcs.anl.gov>
Received: from antares.mcs.anl.gov (mcs.anl.gov [140.221.9.6]) 
           by netlib2.cs.utk.edu with ESMTP (cf v2.9t-netlib)
	   id SAA13893; Thu, 4 Mar 1999 18:57:14 -0500
Received: (from listserv@localhost) by antares.mcs.anl.gov (8.6.10/8.6.10)
	id RAA20649 for mpi-comm-out; Thu, 4 Mar 1999 17:53:50 -0600
Received: from MPI-Softtech.Com (mpi.MPI-SoftTech.Com [208.152.187.97]) by antares.mcs.anl.gov (8.6.10/8.6.10)  with ESMTP
	id UAA15052 for <mpi-comm@mcs.anl.gov>; Tue, 2 Mar 1999 20:49:34 -0600
Received: from localhost (tony@localhost); 
          by MPI-Softtech.Com (8.9.1/8.9.1/MPI-Softtech/evision: 1.3 $) with ESMTP; 
          id UAA23364; Tue, 2 Mar 1999 20:48:40 -0600 (CST)
Date: Tue, 2 Mar 1999 20:48:40 -0600 (CST)
From: Tony Skjellum <tony@MPI-Softtech.Com>
X-Sender: tony@mpi.mpi-softtech.com
To: Fethiye Akbulut <fethiye@miller.cs.uwm.edu>
cc: Bill Saphir <wcs@nersc.gov>, mpi-comm@mcs.anl.gov
Subject: Re: MPI_Iprobe?
In-Reply-To: <Pine.OSF.4.02.9903021957120.69-100000@miller.cs.uwm.edu>
Message-ID: <Pine.SOL.4.05.9903022047081.22408-100000@mpi.mpi-softtech.com>
MIME-Version: 1.0
Content-Type: TEXT/PLAIN; charset=US-ASCII
Sender: owner-mpi-core@mcs.anl.gov
Precedence: bulk

I think you are asking for something outside the MPI standard,
unfortunately.

Anthony Skjellum, PhD, President (tony@mpi-softtech.com) 
MPI Software Technology, Inc., Ste 201, 1 Research Blvd., Starkville, MS 39759
+1-(601)320-4300 x15; FAX: +1-(601)320-4301; http://www.mpi-softtech.com
*The source for MPI, MPI-2, MPI/RT, Embedded & High Performance Middleware(tm)*


On Tue, 2 Mar 1999, Fethiye Akbulut wrote:

> 
> Hi all,
> 
> OK, since MPI_Abort does put the errors to stdout and it is not what we
> want I am trying another suggested way: using MPI_Iprobe.
> 
> Here, I still have questions...
> 
> In Dr.Pacheco's Book, it is written that MPI_Iprobe function searches for
> an incoming message matching three of the given parameters. And when it
> does match, then the flag is turned and we should use MPI_Recv to receive
> the message sent. So far, it is great.
> 
> But, in my situation, since I want to kill the other processes when I am
> done, I don't want to wait for them to come to the same stage as I am. So,
> where should I put this MPI_Iprobe and MPI_Recv funstions? Do they have to
> follow each other?
well, you really want an interrupt approach, and that is outside MPI.
Otherwise, you should do your own reactive programming model, and
dispatch over the type of messages received, with one special message,
the kill message, being any example to dispatch on.

 
> Thank you in advance,
> Fethiye
> 



From emailaddresses98037@yahoo.com Mon Jun 17 13:44:24 2002
Return-Path: <emailaddresses98037@yahoo.com>
Received: from mail.visionox.com ([202.108.232.178])
	by netlib2.cs.utk.edu (8.12.3/8.12.3) with ESMTP id g5HHiMjx002796
	for <mpi-comm-archive@netlib2.cs.utk.edu>; Mon, 17 Jun 2002 13:44:23 -0400 (EDT)
Message-Id: <200206171744.g5HHiMjx002796@netlib2.cs.utk.edu>
Received: from smtp0582.mail.yahoo.com (66.106.194.2 [66.106.194.2]) by mail.visionox.com with SMTP (Microsoft Exchange Internet Mail Service Version 5.5.2650.21)
	id NCLLD94V; Tue, 18 Jun 2002 01:22:37 +0800
Date: Mon, 17 Jun 2002 13:23:05 -0400
From: "Lou Houben"<emailaddresses98037@yahoo.com>
X-Priority: 3
To: mpi-comm-archive@netlib2.cs.utk.edu
Subject: >>>OVER 14.5 MILLION OPT-IN EMAIL ADDRESSES...PLUS $2,000 IN FREE SOFTWARE!
Mime-Version: 1.0
Content-Type: text/plain; charset=us-ascii
Content-Transfer-Encoding: 7bit


Dear,  mpi-comm-archive@netlib2.cs.utk.edu

Would you like to get tens of thousands of new visitors to your web site 
daily?

Below is everything you will ever need to market your product or service
over the Internet! Besides that...It's the only real way to market on the 
Internet...Period!

HOW WOULD YOU LIKE TO HAVE YOUR MESSAGE SEEN BY OVER
14.5 MILLION TARGETED PROSPECTS DAILY?


             EARN MEGA-PROFITS WITH THE RIGHT FORMULA

If you have a product, service, or message that you would like to get out 
to Thousands, Hundreds of Thousands, or even Millions of people, you 
have several options. Traditional methods include print advertising, direct 
mail, radio, and television advertising. They are all effective, but they all 
have two catches: They're EXPENSIVE and TIME CONSUMING. Not 
only that, you only get ONE SHOT at making your message heard, by 
the right people.

Now this has all changed!

Thanks to the top programmers in the world and their NEW EMAIL
TECHNOLOGY, You can send over 14,500,000 Emails Daily for FREE...
Without getting terminated from your current Internet connection!

It's very simple to do and you can be increasing sales within minutes of
installing this new extraordinary software!

PLUS...OVER $2,000 IN MARKETING SOFTWARE INCLUDED FREE!

HURRY!.....OFFER ENDS IN 3 DAYS

To find out more information, Do not respond by email. Instead, Please 
Call our marketing department at....
1- (203) - 467-5378

Cybernet Marketing


This message is a one time mailing and will never be repeated again.


From CustomPrintGoods@netscape.net Wed Mar 26 12:38:00 2003
Return-Path: <CustomPrintGoods@netscape.net>
Received: from messersuomi.fi (firewall.messersuomi.fi [194.157.204.130])
	by netlib2.cs.utk.edu (8.12.8/8.12.3) with ESMTP id h2QHbxSP025631
	for <mpi-comm-archive@netlib2.cs.utk.edu>; Wed, 26 Mar 2003 12:37:59 -0500 (EST)
Received: from smtp.messersuomi.fi ([10.17.140.11]) by firewall.messersuomi.fi with ESMTP id <118364>; Wed, 26 Mar 2003 19:45:25 +0200
Received: from smtp0301.mail.yahoo.com (CYBER-CENTRE [203.86.188.34]) by smtp.messersuomi.fi with SMTP (Microsoft Exchange Internet Mail Service Version 5.5.2653.13)
	id HFVBJZRQ; Wed, 26 Mar 2003 19:36:05 +0200
Date:  Wed, 26 Mar 2003 17:35:52 GMT
From: CustomPrintGoods@netscape.net
X-Priority: 3
To: mpi-comm-archive@netlib2.cs.utk.edu
Subject: Custom Printed T-Shirts:$2.10 - Embroidered Golf Shirts:$11.95 
Mime-Version: 1.0
Content-Type: text/html; charset=us-ascii
Content-Transfer-Encoding: base64
Message-Id: <03Mar26.194525eet.118364@firewall.messersuomi.fi>

PGh0bWw+DQoNCjxoZWFkPg0KPG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIg0KY29udGVu
dD0idGV4dC9odG1sOyBjaGFyc2V0PWlzby04ODU5LTEiPg0KPG1ldGEgbmFtZT0iR0VORVJBVE9S
IiBjb250ZW50PSJNaWNyb3NvZnQgRnJvbnRQYWdlIEV4cHJlc3MgMi4wIj4NCjx0aXRsZT5Hb2xm
IFNoaXJ0czwvdGl0bGU+DQo8L2hlYWQ+DQoNCjxib2R5IGJnY29sb3I9IiNGRkZGRkYiPg0KDQo8
cCBhbGlnbj0iY2VudGVyIj48Zm9udCBzaXplPSIzIiBmYWNlPSJWZXJkYW5hIj48c3Ryb25nPllP
VVIgTE9HTzwvc3Ryb25nPg0KYWZmb3JkYWJseSBwcmludGVkIG9uIHF1YWxpdHkgSGFuZXMgR29s
ZiBTaGlydHMgJmFtcDsgVGVlIFNoaXJ0czwvZm9udD48L3A+DQoNCjxkaXYgYWxpZ249ImNlbnRl
ciI+PGNlbnRlcj4NCg0KPHRhYmxlIGJvcmRlcj0iMCIgY2VsbHBhZGRpbmc9IjAiIGNlbGxzcGFj
aW5nPSIwIj4NCiAgICA8dHI+DQogICAgICAgIDx0ZCBhbGlnbj0iY2VudGVyIiB2YWxpZ249InRv
cCI+PGRpdiBhbGlnbj0iY2VudGVyIj48Y2VudGVyPjx0YWJsZQ0KICAgICAgICBib3JkZXI9IjAi
IGNlbGxwYWRkaW5nPSIyIiBjZWxsc3BhY2luZz0iMCIgd2lkdGg9IjgwJSINCiAgICAgICAgYmdj
b2xvcj0iIzAwRkYwMCI+DQogICAgICAgICAgICA8dHI+DQogICAgICAgICAgICAgICAgPHRkIGFs
aWduPSJjZW50ZXIiIHZhbGlnbj0idG9wIj48Zm9udA0KICAgICAgICAgICAgICAgIGNvbG9yPSIj
MDAwMDAwIiBzaXplPSI0IiBmYWNlPSJWZXJkYW5hIj48c3Ryb25nPkdvbGY8L3N0cm9uZz48L2Zv
bnQ+PGZvbnQNCiAgICAgICAgICAgICAgICBjb2xvcj0iIzAwRkYwMCIgc2l6ZT0iNCIgZmFjZT0i
VmVyZGFuYSI+PHN0cm9uZz5fPC9zdHJvbmc+PC9mb250Pjxmb250DQogICAgICAgICAgICAgICAg
Y29sb3I9IiMwMDAwMDAiIHNpemU9IjQiIGZhY2U9IlZlcmRhbmEiPjxzdHJvbmc+U2hpcnRzPC9z
dHJvbmc+PC9mb250PjwvdGQ+DQogICAgICAgICAgICA8L3RyPg0KICAgICAgICAgICAgPHRyPg0K
DQogICAgICAgICAgICAgICAgPHRkIGFsaWduPSJjZW50ZXIiIHZhbGlnbj0idG9wIj48Zm9udA0K
ICAgICAgICAgICAgICAgIGNvbG9yPSIjRkYwMDAwIiBzaXplPSI0IiBmYWNlPSJWZXJkYW5hIj48
c3Ryb25nPkVNQlJPSURFUkVEPC9zdHJvbmc+PC9mb250PjwvdGQ+DQogICAgICAgICAgICA8L3Ry
Pg0KICAgICAgICAgICAgPHRyPg0KICAgICAgICAgICAgICAgIDx0ZCBhbGlnbj0iY2VudGVyIiB2
YWxpZ249InRvcCI+PGZvbnQNCiAgICAgICAgICAgICAgICBjb2xvcj0iI0ZGMDAwMCIgc2l6ZT0i
NSIgZmFjZT0iVmVyZGFuYSI+PHN0cm9uZz4kMTEuOTU8L3N0cm9uZz48L2ZvbnQ+PC90ZD4NCiAg
ICAgICAgICAgIDwvdHI+DQogICAgICAgICAgICA8dHI+DQogICAgICAgICAgICAgICAgPHRkIGFs
aWduPSJjZW50ZXIiIHZhbGlnbj0idG9wIj48YQ0KICAgICAgICAgICAgICAgIGhyZWY9Imh0dHA6
Ly93d3cuaGFuZXNidWxsc2V5ZS5jb20vUHJvZHVjdERldGFpbC5hc3A/U3R5bGU9MDU1WCI+PGZv
bnQNCiAgICAgICAgICAgICAgICBzaXplPSIxIiBmYWNlPSJDb3VyaWVyIj48c3Ryb25nPmNsaWNr
IGhlcmU8YnI+DQoNCiAgICAgICAgICAgICAgICBmb3IgcHJvZHVjdCBkZXRhaWxzPC9zdHJvbmc+
PC9mb250PjwvYT48L3RkPg0KICAgICAgICAgICAgPC90cj4NCiAgICAgICAgICAgIDx0cj4NCiAg
ICAgICAgICAgICAgICA8dGQgdmFsaWduPSJ0b3AiPjx1bD4NCiAgICAgICAgICAgICAgICAgICAg
PGxpPjxmb250IGZhY2U9IlZlcmRhbmEiPkhhbmVzIFBpcXVlIEtuaXQ8YnI+DQogICAgICAgICAg
ICAgICAgICAgICAgICBHb2xmIFNoaXJ0czwvZm9udD48L2xpPg0KICAgICAgICAgICAgICAgICAg
ICA8bGk+PGZvbnQgZmFjZT0iVmVyZGFuYSI+NyBvei48L2ZvbnQ+PC9saT4NCg0KICAgICAgICAg
ICAgICAgICAgICA8bGk+PGZvbnQgZmFjZT0iVmVyZGFuYSI+MTYgQ29sb3JzIHRvPGJyPg0KICAg
ICAgICAgICAgICAgICAgICAgICAgY2hvb3NlIGZyb208L2ZvbnQ+PC9saT4NCiAgICAgICAgICAg
ICAgICAgICAgPGxpPjxmb250IGZhY2U9IlZlcmRhbmEiPk1pbi4gMjQ8L2ZvbnQ+PC9saT4NCiAg
ICAgICAgICAgICAgICA8L3VsPg0KICAgICAgICAgICAgICAgIDwvdGQ+DQogICAgICAgICAgICA8
L3RyPg0KICAgICAgICA8L3RhYmxlPg0KDQogICAgICAgIDwvY2VudGVyPjwvZGl2PjwvdGQ+DQog
ICAgICAgIDx0ZCBhbGlnbj0iY2VudGVyIiB2YWxpZ249InRvcCI+PGRpdiBhbGlnbj0iY2VudGVy
Ij48Y2VudGVyPjx0YWJsZQ0KICAgICAgICBib3JkZXI9IjAiIGNlbGxwYWRkaW5nPSIyIiBjZWxs
c3BhY2luZz0iMCIgd2lkdGg9IjgwJSINCiAgICAgICAgYmdjb2xvcj0iI0ZGRkYwMCI+DQogICAg
ICAgICAgICA8dHI+DQogICAgICAgICAgICAgICAgPHRkIGFsaWduPSJjZW50ZXIiIHZhbGlnbj0i
dG9wIj48Zm9udA0KICAgICAgICAgICAgICAgIGNvbG9yPSIjMDAwMDAwIiBzaXplPSI0IiBmYWNl
PSJWZXJkYW5hIj48c3Ryb25nPlQtU2hpcnRzPC9zdHJvbmc+PC9mb250PjwvdGQ+DQogICAgICAg
ICAgICA8L3RyPg0KICAgICAgICAgICAgPHRyPg0KICAgICAgICAgICAgICAgIDx0ZCBhbGlnbj0i
Y2VudGVyIiB2YWxpZ249InRvcCI+PGZvbnQNCiAgICAgICAgICAgICAgICBjb2xvcj0iI0ZGMDAw
MCIgc2l6ZT0iMiIgZmFjZT0iQ291cmllciI+PHN0cm9uZz5zY3JlZW4NCiAgICAgICAgICAgICAg
ICBwcmludGVkIHdpdGggeW91ciBsb2dvPC9zdHJvbmc+PC9mb250PjwvdGQ+DQogICAgICAgICAg
ICA8L3RyPg0KDQogICAgICAgICAgICA8dHI+DQogICAgICAgICAgICAgICAgPHRkIGFsaWduPSJj
ZW50ZXIiIHZhbGlnbj0idG9wIj48Zm9udA0KICAgICAgICAgICAgICAgIGNvbG9yPSIjRkYwMDAw
IiBzaXplPSI1IiBmYWNlPSJWZXJkYW5hIj48c3Ryb25nPiQyLjEwPC9zdHJvbmc+PC9mb250Pjwv
dGQ+DQogICAgICAgICAgICA8L3RyPg0KICAgICAgICAgICAgPHRyPg0KICAgICAgICAgICAgICAg
IDx0ZCBhbGlnbj0iY2VudGVyIiB2YWxpZ249InRvcCI+PGENCiAgICAgICAgICAgICAgICBocmVm
PSJodHRwOi8vd3d3LmhhbmVzYnVsbHNleWUuY29tL1Byb2R1Y3RkZXRhaWwuYXNwP1N0eWxlPTUy
ODAiPjxmb250DQogICAgICAgICAgICAgICAgc2l6ZT0iMSIgZmFjZT0iQ291cmllciI+PHN0cm9u
Zz5jbGljayBoZXJlPGJyPg0KICAgICAgICAgICAgICAgIGZvciBwcm9kdWN0IGRldGFpbHM8L3N0
cm9uZz48L2ZvbnQ+PC9hPjwvdGQ+DQogICAgICAgICAgICA8L3RyPg0KDQogICAgICAgICAgICA8
dHI+DQogICAgICAgICAgICAgICAgPHRkIHZhbGlnbj0idG9wIj48dWw+DQogICAgICAgICAgICAg
ICAgICAgIDxsaT48Zm9udCBmYWNlPSJWZXJkYW5hIj41MDAgLSAkMi4xMDwvZm9udD48L2xpPg0K
ICAgICAgICAgICAgICAgICAgICA8bGk+PGZvbnQgZmFjZT0iVmVyZGFuYSI+MzAwIC0gJDIuMjU8
L2ZvbnQ+PC9saT4NCiAgICAgICAgICAgICAgICAgICAgPGxpPjxmb250IGZhY2U9IlZlcmRhbmEi
PjIwMCAtICQyLjYwPC9mb250PjwvbGk+DQogICAgICAgICAgICAgICAgICAgIDxsaT48Zm9udCBm
YWNlPSJWZXJkYW5hIj4xMDAgLSAkMy4xNTwvZm9udD48L2xpPg0KICAgICAgICAgICAgICAgICAg
ICA8bGk+PGZvbnQgZmFjZT0iVmVyZGFuYSI+TWluaW11bSBPcmRlciBvZiA1MA0KICAgICAgICAg
ICAgICAgICAgICAgICAgVC1TaGlydHM8YnI+DQoNCiAgICAgICAgICAgICAgICAgICAgICAgIGF2
YWlsYWJsZSBhdCBhZGRpdGlvbmFsIGNoYXJnZTwvZm9udD48L2xpPg0KICAgICAgICAgICAgICAg
ICAgICA8bGk+PGZvbnQgZmFjZT0iVmVyZGFuYSI+T05FIEZSRUUgU0NSRUVOPC9mb250PjwvbGk+
DQogICAgICAgICAgICAgICAgICAgIDxsaT48Zm9udCBmYWNlPSJWZXJkYW5hIj5QcmljZXMgaW5j
bHVkZSB5b3VyDQogICAgICAgICAgICAgICAgICAgICAgICAyIENPTE9SIElNUFJJTlQ8L2ZvbnQ+
PC9saT4NCiAgICAgICAgICAgICAgICAgICAgPGxpPjxmb250IGZhY2U9IlZlcmRhbmEiPkhhbmVz
IFdoaXRlDQogICAgICAgICAgICAgICAgICAgICAgICBIZWF2eXdlaWdodCAxMDAlIENvdHRvbiBU
LVNoaXJ0IDwvZm9udD48L2xpPg0KICAgICAgICAgICAgICAgIDwvdWw+DQogICAgICAgICAgICAg
ICAgPC90ZD4NCiAgICAgICAgICAgIDwvdHI+DQoNCiAgICAgICAgPC90YWJsZT4NCiAgICAgICAg
PC9jZW50ZXI+PC9kaXY+PC90ZD4NCiAgICA8L3RyPg0KICAgIDx0cj4NCiAgICAgICAgPHRkIGFs
aWduPSJjZW50ZXIiIGNvbHNwYW49IjMiPjxmb250IHNpemU9IjUiDQogICAgICAgIGZhY2U9InZl
cmRhbmEiPkZSRUUgU0NSRUVOITwvZm9udD48L3RkPg0KICAgIDwvdHI+DQogICAgPHRyPg0KICAg
ICAgICA8dGQgYWxpZ249ImNlbnRlciIgY29sc3Bhbj0iMyI+PGZvbnQgc2l6ZT0iNCINCiAgICAg
ICAgZmFjZT0iVmVyZGFuYSI+PHN0cm9uZz5UbyBwbGFjZSBhbiBvcmRlciBvciBnZXQNCiAgICAg
ICAgYWRkaXRpb25hbCBpbmZvcm1hdGlvbiwgcGxlYXNlIGNvbnRhY3QgdXM6PGJyPg0KDQogICAg
ICAgIDwvc3Ryb25nPjwvZm9udD48YSBocmVmPSJtYWlsdG86Q1VTVDBNSU1BR0VAbmV0c2NhcGUu
bmV0Ij48Zm9udA0KICAgICAgICBzaXplPSI1IiBmYWNlPSJBcmlhbCI+PHN0cm9uZz5DVVNUME1J
TUFHRUBuZXRzY2FwZS5uZXQ8L3N0cm9uZz48L2ZvbnQ+PC9hPjxmb250DQogICAgICAgIHNpemU9
IjMiIGZhY2U9IlZlcmRhbmEiPjxzdHJvbmc+PGJyPg0KICAgICAgICBPUiBDQUxMIFVTIFRPTEwg
RlJFRTxicj4NCiAgICAgICAgPC9zdHJvbmc+PC9mb250Pjxmb250IHNpemU9IjYiIGZhY2U9IlZl
cmRhbmEiPjEtODc3LTUwMy03NDE1PC9mb250PjwvdGQ+DQogICAgPC90cj4NCjwvdGFibGU+DQo8
L2NlbnRlcj48L2Rpdj4NCg0KPHAgYWxpZ249ImNlbnRlciI+PGZvbnQgZmFjZT0iQXJpYWwiPldl
IGFyZSBhIGZhbWlseSBvd25lZA0KYnVzaW5lc3MsIG9wZXJhdGluZyBpbiBNZW1waGlzLCBUZW5u
ZXNzZWUgZm9yIG92ZXIgMjkgeWVhcnMuPC9mb250PjwvcD4NCg0KPHAgYWxpZ249ImNlbnRlciI+
PGZvbnQgZmFjZT0iVmVyZGFuYSI+PHN0cm9uZz5TSUdOQVRVUkVTPC9zdHJvbmc+PC9mb250Pjxi
cj4NCjxmb250IHNpemU9IjEiIGZhY2U9IkFyaWFsIj5HSUFOVCBTSVpFRCBQT1NURVJTICogQ09S
UE9SQVRFDQpBUFBBUkVMICogU0lHTlMgJmFtcDsgQkFOTkVSUyAqIFBST01PVElPTkFMIFBST0RV
Q1RTICogVFJPUEhJRVMNCiZhbXA7IEFXQVJEUzwvZm9udD48Zm9udCBzaXplPSIxIj48YnI+DQo8
L2ZvbnQ+PGZvbnQgZmFjZT0iQXJpYWwsSGVsdmV0aWNhIj41NTkgUy4gSGlnaGxhbmQgU3RyZWV0
ICoNCk1lbXBoaXMsIFROIDM4MTExPC9mb250PiA8YnI+DQo8Zm9udCBmYWNlPSJBcmlhbCxIZWx2
ZXRpY2EiPjkwMS0zMjctNTQ1NjwvZm9udD48L3A+DQoNCjxwIGFsaWduPSJjZW50ZXIiPiZuYnNw
OzwvcD4NCg0KPHA+PGZvbnQgc2l6ZT0iMiIgZmFjZT0iVmVyZGFuYSI+V2UgaG9ub3IgdGhlIHJl
bW92YWwgcmVxdWVzdHMNCnRoYXQgd2UgcmVjZWl2ZS48YnI+DQoNClRvIGJlIHJlbW92ZWQgZnJv
bSBmdXR1cmUgbWFpbGluZ3MsIHBsZWFzZSBlbWFpbCB1cyBhdDogPC9mb250PjxhDQpocmVmPSJt
YWlsdG86Tm9Nb3JlTWFpbEZvck1lQGV4Y2l0ZS5jb20iPjxmb250IHNpemU9IjIiDQpmYWNlPSJW
ZXJkYW5hIj48c3Ryb25nPk5vTW9yZU1haWxGb3JNZUBleGNpdGUuY29tPC9zdHJvbmc+PC9mb250
PjwvYT48Zm9udA0Kc2l6ZT0iMiIgZmFjZT0iVmVyZGFuYSI+PGJyPg0KVHlwZSB0aGUgPHN0cm9u
Zz5lbWFpbCBhZGRyZXNzIHlvdSB3YW50IHJlbW92ZWQ8L3N0cm9uZz4gaW50byB0aGUNCjxzdHJv
bmc+U3ViamVjdCBMaW5lPC9zdHJvbmc+IG9mIHlvdXIgZW1haWwuPGJyPg0KT3VyIHN5c3RlbSB3
aWxsIGNoZWNrIHRoZSBzdWJqZWN0IGxpbmUgZm9yIGVtYWlsIGFkZHJlc3NlcyBhbmQNCndpbGwg
cmVtb3ZlIHRob3NlIGFkZHJlc3NlcyBmcm9tIG91ciBzeXN0ZW0uPGJyPg0KV2UgYXBvbG9naXpl
IGZvciBhbnkgaW5jb252ZW5pZW5jZS48L2ZvbnQ+PC9wPg0KPC9ib2R5Pg0KPC9odG1sPg0K

From CustomPrintGoods@netscape.net Thu Apr  3 22:42:15 2003
Return-Path: <CustomPrintGoods@netscape.net>
Received: from mail.oh100.com (www.oh100.com.cn [202.102.193.226])
	by netlib2.cs.utk.edu (8.12.8/8.12.3) with ESMTP id h343gESP016145
	for <mpi-comm-archive@netlib2.cs.utk.edu>; Thu, 3 Apr 2003 22:42:15 -0500 (EST)
Received: from smtp0199.mail.yahoo.com (unknown [61.33.66.200])
	by mail.oh100.com (Postfix) with ESMTP id 72544B236C
	for <mpi-comm-archive@netlib2.cs.utk.edu>; Fri,  4 Apr 2003 10:13:27 +0800 (CST)
Date: Fri, 4 Apr 2003 02:09:15 GMT
From: CustomPrintGoods@netscape.net
X-Priority: 3
To: mpi-comm-archive@netlib2.cs.utk.edu
Subject: Giant Posters made From YOUR Images - Just $7.00 a Square Foot
Mime-Version: 1.0
Content-Type: text/html; charset=us-ascii
Content-Transfer-Encoding: 7bit
Message-Id: <20030404021330.72544B236C@mail.oh100.com>

<html>

<body bgcolor="#FFFFFF">
<div align="center"><center>

<table border="0" cellpadding="0" cellspacing="0" width="100%">
    <tr>
        <td align="center" colspan="2"><div align="center"><center><table
        border="0" cellpadding="5" cellspacing="0">
            <tr>
                <td align="center" colspan="2"><font
                color="#FF0000" size="4" face="Verdana">GIANT
                SIZED POSTERS made from YOUR IMAGES!<br>
                </font><font size="2" face="Verdana">Send us <em>Any</em>
                Picture or Drawing or Artwork - We'll make your
                Poster for $7.00 a square foot</font></td>
            </tr>
            <tr>
                <td align="center"><div align="center"><center><table
                border="2" cellpadding="2" cellspacing="0"
                bgcolor="#FFFFAA" bordercolor="#FF0000">
                    <tr>
                        <td align="center"><font color="#800000"
                        size="5" face="Verdana">22&quot; x
                        28&quot; poster for $30.00<br>
                        </font><font size="4" face="Verdana">Free
                        Shipping for Orders Over $80.00<br>
                        </font><font color="#000080" size="3"
                        face="Verdana"><strong>shipped in 2-3
                        days</strong></font><font size="4"
                        face="Verdana"><strong><br>
                        </strong></font><font size="3"
                        face="Verdana">(rolled in a protective
                        mailing tube)</font><p><font size="3"
                        face="Verdana"><strong>Minimum Order:
                        $30.00<br>
                        Shipping: $5.50</strong></font></p>
                        </td>
                    </tr>
                </table>
                </center></div></td>
                <td align="center"><font size="2" face="Verdana">JUST
                EMAIL YOUR SCANNED IMAGES OR ART AND WE'LL MAIL
                YOUR POSTER IN 2-3 DAYS!</font><p><font size="2"
                face="Verdana">° Family Pictures Can Become
                Attention Getting Wall Art<br>
                ° Large Sized Graphic Exhibits<br>
                ° Upscale Signage<br>
                ° Special Memories<br>
                ° Memorable Humorous Moments</font></p>
                <div align="center"><center><table border="1"
                cellspacing="0" bgcolor="#F4F4F4">
                    <tr>
                        <td align="center" valign="top"><font
                        size="2" face="Verdana">20&quot; x
                        25&quot; - $ 24.50</font></td>
                        <td align="center" valign="top"><font
                        size="2" face="Verdana">24&quot; x
                        30&quot; - $ 35.00</font></td>
                    </tr>
                    <tr>
                        <td align="center" valign="top"><font
                        size="2" face="Verdana">20&quot; x
                        28&quot; - $ 27.50</font></td>
                        <td align="center" valign="top"><font
                        size="2" face="Verdana">29&quot; x
                        32&quot; - $ 45.00</font></td>
                    </tr>
                    <tr>
                        <td align="center" valign="top"><font
                        size="2" face="Verdana">22&quot; x
                        28&quot; - $ 30.00</font></td>
                        <td align="center" valign="top"><font
                        size="2" face="Verdana">54&quot; x
                        96&quot; - $252.00</font></td>
                    </tr>
                </table>
                </center></div></td>
            </tr>
        </table>
        </center></div></td>
    </tr>
    <tr>
        <td align="center" valign="top"><div align="center"><center><table
        border="1" cellpadding="4" cellspacing="0"
        bgcolor="#DCFFB9">
            <tr>
                <td align="center"><font face="Verdana"><strong>DISCOUNTS<br>
                (for min. size of 3 sq. ft.)</strong></font><div
                align="center"><center><table border="0"
                cellpadding="2" cellspacing="0" bgcolor="#FFFF97">
                    <tr>
                        <td align="right"><font size="2"
                        face="Verdana"><strong>5 posters =</strong></font></td>
                        <td><font size="2" face="Verdana"><strong>$6.00
                        per square foot</strong></font></td>
                    </tr>
                    <tr>
                        <td align="right"><font size="2"
                        face="Verdana"><strong>10 posters =</strong></font></td>
                        <td><font size="2" face="Verdana"><strong>$5.50
                        per square foot</strong></font></td>
                    </tr>
                    <tr>
                        <td align="right"><font size="2"
                        face="Verdana"><strong>20 posters up =</strong></font></td>
                        <td><font size="2" face="Verdana"><strong>$5.00
                        per square foot</strong></font></td>
                    </tr>
                </table>
                </center></div></td>
            </tr>
        </table>
        </center></div><p align="center"><font size="3"
        face="Verdana">Convert your favorite:<br>
        </font><font size="2" face="Verdana">*Action Pictures<br>
        *Team Picture<br>
        *Class Picture<br>
        *Any Picture<br>
        </font><font size="3" face="Verdana"><strong>To a GIANT
        POSTER SIZED PRINT!</strong></font></p>
        </td>
        <td valign="bottom"><div align="center"><center><table
        border="0" cellpadding="5" cellspacing="0">
            <tr>
                <td valign="top"><font face="Verdana">FROM THIS<br>
                <img
                src="http://www.geocities.com/a_famous_artist/fromthisA.jpg"
                alt="IF IMAGE FAILS TO LOAD, PLEASE LET US KNOW"
                width="141" height="159"></font></td>
                <td valign="top"><font face="Verdana">TO THIS (or
                BIGGER!)<br>
                <img
                src="http://www.geocities.com/a_famous_artist/fromthisB.jpg"
                alt="IF IMAGE FAILS TO LOAD, PLEASE LET US KNOW"
                width="182" height="234"></font></td>
            </tr>
        </table>
        </center></div></td>
    </tr>
</table>
</center></div><div align="center"><center>

<table border="0" cellpadding="0" cellspacing="0" width="100%"
bgcolor="#FEE9D3">
    <tr>
        <td><blockquote>
            <p align="center"><font size="4" face="Verdana"><strong>WHAT
            TO DO:<br>
            </strong></font><font size="2" face="Verdana">We are
            a family owned business operating in Memphis,
            Tennessee for over 29 years.</font><font size="4"
            face="Verdana"><strong><br>
            </strong>Please contact us via email:<br>
            </font><a href="mailto:CUST0MIMAGE@netscape.net"><font
            size="4" face="Verdana"><strong>CUST0MIMAGE@netscape.net</strong></font></a><font
            size="4" face="Verdana"><strong><br>
            or call Toll Free: 1-877-503-7415<br>
            </strong>to place an order or get additional
            information.</font></p>
            <p align="center"><font face="Verdana"><strong>SIGNATURES</strong></font><br>
            <font size="1" face="Arial">GIANT SIZED POSTERS *
            CORPORATE APPAREL * SIGNS &amp; BANNERS * PROMOTIONAL
            PRODUCTS * TROPHIES &amp; AWARDS</font><font size="1"><br>
            </font><font face="Arial,Helvetica">559 S. Highland
            Street * Memphis, TN 38111</font> <br>
            <font face="Arial,Helvetica">901-327-5456</font></p>
            <p align="center"><font face="Verdana">Toll Free:
            1-877-503-7415</font></p>
            <p align="center"><font size="2" face="Verdana">We
            are a family owned business operating in Memphis,
            Tennessee for over 29 years.</font></p>
        </blockquote>
        </td>
    </tr>
</table>
</center></div>

<p>&nbsp;</p>

<p>&nbsp;</p>

<p><font size="2" face="Verdana">We honor the removal requests
that we receive.<br>
To be removed from future mailings, please email us at: </font><a
href="mailto:DoNotContactUs@excite.com"><font size="2"
face="Verdana">DoNotContactUs@excite.com</font></a><font size="2"
face="Verdana"><b><br>
with the email address you want removed typed </b><em><b>into the
Subject Line</b></em><b> of your email.</b><br>
We apologize for any inconvenience.</font></p>
</body>
</html>

From CustomPrintGoods@netscape.net Fri Apr  4 18:40:53 2003
Return-Path: <CustomPrintGoods@netscape.net>
Received: from smmr-siemens.com ([202.105.138.91])
	by netlib2.cs.utk.edu (8.12.8/8.12.3) with ESMTP id h34NepSP029164
	for <mpi-comm-archive@netlib2.cs.utk.edu>; Fri, 4 Apr 2003 18:40:52 -0500 (EST)
Received: from smtp000.mail.yahoo.com [218.66.15.9] by smmr-siemens.com with ESMTP
  (SMTPD32-7.04) id AA8E2601C0; Wed, 02 Apr 2003 07:02:38 +0800
Date: Tue, 1 Apr 2003 23:10:52 GMT
From: CustomPrintGoods@netscape.net
X-Priority: 3
To: mpi-comm-archive@netlib2.cs.utk.edu
Subject: Giant Posters made From YOUR Images - Just $7.00 a Square Foot
Mime-Version: 1.0
Content-Type: text/html; charset=us-ascii
Content-Transfer-Encoding: 7bit
Message-Id: <20030402070231.SM01300@smtp000.mail.yahoo.com>

<html>

<head>
<meta http-equiv="Content-Type"
content="text/html; charset=iso-8859-1">
<meta name="GENERATOR" content="Microsoft FrontPage Express 2.0">
<title>GIANT SIZED POSTERS made from YOUR IMAGES!</title>
</head>

<body bgcolor="#FFFFFF">
<div align="center"><center>

<table border="0" cellpadding="0" cellspacing="0" width="100%">
    <tr>
        <td align="center" colspan="2"><div align="center"><center><table
        border="0" cellpadding="5" cellspacing="0">
            <tr>
                <td align="center" colspan="2"><font
                color="#FF0000" size="4" face="Verdana">GIANT
                SIZED POSTERS made from YOUR IMAGES!<br>
                </font><font size="2" face="Verdana">Send us <em>Any</em>
                Picture or Drawing or Artwork - We'll make your
                Poster for $7.00 a square foot</font></td>
            </tr>
            <tr>
                <td align="center"><div align="center"><center><table
                border="2" cellpadding="2" cellspacing="0"
                bgcolor="#FFFFAA" bordercolor="#FF0000">
                    <tr>
                        <td align="center"><font color="#800000"
                        size="5" face="Verdana">22&quot; x
                        28&quot; poster for $30.00<br>
                        </font><font size="4" face="Verdana">Free
                        Shipping for Orders Over $80.00<br>
                        </font><font color="#000080" size="3"
                        face="Verdana"><strong>shipped in 2-3
                        days</strong></font><font size="4"
                        face="Verdana"><strong><br>
                        </strong></font><font size="3"
                        face="Verdana">(rolled in a protective
                        mailing tube)</font><p><font size="3"
                        face="Verdana"><strong>Minimum Order:
                        $30.00<br>
                        Shipping: $5.50</strong></font></p>
                        </td>
                    </tr>
                </table>
                </center></div></td>
                <td align="center"><font size="2" face="Verdana">JUST
                EMAIL YOUR SCANNED IMAGES OR ART AND WE'LL MAIL
                YOUR POSTER IN 2-3 DAYS!</font><p><font size="2"
                face="Verdana">° Family Pictures Can Become
                Attention Getting Wall Art<br>
                ° Large Sized Graphic Exhibits<br>
                ° Upscale Signage<br>
                ° Special Memories<br>
                ° Memorable Humorous Moments</font></p>
                <div align="center"><center><table border="1"
                cellspacing="0" bgcolor="#F4F4F4">
                    <tr>
                        <td align="center" valign="top"><font
                        size="2" face="Verdana">20&quot; x
                        25&quot; - $ 24.50</font></td>
                        <td align="center" valign="top"><font
                        size="2" face="Verdana">24&quot; x
                        30&quot; - $ 35.00</font></td>
                    </tr>
                    <tr>
                        <td align="center" valign="top"><font
                        size="2" face="Verdana">20&quot; x
                        28&quot; - $ 27.50</font></td>
                        <td align="center" valign="top"><font
                        size="2" face="Verdana">29&quot; x
                        32&quot; - $ 45.00</font></td>
                    </tr>
                    <tr>
                        <td align="center" valign="top"><font
                        size="2" face="Verdana">22&quot; x
                        28&quot; - $ 30.00</font></td>
                        <td align="center" valign="top"><font
                        size="2" face="Verdana">54&quot; x
                        96&quot; - $252.00</font></td>
                    </tr>
                </table>
                </center></div></td>
            </tr>
        </table>
        </center></div></td>
    </tr>
    <tr>
        <td align="center" valign="top"><div align="center"><center><table
        border="1" cellpadding="4" cellspacing="0"
        bgcolor="#DCFFB9">
            <tr>
                <td align="center"><font face="Verdana"><strong>DISCOUNTS<br>
                (for min. size of 3 sq. ft.)</strong></font><div
                align="center"><center><table border="0"
                cellpadding="2" cellspacing="0" bgcolor="#FFFF97">
                    <tr>
                        <td align="right"><font size="2"
                        face="Verdana"><strong>5 posters =</strong></font></td>
                        <td><font size="2" face="Verdana"><strong>$6.00
                        per square foot</strong></font></td>
                    </tr>
                    <tr>
                        <td align="right"><font size="2"
                        face="Verdana"><strong>10 posters =</strong></font></td>
                        <td><font size="2" face="Verdana"><strong>$5.50
                        per square foot</strong></font></td>
                    </tr>
                    <tr>
                        <td align="right"><font size="2"
                        face="Verdana"><strong>20 posters up =</strong></font></td>
                        <td><font size="2" face="Verdana"><strong>$5.00
                        per square foot</strong></font></td>
                    </tr>
                </table>
                </center></div></td>
            </tr>
        </table>
        </center></div><p align="center"><font size="3"
        face="Verdana">Convert your favorite:<br>
        </font><font size="2" face="Verdana">*Action Pictures<br>
        *Team Picture<br>
        *Class Picture<br>
        *Any Picture<br>
        </font><font size="3" face="Verdana"><strong>To a GIANT
        POSTER SIZED PRINT!</strong></font></p>
        </td>
        <td valign="bottom"><div align="center"><center><table
        border="0" cellpadding="5" cellspacing="0">
            <tr>
                <td valign="top"><font face="Verdana">FROM THIS<br>
                <img
                src="http://www.geocities.com/a_famous_artist/fromthisA.jpg"
                alt="IF IMAGE FAILS TO LOAD, PLEASE LET US KNOW"
                width="141" height="159"></font></td>
                <td valign="top"><font face="Verdana">TO THIS (or
                BIGGER!)<br>
                <img
                src="http://www.geocities.com/a_famous_artist/fromthisB.jpg"
                alt="IF IMAGE FAILS TO LOAD, PLEASE LET US KNOW"
                width="182" height="234"></font></td>
            </tr>
        </table>
        </center></div></td>
    </tr>
</table>
</center></div><div align="center"><center>

<table border="0" cellpadding="0" cellspacing="0" width="100%"
bgcolor="#FEE9D3">
    <tr>
        <td><blockquote>
            <p align="center"><font size="4" face="Verdana"><strong>WHAT
            TO DO:<br>
            </strong></font><font size="2" face="Verdana">We are
            a family owned business operating in Memphis,
            Tennessee for over 29 years.</font><font size="4"
            face="Verdana"><strong><br>
            </strong>Please contact us via email:<br>
            </font><a href="mailto:CUST0MIMAGE@netscape.net"><font
            size="4" face="Verdana"><strong>CUST0MIMAGE@netscape.net</strong></font></a><font
            size="4" face="Verdana"><strong><br>
            or call Toll Free: 1-877-503-7415<br>
            </strong>to place an order or get additional
            information.</font></p>
            <p align="center"><font face="Verdana"><strong>SIGNATURES</strong></font><br>
            <font size="1" face="Arial">GIANT SIZED POSTERS *
            CORPORATE APPAREL * SIGNS &amp; BANNERS * PROMOTIONAL
            PRODUCTS * TROPHIES &amp; AWARDS</font><font size="1"><br>
            </font><font face="Arial,Helvetica">559 S. Highland
            Street * Memphis, TN 38111</font> <br>
            <font face="Arial,Helvetica">901-327-5456</font></p>
            <p align="center"><font face="Verdana">Toll Free:
            1-877-503-7415</font></p>
            <p align="center"><font size="2" face="Verdana">We
            are a family owned business operating in Memphis,
            Tennessee for over 29 years.</font></p>
        </blockquote>
        </td>
    </tr>
</table>
</center></div>

<p>&nbsp;</p>

<p>&nbsp;</p>

<p><font size="2" face="Verdana">We honor the removal requests
that we receive.<br>
To be removed from future mailings, please email us at: </font><a
href="mailto:DoNotContactUs@excite.com"><font size="2"
face="Verdana">DoNotContactUs@excite.com</font></a><font size="2"
face="Verdana"><b><br>
with the email address you want removed typed </b><em><b>into the
Subject Line</b></em><b> of your email.</b><br>
We apologize for any inconvenience.</font></p>
</body>
</html>

From customprintgoods@netscape.net Tue Apr 29 14:40:19 2003
Return-Path: <customprintgoods@netscape.net>
Received: from hcpsposvdlex1.ad.hicorp.net.br ([200.216.51.38])
	by netlib2.cs.utk.edu (8.12.8/8.12.3) with ESMTP id h3TIeCSP023328
	for <mpi-comm-archive@netlib2.cs.utk.edu>; Tue, 29 Apr 2003 14:40:13 -0400 (EDT)
Received: from smtp0157.mail.yahoo.com ([200.195.204.25]) by hcpsposvdlex1.ad.hicorp.net.br with Microsoft SMTPSVC(5.0.2195.4905);
	 Tue, 29 Apr 2003 13:49:09 -0300
Date: Tue, 29 Apr 2003 16:54:05 GMT
From: customprintgoods@netscape.net
X-Priority: 3
To: mpi-comm-archive@netlib2.cs.utk.edu
Subject: 3' x 8' Banner: $59.00 (Including Delivery) - Full Color Photo Banners - Coroplast Signs
Mime-Version: 1.0
Content-Type: text/html; charset=us-ascii
Content-Transfer-Encoding: base64
Message-ID: <HCPSPOSVDLEX15pXZsZ000124d1@hcpsposvdlex1.ad.hicorp.net.br>
X-OriginalArrivalTime: 29 Apr 2003 16:49:10.0577 (UTC) FILETIME=[41DE9210:01C30E6F]

PGh0bWw+DQoNCjxib2R5IGJnY29sb3I9IiNENUNERkUiPg0KPGRpdiBhbGlnbj0iY2VudGVyIj48
Y2VudGVyPg0KDQo8dGFibGUgYm9yZGVyPSIxIiBjZWxscGFkZGluZz0iOSIgY2VsbHNwYWNpbmc9
IjAiDQpiZ2NvbG9yPSIjMDAwMDgwIj4NCiAgICA8dHI+DQogICAgICAgIDx0ZD48ZGl2IGFsaWdu
PSJjZW50ZXIiPjxjZW50ZXI+PHRhYmxlIGJvcmRlcj0iMCINCiAgICAgICAgY2VsbHBhZGRpbmc9
IjkiIGNlbGxzcGFjaW5nPSIwIiBiZ2NvbG9yPSIjRkZGRkZGIj4NCg0KICAgICAgICAgICAgPHRy
Pg0KICAgICAgICAgICAgICAgIDx0ZCBhbGlnbj0iY2VudGVyIiBiZ2NvbG9yPSIjRkZGRkNDIj48
ZGl2DQogICAgICAgICAgICAgICAgYWxpZ249ImNlbnRlciI+PGNlbnRlcj48dGFibGUgYm9yZGVy
PSIwIg0KICAgICAgICAgICAgICAgIGNlbGxwYWRkaW5nPSIzIiBjZWxsc3BhY2luZz0iMCIgd2lk
dGg9IjgwJSINCiAgICAgICAgICAgICAgICBiZ2NvbG9yPSIjMDAwMDAwIj4NCiAgICAgICAgICAg
ICAgICAgICAgPHRyPg0KICAgICAgICAgICAgICAgICAgICAgICAgPHRkIGFsaWduPSJjZW50ZXIi
Pjx0YWJsZSBib3JkZXI9IjAiDQogICAgICAgICAgICAgICAgICAgICAgICBjZWxscGFkZGluZz0i
MCIgY2VsbHNwYWNpbmc9IjAiDQogICAgICAgICAgICAgICAgICAgICAgICB3aWR0aD0iMTAwJSIg
Ymdjb2xvcj0iI0ZGRkZGRiI+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRyPg0KICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgYWxpZ249ImNlbnRlciI+JiMxNDk7PC90
ZD4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkIGFsaWduPSJjZW50ZXIiPiZu
YnNwOzwvdGQ+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCBhbGlnbj0iY2Vu
dGVyIj4mIzE0OTs8L3RkPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdHI+DQoNCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICA8dHI+DQogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIDx0ZD4mbmJzcDs8L3RkPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8
dGQgYWxpZ249ImNlbnRlciI+PGZvbnQgc2l6ZT0iNSINCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgZmFjZT0iQ29taWMgU2FucyBNUyI+MycgeCA4Jw0KICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBCYW5uZXIgLSAkNTkuMDA8YnI+DQogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIDQgTGluZXMgb2YgVGV4dCAtIFdoaXRlDQogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIEJhY2tncm91bmQ8YnI+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IChDb2xvciBCYWNrZ3JvdW5kICQ2OS4wMCk8YnI+DQogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIDwvZm9udD48Zm9udCBzaXplPSI0Ig0KICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBmYWNlPSJWZXJkYW5hIj48c3Ryb25nPkd1YXJhbnRlZWQNCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgNSBZZWFycyBJbmRvb3JzIG9yIE91dGRvb3JzPC9zdHJvbmc+PC9mb250
PjwvdGQ+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCBhbGlnbj0icmlnaHQi
PiZuYnNwOzwvdGQ+DQoNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RyPg0KICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIDx0cj4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgPHRkIGFsaWduPSJjZW50ZXIiPiYjMTQ5OzwvdGQ+DQogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIDx0ZCBhbGlnbj0iY2VudGVyIj4mbmJzcDs8L3RkPg0KICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICA8dGQgYWxpZ249ImNlbnRlciI+JiMxNDk7PC90ZD4NCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICA8L3RyPg0KICAgICAgICAgICAgICAgICAgICAgICAgPC90YWJs
ZT4NCiAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+DQogICAgICAgICAgICAgICAgICAgIDwv
dHI+DQoNCiAgICAgICAgICAgICAgICA8L3RhYmxlPg0KICAgICAgICAgICAgICAgIDwvY2VudGVy
PjwvZGl2PjxwIGFsaWduPSJjZW50ZXIiPjxmb250IHNpemU9IjQiDQogICAgICAgICAgICAgICAg
ZmFjZT0iVmVyZGFuYSI+U2hpcHBpbmcgKDItNSBkYXlzKSB0byB5b3VyIGZyb250DQogICAgICAg
ICAgICAgICAgZG9vciBpcyBpbmNsdWRlZCBpbiB0aGlzIHByaWNlITwvZm9udD48L3A+DQogICAg
ICAgICAgICAgICAgPGRpdiBhbGlnbj0iY2VudGVyIj48Y2VudGVyPjx0YWJsZSBib3JkZXI9IjEi
DQogICAgICAgICAgICAgICAgY2VsbHBhZGRpbmc9IjIiIGNlbGxzcGFjaW5nPSIwIiBiZ2NvbG9y
PSIjRkZGRkZGIj4NCiAgICAgICAgICAgICAgICAgICAgPHRyPg0KICAgICAgICAgICAgICAgICAg
ICAgICAgPHRkIGFsaWduPSJjZW50ZXIiPjxmb250IGNvbG9yPSIjRkYwMDAwIg0KICAgICAgICAg
ICAgICAgICAgICAgICAgc2l6ZT0iNSIgZmFjZT0iVmVyZGFuYSI+PHN0cm9uZz4zJyB4IDgnDQog
ICAgICAgICAgICAgICAgICAgICAgICBGVUxMIENPTE9SPC9zdHJvbmc+PC9mb250Pjxmb250IHNp
emU9IjQiDQogICAgICAgICAgICAgICAgICAgICAgICBmYWNlPSJWZXJkYW5hIj48YnI+DQogICAg
ICAgICAgICAgICAgICAgICAgICA8L2ZvbnQ+PGZvbnQgc2l6ZT0iNSIgZmFjZT0iVmVyZGFuYSI+
PHN0cm9uZz5QSE9UT0dSQVBISUMNCiAgICAgICAgICAgICAgICAgICAgICAgIEJBTk5FUiAtICQy
MTYuMDA8L3N0cm9uZz48L2ZvbnQ+PGZvbnQNCiAgICAgICAgICAgICAgICAgICAgICAgIGNvbG9y
PSIjRkYwMDAwIiBzaXplPSI2IiBmYWNlPSJWZXJkYW5hIj48c3Ryb25nPjxicj4NCiAgICAgICAg
ICAgICAgICAgICAgICAgIDwvc3Ryb25nPjwvZm9udD48Zm9udCBjb2xvcj0iI0ZGMDAwMCINCiAg
ICAgICAgICAgICAgICAgICAgICAgIHNpemU9IjQiIGZhY2U9IlZlcmRhbmEiPldlIGNhbiBwcmlu
dCBhbnkNCiAgICAgICAgICAgICAgICAgICAgICAgIGltYWdlLCBwaG90bywgZHJhd2luZyw8YnI+
DQoNCiAgICAgICAgICAgICAgICAgICAgICAgIG9yIGxvZ28gb250byBoaWdoIHF1YWxpdHkgYmFu
bmVyDQogICAgICAgICAgICAgICAgICAgICAgICBtYXRlcmlhbC48YnI+DQogICAgICAgICAgICAg
ICAgICAgICAgICBGVUxMIFBIT1RPIG9yIEZVTEwgUEhPVE8gJmFtcDsgVEVYVDxicj4NCiAgICAg
ICAgICAgICAgICAgICAgICAgIDwvZm9udD48Zm9udCBzaXplPSI0IiBmYWNlPSJWZXJkYW5hIj5H
dWFyYW50ZWVkDQogICAgICAgICAgICAgICAgICAgICAgICA1IFllYXJzIEluZG9vcnMgb3IgNiBN
b250aHMgT3V0ZG9vcnM8L2ZvbnQ+PC90ZD4NCiAgICAgICAgICAgICAgICAgICAgPC90cj4NCiAg
ICAgICAgICAgICAgICA8L3RhYmxlPg0KICAgICAgICAgICAgICAgIDwvY2VudGVyPjwvZGl2Pjxw
IGFsaWduPSJjZW50ZXIiPjxmb250IHNpemU9IjMiDQogICAgICAgICAgICAgICAgZmFjZT0iVmVy
ZGFuYSI+PT09PT09PT09PT09PT09PT09PT09PT09PT09PC9mb250PjwvcD4NCg0KICAgICAgICAg
ICAgICAgIDxkaXYgYWxpZ249ImNlbnRlciI+PGNlbnRlcj48dGFibGUgYm9yZGVyPSIxIg0KICAg
ICAgICAgICAgICAgIGNlbGxwYWRkaW5nPSIxMCIgY2VsbHNwYWNpbmc9IjAiPg0KICAgICAgICAg
ICAgICAgICAgICA8dHI+DQogICAgICAgICAgICAgICAgICAgICAgICA8dGQgYWxpZ249ImNlbnRl
ciIgYmdjb2xvcj0iI0ZGRkZGRiI+PGZvbnQNCiAgICAgICAgICAgICAgICAgICAgICAgIHNpemU9
IjUiIGZhY2U9IlZlcmRhbmEiPkNvcm9wbGFzdCBTaWduczxicj4NCiAgICAgICAgICAgICAgICAg
ICAgICAgIDE4JnF1b3Q7IHggMjQmcXVvdDs8YnI+DQogICAgICAgICAgICAgICAgICAgICAgICA8
ZW0+ZnJvbTxicj4NCiAgICAgICAgICAgICAgICAgICAgICAgICQ0Ljc1IGVhY2ghPC9lbT48L2Zv
bnQ+PC90ZD4NCg0KICAgICAgICAgICAgICAgICAgICA8L3RyPg0KICAgICAgICAgICAgICAgIDwv
dGFibGU+DQogICAgICAgICAgICAgICAgPC9jZW50ZXI+PC9kaXY+PHAgYWxpZ249ImNlbnRlciI+
PGZvbnQgc2l6ZT0iNCINCiAgICAgICAgICAgICAgICBmYWNlPSJWZXJkYW5hIj5UbyBwbGFjZSBh
biBvcmRlciBvciBnZXQNCiAgICAgICAgICAgICAgICBhZGRpdGlvbmFsIGluZm9ybWF0aW9uLCBw
bGVhc2UgY29udGFjdCB1czo8L2ZvbnQ+PGZvbnQNCiAgICAgICAgICAgICAgICBmYWNlPSJUaW1l
cyBOZXcgUm9tYW4iPjxicj4NCiAgICAgICAgICAgICAgICA8L2ZvbnQ+PGENCiAgICAgICAgICAg
ICAgICBocmVmPSJtYWlsdG86UGVyc29uYWxpemVkQ29sb3JzQGV4Y2l0ZS5jb20iPjxmb250DQog
ICAgICAgICAgICAgICAgc2l6ZT0iNiIgZmFjZT0iVmVyZGFuYSI+PHN0cm9uZz5QZXJzb25hbGl6
ZWRDb2xvcnNAZXhjaXRlLmNvbTwvc3Ryb25nPjwvZm9udD48L2E+PGZvbnQNCiAgICAgICAgICAg
ICAgICBzaXplPSI2IiBmYWNlPSJWZXJkYW5hIj48c3Ryb25nPjxicj4NCiAgICAgICAgICAgICAg
ICA8L3N0cm9uZz48L2ZvbnQ+PGZvbnQgc2l6ZT0iMyIgZmFjZT0iVmVyZGFuYSI+PHN0cm9uZz5P
Ug0KICAgICAgICAgICAgICAgIENBTEwgVVMgVE9MTCBGUkVFPGJyPg0KICAgICAgICAgICAgICAg
IDwvc3Ryb25nPjwvZm9udD48Zm9udCBzaXplPSI2IiBmYWNlPSJWZXJkYW5hIj4xLTg3Ny01MDMt
NzQxNTwvZm9udD48L3A+DQogICAgICAgICAgICAgICAgPHAgYWxpZ249ImNlbnRlciI+PGZvbnQg
ZmFjZT0iQXJpYWwiPldlIGFyZSBhDQogICAgICAgICAgICAgICAgZmFtaWx5IG93bmVkIGJ1c2lu
ZXNzLCBvcGVyYXRpbmcgaW4gTWVtcGhpcywNCiAgICAgICAgICAgICAgICBUZW5uZXNzZWUgZm9y
IG92ZXIgMjkgeWVhcnMuPC9mb250PjwvcD4NCg0KICAgICAgICAgICAgICAgIDxwIGFsaWduPSJj
ZW50ZXIiPjxmb250IGZhY2U9IlZlcmRhbmEiPjxzdHJvbmc+U0lHTkFUVVJFUzwvc3Ryb25nPjwv
Zm9udD48YnI+DQogICAgICAgICAgICAgICAgPGZvbnQgc2l6ZT0iMSIgZmFjZT0iQXJpYWwiPkdJ
QU5UIFBPU1RFUlMgKg0KICAgICAgICAgICAgICAgIENPUlBPUkFURSBBUFBBUkVMICogU0lHTlMg
JmFtcDsgQkFOTkVSUyAqDQogICAgICAgICAgICAgICAgUFJPTU9USU9OQUwgUFJPRFVDVFMgKiBU
Uk9QSElFUyAmYW1wOyBBV0FSRFM8L2ZvbnQ+PGJyPg0KICAgICAgICAgICAgICAgIDxmb250IGZh
Y2U9IkFyaWFsLEhlbHZldGljYSI+NTU5IFMuIEhpZ2hsYW5kDQogICAgICAgICAgICAgICAgU3Ry
ZWV0ICogTWVtcGhpcywgVE4gMzgxMTE8L2ZvbnQ+IDxicj4NCiAgICAgICAgICAgICAgICA8Zm9u
dCBmYWNlPSJBcmlhbCxIZWx2ZXRpY2EiPjkwMS0zMjctNTQ1NjwvZm9udD48L3A+DQoNCiAgICAg
ICAgICAgICAgICA8cCBhbGlnbj0ibGVmdCI+PGZvbnQgc2l6ZT0iMiIgZmFjZT0iVmVyZGFuYSI+
V2UNCiAgICAgICAgICAgICAgICBob25vciB0aGUgcmVtb3ZhbCByZXF1ZXN0cyB0aGF0IHdlIHJl
Y2VpdmUuPGJyPg0KICAgICAgICAgICAgICAgIFRvIGJlIHJlbW92ZWQgZnJvbSBmdXR1cmUgbWFp
bGluZ3MsIHBsZWFzZSBlbWFpbA0KICAgICAgICAgICAgICAgIHVzIGF0IDwvZm9udD48YSBocmVm
PSJtYWlsdG86TjBUSEFOS1NAZXhjaXRlLmNvbSI+PGZvbnQNCiAgICAgICAgICAgICAgICBzaXpl
PSIyIiBmYWNlPSJWZXJkYW5hIj5OMFRIQU5LU0BleGNpdGUuY29tPC9mb250PjwvYT48Zm9udA0K
ICAgICAgICAgICAgICAgIHNpemU9IjIiIGZhY2U9IlZlcmRhbmEiPjxiPiB3aXRoIHRoZSBlbWFp
bEBkZHJlc3MNCiAgICAgICAgICAgICAgICB5b3Ugd2FudCByZW1vdmVkIHR5cGVkIDwvYj48ZW0+
PGI+aW50byB0aGUNCiAgICAgICAgICAgICAgICBTdWJqZWN0IExpbmU8L2I+PC9lbT48Yj4gb2Yg
eW91ciBlbWFpbC48L2I+PGJyPg0KICAgICAgICAgICAgICAgIFdlIGFwb2xvZ2l6ZSBmb3IgYW55
IGluY29udmVuaWVuY2UuPC9mb250PjwvcD4NCiAgICAgICAgICAgICAgICA8L3RkPg0KDQogICAg
ICAgICAgICA8L3RyPg0KICAgICAgICA8L3RhYmxlPg0KICAgICAgICA8L2NlbnRlcj48L2Rpdj48
L3RkPg0KICAgIDwvdHI+DQo8L3RhYmxlPg0KPC9jZW50ZXI+PC9kaXY+DQo8L2JvZHk+DQo8L2h0
bWw+

From CustomPrintGoods@netscape.net Fri May 23 13:27:47 2003
Return-Path: <CustomPrintGoods@netscape.net>
Received: from netscape.net (pc1-stap4-4-cust58.nott.cable.ntl.com [81.108.75.58])
	by netlib2.cs.utk.edu (8.12.8/8.12.3) with SMTP id h4NHRgSP016849
	for <mpi-comm-archive@netlib2.cs.utk.edu>; Fri, 23 May 2003 13:27:44 -0400 (EDT)
Message-ID: <b51501c32148$90c7f010$3fb41d15@ybiabtjbmeuqt>
Reply-To: <CustomPrintGoods@netscape.net>
From: <CustomPrintGoods@netscape.net>
To: Wearables.Customers
Subject: Custom Embroidered Golf Shirts:$11.95 / Denim Shirts:$13.95 / Ball Caps / Corporate Casual Shirts
Date: Fri, 23 May 2003 18:30:04 +0200
MIME-Version: 1.0
Content-Type: multipart/alternative;
	boundary="----=_NextPart_56D_CE72_971246D4.15824F80"
X-Priority: 3
User-Agent: AOL 8.0 for Windows US sub 230


------=_NextPart_56D_CE72_971246D4.15824F80
Content-Type: text/plain;
	charset="iso-8859-1"
Content-Transfer-Encoding: quoted-printable


------=_NextPart_56D_CE72_971246D4.15824F80
Content-Type: text/html;
	charset="iso-8859-1"
Content-Transfer-Encoding: quoted-printable

<html>
<body bgcolor=3D=22=23FFFFFF=22>
<div align=3D=22center=22><center>

<table border=3D=220=22 cellpadding=3D=225=22 cellspacing=3D=220=22
bgcolor=3D=22=23A9D526=22>
    <tr>
        <td><div align=3D=22center=22><center><table border=3D=220=22
        cellpadding=3D=225=22 cellspacing=3D=220=22 bgcolor=3D=22=23FFF=
FFF=22>
            <tr>
                <td align=3D=22center=22><p align=3D=22center=22><font
                face=3D=22Verdana=22><b>EMBROIDERED<br>
                Golf Shirts - Corporate Casual Shirts - Denim
                Shirts - Caps<br>
                </b>** PRICING INCLUDES EMBROIDERY **<br>
                Contact us for pictures and complete description
                of items</font></p>
                <div align=3D=22center=22><center><table border=3D=220=22=

                cellpadding=3D=220=22 cellspacing=3D=220=22>
                    <tr>
                        <td align=3D=22center=22 valign=3D=22top=22
                        width=3D=2250%=22><img
                        src=3D=22http://www.geocities.com/cuzbak/stedma=
n.jpg=22
                        alt=3D=22if image doesn't load, please try REFR=
ESH=22
                        width=3D=22110=22 height=3D=22175=22></td>
                        <td align=3D=22center=22 valign=3D=22top=22
                        width=3D=2250%=22><img
                        src=3D=22http://www.geocities.com/euzbak/denim.=
jpg=22
                        alt=3D=22if image doesn't load, please try REFR=
ESH=22
                        width=3D=22129=22 height=3D=22175=22></td>
                    </tr>
                    <tr>
                        <td align=3D=22center=22 valign=3D=22top=22><fo=
nt
                        face=3D=22Verdana=22><b>Stedman Golf Shirt</b><=
br>
                        </font><font color=3D=22=23FF0000=22
                        face=3D=22Verdana=22><b>=2411.95<br>
                        </b></font><font color=3D=22=23E7F0FA=22 size=3D=
=222=22
                        face=3D=22Verdana=22><b>&=23149;</b></font><fon=
t
                        size=3D=222=22 face=3D=22Verdana=22><b>7 oz. Pi=
que
                        Knit<br>
                        </b></font><font color=3D=22=23E7F0FA=22 size=3D=
=222=22
                        face=3D=22Verdana=22><b>&=23149;</b></font><fon=
t
                        size=3D=222=22 face=3D=22Verdana=22><b>Choice o=
f 16
                        Colors<br>
                        </b></font><font color=3D=22=23E7F0FA=22 size=3D=
=222=22
                        face=3D=22Verdana=22><b>&=23149;</b></font><fon=
t
                        size=3D=222=22 face=3D=22Verdana=22><b>Min. Ord=
er 24
                        Shirts<br>
                        </b></font><font color=3D=22=23E7F0FA=22 size=3D=
=222=22
                        face=3D=22Verdana=22><b>&=23149;</b></font><fon=
t
                        size=3D=222=22 face=3D=22Verdana=22><b>Price in=
cludes
                        Embroidered Text</b></font></td>
                        <td align=3D=22center=22 valign=3D=22top=22><fo=
nt
                        face=3D=22Verdana=22><b>Jerzees Denim Shirt<br>=

                        </b></font><font color=3D=22=23FF0000=22
                        face=3D=22Verdana=22><b>=2413.95<br>
                        </b></font><font color=3D=22=23E7F0FA=22 size=3D=
=222=22
                        face=3D=22Verdana=22><b>&=23149;</b></font><fon=
t
                        size=3D=222=22 face=3D=22Verdana=22><b>5.6 oz. =
denim<br>
                        </b></font><font color=3D=22=23E7F0FA=22 size=3D=
=222=22
                        face=3D=22Verdana=22><b>&=23149;</b></font><fon=
t
                        size=3D=222=22 face=3D=22Verdana=22><b>Min. Ord=
er 24
                        Shirts<br>
                        </b></font><font color=3D=22=23E7F0FA=22 size=3D=
=222=22
                        face=3D=22Verdana=22><b>&=23149;</b></font><fon=
t
                        size=3D=222=22 face=3D=22Verdana=22><b>Price in=
cludes
                        Embroidered Text</b></font></td>
                    </tr>
                </table>
                </center></div><p><font face=3D=22Verdana=22><b>SHIRTS
                ABOVE MAY BE COMBINED FOR 24 MINIMUM<br>
                </b>* * * * All Pricing Includes Embroidery * * *
                *</font><font color=3D=22=230000FF=22 face=3D=22Verdana=
=22><b><br>
                </b></font><font color=3D=22=23FFFF00=22 face=3D=22Verd=
ana=22>_____________________<br>
                </font><font face=3D=22Verdana=22><br>
                </font><font color=3D=22=230000FF=22 face=3D=22Verdana=22=
><b>Cutter
                &amp; Buck Golf Shirts.........Min.
                36&nbsp;&nbsp; =2429.95</b></font><font
                color=3D=22=23FF0000=22 face=3D=22Verdana=22><b><br>
                </b></font><font color=3D=22=23FFFF00=22 face=3D=22Verd=
ana=22>_____________________<br>
                </font><font face=3D=22Verdana=22><br>
                </font><font color=3D=22=23FF0000=22 face=3D=22Verdana=22=
><b>Low
                Profile Caps..............=245.95 Min. 36</b></font><fo=
nt
                color=3D=22=237D9D1C=22 face=3D=22Verdana=22><b><br>
                </b></font><font color=3D=22=23FFFF00=22 face=3D=22Verd=
ana=22>_____________________<br>
                </font><font face=3D=22Verdana=22><br>
                </font><font color=3D=22=237D9D1C=22 face=3D=22Verdana=22=
><b>Corporate
                Casual Shirts by Port Authority =2421.00</b><br>
                </font><font color=3D=22=23E7F0FA=22 face=3D=22Verdana=22=
><b>&=23149;</b></font><font
                color=3D=22=237D9D1C=22 face=3D=22Verdana=22><b>Long Sl=
eeve
                100% Cotton<br>
                </b></font><font color=3D=22=23E7F0FA=22 face=3D=22Verd=
ana=22><b>&=23149;</b></font><font
                color=3D=22=237D9D1C=22 face=3D=22Verdana=22><b>4.5 oz.=
 Button
                Down<br>
                </b></font><font color=3D=22=23E7F0FA=22 face=3D=22Verd=
ana=22><b>&=23149;</b></font><font
                color=3D=22=237D9D1C=22 face=3D=22Verdana=22><b>Peached=
 Twill
                Material<br>
                </b></font><font color=3D=22=23E7F0FA=22 face=3D=22Verd=
ana=22><b>&=23149;</b></font><font
                color=3D=22=237D9D1C=22 face=3D=22Verdana=22><b>Min. 24=
 Shirts</b></font></p>
                <p align=3D=22center=22><font face=3D=22Verdana=22>* LO=
GO
                DIGITIZING IS APPROX =2455.00 *<br>
                * BUT MUST BE QUOTED - ONE TIME CHARGE *</font></p>
                </td>
            </tr>
        </table>
        </center></div></td>
    </tr>
</table>
</center></div>

<p align=3D=22center=22><font size=3D=224=22 face=3D=22Verdana=22>Pleas=
e contact us
via email:<br>
</font><a href=3D=22mailto:Printed4U=40excite.com=22><font size=3D=225=22=

face=3D=22Verdana=22><strong>Printed4U=40excite.com</strong></font></a>=
</p>

<p align=3D=22center=22><font size=3D=224=22 face=3D=22Verdana=22><stro=
ng>or call
Toll Free: 1-877-503-7415<br>
</strong>to place an order or get additional information.</font></p>

<p align=3D=22center=22><font face=3D=22Verdana=22><strong>SIGNATURES</=
strong></font><br>
<font size=3D=221=22 face=3D=22Arial=22>GIANT SIZED POSTERS * CORPORATE=

APPAREL * SIGNS &amp; BANNERS * PROMOTIONAL PRODUCTS * TROPHIES
&amp; AWARDS</font><font size=3D=221=22><br>
</font><font face=3D=22Arial,Helvetica=22>559 S. Highland Street *
Memphis, TN 38111</font><br>
<font face=3D=22Arial,Helvetica=22>901-327-5456</font></p>

<p align=3D=22center=22><font face=3D=22Verdana=22>Toll Free: 1-877-503=
-7415</font></p>

<p align=3D=22center=22><font size=3D=222=22 face=3D=22Verdana=22>We ar=
e a family
owned business operating in Memphis, Tennessee for over 29 years.</font=
></p>

<p align=3D=22center=22>&nbsp;</p>

<p align=3D=22center=22>&nbsp;</p>

<p><font size=3D=222=22 face=3D=22Verdana=22>We honor the removal reque=
sts
that we receive.<br>
To be removed from future mailings, please email us at </font><a
href=3D=22mailto:N0Thanks=40excite.com=22><font size=3D=222=22 face=3D=22=
Verdana=22>N0Thanks=40excite.com</font></a><font
size=3D=222=22 face=3D=22Verdana=22> with the <b>email=40ddress</b> you=
 want
removed <i><u>in the </u></i><b><i><u>Subject Line</u></i></b> of
your email.<br>
We apologize for any inconvenience.</font></p>
</body>
</html>


------=_NextPart_56D_CE72_971246D4.15824F80--


From CustomPrintGoods@netscape.net Fri Jun  6 19:04:12 2003
Return-Path: <CustomPrintGoods@netscape.net>
Received: from netscape.net (dsl-200-67-145-144.prodigy.net.mx [200.67.145.144])
	by netlib2.cs.utk.edu (8.12.8/8.12.3) with SMTP id h56N47SP017404
	for <mpi-comm-archive@netlib2.cs.utk.edu>; Fri, 6 Jun 2003 19:04:09 -0400 (EDT)
Received: from [57.130.173.142] by m1.gns.snv.thisdomainl.com with local; 07 Jun 2003 02:59:58 +0600
Received: from unknown (70.43.160.79)
	by group21.345mail.com with SMTP; 07 Jun 2003 08:52:33 +1100
Received: from unknown (HELO mtu23.bigping.com) (176.200.43.136)
	by smtp.endend.nl with asmtp; Sat, 07 Jun 2003 19:45:08 -1100
Received: from relay.2yahoo.com ([111.45.232.198])
	by rsmail.alkoholic.net with SMTP; 07 Jun 2003 08:37:43 -1000
Message-ID: <723001c32c6f$e3fc4a60$18466aa4@feotnkqm>
Reply-To: <CustomPrintGoods@netscape.net>
From: <CustomPrintGoods@netscape.net>
To: email@email
Subject: Giant Posters from YOUR Pictures: Just $7.00 a square foot
Date: Sat, 07 Jun 2003 01:09:17 +0400
MIME-Version: 1.0
Content-Type: multipart/alternative;
	boundary="----=_NextPart_1E5_033D_ACE83D84.B177C78C"
X-Priority: 3
User-Agent: AOL 8.0 for Windows US sub 230


------=_NextPart_1E5_033D_ACE83D84.B177C78C
Content-Type: text/plain;
	charset="iso-8859-1"
Content-Transfer-Encoding: quoted-printable


------=_NextPart_1E5_033D_ACE83D84.B177C78C
Content-Type: text/html;
	charset="iso-8859-1"
Content-Transfer-Encoding: quoted-printable

<html>

<body bgcolor=3D=22=23FFFFFF=22>
<div align=3D=22center=22><center>

<table border=3D=220=22 cellpadding=3D=220=22 cellspacing=3D=220=22 wid=
th=3D=22100%=22>
    <tr>
        <td align=3D=22center=22 colspan=3D=222=22><div align=3D=22cent=
er=22><center><table
        border=3D=220=22 cellpadding=3D=225=22 cellspacing=3D=220=22>
            <tr>
                <td align=3D=22center=22 colspan=3D=222=22><font
                color=3D=22=23FF0000=22 size=3D=224=22 face=3D=22Verdan=
a=22>GIANT
                SIZED POSTERS made from YOUR IMAGES=21<br>
                </font><font size=3D=222=22 face=3D=22Verdana=22>Send u=
s <em>Any</em>
                Picture or Drawing or Artwork - We'll make your
                Poster for =247.00 a square foot</font></td>
            </tr>
            <tr>
                <td align=3D=22center=22><div align=3D=22center=22><cen=
ter><table
                border=3D=222=22 cellpadding=3D=222=22 cellspacing=3D=22=
0=22
                bgcolor=3D=22=23FFFFAA=22 bordercolor=3D=22=23FF0000=22=
>
                    <tr>
                        <td align=3D=22center=22><font color=3D=22=2380=
0000=22
                        size=3D=225=22 face=3D=22Verdana=22>22&quot; x
                        28&quot; poster for =2430.00<br>
                        </font><font size=3D=224=22 face=3D=22Verdana=22=
>Free
                        Shipping for Orders Over =2480.00<br>
                        </font><font color=3D=22=23000080=22 size=3D=22=
3=22
                        face=3D=22Verdana=22><strong>shipped in 2-5
                        days</strong></font><font size=3D=224=22
                        face=3D=22Verdana=22><strong><br>
                        </strong></font><font size=3D=223=22
                        face=3D=22Verdana=22>(rolled in a protective
                        mailing tube)</font><p><font size=3D=223=22
                        face=3D=22Verdana=22><strong>Minimum Order:
                        =2430.00<br>
                        Shipping: =245.50</strong></font></p>
                        </td>
                    </tr>
                </table>
                </center></div></td>
                <td align=3D=22center=22><font size=3D=222=22 face=3D=22=
Verdana=22>JUST
                EMAIL YOUR SCANNED IMAGES OR ART AND WE'LL MAIL
                YOUR POSTER IN 2-5 DAYS=21</font><p><font size=3D=222=22=

                face=3D=22Verdana=22>=B0 Family Pictures Can Become
                Attention Getting Wall Art<br>
                =B0 Large Sized Graphic Exhibits<br>
                =B0 Upscale Signage<br>
                =B0 Special Memories<br>
                =B0 Memorable Humorous Moments</font></p>
                <div align=3D=22center=22><center><table border=3D=221=22=

                cellspacing=3D=220=22 bgcolor=3D=22=23F4F4F4=22>
                    <tr>
                        <td align=3D=22center=22 valign=3D=22top=22><fo=
nt
                        size=3D=222=22 face=3D=22Verdana=22>20&quot; x
                        25&quot; - =24 24.50</font></td>
                        <td align=3D=22center=22 valign=3D=22top=22><fo=
nt
                        size=3D=222=22 face=3D=22Verdana=22>24&quot; x
                        30&quot; - =24 35.00</font></td>
                    </tr>
                    <tr>
                        <td align=3D=22center=22 valign=3D=22top=22><fo=
nt
                        size=3D=222=22 face=3D=22Verdana=22>20&quot; x
                        28&quot; - =24 27.50</font></td>
                        <td align=3D=22center=22 valign=3D=22top=22><fo=
nt
                        size=3D=222=22 face=3D=22Verdana=22>29&quot; x
                        32&quot; - =24 45.00</font></td>
                    </tr>
                    <tr>
                        <td align=3D=22center=22 valign=3D=22top=22><fo=
nt
                        size=3D=222=22 face=3D=22Verdana=22>22&quot; x
                        28&quot; - =24 30.00</font></td>
                        <td align=3D=22center=22 valign=3D=22top=22><fo=
nt
                        size=3D=222=22 face=3D=22Verdana=22>54&quot; x
                        96&quot; - =24252.00</font></td>
                    </tr>
                </table>
                </center></div></td>
            </tr>
        </table>
        </center></div></td>
    </tr>
    <tr>
        <td align=3D=22center=22 valign=3D=22top=22><div align=3D=22cen=
ter=22><center><table
        border=3D=221=22 cellpadding=3D=224=22 cellspacing=3D=220=22
        bgcolor=3D=22=23DCFFB9=22>
            <tr>
                <td align=3D=22center=22><font face=3D=22Verdana=22><st=
rong>DISCOUNTS<br>
                (for min. size of 3 sq. ft.)</strong></font><div
                align=3D=22center=22><center><table border=3D=220=22
                cellpadding=3D=222=22 cellspacing=3D=220=22 bgcolor=3D=22=
=23FFFF97=22>
                    <tr>
                        <td align=3D=22right=22><font size=3D=222=22
                        face=3D=22Verdana=22><strong>5 posters =3D</str=
ong></font></td>
                        <td><font size=3D=222=22 face=3D=22Verdana=22><=
strong>=246.00
                        per square foot</strong></font></td>
                    </tr>
                    <tr>
                        <td align=3D=22right=22><font size=3D=222=22
                        face=3D=22Verdana=22><strong>10 posters =3D</st=
rong></font></td>
                        <td><font size=3D=222=22 face=3D=22Verdana=22><=
strong>=245.50
                        per square foot</strong></font></td>
                    </tr>
                    <tr>
                        <td align=3D=22right=22><font size=3D=222=22
                        face=3D=22Verdana=22><strong>20 posters up =3D<=
/strong></font></td>
                        <td><font size=3D=222=22 face=3D=22Verdana=22><=
strong>=245.00
                        per square foot</strong></font></td>
                    </tr>
                </table>
                </center></div></td>
            </tr>
        </table>
        </center></div><p align=3D=22center=22><font size=3D=223=22
        face=3D=22Verdana=22>Convert your favorite:<br>
        </font><font size=3D=222=22 face=3D=22Verdana=22>*Action Pictur=
es<br>
        *Team Picture<br>
        *Class Picture<br>
        *Any Picture<br>
        </font><font size=3D=223=22 face=3D=22Verdana=22><strong>To a G=
IANT
        POSTER SIZED PRINT=21</strong></font></p>
        </td>
        <td valign=3D=22bottom=22><div align=3D=22center=22><center><ta=
ble
        border=3D=220=22 cellpadding=3D=225=22 cellspacing=3D=220=22>
            <tr>
                <td valign=3D=22top=22><font face=3D=22Verdana=22>FROM =
THIS<br>
                <img
                src=3D=22http://www.geocities.com/euzbak/poster1.jpg=22=

                alt=3D=22IF IMAGE FAILS TO LOAD, PLEASE LET US KNOW=22
                width=3D=22141=22 height=3D=22159=22></font></td>
                <td valign=3D=22top=22><font face=3D=22Verdana=22>TO TH=
IS (or
                BIGGER=21)<br>
                <img
                src=3D=22http://www.geocities.com/cuzbak/poster2.jpg=22=

                alt=3D=22IF IMAGE FAILS TO LOAD, PLEASE LET US KNOW=22
                width=3D=22182=22 height=3D=22234=22></font></td>
            </tr>
        </table>
        </center></div></td>
    </tr>
</table>
</center></div><div align=3D=22center=22><center>

<table border=3D=220=22 cellpadding=3D=220=22 cellspacing=3D=220=22 wid=
th=3D=22100%=22
bgcolor=3D=22=23FEE9D3=22>
    <tr>
        <td><blockquote>
            <p align=3D=22center=22><font size=3D=224=22 face=3D=22Verd=
ana=22><strong>WHAT
            TO DO:<br>
            </strong></font><font size=3D=222=22 face=3D=22Verdana=22>W=
e are
            a family owned business operating in Memphis,
            Tennessee for over 29 years.</font><font size=3D=224=22
            face=3D=22Verdana=22><strong><br>
            </strong>Please contact us via email:<br>
            </font><a href=3D=22mailto:Printed4U=40excite.com=22><font
            size=3D=225=22 face=3D=22Verdana=22><strong>Printed4U=40exc=
ite.com</strong></font></a></p>
            <p align=3D=22center=22><font size=3D=224=22 face=3D=22Verd=
ana=22><strong>or
            call Toll Free: 1-877-503-7415<br>
            </strong>to place an order or get additional
            information.</font></p>
            <p align=3D=22center=22><font face=3D=22Verdana=22><strong>=
SIGNATURES</strong></font><br>
            <font size=3D=221=22 face=3D=22Arial=22>GIANT SIZED POSTERS=
 *
            CORPORATE APPAREL * SIGNS &amp; BANNERS * PROMOTIONAL
            PRODUCTS * TROPHIES &amp; AWARDS</font><font size=3D=221=22=
><br>
            </font><font face=3D=22Arial,Helvetica=22>559 S. Highland
            Street * Memphis, TN 38111</font> <br>
            <font face=3D=22Arial,Helvetica=22>901-327-5456</font></p>
            <p align=3D=22center=22><font face=3D=22Verdana=22>Toll Fre=
e:
            1-877-503-7415</font></p>
            <p align=3D=22center=22><font size=3D=222=22 face=3D=22Verd=
ana=22>We
            are a family owned business operating in Memphis,
            Tennessee for over 29 years.</font></p>
        </blockquote>
        </td>
    </tr>
</table>
</center></div>

<p>&nbsp;</p>

<p>&nbsp;</p>

<p><font size=3D=222=22 face=3D=22Verdana=22>We honor the removal reque=
sts
that we receive.<br>
To be removed from future mailings, please email us at: </font><a
href=3D=22mailto:N0THANKS=40excite.com=22><font size=3D=222=22 face=3D=22=
Verdana=22><strong>N0THANKS=40excite.com</strong></font></a><font
size=3D=222=22 face=3D=22Verdana=22><strong> with the email address you=
 want
removed </strong><em><strong>in the </strong></em><em><strong><u>Subjec=
t
Line</u></strong></em><em><strong> of your email</strong></em><strong>.=
</strong>
Our system checks the subject line for email addresses and will
remove those addresses from our database.<br>
We apologize for any inconvenience.</font></p>
</body>
</html>

------=_NextPart_1E5_033D_ACE83D84.B177C78C--


From CustomPrintGoods@netscape.net Wed Jun 11 16:00:17 2003
Return-Path: <CustomPrintGoods@netscape.net>
Received: from netscape.net (58.Red-80-36-75.pooles.rima-tde.net [80.36.75.58])
	by netlib2.cs.utk.edu (8.12.8/8.12.3) with SMTP id h5BJxvSP006150
	for <mpi-comm-archive@netlib2.cs.utk.edu>; Wed, 11 Jun 2003 16:00:08 -0400 (EDT)
Received: from [142.239.112.41] by mail.naihautsui.co.kr with esmtp; 10 Jun 2003 23:59:43 +0900
Received: from 142.91.161.245 ([142.91.161.245]) by qrx.quickslick.com with SMTP; 11 Jun 2003 08:56:18 -1000
Received: from [168.239.117.227] by relay-x.misswldrs.com with asmtp; 10 Jun 2003 22:52:53 +0900
Received: from 151.113.236.159 ([151.113.236.159]) by m1.gns.snv.thisdomainl.com with esmtp; 11 Jun 2003 07:49:28 +1000
Received: from unknown (90.197.173.144)
	by smtp.mixedthings.net with local; Wed, 11 Jun 2003 17:46:03 +0200
Message-ID: <c9c601c33050$e2bf7160$8d8a5853@ofxnveuutmjebu>
Reply-To: <CustomPrintGoods@netscape.net>
From: <CustomPrintGoods@netscape.net>
To: RECIPIENTS
Subject: 3' x 8' Banner:$59.00 - includes delivery / Full Color Photo Banners / Coroplast Signs
Date: Wed, 11 Jun 2003 16:37:25 -0300
MIME-Version: 1.0
Content-Type: multipart/alternative;
	boundary="----=_NextPart_5A6_9F93_BEB67C41.12F248B6"
X-Priority: 3
X-MSMail-Priority: Normal
X-Mailer: Microsoft Outlook, Build 10.0.4510
X-MimeOLE: Produced By Microsoft MimeOLE V10.0.4510

This is a multi-part message in MIME format.

------=_NextPart_5A6_9F93_BEB67C41.12F248B6
Content-Type: text/plain;
	charset="iso-8859-1"
Content-Transfer-Encoding: quoted-printable


------=_NextPart_5A6_9F93_BEB67C41.12F248B6
Content-Type: text/html;
	charset="iso-8859-1"
Content-Transfer-Encoding: quoted-printable

<html>

<body bgcolor=3D=22=23D5CDFE=22>
<div align=3D=22center=22><center>

<table border=3D=221=22 cellpadding=3D=229=22 cellspacing=3D=220=22
bgcolor=3D=22=23000080=22>
    <tr>
        <td><div align=3D=22center=22><center><table border=3D=220=22
        cellpadding=3D=229=22 cellspacing=3D=220=22 bgcolor=3D=22=23FFF=
FFF=22>
            <tr>
                <td align=3D=22center=22 bgcolor=3D=22=23FFFFCC=22><div=

                align=3D=22center=22><center><table border=3D=220=22
                cellpadding=3D=223=22 cellspacing=3D=220=22 width=3D=22=
80%=22
                bgcolor=3D=22=23000000=22>
                    <tr>
                        <td align=3D=22center=22><table border=3D=220=22=

                        cellpadding=3D=220=22 cellspacing=3D=220=22
                        width=3D=22100%=22 bgcolor=3D=22=23FFFFFF=22>

                            <tr>
                                <td align=3D=22center=22>&=23149;</td>
                                <td align=3D=22center=22>&nbsp;</td>
                                <td align=3D=22center=22>&=23149;</td>
                            </tr>
                            <tr>
                                <td>&nbsp;</td>
                                <td align=3D=22center=22><font size=3D=22=
5=22
                                face=3D=22Comic Sans MS=22>3' x 8'
                                Banner - =2459.00<br>

                                4 Lines of Text - White
                                Background<br>
                                (Color Background =2469.00)<br>
                                </font><font size=3D=224=22
                                face=3D=22Verdana=22><strong>Guaranteed=

                                5 Years Indoors or Outdoors</strong></f=
ont></td>
                                <td align=3D=22right=22>&nbsp;</td>
                            </tr>
                            <tr>
                                <td align=3D=22center=22>&=23149;</td>

                                <td align=3D=22center=22>&nbsp;</td>
                                <td align=3D=22center=22>&=23149;</td>
                            </tr>
                        </table>
                        </td>
                    </tr>
                </table>
                </center></div><p align=3D=22center=22><font size=3D=22=
4=22
                face=3D=22Verdana=22>Shipping (2-5 days) to your front
                door is included in this price=21</font></p>

                <div align=3D=22center=22><center><table border=3D=221=22=

                cellpadding=3D=222=22 cellspacing=3D=220=22 bgcolor=3D=22=
=23FFFFFF=22>
                    <tr>
                        <td align=3D=22center=22><font color=3D=22=23FF=
0000=22
                        size=3D=225=22 face=3D=22Verdana=22><strong>3' =
x 8'
                        FULL COLOR</strong></font><font size=3D=224=22
                        face=3D=22Verdana=22><br>
                        </font><font size=3D=225=22 face=3D=22Verdana=22=
><strong>PHOTOGRAPHIC
                        BANNER - =24216.00</strong></font><font
                        color=3D=22=23FF0000=22 size=3D=226=22 face=3D=22=
Verdana=22><strong><br>
                        </strong></font><font color=3D=22=23FF0000=22
                        size=3D=224=22 face=3D=22Verdana=22>We can prin=
t any
                        image, photo, drawing,<br>
                        or logo onto high quality banner
                        material.<br>
                        FULL PHOTO or FULL PHOTO &amp; TEXT<br>

                        </font><font size=3D=224=22 face=3D=22Verdana=22=
>Guaranteed
                        5 Years Indoors or 6 Months Outdoors</font></td=
>
                    </tr>
                </table>
                </center></div><p align=3D=22center=22><font size=3D=22=
3=22
                face=3D=22Verdana=22>=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D</font></p>
                <div align=3D=22center=22><center><table border=3D=221=22=

                cellpadding=3D=2210=22 cellspacing=3D=220=22>
                    <tr>
                        <td align=3D=22center=22 bgcolor=3D=22=23FFFFFF=
=22><font
                        size=3D=225=22 face=3D=22Verdana=22>Coroplast S=
igns<br>

                        18&quot; x 24&quot;<br>
                        <em>from<br>
                        =244.75 each=21</em></font></td>
                    </tr>
                </table>
                </center></div><p align=3D=22center=22><font size=3D=22=
4=22
                face=3D=22Verdana=22>To place an order or get
                additional information, please contact us:</font><font
                face=3D=22Times New Roman=22><br>

                </font><a href=3D=22mailto:CUSTOMPRINTED=40excite.com=22=
><font
                size=3D=226=22 face=3D=22Verdana=22><strong>CUSTOMPRINT=
ED=40excite.com</strong></font></a></p>
                <p align=3D=22center=22><font size=3D=223=22 face=3D=22=
Verdana=22><strong>OR
                CALL US TOLL FREE<br>
                </strong></font><font size=3D=226=22 face=3D=22Verdana=22=
>1-877-503-7415</font></p>
                <p align=3D=22center=22><font face=3D=22Arial=22>We are=
 a
                family owned business, operating in Memphis,
                Tennessee for over 29 years.</font></p>
                <p align=3D=22center=22><font face=3D=22Verdana=22><str=
ong>SIGNATURES</strong></font><br>
                <font size=3D=221=22 face=3D=22Arial=22>GIANT POSTERS *=

                CORPORATE APPAREL * SIGNS &amp; BANNERS *
                PROMOTIONAL PRODUCTS * TROPHIES &amp; AWARDS</font><br>=


                <font face=3D=22Arial,Helvetica=22>559 S. Highland
                Street * Memphis, TN 38111</font> <br>
                <font face=3D=22Arial,Helvetica=22>901-327-5456</font><=
/p>
                <p align=3D=22left=22><font size=3D=222=22 face=3D=22Ve=
rdana=22>We
                honor the removal requests that we receive.<br>
                To be removed from future mailings, please email
                us at </font><a href=3D=22mailto:N0THANKS=40excite.com=22=
><font
                size=3D=222=22 face=3D=22Verdana=22>N0THANKS=40excite.c=
om</font></a><font
                size=3D=222=22 face=3D=22Verdana=22><b> with your email=

                address (or the email address you want removed)
                typed </b><em><b>into the Subject Line</b></em><b>

                of your email.</b> Our system checks the subject
                line for addresses and removes those address from
                our database. Thank you.<br>
                We apologize for any inconvenience.</font></p>
                </td>
            </tr>
        </table>
        </center></div></td>
    </tr>

</table>
</center></div>
</body>
</html>


------=_NextPart_5A6_9F93_BEB67C41.12F248B6--


From CustomPrintGoods@netscape.net Mon Jun 30 20:39:09 2003
Return-Path: <CustomPrintGoods@netscape.net>
Received: from 202.157.186.178 ([202.157.186.178])
	by netlib2.cs.utk.edu (8.12.8/8.12.3) with ESMTP id h610d7SP027439
	for <mpi-comm-archive@netlib2.cs.utk.edu>; Mon, 30 Jun 2003 20:39:07 -0400 (EDT)
Received: from smtp0432.mail.yahoo.com ([12.31.17.134]) by 202.157.186.178 ; Wed, 25 Jun 2003 17:12:33 +0800
Date: Wed, 25 Jun 2003 08:32:06 GMT
From: CustomPrintGoods@netscape.net
X-Priority: 3
To: mpi-comm-archive@netlib2.cs.utk.edu
Subject: Giant Posters from YOUR Images: Just $7.00 a square foot
Mime-Version: 1.0
Content-Type: text/html; charset=us-ascii
Content-Transfer-Encoding: base64
X-Rcpt-To: <mpi-comm-archive@netlib2.cs.utk.edu>
Message-ID: <105653235707@202.157.186.178>

PGh0bWw+DQoNCjxoZWFkPg0KPHRpdGxlPlBPU1RFUiBNQUlMT1VUPC90aXRsZT4NCjwvaGVhZD4N
Cg0KPGJvZHkgYmdjb2xvcj0iI0ZGRkZGRiI+DQo8ZGl2IGFsaWduPSJjZW50ZXIiPjxjZW50ZXI+
DQoNCjx0YWJsZSBib3JkZXI9IjAiIGNlbGxwYWRkaW5nPSIwIiBjZWxsc3BhY2luZz0iMCIgd2lk
dGg9IjEwMCUiPg0KICAgIDx0cj4NCiAgICAgICAgPHRkIGFsaWduPSJjZW50ZXIiIGNvbHNwYW49
IjIiPjxkaXYgYWxpZ249ImNlbnRlciI+PGNlbnRlcj48dGFibGUNCiAgICAgICAgYm9yZGVyPSIw
IiBjZWxscGFkZGluZz0iNSIgY2VsbHNwYWNpbmc9IjAiPg0KICAgICAgICAgICAgPHRyPg0KDQog
ICAgICAgICAgICAgICAgPHRkIGFsaWduPSJjZW50ZXIiIGNvbHNwYW49IjIiPjxmb250DQogICAg
ICAgICAgICAgICAgY29sb3I9IiNGRjAwMDAiIHNpemU9IjQiIGZhY2U9IlZlcmRhbmEiPkdJQU5U
DQogICAgICAgICAgICAgICAgU0laRUQgUE9TVEVSUyBtYWRlIGZyb20gWU9VUiBJTUFHRVMhPGJy
Pg0KICAgICAgICAgICAgICAgIDwvZm9udD48Zm9udCBzaXplPSIyIiBmYWNlPSJWZXJkYW5hIj5T
ZW5kIHVzIDxlbT5Bbnk8L2VtPg0KICAgICAgICAgICAgICAgIFBpY3R1cmUgb3IgRHJhd2luZyBv
ciBBcnR3b3JrIC0gV2UnbGwgbWFrZSB5b3VyDQogICAgICAgICAgICAgICAgUG9zdGVyIGZvciAk
Ny4wMCBhIHNxdWFyZSBmb290PC9mb250PjwvdGQ+DQogICAgICAgICAgICA8L3RyPg0KICAgICAg
ICAgICAgPHRyPg0KICAgICAgICAgICAgICAgIDx0ZCBhbGlnbj0iY2VudGVyIj48ZGl2IGFsaWdu
PSJjZW50ZXIiPjxjZW50ZXI+PHRhYmxlDQogICAgICAgICAgICAgICAgYm9yZGVyPSIyIiBjZWxs
cGFkZGluZz0iMiIgY2VsbHNwYWNpbmc9IjAiDQogICAgICAgICAgICAgICAgYmdjb2xvcj0iI0ZG
RkZBQSIgYm9yZGVyY29sb3I9IiNGRjAwMDAiPg0KICAgICAgICAgICAgICAgICAgICA8dHI+DQoN
CiAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCBhbGlnbj0iY2VudGVyIj48Zm9udCBjb2xvcj0i
IzgwMDAwMCINCiAgICAgICAgICAgICAgICAgICAgICAgIHNpemU9IjUiIGZhY2U9IlZlcmRhbmEi
PjIyJnF1b3Q7IHgNCiAgICAgICAgICAgICAgICAgICAgICAgIDI4JnF1b3Q7IHBvc3RlciBmb3Ig
JDMwLjAwPGJyPg0KICAgICAgICAgICAgICAgICAgICAgICAgPC9mb250Pjxmb250IHNpemU9IjQi
IGZhY2U9IlZlcmRhbmEiPkZyZWUNCiAgICAgICAgICAgICAgICAgICAgICAgIFNoaXBwaW5nIGZv
ciBPcmRlcnMgT3ZlciAkODAuMDA8YnI+DQogICAgICAgICAgICAgICAgICAgICAgICA8L2ZvbnQ+
PGZvbnQgY29sb3I9IiMwMDAwODAiIHNpemU9IjMiDQogICAgICAgICAgICAgICAgICAgICAgICBm
YWNlPSJWZXJkYW5hIj48c3Ryb25nPnNoaXBwZWQgaW4gMi01DQogICAgICAgICAgICAgICAgICAg
ICAgICBkYXlzPC9zdHJvbmc+PC9mb250Pjxmb250IHNpemU9IjQiDQogICAgICAgICAgICAgICAg
ICAgICAgICBmYWNlPSJWZXJkYW5hIj48c3Ryb25nPjxicj4NCiAgICAgICAgICAgICAgICAgICAg
ICAgIDwvc3Ryb25nPjwvZm9udD48Zm9udCBzaXplPSIzIg0KICAgICAgICAgICAgICAgICAgICAg
ICAgZmFjZT0iVmVyZGFuYSI+KHJvbGxlZCBpbiBhIHByb3RlY3RpdmUNCiAgICAgICAgICAgICAg
ICAgICAgICAgIG1haWxpbmcgdHViZSk8L2ZvbnQ+PHA+PGZvbnQgc2l6ZT0iMyINCiAgICAgICAg
ICAgICAgICAgICAgICAgIGZhY2U9IlZlcmRhbmEiPjxzdHJvbmc+TWluaW11bSBPcmRlcjoNCiAg
ICAgICAgICAgICAgICAgICAgICAgICQzMC4wMDxicj4NCg0KICAgICAgICAgICAgICAgICAgICAg
ICAgU2hpcHBpbmc6ICQ3LjUwPC9zdHJvbmc+PC9mb250PjwvcD4NCiAgICAgICAgICAgICAgICAg
ICAgICAgIDwvdGQ+DQogICAgICAgICAgICAgICAgICAgIDwvdHI+DQogICAgICAgICAgICAgICAg
PC90YWJsZT4NCiAgICAgICAgICAgICAgICA8L2NlbnRlcj48L2Rpdj48L3RkPg0KICAgICAgICAg
ICAgICAgIDx0ZCBhbGlnbj0iY2VudGVyIj48Zm9udCBzaXplPSIyIiBmYWNlPSJWZXJkYW5hIj5K
VVNUDQogICAgICAgICAgICAgICAgRU1BSUwgWU9VUiBTQ0FOTkVEIElNQUdFUyBPUiBBUlQgQU5E
IFdFJ0xMIE1BSUwNCiAgICAgICAgICAgICAgICBZT1VSIFBPU1RFUiBJTiAyLTUgREFZUyE8L2Zv
bnQ+PHA+PGZvbnQgc2l6ZT0iMiINCiAgICAgICAgICAgICAgICBmYWNlPSJWZXJkYW5hIj6wIEZh
bWlseSBQaWN0dXJlcyBDYW4gQmVjb21lDQogICAgICAgICAgICAgICAgQXR0ZW50aW9uIEdldHRp
bmcgV2FsbCBBcnQ8YnI+DQogICAgICAgICAgICAgICAgsCBMYXJnZSBTaXplZCBHcmFwaGljIEV4
aGliaXRzPGJyPg0KDQogICAgICAgICAgICAgICAgsCBVcHNjYWxlIFNpZ25hZ2U8YnI+DQogICAg
ICAgICAgICAgICAgsCBTcGVjaWFsIE1lbW9yaWVzPGJyPg0KICAgICAgICAgICAgICAgILAgTWVt
b3JhYmxlIEh1bW9yb3VzIE1vbWVudHM8L2ZvbnQ+PC9wPg0KICAgICAgICAgICAgICAgIDxkaXYg
YWxpZ249ImNlbnRlciI+PGNlbnRlcj48dGFibGUgYm9yZGVyPSIxIg0KICAgICAgICAgICAgICAg
IGNlbGxzcGFjaW5nPSIwIiBiZ2NvbG9yPSIjRjRGNEY0Ij4NCiAgICAgICAgICAgICAgICAgICAg
PHRyPg0KICAgICAgICAgICAgICAgICAgICAgICAgPHRkIGFsaWduPSJjZW50ZXIiIHZhbGlnbj0i
dG9wIj48Zm9udA0KICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZT0iMiIgZmFjZT0iVmVyZGFu
YSI+MjAmcXVvdDsgeA0KICAgICAgICAgICAgICAgICAgICAgICAgMjUmcXVvdDsgLSAkIDI0LjUw
PC9mb250PjwvdGQ+DQoNCiAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCBhbGlnbj0iY2VudGVy
IiB2YWxpZ249InRvcCI+PGZvbnQNCiAgICAgICAgICAgICAgICAgICAgICAgIHNpemU9IjIiIGZh
Y2U9IlZlcmRhbmEiPjI0JnF1b3Q7IHgNCiAgICAgICAgICAgICAgICAgICAgICAgIDMwJnF1b3Q7
IC0gJCAzNS4wMDwvZm9udD48L3RkPg0KICAgICAgICAgICAgICAgICAgICA8L3RyPg0KICAgICAg
ICAgICAgICAgICAgICA8dHI+DQogICAgICAgICAgICAgICAgICAgICAgICA8dGQgYWxpZ249ImNl
bnRlciIgdmFsaWduPSJ0b3AiPjxmb250DQogICAgICAgICAgICAgICAgICAgICAgICBzaXplPSIy
IiBmYWNlPSJWZXJkYW5hIj4yMCZxdW90OyB4DQogICAgICAgICAgICAgICAgICAgICAgICAyOCZx
dW90OyAtICQgMjcuNTA8L2ZvbnQ+PC90ZD4NCg0KICAgICAgICAgICAgICAgICAgICAgICAgPHRk
IGFsaWduPSJjZW50ZXIiIHZhbGlnbj0idG9wIj48Zm9udA0KICAgICAgICAgICAgICAgICAgICAg
ICAgc2l6ZT0iMiIgZmFjZT0iVmVyZGFuYSI+MjkmcXVvdDsgeA0KICAgICAgICAgICAgICAgICAg
ICAgICAgMzImcXVvdDsgLSAkIDQ1LjAwPC9mb250PjwvdGQ+DQogICAgICAgICAgICAgICAgICAg
IDwvdHI+DQogICAgICAgICAgICAgICAgICAgIDx0cj4NCiAgICAgICAgICAgICAgICAgICAgICAg
IDx0ZCBhbGlnbj0iY2VudGVyIiB2YWxpZ249InRvcCI+PGZvbnQNCiAgICAgICAgICAgICAgICAg
ICAgICAgIHNpemU9IjIiIGZhY2U9IlZlcmRhbmEiPjIyJnF1b3Q7IHgNCiAgICAgICAgICAgICAg
ICAgICAgICAgIDI4JnF1b3Q7IC0gJCAzMC4wMDwvZm9udD48L3RkPg0KDQogICAgICAgICAgICAg
ICAgICAgICAgICA8dGQgYWxpZ249ImNlbnRlciIgdmFsaWduPSJ0b3AiPjxmb250DQogICAgICAg
ICAgICAgICAgICAgICAgICBzaXplPSIyIiBmYWNlPSJWZXJkYW5hIj41NCZxdW90OyB4DQogICAg
ICAgICAgICAgICAgICAgICAgICA5NiZxdW90OyAtICQyNTIuMDA8L2ZvbnQ+PC90ZD4NCiAgICAg
ICAgICAgICAgICAgICAgPC90cj4NCiAgICAgICAgICAgICAgICA8L3RhYmxlPg0KICAgICAgICAg
ICAgICAgIDwvY2VudGVyPjwvZGl2PjwvdGQ+DQogICAgICAgICAgICA8L3RyPg0KICAgICAgICA8
L3RhYmxlPg0KDQogICAgICAgIDwvY2VudGVyPjwvZGl2PjwvdGQ+DQogICAgPC90cj4NCiAgICA8
dHI+DQogICAgICAgIDx0ZCBhbGlnbj0iY2VudGVyIiB2YWxpZ249InRvcCI+PGRpdiBhbGlnbj0i
Y2VudGVyIj48Y2VudGVyPjx0YWJsZQ0KICAgICAgICBib3JkZXI9IjEiIGNlbGxwYWRkaW5nPSI0
IiBjZWxsc3BhY2luZz0iMCINCiAgICAgICAgYmdjb2xvcj0iI0RDRkZCOSI+DQogICAgICAgICAg
ICA8dHI+DQogICAgICAgICAgICAgICAgPHRkIGFsaWduPSJjZW50ZXIiPjxmb250IGZhY2U9IlZl
cmRhbmEiPjxzdHJvbmc+RElTQ09VTlRTPGJyPg0KICAgICAgICAgICAgICAgIChmb3IgbWluLiBz
aXplIG9mIDMgc3EuIGZ0Lik8L3N0cm9uZz48L2ZvbnQ+PGRpdg0KICAgICAgICAgICAgICAgIGFs
aWduPSJjZW50ZXIiPjxjZW50ZXI+PHRhYmxlIGJvcmRlcj0iMCINCiAgICAgICAgICAgICAgICBj
ZWxscGFkZGluZz0iMiIgY2VsbHNwYWNpbmc9IjAiIGJnY29sb3I9IiNGRkZGOTciPg0KICAgICAg
ICAgICAgICAgICAgICA8dHI+DQoNCiAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCBhbGlnbj0i
cmlnaHQiPjxmb250IHNpemU9IjIiDQogICAgICAgICAgICAgICAgICAgICAgICBmYWNlPSJWZXJk
YW5hIj48c3Ryb25nPjUgcG9zdGVycyA9PC9zdHJvbmc+PC9mb250PjwvdGQ+DQogICAgICAgICAg
ICAgICAgICAgICAgICA8dGQ+PGZvbnQgc2l6ZT0iMiIgZmFjZT0iVmVyZGFuYSI+PHN0cm9uZz4k
Ni4wMA0KICAgICAgICAgICAgICAgICAgICAgICAgcGVyIHNxdWFyZSBmb290PC9zdHJvbmc+PC9m
b250PjwvdGQ+DQogICAgICAgICAgICAgICAgICAgIDwvdHI+DQogICAgICAgICAgICAgICAgICAg
IDx0cj4NCiAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCBhbGlnbj0icmlnaHQiPjxmb250IHNp
emU9IjIiDQogICAgICAgICAgICAgICAgICAgICAgICBmYWNlPSJWZXJkYW5hIj48c3Ryb25nPjEw
IHBvc3RlcnMgPTwvc3Ryb25nPjwvZm9udD48L3RkPg0KICAgICAgICAgICAgICAgICAgICAgICAg
PHRkPjxmb250IHNpemU9IjIiIGZhY2U9IlZlcmRhbmEiPjxzdHJvbmc+JDUuNTANCiAgICAgICAg
ICAgICAgICAgICAgICAgIHBlciBzcXVhcmUgZm9vdDwvc3Ryb25nPjwvZm9udD48L3RkPg0KICAg
ICAgICAgICAgICAgICAgICA8L3RyPg0KDQogICAgICAgICAgICAgICAgICAgIDx0cj4NCiAgICAg
ICAgICAgICAgICAgICAgICAgIDx0ZCBhbGlnbj0icmlnaHQiPjxmb250IHNpemU9IjIiDQogICAg
ICAgICAgICAgICAgICAgICAgICBmYWNlPSJWZXJkYW5hIj48c3Ryb25nPjIwIHBvc3RlcnMgdXAg
PTwvc3Ryb25nPjwvZm9udD48L3RkPg0KICAgICAgICAgICAgICAgICAgICAgICAgPHRkPjxmb250
IHNpemU9IjIiIGZhY2U9IlZlcmRhbmEiPjxzdHJvbmc+JDUuMDANCiAgICAgICAgICAgICAgICAg
ICAgICAgIHBlciBzcXVhcmUgZm9vdDwvc3Ryb25nPjwvZm9udD48L3RkPg0KICAgICAgICAgICAg
ICAgICAgICA8L3RyPg0KICAgICAgICAgICAgICAgIDwvdGFibGU+DQogICAgICAgICAgICAgICAg
PC9jZW50ZXI+PC9kaXY+PC90ZD4NCiAgICAgICAgICAgIDwvdHI+DQogICAgICAgIDwvdGFibGU+
DQoNCiAgICAgICAgPC9jZW50ZXI+PC9kaXY+PHAgYWxpZ249ImNlbnRlciI+PGZvbnQgc2l6ZT0i
MyINCiAgICAgICAgZmFjZT0iVmVyZGFuYSI+Q29udmVydCB5b3VyIGZhdm9yaXRlOjxicj4NCiAg
ICAgICAgPC9mb250Pjxmb250IHNpemU9IjIiIGZhY2U9IlZlcmRhbmEiPipBY3Rpb24gUGljdHVy
ZXM8YnI+DQogICAgICAgICpUZWFtIFBpY3R1cmU8YnI+DQogICAgICAgICpDbGFzcyBQaWN0dXJl
PGJyPg0KICAgICAgICAqQW55IFBpY3R1cmU8YnI+DQogICAgICAgIDwvZm9udD48Zm9udCBzaXpl
PSIzIiBmYWNlPSJWZXJkYW5hIj48c3Ryb25nPlRvIGEgR0lBTlQNCiAgICAgICAgUE9TVEVSIFNJ
WkVEIFBSSU5UITwvc3Ryb25nPjwvZm9udD48L3A+DQoNCiAgICAgICAgPC90ZD4NCiAgICAgICAg
PHRkIHZhbGlnbj0iYm90dG9tIj48ZGl2IGFsaWduPSJjZW50ZXIiPjxjZW50ZXI+PHRhYmxlDQog
ICAgICAgIGJvcmRlcj0iMCIgY2VsbHBhZGRpbmc9IjUiIGNlbGxzcGFjaW5nPSIwIj4NCiAgICAg
ICAgICAgIDx0cj4NCiAgICAgICAgICAgICAgICA8dGQgdmFsaWduPSJ0b3AiPjxmb250IGZhY2U9
IlZlcmRhbmEiPkZST00gVEhJUzxicj4NCiAgICAgICAgICAgICAgICA8aW1nDQogICAgICAgICAg
ICAgICAgc3JjPSJodHRwOi8vd3d3Lmdlb2NpdGllcy5jb20vemlwX3ppcF8xL3Bvc3RlcjEuanBn
Ig0KICAgICAgICAgICAgICAgIGFsdD0iSUYgSU1BR0UgRkFJTFMgVE8gTE9BRCwgUExFQVNFIExF
VCBVUyBLTk9XIg0KICAgICAgICAgICAgICAgIHdpZHRoPSIxNDEiIGhlaWdodD0iMTU5Ij48L2Zv
bnQ+PC90ZD4NCiAgICAgICAgICAgICAgICA8dGQgdmFsaWduPSJ0b3AiPjxmb250IGZhY2U9IlZl
cmRhbmEiPlRPIFRISVMgKG9yDQogICAgICAgICAgICAgICAgQklHR0VSISk8YnI+DQogICAgICAg
ICAgICAgICAgPGltZw0KICAgICAgICAgICAgICAgIHNyYz0iaHR0cDovL3d3dy5nZW9jaXRpZXMu
Y29tL2N1emJhay9wb3N0ZXIyLmpwZyINCiAgICAgICAgICAgICAgICBhbHQ9IklGIElNQUdFIEZB
SUxTIFRPIExPQUQsIFBMRUFTRSBMRVQgVVMgS05PVyINCiAgICAgICAgICAgICAgICB3aWR0aD0i
MTgyIiBoZWlnaHQ9IjIzNCI+PC9mb250PjwvdGQ+DQogICAgICAgICAgICA8L3RyPg0KDQogICAg
ICAgIDwvdGFibGU+DQogICAgICAgIDwvY2VudGVyPjwvZGl2PjwvdGQ+DQogICAgPC90cj4NCjwv
dGFibGU+DQo8L2NlbnRlcj48L2Rpdj48ZGl2IGFsaWduPSJjZW50ZXIiPjxjZW50ZXI+DQoNCjx0
YWJsZSBib3JkZXI9IjAiIGNlbGxwYWRkaW5nPSIwIiBjZWxsc3BhY2luZz0iMCIgd2lkdGg9IjEw
MCUiDQpiZ2NvbG9yPSIjRkVFOUQzIj4NCiAgICA8dHI+DQogICAgICAgIDx0ZD48YmxvY2txdW90
ZT4NCiAgICAgICAgICAgIDxwIGFsaWduPSJjZW50ZXIiPjxmb250IHNpemU9IjQiIGZhY2U9IlZl
cmRhbmEiPjxzdHJvbmc+V0hBVA0KICAgICAgICAgICAgVE8gRE86PGJyPg0KDQogICAgICAgICAg
ICA8L3N0cm9uZz48L2ZvbnQ+PGZvbnQgc2l6ZT0iMiIgZmFjZT0iVmVyZGFuYSI+V2UgYXJlDQog
ICAgICAgICAgICBhIGZhbWlseSBvd25lZCBidXNpbmVzcyBvcGVyYXRpbmcgaW4gTWVtcGhpcywN
CiAgICAgICAgICAgIFRlbm5lc3NlZSBmb3Igb3ZlciAyOSB5ZWFycy48L2ZvbnQ+PGZvbnQgc2l6
ZT0iNCINCiAgICAgICAgICAgIGZhY2U9IlZlcmRhbmEiPjxzdHJvbmc+PGJyPg0KICAgICAgICAg
ICAgPC9zdHJvbmc+UGxlYXNlIGNvbnRhY3QgdXMgdmlhIGVtYWlsOjxicj4NCiAgICAgICAgICAg
IDwvZm9udD48YSBocmVmPSJtYWlsdG86U2hpcnRzU2lnbnNNb3JlQG5ldHNjYXBlLm5ldCI+PGZv
bnQNCiAgICAgICAgICAgIHNpemU9IjUiIGZhY2U9IlZlcmRhbmEiPjxzdHJvbmc+U2hpcnRzU2ln
bnNNb3JlQG5ldHNjYXBlLm5ldDwvc3Ryb25nPjwvZm9udD48L2E+PC9wPg0KICAgICAgICAgICAg
PHAgYWxpZ249ImNlbnRlciI+PGZvbnQgc2l6ZT0iNCIgZmFjZT0iVmVyZGFuYSI+PHN0cm9uZz5v
cg0KICAgICAgICAgICAgY2FsbCBUb2xsIEZyZWU6IDEtODc3LTUwMy03NDE1PGJyPg0KICAgICAg
ICAgICAgPC9zdHJvbmc+dG8gcGxhY2UgYW4gb3JkZXIgb3IgZ2V0IGFkZGl0aW9uYWwNCiAgICAg
ICAgICAgIGluZm9ybWF0aW9uLjwvZm9udD48L3A+DQogICAgICAgICAgICA8cCBhbGlnbj0iY2Vu
dGVyIj48Zm9udCBmYWNlPSJWZXJkYW5hIj48c3Ryb25nPlNJR05BVFVSRVM8L3N0cm9uZz48L2Zv
bnQ+PGJyPg0KDQogICAgICAgICAgICA8Zm9udCBzaXplPSIxIiBmYWNlPSJBcmlhbCI+R0lBTlQg
U0laRUQgUE9TVEVSUyAqDQogICAgICAgICAgICBDT1JQT1JBVEUgQVBQQVJFTCAqIFNJR05TICZh
bXA7IEJBTk5FUlMgKiBQUk9NT1RJT05BTA0KICAgICAgICAgICAgUFJPRFVDVFMgKiBUUk9QSElF
UyAmYW1wOyBBV0FSRFM8L2ZvbnQ+PGZvbnQgc2l6ZT0iMSI+PGJyPg0KICAgICAgICAgICAgPC9m
b250Pjxmb250IGZhY2U9IkFyaWFsLEhlbHZldGljYSI+NTU5IFMuIEhpZ2hsYW5kDQogICAgICAg
ICAgICBTdHJlZXQgKiBNZW1waGlzLCBUTiAzODExMTwvZm9udD4gPGJyPg0KICAgICAgICAgICAg
PGZvbnQgZmFjZT0iQXJpYWwsSGVsdmV0aWNhIj45MDEtMzI3LTU0NTY8L2ZvbnQ+PC9wPg0KICAg
ICAgICAgICAgPHAgYWxpZ249ImNlbnRlciI+PGZvbnQgZmFjZT0iVmVyZGFuYSI+VG9sbCBGcmVl
Og0KICAgICAgICAgICAgMS04NzctNTAzLTc0MTU8L2ZvbnQ+PC9wPg0KDQogICAgICAgICAgICA8
cCBhbGlnbj0iY2VudGVyIj48Zm9udCBzaXplPSIyIiBmYWNlPSJWZXJkYW5hIj5XZQ0KICAgICAg
ICAgICAgYXJlIGEgZmFtaWx5IG93bmVkIGJ1c2luZXNzIG9wZXJhdGluZyBpbiBNZW1waGlzLA0K
ICAgICAgICAgICAgVGVubmVzc2VlIGZvciBvdmVyIDI5IHllYXJzLjwvZm9udD48L3A+DQogICAg
ICAgIDwvYmxvY2txdW90ZT4NCiAgICAgICAgPC90ZD4NCiAgICA8L3RyPg0KPC90YWJsZT4NCjwv
Y2VudGVyPjwvZGl2Pg0KDQo8cD4mbmJzcDs8L3A+DQoNCjxwPiZuYnNwOzwvcD4NCg0KPHA+PGZv
bnQgc2l6ZT0iMiIgZmFjZT0iVmVyZGFuYSI+V2UgaG9ub3IgdGhlIHJlbW92YWwgcmVxdWVzdHMN
CnRoYXQgd2UgcmVjZWl2ZS48YnI+DQoNClRvIGJlIHJlbW92ZWQgZnJvbSBmdXR1cmUgbWFpbGlu
Z3MsIHBsZWFzZSBlbWFpbCB1cyBhdCA8L2ZvbnQ+PGENCmhyZWY9Im1haWx0bzpJQW1EaXNpbnRl
cmVzdGVkQG5ldHNjYXBlLm5ldCI+PGZvbnQgc2l6ZT0iMiINCmZhY2U9IlZlcmRhbmEiPjxzdHJv
bmc+SUFtRGlzaW50ZXJlc3RlZEBuZXRzY2FwZS5uZXQ8L3N0cm9uZz48L2ZvbnQ+PC9hPjxmb250
DQpzaXplPSIyIiBmYWNlPSJWZXJkYW5hIj48c3Ryb25nPiB3aXRoIHRoZSBlbWFpbCBhZGRyZXNz
IHlvdSB3YW50DQpyZW1vdmVkIDwvc3Ryb25nPjxlbT48c3Ryb25nPmluIHRoZSA8L3N0cm9uZz48
L2VtPjxlbT48c3Ryb25nPjx1PlN1YmplY3QNCkxpbmU8L3U+PC9zdHJvbmc+PC9lbT48ZW0+PHN0
cm9uZz4gb2YgeW91ciBlbWFpbDwvc3Ryb25nPjwvZW0+PHN0cm9uZz4uPC9zdHJvbmc+DQpPdXIg
c3lzdGVtIGNoZWNrcyB0aGUgc3ViamVjdCBsaW5lIGZvciBlbWFpbCBhZGRyZXNzZXMgYW5kIHdp
bGwNCnJlbW92ZSB0aG9zZSBhZGRyZXNzZXMgZnJvbSBvdXIgZGF0YWJhc2UuPGJyPg0KV2UgYXBv
bG9naXplIGZvciBhbnkgaW5jb252ZW5pZW5jZS48L2ZvbnQ+PC9wPg0KPC9ib2R5Pg0KPC9odG1s
Pg==

From CustomPrintGoods@netscape.net Wed Jul  9 14:13:32 2003
Return-Path: <CustomPrintGoods@netscape.net>
Received: from netscape.net (cs177030.pp.htv.fi [213.243.177.30])
	by netlib2.cs.utk.edu (8.12.8/8.12.3) with SMTP id h69IDMSP020471
	for <mpi-comm-archive@netlib2.cs.utk.edu>; Wed, 9 Jul 2003 14:13:25 -0400 (EDT)
Message-ID: <7b3c01c34639$c9b7ec20$35739420@ehreejehmfik>
Reply-To: CustomPrintGoods@netscape.net
From: CustomPrintGoods@netscape.net
To: "email@email" <mpi-comm-archive@netlib2.cs.utk.edu>
Subject: 3' x 8' banner $59 - 5 yr. Guarantee
Date: Wed, 09 Jul 2003 06:47:30 -1000
MIME-Version: 1.0
Content-Type: multipart/alternative;
	boundary="----=_NextPart_92E_F3B2_4E8CE680.A9ADFBA3"
X-Priority: 3
X-MSMail-Priority: Normal
X-Mailer: Microsoft Outlook, Build 10.0.4510
X-MimeOLE: Produced By Microsoft MimeOLE V10.0.4510

This is a multi-part message in MIME format.

------=_NextPart_92E_F3B2_4E8CE680.A9ADFBA3
Content-Type: text/plain;
	charset="iso-8859-1"
Content-Transfer-Encoding: quoted-printable


------=_NextPart_92E_F3B2_4E8CE680.A9ADFBA3
Content-Type: text/html;
	charset="iso-8859-1"
Content-Transfer-Encoding: quoted-printable

<html>

<body bgcolor=3D"#D5CDFE">
<div align=3D"center"><center>

<table border=3D"1" cellpadding=3D"9" cellspacing=3D"0"
bgcolor=3D"#000080">
    <tr>
        <td><div align=3D"center"><center><table border=3D"0"
        cellpadding=3D"9" cellspacing=3D"0" bgcolor=3D"#FFFFFF">
            <tr>
                <td align=3D"center"><div align=3D"center"><center><tab=
le
                border=3D"0" cellpadding=3D"3" cellspacing=3D"0"
                width=3D"80%" bgcolor=3D"#000000">
                    <tr>
                        <td align=3D"center"><table border=3D"0"
                        cellpadding=3D"0" cellspacing=3D"0"
                        width=3D"100%" bgcolor=3D"#FFFFFF">
                            <tr>
                                <td align=3D"center"><font
                                face=3D"Verdana">&#149;</font></td>
                                <td align=3D"center">&nbsp;</td>
                                <td align=3D"center"><font
                                face=3D"Verdana">&#149;</font></td>
                            </tr>
                            <tr>
                                <td>&nbsp;</td>
                                <td align=3D"center"><font size=3D"4"
                                face=3D"Verdana"><strong>3' x 8'
                                banner $59 - 5 yr. Guarantee<br>
                                </strong>4 Lines of Text - White
                                Background<br>
                                (Color Background $85.00)<br>
                                <strong>Guaranteed 5 Years
                                Indoors or Outdoors</strong></font></td=
>
                                <td align=3D"right">&nbsp;</td>
                            </tr>
                            <tr>
                                <td align=3D"center"><font
                                face=3D"Verdana">&#149;</font></td>
                                <td align=3D"center">&nbsp;</td>
                                <td align=3D"center"><font
                                face=3D"Verdana">&#149;</font></td>
                            </tr>
                        </table>
                        </td>
                    </tr>
                </table>
                </center></div><p align=3D"center"><font size=3D"4"
                face=3D"Verdana">Shipping (2-5 days) to your front
                door is included in this price!<br>
                </font><font size=3D"3" face=3D"Verdana">(Continental
                U.S. Only)</font></p>
                <div align=3D"center"><center><table border=3D"1"
                cellpadding=3D"2" cellspacing=3D"0" bgcolor=3D"#FFFFFF"=
>
                    <tr>
                        <td align=3D"center"><font color=3D"#FF0000"
                        size=3D"5" face=3D"Verdana"><strong>3' x 8'
                        FULL COLOR</strong></font><font size=3D"4"
                        face=3D"Verdana"><br>
                        </font><font size=3D"5" face=3D"Verdana"><stron=
g>PHOTOGRAPHIC
                        BANNER - $150.00<br>
                        </strong></font><font color=3D"#FF0000"
                        size=3D"5" face=3D"Verdana"><strong><img
                        src=3D"http://www.geocities.com/cradsk8er/olive=
usbanner.gif"
                        alt=3D"An Example of our Full Color Photographi=
c Banners"
                        width=3D"300" height=3D"60"></strong></font><fo=
nt
                        color=3D"#FF0000" size=3D"6" face=3D"Verdana"><=
strong><br>
                        </strong></font><font color=3D"#FF0000"
                        size=3D"4" face=3D"Verdana">We can print any
                        image, photo, drawing,<br>
                        or logo onto high quality banner
                        material.<br>
                        FULL PHOTO or FULL PHOTO &amp; TEXT<br>
                        </font><font size=3D"4" face=3D"Verdana">Guaran=
teed
                        5 Years Indoors or 6 Months Outdoors</font></td=
>
                    </tr>
                </table>
                </center></div><p align=3D"center"><font size=3D"3"
                face=3D"Verdana">=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D</font></p>
                <div align=3D"center"><center><table border=3D"1"
                cellpadding=3D"10" cellspacing=3D"0">
                    <tr>
                        <td align=3D"center" bgcolor=3D"#FFFFFF"><font
                        size=3D"6" face=3D"Verdana">Coroplast Signs<br>=

                        </font><font size=3D"5" face=3D"Verdana">18&quo=
t;
                        x 24&quot; from $4.75 each! (Min 100)<br>
                        50 =3D $5.75</font></td>
                    </tr>
                </table>
                </center></div><p align=3D"center"><font size=3D"4"
                face=3D"Verdana">To place an order or get
                additional information, please contact us:</font><font
                face=3D"Verdana"><br>
                </font><a
                href=3D"mailto:ShirtsSignsMore@netscape.net"><font
                size=3D"6" face=3D"Verdana"><strong>ShirtsSignsMore@net=
scape.net</strong></font></a></p>
                <p align=3D"center"><font size=3D"3" face=3D"Verdana"><=
strong>OR
                CALL US TOLL FREE<br>
                </strong></font><font size=3D"6" face=3D"Verdana">1-877=
-503-7415</font></p>
                <p align=3D"center"><font face=3D"Verdana">We are a
                family owned business, operating in Memphis,
                Tennessee for over 29 years.</font></p>
                <p align=3D"center"><font face=3D"Verdana"><strong><br>=

                SIGNATURES</strong><br>
                </font><font size=3D"1" face=3D"Verdana">GIANT
                POSTERS * CORPORATE APPAREL * SIGNS &amp; BANNERS
                * PROMOTIONAL PRODUCTS * TROPHIES &amp; AWARDS</font><f=
ont
                face=3D"Verdana"><br>
                559 S. Highland Street * Memphis, TN 38111 <br>
                901-327-5456</font></p>
                <p align=3D"left"><font size=3D"2" face=3D"Verdana">We
                honor the removal requests that we receive. To be
                removed from future mailings, please email us at </font=
><a
                href=3D"mailto:IAmDisinterested@netscape.net"><font
                size=3D"2" face=3D"Verdana">IAmDisinterested@netscape.n=
et</font></a><font
                size=3D"2" face=3D"Verdana"><b> with your email
                address (or the email address you want removed)
                typed </b><em><b>into the Subject Line</b></em><b>
                of your email.</b> Our system checks the subject
                line for addresses and removes those addresses.
                Please allow 48 hours for your address to be
                removed from our data base. Thank you.<br>
                We apologize for any inconvenience.</font></p>
                </td>
            </tr>
        </table>
        </center></div></td>
    </tr>
</table>
</center></div>
</body>
</html>


------=_NextPart_92E_F3B2_4E8CE680.A9ADFBA3--


From CustomPrintGoods@netscape.net Wed Jul  9 14:38:08 2003
Return-Path: <CustomPrintGoods@netscape.net>
Received: from netscape.net ([213.231.82.15])
	by netlib2.cs.utk.edu (8.12.8/8.12.3) with SMTP id h69IbiSP021465
	for <mpi-comm-archive@netlib2.cs.utk.edu>; Wed, 9 Jul 2003 14:37:51 -0400 (EDT)
Message-ID: <62eb01c34645$97159e50$c7972bbd@sff>
Reply-To: CustomPrintGoods@netscape.net
From: CustomPrintGoods@netscape.net
To: "email@email" <mpi-comm-archive@netlib2.cs.utk.edu>
Subject: 3' x 8' banner $59 - 5 yr. Guarantee
Date: Wed, 09 Jul 2003 14:11:59 -0400
MIME-Version: 1.0
Content-Type: multipart/alternative;
	boundary="----=_NextPart_C34_02E0_79489A34.282FB701"
X-Priority: 3
X-MSMail-Priority: Normal
X-Mailer: Microsoft Outlook Express 5.00.2314.1300
X-MimeOLE: Produced By Microsoft MimeOLE V5.00.2314.1300

This is a multi-part message in MIME format.

------=_NextPart_C34_02E0_79489A34.282FB701
Content-Type: text/plain;
	charset="iso-8859-1"
Content-Transfer-Encoding: quoted-printable


------=_NextPart_C34_02E0_79489A34.282FB701
Content-Type: text/html;
	charset="iso-8859-1"
Content-Transfer-Encoding: quoted-printable

<html>

<head>
<meta http-equiv=3D"Content-Type"
content=3D"text/html; charset=3Diso-8859-1">
<meta name=3D"GENERATOR" content=3D"Microsoft FrontPage Express 2.0">
<title></title>
</head>

<body bgcolor=3D"#D5CDFE">
<div align=3D"center"><center>

<table border=3D"1" cellpadding=3D"9" cellspacing=3D"0"
bgcolor=3D"#000080">
    <tr>
        <td><div align=3D"center"><center><table border=3D"0"
        cellpadding=3D"9" cellspacing=3D"0" bgcolor=3D"#FFFFFF">
            <tr>
                <td align=3D"center"><div align=3D"center"><center><tab=
le
                border=3D"0" cellpadding=3D"3" cellspacing=3D"0"
                width=3D"80%" bgcolor=3D"#000000">
                    <tr>
                        <td align=3D"center"><table border=3D"0"
                        cellpadding=3D"0" cellspacing=3D"0"
                        width=3D"100%" bgcolor=3D"#FFFFFF">
                            <tr>
                                <td align=3D"center"><font
                                face=3D"Verdana">&#149;</font></td>
                                <td align=3D"center">&nbsp;</td>
                                <td align=3D"center"><font
                                face=3D"Verdana">&#149;</font></td>
                            </tr>
                            <tr>
                                <td>&nbsp;</td>
                                <td align=3D"center"><font size=3D"4"
                                face=3D"Verdana"><strong>3' x 8'
                                banner $59 - 5 yr. Guarantee<br>
                                </strong>4 Lines of Text - White
                                Background<br>
                                (Color Background $85.00)<br>
                                <strong>Guaranteed 5 Years
                                Indoors or Outdoors</strong></font></td=
>
                                <td align=3D"right">&nbsp;</td>
                            </tr>
                            <tr>
                                <td align=3D"center"><font
                                face=3D"Verdana">&#149;</font></td>
                                <td align=3D"center">&nbsp;</td>
                                <td align=3D"center"><font
                                face=3D"Verdana">&#149;</font></td>
                            </tr>
                        </table>
                        </td>
                    </tr>
                </table>
                </center></div><p align=3D"center"><font size=3D"4"
                face=3D"Verdana">Shipping (2-5 days) to your front
                door is included in this price!<br>
                </font><font size=3D"3" face=3D"Verdana">(Continental
                U.S. Only)</font></p>
                <div align=3D"center"><center><table border=3D"1"
                cellpadding=3D"2" cellspacing=3D"0" bgcolor=3D"#FFFFFF"=
>
                    <tr>
                        <td align=3D"center"><font color=3D"#FF0000"
                        size=3D"5" face=3D"Verdana"><strong>3' x 8'
                        FULL COLOR</strong></font><font size=3D"4"
                        face=3D"Verdana"><br>
                        </font><font size=3D"5" face=3D"Verdana"><stron=
g>PHOTOGRAPHIC
                        BANNER - $150.00<br>
                        </strong></font><font color=3D"#FF0000"
                        size=3D"5" face=3D"Verdana"><strong><img
                        src=3D"http://www.geocities.com/cradsk8er/olive=
usbanner.gif"
                        alt=3D"An Example of our Full Color Photographi=
c Banners"
                        width=3D"300" height=3D"60"></strong></font><fo=
nt
                        color=3D"#FF0000" size=3D"6" face=3D"Verdana"><=
strong><br>
                        </strong></font><font color=3D"#FF0000"
                        size=3D"4" face=3D"Verdana">We can print any
                        image, photo, drawing,<br>
                        or logo onto high quality banner
                        material.<br>
                        FULL PHOTO or FULL PHOTO &amp; TEXT<br>
                        </font><font size=3D"4" face=3D"Verdana">Guaran=
teed
                        5 Years Indoors or 6 Months Outdoors</font></td=
>
                    </tr>
                </table>
                </center></div><p align=3D"center"><font size=3D"3"
                face=3D"Verdana">=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D</font></p>
                <div align=3D"center"><center><table border=3D"1"
                cellpadding=3D"10" cellspacing=3D"0">
                    <tr>
                        <td align=3D"center" bgcolor=3D"#FFFFFF"><font
                        size=3D"6" face=3D"Verdana">Coroplast Signs<br>=

                        </font><font size=3D"5" face=3D"Verdana">18&quo=
t;
                        x 24&quot; from $4.75 each! (Min 100)<br>
                        50 =3D $5.75</font></td>
                    </tr>
                </table>
                </center></div><p align=3D"center"><font size=3D"4"
                face=3D"Verdana">To place an order or get
                additional information, please contact us:</font><font
                face=3D"Verdana"><br>
                </font><a
                href=3D"mailto:ShirtsSignsMore@netscape.net"><font
                size=3D"6" face=3D"Verdana"><strong>ShirtsSignsMore@net=
scape.net</strong></font></a></p>
                <p align=3D"center"><font size=3D"3" face=3D"Verdana"><=
strong>OR
                CALL US TOLL FREE<br>
                </strong></font><font size=3D"6" face=3D"Verdana">1-877=
-503-7415</font></p>
                <p align=3D"center"><font face=3D"Verdana">We are a
                family owned business, operating in Memphis,
                Tennessee for over 29 years.</font></p>
                <p align=3D"center"><font face=3D"Verdana"><strong><br>=

                SIGNATURES</strong><br>
                </font><font size=3D"1" face=3D"Verdana">GIANT
                POSTERS * CORPORATE APPAREL * SIGNS &amp; BANNERS
                * PROMOTIONAL PRODUCTS * TROPHIES &amp; AWARDS</font><f=
ont
                face=3D"Verdana"><br>
                559 S. Highland Street * Memphis, TN 38111 <br>
                901-327-5456</font></p>
                <p align=3D"left"><font size=3D"2" face=3D"Verdana">We
                honor the removal requests that we receive. To be
                removed from future mailings, please email us at </font=
><a
                href=3D"mailto:IAmDisinterested@netscape.net"><font
                size=3D"2" face=3D"Verdana">IAmDisinterested@netscape.n=
et</font></a><font
                size=3D"2" face=3D"Verdana"><b> with your email
                address (or the email address you want removed)
                typed </b><em><b>into the Subject Line</b></em><b>
                of your email.</b> Our system checks the subject
                line for addresses and removes those addresses.
                Please allow 48 hours for your address to be
                removed from our data base. Thank you.<br>
                We apologize for any inconvenience.</font></p>
                </td>
            </tr>
        </table>
        </center></div></td>
    </tr>
</table>
</center></div>
</body>
</html>


------=_NextPart_C34_02E0_79489A34.282FB701--


From CustomPrintGoods@netscape.net Fri Jul 11 18:29:58 2003
Return-Path: <CustomPrintGoods@netscape.net>
Received: from netscape.net ([213.231.82.15])
	by netlib2.cs.utk.edu (8.12.8/8.12.3) with SMTP id h6BMTcSP014341
	for <mpi-comm-archive@netlib2.cs.utk.edu>; Fri, 11 Jul 2003 18:29:47 -0400 (EDT)
Message-ID: <cee201c347f9$7626a9e0$f8f865d6@eqmyt>
Reply-To: CustomPrintGoods@netscape.net
From: CustomPrintGoods@netscape.net
To: "email@email" <mpi-comm-archive@netlib2.cs.utk.edu>
Subject: POSTERS from YOUR PICTURES - $30
Date: Fri, 11 Jul 2003 23:12:05 +0100
MIME-Version: 1.0
Content-Type: multipart/alternative;
	boundary="----=_NextPart_950_D6CD_BC0552A0.0FC5CCF5"
X-Priority: 3
User-Agent: AOL 7.0 for Windows US sub 118


------=_NextPart_950_D6CD_BC0552A0.0FC5CCF5
Content-Type: text/plain;
	charset="iso-8859-1"
Content-Transfer-Encoding: quoted-printable


------=_NextPart_950_D6CD_BC0552A0.0FC5CCF5
Content-Type: text/html;
	charset="iso-8859-1"
Content-Transfer-Encoding: quoted-printable

<html>

<body bgcolor=3D"#FFFFFF">
<div align=3D"center"><center>

<table border=3D"0" cellpadding=3D"0" cellspacing=3D"0" width=3D"100%">=

    <tr>
        <td align=3D"center" colspan=3D"2"><div align=3D"center"><cente=
r><table
        border=3D"0" cellpadding=3D"5" cellspacing=3D"0">
            <tr>
                <td align=3D"center" colspan=3D"2"><font size=3D"4"
                face=3D"Verdana"><strong>POSTERS from YOUR PICTURES
                - $30<br>
                </strong>We are a family owned business in
                Memphis, TN .... since 1974<strong><br>
                </strong></font><font color=3D"#800080" size=3D"4"
                face=3D"Verdana"><u>OUR SPECIALTY IS COMMERCIAL
                WORK</u><strong><u><br>
                </u></strong></font><font size=3D"2" face=3D"Verdana">S=
end
                us <em>Any</em> Picture or Drawing or Artwork -
                We'll make your Poster for $7.00 a square foot</font></=
td>
            </tr>
            <tr>
                <td align=3D"center"><div align=3D"center"><center><tab=
le
                border=3D"2" cellpadding=3D"2" cellspacing=3D"0"
                bgcolor=3D"#FFFFAA" bordercolor=3D"#FF0000">
                    <tr>
                        <td align=3D"center"><font color=3D"#800000"
                        size=3D"5" face=3D"Verdana">22&quot; x
                        28&quot; poster for $30.00<br>
                        </font><font size=3D"4" face=3D"Verdana">Free
                        Shipping for Orders Over $80.00<br>
                        </font><font size=3D"2" face=3D"Verdana">(to
                        the Continental United States only)<br>
                        </font><font color=3D"#000080" size=3D"3"
                        face=3D"Verdana"><strong>shipped in 2-5
                        days</strong></font><font size=3D"4"
                        face=3D"Verdana"><strong><br>
                        </strong></font><font size=3D"3"
                        face=3D"Verdana">(rolled in a protective
                        mailing tube)</font><p><font size=3D"3"
                        face=3D"Verdana"><strong>Minimum Order:
                        $30.00<br>
                        Shipping: $7.50<br>
                        </strong></font><font size=3D"2"
                        face=3D"Verdana">(to the Continental United
                        States)</font></p>
                        </td>
                    </tr>
                </table>
                </center></div></td>
                <td align=3D"center"><font size=3D"2" face=3D"Verdana">=
JUST
                EMAIL YOUR SCANNED IMAGES OR ART AND WE'LL MAIL
                YOUR POSTER IN 2-5 DAYS!</font><p><font size=3D"2"
                face=3D"Verdana">=B0 Family Pictures Can Become
                Attention Getting Wall Art<br>
                =B0 Large Sized Graphic Exhibits<br>
                =B0 Upscale Signage<br>
                =B0 Special Memories<br>
                =B0 Memorable Humorous Moments</font></p>
                <div align=3D"center"><center><table border=3D"1"
                cellspacing=3D"0" bgcolor=3D"#F4F4F4">
                    <tr>
                        <td align=3D"center" valign=3D"top"><font
                        size=3D"2" face=3D"Verdana">20&quot; x
                        25&quot; - $ 24.50</font></td>
                        <td align=3D"center" valign=3D"top"><font
                        size=3D"2" face=3D"Verdana">24&quot; x
                        30&quot; - $ 35.00</font></td>
                    </tr>
                    <tr>
                        <td align=3D"center" valign=3D"top"><font
                        size=3D"2" face=3D"Verdana">20&quot; x
                        28&quot; - $ 27.50</font></td>
                        <td align=3D"center" valign=3D"top"><font
                        size=3D"2" face=3D"Verdana">29&quot; x
                        32&quot; - $ 45.00</font></td>
                    </tr>
                    <tr>
                        <td align=3D"center" valign=3D"top"><font
                        size=3D"2" face=3D"Verdana">22&quot; x
                        28&quot; - $ 30.00</font></td>
                        <td align=3D"center" valign=3D"top"><font
                        size=3D"2" face=3D"Verdana">54&quot; x
                        96&quot; - $252.00</font></td>
                    </tr>
                </table>
                </center></div></td>
            </tr>
        </table>
        </center></div></td>
    </tr>
    <tr>
        <td align=3D"center" valign=3D"top"><div align=3D"center"><cent=
er><table
        border=3D"1" cellpadding=3D"4" cellspacing=3D"0"
        bgcolor=3D"#DCFFB9">
            <tr>
                <td align=3D"center"><font face=3D"Verdana"><strong>DIS=
COUNTS<br>
                (for min. size of 3 sq. ft.)</strong></font><div
                align=3D"center"><center><table border=3D"0"
                cellpadding=3D"2" cellspacing=3D"0" bgcolor=3D"#FFFF97"=
>
                    <tr>
                        <td align=3D"right"><font size=3D"2"
                        face=3D"Verdana"><strong>5 posters =3D</strong>=
</font></td>
                        <td><font size=3D"2" face=3D"Verdana"><strong>$=
6.00
                        per square foot</strong></font></td>
                    </tr>
                    <tr>
                        <td align=3D"right"><font size=3D"2"
                        face=3D"Verdana"><strong>10 posters =3D</strong=
></font></td>
                        <td><font size=3D"2" face=3D"Verdana"><strong>$=
5.50
                        per square foot</strong></font></td>
                    </tr>
                    <tr>
                        <td align=3D"right"><font size=3D"2"
                        face=3D"Verdana"><strong>20 posters up =3D</str=
ong></font></td>
                        <td><font size=3D"2" face=3D"Verdana"><strong>$=
5.00
                        per square foot</strong></font></td>
                    </tr>
                </table>
                </center></div></td>
            </tr>
        </table>
        </center></div><p align=3D"center"><font size=3D"3"
        face=3D"Verdana">Convert your favorite:<br>
        </font><font size=3D"2" face=3D"Verdana">*Action Pictures<br>
        *Team Picture<br>
        *Class Picture<br>
        *Any Picture<br>
        </font><font size=3D"3" face=3D"Verdana"><strong>To a GIANT
        POSTER SIZED PRINT!</strong></font></p>
        </td>
        <td valign=3D"bottom"><div align=3D"center"><center><table
        border=3D"0" cellpadding=3D"5" cellspacing=3D"0">
            <tr>
                <td valign=3D"top"><font face=3D"Verdana">FROM THIS<br>=

                <img
                src=3D"http://www.geocities.com/byeehawman/poster1.jpg"=

                alt=3D"BEFORE PICTURE - IF IMAGE FAILS TO LOAD, PLEASE =
TRY REFRESH"
                width=3D"141" height=3D"159"></font></td>
                <td valign=3D"top"><font face=3D"Verdana">TO THIS (or
                BIGGER!)<br>
                <img
                src=3D"http://www.geocities.com/ayeehawman/poster2.jpg"=

                alt=3D"POSTER PICTURE - IF IMAGE FAILS TO LOAD, PLEASE =
TRY REFRESH"
                width=3D"182" height=3D"234"></font></td>
            </tr>
        </table>
        </center></div></td>
    </tr>
</table>
</center></div><div align=3D"center"><center>

<table border=3D"0" cellpadding=3D"0" cellspacing=3D"0" width=3D"100%"
bgcolor=3D"#FEE9D3">
    <tr>
        <td><blockquote>
            <p align=3D"center"><font size=3D"4" face=3D"Verdana"><stro=
ng>WHAT
            TO DO:<br>
            </strong></font><font size=3D"2" face=3D"Verdana">We are
            a family owned business operating in Memphis,
            Tennessee for over 29 years.</font><font size=3D"4"
            face=3D"Verdana"><strong><br>
            </strong>Please contact us via email:<br>
            </font><a href=3D"mailto:ShirtsSignsMore@netscape.net"><fon=
t
            size=3D"5" face=3D"Verdana"><strong>ShirtsSignsMore@netscap=
e.net</strong></font></a></p>
            <p align=3D"center"><font size=3D"4" face=3D"Verdana"><stro=
ng>or
            call Toll Free: 1-877-503-7415<br>
            </strong>to place an order or get additional
            information.</font></p>
            <p align=3D"center"><font face=3D"Verdana"><strong>SIGNATUR=
ES</strong></font><br>
            <font size=3D"1" face=3D"Arial">GIANT SIZED POSTERS *
            CORPORATE APPAREL * SIGNS &amp; BANNERS * PROMOTIONAL
            PRODUCTS * TROPHIES &amp; AWARDS</font><font size=3D"1"><br=
>
            </font><font face=3D"Arial,Helvetica">559 S. Highland
            Street * Memphis, TN 38111</font> <br>
            <font face=3D"Arial,Helvetica">901-327-5456</font></p>
            <p align=3D"center"><font face=3D"Verdana">Toll Free:
            1-877-503-7415</font></p>
            <p align=3D"center"><font size=3D"2" face=3D"Verdana">We
            are a family owned business operating in Memphis,
            Tennessee for over 29 years.</font></p>
        </blockquote>
        </td>
    </tr>
</table>
</center></div>

<p>&nbsp;</p>

<p>&nbsp;</p>

<p><font size=3D"2" face=3D"Verdana">We honor the removal requests
that we receive.<br>
To be removed from future mailings, please email us at </font><a
href=3D"mailto:IAmDisinterested@netscape.net"><font size=3D"2"
face=3D"Verdana"><strong>IAmDisinterested@netscape.net</strong></font><=
/a><font
size=3D"2" face=3D"Verdana"><strong> with the email address you want
removed </strong><em><strong>in the </strong></em><em><strong><u>Subjec=
t
Line</u></strong></em><em><strong> of your email</strong></em><strong>.=
</strong>
Our system checks the subject line for email addresses and will
remove those addresses. Please allow 48 hours for your address to
be removed from our database.<br>
We apologize for any inconvenience.</font></p>
</body>
</html>


------=_NextPart_950_D6CD_BC0552A0.0FC5CCF5--


From customprintgoods@netscape.net Wed Aug 13 14:02:50 2003
Return-Path: <customprintgoods@netscape.net>
Received: from netscape.net (93.Red-80-35-120.pooles.rima-tde.net [80.35.120.93])
	by netlib2.cs.utk.edu (8.12.8/8.12.3) with SMTP id h7DI2V8b027376
	for <mpi-comm-archive@netlib2.cs.utk.edu>; Wed, 13 Aug 2003 14:02:44 -0400 (EDT)
Message-ID: <4b3a01c361b8$7e3c1790$4137e4b7@kiark>
Reply-To: customprintgoods@netscape.net
From: customprintgoods@netscape.net
To: "email@email" <mpi-comm-archive@netlib2.cs.utk.edu>
Subject: T-SHIRTS $2.10 - WITH IMPRINT
Date: Wed, 13 Aug 2003 18:32:31 +0200
MIME-Version: 1.0
Content-Type: multipart/alternative;
	boundary="----=_NextPart_7D6_767C_8EC48218.2373C81A"
X-Priority: 3
X-MSMail-Priority: Normal
X-Mailer: Microsoft Outlook Express 5.00.2314.1300
X-MimeOLE: Produced By Microsoft MimeOLE V5.00.2314.1300

This is a multi-part message in MIME format.

------=_NextPart_7D6_767C_8EC48218.2373C81A
Content-Type: text/plain;
	charset="iso-8859-1"
Content-Transfer-Encoding: quoted-printable


------=_NextPart_7D6_767C_8EC48218.2373C81A
Content-Type: text/html;
	charset="iso-8859-1"
Content-Transfer-Encoding: quoted-printable

<html>

<body bgcolor=3D"#FFFFFF">

<p align=3D"center"><font size=3D"4" face=3D"Verdana"><strong>T-SHIRTS
$2.10 - WITH IMPRINT</strong></font></p>
<div align=3D"center"><center>

<table border=3D"0" cellpadding=3D"4" cellspacing=3D"0">
    <tr>
        <td align=3D"center" valign=3D"top" bgcolor=3D"#F5F9B0"><font
        size=3D"5" face=3D"Verdana"><strong>Golf Shirts</strong></font>=
</td>
        <td align=3D"center" valign=3D"top" bgcolor=3D"#AFFADC"><font
        size=3D"5" face=3D"Verdana"><strong>T-Shirts</strong></font></t=
d>
    </tr>
    <tr>
        <td align=3D"center" valign=3D"top" bgcolor=3D"#F5F9B0"><font
        size=3D"4" face=3D"Verdana"><strong>EMBROIDERED<br>
        </strong></font><font size=3D"3" face=3D"Verdana"><strong>Price=
s
        Include Your Company Logo</strong></font></td>
        <td align=3D"center" valign=3D"top" bgcolor=3D"#AFFADC"><font
        size=3D"3" face=3D"Verdana"><strong>screen printed<br>
        with your logo</strong></font></td>
    </tr>
    <tr>
        <td align=3D"center" valign=3D"top" bgcolor=3D"#F5F9B0"><font
        size=3D"4" face=3D"Verdana"><strong>$10.95</strong></font></td>=

        <td align=3D"center" valign=3D"top" bgcolor=3D"#AFFADC"><font
        size=3D"4" face=3D"Verdana"><strong>$2.10</strong></font></td>
    </tr>
    <tr>
        <td valign=3D"top" bgcolor=3D"#F5F9B0"><ul>
            <li><font size=3D"3" face=3D"Verdana">Hanes Pique Knit
                Golf Shirts</font></li>
            <li><font size=3D"3" face=3D"Verdana">7 oz.</font></li>
            <li><font size=3D"3" face=3D"Verdana">16 Colors to choose
                from</font></li>
            <li><font size=3D"3" face=3D"Verdana">Min. 24</font></li>
            <li><font size=3D"3" face=3D"Verdana">Contact Us for
                Digitizing</font></li>
        </ul>
        <div align=3D"center"><center><table border=3D"1"
        cellpadding=3D"2" cellspacing=3D"0">
            <tr>
                <td align=3D"center" bgcolor=3D"#FAFCDA"><font
                face=3D"Verdana"><strong>Cutter &amp; Buck Golf
                Shirts</strong> - $24.95<br>
                Min. 36</font></td>
            </tr>
        </table>
        </center></div></td>
        <td valign=3D"top" bgcolor=3D"#AFFADC"><ul>
            <li><font size=3D"3" face=3D"Verdana">500 - $2.10</font></l=
i>
            <li><font size=3D"3" face=3D"Verdana">300 - $2.25</font></l=
i>
            <li><font size=3D"3" face=3D"Verdana">200 - $2.60</font></l=
i>
            <li><font size=3D"3" face=3D"Verdana">100 - $3.15</font></l=
i>
            <li><font size=3D"3" face=3D"Verdana">Minimum Order of 50
                T-Shirts<br>
                available at additional charge</font></li>
            <li><font size=3D"3" face=3D"Verdana">ONE FREE SCREEN</font=
></li>
            <li><font size=3D"3" face=3D"Verdana">Prices include your<b=
r>
                2 COLOR IMPRINT</font></li>
            <li><font size=3D"3" face=3D"Verdana">Hanes White
                Heavyweight<br>
                100% Cotton T-Shirt</font></li>
        </ul>
        </td>
    </tr>
</table>
</center></div>

<p align=3D"center"><font size=3D"4" face=3D"Verdana"><strong>FREE
SCREEN</strong></font></p>

<p align=3D"center"><font size=3D"4" face=3D"Verdana"><strong>To place
an order or get additional information, please contact us:<br>
</strong></font><a href=3D"mailto:ShirtsSignsMore@netscape.net"><font
size=3D"5" face=3D"Verdana"><strong>ShirtsSignsMore@netscape.net</stron=
g></font></a></p>

<p align=3D"center"><font size=3D"3" face=3D"Verdana"><strong>OR CALL
US TOLL FREE<br>
</strong></font><font size=3D"6" face=3D"Verdana">1-877-503-7415</font>=
</p>

<p align=3D"center"><font face=3D"Verdana">We are a family owned
business, operating in Memphis, Tennessee for over 29 years.</font></p>=


<p align=3D"center"><font face=3D"Verdana"><strong><img
src=3D"http://www.geocities.com/yikyok/sig_logo_1974.gif"
width=3D"150" height=3D"72"><br>
SIGNATURES</strong><br>
</font><font size=3D"1" face=3D"Verdana">GIANT SIZED POSTERS *
CORPORATE APPAREL * SIGNS &amp; BANNERS * PROMOTIONAL PRODUCTS *
TROPHIES &amp; AWARDS<br>
</font><font face=3D"Verdana">559 S. Highland Street * Memphis, TN
38111 <br>
901-327-5456</font></p>

<p align=3D"center">&nbsp;</p>

<p align=3D"center">&nbsp;</p>

<p><font size=3D"2" face=3D"Verdana">We honor the removal requests
that we receive.<br>
To be removed from future mailings, please email us at </font><a
href=3D"mailto:IAmDisinterested@netscape.net"><font size=3D"2"
face=3D"Verdana">IAmDisinterested@netscape.net</font></a><font
size=3D"2" face=3D"Verdana"><b> with your email address (or the email
address you want removed) typed </b><b><u>in the </u></b><em><b><u>Subj=
ect
Line</u></b></em><b> of your email.</b> Our system checks the
subject line for addresses and removes them from our database.
Please allow 48 hours for your address to be removed. We
apologize for any inconvenience.</font></p>
</body>
</html>

------=_NextPart_7D6_767C_8EC48218.2373C81A--


From customprintgoods@netscape.net Thu Sep 18 14:51:06 2003
Return-Path: <customprintgoods@netscape.net>
Received: from netscape.net ([200.228.94.4])
	by netlib2.cs.utk.edu (8.12.8/8.12.3) with SMTP id h8IIoxRY014573
	for <mpi-comm-archive@netlib2.cs.utk.edu>; Thu, 18 Sep 2003 14:51:02 -0400 (EDT)
Message-ID: <31ad01c37e0f$17ed6930$dc8c2d85@w>
Reply-To: customprintgoods@netscape.net
From: customprintgoods@netscape.net
To: "email@email" <mpi-comm-archive@netlib2.cs.utk.edu>
Subject: T-SHIRTS $2.10 - WITH IMPRINT
Date: Thu, 18 Sep 2003 20:02:58 +0200
MIME-Version: 1.0
Content-Type: multipart/alternative;
	boundary="----=_NextPart_74A_E52A_E1C56DE3.99E75B73"
X-Priority: 3
X-MSMail-Priority: Normal
X-Mailer: Microsoft Outlook Express 5.50.4133.2400
X-MimeOLE: Produced By Microsoft MimeOLE V5.50.4133.2400

This is a multi-part message in MIME format.

------=_NextPart_74A_E52A_E1C56DE3.99E75B73
Content-Type: text/plain;
	charset="iso-8859-1"
Content-Transfer-Encoding: quoted-printable


------=_NextPart_74A_E52A_E1C56DE3.99E75B73
Content-Type: text/html;
	charset="iso-8859-1"
Content-Transfer-Encoding: quoted-printable

<html>

<body bgcolor=3D"#FFFFFF">

<p align=3D"center"><font size=3D"4" face=3D"Verdana"><strong>T-SHIRTS
$2.10 - WITH IMPRINT<br>
</strong></font><font size=3D"3" face=3D"Verdana">We are a family
owned business in Memphis, TN .... since 1974</font></p>
<div align=3D"center"><center>

<table border=3D"0" cellpadding=3D"4" cellspacing=3D"0">
    <tr>
        <td align=3D"center" valign=3D"top" bgcolor=3D"#F5F9B0"><font
        size=3D"5" face=3D"Verdana"><strong>Golf Shirts</strong></font>=
</td>
        <td align=3D"center" valign=3D"top" bgcolor=3D"#AFFADC"><font
        size=3D"5" face=3D"Verdana"><strong>T-Shirts</strong></font></t=
d>
    </tr>
    <tr>
        <td align=3D"center" valign=3D"top" bgcolor=3D"#F5F9B0"><font
        size=3D"4" face=3D"Verdana"><strong>EMBROIDERED<br>
        </strong></font><font size=3D"3" face=3D"Verdana"><strong>Price=
s
        Include Your Company Logo</strong></font></td>
        <td align=3D"center" valign=3D"top" bgcolor=3D"#AFFADC"><font
        size=3D"3" face=3D"Verdana"><strong>screen printed<br>
        with your logo</strong></font></td>
    </tr>
    <tr>
        <td align=3D"center" valign=3D"top" bgcolor=3D"#F5F9B0"><font
        size=3D"4" face=3D"Verdana"><strong>$10.95</strong></font></td>=

        <td align=3D"center" valign=3D"top" bgcolor=3D"#AFFADC"><font
        size=3D"4" face=3D"Verdana"><strong>$2.10</strong></font></td>
    </tr>
    <tr>
        <td valign=3D"top" bgcolor=3D"#F5F9B0"><ul>
            <li><font size=3D"3" face=3D"Verdana">Hanes Pique Knit
                Golf Shirts</font></li>
            <li><font size=3D"3" face=3D"Verdana">7 oz.</font></li>
            <li><font size=3D"3" face=3D"Verdana">16 Colors to choose
                from</font></li>
            <li><font size=3D"3" face=3D"Verdana">Min. 24</font></li>
            <li><font size=3D"3" face=3D"Verdana">Contact Us for
                Digitizing</font></li>
        </ul>
        <div align=3D"center"><center><table border=3D"1"
        cellpadding=3D"2" cellspacing=3D"0">
            <tr>
                <td align=3D"center" bgcolor=3D"#FAFCDA"><font
                face=3D"Verdana"><strong>Cutter &amp; Buck Golf
                Shirts</strong> - $24.95<br>
                Min. 36</font></td>
            </tr>
        </table>
        </center></div></td>
        <td valign=3D"top" bgcolor=3D"#AFFADC"><ul>
            <li><font size=3D"3" face=3D"Verdana">500 - $2.10</font></l=
i>
            <li><font size=3D"3" face=3D"Verdana">300 - $2.25</font></l=
i>
            <li><font size=3D"3" face=3D"Verdana">200 - $2.60</font></l=
i>
            <li><font size=3D"3" face=3D"Verdana">100 - $3.15</font></l=
i>
            <li><font size=3D"3" face=3D"Verdana">Minimum Order of 50
                T-Shirts<br>
                available at additional charge</font></li>
            <li><font size=3D"3" face=3D"Verdana">ONE FREE SCREEN</font=
></li>
            <li><font size=3D"3" face=3D"Verdana">Prices include your<b=
r>
                2 COLOR IMPRINT</font></li>
            <li><font size=3D"3" face=3D"Verdana">Hanes White
                Heavyweight<br>
                100% Cotton T-Shirt</font></li>
        </ul>
        </td>
    </tr>
</table>
</center></div>

<p align=3D"center"><font size=3D"4" face=3D"Verdana"><strong>FREE
SCREEN</strong></font></p>

<p align=3D"center"><font size=3D"4" face=3D"Verdana"><strong>To place
an order or get additional information, please contact us:<br>
</strong></font><a href=3D"mailto:ShirtsSignsMore@netscape.net"><font
size=3D"5" face=3D"Verdana"><strong>ShirtsSignsMore@netscape.net</stron=
g></font></a></p>

<p align=3D"center"><font size=3D"3" face=3D"Verdana"><strong>OR CALL
US TOLL FREE<br>
</strong></font><font size=3D"6" face=3D"Verdana">1-877-503-7415</font>=
</p>

<p align=3D"center"><font face=3D"Verdana">We are a family owned
business, operating in Memphis, Tennessee for over 29 years.</font></p>=


<p align=3D"center"><font face=3D"Verdana"><strong><img
src=3D"http://www.geocities.com/yikyok/sig_logo_1974.gif"
width=3D"150" height=3D"72"><br>
SIGNATURES</strong><br>
</font><font size=3D"1" face=3D"Verdana">GIANT SIZED POSTERS *
CORPORATE APPAREL * SIGNS &amp; BANNERS * PROMOTIONAL PRODUCTS *
TROPHIES &amp; AWARDS<br>
</font><font face=3D"Verdana">559 S. Highland Street * Memphis, TN
38111 <br>
901-327-5456</font></p>

<p align=3D"center">&nbsp;</p>

<p align=3D"center">&nbsp;</p>

<p><font size=3D"2" face=3D"Verdana">We honor the removal requests
that we receive.<br>
To be removed from future mailings, please email us at </font><a
href=3D"mailto:IAmDisinterested@netscape.net"><font size=3D"2"
face=3D"Verdana">IAmDisinterested@netscape.net</font></a><font
size=3D"2" face=3D"Verdana"><b> with your email address (or the email
address you want removed) typed </b><b><u>in the </u></b><em><b><u>Subj=
ect
Line</u></b></em><b> of your email.</b> Our system checks the
subject line for addresses and removes them from our database.
Please allow 48 hours for your address to be removed. We
apologize for any inconvenience.</font></p>
</body>
</html>


------=_NextPart_74A_E52A_E1C56DE3.99E75B73--


From Promoter@2911.net Mon Sep 22 18:31:05 2003
Return-Path: <Promoter@2911.net>
Received: from 2911.net ([218.86.51.27])
	by netlib2.cs.utk.edu (8.12.8/8.12.3) with SMTP id h8MMV2RY028741
	for <mpi-comm-archive@netlib2.cs.utk.edu>; Mon, 22 Sep 2003 18:31:04 -0400 (EDT)
Message-Id: <200309222231.h8MMV2RY028741@netlib2.cs.utk.edu>
From: "Betty" <Promoter@2911.net>
To: <mpi-comm-archive@netlib2.cs.utk.edu>
Subject: Promoting Your Business
Sender: "Betty" <Promoter@2911.net>
Mime-Version: 1.0
Content-Type: text/plain; charset="ISO-8859-1"
Date: Tue, 23 Sep 2003 06:18:39 +0800
Reply-To: "Betty" <Sales@marketingboosting.com>
Content-Transfer-Encoding: 8bit


Email Marketing is one of the most effective and inexpensive ways to
promote your products and services.

We offer a complete Email Marketing solution with quality service and
the lowest prices. The result is that you will enjoy more success.

1. Targeted Email Addresses 

We can supply targeted email addresses according to your requirements,
which are compiled only on your order. We will customize your customer
email addresses.

* We have millions of email addresses in a wide variety of categories.

2. Targeted Mailing  

If you are worried about any complications or consequences with sending 
out targeted emails, or want to avoid the work of sending out targeted 
emails. We will do it for you!  We can send your email message to your 
targeted customers.

* We can Bullet-Proof your Web Site.

We also offer a wide variety of marketing software. For more details,
you can refer to: www.marketingboosting.com

Our services will help you get more business opportunities.


Regards!

Betty Jones
Customer Support
www.marketingboosting.com
Sales@marketingboosting.com

************************************************************************
Receiving this email because you registered to receive special 
offers from one of our partners. If you would prefer not to receive
future email, click: Http://optin.garyshawkey.com/optin/r.php3
************************************************************************

From customprintgoods@netscape.net Fri Sep 26 21:29:36 2003
Return-Path: <customprintgoods@netscape.net>
Received: from netscape.net (MG021150.user.veloxzone.com.br [200.165.21.150])
	by netlib2.cs.utk.edu (8.12.8/8.12.3) with SMTP id h8R1SYRY024921
	for <mpi-comm-archive@netlib2.cs.utk.edu>; Fri, 26 Sep 2003 21:28:53 -0400 (EDT)
Message-ID: <17ae01c38486$4491dd40$917d5929@h>
Reply-To: customprintgoods@netscape.net
From: customprintgoods@netscape.net
To: "email@email.com" <mpi-comm-archive@netlib2.cs.utk.edu>
Subject: POSTERS from YOUR PICTURES - $30
Date: Fri, 26 Sep 2003 22:31:10 -0100
MIME-Version: 1.0
Content-Type: multipart/alternative;
	boundary="----=_NextPart_529_2B2C_8D7B1D08.744D5B2B"
X-Priority: 3
X-MSMail-Priority: Normal
X-Mailer: Microsoft Outlook Express 5.00.2919.6700
X-MimeOLE: Produced By Microsoft MimeOLE V5.00.2919.6700

This is a multi-part message in MIME format.

------=_NextPart_529_2B2C_8D7B1D08.744D5B2B
Content-Type: text/plain;
	charset="iso-8859-1"
Content-Transfer-Encoding: quoted-printable


------=_NextPart_529_2B2C_8D7B1D08.744D5B2B
Content-Type: text/html;
	charset="iso-8859-1"
Content-Transfer-Encoding: quoted-printable

<html>

<body bgcolor=3D"#FFFFFF">
<div align=3D"center"><center>

<table border=3D"0" cellpadding=3D"0" cellspacing=3D"0" width=3D"100%">=

    <tr>
        <td align=3D"center" colspan=3D"2"><div align=3D"center"><cente=
r><table
        border=3D"0" cellpadding=3D"5" cellspacing=3D"0">
            <tr>
                <td align=3D"center" colspan=3D"2"><font size=3D"4"
                face=3D"Verdana"><strong>POSTERS from YOUR
                PICTURES- $30<br>
                </strong>We are a family owned business in
                Memphis, TN .... since 1974<strong><br>
                </strong></font><font color=3D"#800080" size=3D"4"
                face=3D"Verdana"><u>OUR SPECIALTY IS COMMERCIAL
                WORK</u><strong><u><br>
                </u></strong></font><font size=3D"2" face=3D"Verdana">S=
end
                us <em>Any</em> Picture or Drawing or Artwork -
                We'll make your Poster for $7.00 a square foot</font></=
td>
            </tr>
            <tr>
                <td align=3D"center"><div align=3D"center"><center><tab=
le
                border=3D"2" cellpadding=3D"2" cellspacing=3D"0"
                bgcolor=3D"#FFFFAA" bordercolor=3D"#FF0000">
                    <tr>
                        <td align=3D"center"><font color=3D"#800000"
                        size=3D"5" face=3D"Verdana">22&quot; x
                        28&quot; poster for $30.00<br>
                        </font><font size=3D"4" face=3D"Verdana">Free
                        Shipping for Orders Over $80.00<br>
                        </font><font size=3D"2" face=3D"Verdana">(to
                        the Continental United States only)<br>
                        </font><font color=3D"#000080" size=3D"3"
                        face=3D"Verdana"><strong>shipped in 2-5
                        days</strong></font><font size=3D"4"
                        face=3D"Verdana"><strong><br>
                        </strong></font><font size=3D"3"
                        face=3D"Verdana">(rolled in a protective
                        mailing tube)</font><p><font size=3D"3"
                        face=3D"Verdana"><strong>Minimum Order:
                        $30.00<br>
                        Shipping: $7.50<br>
                        </strong></font><font size=3D"2"
                        face=3D"Verdana">(to the Continental United
                        States)</font></p>
                        </td>
                    </tr>
                </table>
                </center></div></td>
                <td align=3D"center"><font size=3D"2" face=3D"Verdana">=
JUST
                EMAIL YOUR SCANNED IMAGES OR ART AND WE'LL MAIL
                YOUR POSTER IN 2-5 DAYS!</font><p><font size=3D"2"
                face=3D"Verdana">=B0 Family Pictures Can Become
                Attention Getting Wall Art<br>
                =B0 Large Sized Graphic Exhibits<br>
                =B0 Upscale Signage<br>
                =B0 Special Memories<br>
                =B0 Memorable Humorous Moments</font></p>
                <div align=3D"center"><center><table border=3D"1"
                cellspacing=3D"0" bgcolor=3D"#F4F4F4">
                    <tr>
                        <td align=3D"center" valign=3D"top"><font
                        size=3D"2" face=3D"Verdana">20&quot; x
                        25&quot; - $ 24.50</font></td>
                        <td align=3D"center" valign=3D"top"><font
                        size=3D"2" face=3D"Verdana">24&quot; x
                        30&quot; - $ 35.00</font></td>
                    </tr>
                    <tr>
                        <td align=3D"center" valign=3D"top"><font
                        size=3D"2" face=3D"Verdana">20&quot; x
                        28&quot; - $ 27.50</font></td>
                        <td align=3D"center" valign=3D"top"><font
                        size=3D"2" face=3D"Verdana">29&quot; x
                        32&quot; - $ 45.00</font></td>
                    </tr>
                    <tr>
                        <td align=3D"center" valign=3D"top"><font
                        size=3D"2" face=3D"Verdana">22&quot; x
                        28&quot; - $ 30.00</font></td>
                        <td align=3D"center" valign=3D"top"><font
                        size=3D"2" face=3D"Verdana">54&quot; x
                        96&quot; - $252.00</font></td>
                    </tr>
                </table>
                </center></div><p><font color=3D"#FF0000"
                face=3D"Verdana"><strong>LAMINATION: Just $1.50 Per
                Square Foot<br>
                $10 Minimum</strong></font></p>
                </td>
            </tr>
        </table>
        </center></div></td>
    </tr>
    <tr>
        <td align=3D"center" valign=3D"top"><div align=3D"center"><cent=
er><table
        border=3D"1" cellpadding=3D"4" cellspacing=3D"0"
        bgcolor=3D"#DCFFB9">
            <tr>
                <td align=3D"center"><font face=3D"Verdana"><strong>DIS=
COUNTS<br>
                (for min. size of 3 sq. ft.)</strong></font><div
                align=3D"center"><center><table border=3D"0"
                cellpadding=3D"2" cellspacing=3D"0" bgcolor=3D"#FFFF97"=
>
                    <tr>
                        <td align=3D"right"><font size=3D"2"
                        face=3D"Verdana"><strong>5 posters =3D</strong>=
</font></td>
                        <td><font size=3D"2" face=3D"Verdana"><strong>$=
6.00
                        per square foot</strong></font></td>
                    </tr>
                    <tr>
                        <td align=3D"right"><font size=3D"2"
                        face=3D"Verdana"><strong>10 posters =3D</strong=
></font></td>
                        <td><font size=3D"2" face=3D"Verdana"><strong>$=
5.50
                        per square foot</strong></font></td>
                    </tr>
                    <tr>
                        <td align=3D"right"><font size=3D"2"
                        face=3D"Verdana"><strong>20 posters up =3D</str=
ong></font></td>
                        <td><font size=3D"2" face=3D"Verdana"><strong>$=
5.00
                        per square foot</strong></font></td>
                    </tr>
                </table>
                </center></div></td>
            </tr>
        </table>
        </center></div><p align=3D"center"><font size=3D"3"
        face=3D"Verdana">Convert your favorite:<br>
        </font><font size=3D"2" face=3D"Verdana">*Action Pictures<br>
        *Team Picture<br>
        *Class Picture<br>
        *Any Picture<br>
        </font><font size=3D"3" face=3D"Verdana"><strong>To a GIANT
        POSTER SIZED PRINT!</strong></font></p>
        </td>
        <td valign=3D"bottom"><div align=3D"center"><center><table
        border=3D"0" cellpadding=3D"5" cellspacing=3D"0">
            <tr>
                <td valign=3D"top"><font face=3D"Verdana">FROM THIS<br>=

                <img
                src=3D"http://www.geocities.com/aradsk8er/poster1.jpg"
                alt=3D"BEFORE PICTURE - IF IMAGE FAILS TO LOAD, PLEASE =
TRY REFRESH"
                width=3D"141" height=3D"159"></font></td>
                <td valign=3D"top"><font face=3D"Verdana">TO THIS (or
                BIGGER!)<br>
                <img
                src=3D"http://www.geocities.com/aradsk8er/poster2.jpg"
                alt=3D"POSTER PICTURE - IF IMAGE FAILS TO LOAD, PLEASE =
TRY REFRESH"
                width=3D"182" height=3D"234"></font></td>
            </tr>
        </table>
        </center></div></td>
    </tr>
</table>
</center></div>

<p align=3D"center"><font size=3D"4" face=3D"Verdana"><strong>WHAT TO
DO:<br>
</strong></font><font size=3D"2" face=3D"Verdana">We are a family
owned business operating in Memphis, Tennessee for over 29 years.</font=
><font
size=3D"4" face=3D"Verdana"><strong><br>
</strong>Please contact us via email:<br>
</font><a href=3D"mailto:ShirtsSignsMore@netscape.net"><font
size=3D"5" face=3D"Verdana"><strong>ShirtsSignsMore@netscape.net</stron=
g></font></a></p>

<p align=3D"center"><font size=3D"4" face=3D"Verdana"><strong>or call
Toll Free: 1-877-503-7415<br>
</strong>to place an order or get additional information.</font></p>

<p align=3D"center"><font face=3D"Verdana"><strong><br>
<img src=3D"http://www.geocities.com/cradsk8er/sig_logo_1974.gif"
alt=3D"SIGNATURES LOGO" width=3D"150" height=3D"72"><br>
SIGNATURES</strong></font><br>
<font size=3D"1" face=3D"Arial">GIANT SIZED POSTERS * CORPORATE
APPAREL * SIGNS &amp; BANNERS * PROMOTIONAL PRODUCTS * TROPHIES
&amp; AWARDS</font><font size=3D"1"><br>
</font><font face=3D"Arial,Helvetica">559 S. Highland Street *
Memphis, TN 38111</font> <br>
<font face=3D"Arial,Helvetica">901-327-5456</font></p>

<p align=3D"center"><font face=3D"Verdana">Toll Free: 1-877-503-7415</f=
ont></p>

<p align=3D"center"><font size=3D"2" face=3D"Verdana">We are a family
owned business operating in Memphis, Tennessee for over 29 years.</font=
></p>

<p>&nbsp;</p>

<p><font size=3D"2" face=3D"Verdana">We honor the removal requests
that we receive.<br>
To be removed from future mailings, please email us at </font><a
href=3D"mailto:IAmDisinterested@netscape.net"><font size=3D"2"
face=3D"Verdana"><strong>IAmDisinterested@netscape.net</strong></font><=
/a><font
size=3D"2" face=3D"Verdana"><strong> with your email address (or the
email address you want removed) </strong><em><strong>in the </strong></=
em><em><strong><u>Subject
Line</u></strong></em><em><strong> of your email</strong></em><strong>.=
</strong>
Our system checks the subject line for email addresses and will
remove those addresses from our database. Please allow up to 48
hours for your email address to be successfully removed.<br>
We apologize for any inconvenience.</font></p>
</body>
</html>


------=_NextPart_529_2B2C_8D7B1D08.744D5B2B--


From customprintgoods@netscape.net Fri Sep 26 22:29:09 2003
Return-Path: <customprintgoods@netscape.net>
Received: from netscape.net ([61.98.102.85])
	by netlib2.cs.utk.edu (8.12.8/8.12.3) with SMTP id h8R2T4RY025516
	for <mpi-comm-archive@netlib2.cs.utk.edu>; Fri, 26 Sep 2003 22:29:06 -0400 (EDT)
Message-ID: <2e5001c38491$4e9fb680$cf78e074@grigntbmkah>
Reply-To: customprintgoods@netscape.net
From: customprintgoods@netscape.net
To: "email@email" <mpi-comm-archive@netlib2.cs.utk.edu>
Subject: T-SHIRTS $2.10 - WITH IMPRINT
Date: Sat, 27 Sep 2003 00:50:12 +0000
MIME-Version: 1.0
Content-Type: multipart/alternative;
	boundary="----=_NextPart_5F0_4596_FAD39018.54B0652C"
X-Priority: 3
User-Agent: AOL 7.0 for Windows US sub 118


------=_NextPart_5F0_4596_FAD39018.54B0652C
Content-Type: text/plain;
	charset="iso-8859-1"
Content-Transfer-Encoding: quoted-printable


------=_NextPart_5F0_4596_FAD39018.54B0652C
Content-Type: text/html;
	charset="iso-8859-1"
Content-Transfer-Encoding: quoted-printable

<html>

<body bgcolor=3D"#FFFFFF">

<p align=3D"center"><font size=3D"4" face=3D"Verdana"><strong>T-SHIRTS
$2.10 - WITH IMPRINT<br>
</strong></font><font size=3D"3" face=3D"Verdana">We are a family
owned business in Memphis, TN .... since 1974</font></p>
<div align=3D"center"><center>

<table border=3D"0" cellpadding=3D"4" cellspacing=3D"0">
    <tr>
        <td align=3D"center" valign=3D"top" bgcolor=3D"#F5F9B0"><font
        size=3D"5" face=3D"Verdana"><strong>Golf Shirts</strong></font>=
</td>
        <td align=3D"center" valign=3D"top" bgcolor=3D"#AFFADC"><font
        size=3D"5" face=3D"Verdana"><strong>T-Shirts</strong></font></t=
d>
    </tr>
    <tr>
        <td align=3D"center" valign=3D"top" bgcolor=3D"#F5F9B0"><font
        size=3D"4" face=3D"Verdana"><strong>EMBROIDERED<br>
        </strong></font><font size=3D"3" face=3D"Verdana"><strong>Price=
s
        Include Your Company Logo</strong></font></td>
        <td align=3D"center" valign=3D"top" bgcolor=3D"#AFFADC"><font
        size=3D"3" face=3D"Verdana"><strong>screen printed<br>
        with your logo</strong></font></td>
    </tr>
    <tr>
        <td align=3D"center" valign=3D"top" bgcolor=3D"#F5F9B0"><font
        size=3D"4" face=3D"Verdana"><strong>$10.95</strong></font></td>=

        <td align=3D"center" valign=3D"top" bgcolor=3D"#AFFADC"><font
        size=3D"4" face=3D"Verdana"><strong>$2.10</strong></font></td>
    </tr>
    <tr>
        <td valign=3D"top" bgcolor=3D"#F5F9B0"><ul>
            <li><font size=3D"3" face=3D"Verdana">Hanes Pique Knit
                Golf Shirts</font></li>
            <li><font size=3D"3" face=3D"Verdana">7 oz.</font></li>
            <li><font size=3D"3" face=3D"Verdana">16 Colors to choose
                from</font></li>
            <li><font size=3D"3" face=3D"Verdana">Min. 24</font></li>
            <li><font size=3D"3" face=3D"Verdana">Contact Us for
                Digitizing</font></li>
        </ul>
        <div align=3D"center"><center><table border=3D"1"
        cellpadding=3D"2" cellspacing=3D"0">
            <tr>
                <td align=3D"center" bgcolor=3D"#FAFCDA"><font
                face=3D"Verdana"><strong>Cutter &amp; Buck Golf
                Shirts</strong> - $24.95<br>
                Min. 36</font></td>
            </tr>
        </table>
        </center></div></td>
        <td valign=3D"top" bgcolor=3D"#AFFADC"><ul>
            <li><font size=3D"3" face=3D"Verdana">500 - $2.10</font></l=
i>
            <li><font size=3D"3" face=3D"Verdana">300 - $2.25</font></l=
i>
            <li><font size=3D"3" face=3D"Verdana">200 - $2.60</font></l=
i>
            <li><font size=3D"3" face=3D"Verdana">100 - $3.15</font></l=
i>
            <li><font size=3D"3" face=3D"Verdana">Minimum Order of 50
                T-Shirts<br>
                available at additional charge</font></li>
            <li><font size=3D"3" face=3D"Verdana">ONE FREE SCREEN</font=
></li>
            <li><font size=3D"3" face=3D"Verdana">Prices include your<b=
r>
                2 COLOR IMPRINT</font></li>
            <li><font size=3D"3" face=3D"Verdana">Hanes White
                Heavyweight<br>
                100% Cotton T-Shirt</font></li>
        </ul>
        </td>
    </tr>
</table>
</center></div>

<p align=3D"center"><font size=3D"4" face=3D"Verdana"><strong>FREE
SCREEN</strong></font></p>

<p align=3D"center"><font size=3D"4" face=3D"Verdana"><strong>To place
an order or get additional information, please contact us:<br>
</strong></font><a href=3D"mailto:ShirtsSignsMore@netscape.net"><font
size=3D"5" face=3D"Verdana"><strong>ShirtsSignsMore@netscape.net</stron=
g></font></a></p>

<p align=3D"center"><font size=3D"3" face=3D"Verdana"><strong>OR CALL
US TOLL FREE<br>
</strong></font><font size=3D"6" face=3D"Verdana">1-877-503-7415</font>=
</p>

<p align=3D"center"><font face=3D"Verdana">We are a family owned
business, operating in Memphis, Tennessee for over 29 years.</font></p>=


<p align=3D"center"><font face=3D"Verdana"><strong><img
src=3D"http://www.geocities.com/yikyok/sig_logo_1974.gif"
width=3D"150" height=3D"72"><br>
SIGNATURES</strong><br>
</font><font size=3D"1" face=3D"Verdana">GIANT SIZED POSTERS *
CORPORATE APPAREL * SIGNS &amp; BANNERS * PROMOTIONAL PRODUCTS *
TROPHIES &amp; AWARDS<br>
</font><font face=3D"Verdana">559 S. Highland Street * Memphis, TN
38111 <br>
901-327-5456</font></p>

<p align=3D"center">&nbsp;</p>

<p align=3D"center">&nbsp;</p>

<p><font size=3D"2" face=3D"Verdana">We honor the removal requests
that we receive.<br>
To be removed from future mailings, please email us at </font><a
href=3D"mailto:IAmDisinterested@netscape.net"><font size=3D"2"
face=3D"Verdana">IAmDisinterested@netscape.net</font></a><font
size=3D"2" face=3D"Verdana"><b> with your email address (or the email
address you want removed) typed </b><b><u>in the </u></b><em><b><u>Subj=
ect
Line</u></b></em><b> of your email.</b> Our system checks the
subject line for addresses and removes them from our database.
Please allow 48 hours for your address to be removed. We
apologize for any inconvenience.</font></p>
</body>
</html>


------=_NextPart_5F0_4596_FAD39018.54B0652C--


From customprintgoods@netscape.net Wed Oct  8 14:25:19 2003
Return-Path: <customprintgoods@netscape.net>
Received: from netscape.net ([61.99.4.171])
	by netlib2.cs.utk.edu (8.12.8/8.12.3) with SMTP id h98IPERY006520
	for <mpi-comm-archive@netlib2.cs.utk.edu>; Wed, 8 Oct 2003 14:25:16 -0400 (EDT)
Message-ID: <a6a601c38dbb$378b4260$0c29fb1e@fwn>
Reply-To: customprintgoods@netscape.net
From: customprintgoods@netscape.net
To: "Advertising" <mpi-comm-archive@netlib2.cs.utk.edu>
Subject: BANNERS...3X8.....$59....14 oz. vinyl material
Date: Wed, 08 Oct 2003 10:42:52 -0600
MIME-Version: 1.0
Content-Type: multipart/alternative;
	boundary="----=_NextPart_9CE_7B6C_1F92C38D.D04567BD"
X-Priority: 3
User-Agent: AOL 7.0 for Windows US sub 118


------=_NextPart_9CE_7B6C_1F92C38D.D04567BD
Content-Type: text/plain;
	charset="iso-8859-1"
Content-Transfer-Encoding: quoted-printable


------=_NextPart_9CE_7B6C_1F92C38D.D04567BD
Content-Type: text/html;
	charset="iso-8859-1"
Content-Transfer-Encoding: quoted-printable

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
  <title>Signs &amp; Banners</title>
</head>
<body bgcolor=3D"#d5cdfe">
<div align=3D"center">
<center>
<table border=3D"1" cellpadding=3D"9" cellspacing=3D"0" bgcolor=3D"#000=
080">
  <tbody>
    <tr>
      <td>
      <div align=3D"center">
      <center>
      <table border=3D"0" cellpadding=3D"9" cellspacing=3D"0"
 bgcolor=3D"#ffffff">
        <tbody>
          <tr>
            <td align=3D"center"><small
 style=3D"font-weight: bold; color: rgb(51, 51, 255);"><font size=3D"3"=

 face=3D"Verdana"><small>We are a family owned business in Memphis, TN
... since 1974</small></font></small>
            <div align=3D"center">
            <center>
            <table border=3D"1" cellpadding=3D"2" cellspacing=3D"0"
 bgcolor=3D"#ffffff">
              <tbody>
                <tr>
                  <td align=3D"center"><font color=3D"#ff0000" size=3D"=
5"
 face=3D"Verdana"><strong>3' x 8' FULL COLOR</strong></font><font size=3D=
"4"
 face=3D"Verdana"><br>
                  </font><font size=3D"5" face=3D"Verdana"><strong>PHOT=
OGRAPHIC
BANNER - $150.00<br>
                  </strong></font><font color=3D"#ff0000" size=3D"6"
 face=3D"Verdana"><strong><img
 src=3D"http://www.geocities.com/mipmok/flowerbanner.gif"
 alt=3D"FULL COLOR PHOTO BANNER EXAMPLE" height=3D"94" width=3D"250"><b=
r>
                  </strong></font><font color=3D"#ff0000" size=3D"4"
 face=3D"Verdana">We can print any image, photo, drawing,<br>
or logo onto high quality banner material.<br>
FULL PHOTO or FULL PHOTO &amp; TEXT<br>
                  </font><font size=3D"4" face=3D"Verdana">Guaranteed 5=

Years Indoors or 3 Years Outdoors</font></td>
                </tr>
              </tbody>
            </table>
            </center>
            </div>
            <p align=3D"center"><font size=3D"3" face=3D"Verdana">=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D</font></p>
            <div align=3D"center">
            <center>
            <table border=3D"0" cellpadding=3D"3" cellspacing=3D"0"
 width=3D"80%" bgcolor=3D"#000000">
              <tbody>
                <tr>
                  <td align=3D"center">
                  <table border=3D"0" cellpadding=3D"0" cellspacing=3D"=
0"
 width=3D"100%" bgcolor=3D"#ffffff">
                    <tbody>
                      <tr>
                        <td align=3D"center"
 style=3D"background-color: rgb(0, 204, 204);"><font face=3D"Verdana">&=
#8226;</font></td>
                        <td align=3D"center"
 style=3D"background-color: rgb(0, 204, 204);">&nbsp;</td>
                        <td align=3D"center"
 style=3D"background-color: rgb(0, 204, 204);"><font face=3D"Verdana">&=
#8226;</font></td>
                      </tr>
                      <tr>
                        <td style=3D"background-color: rgb(0, 204, 204)=
;">&nbsp;</td>
                        <td align=3D"center"
 style=3D"background-color: rgb(0, 204, 204);"><font size=3D"4"
 face=3D"Verdana"><strong>3' x 8' banner $59 - 5 yr. Guarantee<br>
                        </strong>4 Lines of Text - White Background<br>=

14 oz. vinyl material<br>
(Color Background $85.00)<br>
                        <strong>Guaranteed 5 Years Indoors or Outdoors<=
/strong></font></td>
                        <td align=3D"right"
 style=3D"background-color: rgb(0, 204, 204);">&nbsp;</td>
                      </tr>
                      <tr>
                        <td align=3D"center"
 style=3D"background-color: rgb(0, 204, 204);"><font face=3D"Verdana">&=
#8226;</font></td>
                        <td align=3D"center"
 style=3D"background-color: rgb(0, 204, 204);">&nbsp;</td>
                        <td align=3D"center"
 style=3D"background-color: rgb(0, 204, 204);"><font face=3D"Verdana">&=
#8226;</font></td>
                      </tr>
                    </tbody>
                  </table>
                  </td>
                </tr>
              </tbody>
            </table>
            </center>
            </div>
            <p align=3D"center"><font size=3D"4" face=3D"Verdana">Shipp=
ing
(2-5 days) to your front door is included in this price!<br>
            </font><font size=3D"3" face=3D"Verdana">(Continental U.S. =
Only)</font></p>
            <div align=3D"center">
            <center>
            <table border=3D"1" cellpadding=3D"10" cellspacing=3D"0"
 style=3D"height: 149px; width: 281px;">
              <tbody>
                <tr>
                  <td align=3D"center" bgcolor=3D"#ffffff"
 style=3D"background-color: rgb(255, 255, 153);"><font size=3D"6"
 face=3D"Verdana">Coroplast Signs<br>
                  </font><font size=3D"5" face=3D"Verdana">18" x 24" fr=
om
$4.75 each! (Min 100)<br>
50 =3D $5.75</font></td>
                </tr>
              </tbody>
            </table>
            </center>
            </div>
            <p align=3D"center"><font size=3D"4" face=3D"Verdana">To pl=
ace an
order or get additional information, please contact us:</font><font
 face=3D"Verdana"><br>
            </font><a href=3D"mailto:ShirtsSignsMore@netscape.net"><fon=
t
 size=3D"6" face=3D"Verdana"><strong>BannersSignsMore@netscape.net</str=
ong></font></a></p>
            <p align=3D"center"><font size=3D"3" face=3D"Verdana"><stro=
ng>OR
CALL US <span style=3D"color: rgb(255, 0, 0);">TOLL FREE</span><br>
            </strong></font><font size=3D"6" face=3D"Verdana"
 style=3D"color: rgb(255, 0, 0);">1-877-503-7415</font></p>
            <p align=3D"center"><font face=3D"Verdana">We are a family
owned business, operating in Memphis, Tennessee for over 29 years.<stro=
ng><br>
            <img src=3D"http://www.geocities.com/mipnok/logo.gif"
 alt=3D"Signatures Logo" width=3D"150" height=3D"72"><br>
SIGNATURES</strong><br>
            </font><font size=3D"1" face=3D"Verdana">GIANT POSTERS *
CORPORATE APPAREL * SIGNS &amp; BANNERS * PROMOTIONAL PRODUCTS *
TROPHIES &amp; AWARDS</font><font face=3D"Verdana"><br>
559 S. Highland Street * Memphis, TN 38111 <br>
901-327-5456</font></p>
            <p align=3D"left"><font size=3D"2" face=3D"Verdana">We hono=
r the
removal requests that we receive.<br>
To be removed from future mailings, please email us at </font><a
 href=3D"mailto:IAmDisinterested@netscape.net"><font size=3D"2"
 face=3D"Verdana">IAmDisinterested@netscape.net</font></a><font size=3D=
"2"
 face=3D"Verdana"><b> with your email address (or the email address you=

want removed) typed </b><em><b>into the Subject Line</b></em><b> of
your email.</b> Our system checks the subject line for addresses and
removes those address from our database. Please allow up to 48 hours
for your removal request to be processed. Thank you.<br>
We apologize for any inconvenience.</font></p>
            </td>
          </tr>
        </tbody>
      </table>
      </center>
      </div>
      </td>
    </tr>
  </tbody>
</table>
</center>
</div>
</body>
</html>


------=_NextPart_9CE_7B6C_1F92C38D.D04567BD--


From customprintgoods@netscape.net Wed Oct  8 17:06:58 2003
Return-Path: <customprintgoods@netscape.net>
Received: from netscape.net (ogzc@[61.96.202.190])
	by netlib2.cs.utk.edu (8.12.8/8.12.3) with SMTP id h98L6sRY010855
	for <mpi-comm-archive@netlib2.cs.utk.edu>; Wed, 8 Oct 2003 17:06:56 -0400 (EDT)
Message-ID: <75ed01c38dd1$627434d0$b81966d5@tvxbkhx>
Reply-To: customprintgoods@netscape.net
From: customprintgoods@netscape.net
To: "Purchasing" <mpi-comm-archive@netlib2.cs.utk.edu>
Subject: Full Color Banners...$150....3x8BANNERS...$59.....3x8......14 oz. material
Date: Wed, 08 Oct 2003 14:21:33 -0500
MIME-Version: 1.0
Content-Type: multipart/alternative;
	boundary="----=_NextPart_4DE_08C7_DE1172F9.63C690E7"
X-Priority: 3
X-MSMail-Priority: Normal
X-Mailer: Microsoft Outlook Express 6.00.2462.0000
X-MimeOLE: Produced By Microsoft MimeOLE V6.00.2462.0000

This is a multi-part message in MIME format.

------=_NextPart_4DE_08C7_DE1172F9.63C690E7
Content-Type: text/plain;
	charset="iso-8859-1"
Content-Transfer-Encoding: quoted-printable


------=_NextPart_4DE_08C7_DE1172F9.63C690E7
Content-Type: text/html;
	charset="iso-8859-1"
Content-Transfer-Encoding: quoted-printable

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
  <title>Signs &amp; Banners</title>
</head>
<body bgcolor=3D"#d5cdfe">
<div align=3D"center">
<center>
<table border=3D"1" cellpadding=3D"9" cellspacing=3D"0" bgcolor=3D"#000=
080">
  <tbody>
    <tr>
      <td>
      <div align=3D"center">
      <center>
      <table border=3D"0" cellpadding=3D"9" cellspacing=3D"0"
 bgcolor=3D"#ffffff">
        <tbody>
          <tr>
            <td align=3D"center"><small
 style=3D"font-weight: bold; color: rgb(51, 51, 255);"><font size=3D"3"=

 face=3D"Verdana"><small>We are a family owned business in Memphis, TN
... since 1974</small></font></small>
            <div align=3D"center">
            <center>
            <table border=3D"1" cellpadding=3D"2" cellspacing=3D"0"
 bgcolor=3D"#ffffff">
              <tbody>
                <tr>
                  <td align=3D"center"><font color=3D"#ff0000" size=3D"=
5"
 face=3D"Verdana"><strong>3' x 8' FULL COLOR</strong></font><font size=3D=
"4"
 face=3D"Verdana"><br>
                  </font><font size=3D"5" face=3D"Verdana"><strong>PHOT=
OGRAPHIC
BANNER - $150.00<br>
                  </strong></font><font color=3D"#ff0000" size=3D"6"
 face=3D"Verdana"><strong><img
 src=3D"http://www.geocities.com/mipmok/flowerbanner.gif"
 alt=3D"FULL COLOR PHOTO BANNER EXAMPLE" height=3D"94" width=3D"250"><b=
r>
                  </strong></font><font color=3D"#ff0000" size=3D"4"
 face=3D"Verdana">We can print any image, photo, drawing,<br>
or logo onto high quality banner material.<br>
FULL PHOTO or FULL PHOTO &amp; TEXT<br>
                  </font><font size=3D"4" face=3D"Verdana">Guaranteed 5=

Years Indoors or 3 Years Outdoors</font></td>
                </tr>
              </tbody>
            </table>
            </center>
            </div>
            <p align=3D"center"><font size=3D"3" face=3D"Verdana">=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D</font></p>
            <div align=3D"center">
            <center>
            <table border=3D"0" cellpadding=3D"3" cellspacing=3D"0"
 width=3D"80%" bgcolor=3D"#000000">
              <tbody>
                <tr>
                  <td align=3D"center">
                  <table border=3D"0" cellpadding=3D"0" cellspacing=3D"=
0"
 width=3D"100%" bgcolor=3D"#ffffff">
                    <tbody>
                      <tr>
                        <td align=3D"center"
 style=3D"background-color: rgb(0, 204, 204);"><font face=3D"Verdana">&=
#8226;</font></td>
                        <td align=3D"center"
 style=3D"background-color: rgb(0, 204, 204);">&nbsp;</td>
                        <td align=3D"center"
 style=3D"background-color: rgb(0, 204, 204);"><font face=3D"Verdana">&=
#8226;</font></td>
                      </tr>
                      <tr>
                        <td style=3D"background-color: rgb(0, 204, 204)=
;">&nbsp;</td>
                        <td align=3D"center"
 style=3D"background-color: rgb(0, 204, 204);"><font size=3D"4"
 face=3D"Verdana"><strong>3' x 8' banner $59 - 5 yr. Guarantee<br>
                        </strong>4 Lines of Text - White Background<br>=

14 oz. vinyl material<br>
(Color Background $85.00)<br>
                        <strong>Guaranteed 5 Years Indoors or Outdoors<=
/strong></font></td>
                        <td align=3D"right"
 style=3D"background-color: rgb(0, 204, 204);">&nbsp;</td>
                      </tr>
                      <tr>
                        <td align=3D"center"
 style=3D"background-color: rgb(0, 204, 204);"><font face=3D"Verdana">&=
#8226;</font></td>
                        <td align=3D"center"
 style=3D"background-color: rgb(0, 204, 204);">&nbsp;</td>
                        <td align=3D"center"
 style=3D"background-color: rgb(0, 204, 204);"><font face=3D"Verdana">&=
#8226;</font></td>
                      </tr>
                    </tbody>
                  </table>
                  </td>
                </tr>
              </tbody>
            </table>
            </center>
            </div>
            <p align=3D"center"><font size=3D"4" face=3D"Verdana">Shipp=
ing
(2-5 days) to your front door is included in this price!<br>
            </font><font size=3D"3" face=3D"Verdana">(Continental U.S. =
Only)</font></p>
            <div align=3D"center">
            <center>
            <table border=3D"1" cellpadding=3D"10" cellspacing=3D"0"
 style=3D"height: 149px; width: 281px;">
              <tbody>
                <tr>
                  <td align=3D"center" bgcolor=3D"#ffffff"
 style=3D"background-color: rgb(255, 255, 153);"><font size=3D"6"
 face=3D"Verdana">Coroplast Signs<br>
                  </font><font size=3D"5" face=3D"Verdana">18" x 24" fr=
om
$4.75 each! (Min 100)<br>
50 =3D $5.75</font></td>
                </tr>
              </tbody>
            </table>
            </center>
            </div>
            <p align=3D"center"><font size=3D"4" face=3D"Verdana">To pl=
ace an
order or get additional information, please contact us:</font><font
 face=3D"Verdana"><br>
            </font><a href=3D"mailto:ShirtsSignsMore@netscape.net"><fon=
t
 size=3D"6" face=3D"Verdana"><strong>BannersSignsMore@netscape.net</str=
ong></font></a></p>
            <p align=3D"center"><font size=3D"3" face=3D"Verdana"><stro=
ng>OR
CALL US <span style=3D"color: rgb(255, 0, 0);">TOLL FREE</span><br>
            </strong></font><font size=3D"6" face=3D"Verdana"
 style=3D"color: rgb(255, 0, 0);">1-877-503-7415</font></p>
            <p align=3D"center"><font face=3D"Verdana">We are a family
owned business, operating in Memphis, Tennessee for over 29 years.<stro=
ng><br>
            <img src=3D"http://www.geocities.com/mipnok/logo.gif"
 alt=3D"Signatures Logo" width=3D"150" height=3D"72"><br>
SIGNATURES</strong><br>
            </font><font size=3D"1" face=3D"Verdana">GIANT POSTERS *
CORPORATE APPAREL * SIGNS &amp; BANNERS * PROMOTIONAL PRODUCTS *
TROPHIES &amp; AWARDS</font><font face=3D"Verdana"><br>
559 S. Highland Street * Memphis, TN 38111 <br>
901-327-5456</font></p>
            <p align=3D"left"><font size=3D"2" face=3D"Verdana">We hono=
r the
removal requests that we receive.<br>
To be removed from future mailings, please email us at </font><a
 href=3D"mailto:IAmDisinterested@netscape.net"><font size=3D"2"
 face=3D"Verdana">IAmDisinterested@netscape.net</font></a><font size=3D=
"2"
 face=3D"Verdana"><b> with your email address (or the email address you=

want removed) typed </b><em><b>into the Subject Line</b></em><b> of
your email.</b> Our system checks the subject line for addresses and
removes those address from our database. Please allow up to 48 hours
for your removal request to be processed. Thank you.<br>
We apologize for any inconvenience.</font></p>
            </td>
          </tr>
        </tbody>
      </table>
      </center>
      </div>
      </td>
    </tr>
  </tbody>
</table>
</center>
</div>
</body>
</html>


------=_NextPart_4DE_08C7_DE1172F9.63C690E7--


From promoplacement@excite.com Thu Oct 30 03:32:16 2003
Return-Path: <promoplacement@excite.com>
Received: from nsamail.oslo.nsa.no (nsamail.nsa.no [193.71.12.37])
	by netlib2.cs.utk.edu (8.12.8/8.12.3) with ESMTP id h9U8WBRY028448
	for <mpi-comm-archive@netlib2.cs.utk.edu>; Thu, 30 Oct 2003 03:32:12 -0500 (EST)
Received: from smtp0291.mail.yahoo.com ([200.157.208.11] unverified) by nsamail.oslo.nsa.no with Microsoft SMTPSVC(5.0.2195.6713);
	 Thu, 30 Oct 2003 03:50:45 +0100
Date: Thu, 30 Oct 2003 02:54:57 GMT
From: promoplacement@excite.com
X-Priority: 3
To: mpi-comm-archive@netlib2.cs.utk.edu
Subject: adv:3' x 8' Banner - $59 - Guaranteed Five Years
Mime-Version: 1.0
Content-Type: text/html; charset=us-ascii
Content-Transfer-Encoding: 7bit
Message-ID: <NSAMAIL41jDE4oTk9v70000157c@nsamail.oslo.nsa.no>
X-OriginalArrivalTime: 30 Oct 2003 02:50:48.0171 (UTC) FILETIME=[9F4E8BB0:01C39E90]

<html>


<body bgcolor="#FFFFFF">
<div align="center"><center>

<table border="0" cellpadding="0" cellspacing="0" width="100%">
    <tr>
        <td align="center" colspan="2"><div align="center"><center><table
        border="0" cellpadding="5" cellspacing="0">
            <tr>
                <td align="center" colspan="2"><font size="4"
                face="Verdana"><strong>POSTERS from YOUR
                PICTURES- $30<br>
                </strong>We are a family owned business in
                Memphis, TN .... since 1974<strong><br>
                </strong></font><font color="#800080" size="4"
                face="Verdana"><u>OUR SPECIALTY IS COMMERCIAL
                WORK</u><strong><u><br>
                </u></strong></font><font size="2" face="Verdana">Send
                us <em>Any</em> Picture or Drawing or Artwork -
                We'll make your Poster for $7.00 a square foot</font></td>
            </tr>
            <tr>
                <td align="center"><div align="center"><center><table
                border="2" cellpadding="2" cellspacing="0"
                bgcolor="#FFFFAA" bordercolor="#FF0000">
                    <tr>
                        <td align="center"><font color="#800000"
                        size="5" face="Verdana">22&quot; x
                        28&quot; poster for $30.00<br>
                        </font><font size="4" face="Verdana">Free
                        Shipping for Orders Over $80.00<br>
                        </font><font size="2" face="Verdana">(to
                        the Continental United States only)<br>
                        </font><font color="#000080" size="3"
                        face="Verdana"><strong>shipped in 2-5
                        days</strong></font><font size="4"
                        face="Verdana"><strong><br>
                        </strong></font><font size="3"
                        face="Verdana">(rolled in a protective
                        mailing tube)</font><p><font size="3"
                        face="Verdana"><strong>Minimum Order:
                        $30.00<br>
                        Shipping: $7.50<br>
                        </strong></font><font size="2"
                        face="Verdana">(to the Continental United
                        States)</font></p>
                        </td>
                    </tr>
                </table>
                </center></div></td>
                <td align="center"><font size="2" face="Verdana">JUST
                EMAIL YOUR SCANNED IMAGES OR ART AND WE'LL MAIL
                YOUR POSTER IN 2-5 DAYS!</font><p><font size="2"
                face="Verdana">° Family Pictures Can Become
                Attention Getting Wall Art<br>
                ° Large Sized Graphic Exhibits<br>
                ° Upscale Signage<br>
                ° Special Memories<br>
                ° Memorable Humorous Moments</font></p>
                <div align="center"><center><table border="1"
                cellspacing="0" bgcolor="#F4F4F4">
                    <tr>
                        <td align="center" valign="top"><font
                        size="2" face="Verdana">20&quot; x
                        25&quot; - $ 24.50</font></td>
                        <td align="center" valign="top"><font
                        size="2" face="Verdana">24&quot; x
                        30&quot; - $ 35.00</font></td>
                    </tr>
                    <tr>
                        <td align="center" valign="top"><font
                        size="2" face="Verdana">20&quot; x
                        28&quot; - $ 27.50</font></td>
                        <td align="center" valign="top"><font
                        size="2" face="Verdana">29&quot; x
                        32&quot; - $ 45.00</font></td>
                    </tr>
                    <tr>
                        <td align="center" valign="top"><font
                        size="2" face="Verdana">22&quot; x
                        28&quot; - $ 30.00</font></td>
                        <td align="center" valign="top"><font
                        size="2" face="Verdana">54&quot; x
                        96&quot; - $252.00</font></td>
                    </tr>
                </table>
                </center></div><p><font color="#FF0000"
                face="Verdana"><strong>LAMINATION: Just $1.50 Per
                Square Foot<br>
                $10 Minimum</strong></font></p>
                </td>
            </tr>
        </table>
        </center></div></td>
    </tr>
    <tr>
        <td align="center" valign="top"><div align="center"><center><table
        border="1" cellpadding="4" cellspacing="0"
        bgcolor="#DCFFB9">
            <tr>
                <td align="center"><font face="Verdana"><strong>DISCOUNTS<br>
                (for min. size of 3 sq. ft.)</strong></font><div
                align="center"><center><table border="0"
                cellpadding="2" cellspacing="0" bgcolor="#FFFF97">
                    <tr>
                        <td align="right"><font size="2"
                        face="Verdana"><strong>5 posters =</strong></font></td>
                        <td><font size="2" face="Verdana"><strong>$6.00
                        per square foot</strong></font></td>
                    </tr>
                    <tr>
                        <td align="right"><font size="2"
                        face="Verdana"><strong>10 posters =</strong></font></td>
                        <td><font size="2" face="Verdana"><strong>$5.50
                        per square foot</strong></font></td>
                    </tr>
                    <tr>
                        <td align="right"><font size="2"
                        face="Verdana"><strong>20 posters up =</strong></font></td>
                        <td><font size="2" face="Verdana"><strong>$5.00
                        per square foot</strong></font></td>
                    </tr>
                </table>
                </center></div></td>
            </tr>
        </table>
        </center></div><p align="center"><font size="3"
        face="Verdana">Convert your favorite:<br>
        </font><font size="2" face="Verdana">*Action Pictures<br>
        *Team Picture<br>
        *Class Picture<br>
        *Any Picture<br>
        </font><font size="3" face="Verdana"><strong>To a GIANT
        POSTER SIZED PRINT!</strong></font></p>
        </td>
        <td valign="bottom"><div align="center"><center><table
        border="0" cellpadding="5" cellspacing="0">
            <tr>
                <td valign="top"><font face="Verdana">FROM THIS<br>
                <img
                src="http://www.geocities.com/nerdsmith2000/p1.jpg"
                alt="EXAMPLE PICTURE - BEFORE - if image doesn't load, please try refresh"
                width="141" height="159"></font></td>
                <td valign="top"><font face="Verdana">TO THIS (or
                BIGGER!)<br>
                <img
                src="http://www.geocities.com/nerdsmith2000/p2.jpg"
                alt="EXAMPLE PICTURE - AFTER - if image doesn't load, please try refresh"
                width="182" height="234"></font></td>
            </tr>
        </table>
        </center></div></td>
    </tr>
</table>
</center></div>

<p align="center"><font size="4" face="Verdana"><strong>WHAT TO
DO:<br>
</strong></font><font size="2" face="Verdana">We are a family
owned business operating in Memphis, Tennessee for over 29 years.</font><font
size="4" face="Verdana"><strong><br>
</strong>Please contact us via email:<br>
</font><a href="mailto:JumboPosters@netscape.net"><font
size="5" face="Verdana"><strong>JumboPosters@netscape.net</strong></font></a></p>

<p align="center"><font size="4" face="Verdana"><strong>or call
Toll Free: 1-877-503-7415<br>
</strong>to place an order or get additional information.</font></p>

<p align="center"><font face="Verdana"><strong><br>
<img src="http://www.geocities.com/xuetue/fobs.gif"
alt="SIGNATURES LOGO" width="200" height="100"><br>
SIGNATURES</strong></font><br>
<font size="1" face="Arial">GIANT SIZED POSTERS * CORPORATE
APPAREL * SIGNS &amp; BANNERS * PROMOTIONAL PRODUCTS * TROPHIES
&amp; AWARDS</font><font size="1"><br>
</font><font face="Arial,Helvetica">559 S. Highland Street *
Memphis, TN 38111</font> <br>
<font face="Arial,Helvetica">901-327-5456</font></p>

<p align="center"><font face="Verdana">Toll Free: 1-877-503-7415</font></p>

<p align="center"><font size="2" face="Verdana">We are a family
owned business operating in Memphis, Tennessee for over 29 years.</font></p>

<p>&nbsp;</p>

<p><font size="2" face="Verdana">We honor the removal requests
that we receive.<br>
To be removed from future mailings, please email us at </font><a
href="mailto:IAmDisinterested@netscape.net"><font size="2"
face="Verdana"><strong>IAmDisinterested@netscape.net</strong></font></a><font
size="2" face="Verdana"><strong> with your email address (or the
email address you want removed) </strong><em><strong>in the </strong></em><em><strong><u>Subject
Line</u></strong></em><em><strong> of your email</strong></em><strong>.</strong>
Our system checks the subject line for email addresses and will
remove those addresses from our database. Please allow up to 48
hours for your email address to be successfully removed.<br>
We apologize for any inconvenience.</font></p>
</body>
</html>

From logoprintaihqd@excite.com Fri Nov 14 18:19:11 2003
Return-Path: <logoprintaihqd@excite.com>
Received: from excite.com ([61.153.213.14])
	by netlib2.cs.utk.edu (8.12.8/8.12.3) with SMTP id hAENJ5RY027964
	for <mpi-comm-archive@netlib2.cs.utk.edu>; Fri, 14 Nov 2003 18:19:08 -0500 (EST)
Received: from [19.147.69.173] by smtp.mixedthings.net with QMQP; Fri, 14 Nov 2003 13:19:09 +1000
Received: from unknown (181.51.33.19)
	by mail.gimmicc.net with NNFMP; Fri, 14 Nov 2003 23:10:13 -1100
Received: from unknown (65.56.151.43)
	by qrx.quickslick.com with asmtp; Fri, 14 Nov 2003 12:01:17 +1100
Message-ID: <11f201c3aaec$bfb352b0$137b5c38@yexdewkjxa>
Reply-To: "<logoprint@excite.com>" <logoprintaihqd@excite.com>
From: "<logoprint@excite.com>" <logoprintaihqd@excite.com>
To: <mpi-comm-archive@netlib2.cs.utk.edu>
Subject: adv:   PHOTO POSTERS;  from YOUR pictures..$30
Date: Fri, 14 Nov 2003 22:20:30 +0200
MIME-Version: 1.0
Content-Type: multipart/alternative;
	boundary="----=_NextPart_E0B_80B6_50913B72.E7D48F35"
X-Priority: 3
X-MSMail-Priority: Normal
X-Mailer: Microsoft Outlook Express 5.00.2615.200
X-MimeOLE: Produced By Microsoft MimeOLE V5.00.2615.200

This is a multi-part message in MIME format.

------=_NextPart_E0B_80B6_50913B72.E7D48F35
Content-Type: text/plain;
	charset="iso-8859-1"
Content-Transfer-Encoding: quoted-printable


------=_NextPart_E0B_80B6_50913B72.E7D48F35
Content-Type: text/html;
	charset="iso-8859-1"
Content-Transfer-Encoding: base64

PGh0bWw+DQo8Ym9keSBiZ2NvbG9yPSJBenVyZSIgdGV4dD0iSW5kaWdvIj4NCjxwIGFsaWduPSJj
ZW50ZXIiPjxmb250IGNvbG9yPSJOYXZ5IiBzaXplPSI0IiBmYWNlPSJWZXJkYW5hIj48c3Ryb25n
Pg0KUE9TVEVSUyBmcm9tIFlPVVIgUElDVFVSRVMgJmFtcDsgQVJUIC0gJDMwPC9zdHJvbmc+PC9m
b250PjwvcD4NCjxkaXYgYWxpZ249ImNlbnRlciI+PGNlbnRlcj4NCg0KPHRhYmxlIGJvcmRlcj0i
MCIgY2VsbHBhZGRpbmc9IjAiIGNlbGxzcGFjaW5nPSIwIiB3aWR0aD0iMTAwJSI+DQogICAgPHRy
Pg0KICAgICAgICA8dGQgYWxpZ249ImNlbnRlciIgY29sc3Bhbj0iMyIgd2lkdGg9IjEwMCUiPjxm
b250DQogICAgICAgIHNpemU9IjMiIGZhY2U9IlZlcmRhbmEiPldlIGFyZSBhIGZhbWlseSBvd25l
ZCBidXNpbmVzcyBpbg0KICAgICAgICBNZW1waGlzLCBUTiAuLi4uIHNpbmNlIDE5NzQ8c3Ryb25n
Pjxicj4NCiAgICAgICAgPC9zdHJvbmc+PC9mb250Pjxmb250IGNvbG9yPSIjODAwMDgwIiBzaXpl
PSIzIg0KICAgICAgICBmYWNlPSJWZXJkYW5hIj48dT5PVVIgU1BFQ0lBTFRZIElTIENPTU1FUkNJ
QUwgV09SSzwvdT48c3Ryb25nPjx1Pjxicj4NCiAgICAgICAgPC91Pjwvc3Ryb25nPjwvZm9udD48
Zm9udCBzaXplPSIzIiBmYWNlPSJWZXJkYW5hIj5TZW5kIHVzDQogICAgICAgIDxlbT5Bbnk8L2Vt
PiBQaWN0dXJlIG9yIERyYXdpbmcgb3IgQXJ0d29yazxicj4NCiAgICAgICAgPHN0cm9uZz5XZSds
bCBtYWtlIHlvdXIgUG9zdGVyIGZvciAkNy4wMCBhIHNxdWFyZSBmb290PC9zdHJvbmc+PC9mb250
PjwvdGQ+DQogICAgPC90cj4NCiAgICA8dHI+DQogICAgICAgIDx0ZCB3aWR0aD0iMzMlIj48ZGl2
IGFsaWduPSJjZW50ZXIiPjxjZW50ZXI+PHRhYmxlDQogICAgICAgIGJvcmRlcj0iMiIgY2VsbHBh
ZGRpbmc9IjIiIGNlbGxzcGFjaW5nPSIwIg0KICAgICAgICBiZ2NvbG9yPSIjRkZGRkFBIiBib3Jk
ZXJjb2xvcj0iI0ZGMDAwMCI+DQogICAgICAgICAgICA8dHI+DQogICAgICAgICAgICAgICAgPHRk
IGFsaWduPSJjZW50ZXIiPjxmb250IGNvbG9yPSIjODAwMDAwIiBzaXplPSIzIg0KICAgICAgICAg
ICAgICAgIGZhY2U9IlZlcmRhbmEiPjxzdHJvbmc+MjImcXVvdDsgeCAyOCZxdW90OyBQb3N0ZXIN
CiAgICAgICAgICAgICAgICBmb3IgJDMwLjAwPC9zdHJvbmc+PGJyPg0KICAgICAgICAgICAgICAg
IDwvZm9udD48Zm9udCBjb2xvcj0iI0ZGMDAwMCIgc2l6ZT0iMyINCiAgICAgICAgICAgICAgICBm
YWNlPSJWZXJkYW5hIj48c3Ryb25nPkZyZWUgU2hpcHBpbmcgZm9yIE9yZGVycw0KICAgICAgICAg
ICAgICAgIE92ZXIgJDgwLjAwPGJyPg0KICAgICAgICAgICAgICAgIDwvc3Ryb25nPjwvZm9udD48
Zm9udCBzaXplPSIxIiBmYWNlPSJWZXJkYW5hIj4odG8NCiAgICAgICAgICAgICAgICB0aGUgQ29u
dGluZW50YWwgVW5pdGVkIFN0YXRlcyBvbmx5KTwvZm9udD48Zm9udA0KICAgICAgICAgICAgICAg
IHNpemU9IjIiIGZhY2U9IlZlcmRhbmEiPjxicj4NCiAgICAgICAgICAgICAgICA8L2ZvbnQ+PGZv
bnQgY29sb3I9IiMwMDAwODAiIHNpemU9IjMiDQogICAgICAgICAgICAgICAgZmFjZT0iVmVyZGFu
YSI+PHN0cm9uZz5zaGlwcGVkIGluIDItNSBkYXlzPC9zdHJvbmc+PC9mb250Pjxmb250DQogICAg
ICAgICAgICAgICAgc2l6ZT0iMyIgZmFjZT0iVmVyZGFuYSI+PHN0cm9uZz48YnI+DQogICAgICAg
ICAgICAgICAgPC9zdHJvbmc+PC9mb250Pjxmb250IHNpemU9IjIiIGZhY2U9IlZlcmRhbmEiPihy
b2xsZWQNCiAgICAgICAgICAgICAgICBpbiBhIHByb3RlY3RpdmUgbWFpbGluZyB0dWJlKTxicj4N
CiAgICAgICAgICAgICAgICA8L2ZvbnQ+PGZvbnQgc2l6ZT0iMyIgZmFjZT0iVmVyZGFuYSI+PHN0
cm9uZz5NaW5pbXVtDQogICAgICAgICAgICAgICAgT3JkZXI6ICQzMC4wMDxicj4NCiAgICAgICAg
ICAgICAgICBTaGlwcGluZzogJDcuNTA8YnI+DQogICAgICAgICAgICAgICAgPC9zdHJvbmc+PC9m
b250Pjxmb250IHNpemU9IjEiIGZhY2U9IlZlcmRhbmEiPih0bw0KICAgICAgICAgICAgICAgIHRo
ZSBDb250aW5lbnRhbCBVbml0ZWQgU3RhdGVzIG9ubHkpPC9mb250PjwvdGQ+DQogICAgICAgICAg
ICA8L3RyPg0KICAgICAgICA8L3RhYmxlPg0KICAgICAgICA8L2NlbnRlcj48L2Rpdj48L3RkPg0K
ICAgICAgICA8dGQgYWxpZ249ImNlbnRlciIgd2lkdGg9IjMzJSIgYmdjb2xvcj0iI0ZGRkZGRiI+
PGltZw0KICAgICAgICBzcmM9Imh0dHA6Ly93d3cuZ2VvY2l0aWVzLmNvbS9rdWt1ZXR1ZS9waG9s
ZGluZ3Bvc3Rlci5naWYiDQogICAgICAgIGFsdD0iZnJvbSBTTkFQU0hPVCB0byBGVUxMIFNJWkVE
IFBPU1RFUiIgd2lkdGg9IjQwMCIgaGVpZ2h0PSIxNTAiPjwvdGQ+DQogICAgPC90cj4NCiAgICA8
dHI+DQogICAgICAgIDx0ZCBhbGlnbj0iY2VudGVyIiB3aWR0aD0iMzMlIiBiZ2NvbG9yPSIjRkZG
RkZGIj48Zm9udA0KICAgICAgICBzaXplPSIzIiBmYWNlPSJWZXJkYW5hIj5KPHN0cm9uZz5VU1Qg
RU1BSUwgWU9VUiBTQ0FOTkVEDQogICAgICAgIElNQUdFUyBPUiBBUlQgQU5EIFdFJ0xMIE1BSUwg
WU9VUiBQT1NURVIgSU4gMi01IERBWVMhPC9zdHJvbmc+PC9mb250PjxwPjxmb250DQogICAgICAg
IHNpemU9IjIiIGZhY2U9IlZlcmRhbmEiPrAgRmFtaWx5IFBpY3R1cmVzIENhbiBCZWNvbWUNCiAg
ICAgICAgQXR0ZW50aW9uIEdldHRpbmcgV2FsbCBBcnQ8YnI+DQogICAgICAgILAgTGFyZ2UgU2l6
ZWQgR3JhcGhpYyBFeGhpYml0czxicj4NCiAgICAgICAgsCBVcHNjYWxlIFNpZ25hZ2U8YnI+DQog
ICAgICAgILAgU3BlY2lhbCBNZW1vcmllczxicj4NCiAgICAgICAgsCBNZW1vcmFibGUgSHVtb3Jv
dXMgTW9tZW50czwvZm9udD48L3A+DQogICAgICAgIDwvdGQ+DQogICAgICAgIDx0ZCB3aWR0aD0i
MzMlIj48ZGl2IGFsaWduPSJjZW50ZXIiPjxjZW50ZXI+PHRhYmxlDQogICAgICAgIGJvcmRlcj0i
MSIgY2VsbHNwYWNpbmc9IjAiIGJnY29sb3I9IiNGNEY0RjQiPg0KICAgICAgICAgICAgPHRyPg0K
ICAgICAgICAgICAgICAgIDx0ZCBhbGlnbj0ibWlkZGxlIiB2YWxpZ249InRvcCI+PGZvbnQgc2l6
ZT0iMyINCiAgICAgICAgICAgICAgICBmYWNlPSJWZXJkYW5hIj4yMCZxdW90OyB4IDI1JnF1b3Q7
IC0gJCAyNC41MDwvZm9udD48L3RkPg0KICAgICAgICAgICAgICAgIDx0ZCBhbGlnbj0ibWlkZGxl
IiB2YWxpZ249InRvcCI+PGZvbnQgc2l6ZT0iMyINCiAgICAgICAgICAgICAgICBmYWNlPSJWZXJk
YW5hIj4yNCZxdW90OyB4IDMwJnF1b3Q7IC0gJCAzNS4wMDwvZm9udD48L3RkPg0KICAgICAgICAg
ICAgPC90cj4NCiAgICAgICAgICAgIDx0cj4NCiAgICAgICAgICAgICAgICA8dGQgYWxpZ249Im1p
ZGRsZSIgdmFsaWduPSJ0b3AiPjxmb250IHNpemU9IjMiDQogICAgICAgICAgICAgICAgZmFjZT0i
VmVyZGFuYSI+MjAmcXVvdDsgeCAyOCZxdW90OyAtICQgMjcuNTA8L2ZvbnQ+PC90ZD4NCiAgICAg
ICAgICAgICAgICA8dGQgYWxpZ249Im1pZGRsZSIgdmFsaWduPSJ0b3AiPjxmb250IHNpemU9IjMi
DQogICAgICAgICAgICAgICAgZmFjZT0iVmVyZGFuYSI+MjkmcXVvdDsgeCAzMiZxdW90OyAtICQg
NDUuMDA8L2ZvbnQ+PC90ZD4NCiAgICAgICAgICAgIDwvdHI+DQogICAgICAgICAgICA8dHI+DQog
ICAgICAgICAgICAgICAgPHRkIGFsaWduPSJtaWRkbGUiIHZhbGlnbj0idG9wIj48Zm9udCBzaXpl
PSIzIg0KICAgICAgICAgICAgICAgIGZhY2U9IlZlcmRhbmEiPjIyJnF1b3Q7IHggMjgmcXVvdDsg
LSAkIDMwLjAwPC9mb250PjwvdGQ+DQogICAgICAgICAgICAgICAgPHRkIGFsaWduPSJtaWRkbGUi
IHZhbGlnbj0idG9wIj48Zm9udCBzaXplPSIzIg0KICAgICAgICAgICAgICAgIGZhY2U9IlZlcmRh
bmEiPjU0JnF1b3Q7IHggOTYmcXVvdDsgLSAkMjUyLjAwPC9mb250PjwvdGQ+DQogICAgICAgICAg
ICA8L3RyPg0KICAgICAgICA8L3RhYmxlPg0KICAgICAgICA8L2NlbnRlcj48L2Rpdj48cCBhbGln
bj0iY2VudGVyIj48Zm9udCBjb2xvcj0iI0ZGMDAwMCINCiAgICAgICAgc2l6ZT0iMyIgZmFjZT0i
VmVyZGFuYSI+PHN0cm9uZz5MQU1JTkFUSU9OOiBKdXN0ICQxLjUwDQogICAgICAgIFBlciBTcXVh
cmUgRm9vdDxicj4NCiAgICAgICAgJDEwIE1pbmltdW08L3N0cm9uZz48L2ZvbnQ+PC9wPg0KICAg
ICAgICA8ZGl2IGFsaWduPSJjZW50ZXIiPjxjZW50ZXI+PHRhYmxlIGJvcmRlcj0iMSINCiAgICAg
ICAgY2VsbHBhZGRpbmc9IjQiIGNlbGxzcGFjaW5nPSIwIiBiZ2NvbG9yPSIjRENGRkI5Ij4NCiAg
ICAgICAgICAgIDx0cj4NCiAgICAgICAgICAgICAgICA8dGQgYWxpZ249ImNlbnRlciI+PGZvbnQg
c2l6ZT0iMiIgZmFjZT0iVmVyZGFuYSI+PHN0cm9uZz5DT05WRVJUDQogICAgICAgICAgICAgICAg
WU9VUjxicj4NCiAgICAgICAgICAgICAgICBGQVZPUklURTo8L3N0cm9uZz48L2ZvbnQ+PGZvbnQg
c2l6ZT0iMSINCiAgICAgICAgICAgICAgICBmYWNlPSJWZXJkYW5hIj48YnI+DQogICAgICAgICAg
ICAgICAgKkFjdGlvbiBQaWN0dXJlczxicj4NCiAgICAgICAgICAgICAgICAqVGVhbSBQaWN0dXJl
PGJyPg0KICAgICAgICAgICAgICAgICpDbGFzcyBQaWN0dXJlPGJyPg0KICAgICAgICAgICAgICAg
ICpBbnkgUGljdHVyZTxicj4NCiAgICAgICAgICAgICAgICA8L2ZvbnQ+PGZvbnQgc2l6ZT0iMyIg
ZmFjZT0iVmVyZGFuYSI+PHN0cm9uZz5UbyBhDQogICAgICAgICAgICAgICAgR0lBTlQgUE9TVEVS
IFNJWkVEIFBSSU5UPC9zdHJvbmc+PC9mb250PjwvdGQ+DQogICAgICAgICAgICAgICAgPHRkIGFs
aWduPSJjZW50ZXIiPjxmb250IHNpemU9IjEiIGZhY2U9IlZlcmRhbmEiPjxzdHJvbmc+RElTQ09V
TlRTPGJyPg0KICAgICAgICAgICAgICAgIChmb3IgbWluLiBzaXplIG9mIDMgc3EuIGZ0Lik8L3N0
cm9uZz4gPC9mb250PjxkaXYNCiAgICAgICAgICAgICAgICBhbGlnbj0iY2VudGVyIj48Y2VudGVy
Pjx0YWJsZSBib3JkZXI9IjAiDQogICAgICAgICAgICAgICAgY2VsbHBhZGRpbmc9IjIiIGNlbGxz
cGFjaW5nPSIwIiBiZ2NvbG9yPSIjRkZGRjk3Ij4NCiAgICAgICAgICAgICAgICAgICAgPHRyPg0K
ICAgICAgICAgICAgICAgICAgICAgICAgPHRkIGFsaWduPSJjZW50ZXIiPjxmb250IHNpemU9IjEi
DQogICAgICAgICAgICAgICAgICAgICAgICBmYWNlPSJWZXJkYW5hIj48c3Ryb25nPjUgcG9zdGVy
cyA9PC9zdHJvbmc+PC9mb250PjwvdGQ+DQogICAgICAgICAgICAgICAgICAgICAgICA8dGQgYWxp
Z249ImNlbnRlciI+PGZvbnQgc2l6ZT0iMSINCiAgICAgICAgICAgICAgICAgICAgICAgIGZhY2U9
IlZlcmRhbmEiPjxzdHJvbmc+JDYuMDAgcGVyIHNxdWFyZQ0KICAgICAgICAgICAgICAgICAgICAg
ICAgZm9vdDwvc3Ryb25nPjwvZm9udD48L3RkPg0KICAgICAgICAgICAgICAgICAgICA8L3RyPg0K
ICAgICAgICAgICAgICAgICAgICA8dHI+DQogICAgICAgICAgICAgICAgICAgICAgICA8dGQgYWxp
Z249ImNlbnRlciI+PGZvbnQgc2l6ZT0iMSINCiAgICAgICAgICAgICAgICAgICAgICAgIGZhY2U9
IlZlcmRhbmEiPjxzdHJvbmc+MTAgcG9zdGVycyA9PC9zdHJvbmc+PC9mb250PjwvdGQ+DQogICAg
ICAgICAgICAgICAgICAgICAgICA8dGQgYWxpZ249ImNlbnRlciI+PGZvbnQgc2l6ZT0iMSINCiAg
ICAgICAgICAgICAgICAgICAgICAgIGZhY2U9IlZlcmRhbmEiPjxzdHJvbmc+JDUuNTAgcGVyIHNx
dWFyZQ0KICAgICAgICAgICAgICAgICAgICAgICAgZm9vdDwvc3Ryb25nPjwvZm9udD48L3RkPg0K
ICAgICAgICAgICAgICAgICAgICA8L3RyPg0KICAgICAgICAgICAgICAgICAgICA8dHI+DQogICAg
ICAgICAgICAgICAgICAgICAgICA8dGQgYWxpZ249ImNlbnRlciI+PGZvbnQgc2l6ZT0iMSINCiAg
ICAgICAgICAgICAgICAgICAgICAgIGZhY2U9IlZlcmRhbmEiPjxzdHJvbmc+MjAgcG9zdGVycyB1
cCA9PC9zdHJvbmc+PC9mb250PjwvdGQ+DQogICAgICAgICAgICAgICAgICAgICAgICA8dGQgYWxp
Z249ImNlbnRlciI+PGZvbnQgc2l6ZT0iMSINCiAgICAgICAgICAgICAgICAgICAgICAgIGZhY2U9
IlZlcmRhbmEiPjxzdHJvbmc+JDUuMDAgcGVyIHNxdWFyZQ0KICAgICAgICAgICAgICAgICAgICAg
ICAgZm9vdDwvc3Ryb25nPjwvZm9udD48L3RkPg0KICAgICAgICAgICAgICAgICAgICA8L3RyPg0K
ICAgICAgICAgICAgICAgIDwvdGFibGU+DQogICAgICAgICAgICAgICAgPC9jZW50ZXI+PC9kaXY+
PC90ZD4NCiAgICAgICAgICAgIDwvdHI+DQogICAgICAgIDwvdGFibGU+DQogICAgICAgIDwvY2Vu
dGVyPjwvZGl2PjwvdGQ+DQogICAgPC90cj4NCjwvdGFibGU+DQo8L2NlbnRlcj48L2Rpdj4NCg0K
PHAgYWxpZ249ImNlbnRlciI+PGZvbnQgc2l6ZT0iNSIgZmFjZT0iVmVyZGFuYSI+VG8gcGxhY2Ug
YW4gb3JkZXINCm9yIGdldCBhZGRpdGlvbmFsPGJyPg0KaW5mb3JtYXRpb24sIHBsZWFzZSBjb250
YWN0IHVzOjwvZm9udD48Zm9udCBzaXplPSI0Ig0KZmFjZT0iVmVyZGFuYSI+PGJyPg0KPC9mb250
PjxhIGhyZWY9Im1haWx0bzpKdW1ib1Bvc3RlcnNAbmV0c2NhcGUubmV0Ij48Zm9udCBzaXplPSI2
Ig0KZmFjZT0iVmVyZGFuYSI+PHN0cm9uZz5KdW1ib1Bvc3RlcnNAbmV0c2NhcGUubmV0PC9zdHJv
bmc+PC9mb250PjwvYT48Zm9udA0Kc2l6ZT0iNiIgZmFjZT0iVmVyZGFuYSI+PHN0cm9uZz48YnI+
DQo8L3N0cm9uZz48L2ZvbnQ+PGZvbnQgc2l6ZT0iNCIgZmFjZT0iVmVyZGFuYSI+PHN0cm9uZz5v
ciBjYWxsDQpUb2xsIEZyZWU6IDEtODc3LTUwMy03NDE1PGJyPg0KPC9zdHJvbmc+PC9mb250Pjwv
cD4NCjxkaXYgYWxpZ249ImNlbnRlciI+PGNlbnRlcj4NCg0KPHRhYmxlIGJvcmRlcj0iMSIgY2Vs
bHBhZGRpbmc9IjUiIGNlbGxzcGFjaW5nPSIwIg0KYmdjb2xvcj0iI0ZGRkZGRiI+DQogICAgPHRy
Pg0KICAgICAgICA8dGQgYmdjb2xvcj0iI0ZGRkZGRiI+PHAgYWxpZ249ImNlbnRlciI+PGZvbnQN
CiAgICAgICAgZmFjZT0iVmVyZGFuYSI+PHN0cm9uZz4NCjxpbWcgc3JjPSJodHRwOi8vd3d3Lmdl
b2NpdGllcy5jb20veHVldHVlL2ZvYnMuZ2lmIiBhbHQ9IlNJR05BVFVSRVMgTE9HTyAtIEEgZmFt
aWx5IG93bmVkIGJ1c2luZXNzIHNpbmNlIDE5NzQiIHdpZHRoPSIyMDAiIGhlaWdodD0iMTAwIj4N
Cjxicj4NCiAgICAgICAgU0lHTkFUVVJFUzwvc3Ryb25nPjwvZm9udD48YnI+DQogICAgICAgIDxm
b250IHNpemU9IjEiIGZhY2U9IkFyaWFsIj5HSUFOVCBTSVpFRCBQT1NURVJTICoNCiAgICAgICAg
Q09SUE9SQVRFIEFQUEFSRUwgKiBTSUdOUyAmYW1wOyBCQU5ORVJTICogUFJPTU9USU9OQUwNCiAg
ICAgICAgUFJPRFVDVFMgKiBUUk9QSElFUyAmYW1wOyBBV0FSRFM8L2ZvbnQ+PGZvbnQgc2l6ZT0i
MSI+PGJyPg0KICAgICAgICA8L2ZvbnQ+PGZvbnQgZmFjZT0iQXJpYWwsSGVsdmV0aWNhIj41NTkg
Uy4gSGlnaGxhbmQNCiAgICAgICAgU3RyZWV0ICogTWVtcGhpcywgVE4gMzgxMTE8L2ZvbnQ+IDxi
cj4NCiAgICAgICAgPGZvbnQgZmFjZT0iQXJpYWwsSGVsdmV0aWNhIj45MDEtMzI3LTU0NTY8L2Zv
bnQ+PC9wPg0KICAgICAgICA8cCBhbGlnbj0iY2VudGVyIj48Zm9udCBmYWNlPSJWZXJkYW5hIj5U
b2xsIEZyZWU6DQogICAgICAgIDEtODc3LTUwMy03NDE1PC9mb250Pjxmb250IHNpemU9IjIiIGZh
Y2U9IlZlcmRhbmEiPjxicj4NCiAgICAgICAgV2UgYXJlIGEgZmFtaWx5IG93bmVkIGJ1c2luZXNz
IG9wZXJhdGluZyBpbiBNZW1waGlzLA0KICAgICAgICBUZW5uZXNzZWUgZm9yIG92ZXIgMjkgeWVh
cnMuPC9mb250PjwvcD4NCiAgICAgICAgPC90ZD4NCiAgICA8L3RyPg0KPC90YWJsZT4NCjwvY2Vu
dGVyPjwvZGl2Pg0KDQo8cCBhbGlnbj0iY2VudGVyIj4mbmJzcDs8L3A+DQoNCjxwPiZuYnNwOzwv
cD4NCg0KPHA+PGZvbnQgc2l6ZT0iMiIgZmFjZT0iVmVyZGFuYSI+V2UgaG9ub3IgdGhlIHJlbW92
YWwgcmVxdWVzdHMNCnRoYXQgd2UgcmVjZWl2ZS48YnI+DQpUbyBiZSByZW1vdmVkIGZyb20gZnV0
dXJlIG1haWxpbmdzLCBwbGVhc2UgZW1haWwgdXMgYXQgPC9mb250PjxhDQpocmVmPSJtYWlsdG86
SUFtRGlzaW50ZXJlc3RlZEBuZXRzY2FwZS5uZXQiPjxmb250IHNpemU9IjIiDQpmYWNlPSJWZXJk
YW5hIj48c3Ryb25nPklBbURpc2ludGVyZXN0ZWRAbmV0c2NhcGUubmV0PC9zdHJvbmc+PC9mb250
PjwvYT48Zm9udA0Kc2l6ZT0iMiIgZmFjZT0iVmVyZGFuYSI+PHN0cm9uZz4gd2l0aCB5b3VyIGVt
YWlsIGFkZHJlc3MgKG9yIHRoZQ0KZW1haWwgYWRkcmVzcyB5b3Ugd2FudCByZW1vdmVkKSA8L3N0
cm9uZz48ZW0+PHN0cm9uZz5pbiB0aGUgPC9zdHJvbmc+PC9lbT48ZW0+PHN0cm9uZz48dT5TdWJq
ZWN0DQpMaW5lPC91Pjwvc3Ryb25nPjwvZW0+PGVtPjxzdHJvbmc+IG9mIHlvdXIgZW1haWw8L3N0
cm9uZz48L2VtPjxzdHJvbmc+Ljwvc3Ryb25nPg0KT3VyIHN5c3RlbSBjaGVja3MgdGhlIHN1Ympl
Y3QgbGluZSBmb3IgZW1haWwgYWRkcmVzc2VzIGFuZCB3aWxsDQpyZW1vdmUgdGhvc2UgYWRkcmVz
c2VzIGZyb20gb3VyIGRhdGFiYXNlLiBQbGVhc2UgYWxsb3cgdXAgdG8gNDgNCmhvdXJzIGZvciB5
b3VyIGVtYWlsIGFkZHJlc3MgdG8gYmUgc3VjY2Vzc2Z1bGx5IHJlbW92ZWQuPGJyPg0KV2UgYXBv
bG9naXplIGZvciBhbnkgaW5jb252ZW5pZW5jZS48L2ZvbnQ+PC9wPg0KDQo8cD48YnI+DQo8YnI+
DQo8YnI+DQo8YnI+DQo8YnI+DQo8YnI+DQo8YnI+DQo8YnI+DQo8L3A+DQoNCjx0YWJsZSBib3Jk
ZXI9IjAiIGNlbGxwYWRkaW5nPSIwIiBjZWxsc3BhY2luZz0iMCIgd2lkdGg9IjEwMCUiDQpiZ2Nv
bG9yPSIjRkZGRkZGIj4NCiAgICA8dHI+DQogICAgICAgIDx0ZD48Zm9udCBjb2xvcj0iI0ZGRkZG
RiI+V3BiZHlncGtjczwvZm9udD48L3RkPg0KICAgIDwvdHI+DQo8L3RhYmxlPg0KPC9ib2R5Pg0K
PC9odG1sPg0K

------=_NextPart_E0B_80B6_50913B72.E7D48F35--


From BulkSales@2911.net Mon Nov 24 23:53:20 2003
Return-Path: <BulkSales@2911.net>
Received: from 160.36.58.108 ([218.6.2.20])
	by netlib2.cs.utk.edu (8.12.8/8.12.3) with SMTP id hAP4rHRY029799
	for <mpi-comm-archive@netlib2.cs.utk.edu>; Mon, 24 Nov 2003 23:53:19 -0500 (EST)
Message-ID: <PTYRLLUXRQHXIOWXJLZHQCLZWIIKYZ@160.36.58.108>
From: "Host" <BulkSales@2911.net>
To: mpi-comm-archive@netlib2.cs.utk.edu
X-MS-QBO: PARZARJROX
Date: Tue, 25 Nov 03 12:44:00 ÖÐ¹ú±ê×¼Ê±¼ä
X-Priority: 1
X-MSMail-Priority: High
Subject: Bullet Proof Web Hosting & Server
X-Mailer: Microsoft Outlook Express 5.50.4522.1200
MIME-Version: 1.0
Content-Type: multipart/mixed; boundary=WC_MAIL_PaRt_BoUnDaRy_05151998

This is a multi-part message in MIME format.

--WC_MAIL_PaRt_BoUnDaRy_05151998
Content-Type: text/plain
Content-Transfer-Encoding: 7Bit

We offer reliable bulk email friendly web hosting services. You can now
havethe peace of mind knowing that your web site is secure during your email 
marketing campaigns. 

Bullet-Proof Web Hosting 100% Guaranteed! We guarantee that your site
will be 99% uptime. 

                   Hosting Features:

                   Your own Web address:  www.YourName.com 

                   Dedicated 100 M fiber
                  100MB of disk space 
                   Unlimited Data Transfer
                   FTP Support 
                   FrontPage Support

                   ASP Support 
                   PERL Support 
                   PHP Support
                   CGI Support

                   No Setup Fee
                   US$199.00/month


We also offer Bullet-Proof dedicated servers:

                   1. 

                   Two IPs
                  1024MB RAM DDR
                   PIIII / Two CPU
                   120 GB SCS
                   Intel 82559 LAN /(2U)
                   Unlimited Data Transfer
                   Linux / Windows / FreeBSD

                   Price:   No setup fee 
                                US$ 599.00/month


                   2.   

                   Dynamic  IP
                  1024MB RAM DDR
                   PIIII / Two CPU
                   120 GB SCS
                   Intel 82559 LAN /(2U)
                   Unlimited Data Transfer
                   Linux / Windows / FreeBSD

                   Price:   No setup fee 
                                US$ 999.00/month


Allowed Usage
You can use the server for any of the following:

Direct Bulk Mailing or Proxy Mailing 
Web Site Hosting 
Proxy, Relay or Port Scanning

We can supply targeted email addresses according to your requirements,
Send out Targeted Emails for you

We looking forward to serving you in the near future.

PS: Please contact us by Emaildata@163.com


Cheers!

Betty Jones
Support Teams

mbWNzzISKFtiFcx
--WC_MAIL_PaRt_BoUnDaRy_05151998--


From Marketinglist@freemail.soim.com Tue Dec  9 15:33:20 2003
Return-Path: <Marketinglist@freemail.soim.com>
Received: from freemail.soim.com ([218.6.25.209])
	by netlib2.cs.utk.edu (8.12.8/8.12.3) with SMTP id hB9KXEMN004271
	for <mpi-comm-archive@netlib2.cs.utk.edu>; Tue, 9 Dec 2003 15:33:17 -0500 (EST)
Message-Id: <200312092033.hB9KXEMN004271@netlib2.cs.utk.edu>
From: "Info" <Marketinglist@freemail.soim.com>
To: <mpi-comm-archive@netlib2.cs.utk.edu>
Subject: Marketing Service
Sender: "Info" <Marketinglist@freemail.soim.com>
Mime-Version: 1.0
Content-Type: text/plain; charset="ISO-8859-1"
Date: Wed, 10 Dec 2003 04:38:04 +0800
Reply-To: "Info" <Vikas@eyou.com>
Content-Transfer-Encoding: 8bit

Email Marketing is one of the most effective and inexpensive ways to
promote your products and services.

We offer a complete Email Marketing solution with quality service and
the lowest prices. The result is that you will enjoy more success.

1. Targeted Email Addresses

We can supply targeted email addresses according to your requirements,
which are compiled only on your order. We will customize your customer
email addresses.

* We have millions of email addresses in a wide variety of categories.

2. Send out Targeted Emails for you

If you are worried about any complications or consequences with sending
out targeted emails, or want to avoid the work of sending out targeted
emails. We will do it for you!  We can send your email message to your
targeted customers.

* We can Bullet-Proof your Web Site.

We also offer a wide variety of marketing software. For more details, you
can refer to: Http://www.Marketing-Promote.com

Looking forward to serving you, and your business needs!


Regards!

Steve Gellman
Marketing Support
www.Marketing-Promote.com

************************************************************************
Receiving this email because you registered to receive special 
offers from one of our partners.To purge your address from our 
list: http://remove.better-delivery.com
************************************************************************

From promoplacement@excite.com Mon Dec 15 09:05:22 2003
Return-Path: <promoplacement@excite.com>
Received: from excite.com (YahooBB218122024045.bbtec.net [218.122.24.45])
	by netlib2.cs.utk.edu (8.12.8/8.12.3) with SMTP id hBFE5IMN022170
	for <mpi-comm-archive@netlib2.cs.utk.edu>; Mon, 15 Dec 2003 09:05:20 -0500 (EST)
Message-ID: <6d6701c3c2fc$c2f466d0$134396ae@qn>
Reply-To: promoplacement@excite.com
From: promoplacement@excite.com
To: "Human Resources" <mpi-comm-archive@netlib2.cs.utk.edu>
Subject: adv: 3' x 8' Banner - $59.00 - 5 Year Guarantee
Date: Mon, 15 Dec 2003 01:15:35 -1000
MIME-Version: 1.0
Content-Type: multipart/alternative;
	boundary="----=_NextPart_59D_8551_C40D9ED2.133AC90E"
X-Priority: 3
User-Agent: 


------=_NextPart_59D_8551_C40D9ED2.133AC90E
Content-Type: text/plain;
	charset="iso-8859-1"
Content-Transfer-Encoding: quoted-printable


------=_NextPart_59D_8551_C40D9ED2.133AC90E
Content-Type: text/html;
	charset="iso-8859-1"
Content-Transfer-Encoding: quoted-printable

<html>
<body bgcolor=3D"Azure">

<p align=3D"center"><font color=3D"Sienna" size=3D"3" face=3D"Verdana">=
<strong>We
are a family owned business in Memphis, TN .... since 1974</strong></fo=
nt></p>
<div align=3D"center"><center>

<table border=3D"1" cellpadding=3D"2" cellspacing=3D"0"
bgcolor=3D"Greenyellow">
    <tr>
        <td align=3D"center"><font
        color=3D"#FF0000" size=3D"5" face=3D"Verdana"><strong>3' x 8'
        FULL COLOR</strong></font><font size=3D"4" face=3D"Verdana"><br=
>
        </font><font size=3D"5" face=3D"Verdana"><strong>PHOTOGRAPHIC
        BANNER - $150.00</strong></font>
<BR>
<img src=3D"http://www.geocities.com/fuetue/photobanOIL.gif" width=3D"4=
00" height=3D"150" alt=3D"SAMPLE BANNER">
<br>
        <font color=3D"#FF0000" size=3D"4" face=3D"Verdana">SAMPLE BANN=
ER<br>We can
        print any image, photo, drawing,<br>
        or logo onto high quality banner material.<br>
        FULL PHOTO or FULL PHOTO &amp; TEXT<br>
        </font><font size=3D"4" face=3D"Verdana">Guaranteed 5 Years
        Indoors or 3 Years Outdoors</font></td>
    </tr>
</table>
</center></div>

<p align=3D"center"><font color=3D"#FFFF00">=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D</font></p>
<div align=3D"center"><center>

<table border=3D"0" cellpadding=3D"3" cellspacing=3D"0" width=3D"80%"
bgcolor=3D"#000000">
    <tr>
        <td align=3D"center"><table border=3D"0" cellpadding=3D"0"
        cellspacing=3D"0" width=3D"100%" bgcolor=3D"#FFFFFF">
            <tr>
                <td align=3D"center"><font face=3D"Verdana">&#149;</fon=
t></td>
                <td align=3D"center">&nbsp;</td>
                <td align=3D"center"><font face=3D"Verdana">&#149;</fon=
t></td>
            </tr>
            <tr>
                <td>&nbsp;</td>
                <td align=3D"center"><font size=3D"5" face=3D"Verdana">=
<strong>3'
                x 8' banner $59 - 5 yr. Guarantee<br>
                </strong></font><font size=3D"4" face=3D"Verdana">4
                Lines of Text - White Background<br>
                (Color Background $85.00)<br>
                <strong>Guaranteed 5 Years Indoors or Outdoors</strong>=
</font></td>
                <td align=3D"right">&nbsp;</td>
            </tr>
            <tr>
                <td align=3D"center"><font face=3D"Verdana">&#149;</fon=
t></td>
                <td align=3D"center">&nbsp;</td>
                <td align=3D"center"><font face=3D"Verdana">&#149;</fon=
t></td>
            </tr>
        </table>
        </td>
    </tr>
</table>
</center></div>

<p align=3D"center"><font size=3D"4" face=3D"Verdana">Shipping (2-5
days) to your front door is included in this price!<br>
</font><font size=3D"3" face=3D"Verdana">(Continental U.S. Only)</font>=
</p>

<p align=3D"center"><font color=3D"#FFFF00">=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D</font></p>
<div align=3D"center"><center>

<table border=3D"1" cellpadding=3D"10" cellspacing=3D"0">
    <tr>
        <td align=3D"center" bgcolor=3D"#EAF9C8"><font size=3D"6"
        face=3D"Verdana">Coroplast Signs<br>
        </font><font size=3D"5" face=3D"Verdana">18&quot; x 24&quot;
        from $4.75 each! (Min 100)<br>
        50 =3D $5.75</font></td>
    </tr>
</table>
</center></div>

<p align=3D"center"><font size=3D"4" face=3D"Verdana">To place an order=

or get additional information, please contact us:</font><font
face=3D"Verdana"><br>
</font><a href=3D"mailto:BannersSignsMore@netscape.net"><font
size=3D"6" face=3D"Verdana"><strong>BannersSignsMore@netscape.net</stro=
ng></font></a></p>

<p align=3D"center"><font size=3D"3" face=3D"Verdana"><strong>OR CALL
US TOLL FREE<br>
</strong></font><font size=3D"6" face=3D"Verdana">1-877-503-7415</font>=
</p>

<p align=3D"center">&nbsp;</p>
<div align=3D"center"><center>

<table border=3D"0" cellpadding=3D"0" cellspacing=3D"0" width=3D"100%">=

    <tr>
        <td width=3D"100%" bgcolor=3D"#FFFFFF"><p align=3D"center"><fon=
t
        face=3D"Verdana">We are a family owned business, operating
        in Memphis, Tennessee for over 29 years.<strong><br>

<img src=3D"http://www.geocities.com/xuetue/fobs.gif" alt=3D"SIGNATURES=
 LOGO - A family owned business since 1974" width=3D"200" height=3D"100"=
>
<br>
        </strong></font><font color=3D"#FF0000" face=3D"Verdana"><stron=
g>SIGNATURES</strong><br>
        </font><font size=3D"1" face=3D"Verdana">GIANT POSTERS *
        CORPORATE APPAREL * SIGNS &amp; BANNERS * PROMOTIONAL
        PRODUCTS * TROPHIES &amp; AWARDS</font><font
        face=3D"Verdana"><br>
        559 S. Highland Street * Memphis, TN 38111 <br>
        901-327-5456</font></p><font color=3D"white">Vncogiawfb</font>
        </td>
    </tr>
</table>
</center></div>

<p align=3D"center">&nbsp;</p>

<p align=3D"center">&nbsp;</p>

<p align=3D"center">&nbsp;</p>

<p align=3D"left"><font size=3D"2" face=3D"Verdana">We honor the
removal requests that we receive.<br>
To be removed from future mailings, please email us at </font><a
href=3D"mailto:IAmDisinterested@netscape.net"><font size=3D"2"
face=3D"Verdana">IAmDisinterested@netscape.net</font></a><font
size=3D"2" face=3D"Verdana"><b> with your email address (or the email
address you want removed) typed </b><em><b>into the Subject Line</b></e=
m><b>
of your email.</b> Our system checks the subject line for
addresses and removes those address from our database. Thank you.<br>
We apologize for any inconvenience.</font></p>
</body>
</html>


------=_NextPart_59D_8551_C40D9ED2.133AC90E--


From logoplacement@excite.com Tue Dec 16 12:07:45 2003
Return-Path: <logoplacement@excite.com>
Received: from excite.com (cpc1-melt1-3-0-cust177.nott.cable.ntl.com [62.254.16.177])
	by netlib2.cs.utk.edu (8.12.8/8.12.3) with SMTP id hBGH7WMN025444
	for <mpi-comm-archive@netlib2.cs.utk.edu>; Tue, 16 Dec 2003 12:07:34 -0500 (EST)
Received: from unknown (HELO mtu67.syds.piswix.net) (4.141.205.248)
	by mtu67.syds.piswix.net with smtp; Tue, 16 Dec 2003 08:08:02 +0900
Received: from unknown (HELO mail.gimmicc.net) (119.89.22.190)
	by smtp18.yenddx.com with SMTP; 16 Dec 2003 17:07:20 +0700
Received: from mailout.endmonthnow.com ([67.166.94.103])
	by mx03.listsystemsf.net with SMTP; 17 Dec 2003 00:06:38 -0700
Message-ID: <1dbe01c3c3e8$4f02d300$21308844@jjng>
Reply-To: "<logoplacement@excite.com>" <logoplacement@excite.com>
From: "<logoplacement@excite.com>" <logoplacement@excite.com>
To: "art dept." <mpi-comm-archive@netlib2.cs.utk.edu>
Subject: adv:   CUSTOM POSTERS--$15 from YOUR PICTURES
Date: Tue, 16 Dec 2003 18:21:42 +0300
MIME-Version: 1.0
Content-Type: multipart/alternative;
	boundary="----=_NextPart_82F_C400_C0A75B59.DE3C5E8F"
X-Priority: 3
X-MSMail-Priority: Normal
X-Mailer: Microsoft Outlook Express 6.00.2800.1106
X-MimeOLE: Produced By Microsoft MimeOLE V6.00.2800.1106

This is a multi-part message in MIME format.

------=_NextPart_82F_C400_C0A75B59.DE3C5E8F
Content-Type: text/plain;
	charset="iso-8859-1"
Content-Transfer-Encoding: quoted-printable


------=_NextPart_82F_C400_C0A75B59.DE3C5E8F
Content-Type: text/html;
	charset="iso-8859-1"
Content-Transfer-Encoding: quoted-printable

<html>

<body bgcolor=3D"YellowGreen">

<p align=3D"center"><font color=3D"#FF0000" size=3D"4" face=3D"Verdana"=
><strong>CUSTOM POSTERS
from YOUR PICTURES &amp; ART - $15</font></strong><BR>
<font color=3D"#FF0000" size=3D"2" face=3D"Verdana">
Holiday Special - Offer Expires 12/30/04</font></p>
<div align=3D"center"><center>

<table border=3D"0" cellpadding=3D"0" cellspacing=3D"0" width=3D"100%">=

    <tr>
 <td align=3D"center" colspan=3D"3" bgcolor=3D"white"><font
 size=3D"3" face=3D"Verdana">We are a family owned business in
 Memphis, TN .... since 1974<strong><br>
 </strong>Send us <em>Any</em> Picture or Drawing or
 Artwork<br>
 <strong>We'll make your Poster for $3.50 a square foot</strong></font>=
</td>
    </tr>
    <tr>
 <td><div align=3D"center"><center><table border=3D"2"
 cellpadding=3D"2" cellspacing=3D"0" bgcolor=3D"#FFFFAA"
 bordercolor=3D"#FF0000">
     <tr>
  <td align=3D"center"><font color=3D"#800000" size=3D"3"
  face=3D"Verdana"><strong>22&quot; x 28&quot; Poster
  for $15.00</strong><br>
  </font><font color=3D"#FF0000" size=3D"3"
  face=3D"Verdana"><strong>Free Shipping for Orders
  Over $80.00<br>
  </strong></font><font size=3D"1" face=3D"Verdana">(to
  the Continental United States only)</font><font
  size=3D"2" face=3D"Verdana"><br>
  </font><font color=3D"#000080" size=3D"3"
  face=3D"Verdana"><strong>shipped in 2-5 days</strong></font><font
  size=3D"3" face=3D"Verdana"><strong><br>
  </strong></font><font size=3D"2" face=3D"Verdana">(rolled
  in a protective mailing tube)<br>
  </font><font size=3D"3" face=3D"Verdana"><strong>Minimum
  Order: $30.00<br>
  Shipping: $7.50<br>
  </strong></font><font size=3D"1" face=3D"Verdana">(to
  the Continental United States only)</font></td>
     </tr>
 </table>
 </center></div></td>
 <td align=3D"center" bgcolor=3D"#FFFFFF"><img
 src=3D"http://www.geocities.com/wwuetue/pbbalboy.gif"
 alt=3D"from SNAPSHOT to FULL SIZED POSTER" width=3D"400"
 height=3D"150"></td>
    </tr>
    <tr>
 <td align=3D"center" bgcolor=3D"#FFFFFF"><font size=3D"3"
 face=3D"Verdana">J<strong>UST EMAIL YOUR SCANNED IMAGES OR
 ART AND WE'LL MAIL YOUR POSTER IN 2-5 DAYS!</strong></font>
 <p><font size=3D"2" face=3D"Verdana">=B0 Family Pictures Can
 Become Attention Getting Wall Art<br>
 =B0 Large Sized Graphic Exhibits<br>
 =B0 Upscale Signage<br>
 =B0 Special Memories<br>
 =B0 Memorable Humorous Moments</font></p>
 </td>
 <td align=3D"center" bgcolor=3D"#FFFFC4"><div align=3D"center"><center=
><table
 border=3D"1" cellspacing=3D"0" bgcolor=3D"#F4F4F4">
     <tr>
  <td align=3D"middle" valign=3D"top"><font size=3D"3"
  face=3D"Verdana">20&quot; x 25&quot; - $ 12.85</font></td>
  <td align=3D"middle" valign=3D"top"><font size=3D"3"
  face=3D"Verdana">24&quot; x 30&quot; - $ 17.50</font></td>
     </tr>
     <tr>
  <td align=3D"middle" valign=3D"top"><font size=3D"3"
  face=3D"Verdana">20&quot; x 28&quot; - $ 13.75</font></td>
  <td align=3D"middle" valign=3D"top"><font size=3D"3"
  face=3D"Verdana">29&quot; x 32&quot; - $ 22.50</font></td>
     </tr>
     <tr>
  <td align=3D"middle" valign=3D"top"><font size=3D"3"
  face=3D"Verdana">22&quot; x 28&quot; - $ 15.00</font></td>
  <td align=3D"middle" valign=3D"top"><font size=3D"3"
  face=3D"Verdana">54&quot; x 96&quot; - $126.00</font></td>
     </tr>
 </table>
 </center></div><p align=3D"center"><font color=3D"#FF0000"
 size=3D"4" face=3D"Verdana"><strong>LAMINATION: Just $1.50
 Per Square Foot</strong></font></p>
 <div align=3D"center"><center><table border=3D"1"
 cellpadding=3D"4" cellspacing=3D"0" bgcolor=3D"#DCFFB9">
     <tr>
  <td align=3D"center"><font size=3D"3" face=3D"Verdana"><strong>CONVER=
T
  YOUR<br>
  FAVORITE:</strong></font><font size=3D"2"
  face=3D"Verdana"><br>
  *Action Pictures<br>
  *Team Picture<br>
  *Class Picture<br>
  *Any Picture<br>
  </font><font size=3D"4" face=3D"Verdana"><strong>To a
  GIANT POSTER SIZED PRINT</strong></font></td>
     </tr>
 </table>
 </center></div></td>
    </tr>
</table>
</center></div>

<p align=3D"center"><font size=3D"5" face=3D"Verdana">To place an order=

or get additional<br>
information, please contact us:</font><font size=3D"4"
face=3D"Verdana"><br>
</font><a href=3D"mailto:JumboPosters@netscape.net"><font size=3D"6"
face=3D"Verdana"><strong>JumboPosters@netscape.net</strong></font></a><=
font
size=3D"6" face=3D"Verdana"><strong><br>
</strong></font><font size=3D"4" face=3D"Verdana"><strong>or call
Toll Free: 1-877-503-7415</strong></font></p>
<div align=3D"center"><center>

<table border=3D"1" cellpadding=3D"5" cellspacing=3D"0"
bgcolor=3D"#FFFFFF">
    <tr>
 <td bgcolor=3D"#FFFFFF"><p align=3D"center"><font
 face=3D"Verdana"><strong><img
 src=3D"http://www.geocities.com/ouetue/fobs.gif"
 alt=3D"SIGNATURES LOGO - A family owned business since 1974"
 width=3D"200" height=3D"100"> <br>
 SIGNATURES</strong></font><br>
 <font size=3D"1" face=3D"Arial">GIANT SIZED POSTERS *
 CORPORATE APPAREL * SIGNS &amp; BANNERS * PROMOTIONAL
 PRODUCTS * TROPHIES &amp; AWARDS</font><font size=3D"1"><br>
 </font><font face=3D"Arial,Helvetica">559 S. Highland
 Street * Memphis, TN 38111</font> <br>
 <font face=3D"Arial,Helvetica">901-327-5456</font></p>
 <p align=3D"center"><font face=3D"Verdana">Toll Free:
 1-877-503-7415</font><font size=3D"2" face=3D"Verdana"><br>
 We are a family owned business operating in Memphis,
 Tennessee for over 29 years.</font></p>
 </td>
    </tr>
</table>
</center></div>

<p align=3D"center">&nbsp;</p>

<p>&nbsp;</p>

<p><font size=3D"2" face=3D"Verdana">We honor the removal requests
that we receive.<br>
To be removed from future mailings, please email us at </font><a
href=3D"mailto:IAmDisinterested@netscape.net"><font size=3D"2"
face=3D"Verdana"><strong>IAmDisinterested@netscape.net</strong></font><=
/a><font
size=3D"2" face=3D"Verdana"><strong> with your email address (or the
email address you want removed) </strong><em><strong>in the </strong></=
em><em><strong><u>Subject
Line</u></strong></em><em><strong> of your email</strong></em><strong>.=
</strong>
Our system checks the subject line for email addresses and will
remove those addresses from our database. Please allow up to 48
hours for your email address to be successfully removed.<br>
We apologize for any inconvenience.</font></p>

<p><br>
<br>
<br>
<br>
<br>
<br>
<br>
</p>

<table border=3D"0" cellpadding=3D"0" cellspacing=3D"0" width=3D"100%"
bgcolor=3D"#FFFFFF">
<tr>
<td><font color=3D"#FFFFFF">Jkwowlulwu</font></td>
</tr>
</table>
</body>
</html>


------=_NextPart_82F_C400_C0A75B59.DE3C5E8F--


From elilzjl.tdf.fq.8saenzj@cuiieue-stwl-tbz.eXcuria.com Mon Feb 16 22:07:23 2004
Return-Path: <elilzjl.tdf.fq.8saenzj@cuiieue-stwl-tbz.eXcuria.com>
Received: from cuiieue-stwl-tbz.eXcuria.com (ink.webair.com [216.130.183.68])
	by netlib2.cs.utk.edu (8.12.8/8.12.3) with SMTP id i1H37NCn025020
	for <mpi-comm-archive@netlib2.cs.utk.edu>; Mon, 16 Feb 2004 22:07:23 -0500 (EST)
Message-Id: <200402170307.i1H37NCn025020@netlib2.cs.utk.edu>
Date: 2/16/2004 9:08:48 PM
To: <mpi-comm-archive@netlib2.cs.utk.edu>
From: Printer Ink Supplies <elilzjl.tdf.fq.8saenzj@cuiieue-stwl-tbz.eXcuria.com>
Reply-to: <elilzjl.tdf.fq.8saenzj@cuiieue-stwl-tbz.eXcuria.com>
Subject: Save up to 89% on Ink + No Shipping Cost

 
Save up to 89% on Inkjet, Laser & Copier Supplies
Quality Products, with 100% Satisfaction Guarantee
Easy, Fast, Affordable Shipping Worldwide
Plenty of Payment Options to Meet YOUR Needs!
 
>> SPECIAL: FREE Shipping to US & Canada on Orders over $50 <<
 
Visit us on the web at http://www.eXcuria.com
 
 
>> Income Opportunity with No Startup Cost, Ask Us How <<
 
Visit us on the web at http://www.eXcuria.com/DealerInfo/
 
 
If you wish to contact us please visit our web site.
 
For instruction on how to be permanently remove from this
distribution system go to http://www.eXcuria.com/Remove/

From guaranteedengineinclusion@fsmail.net Mon Mar  1 08:34:04 2004
Return-Path: <guaranteedengineinclusion@fsmail.net>
Received: from GZ-FYOIRVHVXU9Y ([219.129.20.249])
	by netlib2.cs.utk.edu (8.12.8/8.12.3) with SMTP id i21DXvCn020179
	for <mpi-comm-archive@netlib2.cs.utk.edu>; Mon, 1 Mar 2004 08:34:00 -0500 (EST)
Message-Id: <200403011334.i21DXvCn020179@netlib2.cs.utk.edu>
X-Priority: 3 (normal)
X-MSMail-Priority: Normal
X-Mailer: MailingLIST_Email_Sender
Importance: Normal
Date: Fri, 1 Jun 2001 2:35:56 -0700
Subject: Guaranteed Search Engine Inclusion in only 72 hours
To: "mpi-comm-archive@netlib2.cs.utk.edu" <mpi-comm-archive@netlib2.cs.utk.edu>
From: "Guaranteed SE Inclusion" <guaranteedengineinclusion@fsmail.net>
MIME-Version: 1.0
Content-Type: text/html;
	charset="iso-8859-1"
Content-Transfer-Encoding: base64

PGh0bWw+DQo8aGVhZD4NCjx0aXRsZT5HdWFyYW50ZWVkIEluY2x1c2lvbiBFbWFpbDwvdGl0bGU+
DQo8bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hh
cnNldD1pc28tODg1OS0xIj4NCjwvaGVhZD4NCg0KPGJvZHkgYmdjb2xvcj0iI2Y0ZjBlYyIgdGV4
dD0iIzY2NjY2NiIgbGluaz0iIzMzMzMzMyIgdmxpbms9IiM5OTk5OTkiIGFsaW5rPSIjMzMzMzMz
Ij4NCjxkaXYgYWxpZ249ImNlbnRlciI+DQogIDx0YWJsZSB3aWR0aD0iNTUwIiBjZWxsc3BhY2lu
Zz0iMCIgY2VsbHBhZGRpbmc9IjAiIGhlaWdodD0iNTAwIiBiZ2NvbG9yPSIjRkZGRkZGIiBiYWNr
Z3JvdW5kPSJodHRwOi8vMjE5LjEyOS4yMC4yNDkvZ3VhcmFudGVlZGluY2x1c2lvbi9lbWFpbC9l
bWFpbGJnLmpwZyI+DQogICAgPHRyPiANCiAgICAgIDx0ZCBoZWlnaHQ9IjY4IiBjb2xzcGFuPSIy
Ij4NCiAgICAgICAgPGRpdiBhbGlnbj0icmlnaHQiPjxmb250IGZhY2U9IlRpbWVzIE5ldyBSb21h
biwgVGltZXMsIHNlcmlmIiBzaXplPSI2IiBjb2xvcj0iIzAwMDA2NiI+PHU+R3VhcmFudGVlZCAN
CiAgICAgICAgICBTZWFyY2ggRW5naW5lIEluY2x1c2lvbjxmb250IHNpemU9IjIiPiA8L2ZvbnQ+
PC91PjwvZm9udD48L2Rpdj4NCiAgICAgIDwvdGQ+DQogICAgPC90cj4NCiAgICA8dHI+IA0KICAg
ICAgPHRkIHdpZHRoPSIxMTYiIGhlaWdodD0iNTAzIiB2YWxpZ249InRvcCI+IA0KICAgICAgICA8
ZGl2IGFsaWduPSJjZW50ZXIiPiANCiAgICAgICAgICA8cD48aW1nIHNyYz0iaHR0cDovLzIxOS4x
MjkuMjAuMjQ5L2d1YXJhbnRlZWRpbmNsdXNpb24vZW1haWwvc3BhY2UuZ2lmIiB3aWR0aD0iNSIg
aGVpZ2h0PSIxMTAiPjwvcD4NCiAgICAgICAgICA8cD48aW1nIHNyYz0iaHR0cDovLzIxOS4xMjku
MjAuMjQ5L2d1YXJhbnRlZWRpbmNsdXNpb24vZW1haWwvc2VhcmNobG9nb3MuZ2lmIiB3aWR0aD0i
OTkiIGhlaWdodD0iMzg1IiBhbGlnbj0iYm90dG9tIj48L3A+DQogICAgICAgIDwvZGl2Pg0KICAg
ICAgPC90ZD4NCiAgICAgIDx0ZCB3aWR0aD0iNDM0IiBoZWlnaHQ9IjUwMyIgdmFsaWduPSJ0b3Ai
PiANCiAgICAgICAgPGRpdiBhbGlnbj0iY2VudGVyIj4gDQogICAgICAgICAgPHA+PGJyPg0KICAg
ICAgICAgICAgPGZvbnQgZmFjZT0iQXJpYWwsIEhlbHZldGljYSwgc2Fucy1zZXJpZiIgc2l6ZT0i
NSIgY29sb3I9IiMwMDAwNjYiPllvdXIgDQogICAgICAgICAgICBXZWIgU2l0ZSBSYW5rZWQgaW4g
b25seSAzIGRheXM8YnI+DQogICAgICAgICAgICA8L2ZvbnQ+PGZvbnQgZmFjZT0iQXJpYWwsIEhl
bHZldGljYSwgc2Fucy1zZXJpZiIgc2l6ZT0iNSIgY29sb3I9IiMwMDAwNjYiPmluIA0KICAgICAg
ICAgICAgb3ZlciAxMDAgTWFqb3IgU2VhcmNoIEVuZ2luZXM8YnI+DQogICAgICAgICAgICA8YnI+
DQogICAgICAgICAgICA8YSBocmVmPSJodHRwOi8vMjE5LjEyOS4yMC4yNDkvZ3VhcmFudGVlZGlu
Y2x1c2lvbi9pbmRleC5odG1sIj48aW1nIHNyYz0iaHR0cDovLzIxOS4xMjkuMjAuMjQ5L2d1YXJh
bnRlZWRpbmNsdXNpb24vZW1haWwvYnV0dG9uMV90b2ZpbmRvdXRtb3JlMi5naWYiIHdpZHRoPSIx
OTAiIGhlaWdodD0iMjAiIGJvcmRlcj0iMCI+PC9hPjwvZm9udD48L3A+DQogICAgICAgICAgPHAg
YWxpZ249ImNlbnRlciI+PGZvbnQgZmFjZT0iQXJpYWwsIEhlbHZldGljYSwgc2Fucy1zZXJpZiIg
c2l6ZT0iNSIgY29sb3I9IiMwMDAwNjYiPjxiPklUUyANCiAgICAgICAgICAgIEdVQVJBTlRFRUQu
Li4uPC9iPjwvZm9udD48L3A+DQogICAgICAgICAgPHRhYmxlIHdpZHRoPSI4NSUiIGJvcmRlcj0i
MCIgY2VsbHNwYWNpbmc9IjAiIGNlbGxwYWRkaW5nPSIwIj4NCiAgICAgICAgICAgIDx0cj4gDQog
ICAgICAgICAgICAgIDx0ZCB3aWR0aD0iNDEiIGhlaWdodD0iMzAiPjxpbWcgc3JjPSJodHRwOi8v
MjE5LjEyOS4yMC4yNDkvZ3VhcmFudGVlZGluY2x1c2lvbi9lbWFpbC9hcnJvd3MuanBnIiB3aWR0
aD0iMjUiIGhlaWdodD0iMjEiPjwvdGQ+DQogICAgICAgICAgICAgIDx0ZCB3aWR0aD0iMzI2IiBo
ZWlnaHQ9IjMwIj48Yj48Zm9udCBmYWNlPSJBcmlhbCwgSGVsdmV0aWNhLCBzYW5zLXNlcmlmIiBz
aXplPSIyIiBjb2xvcj0iIzAwMDA2NiI+V0UgDQogICAgICAgICAgICAgICAgUEFZIFRIRSBTRUFS
Q0ggRU5HSU5FUyBGT1IgWU9VPC9mb250PjwvYj48L3RkPg0KICAgICAgICAgICAgPC90cj4NCiAg
ICAgICAgICAgIDx0cj4gDQogICAgICAgICAgICAgIDx0ZCB3aWR0aD0iNDEiIGhlaWdodD0iMzAi
PjxpbWcgc3JjPSJodHRwOi8vMjE5LjEyOS4yMC4yNDkvZ3VhcmFudGVlZGluY2x1c2lvbi9lbWFp
bC9hcnJvd3MuanBnIiB3aWR0aD0iMjUiIGhlaWdodD0iMjEiPjwvdGQ+DQogICAgICAgICAgICAg
IDx0ZCB3aWR0aD0iMzI2IiBoZWlnaHQ9IjMwIj48Yj48Zm9udCBmYWNlPSJBcmlhbCwgSGVsdmV0
aWNhLCBzYW5zLXNlcmlmIiBzaXplPSIyIiBjb2xvcj0iIzAwMDA2NiI+WU9VUiANCiAgICAgICAg
ICAgICAgICBTSVRFIElTIFJBTktFRCBJTiA3MiBIT1VSUzwvZm9udD48L2I+PC90ZD4NCiAgICAg
ICAgICAgIDwvdHI+DQogICAgICAgICAgICA8dHI+IA0KICAgICAgICAgICAgICA8dGQgd2lkdGg9
IjQxIiBoZWlnaHQ9IjMwIj48aW1nIHNyYz0iaHR0cDovLzIxOS4xMjkuMjAuMjQ5L2d1YXJhbnRl
ZWRpbmNsdXNpb24vZW1haWwvYXJyb3dzLmpwZyIgd2lkdGg9IjI1IiBoZWlnaHQ9IjIxIj48L3Rk
Pg0KICAgICAgICAgICAgICA8dGQgd2lkdGg9IjMyNiIgaGVpZ2h0PSIzMCI+PGI+PGZvbnQgZmFj
ZT0iQXJpYWwsIEhlbHZldGljYSwgc2Fucy1zZXJpZiIgc2l6ZT0iMiIgY29sb3I9IiMwMDAwNjYi
PllPVVIgDQogICAgICAgICAgICAgICAgU0lURSBJUyBDSEVDS0VEIEVWRVJZIDQ4IEhPVVJTPC9m
b250PjwvYj48L3RkPg0KICAgICAgICAgICAgPC90cj4NCiAgICAgICAgICAgIDx0cj4gDQogICAg
ICAgICAgICAgIDx0ZCB3aWR0aD0iNDEiIGhlaWdodD0iMzAiPjxpbWcgc3JjPSJodHRwOi8vMjE5
LjEyOS4yMC4yNDkvZ3VhcmFudGVlZGluY2x1c2lvbi9lbWFpbC9hcnJvd3MuanBnIiB3aWR0aD0i
MjUiIGhlaWdodD0iMjEiPjwvdGQ+DQogICAgICAgICAgICAgIDx0ZCB3aWR0aD0iMzI2IiBoZWln
aHQ9IjMwIj48Yj48Zm9udCBmYWNlPSJBcmlhbCwgSGVsdmV0aWNhLCBzYW5zLXNlcmlmIiBzaXpl
PSIyIiBjb2xvcj0iIzAwMDA2NiI+WU9VUiANCiAgICAgICAgICAgICAgICBTSVRFIFJBTktFRCBG
T1IgMTIgTU9OVEhTPC9mb250PjwvYj48L3RkPg0KICAgICAgICAgICAgPC90cj4NCiAgICAgICAg
ICAgIDx0cj4gDQogICAgICAgICAgICAgIDx0ZCB3aWR0aD0iNDEiIGhlaWdodD0iMzAiPjxpbWcg
c3JjPSJodHRwOi8vMjE5LjEyOS4yMC4yNDkvZ3VhcmFudGVlZGluY2x1c2lvbi9lbWFpbC9hcnJv
d3MuanBnIiB3aWR0aD0iMjUiIGhlaWdodD0iMjEiPjwvdGQ+DQogICAgICAgICAgICAgIDx0ZCB3
aWR0aD0iMzI2IiBoZWlnaHQ9IjMwIj48Yj48Zm9udCBmYWNlPSJBcmlhbCwgSGVsdmV0aWNhLCBz
YW5zLXNlcmlmIiBzaXplPSIyIiBjb2xvcj0iIzAwMDA2NiI+SU4gDQogICAgICAgICAgICAgICAg
T1ZFUiAxMDAgTUFKT1IgU0VBUkNIIEVOR0lORVM8L2ZvbnQ+PC9iPjwvdGQ+DQogICAgICAgICAg
ICA8L3RyPg0KICAgICAgICAgICAgPHRyPiANCiAgICAgICAgICAgICAgPHRkIHdpZHRoPSI0MSIg
aGVpZ2h0PSIzMCI+PGltZyBzcmM9Imh0dHA6Ly8yMTkuMTI5LjIwLjI0OS9ndWFyYW50ZWVkaW5j
bHVzaW9uL2VtYWlsL2Fycm93cy5qcGciIHdpZHRoPSIyNSIgaGVpZ2h0PSIyMSI+PC90ZD4NCiAg
ICAgICAgICAgICAgPHRkIHdpZHRoPSIzMjYiIGhlaWdodD0iMzAiPjxiPjxmb250IGZhY2U9IkFy
aWFsLCBIZWx2ZXRpY2EsIHNhbnMtc2VyaWYiIHNpemU9IjIiIGNvbG9yPSIjMDAwMDY2Ij5GUkVF
IA0KICAgICAgICAgICAgICAgIFJFUE9SVFMgT04gWU9VUiBTSVRFIFJBTktJTkdTPC9mb250Pjwv
Yj48L3RkPg0KICAgICAgICAgICAgPC90cj4NCiAgICAgICAgICA8L3RhYmxlPg0KICAgICAgICAg
IDxicj4NCiAgICAgICAgICA8dGFibGUgd2lkdGg9IjY4JSIgYm9yZGVyPSIwIiBjZWxsc3BhY2lu
Zz0iMCIgY2VsbHBhZGRpbmc9IjAiPg0KICAgICAgICAgICAgPHRyPg0KICAgICAgICAgICAgICA8
dGQgd2lkdGg9IjczJSI+PGZvbnQgZmFjZT0iQXJpYWwsIEhlbHZldGljYSwgc2Fucy1zZXJpZiIg
c2l6ZT0iMyI+PGI+PGZvbnQgY29sb3I9IiMwMDAwNjYiPkFMTCANCiAgICAgICAgICAgICAgICBU
SElTIEZPUiBPTkxZIC4uLi48L2ZvbnQ+PC9iPjwvZm9udD48L3RkPg0KICAgICAgICAgICAgICA8
dGQgd2lkdGg9IjI3JSI+PGZvbnQgc2l6ZT0iMyIgZmFjZT0iQXJpYWwsIEhlbHZldGljYSwgc2Fu
cy1zZXJpZiIgY29sb3I9IiMwMDAwNjYiPjxiPiZwb3VuZDsxMDAgDQogICAgICAgICAgICAgICAg
PC9iPiA8Zm9udCBzaXplPSIyIj4gR0JQIDwvZm9udD48L2ZvbnQ+PC90ZD4NCiAgICAgICAgICAg
IDwvdHI+DQogICAgICAgICAgICA8dHI+DQogICAgICAgICAgICAgIDx0ZCB3aWR0aD0iNzMlIj48
Zm9udCBzaXplPSIxIiBmYWNlPSJBcmlhbCwgSGVsdmV0aWNhLCBzYW5zLXNlcmlmIiBjb2xvcj0i
IzAwMDA2NiI+KFNVQkpFQ1QgDQogICAgICAgICAgICAgICAgVE8gRVhDSEFOR0UgUkFURVMpPC9m
b250PjwvdGQ+DQogICAgICAgICAgICAgIDx0ZCB3aWR0aD0iMjclIj48Zm9udCBmYWNlPSJBcmlh
bCwgSGVsdmV0aWNhLCBzYW5zLXNlcmlmIiBzaXplPSIzIj48Yj48Zm9udCBjb2xvcj0iIzAwMDA2
NiI+RTE0MDwvZm9udD48L2I+PGZvbnQgY29sb3I9IiMwMDAwNjYiIHNpemU9IjIiPiANCiAgICAg
ICAgICAgICAgICBFVVJPPC9mb250PjwvZm9udD48L3RkPg0KICAgICAgICAgICAgPC90cj4NCiAg
ICAgICAgICAgIDx0cj4NCiAgICAgICAgICAgICAgPHRkIHdpZHRoPSI3MyUiPiZuYnNwOzwvdGQ+
DQogICAgICAgICAgICAgIDx0ZCB3aWR0aD0iMjclIj48Zm9udCBmYWNlPSJBcmlhbCwgSGVsdmV0
aWNhLCBzYW5zLXNlcmlmIiBzaXplPSIzIj48Yj48Zm9udCBjb2xvcj0iIzAwMDA2NiI+JDE2MDwv
Zm9udD48L2I+PGZvbnQgY29sb3I9IiMwMDAwNjYiIHNpemU9IjIiPiANCiAgICAgICAgICAgICAg
ICBVU0QgPC9mb250PjwvZm9udD48L3RkPg0KICAgICAgICAgICAgPC90cj4NCiAgICAgICAgICA8
L3RhYmxlPg0KICAgICAgICAgIDxwPjxhIGhyZWY9Imh0dHA6Ly8yMTkuMTI5LjIwLjI0OS9ndWFy
YW50ZWVkaW5jbHVzaW9uL2luZGV4Lmh0bWwiPjxpbWcgc3JjPSJodHRwOi8vMjE5LjEyOS4yMC4y
NDkvZ3VhcmFudGVlZGluY2x1c2lvbi9lbWFpbC9idXR0b24xX3RvZmluZG91dG1vcmUyLmdpZiIg
d2lkdGg9IjE5MCIgaGVpZ2h0PSIyMCIgYm9yZGVyPSIwIj48L2E+PC9wPg0KICAgICAgICAgIDxw
Pjxmb250IGZhY2U9IkFyaWFsLCBIZWx2ZXRpY2EsIHNhbnMtc2VyaWYiIHNpemU9IjIiIGNvbG9y
PSIjMDAwMDY2Ij48YSBocmVmPSJodHRwOi8vMjE5LjEyOS4yMC4yNDkvZ3VhcmFudGVlZGluY2x1
c2lvbi9pbmRleC5odG1sIj5JZiANCiAgICAgICAgICAgIHlvdSB3b3VsZCBsaWtlIHRvIGZpbmQg
b3V0IG1vcmUgcGxlYXNlIGNsaWNrIGhlcmU8L2E+PC9mb250PjwvcD4NCiAgICAgICAgICA8cD48
ZGl2IGFsaWduPSJjZW50ZXIiPjxhIGhyZWY9Imh0dHA6Ly93d3cuYmVzcG9rZS1tYXJrZXRpbmcu
Y29tL3Vuc3Vic2NyaWJlLmFzcCI+PGltZyBzcmM9Imh0dHA6Ly93d3cuYmVzcG9rZS1tYXJrZXRp
bmcuY29tL3dlYmNoZWNrL2hfMDcuZ2lmIiB3aWR0aD0iMjU5IiBoZWlnaHQ9IjEwIiBib3JkZXI9
IjAiPjwvYT48L2Rpdj4NCiAgICAgICAgPC9kaXY+DQogICAgICAgIDwvdGQ+DQogICAgPC90cj4N
CiAgPC90YWJsZT4NCjwvZGl2Pg0KPC9ib2R5Pg0KPC9odG1sPg0K


From beloige@postino.it Fri Mar 12 23:49:04 2004
Return-Path: <beloige@postino.it>
Received: from abraham.elitel.it (vdisk2.elitel.it [212.34.224.151])
	by netlib2.cs.utk.edu (8.12.8/8.12.3) with SMTP id i2D4n3Cn013302
	for <mpi-comm-archive@netlib2.cs.utk.edu>; Fri, 12 Mar 2004 23:49:04 -0500 (EST)
Received: (qmail 9958 invoked by uid 65534); 13 Mar 2004 04:46:06 -0000
Cc: recipient list not shown: ;
Received: from CBLO-CM (CBLO-CM [216.219.4.156]) 
	by www.postino.punto.it (IMP) with HTTP 
	for <beloige@postino.it@212.34.224.143>; Sat, 13 Mar 2004 05:45:34 +0100
Message-ID: <1079153134.405291eecb144@www.postino.punto.it>
Date: Sat, 13 Mar 2004 05:45:34 +0100
From: beloige@postino.it
Reply-to: beloige@omaninfo.com
Subject: seeking your partnership
MIME-Version: 1.0
Content-Type: text/plain; charset=ISO-8859-1
Content-Transfer-Encoding: 8bit
User-Agent: Internet Messaging Program (IMP) 3.2.2
X-Originating-IP: 216.219.4.156

Dear Partner to be,

First, I must apologise to you for using this medium to communicate to you about
this project and It is my great pleasure in writing you this letter on behalf
of
my colleagues and myself.

I am Mr. Belo Ige,Divisional  Director in charge of  Corporate and Investment
Banking  with CONTINENTAL TRUST BANK,based in Lagos,Nigeria.

I have a confidential business proposition for you.

Our Bank is a financial institution specialising in private banking to
individual customers who likes confidentiality in their financial dealings.

On January 13,1998 an Indian-American  mining consultant with  a Multi National
Firm based in Nigeria here,the Petrogas Gas Systems BV Environmental Systems
headquartered in The Netherlands, Mr.Kommera Sangeeta made a numbered time
(Fixed)Deposit for Twenty Four calendar months, valued at US$29,500,000.00
(Twenty Nine million, Five Hundred Thousand  U.S. Dollars)in the Bank. Upon
maturity, I sent a routine notification to his forwarding address but got no
reply. After a month, we sent a reminder and finally we discovered from his
contract employers,that Mr. Kommera Sangeeta  died in the 2000 Singapore
Airlines  flight SQ006 plane crash in Taipei.

 On further investigation, I found out that he died intestate(without making a
WILL), and all attempts to trace his next-of-kin had been fruitless.Please see
http://www.tamil.net/list/2000-11/msg00018.html

I therefore made further investigation and discovered that Mr. Kommera Sangeeta
did not declare any kin or relations in all his official documents with us,
including his Bank Deposit paperwork. This sum of US$29,500,000.00 is still
sitting in my Bank and the interest is being rolled over with the principal sum
at the end of each year.
 
Consequently, my proposal is that I will like you as a foreigner to stand in as
the next of kin to Mr.Kommera Sageeta.

This is simple, I will like you to provide your full names and home or office
address including your telephone and fax numbers so that I can seek the
services of  a lawyer/Attorney to prepare the necessary documents and court
affidavits which will put you in good standing as the next-of-kin.

 A bank account in any part of the world which you will provide later will then
facilitate the transfer of this money to you as the beneficiary/next of kin.
The money will be paid into your account for us to share in the ratio of 75%
for me and 20% for you and 5% to refund all manner of expenses and costs
incurred by all parties leading to the success of the project.

Be informed that in other to provide more legality and legitimacy to this
project,the paperworks for this will be done by the Attorney/Lawyer and my
position as the head of Corporate and Investment Banking  guarantees the
successful execution of this transaction. If you are interested, please revert
back to me.

Please observe utmost confidentiality, and rest assured that this transaction
would be most profitable for both of us because I shall require your assistance
to invest my share in your country.

Thanks and regards.

Mr. Belo Ige



From adminstration@computerbizop.com Tue Mar 16 00:02:40 2004
Return-Path: <adminstration@computerbizop.com>
Received: from 200-171-213-234.customer.tdatabrasil.net.br (200-171-213-234.customer.tdatabrasil.net.br [200.171.213.234] (may be forged))
	by netlib2.cs.utk.edu (8.12.8/8.12.3) with SMTP id i2G52aCn022752;
	Tue, 16 Mar 2004 00:02:38 -0500 (EST)
Received: from 8aib1.87lb.org (HELO 3hhvkn) ([53.74.126.180])
	by 200-171-213-234.customer.tdatabrasil.net.br with ESMTP id 69225264;
	Tue, 16 Mar 2004 00:04:54 -0500
Message-ID: <i6--7845$r-2-j@miabcf8n2k1>
From: "Admin" <adminstration@computerbizop.com>
To: moler@netlib2.cs.utk.edu
Subject: ADV:       Attention All  School Staff, Teachers and Students:       News 3/15/04
Date: Tue, 16 Mar 04 00:04:54 GMT
X-Priority: 1
X-MSMail-Priority: High
X-Mailer: Microsoft Outlook, Build 10.0.2627
MIME-Version: 1.0
Content-Type: multipart/alternative;
	boundary="2A.A._C97CDBE"

This is a multi-part message in MIME format.

--2A.A._C97CDBE
Content-Type: text/plain
Content-Transfer-Encoding: quoted-printable

Attention All School Staff, Teachers and Students:

You Must Respond By 5 P.M. Wednesday, March 17, 2004.

Through a special arrangement, Avtech Direct is offering a limited
allotment of BRAND NEW, top of-the-line, name-brand desktop computers
at more than 50% off MSRP to all Staff Members, Teachers and Students
who respond to this message before 5 P.M., Wednesday, March 17, 2004.

All desktop computers are brand-new packed in their original boxes,
and come with a full manufacturer's warranty plus
a 100% satisfaction guarantee.

These professional grade Desktops are fully equipped with 2004
next generation technology, making these the best performing
computers money can buy.

Avtech Direct is offering these feature rich, top performing
Desktop Computers with the latest Intel technology at an amazing price
to all who call:

    1-800-884-9510 by 5 P.M. Wednesday, March 17, 2004

The fast and powerful AT-2400 series Desktop features: 

      * Intel 2.0Ghz Processor for amazing speed and performance
      * 128MB DDR RAM,  --- Upgradeable to 1024
      * 20 GB UDMA Hard Drive, --- Upgradeable to 80 GB
      * 52X CD-Rom Drive, --- Upgradeable to DVD/CDRW 
      * 1.44 Floppy disk drive
      * Next Generation Technology
      * ATI Premium video and sound
      * Full Connectivity with Fax modem/Lan/IEE 1394/USB 2.0
      * Soft Touch Keyboard and scroll mouse
      * Internet Ready
      * Network Ready
      * 1 Year parts and labor warranty
      * Priority customer service and tech support

MSRP $699 ........................................ Your Cost $297

How to qualify:

  1. You must be a Staff member, Teacher or Student:
  2. All desktop computers will be available on a
     first come first serve basis.
  3. You must call 1-800-884-9510 by 5 P.M. Wednesday, March 17, 2004
     and we will hold the desktops you request on will call. 
  4. You are not obligated in any way.
  5. 100% Satisfaction Guaranteed.
   
   
Call Avtech Direct
1-800-884-9510 before 5 P.M. Wednesday, March 17, 2004





If you wish to unsubscribe from this list, please go to:
http://www.computeradvice.org/unsubscribe.asp
--2A.A._C97CDBE--


From Jonsonger@mail.runan.ha.cn Thu Mar 25 16:40:04 2004
Return-Path: <Jonsonger@mail.runan.ha.cn>
Received: from 160.36.58.108 ([220.161.118.214])
	by netlib2.cs.utk.edu (8.12.8/8.12.3) with SMTP id i2PLduCn016888
	for <mpi-comm-archive@netlib2.cs.utk.edu>; Thu, 25 Mar 2004 16:39:59 -0500 (EST)
Message-ID: <TVQCSLLOCYTSIRVEZAMALBFLZRYEVV@160.36.58.108>
From: "Sales" <Jonsonger@mail.runan.ha.cn>
To: mpi-comm-archive@netlib2.cs.utk.edu
X-MS-OFZ: UUFESBUZQN
Date: Fri, 26 Mar 04 05:46:24 ÖÐ¹ú±ê×¼Ê±¼ä
X-Priority: 1
X-MSMail-Priority: High
Subject: Dedicated Server & Hosting for You
X-Mailer: Microsoft Outlook Express 6.00.2600.0000
MIME-Version: 1.0
Content-Type: multipart/mixed; boundary=WC_MAIL_PaRt_BoUnDaRy_05151998

This is a multi-part message in MIME format.

--WC_MAIL_PaRt_BoUnDaRy_05151998
Content-Type: text/html
Content-Transfer-Encoding: 7Bit

<!-- saved from url=(0022)http://internet.e-mail --><!-- saved from
url=(0022)http://internet.e-mail --><html>
<head>
<meta http-equiv="Content-Language" content="en-us">
<meta name="GENERATOR" content="Microsoft FrontPage 4.0">
<meta name="ProgId" content="FrontPage.Editor.Document">
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<title>We offer reliable bulk email friendly web hosting services</title>
</head>

<body>

<p><font face="Arial" size="2">We offer reliable friendly web hosting 
services. You can now have the
peace of&nbsp;<br>
 mind knowing that your site is secure during your email marketing
campaigns. <br>
<br>
BulletProof Web Hosting 100% Guaranteed! We guarantee that your site will
be
<br>
99% uptime. <br>
<br>
We also offer BulletProof dedicated server:</font></p>
<div align="left">
  <table border="1" cellpadding="0" cellspacing="0" style="border-collapse:
collapse" bordercolor="#111111" width="458" height="23">
    <tr>
      <td width="149" height="118"><font face="Arial" size="2">Two IPs<br>
      512MB RAM DDR<br>
        P4 2.66GHZ CPU<br>
        36 GB SCSI<br>
      Unlimited Data Transfer<br>
      Linux/Windows/FreeBSD<br>
&nbsp;</font></td>
      <td width="149" height="118"><font face="Arial" size="2">Three
IPs<br>
      1024MB RAM DDR<br>
        P4 / Two CPU<br>
        72 GB SCSI<br>
      Unlimited Data Transfer<br>
      Linux/Windows/FreeBSD<br>
        &nbsp;</font></td>
      <td width="150" height="118"><font face="Arial" size="2">  Dynamic
IP<br>
      1024MB RAM DDR<br>
        P4 / Two CPU<br>
        72 GB SCSI<br>
      Unlimited Data Transfer<br>
        Linux/Windows/FreeBSD<br>
        &nbsp;</font></td>
    </tr>
    <tr>
      <td width="149" height="38"><font face="Arial" size="2">Price: No
setup 
      fee <br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp; US$
599.00/month</font></td>
      <td width="149" height="38"><font face="Arial" size="2">Price: No
setup 
      fee <br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp; US$
799.00/month</font></td>
      <td width="150" height="38"><font face="Arial" size="2">Price: No
setup 
      fee <br>
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp; US$
999.00/month</font></td>
    </tr>
  </table>
</div>
<p><font face="Arial"
size="2">
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
<a href="http://www.2965.com">More information</a></font></p>

<p><font face="Arial" size="2">
<br>
Allowed Usage<br>
You can use the server for any of the following:<br>
<br>
Direct Mailing or Proxy Mailing <br>
Web Site Hosting <br>
Proxy, Relay or Port Scanning<br>
<br>
We can supply Targeted Email Addresses according to your requirements, and
<br>
send out Targeted Emails for you. For more information, please contact us
by&nbsp;<br>
<a
href="mailto:Sales@biz-boosting.com;Info@2892.com">Sales@biz-boosting.com
or Info@2892.com</a><br>
<br>
It will be our pleasure to do business with you.<br>
<br>
<br>
Cheers!<br>
<br>
Mike Tank<br>
Support
Teams<br>
<br>
****************************************************************************************<br>
Receiving this e-mail because you registered to receive offers from us.<br>
Please click here to unscbscirbe:<a
href="mailto:List@yahoo.com?subject=Remove">List@yahoo.com?subject=Re</a><br>
****************************************************************************</font><font face="Arial" size="2">************</font></p>

</body>

</html>
oOdUyRLHIClRlhW
--WC_MAIL_PaRt_BoUnDaRy_05151998--


From Administration@hispeedweb.com Fri Apr  2 01:45:46 2004
Return-Path: <Administration@hispeedweb.com>
Received: from dsl-201-128-127-206.prod-infinitum.com.mx (dsl-201-128-127-206.prod-infinitum.com.mx [201.128.127.206] (may be forged))
	by netlib2.cs.utk.edu (8.12.8/8.12.3) with SMTP id i326jHCn024134;
	Fri, 2 Apr 2004 01:45:30 -0500 (EST)
Received: from 58g.zmoeyc.com ([216.136.183.145]) by dsl-201-128-127-206.prod-infinitum.com.mx id airmzDriXRpS for <moler@netlib2.cs.utk.edu>; Fri, 02 Apr 2004 12:46:07 +0600
Message-ID: <l--$i4$nm-wyprxy-h7-$6$c@4vhx.ece1>
From: "Admin" <Administration@hispeedweb.com>
To: moler@netlib2.cs.utk.edu
Subject: ADV:        Attention All  School Staff, Teachers and Students:
Date: Fri, 02 Apr 04 12:46:07 GMT
X-Priority: 1
X-MSMail-Priority: High
X-Mailer: The Bat! (v1.52f) Business
MIME-Version: 1.0
Content-Type: multipart/alternative;
	boundary="D6E.B_91D0C4BA9"

This is a multi-part message in MIME format.

--D6E.B_91D0C4BA9
Content-Type: text/plain
Content-Transfer-Encoding: quoted-printable

Attention All School Staff, Teachers and Students:

You Must Respond By 5 P.M. Monday, April 5, 2004.

Through a special arrangement, Avtech Direct is offering a limited
allotment of BRAND NEW, top of-the-line, name-brand desktop computers
at more than 50% off MSRP to all Staff Members, Teachers and Students
who respond to this message before 5 P.M., Monday, April 5, 2004.

All desktop computers are brand-new packed in their original boxes,
and come with a full manufacturer's warranty plus
a 100% satisfaction guarantee.

These professional grade Desktops are fully equipped with 2004
next generation technology, making these the best performing
computers money can buy.

Avtech Direct is offering these feature rich, top performing
Desktop Computers with the latest Intel technology at an amazing price
to all who call:

    1-800-884-9510 by 5 P.M. Monday, April 5, 2004

The fast and powerful AT-2400 series Desktop features: 

      * Intel 2.0Ghz Processor for amazing speed and performance
      * 128MB DDR RAM,  --- Upgradeable to 1024
      * 20 GB UDMA Hard Drive, --- Upgradeable to 80 GB
      * 52X CD-Rom Drive, --- Upgradeable to DVD/CDRW 
      * 1.44 Floppy disk drive
      * Next Generation Technology
      * ATI Premium video and sound
      * Full Connectivity with Fax modem/Lan/IEE 1394/USB 2.0
      * Soft Touch Keyboard and scroll mouse
      * Internet Ready
      * Network Ready
      * 1 Year parts and labor warranty
      * Priority customer service and tech support

MSRP $699 ........................................ Your Cost $297

How to qualify:

  1. You must be a Staff member, Teacher or Student:
  2. All desktop computers will be available on a
     first come first serve basis.
  3. You must call 1-800-884-9510 by 5 P.M. Monday, April 5, 2004
     and we will hold the desktops you request on will call. 
  4. You are not obligated in any way.
  5. 100% Satisfaction Guaranteed.
   
   
Call Avtech Direct
1-800-884-9510 before 5 P.M. Monday, April 5, 2004





If you wish to unsubscribe from this list, please go to:
http://www.computeradvice.org/unsubscribe.asp
--D6E.B_91D0C4BA9--


From dfsflirp@eXcuria.com Mon Apr  5 11:29:18 2004
Return-Path: <dfsflirp@eXcuria.com>
Received: from mail.excuria.com ([207.36.209.178])
	by netlib2.cs.utk.edu (8.12.8/8.12.3) with SMTP id i35FTHCn004683
	for <mpi-comm-archive@netlib2.cs.utk.edu>; Mon, 5 Apr 2004 11:29:17 -0400 (EDT)
Date: 4/5/2004 11:29:17 AM
To: <mpi-comm-archive@netlib2.cs.utk.edu>
From: Printer Ink Supplies <dfsflirp@eXcuria.com>
Reply-to: <dfsflirp@eXcuria.com>
Message-ID: <elilzjl.tdf.fq.8saenzj@cuiieue-stwl-tbz.eXcuria.com>
Subject: Inkjet, Laser & Copier Cartridges ~ Save up to 89%

 
Save up to 89% on Inkjet, Laser & Copier Supplies
Quality Products, with 100% Satisfaction Guarantee
Easy, Fast, Affordable Shipping Worldwide
Plenty of Payment Options to Meet YOUR Needs!
 
>> SPECIAL: FREE Shipping to US & Canada on Orders over $50 <<
 
Visit us on the web at http://www.eXcuria.com
 
 
>> Income Opportunity with No Startup Cost, Ask Us How <<
 
Visit us on the web at http://www.eXcuria.com/DealerInfo/
 
 
If you wish to contact us please visit our web site.
 
For instruction on how to be permanently remove from this
distribution system go to http://www.eXcuria.com/Remove/

From spanlatbooks@fibertel.com.ar Thu Apr 15 05:52:43 2004
Return-Path: <spanlatbooks@fibertel.com.ar>
Received: from net.websailing.com.ar (qmailr@customer79-117.iplannetworks.net [200.68.76.117] (may be forged))
	by netlib2.cs.utk.edu (8.12.8/8.12.3) with SMTP id i3F9qcCn016974
	for <mpi-comm-archive@netlib2.cs.utk.edu>; Thu, 15 Apr 2004 05:52:43 -0400 (EDT)
Message-Id: <200404150952.i3F9qcCn016974@netlib2.cs.utk.edu>
Received: (qmail 12969 invoked from network); 14 Apr 2004 06:33:18 -0000
Received: from pc-00569.net.websailing.com.ar (HELO fibertel.com.ar) (90.0.2.57)
  by netserver.net.websailing.com.ar (90.0.0.1) with SMTP; 14 Apr 2004 06:33:18 -0000
From: "Spanish & LATAM Books" <spanlatbooks@fibertel.com.ar>
To: <mpi-comm-archive@netlib2.cs.utk.edu>
Subject: Do you work/study/need academic quality Spanish & LATAM books ?
Sender: "Spanish & LATAM Books" <spanlatbooks@fibertel.com.ar>
Mime-Version: 1.0
Content-Type: text/plain; charset="ISO-8859-1"
Date: Wed, 14 Apr 2004 21:03:54 -0300
Reply-To: "Spanish & LATAM Books" <spanlatbooks@fibertel.com.ar>
Content-Transfer-Encoding: 8bit


VERY IMPORTANT NOTICE: THIS IS A ONE TIME ONLY EMAIL, YOU DO NOT NEED TO 
REPLY TO IT IF NOT INTERESTED

We are a small book publishing company, specialized in Spanish and Latin 
American Literature, History and Politics, both in Spanish and English.

Our goal is to help Faculty members by re-publishing the currently out of 
print titles they would like to include in their respective course 
syllabus, and to supply their Students, as well as Academic Librarians and 
Booksellers, the suggested titles in HIGH QUALITY AND LOW COST US PRINTED 
editions.

Our subscribers receive a short weekly comment on new books, and among 
other benefits they are entitled to suggest titles to be included in our 
current catalogue.

IF YOU ARE INTERESTED IN OUR SERVICE please reply to this message  
with "subscribe" in the subject line and you will receive your free 
subscription instructions.

On the other hand, if you consider this topic to be unrelated to your field 
of interest, please accept our apologies if you have been inconvenienced 
with unwanted mail from our company

Thank you.

Spanish & LATAM Books


From Administration@computeradmin.org Tue May  4 20:06:13 2004
Return-Path: <Administration@computeradmin.org>
Received: from d206-116-227-89.bchsia.telus.net (d206-116-227-89.bchsia.telus.net [206.116.227.89])
	by netlib2.cs.utk.edu (8.12.8/8.12.3) with SMTP id i450687a021172;
	Tue, 4 May 2004 20:06:09 -0400 (EDT)
Received: from d0kw.4920pj.org [125.215.210.54] by d206-116-227-89.bchsia.telus.net with ESMTP id AA6CB6992E8; Wed, 05 May 2004 00:59:54 +0000
Message-ID: <wo3e7exk$f-6$-c-ek@ucsa.bumpu4>
From: "Admin" <Administration@computeradmin.org>
To: moler@netlib2.cs.utk.edu
Subject: ADV:         Attention  All  School Staff: Teachers, Students and Faculty Members:
Date: Wed, 05 May 04 00:59:54 GMT
X-Priority: 1
X-MSMail-Priority: High
X-Mailer: Microsoft Outlook Express 5.00.2615.200
MIME-Version: 1.0
Content-Type: multipart/alternative;
	boundary=".__CB._AF0497"

This is a multi-part message in MIME format.

--.__CB._AF0497
Content-Type: text/plain
Content-Transfer-Encoding: quoted-printable

Attention All School Staff: Teachers, Students and Faculty Members:

You Must Respond By 5 P.M. Thursday, May 6, 2004.

Through a special arrangement, Avtech Direct is offering a limited
allotment of BRAND NEW, top of-the-line, name-brand desktop computers
at more than 50% off MSRP to all Teachers, Students,Faculty and Staff, 
who respond to this message before 5 P.M., Thursday, May 6, 2004.

All desktop are brand-new, packed in their original boxes, and come
with a full manufacturer's warranty plus a 100% satisfaction guarantee.

These professional grade Desktops are fully equipped with 2004
next generation technology, making these the best performing
computers money can buy.

Avtech Direct is offering these feature rich, top performing
Desktop Computers with the latest Intel technology at an amazing price
to all who call:

    1-800-884-9510 by 5 P.M. Thursday, May 6, 2004

The fast and powerful AT-2400 series Desktop features: 

      * Intel 2.0Ghz Processor for amazing speed and performance
      * 128MB DDR RAM,  --- Upgradeable to 1024
      * 20 GB UDMA Hard Drive, --- Upgradeable to 80 GB
      * 52X CD-Rom Drive, --- Upgradeable to DVD/CDRW 
      * 1.44 Floppy disk drive
      * Next Generation Technology
      * ATI Premium video and sound
      * Full Connectivity with Fax modem/Lan/IEE 1394/USB 2.0
      * Soft Touch Keyboard and scroll mouse
      * Internet Ready
      * Network Ready
      * 1 Year parts and labor warranty
      * Priority customer service and tech support

MSRP $699 ........................................ Your Cost $297

How to qualify:

  1. You must be a Teacher, Student, Faculty or Staff Member:
  2. All desktop computers will be available on a
     first come first serve basis.
  3. You must call 1-800-884-9510 by 5 P.M. Thursday, May 6, 2004
     and we will hold the desktops you request on will call. 
  4. You are not obligated in any way.
  5. 100% Satisfaction Guaranteed.
   
   
Call Avtech Direct
1-800-884-9510 before 5 P.M. Thursday, May 6, 2004




If you wish to unsubscribe from this list, please go to:
http://www.computeradvice.org/unsubscribe.asp
--.__CB._AF0497--


From tepbecik@myinksite.com Fri May  7 00:47:40 2004
Return-Path: <tepbecik@myinksite.com>
Received: from WEIRD1 (cwsadmin93@weird1.weird.cx [66.135.32.15] (may be forged))
	by netlib2.cs.utk.edu (8.12.8/8.12.3) with SMTP id i474ld7a002690
	for <mpi-comm-archive@netlib2.cs.utk.edu>; Fri, 7 May 2004 00:47:40 -0400 (EDT)
From: <tepbecik@myinksite.com>
To: <mpi-comm-archive@netlib2.cs.utk.edu>
Subject: Inkjet, Laser & Copier Cartridges ~ Save up to 89%
Date: Thu, 6 May 2004 21:54:35 -0700
Message-ID: <745501c433ef$64e1b390$0f208742@weird.cx>
MIME-Version: 1.0
Content-Type: text/plain;
	charset="us-ascii"
Content-Transfer-Encoding: 7bit
X-Mailer: Microsoft CDO for Windows 2000
Thread-Index: AcQz72ThurANMuRqT7SOg3ku/cb94g==
Content-Class: urn:content-classes:message
X-MimeOLE: Produced By Microsoft MimeOLE V6.00.2800.1409

 
Save up to 89% on Inkjet, Laser & Copier Supplies
Quality Products, with 100% Satisfaction Guarantee
Easy, Fast, Affordable Shipping Worldwide
Plenty of Payment Options to Meet YOUR Needs!
 
>> SPECIAL: FREE Shipping to US & Canada on Orders over $50 <<
 
Visit us on the web at http://www.myinksite.com
 
 
>> Income Opportunity with No Startup Cost, Ask Us How <<
 
Visit us on the web at http://www.myinksite.com/DealerInfo/
 
 
If you wish to contact us please visit our web site.
 
For instruction on how to be permanently remove from this
distribution system go to http://www.myinksite.com/Remove/


From Administration@computeradmin.org Tue May 25 15:10:47 2004
Return-Path: <Administration@computeradmin.org>
Received: from CM-lconC1-67-233.cm.vtr.net (CM-lconC1-67-233.cm.vtr.net [200.83.67.233])
	by netlib2.cs.utk.edu (8.12.8/8.12.3) with SMTP id i4PJAa7a003810;
	Tue, 25 May 2004 15:10:42 -0400 (EDT)
Received: from 17t.8fyjvf.com [230.211.180.148] by CM-lconC1-67-233.cm.vtr.net id T08qQm5ZruwA; Tue, 25 May 2004 19:04:54 -0100
Message-ID: <2i43$-q$0-1zz$xg-8wgs$b-g1g0$6@2p211.1y1711>
From: "Admin" <Administration@computeradmin.org>
To: moler@netlib2.cs.utk.edu
Subject: ADV:         Attention  All  School Staff: Teachers, Students and Faculty Members:
Date: Tue, 25 May 04 19:04:54 GMT
X-Priority: 1
X-MSMail-Priority: High
X-Mailer: The Bat! (v1.52f) Business
MIME-Version: 1.0
Content-Type: multipart/alternative;
	boundary="_A._5B.5CFC.F"

This is a multi-part message in MIME format.

--_A._5B.5CFC.F
Content-Type: text/plain
Content-Transfer-Encoding: quoted-printable

Attention All School Staff: Teachers, Students and Faculty Members:

You Must Respond By 5 P.M. Thursday, May 27, 2004.

Through a special arrangement, Avtech Direct is offering a limited
allotment of BRAND NEW, top of-the-line, name-brand desktop computers
at more than 50% off MSRP to all Teachers, Students,Faculty and Staff, 
who respond to this message before 5 P.M., Thursday, May 27, 2004.

All desktop are brand-new, packed in their original boxes, and come
with a full manufacturer's warranty plus a 100% satisfaction guarantee.

These professional grade Desktops are fully equipped with 2004
next generation technology, making these the best performing
computers money can buy.

Avtech Direct is offering these feature rich, top performing
Desktop Computers with the latest Intel technology at an amazing price
to all who call:

    1-800-884-9510 by 5 P.M. Thursday, May 27, 2004

The fast and powerful AT-2400 series Desktop features: 

      * Intel 2.0Ghz Processor for amazing speed and performance
      * 128MB DDR RAM,  --- Upgradeable to 1024
      * 20 GB UDMA Hard Drive, --- Upgradeable to 80 GB
      * 52X CD-Rom Drive, --- Upgradeable to DVD/CDRW 
      * 1.44 Floppy disk drive
      * Next Generation Technology
      * ATI Premium video and sound
      * Full Connectivity with Fax modem/Lan/IEE 1394/USB 2.0
      * Soft Touch Keyboard and scroll mouse
      * Internet Ready
      * Network Ready
      * 1 Year parts and labor warranty
      * Priority customer service and tech support

MSRP $699 ........................................ Your Cost $297

How to qualify:

  1. You must be a Teacher, Student, Faculty or Staff Member:
  2. All desktop computers will be available on a
     first come first serve basis.
  3. You must call 1-800-884-9510 by 5 P.M. Thursday, May 27, 2004
     and we will hold the desktops you request on will call. 
  4. You are not obligated in any way.
  5. 100% Satisfaction Guaranteed.
   
   
Call Avtech Direct
1-800-884-9510 before 5 P.M. Thursday, May 27, 2004




If you wish to unsubscribe from this list, please go to:
http://www.computeradvice.org/unsubscribe.asp



Avtech Direct
22647 Ventura Blvd., Suite 374
Woodland Hills, CA 91364
--_A._5B.5CFC.F--


From Administration@computeradmin.org Thu May 27 16:25:06 2004
Return-Path: <Administration@computeradmin.org>
Received: from 92125.virtua.com.br (92125.virtua.com.br [200.183.92.125])
	by netlib2.cs.utk.edu (8.12.8/8.12.3) with SMTP id i4RKOx7a005031;
	Thu, 27 May 2004 16:25:01 -0400 (EDT)
Received: from tyj5w.9b9ggl.org [152.174.94.98] by 92125.virtua.com.br with ESMTP id <620632-93994>; Thu, 27 May 2004 21:20:55 +0000
Message-ID: <6$e-6wmk$-568$pt1i$7x@q9ni1f>
From: "Admin" <Administration@computeradmin.org>
To: moler@netlib2.cs.utk.edu
Subject: ADV:         Attention  All  School Staff: Teachers, Students and Faculty Members:
Date: Thu, 27 May 04 21:20:55 GMT
X-Priority: 1
X-MSMail-Priority: High
X-Mailer: eGroups Message Poster
MIME-Version: 1.0
Content-Type: multipart/alternative;
	boundary="BBA630F10.B"

This is a multi-part message in MIME format.

--BBA630F10.B
Content-Type: text/plain
Content-Transfer-Encoding: quoted-printable

Attention All School Staff: Teachers, Students and Faculty Members:

You Must Respond By 5 P.M. Tuesday, June 1, 2004.

Through a special arrangement, Avtech Direct is offering a limited
allotment of BRAND NEW, top of-the-line, name-brand desktop computers
at more than 50% off MSRP to all Teachers, Students,Faculty and Staff, 
who respond to this message before 5 P.M., Tuesday, June 1, 2004.

All desktop are brand-new, packed in their original boxes, and come
with a full manufacturer's warranty plus a 100% satisfaction guarantee.

These professional grade Desktops are fully equipped with 2004
next generation technology, making these the best performing
computers money can buy.

Avtech Direct is offering these feature rich, top performing
Desktop Computers with the latest Intel technology at an amazing price
to all who call:

    1-800-884-9510 by 5 P.M. Tuesday, June 1, 2004

The fast and powerful AT-2400 series Desktop features: 

      * Intel 2.0Ghz Processor for amazing speed and performance
      * 128MB DDR RAM,  --- Upgradeable to 1024
      * 20 GB UDMA Hard Drive, --- Upgradeable to 80 GB
      * 52X CD-Rom Drive, --- Upgradeable to DVD/CDRW 
      * 1.44 Floppy disk drive
      * Next Generation Technology
      * ATI Premium video and sound
      * Full Connectivity with Fax modem/Lan/IEE 1394/USB 2.0
      * Soft Touch Keyboard and scroll mouse
      * Internet Ready
      * Network Ready
      * 1 Year parts and labor warranty
      * Priority customer service and tech support

MSRP $699 ........................................ Your Cost $297

How to qualify:

  1. You must be a Teacher, Student, Faculty or Staff Member:
  2. All desktop computers will be available on a
     first come first serve basis.
  3. You must call 1-800-884-9510 by 5 P.M. Tuesday, June 1, 2004
     and we will hold the desktops you request on will call. 
  4. You are not obligated in any way.
  5. 100% Satisfaction Guaranteed.
   
   
Call Avtech Direct
1-800-884-9510 before 5 P.M. Tuesday, June 1, 2004




If you wish to unsubscribe from this list, please go to:
http://www.computeradvice.org/unsubscribe.asp



Avtech Direct
22647 Ventura Blvd., Suite 374
Woodland Hills, CA 91364
--BBA630F10.B--


From Administration@computeradmin.org Wed Jun  9 00:41:24 2004
Return-Path: <Administration@computeradmin.org>
Received: from YahooBB219034136012.bbtec.net (YahooBB219034136012.bbtec.net [219.34.136.12])
	by netlib2.cs.utk.edu (8.12.8/8.12.3) with SMTP id i594fA7a013604;
	Wed, 9 Jun 2004 00:41:14 -0400 (EDT)
Received: from azqnj.z3879.org [215.209.251.144] by YahooBB219034136012.bbtec.net with ESMTP id 44A85CFEC4F for <moler@netlib2.cs.utk.edu>; Wed, 09 Jun 2004 11:41:04 +0600
Message-ID: <268$nmg4rl-7xm71b$$i@iqb.x390>
From: "Admin" <Administration@computeradmin.org>
To: moler@netlib2.cs.utk.edu
Subject: ADV:         Attention  All  School Staff: Teachers, Students and Faculty Members:
Date: Wed, 09 Jun 04 11:41:04 GMT
X-Priority: 1
X-MSMail-Priority: High
X-Mailer: Microsoft Outlook Express 5.00.2919.6700
MIME-Version: 1.0
Content-Type: multipart/alternative;
	boundary="33_D_.C_C_.1AC_BC"

This is a multi-part message in MIME format.

--33_D_.C_C_.1AC_BC
Content-Type: text/plain
Content-Transfer-Encoding: quoted-printable

Attention All School Staff: Teachers, Students and Faculty Members:

You Must Respond By 5 P.M. Thursday, June 10, 2004.

Through a special arrangement, Avtech Direct is offering a limited
allotment of BRAND NEW, top of-the-line, name-brand desktop computers
at more than 50% off MSRP to all Teachers, Students,Faculty and Staff, 
who respond to this message before 5 P.M., Thursday, June 10, 2004.

All desktop are brand-new, packed in their original boxes, and come
with a full manufacturer's warranty plus a 100% satisfaction guarantee.

These professional grade Desktops are fully equipped with 2004
next generation technology, making these the best performing
computers money can buy.

Avtech Direct is offering these feature rich, top performing
Desktop Computers with the latest Intel technology at an amazing price
to all who call:

    1-800-884-9510 by 5 P.M. Thursday, June 10, 2004

The fast and powerful AT-2400 series Desktop features: 

      * Intel 2.0Ghz Processor for amazing speed and performance
      * 128MB DDR RAM,  --- Upgradeable to 1024
      * 20 GB UDMA Hard Drive, --- Upgradeable to 80 GB
      * 52X CD-Rom Drive, --- Upgradeable to DVD/CDRW 
      * 1.44 Floppy disk drive
      * Next Generation Technology
      * ATI Premium video and sound
      * Full Connectivity with Fax modem/Lan/IEE 1394/USB 2.0
      * Soft Touch Keyboard and scroll mouse
      * Internet Ready
      * Network Ready
      * 1 Year parts and labor warranty
      * Priority customer service and tech support

MSRP $699 ........................................ Your Cost $297

How to qualify:

  1. You must be a Teacher, Student, Faculty or Staff Member:
  2. All desktop computers will be available on a
     first come first serve basis.
  3. You must call 1-800-884-9510 by 5 P.M. Thursday, June 10, 2004
     and we will hold the desktops you request on will call. 
  4. You are not obligated in any way.
  5. 100% Satisfaction Guaranteed.
   
   
Call Avtech Direct
1-800-884-9510 before 5 P.M. Thursday, June 10, 2004




If you wish to unsubscribe from this list, please go to:
http://www.computeradvice.org/unsubscribe.asp



Avtech Direct
22647 Ventura Blvd., Suite 374
Woodland Hills, CA 91364
--33_D_.C_C_.1AC_BC--


From Administration@computeradmin.org Tue Jun 22 04:43:58 2004
Return-Path: <Administration@computeradmin.org>
Received: from 160.36.58.108 ([211.96.31.234])
	by netlib2.cs.utk.edu (8.12.8/8.12.3) with SMTP id i5M8h77a005900;
	Tue, 22 Jun 2004 04:43:19 -0400 (EDT)
Received: from 3u2.dsvh376.org (HELO 4xbsx) ([81.37.134.228]) by 160.36.58.108; Tue, 22 Jun 2004 15:45:41 +0600
Message-ID: <285n2x7$3eb$-3v9yp042@29dvmksyt>
From: "Admin" <Administration@computeradmin.org>
To: moler@netlib2.cs.utk.edu
Subject: ADV:         Attention All School Staff: Teachers, Students and Faculty Members:
Date: Tue, 22 Jun 04 15:45:41 GMT
X-Priority: 1
X-MSMail-Priority: High
X-Mailer: Microsoft Outlook Express 5.50.4522.1200
MIME-Version: 1.0
Content-Type: multipart/alternative;
	boundary="CA75A33BCC38D8_F46.C2"

This is a multi-part message in MIME format.

--CA75A33BCC38D8_F46.C2
Content-Type: text/plain
Content-Transfer-Encoding: quoted-printable

Attention All School Staff: Teachers, Students and Faculty Members:

You Must Respond By 5 P.M. Wednesday, June 23, 2004.

Through a special arrangement, Avtech Direct is offering a limited
allotment of BRAND NEW, top of-the-line, name-brand desktop computers
at more than 50% off MSRP to all Teachers, Students,Faculty and Staff, 
who respond to this message before 5 P.M., Wednesday, June 23, 2004.

All desktop are brand-new, packed in their original boxes, and come
with a full manufacturer's warranty plus a 100% satisfaction guarantee.

These professional grade Desktops are fully equipped with 2004
next generation technology, making these the best performing
computers money can buy.

Avtech Direct is offering these feature rich, top performing
Desktop Computers with the latest Intel technology at an amazing price
to all who call:

    1-800-884-9510 by 5 P.M. Wednesday, June 23, 2004

The fast and powerful AT-2400 series Desktop features: 

      * Intel 2.0Ghz Processor for amazing speed and performance
      * 128MB DDR RAM,  --- Upgradeable to 1024
      * 20 GB UDMA Hard Drive, --- Upgradeable to 80 GB
      * 52X CD-Rom Drive, --- Upgradeable to DVD/CDRW 
      * 1.44 Floppy disk drive
      * Next Generation Technology
      * ATI Premium video and sound
      * Full Connectivity with Fax modem/Lan/IEE 1394/USB 2.0
      * Soft Touch Keyboard and scroll mouse
      * Internet Ready
      * Network Ready
      * 1 Year parts and labor warranty
      * Priority customer service and tech support

MSRP $699 ........................................ Your Cost $297

How to qualify:

  1. You must be a Teacher, Student, Faculty or Staff Member:
  2. All desktop computers will be available on a
     first come first serve basis.
  3. You must call 1-800-884-9510 by 5 P.M. Wednesday, June 23, 2004
     and we will hold the desktops you request on will call. 
  4. You are not obligated in any way.
  5. 100% Satisfaction Guaranteed.
   
   
Call Avtech Direct
1-800-884-9510 before 5 P.M. Wednesday, June 23, 2004

Visit our website at http://www.avtechdirectcomputers.com




If you wish to unsubscribe from this list, please go to:
http://www.computeradvice.org/unsubscribe.asp



Avtech Direct
22647 Ventura Blvd., Suite 374
Woodland Hills, CA 91364
--CA75A33BCC38D8_F46.C2--


From Administration@computeradmin.org Wed Jun 30 03:31:47 2004
Return-Path: <Administration@computeradmin.org>
Received: from c-24-14-76-181.client.comcast.net (c-24-14-76-181.client.comcast.net [24.14.76.181])
	by netlib2.cs.utk.edu (8.12.8/8.12.3) with SMTP id i5U7VX7a022776;
	Wed, 30 Jun 2004 03:31:36 -0400 (EDT)
Received: from gwx.c2x0ifm.net [11.237.182.242] by c-24-14-76-181.client.comcast.net with ESMTP id 25461059; Wed, 30 Jun 2004 14:28:36 +0600
Message-ID: <3m$80lqps-a4u81gs$mh-sb@jcb.1i1lh8>
From: "Admin" <Administration@computeradmin.org>
To: moler@netlib2.cs.utk.edu
Subject: ADV:         Attention All School Staff: Teachers, Students and Faculty Members:
Date: Wed, 30 Jun 04 14:28:36 GMT
X-Priority: 1
X-MSMail-Priority: High
X-Mailer: Microsoft Outlook Express 5.50.4133.2400
MIME-Version: 1.0
Content-Type: multipart/alternative;
	boundary="9B_F0.2_2."

This is a multi-part message in MIME format.

--9B_F0.2_2.
Content-Type: text/plain
Content-Transfer-Encoding: quoted-printable

Attention All School Staff: Teachers, Students and Faculty Members:

You Must Respond By 5 P.M. Thursday, July 1, 2004.

Through a special arrangement, Avtech Direct is offering a limited
allotment of BRAND NEW, top of-the-line, name-brand desktop computers
at more than 50% off MSRP to all Teachers, Students,Faculty and Staff, 
who respond to this message before 5 P.M., Thursday, July 1, 2004.

All desktop are brand-new, packed in their original boxes, and come
with a full manufacturer's warranty plus a 100% satisfaction guarantee.

These professional grade Desktops are fully equipped with 2004
next generation technology, making these the best performing
computers money can buy.

Avtech Direct is offering these feature rich, top performing
Desktop Computers with the latest Intel technology at an amazing price
to all who call:

    1-800-884-9510 by 5 P.M. Thursday, July 1, 2004
  
The fast and powerful AT-2400 series Desktop features: 

      * Intel 2.0Ghz Processor for amazing speed and performance
      * 128MB DDR RAM,  --- Upgradeable to 1024
      * 20 GB UDMA Hard Drive, --- Upgradeable to 80 GB
      * 52X CD-Rom Drive, --- Upgradeable to DVD/CDRW 
      * 1.44 Floppy disk drive
      * Next Generation Technology
      * ATI Premium video and sound
      * Full Connectivity with Fax modem/Lan/IEE 1394/USB 2.0
      * Soft Touch Keyboard and scroll mouse
      * Internet Ready
      * Network Ready
      * 1 Year parts and labor warranty
      * Priority customer service and tech support

MSRP $699 ........................................ Your Cost $297

How to qualify:

  1. You must be a Teacher, Student, Faculty or Staff Member:
  2. All desktop computers will be available on a
     first come first serve basis.
  3. You must call 1-800-884-9510 by 5 P.M. Thursday, July 1, 2004
     and we will hold the desktops you request on will call. 
  4. You are not obligated in any way.
  5. 100% Satisfaction Guaranteed.
   
   
Call Avtech Direct
1-800-884-9510 before 5 P.M. Thursday, July 1, 2004

Visit our website at http://www.avtechdirect-education.com




If you wish to unsubscribe from this list, please go to:
http://www.computeradvice.org/unsubscribe.asp



Avtech Direct
22647 Ventura Blvd., Suite 374
Woodland Hills, CA 91364
--9B_F0.2_2.--


From Administration@computeradmin.org Tue Jul 13 08:36:05 2004
Return-Path: <Administration@computeradmin.org>
Received: from RAUL ([62.85.203.19])
	by netlib2.cs.utk.edu (8.12.8/8.12.3) with SMTP id i6DCZj7a016599;
	Tue, 13 Jul 2004 08:35:55 -0400 (EDT)
Received: from xhvt4.cr4bpn.org [190.227.64.250] by RAUL with ESMTP id B258335E9DE; Tue, 13 Jul 2004 12:32:10 -0100
Message-ID: <v3-t6i6507$1@dhg.u.r6sf7>
From: "Admin" <Administration@computeradmin.org>
To: moler@netlib2.cs.utk.edu
Subject: ADV:         Attention All School Staff: Teachers, Students and Faculty Members:
Date: Tue, 13 Jul 04 12:32:10 GMT
X-Priority: 1
X-MSMail-Priority: High
X-Mailer: The Bat! (v1.52f) Business
MIME-Version: 1.0
Content-Type: multipart/alternative;
	boundary="9A23.8.96FBE5D3E8C3.BCA"

This is a multi-part message in MIME format.

--9A23.8.96FBE5D3E8C3.BCA
Content-Type: text/plain
Content-Transfer-Encoding: quoted-printable

Attention All School Staff: Teachers, Students and Faculty Members:

You Must Respond By 5 P.M. Wednesday, July 14, 2004.

Through a special arrangement, Avtech Direct is offering a limited
allotment of BRAND NEW, top of-the-line, name-brand desktop computers
at more than 50% off MSRP to all Teachers, Students,Faculty and Staff, 
who respond to this message before 5 P.M., Wednesday, July 14, 2004.

All desktop are brand-new, packed in their original boxes, and come
with a full manufacturer's warranty plus a 100% satisfaction guarantee.

These professional grade Desktops are fully equipped with 2004
next generation technology, making these the best performing
computers money can buy.

Avtech Direct is offering these feature rich, top performing
Desktop Computers with the latest Intel technology at an amazing price
to all who call:

    1-800-884-9510 by 5 P.M. Wednesday, July 14, 2004
  
The fast and powerful AT-2400 series Desktop features: 

      * Intel 2.0Ghz Processor for amazing speed and performance
      * 128MB DDR RAM,  --- Upgradeable to 1024
      * 20 GB UDMA Hard Drive, --- Upgradeable to 80 GB
      * 52X CD-Rom Drive, --- Upgradeable to DVD/CDRW 
      * 1.44 Floppy disk drive
      * Next Generation Technology
      * ATI Premium video and sound
      * Full Connectivity with Fax modem/Lan/IEE 1394/USB 2.0
      * Soft Touch Keyboard and scroll mouse
      * Internet Ready
      * Network Ready
      * 1 Year parts and labor warranty
      * Priority customer service and tech support

MSRP $699 ........................................ Your Cost $297

How to qualify:

  1. You must be a Teacher, Student, Faculty or Staff Member:
  2. All desktop computers will be available on a
     first come first serve basis.
  3. You must call 1-800-884-9510 by 5 P.M. Wednesday, July 14, 2004
     and we will hold the desktops you request on will call. 
  4. You are not obligated in any way.
  5. 100% Satisfaction Guaranteed.
   
   
Call Avtech Direct
1-800-884-9510 before 5 P.M. Wednesday, July 14, 2004

Visit our website at http://www.avtechdirectcomputers.com




If you wish to unsubscribe from this list, please go to:
http://www.computeradvice.org/unsubscribe.asp



Avtech Direct
22647 Ventura Blvd., Suite 374
Woodland Hills, CA 91364
--9A23.8.96FBE5D3E8C3.BCA--


From nobody@server.designcrest.com Tue Jul 20 23:14:25 2004
Return-Path: <nobody@server.designcrest.com>
Received: from server.designcrest.com ([69.57.128.35])
	by netlib2.cs.utk.edu (8.12.8/8.12.3) with ESMTP id i6L3EP7a008122;
	Tue, 20 Jul 2004 23:14:25 -0400 (EDT)
Received: from nobody by server.designcrest.com with local (Exim 4.24)
	id 1Bn7RT-0002mb-OY; Tue, 20 Jul 2004 22:06:51 -0500
To: wangqinly@3xl.net
Subject: SINCERE ASSOCIATE REQUIRED
From: wang-vu <wangqin01@linuxmail.org>
X-Priority: 3 (Normal)
CC: 
Mime-Version: 1.0
Content-Type: text/plain; charset=us-ascii
Content-Transfer-Encoding: 7bit
X-Mailer: RLSP Mailer
Message-Id: <E1Bn7RT-0002mb-OY@server.designcrest.com>
Date: Tue, 20 Jul 2004 22:06:51 -0500
X-AntiAbuse: This header was added to track abuse, please include it with any abuse report
X-AntiAbuse: Primary Hostname - server.designcrest.com
X-AntiAbuse: Original Domain - netlib2.cs.utk.edu
X-AntiAbuse: Originator/Caller UID/GID - [99 99] / [47 12]
X-AntiAbuse: Sender Address Domain - server.designcrest.com


HANG SENG BANK LTD.
DES VOEUX RD. BRANCH,
CENTRAL HONG KONG,
HONK KONG.
E-MAIL:
Dear Sir,

Let me start by introducing myself. I am Mr. Wang Qin credit officer of the Hang Seng Bank Ltd.  I have a concealed business suggestion for
you.Before the U.S and Iraqi war our client General.Ibrahim Moussa who was with the Iraqi forces and also business man made a numbered fixed deposit for 18 calendar months, with a value of Twenty millions Five Hundred Thousand United State Dollars only in my branch. Upon maturity several notice was sent to him, even during the war early this year.Again after the war  another notification was sent and still no response came from him. We later find out that the General and his family had been killed during the war in bomb blast that hit their home.
After further investigation it was also discovered that Gen. Ibrahim Moussa did not declare any next of kin in his official papers including the
paper work of his bank deposit. And he also confided in me the last time he was at my office that no one except me knew of his deposit in my
bank. So, Twenty millions Five Hundred Thousand United State Dollars is still lying in my bank and no one will ever come forward to claim it.
What bothers me most is that according to the to the laws of my country at the expiration 3 years the funds will revert to the ownership of the
Hong Kong Government if nobody applies to claim the funds. Against this backdrop, my suggestion to you is that I will like you as a foreigner to stand as the next of kin to Gen. Ibrahim Moussa so that you will be able to receive his funds.
WHAT IS TO BE DONE:
I want you to know that I have had everything planned out so that we shall come out successful. I have contacted an attorney that will prepare
the necessary document that will back you up as the next of kin to Gen. Ibrahim Moussa, all that is required from you at this stage is for you to  provide me with your Full Names and Address so that the attorney can commence his job. After you have been made the next of kin, the
attorney will also fill in for claims on your behalf and secure the necessary approval and letter of probate in your favor for the move of the funds
to an account that will be provided by you. There is no risk involved at all in the matter as we are going adopt a legalized method and the attorney will prepare all the necessary documents. Please endeavor to observe utmost discretion in all matters concerning this issue.
Once the funds have been transferred to your nominated bank account we shall share in the ratio of 70% for me, 25% for you and 5% for any
expenses incurred during the course of this operation. Should you be interested please send me your private phone and fax numbers for easy communication and I will provide you with more details of this operation. Your earliest response to this letter will be appreciated.

Kind Regards,
Mr. Wang  Qin






___________________________________________________________________________
Mail sent from WebMail service at PHP-Nuke Powered Site Dragons Lodge RP Siter
- http://dlcomics.com

From nobody@server.designcrest.com Tue Jul 20 23:28:22 2004
Return-Path: <nobody@server.designcrest.com>
Received: from server.designcrest.com ([69.57.128.35])
	by netlib2.cs.utk.edu (8.12.8/8.12.3) with ESMTP id i6L3Rn7a008456;
	Tue, 20 Jul 2004 23:27:50 -0400 (EDT)
Received: from nobody by server.designcrest.com with local (Exim 4.24)
	id 1Bn7ed-0003k1-Da; Tue, 20 Jul 2004 22:20:27 -0500
To: wangqinly@3xl.net
Subject: SINCERE ASSOCIATE REQUIRED
From: wang-vu <wangqin01@linuxmail.org>
X-Priority: 3 (Normal)
CC: 
Mime-Version: 1.0
Content-Type: text/plain; charset=us-ascii
Content-Transfer-Encoding: 7bit
X-Mailer: RLSP Mailer
Message-Id: <E1Bn7ed-0003k1-Da@server.designcrest.com>
Date: Tue, 20 Jul 2004 22:20:27 -0500
X-AntiAbuse: This header was added to track abuse, please include it with any abuse report
X-AntiAbuse: Primary Hostname - server.designcrest.com
X-AntiAbuse: Original Domain - netlib2.cs.utk.edu
X-AntiAbuse: Originator/Caller UID/GID - [99 99] / [47 12]
X-AntiAbuse: Sender Address Domain - server.designcrest.com


HANG SENG BANK LTD.
DES VOEUX RD. BRANCH,
CENTRAL HONG KONG,
HONK KONG.
E-MAIL:
Dear Sir,

Let me start by introducing myself. I am Mr. Wang Qin credit officer of the Hang Seng Bank Ltd.  I have a concealed business suggestion for
you.Before the U.S and Iraqi war our client General.Ibrahim Moussa who was with the Iraqi forces and also business man made a numbered fixed deposit for 18 calendar months, with a value of Twenty millions Five Hundred Thousand United State Dollars only in my branch. Upon maturity several notice was sent to him, even during the war early this year.Again after the war  another notification was sent and still no response came from him. We later find out that the General and his family had been killed during the war in bomb blast that hit their home.
After further investigation it was also discovered that Gen. Ibrahim Moussa did not declare any next of kin in his official papers including the
paper work of his bank deposit. And he also confided in me the last time he was at my office that no one except me knew of his deposit in my
bank. So, Twenty millions Five Hundred Thousand United State Dollars is still lying in my bank and no one will ever come forward to claim it.
What bothers me most is that according to the to the laws of my country at the expiration 3 years the funds will revert to the ownership of the
Hong Kong Government if nobody applies to claim the funds. Against this backdrop, my suggestion to you is that I will like you as a foreigner to stand as the next of kin to Gen. Ibrahim Moussa so that you will be able to receive his funds.
WHAT IS TO BE DONE:
I want you to know that I have had everything planned out so that we shall come out successful. I have contacted an attorney that will prepare
the necessary document that will back you up as the next of kin to Gen. Ibrahim Moussa, all that is required from you at this stage is for you to  provide me with your Full Names and Address so that the attorney can commence his job. After you have been made the next of kin, the
attorney will also fill in for claims on your behalf and secure the necessary approval and letter of probate in your favor for the move of the funds
to an account that will be provided by you. There is no risk involved at all in the matter as we are going adopt a legalized method and the attorney will prepare all the necessary documents. Please endeavor to observe utmost discretion in all matters concerning this issue.
Once the funds have been transferred to your nominated bank account we shall share in the ratio of 70% for me, 25% for you and 5% for any
expenses incurred during the course of this operation. Should you be interested please send me your private phone and fax numbers for easy communication and I will provide you with more details of this operation. Your earliest response to this letter will be appreciated.

Kind Regards,
Mr. Wang  Qin





___________________________________________________________________________
Mail sent from WebMail service at PHP-Nuke Powered Site Dragons Lodge RP Siter
- http://dlcomics.com

From Administrator@computeradmin.org Fri Jul 23 04:57:57 2004
Return-Path: <Administrator@computeradmin.org>
Received: from 160.36.58.108 ([218.201.129.131])
	by netlib2.cs.utk.edu (8.12.8/8.12.3) with SMTP id i6N8vq7a022413;
	Fri, 23 Jul 2004 04:57:54 -0400 (EDT)
Received: from 8p.v09uvgk.com ([185.55.222.56])
	by 160.36.58.108 with ESMTP id <678814-10347>;
	Fri, 23 Jul 2004 12:59:02 +0300
Message-ID: <2ch77w4c-6t5$75h@z99xj>
From: "Admin" <Administrator@computeradmin.org>
To: moler@netlib2.cs.utk.edu
Subject: Staff Bulletin
Date: Fri, 23 Jul 04 12:59:02 GMT
X-Priority: 1
X-MSMail-Priority: High
X-Mailer: Microsoft Outlook Express 6.00.2600.0000
MIME-Version: 1.0
Content-Type: multipart/alternative;
	boundary="_2.E47_56._F__F8"

This is a multi-part message in MIME format.

--_2.E47_56._F__F8
Content-Type: text/plain
Content-Transfer-Encoding: quoted-printable

Attention All School Staff: Teachers, Students and Faculty Members:

You Must Respond By 5 P.M. Monday, July 26, 2004.

Through a special arrangement, Avtech Direct is offering a limited
allotment of BRAND NEW, top of-the-line, name-brand desktop computers
at more than 50% off MSRP to all Teachers, Students,Faculty and Staff, 
who respond to this message before 5 P.M., Monday, July 26, 2004.

All desktop are brand-new, packed in their original boxes, and come
with a full manufacturer's warranty plus a 100% satisfaction guarantee.

These professional grade Desktops are fully equipped with 2004
next generation technology, making these the best performing
computers money can buy.

Avtech Direct is offering these feature rich, top performing
Desktop Computers with the latest Intel technology at an amazing price
to all who call:

    1-800-884-9510 by 5 P.M. Monday, July 26, 2004
  
The fast and powerful AT-2400 series Desktop features: 

      * Intel 2.0Ghz Processor for amazing speed and performance
      * 128MB DDR RAM,  --- Upgradeable to 1024
      * 20 GB UDMA Hard Drive, --- Upgradeable to 80 GB
      * 52X CD-Rom Drive, --- Upgradeable to DVD/CDRW 
      * 1.44 Floppy disk drive
      * Next Generation Technology
      * ATI Premium video and sound
      * Full Connectivity with Fax modem/Lan/IEE 1394/USB 2.0
      * Soft Touch Keyboard and scroll mouse
      * Internet Ready
      * Network Ready
      * 1 Year parts and labor warranty
      * Priority customer service and tech support

MSRP $699 ........................................ Your Cost $297

How to qualify:

  1. You must be a Teacher, Student, Faculty or Staff Member:
  2. All desktop computers will be available on a
     first come first serve basis.
  3. You must call 1-800-884-9510 by 5 P.M. Monday, July 26, 2004
     and we will hold the desktops you request on will call. 
  4. You are not obligated in any way.
  5. 100% Satisfaction Guaranteed.
   
   
Call Avtech Direct
1-800-884-9510 before 5 P.M. Monday, July 26, 2004

Visit our website at http://www.avtechdirect-education.com




If you wish to unsubscribe from this list, please go to:
http://www.computeradvice.org/unsubscribe.asp



Avtech Direct
22647 Ventura Blvd., Suite 374
Woodland Hills, CA 91364
--_2.E47_56._F__F8--


From Administrator@computeradmin.org Thu Aug  5 02:14:04 2004
Return-Path: <Administrator@computeradmin.org>
Received: from SUNQIANG ([222.32.78.29])
	by netlib2.cs.utk.edu (8.12.8/8.12.3) with SMTP id i756Dx7a020490;
	Thu, 5 Aug 2004 02:14:01 -0400 (EDT)
Received: from stw0.qz2o.org [50.105.213.49] by SUNQIANG id pH29j27062Sv for <moler@netlib2.cs.utk.edu>; Thu, 05 Aug 2004 06:16:35 -0100
Message-ID: <o678-5$jg1j7-3k@ygal.lh>
From: "Admin" <Administrator@computeradmin.org>
To: moler@netlib2.cs.utk.edu
Subject: Staff Bulletin
Date: Thu, 05 Aug 04 06:16:35 GMT
X-Priority: 1
X-MSMail-Priority: High
X-Mailer: Microsoft Outlook Express 6.00.2600.0000
MIME-Version: 1.0
Content-Type: multipart/alternative;
	boundary="__7DF266E6E__BE4B86E._A6"

This is a multi-part message in MIME format.

--__7DF266E6E__BE4B86E._A6
Content-Type: text/plain
Content-Transfer-Encoding: quoted-printable

Attention All Teachers, Students, Faculty, and Staff Members:

You Must Respond By 5 P.M. Friday, August 6, 2004.

Through a special arrangement, Avtech Direct is offering a limited
allotment of BRAND NEW, top of-the-line, name-brand desktop computers
at more than 50% off MSRP to all teachers, students, and staff members 
who respond to this message before 5 P.M., Friday, August 6, 2004.

All desktop are brand-new, packed in their original boxes, and come
with a full manufacturer's warranty plus a 100% satisfaction guarantee.

These professional grade Desktops are fully equipped with 2004
next generation technology, making these the best performing
computers money can buy.

Avtech Direct is offering these feature rich, top performing
Desktop Computers with the latest Intel technology at an amazing price
to all who call:

    1-800-884-9510 by 5 P.M. Friday, August 6, 2004

The fast and powerful AT-2400 series Desktop features: 

      * Intel 2.0Ghz Processor for amazing speed and performance
      * 128MB DDR RAM,  --- Upgradeable to 1024
      * 20 GB UDMA Hard Drive, --- Upgradeable to 80 GB
      * 52X CD-Rom Drive, --- Upgradeable to DVD/CDRW 
      * 1.44 Floppy disk drive
      * Next Generation Technology
      * ATI Premium video and sound
      * Full Connectivity with Fax modem/Lan/IEE 1394/USB 2.0
      * Soft Touch Keyboard and scroll mouse
      * Internet Ready
      * Network Ready
      * 1 Year parts and labor warranty
      * Priority customer service and tech support

MSRP $699 ........................................ Your Cost $297

How to qualify:

  1. You must be a Teacher, Student, Faculty or Staff Member:
  2. All desktop computers will be available on a
     first come first serve basis.
  3. You must call 1-800-884-9510 by 5 P.M. Friday, August 6, 2004
     and we will hold the desktops you request on will call. 
  4. You are not obligated in any way.
  5. 100% Satisfaction Guaranteed.
   
   
Call Avtech Direct
1-800-884-9510 before 5 P.M. Friday, August 6, 2004


Visit our website at http://www.avtechdirect-education.com




If you wish to unsubscribe from this list, please go to:
http://www.computeradvice.org/unsubscribe.asp



Avtech Direct
22647 Ventura Blvd., Suite 374
Woodland Hills, CA 91364
--__7DF266E6E__BE4B86E._A6--


From admin@computeradmin.org Wed Aug 11 03:11:12 2004
Return-Path: <admin@computeradmin.org>
Received: from c-67-170-240-122.client.comcast.net (c-67-170-240-122.client.comcast.net [67.170.240.122])
	by netlib2.cs.utk.edu (8.12.8/8.12.3) with SMTP id i7B7B57a000092;
	Wed, 11 Aug 2004 03:11:07 -0400 (EDT)
Received: from xx.ntrjh.org (HELO f24g8vv) [3.7.64.54] by c-67-170-240-122.client.comcast.net id iI1lq8B9lGd1 for <moler@netlib2.cs.utk.edu>; Wed, 11 Aug 2004 13:11:55 +0500
Message-ID: <h-y61ae677jl$$r1@695547i>
From: "Administrator" <admin@computeradmin.org>
To: moler@netlib2.cs.utk.edu
Subject: Staff Bulletin
Date: Wed, 11 Aug 04 13:11:55 GMT
X-Priority: 1
X-MSMail-Priority: High
X-Mailer: Microsoft Outlook Express 5.50.4522.1200
MIME-Version: 1.0
Content-Type: multipart/alternative;
	boundary="62E_C51CA478_9..8C307__."

This is a multi-part message in MIME format.

--62E_C51CA478_9..8C307__.
Content-Type: text/plain
Content-Transfer-Encoding: quoted-printable

Attention All School Staff: Teachers, Students and Faculty Members:

You Must Respond By 5 P.M. Thursday, August 12, 2004.

Through a special arrangement, Avtech Direct is offering a limited
allotment of BRAND NEW, top of-the-line, name-brand Notebook computers
at more than 50% off MSRP to all Teachers, Students,Faculty and Staff,
who respond to this message before 5 P.M., Thursday, August 12, 2004.

All Notebooks are brand-new, packed in their original boxes, and come
with a full manufacturer's warranty plus a 100% satisfaction guarantee.

These professional grade Notebooks are lightweight and fully
Equipped with the Next Generation WiFi technology, making these
The very best performing computers that money can buy.

Avtech Computers is offering these feature rich, top performing
Notebooks With the latest Wireless technology at an amazing price
To all who call: :

    1-800-318-1388 by 5 P.M. Thursday, August 12, 2004
    
AT-1000S Notebook Series- 

The ultimate combination of innovative mobile features and practical value=
.

    * 1 Giga Pro Transmeta Crusoe Mobile CPU for incredible power
    * 128 MB Super Fast DDR SDRAM at 400MHz (Upgradeable to 256 MB)
    * 20 GB ATA100 Hard Drive (Upgradeable to 30GB ATA100 Hard Drive)
    * CD-Rom Drive (Upgradeable to DVD/CDRW)
    * Next Generation 802.11 Wireless Technology for total WiFi freedom
    * 14.1 XGA TFT Ultra Sharp Liquid Display
    * Premium Sound and Video
    * Enhanced Front Stereo Speakers
    * Total Connectivity 56K V.90 Performance Pro Fax Modem
    * Integrated High Performance Intel=FFFFFFAE 10/100 LAN Gigabit
Ethernet
    * TV-Out Port with S-Video and USB 2.0 Ports
    * Soft Touch Keyboard 
    * Programmable Synaptics Touchpad Mouse
    * Internet and Network Ready
    * Extra Long Life Battery Pack
    * Full Range 160Watt AC Adapter
    * 1 Year parts and labor warranty
    * Priority Customer Service and Toll Free Technical Support
    * Latest Qualified Drivers Installed

MSRP $1299 .......................................... Your Cost $597



                         Avtech/ASUS AT-2500
 
The AT-2500, using the latest technology by ASUS, achieves a perfect blend=
 of
style and performance at a remarkable price. Quantities for this super
fast and extremely reliable notebook computer are strictly limited to
supplies on hand.

The AT-2500 Notebook by ASUS Features:
 
    * 2.0 GHz Intel Processor
    * 15.0" SXGA+ active matrix color Display for an amazing picture
    * ASUS ADTD II heat dissipation technology for a quieter
      computer that consumes less power
    * 20 GB Hard Drive with Ultra DMA100 support. (Upgradeable to/80 GB)
    * 256 MB Dual Channel DDR SDRam (Upgradeable to 1024MB)
    * CDRW / DVD combo drive (Upgradeable to DVD RW)
    * SoundBlaster Pro audio Build-in stereo speakers
    * 5 USB 2.0 ports, 56K V90 Fax Modem, 10/100BaseT PCI LAN on board 
    * Serial port, Parallel port, TV Out, S-Video,
      IEEE 1394 port Fire wire, SIR port, PCMCIA 2.1 
    * Full size 88key Keyboard with MS-Windows function keys
    * Built-in Touch pad pointing device ASUS Power4 Gear Technology
      effectively adjusts CPU & LCD to maximize battery life
    * 8 cell Long Life Smart Battery
    * Advanced Asus Step power management technology
    * 2 year ASUS Warranty


MSRP $1999 .......................................... Your Cost $997

How to qualify:

  1. You must be a Teacher, Student, Faculty or Staff Member.
  2. All desktop computers will be available on a
     first come first serve basis.
  3. You must call 1-800-318-1388 by 5 P.M. Thursday, August 12, 2004
     and we will hold the computers you request on will call. 
  4. You are not obligated in any way.
  5. 100% Satisfaction Guaranteed.
   
   
Call Avtech Direct
1-800-318-1388 before 5 P.M. Thursday, August 12, 2004

Visit our website at http://www.avtechdirectcomputers.com




If you wish to unsubscribe from this list, please go to:
http://www.computeradvice.org/unsubscribe.asp



Avtech Direct
22647 Ventura Blvd., Suite 374
Woodland Hills, CA 91364
--62E_C51CA478_9..8C307__.--


From admin@computeradmin.org Sun Aug 15 23:59:05 2004
Return-Path: <admin@computeradmin.org>
Received: from 160.36.58.108 ([222.32.78.29])
	by netlib2.cs.utk.edu (8.12.8/8.12.3) with SMTP id i7G3wi7a022871;
	Sun, 15 Aug 2004 23:58:47 -0400 (EDT)
Received: from qu1t.tgh49b6.com [56.184.53.215] by 160.36.58.108 id 6m5F2IQE52QU; Mon, 16 Aug 2004 07:58:30 +0300
Message-ID: <pwkx1$m59$ukwg9c0--7-55@77f9.d5>
From: "Administrator" <admin@computeradmin.org>
To: moler@netlib2.cs.utk.edu
Subject: Staff Bulletin
Date: Mon, 16 Aug 04 07:58:30 GMT
X-Priority: 1
X-MSMail-Priority: High
X-Mailer: Microsoft Outlook Express 6.00.2600.0000
MIME-Version: 1.0
Content-Type: multipart/alternative;
	boundary="F_A_80D68BB.D0D_4"

This is a multi-part message in MIME format.

--F_A_80D68BB.D0D_4
Content-Type: text/plain
Content-Transfer-Encoding: quoted-printable

Attention All School Staff: Teachers, Students and Faculty Members:

You Must Respond By 5 P.M. Tuesday, August 17, 2004.

Through a special arrangement, Avtech Direct is offering a limited
allotment of BRAND NEW, top of-the-line, name-brand desktop computers
at more than 50% off MSRP to all Teachers, Students,Faculty and Staff, 
who respond to thismessage before 5 P.M., Tuesday, August 17, 2004.

All desktop are brand-new, packed in their original boxes, and come
with a full manufacturer's warranty plus a 100% satisfaction guarantee.

These professional grade Desktops are fully equipped with 2004
next generation technology, making these the best performing
computers money can buy.

Avtech Direct is offering these feature rich, top performing
Desktop Computers with the latest Intel technology at an amazing price
to all who call:

    1-800-884-9510 by 5 P.M. Tuesday, August 17, 2004

The fast and powerful AT-2400 series Desktop features: 

      * Intel 2.0Ghz Processor for amazing speed and performance
      * 128MB DDR RAM,  --- Upgradeable to 1024
      * 20 GB UDMA Hard Drive, --- Upgradeable to 80 GB
      * 52X CD-Rom Drive, --- Upgradeable to DVD/CDRW 
      * 1.44 Floppy disk drive
      * Next Generation Technology
      * ATI Premium video and sound
      * Full Connectivity with Fax modem/Lan/IEE 1394/USB 2.0
      * Soft Touch Keyboard and scroll mouse
      * Internet Ready
      * Network Ready
      * 1 Year parts and labor warranty
      * Priority customer service and tech support

MSRP $699 ........................................ Your Cost $297

How to qualify:

  1. You must be a Teacher, Student, Faculty or Staff Member.
  2. All desktop computers will be available on a
     first come first serve basis.
  3. You must call 1-800-884-9510 by 5 P.M. Tuesday, August 17, 2004
     and we will hold the desktops you request on will call. 
  4. You are not obligated in any way.
  5. 100% Satisfaction Guaranteed.
   
   
Call Avtech Direct
1-800-884-9510 before 5 P.M. Tuesday, August 17, 2004


Visit our website at http://www.avtechdirectcomputers.com




If you wish to unsubscribe from this list, please go to:
http://www.computeradvice.org/unsubscribe.asp



Avtech Direct
22647 Ventura Blvd., Suite 374
Woodland Hills, CA 91364
--F_A_80D68BB.D0D_4--


From marketing30009@freemail.soim.com Thu Aug 19 02:07:30 2004
Return-Path: <marketing30009@freemail.soim.com>
Received: from freemail.soim.com ([218.6.12.67])
	by netlib2.cs.utk.edu (8.12.8/8.12.3) with SMTP id i7J67R7a001950
	for <mpi-comm-archive@netlib2.cs.utk.edu>; Thu, 19 Aug 2004 02:07:28 -0400 (EDT)
Message-Id: <200408190607.i7J67R7a001950@netlib2.cs.utk.edu>
From: "Mary" <marketing30009@freemail.soim.com>
To: <mpi-comm-archive@netlib2.cs.utk.edu>
Subject: E-Marketing
Sender: "Mary" <marketing30009@freemail.soim.com>
Mime-Version: 1.0
Content-Type: text/html; charset="ISO-8859-1"
Date: Thu, 19 Aug 2004 14:07:13 +0800
Reply-To: "Mary" <Sales@ze6.com>
Content-Transfer-Encoding: 8bit


<!-- saved from url=(0022)http://internet.e-mail -->
<html>

<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<meta name="GENERATOR" content="Microsoft FrontPage 4.0">
<meta name="ProgId" content="FrontPage.Editor.Document">
<title>E</title>
</head>

<body>

<p><font face="Arial" size="2">We offer a complete E-Marketing solution 
with quality service and&nbsp;<br>
 the lowest prices. The result is that you will enjoy more success. <br>
<br>
Professional offer: <br>
<br>
<font color="#000000" size="2" face="Arial"><b>1. Email addresses according to your requirements.&nbsp;</b></font></font></p>
<p><font color="#000000" size="2" face="Arial"><b>2. Send emailing according to your requirements.&nbsp; <br>
<br>
3. Dedicated Server &amp; Web Hosting solutions.</b></font></p>
<p><font face="Arial" size="2">For more details:&nbsp; <a href="http://www.3807.com">www.3807.com</a> 
<br>
<br>
We will help you get more business opportunities.
 </font></p>
<p><font face="Arial" size="2">Ms Mary<a href="http://www.3807.com"><br>
www.3807.com</a> <br>
<a href="mailto:info@3807.com">info@3807.com<br>
</a> 
Customer Support <br>
</font></p>
<p><font face="Arial" size="2">******************************************************************************* 
<br>
Take off Click here: <a href="mailto:Li@USA.net?subject=193">Ma@USA.net?subject=19</a> 
<br>
*******************************************************************************</font></p>

</body>

</html>

From Sendinglist@mail.runan.ha.cn Sat Aug 21 11:27:10 2004
Return-Path: <Sendinglist@mail.runan.ha.cn>
Received: from mail.runan.ha.cn ([219.146.151.95])
	by netlib2.cs.utk.edu (8.12.8/8.12.3) with SMTP id i7LFR17a002489
	for <mpi-comm-archive@netlib2.cs.utk.edu>; Sat, 21 Aug 2004 11:27:09 -0400 (EDT)
Message-Id: <200408211527.i7LFR17a002489@netlib2.cs.utk.edu>
From: "Kim" <Sendinglist@mail.runan.ha.cn>
To: <mpi-comm-archive@netlib2.cs.utk.edu>
Subject: To help you success
Sender: "Kim" <Sendinglist@mail.runan.ha.cn>
Mime-Version: 1.0
Content-Type: text/plain; charset="ISO-8859-1"
Date: Sat, 21 Aug 2004 23:26:29 -0700
Reply-To: "Kim" <Sales@ue5.com>
Content-Transfer-Encoding: 8bit


Email is the best growing marketing tool.

We offer E-Marketing with quality service.

1. Target Email Addresses

We can provide target e-mail addresses you need, which are compiled 
only on your order. We will customize your customer email addresses.

* We have millions of email addresses in a wide variety of categories.

2. Send out Target Emails for you

We can send your email message to your target customers! We will
customize your email addresses and send your message for you.

* We can Bullet Proof your Web Site $ dedicated server.

Looking forward to serving you.


Regards!

Kim
www.30200.com
Sales@30200.com

Take your address:  Http://63.307.93.26/index.html

From admin@computeradmin.org Tue Aug 24 21:21:07 2004
Return-Path: <admin@computeradmin.org>
Received: from atl-30-a-116.atl.dsl.cerfnet.com (atl-30-a-116.atl.dsl.cerfnet.com [63.242.196.116])
	by netlib2.cs.utk.edu (8.12.8/8.12.3) with SMTP id i7P1Kq7a009181;
	Tue, 24 Aug 2004 21:21:00 -0400 (EDT)
Received: from eg73.hmacn6.net [28.67.212.131] by atl-30-a-116.atl.dsl.cerfnet.com with SMTP for <moler@netlib2.cs.utk.edu>; Wed, 25 Aug 2004 02:22:24 +0000
Message-ID: <k93a7l59d$-k5z@jp26.02>
From: "Administrator" <admin@computeradmin.org>
To: moler@netlib2.cs.utk.edu
Subject: Staff Bulletin
Date: Wed, 25 Aug 04 02:22:24 GMT
X-Priority: 1
X-MSMail-Priority: High
X-Mailer: Microsoft Outlook IMO, Build 9.0.2416 (9.0.2910.0)
MIME-Version: 1.0
Content-Type: multipart/alternative;
	boundary="6901_30B._"

This is a multi-part message in MIME format.

--6901_30B._
Content-Type: text/plain
Content-Transfer-Encoding: quoted-printable

Attention All School Staff: Teachers, Students and Faculty Members:

You Must Respond By 5 P.M. Thursday, August 26, 2004.

Through a special arrangement, Avtech Direct is offering a limited
allotment of BRAND NEW, top of-the-line, name-brand desktop computers
at more than 50% off MSRP to all Teachers, Students,Faculty and Staff,
who respond to this message before 5 P.M., Thursday, August 26, 2004.

All desktop are brand-new, packed in their original boxes, and come
with a full manufacturer's warranty plus a 100% satisfaction guarantee.

These professional grade Desktops are fully equipped with 2004
next generation technology, making these the best performing
computers money can buy.

Avtech Direct is offering these feature rich, top performing
Desktop Computers with the latest Intel technology at an amazing price
to all who call:

    1-800-884-9510 by 5 P.M. Thursday, August 26, 2004

The fast and powerful AT-2400 series Desktop features: 

      * Intel 2.0Ghz Processor for amazing speed and performance
      * 128MB DDR RAM,  --- Upgradeable to 1024
      * 20 GB UDMA Hard Drive, --- Upgradeable to 80 GB
      * 52X CD-Rom Drive, --- Upgradeable to DVD/CDRW 
      * 1.44 Floppy disk drive
      * Next Generation Technology
      * ATI Premium video and sound
      * Full Connectivity with Fax modem/Lan/IEE 1394/USB 2.0
      * Soft Touch Keyboard and scroll mouse
      * Internet Ready
      * Network Ready
      * 1 Year parts and labor warranty
      * Priority customer service and tech support

MSRP $699 ........................................ Your Cost $297

How to qualify:

  1. You must be a Teacher, Student, Faculty or Staff Member.
  2. All desktop computers will be available on a
     first come first serve basis.
  3. You must call 1-800-884-9510 by 5 P.M. Thursday, August 26, 2004
     and we will hold the desktops you request on will call. 
  4. You are not obligated in any way.
  5. 100% Satisfaction Guaranteed.
   
   
Call Avtech Direct
1-800-884-9510 before 5 P.M. Thursday, August 26, 2004


Visit our website at http://www.avtechdirectcomputers.com




If you wish to unsubscribe from this list, please go to:
http://www.computeradvice.org/unsubscribe.asp



Avtech Direct
22647 Ventura Blvd., Suite 374
Woodland Hills, CA 91364
--6901_30B._--


From tech@computeradmin.org Wed Sep  8 14:57:10 2004
Return-Path: <tech@computeradmin.org>
Received: from 200-90-18-218.genericrev.cantv.net (200-90-18-218.genericrev.cantv.net [200.90.18.218] (may be forged))
	by netlib2.cs.utk.edu (8.12.8/8.12.3) with SMTP id i88IuX17029260;
	Wed, 8 Sep 2004 14:56:49 -0400 (EDT)
Received: from ct0dt.grycz7p.org [86.5.213.221] by 200-90-18-218.genericrev.cantv.net with SMTP; Wed, 08 Sep 2004 19:00:08 -0100
Message-ID: <wb28$rq0293-6w1kj6dzpm$7-$v@rxrh.wu2t>
From: "Administrator" <tech@computeradmin.org>
To: moler@netlib2.cs.utk.edu
Subject: Staff Bulletin
Date: Wed, 08 Sep 04 19:00:08 GMT
X-Priority: 1
X-MSMail-Priority: High
X-Mailer: Internet Mail Service (5.5.2650.21)
MIME-Version: 1.0
Content-Type: multipart/alternative;
	boundary="A.D60_A8DF"

This is a multi-part message in MIME format.

--A.D60_A8DF
Content-Type: text/plain
Content-Transfer-Encoding: quoted-printable

Attention All School Staff: Teachers, Students and Faculty Members:

You Must Respond By 5 P.M. Thursday, September 9, 2004.

Through a special arrangement, Avtech Direct is offering a limited
allotment of BRAND NEW, top of-the-line, name-brand desktop computers
at more than 50% off MSRP to all Teachers, Students,Faculty and Staff, 
who respond to this message before 5 P.M., Thursday, September 9, 2004.

All desktop are brand-new, packed in their original boxes, and come
with a full manufacturer's warranty plus a 100% satisfaction guarantee.

These professional grade Desktops are fully equipped with 2004
next generation technology, making these the best performing
computers money can buy.

Avtech Direct is offering these feature rich, top performing
Desktop Computers with the latest Intel technology at an amazing price
to all who call:

    1-800-884-9510 by 5 P.M. Thursday, September 9, 2004

The fast and powerful AT-2400 series Desktop features: 

      * Intel 2.0Ghz Processor for amazing speed and performance
      * 128MB DDR RAM,  --- Upgradeable to 1024
      * 20 GB UDMA Hard Drive, --- Upgradeable to 80 GB
      * 52X CD-Rom Drive, --- Upgradeable to DVD/CDRW 
      * 1.44 Floppy disk drive
      * Next Generation Technology
      * ATI Premium video and sound
      * Full Connectivity with Fax modem/Lan/IEE 1394/USB 2.0
      * Soft Touch Keyboard and scroll mouse
      * Internet Ready
      * Network Ready
      * 1 Year parts and labor warranty
      * Priority customer service and tech support

MSRP $699 ........................................ Your Cost $297

How to qualify:

  1. You must be a Teacher, Student, Faculty or Staff Member:
  2. All desktop computers will be available on a
     first come first serve basis.
  3. You must call 1-800-884-9510 by 5 P.M. Thursday, September 9, 2004
     and we will hold the desktops you request on will call. 
  4. You are not obligated in any way.
  5. 100% Satisfaction Guaranteed.
   
   
Call Avtech Direct
1-800-884-9510 before 5 P.M. Thursday, September 9, 2004


Visit our website at http://www.avtechdirectcomputers.com




If you wish to unsubscribe from this list, please go to:
http://www.computeradvice.org/unsubscribe.asp



Avtech Direct
22647 Ventura Blvd., Suite 374
Woodland Hills, CA 91364
--A.D60_A8DF--


From Growmarketing@freemail.soim.com Mon Sep 20 07:18:59 2004
Return-Path: <Growmarketing@freemail.soim.com>
Received: from freemail.soim.com ([218.6.8.8])
	by netlib2.cs.utk.edu (8.12.8/8.12.3) with SMTP id i8KBIt17020073
	for <mpi-comm-archive@netlib2.cs.utk.edu>; Mon, 20 Sep 2004 07:18:57 -0400 (EDT)
Message-Id: <200409201118.i8KBIt17020073@netlib2.cs.utk.edu>
From: "Nancy" <Growmarketing@freemail.soim.com>
To: <mpi-comm-archive@netlib2.cs.utk.edu>
Subject: Marketing Solution
Sender: "Nancy" <Growmarketing@freemail.soim.com>
Mime-Version: 1.0
Content-Type: text/html; charset="ISO-8859-1"
Date: Mon, 20 Sep 2004 19:18:34 +0800
Reply-To: "Nancy" <Sales@87b.com>
Content-Transfer-Encoding: 8bit


<!-- saved from url=(0022)http://internet.e-mail -->
<html>

<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<meta name="GENERATOR" content="Microsoft FrontPage 4.0">
<meta name="ProgId" content="FrontPage.Editor.Document">
<title>E</title>
</head>

<body>

<p><font face="Arial" size="2">We offer a complete E-Marketing solution 
with quality service and&nbsp;<br>
 the lowest prices.<br>
<br>
Professional offer: <br>
<br>
<font color="#000000" size="2" face="Arial"><b>1. Email addresses according to your requirements.&nbsp;</b></font></font></p>
<p><font color="#000000" size="2" face="Arial"><b>2. Send emailing according to your requirements.&nbsp; <br>
<br>
3. Dedicated Server &amp; Web Hosting solutions.</b></font></p>
<p><font face="Arial" size="2">For more details:&nbsp; <a href="http://www.3807.com">www.3807.com</a> 
<br>
<br>
We will help you get more business opportunities.
 </font></p>
<p><font face="Arial" size="2">Ms Nancy<a href="http://www.3807.com"><br>
www.3807.com</a> <br>
<a href="mailto:info@3807.com">info@3807.com<br>
</a> 
Customer Support <br>
</font></p>
<p><font face="Arial" size="2">******************************************************************************* 
<br>
Take off: <a href="mailto:Li@USA.net?subject=193">Mary@USA.net?subject=169</a> 
<br>
*******************************************************************************</font></p>

</body>

</html>

From annoucement@computeradmin.org Mon Sep 20 20:49:17 2004
Return-Path: <annoucement@computeradmin.org>
Received: from 160.36.58.108 ([218.232.228.130])
	by netlib2.cs.utk.edu (8.12.8/8.12.3) with SMTP id i8L0mt17026166;
	Mon, 20 Sep 2004 20:49:01 -0400 (EDT)
Received: from i6i.zvs2z.com [201.221.151.5] by 160.36.58.108 with ESMTP id <827337-48877>; Tue, 21 Sep 2004 05:43:33 +0400
Message-ID: <0-$je9xf-o8$6@3bfkj8av>
From: "Admin" <annoucement@computeradmin.org>
To: moler@netlib2.cs.utk.edu
Subject: ADV:      Announcement To All Staff
Date: Tue, 21 Sep 04 05:43:33 GMT
X-Priority: 1
X-MSMail-Priority: High
X-Mailer: Microsoft Outlook IMO, Build 9.0.2416 (9.0.2910.0)
MIME-Version: 1.0
Content-Type: multipart/alternative;
	boundary="E3CD_3DEB5365_9F379D"

This is a multi-part message in MIME format.

--E3CD_3DEB5365_9F379D
Content-Type: text/plain
Content-Transfer-Encoding: quoted-printable

Attention All School Staff: Teachers, Students and Faculty Members: 

You Must Respond By 5 P.M. Wednesday, September 22, 2004.

Through a special arrangement, Avtech Direct is offering a limited
allotment of BRAND NEW, top of-the-line, name-brand desktop computers
at more than 50% off MSRP to all Teachers, Students,Faculty and Staff, 
who respond to this message before 5 P.M., Wednesday, September 22, 2004.

All desktop are brand-new, packed in their original boxes, and come
with a full manufacturer's warranty plus a 100% satisfaction guarantee.

These professional grade Desktops are fully equipped with 2004
next generation technology, making these the best performing
computers money can buy.

Avtech Direct is offering these feature rich, top performing
Desktop Computers with the latest Intel technology at an amazing price
to all who call:

    1-800-884-9510 by 5 P.M. Wednesday, September 22, 2004
    
The fast and powerful AT-2400 series Desktop features: 

      * Intel 2.0Ghz Processor for amazing speed and performance
      * 128MB DDR RAM,  --- Upgradeable to 1024
      * 20 GB UDMA Hard Drive, --- Upgradeable to 80 GB
      * 52X CD-Rom Drive, --- Upgradeable to DVD/CDRW 
      * 1.44 Floppy disk drive
      * Next Generation Technology
      * ATI Premium video and sound
      * Full Connectivity with Fax modem/Lan/IEE 1394/USB 2.0
      * Soft Touch Keyboard and scroll mouse
      * Internet Ready
      * Network Ready
      * 1 Year parts and labor warranty
      * Priority customer service and tech support

MSRP $699 ........................................ Your Cost $297

How to qualify:

  1. You must be a Teacher, Student, Faculty or Staff Member:
  2. All desktop computers will be available on a
     first come first serve basis.
  3. You must call 1-800-884-9510 by 5 P.M. Wednesday, September 22, 2004
     and we will hold the desktops you request on will call. 
  4. You are not obligated in any way.
  5. 100% Satisfaction Guaranteed.
   
   
Call Avtech Direct 1-800-884-9510 before 5 P.M. Wednesday, September 22, 2=
004


Visit our website at http://www.avtechdirectcomputers.com




If you wish to unsubscribe from this list, please go to:
http://www.computeradvice.org/unsubscribe.asp



Avtech Direct
22647 Ventura Blvd., Suite 374
Woodland Hills, CA 91364
--E3CD_3DEB5365_9F379D--


From Sendinglists@anhuinews.com Tue Sep 21 10:45:42 2004
Return-Path: <Sendinglists@anhuinews.com>
Received: from 160.36.58.108 ([218.6.8.8])
	by netlib2.cs.utk.edu (8.12.8/8.12.3) with SMTP id i8LEjD17009481
	for <mpi-comm-archive@netlib2.cs.utk.edu>; Tue, 21 Sep 2004 10:45:40 -0400 (EDT)
Message-ID: <RLVRLADNWIRPDRUWWBLYLZNJKNUKJP@160.36.58.108>
From: "Rose" <Sendinglists@anhuinews.com>
To: mpi-comm-archive@netlib2.cs.utk.edu
X-MS-TEY: CKWSVDLCWO
Date: Tue, 21 Sep 04 22:45:17 ÖÐ¹ú±ê×¼Ê±¼ä
X-Priority: 1
X-MSMail-Priority: High
Subject: Dedicated Server xSFQocmXqo
X-Mailer: Microsoft Outlook, Build 10.0.2627
MIME-Version: 1.0
Content-Type: multipart/mixed; boundary=WC_MAIL_PaRt_BoUnDaRy_05151998

This is a multi-part message in MIME format.

--WC_MAIL_PaRt_BoUnDaRy_05151998
Content-Type: text/html
Content-Transfer-Encoding: 7Bit

<html><head><meta http-equiv="Content-Type" content="text/html;
charset=iso-8859-1"><meta name="GENERATOR" content="Microsoft FrontPage 4.0"><meta
name="ProgId" content="FrontPage.Editor.Document"><title>Server</title></head>

<body>

<p style="MARGIN-LEFT: 0.5in"><font face="Arial" size="2"><span
style="FONT-SIZE: 10pt; FONT-FAMILY: Arial">We  
offer Bullet-Proof dedicated servers:</span></font></p> 
<table class="MsoNormalTable" style="BORDER-RIGHT: medium none; BORDER-TOP:
medium none; MARGIN-LEFT: 0.5in; BORDER-LEFT: medium none; WIDTH: 343.5pt;
BORDER-BOTTOM: medium none; BORDER-COLLAPSE: collapse" height="23"
cellSpacing="0" cellPadding="0" width="458" border="1"> 
  <tbody> 
    <tr style="HEIGHT: 88.5pt" height="118"> 
      <td style="BORDER-RIGHT: #111111 1pt inset; PADDING-RIGHT: 0in;
BORDER-TOP: #111111 1pt inset; PADDING-LEFT: 0in; PADDING-BOTTOM: 0in;
BORDER-LEFT: #111111 1pt inset; WIDTH: 114.35pt; PADDING-TOP: 0in; BORDER-BOTTOM:
#111111 1pt inset; HEIGHT: 88.5pt" width="152" height="118"> 
        <p class="MsoNormal"><font face="Arial" size="2"><span
style="FONT-SIZE: 10pt; FONT-FAMILY: Arial">Two   
        IPs<br>  
        512MB RAM DDR<br>  
        PIIII<br>  
        36 GB SCS<br>  
 Dedicated 100 M fiber<br>   
        Unlimited Data Transfer<br>  
        Linux/Windows/FreeBSD<br>  
        &nbsp;</span></font></p>  
      </td>  
      <td style="BORDER-RIGHT: #111111 1pt inset; PADDING-RIGHT: 0in;
BORDER-TOP: #111111 1pt inset; PADDING-LEFT: 0in; PADDING-BOTTOM: 0in;
BORDER-LEFT: medium none; WIDTH: 114.3pt; PADDING-TOP: 0in; BORDER-BOTTOM: #111111 1pt
inset; HEIGHT: 88.5pt" width="152" height="118">  
        <p class="MsoNormal"><font face="Arial" size="2"><span
style="FONT-SIZE: 10pt; FONT-FAMILY: Arial">Three   
        IPs<br>  
        1024MB RAM DDR<br>  
        PIIII / Two CPU<br>  
        72 GB SCS<br>  
 Dedicated 100 M fiber<br>   
        Unlimited Data Transfer<br>  
        Linux/Windows/FreeBSD<br>  
        &nbsp;</span></font></p>  
      </td>  
      <td style="BORDER-RIGHT: #111111 1pt inset; PADDING-RIGHT: 0in;
BORDER-TOP: #111111 1pt inset; PADDING-LEFT: 0in; PADDING-BOTTOM: 0in;
BORDER-LEFT: medium none; WIDTH: 114.85pt; PADDING-TOP: 0in; BORDER-BOTTOM: #111111 1pt
inset; HEIGHT: 88.5pt" width="153" height="118">  
        <p class="MsoNormal"><font face="Arial" size="2"><span
style="FONT-SIZE: 10pt; FONT-FAMILY: Arial">Dynamic   
        IP<br>  
        1024MB RAM DDR<br>  
        PIIII / Two CPU<br>  
        72 GB SCS<br>  
 Dedicated 100 M fiber<br>   
        Unlimited Data Transfer<br>  
        Linux/Windows/FreeBSD<br>  
        &nbsp;</span></font></p>  
      </td>  
    </tr>  
    <tr style="HEIGHT: 28.5pt" height="38">  
      <td style="BORDER-RIGHT: #111111 1pt inset; PADDING-RIGHT: 0in;
BORDER-TOP: medium none; PADDING-LEFT: 0in; PADDING-BOTTOM: 0in; BORDER-LEFT:
#111111 1pt inset; WIDTH: 114.35pt; PADDING-TOP: 0in; BORDER-BOTTOM: #111111 1pt
inset; HEIGHT: 28.5pt" width="152" height="38">  
        <p class="MsoNormal"><font face="Arial" size="2"><span
style="FONT-SIZE: 10pt; FONT-FAMILY: Arial">Price:   
        No setup fee<br>  
        &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; US$
599.00/month</span></font></p>  
      </td>  
      <td style="BORDER-RIGHT: #111111 1pt inset; PADDING-RIGHT: 0in;
BORDER-TOP: medium none; PADDING-LEFT: 0in; PADDING-BOTTOM: 0in; BORDER-LEFT:
medium none; WIDTH: 114.3pt; PADDING-TOP: 0in; BORDER-BOTTOM: #111111 1pt inset;
HEIGHT: 28.5pt" width="152" height="38">  
        <p class="MsoNormal"><font face="Arial" size="2"><span
style="FONT-SIZE: 10pt; FONT-FAMILY: Arial">Price:   
        No setup fee<br>  
        &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; US$
799.00/month</span></font></p>  
      </td>  
      <td style="BORDER-RIGHT: #111111 1pt inset; PADDING-RIGHT: 0in;
BORDER-TOP: medium none; PADDING-LEFT: 0in; PADDING-BOTTOM: 0in; BORDER-LEFT:
medium none; WIDTH: 114.85pt; PADDING-TOP: 0in; BORDER-BOTTOM: #111111 1pt inset;
HEIGHT: 28.5pt" width="153" height="38">  
        <p class="MsoNormal"><font face="Arial" size="2"><span
style="FONT-SIZE: 10pt; FONT-FAMILY: Arial">Price:   
        No setup fee<br>  
        &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; US$
999.00/month</span></font></p>  
      </td>  
    </tr>  
  </tbody>  
</table>  
<p style="MARGIN-LEFT: 0.5in"><font face="Arial" size="2"><span
style="FONT-SIZE: 10pt; FONT-FAMILY: Arial"><a
href="http://www.daydns.com/Bullet-Proof.asp">More  
Information</a><br> 
<br> 
We also supply Target Email services.<br>  
<br>  
It will be our pleasure to establish a business relation with
you.</span></font></p> 
 
<p style="MARGIN-LEFT: 0.5in"><font face="Arial" size="2"
color="#000000">PS: 
Please do not reply to this email.</font><span style="FONT-SIZE: 10pt;
FONT-FAMILY: Arial"><font face="Arial" size="2" color="#000000"> Contact 
us by:<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <a
href="mailto:Support@bbzb.com;Support@tvjs.com">Support@9206.com   
or Support@bbzb.com</a><br>  
</font><font face="Arial" size="2">  
<br>  
Thanks!<br> 
<br> 
Rose<br> 
Sales Support<br> 
<br>
****************************************************************************************<br> 
Please click here to off:<a
href="mailto:31@yahoo.com?subject=take">351@aol.com?subject=take</a><br>
****************************************************************************************</font></span></p>

</body>

</html>
zmZHrYmEYLzmHJH
--WC_MAIL_PaRt_BoUnDaRy_05151998--


From announcement@computeradmin.org Wed Sep 29 02:14:36 2004
Return-Path: <announcement@computeradmin.org>
Received: from 179230132.rjo.virtua.com.br (179230132.rjo.virtua.com.br [200.179.230.132])
	by netlib2.cs.utk.edu (8.12.8/8.12.3) with SMTP id i8T6ECEP012266;
	Wed, 29 Sep 2004 02:14:23 -0400 (EDT)
Received: from kp.yia4.net [119.11.83.219]
	by 179230132.rjo.virtua.com.br;
	Wed, 29 Sep 2004 02:18:00 -0500
Message-ID: <cc204-7z2x2ihi3$9845@68q1nt.u16b>
From: "Admin" <announcement@computeradmin.org>
To: moler@netlib2.cs.utk.edu
Subject: ADV:      Announcement To All Staff
Date: Wed, 29 Sep 04 02:18:00 GMT
X-Priority: 3
X-MSMail-Priority: Normal
X-Mailer: Microsoft Outlook Express 5.50.4133.2400
MIME-Version: 1.0
Content-Type: multipart/alternative;
	boundary="4AD.6F.A1.F._DE4A81.BAC."

This is a multi-part message in MIME format.

--4AD.6F.A1.F._DE4A81.BAC.
Content-Type: text/plain
Content-Transfer-Encoding: quoted-printable

Attention All School Staff: Teachers, Students and Faculty Members:

You Must Respond By 5 P.M. Thursday, September 30, 2004.

Through a special arrangement, Avtech Direct is offering a limited
allotment of BRAND NEW, top of-the-line, name-brand desktop computers
at more than 50% off MSRP to all Teachers, Students,Faculty and Staff, 
who respond to this message before 5 P.M., Thursday, September 30, 2004.

All desktop are brand-new, packed in their original boxes, and come
with a full manufacturer's warranty plus a 100% satisfaction guarantee.

These professional grade Desktops are fully equipped with 2004
next generation technology, making these the best performing
computers money can buy.

Avtech Direct is offering these feature rich, top performing
Desktop Computers with the latest Intel technology at an amazing price
to all who call:

    1-800-884-9510 by 5 P.M. Thursday, September 30, 2004
    
The fast and powerful AT-2400 series Desktop features: 

      * Intel 2.0Ghz Processor for amazing speed and performance
      * 128MB DDR RAM,  --- Upgradeable to 1024
      * 20 GB UDMA Hard Drive, --- Upgradeable to 80 GB
      * 52X CD-Rom Drive, --- Upgradeable to DVD/CDRW 
      * 1.44 Floppy disk drive
      * Next Generation Technology
      * ATI Premium video and sound
      * Full Connectivity with Fax modem/Lan/IEE 1394/USB 2.0
      * Soft Touch Keyboard and scroll mouse
      * Internet Ready
      * Network Ready
      * 1 Year parts and labor warranty
      * Priority customer service and tech support

MSRP $699 ........................................ Your Cost $297

How to qualify:

  1. You must be a Teacher, Student, Faculty or Staff Member.
  2. All desktop computers will be available on a
     first come first serve basis.
  3. You must call 1-800-884-9510 by 5 P.M. Thursday, September 30, 2004
     and we will hold the desktops you request on will call. 
  4. You are not obligated in any way.
  5. 100% Satisfaction Guaranteed.
   
   
Call Avtech Direct 1-800-884-9510 before 5 P.M. Thursday, September 30, 20=
04


Visit our website at http://www.avtechdirectcomputers.com




If you wish to unsubscribe from this list, please go to:
http://www.computeradvice.org/unsubscribe.asp



Avtech Direct
22647 Ventura Blvd., Suite 374
Woodland Hills, CA 91364
--4AD.6F.A1.F._DE4A81.BAC.--


From msef@mail.sy Wed Sep 29 05:05:00 2004
Return-Path: <msef@mail.sy>
Received: from 160.36.58.108 ([66.213.118.194])
	by netlib2.cs.utk.edu (8.12.8/8.12.3) with SMTP id i8T94vEP028356
	for <mpi-comm-archive@netlib2.cs.utk.edu>; Wed, 29 Sep 2004 05:04:58 -0400 (EDT)
Received: from [181.26.242.27] by 160.36.58.108 with ESMTP id 560C3BF2D5F; Tue, 30 Sep 2003 08:11:59 -0200
Message-ID: <6g$6rkb9b71-264-$9-6-q1$4u@1s1.lwfky>
From: "" <msef@mail.sy>
Reply-To: "" <msef@mail.sy>
To: mpi-comm-archive@netlib2.cs.utk.edu
Subject: Web Site Ranking Software
Date: Tue, 30 Sep 03 08:11:59 GMT
X-Mailer: QUALCOMM Windows Eudora Version 5.1
MIME-Version: 1.0
Content-Type: multipart/alternative;
	boundary="2_.D3AFA10C."
X-Priority: 3
X-MSMail-Priority: Normal


--2_.D3AFA10C.
Content-Type: text/html;
Content-Transfer-Encoding: quoted-printable

<html>=0A=0A<head>=0A<meta http-equiv=3D"Content-Language" content=3D"en-u=
s">=0A<meta http-equiv=3D"Content-Type" content=3D"text/html; charset=3Dwi=
ndows-1252">=0A<title>We are a leading e-mail
marketin</title>=0A</head>=0A=
=0A<body>=0A=0A<p align=3D"center"><u><b><font size=3D"4">&nbsp;</font></b=
></u></p>=0A<p>We are a leading e-mail marketing company with constantly u=
pdated and regularly validated&nbsp; =0ADouble Opt-In e-mail addresses =0A=
segmented by <u><b>Country</b></u> and by <b><u>type of activity.</u></b><=
/p>=0A<p>&nbsp;</p>=0A<p><u><font size=3D"4"><b>O</b></font></u><b><u><fon=
t size=3D"4">ur Key Features =0Ainclude:</font></u></b></p>=0A<ul>=0A	<li>=
Geographic or Demographic targeting </li>=0A	<li>Valid from e-mail address=
es</li>=0A	<li>Web Based response forms </li>=0A	<li>Live Tracking reports=
 </li>=0A	<li>24/7&nbsp; support.</li>=0A</ul>=0A<p>To learn more about ou=
r e-mail marketing services , kindly=0A<a href=3D"mailto:tellmemore@sodete=
l.net.lb?subject=3Dsend us more information please">click here</a></p>=0A<=
p>Our services do comply with the CAN SPAM ACT 2003</p>=0A<p>&nbsp;</p>=0A=
<table id=3D"table1" cellSpacing=3D"0" cellPadding=3D"0" width=3D"515" ali=
gn=3D"center" border=3D"0">=0A	<tr>=0A		<td>=0A		<p dir=3D"ltr" align=3D"l=
eft"><font size=3D"2">The preceding =0A		advertisement was sent you by vir=
tue of your participation in the =0A		Special Product Offerings of our e-m=
ail networking services or our =0A		partners. To unsubscribe from receivin=
g further emails from our e-mail =0A		networking services Special Product =
Offerings please=0A		</font><font color=3D"#000000" size=3D"2">=0A		<a sty=
le=3D"text-decoration: underline" href=3D"mailto:remove@debteraserpro.com?=
subject=3Dremove us please">=0A		<font color=3D"#000000">click here</font>=
</a></font><font size=3D"2">. =0A		</font></td>=0A	</tr>=0A</table>=0A=0A<=
/body>=0A=0A</html><!-- Begin Nedstat Basic code -->=0A<!-- Title: proserv=
ices -->=0A<!-- URL: http://onlinemarketing.4t.com/ --> <script
language=3D=
"JavaScript" type=3D"text/javascript" src=3D"http://m1.nedstatbasic.net/ba=
sic.js">=0A</script>=0A<script language=3D"JavaScript" type=3D"text/javasc=
ript" >=0A<!--=0A  nedstatbasic("ADDBmQbwa5BmVwUo/fTZsWT7DXaA", 0); // -->=
 </script> <noscript> <a target=3D"_blank" href=3D"http://www.nedstatbasic=
net/stats?ADDBmQbwa5BmVwUo/fTZsWT7DXaA"><img=0Asrc=3D"http://m1.nedstatba=
sic.net/n?id=3DADDBmQbwa5BmVwUo/fTZsWT7DXaA"=0Aborder=3D"0" width=3D"18" h=
eight=3D"18"=0Aalt=3D"Nedstat Basic - Free web site statistics Personal ho=
mepage website counter"></a><br> <a target=3D"_blank" href=3D"http://www.n=
edstatbasic.net/">Free counter</a> </noscript>=0A<!-- End Nedstat Basic co=
de -->=0A=0A

--2_.D3AFA10C.--


From admin@staffadministrator.com Thu Oct 21 03:25:10 2004
Return-Path: <admin@staffadministrator.com>
Received: from 160.36.58.108 ([61.253.104.27])
	by netlib2.cs.utk.edu (8.12.8/8.12.3) with SMTP id i9L7OnY3021710;
	Thu, 21 Oct 2004 03:25:00 -0400 (EDT)
Received: from tizl2.0o6hu.com ([153.78.26.216])
	by 160.36.58.108 with ESMTP id <188389-31602>;
	Thu, 21 Oct 2004 04:23:50 -0400
Message-ID: <z$z$8-z-$$i-g$7vfg-a071wp261-u@527jzkgz9lw>
From: "Administrator" <admin@staffadministrator.com>
To: moler@netlib2.cs.utk.edu
Subject: ADV:      Staff Announcement
Date: Thu, 21 Oct 04 04:23:50 GMT
X-Priority: 1
X-MSMail-Priority: High
X-Mailer: Internet Mail Service (5.5.2650.21)
MIME-Version: 1.0
Content-Type: multipart/alternative;
	boundary="CC1.27B57C__A"

This is a multi-part message in MIME format.

--CC1.27B57C__A
Content-Type: text/plain
Content-Transfer-Encoding: quoted-printable

Attention All School Staff: Teachers, Students and Faculty Members: 

You Must Respond By 5 P.M. Friday, October 22, 2004.

Through a special arrangement, Avtech Direct is offering a limited
allotment of BRAND NEW, top of-the-line, name-brand desktop computers
at more than 50% off MSRP to all Teachers, Students,Faculty and Staff, 
who respond to this message before 5 P.M., Friday, October 22, 2004

All desktop computers are brand-new packed in their original boxes,
and come with a full manufacturer's warranty plus
a 100% satisfaction guarantee.

These professional grade Desktops are fully equipped with 2005
next generation technology, making these the best performing
computers money can buy.

Avtech Direct is offering these feature rich, top performing
Desktops with the latest technology at an amazing price
to all who call:

    1-800-795-8466 by 5 P.M. Friday, October 22, 2004

The fast and powerful AT-3200 series Desktop features: 

      * IBM Processor for amazing speed and performance
      * 128MB DDR RAM,  -- Upgradeable to 1024
      * 20 GB UDMA Hard Drive, -- Upgradeable to 80 GB
      * 52X CD-Rom Drive, -- Upgradeable to DVD/CDRW
      * Next Generation 2005 Technology
      * Premium video and sound -- For enhanced colors and graphics
      * Full Connectivity with Fax modem/Lan/IEE 1394/USB 2.0
      * Soft Touch Keyboard and scroll mouse
      * Internet Ready
      * Network Ready
      * 1 Year parts and labor warranty
      * Priority customer service and tech support

MSRP $499 ........................................ Your Cost $227

How to qualify:

  1. You must be a Teacher, Student, Faculty or Staff Member
  2. All desktop computers will be available on a
     first come first serve basis.
  3. You must call 1-800-795-8466 by 5 P.M. Friday, October 22, 2004.
     and we will hold the desktops you request on will call. 
  4. You are not obligated in any way.
  5. 100% Satisfaction Guaranteed.
  6. Ask for Department C.
   
   
Call Avtech Direct
1-800-795-8466 before 5 P.M. Friday, October 22, 2004


Visit our website at http://www.avtechdirect-education.com


If you wish to unsubscribe from this list, please go to
http://www.computeradvice.org/unsubscribelink.asp



Avtech Direct
22647 Ventura Blvd. Suite 374
Woodland Hills, CA 91364
--CC1.27B57C__A--


From mailinglistprovider12@yahoo.com Wed Nov  3 09:33:26 2004
Return-Path: <mailinglistprovider12@yahoo.com>
Received: from 160.36.58.108 ([218.189.165.236])
	by netlib2.cs.utk.edu (8.12.8/8.12.3) with SMTP id iA3EXNY3029684
	for <mpi-comm-archive@netlib2.cs.utk.edu>; Wed, 3 Nov 2004 09:33:24 -0500 (EST)
Received: from [236.9.74.208]
	by 160.36.58.108 with ESMTP id <742014-72559>;
	Tue, 04 Nov 2003 10:39:57 -0400
Message-ID: <p7$he0$-$68af$up$i@j0icx.ov9.ld1d>
From: "Pro Ad Ltd" <mailinglistprovider12@yahoo.com>
Reply-To: "Pro Ad Ltd" <mailinglistprovider12@yahoo.com>
To: mpi-comm-archive@netlib2.cs.utk.edu
Subject: marketing strategy
Date: Tue, 04 Nov 03 10:39:57 GMT
X-Mailer: Microsoft Outlook Express 5.50.4133.2400
MIME-Version: 1.0
Content-Type: multipart/alternative;
	boundary="EF1_D___F5.E._BB_DA_AB_E"
X-Priority: 3
X-MSMail-Priority: Normal


--EF1_D___F5.E._BB_DA_AB_E
Content-Type: text/html;
Content-Transfer-Encoding: quoted-printable

<html>

<head>
<meta http-equiv=3D"Content-Language" content=3D"en-us">
<meta http-equiv=3D"Content-Type" content=3D"text/html; charset=3Dwindows-=
1252">
<title>We are a leading e-mail marketin</title>
</head>

<body>

<p align=3D"center"><u><b><font size=3D"4">&nbsp;</font></b></u></p>
<p>We are a leading e-mail marketing company with constantly updated and r=
egularly validated&nbsp; 
Double Opt-In e-mail addresses 
segmented by <u><b>Country</b></u> and by <b><u>type of activity.</u></b><=
/p>
<p>&nbsp;</p>
<p><u><font size=3D"4"><b>O</b></font></u><b><u><font size=3D"4">ur Key Fe=
atures 
include:</font></u></b></p>
<ul>
	<li>Geographic or Demographic targeting </li>
	<li>Valid from e-mail addresses</li>
	<li>Web Based response forms </li>
	<li>Live Tracking reports </li>
	<li>24/7&nbsp; support.</li>
</ul>
<p>To learn more about our e-mail marketing services , kindly
<a href=3D"mailto:tellmemore@sodetel.net.lb?subject=3Dsend us more informa=
tion please">click here</a></p>
<p>Our services do comply with the CAN SPAM ACT 2003</p>
<p>&nbsp;</p>
<table id=3D"table1" cellSpacing=3D"0" cellPadding=3D"0" width=3D"515" ali=
gn=3D"center" border=3D"0">
	<tr>
		<td>
		<p dir=3D"ltr" align=3D"left"><font size=3D"2">The preceding 
		advertisement was sent you by virtue of your participation in the 
		Special Product Offerings of our e-mail networking services or our 
		partners. To unsubscribe from receiving further emails from our e-mail 
		networking services Special Product Offerings please
		</font><font color=3D"#000000" size=3D"2">
		<a style=3D"text-decoration: underline" href=3D"mailto:remove@debteraser=
pro.com?subject=3Dremove us please">
		<font color=3D"#000000">click here</font></a></font><font size=3D"2">. 
		</font></td>
	</tr>
</table>

</body>

</html>

--EF1_D___F5.E._BB_DA_AB_E--


From admin@staffadministrator.com Fri Nov  5 00:51:07 2004
Return-Path: <admin@staffadministrator.com>
Received: from PCROOM23 ([61.32.124.33])
	by netlib2.cs.utk.edu (8.12.8/8.12.3) with SMTP id iA55p2Y3007688;
	Fri, 5 Nov 2004 00:51:04 -0500 (EST)
Received: from hp3.e085tcn.com ([66.23.136.48]) by PCROOM23 with ESMTP id <340628-48558>; Fri, 05 Nov 2004 08:51:21 +0300
Message-ID: <e2-c-ophso$-1@99i.7v679.z9i>
From: "Administrator" <admin@staffadministrator.com>
To: moler@netlib2.cs.utk.edu
Subject: ADV:      Staff Announcement
Date: Fri, 05 Nov 04 08:51:21 GMT
X-Priority: 1
X-MSMail-Priority: High
X-Mailer: Microsoft Outlook Express 5.00.2615.200
MIME-Version: 1.0
Content-Type: multipart/alternative;
	boundary="2E.FCA25A.1FF_"

This is a multi-part message in MIME format.

--2E.FCA25A.1FF_
Content-Type: text/plain
Content-Transfer-Encoding: quoted-printable

Attention All School Staff: Teachers, Students and Faculty Members:

You Must Respond By 5 P.M. Monday, November 8, 2004.

Through a special arrangement, Avtech Direct is offering a limited
allotment of BRAND NEW, top of-the-line, name-brand desktop computers
at more than 50% off MSRP to all Teachers, Students,Faculty and Staff, 
who respond to this message before 5 P.M., Monday, November 8, 2004.

All desktop computers are brand-new packed in their original boxes,
and come with a full manufacturer's warranty plus
a 100% satisfaction guarantee.

These professional grade Desktops are fully equipped with 2005
next generation technology, making these the best performing
computers money can buy.

Avtech Direct is offering these feature rich, top performing
Desktops with the latest technology at an amazing price
to all who call:

    1-800-795-8466 by 5 P.M. Monday, November 8, 2004

The fast and powerful AT-3200 series Desktop features: 

      * IBM Processor for amazing speed and performance
      * 128MB DDR RAM,  -- Upgradeable to 1024
      * 20 GB UDMA Hard Drive, -- Upgradeable to 80 GB
      * 52X CD-Rom Drive, -- Upgradeable to DVD/CDRW
      * Next Generation 2005 Technology
      * Premium video and sound -- For enhanced colors and graphics
      * Full Connectivity with Fax modem/Lan/IEE 1394/USB 2.0
      * Soft Touch Keyboard and scroll mouse
      * Internet Ready
      * Network Ready
      * 1 Year parts and labor warranty
      * Priority customer service and tech support

MSRP $499 ........................................ Your Cost $227

How to qualify:

  1. You must be a Teacher, Student, Faculty or Staff Member.
  2. All desktop computers will be available on a
     first come first serve basis.
  3. You must call 1-800-795-8466 by 5 P.M. Monday, November 8, 2004.
     and we will hold the desktops you request on will call. 
  4. You are not obligated in any way.
  5. 100% Satisfaction Guaranteed.
  6. Ask for Department C.
   
   
Call Avtech Direct
1-800-795-8466 before 5 P.M. Monday, November 8, 2004


Visit our website at http://www.avtechcomputers.com


If you wish to unsubscribe from this list, please go to
http://www.avtechcomputers.com/announcements.asp



Avtech Direct
22647 Ventura Blvd. Suite 374
Woodland Hills, CA 91364
--2E.FCA25A.1FF_--


From Seteving@citiz.net Fri Nov 12 23:35:46 2004
Return-Path: <Seteving@citiz.net>
Received: from citiz.net ([218.86.46.142])
	by netlib2.cs.utk.edu (8.12.8/8.12.3) with SMTP id iAD4ZUY3004942
	for <mpi-comm-archive@netlib2.cs.utk.edu>; Fri, 12 Nov 2004 23:35:39 -0500 (EST)
Message-Id: <200411130435.iAD4ZUY3004942@netlib2.cs.utk.edu>
From: "Tim" <Seteving@citiz.net>
To: <mpi-comm-archive@netlib2.cs.utk.edu>
Subject: Promote for you
Sender: "Tim" <Seteving@citiz.net>
Mime-Version: 1.0
Content-Type: text/html; charset="ISO-8859-1"
Date: Sat, 13 Nov 2004 12:46:17 +0800
Reply-To: "Tim" <Info@sp1.luckyip.com>
Content-Transfer-Encoding: 8bit

MJHMN NJ KLNJC<0P  BS0html>

<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<meta name="GENERATOR" content="Microsoft FrontPage 4.0">
<meta name="ProgId" content="FrontPage.Editor.Document">
<title>New Page 1</title>
</head>

<body>
Dear mpi-comm-archive@netlib2.cs.utk.edu:
<p style="MARGIN-LEFT: 0.5in"><font face="Arial" size="2"><span style="FONT-FAMILY: Arial; FONT-SIZE: 10pt"><br>
Remember to contact us if you're in need of stable offshore resources to&nbsp;<br>
promote your services/ products, including:<br>
<br>
<b>-&nbsp; Direct Mail Server (CHEAP!)<br>
-&nbsp; Offshore web Hosting<br>
-&nbsp; Email addresses </b></span></font><b><font face="Arial" size="2"><span style="FONT-FAMILY: Arial; FONT-SIZE: 10pt"> according to your
order<br>
</span></font><font face="Arial" size="2"><span style="FONT-FAMILY: Arial; FONT-SIZE: 10pt">-&nbsp;
Send mailing </span></font><font face="Arial" size="2"><span style="FONT-FAMILY: Arial; FONT-SIZE: 10pt"> according to your
order</span></font></b></p>
<p style="MARGIN-LEFT: 0.5in"><font face="Arial" size="2"><span style="FONT-FAMILY: Arial; FONT-SIZE: 10pt">&nbsp;&nbsp;
<a href="http://www.daydns.com/Bullet-Proof.asp">More 
Information</a></span></font></p>

<p style="MARGIN-LEFT: 0.5in"><font face="Arial" size="2"><span style="FONT-FAMILY: Arial; FONT-SIZE: 10pt">Let us know if you have any questions.<a href="mailto:Sales@xc6.com;Sales@ze6.com"><br>
</a><br>
<br>
Tim<br>
Support Team<a href="mailto:Sales@ze6.com;Sales@ze6.com"><br>
</a><a href="mailto:Sales@ze6.com;Sales@ze6.com">Sales@ze6.com</a><br>
<br>
****************************************************************************************<br>
Please click here to off:<a href="mailto:Jo@yahoo.com?subject=take-off">Jo@aol.com?subject=mpi-comm-archive@netlib2.cs.utk.edu</a><br>
****************************************************************************************</span></font></p>

</body>

</html>

From georgeabbey26@indiatimes.com Sat Nov 13 00:43:22 2004
Return-Path: <georgeabbey26@indiatimes.com>
Received: from user-aerwug1ojp ([204.101.96.200])
	by netlib2.cs.utk.edu (8.12.8/8.12.3) with SMTP id iAD5gFY3007629
	for <mpi-comm-archive@netlib2.cs.utk.edu>; Sat, 13 Nov 2004 00:42:56 -0500 (EST)
Message-Id: <200411130542.iAD5gFY3007629@netlib2.cs.utk.edu>
From: "georgeabbey26" <georgeabbey26@indiatimes.com>
To: "mpi-comm-archive" <mpi-comm-archive@netlib2.cs.utk.edu>
Subject: VERY URGENT ASSISTANT IS NEEDED. please reply me back ASAP
Date: Fri, 12 Nov 04 23:10:26 Eastern Standard Time
MIME-Version: 1.0
Content-Type: multipart/mixed;boundary= "----=_NextPart_000_0087_A870CA94.5D6F5777"
X-Priority: 3
X-MSMail-Priority: Normal
X-Mailer: Microsoft Outlook Express 6.00.2462.0000
X-MimeOLE: Produced By Microsoft MimeOLE V6.00.2462.0000 

------=_NextPart_000_0087_A870CA94.5D6F5777
Content-Type: text/plain
Content-Transfer-Encoding: base64

R29vZCBEYXksDQpNYXkgaXQgbm90IGJlIGEgc3VycHJpc2UgdG8gcmVjZWl2ZSB0aGlzIGxl
dHRlciBmcm9tIG1lLCBjb25zaWRlcmluZyB0aGUNCmZhY3QgdGhhdCB5b3UgZG8gbm90IGtu
b3cgbWU/IEZpcnN0IEkgbXVzdCBzZWVrIGZvciB5b3VyIHVuZGVyc3RhbmRpbmcgYW5kDQp3
aXRoIGhvcGUgdGhhdCB5b3Ugd2lsbCBoYXZlIHRoZSB3aXNkb20gdG8gdW5kZXJzdGFuZCB0
aGlzIG1hdHRlciBhbmQgYmUgaW4NCmEgcG9zaXRpb24gdG8gaGVscCBhcyB5b3Ugd2lsbCBi
ZSBzdXJlbHkNCmJsZXNzZWQgYXMgeW91IGhlbHAuSSBhbSBNUiBHRU9SR0UgQUJCRVksSSBh
bSA0MSBZZWFycyBvbGQgYW5kIGFsc28gYQ0KQnJhbmNoIE1hbmFnZXIgd2l0aCBhIEJhbmsg
aW4gTmlnZXJpYSBuYW1lZCwgVU5JVEVEIEJBTksgRk9SIEFGUklDQXtVQkF9IC4gSQ0KaGF2
ZSBhIFRyYW5zYWN0aW9uIHdoaWNoIEkgdGhpbmsgd2lsbCBiZSBvZiBtdXR1YWwgYmVuZWZp
dCB0byBib3RoIG9mIHVzLiBJbiBteQ0KZGVzaXJlIGZvciBhIGJlZml0dGluZyBmb3JlaWdu
IHBhcnRuZXIgd2l0aCB3aG9tIHRvIGRvIHRoaXMgdHJhbnNhY3Rpb24NCndpdGgsIEkgZ290
IHlvdXIgY29udGFjdCBmcm9tIGEgZm9yZWlnbiB0cmFkZSBDZW50cmUgaW4gbXkgQ291bnRy
eS4gQXMgdGhlDQptYW5hZ2VyIG9mIGEgYnJhbmNoIG9mIFVCQSwgSSBkaXNjb3ZlcmVkIHNv
bWUgQW1vdW50IG9mIG1vbmV5IHdoaWxlIEkgd2FzDQphdWRpdGluZyBhY2NvdW50cyBmb3Ig
dGhlIDIwMDEgZmluYW5jaWFsIHllYXIgd2hpY2ggaGFzIGJlZW4gbHlpbmcgdGhlcmUgZm9y
DQpvdmVyIDMgeWVhcnMuIE9uIGZ1cnRoZXIgaW5xdWlyeSwgSSBkaXNjb3ZlcmVkIHRoYXQg
dGhpcyBtb25leSB0b3RhbGluZw0KYWJvdXQgVVNEJDJPLjUgTWlsbGlvbiAoVHdlbnR5IE1p
bGxpb24hIEZpdmUgaHVuZHJlZCB0aG91c2FuZCBVbml0ZWQgU3RhdGVzDQpEb2xsYXJzKSBp
bmNsdWRpbmcgYWNjdW11bGF0ZWQgaW50ZXJlc3Qgd2hpY2ggYmVsb25nZWQgdG8gb25lIE1S
LiBST0JFUlQNCkxJTiwgYSBDaGluZXNlIE5hdGlvbmFsIHdobyBsaXZlZCBoZXJlIGFuZCBk
aWVkIGludGVzdGF0ZSB3aXRob3V0IHByb3ZpZGluZw0KYW55Ym9keSB0byBjbGFpbSB0aGUg
bW9uZXkuIFRoaXMgbWFuIGRpZWQNClRocm91Z2ggYSBwbGFuZSBjcmFzaCBvZiBBREMgYWly
bGluZXMgaW4gMTk5OC5JIGhhdmUgc3VjY2Vzc2Z1bGx5DQpzZWN1cmVkIHRoZSBtb25leSBh
bmQgd2l0aCB0aGUgYXNzaXN0YW5jZSBvZiBwb3dlcmZ1bCBjb250YWN0LCB0aGUgbW9uZXkg
aGFzDQpiZWVuIG1vdmVkIG91dCBvZiBteSBiYW5rIGFuZCBkZXBvc2l0ZWQgaW4gYSBzZWN1
cml0eSBjb21wYW55IGZvciBzYWZlDQprZWVwaW5nLiBJIGFtIHRoZXJlZm9yZSByZXF1ZXN0
aW5nIHRvIGhhdmUgeW91cg0KcGVyc29uYWwgaW5mb3JtYXRpb24gdG8gZW5hYmxlIG1lIHBy
ZXBhcmUgZG9jdW1lbnRzIHdoaWNoIHdpbGwNCmF1dGhlbnRpY2F0ZSB0aGF0IHRoZSBmdW5k
cyBiZWxvbmdzIHRvIHlvdSBhcyB0aGUgbmV4dCBvZiBraW4gdG8gTVIuUk9CRVJUDQpMSU4g
YW5kIHRvIGVuYWJsZSB5b3UgY2xhaW0gdGhlIG1vbmV5IHNpbmNlIG5vYm9keSBoYXMgY29t
ZSB0byBjbGFpbSB0aGUNCm1vbmV5LiBBY2NvcmRpbmcgdG8gdGhlIGxhdyBoZXJlIGlmIGJ5
IHRoZSBlbmQgb2YgdGhpcyB5ZWFyIG5vYm9keSBjb21lcyB1cA0KZm9yIHRoZSBtb25leSBp
dCB3aWxsIGJlIGNsYWltZWQgYnkgdGhlIE1hbmFnZW1lbnQgb2YgbXkNCmJhbmsuSSBhbSBz
dXJlIHRoYXQgeW91IHdpbGwgYmUgaW4gYSBwb3NpdGlvbiB0byBwcm92aWRlIGEgc2FmZSBh
Y2NvdW50DQp3aGVyZSB0aGUgbW9uZXkgV2lsbCBiZSBkZXBvc2l0ZWQgcGVuZGluZyBteSBh
cnJpdmFsIHRvIG1lZXQgd2l0aCB5b3UuIEZvciB1cyB0byBmaWxlDQphcHBsaWNhdGlvbiBv
ZiBjbGFpbSB0byB0aGlzIG1vbmV5IGFzIHRoZSBuZXh0IG9mIEtpbiBpIHdpbGwgbmVlZCB0
byBoYXZlDQp5b3VyIHBlcnNvbmFsIGluZm9ybWF0aW9uJ3Mgd2hpY2ggaW5jbHVkZXMgLCBZ
T1VSRlVMTCBOQU1FIEFORA0KQUREUkVTUyxURUxFUEhPTkUgQU5EIEZBWCBOVU1CRVIsIEFO
RCBZT1VSIEZVTEwgQkFOSyBERVRBSUxTIFdIRVJFIFRISVMNCkZVTkRTIFdJTEwgQkUgVFJB
TlNGRVJSRUQgVE8uIFRoaXMgdHJhbnNhY3Rpb24gaXMgYWJzb2x1dGVseSByaXNrIGZyZWUg
d2l0aA0Kbm8gbGVnYWwgY29tcGxpY2F0aW9ucyBhcyB3ZSBoYXZlIG1hZGUgYXJyYW5nZW1l
bnRzIHRvIHNlY3VyZSBhbGwgdGhlIGxlZ2FsDQpkb2N1bWVudHMgdGhhdCB3aWxsIGZyZWUg
dXMgZnJvbSBhbnkgbGl0aWdhdGlvbiwgSSBoYXZlIG1hZGUgYWxsIG5lY2Vzc2FyeQ0KYXJy
YW5nZW1lbnRzIHdpdGggdGhlIHNlY3VyaXR5IGNvbXBhbnksIHRoYXQgYXMgc29vbiBhcyBJ
IGdldCB5b3VyDQpjb25maXJtYXRpb24gb2YgaW50ZXJlc3QgaW4gdGhpcyB2ZW50dXJlLCB3
ZSBzaGFsbCBwdXQgaW4gYWxsIHRoZSBuZWNlc3NhcnkNCnBhcGVyIHdoaWNoIHdpbGwgYXV0
aG9yaXplIHRoZSBzZWN1cml0eSBjb21wYW55IHRvIHByb2Nlc3MgdGhlIGZ1bmRzIGFuZCBn
ZXQNCml0IHRyYW5zZmVycmVkIHRocm91Z2ggdGhlaXIgb2Zmc2hvcmUgYmFuaywgdG8geW91
ciBhY2NvdW50LiBJbiBkb2luZyB0aGlzIHlvdSBtdXN0IGhhdmUgdG8gbWFpbnRhaW4NCmEg
aGlnaCBkZWdyZWUgb2YgdHJ1c3QgYW5kIGFkZXF1YXRlIGNvbmZpZGVudGlhbGl0eSBpcyBy
ZXF1aXJlZCBhbmQgb24NCnN1Y2Nlc3NmdWwgY29tcGxldGlvbiBvZiB0aGlzIHRyYW5zZmVy
IHRvIHlvdXIgYWNjb3VudCwgSSBoYXZlIGFncmVlZCB0aGF0DQp5b3Ugd2lsbCByZXRhaW4g
MzAlIG9mIHRoZSB0b3RhbCBzdW0gd2hpbGUgNzAlIHdpbGwgYmUgZm9yIG1lLiBGaW5hbGx5
IEkNCndhbnQgeW91IHRvIG5vdGUgdGhhdCB3ZSBhcmUgZ29pbmcgdG8gc3BlbmQgbW9uZXkg
d2hlcmUNCk5lY2Vzc2FyeSB0byBtYWtlIHRoaXMgdmVudHVyZSB3b3JrIG91dCBzdWNjZXNz
ZnVsbHkuIFRoZXJlZm9yZSwgY29uZmlybQ0KeW91ciBpbnRlcmVzdCBpbiB0aGlzIHRyYW5z
YWN0aW9uIGltbWVkaWF0ZWx5IGJ5IHNlbmRpbmcgdGhlIGFib3ZlIG1lbnRpb25lZA0KaW5m
b3JtYXRpb24ncyBhcyB0byBlbmFibGUgdXMgZmluYWxpemUgdGhpcyBpc3N1ZSBhcyBzb29u
IGFzIHBvc3NpYmxlLiBJDQpuZWVkIHRvIGVtcGhhc2l6ZSBvbmNlIGFnYWluIHRoYXQgYSBo
aWdoIERlZ3JlZSBvZiB0cnVzdCBhbmQgY29uZmlkZW50aWFsaXR5IGlzIHJlcXVpcmVkIGlu
IHRoaXMgdHJhbnNhY3Rpb24uDQpGaW5hbGx5IGkgd2FudCB0byBpbmZvcm0gWW91IHRoYXQg
YXMgc29vbiBhcyB0aGUgZnVuZHMgYXJlIGluIHlvdXIgYWNjb3VudCBhbmQgdGhlIHNoYXJp
bmcNCmNvbXBsZXRlZCBiZXR3ZWVuIHVzLllvdSB3aWxsIGludHJvZHVjZSBtZSBpbnRvIGx1
Y3JhdGl2ZSBidXNpbmVzcyBpbiB5b3VyDQpjb3VudHJ5IGJlY2F1c2UgaSB3aWxsIGxpa2Ug
dG8gaW52ZXN0IG1vc3Qgb2YgbXkgbW9uZXkgaW4geW91ciBjb3VudHJ5Lg0KUGxlYXNlIHJl
cGx5IHRocm91Z2ggdGhpcyBlbWFpbDogLSB7Z2VvcmdlYWJiZXkyNkBpbmRpYXRpbWVzLmNv
bX0gYXdhaXRpbmcNCnlvdXIgdXJnZW50IHJlc3BvbnNlIEFTQVAuDQoNCllvdXJzIEZhaXRo
ZnVsbHkNCkdFT1JHRSBBQkJFWQ0KRW1haWw6LSBnZW9yZ2VhYmJleTI2QGluZGlhdGltZXMu
Y29tIA0KDQogICAg
------=_NextPart_000_0087_A870CA94.5D6F5777--

From mailinglistprovider12@yahoo.com Sat Nov 13 01:35:27 2004
Return-Path: <mailinglistprovider12@yahoo.com>
Received: from kennetvalleyservices.adsl.altohiway.com (kennetvalleyservices.adsl.altohiway.com [62.8.107.97])
	by netlib2.cs.utk.edu (8.12.8/8.12.3) with SMTP id iAD6ZNY3008562
	for <mpi-comm-archive@netlib2.cs.utk.edu>; Sat, 13 Nov 2004 01:35:25 -0500 (EST)
Received: from [33.134.134.173]
	by kennetvalleyservices.adsl.altohiway.com SMTP id 2T2DCyGv97YND9;
	Fri, 14 Nov 2003 10:43:21 +0400
Message-ID: <xs0-4ak06wrn81o$48-b-48zxv$e45@2mavf>
From: "" <mailinglistprovider12@yahoo.com>
Reply-To: "" <mailinglistprovider12@yahoo.com>
To: mpi-comm-archive@netlib2.cs.utk.edu
Subject: send your ad or message
Date: Fri, 14 Nov 03 10:43:21 GMT
X-Mailer: Microsoft Outlook Express 6.00.2462.0000
MIME-Version: 1.0
Content-Type: multipart/alternative;
	boundary="4CE0FC76FB447A"
X-Priority: 3
X-MSMail-Priority: Normal


--4CE0FC76FB447A
Content-Type: text/html;
Content-Transfer-Encoding: quoted-printable

<html xmlns:v=3D"urn:schemas-microsoft-com:vml"
xmlns:o=3D"urn:schemas-microsoft-com:office:office"
xmlns:w=3D"urn:schemas-microsoft-com:office:word"
xmlns=3D"http://www.w3.org/TR/REC-html40">

<head>
<meta http-equiv=3DContent-Type content=3D"text/html; charset=3Dwindows-12=
52">
<meta name=3DProgId content=3DWord.Document>
<meta name=3DGenerator content=3D"Microsoft Word 9">
<meta name=3DOriginator content=3D"Microsoft Word 9">
<link rel=3DEdit-Time-Data
href=3D"./Learn%20How%20to%20Earn%20at%20Least%201_files/editdata.mso">
<title>Learn How To Earn At Least $100,000 Online this Year</title>
<!--[if gte mso 9]><xml>
 <o:DocumentProperties>
  <o:Author>Katherine Bell</o:Author>
  <o:Template>Normal</o:Template>
  <o:LastAuthor>Katherine Bell</o:LastAuthor>
  <o:Revision>2</o:Revision>
  <o:TotalTime>5</o:TotalTime>
  <o:Created>2004-11-08T15:12:00Z</o:Created>
  <o:LastSaved>2004-11-08T15:12:00Z</o:LastSaved>
  <o:Pages>1</o:Pages>
  <o:Words>107</o:Words>
  <o:Characters>612</o:Characters>
  <o:Lines>5</o:Lines>
  <o:Paragraphs>1</o:Paragraphs>
  <o:CharactersWithSpaces>751</o:CharactersWithSpaces>
  <o:Version>9.2720</o:Version>
 </o:DocumentProperties>
</xml><![endif]--><!--[if gte mso 9]><xml>
 <w:WordDocument>
  <w:FormsDesign/>
 </w:WordDocument>
</xml><![endif]-->
<style>
<!--
 /* Font Definitions */
@font-face
	{font-family:Verdana;
	panose-1:2 11 6 4 3 5 4 4 2 4;
	mso-font-charset:0;
	mso-generic-font-family:swiss;
	mso-font-pitch:variable;
	mso-font-signature:647 0 0 0 159 0;}
 /* Style Definitions */
p.MsoNormal, li.MsoNormal, div.MsoNormal
	{mso-style-parent:"";
	margin:0in;
	margin-bottom:.0001pt;
	mso-pagination:widow-orphan;
	font-size:12.0pt;
	font-family:Arial;
	mso-fareast-font-family:"Times New Roman";
	mso-bidi-font-family:"Times New Roman";}
a:link, span.MsoHyperlink
	{color:#003399;
	mso-text-animation:none;
	text-decoration:none;
	text-underline:none;
	text-decoration:none;
	text-line-through:none;}
a:visited, span.MsoHyperlinkFollowed
	{color:purple;
	text-decoration:underline;
	text-underline:single;}
p
	{margin-right:0in;
	mso-margin-top-alt:auto;
	mso-margin-bottom-alt:auto;
	margin-left:0in;
	mso-pagination:widow-orphan;
	font-size:12.0pt;
	font-family:"Times New Roman";
	mso-fareast-font-family:"Times New Roman";}
@page Section1
	{size:8.5in 11.0in;
	margin:1.0in 1.25in 1.0in 1.25in;
	mso-header-margin:.5in;
	mso-footer-margin:.5in;
	mso-paper-source:0;}
div.Section1
	{page:Section1;}
-->
</style>
<!--[if gte mso 9]><xml>
 <o:shapelayout v:ext=3D"edit">
  <o:idmap v:ext=3D"edit" data=3D"1"/>
 </o:shapelayout></xml><![endif]-->
</head>

<body lang=3DEN-US link=3D"#003399" vlink=3Dpurple style=3D'tab-interval:.=
5in'>

<div class=3DSection1>

<div align=3Dcenter>

<table border=3D0 cellspacing=3D0 cellpadding=3D0 width=3D"75=
%" style=3D'width:75.0%;
 mso-cellspacing:0in;mso-padding-alt:0in 0in 0in 0in'>
 <tr>
  <td width=3D"100%" nowrap style=3D'width:100.0%;padding:0in 0in 0in 0in'=
>
  <p class=3DMsoNormal style=3D'mso-line-height-alt:14.4pt'><b><span
  style=3D'font-size:18.0pt;mso-bidi-font-family:Arial;color:#333333'>Lear=
n How
  To Earn At Least $100,000 Online this Year</span></b><span style=3D'font=
-size:
  10.0pt;mso-bidi-font-family:Arial;color:#333333'><o:p></o:p></span></p>
  </td>
 </tr>
 <tr>
  <td width=3D"100%" nowrap style=3D'width:100.0%;padding:0in 0in 0in 0in'=
>
  <p align=3Dright style=3D'text-align:right;mso-line-height-alt:14.4pt'><=
b><span
  style=3D'font-size:18.0pt;font-family:Arial;color:#333333'>...With just =
one
  click!</span></b><span style=3D'font-size:10.0pt;font-family:Arial;color=
:#333333'><o:p></o:p></span></p>
  </td>
 </tr>
 <tr>
  <td width=3D"100%" nowrap style=3D'width:100.0%;padding:0in 0in 0in 0in'=
>
  <p class=3DMsoNormal style=3D'line-height:14.4pt'><b><span style=3D'font=
-size:13.5pt;
  mso-bidi-font-family:Arial;color:red'>&nbsp; &nbsp; &nbsp;</span></b><sp=
an
  style=3D'font-size:13.5pt;mso-bidi-font-family:Arial;color:darkblue'>&nb=
sp;
  &nbsp;</span><span style=3D'font-size:13.5pt;mso-bidi-font-family:Arial;=

  color:#800040'>Home Based Business - System Does It!</span><span
  style=3D'font-size:10.0pt;mso-bidi-font-family:Arial;color:#333333'><o:p=
></o:p></span></p>
  </td>
 </tr>
 <tr>
  <td width=3D"100%" nowrap style=3D'width:100.0%;padding:0in 0in 0in 0in'=
>
  <p class=3DMsoNormal style=3D'line-height:14.4pt'><b><span style=3D'font=
-size:13.5pt;
  mso-bidi-font-family:Arial;color:red'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;=
</span></b><span
  style=3D'font-size:13.5pt;mso-bidi-font-family:Arial;color:darkblue'>&nb=
sp;
  &nbsp;</span><span style=3D'font-size:13.5pt;mso-bidi-font-family:Arial;=

  color:#800040'>Earn $1000/sale on &quot;Auto-Pilot!&quot;</span><span
  style=3D'font-size:10.0pt;mso-bidi-font-family:Arial;color:#333333'><o:p=
></o:p></span></p>
  </td>
 </tr>
 <tr>
  <td width=3D"100%" nowrap style=3D'width:100.0%;padding:0in 0in 0in 0in'=
>
  <p class=3DMsoNormal style=3D'line-height:14.4pt'><b><span style=3D'font=
-size:13.5pt;
  mso-bidi-font-family:Arial;color:red'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;=

  &nbsp; &nbsp;</span></b><span style=3D'font-size:13.5pt;mso-bidi-font-fa=
mily:
  Arial;color:darkblue'>&nbsp; &nbsp;</span><span style=3D'font-size:13.5p=
t;
  mso-bidi-font-family:Arial;color:#800040'>Automated System To Make Money=

  Online!</span><span style=3D'font-size:10.0pt;mso-bidi-font-family:Arial=
;
  color:#333333'><o:p></o:p></span></p>
  </td>
 </tr>
 <tr style=3D'height:7.5pt'>
  <td width=3D"100%" nowrap style=3D'width:100.0%;padding:0in 0in 0in 0in;=

  height:7.5pt'>
  <p class=3DMsoNormal style=3D'line-height:14.4pt'><![if !supportEmptyPar=
as]>&nbsp;<![endif]><span
  style=3D'font-size:8.0pt;mso-bidi-font-size:10.0pt;mso-bidi-font-family:=
Arial;
  color:#333333'><o:p></o:p></span></p>
  </td>
 </tr>
 <tr>
  <td width=3D"100%" nowrap style=3D'width:100.0%;padding:0in 0in 0in 0in'=
>
  <p align=3Dcenter style=3D'text-align:center;line-height:14.4pt'><b><spa=
n
  style=3D'font-family:Verdana;mso-bidi-font-family:Arial;color:#082984'><=
marquee width=3D"432" height=3D"16" ALIGN=3Dmiddle>Automated System does 9=
8% of the work for you! . . . . . .No more long hours on the phone prospec=
ting!</marquee><br>
  </span></b><b><span style=3D'font-family:Verdana;mso-bidi-font-family:Ar=
ial;
  color:black'>Join a company that is serious about your success.<o:p></o:=
p></span></b></p>
  <div align=3Dcenter>
  <table border=3D0 cellspacing=3D0 cellpadding=3D0 width=3D"50=
%" style=3D'width:50.0%;
   mso-cellspacing:0in;mso-padding-alt:0in 0in 0in 0in'>
   <tr>
    <td width=3D"100%" style=3D'width:100.0%;padding:0in 0in 0in 0in'>
    <p class=3DMsoNormal style=3D'line-height:14.4pt'><span style=3D'font-=
size:13.5pt;
    mso-bidi-font-family:Arial;color:#004080'>Do you want time and freedom=
?</span><span
    style=3D'font-size:10.0pt;mso-bidi-font-family:Arial;color:#333333'><b=
r>
    </span><span style=3D'font-size:13.5pt;mso-bidi-font-family:Arial;colo=
r:#004080'>Start
    Making Huge Money!</span><span style=3D'font-size:10.0pt;mso-bidi-font=
-family:
    Arial;color:#333333'><br>
    <br>
    </span><span style=3D'font-size:13.5pt;mso-bidi-font-family:Arial;colo=
r:#004080'>Watch
    Our 6-Minute Video!</span><span style=3D'font-size:10.0pt;mso-bidi-fon=
t-family:
    Arial;color:#333333'><br>
    </span><span style=3D'font-size:13.5pt;mso-bidi-font-family:Arial;colo=
r:#004080'>Take
    Action Today!</span><span style=3D'font-size:10.0pt;mso-bidi-font-fami=
ly:
    Arial;color:#333333'><o:p></o:p></span></p>
    </td>
   </tr>
  </table>
  </div>
  <p align=3Dcenter style=3D'text-align:center;line-height:14.4pt'><b><spa=
n
  style=3D'font-size:10.0pt;font-family:Verdana;mso-bidi-font-family:Arial=
;
  color:#800040'><br>
  </span></b><b><span style=3D'font-family:Verdana;mso-bidi-font-family:Ar=
ial;
  color:#082984'><a
  href=3D"http://www.pptsys.biz/directmovieviewwithuserredirect.php?userid=
=3Dkatebell"
  target=3D"_blank"><span style=3D'font-size:13.5pt;color:#C00000'>CLICK H=
ERE TO
  WATCH THE VIDEO!</span></a><o:p></o:p></span></b></p>
  </td>
 </tr>
 <tr>
  <td width=3D"100%" nowrap style=3D'width:100.0%;padding:0in 0in 0in 0in'=
>
  <p class=3DMsoNormal style=3D'line-height:14.4pt'><span style=3D'font-si=
ze:10.0pt;
  mso-bidi-font-family:Arial;color:#333333'>&nbsp; <o:p></o:p></span></p>
  <table id=3D"table1" cellSpacing=3D"0" cellPadding=3D"0" width=3D"515" a=
lign=3D"center" border=3D"0">
	<tr>
		<td>
		<p dir=3D"ltr" align=3D"left"><font color=3D"#000000">The preceding 
		advertisement was sent you by virtue of your participation in the 
		Special Product Offerings of our e-mail networking services or our 
		partners. To unsubscribe from receiving further emails from our e-mail 
		networking services Special Product Offerings please
		<a style=3D"color: black; text-decoration: underline" href=3D"mailto:rem=
ove@outsource2us.info?subject=3Dremove from list">
		click here</a>. </font></td>
	</tr>
	</table>
  <p style=3D'line-height:14.4pt'><span style=3D'font-size:10.0pt;font-fam=
ily:Arial;
  color:#333333'>&nbsp;<o:p></o:p></span></p>
  </td>
 </tr>
</table>

</div>

<p class=3DMsoNormal align=3Dcenter style=3D'margin-bottom:12.0pt;text-ali=
gn:center;
line-height:14.4pt'><span style=3D'font-size:10.0pt;mso-bidi-font-family:A=
rial;
color:#333333'><br>
<br>
<br>
<br>
<br>
<br style=3D'mso-special-character:line-break'>
<![if !supportLineBreakNewLine]><br style=3D'mso-special-character:line-br=
eak'>
<![endif]><o:p></o:p></span></p>

<div align=3Dcenter>

&nbsp;</div>

</div>

</body>

</html>
<!--WEBBOT bot=3D"HTMLMarkup" startspan alt=3D"Hitmatic" -->
<!-- Hitmatic/6.1 (HTML 4.01 Transitional) -->
<script language=3D"Javascript" type=3D"text/javascript">var js=3D0;var qs=
=3D'';</script><script language=3D"Javascript1.3" type=3D"text/javascript"=
>js=3D13;</script>
<script language=3D"Javascript1.2" type=3D"text/javascript">if(!js)js=3D12=
;qs+=3D'&sx=3D'+screen.width+'&sy=3D'+screen.height+'&sd=3D'+((navigator.a=
ppName.indexOf("Netscape")<0)?screen.colorDepth+'&cp=3D'+navigator.cpuClas=
s:screen.pixelDepth);</script>
<script language=3D"Javascript1.1" type=3D"text/javascript">if(!js)js=3D11=
;qs+=3D'&je=3D'+(1*navigator.javaEnabled());</script>
<script language=3D"Javascript" type=3D"text/javascript">if(!js)js=3D10;qs=
+=3D'&dr=3D'+escape(top.document.referrer);qs+=3D'&js=3D'+js+'&tz=3D'+(100=
0-(new Date()).getTimezoneOffset())+'/';document.write('<img width=3D"1" h=
eight=3D"1" alt=3D"" src=3D"http://tracker.hitmatic.com//24910?page=3DMain=
Page&amp;mp=3D1'+qs+'">');</script>
<noscript><img width=3D"1" height=3D"1" alt=3D"" src=3D"http://tracker.hit=
matic.com/24910/?page=3DMainPage&amp;mp=3D1"></noscript>
<!-- end Hitmatic code insert -->

<!--WEBBOT bot=3D"HTMLMarkup" endspan i-checksum=3D"766" -->
=FFFFFFA0=0A

--4CE0FC76FB447A--


From bulletin@staffadministrator.com Tue Nov 16 21:41:29 2004
Return-Path: <bulletin@staffadministrator.com>
Received: from adsl-68-121-82-89.dsl.irvnca.pacbell.net (adsl-68-121-82-89.dsl.irvnca.pacbell.net [68.121.82.89])
	by netlib2.cs.utk.edu (8.12.8/8.12.3) with SMTP id iAH2fLY3028441;
	Tue, 16 Nov 2004 21:41:25 -0500 (EST)
Received: from ok.72ps.com (HELO v2yxg) [146.129.46.94] by adsl-68-121-82-89.dsl.irvnca.pacbell.net with ESMTP id 0B7AE7C8516; Tue, 16 Nov 2004 22:42:03 -0400
Message-ID: <657ijdk$4-dj-oc-bc6$07ft-g@cu8.akpwhni.3c>
From: "Administrator" <bulletin@staffadministrator.com>
To: moler@netlib2.cs.utk.edu
Subject: ADV:      Staff Announcement
Date: Tue, 16 Nov 04 22:42:03 GMT
X-Priority: 1
X-MSMail-Priority: High
X-Mailer: QUALCOMM Windows Eudora Version 5.1
MIME-Version: 1.0
Content-Type: multipart/alternative;
	boundary="D.E.0___00_0"

This is a multi-part message in MIME format.

--D.E.0___00_0
Content-Type: text/plain
Content-Transfer-Encoding: quoted-printable

Attention All School Staff: Teachers, Students and Faculty Members:

You Must Respond By 5 P.M. Thursday, November 18, 2004.

Through a special arrangement, Avtech Direct is offering a limited
allotment of BRAND NEW, top of-the-line, name-brand desktop computers
at more than 50% off MSRP to all Teachers, Students,Faculty and Staff, 
who respond to this message before 5 P.M., Thursday, November 18, 2004.

All desktop computers are brand-new packed in their original boxes,
and come with a full manufacturer's warranty plus
a 100% satisfaction guarantee.

These professional grade Desktops are fully equipped with 2005
next generation technology, making these the best performing
computers money can buy.

Avtech Direct is offering these feature rich, top performing
Desktops with the latest technology at an amazing price
to all who call:

    1-800-795-8466 by 5 P.M. Thursday, November 18, 2004

The fast and powerful AT-3200 series Desktop features: 

      * IBM Processor for amazing speed and performance
      * 128MB DDR RAM,  -- Upgradeable to 1024
      * 20 GB UDMA Hard Drive, -- Upgradeable to 80 GB
      * 52X CD-Rom Drive, -- Upgradeable to DVD/CDRW
      * Next Generation 2005 Technology
      * Premium video and sound -- For enhanced colors and graphics
      * Full Connectivity with Fax modem/Lan/IEE 1394/USB 2.0
      * Soft Touch Keyboard and scroll mouse
      * Internet Ready
      * Network Ready
      * 1 Year parts and labor warranty
      * Priority customer service and tech support

MSRP $499 ........................................ Your Cost $227

How to qualify:

  1. You must be a Teacher, Student, Faculty or Staff Member.
  2. All desktop computers will be available on a
     first come first serve basis.
  3. You must call 1-800-795-8466 by 5 P.M. Thursday, November 18, 2004.
     and we will hold the desktops you request on will call. 
  4. You are not obligated in any way.
  5. 100% Satisfaction Guaranteed.
  6. Ask for Department C.
   
   
Call Avtech Direct
1-800-795-8466 before 5 P.M. Thursday, November 18, 2004


Visit our website at http://www.avtechcomputers.com


If you wish to unsubscribe from this list, please go to
http://www.avtechcomputers.com/announcements.asp



Avtech Direct
22647 Ventura Blvd. Suite 374
Woodland Hills, CA 91364
--D.E.0___00_0--


From emarketingcenter012@hotmail.com Sun Dec  5 06:20:36 2004
Return-Path: <emarketingcenter012@hotmail.com>
Received: from 160.36.58.108 ([199.203.183.117])
	by netlib2.cs.utk.edu (8.12.8/8.12.3) with SMTP id iB5BKJY3002255
	for <mpi-comm-archive@netlib2.cs.utk.edu>; Sun, 5 Dec 2004 06:20:28 -0500 (EST)
Received: from [99.102.70.19] by 160.36.58.108 id l7mZ1Mg5p7aA; Mon, 06 Dec 2004 08:19:42 +0200
Message-ID: <zm3ss6-9$715916fv1$22w$-2@8tk931u8>
From: "Corp Service" <emarketingcenter012@hotmail.com>
Reply-To: "Corp Service" <emarketingcenter012@hotmail.com>
To: mpi-comm-archive@netlib2.cs.utk.edu
Subject: online advertising
Date: Mon, 06 Dec 04 08:19:42 GMT
X-Mailer: Microsoft Outlook Express 5.50.4522.1200
MIME-Version: 1.0
Content-Type: multipart/alternative;
	boundary="BA_.8FD..7CD_."
X-Priority: 3
X-MSMail-Priority: Normal


--BA_.8FD..7CD_.
Content-Type: text/html;
Content-Transfer-Encoding: quoted-printable

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML><HEAD>
<META http-equiv=3DContent-Type content=3D"text/html; charset=3Dwindows-12=
56">
<META content=3D"MSHTML 6.00.2600.0" name=3DGENERATOR>
<STYLE></STYLE>
</HEAD>
<BODY bgColor=3D#ffffff>
<DIV><FONT face=3D"Times New Roman" size=3D6 color=3D"#FF0000"> 
<DIV align=3Dcenter><b>MARRY X-MASS </b></FONT><b>
	<FONT face=3D"Times New Roman" size=3D6 color=3D"#000080"> 
	AND</FONT></b><FONT face=3D"Times New Roman" size=3D6 color=3D"#008000"><=
b> HAPPY 
	NEW YEAR</b></DIV></FONT><FONT face=3DArial size=3D2> 
	<DIV align=3Dleft>&nbsp;</DIV>
	<DIV align=3Dleft><FONT color=3D#000080><FONT face=3D"Times New Roman" si=
ze=3D4>Welcome 
	to </FONT><B><FONT face=3DTahoma size=3D4>Corp</FONT><FONT face=3DTahoma =
color=3D#FF0000 size=3D4>service</FONT></B><FONT 
face=3D"Times New Roman" size=3D4>!</FONT></FONT></DIV>
<DIV align=3Dleft>&nbsp;</DIV>
<DIV align=3Dleft><FONT face=3D"Times New Roman" size=3D4><FONT face=3DTah=
oma 
color=3D#000080 size=3D2>We provide professional bulk email services&nbsp;=
to individuals 
	and companies all over the world.&nbsp; Email advertising is a highly 
	cost-effective way&nbsp;to promote any product or service, utilizing the =
direct 
	communication power of the Internet.&nbsp;&nbsp;</FONT></FONT></DIV>
	<DIV align=3Dleft><font color=3D"#000080">We are a leading e-mail marketi=
ng 
		company with a list consisting of<b> <u>550 Million</u></b> constantly 
		updated and regularly validated e-mail addresses segmented by <u><b>
		Country</b></u> and by <b><u>type of activity.</u></b></font><p align=3D=
"center">
		<u><b><font face=3D"Arial" color=3D"#ff0000" size=3D"5">Double Opt-in Em=
ail 
		Packages</font></b></u></p>
		<p align=3D"center">
		<b>
		<font color=3D"#FF0000">&nbsp;Our services do comply with the CAN SPAM A=
CT 
		2003</font></b></p>
		<table border=3D"1" width=3D"713" height=3D"195" style=3D"border-width: =
0px">
			<tr>
				<td height=3D"189" width=3D"333" rowspan=3D"2" style=3D"border-style: =
none; border-width: medium"><FONT face=3DArial size=3D2> 
		<p align=3D"center"><font color=3D"#000080"><b><u><font size=3D"4">Featu=
res include:</font></u></b></font></p>
		<ul>
			<li><font color=3D"#000080">One hundred percent deliverability rate</fo=
nt></li>
			<li><font color=3D"#000080">Dedicated servers</font></li>
			<li><font color=3D"#000080">Valid from e-mail addresses </font></li>
			<li><font color=3D"#000080">Web Based response forms </font></li>
			<li><font color=3D"#000080">24/7 live support </font></li>
			<li><font color=3D"#000080">Geographic or Demographic targeting </font>=
</li>
			<li><font color=3D"#000080">Tracking reports </font></li>
			<li><font color=3D"#000080">e-mail friendly hosting</font></li>
		</ul>
				</FONT></td>
				<td height=3D"17" width=3D"364" style=3D"border-style: none; border-wi=
dth: medium">
				<p align=3D"center"><font color=3D"#000080" size=3D"4"><b>We Do!</b></=
font></td>
			</tr>
			<tr>
				<td height=3D"162" width=3D"364" style=3D"border-style: none; border-w=
idth: medium"><FONT face=3DArial size=3D2> 
				<ul>
					<li><font size=3D"2" color=3D"#000080">Web Hosting </font></li>
					<li><font size=3D"2" color=3D"#000080">Web Design</font></li>
					<li><font size=3D"2" color=3D"#000080">Computer Software 
					Hardware</font></li>
					<li><font size=3D"2" color=3D"#000080">Advertising Consultants</font>=
</li>
				</ul>
				</FONT>
				<p>&nbsp;</td>
			</tr>
		</table>
	</DIV>
<DIV><FONT face=3DTahoma color=3D#000080 size=3D2>For more info&nbsp;</FON=
T></FONT><FONT face=3DArial size=3D5><a href=3D"mailto:massmailplanet@yaho=
o.com?subject=3Dsend us more information please">click 
	here</a></DIV></FONT><FONT face=3DArial size=3D2> 
<DIV><FONT face=3DTahoma size=3D2><FONT face=3DTahoma color=3D#000080 size=
=3D2>Your 
	advertising dollar is too valuable to be wasted.</FONT></FONT></DIV>
<DIV><FONT face=3DTahoma size=3D2><FONT face=3D"Times New Roman" 
size=3D4></FONT></FONT>&nbsp;</DIV>
<DIV><FONT face=3DTahoma size=3D2><FONT face=3D"Times New Roman" color=3D#=
000080 
size=3D4>We GUARANTEE results!</FONT></FONT></DIV>
<DIV>&nbsp;</DIV>
<DIV><FONT color=3D#000080
size=3D2>=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D<BR></FONT><FONT color=3D#000080><B>
	<FONT face=3DTahoma size=3D4>Corp</FONT><FONT face=3DTahoma color=3D#FF00=
00 size=3D4>service</FONT></B></FONT><FONT color=3D#000080 
size=3D2><BR><SPAN 
style=3D"FONT-SIZE: 10pt; FONT-FAMILY: Arial; mso-fareast-font-family: 'Ti=
mes New Roman'; mso-ansi-language: EN-US; mso-fareast-language: EN-US; mso=
-bidi-language: AR-SA; mso-no-proof: yes">
	Internet Services - E-mail Broadcasting</SPAN><BR>&nbsp;<BR>Tel:&nbsp;&nb=
sp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
	+9611806037<BR>Mobile:&nbsp;&nbsp;&nbsp; +9613594615</FONT><p>&nbsp;</p>
	<p style=3D"margin-top: 0; margin-bottom: 0">&nbsp;______________________=
__________________________________________________________________________=
____________</p>
	<p align=3D"center" style=3D"margin-top: 0; margin-bottom: 0">
	<tt>The preceding advertisement was sent you by virtue of your <br>
	participation in the Special Product Offerings of our e-mail networking 
	services or <br>
	our partners. To unsubscribe from receiving further emails from our <br>
	e-mail networking services Special Product Offerings please
	<a href=3D"mailto:remove@massmailplanet.com?subject=3Dremove">click here<=
/a>
	</tt></DIV></FONT></DIV></BODY></HTML>

--BA_.8FD..7CD_.--


From yuemcinbgvwzdm@prodigy.com Mon Dec  6 16:09:03 2004
Return-Path: <yuemcinbgvwzdm@prodigy.com>
Received: from 222.47.62.188 ([222.47.62.188])
	by netlib2.cs.utk.edu (8.12.8/8.12.3) with SMTP id iB6L91Y3011715
	for <mpi-comm-archive@netlib2.cs.utk.edu>; Mon, 6 Dec 2004 16:09:02 -0500 (EST)
X-Message-Info: CZN8pAHEzeuHJEvj3pcs51+IYAthp563fWMI
Received: from mail300.oozjg.peoplepc.com (67.157.206.96) by wta76-cuk8.peoplepc.com with Microsoft SMTPSVC(5.0.2195.6824);
	 Tue, 07 Dec 2004 16:57:00 +0500
Received: from UDDX34 (os82.119.3.252.ovbc771.f.peoplepc.com 190.208.186.112)
	by mail476.kn.peoplepc.com (22.3.652x54/05.9.2) with SMTP id u33SWF950Ya66;
	Tue, 07 Dec 2004 13:05:00 +0100
Message-ID: <07v8fti167ge7hbl$ihg096nk01ma71$yqd6aqv0@O6>
From: "Eloy" <lskatemclcxduu@peoplepc.com>
To: "Mpi-comm-archive" <mpi-comm-archive@netlib2.cs.utk.edu>
References: <34-B726FWRmbuZFdQTJ99ZF5of999@peoplepc.com>
Subject: Dedicated server for mpi-comm-archive@netlib2.cs.utk.edu
Date: Tue, 07 Dec 2004 07:58:00 -0400
MIME-Version: 1.0
Content-Type: multipart/alternative;
	boundary="--5501021548016114413"

----5501021548016114413
Content-Type: text/html;
Content-Transfer-Encoding: quoted-printable

<html>

<head>
<meta http-equiv=3D"Content-Type" content=3D"text/html; charset=3Diso-8859=
-1">
<meta name=3D"GENERATOR" content=3D"Microsoft FrontPage 4.0">
<meta name=3D"ProgId" content=3D"FrontPage.Editor.Document">
<title>Server</title>
</head>

<body>

<p style=3D"MARGIN-LEFT: 0.5in">&nbsp;</p>

<p style=3D"MARGIN-LEFT: 0.5in">
<font face=3D"Arial" size=3D"2"><span style=3D"FONT-FAMILY: Arial; FONT-SI=
ZE: 10pt">To
mpi-comm-archive@netlib2.cs.utk.edu:<br>
<br>
We 
offer <b> Bullet-Proof Dedicated Server and Web Hosting</b>.</span></font>=
</p>

<p style=3D"MARGIN-LEFT: 0.5in"><font face=3D"Arial" size=3D"2"><span styl=
e=3D"FONT-FAMILY: Arial; FONT-SIZE: 10pt">                  You can use th=
e server for any of the following:<br>
<br>
                  Direct Bulk Mailing or Proxy Mailing<br>
                  Bulk Web Site Hosting<br>
                  Proxy, Relay or Port Scanning</span></font></p>

<p style=3D"MARGIN-LEFT: 0.5in"><font face=3D"Arial" size=3D"2"><span styl=
e=3D"font-family: Arial; font-size: 10pt"><a href=3D"http://www.2965.com/B=
ullet-Proof.asp">More
information</a></span><span style=3D"FONT-FAMILY: Arial; FONT-SIZE: 10pt">=
<br>
<br>
We also can supply email addresses according to order, and send&nbsp;<br>
 out custom-built emails for you.&nbsp;<br>
<br>
Dont reply to this email. Please kindly contact us by:&nbsp;&nbsp;&nbsp;&n=
bsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbs=
p;&nbsp;<br>
<a href=3D"mailto:Support@bbzb.com;Contacthosting@tom.com">Support@bbzb.co=
m&nbsp;&nbsp;&nbsp;
or&nbsp;&nbsp;&nbsp; Contacthosting@tom.com</a><br>
<br>
<br>
Mr Rock<br>
Sales Team<br>
ICQ: 339616524<br>
<br>
**************************************************************************=
**************<br>
Because you registered to receive offers from us.<br>
Click here for take:<a href=3D"mailto:ReOffer@aol.com">ReOffer@aol.com?sub=
ject=3Dmpi-comm-archive@netlib2.cs.utk.edu</a><br>
**************************************************************************=
**************</span></font></p>

</body>

</html>


----5501021548016114413--


From bulletin@staffadministrator.com Mon Dec  6 18:30:24 2004
Return-Path: <bulletin@staffadministrator.com>
Received: from c-67-181-167-107.client.comcast.net (c-67-181-167-107.client.comcast.net [67.181.167.107])
	by netlib2.cs.utk.edu (8.12.8/8.12.3) with SMTP id iB6NUHY3018990;
	Mon, 6 Dec 2004 18:30:22 -0500 (EST)
Received: from  [67.107.119.79] by c-67-181-167-107.client.comcast.net with ESMTP id 22E76AD7639; Tue, 07 Dec 2004 01:23:44 +0200
Message-ID: <2bp09p$3-9r0$$--$-5$7$4@c7ofk>
From: "Administrator" <bulletin@staffadministrator.com>
To: moler@netlib2.cs.utk.edu
Subject: ADV:      Staff Announcement
Date: Tue, 07 Dec 04 01:23:44 GMT
X-Priority: 1
X-MSMail-Priority: High
X-Mailer: Microsoft Outlook Express 5.50.4133.2400
MIME-Version: 1.0
Content-Type: multipart/alternative;
	boundary="8.B40E5__FC"

This is a multi-part message in MIME format.

--8.B40E5__FC
Content-Type: text/plain
Content-Transfer-Encoding: quoted-printable

Attention All School Staff: Teachers, Students and Faculty Members:

You Must Respond By 5 P.M. Wednesday, December 8, 2004.

Through a special arrangement, Avtech Direct is offering a limited
allotment of BRAND NEW, top of-the-line, name-brand desktop computers
at more than 50% off MSRP to all Teachers, Students,Faculty and Staff, 
who respond to this message before 5 P.M., Wednesday, December 8, 2004.

All desktop computers are brand-new packed in their original boxes,
and come with a full manufacturer's warranty plus
a 100% satisfaction guarantee.

These professional grade Desktops are fully equipped with 2005
next generation technology, making these the best performing
computers money can buy.

Avtech Direct is offering these feature rich, top performing
Desktops with the latest technology at an amazing price
to all who call:

    1-800-795-8466 by 5 P.M. Wednesday, December 8, 2004

The fast and powerful AT-3200 series Desktop features: 

      * IBM Processor for amazing speed and performance
      * 128MB DDR RAM,  -- Upgradeable to 1024
      * 20 GB UDMA Hard Drive, -- Upgradeable to 80 GB
      * 52X CD-Rom Drive, -- Upgradeable to DVD/CDRW
      * Next Generation 2005 Technology
      * Premium video and sound -- For enhanced colors and graphics
      * Full Connectivity with Fax modem/Lan/IEE 1394/USB 2.0
      * Soft Touch Keyboard and scroll mouse
      * Internet Ready
      * Network Ready
      * 1 Year parts and labor warranty
      * Priority customer service and tech support

MSRP $499 ........................................ Your Cost $227

How to qualify:

  1. You must be a Teacher, Student, Faculty or Staff Member.
  2. All desktop computers will be available on a
     first come first serve basis.
  3. You must call 1-800-795-8466 by 5 P.M. Wednesday, December 8, 2004.
     and we will hold the desktops you request on will call. 
  4. You are not obligated in any way.
  5. 100% Satisfaction Guaranteed.
  6. Ask for Department C.
   
   
Call Avtech Direct
1-800-795-8466 before 5 P.M. Wednesday, December 8, 2004


Visit our website at http://www.avtechcomputers.com


If you wish to unsubscribe from this list, please go to
http://www.avtechcomputers.com/announcements.asp



Avtech Direct
22647 Ventura Blvd. Suite 374
Woodland Hills, CA 91364
--8.B40E5__FC--


From cgilelcgeitis@email.msn.com Tue Dec  7 20:46:50 2004
Return-Path: <cgilelcgeitis@email.msn.com>
Received: from 129.129.129.4 ([218.86.53.32])
	by netlib2.cs.utk.edu (8.12.8/8.12.3) with SMTP id iB81kdY3022529
	for <mpi-comm-archive@netlib2.cs.utk.edu>; Tue, 7 Dec 2004 20:46:42 -0500 (EST)
Message-ID: <26486901234160.85715llrsh62860oan@blueyonder.co.uk>
Received: from 108.82.26.84 by ancia584-kvw879.kq7.blueyonder.co.uk with DAV;
	Wed, 08 Dec 2004 02:43:23 +0100
Reply-To: "Reba Helms" <agbrf@blueyonder.co.uk>
From: "Reba Helms" <rcbkmlvaetg@blueyonder.co.uk>
To: <mpi-comm-archive@netlib2.cs.utk.edu>
Subject: Marketing for mpi-comm-archive@netlib2.cs.utk.edu
Date: Tue, 07 Dec 2004 23:42:23 -0200
MIME-Version: 1.0
Content-Type: multipart/alternative;
	boundary="--5861464536381673"

----5861464536381673
Content-Type: text/html;
Content-Transfer-Encoding: quoted-printable

<html>

<head>
<meta http-equiv=3D"Content-Type" content=3D"text/html; charset=3Diso-8859=
-1">
<meta name=3D"GENERATOR" content=3D"Microsoft FrontPage 4.0">
<meta name=3D"ProgId" content=3D"FrontPage.Editor.Document">
<title>New Page 1</title>
</head>

<body>

<p style=3D"MARGIN-LEFT: 0.5in"><font face=3D"Arial" size=3D"2"><span styl=
e=3D"FONT-FAMILY: Arial; FONT-SIZE: 10pt"><br>
Stable offshore resources to&nbsp;promote your services/products:</span></=
font></p>
<p style=3D"MARGIN-LEFT: 0.5in"><font face=3D"Arial" size=3D"2"><span styl=
e=3D"FONT-FAMILY: Arial; FONT-SIZE: 10pt"><b>
-&nbsp; Email addresses </b></span></font><b><font face=3D"Arial" size=3D"=
2"><span style=3D"FONT-FAMILY: Arial; FONT-SIZE: 10pt"> according to your
order<br>
-&nbsp;
Send mailing according to your
order<br>
</span></font></b><font face=3D"Arial" size=3D"2"><span style=3D"FONT-FAMI=
LY: Arial; FONT-SIZE: 10pt">
<br>
<b>-&nbsp; Direct Mailing Server (Cheap!)<br>
-&nbsp; Offshore web Hosting</b></span></font></p>
<p style=3D"MARGIN-LEFT: 0.5in"><font face=3D"Arial" size=3D"2"><span styl=
e=3D"FONT-FAMILY: Arial; FONT-SIZE: 10pt"><a href=3D"http://www.gozx.com">=
More 
Information</a></span></font></p>

<p style=3D"MARGIN-LEFT: 0.5in"><font face=3D"Arial" size=3D"2"><span styl=
e=3D"font-family: Arial; font-size: 10pt">Waiting for your prompt confirma=
tion.</span></font></p>

<p style=3D"MARGIN-LEFT: 0.5in">Please kindly reply to&nbsp;<font face=3D"=
Arial" size=3D"2"><span style=3D"FONT-FAMILY: Arial; FONT-SIZE: 10pt"><a h=
ref=3D"mailto:info@gozk.com;info@gozv.com"><br>
Info@gozk.com or Info@gozv.com<br>
</a><br>
<br>
Reba Helms<br>
Sales Dept<a href=3D"mailto:Sales@ze6.com;Sales@ze6.com"><br>
</a><a href=3D"mailto:info@gozk.com;info@gozv.com">Info@gozk.com<br>
Info@gozv.com</a><br>
<br>
**************************************************************************=
**************<br>
Please click here to off:<a href=3D"mailto:List@yahoo.com?subject=3Dtake-o=
ff">Loff@Hotmail.com?subject=3Dmpi-comm-archive@netlib2.cs.utk.edu</a><br>=

**************************************************************************=
**************</span></font></p>

</body>

</html>


----5861464536381673--


From contacts@emailersinc.com Fri Dec 10 03:30:25 2004
Return-Path: <contacts@emailersinc.com>
Received: from 203-154-169-129.inter.net.th (203-154-169-129.inter.net.th [203.154.169.129] (may be forged))
	by netlib2.cs.utk.edu (8.12.8/8.12.3) with SMTP id iBA8UFY3012731
	for <mpi-comm-archive@netlib2.cs.utk.edu>; Fri, 10 Dec 2004 03:30:22 -0500 (EST)
Received: from (HELO x3k) [233.229.233.219] by 203-154-169-129.inter.net.th SMTP id 8u0HMf7t35T6UI; Sat, 11 Dec 2004 01:31:39 -0200
Message-ID: <d2qu7f-h03vd@070z4v.z36t>
From: "E mail marketing" <contacts@emailersinc.com>
Reply-To: "E mail marketing" <contacts@emailersinc.com>
To: mpi-comm-archive@netlib2.cs.utk.edu
Subject: promote your site
Date: Sat, 11 Dec 04 01:31:39 GMT
X-Mailer: Microsoft Outlook Express 5.00.2919.6700
MIME-Version: 1.0
Content-Type: multipart/alternative;
	boundary="A3E_5CABA4"
X-Priority: 3
X-MSMail-Priority: Normal
X-WinProxy-AntiVirus: Passed
X-WinProxy-AntiVirus-Message: Scanned by http://www.WinProxy.com/WinProxy


--A3E_5CABA4
Content-Type: text/html;
Content-Transfer-Encoding: quoted-printable

<!-- saved from url=3D(0022)http://internet.e-mail -->
<html>

<head>
<meta http-equiv=3D"Content-Language" content=3D"en-us">
<meta http-equiv=3D"Content-Type" content=3D"text/html; charset=3Dwindows-=
1252">
<title>Dear subscriber</title>
</head>

<body>

<div align=3D"left">
	<table id=3D"table1" style=3D"BORDER-COLLAPSE: collapse" borderColor=3D"#=
971133" cellPadding=3D"6" width=3D"782" border=3D"0">
		<tr>
			<td align=3D"justify" width=3D"770" colSpan=3D"3"><b>
			<font face=3D"Goudy Old Style" size=3D"5">Dear Subscriber,</font></b>
			<p><b><font face=3D"Goudy Old Style" size=3D"5">Here comes December, th=
e 
			month of Christmas&nbsp; and the end of a fruitful year - 2004!&nbsp; <=
br>
			<br>
			But the heat is still on and now is the perfect time to promote your 
			products and services, people are in the mood to buy anything from 
			online gift items to offline stores.</font></b></p>
			<p><b><font face=3D"Goudy Old Style" size=3D"5">And if you have not yet=
 
			decided to consider email marketing as an effective tool to let the 
			world know what you are promoting there has never been a better time 
			to do so.</font></b></p>
			<p><b><font face=3D"Goudy Old Style" size=3D"5">All major statistics 
			shows that most online deals are made through the month of December 
			due to holiday consumer behavior&nbsp; everybody wants to give somebody=
 
			something .</font></b></p>
			<p><b><font face=3D"Goudy Old Style" size=3D"5">Why not just grab the 
			opportunity and be there for those who are ready to buy?</font></b></p>=

			<p align=3D"center"><b><font face=3D"Goudy Old Style" size=3D"7">
			<a href=3D"http://www.lmchosting.com"><font color=3D"#FF0000">
			WWW.LMCHOSTING.COM</font></a></font></b></td>
		</tr>
	</table>
</div>

</body>

</html>
<br><p><br>Scanned for viruses by Blue Coat<br><a href=3D"http://www.WinProxy=
com/" target=3D"_blank"><font color=3D"darkblue">http://www.WinProxy.com=
/</font></a>
--A3E_5CABA4--


