
Hi, these are notes from the ad-hoc meeting at SC-05 about a message oriented communication API. The API might be considered for inclusion at into the GGF SAGA API spec at some point - for now it is only supposed provide coherent discussion and development in the interested groups. As a reminder, material about saga can be found at: http://wiki.cct.lsu.edu/saga/ Meeting Participants: --------------------- - Jason Leigh (EVL) - Venkatram Vishwanath (EVL) - Andrei Hutany (LSU) - John Shalf (LBNL) - Andre Merzky (VU/LSU) Definition: ----------- Message: chunk of data which is potentially larger than a network package. Several independend sets for property flags have been identified: Reliability Requirements: - - - - - - - - - - - - - - Reliable all messages are received exactly once. If received, messages are complete - Unreliable messages are either received or not. If received, messages are complete - AtLeastOnce optional, as for Reliable, but messages can be received more than once Correctness Requirements: - - - - - - - - - - - - - - ByteErrors received messages MAY contain byte errors - NoByteErrors received messages MUST NOT contain byte errors Ordering Requirement: - - - - - - - - - - - - Ordered messages MUST be received in order - NotOrdered messages MAY be received out of order API considerations: ------------------- - it was felt that a BSD like connection setup is most useful - asynchroneous recieving of complete messages is needed (viz use cases!) - striping/multicasting on application level is not considered for now (multiple senders/receivers) API proposal: ------------- - establish connection: - bsd like: listen/accept/connect - port range should be specifiable - properties should be specified as flags (changable at runtime) - write: write (buffer, size, BLOCK | NO_BLOCK) message is written completely or not at all (if possible) - read: two step mechanism: (int handle, int size) = query_size (); (char* buffer) = read (handle, size); - handle can be zero, if size is known (one step read) - buffer needs to be allocated by application. - if size is zero, the buffer is allocated by the implementation and returned to be freed by the application (one step read) - if size is smaller then the real message size, message gets truncated, remainder gets lost (read again not possible) - if size is larger, buffer gets patted by 0 - asynchroneous method calls: - as in the SAGA task model, with callbacks - connection shutdown: - as in bsd (close ()) Please feel free to send corrections, comments etc. Thanks, Andre. -- +-----------------------------------------------------------------+ | Andre Merzky | phon: +31 - 20 - 598 - 7759 | | Vrije Universiteit Amsterdam (VU) | fax : +31 - 20 - 598 - 7653 | | Dept. of Computer Science | mail: merzky@cs.vu.nl | | De Boelelaan 1083a | www: http://www.merzky.net | | 1081 HV Amsterdam, Netherlands | | +-----------------------------------------------------------------+