IP Library Granted Patent US 10,467,795
Granted Patent B2
US 10,467,795 · App. 15/482,724 · Granted Nov 5, 2019

Sub-graph in frequency domain and dynamic selection of convolution implementation on a GPU

Inventors: Uzi Sarel (Zichron-Yaakov, IL); Ehud Cohen (Kiryat Motskin, IL); Tomer Schwartz (Even Yehuda, IL); Amitai Armon (Tel-Aviv, IL); Yahav Shadmiy (Ramat Gan, IL); Itamar Ben-Ari (Givat HaShlosha, IL); Amit Bleiweiss (Yad Binyamin, IL); Lev Faivishevsky (Kfar Saba, IL); Tomer Bar-On (Petah Tikva, IL); Yaniv Fais (Tel Aviv, IL); Jacob Subag (Kiryat Haim, IL); Michael Behar (Zichron Yaakov, IL); Guy Jacob (Netanya, IL); Gal Leibovich (Kiryat Yam, IL); Jeremie Dreyfuss (Tel-Aviv, IL)
Assignee: INTEL CORPORATION
G06T15/005G06N3/02G06N3/04G06N3/0454G06N3/063G06N3/08
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 10,467,795
App. No.
15/482,724
Granted
Nov 5, 2019
Kind
B2
Abstract

In an example, an apparatus comprises a plurality of execution units; and logic, at least partially including hardware logic, to determine a sub-graph of a network that can be executed in a frequency domain and apply computations in the sub-graph in the frequency domain. Other embodiments are also disclosed and claimed.

Claims (74)

1. A general purpose graphic processor comprising:

a plurality of execution units comprising at least a first type of execution unit having a first set of execution resources and a second type of execution unit having a second set of execution resources, different from the first set of execution resources; and

a processing circuitry to:

determine a complete sub-graph of a convolutional neural network that can be executed in a frequency domain;

generate a predicted level of activation sparsity for one or more layers of the convolutional neural network; and

apply convolutional computations in the sub-graph in the frequency domain;

wherein the convolutional computations are performed at variable levels of integer precisions based at least in part on the predicted level of activation sparsity of a layer in the convolutional neural network using the first set of execution resources, while internal computations are performed in a baseline precision level of 8-bits or 16-bits using the second set of execution resources.

2. The general purpose graphic processor of claim 1 , the processing circuitry to:

dynamically select a convolutional implementation based at least in part on running a short comparison for each convolution in the network; and

expose one or more embedded cast operations in a load/store instruction to support loading data for the convolutional computations in a variable integer precision.

3. The general purpose graphic processor of claim 2 , wherein:

the selection is implemented at run time.

4. The general purpose graphic processor of claim 2 , the processing circuitry to:

divide a neural network into a plurality of tiles; and

apply convolutional computations to the plurality of tiles.

5. The general purpose graphic processor of claim 4 , the processor to:

merge the results of the convolutional computations.

6. The general purpose graphics processor of claim 1 , the processing circuitry to update the predicted level of activation sparsity for the one or more layers of the convolutional neural network on-line when the convolution neural network is operated in inference mode.

7. An electronic device, comprising:

a general purpose graphics processor comprising:

a plurality of execution units comprising at least a first type of execution unit having a first set of execution resources and a second type of execution unit having a second set of execution resources, different from the first set of execution resources; and

a processing circuitry to:

determine a complete sub-graph of a convolutional neural network that can be executed in a frequency domain;

generate a predicted level of activation sparsity for one or more layers of the convolutional neural network; and

apply convolutional computations in the sub-graph in the frequency domain;

wherein the convolutional computations are performed at variable levels of integer precisions based at least in part on the predicted level of activation sparsity of a layer in the convolutional neural network using the first set of execution resources, while internal computations are performed in a baseline precision level of 8-bits or 16-bits using the second set of execution resources; and

a memory communicatively coupled to the general purpose graphics processor.

8. The electronic device of claim 7 , the processor to:

dynamically select a convolutional implementation based at least in part on running a short comparison for each convolution in the network; and

expose one or more embedded cast operations in a load/store instruction to support loading data for the convolutional computations in a variable integer precision.

9. The electronic device of claim 8 , wherein:

the selection is implemented at run time.

10. The electronic device of claim 8 , the processor to:

divide a neural network into a plurality of tiles; and

apply convolutional computations to the plurality of tiles.

11. The electronic device of claim 10 , the processor to:

merge the results of the convolutional computations.

12. The electronic device of claim 7 , the processing circuitry to update the predicted level of activation sparsity for the one or more layers of the convolutional neural network on-line when the convolution neural network is operated in inference mode.

13. One or more non-transitory computer-readable medium comprising one or more instructions that when executed on at least one processor configure the at least one processor to perform one or more operations to:

receive, in a general purpose graphics processor comprising a plurality of execution units comprising at least a first type of execution unit having a first set of execution resources and a second type of execution unit having a second set of execution resources, different from the first set of execution resources, data representing a convolutional neural network;

determine a complete sub-graph of a convolutional neural network that can be executed in a frequency domain;

generate a predicted level of activation sparsity for one or more layers of the convolutional neural network; and

apply convolutional computations in the sub-graph in the frequency domain;

wherein the convolutional computations are performed at variable levels of integer precisions based at least in part on the predicted level of activation sparsity of a layer in the convolutional neural network using the first set of execution resources, while internal computations are performed in a baseline precision level of 8-bits or 16-bits using the second set of execution resources.

14. The one or more non-transitory computer-readable medium of claim 13 , comprising one or more instructions that when executed on at least one processor configure the at least one processor to perform one or more operations to:

update the predicted level of activation sparsity for the one or more layers of the convolutional neural network on-line when the convolution neural network is operated in inference mode.

15. The one or more non-transitory computer-readable medium of claim 13 , comprising one or more instructions that when executed on at least one processor configure the at least one processor to perform one or more operations to:

dynamically select a convolutional implementation based at least in part on running a short comparison for each convolution in the network; and

expose one or more embedded cast operations in a load/store instruction to support loading data for the convolutional computations in a variable integer precision.

16. The one or more non-transitory computer-readable medium of claim 15 , wherein:

the selection is implemented at run time.

17. The one or more non-transitory computer-readable medium of claim 15 , comprising one or more instructions that when executed on at least one processor configure the at least one processor to perform one or more operations to:

divide a neural network into a plurality of tiles; and

apply convolutional computations to the plurality of tiles.

18. The one or more non-transitory computer-readable medium of claim 17 , comprising one or more instructions that when executed on at least one processor configure the at least one processor to perform one or more operations to:

merge the results of the convolutional computations.

19. A computer-implemented method comprising:

receiving, in a general purpose graphics processor comprising a plurality of execution units comprising at least a first type of execution unit having a first set of execution resources and a second type of execution unit having a second set of execution resources, different from the first set of execution resources, data representing a convolutional neural network;

determining a complete sub-graph of a convolutional neural network that can be executed in a frequency domain;

generating a predicted level of activation sparsity for one or more layers of the convolutional neural network; and

applying convolutional computations in the sub-graph in the frequency domain;

wherein the convolutional computations are performed at variable levels of integer precisions based at least in part on the predicted level of activation sparsity of a layer in the convolutional neural network using the first set of execution resources, while internal computations are performed in a baseline precision level of 8-bits or 16-bits using the second set of execution resources.

20. The computer-implemented method of claim 19 , comprising:

dynamically selecting a convolutional implementation based at least in part on running a short comparison for each convolution in the network; and

exposing one or more embedded cast operations in a load/store instruction to support loading data for the convolutional computations in a variable integer precision.

21. The computer-implemented method of claim 20 , wherein:

the selecting is implemented at run time.

22. The computer-implemented method of claim 20 , comprising:

dividing a neural network into a plurality of tiles; and

applying convolutional computations to the plurality of tiles.

23. The computer-implemented method of claim 22 , comprising:

merging the results of the convolutional computations.

24. The computer-implemented method of claim 19 , comprising:

updating the predicted level of activation sparsity for the one or more layers of the convolutional neural network on-line when the convolution neural network is operated in inference mode.

Assignments (1)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded May 31, 2017
From: SAREL, UZI; COHEN, EHUD; SCHWARTZ, TOMER; ARMON, AMITAI; SHADMIY, YAHAV; BEN-ARI, ITAMAR; BLEIWEISS, AMIT; FAIVISHEVSKY, LEV; BAR-ON, TOMER; FAIS, YANIV; SUBAG, JACOB; BEHAR, MICHAEL; JACOB, GUY; LEIBOVICH, GAL; DREYFUSS, JEREMIE
To: INTEL CORPORATION
Reel/Frame 042542/0556 →
Continuity (1)
Related Publication 20180293777A1 · Oct 11, 2018