JP3673809B2 - Multiple repetitive processing massively parallelized source code automatic generation program, automatic generation apparatus and automatic generation method - Google Patents

Multiple repetitive processing massively parallelized source code automatic generation program, automatic generation apparatus and automatic generation method Download PDF

Info

Publication number
JP3673809B2
JP3673809B2 JP2001283957A JP2001283957A JP3673809B2 JP 3673809 B2 JP3673809 B2 JP 3673809B2 JP 2001283957 A JP2001283957 A JP 2001283957A JP 2001283957 A JP2001283957 A JP 2001283957A JP 3673809 B2 JP3673809 B2 JP 3673809B2
Authority
JP
Japan
Prior art keywords
source code
processors
automatic generation
parallel
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.)
Expired - Fee Related
Application number
JP2001283957A
Other languages
Japanese (ja)
Other versions
JP2003091422A (en
Inventor
浩通 山本
幸造 本間
正廣 吉田
純一 大久保
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Japan Aerospace Exploration Agency JAXA
Mitsubishi Space Software Co Ltd
Original Assignee
Japan Aerospace Exploration Agency JAXA
Mitsubishi Space Software Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Japan Aerospace Exploration Agency JAXA, Mitsubishi Space Software Co Ltd filed Critical Japan Aerospace Exploration Agency JAXA
Priority to JP2001283957A priority Critical patent/JP3673809B2/en
Publication of JP2003091422A publication Critical patent/JP2003091422A/en
Application granted granted Critical
Publication of JP3673809B2 publication Critical patent/JP3673809B2/en
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Images

Description

【0001】
【発明の属する技術分野】
本発明は、通常の非並列のソースコード(ソースプログラム)から複数のプロセッサ(CPU)で並列実行可能な並列化ソースコード(並列化ソースプログラム)を自動的に生成するための多重反復処理超並列化ソースコード自動生成プログラム、自動生成装置および自動生成方法に関する。
【0002】
【従来の技術】
自然科学分野、工学分野等における数値モデリングやシミュレーション計算等では、膨大な回数の反復計算処理が必要とされている。
【0003】
このような場合、1個のプロセッサ(CPU)を用いて計算処理を実行していたのでは、処理時間が膨大になるため、複数のプロセッサを用いて並列処理を行うことにより、処理実行時間を実用化レベルにまで短縮させている。
【0004】
複数のプロセッサを用いて並列処理を行うためには、複数のプロセッサが並列実行可能な並列化ソースコードが必要であり、この並列化ソースコードを生成する方法の1つに、通常の非並列なソースコードを複数のプロセッサで並列処理可能な並列化ソースコードに変換する方法が考えられている。
【0005】
【発明が解決しようとする課題】
しかしながら、従来の並列化ソースコード生成する方法においては、多重にネストされた多重ループ構造を有する非並列化ソースコードを複数のプロセッサが実行可能な並列化ソースコードに自動的に変換するための具体的な方法については開示されておらず、上述した多重ループ構造を有する非並列化ソースコードを並列化ソースコードに自動変換することができる自動変換プログラム、自動変換装置および方法の開発が待望されていた。
【0006】
本発明は上述した事情に鑑みてなされたものであり、多重にネストされた多重ループ構造を有する非並列化ソースコードを複数のプロセッサで並列実行可能な並列化ソースコードに自動的に変換するための具体的な自動生成プログラム、自動生成装置および自動生成方法を提供することにより、並列化処理の利用促進に寄与することをその第1の目的とする。
【0007】
また、本発明は、上記第1の目的に加えて、複数のプロセッサをフルに利用して多重ループの反復処理を並列に行うとともに、そのプロセッサそれぞれに分担される多重ループの反復処理回数を均等化して、複数のプロセッサを用いた並列処理の高効率化を図ることをその第2の目的とする。
【0008】
【課題を解決するための手段】
上述した目的を達成するための本発明の第1の態様によれば、n(nは2以上の整数)重にネストされたループを含む非並列のソースコードから、m(mは2以上の整数)個のプロセッサで並列実行可能な並列化ソースコードを自動的に生成する機能をコンピュータに実現させる並列化ソースコード自動生成プログラムであって、前記非並列化ソースコードのn重ループそれぞれの初期値式を、前記m個のプロセッサに与えた、各プロセッサを一意に識別する0から始まるm個の連続した整数iak(k=0、・・・、m−1)、およびループj(j=1、・・・、n)毎に定められた増分値δjを用いて下式
【数1】

Figure 0003673809
で表される初期値式Sjに書き換え、書き換えた初期値式Sjおよび増分値δjを用いることにより、前記n重ループ構造部分を、前記m個のプロセッサで分担処理できる構造に変換する機能を前記コンピュータに実現させる。
【0009】
本発明の第1の態様において、前記m個のプロセッサそれぞれに分担される前記n重ループ構造部分の分担反復回数が均等である。
【0010】
また、上述した目的を達成するための本発明の第2の態様によれば、n(nは2以上の整数)重にネストされたループを含む非並列のソースコードから、m(mは2以上の整数)個のプロセッサで並列実行可能な並列化ソースコードを自動的に生成する並列化ソースコード自動生成装置であって、前記非並列化ソースコードのn重ループそれぞれの初期値式を、前記m個のプロセッサに与えた、各プロセッサを一意に識別する0から始まるm個の連続した整数iak(k=0、・・・、m−1)、およびループj(j=1、・・・、n)毎に定められた増分値δjを用いて下式
【数2】
Figure 0003673809
で表される初期値式Sjに書き換え、書き換えた初期値式Sjおよび増分値δjを用いることにより、前記n重ループ構造部分を、前記m個のプロセッサで分担処理できる構造に変換する手段を備えている。
【0011】
さらに、上述した目的を達成するための本発明の第3の態様によれば、n(nは2以上の整数)重にネストされたループを含む非並列のソースコードから、m(mは2以上の整数)個のプロセッサで並列実行可能な並列化ソースコード自動的に生成され機能をコンピュータに実現させる並列化ソースコード自動生成方法であって、前記非並列化ソースコードのn重ループそれぞれの初期値式、前記m個のプロセッサに与えられて、各プロセッサ一意に識別される0から始まるm個の連続した整数iak(k=0、・・・、m−1)、およびループj(j=1、・・・、n)毎に定められた増分値δjを用いて下式
【数3】
Figure 0003673809
で表される初期値式Sjに書き換えられて、n重ループ構造部分、前記m個のプロセッサで分担処理される構造に変換される。
【0012】
【発明の実施の形態】
本発明の多重反復処理超並列化ソースコード自動生成プログラム、自動生成装置および自動生成方法に係る実施の形態を添付図面を参照して説明する。
【0013】
図1に示すように、多重反復処理超並列化ソースコード自動生成装置1は、互いに通信可能に接続されたCPU2およびメモリ3を備えている。
【0014】
このCPU2は、予めメモリ3に記憶された多重反復処理超並列化ソースコード自動生成プログラム(コンパイラを含む)Pに従って動作することにより、例えばCD−ROMやハードディスク、DVD−ROM等の記憶装置4に記憶されたn(nは2以上の整数)重にネストされたn重ループを含む非並列化ソースコードSCを読み出してメモリ3に格納する機能と、メモリ3に格納した非並列化ソースコードSCから、m(mは2以上の整数)個のプロセッサia、・・・、iam−1が並列実行可能な並列化ソースコードPSCを自動的に生成する機能と、生成された並列化ソースコードPSCをコンパイルして並列化オブジェクトコードPOCを生成して各プロセッサia、・・・、iam−1にロードする機能(SIMD:Single Instruction Multiple
Data方式に基づく並列化機能)とを実現するようになっている。
【0015】
Figure 0003673809
のプロセッサ番号は、0から始まるm個の連続した整数に対応付けられており、例えば、本実施形態では、プロセッサia、・・・、iam−1のプロセッサ番号(ia、・・・、iam−1で表す)は、m個の連続した整数0、・・・、m−1に設定されている。
【0016】
また、本実施形態では、プロセッサ数mの一例として、プロセッサ数m=30とする。また、m個のプロセッサは、1台のコンピュータに内蔵されていてもよく、あるいは、複数のコンピュータそれぞれに搭載されたものでもよい。
【0017】
具体的には、例えば、上記m個のプロセッサia、・・・、iam−1を含む並列マシン(コンピュータ)に適用される場合には、多重反復処理超並列化ソースコード自動生成装置1は、並列マシンのコンパイラのプリプロセッサとして機能するようになっており、また、例えば、ネットワークで接続された同一あるいは異なるアーキテクチャの複数のコンピュータ(プロセッサ)に対するコンパイラのプリプロセッサとして機能するようになっている。
【0018】
図2は、非並列化ソースコードSCの一例を概略的に示す図である。
【0019】
図2に示すように、非並列化ソースコードSCは、例えばプログラム言語FORTRANで記述されたものであり、n(n=3)重にネストされた非並列化n重ループ(doループ)構造NPを含んでおり、第1ループ(ループ変数i)の反復回数(終値式)は“5”、第2ループ(ループ変数i)の反復回数(終値式)は“4”、第3ループ(ループ変数i)の反復回数(終値式)は“3”であり、この3重ループで構成される走査空間PANを、それぞれのループの反復回数の積で表すとすると、この非並列化3重ループ構造NPの走査空間PANは、5×4×3として示されており、上記プロセッサ数m=30は、走査空間PAN=5×4×3の約数となるように予め設定されている。
【0020】
一方、図3は、CPU2の多重反復処理超並列化ソースコード自動生成プログラムPに従った並列化ソースコード自動生成処理を含む全体処理の一例を示す概略フローチャートである。
【0021】
図3に示すように、CPU2は、記憶装置4に記憶された非並列化ソースコードSCを読み出してメモリ3に格納し(ステップS1)、格納した非並列化ソースコードSCを検索してそのコードSC内の非並列化n(=3)重ループ構造NPを見つけ出す(ステップS2)。
【0022】
次いで、CPU2は、見つけ出した非並列化3重ループ構造NPにおける各ループそれぞれの初期値式(図2においては、i1=1、i2=1、i3=1である)を、30個のプロセッサia0、・・・、ia29にそれぞれ割り当てられたプロセッサ番号iak(k=0、・・・、29)、およびループj(j=1、・・・、3)毎に定められた増分値δjを用いて下式
【数4】
Figure 0003673809
で表される初期値式Sjに書き換え、n重ループ構造部分を、前記m個のプロセッサで分担処理できる構造に変換する(ステップS3)。
【0023】
ここで、本明細書における“mod(x,y)”は、剰余を表す関数であり、例えば、mod(7,4)=3(7÷4の余りが3で3となる)であり、同様に、mod(10,5)=0となる。
次に、本明細書における“Int(z)”は、整数化を表す関数であり、実数zを丸めて、とびとびの値をとる整数にすることである。
【0024】
さらに、本明細書における
【数5】
Figure 0003673809
は、“δ×・・・×δ”を表す。なお、δ=1である。
【0025】
この結果、3重ループそれぞれの初期値式S、S、Sは、m=30個のプロセッサにそれぞれ割り当てられたプロセッサ番号ia(k=0、・・・、29)および増分値δ、δ、δを用いて、それぞれ下式のように表される。
【0026】
【数6】
S1=1+Int{mod(iak,δ1)/δ0}
S2=1+Int{mod(iak,δ2×δ1)/δ1}
S3=1+Int{mod(iak,δ3×δ2×δ1)/(δ2×δ1)}
【0027】
続いて、CPU2は、書き換えた初期値式S、S、S、増分値δ、δ、δおよび各ループに対応する反復回数5、4、3を用いることにより、上記3重非並列化ループ構造NPを含む非並列化ソースコードSCを、30個のプロセッサで分担処理できる構造、すなわち、図4に示す並列化3重ループ構造PNPを含む並列化ソースコードPSCに変換する(ステップS4)。
【0028】
このとき、3重ループ構造における各ループj(j=1、・・・、3)毎の定められた増分値δ、δ、δ、言いかえれば、各ループj(j=1、・・・、3)の分割数δ、δ、δを、対応するループの反復回数5、4、3の約数となる値で、かつそれぞれの積idiv=δ×δ×δがプロセッサ数m=30と等しくなる値、すなわち、δ=5、δ=2、δ=3に設定する。
【0029】
この結果、3重ループそれぞれの初期値式S、S、Sは、m=30個のプロセッサにそれぞれ割り当てられたプロセッサ番号ia(k=0、・・・、29)および増分値δ=5、δ=2、δ=3を用いて、それぞれ下式のように表される。
【0030】
【数7】
S1=1+Int{mod(iak,δ1)/δ0}
=1+Int{mod(iak,5)}
S2=1+Int{mod(iak,δ2×δ1)/δ1}
=1+Int{mod(iak,10)/5}
S3=1+Int{mod(iak,δ3×δ2×δ1)/(δ2×δ1)}
=1+Int{mod(iak,30)/10}
【0031】
したがって、図4に示す並列化ソースコードPSCにおける並列化3重ループ構造PNPそれぞれのループ(i,i,i){=(1,1,1)〜(5,4,3)}は、それぞれ図5に示すプロセッサ番号のプロセッサに分担される。なお、図5のia欄に示された数値は、それぞれのプロセッサに対応づけられた0からはじまる連続した、かつ重複しない整数であり、図5の例では30プロセッサなので、0〜29となっている。
ここでは一例としてプロセッサiaを識別するKの値と、当該プロセッサに対応づけられた数値が等しい場合を示しており、例えば、ループ(i,i,i)=(1,3,1)の処理は、プロセッサia(図5中は“0”)に分担され、ループ(i,i,i)=(5,3,2)の処理は、プロセッサia14(図5中は“14”)に分担される。
【0032】
ここで、本実施形態の3次元走査空間(3重ループ)構造(走査空間→5×4×3)の各ループ処理を、m=30個のプロセッサia、・・・、iam−1に割り振る(分担させる)際の概念的な内容について図6を用いて説明する。
【0033】
すなわち、本実施形態の分担方式では、3次元走査空間(i,i,i){=(1,1,1)〜(5,4,3)}を、それぞれの次元方向の分割数(δ,δ,δ)=(5,2,3)に対応するプロセッサブロックで埋め尽くす発想であり、図6に示すように、プロセッサブロック(δ×δ×δ)=(5×2×3)→プロセッサia〜ia29を3次元走査空間(i,i,i)=(1,1,1)〜(5,2,3)まで順次割り当て、次いで、プロセッサブロック(δ×δ×δ)=(5×2×3)→プロセッサia〜ia29を3次元走査空間(i,i,i)=(1,3,1)〜(5,4,3)まで順次割り当てることにより、上記3次元走査空間(3重ループ)構造(走査空間→5×4×3)の各ループ処理を、m=30個のプロセッサia、・・・、iam−1に対して、全てのプロセッサの分担反復回数が均等(2回)となるように割り当てられる。
【0034】
このようにして、非並列化3重ループ構造NPを含む非並列化コードSCから、並列化3重ループ構造PNPを含む並列化ソースコードPSCが生成されると、CPU2は、その並列化ソースコードPSCをコンパイルして並列化オブジェクトコードPOCに変換し(ステップS5)、変換した並列化オブジェクトコードPOC、並列分担されるプロセッサ数mおよび各プロセッサ自体のプロセッサ番号を、その各プロセッサia、・・・、ia29にそれぞれロードする(ステップS6)。
【0035】
この結果、各プロセッサia、・・・、ia29は、ロードされた並列化オブジェクトコードPOC、並列分担されるプロセッサ数および自らのプロセッサ番号に基づいて、自らのプロセッサに分担されたループ処理を並列的に実行することができる。
【0036】
以上述べたように、本実施形態に基づく多重反復処理超並列化ソースコード自動生成プログラムPに基づく多重反復処理超並列化ソースコード自動生成装置1を用いることにより、n(n=3)重にネストされたn重ループ構造を含む非並列化ソースコードSCから、m(m=30)個のプロセッサia、・・・、ia29で並列処理できる並列化3重ループ構造PNPを含む並列化ソースコードPSCを自動的かつ容易に生成することができるため、並列処理の利用・導入を促進させることができる。
【0037】
また、本実施形態によれば、n(n=3)重にネストされたn重ループ構造を含む非並列化ソースコードSCから、m(m=30)個のプロセッサia、・・・、ia29で並列処理できる並列化3重ループ構造PNPを含む並列化ソースコードPSCを生成する際に、そのプロセッサia、・・・、ia29にお
Figure 0003673809
間で均等に設定することができるため、例えば、本実施形態で例示したように、多重ループを構成する各ループの反復回数(各ループの反復回数=5,4,3)がプロセッサ数m(m=30)に比べて非常に小さい場合でも、その全てのプロセッサia、・・・、ia29に対して計算処理負荷を分散させることが可能になり、並列処理におけるプロセッサ利用効率を向上し、並列化処理速度をさらに向上させることができる。
【0038】
なお、本実施形態においては、m個のプロセッサia、・・・、iam−1のプロセッサ番号を任意のm個の数に設定しておくことも可能であり、その設定されたプロセッサ番号とm個の連続した整数ia、・・・、iam−1(0、・・・、m−1:順不同)との対応関係を設定しておけば、上記(1)式を用いることができる。
【0039】
また、本実施形態においては、非並列化ソースコードにおけるn重ループ構造の一例として、3重ループ構造を並列化する場合について説明したが、本発明はこれに限定されるものではなく、全ての多重ループ構造を並列化する場合に適用可能である。
【0040】
さらに、プロセッサ数や各ループの反復回数も、単なる一例であり、様々なプロセッサ数および反復回数を用いることが可能である。
【0041】
さらにまた、本実施形態においては、並列化対象としての非並列化ソースコードの記述言語を、プログラム言語FORTRANとし、その多重ループ構造をdoループ構造としたが、本発明はこれに限定されるものではなく、他のプログラム言語で記述された他のループ構造(例えば、if文と“go to”文によるループ構造や、for文を用いたループ構造等)に対しても、適用可能である。
【0042】
そして、本実施形態では、プロセッサ数m=30を、n重ループの走査空間PAN、すなわち、n重ループそれぞれのループ反復回数の積(5×4×3)の約数に設定することを、並列化ソースコード生成の条件としたが、本発明はこれに限定されるものではなく、例えば、プロセッサ数m=30が、n重ループの走査空間PANの約数でない場合には、走査空間PANを仮想的に拡張し、上記プロセッサ数m=30で割り切れる値に設定すればよく、本実施形態の多重反復処理超並列化ソースコード自動生成手法を利用することが可能になる。
【0043】
また、本実施形態では、多重反復処理超並列化ソースコード自動生成装置において、生成された並列化ソースコードをコンパイルしてオブジェクトコードを生成する処理も行うように説明したが、本発明はこれに限定されるものではなく、コンパイル処理は、他の装置や各プロセッサが行うように構成してもよい。
【0044】
【発明の効果】
以上述べたように本発明に係る多重反復処理超並列化ソースコード自動生成プログラム、自動生成装置および自動生成方法によれば、n重にネストされたループを含む非並列化ソースコードの初期値式を、m個のプロセッサにそれぞれ割り当てられたプロセッサ番号ia(k=0、・・・、m−1)、およびループj(j=1、・・・、n)毎に定められた増分値δを用いた初期値式Sに書き換えることにより、非並列化ソースコードのn重ループ構造部分を、m個のプロセッサで分担処理できる構造に変換することができるため、非並列化ソースコードの並列化ソースコードへの変換を非常に容易に行うことができ、並列処理の利用・導入を促進させることができる。
【0045】
また、本発明に係る多重反復処理超並列化ソースコード自動生成プログラム、自動生成装置および自動生成方法によれば、n重にネストされたn重ループを含む非並列化ソースコードから、m個のプロセッサで並列処理できる並列化ソースコードを生成する際に、そのプロセッサにおいて分担されるループ処理の回数を、全てのプロセッサ間で均等に設定することができるため、全てのプロセッサを利用して計算処理負荷を分散させることができる。この結果、並列処理におけるプロセッサ利用効率を向上し、並列化処理速度をさらに向上させることができる。
【図面の簡単な説明】
【図1】本発明の実施の形態に係る多重反復処理超並列化ソースコード自動生成装置の概略構成を示すブロック図。
【図2】非並列化ソースコードの一例を概略的に示す図。
【図3】図1に示すCPUの多重反復処理超並列化ソースコード自動生成プログラムに従った並列化ソースコード自動生成処理を含む全体処理の一例を示す概略フローチャート。
【図4】本実施形態におけるCPUの並列化ソースコード自動生成処理により生成された並列化ソースコードの一例を概略的に示す図。
【図5】並列化3重ループ構造それぞれのループ(i,i,i){=(1,1,1)〜(5,4,3)}が分担されるプロセッサを示す図。
【図6】本実施形態の3次元走査空間(3重ループ)構造(走査空間→5×4×3)の各ループ処理を、m=30個のプロセッサia、・・・、iam−1に割り振る(分担させる)際の概念的な内容を説明するための図。
【符号の説明】
1 多重反復処理超並列化ソースコード自動生成装置(コンパイラを含む)
2 CPU
3 メモリ
4 記憶装置
ia、・・・、iam−1 プロセッサ
P 多重反復処理超並列化ソースコード自動生成プログラム(オブジェクトコードを生成するコンパイラを含む)
SC 非並列化ソースコード
POC 並列化オブジェクトコード
NP 非並列化ソースコードの非並列化n重ループ構造
PSC 並列化ソースコード
PNP 並列化ソースコードの並列化n重ループ構造[0001]
BACKGROUND OF THE INVENTION
The present invention is a multi-repetition processing parallel processing for automatically generating parallel source code (parallel source program) that can be executed in parallel by a plurality of processors (CPUs) from ordinary non-parallel source code (source program). The present invention relates to a computerized source code automatic generation program, an automatic generation device, and an automatic generation method.
[0002]
[Prior art]
Numerous iterative calculation processes are required for numerical modeling and simulation calculations in the fields of natural science and engineering.
[0003]
In such a case, if the calculation processing is executed using one processor (CPU), the processing time becomes enormous. Therefore, by executing parallel processing using a plurality of processors, the processing execution time is reduced. It is shortened to a practical level.
[0004]
In order to perform parallel processing using a plurality of processors, parallel source code that can be executed in parallel by a plurality of processors is required. One of the methods for generating the parallel source code is a normal non-parallel source code. A method of converting source code into parallel source code that can be processed in parallel by a plurality of processors has been considered.
[0005]
[Problems to be solved by the invention]
However, in the conventional method for generating parallelized source code, a specific method for automatically converting non-parallelized source code having multiple nested multiple loop structures into parallelized source code that can be executed by a plurality of processors is provided. However, the development of an automatic conversion program, automatic conversion apparatus and method capable of automatically converting the non-parallelized source code having the multi-loop structure described above into parallelized source code is awaited. It was.
[0006]
The present invention has been made in view of the above circumstances, and automatically converts non-parallelized source code having multiple nested multiple loop structures into parallelized source code that can be executed in parallel by a plurality of processors. It is a first object of the present invention to contribute to promoting the use of parallel processing by providing a specific automatic generation program, automatic generation apparatus, and automatic generation method.
[0007]
In addition to the first object, the present invention performs multiple loop iterations in parallel by making full use of a plurality of processors, and equalizes the number of iterations of multiple loops shared by each processor. The second object is to improve the efficiency of parallel processing using a plurality of processors.
[0008]
[Means for Solving the Problems]
According to the first aspect of the present invention for achieving the above-described object, m (m is 2 or more) from non-parallel source code including n (n is an integer of 2 or more) nested loops. An integer parallel) source code automatic generation program for causing a computer to realize a function of automatically generating parallel source code that can be executed in parallel by an integer number of processors, each of the n-fold loops of the non-parallel source code Given a value expression to the m processors, m consecutive integers iak (k = 0,..., M−1) starting from 0 that uniquely identify each processor, and a loop j (j = 1,..., N) using the increment value δj determined for each,
Figure 0003673809
In rewriting the initialization expression Sj represented, by using the initialization expression Sj and increment δj rewritten, the function of converting the n-fold loop structure portion, the sharing process can structure the m processors Make it a computer.
[0009]
In the first aspect of the present invention, the number of repeated iterations of the n-fold loop structure portion shared by each of the m processors is equal.
[0010]
According to the second aspect of the present invention for achieving the above-described object, m (m is 2) from non-parallel source code including n (n is an integer of 2 or more) nested loops. An integer parallel generation source code automatic generation apparatus that automatically generates a parallel source code that can be executed in parallel by a plurality of processors, wherein an initial value expression of each n-fold loop of the non-parallel source code is as follows: Given to the m processors, m consecutive integers iak (k = 0,..., M−1) starting from 0 that uniquely identify each processor, and a loop j (j = 1,...・ Using the increment value δj determined for each n), the following formula
Figure 0003673809
Means for converting the n-fold loop structure portion into a structure that can be shared by the m processors by using the rewritten initial value expression Sj and the rewritten initial value expression Sj and the increment value δj. ing.
[0011]
Furthermore, according to the third aspect of the present invention for achieving the above object, m (m is 2) from non-parallel source code including n (n is an integer of 2 or more) nested loops. more integer) parallel executable parallelized source code processor is a parallel source code automatic generation method to realize the computer automatically generated Ru function, the non-parallel source n-fold loop each of the initial values expression, said given the m processors, m consecutive integers iak starting from 0 each processor Ru is uniquely identified (k = 0, ···, m -1), and Using the increment value δj determined for each loop j (j = 1,..., N),
Figure 0003673809
In rewritten to represented by initialization expression Sj, n heavy loop structure portion, Ru is converted into the m sharing treated Ru structure processor.
[0012]
DETAILED DESCRIPTION OF THE INVENTION
DETAILED DESCRIPTION OF THE PREFERRED EMBODIMENTS Embodiments relating to a multiple iterative processing massively parallelized source code automatic generation program, automatic generation apparatus and automatic generation method of the present invention will be described with reference to the accompanying drawings.
[0013]
As shown in FIG. 1, the multiple iterative processing massively parallelized source code automatic generation apparatus 1 includes a CPU 2 and a memory 3 that are communicably connected to each other.
[0014]
The CPU 2 operates in accordance with a multiple iterative processing and massively parallelized source code automatic generation program (including a compiler) P stored in the memory 3 in advance, so that the storage device 4 such as a CD-ROM, a hard disk, or a DVD-ROM is used. A function of reading the stored non-parallelized source code SC including n-fold loops n (n is an integer of 2 or more) stored in the memory 3 and the non-parallelized source code SC stored in the memory 3 , M (m is an integer of 2 or more) processors ia 0 ,..., Ia m−1 automatically generate parallel source code PSC that can be executed in parallel, and the generated parallel source code PSC compile and parallel object code POC each processor ia 0 to generate a, ..., ability to load the ia m-1 (SIMD Single Instruction Multiple
A parallel function based on the Data method).
[0015]
Figure 0003673809
The processor number, is associated to the m consecutive integers starting from 0, for example, in the present embodiment, the processor ia 0, · · ·, ia m-1 of the processor number (ia 0, · · · , Ia m−1 ) is set to m consecutive integers 0,..., M−1.
[0016]
In the present embodiment, as an example of the number of processors m, the number of processors m = 30. The m processors may be built in one computer, or may be installed in each of a plurality of computers.
[0017]
Specifically, for example, when applied to a parallel machine (computer) including the m processors ia 0 ,. Is configured to function as a preprocessor for a compiler for a parallel machine, and for example, to function as a preprocessor for a compiler for a plurality of computers (processors) of the same or different architecture connected by a network.
[0018]
FIG. 2 is a diagram schematically showing an example of the non-parallelized source code SC.
[0019]
As shown in FIG. 2, the non-parallelized source code SC is described in, for example, the programming language FORTRAN, and has a non-parallelized n-fold loop (do loop) structure NP nested in n (n = 3) layers. The number of iterations (closing formula) of the first loop (loop variable i 1 ) is “5”, the number of iterations (closing formula) of the second loop (loop variable i 2 ) is “4”, and the third loop The number of iterations (closed value expression) of (loop variable i 3 ) is “3”. If the scanning space PAN composed of this triple loop is represented by the product of the number of iterations of each loop, this deparallelization is performed. The scanning space PAN of the triple loop structure NP is shown as 5 × 4 × 3, and the number of processors m = 30 is preset to be a divisor of the scanning space PAN = 5 × 4 × 3. Yes.
[0020]
On the other hand, FIG. 3 is a schematic flowchart showing an example of the entire process including the parallelized source code automatic generation process according to the multiple iterative process massively parallelized source code automatic generation program P of the CPU 2.
[0021]
As shown in FIG. 3, the CPU 2 reads the non-parallelized source code SC stored in the storage device 4 and stores it in the memory 3 (step S1), searches the stored non-parallelized source code SC, and searches for the code. A non-parallelized n (= 3) double loop structure NP in the SC is found (step S2).
[0022]
Next, the CPU 2 calculates an initial value expression (in FIG. 2, i1 = 1, i2 = 1, i3 = 1) of each loop in the found non-parallelized triple loop structure NP, and the 30 processors ia0. ,..., Ia29, respectively, and the processor number iak (k = 0,..., 29) and the increment value δj defined for each loop j (j = 1,..., 3) are used. [Formula 4]
Figure 0003673809
In writing an initialization expression Sj conversion example represented, the n-fold loop structure portion, that converts into the m can share the processing by the processor structure (step S3).
[0023]
Here, “mod (x, y)” in this specification is a function representing a remainder, for example, mod (7, 4) = 3 (the remainder of 7 ÷ 4 is 3 when 3), Similarly, mod (10, 5) = 0.
Next, “Int (z)” in this specification is a function representing integerization, and is to round the real number z to an integer that takes discrete values.
[0024]
Further, in this specification,
Figure 0003673809
Represents “δ 1 ×... × δ j ”. Note that δ 0 = 1.
[0025]
As a result, the initial value formulas S 1 , S 2 , and S 3 of each of the triple loops are expressed by processor numbers ia k (k = 0,..., 29) and increment values respectively assigned to m = 30 processors. Using δ 1 , δ 2 , and δ 3 , they are respectively expressed by the following equations.
[0026]
[Formula 6]
S1 = 1 + Int {mod (iak, δ1) / δ0}
S2 = 1 + Int {mod (iak, δ2 × δ1) / δ1}
S3 = 1 + Int {mod (iak, δ3 × δ2 × δ1) / (δ2 × δ1)}
[0027]
Subsequently, the CPU 2 uses the rewritten initial value formulas S 1 , S 2 , S 3 , the increment values δ 1 , δ 2 , δ 3 and the number of iterations 5 , 4 , 3 corresponding to each loop to The non-parallelized source code SC including the heavy non-parallelized loop structure NP is converted into a structure that can be shared by 30 processors, that is, a parallelized source code PSC including the parallelized triple loop structure PNP shown in FIG. (Step S4).
[0028]
At this time, the increment value δ 1 , δ 2 , δ 3 determined for each loop j (j = 1,..., 3) in the triple loop structure, in other words, each loop j (j = 1, ..., 3 divided number [delta] 1 of), [delta] 2, [delta] 3, and the value becomes a divisor of iterations 5,4,3 corresponding loop, and each of the product i div = δ 1 × δ 23 is set to a value equal to the number of processors m = 30, that is, δ 1 = 5, δ 2 = 2 and δ 3 = 3.
[0029]
As a result, the initial value formulas S 1 , S 2 , and S 3 of each of the triple loops are expressed by processor numbers ia k (k = 0,..., 29) and increment values respectively assigned to m = 30 processors. Using δ 1 = 5, δ 2 = 2 and δ 3 = 3, they are respectively expressed by the following equations.
[0030]
[Expression 7]
S1 = 1 + Int {mod (iak, δ1) / δ0}
= 1 + Int {mod (iak, 5)}
S2 = 1 + Int {mod (iak, δ2 × δ1) / δ1}
= 1 + Int {mod (iak, 10) / 5}
S3 = 1 + Int {mod (iak, δ3 × δ2 × δ1) / (δ2 × δ1)}
= 1 + Int {mod (iak, 30) / 10}
[0031]
Therefore, the loops (i 1 , i 2 , i 3 ) {= (1, 1, 1) to (5, 4, 3)} of the parallel triple loop structure PNP in the parallel source code PSC shown in FIG. Are assigned to the processors having the processor numbers shown in FIG. The numerical values shown in the ia column in FIG. 5 are continuous and non-overlapping integers starting from 0 associated with each processor. In the example of FIG. Yes.
Here, as an example, a case where the value of K identifying the processor ia K is equal to the numerical value associated with the processor is shown, for example, loop (i 1 , i 2 , i 3 ) = (1, 3, The processing of 1) is shared by the processor ia 0 (“0” in FIG. 5), and the processing of the loop (i 1 , i 2 , i 3 ) = (5, 3 , 2 ) is performed by the processor ia 14 (FIG. 5 is assigned to “14”).
[0032]
Here, each loop processing of the three-dimensional scanning space (triple loop) structure (scanning space → 5 × 4 × 3) of this embodiment is performed with m = 30 processors ia 0 ,..., Ia m−1. The conceptual contents when allocating to (sharing) are described with reference to FIG.
[0033]
That is, in the sharing method of the present embodiment, the three-dimensional scanning space (i 1 , i 2 , i 3 ) {= (1, 1, 1) to (5, 4, 3)} is divided into the respective dimensional directions. The idea is to fill up with processor blocks corresponding to the number (δ 1 , δ 2 , δ 3 ) = (5, 2 , 3 ). As shown in FIG. 6, the processor block (δ 1 × δ 2 × δ 3 ) = (5 × 2 × 3) → Processors ia 0 to ia 29 are sequentially assigned to the three-dimensional scanning space (i 1 , i 2 , i 3 ) = (1, 1, 1) to (5, 2 , 3 ), Next, the processor block (δ 1 × δ 2 × δ 3 ) = (5 × 2 × 3) → the processors ia 0 to ia 29 are changed into a three-dimensional scanning space (i 1 , i 2 , i 3 ) = (1, 3, By sequentially assigning 1) to (5, 4, 3), the three-dimensional scanning space (triple loop) structure (scanning space → 5 × Each loop processing × 3), m = 30 pieces of processors ia 0, ···, against ia m-1, is shared iterations of all the processors are allocated so that uniform (2 times).
[0034]
When the parallelized source code PSC including the parallelized triple loop structure PNP is generated from the nonparallelized code SC including the nonparallelized triple loop structure NP in this way, the CPU 2 executes the parallelized source code. The PSC is compiled and converted into parallelized object code POC (step S5), and the converted parallelized object code POC, the number m of processors to be shared in parallel, and the processor number of each processor itself are assigned to each of the processors ia 0 ,. .. and ia 29 are loaded (step S6).
[0035]
As a result, each processor ia 0 ,..., Ia 29 performs the loop processing assigned to its own processor based on the loaded parallel object code POC, the number of processors assigned in parallel, and its own processor number. Can be executed in parallel.
[0036]
As described above, by using the multiple iterative processing massively parallelized source code automatic generation apparatus 1 based on the multiple iterative processing massively parallelized source code automatic generation program P based on this embodiment, n (n = 3) layers are used. Parallelization including parallelized triple loop structure PNP that can be processed in parallel by m (m = 30) processors ia 0 ,..., Ia 29 from non-parallelized source code SC including a nested n-fold loop structure Since the source code PSC can be generated automatically and easily, the use and introduction of parallel processing can be promoted.
[0037]
Further, according to the present embodiment, m (m = 30) processors ia 0 ,... From non-parallelized source code SC including n (n = 3) nested n-fold loop structures. when generating a parallelized source code PSC including parallelized triple loop structure PNP capable parallelism with ia 29, contact the processor ia 0, ···, a ia 29
Figure 0003673809
For example, as illustrated in the present embodiment, the number of iterations of each loop constituting the multiple loop (the number of iterations of each loop = 5, 4, 3) is the number of processors m ( even if m = 30) very small compared to its all processors ia 0, · · ·, it is possible to distribute the computing load on ia 29, to improve processor utilization efficiency in parallel processing The parallel processing speed can be further improved.
[0038]
In this embodiment, it is also possible to set the processor numbers of m processors ia 0 ,..., Ia m−1 to an arbitrary m number, and the set processor numbers And m consecutive integers ia 0 ,..., Ia m−1 (0,..., M−1: out of order), the above equation (1) should be used. Can do.
[0039]
In this embodiment, the case of parallelizing a triple loop structure as an example of an n-fold loop structure in non-parallelized source code has been described. However, the present invention is not limited to this, This is applicable when parallelizing multiple loop structures.
[0040]
Furthermore, the number of processors and the number of iterations of each loop are merely examples, and various numbers of processors and iterations can be used.
[0041]
Furthermore, in this embodiment, the description language of the non-parallelized source code to be parallelized is the program language FORTRAN, and the multiple loop structure is the do loop structure, but the present invention is not limited to this. Instead, the present invention can also be applied to other loop structures described in other programming languages (for example, a loop structure using an if statement and a “go to” statement, a loop structure using a for statement, etc.).
[0042]
In this embodiment, the number of processors m = 30 is set to a divisor of the product (5 × 4 × 3) of the n-fold loop scanning space PAN, that is, the number of loop iterations of each of the n-fold loops. The conditions for generating the parallel source code are described above, but the present invention is not limited to this. For example, when the number of processors m = 30 is not a divisor of the scan space PAN of the n-fold loop, the scan space PAN Can be set to a value divisible by the number of processors m = 30, and it is possible to use the multiple iterative processing and massively parallelized source code automatic generation method of this embodiment.
[0043]
Further, in the present embodiment, the multiple iterative processing massively parallelized source code automatic generation apparatus has been described so as to perform the process of compiling the generated parallelized source code and generating the object code. The compiling process is not limited, and the compiling process may be performed by another device or each processor.
[0044]
【The invention's effect】
As described above, according to the multiple iterative processing massively parallelized source code automatic generation program, automatic generation apparatus, and automatic generation method according to the present invention, the initial value expression of the non-parallelized source code including n-fold nested loops , The processor number ia k (k = 0,..., M−1) respectively assigned to the m processors and the increment value determined for each loop j (j = 1,..., N). By rewriting the initial value expression S j using δ j , the n-fold loop structure portion of the non-parallelized source code can be converted into a structure that can be shared by m processors. Can be converted into parallel source code very easily, and the use and introduction of parallel processing can be promoted.
[0045]
Further, according to the multiple iterative processing massively parallelized source code automatic generation program, automatic generation apparatus, and automatic generation method according to the present invention, m non-parallelized source code including n-fold nested n-loops can be used. When generating parallel source code that can be processed in parallel by a processor, the number of loop processes shared by the processor can be set evenly among all processors, so that all processors can be used for calculation processing. The load can be distributed. As a result, the processor utilization efficiency in the parallel processing can be improved, and the parallelization processing speed can be further improved.
[Brief description of the drawings]
FIG. 1 is a block diagram showing a schematic configuration of a multiple iterative process massively parallelized source code automatic generation apparatus according to an embodiment of the present invention.
FIG. 2 is a diagram schematically showing an example of non-parallelized source code.
FIG. 3 is a schematic flowchart showing an example of overall processing including automatic parallelized source code generation processing according to the multiple iterative processing massively parallelized source code automatic generation program of the CPU shown in FIG. 1;
FIG. 4 is a diagram schematically showing an example of parallelized source code generated by CPU parallelized source code automatic generation processing in the present embodiment.
FIG. 5 is a diagram showing a processor in which loops (i 1 , i 2 , i 3 ) {= (1, 1, 1) to (5, 4, 3)} of each parallel triple loop structure are shared.
FIG. 6 shows each loop processing of the three-dimensional scanning space (triple loop) structure (scanning space → 5 × 4 × 3) of the present embodiment with m = 30 processors ia 0 ,..., Ia m−. The figure for demonstrating the conceptual content at the time of allocating (sharing) to 1. FIG.
[Explanation of symbols]
1. Multiple iterative processing massively parallelized source code automatic generator (including compiler)
2 CPU
3 memory 4 storage device ia 0 ,..., Ia m-1 processor P multiple repetitive processing massively parallelized source code automatic generation program (including compiler for generating object code)
SC Non-parallelized source code POC Parallelized object code NP Non-parallelized source code non-parallelized n-fold loop structure PSC Parallelized source code PNP Parallelized source-code parallelized n-fold loop structure

Claims (7)

n(nは2以上の整数)重にネストされたループを含む非並列のソースコードから、m(mは2以上の整数)個のプロセッサで並列実行可能な並列化ソースコードを自動的に生成する機能をコンピュータに実現させる並列化ソースコード自動生成プログラムであって、
前記非並列化ソースコードのn重ループそれぞれの初期値式を、前記m個のプロセッサに与えた、各プロセッサを一意に識別する0から始まるm個の連続した整数iak(k=0、・・・、m−1)およびループj(j=1、・・・、n)毎に定められた増分値δjを用いて下式
Figure 0003673809
で表される初期値式Sjに書き換え、書き換えた初期値式Sjおよび増分値δjを用いることにより、前記n重ループ構造部分を、前記m個のプロセッサで分担処理できる構造に変換する機能を前記コンピュータに実現させることを特徴とする多重反復処理超並列化ソースコード自動生成プログラム。
Automatically generates parallel source code that can be executed in parallel by m (m is an integer of 2 or more) processors from non-parallel source code containing n (n is an integer of 2 or more) nested loops. A parallelized source code automatic generation program that causes a computer to realize the function to
An initial value expression of each of the n-fold loops of the non-parallelized source code is given to the m processors, and m consecutive integers iak (k = 0,...) Starting from 0 that uniquely identify each processor. , M-1) and the increment δj defined for each loop j (j = 1,..., N)
Figure 0003673809
In rewriting the initialization expression Sj represented, by using the initialization expression Sj and increment δj rewritten, the function of converting the n-fold loop structure portion, the sharing process can structure the m processors A computer program for automatically generating multiple iterative parallelized source codes, which is realized by a computer.
請求項1記載の多重反復処理超並列化ソースコード自動生成プログラムであって、
前記n重ループそれぞれの増分値δ1、・・・、δnは、対応するそれぞれのループの反復回数の約数であり、かつそれぞれの積δ1×・・・×δnをidivと表した際に、当該idivと前記プロセッサ数mとが一致していることを特徴とする多重反復処理超並列化ソースコード自動生成プログラム。
A multiple iterative processing massively parallelized source code automatic generation program according to claim 1,
The increment value δ1,..., Δn of each of the n-fold loops is a divisor of the number of iterations of the corresponding loop, and when each product δ1 × ... × δn is expressed as idiv, A multi-repetition processing massively parallelized source code automatic generation program characterized in that the idiv and the number of processors m match.
請求項1記載の多重反復処理超並列化ソースコード自動生成プログラムであって、
前記m個のプロセッサそれぞれに分担される前記n重ループ構造部分の分担反復回数が均等であることを特徴とする多重反復処理超並列化ソースコード自動生成プログラム。
A multiple iterative processing massively parallelized source code automatic generation program according to claim 1,
An automatic multiple parallel processing source code generation program characterized in that the number of repeated iterations of the n-fold loop structure portion assigned to each of the m processors is equal.
請求項1記載の多重反復処理超並列化ソースコード自動生成プログラムであって、
前記n重ループそれぞれのループの反復回数の積を走査空間PANと表した際に、前記プロセッサ数mは、この走査空間PANの約数であることを特徴とする多重反復処理超並列化ソースコード自動生成プログラム。
A multiple iterative processing massively parallelized source code automatic generation program according to claim 1,
The multi-repetition processing massively parallelized source code wherein the number of processors m is a divisor of the scanning space PAN when the product of the number of iterations of each of the n-fold loops is expressed as a scanning space PAN Automatic generation program.
請求項1記載の多重反復処理超並列化ソースコード自動生成プログラムであって、
前記n重ループそれぞれのループの反復回数の積を走査空間数PANと表した際に、前記プロセッサ数mが、この走査空間PANの約数でない場合に、当該走査空間PANを仮想的に拡張し、前記プロセッサ数mで割り切れるようにしたことを特徴とする多重反復処理超並列化ソースコード自動生成プログラム。
A multiple iterative processing massively parallelized source code automatic generation program according to claim 1,
When the product of the number of iterations of each of the n-fold loops is expressed as the number of scanning spaces PAN, if the number of processors m is not a divisor of the scanning space PAN, the scanning space PAN is virtually expanded. A multi-repetition processing massively parallelized source code automatic generation program characterized by being divisible by the number of processors m.
n(nは2以上の整数)重にネストされたループを含む非並列のソースコードから、m(mは2以上の整数)個のプロセッサで並列実行可能な並列化ソースコードを自動的に生成する並列化ソースコード自動生成装置であって、
前記非並列化ソースコードのn重ループそれぞれの初期値式を、前記m個のプロセッサに与えた、各プロセッサを一意に識別する0から始まるm個の連続した整数iak(k=0、・・・、m−1)およびループj(j=1、・・・、n)毎に定められた増分値δjを用いて下式
Figure 0003673809
で表される初期値式Sjに書き換え、書き換えた初期値式Sjおよび増分値δjを用いることにより、前記n重ループ構造部分を、前記m個のプロセッサで分担処理できる構造に変換する手段を備えたことを特徴とする多重反復処理超並列化ソースコード自動生成装置。
Automatically generates parallel source code that can be executed in parallel by m (m is an integer of 2 or more) processors from non-parallel source code containing n (n is an integer of 2 or more) nested loops. A parallel source code automatic generation device,
An initial value expression of each of the n-fold loops of the non-parallelized source code is given to the m processors, and m consecutive integers iak (k = 0,...) Starting from 0 that uniquely identify each processor. , M-1) and the increment δj defined for each loop j (j = 1,..., N)
Figure 0003673809
Means for converting the n-fold loop structure portion into a structure that can be shared by the m processors by using the rewritten initial value expression Sj and the rewritten initial value expression Sj and the increment value δj. A multi-repetition processing massively parallelized source code automatic generation device characterized by that.
n(nは2以上の整数)重にネストされたループを含む非並列のソースコードから、m(mは2以上の整数)個のプロセッサで並列実行可能な並列化ソースコード自動的に生成される並列化ソースコード自動生成方法であって、
前記非並列化ソースコードのn重ループそれぞれの初期値式、前記m個のプロセッサに与えられて、各プロセッサ一意に識別される0から始まるm個の連続した整数iak(k=0、・・・、m−1)およびループj(j=1、・・・、n)毎に定められた増分値δj用いられて下式
Figure 0003673809
で表される初期値式Sjに書き換えられて、n重ループ構造部分、前記m個のプロセッサで分担処理される構造に変換されることを特徴とする多重反復処理超並列化ソースコード自動生成方法。
Parallel source code that can be executed in parallel by m (m is an integer of 2 or more) processors is automatically generated from non-parallel source code including n (n is an integer of 2 or more) nested loops. a parallel source code automatic generation method that will be,
Wherein n-fold loop each initialization expression unparallelized source code, said given the m processors, the m successive integers IAK (k = 0 starting from 0 for each processor Ru is uniquely identified, ···, m-1) and the loop j (j = 1, ···, n) each with incremental value δj is used defined under formula
Figure 0003673809
In rewritten to represented by initialization expression Sj, n heavy loop structure portion, wherein the multiple repeats processing massive parallelization source code automatically generated is converted into m sharing treated Ru structure processor, characterized in Rukoto Method.
JP2001283957A 2001-09-18 2001-09-18 Multiple repetitive processing massively parallelized source code automatic generation program, automatic generation apparatus and automatic generation method Expired - Fee Related JP3673809B2 (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2001283957A JP3673809B2 (en) 2001-09-18 2001-09-18 Multiple repetitive processing massively parallelized source code automatic generation program, automatic generation apparatus and automatic generation method

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2001283957A JP3673809B2 (en) 2001-09-18 2001-09-18 Multiple repetitive processing massively parallelized source code automatic generation program, automatic generation apparatus and automatic generation method

Publications (2)

Publication Number Publication Date
JP2003091422A JP2003091422A (en) 2003-03-28
JP3673809B2 true JP3673809B2 (en) 2005-07-20

Family

ID=19107365

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2001283957A Expired - Fee Related JP3673809B2 (en) 2001-09-18 2001-09-18 Multiple repetitive processing massively parallelized source code automatic generation program, automatic generation apparatus and automatic generation method

Country Status (1)

Country Link
JP (1) JP3673809B2 (en)

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2005050016A (en) * 2003-07-31 2005-02-24 National Aerospace Laboratory Of Japan Shape recognition device, method, and program
JP4886838B2 (en) 2009-10-30 2012-02-29 インターナショナル・ビジネス・マシーンズ・コーポレーション Parallelization method, system, and program
JP5479942B2 (en) 2010-02-22 2014-04-23 インターナショナル・ビジネス・マシーンズ・コーポレーション Parallelization method, system, and program
KR101803303B1 (en) 2010-12-21 2017-12-29 삼성전자주식회사 Method for multimedia architecture pattern determination, method and apparatus for transformation from single-core based architecture to multi-core based architecture and

Also Published As

Publication number Publication date
JP2003091422A (en) 2003-03-28

Similar Documents

Publication Publication Date Title
Arndt et al. The deal. II library, version 9.2
Herdman et al. Accelerating hydrocodes with OpenACC, OpenCL and CUDA
Lee et al. Early evaluation of directive-based GPU programming models for productive exascale computing
Lee et al. Implementing domain-specific languages for heterogeneous parallel computing
Langdon et al. A SIMD interpreter for genetic programming on GPU graphics cards
Ciechanowicz et al. Enhancing muesli's data parallel skeletons for multi-core computer architectures
Barnes et al. Evaluating and optimizing the nersc workload on knights landing
Orchard et al. Ypnos: declarative, parallel structured grid programming
Boyer et al. Exact sparse matrix-vector multiplication on GPU's and multicore architectures
Holmen et al. An approach for indirectly adopting a performance portability layer in large legacy codes
Perepelkina et al. LRnLA algorithm ConeFold with non-local vectorization for LBM implementation
Levchenko et al. GPU implementation of ConeTorre algorithm for fluid dynamics simulation
Muranushi Paraiso: an automated tuning framework for explicit solvers of partial differential equations
Krommydas et al. On the programmability and performance of heterogeneous platforms
Schardl Performance engineering of multicore software: Developing a science of fast code for the post-Moore era
JP3673809B2 (en) Multiple repetitive processing massively parallelized source code automatic generation program, automatic generation apparatus and automatic generation method
Zhang et al. Snowflake: A lightweight portable stencil dsl
Watschinger et al. A parallel fast multipole method for a space-time boundary element method for the heat equation
Fu et al. Pangulu: A scalable regular two-dimensional block-cyclic sparse direct solver on distributed heterogeneous systems
Hélène et al. Algorithmic skeleton library for scientific simulations: SkelGIS
Playne et al. Auto-generation of parallel finite-differencing code for mpi, tbb and cuda
Noack et al. Dm-heom: A portable and scalable solver-framework for the hierarchical equations of motion
Cunha et al. A portable parallel implementation of a boundary element elastostatic code for shared and distributed memory systems
Huang et al. Implementing strassen's algorithm with blis
Rietveld et al. Optimizing sparse matrix computations through compiler-assisted programming

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20010918

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20020115

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20041124

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20050124

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: 20050222

A711 Notification of change in applicant

Free format text: JAPANESE INTERMEDIATE CODE: A711

Effective date: 20050314

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20050318

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A821

Effective date: 20050314

A711 Notification of change in applicant

Free format text: JAPANESE INTERMEDIATE CODE: A712

Effective date: 20050314

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: 20090513

Year of fee payment: 4

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20100513

Year of fee payment: 5

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20110513

Year of fee payment: 6

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20110513

Year of fee payment: 6

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20120513

Year of fee payment: 7

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20130513

Year of fee payment: 8

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

LAPS Cancellation because of no payment of annual fees