IP Library › Granted Patent US 12,190,225
Granted Patent B2
US 12,190,225 · App. 16/779,557 · Granted Jan 7, 2025

Composable neural network kernels

Inventors: Chao Liu (Austin, TX); Daniel Isamu Lowell (Austin, TX); Wen Heng Chung (Austin, TX); Jing Zhang (Austin, TX)
Assignee: Advanced Micro Devices, Inc.
G06N3/063G06F8/443G06F9/30036G06F9/30038G06F9/3887G06F9/3888G06F9/38885G06N3/04
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 12,190,225
App. No.
16/779,557
Granted
Jan 7, 2025
Kind
B2
Abstract

A technique for manipulating a generic tensor is provided. The technique includes receiving a first request to perform a first operation on a generic tensor descriptor associated with the generic tensor, responsive to the first request, performing the first operation on the generic tensor descriptor, receiving a second request to perform a second operation on generic tensor raw data associated with the generic tensor, and responsive to the second request, performing the second operation on the generic tensor raw data.

Claims (57)

1. A method for manipulating a generic tensor, the method comprising:

receiving a first request to perform a first operation on a generic tensor descriptor associated with the generic tensor, wherein the generic tensor descriptor indicates how to translate one or more index values into one or more memory addresses for generic tensor raw data associated with the generic tensor, wherein the generic tensor descriptor includes one or more of a tensor type for the generic tensor, a number of dimensions of the generic tensor, lengths of each dimension of the generic tensor, and a base address for the generic tensor raw data;

performing the first operation on the generic tensor descriptor, the first operation comprising an operation to modify the generic tensor descriptor by performing one or more of limiting indices to use, modifying dimension order, or modifying dimension number, and the first operation does not include modifying any of the generic tensor raw data;

receiving a second request to perform a second operation on generic tensor raw data associated with the generic tensor; and

performing the second operation on the generic tensor raw data.

2. The method of claim 1 , wherein the first operation comprises one of:

a slice, a strided slice, a reorder, a fold, a merge, an embed, and a move slicing window operation.

3. The method of claim 1 , wherein the second operation comprises one of:

a slice, a reorder, a copy, a general matrix multiply or batched general matrix multiply, a reduction, and an algorithm-specific transformation.

4. The method of claim 1 , wherein the first operation generates a modified generic tensor descriptor based on the generic tensor descriptor and the first operation without modifying the generic tensor raw data.

5. The method of claim 1 , wherein the generic tensor raw data comprises:

data elements of the generic tensor.

6. The method of claim 1 , wherein:

the first request, first operation, second request, and second operation are specified by instructions of a program.

7. The method of claim 1 , wherein:

the first request is specified by program source;

the first operation is performed by a compiler configured to compile the program source to generate a compiled program;

the second request is specified by the compiled program; and

the second operation is performed by the compiled program.

8. The method of claim 1 , wherein:

the first request and the second request are specified by a program; and

at least one of the first operation and the second operation are performed by a specialized hardware circuit configured to perform at least one operation on generic tensor descriptors or on generic tensor raw data.

9. The method of claim 1 , wherein the one or more index values are translated into one or more memory addresses for the generic tensor raw data where the translating includes a reduction of dimensionality for a merged tensor or an increase of dimensionality for an embedded tensor.

10. The method of claim 1 , wherein the generic tensor descriptor further indicates any one or a combination of the following for the generic tensor: a type of generic tensor, a number of dimensions of the generic tensor, lengths for each dimension of the generic tensor, or a base address for the generic tensor raw data.

11. A system for manipulating a generic tensor, the system comprising:

a memory storing a generic tensor descriptor, wherein the generic tensor descriptor indicates how to translate one or more index values into one or more memory addresses for generic tensor raw data associated with the generic tensor, wherein the generic tensor descriptor includes one or more of a tensor type for the generic tensor, a number of dimensions of the generic tensor, lengths of each dimension of the generic tensor, and a base address for the generic tensor raw data; and

a processor, configured to:

receive a first request to perform a first operation on the generic tensor descriptor associated with the generic tensor;

perform the first operation on the generic tensor descriptor, the first operation comprising an operation to modify the generic tensor descriptor by performing one or more of limiting indices to use, modifying dimension order, or modifying dimension number, and the first operation does not include modifying any of the generic tensor raw data;

receive a second request to perform a second operation on generic tensor raw data associated with the generic tensor; and

performing the second operation on the generic tensor raw data.

12. The system of claim 11 , wherein the first operation comprises one of:

a slice, a strided slice, a reorder, a fold, a merge, an embed, and a move slicing window operation.

13. The system of claim 11 , wherein the second operation comprises one of:

a slice, a reorder, a copy, a general matrix multiply or batched general matrix multiply, a reduction, and an algorithm-specific transformation.

14. The system of claim 11 , wherein the first operation generates a modified generic tensor descriptor based on the generic tensor descriptor and the first operation without modifying the generic tensor raw data.

15. The system of claim 11 , wherein the generic tensor raw data comprises:

data elements of the generic tensor.

16. The system of claim 11 , wherein:

the first request, first operation, second request, and second operation are specified by instructions of a program.

17. The system of claim 11 , wherein:

the first request is specified by program source;

the first operation is performed by a compiler configured to compile the program source to generate a compiled program;

the second request is specified by the compiled program; and

the second operation is performed by the compiled program.

18. The system of claim 11 , wherein:

the first request and the second request are specified by a program; and

at least one of the first operation and the second operation are performed by a specialized hardware circuit configured to perform at least one operation on generic tensor descriptors or on generic tensor raw data.

19. The system of claim 11 , wherein the one or more index values are translated into one or more memory addresses for the generic tensor raw data where the translating includes a reduction of dimensionality for a merged tensor or an increase of dimensionality for an embedded tensor.

20. The system of claim 11 , wherein the generic tensor descriptor further indicates any one or a combination of the following for the generic tensor: a type of generic tensor, a number of dimensions of the generic tensor, lengths for each dimension of the generic tensor, or a base address for the generic tensor raw data.

21. A non-transitory computer-readable medium storing instructions that, when executed by a processor, cause the processor to manipulate a generic tensor, by:

receiving a first request to perform a first operation on a generic tensor descriptor associated with the generic tensor, wherein the generic tensor descriptor indicates how to translate one or more index values into one or more memory addresses for generic tensor raw data associated with the generic tensor, wherein the generic tensor descriptor includes one or more of a tensor type for the generic tensor, a number of dimensions of the generic tensor, lengths of each dimension of the generic tensor, and a base address for the generic tensor raw data;

performing the first operation on the generic tensor descriptor, the first operation comprising an operation to modify the generic tensor descriptor by performing one or more of limiting indices to use, modifying dimension order, or modifying dimension number, and the first operation does not include modifying any of the generic tensor raw data;

receiving a second request to perform a second operation on generic tensor raw data associated with the generic tensor; and

performing the second operation on the generic tensor raw data.

22. The non-transitory computer-readable medium of claim 21 , wherein the first operation comprises one of:

a slice, a strided slice, a reorder, a fold, a merge, an embed, and a move slicing window operation.

Assignments (1)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Feb 24, 2020
From: LIU, CHAO; LOWELL, DANIEL ISAMU; CHUNG, WEN HENG; ZHANG, JING
To: ADVANCED MICRO DEVICES, INC.
Reel/Frame 051898/0371 →
Continuity (4)
Provisional Application 62927603 · Oct 29, 2019
Provisional Application 62925168 · Oct 23, 2019
Provisional Application 62867766 · Jun 27, 2019
Related Publication 20200410330A1 · Dec 31, 2020
References Cited (15)
US 6367069B1 · Corbett · 2002 [cited by applicant]
US 9753762B1 · Emelyanov · 2017 [cited by applicant]
US 20150370544A1 · Santry et al. · 2015 [cited by applicant]
US 20160232175A1 · Zhou et al. · 2016 [cited by applicant]
US 20160323199A1 · Bryant et al. · 2016 [cited by applicant]
US 20180322386A1 · Sridharan et al. · 2018 [cited by examiner]
US 20190042940A1 · Sakairi et al. · 2019 [cited by applicant]
US 20190130270A1 · Nicol et al. · 2019 [cited by examiner]
CN 109886399A · 2019 [cited by applicant]
WO 2020200244A1 · 2020 [cited by applicant]
“A Video Tensor Self-descriptor Based on Block Matching”, Helena De Almeida Maia et al.; International Conference on Computational Science and Its Applications, Jun. 2014; retrieved on Sep. 10, 2020 from <URL: https://d… [cited by applicant]
“Driving with Data: Modeling and Forecasting Vehicle Fleet Maintenance in Detroit”, Josh Gardner et al.; arXiv:1710.06839v1; Oct. 18, 2017; retrieved on Sep. 10, 2020 from <URL: https://arxiv.org.1710.06839V1.pdf> secti… [cited by applicant]
“A tensor montion descriptor based on histograms of gradients and optical flow”, V. F. Mota et al.; Pattern Recognition Letters, vol. 39, Issue 1, Apr. 2014; retrieved on Sep. 10, 2020 from <URL: https://doi.org/10/1016… [cited by applicant]
“Experience Deep Learning with Python—Caffe, Theano, Chainer, TensorFlow—” ASAKAWA Shinichi; First Edition, Corona Publishing Co., Ltd., Publication date Oct. 25, 2016, pp. 33, 37, Independent Book 2018-00275-001. [cited by applicant]
“Getting Started with TensorFlow 3 Object Detection”, ARIYAMA Keiji; First Edition, Impress R&D, Publication date Jan. 26, 2018, p. 13, Independent Book 2020-01302-001. [cited by applicant]
Cited By (3)
US 12,645,455 US 12,657,024 US 12,669,996