JP2007317179A - 帯域幅要件が軽減された行列乗算 - Google Patents
帯域幅要件が軽減された行列乗算 Download PDFInfo
- Publication number
- JP2007317179A JP2007317179A JP2007123710A JP2007123710A JP2007317179A JP 2007317179 A JP2007317179 A JP 2007317179A JP 2007123710 A JP2007123710 A JP 2007123710A JP 2007123710 A JP2007123710 A JP 2007123710A JP 2007317179 A JP2007317179 A JP 2007317179A
- Authority
- JP
- Japan
- Prior art keywords
- matrix
- operand
- broadcast
- operations
- column
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
- 239000011159 matrix material Substances 0.000 title abstract description 122
- 238000000034 method Methods 0.000 claims description 44
- 230000005055 memory storage Effects 0.000 description 13
- 238000010586 diagram Methods 0.000 description 4
- 230000006870 function Effects 0.000 description 2
- 101100289792 Squirrel monkey polyomavirus large T gene Proteins 0.000 description 1
- 239000002131 composite material Substances 0.000 description 1
- 238000007796 conventional method Methods 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 238000000638 solvent extraction Methods 0.000 description 1
- 238000004148 unit process Methods 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F17/00—Digital computing or data processing equipment or methods, specially adapted for specific functions
- G06F17/10—Complex mathematical operations
- G06F17/16—Matrix or vector computation, e.g. matrix-matrix or matrix-vector multiplication, matrix factorization
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F15/00—Digital computers in general; Data processing equipment in general
- G06F15/76—Architectures of general purpose stored program computers
- G06F15/80—Architectures of general purpose stored program computers comprising an array of processing units with common control, e.g. single instruction multiple data processors
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline, look ahead
Abstract
【解決手段】第1の入力行列の行と第2の入力行列の列を読み出して積行列の列を生成するのではなく、第1の入力行列の列と第2の入力行列の単一の成分を読み出して積行列の部分内積の列を生成する。したがって、各積行列成分を生成するために読み出される入力行列成分の個数は、Nが積行列の列中の成分の個数であるとすると、2NからN+1に削減される。
【選択図】図1C
Description
[0001]本発明の実施の形態は、広く、マルチスレッド処理又はベクトル処理を使用する行列乗算の実行に関するものであり、より詳細には、メモリ帯域幅の削減に関するものである。
[0002]行列と行列の乗算は、高性能コンピューティング分野における多数の計算のための重要な基本要素である。行列と行列の乗算を実行するために使用される各積和演算は、メモリ内の二つのソースオペランドへのアクセスを必要とする。したがって、T個のスレッドを同時に実行し、各スレッドが積和演算を実行するマルチスレッド型プロセッサにおいては、2T個のメモリオペランドが演算の乗算部分のオペランドを供給するために必要とされる。同様に、Tレーンの単一命令多重データ(SIMD)ベクトルプロセッサ2TのようなT個のデータレーンを並列に実行するベクトルプロセッサでは、2T個のメモリオペランドがベクトル積和算毎に必要とされる。一般に、2T個の同時アクセス用のメモリ帯域幅を提供することは、Tが増加するにつれ難しくなり、従って、行列乗算は十分に大きなTに対してメモリ帯域幅制限付きになる。これによって、行列乗算に対する処理装置の全体的な計算性能が制限される。
<表1>
LDA,M[A1+offsetA] //行列AのT個の成分をロード
LDBB,M[A2+offsetB] //行列Bの一つの成分をロード及びブロードキャスト
FMADC,A,B,C //CのT個の成分につて、C=A*B+C
LD命令は、T個のスレッド又はT個のベクトルレーン用の、各スレッド又はレーンのメモリアドレスを指定するパラレルオペランドであるA1+offsetAを含んでおり、ここで、A1は行列タイル、行列、列等のベースアドレスであり、offsetAは特定の列又は列の特定の部分についてのオフセットである。offsetAは省略されることがある。実効アドレスは各スレッド又はレーンに伴って変化し、例えば、T台のアドレスレジスタA1は、スレッド又はレーン毎に一つずつあり、スレッド又はレーン毎に異なるアドレスを用いて初期化される。T個のアドレスA1+offsetAによって指定されたT個のメモリ記憶域に格納されたT個の成分は、各実行ユニットのレジスタAにロードされる。異なるメモリ記憶域が、スレッド又はレーンを処理する各実行ユニットによって読み出される。したがって、アドレスA1+offsetAは、各スレッド又はレーン用の異なるメモリ記憶域を指定するために、固有のスレッド又はレーン識別子に伴って変化する。例えば、各スレッド又はレーン内のアドレスレジスタA1は、スレッド又はレーン識別子に伴って変化する異なるアドレスを用いて初期化される。
Claims (12)
- 多重スレッド又はレーン用のためのブロードキャストオペランドを含む演算のセットを実行する方法であって、
前記演算のセットに含まれている前記ブロードキャストオペランドによって指定された第1の値を獲得するステップと、
前記第1の値を複数のプログラム命令実行ユニットへ供給するステップと、
前記演算のセットに含まれているパラレルオペランドによって指定される第2の値のセットを獲得するステップであって、該第2の値の各々が前記多重スレッド又はレーンのうちの一つに対応する、該ステップと、
前記第2の値のセットのうちの一つの第2の値を前記複数のプログラム命令実行ユニットのうちの各々に供給するステップと、
前記多重スレッド又はレーンの各々ついて前記演算のセットを実行するステップと、
を含む方法。 - 前記演算のセットに含まれているメモリオペランドが前記ブロードキャストオペランドであることを、前記演算のセットに対して指定されたフォーマットに基づいて判定するステップを更に含む、請求項1に記載の方法。
- 前記演算のセットに含まれているメモリオペランドが前記ブロードキャストオペランドであることを、前記メモリオペランドに対して指定されたアドレスに基づいて判定するステップを更に含む、請求項1に記載の方法。
- 前記演算のセットに含まれているソースオペランドが前記ブロードキャストオペランドであることを、前記ソースオペランドに対して指定されたレジスタに基づいて判定するステップを更に含む、請求項1に記載の方法。
- 前記第1の値及び前記第2の値が、固定小数点データフォーマットで表される、請求項1に記載の方法。
- 前記第1の値及び前記第2の値が、浮動小数点データフォーマットで表される、請求項1に記載の方法。
- 前記演算のセットが、積和演算を含む、請求項1に記載の方法。
- 前記演算のセットが、前記ブロードキャストオペランド、前記パラレルオペランド、及び、前記ブロードキャストオペランドに基づいて結果を生成するために使用される計算を含む単一のプログラム命令として表される、請求項1に記載の方法。
- 前記演算のセットが、前記ブロードキャストオペランドと前記パラレルオペランドとを含む第1のロードプログラム命令、及び、前記ブロードキャストオペランドに基づいて結果を生成するために使用される計算を指定する第2のプログラム命令として表される、請求項1に記載の方法。
- 前記演算のセットが、前記ブロードキャストオペランドを含む第1のロードプログラム命令、前記パラレルオペランドを含む第2のロードプログラム命令、及び、前記ブロードキャストオペランドに基づいて結果を生成するために使用される計算を指定する第3のプログラム命令として表される、請求項1に記載の方法。
- 前記ブロードキャストオペランドが、前記多重スレッドの各々について単一の値を有するアドレスを指定する、請求項1に記載の方法。
- 前記パラレルオペランドが、前記多重スレッドの各々について異なる値を有するアドレスを指定する、請求項1に記載の方法。
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US11/430,324 US20070271325A1 (en) | 2006-05-08 | 2006-05-08 | Matrix multiply with reduced bandwidth requirements |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2007317179A true JP2007317179A (ja) | 2007-12-06 |
Family
ID=38713207
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2007123710A Pending JP2007317179A (ja) | 2006-05-08 | 2007-05-08 | 帯域幅要件が軽減された行列乗算 |
Country Status (5)
Country | Link |
---|---|
US (1) | US20070271325A1 (ja) |
JP (1) | JP2007317179A (ja) |
KR (1) | KR100909510B1 (ja) |
CN (1) | CN100495326C (ja) |
TW (1) | TWI349226B (ja) |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2018206128A (ja) * | 2017-06-06 | 2018-12-27 | 富士通株式会社 | 演算処理装置、情報処理装置及び演算処理装置の制御方法 |
JP2020508512A (ja) * | 2017-02-23 | 2020-03-19 | エイアールエム リミテッド | データ処理装置における乗累算 |
JP2021064378A (ja) * | 2020-12-07 | 2021-04-22 | インテル・コーポレーション | ヘテロジニアスコンピューティングのためのシステム、方法及び装置 |
US11693691B2 (en) | 2016-12-31 | 2023-07-04 | Intel Corporation | Systems, methods, and apparatuses for heterogeneous computing |
Families Citing this family (29)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7912889B1 (en) | 2006-06-16 | 2011-03-22 | Nvidia Corporation | Mapping the threads of a CTA to the elements of a tile for efficient matrix multiplication |
US7792895B1 (en) | 2006-06-16 | 2010-09-07 | Nvidia Corporation | Efficient matrix multiplication on a parallel processing device |
US7836118B1 (en) * | 2006-06-16 | 2010-11-16 | Nvidia Corporation | Hardware/software-based mapping of CTAs to matrix tiles for efficient matrix multiplication |
US8533251B2 (en) * | 2008-05-23 | 2013-09-10 | International Business Machines Corporation | Optimized corner turns for local storage and bandwidth reduction |
US8626815B1 (en) * | 2008-07-14 | 2014-01-07 | Altera Corporation | Configuring a programmable integrated circuit device to perform matrix multiplication |
US8650240B2 (en) * | 2009-08-17 | 2014-02-11 | International Business Machines Corporation | Complex matrix multiplication operations with data pre-conditioning in a high performance computing architecture |
US8577950B2 (en) * | 2009-08-17 | 2013-11-05 | International Business Machines Corporation | Matrix multiplication operations with data pre-conditioning in a high performance computing architecture |
US9600281B2 (en) | 2010-07-12 | 2017-03-21 | International Business Machines Corporation | Matrix multiplication operations using pair-wise load and splat operations |
JP6972547B2 (ja) * | 2016-12-27 | 2021-11-24 | 富士通株式会社 | 演算処理装置及び演算処理装置の制御方法 |
WO2018174934A1 (en) | 2017-03-20 | 2018-09-27 | Intel Corporation | Systems, methods, and apparatus for matrix move |
US10338919B2 (en) | 2017-05-08 | 2019-07-02 | Nvidia Corporation | Generalized acceleration of matrix multiply accumulate operations |
DE102018110607A1 (de) | 2017-05-08 | 2018-11-08 | Nvidia Corporation | Verallgemeinerte Beschleunigung von Matrix-Multiplikations-und-Akkumulations-Operationen |
US10521225B2 (en) * | 2017-06-29 | 2019-12-31 | Oracle International Corporation | Matrix multiplication at memory bandwidth |
US11275588B2 (en) | 2017-07-01 | 2022-03-15 | Intel Corporation | Context save with variable save state size |
JP6958027B2 (ja) * | 2017-07-03 | 2021-11-02 | 富士通株式会社 | 演算処理装置及び演算処理装置の制御方法 |
US20190079903A1 (en) * | 2017-09-14 | 2019-03-14 | Qualcomm Incorporated | Providing matrix multiplication using vector registers in processor-based devices |
CN109871236A (zh) * | 2017-12-01 | 2019-06-11 | 超威半导体公司 | 具有低功率并行矩阵乘法流水线的流处理器 |
KR20190106010A (ko) * | 2018-03-07 | 2019-09-18 | 삼성전자주식회사 | 전자 장치 및 머신 러닝 수행 방법 |
KR102142943B1 (ko) | 2018-06-25 | 2020-08-10 | 국민대학교산학협력단 | 클라우드 기반의 인공지능 연산 서비스 방법 및 이를 수행하는 장치 |
KR102158051B1 (ko) | 2018-06-27 | 2020-09-21 | 국민대학교산학협력단 | 컴퓨터 수행 가능한 클라우드 기반의 인공지능 연산 서비스 방법 |
KR102063791B1 (ko) | 2018-07-05 | 2020-01-08 | 국민대학교산학협력단 | 클라우드 기반의 인공지능 연산 서비스 방법 및 장치 |
US10776110B2 (en) * | 2018-09-29 | 2020-09-15 | Intel Corporation | Apparatus and method for adaptable and efficient lane-wise tensor processing |
CN109886398A (zh) * | 2019-01-03 | 2019-06-14 | 曾集伟 | 神经网络矩阵乘法运算方法及相关产品 |
KR102327234B1 (ko) | 2019-10-02 | 2021-11-15 | 고려대학교 산학협력단 | 행렬 연산시 메모리 데이터 변환 방법 및 컴퓨터 |
US11714875B2 (en) * | 2019-12-28 | 2023-08-01 | Intel Corporation | Apparatuses, methods, and systems for instructions of a matrix operations accelerator |
KR102452206B1 (ko) | 2020-12-31 | 2022-10-07 | 국민대학교산학협력단 | 빅데이터 분석을 위한 인공지능 기반의 클라우드 최적화 장치 및 방법 |
KR102434949B1 (ko) | 2021-01-13 | 2022-08-26 | 건국대학교 산학협력단 | 무인이동체를 위한 인공지능 기반의 경로 재계획 방법 및 장치 |
CN114090956A (zh) * | 2021-11-18 | 2022-02-25 | 深圳市比昂芯科技有限公司 | 一种矩阵数据处理方法、装置、设备及存储介质 |
CN114579929B (zh) * | 2022-03-14 | 2023-08-08 | 海飞科(南京)信息技术有限公司 | 加速器执行的方法和电子设备 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH01204177A (ja) * | 1988-02-08 | 1989-08-16 | Nec Corp | 行列演算回路 |
US5226171A (en) * | 1984-12-03 | 1993-07-06 | Cray Research, Inc. | Parallel vector processing system for individual and broadcast distribution of operands and control information |
JPH05242053A (ja) * | 1992-03-03 | 1993-09-21 | Mitsubishi Electric Corp | 並列データ処理装置 |
JPH0619863A (ja) * | 1992-05-12 | 1994-01-28 | Internatl Business Mach Corp <Ibm> | 超並列対角線折畳みツリー・アレイ・プロセッサ |
JP2006039790A (ja) * | 2004-07-26 | 2006-02-09 | Institute Of Physical & Chemical Research | ブロードキャスト型並列処理のための演算処理装置 |
Family Cites Families (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
GB9509983D0 (en) * | 1995-05-17 | 1995-07-12 | Sgs Thomson Microelectronics | Replication of data |
JP2001256218A (ja) * | 2001-02-05 | 2001-09-21 | Sony Corp | 行列データ乗算装置 |
US6901422B1 (en) * | 2001-03-21 | 2005-05-31 | Apple Computer, Inc. | Matrix multiplication in a vector processing system |
US7054895B2 (en) * | 2001-06-21 | 2006-05-30 | Ligos Corporation | System and method for parallel computing multiple packed-sum absolute differences (PSAD) in response to a single instruction |
US7177891B2 (en) * | 2002-10-09 | 2007-02-13 | Analog Devices, Inc. | Compact Galois field multiplier engine |
GB2409063B (en) * | 2003-12-09 | 2006-07-12 | Advanced Risc Mach Ltd | Vector by scalar operations |
US7873812B1 (en) * | 2004-04-05 | 2011-01-18 | Tibet MIMAR | Method and system for efficient matrix multiplication in a SIMD processor architecture |
US7631171B2 (en) * | 2005-12-19 | 2009-12-08 | Sun Microsystems, Inc. | Method and apparatus for supporting vector operations on a multi-threaded microprocessor |
US7792895B1 (en) * | 2006-06-16 | 2010-09-07 | Nvidia Corporation | Efficient matrix multiplication on a parallel processing device |
-
2006
- 2006-05-08 US US11/430,324 patent/US20070271325A1/en not_active Abandoned
-
2007
- 2007-04-26 TW TW096114806A patent/TWI349226B/zh active
- 2007-04-29 CN CNB2007100974564A patent/CN100495326C/zh active Active
- 2007-05-08 JP JP2007123710A patent/JP2007317179A/ja active Pending
- 2007-05-08 KR KR1020070044693A patent/KR100909510B1/ko active IP Right Grant
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5226171A (en) * | 1984-12-03 | 1993-07-06 | Cray Research, Inc. | Parallel vector processing system for individual and broadcast distribution of operands and control information |
JPH01204177A (ja) * | 1988-02-08 | 1989-08-16 | Nec Corp | 行列演算回路 |
JPH05242053A (ja) * | 1992-03-03 | 1993-09-21 | Mitsubishi Electric Corp | 並列データ処理装置 |
JPH0619863A (ja) * | 1992-05-12 | 1994-01-28 | Internatl Business Mach Corp <Ibm> | 超並列対角線折畳みツリー・アレイ・プロセッサ |
JP2006039790A (ja) * | 2004-07-26 | 2006-02-09 | Institute Of Physical & Chemical Research | ブロードキャスト型並列処理のための演算処理装置 |
Cited By (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11693691B2 (en) | 2016-12-31 | 2023-07-04 | Intel Corporation | Systems, methods, and apparatuses for heterogeneous computing |
JP2020508512A (ja) * | 2017-02-23 | 2020-03-19 | エイアールエム リミテッド | データ処理装置における乗累算 |
US11513796B2 (en) | 2017-02-23 | 2022-11-29 | Arm Limited | Multiply-accumulation in a data processing apparatus |
JP7253492B2 (ja) | 2017-02-23 | 2023-04-06 | アーム・リミテッド | データ処理装置における乗累算 |
JP2018206128A (ja) * | 2017-06-06 | 2018-12-27 | 富士通株式会社 | 演算処理装置、情報処理装置及び演算処理装置の制御方法 |
JP2021064378A (ja) * | 2020-12-07 | 2021-04-22 | インテル・コーポレーション | ヘテロジニアスコンピューティングのためのシステム、方法及び装置 |
JP7164267B2 (ja) | 2020-12-07 | 2022-11-01 | インテル・コーポレーション | ヘテロジニアスコンピューティングのためのシステム、方法及び装置 |
Also Published As
Publication number | Publication date |
---|---|
KR100909510B1 (ko) | 2009-07-27 |
TW200821915A (en) | 2008-05-16 |
CN101075185A (zh) | 2007-11-21 |
KR20070108827A (ko) | 2007-11-13 |
US20070271325A1 (en) | 2007-11-22 |
TWI349226B (en) | 2011-09-21 |
CN100495326C (zh) | 2009-06-03 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP2007317179A (ja) | 帯域幅要件が軽減された行列乗算 | |
EP3513281B1 (en) | Vector multiply-add instruction | |
KR101120398B1 (ko) | 스레드 최적화된 멀티프로세서 구조 | |
US8595280B2 (en) | Apparatus and method for performing multiply-accumulate operations | |
US5261113A (en) | Apparatus and method for single operand register array for vector and scalar data processing operations | |
EP2521968B1 (en) | Hardware for performing arithmetic operations | |
CN111381880B (zh) | 一种处理器、介质和处理器的操作方法 | |
US9355061B2 (en) | Data processing apparatus and method for performing scan operations | |
CN111381939B (zh) | 多线程处理器中的寄存器文件 | |
US5036454A (en) | Horizontal computer having register multiconnect for execution of a loop with overlapped code | |
US10908916B2 (en) | Apparatus and method for executing a plurality of threads | |
US7512771B2 (en) | Mapping circuitry and method comprising first and second candidate output value producing units, an in-range value determining unit, and an output value selection unit | |
US5226128A (en) | Horizontal computer having register multiconnect for execution of a loop with a branch | |
US10754652B2 (en) | Processor and control method of processor for address generating and address displacement | |
JP2021108104A (ja) | 部分的読み取り/書き込みが可能な再構成可能なシストリックアレイのシステム及び方法 | |
US8055883B2 (en) | Pipe scheduling for pipelines based on destination register number | |
US20180349097A1 (en) | Processor with efficient arithmetic units | |
US20080229063A1 (en) | Processor Array with Separate Serial Module | |
US6981130B2 (en) | Forwarding the results of operations to dependent instructions more quickly via multiplexers working in parallel | |
Del Barrio et al. | A slack-based approach to efficiently deploy radix 8 booth multipliers | |
EP0136218A2 (en) | Multiple port pipelined processor | |
GB2523805A (en) | Data processing apparatus and method for performing vector scan operation | |
JP2806262B2 (ja) | マルチプロセッサシステムのプロセス割当方法 | |
JP2009059187A (ja) | マイクロプロセッサおよびデータ処理方法 | |
Soliman et al. | Exploiting ILP, DLP, TLP, and MPI to accelerate matrix multiplication on Xeon processors |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20090227 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20090324 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20090611 |
|
RD03 | Notification of appointment of power of attorney |
Free format text: JAPANESE INTERMEDIATE CODE: A7423 Effective date: 20090611 |
|
A02 | Decision of refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A02 Effective date: 20100406 |