JP6907700B2 - 情報処理装置、マルチスレッド行列演算方法、およびマルチスレッド行列演算プログラム - Google Patents
情報処理装置、マルチスレッド行列演算方法、およびマルチスレッド行列演算プログラム Download PDFInfo
- Publication number
- JP6907700B2 JP6907700B2 JP2017101556A JP2017101556A JP6907700B2 JP 6907700 B2 JP6907700 B2 JP 6907700B2 JP 2017101556 A JP2017101556 A JP 2017101556A JP 2017101556 A JP2017101556 A JP 2017101556A JP 6907700 B2 JP6907700 B2 JP 6907700B2
- Authority
- JP
- Japan
- Prior art keywords
- matrix
- submatrix
- predetermined number
- information processing
- thread
- 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.)
- Active
Links
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
- G06F9/48—Program initiating; Program switching, e.g. by interrupt
-
- 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
- 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
- G06F9/48—Program initiating; Program switching, e.g. by interrupt
- G06F9/4806—Task transfer initiation or dispatching
- G06F9/4843—Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
- G06F9/4881—Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues
-
- 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
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5027—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- Mathematical Physics (AREA)
- General Engineering & Computer Science (AREA)
- Mathematical Analysis (AREA)
- Mathematical Optimization (AREA)
- Pure & Applied Mathematics (AREA)
- Data Mining & Analysis (AREA)
- Computational Mathematics (AREA)
- Algebra (AREA)
- Databases & Information Systems (AREA)
- Computing Systems (AREA)
- Advance Control (AREA)
- Complex Calculations (AREA)
Description
図1は、実施の形態にかかるマルチスレッド行列演算方法の一実施例を示す説明図である。情報処理装置100は、所定数の行列演算を所定数のスレッドで並列に実行するコンピュータである。情報処理装置100は、例えば、サーバ、PC(Personal Computer)、ノートPC、タブレット端末、スマートフォン、ウェアラブル端末などである。
次に、図2を用いて、図1に示した情報処理装置100のハードウェア構成例について説明する。
次に、図3を用いて、情報処理装置100の機能的構成例について説明する。
次に、図4〜図8を用いて、情報処理装置100の複数のスレッドを用いた行列演算の流れについて説明する。
次に、図9〜図11を用いて、行列Aと行列Bと行列Cとの大きさに具体的な値を設定して、情報処理装置100の複数のスレッドを用いた行列演算の実施例について説明する。
次に、図12を用いて、行列演算処理手順の一例について説明する。
分割した前記所定数の第1部分行列のそれぞれの第1部分行列の各要素の値を生成する行列演算と、分割した前記所定数の第2部分行列のそれぞれの第2部分行列の各要素の値を生成する行列演算とを、前記所定数のスレッドのそれぞれのスレッドに割り当てる、
制御部を有することを特徴とする情報処理装置。
前記所定行列を、行方向の大きさが前記ブロックサイズの倍数分の大きさになる前記所定数の第1部分行列と、前記所定数の第2部分行列とに分割する、ことを特徴とする付記1に記載の情報処理装置。
前記所定行列を、列方向の大きさが前記ブロックサイズの倍数分の大きさになる前記所定数の第1部分行列と、前記所定数の第2部分行列とに分割する、ことを特徴とする付記1または2に記載の情報処理装置。
前記所定行列の行方向の大きさを前記ブロックサイズで除算した第1剰余と、前記所定行列の列方向の大きさを前記ブロックサイズで除算した第2剰余とを比較し、
比較した結果、前記第1剰余が前記第2剰余より小さい場合、前記所定行列を、行方向の大きさが前記ブロックサイズの倍数分の大きさになる前記所定数の第1部分行列と、前記所定数の第2部分行列とに分割し、
比較した結果、前記第1剰余が前記第2剰余より大きい場合、前記所定行列を、列方向の大きさが前記ブロックサイズの倍数分の大きさになる前記所定数の第1部分行列と、前記所定数の第2部分行列とに分割する、ことを特徴とする付記1〜3のいずれか一つに記載の情報処理装置。
前記それぞれのスレッドから、前記それぞれの第1部分行列の各要素の値と、前記それぞれの第2部分行列の各要素の値とを取得し、
取得した前記それぞれの第1部分行列の各要素の値と、取得した前記それぞれの第2部分行列の各要素の値とを組み合わせて、前記所定行列の各要素の値を生成する、ことを特徴とする付記1〜4のいずれか一つに記載の情報処理装置。
行列演算により各要素の値が生成される所定行列を、行方向と列方向との少なくともいずれかの方向の大きさが前記行列演算に用いられるレジスタ数に対応するブロックサイズの倍数分の大きさになる所定数の第1部分行列と、前記所定数の第1部分行列とは異なる前記所定数の第2部分行列とに分割し、
分割した前記所定数の第1部分行列のそれぞれの第1部分行列の各要素の値を生成する行列演算と、分割した前記所定数の第2部分行列のそれぞれの第2部分行列の各要素の値を生成する行列演算とを、前記所定数のスレッドのそれぞれのスレッドに割り当てる、
処理を実行することを特徴とするマルチスレッド行列演算方法。
行列演算により各要素の値が生成される所定行列を、行方向と列方向との少なくともいずれかの方向の大きさが前記行列演算に用いられるレジスタ数に対応するブロックサイズの倍数分の大きさになる所定数の第1部分行列と、前記所定数の第1部分行列とは異なる前記所定数の第2部分行列とに分割し、
分割した前記所定数の第1部分行列のそれぞれの第1部分行列の各要素の値を生成する行列演算と、分割した前記所定数の第2部分行列のそれぞれの第2部分行列の各要素の値を生成する行列演算とを、前記所定数のスレッドのそれぞれのスレッドに割り当てる、
処理を実行させることを特徴とするマルチスレッド行列演算プログラム。
200 バス
201 コア
202 メモリ
203 ネットワークI/F
204 記録媒体I/F
205 記録媒体
210 ネットワーク
300 記憶部
301 取得部
302 分割部
303 実行部
304 生成部
305 出力部
Claims (5)
- 行列演算により各要素の値が生成される所定行列を、行方向と列方向との少なくともいずれかの方向の大きさが前記行列演算に用いられるレジスタ数に対応するブロックサイズの倍数分の大きさになる所定数の第1部分行列と、前記所定数の第1部分行列とは異なる前記所定数の第2部分行列とに分割し、
分割した前記所定数の第1部分行列のそれぞれの第1部分行列の各要素の値を生成する行列演算と、分割した前記所定数の第2部分行列のそれぞれの第2部分行列の各要素の値を生成する行列演算とを、前記所定数のスレッドのそれぞれのスレッドに割り当てる、
制御部を有することを特徴とする情報処理装置。 - 前記制御部は、
前記所定行列を、行方向の大きさが前記ブロックサイズの倍数分の大きさになる前記所定数の第1部分行列と、前記所定数の第2部分行列とに分割する、ことを特徴とする請求項1に記載の情報処理装置。 - 前記制御部は、
前記所定行列を、列方向の大きさが前記ブロックサイズの倍数分の大きさになる前記所定数の第1部分行列と、前記所定数の第2部分行列とに分割する、ことを特徴とする請求項1または2に記載の情報処理装置。 - コンピュータが、
行列演算により各要素の値が生成される所定行列を、行方向と列方向との少なくともいずれかの方向の大きさが前記行列演算に用いられるレジスタ数に対応するブロックサイズの倍数分の大きさになる所定数の第1部分行列と、前記所定数の第1部分行列とは異なる前記所定数の第2部分行列とに分割し、
分割した前記所定数の第1部分行列のそれぞれの第1部分行列の各要素の値を生成する行列演算と、分割した前記所定数の第2部分行列のそれぞれの第2部分行列の各要素の値を生成する行列演算とを、前記所定数のスレッドのそれぞれのスレッドに割り当てる、
処理を実行することを特徴とするマルチスレッド行列演算方法。 - コンピュータに、
行列演算により各要素の値が生成される所定行列を、行方向と列方向との少なくともいずれかの方向の大きさが前記行列演算に用いられるレジスタ数に対応するブロックサイズの倍数分の大きさになる所定数の第1部分行列と、前記所定数の第1部分行列とは異なる前記所定数の第2部分行列とに分割し、
分割した前記所定数の第1部分行列のそれぞれの第1部分行列の各要素の値を生成する行列演算と、分割した前記所定数の第2部分行列のそれぞれの第2部分行列の各要素の値を生成する行列演算とを、前記所定数のスレッドのそれぞれのスレッドに割り当てる、
処理を実行させることを特徴とするマルチスレッド行列演算プログラム。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2017101556A JP6907700B2 (ja) | 2017-05-23 | 2017-05-23 | 情報処理装置、マルチスレッド行列演算方法、およびマルチスレッド行列演算プログラム |
US15/978,761 US10528384B2 (en) | 2017-05-23 | 2018-05-14 | Information processing apparatus, multithread matrix operation method, and multithread matrix operation program |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2017101556A JP6907700B2 (ja) | 2017-05-23 | 2017-05-23 | 情報処理装置、マルチスレッド行列演算方法、およびマルチスレッド行列演算プログラム |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2018197906A JP2018197906A (ja) | 2018-12-13 |
JP6907700B2 true JP6907700B2 (ja) | 2021-07-21 |
Family
ID=64401244
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2017101556A Active JP6907700B2 (ja) | 2017-05-23 | 2017-05-23 | 情報処理装置、マルチスレッド行列演算方法、およびマルチスレッド行列演算プログラム |
Country Status (2)
Country | Link |
---|---|
US (1) | US10528384B2 (ja) |
JP (1) | JP6907700B2 (ja) |
Families Citing this family (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2019126030A1 (en) | 2017-12-18 | 2019-06-27 | Mythic, Inc. | Systems and methods for mapping matrix calculations to a matrix multiply accelerator |
CN111859273A (zh) * | 2017-12-29 | 2020-10-30 | 华为技术有限公司 | 矩阵乘法器 |
CN109684602B (zh) * | 2018-12-29 | 2023-06-06 | 上海商汤智能科技有限公司 | 一种批处理方法和装置及计算机可读存储介质 |
CN111753253B (zh) * | 2020-06-28 | 2024-05-28 | 地平线(上海)人工智能技术有限公司 | 数据处理方法和装置 |
CN117724856B (zh) * | 2024-02-08 | 2024-04-19 | 腾讯科技(深圳)有限公司 | 数据处理方法、装置、电子设备及存储介质 |
Family Cites Families (29)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH0782482B2 (ja) * | 1989-05-19 | 1995-09-06 | シャープ株式会社 | ニューロコンピュータの負荷配分方法 |
JPH0675988A (ja) | 1992-08-24 | 1994-03-18 | Nec Corp | Lu分解関数実現方式 |
US6675187B1 (en) * | 1999-06-10 | 2004-01-06 | Agere Systems Inc. | Pipelined linear array of processor elements for performing matrix computations |
US6901422B1 (en) * | 2001-03-21 | 2005-05-31 | Apple Computer, Inc. | Matrix multiplication in a vector processing system |
US7003542B2 (en) * | 2002-01-02 | 2006-02-21 | Intel Corporation | Apparatus and method for inverting a 4×4 matrix |
WO2003060748A2 (en) * | 2002-01-10 | 2003-07-24 | Massively Parallel Technologies, Inc. | Parallel processing systems and method |
US7469266B2 (en) * | 2003-09-29 | 2008-12-23 | International Business Machines Corporation | Method and structure for producing high performance linear algebra routines using register block data format routines |
JP5110081B2 (ja) * | 2007-04-19 | 2012-12-26 | 富士通株式会社 | 共有メモリ型スカラ並列計算機向け、実対称行列の三重対角化の並列処理方法 |
US8380778B1 (en) * | 2007-10-25 | 2013-02-19 | Nvidia Corporation | System, method, and computer program product for assigning elements of a matrix to processing threads with increased contiguousness |
CN101533386A (zh) * | 2008-03-14 | 2009-09-16 | 国际商业机器公司 | 在多处理器***上对矩阵进行qr分解的方法和装置 |
JP2009245381A (ja) | 2008-03-31 | 2009-10-22 | Fujitsu Ltd | 積和演算回路、その設計装置、プログラム |
CN102138146A (zh) * | 2008-09-30 | 2011-07-27 | 埃克森美孚上游研究公司 | 使用并行多级不完全因式分解求解储层模拟矩阵方程的方法 |
JP5485069B2 (ja) * | 2010-08-06 | 2014-05-07 | パナソニック株式会社 | 誤り訂正復号装置及び誤り訂正復号方法 |
US9489176B2 (en) * | 2011-09-15 | 2016-11-08 | Exxonmobil Upstream Research Company | Optimized matrix and vector operations in instruction limited algorithms that perform EOS calculations |
JP5840994B2 (ja) * | 2012-03-27 | 2016-01-06 | 富士通株式会社 | 行列演算装置 |
US9317482B2 (en) * | 2012-10-14 | 2016-04-19 | Microsoft Technology Licensing, Llc | Universal FPGA/ASIC matrix-vector multiplication architecture |
JP5884756B2 (ja) * | 2013-03-21 | 2016-03-15 | カシオ計算機株式会社 | 行列計算装置、行列計算方法、行列計算処理プログラム |
JP6083300B2 (ja) * | 2013-03-29 | 2017-02-22 | 富士通株式会社 | プログラム、並列演算方法および情報処理装置 |
US20160177674A1 (en) * | 2013-08-27 | 2016-06-23 | Halliburton Energy Services, Inc. | Simulating Fluid Leak-Off and Flow-Back in a Fractured Subterranean Region |
GB2519761A (en) * | 2013-10-29 | 2015-05-06 | Ibm | A method and a system for distributed processing of data records |
US9886418B2 (en) * | 2015-04-28 | 2018-02-06 | Intel Corporation | Matrix operands for linear algebra operations |
JP6503902B2 (ja) * | 2015-06-02 | 2019-04-24 | 富士通株式会社 | 並列計算機システム、並列計算方法及びプログラム |
US10496855B2 (en) * | 2016-01-21 | 2019-12-03 | Hewlett Packard Enterprise Development Lp | Analog sub-matrix computing from input matrixes |
US10073815B2 (en) * | 2016-05-31 | 2018-09-11 | Palo Alto Research Cener Incorporated | System and method for speeding up general matrix-matrix multiplication on the GPU |
US10067910B2 (en) * | 2016-07-01 | 2018-09-04 | Palo Alto Research Center Incorporated | System and method for GPU maximum register count optimization applied to general matrix-matrix multiplication |
US10241971B2 (en) * | 2016-12-15 | 2019-03-26 | Hewlett Packard Enterprise Development Lp | Hierarchical computations on sparse matrix rows via a memristor array |
US10909447B2 (en) * | 2017-03-09 | 2021-02-02 | Google Llc | Transposing neural network matrices in hardware |
US10338919B2 (en) * | 2017-05-08 | 2019-07-02 | Nvidia Corporation | Generalized acceleration of matrix multiply accumulate operations |
US10671349B2 (en) * | 2017-07-24 | 2020-06-02 | Tesla, Inc. | Accelerated mathematical engine |
-
2017
- 2017-05-23 JP JP2017101556A patent/JP6907700B2/ja active Active
-
2018
- 2018-05-14 US US15/978,761 patent/US10528384B2/en active Active
Also Published As
Publication number | Publication date |
---|---|
JP2018197906A (ja) | 2018-12-13 |
US20180341517A1 (en) | 2018-11-29 |
US10528384B2 (en) | 2020-01-07 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP6907700B2 (ja) | 情報処理装置、マルチスレッド行列演算方法、およびマルチスレッド行列演算プログラム | |
JP6726246B2 (ja) | 畳み込みニューラルネットワークにおいて演算を実行する方法および装置並びに非一時的な記憶媒体 | |
CN110678840B (zh) | 张量寄存器文件 | |
CN110678841B (zh) | 张量处理器指令集架构 | |
KR20180109619A (ko) | 컨볼루션 신경망 처리 방법 및 장치 | |
KR20180073118A (ko) | 컨볼루션 신경망 처리 방법 및 장치 | |
US20170206089A1 (en) | Information processing apparatus and computational method | |
JP2009116854A (ja) | スキャン演算を遂行するシステム、方法、及びコンピュータ・プログラムプロダクト | |
CN109885407B (zh) | 数据处理方法和装置、电子设备、存储介质 | |
US9904976B2 (en) | High performance portable convulational neural network library on GP-GPUs | |
US9740493B2 (en) | System and method of loop vectorization by compressing indexes and data elements from iterations based on a control mask | |
TW201942808A (zh) | 深度學習加速器及加快深度學習操作的方法 | |
Green | Efficient scalable median filtering using histogram-based operations | |
JP5059928B2 (ja) | Gpuを用いた乱数生成処理の並列化 | |
JP6380952B2 (ja) | 多数の要素からなる配列をソートする装置、方法およびプログラム | |
US9830731B2 (en) | Methods of a graphics-processing unit for tile-based rendering of a display area and graphics-processing apparatus | |
WO2019093451A1 (ja) | データ処理装置、ループ制御装置、データ処理方法、ループ制御方法および記録媒体 | |
US11907681B2 (en) | Semiconductor device and method of controlling the semiconductor device | |
US11409840B2 (en) | Dynamically adaptable arrays for vector and matrix operations | |
KR102574449B1 (ko) | 데이터 처리 방법 및 장치 | |
CN111507456A (zh) | 具有卷积神经网络处理的方法和装置 | |
KR101770122B1 (ko) | Simd 프로세서를 이용하는 갈로아 필드 이진 다항식 제산 장치 및 방법 | |
KR20210089247A (ko) | 그래픽 처리 장치에서 행렬 곱셈의 파이프라인 처리 | |
WO2020031281A1 (ja) | 情報処理装置、情報処理方法、及びコンピュータ読み取り可能な記録媒体 | |
JP2020123125A (ja) | 演算処理装置、演算処理方法及びプログラム |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20200213 |
|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20210210 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20210316 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20210426 |
|
TRDD | Decision of grant or rejection written | ||
A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 Effective date: 20210601 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20210614 |
|
R150 | Certificate of patent or registration of utility model |
Ref document number: 6907700 Country of ref document: JP Free format text: JAPANESE INTERMEDIATE CODE: R150 |