On Feb 28, 2008, at 11:29 PM, Supalov, Alexander wrote:
- Communicator & group management: better memory footprint.
Take this point to an extreme - it may be possible to say "this app only uses MPI_COMM_WORLD". In this case, you can remove the communicator field from network packets for a small gain in latency, or perhaps reduce it from 4 to 2 bytes or 1 byte (e.g., if an app says "I'll only use 4 communicators").
- Message tagging: better support for stable dataflow exchanges, smaller packets.
Two points here: - allow app to eliminate MPI_ANY_TAG - just like with communicators, allow the app to say "I'll only use N tags", where N can save you space in network packets (e.g., if N==1, no need for tag on the wire; if N == 2, then you only need 1 byte for the tag, etc.).
- Non-blocking communication: easier ordering, simplified request handling.
If there is no non-blocking communication, enormous chunks of the progression engine can be optimized in terms of memory (i.e., remove lots of now-unnecessary code) and probably a little speed. On the teleconf (sorry I missed it), was there discussion of how to specify these hints? Perhaps a new function: MPI_INIT_INFO (pass an MPI_Info handle to MPI_INIT)? Or is it something that needs to be specified at compile/link time? -- Jeff Squyres Cisco Systems