IP Library › Granted Patent US 11,467,992
Granted Patent B1
US 11,467,992 · App. 17/031,668 · Granted Oct 11, 2022

Memory access operation in distributed computing system

Inventors: Patricio Kaplan (Palo Alto, CA); Ron Diamant (Santa Clara, CA)
Assignee: Amazon Technologies, Inc.
G06F13/28G06F3/0604G06F3/0655G06F3/0673G06F2213/0026G06F2213/28
View Patent ↗
Loading inventors, assignments & file history…
Monitor This Case
Get email alerts when status or documents change.
Order Certified Copies
Most orders are placed with the USPTO same day — all within 24 business hours.
Order via The Patent Place →
Pre-filled with this patent's details
Quick Facts
Patent No.
US 11,467,992
App. No.
17/031,668
Granted
Oct 11, 2022
Kind
B1
Abstract

In one example, an apparatus comprises: a local on-chip memory; a computation engine configured to generate local data and to store the local data at the local on-chip memory; and a controller. The apparatus is configured to be coupled with a second device via an interconnect, the second device comprising a local memory. The controller is configured to: fetch the local data from the local on-chip memory; fetch remote data generated by another device from a local off-chip memory; generate output data based on combining the local data and the remote data; and store, via the interconnect, the output data at the local memory of the second device.

Claims (92)

1. A computer server, comprising:

a host processor;

a network adapter coupled with a network, the network adapter comprising a local memory;

a hardware data processor comprising a local on-chip memory, a local off-chip memory configured to store partial averaged weight gradients, a computation engine, and a direct memory access (DMA) engine; and

an interconnect coupled between the host processor, the network adapter, and the hardware data processor;

wherein the hardware data processor is configured to:

based on a command from the host processor, perform, using the computation engine, a backward propagation operation to generate local weight gradients;

store the local weight gradients at the local on-chip memory;

control the DMA engine to:

fetch the local weight gradients from the local on-chip memory of the hardware data processor;

fetch the partial averaged weight gradients from the local off-chip memory of the hardware data processor;

perform an all-reduce operation on the local weight gradients and the partial averaged weight gradients to generate updated partial averaged weight gradients; and

store, via the interconnect, the updated partial averaged weight gradients at the local memory of the network adapter; and

wherein the network adapter is configured to:

fetch the updated partial averaged weight gradients from the local memory;

generate packets including the updated partial averaged weight gradients; and

transmit the packets to the network.

2. The computer server of claim 1 , wherein the hardware data processor is configured to:

obtain a base address of the local memory of the network adapter from a base address register (BAR) of the interconnect;

generate memory write instructions including destination addresses based on the base address; and

transmit the memory write instructions and the updated partial averaged weight gradients to the network adapter via the interconnect, to enable a memory controller of the network adapter to store the updated partial averaged weight gradients at the local memory of the network adapter based on the memory write instructions.

3. The computer server of claim 1 , wherein the computer server is configured as a first node in a ring topology; and

wherein the packets including the updated partial averaged weight gradients are transmitted to a second node in the ring topology as an input to the all-reduce operation.

4. The computer server of claim 1 , wherein the local weight gradients and partial averaged weight gradients are, respectively, first local weight gradients and first partial averaged weight gradients; and

wherein the hardware data processor is configured to:

control the DMA engine to:

fetch second local weight gradients and second partial averaged weight gradients from, respectively, the local on-chip memory and the local off-chip memory;

perform the all-reduce operation on the second local weight gradients and the second partial averaged weight gradients to generate final averaged weight gradients;

store the final averaged weight gradients at the off-chip local memory of the hardware data processor; and

transmit a notification to the network adapter that the final averaged weight gradients are stored at the off-chip local memory of the hardware data processor; and

control the computing engine to update weights of a neural network model based on the final averaged weight gradients; and

wherein the network adapter is configured to, responsive to receiving the notification, transmit read descriptors to the DMA engine of the hardware data processor via the interconnect to fetch the final averaged weight gradients from the off-chip local memory of the hardware data processor.

5. An apparatus comprising:

a local on-chip memory;

a computation engine configured to generate local data and to store the local data at the local on-chip memory; and

a controller;

wherein the apparatus is configured to be coupled with a network adapter separate from the apparatus via an interconnect, the network adapter comprising a local memory; and

wherein the controller is configured to:

fetch the local data from the local on-chip memory;

fetch remote data generated by another device from a local off-chip memory;

generate output data based on combining the local data and the remote data; and

store, via the interconnect, the output data at the local memory of the network adapter.

6. The apparatus of claim 5 , wherein the controller is configured to:

obtain a base address of the local memory of the network adapter from a base address register (BAR) of the interconnect;

generate memory write instructions including destination addresses based on the base address; and

transmit the memory write instructions and the output data to the network adapter via the interconnect, to enable a memory controller of the network adapter to store the output data at the local memory of the network adapter based on the memory write instructions.

7. The apparatus of claim 6 , wherein the controller is configured to transmit a notification to the network adapter to indicate when a transfer of the output data to the interconnect completes; and

wherein the notification causes the network adapter second device to perform a flush operation to fetch all of the output data stored in an internal buffer of the interconnect to the local memory of the network adapter.

8. The apparatus of claim 6 , wherein the BAR is accessible only by the controller and a management entity.

9. The apparatus of claim 5 , wherein the interconnect is configured to accept the output data based on an indication that the local memory of the network adapter has capacity available to store the output data.

10. The apparatus of claim 5 , wherein the local data, the remote data, and the output data are, respectively, first local data, first remote data, and first output data;

wherein the computation engine is configured to generate second local data and store the second local data at the local on-chip memory;

wherein the local off-chip memory is configured to store second remote data; and

wherein the controller is configured to:

fetch the second local data from the local on-chip memory;

fetch the second remote data from the local off-chip memory;

generate second output data based on combining the second local data and the second remote data;

store the second output data at the local off-chip memory;

receive read requests from the network adapter; and

based on the read requests, fetch the second output data from the local off-chip memory to the network adapter.

11. The apparatus of claim 10 , wherein the controller is configured to:

fetch the second output data from the local off-chip memory to the local on-chip memory; and

wherein the computation engine is configured to:

fetch the second output data from the local on-chip memory; and

perform a computation operation on the second output data.

12. The apparatus of claim 5 , wherein the controller further comprises a DMA engine configured to generate the output data based on combining the local data and the remote data, and to generate the memory write instructions.

13. The apparatus of claim 5 ,

wherein the storage of the output data at the local memory of the network adapter enables the network adapter to fetch the output data from the local memory and to generate packets including the output data for transmission to a network.

14. The apparatus of claim 5 ,

wherein the output data is first output data;

wherein the local data is first local data;

wherein the network adapter comprises a computation engine and a controller;

where the storage of the first output data at the local memory of the network adapter enables the controller of the network adapter to fetch the first output data from the local memory and to generate second output data based on combining the first output data with second local data generated by the controller of the network adapter.

15. The apparatus of claim 5 , wherein the computation engine comprises a neural network processor configured to perform a backward propagation operation to generate local weight gradients as the local data;

wherein the remote data comprises partial averaged weight gradients received from another worker node;

wherein the controller is configured to perform an all reduce operation to average the local weight gradients and the partial averaged weight gradients to generate updated partial averaged weight gradients as the output data.

16. The apparatus of claim 5 , wherein the interconnect comprises at least one of: a Peripheral Component Interconnect Express (PCIE) root-complex switch, or a PCIE peer-to-peer link.

17. The apparatus of claim 5 , wherein the local on-chip memory comprises at least one of: a static random access memory (SRAM), registers, or flops; and

wherein the local off-chip memory comprises at least one of: a dynamic random access memory (DRAM), a high-bandwidth memory (HBM), a storage class memory (SCM), or a flash memory.

18. A method comprising:

storing remote data at a local off-chip memory of a hardware data processor, the remote data being received from another device;

generating local data using a computation engine of the hardware data processor;

storing, by the computation engine, the local data at a local on-chip memory of the hardware data processor;

fetching, by a controller of the hardware data processor, the local data from the local on-chip memory;

fetching, by the controller, the remote data from the local off-chip memory;

generating, by the controller and based on the local data and the remote data, output data targeted at a network adapter, the network adapter being separate from the hardware data processor and being coupled with the hardware data processor via an interconnect; and

storing, via the interconnect, the output data at a local memory of the network adapter.

19. The method of claim 18 , further comprising:

obtaining a base address of the local memory of the network adapter from a base address register (BAR) of the interconnect;

generating memory write instructions including destination addresses based on the base address; and

transmitting the memory write instructions and the output data to the network adapter via the interconnect, to enable a memory controller of the network adapter to store the output data at the local memory of the network adapter based on the memory write instructions.

20. The method of claim 19 , wherein the controller comprises a DMA engine configured to generate the output data based on combining the local data and the remote data, and to generate the memory write instructions.

Assignments (1)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Sep 24, 2020
From: KAPLAN, PATRICIO; DIAMANT, RON
To: AMAZON TECHNOLOGIES, INC.
Reel/Frame 053878/0701 →
Cited By (3)
US 12,293,174 US 12,411,795 US 12,675,715