JP4339907B2 - マルチプロセッサ向け最適コード生成方法及びコンパイル装置 - Google Patents
マルチプロセッサ向け最適コード生成方法及びコンパイル装置 Download PDFInfo
- Publication number
- JP4339907B2 JP4339907B2 JP2007275886A JP2007275886A JP4339907B2 JP 4339907 B2 JP4339907 B2 JP 4339907B2 JP 2007275886 A JP2007275886 A JP 2007275886A JP 2007275886 A JP2007275886 A JP 2007275886A JP 4339907 B2 JP4339907 B2 JP 4339907B2
- Authority
- JP
- Japan
- Prior art keywords
- code
- processors
- data
- main memory
- source 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.)
- Expired - Fee Related
Links
- 238000000034 method Methods 0.000 title claims description 341
- 238000012545 processing Methods 0.000 claims description 166
- 230000008569 process Effects 0.000 claims description 137
- 238000004364 calculation method Methods 0.000 claims description 71
- 230000006870 function Effects 0.000 claims description 12
- 238000004458 analytical method Methods 0.000 description 68
- 238000011156 evaluation Methods 0.000 description 41
- 230000009467 reduction Effects 0.000 description 33
- 238000003860 storage Methods 0.000 description 20
- 230000001419 dependent effect Effects 0.000 description 18
- 238000010586 diagram Methods 0.000 description 12
- 238000005457 optimization Methods 0.000 description 9
- 238000006243 chemical reaction Methods 0.000 description 7
- 230000008859 change Effects 0.000 description 4
- 238000004891 communication Methods 0.000 description 4
- 238000005192 partition Methods 0.000 description 4
- 230000001360 synchronised effect Effects 0.000 description 4
- 230000000694 effects Effects 0.000 description 3
- 230000004888 barrier function Effects 0.000 description 2
- 238000007796 conventional method Methods 0.000 description 2
- 238000000605 extraction Methods 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 230000011218 segmentation Effects 0.000 description 2
- 230000009471 action Effects 0.000 description 1
- 230000002411 adverse Effects 0.000 description 1
- 238000012790 confirmation Methods 0.000 description 1
- 239000000470 constituent Substances 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
- 238000011161 development Methods 0.000 description 1
- 230000018109 developmental process Effects 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 230000001771 impaired effect Effects 0.000 description 1
- 230000010354 integration Effects 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 239000000203 mixture Substances 0.000 description 1
- 238000003672 processing method Methods 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 238000012546 transfer 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
- G06F8/45—Exploiting coarse grain parallelism in compilation, i.e. parallelism between groups of instructions
- G06F8/451—Code distribution
- G06F8/452—Loops
Description
図1は、本発明の実施の形態1によるコード生成方法において、その生成されたコードを用いて制御を実行する計算機システムの一例を示した構成図である。この計算機システムは、コードを実行するためのディスプレイ装置101、端末装置102、コマンドを入力するキーボード103、端末に接続された外部記憶装置104、コードを実行する計算ノード群105、計算ノード群に接続された外部記憶装置109からなる。
本実施の形態2では、前述した実施の形態1の図1でCPUが共有キャッシュを備えない場合のコード生成方法の一例を示す。図23は、本発明の実施の形態2によるコード生成方法において、その生成されたコードを用いて制御を実行する計算機システムの一例を示した構成図である。図23の計算機システムは、図1の計算機システムから共有キャッシュを省いた構成となっており、計算ノード群2305の中で各プロセッサ(CPU)2306に共有メモリ2307が接続された構成となっている。
本実施の形態2では、前述した実施の形態1の図7でソースコード701のループ制御変数が定数ではなく変数で与えられている場合のコード生成方法の一例を示す。図26は、本発明の実施の形態3によるコード生成方法において、その評価対象となるソースコードの一例を示す図である。図26に示すソースコード2601は、図7のソースコード701において定数となっているループ制御変数i=1〜400が、変数i=m〜nで与えられている。
102,2302 端末装置
103,302,2303 キーボード
104,2304 外部記憶装置
105,2305 計算ノード群
109,305,2309 外部記憶装置
108,304 主記憶装置
107 キャッシュメモリ
106,303,2306 プロセッサ(CPU)
301 ディスプレイ装置
302 キーボード
314,401,701,2601 ソースコード
315,411 並列コード
306,402 構文解析部
307,403 中間コードの生成部
308,404 解析部
309,414 処理内容テーブル
310,415 再利用データテーブル
311,416 主記憶データテーブル
312,417 処理分割テーブル
313 最適化コード生成部
400 コード変換部(コンパイラ)
405 ループ演算切り出し部
406 依存処理と独立処理解析部
407 データの再利用性解析部
408 主記憶データ引用解析部
409 並列化方法評価部
412 並列化コード生成方針
413 計算機条件入力部
410 最適化コード生成部
702 中間コード
2307 共有メモリ
Claims (13)
- 主記憶またはキャッシュメモリを共有する複数のプロセッサから構成される計算機に対して、前記主記憶から前記複数のプロセッサへのデータ転送量を削減しながら前記複数のプロセッサの実行効率を高めることを目的として、ソースコードから前記複数のプロセッサが処理をする最適な並列コードをコンピュータシステムを用いて生成する方法であって、
前記コンピュータシステムは、
前記ソースコードの処理内容を解析して、前記複数のプロセッサの演算量および演算順序依存関係と、前記キャッシュメモリのデータの再利用性と、前記主記憶または前記キャッシュメモリと前記複数のプロセッサとの間のロードデータ量およびストアデータ量とを分析する第1ステップと、
前記計算機の性能としてユーザによって入力された、前記複数のプロセッサの数量、前記主記憶のアクセス時間または前記キャッシュメモリのアクセス時間、レジスタ数、前記キャッシュメモリの容量、前記複数のプロセッサ間の同期の取得方法と同期にかかる時間を保持する第2ステップと、
前記ソースコードの処理内容を前記複数のプロセッサに分割し、この分割されたソースコードを前記複数のプロセッサで実行した場合の実行サイクル時間を前記第1ステップおよび前記第2ステップに基づいて見積りながら、前記実行サイクル時間が最短となる並列コードを生成する第3ステップとを実行することを特徴とする最適化コードの生成方法。 - 請求項1記載の最適化コードの生成方法において、
前記複数のプロセッサのそれぞれは、SIMD型またはベクトル型プロセッサであることを特徴とする最適化コードの生成方法。 - 請求項1または2記載の最適化コードの生成方法において、
前記第3ステップは、前記ソースコード内に含まれる複数の処理に対して、前記キャッシュメモリのデータの再利用性を高めると共に前記複数のプロセッサから前記主記憶に向けたアクセス回数を少なくする第1方式の分割を行うことを特徴とする最適化コードの生成方法。 - 請求項3記載の最適化コードの生成方法において、
前記第3ステップは、更に、前記ソースコード内に含まれる複数の処理に対して、前記複数のプロセッサによる演算処理量を均等にする第2方式の分割を行うことを特徴とする最適化コードの生成方法。 - 請求項4記載の最適化コードの生成方法において、
前記第3ステップは、前記第1方式の分割が行われた第1ソースコードに対して更に前記第2方式の分割を行うことで第2ソースコードを生成し、前記第1ソースコードと前記第2ソースコードの前記実行サイクル時間を比較して、いずれか実行サイクル時間が短くなる方のソースコードに対応した並列コードを生成することを特徴とする最適化コードの生成方法。 - 請求項4記載の最適化コードの生成方法において、
前記コンピュータシステムは、更に、ユーザによって予め指定された、前記第1方式の分割を行うか前記第2方式の分割を行うかの選択を保持する第4ステップを実行することを特徴とする最適化コードの生成方法。 - 請求項6記載の最適化コードの生成方法において、
前記第4ステップは、前記ユーザが前記ソースコード内に、並列化対象範囲と、前記並列化対象範囲に対して前記第1方式の分割を適用するか前記第2方式の分割を適用するかを記載することで実現されることを特徴とする最適化コードの生成方法。 - 請求項6記載の最適化コードの生成方法において、
前記第4ステップは、前記ユーザがコンパイラコマンドライン上で、ファイル名及び行数を含む並列化対象範囲と、前記並列化対象範囲に対して前記第1方式の分割を適用するか前記第2方式の分割を適用するかを指定することで実現されることを特徴とする最適化コードの生成方法。 - 請求項4記載の最適化コードの生成方法において、
前記第1ステップによって、前記ソースコードに含まれる演算ループのループ制御変数が前記計算機上で並列コードを実行するときまで未確定となることが判明した場合、
前記第3ステップは、前記ループ制御変数の大きさを変更しながら、前記第1方式の分割を適用した場合の前記実行サイクル時間と前記第2方式の分割を適用した場合の前記実行サイクル時間を見積り、前記ループ制御変数の大きさ毎に、前記第1方式の分割か前記第2方式の分割かいずれか前記実行サイクル時間が短い方の方式を選択できるように、前記ループ制御変数の大きさに応じて適用する方式を切り替えるための条件分岐を並列コードに埋め込むことを特徴とする最適化コードの生成方法。 - コンピュータシステムによって実現され、主記憶またはキャッシュメモリを共有する複数のプロセッサから構成される計算機に対して、前記主記憶から前記複数のプロセッサへのデータ転送量を削減しながら前記複数のプロセッサの実行効率を高めることを目的として、ソースコードから前記複数のプロセッサが処理をする最適な並列コードを生成するコンパイル装置であって、
前記ソースコードの処理内容を解析して、前記複数のプロセッサの演算量および演算順序依存関係と、前記キャッシュメモリのデータの再利用性と、前記主記憶または前記キャッシュメモリと前記複数のプロセッサとの間のロードデータ量およびストアデータ量とを分析する第1機能と、
前記計算機の性能としてユーザによって入力された、前記複数のプロセッサの数量、前記主記憶のアクセス時間または前記キャッシュメモリのアクセス時間、レジスタ数、前記キャッシュメモリの容量、前記複数のプロセッサ間の同期の取得方法と同期にかかる時間を保持する第2機能と、
前記ソースコードの処理内容を前記複数のプロセッサに分割し、この分割されたソースコードを前記複数のプロセッサで実行した場合の実行サイクル時間を前記第1機能および前記第2機能に基づいて見積りながら、前記実行サイクル時間が最短となる並列コードを生成する第3機能とを有することを特徴とするコンパイル装置。 - 請求項10記載のコンパイル装置において、
前記第3機能は、前記ソースコード内に含まれる複数の処理に対して、前記キャッシュメモリのデータの再利用性を高めると共に前記複数のプロセッサから前記主記憶に向けたアクセス回数を少なくする第1方式の分割を行うことを特徴とするコンパイル装置。 - 請求項11記載のコンパイル装置において、
前記第3機能は、更に、前記ソースコード内に含まれる複数の処理に対して、前記複数のプロセッサによる演算処理量を均等にする第2方式の分割を行うことを特徴とするコンパイル装置。 - 請求項12記載のコンパイル装置において、
前記第3機能は、前記第1方式の分割が行われた第1ソースコードに対して更に前記第2方式の分割を行うことで第2ソースコードを生成し、前記第1ソースコードと前記第2ソースコードの前記実行サイクル時間を比較して、いずれか実行サイクル時間が短くなる方のソースコードに対応した並列コードを生成することを特徴とするコンパイル装置。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2007275886A JP4339907B2 (ja) | 2007-10-24 | 2007-10-24 | マルチプロセッサ向け最適コード生成方法及びコンパイル装置 |
US12/068,421 US8296746B2 (en) | 2007-10-24 | 2008-02-06 | Optimum code generation method and compiler device for multiprocessor |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2007275886A JP4339907B2 (ja) | 2007-10-24 | 2007-10-24 | マルチプロセッサ向け最適コード生成方法及びコンパイル装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2009104422A JP2009104422A (ja) | 2009-05-14 |
JP4339907B2 true JP4339907B2 (ja) | 2009-10-07 |
Family
ID=40584573
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2007275886A Expired - Fee Related JP4339907B2 (ja) | 2007-10-24 | 2007-10-24 | マルチプロセッサ向け最適コード生成方法及びコンパイル装置 |
Country Status (2)
Country | Link |
---|---|
US (1) | US8296746B2 (ja) |
JP (1) | JP4339907B2 (ja) |
Families Citing this family (26)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8509569B2 (en) * | 2008-02-11 | 2013-08-13 | Apple Inc. | Optimization of image processing using multiple processing units |
CN102144222B (zh) * | 2008-07-02 | 2014-11-05 | 国立大学法人东京工业大学 | 执行时间估计方法、执行时间估计程序以及执行时间估计装置 |
JP5148674B2 (ja) * | 2010-09-27 | 2013-02-20 | 株式会社東芝 | プログラム並列化装置およびプログラム |
US9489183B2 (en) | 2010-10-12 | 2016-11-08 | Microsoft Technology Licensing, Llc | Tile communication operator |
US9430204B2 (en) | 2010-11-19 | 2016-08-30 | Microsoft Technology Licensing, Llc | Read-only communication operator |
US8479185B2 (en) * | 2010-12-09 | 2013-07-02 | Oracle International Corporation | Method and system for utilizing parallelism across loops |
US9507568B2 (en) | 2010-12-09 | 2016-11-29 | Microsoft Technology Licensing, Llc | Nested communication operator |
JP5810316B2 (ja) * | 2010-12-21 | 2015-11-11 | パナソニックIpマネジメント株式会社 | コンパイル装置、コンパイルプログラム及びループ並列化方法 |
US9395957B2 (en) | 2010-12-22 | 2016-07-19 | Microsoft Technology Licensing, Llc | Agile communication operator |
US8516197B2 (en) | 2011-02-11 | 2013-08-20 | International Business Machines Corporation | Write-through cache optimized for dependence-free parallel regions |
US8752036B2 (en) * | 2011-10-31 | 2014-06-10 | Oracle International Corporation | Throughput-aware software pipelining for highly multi-threaded systems |
US20140068581A1 (en) * | 2012-08-30 | 2014-03-06 | International Business Machines Corporation | Optimized division of work among processors in a heterogeneous processing system |
US9244677B2 (en) * | 2012-09-28 | 2016-01-26 | Intel Corporation | Loop vectorization methods and apparatus |
US10133557B1 (en) * | 2013-01-11 | 2018-11-20 | Mentor Graphics Corporation | Modifying code to reduce redundant or unnecessary power usage |
WO2014115613A1 (ja) * | 2013-01-23 | 2014-07-31 | 学校法人 早稲田大学 | 並列性の抽出方法及びプログラムの作成方法 |
EP2972781A4 (en) | 2013-03-15 | 2016-10-19 | Intel Corp | METHOD AND SYSTEMS FOR VECTORIZING SCALAR COMPUTER PROGRAM GRINDINGS WITH GRINDING DEPENDENCIES |
JP6160232B2 (ja) | 2013-05-17 | 2017-07-12 | 富士通株式会社 | コンパイルプログラムおよびコンパイル方法 |
US9698791B2 (en) | 2013-11-15 | 2017-07-04 | Scientific Concepts International Corporation | Programmable forwarding plane |
US10326448B2 (en) | 2013-11-15 | 2019-06-18 | Scientific Concepts International Corporation | Code partitioning for the array of devices |
US9294097B1 (en) | 2013-11-15 | 2016-03-22 | Scientific Concepts International Corporation | Device array topology configuration and source code partitioning for device arrays |
JP6201788B2 (ja) | 2014-01-29 | 2017-09-27 | 富士通株式会社 | ループ分割検出プログラム及びループ分割検出方法 |
WO2018115970A1 (en) * | 2016-12-19 | 2018-06-28 | (Un)Manned N.V. | Method and apparatus for real-time control loop application execution from a high-level description |
JP2021005287A (ja) | 2019-06-27 | 2021-01-14 | 富士通株式会社 | 情報処理装置及び演算プログラム |
US20220019491A1 (en) * | 2020-07-17 | 2022-01-20 | Preferred Networks, Inc. | Method of determining split scheme, determining device, and computing system |
JP2023076223A (ja) | 2021-11-22 | 2023-06-01 | 富士通株式会社 | 分割プログラムおよび分割方法 |
JP2023084609A (ja) * | 2021-12-07 | 2023-06-19 | 富士通株式会社 | 変換プログラムおよび変換方法 |
Family Cites Families (17)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CA2109799A1 (en) * | 1991-05-24 | 1992-12-10 | Daniel Mark Nosenchuck | Optimizing compiler for computers |
US6226790B1 (en) * | 1997-02-28 | 2001-05-01 | Silicon Graphics, Inc. | Method for selecting optimal parameters for compiling source code |
JP3729644B2 (ja) | 1998-06-29 | 2005-12-21 | 株式会社日立製作所 | ループ並列化方法 |
US7143401B2 (en) * | 2000-02-17 | 2006-11-28 | Elbrus International | Single-chip multiprocessor with cycle-precise program scheduling of parallel execution |
US7275242B2 (en) * | 2002-10-04 | 2007-09-25 | Hewlett-Packard Development Company, L.P. | System and method for optimizing a program |
US8276135B2 (en) * | 2002-11-07 | 2012-09-25 | Qst Holdings Llc | Profiling of software and circuit designs utilizing data operation analyses |
FR2865047B1 (fr) * | 2004-01-14 | 2006-04-07 | Commissariat Energie Atomique | Systeme de generation automatique de codes optimises |
US7765534B2 (en) * | 2004-04-30 | 2010-07-27 | International Business Machines Corporation | Compiler with cache utilization optimizations |
JP2006268070A (ja) | 2005-03-22 | 2006-10-05 | Hitachi Ltd | 並列化コンパイル処理方法及び並列化されたオブジェクトコードを実行する並列計算機 |
US20060236310A1 (en) * | 2005-04-19 | 2006-10-19 | Domeika Max J | Methods and apparatus to iteratively compile software to meet user-defined criteria |
US8447580B2 (en) * | 2005-05-31 | 2013-05-21 | The Mathworks, Inc. | Modeling of a multiprocessor system |
KR100806274B1 (ko) * | 2005-12-06 | 2008-02-22 | 한국전자통신연구원 | 멀티 쓰레디드 프로세서 기반의 병렬 시스템을 위한 적응형실행 방법 |
US8104030B2 (en) * | 2005-12-21 | 2012-01-24 | International Business Machines Corporation | Mechanism to restrict parallelization of loops |
US7765536B2 (en) * | 2005-12-21 | 2010-07-27 | Management Services Group, Inc. | System and method for the distribution of a program among cooperating processors |
JP4784827B2 (ja) * | 2006-06-06 | 2011-10-05 | 学校法人早稲田大学 | ヘテロジニアスマルチプロセッサ向けグローバルコンパイラ |
US8136102B2 (en) * | 2006-06-20 | 2012-03-13 | Google Inc. | Systems and methods for compiling an application for a parallel-processing computer system |
JP4231516B2 (ja) * | 2006-08-04 | 2009-03-04 | 株式会社日立製作所 | 実行コードの生成方法及びプログラム |
-
2007
- 2007-10-24 JP JP2007275886A patent/JP4339907B2/ja not_active Expired - Fee Related
-
2008
- 2008-02-06 US US12/068,421 patent/US8296746B2/en active Active
Also Published As
Publication number | Publication date |
---|---|
JP2009104422A (ja) | 2009-05-14 |
US8296746B2 (en) | 2012-10-23 |
US20090113404A1 (en) | 2009-04-30 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP4339907B2 (ja) | マルチプロセッサ向け最適コード生成方法及びコンパイル装置 | |
JP6525286B2 (ja) | プロセッサコア及びプロセッサシステム | |
JP4042604B2 (ja) | プログラム並列化装置,プログラム並列化方法およびプログラム並列化プログラム | |
US6718541B2 (en) | Register economy heuristic for a cycle driven multiple issue instruction scheduler | |
US9639371B2 (en) | Solution to divergent branches in a SIMD core using hardware pointers | |
US8683468B2 (en) | Automatic kernel migration for heterogeneous cores | |
JP2921190B2 (ja) | 並列実行方式 | |
US20050193359A1 (en) | Method and apparatus for designing circuits using high-level synthesis | |
EP2951682B1 (en) | Hardware and software solutions to divergent branches in a parallel pipeline | |
JP2014216021A (ja) | バッチスレッド処理のためのプロセッサ、コード生成装置及びバッチスレッド処理方法 | |
JP6492943B2 (ja) | 計算機、コンパイル方法、コンパイルプログラム、およびパイプライン処理プログラム | |
JP3765923B2 (ja) | ハードウェア合成方法およびハードウェア合成装置並びにハードウェア合成プログラムを記録した記録媒体 | |
JP4830108B2 (ja) | プログラム処理装置、プログラム処理方法、並列処理プログラム用コンパイラおよび並列処理プログラム用コンパイラを格納した記録媒体 | |
US20050257200A1 (en) | Generating code for a configurable microprocessor | |
KR102062208B1 (ko) | 멀티스레드 프로그램 코드의 변환 장치 및 방법 | |
JP2000284970A (ja) | プログラム変換装置及びプロセッサ | |
US9383981B2 (en) | Method and apparatus of instruction scheduling using software pipelining | |
JP5979965B2 (ja) | 回路設計支援装置及び回路設計支援方法及びプログラム | |
JPH04293150A (ja) | コンパイル方法 | |
JP7115563B2 (ja) | コンパイル装置、コンパイル方法、及び制御プログラム | |
JP7088276B1 (ja) | コンパイル装置、コンパイル方法、及びコンパイルプログラム | |
US11675572B2 (en) | Sharing data structures | |
EP4227795A1 (en) | A computer-implemented method and a computer-readable medium | |
JP5821697B2 (ja) | コンパイル方法、コンパイルプログラム及びコンパイル装置 | |
JPH04252336A (ja) | プログラム最適化処理装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
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: 20090609 |
|
A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20090702 |
|
R150 | Certificate of patent or registration of utility model |
Free format text: JAPANESE INTERMEDIATE CODE: R150 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20120710 Year of fee payment: 3 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20130710 Year of fee payment: 4 |
|
LAPS | Cancellation because of no payment of annual fees |