Subject: MPI Poll results

From: Rusty Lusk <[email-masked]>
Date: Sun, 01 Oct 1995 13:52:28 -0500

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				[email-masked]
Ohio Supercomputer Center		http://www.osc.edu/lam.html