Proposal for bipartite alltoall collective channel. Rationale: Many applications need to reorganize a distributed matrix from one group of processes to another. This is the second of two alltoall channels that support that. This alltoall channel redistributes data from one group (sender) to another one (receiver). The two groups may share processes. Many platform specific features can be used to optimize this channel beyond what users can do themselves as well as making more performance portable for the users. 1. Changes to section 8. Add 8.8 Bipartite Alltoall Operation Channel ` This section defines operations for creating and manipulating a bipartite alltoall collective channel. The alltoall operation is analogous to the scatter & gather performed together. Each process that belongs to the sender group scatters its message among processes from the receiver group of the alltoall channel. The processes of the receiver group then gathers all the incoming messages from all sender group processes into a single buffer. The send message buffer is evenly divided into small messages with the number of small messages equal to the size of the receiver group. Each small message is sent to the corresponding process of the receiver group with the i-th receiver process gets the i-th small sender message. The arriving small messages are then concatenated into a single buffer that is inserted by an implementation into a recvoutbufiter. The order of dividing a send message into smaller messages for individual receiver processes follows the order of the processes in the receiving group. The order of concatenation of receiving small messages from the sender processes into an alltoall channel receive message follows the ordering of the processes of the channel group. All send buffers at the sender processes are of the same size and all recv buffers at the receiver processes are of the same size. Both sizes are divisible by the cardinality of the sender and receiver groups and dataspec size. MPIRT_BIALLTOALL_CHANNEL_CREATE (name, inbufiter, outbufiter, recvinbuffer, recvoutbufiter, group, receiver_group, qos, bialltoallchannel) IN name name of the collective channel (MPIRT_STRING_NAME) IN inbufiter sender side input buffer iterator that is significant only for the sender group and MPIRT_BUFITER_NULL for the receiver processes (MPIRT_BUFITER) IN outbufiter sender side output buffer iterator that is significant only for the sender group and MPIRT_BUFITER_NULL for the receiver processes (MPIRT_BUFITER) IN recvinbufiter receiver side input buffer iterator that is significant only for the receiver group and MPIRT_BUFITER_NULL for the sender processes (MPIRT_BUFITER) IN recvoutbufiter receiver side output buffer iterator that is significant only for the receiver group and MPIRT_BUFITER_NULL for the sender processes (MPIRT_BUFITER) IN group group whose processes send messages (MPIRT_GROUP) IN receiver_group group whose processes receive messages (MPIRT_GROUP) IN qos channel quality of service (MPIRT_QOS_name-of-QOS-CHANNEL-class) OUT bialltoallchannel bipartite alltoall collective channel (ref. to MPIRT_BIALLTOALL_CHANNEL) [C and C++ will be added here.] [Two pair of set/get operations for recvinbufiter and recvoutbufiter will be added here. A pair of set/get operations for receive_group will be added here. The set/get operations for sender group are provided in chapter 6.] [The tables Miscellaneous definitions and bindings will be changed to add bipartite alltoall channel. One more table for bipartite alltoall channel will be added at the end.] 2. [Changes to Chapter 2.] Add BIALLTOALL_CHANNEL to table 2.1 (page 21) for meta classes name-of-class, name-of-class-for-free-dup, name-of-class-for-attributes, name-of-class-for-comparison, name-of-leaf-class, name-of-leaf-class-for-create and name-of-channel-class. Add Bipartite_Alltoall_Channel to figure 2.1 on page 22. 3. [Changes to Chapters 6 & 9.] Add Bipartite_Alltoall channel to first footnote on page 117 and the sentence on page 119 lines 28-31. Add Bipartite_Alltoall channel to the sentence on page 162 lines 38-42. 4. [Changes to the indexes] Bipartite Alltoall channel and its functions should appear in the function and entities indexes at the end of the document. [Alltoall channel is consistent with the variable buffer proposal.]