JP2018163381A - コード生成装置、コード生成方法及びコード生成プログラム - Google Patents
コード生成装置、コード生成方法及びコード生成プログラム Download PDFInfo
- Publication number
- JP2018163381A JP2018163381A JP2017058550A JP2017058550A JP2018163381A JP 2018163381 A JP2018163381 A JP 2018163381A JP 2017058550 A JP2017058550 A JP 2017058550A JP 2017058550 A JP2017058550 A JP 2017058550A JP 2018163381 A JP2018163381 A JP 2018163381A
- Authority
- JP
- Japan
- Prior art keywords
- instruction
- instructions
- code
- fma
- simd
- 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 61
- 238000004458 analytical method Methods 0.000 claims abstract description 101
- 230000004927 fusion Effects 0.000 claims abstract description 46
- 238000004590 computer program Methods 0.000 claims abstract description 12
- 238000004364 calculation method Methods 0.000 claims description 11
- 238000007792 addition Methods 0.000 description 40
- 238000012545 processing Methods 0.000 description 33
- 238000005516 engineering process Methods 0.000 description 22
- 238000010586 diagram Methods 0.000 description 17
- 238000003860 storage Methods 0.000 description 16
- 238000004891 communication Methods 0.000 description 12
- 238000006243 chemical reaction Methods 0.000 description 11
- 238000012986 modification Methods 0.000 description 8
- 230000004048 modification Effects 0.000 description 8
- 230000010365 information processing Effects 0.000 description 7
- 230000006870 function Effects 0.000 description 6
- 238000005457 optimization Methods 0.000 description 3
- 239000004065 semiconductor Substances 0.000 description 3
- 230000000694 effects Effects 0.000 description 2
- 238000007667 floating Methods 0.000 description 2
- 238000003491 array Methods 0.000 description 1
- 150000001875 compounds Chemical class 0.000 description 1
- 239000000470 constituent Substances 0.000 description 1
- 238000012423 maintenance Methods 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
Images
Landscapes
- Complex Calculations (AREA)
- Devices For Executing Special Programs (AREA)
Abstract
Description
上記並列実行命令に変換可能であると判定された上記演算命令を上記融合演算命令に変換してから、その上記融合演算命令のオペランドが、上記並列実行命令として実行可能な形式に配置されたデータを生成することで、上記融合演算命令を並列に実行する上記並列実行命令を生成することを含む。
以下、本開示に係る技術の第1の実施形態について説明する。
図4は、本実施形態におけるコード生成装置100の機能的な構成を例示するブロック図である。図4に例示するように、コード生成装置100は、コンパイラ101を備える。コード生成装置100は、更に、ファイル管理部104を備えてもよい。コード生成装置100を構成するこれらの構成要素の間は、適切な方法(例えば、プロセス間通信、共有メモリ、各種API(Application Programming Interface)等)を用いて、相互に通信可能に接続されていてもよい。以下、各構成要素について説明する。
以下、上記のように構成されたコード生成装置100の動作について説明する。
この場合、コード解析部102は、例えば、上記処理の結果を命令生成部103に提供してもよい。
以下、本実施形態の変形例について説明する。本変形例におけるコード生成装置の機能的な構成は、上記第1の実施形態と同様としてよい。
以下、本開示に係る技術の基本的な実施形態である、第2の実施形態について説明する。
以下、上記各実施形態を実現可能なハードウェア構成について説明する。
101 コンパイラ
102 コード解析部
103 命令生成部
104 ファイル管理部
1200 情報処理装置
1201 プロセッサ
1202 メモリ
1203 ストレージ
1300 コード生成装置
1301 コード解析部
1302 命令生成部
1401 プロセッサ
1402 メモリ
1403 不揮発性記憶装置
1404 ドライブ装置
1405 記録媒体
Claims (10)
- コンピュータ・プログラムである解析対象コードに含まれる1以上の演算命令のうち、命令の種類が異なる前記演算命令の間の依存関係に基づいて、複数のデータに対して、異なる種類の演算を1つの命令として実行可能な融合演算命令を並列に実行可能な並列実行命令に変換可能か否かを判定するコード解析手段と、
前記コード解析手段により、前記並列実行命令に変換可能であると判定された前記演算命令を前記融合演算命令に変換してから、その融合演算命令のオペランドが、前記並列実行命令として実行可能な形式に配置されたデータを生成することで、前記融合演算命令を並列に実行する前記並列実行命令を生成する命令生成手段と、を備える
コード生成装置。 - 前記コード解析手段は、前記解析対象コードに含まれる前記演算命令の内、演算の種類が異なる前記演算命令である加算命令と乗算命令との間に依存関係があるか否か、及び、減算命令と乗算命令との間に依存関係があるか否か、を判定し、
前記命令生成手段は、前記コード解析手段により依存関係がないと判定された、種類が異なる前記演算命令を、前記融合演算命令に変換する
請求項1に記載のコード生成装置。 - 前記命令生成手段は、前記コード解析手段により依存関係がないと判定された種類が異なる前記演算命令の全てを前記融合演算命令に変換し、変換された前記融合演算命令を組合せることで、前記融合演算命令を並列に実行する前記並列実行命令を生成する
請求項2に記載のコード生成装置。 - 前記融合演算命令は、1つの命令で積和演算を実行するFMA(Fused Multiply and add)演算命令であり、
前記並列実行命令は、FMA演算命令を複数のデータに対して並列に実行可能なSIMD(Single Instruction Multiple Data)−FMA命令であり、
前記命令生成手段は、前記コード解析手段における判定の結果に応じて、依存関係がないと判定された前記演算命令をFMA演算命令に変換し、変換されたそのFMA演算命令を組合せることで、前記SIMD−FMA命令を生成する
請求項2又は3に記載のコード生成装置。 - 前記命令生成手段は、
前記演算命令が加算命令である場合、当該加算命令の一方のオペランドに、加算の結果に影響しない値を有する第1のダミーオペランドを即値として乗算する命令を追加することで、当該加算命令をFMA演算命令に変換し、
前記演算命令が減算命令である場合、当該減算命令の一方のオペランドに減算の結果に影響しない値を有する第2のダミーオペランドを即値として乗算する命令を追加するとともに、当該減算命令の他方のオペランドの符号を反転することで、当該減算命令をFMA演算命令に変換し、
前記演算命令が乗算命令である場合、乗算の結果に影響しない値を有する第3のダミーオペランドを即値として加算する命令を追加することで、当該減算命令をFMA演算命令に変換する、
請求項4に記載のコード生成装置。 - 前記SIMD−FMA命令が、2つのFMA演算命令を並列に実行可能である場合、
前記命令生成手段は、
前記SIMD−FMA命令に関するオペランドを記憶するレジスタを2つに分割した領域の内、一方の領域には、FMA演算命令に変換される前の前記演算命令のうち、加算命令又は減算命令に関するオペランドを配置し、
他方の領域には、FMA演算命令に変換される前の前記演算命令のうち、乗算命令に関するオペランドを配置するよう、前記SIMD−FMA命令のオペランドを表すデータを生成する
請求項5に記載のコード生成装置。 - コンピュータ・プログラムである解析対象コードに含まれる1以上の演算命令のうち、命令の種類が異なる前記演算命令の間の依存関係に基づいて、複数のデータに対して、異なる種類の演算を1つの命令として実行可能な融合演算命令を並列に実行可能な並列実行命令に変換可能か否かを判定し、
前記並列実行命令に変換可能であると判定された前記演算命令を前記融合演算命令に変換してから、その融合演算命令のオペランドが、前記並列実行命令として実行可能な形式に配置されたデータを生成することで、前記融合演算命令を並列に実行する前記並列実行命令を生成する
コード生成方法。 - 1以上の前記演算命令の内、種類が異なる前記演算命令の間に依存関係があるか否かを判定し、依存関係がないと判定された種類が異なる前記演算命令を、前記融合演算命令に変換する、ことを更に含む
請求項7に記載のコード生成方法。 - コンピュータに、
コンピュータ・プログラムである解析対象コードに含まれる1以上の演算命令のうち、命令の種類が異なる前記演算命令の間の依存関係に基づいて、複数のデータに対して、異なる種類の演算を1つの命令として実行可能な融合演算命令を並列に実行可能な並列実行命令に変換可能か否かを判定する判定処理と、
前記並列実行命令に変換可能であると判定された前記演算命令を前記融合演算命令に変換してから、その融合演算命令のオペランドが、前記並列実行命令として実行可能な形式に配置されたデータを生成することで、前記融合演算命令を並列に実行する前記並列実行命令を生成する命令生成処理と、を実行させる
コード生成プログラム。 - 前記判定処理は、1以上の前記演算命令の内、種類が異なる前記演算命令の間に依存関係があるか否かを判定する処理を含み、
前記命令生成処理は、依存関係がないと判定された種類が異なる前記演算命令を、前記融合演算命令に変換する処理、更に含む
請求項9に記載のコード生成プログラム。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2017058550A JP6897213B2 (ja) | 2017-03-24 | 2017-03-24 | コード生成装置、コード生成方法及びコード生成プログラム |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2017058550A JP6897213B2 (ja) | 2017-03-24 | 2017-03-24 | コード生成装置、コード生成方法及びコード生成プログラム |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2018163381A true JP2018163381A (ja) | 2018-10-18 |
JP6897213B2 JP6897213B2 (ja) | 2021-06-30 |
Family
ID=63860140
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2017058550A Active JP6897213B2 (ja) | 2017-03-24 | 2017-03-24 | コード生成装置、コード生成方法及びコード生成プログラム |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP6897213B2 (ja) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112965710A (zh) * | 2019-12-13 | 2021-06-15 | 阿里巴巴集团控股有限公司 | 计算图的处理方法、装置和系统 |
-
2017
- 2017-03-24 JP JP2017058550A patent/JP6897213B2/ja active Active
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112965710A (zh) * | 2019-12-13 | 2021-06-15 | 阿里巴巴集团控股有限公司 | 计算图的处理方法、装置和系统 |
Also Published As
Publication number | Publication date |
---|---|
JP6897213B2 (ja) | 2021-06-30 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US9619214B2 (en) | Compiler optimizations for vector instructions | |
US9542169B2 (en) | Generating SIMD code from code statements that include non-isomorphic code statements | |
US20160321039A1 (en) | Technology mapping onto code fragments | |
US11656880B2 (en) | Function evaluation using multiple values loaded into registers by a single instruction | |
US9594668B1 (en) | Debugger display of vector register contents after compiler optimizations for vector instructions | |
Wang et al. | Saber on ESP32 | |
KR102062208B1 (ko) | 멀티스레드 프로그램 코드의 변환 장치 및 방법 | |
JP6897213B2 (ja) | コード生成装置、コード生成方法及びコード生成プログラム | |
WO2010029812A1 (ja) | マルチコアにおけるプログラミングシステム、その方法及びそのプログラム | |
Asher et al. | Hybrid type legalization for a sparse SIMD instruction set | |
Bernstein et al. | Usable assembly language for GPUs: a success story | |
US20240231845A1 (en) | Hardware Mapping | |
EP4386553A1 (en) | Hardware mapping | |
US20220405110A1 (en) | Non-transitory computer-readable recording medium and compilation method | |
Mahalingam et al. | Adapting barrel shifter at compilation level for efficient implementation of multiplications | |
JP7295466B2 (ja) | クラス生成プログラム及びクラス生成方法 | |
US20220374236A1 (en) | Method and system for optimizing address calculations | |
WO2020116025A1 (ja) | コンパイル装置、コンパイル方法、及び非一時的なコンピュータ可読媒体 | |
JP4721975B2 (ja) | コンパイラ装置およびコンパイル方法 | |
Fryza et al. | Instruction-level programming approach for very long instruction word digital signal processors | |
WO2020227883A1 (zh) | 一种数据处理方法、装置及系统 | |
Sinha et al. | IP‐Enabled C/C++ Based High Level Synthesis: A Step towards Better Designer Productivity and Design Performance | |
Mego et al. | Tool for algorithms mapping with help of signal-flow graph approach | |
Jungwirth et al. | Alabama A&M Symmetric Overloaded Minimal Instruction Set Architecture (SOMA) | |
Krishnamoorthy et al. | Data Flow Graph Partitioning Algorithms and Their Evaluations for Optimal Spatio-temporal Computation on a Coarse Grain Reconfigurable Architecture |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20200217 |
|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20210129 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20210209 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20210310 |
|
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: 20210511 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20210524 |
|
R150 | Certificate of patent or registration of utility model |
Ref document number: 6897213 Country of ref document: JP Free format text: JAPANESE INTERMEDIATE CODE: R150 |