JP2018197906A - 情報処理装置、マルチスレッド行列演算方法、およびマルチスレッド行列演算プログラム - Google Patents
情報処理装置、マルチスレッド行列演算方法、およびマルチスレッド行列演算プログラム Download PDFInfo
- Publication number
- JP2018197906A JP2018197906A JP2017101556A JP2017101556A JP2018197906A JP 2018197906 A JP2018197906 A JP 2018197906A JP 2017101556 A JP2017101556 A JP 2017101556A JP 2017101556 A JP2017101556 A JP 2017101556A JP 2018197906 A JP2018197906 A JP 2018197906A
- Authority
- JP
- Japan
- Prior art keywords
- matrix
- predetermined number
- information processing
- processing apparatus
- submatrix
- 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.)
- Granted
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)
- Computational Mathematics (AREA)
- Pure & Applied Mathematics (AREA)
- Data Mining & Analysis (AREA)
- Computing Systems (AREA)
- Algebra (AREA)
- Databases & Information Systems (AREA)
- Complex Calculations (AREA)
- Advance Control (AREA)
Abstract
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 (6)
- 行列演算により各要素の値が生成される所定行列を、行方向と列方向との少なくともいずれかの方向の大きさが前記行列演算に用いられるレジスタ数に対応するブロックサイズの倍数分の大きさになる所定数の第1部分行列と、前記所定数の第1部分行列とは異なる前記所定数の第2部分行列とに分割し、
分割した前記所定数の第1部分行列のそれぞれの第1部分行列の各要素の値を生成する行列演算と、分割した前記所定数の第2部分行列のそれぞれの第2部分行列の各要素の値を生成する行列演算とを、前記所定数のスレッドのそれぞれのスレッドに割り当てる、
制御部を有することを特徴とする情報処理装置。 - 前記制御部は、
前記所定行列を、行方向の大きさが前記ブロックサイズの倍数分の大きさになる前記所定数の第1部分行列と、前記所定数の第2部分行列とに分割する、ことを特徴とする請求項1に記載の情報処理装置。 - 前記制御部は、
前記所定行列を、列方向の大きさが前記ブロックサイズの倍数分の大きさになる前記所定数の第1部分行列と、前記所定数の第2部分行列とに分割する、ことを特徴とする請求項1または2に記載の情報処理装置。 - 前記制御部は、
前記所定行列の行方向の大きさを前記ブロックサイズで除算した第1剰余と、前記所定行列の列方向の大きさを前記ブロックサイズで除算した第2剰余とを比較し、
比較した結果、前記第1剰余が前記第2剰余より小さい場合、前記所定行列を、行方向の大きさが前記ブロックサイズの倍数分の大きさになる前記所定数の第1部分行列と、前記所定数の第2部分行列とに分割し、
比較した結果、前記第1剰余が前記第2剰余より大きい場合、前記所定行列を、列方向の大きさが前記ブロックサイズの倍数分の大きさになる前記所定数の第1部分行列と、前記所定数の第2部分行列とに分割する、ことを特徴とする請求項1〜3のいずれか一つに記載の情報処理装置。 - コンピュータが、
行列演算により各要素の値が生成される所定行列を、行方向と列方向との少なくともいずれかの方向の大きさが前記行列演算に用いられるレジスタ数に対応するブロックサイズの倍数分の大きさになる所定数の第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 true JP2018197906A (ja) | 2018-12-13 |
JP6907700B2 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 (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP3729340A4 (en) | 2017-12-18 | 2021-12-29 | 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 | 地平线(上海)人工智能技术有限公司 | 数据处理方法和装置 |
US11989257B2 (en) * | 2020-10-29 | 2024-05-21 | Hewlett Packard Enterprise Development Lp | Assigning processing threads for matrix-matrix multiplication |
CN117724856B (zh) * | 2024-02-08 | 2024-04-19 | 腾讯科技(深圳)有限公司 | 数据处理方法、装置、电子设备及存储介质 |
CN118484322A (zh) * | 2024-07-15 | 2024-08-13 | 北京壁仞科技开发有限公司 | 用于矩阵规约计算的方法、计算装置、介质和程序产品 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH02306365A (ja) * | 1989-05-19 | 1990-12-19 | Sharp Corp | ニューロコンピュータの負荷配分方法 |
JP2005515551A (ja) * | 2002-01-10 | 2005-05-26 | マッシブリー パラレル テクノロジーズ, インコーポレイテッド | 並列処理システム及び方法 |
Family Cites Families (27)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
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 |
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 |
WO2008136045A1 (ja) * | 2007-04-19 | 2008-11-13 | Fujitsu Limited | 共有メモリ型スカラ並列計算機向け、実対称行列の三重対角化の並列処理方法 |
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 | 積和演算回路、その設計装置、プログラム |
WO2010039325A1 (en) * | 2008-09-30 | 2010-04-08 | Exxonmobil Upstream Reseach Company | Method for solving reservoir simulation matrix equation using parallel multi-level incomplete factorizations |
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 | 富士通株式会社 | プログラム、並列演算方法および情報処理装置 |
WO2015030837A1 (en) * | 2013-08-27 | 2015-03-05 | Halliburton Energy Services, Inc. | Simulating fluid leak-off and flow-back in a fractured subterranean |
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 | 富士通株式会社 | 並列計算機システム、並列計算方法及びプログラム |
WO2017127086A1 (en) * | 2016-01-21 | 2017-07-27 | 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
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH02306365A (ja) * | 1989-05-19 | 1990-12-19 | Sharp Corp | ニューロコンピュータの負荷配分方法 |
JP2005515551A (ja) * | 2002-01-10 | 2005-05-26 | マッシブリー パラレル テクノロジーズ, インコーポレイテッド | 並列処理システム及び方法 |
Non-Patent Citations (1)
Title |
---|
工藤周平,山本有作: "Xeon PhiにおけるDSYRKのスレッド並列化手法", 情報処理学会研究報告 ハイパフォーマンスコンピューティング(HPC), vol. Vol.2015-HPC-152,No.17, JPN6021009071, 9 December 2015 (2015-12-09), JP, pages 1 - 8, ISSN: 0004465995 * |
Also Published As
Publication number | Publication date |
---|---|
US20180341517A1 (en) | 2018-11-29 |
JP6907700B2 (ja) | 2021-07-21 |
US10528384B2 (en) | 2020-01-07 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP6907700B2 (ja) | 情報処理装置、マルチスレッド行列演算方法、およびマルチスレッド行列演算プログラム | |
CN110678841B (zh) | 张量处理器指令集架构 | |
US20190266217A1 (en) | Apparatus and method for matrix computation | |
US20180341483A1 (en) | Tensor Register Files | |
KR20180109619A (ko) | 컨볼루션 신경망 처리 방법 및 장치 | |
JP2009116854A (ja) | スキャン演算を遂行するシステム、方法、及びコンピュータ・プログラムプロダクト | |
US20170206089A1 (en) | Information processing apparatus and computational method | |
CN109885407B (zh) | 数据处理方法和装置、电子设备、存储介质 | |
WO2023130918A1 (zh) | 用于管理量子系统的状态的方法、设备、装置和介质 | |
US11907681B2 (en) | Semiconductor device and method of controlling the semiconductor device | |
JP6666554B2 (ja) | 情報処理装置、変換プログラム、及び変換方法 | |
JP7562265B2 (ja) | ニューラルネットワークのコンボルーション演算を処理する方法及び装置 | |
JP2016115092A (ja) | 多数の要素からなる配列をソートする装置、方法およびプログラム | |
US20200012250A1 (en) | Program editing device, program editing method, and computer readable medium | |
JP2010287110A (ja) | 情報処理装置、情報処理方法、プログラム及び記録媒体 | |
KR102574449B1 (ko) | 데이터 처리 방법 및 장치 | |
US20160162262A1 (en) | Parallelization of random number generators | |
JP7020555B2 (ja) | 情報処理装置、情報処理方法、及びプログラム | |
KR20230059726A (ko) | 심층 신경망 연산을 수행하는 방법 및 전자 장치 | |
JP2020123125A (ja) | 演算処理装置、演算処理方法及びプログラム | |
US20220019491A1 (en) | Method of determining split scheme, determining device, and computing system | |
US20210279575A1 (en) | Information processing apparatus, information processing method, and storage medium | |
KR20230069952A (ko) | 공유 피연산자들의 수직 및 수평 브로드캐스트 | |
US9704065B2 (en) | Dimension reduction apparatus, dimension reduction method, and computer program product | |
WO2018167940A1 (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 |