IP Library Granted Patent US 12,373,515
Granted Patent B2
US 12,373,515 · App. 18/633,703 · Granted Jul 29, 2025

Computational primitives using a matrix multiplication accelerator

Inventors: Arthur John Redfern (Plano, TX); Timothy David Anderson (University Park, TX); Kai Chirca (Dallas, TX); Chenchi Luo (Plano, TX); Zhenhua Yu (Santa Clara, CA)
Assignee: TEXAS INSTRUMENTS INCORPORATED
G06F17/16G06F17/141G06N3/045G06N3/063
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,373,515
App. No.
18/633,703
Granted
Jul 29, 2025
Kind
B2
Abstract

A method for performing a fundamental computational primitive in a device is provided, where the device includes a processor and a matrix multiplication accelerator (MMA). The method includes configuring a streaming engine in the device to stream data for the fundamental computational primitive from memory, configuring the MMA to format the data, and executing the fundamental computational primitive by the device.

Claims (68)

1. A device comprising:

a memory;

a processor coupled to the memory; and

a matrix multiplication accelerator (MMA) coupled to the processor and including a multiplier matrix buffer and a multiplicand matrix buffer,

wherein the device is operable to:

receive a data vector including a filter of a length greater than a width of the multiplicand matrix buffer;

decompose the filter into a plurality of smaller filters, wherein sizes of the smaller filters are less than the width of the multiplicand matrix buffer;

format the data vector based on a computational primitive; and

configure, based on the computational primitive, the MMA to format the data vector.

2. The device of claim 1 , wherein the processor is configurable to decompose the filter into the plurality of smaller filters.

3. The device of claim 1 ,

wherein the data vector comprises a row of a matrix, and

wherein the MMA is configurable to execute the computational primitive by at least copying the data vector to a column in the multiplicand matrix buffer.

4. The device of claim 1 , wherein the device is operable to configure the MMA to offset load data in the multiplicand matrix buffer.

5. The device of claim 1 ,

wherein the MMA is configurable to execute the computational primitive to generate an output, and

wherein the processor is configurable to add zero padding to the output of the MMA.

6. The device of claim 1 ,

wherein the MMA is configurable to execute the computational primitive to generate an output, and

wherein the processor is configurable to perform seam removal on the output of the MMA.

7. The device of claim 1 ,

wherein the MMA is configurable to execute the computational primitive to generate an output, and

wherein the processor is configurable to perform column subsampling on the output of the MMA according to a specified stride.

8. The device of claim 1 , further comprising a streaming engine configurable to tile data of a plurality of feature maps into a filtering matrix.

9. The device of claim 8 ,

wherein the MMA is configurable to execute the computational primitive to generate an output, and

wherein a size of a tile of data is selected such that no seam is present in the output of the MMA.

10. The device of claim 8 ,

wherein the MMA is configurable to execute the computational primitive to generate an output, and

wherein a size of a tile of data is selected such that a seam is always in a same location in the output of the MMA.

11. The device of claim 1 ,

wherein the data vector includes complex numbers,

wherein a real part and an imaginary part of the complex numbers are stored interleaved in the memory, and

wherein the processor is configurable to split each complex number into the real part and the imaginary part for loading into the MMA.

12. The device of claim 1 ,

wherein the computational primitive is a fast Fourier transform (FFT), and

wherein the MMA is configurable to execute the computational primitive by at least:

loading a discrete Fourier transform (DFT) matrix in the multiplier matrix buffer;

loading a data matrix in the multiplicand matrix buffer to perform the FFT on columns of the data matrix; and

loading the data matrix in the multiplier matrix buffer and the DFT matrix into the multiplicand matrix buffer to perform the FFT on rows of the data matrix.

13. The device of claim 1 , wherein the sizes of the smaller filters are selected as a tradeoff between maximizing a throughput of the MMA and minimizing a total number of smaller filters.

14. A method for performing a computational primitive in a device comprising a processor and a matrix multiplication accelerator (MMA), the method comprising:

receiving a data vector including a filter of a length greater than a width of a multiplicand matrix buffer in the MMA;

decomposing the filter into a plurality of smaller filters, wherein sizes of the smaller filters are less than the width of the multiplicand matrix buffer;

formatting the data vector based on the computational primitive; and

configuring, based on the computational primitive, the MMA to format the data vector.

15. The method of claim 14 ,

wherein the data vector comprises a row of a matrix, and

wherein the method further comprises executing the computational primitive by at least copying the data vector to a column in the multiplicand matrix buffer.

16. The method of claim 14 , further comprising:

executing the computational primitive to generate an output; and

adding zero padding to the output of the MMA.

17. The method of claim 14 , further comprising:

executing the computational primitive to generate an output; and

performing seam removal on the output of the MMA.

18. The method of claim 14 , further comprising:

executing the computational primitive to generate an output; and

performing column subsampling on the output of the MMA according to a specified stride.

19. The method of claim 14 , further comprising:

executing the computational primitive to generate an output;

tiling data of a plurality of feature maps into a filtering matrix; and

selecting a size of a tile of data such that no seam is present in the output of the MMA.

20. The method of claim 14 ,

wherein the computational primitive is a fast Fourier transform (FFT), and

wherein the method further comprises executing the computational primitive by at least:

loading a discrete Fourier transform (DFT) matrix in the multiplier matrix buffer;

loading a data matrix in the multiplicand matrix buffer to perform the FFT on columns of the data matrix; and

loading the data matrix in the multiplier matrix buffer and the DFT matrix into the multiplicand matrix buffer to perform the FFT on rows of the data matrix.

Continuity (4)
Continuation 17367389 · Jul 4, 2021
Continuation 15907356 · Feb 28, 2018
Provisional Application 62465620 · Mar 1, 2017
Related Publication 20240265062A1 · Aug 8, 2024
References Cited (49)
US 4897717A · Hamilton et al. · 1990 [cited by applicant]
US 5099447A · Myszewski · 1992 [cited by applicant]
US 5745793A · Atsatt et al. · 1998 [cited by applicant]
US 5870568A · Culley et al. · 1999 [cited by applicant]
US 5982375A · Nelson et al. · 1999 [cited by applicant]
US 8301749B1 · Finklestein et al. · 2012 [cited by applicant]
US 9606803B2 · Anderson et al. · 2017 [cited by applicant]
US 9645974B1 · Patil et al. · 2017 [cited by applicant]
US 10114613B2 · Bekas et al. · 2018 [cited by applicant]
US 20020191692A1 · Fallon et al. · 2002 [cited by applicant]
US 20040136316A1 · Kwak et al. · 2004 [cited by applicant]
US 20060095721A1 · Biles · 2006 [cited by examiner]
US 20090292758A1 · Brokenshire et al. · 2009 [cited by applicant]
US 20090300091A1 · Brokenshire et al. · 2009 [cited by applicant]
US 20110153707A1 · Ginzburg et al. · 2011 [cited by applicant]
US 20120011348A1 · Eichenberger et al. · 2012 [cited by applicant]
US 20120072917A1 · Boldyrev et al. · 2012 [cited by applicant]
US 20120140814A1 · Rojal et al. · 2012 [cited by applicant]
US 20120216096A1 · Seo et al. · 2012 [cited by applicant]
US 20120251013A1 · Porikli · 2012 [cited by applicant]
US 20120268298A1 · Oh · 2012 [cited by applicant]
US 20130262548A1 · Ge et al. · 2013 [cited by applicant]
US 20140167987A1 · Pell et al. · 2014 [cited by applicant]
US 20140365548A1 · Mortensen · 2014 [cited by applicant]
US 20150019840A1 · Anderson · 2015 [cited by applicant]
US 20160373158A1 · Ardalan · 2016 [cited by applicant]
US 20170139710A1 · Zbiciak · 2017 [cited by applicant]
US 20170153890A1 · Anderson et al. · 2017 [cited by applicant]
US 20170153959A1 · Zbiciak · 2017 [cited by applicant]
US 20170168898A1 · Zbiciak et al. · 2017 [cited by applicant]
US 20170249150A1 · Zbiciak et al. · 2017 [cited by applicant]
US 20170308381A1 · Zbiciak · 2017 [cited by applicant]
US 20190266218A1 · Scott et al. · 2019 [cited by applicant]
US 20200051551A1 · Sainath et al. · 2020 [cited by applicant]
CN 101933005 · 2010 [cited by applicant]
CN 103714044 · 2014 [cited by applicant]
CN 104899182 · 2015 [cited by applicant]
CN 104915322 · 2015 [cited by applicant]
CN 106228238 · 2016 [cited by applicant]
JP 2481338 · 1997 [cited by applicant]
Utku Aydoinat, et al.“An Open CL(TM) Deep Learning Accelerator on Arria 10”, arxiv.org,Cornell University Library, 201 Olin Library, Cornell University Ithaca, NY 14853, Jan. 13, 2017, XP080741254. [cited by applicant]
Hussain Tassadaq, et al.“PPMC: A Program Pattern Based Mwmory Controller”, Mar. 19, 2012, International Conference on Financial Cryptography and Data Security; [Lecture Notes in Computer Science; Lect. Noptes Computer],… [cited by applicant]
Chen Zhang et al.“Optimizing FPGA-based Accelerator Design for Deep Convolutional Neural Networks”, Proceedings of the 2015 ACM/SIGDA International Symposium of Field-Programmable Gate Arrays, FPGA, 15, Feb. 22, 2015, p… [cited by applicant]
PCT Search Report and Written Opinion (PCT/US 2018/020334). [cited by applicant]
Chinese Office Action and Search Report for Application No. 2018800135448 dated Mar. 2, 2023. [cited by applicant]
Chinese Office Action and Search Report for Application No. 2018800136987 dated Dec. 1, 2022. [cited by applicant]
National Intellectual Property Administration, PRC Search Report, Chinese Patent Application No. 2018800144945, dated Mar. 10, 2023, 2 pages. [cited by applicant]
Qiao et al., FPGA-Accelerated Deep Convolutional Neural Networks for High Throughput and Energy Efficiency, dated May 16, 2016, 20 pages. [cited by applicant]
Office Action for European Application No. 18760733.8, Oct. 21, 2021, 6 pages. [cited by applicant]