JP2007108838A - Compile method and compile device - Google Patents
Compile method and compile device Download PDFInfo
- Publication number
- JP2007108838A JP2007108838A JP2005296243A JP2005296243A JP2007108838A JP 2007108838 A JP2007108838 A JP 2007108838A JP 2005296243 A JP2005296243 A JP 2005296243A JP 2005296243 A JP2005296243 A JP 2005296243A JP 2007108838 A JP2007108838 A JP 2007108838A
- Authority
- JP
- Japan
- Prior art keywords
- loop
- execution
- parallel
- loop length
- object 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.)
- Pending
Links
Images
Landscapes
- Devices For Executing Special Programs (AREA)
Abstract
Description
本発明は、コンパイル方法及びコンパイル装置に係り、特に、プログラミング言語で記述されているソースプログラムを並列化するコンパイル方法及びコンパイル装置に関する。 The present invention relates to a compiling method and compiling device, and more particularly to a compiling method and compiling device for parallelizing a source program described in a programming language.
共有メモリ型計算機向けにソースプログラムを並列化するコンパイル装置は、プログラミング言語等により記述されたソースプログラム(以下、単に、ソースプログラムという)を、複数個のスレッドにより並列処理することができる機械語のプログラム(以下、オブジェクトコードという)に生成するものである。並列処理は、複数個のスレッド間での同期処理等の並列処理に伴う並列化オーバーヘッドが発生するため、例えば、ループの並列化は、ループ長がある長さを越えないと並列化オーバーヘッドを隠すことができず、並列化の効果を得ることができない。 A compiling device that parallelizes a source program for a shared memory computer is a machine language that can process a source program written in a programming language or the like (hereinafter simply referred to as a source program) by a plurality of threads. It is generated in a program (hereinafter referred to as object code). Since parallel processing generates parallel overhead associated with parallel processing such as synchronization processing among multiple threads, for example, loop parallelization hides the parallelization overhead unless the loop length exceeds a certain length Cannot be obtained and the effect of parallelization cannot be obtained.
従来技術によるループの並列化には、並列化したループのループ長が実行時でないと判らないときに、実行時に並列実行か逐次実行かを選択させるオブジェクトコードを生成する方法が用いられる。そして、オブジェクトコードを生成する方法として、コンパイル装置が静的に決定する並列実行の効果を得ることが期待できるループ長の値(以下、閾値という)と実行時の実際のループ長とを比較することによりオブジェクトコードを生成させる方法(以下、静的決定方式という)と、プログラムの実行情報を元に再コンパイル時に閾値を決定する方法(以下、実行情報採取方式という)とがある。 For parallelization of loops according to the prior art, a method of generating object code for selecting parallel execution or sequential execution at the time of execution when the loop length of the parallelized loop is not known at the time of execution is used. Then, as a method for generating object code, a loop length value (hereinafter referred to as a threshold) that can be expected to obtain the effect of parallel execution statically determined by the compiling device is compared with an actual loop length at the time of execution. Thus, there are a method of generating an object code (hereinafter referred to as a static determination method) and a method of determining a threshold value at the time of recompilation based on program execution information (hereinafter referred to as an execution information collection method).
なお、静的決定方式とも実行情報採取方式とも異なる方式の例として、実行時に実行情報を採取して実行時にプログラムを最適化する計算方法(以下、動的決定方式という)に関する技術が、例えば、特許文献1等に記載されて知られている。
前述した静的決定方式は、実行時のキャッシュメモリ等の影響が考慮されていないので、精度の高い閾値の決定が困難であるという問題点を有している。また、実行情報採取方式は、実行情報を採取するためにプログラムを一度実行するため精度の高い閾値を決定することができるが、再コンパイルが必要になるため、このことがプログラム開発においてのオーバーヘッドになってしまうという問題点を有している。 The static determination method described above has a problem that it is difficult to determine a highly accurate threshold value because the influence of the cache memory at the time of execution is not taken into consideration. In addition, the execution information collection method can determine a highly accurate threshold because the program is executed once in order to collect execution information. However, since recompilation is required, this is an overhead in program development. It has the problem of becoming.
また、前述の動的決定方式は、入力となるソースプログラムの中に、実行時に最適化を行う領域と最適化するパラメータとをユーザが意識して明示的に記述しておく必要があるという問題点を有している。しかも、この動的決定方式は、動的に最適化するプログラムを生成するというものであって、動的に並列実行か逐次実行かを切り分けるオブジェクトコードを生成する並列化コンパイルに関するものではない。 In addition, the above-described dynamic determination method has a problem that the user needs to explicitly describe the area to be optimized and the parameter to be optimized in the source program that is input. Has a point. Moreover, this dynamic determination method is to generate a program to be dynamically optimized, and is not related to parallel compilation that generates object code that dynamically separates between parallel execution and sequential execution.
本発明の目的は、前述した従来技術の問題点を解決し、静的決定方式での精度の高い閾値の決定が困難であるという問題と、実行情報採取方式での再コンパイルが必要であるという問題とを解決し、ループ長が不明な並列ループを並列実行による効果を得ることが期待できるときに並列実行を行わせ、並列実行による効果を得ることが期待できないときに逐次実行を行わせるようにループを並列化することができるソースプログラムを並列化するコンパイル方法及びコンパイル装置を提供することにある。 The object of the present invention is to solve the above-mentioned problems of the prior art, the problem that it is difficult to determine a high-accuracy threshold in the static decision method, and the need to recompile in the execution information collection method Solve the problem and let parallel execution occur when parallel loops whose loop length is unknown can be expected to obtain the effect of parallel execution, and execute sequentially when the effect of parallel execution cannot be expected It is another object of the present invention to provide a compiling method and compiling device for parallelizing a source program capable of parallelizing a loop.
本発明によれば前記目的は、共有メモリ型計算機で利用されるオブジェクトコードを生成するコンパイル方法において、コンパイル時にループ長が不明な並列ループに対して、ループの繰り返しの1回目だけを実行させて、ループの繰り返し1回の所要マシンサイクル数を取得し、その取得したマシンサイクル数をもとに並列実行の効果を得ることができるループ長の値を算出させ、この値により、並列実行か逐次実行かを切り分けることにより達成される。 According to the present invention, in the compiling method for generating an object code used in a shared memory type computer, the first loop repetition is executed for a parallel loop whose loop length is unknown at the time of compiling. The number of machine cycles required for one iteration of the loop is acquired, and a loop length value that can obtain the effect of parallel execution is calculated based on the acquired number of machine cycles. This is achieved by separating execution.
また、前記目的は、共有メモリ型計算機で利用されるオブジェクトコードを生成するコンパイル装置において、構文解析部と、並列化部と、コード生成部とから構成され、前記並列化部は、前記共有メモリ型計算機で利用されるオブジェクトコードの実行により、ループの繰り返し1回の所要マシンサイクル数を取得させ、取得した前記マシンサイクル数とコンパイル時に読み込む対象となる計算機の同期処理オーバヘッド情報とに基づいて並列実行の効果を得ることができるループ長を求め、求められた前記並列化の効果を得ることができるループ長とループの実際のループ長とを比較して、並列実行か逐次実行かを切り分けさせる中間語を生成することにより達成される。 The object is a compiling device that generates an object code used in a shared memory type computer, and includes a syntax analysis unit, a parallelization unit, and a code generation unit, and the parallelization unit includes the shared memory. By executing the object code used in the type computer, the required number of machine cycles for one iteration of the loop is acquired, and parallel processing based on the acquired number of machine cycles and the synchronization processing overhead information of the computer to be read at the time of compilation The loop length that can obtain the effect of execution is obtained, and the obtained loop length that can obtain the effect of parallelization is compared with the actual loop length of the loop, so that the parallel execution or the sequential execution is separated. This is accomplished by generating an intermediate language.
本発明によれば、並列化したループに対し、ループ長が短く並列化の効果を得ることが期待できない場合、逐次実行させるオブジェクトコードの生成を静的決定方式より正確に行うことができる。 According to the present invention, when the loop length is short with respect to the parallelized loop and the effect of parallelization cannot be expected, the object code to be sequentially executed can be generated more accurately than the static determination method.
以下、本発明によるソースプログラムを並列化するコンパイル方法及びコンパイル装置の実施形態を図面により詳細に説明する。 Hereinafter, embodiments of a compiling method and compiling apparatus for parallelizing source programs according to the present invention will be described in detail with reference to the drawings.
図1は本発明の一実施形態によるコンパイル装置の構成を示すブロック図、図5は共有メモリ型計算機の構成を示すブロック図である。図1、図5において、101はソースファイル、102は並列化コンパイル装置、103は構文解析部、104は並列化部、105はコード生成部、106はマシンサイクル数取得ライブラリ、107はオブジェクトコード、108はスレッド間同期オーバーヘッド情報ファイル、111はCPU、112はメモリ、113はハードディスク装置、501は共有メモリ型計算機、502はプロセッサ、503はキャッシュメモリ、504はメインメモリである。
FIG. 1 is a block diagram showing a configuration of a compiling device according to an embodiment of the present invention, and FIG. 5 is a block diagram showing a configuration of a shared memory type computer. 1 and 5, 101 is a source file, 102 is a parallel compilation device, 103 is a syntax analysis unit, 104 is a parallelization unit, 105 is a code generation unit, 106 is a machine cycle number acquisition library, 107 is an object code,
本発明の実施形態により並列化されたプログラムは、例えば、図5に示すような共有メモリ型計算機501上で実行される。この共有メモリ型計算機501は、それぞれがキャッシュメモリ503を有する複数個のプロセッサ502と、これらの複数のプロセッサ502が共有するメインメモリ505とがバス等の通信路を介して接続されて構成されている。
The parallelized program according to the embodiment of the present invention is executed on, for example, a shared
そして、本発明の実施形態による並列化コンパイル装置102は、図1(a)に示すように、FORTRAN等のプログラミング言語で記述されたソースプログラム101を入力として、スレッド間同期オーバーヘッド情報ファイル108とマシンサイクル数取得ライブラリ106を使用して、スレッドを並列処理の単位として共有メモリ型計算機上で実行可能なオブジェクトコード107を生成させるものであり、構文解析部103、並列化部104、コード生成部105から構成される。
As shown in FIG. 1A, the parallel compiling
前述したように構成される並列化コンパイル装置102は、図5に示す共有メモリ型計算機501上に構築され、プロセッサ502の1つが、ソースプログラムの並列化の処理を実行するように構成されてもよく、あるいは、独立した別の計算機内に構築されてもよい。並列化コンパイル装置を計算機内に構築する場合の計算機の構成例を図1(b)に示しており、この計算機は、よく知られているように、CPU111、メモリ112、ハードディスク装置113、図示しない入出力装置を備えて構成されていればよい。そして、並列化コンパイル装置102は、装置を構成する各機能部が、ソフトウェアにより構成されて、ハードディスク装置113内に格納され、それらがメモリ112内に呼び出され、OSの下でCPUにより実行されることにより実現することができる。また、並列化コンパイル装置102が必要とする情報を格納するソースファイル101、マシンサイクル数取得ライブラリ106、スレッド間同期オーバーヘッド情報ファイル108は、ハードディスク装置113内に格納されていればよく、また、生成されたオブジェクトコード107も、ハードディスク装置113内に格納されればよい。
The parallelizing
並列化コンパイル装置を構成する構文解析部103は、ソースファイル101内のソースプログラムを入力として受け取り、ソースプログラムから中間語を生成する。並列化部104は、構文解析部103が生成した中間語とスレッド間同期オーバーヘッド情報ファイル108から対象マシンにおける同期オーバーヘッド情報とを受け取って、ループ長が不明な並列ループに対して、マシンサイクル数取得ライブラリ106のハードウェアカウンタルーチンを使用してループの繰り返し1回目の所要マシンサイクル数を取得させ、そのマシンサイクル数に基づいて閾値を決定し、その閾値とループ長とを比較して並列実行か逐次実行かを切り分けるための中間語を生成する。また、コード生成部105は、並列化部104で出力された中間語を入力として受け取り、その中間語に対して、最適化や、レジスタ割り付け等を実施した後、マシンサイクル数取得ライブラリ106をリンクして、計算機が実行可能なマシン言語であるオブジェクトコード107を生成する。
The
図2は並列化部104が並列実行か逐次実行かを切り分ける中間語の生成を行う処理動作を説明するフローチャートである。ここに示すフローチャートでの処理は、並列化部104が、ループ長が不明な並列ループに対して、マシンサイクル数取得ライブラリ106のハードウェアカウンタルーチンを使用してループ繰り返し1回目の処理を実行させて所要マシンサイクル数を取得させ、そのマシンサイクル数に基づいて閾値を決定し、その閾値とループ長とを比較して並列実行か逐次実行かを切り分ける中間語を生成する処理である。従って、ここでの処理において、並列化部104は、マシンサイクル数取得ライブラリ106内の必要な名前(コード)だけを使用しその実体を使用することはなく、マシンサイクル数取得ライブラリ106の実体はオブジェクトを生成するときに使用される。
FIG. 2 is a flowchart for explaining a processing operation in which the parallelizing unit 104 generates an intermediate language for determining whether the execution is parallel execution or sequential execution. In the processing shown in the flowchart shown here, the parallel processing unit 104 executes the first loop iteration processing for the parallel loop whose loop length is unknown using the hardware counter routine of the machine cycle
(1)処理が開始されると、並列化部104は、まず、並列化したループのループ長が不明か否か判定し、不明でなければ、何もせずここでの処理を終了する(ステーション201、202、208)。 (1) When the process is started, the parallelizing unit 104 first determines whether the loop length of the parallelized loop is unknown, and if not, does nothing and ends the process here (station) 201, 202, 208).
(2)ステップ202の判定で、並列化したループのループ長が不明であった場合、ループ長0回チェックコードを並列ループの前に挿入する(ステップ203)。
(2) If it is determined in
(3)次に、並列ループの繰り返し1回目を取り出すピーリングを行い、ピーリングされたループ本体の前後にマシンサイクル数取得ライブラリ106からハードウェアカウンタルーチンを呼び出すための文(コード)を挿入する(ステップ204)。
(3) Next, peeling is performed to take out the first iteration of the parallel loop, and a statement (code) for calling a hardware counter routine from the machine cycle
(4)次に、スレッド間同期オーバーヘッド情報ファイル108を読み込み、スレッドフォークオーバーヘッド、スレッド間バリアオーバーヘッド、ハードウェアカウンタルーチンから取得される、ピーリングされた本体のマシンサイクル数からの閾値決定のためのコードを挿入する(ステップ205、206)。
(4) Next, the inter-thread synchronization
図6は前述のステップ205の処理で読み込むスレッド間同期オーバーヘッド情報ファイル108の内容の例を説明する図である。スレッド間同期オーバーヘッド情報ファイル108の内容は、例えば、図6に601として示すようなものであり、図6に示す例では、対象となる共有メモリ型計算機のスレッドフォークオーバーヘッドが1000サイクル、スレッド間バリアオーバーヘッドが2000サイクル、プロセッサ数が16個であることが示されている。
FIG. 6 is a diagram for explaining an example of the contents of the inter-thread synchronization
(5)その後、決定した閾値とループ長とを比較して、成立すれば並列ループへ分岐させ、不成立であれば、逐次ループへ分岐させるコードを生成し、ここでの処理を終了する(ステップ207、208)。 (5) After that, the determined threshold value is compared with the loop length, and if established, a code is branched to the parallel loop, and if not established, a code to branch to the sequential loop is generated, and the processing here is terminated (step) 207, 208).
前述した処理は、プログラムにより構成し、計算機が備えるCPUに実行させることができ、また、それらのプログラムは、FD、CDROM、DVD等の記録媒体に格納して提供することができ、また、ネットワークを介してディジタル情報により提供することができる。 The processing described above is configured by a program and can be executed by a CPU provided in a computer. These programs can be provided by being stored in a recording medium such as an FD, a CDROM, or a DVD. Can be provided by digital information.
図3はソースプログラムの例を説明する図、図4は図3に示すソースプログラムから生成された並列化後のループを説明する中間語の例を説明する図であり、図3に示すソースプログラムを本発明の実施形態により並列化コンパイルするものとして説明を続ける。 FIG. 3 is a diagram for explaining an example of a source program. FIG. 4 is a diagram for explaining an example of an intermediate language for explaining a parallelized loop generated from the source program shown in FIG. Will continue to be described as being compiled in parallel according to an embodiment of the present invention.
図3に示すソースプログラムの例301は、I=1〜Nの全てについて、A(I)=A(I)+B(I)、S=C(I)、D(I)=E(I)+F(I)の各演算を実行するというものである。このようなソースプログラムから図2により説明したフローでの処理により並列化部104で生成される中間語は、図4のに401として示すような中間語である。 In the example 301 of the source program shown in FIG. 3, A (I) = A (I) + B (I), S = C (I), D (I) = E (I) for all of I = 1 to N. Each operation of + F (I) is executed. The intermediate language generated by the parallelization unit 104 by the processing in the flow described with reference to FIG. 2 from such a source program is an intermediate language as indicated by 401 in FIG.
図2のステップ203で挿入するチェックコードによりループ長Nが0回以上かをチェックし(行402)、0回以下である場合は何もせず、0回以上である場合、ループ繰り返し1回目をピーリングしたループの前後にマシンサイクル数を取得するためのハードウェアカウンタルーチンを呼び出してカウントを開始させ(行403)、ハードウェアカウンタ終了後、マシンサイクル数を取得する(行404)。行403と行404との間に記述された式は、図3に示すソースプログラムの例301における、I=1を実行させる式である。この式を実行した結果として取得したマシンサイクル数から閾値を決定し(行405)、決定した閾値とループ長Nとの比較を行って(行406)、行406に示す式が成立すれば、並列実行を行わせ、成立しなければ、逐次実行をおこなわせるように分岐する。
It is checked whether the loop length N is 0 or more by the check code inserted in
並列実行の場合、ループ長を分割して並列化した各スレッドの各スレッドの開始位置%L、終了位置%Uを決定するコード(行407)を記述し、並列化したループの各スレッドの開始位置%L、終了位置%Uが指定されて、ソースプログラムが複数のプロセッサにより並列実行されることになる。この並列実行を実行させる指示が、do%I=%L,%Uを含む4行に示す式である。 In the case of parallel execution, code (line 407) for determining the start position% L and end position% U of each thread of each thread parallelized by dividing the loop length is described, and the start of each thread of the parallelized loop The position% L and the end position% U are specified, and the source program is executed in parallel by a plurality of processors. The instruction to execute this parallel execution is an expression shown in four lines including do% I =% L and% U.
一方、逐次実行の場合、図3に示すソースプログラムの例301における、I=1を除くI=2〜Nが1つのプロセッサにより逐次実行されることになる。この逐次実行を行わせる指示が、doI=2,Nを含む4行に示す式である。 On the other hand, in the case of sequential execution, I = 2 to N except for I = 1 in the source program example 301 shown in FIG. 3 are sequentially executed by one processor. The instruction to perform this sequential execution is an expression shown in four lines including doI = 2 and N.
図4に示す中間語の例から判るように、この中間言語がオブジェクトコードに生成されて、プロセッサにより実行されると、複数のループの最初の1つが実際に実行され、その実行結果から並列実行か、逐次実行かが決定されることになる。 As can be seen from the example of the intermediate language shown in FIG. 4, when this intermediate language is generated into object code and executed by the processor, the first one of the loops is actually executed, and the execution result is executed in parallel. Or sequential execution is determined.
図7は図2のフローにおけるステップ206の処理での閾値計算を行う演算式701の例を示す図、図8は実行時にハードウェアカウンタにより取得されるマシンサイクル数の例を示す図である。図7において、求める閾値をL、取得されるピーリングされたループのマシンサイクル数をM、スレッドフォークオーバーヘッドをO1、スレッド間同期オーバーヘッドをO2、実行スレッド数をNPEとする。
FIG. 7 is a diagram showing an example of an
予想逐次実行マシンサイクル数はL×M、予想並列実行マシンサイクル数はL×M÷NPE+(O1+O2)となるので、予想逐次実行マシンサイクル数より予想並列実行マシンサイクル数が下回る最低の閾値は、図7の式701に示すように、
L=((O1+O2)×NPE)÷(M×(NPE−1))
となる。
Since the expected number of sequential execution machine cycles is L × M and the expected number of parallel execution machine cycles is L × M ÷ NPE + (O1 + O2), the lowest threshold value where the expected number of parallel execution machine cycles is lower than the expected number of sequential execution machine cycles is As shown in
L = ((O1 + O2) × NPE) ÷ (M × (NPE-1))
It becomes.
例えば、図2のフローにおけるステップ205の処理で、図6に示したスレッド間同期オーバーヘッド情報601を読み込んでいる場合、O1=1000、O2=2000、NPE=16が設定されるので、L=3200÷Mが図4の行405での閾値計算の実際の処理となり、実行時に図4の行404で取得するマシンサイクル数が図8に801として示す例のような場合、キャッシュメモリにデータが載っている場合、M=10が設定されてL=320となり、キャッシュメモリにデータが載っていない場合、M=200が設定されてL=16となる。
For example, when the inter-thread synchronization
前述したような例の場合、従来技術の欄で説明した静的決定方式では、キャッシュメモリにデータが載っている場合または載っていない場合の閾値を考慮することができないので、効果を得ることが期待できない並列実行を行ってしまう場合があり、実行情報採取方式では、再コンパイルと再実行が必要となってしまうが、本発明の実施形態では、このようにことを防止することができる。 In the case of the example as described above, the static determination method described in the section of the prior art can obtain an effect because the threshold when the data is loaded or not loaded in the cache memory cannot be considered. In some cases, unexpected parallel execution may be performed, and in the execution information collection method, recompilation and re-execution are necessary. However, in the embodiment of the present invention, this can be prevented.
なお、前述で説明した本発明の実施形態は、ソースプログラムとしてFORTRAN言語を用いる例であったが、本発明は、例えば、ソースプログラムとしてC言語等の任意のプログラミング言語が使用される場合にも適用することができる。 The embodiment of the present invention described above is an example in which the FORTRAN language is used as the source program. However, the present invention can be applied to a case where an arbitrary programming language such as C language is used as the source program. Can be applied.
101 ソースファイル
102 並列化コンパイル装置
103 構文解析部
104 並列化部
105 コード生成部
106 マシンサイクル数取得ライブラリ
107 オブジェクトコード
108 スレッド間同期オーバーヘッド情報ファイル
111 CPU
112 メモリ
113 ハードディスク装置
501 共有メモリ型計算機
502 プロセッサ
503 キャッシュメモリ
504 メインメモリ
DESCRIPTION OF
112
Claims (4)
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2005296243A JP2007108838A (en) | 2005-10-11 | 2005-10-11 | Compile method and compile device |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2005296243A JP2007108838A (en) | 2005-10-11 | 2005-10-11 | Compile method and compile device |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2007108838A true JP2007108838A (en) | 2007-04-26 |
Family
ID=38034676
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2005296243A Pending JP2007108838A (en) | 2005-10-11 | 2005-10-11 | Compile method and compile device |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP2007108838A (en) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9891655B2 (en) | 2014-12-05 | 2018-02-13 | Fujitsu Limited | Parallel operation system, apparatus and medium |
US9977759B2 (en) | 2015-06-04 | 2018-05-22 | Fujitsu Limited | Parallel computing apparatus, compiling apparatus, and parallel processing method for enabling access to data in stack area of thread by another thread |
-
2005
- 2005-10-11 JP JP2005296243A patent/JP2007108838A/en active Pending
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9891655B2 (en) | 2014-12-05 | 2018-02-13 | Fujitsu Limited | Parallel operation system, apparatus and medium |
US9977759B2 (en) | 2015-06-04 | 2018-05-22 | Fujitsu Limited | Parallel computing apparatus, compiling apparatus, and parallel processing method for enabling access to data in stack area of thread by another thread |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP4042604B2 (en) | Program parallelization apparatus, program parallelization method, and program parallelization program | |
JP6141365B2 (en) | Method and system for parallel processing of sequential computer program code | |
JP2921190B2 (en) | Parallel execution method | |
US20100153937A1 (en) | System and method for parallel execution of a program | |
JP2001282549A (en) | Device and method for converting program and recording medium | |
JPH01108638A (en) | Parallelized compilation system | |
US10430191B2 (en) | Methods and apparatus to compile instructions for a vector of instruction pointers processor architecture to enable speculative execution and avoid data corruption | |
JPH07152614A (en) | Operation analyzing device for parallel processing system | |
JP3651774B2 (en) | Compiler and its register allocation method | |
Rauchwerger | Run-time parallelization: Its time has come | |
Yuan et al. | Compiling esterel for multi-core execution | |
US20230315409A1 (en) | Compilation and execution of source code as services | |
Vachharajani | Intelligent speculation for pipelined multithreading | |
JP2007108838A (en) | Compile method and compile device | |
Jimborean et al. | Online dynamic dependence analysis for speculative polyhedral parallelization | |
Bridges | The velocity compiler: Extracting efficient multicore execution from legacy sequential codes | |
US20100077384A1 (en) | Parallel processing of an expression | |
US9250877B2 (en) | Assisting parallelization of a computer program | |
Wang et al. | Code transformations for enhancing the performance of speculatively parallel threads | |
Sari et al. | A Highly Scalable Instruction Scheduler Design based on CPU Stall Elimination | |
Mason et al. | Lampview: A loop-aware toolset for facilitating parallelization | |
JP2008015665A (en) | Program analysis method and program analyzer | |
Almghawish et al. | An automatic parallelizing model for sequential code using Python | |
JP2009140451A (en) | Compiler device, compiling method, and program thereof | |
August et al. | Automatic Extraction of Parallelism from Sequential Code. |