JP7263994B2 - 情報処理方法及び最適化プログラム - Google Patents
情報処理方法及び最適化プログラム Download PDFInfo
- Publication number
- JP7263994B2 JP7263994B2 JP2019168077A JP2019168077A JP7263994B2 JP 7263994 B2 JP7263994 B2 JP 7263994B2 JP 2019168077 A JP2019168077 A JP 2019168077A JP 2019168077 A JP2019168077 A JP 2019168077A JP 7263994 B2 JP7263994 B2 JP 7263994B2
- Authority
- JP
- Japan
- Prior art keywords
- program
- combination
- assignment
- assignment statements
- program code
- 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 OR CALCULATING; 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/456—Parallelism detection
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; 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/443—Optimisation
- G06F8/4441—Reducing the execution time required by the program code
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; 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
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; 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
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; 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 or look ahead
- G06F9/3861—Recovery, e.g. branch miss-prediction, exception handling
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; 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 or look ahead
- G06F9/3885—Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units
- G06F9/3887—Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units controlled by a single instruction for multiple data lanes [SIMD]
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Devices For Executing Special Programs (AREA)
Description
対象プログラムを実行することで、各プログラムコードの実行回数を取得し、
前記実行回数が上位の代入文に関するプログラムコードの中から、複数個の代入文に関するプログラムコードの組み合わせを選択し、
選択した組み合わせに含まれる前記複数個の代入文に関するプログラムコードそれぞれについてSIMD演算機能を用いた並列処理が実行されるよう、前記対象プログラムが変更された場合に、該変更された対象プログラムを実行することで、実行精度と演算時間とを算出し、
算出した実行精度と演算時間とが所定の条件を満たすように、前記組み合わせを探索する、処理をコンピュータが実行する。
<情報処理装置のハードウェア構成>
はじめに、最適化プログラムを実行することで、対象プログラムを最適化する情報処理装置のハードウェア構成について説明する。なお、第1の実施形態において"最適化"とは、対象プログラムにおいて、実行精度を縮小するプログラムコードを適切に選択することで、SIMD演算機能を用いた並列処理において、演算時間の短縮を実現することを指す。
次に、CPU110のSIMD演算機能を用いた並列処理の概要について説明する。図2は、SIMD演算機能を用いた並列処理の概要を説明するための図である。図2に示すように、情報処理装置100のCPU110が128ビットのSIMD演算機能を有する場合、単精度演算では、演算対象のデータを、64ビットずつ、2並列で実行する(符号210参照)。一方、倍精度演算では、演算対象のデータを、32ビットずつ、4並列で実行する(符号220参照)。
次に、対象プログラム(オリジナルプログラム153)を最適化するプログラム最適化処理の流れについて説明する。図3は、プログラム最適化処理の流れを示すフローチャートである。CPU110は最適化プログラム151を実行することで、図3に示すプログラム最適化処理に含まれる各処理を行う。
・倍精度演算を実行する三角関数(sin、cos等)を、単精度演算を実行する三角関数に変換する、
・変数の定義を、倍精度演算から単精度演算に変換する、
・数値を、倍精度演算の表記から、単精度演算の表記に変換する、
等の処理を行う。
次に、プログラム最適化処理(図3)に含まれる各処理(ここでは、コンパイル処理(ステップS301)、プロファイル情報解析処理(ステップS303)、評価処理(ステップS308)、組み合わせ探索処理(ステップS310))の詳細について説明する。
はじめに、コンパイル処理(ステップS301)の詳細について説明する。図4は、コンパイル処理の流れを示すフローチャートである。
次に、プロファイル情報解析処理(ステップS303)の詳細について説明する。
はじめに、プロファイル情報解析処理の流れについて説明する。図5は、プロファイル情報解析処理の流れを示すフローチャートである。
次に、プロファイル情報解析処理(ステップS303)において取得されるプロファイル情報の具体例について説明する。図6は、プロファイル情報の一例を示す図である。
次に、候補の抽出例について説明する。図7は、候補の抽出例を示す図である。図7に示すように、代入文に関するプログラムコードであるプログラムコード601~605それぞれの実行回数は、
・プログラムコード601:2619152回、
・プログラムコード602:2598227回、
・プログラムコード603:1659425回、
・プログラムコード604:2598227回、
・プログラムコード605:5154604回、
である。したがって、実行回数の多い順にソートした場合、プログラムコード605→601→602→604→603の順になる。
次に、評価処理(ステップS308)の詳細について説明する。図8は、評価処理の流れを示すフローチャートである。
次に、組み合わせ探索処理(ステップS310)の詳細について説明する。
はじめに、組み合わせ探索処理の流れについて説明する。図9は、組み合わせ探索処理の流れを示すフローチャートである。
次に、交叉及び突然変異に基づいて選択/非選択を決定する処理の具体例について説明する。図10は、交叉及び突然変異に基づいて選択/非選択を決定する処理の具体例を示す図である。図10において、それぞれの矩形は、候補に含まれるそれぞれの代入文に関するプログラムコードを表している。また、それぞれの矩形に含まれる数値は、それぞれの代入文に関するプログラムコードが選択されたか否かを表している。具体的には、"0"は非選択を、"1"は選択を表している。
上記第1の実施形態では、実行回数が上位の代入文に関するプログラムコード320を抽出する際の抽出方法の詳細について言及しなかったが、当該抽出方法には、任意の抽出方法が適用されうる。例えば、実行回数が上位N個(あるいは、上位M%)の、代入文に関するプログラムコードを抽出してもよいし、実行回数が所定の閾値以上の、代入文に関するプログラムコードを抽出してもよい。
(付記1)
対象プログラムを実行することで、各プログラムコードの実行回数を取得し、
前記実行回数が上位の代入文に関するプログラムコードの中から、複数個の代入文に関するプログラムコードの組み合わせを選択し、
選択した組み合わせに含まれる前記複数個の代入文に関するプログラムコードそれぞれについてSIMD演算機能を用いた並列処理が実行されるよう、前記対象プログラムが変更された場合に、該変更された対象プログラムを実行することで、実行精度と演算時間とを算出し、
算出した実行精度と演算時間とが所定の条件を満たすように、前記組み合わせを探索する、
処理をコンピュータが実行する情報処理方法。
(付記2)
実行回数が上位の代入文に関するプログラムコードに対して、進化計算を行うことで、前記組み合わせを探索する、付記1に記載の情報処理方法。
(付記3)
実行回数が上位の代入文に関するプログラムコードの中から、複数個の代入文に関するプログラムコードの第1の組み合わせを選択し、実行回数が上位の代入文に関するプログラムコードの中から、複数個の代入文に関するプログラムコードの第2の組み合わせを選択した場合において、第1の組み合わせと第2の組み合わせとを交叉させることで、前記組み合わせを新たに選択する、付記2に記載の情報処理方法。
(付記4)
実行回数が上位の代入文に関するプログラムコードの中から、複数個の代入文に関するプログラムコードの組み合わせを選択した場合において、該組み合わせの一部の選択を非選択に、または、一部の非選択を選択に変更することで、前記組み合わせを新たに選択する、付記2に記載の情報処理方法。
(付記5)
実行回数が上位の代入文に関するプログラムコードのうち、前記実行精度が低く、かつ、前記演算時間が長い代入文に関するプログラムコードを、前記実行回数が上位の代入文に関するプログラムコードから除外する、付記1に記載の情報処理方法。
(付記6)
対象プログラムを実行することで、各プログラムコードの実行回数を取得し、
前記実行回数が上位の代入文に関するプログラムコードの中から、複数個の代入文に関するプログラムコードの組み合わせを選択し、
選択した組み合わせに含まれる前記複数個の代入文に関するプログラムコードそれぞれについてSIMD演算機能を用いた並列処理が実行されるよう、前記対象プログラムが変更された場合に、該変更された対象プログラムを実行することで、実行精度と演算時間とを算出し、
算出した実行精度と演算時間とが所定の条件を満たすように、前記組み合わせを探索する、
処理をコンピュータに実行させるための最適化プログラム。
151 :最適化プログラム
152 :プログラム解析変換コード
153 :オリジナルプログラム
154 :チューニングプログラム
310、330 :実行可能バイナリコード
320 :実行回数が上位の代入文に関するプログラムコード
600 :プロファイル情報
601~605 :プログラムコード
Claims (6)
- 対象プログラムを実行することで、各プログラムコードの実行回数を取得し、
前記実行回数が上位の代入文に関するプログラムコードの中から、複数個の代入文に関するプログラムコードの組み合わせを選択し、
選択した組み合わせに含まれる前記複数個の代入文に関するプログラムコードそれぞれについてSIMD演算機能を用いた並列処理が実行されるよう、前記対象プログラムが変更された場合に、該変更された対象プログラムを実行することで、実行精度と演算時間とを算出し、
算出した実行精度と演算時間とが所定の条件を満たすように、前記組み合わせを探索する、
処理をコンピュータが実行する情報処理方法。 - 実行回数が上位の代入文に関するプログラムコードに対して、進化計算を行うことで、前記組み合わせを探索する、請求項1に記載の情報処理方法。
- 実行回数が上位の代入文に関するプログラムコードの中から、複数個の代入文に関するプログラムコードの第1の組み合わせを選択し、実行回数が上位の代入文に関するプログラムコードの中から、複数個の代入文に関するプログラムコードの第2の組み合わせを選択した場合において、第1の組み合わせと第2の組み合わせとを交叉させることで、前記組み合わせを新たに選択する、請求項2に記載の情報処理方法。
- 実行回数が上位の代入文に関するプログラムコードの中から、複数個の代入文に関するプログラムコードの組み合わせを選択した場合において、該組み合わせの一部の選択を非選択に、または、一部の非選択を選択に変更することで、前記組み合わせを新たに選択する、請求項2に記載の情報処理方法。
- 実行回数が上位の代入文に関するプログラムコードのうち、前記実行精度が低く、かつ、前記演算時間が長い代入文に関するプログラムコードを、前記実行回数が上位の代入文に関するプログラムコードから除外する、請求項1に記載の情報処理方法。
- 対象プログラムを実行することで、各プログラムコードの実行回数を取得し、
前記実行回数が上位の代入文に関するプログラムコードの中から、複数個の代入文に関するプログラムコードの組み合わせを選択し、
選択した組み合わせに含まれる前記複数個の代入文に関するプログラムコードそれぞれについてSIMD演算機能を用いた並列処理が実行されるよう、前記対象プログラムが変更された場合に、該変更された対象プログラムが実行することで、実行精度と演算時間とを算出し、
算出した実行精度と演算時間とが所定の条件を満たすように、前記組み合わせを探索する、
処理をコンピュータに実行させるための最適化プログラム。
Priority Applications (4)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| JP2019168077A JP7263994B2 (ja) | 2019-09-17 | 2019-09-17 | 情報処理方法及び最適化プログラム |
| US17/009,833 US11169814B2 (en) | 2019-09-17 | 2020-09-02 | Information processing method and computer-readable recording medium having stored therein optimization program |
| EP20194305.7A EP3796156A1 (en) | 2019-09-17 | 2020-09-03 | Information processing method and program using an simd operation function |
| CN202010954073.XA CN112596789A (zh) | 2019-09-17 | 2020-09-11 | 信息处理方法和非暂态计算机可读存储介质 |
Applications Claiming Priority (1)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| JP2019168077A JP7263994B2 (ja) | 2019-09-17 | 2019-09-17 | 情報処理方法及び最適化プログラム |
Publications (2)
| Publication Number | Publication Date |
|---|---|
| JP2021047480A JP2021047480A (ja) | 2021-03-25 |
| JP7263994B2 true JP7263994B2 (ja) | 2023-04-25 |
Family
ID=72355872
Family Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| JP2019168077A Active JP7263994B2 (ja) | 2019-09-17 | 2019-09-17 | 情報処理方法及び最適化プログラム |
Country Status (4)
| Country | Link |
|---|---|
| US (1) | US11169814B2 (ja) |
| EP (1) | EP3796156A1 (ja) |
| JP (1) | JP7263994B2 (ja) |
| CN (1) | CN112596789A (ja) |
Citations (4)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US20090276766A1 (en) | 2008-05-01 | 2009-11-05 | Yonghong Song | Runtime profitability control for speculative automatic parallelization |
| JP2013242604A (ja) | 2010-09-10 | 2013-12-05 | Fixstars Multi Core Labo Corp | 実行モジュール最適化装置、実行モジュール最適化方法、およびプログラム |
| US20160085528A1 (en) | 2014-09-22 | 2016-03-24 | Oracle International Corporation | Automated adaptive compiler optimization |
| WO2018163304A1 (ja) | 2017-03-07 | 2018-09-13 | 三菱電機株式会社 | ソースコード改善装置、ソースコード改善方法及びソースコード改善プログラム |
Family Cites Families (11)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| JP4045802B2 (ja) * | 2002-01-08 | 2008-02-13 | ソニー株式会社 | プログラム処理装置及びプログラム処理方法、記憶媒体、並びにコンピュータ・プログラム |
| CN101452394B (zh) * | 2007-11-28 | 2012-05-23 | 无锡江南计算技术研究所 | 编译方法和编译器 |
| US20100274972A1 (en) * | 2008-11-24 | 2010-10-28 | Boris Babayan | Systems, methods, and apparatuses for parallel computing |
| JP5846005B2 (ja) * | 2012-03-29 | 2016-01-20 | 富士通株式会社 | プログラム、コード生成方法および情報処理装置 |
| US9229524B2 (en) * | 2012-06-27 | 2016-01-05 | Intel Corporation | Performing local power gating in a processor |
| CN103246541B (zh) * | 2013-04-27 | 2016-03-23 | 中国人民解放军信息工程大学 | 一种自动并行化多级并行代价评估方法 |
| JP6331865B2 (ja) * | 2014-08-13 | 2018-05-30 | 富士通株式会社 | プログラム最適化方法,プログラム最適化プログラム及びプログラム最適化装置 |
| US9569127B2 (en) * | 2014-12-29 | 2017-02-14 | International Business Machines Corporation | Computer instructions for limiting access violation reporting when accessing strings and similar data structures |
| EP3208712B1 (en) * | 2016-02-22 | 2020-02-19 | Karlsruher Institut für Technologie | Computer system and method for parallel program code optimization and deployment |
| KR102343652B1 (ko) * | 2017-05-25 | 2021-12-24 | 삼성전자주식회사 | 벡터 프로세서의 서열 정렬 방법 |
| US20190034206A1 (en) * | 2017-11-29 | 2019-01-31 | Harshad Sane | Techniques to mitigate high latency instructions in high frequency execution paths |
-
2019
- 2019-09-17 JP JP2019168077A patent/JP7263994B2/ja active Active
-
2020
- 2020-09-02 US US17/009,833 patent/US11169814B2/en not_active Expired - Fee Related
- 2020-09-03 EP EP20194305.7A patent/EP3796156A1/en not_active Withdrawn
- 2020-09-11 CN CN202010954073.XA patent/CN112596789A/zh active Pending
Patent Citations (4)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US20090276766A1 (en) | 2008-05-01 | 2009-11-05 | Yonghong Song | Runtime profitability control for speculative automatic parallelization |
| JP2013242604A (ja) | 2010-09-10 | 2013-12-05 | Fixstars Multi Core Labo Corp | 実行モジュール最適化装置、実行モジュール最適化方法、およびプログラム |
| US20160085528A1 (en) | 2014-09-22 | 2016-03-24 | Oracle International Corporation | Automated adaptive compiler optimization |
| WO2018163304A1 (ja) | 2017-03-07 | 2018-09-13 | 三菱電機株式会社 | ソースコード改善装置、ソースコード改善方法及びソースコード改善プログラム |
Also Published As
| Publication number | Publication date |
|---|---|
| JP2021047480A (ja) | 2021-03-25 |
| CN112596789A (zh) | 2021-04-02 |
| US20210081210A1 (en) | 2021-03-18 |
| US11169814B2 (en) | 2021-11-09 |
| EP3796156A1 (en) | 2021-03-24 |
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| US5742803A (en) | Method of performing a compilation process for determining a branch probability and an apparatus for performing the compilation process | |
| JP2021517301A (ja) | 確率的丸めロジック | |
| US10990073B2 (en) | Program editing device, program editing method, and computer readable medium | |
| JP5169322B2 (ja) | 変数最適化装置、変数最適化プログラム、コンパイラ、変数最適化方法、及びコンパイル方法 | |
| JP7263994B2 (ja) | 情報処理方法及び最適化プログラム | |
| JP5949002B2 (ja) | 画像マッチング方法、およびこの方法を用いた画像マッチング装置およびプログラム | |
| CN119692491B (zh) | 一种量子线路的采样方法及装置 | |
| KR102228995B1 (ko) | 여러 가지 수치 포맷의 데이터를 갖는, 데이터 베이스화된 함수 모델의 연산을 위한 모델 연산 유닛 및 제어 장치 | |
| CN108536585B (zh) | 数据变更影响域分析方法 | |
| JP2015069400A (ja) | ソフトウェアテストシステム | |
| JP2000047998A (ja) | Simd方式の演算器及び演算処理装置 | |
| JP2022034897A (ja) | 情報処理装置、機械学習方法及び機械学習プログラム | |
| CN115167868B (zh) | 代码编译方法、装置、设备及计算机存储介质 | |
| JP5267243B2 (ja) | 動作記述変換装置、動作記述変換方法、およびプログラム | |
| JP5227646B2 (ja) | コンパイラ及びそのコード生成方法 | |
| JP6555005B2 (ja) | 最適化装置、方法およびプログラム | |
| JP6175306B2 (ja) | 制御プログラム分割装置、制御プログラム分割方法及びその記録媒体 | |
| US12175242B2 (en) | Decision tree node instruction unification for parallel processing | |
| JP4327533B2 (ja) | 演算処理プログラム、演算処理方法、および演算処理装置 | |
| JP7207423B2 (ja) | 作業集合選択装置、作業集合選択方法および作業集合選択プログラム | |
| Starke et al. | An FPGA implementation of an investment strategy processor | |
| JPH09160784A (ja) | 並列化コンパイル方式 | |
| JPWO2015194172A1 (ja) | 情報処理装置、データ格納方法、及び、プログラム | |
| CN121986334A (en) | Automatically identifying internal precision required by any function call according to global target precision of program on any program | |
| JPS58114245A (ja) | インデツクス・インクリメントのベクトル化方式 |
Legal Events
| Date | Code | Title | Description |
|---|---|---|---|
| A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20220609 |
|
| TRDD | Decision of grant or rejection written | ||
| A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20230308 |
|
| A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 Effective date: 20230314 |
|
| A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20230327 |
|
| R150 | Certificate of patent or registration of utility model |
Ref document number: 7263994 Country of ref document: JP Free format text: JAPANESE INTERMEDIATE CODE: R150 |