MPI communication of GPU buffers
AssigneeNVIDIA Corporation
InventorsRolf VandaVaart, Timothy James Murray, Peter Michael Buckingham
Life of this patent
Estimating the term…
Abstract
A technique for enhancing the efficiency and speed of data transmission within and across multiple, separate computer systems includes the use of an MPI library/engine. The MPI library/engine is configured to facilitate the transfer of data directly from one location to another location within the same computer system and/or on separate computer systems via a network connection. Data stored in one GPU buffer may be transferred directly to another GPU buffer without having to move the data into and out of system memory or other intermediate send and receive buffers.
Claims12
A method for transmitting data between graphics processing unit (GPU) buffers, the method comprising:
- registering a send GPU buffer with a software stack;
- receiving a handle for the send GPU buffer from the software stack, wherein the handle does not include an address of the send GPU buffer;
- receiving the handle from a send message passing interface (MPI) engine that resides in a first machine;
- calling into the software stack with the handle, wherein the software stack resides in the first machine;
- receiving the address of the send GPU buffer from the software stack, wherein the send GPU buffer resides in the first machine;
- and
- issuing a command for a memory access operation to retrieve data from the send GPU buffer.
A non-transitory computer readable storage medium comprising instructions for transmitting data between graphics processing unit (GPU) buffers that, when executed by a message passing interface (MPI) engine, cause the MPI engine to carry out the steps of:
- registering a send GPU buffer with a software stack;
- receiving a handle for the send GPU buffer from the software stack, wherein the handle does not include an address of the send GPU buffer;
- receiving the handle from a send message passing interface (MPI) engine that resides in a first machine;
- calling into the software stack with the handle, wherein the software stack resides in the first machine;
- receiving the address of the send GPU buffer from the software stack, wherein the send GPU buffer resides in the first machine;
- and
- issuing a command for a memory access operation to retrieve data from the send GPU buffer.
A system for transmitting data between graphics processing unit (GPU) buffers, the system comprising:
- a receive GPU buffer that resides in a first machine;
- and
- a receive message passing interface (MPI) engine that resides in the first machine, the receive MPI engine configured to perform the steps of:
- registering a send GPU buffer with a software stack;
- receiving a handle for the send GPU buffer from the software stack, wherein the handle does not include an address of the send GPU buffer;
- receiving the handle from a send message passing interface (MPI) engine that resides in a first machine;
- calling into the software stack with the handle, wherein the software stack resides in the first machine;
- receiving the address of the send GPU buffer from the software stack, wherein the send GPU buffer resides in the first machine;
- and
- issuing a command for a memory access operation to retrieve data from the send GPU buffer.
Dependencies are inferred from the claim text.