JP2016212573A - 計算機、コンパイル方法、コンパイルプログラム、およびパイプライン処理プログラム - Google Patents
計算機、コンパイル方法、コンパイルプログラム、およびパイプライン処理プログラム Download PDFInfo
- Publication number
- JP2016212573A JP2016212573A JP2015094547A JP2015094547A JP2016212573A JP 2016212573 A JP2016212573 A JP 2016212573A JP 2015094547 A JP2015094547 A JP 2015094547A JP 2015094547 A JP2015094547 A JP 2015094547A JP 2016212573 A JP2016212573 A JP 2016212573A
- Authority
- JP
- Japan
- Prior art keywords
- instruction
- register
- data
- program
- loop
- 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
- 238000000034 method Methods 0.000 title claims description 89
- 238000012545 processing Methods 0.000 claims abstract description 79
- 238000003860 storage Methods 0.000 claims abstract description 28
- 230000008569 process Effects 0.000 claims description 72
- 238000003780 insertion Methods 0.000 claims description 8
- 230000037431 insertion Effects 0.000 claims description 8
- 238000004364 calculation method Methods 0.000 abstract description 7
- 238000005457 optimization Methods 0.000 description 74
- 238000010586 diagram Methods 0.000 description 15
- 230000006870 function Effects 0.000 description 8
- 238000007781 pre-processing Methods 0.000 description 8
- 238000004891 communication Methods 0.000 description 6
- 230000003287 optical effect Effects 0.000 description 6
- 238000001514 detection method Methods 0.000 description 3
- 230000000694 effects Effects 0.000 description 3
- 230000002093 peripheral effect Effects 0.000 description 3
- 238000012805 post-processing Methods 0.000 description 2
- 239000004065 semiconductor Substances 0.000 description 2
- 238000005728 strengthening Methods 0.000 description 2
- 230000002411 adverse Effects 0.000 description 1
- 238000004458 analytical method Methods 0.000 description 1
- 230000015572 biosynthetic process Effects 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 230000008878 coupling Effects 0.000 description 1
- 238000010168 coupling process Methods 0.000 description 1
- 238000005859 coupling reaction Methods 0.000 description 1
- 230000007423 decrease Effects 0.000 description 1
- 238000009434 installation Methods 0.000 description 1
- 239000004973 liquid crystal related substance Substances 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 230000000717 retained effect Effects 0.000 description 1
- 238000004904 shortening Methods 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
- 238000012546 transfer Methods 0.000 description 1
- 238000013519 translation Methods 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/41—Compilation
-
- 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/30003—Arrangements for executing specific machine instructions
- G06F9/30007—Arrangements for executing specific machine instructions to perform operations on data operands
- G06F9/30032—Movement instructions, e.g. MOVE, SHIFT, ROTATE, SHUFFLE
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/41—Compilation
- G06F8/44—Encoding
- G06F8/445—Exploiting fine grain parallelism, i.e. parallelism at instruction level
- G06F8/4452—Software pipelining
-
- 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/30098—Register arrangements
- G06F9/30105—Register structure
- G06F9/30109—Register structure having multiple operands in a single register
-
- 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/30098—Register arrangements
- G06F9/30105—Register structure
- G06F9/30112—Register structure comprising data of variable length
-
- 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/30098—Register arrangements
- G06F9/3012—Organisation of register space, e.g. banked or distributed register file
- G06F9/30138—Extension of register space, e.g. register cache
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/41—Compilation
- G06F8/45—Exploiting coarse grain parallelism in compilation, i.e. parallelism between groups of instructions
- G06F8/453—Data distribution
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Executing Machine-Instructions (AREA)
- Devices For Executing Special Programs (AREA)
- Advance Control (AREA)
Abstract
Description
〔第1の実施の形態〕
従来のソフトウェアパイプラインの方法ではレジスタが増加しすぎて、最適化を適用できない場合があった。そこで第1の実施の形態では、例えばSIMD拡張命令用のレジスタ(以下、SIMD拡張レジスタと呼ぶ)を活用したレジスタリネーミングにより、ソフトウェアパイプライン最適化による使用レジスタ数を抑止する。使用するレジスタ数が抑止されることで、ソフトウェアパイプラインを適用できる可能性が向上する。
記憶部11は、複数の命令を繰り返すループ処理の記述を含むプログラム1を記憶する。
次に第2の実施の形態について説明する。第2の実施の形態では、ソースファイルのコンパイル時に、ソフトウェアパイプラインによる最適化を実施する。また第2の実施の形態では、2つのSIMD拡張レジスタを結合して得られる記憶領域内のデータをシフトさせるSIMD拡張レジスタ結合シフト命令(以下、結合シフト命令と呼ぶ)を用いて、ソフトウェアパイプラインによる最適化を実現する。
図4は、疑似レジスタの使用例を示す図である。SIMD拡張レジスタ群101aには、複数のレジスタR1,R2,R3,・・・が含まれる。レジスタR1,R2,R3,・・・は、浮動小数点レジスタであり、4−wideのSIMD拡張レジスタである。すなわちSIMD拡張レジスタは、プロセッサ101が取り扱う単位データのデータ幅の4倍の記憶領域を有している。
図5は、レジスタリネーミングの発生状況の一例を示す図である。例えば、スカラload命令で定義した疑似レジスタをスカラadd命令で参照するものとする。仮想的なマイクロアーキテクチャを想定し、図5のように命令がスケジューリングされたとする。3つのステージS1,S2,S3にスケジューリングできた場合、出力ループでは、ステージを重ねて新しいカーネルが生成される。このとき、最初のイテレーション(I=1)と次のイテレーション(I=2)とが同じ疑似レジスタを用いると、2回目のイテレーションのload命令が疑似レジスタを上書きしてしまう。そのため、偽の依存関係(Write After Read)ができてしまう。
図8は、結合シフト命令を用いた疑似レジスタ割り当ての例を示す図である。なお、図8の「ecsl」は、結合シフト命令を示す。
なお、結合シフト命令におけるシフト量は、命令挿入前における疑似レジスタのライブレンジの重なり(MVE数に相当)に依存する。例えばMVE数が2であり、SIMD拡張レジスタの幅が疑似レジスタの4倍であれば、図8に示すようにシフト量が「2」となる。MVE数が4であり、SIMD拡張レジスタの幅が疑似レジスタの4倍であれば、シフト量を「1」とすればよい。また図6に示すようなソフトウェアパイプラインにおけるMVE数分のアンロール処理は結合シフト命令によるシフトで実現でき、結合シフト命令を挿入した場合、別でアンロールをしなくてもよい。
図9は、コンパイラの機能を示すブロック図である。コンピュータ100に実行されるコンパイラ110は、例えばソースファイル61に高級言語で記述されたプログラムを、コンピュータ100が実行可能なコードに変換し、オブジェクトファイル62を生成する。
図10は、ソフトウェアパイプライン化の処理手順の一例を示すフローチャートである。
[ステップS105]第2の最適化部111cは、入力ループにおけるループ処理で使用するSIMD拡張レジスタに、空き領域(使用されていない要素)があるか否かを判断する。空き領域があれば、処理がステップS106に進められる。空き領域がなければ、処理がステップS110に進められる。
[ステップS108]第2の最適化部111cは、第2のソフトウェアパイプライン化による最適化が成功し、かつレジスタが足りるか否かを判断する。最適化が成功し、かつレジスタが足りる場合、処理がステップS109に進められる。最適化に失敗したか、あるいはレジスタが不足する場合、処理がステップS110に進められる。
[ステップS110]第2の最適化部111cは、ソフトウェアパイプライン化を断念し、入力ループをそのまま出力し、処理を終了する。
次に、第2のソフトウェアパイプライン化処理について詳細に説明する。
[ステップS121]第2の最適化部111cは、ステージ幅(サイクル数)に関する、ステップS122〜S128のループ(第1のループ)を実行する。第1のループでは、ステージ幅を、1サイクルから徐々に大きくする。ステージ幅が所定の上限に達するまで、ループが繰り返される。ステージ幅の上限は、翻訳時間の長さを考慮して、例えば100サイクル程度とする。
[ステップS133]第2の最適化部111cは、スケジューリング(最適化)が成功したとの戻り値を設定して、スケジューリングした命令列を出力する。その後、第2のソフトウェアパイプライン化処理が終了する。
図12は、命令配置処理の手順の一例を示すフローチャートである。
[ステップS141]第2の最適化部111cは、選択した命令を配置可能な発行サイクルを走査する。例えば第2の最適化部111cは、選択した命令と、入力ループ内の他の命令との先後関係などに基づいて、選択した命令を配置可能な、該命令の発効サイクルを特定する。
[ステップS153]第2の最適化部111cは、選択中の命令を、選択中の場所に配置する。その後、処理がステップS156に進められる。
[ステップS155]第2の最適化部111cは、選択した命令と結合シフト命令との配置に成功したか否かを判断する。配置に成功した場合、処理がステップS156に進められる。配置に失敗した場合、処理がステップS151に進められる。
次に、結合シフト命令挿入処理について詳細に説明する。
[ステップS161]第2の最適化部111cは、配置対象の命令に定義されている定義レジスタを、一時レジスタへの定義に変更して配置する。一時レジスタは、ロードデータを一時的に格納する疑似レジスタである。
[ステップS163]第2の最適化部111cは、結合シフト命令の配置に関する、ステップS164〜S165のループを実行する。このループでは、結合シフト命令を配置可能な場所が順番に選択される。
[ステップS168]第2の最適化部111cは、選択した場所に結合シフト命令を配置する。
このようにして、ソフトウェアパイプラインによる最適化が行われる。以下、具体的な最適化の例について説明する。
図15は、第1のソフトウェアパイプライン化後の命令列を示す図である。結合シフト命令を用いないソフトウェアパイプラインにより最適化を行うと、図15に示すような命令列73が出力される。
このような命令列73により、ループ処理内では、MVEと呼ばれるアンロールが行われる。そのため、入力ループ2回転分が、最適化後の1ループとなっている。ループ内の2行目の命令において、レジスタ「r4」とレジスタ「r4’」とが併存することとなっている。つまり、リネーミングなしでは、レジスタ「r4’」の値を保持できない。
図16は、第2のソフトウェアパイプライン化後の命令列を示す図である。結合シフト命令を用いたソフトウェアパイプラインにより最適化を行うと、図16に示すような命令列74が出力される。
ループ内の命令は、結合シフト命令のシフト量が「1」であることを除き、図16に示す命令列のループ内の命令と同じである。
2 第1のレジスタ
3 第2のレジスタ
4〜7 データ
10 計算機
11 記憶部
12 演算部
Claims (7)
- 複数の命令を繰り返すループ処理の記述を含むプログラムを記憶する記憶部と、
前記ループ処理がソフトウェアパイプラインによりパイプライン化されるように、前記プログラムにおける前記複数の命令の実行順を並べ替え、SIMD(Single Instruction Multiple Data)拡張命令用のレジスタを用いる命令を、前記プログラムにおける前記ループ処理の記述中に挿入する演算部と、
を有する計算機。 - 前記演算部は、
さらに、前記複数の命令内のロード命令におけるデータのロード先として第1のレジスタを設定し、
前記命令の挿入では、SIMD拡張用の第2のレジスタの右に前記第1のレジスタを結合させて得られる記憶領域内のデータ列を左にシフトさせるシフト命令を挿入する、
ことを特徴とする請求項1記載の計算機。 - 前記演算部は、パイプライン化により同時に保持するデータ数がN(Nは、2以上の整数)の場合、前記第1のレジスタにロードしたデータがN回のシフトで前記第2のレジスタの先頭に移動するように、前記シフト命令の1回当たりのシフト量を設定する、
ことを特徴とする請求項2記載の計算機。 - 前記演算部は、前記ソフトウェアパイプラインをレジスタリネーミングで実現したときに、同時に保持するデータ数分のレジスタが確保できるか否かを判断し、レジスタが不足する場合に、前記ロード命令におけるデータのロード先としての前記第1のレジスタの設定と前記シフト命令の挿入とを行う、
ことを特徴とする請求項2または3記載の計算機。 - コンピュータが、
複数の命令を繰り返すループ処理の記述を含むプログラムに示される前記ループ処理が、ソフトウェアパイプラインによりパイプライン化されるように、前記プログラムにおける前記複数の命令の実行順を並べ替え、
SIMD拡張命令用のレジスタを用いる命令を、前記プログラムにおける前記ループ処理の記述中に挿入する、
コンパイル方法。 - コンピュータに、
複数の命令を繰り返すループ処理の記述を含むプログラムに示される前記ループ処理が、ソフトウェアパイプラインによりパイプライン化されるように、前記プログラムにおける前記複数の命令の実行順を並べ替え、
SIMD拡張命令用のレジスタを用いる命令を、前記プログラムにおける前記ループ処理の記述中に挿入する、
処理を実行させるコンパイルプログラム。 - 複数の命令を繰り返すループ処理を、コンピュータに、ソフトウェアパイプラインによりパイプライン化して実行させるパイプライン処理プログラムであって、
前記コンピュータに、
パイプライン化された前記ループ処理の繰り返しごとに、SIMD拡張命令用のレジスタを用いて、ロードしたデータを参照する、
処理を実行させるパイプライン処理プログラム。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2015094547A JP6492943B2 (ja) | 2015-05-07 | 2015-05-07 | 計算機、コンパイル方法、コンパイルプログラム、およびパイプライン処理プログラム |
US15/132,815 US9841957B2 (en) | 2015-05-07 | 2016-04-19 | Apparatus and method for handling registers in pipeline processing |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2015094547A JP6492943B2 (ja) | 2015-05-07 | 2015-05-07 | 計算機、コンパイル方法、コンパイルプログラム、およびパイプライン処理プログラム |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2016212573A true JP2016212573A (ja) | 2016-12-15 |
JP6492943B2 JP6492943B2 (ja) | 2019-04-03 |
Family
ID=57240748
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2015094547A Active JP6492943B2 (ja) | 2015-05-07 | 2015-05-07 | 計算機、コンパイル方法、コンパイルプログラム、およびパイプライン処理プログラム |
Country Status (2)
Country | Link |
---|---|
US (1) | US9841957B2 (ja) |
JP (1) | JP6492943B2 (ja) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11693638B2 (en) | 2020-06-09 | 2023-07-04 | Fujitsu Limited | Compiler program, compiling method, information processing device |
Families Citing this family (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105183433B (zh) * | 2015-08-24 | 2018-02-06 | 上海兆芯集成电路有限公司 | 指令合并方法以及具有多数据通道的装置 |
US10915320B2 (en) * | 2018-12-21 | 2021-02-09 | Intel Corporation | Shift-folding for efficient load coalescing in a binary translation based processor |
US11366646B2 (en) * | 2020-01-23 | 2022-06-21 | Huawei Technologies Co., Ltd. | Method and apparatus for predicting and scheduling copy instruction for software pipelined loops |
EP4050481A1 (en) * | 2021-02-25 | 2022-08-31 | Imagination Technologies Limited | Allocation of resources to tasks |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2003241960A (ja) * | 2002-02-15 | 2003-08-29 | Hitachi Ltd | プロセッサ、該プロセッサにおける演算命令処理方法及び演算制御方法 |
US20070174825A1 (en) * | 2006-01-25 | 2007-07-26 | Eichenberger Alexandre E | Apparatus and method for optimizing scalar code executed on a SIMD engine by alignment of SIMD slots |
JP2008009957A (ja) * | 2006-06-28 | 2008-01-17 | Toshiba Corp | コンパイル装置 |
US20090113168A1 (en) * | 2007-10-24 | 2009-04-30 | Ayal Zaks | Software Pipelining Using One or More Vector Registers |
Family Cites Families (15)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6629115B1 (en) | 1999-10-01 | 2003-09-30 | Hitachi, Ltd. | Method and apparatus for manipulating vectored data |
JP3857614B2 (ja) * | 2002-06-03 | 2006-12-13 | 松下電器産業株式会社 | プロセッサ |
JP4487479B2 (ja) * | 2002-11-12 | 2010-06-23 | 日本電気株式会社 | Simd命令シーケンス生成方法および装置ならびにsimd命令シーケンス生成用プログラム |
US7395531B2 (en) * | 2004-06-07 | 2008-07-01 | International Business Machines Corporation | Framework for efficient code generation using loop peeling for SIMD loop code with multiple misaligned statements |
US20060048123A1 (en) * | 2004-08-30 | 2006-03-02 | International Business Machines Corporation | Modification of swing modulo scheduling to reduce register usage |
US20080016320A1 (en) * | 2006-06-27 | 2008-01-17 | Amitabh Menon | Vector Predicates for Sub-Word Parallel Operations |
JP5659772B2 (ja) | 2010-12-17 | 2015-01-28 | 富士通株式会社 | 演算処理装置 |
US20120254589A1 (en) | 2011-04-01 | 2012-10-04 | Jesus Corbal San Adrian | System, apparatus, and method for aligning registers |
CN104011649B (zh) * | 2011-12-23 | 2018-10-09 | 英特尔公司 | 用于在simd/向量执行中传播有条件估算值的装置和方法 |
US8893104B2 (en) * | 2012-01-26 | 2014-11-18 | Qualcomm Incorporated | Method and apparatus for register spill minimization |
US8880829B2 (en) * | 2012-11-19 | 2014-11-04 | Qualcomm Innovation Center, Inc. | Method and apparatus for efficient, low-latency, streaming memory copies |
US9501276B2 (en) | 2012-12-31 | 2016-11-22 | Intel Corporation | Instructions and logic to vectorize conditional loops |
JP6201788B2 (ja) * | 2014-01-29 | 2017-09-27 | 富士通株式会社 | ループ分割検出プログラム及びループ分割検出方法 |
JP6245031B2 (ja) * | 2014-03-27 | 2017-12-13 | 富士通株式会社 | コンパイルプログラム、コンパイル方法およびコンパイル装置 |
JP6331865B2 (ja) * | 2014-08-13 | 2018-05-30 | 富士通株式会社 | プログラム最適化方法,プログラム最適化プログラム及びプログラム最適化装置 |
-
2015
- 2015-05-07 JP JP2015094547A patent/JP6492943B2/ja active Active
-
2016
- 2016-04-19 US US15/132,815 patent/US9841957B2/en active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2003241960A (ja) * | 2002-02-15 | 2003-08-29 | Hitachi Ltd | プロセッサ、該プロセッサにおける演算命令処理方法及び演算制御方法 |
US20070174825A1 (en) * | 2006-01-25 | 2007-07-26 | Eichenberger Alexandre E | Apparatus and method for optimizing scalar code executed on a SIMD engine by alignment of SIMD slots |
JP2008009957A (ja) * | 2006-06-28 | 2008-01-17 | Toshiba Corp | コンパイル装置 |
US20090113168A1 (en) * | 2007-10-24 | 2009-04-30 | Ayal Zaks | Software Pipelining Using One or More Vector Registers |
Non-Patent Citations (1)
Title |
---|
村井 均、住元真司、瀧 康太郎、山中栄次: "特集 スーパーコンピュータ「京」 5.プログラミング環境−超大規模並列計算機の性能を活かすプログラミン", 情報処理, vol. 第53巻,第8号(通巻569号), JPN6018045946, 15 July 2012 (2012-07-15), JP, pages p.781 * |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11693638B2 (en) | 2020-06-09 | 2023-07-04 | Fujitsu Limited | Compiler program, compiling method, information processing device |
Also Published As
Publication number | Publication date |
---|---|
US9841957B2 (en) | 2017-12-12 |
US20160328236A1 (en) | 2016-11-10 |
JP6492943B2 (ja) | 2019-04-03 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP6492943B2 (ja) | 計算機、コンパイル方法、コンパイルプログラム、およびパイプライン処理プログラム | |
JP4339907B2 (ja) | マルチプロセッサ向け最適コード生成方法及びコンパイル装置 | |
JP5681473B2 (ja) | プログラムの最適化装置、最適化方法および最適化プログラム | |
EP2951681B1 (en) | Solution to divergent branches in a simd core using hardware pointers | |
US8776030B2 (en) | Partitioning CUDA code for execution by a general purpose processor | |
US7631305B2 (en) | Methods and products for processing loop nests | |
Kim et al. | Efficient SIMD code generation for irregular kernels | |
Membarth et al. | Generating device-specific GPU code for local operators in medical imaging | |
US20080109795A1 (en) | C/c++ language extensions for general-purpose graphics processing unit | |
TWI806550B (zh) | 處理器操作方法、相關電腦系統、及非暫時性電腦可存取儲存媒體 | |
EP2951682B1 (en) | Hardware and software solutions to divergent branches in a parallel pipeline | |
JP6245031B2 (ja) | コンパイルプログラム、コンパイル方法およびコンパイル装置 | |
JP5966509B2 (ja) | プログラム、コード生成方法および情報処理装置 | |
JP2017004281A (ja) | コンパイルプログラム、およびコンパイル方法 | |
KR101293701B1 (ko) | 코어스 그레인드 재구성 어레이에서의 중첩 루프문 수행 장치 및 그 방법 | |
EP2799986B1 (en) | Apparatus and method for translating multithread program code | |
KR20150040662A (ko) | 모듈로 스케줄링 방법, 모듈로 스케줄링 장치, 모듈로 스케줄링에 따라서 동작하는 재구성 가능한 프로세서 및 재구성 가능한 프로세서의 동작 방법 | |
KR102161055B1 (ko) | 소프트웨어 파이프라이닝을 이용한 명령어 스케줄링 방법 및 장치 | |
Sakdhnagool et al. | RegDem: Increasing GPU performance via shared memory register spilling | |
JP2018124877A (ja) | コード生成装置、コード生成方法、およびコード生成プログラム | |
JP2022140995A (ja) | 情報処理装置、コンパイルプログラムおよびコンパイル方法 | |
Stratton et al. | Optimizing Halide for Digital Signal Processors | |
JP4084374B2 (ja) | ループ並列化方法及びコンパイル装置 | |
US11762641B2 (en) | Allocating variables to computer memory | |
Prajapati | Scheduling and tiling reductions on realistic machines |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20180206 |
|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20181019 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20181127 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20190123 |
|
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: 20190205 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20190218 |
|
R150 | Certificate of patent or registration of utility model |
Ref document number: 6492943 Country of ref document: JP Free format text: JAPANESE INTERMEDIATE CODE: R150 |