**Patent Number:** 8775698, issued on 2014/07/08

**Applied on** 2012/04/30, 13/459,832

**Inventor(s):** Charles Archer, Amanda Randles, Brian Smith

**Assignee:** International Business Machines Corporation

**Abstract:** Methods, apparatus, and products are disclosed for performing an all-to-all exchange on n number of data buffers using XOR swap operations. Each data buffer has n number of data elements. Performing an all-to-all exchange on n number of data buffers using XOR swap operations includes for each rank value of i and j where i is greater than j and where i is less than or equal to n: selecting data element i in data buffer j; selecting data element j in data buffer i; and exchanging contents of data element i in data buffer j with contents of data element j in data buffer i using an XOR swap operation.

**Claims:** 1. A computer-implemented method of performing an all-to-all exchange on n number of data buffers stored in computer memory using computer-implemented swap operations, each data buffer having n number of data elements, each data buffer stored on a distinct compute node of a parallel computer, the compute nodes connected together with a global combining network, the method comprising, for each rank value of i and j where i is greater than j and where i is less than or equal to n: exchanging, by the module of automated computing machinery and without user intervention, contents of data element i in data buffer j with contents of a data element j in data buffer i using a computer-implemented swap operation, including: performing a series of bitwise XOR allreduce operations through the global combining network in which the compute node storing data buffer j contributes the contents of data element i and the compute node storing data buffer i contributes the contents of data element j, and combining, by network hardware using a bitwise XOR operator, contributions of the compute nodes participating in the bitwise XOR allreduce operation.
2. The method of claim 1 wherein performing the series of bitwise XOR allreduce operations further comprises contributing, by the compute nodes other than the compute nodes storing data buffer i and data buffer j, the identity value to the series of bitwise XOR allreduce operations.
3. The method of claim 1 wherein the compute nodes are connected together for data communications using a plurality of data communications networks, at least one of the networks optimized for collective operations, and at least one of the data communications networks optimized for point to point operations.
4. An apparatus for performing an all-to-all exchange on n number of data buffers using swap operations, each data buffer having n number of data elements, each data buffer stored on a distinct compute node of a parallel computer, the compute nodes connected together with a global combining network, the apparatus comprising: one or more computer processors and computer memory operatively coupled to the computer processors, the computer memory having disposed within it computer program instructions, the computer processor executing the computer program instructions, causing the apparatus to carry out the steps of: for each rank value of i and j where i is greater than j and where i is less than or equal to n: exchanging contents of data element i in data buffer j with contents of data element j in data buffer i using a swap operation including: performing a series of bitwise XOR allreduce operations through the global combining network in which the compute node storing data buffer j contributes the contents of data element i and the compute node storing data buffer i contributes the contents of data element j, and combining, by network hardware using a bitwise XOR operator, contributions of the compute nodes participating in the bitwise XOR allreduce operation.
5. The apparatus of claim 4 wherein performing the series of bitwise XOR allreduce operations further comprises contributing, by the compute nodes other than the compute nodes storing data buffer i and data buffer j, the identity value to the series of bitwise XOR allreduce operations.
6. The apparatus of claim 4 wherein the compute nodes are connected together for data communications using a plurality of data communications networks, at least one of the networks optimized for collective operations, and at least one of the data communications networks optimized for point to point operations.
7. A computer program product for performing an all-to-all exchange on n number of data buffers using XOR swap operations, each data buffer having n number of data elements, each data buffer stored on a distinct compute node of a parallel computer, the compute nodes connected together with a global combining network, the computer program product comprising: a non-transitory computer readable medium, the computer program product comprising computer program instructions that, when executed by a computer processor, cause a computer to carry out the steps of: for each rank value of i and j where i is greater than j and where i is less than or equal to n: exchanging contents of data element i in data buffer j with contents of data element j in data buffer i using a swap operation including: performing a series of bitwise XOR allreduce operations through the global combining network in which the compute node storing data buffer j contributes the contents of data element i and the compute node storing data buffer i contributes the contents of data element j, and combining, by network hardware using a bitwise XOR operator, contributions of the compute nodes participating in the bitwise XOR allreduce operation.
8. The computer program product of claim 7 wherein performing the series of bitwise XOR allreduce operations further comprises contributing, by the compute nodes other than the compute nodes storing data buffer i and data buffer j, the identity value to the series of bitwise XOR allreduce operations.
9. The computer program product of claim 7 wherein the compute nodes are connected together for data communications using a plurality of data communications networks, at least one of the networks optimized for collective operations, and at least one of the data communications networks optimized for point to point operations.