IP Library Patent Application 18393320
Patent Application
App. No. 18/393,320

IMPLEMENTING NEURAL NETWORKS IN HARDWARE

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 None
App. No.
18/393,320
Abstract

Methods of implementing a neural network in hardware, the neural network including a plurality of layers and the layers being grouped into a plurality of layer groups, each layer group comprising one or more layers of the neural network that are processed in a single pass through the hardware. The layer groups are grouped into a plurality of tile groups, each tile group comprising a set of layer groups that are evaluated when executing the neural network. The method comprises pre-fetching a portion of the input data for a first layer group in a tile group into a buffer slot in on-chip memory; and subsequently releasing the buffer slot after output data for the first layer group has been written to memory.

Claims (33)

1 . A method for implementing a neural network in hardware, the neural network comprising a plurality of layers, wherein the layers are grouped into a plurality of layer groups, each layer group comprising one or more layers of the neural network that are processed in a single pass through the hardware and the layer groups are grouped into a plurality of tile groups, each tile group comprising a set of layer groups that are evaluated when executing the neural network, the method comprising:

pre-fetching a portion of the input data for a first layer group in a tile group into a buffer slot in on-chip memory; and

subsequently releasing the buffer slot after output data for the first layer group has been written to memory.

2 . The method according to claim 1 , wherein the portion of the input data is pre-fetched prior to execution of the first layer group.

3 . The method according to claim 1 , wherein the pre-fetching of the portion of the input data starts prior to execution of the first layer group and finishes during execution of the first layer group.

4 . The method according to claim 1 , wherein the portion of the input data is pre-fetched during execution of a layer group preceding the first layer group.

5 . The method according to claim 4 , wherein the layer preceding the first layer group is a last layer group in a preceding tile group.

6 . The method according to claim 1 , wherein input data for the first layer group is subdivided into a plurality of blocks, the portion of the input data comprises a first block and is pre-fetched prior to execution of the first layer group.

7 . The method according to claim 1 , wherein input data for the first layer group is subdivided into a plurality of blocks, the portion of the input data comprises a first block and is pre-fetched during execution of a layer group preceding the first layer group.

8 . The method according to claim 6 , further comprising:

pre-fetching a second block of the input data for the first layer group in the tile group into a second buffer slot in on-chip memory, wherein the second block is prefetched prior to execution of the first layer group for the second block of the input data; and

subsequently releasing the second buffer slot after output data for the first layer group and the second block of the input data has been written to memory.

9 . The method according to claim 6 , further comprising: pre-fetching a second block of the input data for the first layer group in the tile group into a second buffer slot in on-chip memory, wherein the second block is prefetched during execution of a layer group in the tile group for the first block of the input data; and

subsequently releasing the second buffer slot after output data for the first layer group and the second block of the input data has been written to memory.

10 . The method according to claim 1 , wherein input data for the first layer group is subdivided into a plurality of blocks, the portion of the input data comprises a second or subsequent block of the plurality of blocks and the portion of the input data is pre-fetched prior to execution of the first layer group with the portion of the input data.

11 . The method according to claim 1 , wherein input data for the first layer group is subdivided into a plurality of blocks, the portion of the input data comprises a second or subsequent block of the plurality of blocks and the portion of the input data is pre-fetched during execution of a layer group in the tile group for a preceding block of the plurality of blocks.

12 . The method according to claim 1 , wherein the hardware comprises a plurality of cores and the input data for the first layer group is subdivided into a plurality of blocks, the portion of the input data comprises a first block for each of the plurality of cores and is pre-fetched prior to execution of the first layer group.

13 . The method according to claim 1 , wherein the hardware comprises a plurality of cores and input data for the first layer group is subdivided into a plurality of blocks, the portion of the input data comprises a first block for each of the plurality of cores and is pre-fetched during execution of a layer group preceding the first layer group.

14 . The method according to claim 12 , further comprising:

pre-fetching a second block of the input data for each of the plurality of cores for the first layer group in the tile group into a second buffer slot in on-chip memory, wherein the second block for each of the plurality of cores is prefetched prior to execution of the first layer group for the second block of the input data for each of the plurality of cores; and

subsequently releasing the second buffer slot after output data for the first layer group and the second blocks of the input data has been written to memory.

15 . The method according to claim 12 , further comprising: pre-fetching a second block of the input data for each of the plurality of cores for the first layer group in the tile group into a second buffer slot in on-chip memory, wherein the second block for each of the plurality of cores is prefetched during execution of a layer group in the tile group for the first blocks of the input data; and

subsequently releasing the second buffer slot after output data for the first layer group and the second blocks of the input data has been written to memory.

16 . The method according to claim 1 , wherein the hardware comprises a plurality of cores and input data for the first layer group is subdivided into a plurality of blocks, the portion of the input data comprises a second or subsequent block of the plurality of blocks for each of the plurality of cores and the portion of the input data is pre-fetched prior to execution of the first layer group with the portion of the input data.

17 . The method according to claim 1 , wherein the hardware comprises a plurality of cores and input data for the first layer group is subdivided into a plurality of blocks, the portion of the input data comprises a second or subsequent block of the plurality of blocks for each of the plurality of cores and the portion of the input data is pre-fetched during execution of a layer group in the tile group for a preceding block of the plurality of blocks.

18 . A neural network accelerator configured to implement a neural network in hardware, the neural network comprising a plurality of layers, wherein the layers are grouped into a plurality of layer groups, each layer group comprising one or more layers of the neural network that are processed in a single pass through the hardware and the layer groups are grouped into a plurality of tile groups, each tile group comprising a set of layer groups that are evaluated when executing the neural network, the neural network accelerator comprising:

on-chip memory;

hardware logic arranged to pre-fetch a portion of the input data for a first layer group in a tile group into a buffer slot in the on-chip memory; and

hardware logic arranged to subsequently release the buffer slot after output data for the first layer group has been written to memory.

19 . The neural network accelerator according to claim 18 , wherein the neural network accelerator is embodied in hardware on an integrated circuit.

20 . A non-transitory computer readable storage medium having stored thereon computer readable code that when executed by a processor, causes the processor to perform a method for implementing a neural network in hardware, the neural network comprising a plurality of layers, wherein the layers are grouped into a plurality of layer groups, each layer group comprising one or more layers of the neural network that are processed in a single pass through the hardware and the layer groups are grouped into a plurality of tile groups, each tile group comprising a set of layer groups that are evaluated when executing the neural network, the computer readable code causing the processor to:

pre-fetch a portion of the input data for a first layer group in a tile group into a buffer slot in on-chip memory; and

subsequently release the buffer slot after output data for the first layer group has been written to memory.

Assignments (1)
SECURITY INTEREST Recorded Jul 31, 2024
From: IMAGINATION TECHNOLOGIES LIMITED
To: FORTRESS INVESTMENT GROUP (UK) LTD
Reel/Frame 068221/0001 →