JP4819442B2 - コンパイル処理方法、コンパイル処理装置及びコンパイル処理プログラム - Google Patents
コンパイル処理方法、コンパイル処理装置及びコンパイル処理プログラム Download PDFInfo
- Publication number
- JP4819442B2 JP4819442B2 JP2005252969A JP2005252969A JP4819442B2 JP 4819442 B2 JP4819442 B2 JP 4819442B2 JP 2005252969 A JP2005252969 A JP 2005252969A JP 2005252969 A JP2005252969 A JP 2005252969A JP 4819442 B2 JP4819442 B2 JP 4819442B2
- Authority
- JP
- Japan
- Prior art keywords
- loop
- statement
- data
- sparse matrix
- loop statement
- 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
Images
Landscapes
- Devices For Executing Special Programs (AREA)
Description
DO J=1,N
DO I=1,M
A(I,J)=A(I,J)+B(J)*C
ENDDO
ENDDO
という行列Bの演算を実行する2重ループでは、図7に示すように、内側ループをM回実行することになる。
MAX(CPU1の実行時間 ,CPU2の実行時間 ,・・ ,CPUnの実行時間)
で求めることができる。
並列化しない場合 : T*N
並列化する場合 : T*(N/2)
となる。
DO J=1,N
DO I=1,M
A(I,J)=A(I,J)+B(J)*C
ENDDO
ENDDO
という疎行列Bの演算を実行する2重ループ文で説明するならば、図1(a)に示すように、疎行列BのデータB(J)が0である場合には内側ループ文の実行を省略でき、かつ、このデータB(J)が内側ループの回転により値が更新されないので、この内側ループ文の直前に、B(J)の値が0であるのかを検査して、0である場合には内側ループ文を実行しないようにするという命令文(図中に示す*部分の命令文)を挿入するという構成を採る。
DO I=1,M
A(I)=A(I)+B(I)*C
ENDDO
という1重ループ文に上記の命令文(図中に示す*部分の命令文:不要な演算の実行を省略可能にする命令文)を挿入すると、B(I)の値が0であるかどうかに関わらずに、ループが1回転する毎に、この命令文を実行しなければならないことから、B(I)の値がほとんど0であっても、この命令文を実行することによるオーバヘッドにより実行時間を短縮することが難しくなる。
DO J=1,N
DO I=1,M
A(I,J)=A(I,J)+B(J)*C
ENDDO
ENDDO
という疎行列Bの演算を実行する2重ループについて、2つのCPU1,2の並列プロセッサ向けに並列化すると、図8に示すようなループが実行されることになり、上述したように、CPU台数に応じて実行時間を大幅に短縮できるようになる。
A=A+B*C,A=A−B*C,A=A+B/C,A=A−B/C
という演算パターンがあるのかを調べる。
IF(B(k−1).EQ .0) GOTO 10
という命令文を挿入したり、図6中の*2で示すように、
IF(B(k).EQ .0) GOTO 20
という命令文を挿入するのである。
A=A+B*C,A=A−B*C,A=A+B/C,A=A−B/C
という演算パターンがあるのかを調べる。
2 ソースプログラム
3 オブジェクトプログラム
10 プログラム入力部
11 最適化処理部
12 オブジェクト生成部
110 検出部
111 判断部
112 挿入部
113 並列化部
Claims (5)
- ソースプログラムをコンパイルするコンパイル処理方法において、
コンピュータを検出手段として機能させて、ソースプログラムに記述される多重ループ文について、その多重ループ文の最内ループ文に、疎行列を含み、かつ、その疎行列の値であるデータが0である場合に実行を省略できる演算を持つものを検出する過程と、
前記コンピュータを判断手段として機能させて、上記検出した多重ループ文の最内ループ文について、その最内ループ文の持つ演算の疎行列の値であるデータがループの回転により値の更新されないデータであるのかを判断する過程と、
前記コンピュータを挿入手段として機能させて、上記値の更新されないデータであることを判断した最内ループ文の直前に、疎行列の値であるデータが0であるのかを検査して、0である場合には最内ループ文内の演算を行わずに次の回転に進むことを指示する命令文を挿入する過程と、
前記コンピュータを並列化手段として機能させて、上記命令文を挿入した多重ループ文のうちの前記最内ループ分よりも外側のループ分について1回転毎にループを分割し、前記ソースプログラムをコンパイルして得られるプログラムを実行する複数の処理装置の各処理装置に、分割された各ループを割り当てて、前記各処理装置に割り当てた各ループの命令を実行させるようにサイクリック方式の形で並列化する過程とを備えることを、
特徴とするコンパイル処理方法。 - 請求項1に記載のコンパイル処理方法において、
上記検出する過程では、ソースプログラムに記述される1重ループ文について、その1重ループ文に、疎行列を含み、かつ、その疎行列の値であるデータが0である場合に実行を省略できる演算を持つものを検出し、
上記判断する過程では、上記検出した1重ループ文について、その1重ループ文の持つ演算の疎行列の値であるデータがループの回転により値の更新されないデータであるのかを判断し、
上記挿入する過程では、上記値の更新されないデータであることを判断した1重ループ文の直前に、疎行列の値であるデータが0であるのかを検査して、0である場合には1重ループ文内の演算を行わずに次の回転に進むことを指示する命令文を挿入し、
上記並列化する過程では、上記命令文を挿入した1重ループ文を1回転毎にループを分割して複数の処理装置に周期的に命令を実行させるようにサイクリック方式の形で並列化することを、
特徴とするコンパイル処理方法。 - ソースプログラムをコンパイルするコンピュータによるコンパイル処理装置において、
ソースプログラムに記述される多重ループ文について、その多重ループ文の最内ループ文に、疎行列を含み、かつ、その疎行列の値であるデータが0である場合に実行を省略できる演算を持つものを検出する検出手段と、
上記検出手段が検出した多重ループ文の最内ループ文について、その最内ループ文の持つ演算の疎行列の値であるデータがループの回転により値の更新されないデータであるのかを判断する判断手段と、
上記判断手段が値の更新されないデータであることを判断した最内ループ文の直前に、疎行列の値であるデータが0であるのかを検査して、0である場合には最内ループ文内の演算を行わずに次の回転に進むことを指示する命令文を挿入する挿入手段と、
上記挿入手段が命令文を挿入した多重ループ文のうちの前記最内ループ分よりも外側のループ分について1回転毎にループを分割し、前記ソースプログラムをコンパイルして得られるプログラムを実行する複数の処理装置の各処理装置に、分割された各ループを割り当てて、前記各処理装置に割り当てた各ループの命令を実行させるようにサイクリック方式の形で並列化する並列化手段とを備えることを、
特徴とするコンパイル処理装置。 - 請求項3に記載のコンパイル処理装置において、
上記検出手段は、ソースプログラムに記述される1重ループ文について、その1重ループ文に、疎行列を含み、かつ、その疎行列の値であるデータが0である場合に実行を省略できる演算を持つものを検出し、
上記判断手段は、上記検出手段が検出した1重ループ文について、その1重ループ文の持つ演算の疎行列の値であるデータがループの回転により値の更新されないデータであるのかを判断し、
上記挿入手段は、上記判断手段が値の更新されないデータであることを判断した1重ループ文の直前に、疎行列の値であるデータが0であるのかを検査して、0である場合には1重ループ文内の演算を行わずに次の回転に進むことを指示する命令文を挿入し、
上記並列化手段は、上記挿入手段が命令文を挿入した1重ループ文を1回転毎にループを分割して複数の処理装置に周期的に命令を実行させるようにサイクリック方式の形で並列化することを、
特徴とするコンパイル処理装置。 - ソースプログラムをコンパイルするコンパイル処理プログラムにおいて、
コンピュータを、
ソースプログラムに記述される多重ループ文について、その多重ループ文の最内ループ文に、疎行列を含み、かつ、その疎行列の値であるデータが0である場合に実行を省略できる演算を持つものを検出する処理を行う検出手段と、
上記検出した多重ループ文の最内ループ文について、その最内ループ文の持つ演算の疎行列の値であるデータがループの回転により値の更新されないデータであるのかを判断する処理を行う判断手段と、
上記値の更新されないデータであることを判断した最内ループ文の直前に、疎行列の値であるデータが0であるのかを検査して、0である場合には最内ループ文内の演算を行わずに次の回転に進むことを指示する命令文を挿入する処理を行う挿入手段と、
上記命令文を挿入した多重ループ文のうちの前記最内ループ分よりも外側のループ分について1回転毎にループを分割し、前記ソースプログラムをコンパイルして得られるプログラムを実行する複数の処理装置の各処理装置に、分割された各ループを割り当てて、前記各処理装置に割り当てた各ループの命令を実行させるようにサイクリック方式の形で並列化する並列化手段と
して機能させるためのコンパイル処理プログラム。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2005252969A JP4819442B2 (ja) | 2005-09-01 | 2005-09-01 | コンパイル処理方法、コンパイル処理装置及びコンパイル処理プログラム |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2005252969A JP4819442B2 (ja) | 2005-09-01 | 2005-09-01 | コンパイル処理方法、コンパイル処理装置及びコンパイル処理プログラム |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2007066128A JP2007066128A (ja) | 2007-03-15 |
JP4819442B2 true JP4819442B2 (ja) | 2011-11-24 |
Family
ID=37928218
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2005252969A Expired - Fee Related JP4819442B2 (ja) | 2005-09-01 | 2005-09-01 | コンパイル処理方法、コンパイル処理装置及びコンパイル処理プログラム |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP4819442B2 (ja) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113672232B (zh) * | 2021-07-09 | 2024-06-11 | 华为技术有限公司 | 程序编译方法和装置 |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH0475139A (ja) * | 1990-07-18 | 1992-03-10 | Toshiba Corp | ループ並列化装置 |
JP4565201B2 (ja) * | 2003-03-28 | 2010-10-20 | 独立行政法人科学技術振興機構 | 計算装置、計算方法、プログラムおよび記録媒体 |
-
2005
- 2005-09-01 JP JP2005252969A patent/JP4819442B2/ja not_active Expired - Fee Related
Also Published As
Publication number | Publication date |
---|---|
JP2007066128A (ja) | 2007-03-15 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP4629768B2 (ja) | 並列化処理方法、システム、及びプログラム | |
TWI733798B (zh) | 在執行向量操作時管理位址衝突的設備及方法 | |
US9753727B2 (en) | Partial vectorization compilation system | |
US9195444B2 (en) | Compiler method and compiler apparatus for optimizing a code by transforming a code to another code including a parallel processing instruction | |
JP5479942B2 (ja) | 並列化方法、システム、及びプログラム | |
EP2799986B1 (en) | Apparatus and method for translating multithread program code | |
Saumya et al. | DARM: control-flow melding for SIMT thread divergence reduction | |
JP4819442B2 (ja) | コンパイル処理方法、コンパイル処理装置及びコンパイル処理プログラム | |
EP2181389A2 (en) | Data processing with protection against soft errors | |
JP3196625B2 (ja) | 並列化コンパイル方式 | |
Shao et al. | Map-reduce inspired loop parallelization on CGRA | |
Chandraiah et al. | Designer-controlled generation of parallel and flexible heterogeneous MPSoC specification | |
JP6558310B2 (ja) | 並列化方法、並列化ツール | |
Saumya et al. | DARM: Control-Flow Melding for SIMT Thread Divergence Reduction--Extended Version | |
KR102025694B1 (ko) | 재구성 가능한 프로세서의 검증 방법 | |
JP6600888B2 (ja) | 並列化コンパイラ、並列化コンパイル装置、及び並列プログラムの生成方法 | |
US20230176851A1 (en) | Computer-readable recording medium storing conversion program and conversion method | |
JP2008015665A (ja) | プログラム解析方法及びプログラム解析装置 | |
JP6810380B2 (ja) | ソースプログラム変換システム、ソースプログラム変換方法、及びソースプログラム変換プログラム | |
JPH02132525A (ja) | コンパイル方法 | |
JP2870218B2 (ja) | 並列実行命令列生成方式 | |
JP2022011264A (ja) | ソフトウェア開発支援装置及びソフトウェア開発支援方法 | |
JP2009140451A (ja) | コンパイラ装置、コンパイル方法およびそのプログラム | |
JP5821697B2 (ja) | コンパイル方法、コンパイルプログラム及びコンパイル装置 | |
JP2004139369A (ja) | 定数アドレス領域を指示するポインタ解析方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20080324 |
|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20100426 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20110322 |
|
A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20110523 |
|
RD03 | Notification of appointment of power of attorney |
Free format text: JAPANESE INTERMEDIATE CODE: A7423 Effective date: 20110523 |
|
RD04 | Notification of resignation of power of attorney |
Free format text: JAPANESE INTERMEDIATE CODE: A7424 Effective date: 20110523 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20110614 |
|
A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20110812 |
|
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: 20110830 |
|
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: 20110901 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20140909 Year of fee payment: 3 |
|
R150 | Certificate of patent or registration of utility model |
Free format text: JAPANESE INTERMEDIATE CODE: R150 |
|
LAPS | Cancellation because of no payment of annual fees |