# US 2018/0322387 A1 · Hardware implemented point to point communication primitives for machine learning

> Agents: this data is available as JSON from the patentgrep API and MCP server — see https://patentgrep.com/llms.txt

- Number: US 2018/0322387 A1
- Document ID: US20180322387A1
- Status: Published application
- Kind: A1
- Application number: 15/869,510
- Filed: 2018-01-12
- Published: 2018-11-08
- Earliest claimed: 2017-05-05
- Assignees: Intel Corporation
- Applicants: Intel Corporation
- Inventors: Srinivas Sridharan; Karthikeyan Vaidyanathan; Dipankar Das
- Web page: https://patentgrep.com/patent/US20180322387A1

## CPC

- G06N 3/098: Distributed learning, e.g. federated learning
- G06F 9/547: {Remote procedure calls [RPC]; Web services}
- G06N 3/0442: characterised by memory or gating, e.g. long short-term memory [LSTM] or gated recurrent units [GRU]
- G06N 3/045: Combinations of networks
- G06N 3/0464: Convolutional networks [CNN, ConvNet]
- G06N 3/063: using electronic means
- G06N 3/084: Backpropagation, e.g. using gradient descent
- G06N 3/09: Supervised learning
- G06N: COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06F: ELECTRIC DIGITAL DATA PROCESSING (computer systems based on specific computational models G06N)

## Abstract

One embodiment provides for a system to compute and distribute data for distributed training of a neural network, the system including first memory to store a first set of instructions including a machine learning framework; a fabric interface to enable transmission and receipt of data associated with the set of trainable machine learning parameters; a first set of general-purpose processor cores to execute the first set of instructions, the first set of instructions to provide a training workflow for computation of gradients for the trainable machine learning parameters and to communicate with a second set of instructions, the second set of instructions facilitate transmission and receipt of the gradients via the fabric interface; and a graphics processor to perform compute operations associated with the training workflow to generate the gradients for the trainable machine learning parameters.

## Claims

### Claim 1

A system to compute and distribute data for distributed training of a neural network, the system including:
first memory to store a first set of instructions including a machine learning framework;
a fabric interface to enable transmission and receipt of data associated with a set of trainable machine learning parameters;
a first set of general-purpose processor cores to execute the first set of instructions, the first set of instructions to provide a training workflow for computation of gradients for the set of trainable machine learning parameters and to communicate with a second set of instructions, the second set of instructions facilitate transmission and receipt of the gradients via the fabric interface; and
a graphics processor to perform compute operations associated with the training workflow to generate the gradients for the set of trainable machine learning parameters.

### Claim 2 (depends on 1)

The system as in claim 1, the second set of instructions including a set of point-to-point communication primitives to perform a set of pre-defined communication operations via the fabric interface.

### Claim 3 (depends on 2)

The system as in claim 2, the fabric interface including hardware to accelerate at least a portion of the pre-defined communication operations or at least a subset of the point-to-point primitives.

### Claim 4 (depends on 3)

The system as in claim 3, the pre-defined communication operations including a store-with-notify operation and a remote procedure call.

### Claim 5 (depends on 3)

The system as in claim 3, the pre-defined communication operations additionally including a remote atomic memory operation.

### Claim 6 (depends on 3)

The system as in claim 3, the pre-defined communication operations additionally including a load with gather list and store with scatter list.

### Claim 7 (depends on 3)

The system as in claim 3, the fabric interface to communicatively couple with multiple compute nodes configured for distributed training of the neural network, at least two of the multiple compute nodes to be indirectly connected via the fabric interface, wherein the fabric interface is to route a message between indirectly connected compute nodes.

### Claim 8 (depends on 7)

The system as in claim 7, the fabric interface is to route the message between the indirectly connected compute nodes based on a target memory address associated with the message.

### Claim 9 (depends on 1)

The system as in claim 1, additionally including second memory coupled with the graphics processor, the second memory to store the gradients for the set trainable machine learning parameters.

### Claim 10 (depends on 9)

The system as in claim 9, the fabric interface having with a virtual address space mapped to at least a portion of the second memory.

### Claim 11 (depends on 10)

The system as in claim 10, wherein the second memory is physical memory shared between the fabric interface and the graphics processor.

### Claim 12 (depends on 11)

The system as in claim 11, the graphics processor to store the gradients to the second memory and the fabric interface to transmit the gradients from the second memory.

### Claim 13

A graphics processing unit comprising:
a compute block including one or more processing clusters, the one or more processing clusters to perform compute operations associated with a machine learning framework workflow, the compute operations to generate gradient data associated with trainable parameters of a neural network;
a memory device to store gradient data during distributed training of the neural network; and
a fabric interface coupled with the memory device, the fabric interface to transmit gradient data stored in the memory device, wherein the memory device is a physical memory device shared with the compute block.

### Claim 14 (depends on 13)

The graphics processing unit as in claim 13, the fabric interface including a cache to store gradient data before transmission or after receipt of the gradient data.

### Claim 15 (depends on 13)

The graphics processing unit as in claim 13, wherein the fabric interface has an address space mapped to at least a portion of the memory device.

### Claim 16 (depends on 15)

The graphics processing unit as in claim 15, wherein the compute block and the fabric interface have a unified address space.

### Claim 17

A method of computing and distributing data for distributed training of a neural network, the method comprising:
storing a first set of instructions in a first memory, the first set of instructions including a machine learning framework;
enabling, via a fabric interface, transmission and receipt of data associated with a set of trainable machine learning parameters;
executing the first set of instructions via a set of general-purpose processor cores, wherein executing the first set of instructions includes providing a training workflow for computation of gradients for the set of trainable machine learning parameters and communicating with a second set of instructions, the second set of instructions facilitating transmission and receipt of the gradients via the fabric interface; and
performing, via a graphics processor, computing operations associated with the training workflow, wherein performing the computing operations includes generating the gradients for the set of trainable machine learning parameters.

### Claim 18 (depends on 17)

The method as in claim 17, additionally comprising executing at least a portion of the second instructions via the fabric interface, the second set of instructions to cause the fabric interface to transmit the gradients.

### Claim 19 (depends on 18)

The method as in claim 18, additionally comprising executing at least a portion of the second instructions via a processor on the fabric interface.

### Claim 20 (depends on 17)

The method as in claim 17, additionally comprising mapping a virtual address space of the fabric interface to a unified address space shared with the graphics processor.
