IP Library Patent Application 15242625
Patent Application
App. No. 15/242,625

DEVICE AND METHOD FOR IMPLEMENTING A SPARSE NEURAL NETWORK

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.
15/242,625
Abstract

The present invention proposes a highly parallel solution for implementing ANN by sharing both weights matrix of ANN and input activation vectors. It significantly reduces the memory access operations, the on-chip buffers. In addition, the present invention considers how to achieve a load balance among a plurality of on-chip processing units being operated in parallel. It also considers a balance between the I/O bandwidth and calculation capabilities of the processing units.

Claims (49)

1 . A device for implementing an artificial neural network, comprising:

an receiving unit for receiving a plurality of input vectors a 0 , a 1 , . . . ;

a sparse matrix reading unit, for reading a sparse weight matrix W of said neural network, said matrix W represents weights of a layer of said neural network;

a plurality of processing elements PE xy , wherein x=0,1, . . . M-1, y=0,1, . . . N-1, such that said plurality of PE are divided into M groups of PE, and each group has N PE, x represents the x th group of PE, y represents the y th PE of the group PE,

a control unit being configured to

input a plurality of input vectors a i to said M groups of PE,

input a fraction W p of said matrix W to the j th PE of each group of PE, wherein j=0,1, . . . N-1,

each of said PEs perform calculations on the received input vector and the received fraction W p of the matrix W,

an outputting unit for outputting the sum of said calculation results to output a plurality of output vectors b 0 , b 1 , . . . .

2 . The device of claim 1 , said control unit is configured to input M input vectors a i to said M groups of PE,

wherein i is chosen as follows: i (MOD M)=0,1, . . . M-1.

3 . The device of claim 1 , said control unit is configured to input a fraction W p of said matrix W to the j th PE of each group of PE, wherein j=0,1, . . . N-1,

wherein W p is chosen from p th rows of W in the following manner: p (MOD N)=j, wherein p=0,1, . . . P-1, j=0,1, . . . N-1, said matrix W is of the size P*Q.

4 . The device of claim 1 , wherein the matrix W is compressed with CCS (compressed column storage) or CRS (compressed row storage) format.

5 . The device of claim 1 , said matrix W is encoded with an index and codebook.

6 . The device of claim 4 , said sparse matrix reading unit further comprises:

a pointer reading unit for reading address information in order to access non-zero weights of said matrix W.

7 . The device of claim 5 , said sparse matrix reading unit further comprises:

a decoding unit for decoding the encoded matrix W so as to obtain non-zero weights of said matrix W.

8 . The device of claim 1 , further comprising:

a leading zero detecting unit for detecting non-zero values in input vectors and output said non-zero values to the receiving unit.

9 . The device of claim 1 , wherein said receiving unit further comprising:

a plurality of FIFO (first in first out) units, each of which corresponding to a group of PE.

10 . The device of claim 1 , said output unit further comprising:

a first buffer and a second buffer, which are used to receive and output calculation results of said PE in an alternative manner, so that one of the buffers receives the present calculation result while the other of the buffers outputs the previous calculation result.

11 . A method for implementing an artificial neural network, comprising:

receiving a plurality of input vectors a 0 , a 1 , . . . ;

reading a sparse weight matrix W of said neural network, said matrix W represents weights of a layer of said neural network;

inputting said input vectors and matrix W to a plurality of processing elements PE xy , wherein x=0,1, . . . M-1, y=0,1, . . . N-1, such that said plurality of PE are divided into M groups of PE, and each group has N PE, x represents the x th group of PE, y represents the y th PE of the group PE, said inputting step comprising

inputting a plurality of input vectors a i to said M groups of PE,

inputting a fraction W p of said matrix W to the j th PE of each group of PE, wherein j=0,1, . . . N-1,

performing calculations on the received input vector and the received fraction W p of the matrix W by each of said PEs,

outputting the sum of said calculation results to output a plurality of output vectors b 0 , b 1 , . . . .

12 . The method of claim 11 , the step of inputting M input vectors a i to said M groups of PE comprising:

choosing i as follows: i (MOD M)=0,1, . . . M-1.

13 . The method of claim 11 , the step of inputting a fraction W p of said matrix W to the j th PE of each group of PE, wherein j=0,1, . . . N-1, further comprising:

choosing p th rows of W as W p in the following manner: p (MOD N)=j, wherein p =0,1, . . . P-1, j=0,1, . . . N-1, said matrix W is of the size P*Q.

14 . The method of claim 11 , further comprising: compressing the matrix W with CCS (compressed column storage) or CRS (compressed row storage) format.

15 . The method of claim 11 , further comprising: encoding said matrix W with an index and codebook.

16 . The method of claim 14 , said sparse matrix reading step further comprising:

a pointer reading step of reading address information in order to access non-zero weights of said matrix W.

17 . The method of claim 15 , said sparse matrix reading step further comprising:

a decoding step for decoding the encoded matrix W so as to obtain non-zero weights of said matrix W.

18 . The method of claim 11 , further comprising:

a leading zero detecting step for detecting non-zero values in input vectors and outputting said non-zero values to the receiving step.

19 . The method of claim 11 , wherein said step of inputting input vectors further comprising:

using a plurality of FIFO (first in first out) units to input a plurality of input vectors to said groups of PE.

20 . The method of claim 11 , said outputting step further comprising:

using a first buffer and a second buffer to receive and output calculation results of said PE in an alternative manner, so that one of the buffers receives the present calculation result while the other of the buffers outputs the previous calculation result.

Assignments (5)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Sep 16, 2019
From: BEIJING DEEPHI INTELLIGENT TECHNOLOGY CO., LTD.
To: XILINX, INC.
Reel/Frame 050377/0436 →
CORRECTIVE ASSIGNMENT TO CORRECT THE ASSIGNEE'S NAME PREVIOUSLY RECORDED AT REEL: 039501 FRAME: 0653. ASSIGNOR(S) HEREBY CONFIRMS THE ASSIGNMENT. Recorded Mar 8, 2018
From: XIE, DONGLIANG; KANG, JUNLONG; HAN, SONG
To: BEIJING DEEPHI TECHNOLOGY CO., LTD.
Reel/Frame 045528/0401 →
CORRECTIVE ASSIGNMENT TO CORRECT THE ASSIGNOR AND ASSIGNEE'S NAME PREVIOUSLY RECORDED AT REEL: 040886 FRAME: 0520. ASSIGNOR(S) HEREBY CONFIRMS THE ASSIGNMENT. Recorded Mar 8, 2018
From: BEIJING DEEPHI TECHNOLOGY CO., LTD.
To: BEIJING DEEPHI INTELLIGENT TECHNOLOGY CO., LTD.
Reel/Frame 045528/0411 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jan 9, 2017
From: DEEPHI TECHNOLOGY CO., LTD.
To: BEIJING DEEPHI INTELLIGENCE TECHNOLOGY CO., LTD.
Reel/Frame 040886/0520 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Aug 22, 2016
From: XIE, DONGLIANG; KANG, JUNLONG; HAN, SONG
To: DEEPHI TECHNOLOGY CO., LTD.
Reel/Frame 039501/0653 →