JP4019361B2 - 並列化変換システムと並列化変換方法およびプログラムならびにコンパイラ - Google Patents

並列化変換システムと並列化変換方法およびプログラムならびにコンパイラ Download PDF

Info

Publication number
JP4019361B2
JP4019361B2 JP2002182292A JP2002182292A JP4019361B2 JP 4019361 B2 JP4019361 B2 JP 4019361B2 JP 2002182292 A JP2002182292 A JP 2002182292A JP 2002182292 A JP2002182292 A JP 2002182292A JP 4019361 B2 JP4019361 B2 JP 4019361B2
Authority
JP
Japan
Prior art keywords
parallelization
directive
program
parallel
character string
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
JP2002182292A
Other languages
English (en)
Other versions
JP2004029982A (ja
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.)
Hitachi Ltd
Original Assignee
Hitachi 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 Hitachi Ltd filed Critical Hitachi Ltd
Priority to JP2002182292A priority Critical patent/JP4019361B2/ja
Publication of JP2004029982A publication Critical patent/JP2004029982A/ja
Application granted granted Critical
Publication of JP4019361B2 publication Critical patent/JP4019361B2/ja
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Images

Landscapes

  • Devices For Executing Special Programs (AREA)

Description

【0001】
【発明の属する技術分野】
本発明は、コンピュータプログラムの変換技術に係わり、特に、逐次的に処理を行なうように記述されたプログラムを、自動的あるいはプログラマの指示に従って、並列に処理を行なうプログラムに変換するコンピュータ処理技術に関するものである。
【0002】
【従来の技術】
従来、並列処理を行なうプログラムを作成する技術として、プログラマが、逐次的に処理を行なうよう記述されたプログラムに対し、並列化を指示する指示文を挿入し、コンピュータが並列化コンパイラにより、その指示文を解析して並列処理を行なうプログラムに変換するものがある。
【0003】
例えば、共有メモリ型並列計算機向けの並列化言語であるOpenMPを規定した、"OpenMP Fortran Application Program Interface Version 2.0, November 2000, http://www.openmp.org/"では、プログラマがループ並列化や変数のプライベート化等の指示文をプログラム中に挿入し、コンパイラはその指示に従って並列化変換を行なう。
【0004】
しかし、並列化指示を全てプログラマが行なうのは負担が大きい。これを解決する技術として、コンピュータにおいて、コンパイラ、あるいは並列化支援ツール等により、自動的に、プログラムの並列性を解析し、結果をプログラム中に並列化指示文として生成するものがある。
【0005】
このようなコンピュータにより自動的に並列化指示文をプログラム中に生成する従来技術は、例えば、「Haoqiang Jin , Michael Frumkin , Jerry Yan "Automatic Generation of OpenMP Directives and Its Application to Computational Fluid Dynamics Codes", Volume 1940, Issue , pp 440- Lecture Notes in Computer Science」に記載されている。
【0006】
このようにしてコンピュータで自動的に生成される並列化指示文は、プログラムのポータビリティを確保するために、例えばOpenMP指示文のような、汎用性のある指示文である必要がある。
【0007】
しかし、従来技術においては、以下のような問題点がある。
【0008】
すなわち、一度、処理系(コンピュータ)によって指示文が付加されたソースプログラムは、プログラマが修正をして再度処理系に入力する場合があり得る。この時、プログラマが実行文を修正することによって、処理系が過去に付加した指示文が正しくなくなる場合がある。処理系は、このような指示文を、プログラマが修正したプログラムに合うように、生成し直す必要がある。
【0009】
一方で、同様の並列化指示文は、プログラマによって手動で付加される場合もある。処理系は、プログラマの指示に従わなければならないため、このような指示文は変更しないようにする必要がある。
【0010】
ここで、ポータビリティを保つために、処理系が例えばOpenMP指示文のような汎用性のある指示文を付加する場合、プログラム中に記述されている指示文が、プログラマが記述したものなのか、処理系が以前に自動的に付加したものであるかの判別がつかないという問題が生じる。
【0011】
このため、処理系は、処理系が過去に生成した指示文を修正することができない。あるいは、プログラマが付加した指示文も修正してしまう可能性がある。
【0012】
【発明が解決しようとする課題】
解決しようとする問題点は、従来の技術では、並列処理を行なうプログラムにおける並列化を指示する指示文が、プログラマが記述したものなのか、処理系(コンピュータ)が以前に自動的に付加したものであるかを、処理系で判別することができない点である。
【0013】
本発明の目的は、これら従来技術の課題を解決し、逐次的に処理を行なうよう記述されたソースプログラムの、並列に処理を行なうオブジェクトプログラムへの、コンピュータによる自動変換を効率化することを可能にすることである。
【0014】
【課題を解決するための手段】
上記目的を達成するため、本発明では、並列化処理系(コンピュータ)が、逐次的に処理を行なうよう記述された入力プログラムを、並列に処理を行なうプログラムに変換する際、自動並列化解析の結果で得られた並列化指示文を、元のソースプログラム中に生成すると共に、当該並列化指示文の文字列を一方向関数に通すことで求められる一意な文字列をコメント文として、当該並列化指示文と同じ行に生成し、そのプログラムを再び入力して並列化する際に、並列化指示文の文字列を前記と同じ一方向関数に通すことで求められる一意な文字列と、当該プログラム上に記述された、前記並列化指示文の文字列を一方向関数に通すことで求められた一意な文字列との一致を調べることで、その指示文が処理系が自動的に挿入したものであり、かつユーザが変更していないことの検出を行なう。そして、処理系が挿入しかつユーザが変更していない指示文および文字列を並列処理プログラムから削除した後、この並列処理プログラムに対して、並列化指示文とその文字列の自動生成を含む再並列化処理を行なう。
【0015】
【発明の実施の形態】
以下、本発明の実施の形態を、図面により詳細に説明する。
【0016】
図1は、本発明に係わる並列化システムを設けたコンパイラを実行するコンピュータ装置の構成例を示すブロック図であり、図2は、図1のコンピュータ装置によるコンパイル動作時における本発明に係わる並列化処理動作例を示すフローチャート、図3は、図1におけるコンピュータ装置で生成された並列処理プログラムの構成例を示す説明図、図4は、図1における中間語生成部の処理動作例を示すフローチャート、図5は、図1における指示文生成部の処理動作例を示すフローチャートである。
【0017】
図1におけるコンピュータ装置は、CPU(Central Processing Unit)や主メモリ、表示装置、入力装置、外部記憶装置などからなり、例えば光ディスク駆動装置を介してCD−ROMに記録されたプログラムやデータを外部記憶装置内にインストールした後、この外部記憶装置から主メモリに読み込みCPUで処理することにより、本発明に係わる並列化システムとしての機能を具備した並列化コンパイラ11としての各機能を実行する。
【0018】
図1において、10は逐次的に処理を行なうよう記述された入力プログラム(ソースファイル)(図中「入力ソース」と記載)、11は並列化コンパイラ、17は並列化コンパイラ11により入力プログラム10から生成されたコンピュータ実行可能なコード形態の並列処理用オブジェクトプログラム((図中「目的コード」と記載)、18は並列処理用オブジェクトプログラム17のソースファイル(図中「出力ソース」と記載)である。
【0019】
並列化コンパイラ11は,中間語生成部12、並列化解析部13、並列化変換部14、目的コード生成部15、指示文生成部16、および、これらの中間語生成部12により生成され、並列化解析部13、並列化変換部14、目的コード生成部15、指示文生成部16により参照・更新される中間語19と、各処理部12〜16でのコンパイル処理時に生成・参照される情報を格納する各種情報テーブル20からなる。
【0020】
中間語生成部12は、入力プログラム10を読み込み、字句解析、構文解析、意味解析等を行なって、中間語19を生成する。中間語19には、指示文による並列化指示の情報も含まれる。
【0021】
並列化解析部13は、中間語生成部12で生成・登録された中間語19および各種情報テーブル20を参照して、プログラムの制御構造、データの参照関係を解析し、並列化可能なループの判定、及び並列化に必要な通信の決定を行ない、中間語19および各種情報テーブル20を更新する。
【0022】
並列化変換部14は、中間語19および各種情報テーブル20を参照して並列化解析部13での並列化解析の結果を基に、プログラムの制御構造の変換及び通信文の生成等を行ない中間語19および各種情報テーブル20を更新する。
【0023】
目的コード生成部15は、中間語19に対して最適化を行なった後、並列処理用オブジェクトプログラム17を出力する。
【0024】
そして、指示文生成部16は、入力プログラム10を読み込み、これに、並列化解析部13で得られた並列化の情報を基に、並列化指示文を生成して挿入すると共に、この並列化指示文の文字列を一方向関数に通す等することでユニーク(唯一無比)な文字列を生成し、この文字列を並列化指示文と同一の行にコメントとして挿入し、ソースファイル18として出力する。
【0025】
このような構成により、コンピュータ装置は、並列化コンパイラ11としての動作において、指示文生成部16により本発明に係わる並列化処理動作を図2に示すようにして行なう。
【0026】
すなわち、指示文生成部16において、入力プログラム10を読み込み(ステップ201)、並列化解析部13で得られた並列化の情報を基に、並列化指示文を生成してこの入力プログラム10に挿入すると共に(ステップ202)、この並列化指示文の文字列を一方向関数に通す等することでユニーク(唯一無比)な文字列を生成し、この文字列を並列化指示文と同一の行にコメントとして挿入し(ステップ203)、ソースファイル18として出力する(ステップ204)。
【0027】
このような手順で指示文生成部16から出力されたソースファイル18の例を図3に示す。
【0028】
並列化コンパイラ11は、図3に示すプログラムにおいて「DO jループ」が並列化できることが分かるので、指示文生成部16により、そのことを指示する「OpenMP」のPARALLEL DO指示文31(「!$OMP PARALLEL DO PRIVATE (I,J)」)を生成して挿入する。
【0029】
さらに、指示文生成部16は、挿入したPARALLEL DO指示文31と同じ行に、並列化指示文の文字列を一方向関数に通すことで求められる一意な文字列32 (ここではハッシュ値「0123456789fedcba」)を、コメントの形式(「!HASH0123456789fedcba」)で挿入する。
【0030】
このようにして、文字列32を付与することにより、このソースファイル18に対してコンパイルを行なう際には、指示文生成部16において、前回並列化指示文を挿入したときと同じハッシュ関数で並列化指示文の字面からハッシュ値を計算し、例えば中間語生成部12において、このハッシュ値と、ソースファイル18上のハッシュ値とを比較・照合することで、並列化コンパイラ11が自動的に生成した並列化指示文をユーザが変更したか否か自動的に検出して調べることができる。
【0031】
尚、ハッシュ値を記述するコメントには適当なプリフィックスを付加して、ユーザが、ユーザ記述のコメントと混同したり、誤って消去したりすることのないようにする。図3に示す例では、コメント記号(「!」)の後ろに、コンパイラが挿入したハッシュ値であることをしめす「HASH」という文字列を付加している。また、この時用いるハッシュ関数は、値域を十分大きくし、異なる字面に対して同一のハッシュ値が生成されることが実用上起きないようなものを選ぶ。
【0032】
このようにすることにより、ユーザが出力ソースに対して再度指示文を挿入し直したいときに、並列化コンパイラ11が自動生成した並列化指示文のみを更新し、ユーザが挿入した並列化指示文、ならびに、並列化コンパイラ11が自動生成してユーザが変更した並列化指示文には手を加えずに保存することが可能となる。
【0033】
次に、指示文生成部16により並列化指示文と文字列とを生成して入力プログラムに挿入したソースファイル18を再変換する際の本発明に係わる処理動作内容の内、上述した中間語生成部12による、並列化指示文を読み込む処理について図4を用いて説明する。
【0034】
図1の中間語生成部12は、ステップ401の処理において並列化指示文を読み込んだ後、ステップ402の処理において、当該並列化指示文に対して指示文生成オプションが指定されているかどうかによって処理を分ける。
【0035】
指示文生成オプションが指定されていなければ、全ての並列化指示文に従ってコンパイルを行なうようにするため、ステップ405の処理に移動して、従来技術と同様に、無条件に、並列化指示文情報として各種情報テーブル20に登録する。
【0036】
また、指示文生成オプションが指定されていれば、並列化コンパイラ11自身が自動生成した並列化指示文は、再解析して挿入し直し、ユーザ(操作者、プログラマ)が指示した並列化指示文のみを読み込むために、ステップ403,304の処理を行なう。
【0037】
すなわち、ステップ403において、並列化指示文の字面から求めたハッシュ値と、ソースファイル18上にコメントとして埋め込まれたハッシュ値とを比較・照合し、一致しているか否かを調べる。尚、ハッシュ値がソースファイル18上にコメントとして埋め込まれていない場合は、ハッシュ値が一致しないものとみなす。
【0038】
ステップ404において、ハッシュ値が一致し、並列化コンパイラ11自身により自動生成された並列化指示文であると分かった場合は、その指示文の情報はテーブルに登録せずに破棄し(ステップ406)、また、ハッシュ値が一致しない場合は、その指示文をユーザ指示とみなし、ステップ405における処理を実行し、並列化指示文の情報を各種情報テーブル20に取り込む。
【0039】
次に、図5を用いて、図1における指示文生成部16の処理動作を説明する。
【0040】
図1における指示文生成部16は、まず、ステップ501における処理で、入力プログラム10に指示文生成オプションが指定されているか否かを調べ、指定されていない場合は何もせずに終了する。
【0041】
指示文生成オプションが指定されている場合、入力プログラム10中の並列化指示文を全て消去する(ステップ502)。その後、ステップ503〜506における処理を繰り返し、図1の並列化解析部13による並列化解析結果の情報(各種情報テーブル20)を基に、入力プログラム10に対する並列化指示文の生成と挿入を行なう。
【0042】
すなわち、図4の処理により図1の中間語生成部12が生成して各種情報テーブル20に登録した並列化指示文が、並列化コンパイラ11自身が自動生成した並列化指示文であるか否かを判定し(ステップ503)、並列化コンパイラ11自身が自動生成した並列化指示文に対しては、当該並列化指示文の字面からハッシュ値を生成して当該並列化指示文と同一の行に付加して(ステップ504)、また、ユーザが入力した並列化指示文に対しては、当該並列化指示文のみを、入力プログラム10に挿入し(ステップ505)、全ての並列化指示文に対して繰り返す(ステップ506)。
【0043】
尚、並列化指示文が対象とする文または有効域に対して、既に並列化指示文が指定されている場合は、並列化指示文は挿入せず、既に存在している指示文を保存する。ユーザ指示は保存したままで指示文を再生成することが可能となる。
【0044】
以上、図1〜図5を用いて説明したように、本例の並列化コンパイラ11では、コンピュータ装置が、逐次的に処理を行なうよう記述された入力プログラムを、並列に処理を行なうプログラムに変換する際、自動並列化解析の結果で得られた並列化指示文を、元のソースプログラム中に生成すると共に、当該並列化指示文の文字列を一方向関数(ハッシュ関数)に通すことで求められる一意な文字列(ハッシュ値)をコメント文として、当該並列化指示文と同じ行に生成して挿入する。
【0045】
このコメント文により、ユーザは、並列処理用に変換されたプログラムのソースファイルにおける、コンパイラが自動的に生成した並列化指示文を容易に特定することができる。
【0046】
さらに、本例では、並列処理用に変換されたプログラムを再び入力して並列化する際に、並列化指示文の文字列を前記と同じ一方向関数に通すことで求められる一意な文字列と、当該プログラム上に記述された、前記並列化指示文の文字列を一方向関数に通すことで求められた一意な文字列との一致を調べることで、その指示文が処理系(コンピュータ)が自動的に挿入したものであり、かつユーザが変更していないことの検出を自動的に行なうことができる。
【0047】
そして、処理系(コンピュータ)が挿入しかつユーザが変更していない指示文および文字列を並列処理プログラムから削除した後、この並列処理プログラムに対して、並列化指示文とその文字列の自動生成を含む再並列化処理を行なう。
【0048】
このように、並列化コンパイラ11自身が自動生成した並列化指示文の入ったソースプログラム(ソースファイル18)を再びコンパイルする際に、プログラマが記述した並列化指示文と並列化コンパイラ11自身が自動生成した並列化指示文とを区別し、並列化コンパイラ11自身が自動生成した並列化指示文のみを消去し、再生成することにより、並列処理プログラムの再変換を効率的に行なうことができる。
【0049】
尚、本発明は、図1〜図5を用いて説明した例に限定されるものではなく、その要旨を逸脱しない範囲において種々変更可能である。例えば、本例では、本発明の並列化変換システムを並列化コンパイラ11の一機能として説明したが、本発明は、逐次プログラムを入力し、並列化指示文の入ったソースを出力するツールとして実現しても良い。
【0050】
また、本例では、共有メモリ型並列計算機向けの並列化指示仕様であるOpenMPを指示文言語として用いていたが、本発明は、分散メモリ型計算機向けの並列化言語を用いて実施することも可能である。例えば、逐次プログラムを入力とし、分散メモリ型並列計算機向けの並列化解析を行ない、結果を分散メモリ型計算機向けの並列化言語であるHPFの並列化指示文として、入力ソース中に挿入することができる。
【0051】
また、本例では、指示文生成部16で生成した文字列(ハッシュ値)を並列化指示文と同一の行にコメントとして挿入した並列処理プログラムを、ソースファイル18として別ファイルで出力しているが、元の入力プログラム10を置き換えることでも良い。
【0052】
また、コンピュータ構成に関しても、キーボードや光ディスクの駆動装置の無いコンピュータ構成としても良い。また、本例では、光ディスクを記録媒体として用いているが、FD(Flexible Disk)等を記録媒体として用いることでも良い。また、プログラムのインストールに関しても、通信装置を介してネットワーク経由でプログラムをダウンロードしてインストールすることでも良い。
【0053】
【発明の効果】
本発明によれば、並列処理を行なうプログラムにおける並列化を指示する指示文(並列化指示文)が、プログラマが記述したものなのか、処理系(コンピュータ)が以前に自動的に付加したものであるかを、処理系で自動的に判別することができ、逐次的に処理を行なうよう記述されたソースプログラムの、並列に処理を行なうオブジェクトプログラムへの、コンピュータによる自動変換を効率化することが可能である。
【図面の簡単な説明】
【図1】本発明に係わる並列化システムを設けたコンパイラを実行するコンピュータ装置の構成例を示すブロック図である。
【図2】図1のコンピュータ装置によるコンパイル動作時における本発明に係わる並列化処理動作例を示すフローチャートである。
【図3】図1におけるコンピュータ装置で生成された並列処理プログラムの構成例を示す説明図である。
【図4】図1における中間語生成部の処理動作例を示すフローチャートである。
【図5】図1における指示文生成部の処理動作例を示すフローチャートである。
【符号の説明】
10:入力プログラム(「入力ソース」)、11:並列化コンパイラ、12:中間語生成部、13:並列化解析部、14:並列化変換部、15:目的コード生成部、16:指示文生成部、17:オブジェクトプログラム(「目的コード」)、18:ソースファイル(「出力ソース」)、19:中間語、20:各種情報テーブル、31:PARALLEL DO指示文、32:文字列(「ハッシュ値」)。

Claims (7)

  1. プログラムされたコンピュータによって、逐次的に処理を行なうよう記述された入力ソースプログラムのコンパイル時に該入力ソースプログラムの並列性を解析し並列化指示文を自動生成して該入力プログラムに挿入することで、該入力プログラムを、並列に処理を行なう並列処理プログラムに変換する並列化変換システムであって、
    上記自動生成した並列化指示文からユニークな文字列を生成し、該並列化指示文と同一の行にコメントとして挿入する第1の手段と、
    入力された上記並列処理プログラムにおける上記文字列と、該文字列と同一の行に挿入された並列化指示文から上記第1の手段により生成される文字列とを照合し一致すれば、該並列化指示文が上記自動生成され、かつ、ユーザ変更されていないものであると判別する第2の手段と
    を有することを特徴とする並列化変換システム。
  2. 請求項1に記載の並列化変換システムであって、
    上記第1の手段は、上記並列化指示文の文字列を一方向関数に通すことで上記文字列を生成することを特徴とする並列化変換システム。
  3. 請求項1、もしくは、請求項2のいずれかに記載の並列化変換システムであって、上記入力プログラムに上記並列化指示文と上記文字列を挿入したプログラムのソースファイルを記憶装置に格納する手段を有することを特徴とする並列化変換システム。
  4. コンピュータを、請求項1から請求項3のいずれかに記載の並列化変換システムにおける各手段として機能させるためのプログラム。
  5. プログラムされたコンピュータによって、逐次的に処理を行なうよう記述された入力ソースプログラムのコンパイル時に該入力ソースプログラムの並列性を解析し並列化指示文を自動生成して該入力プログラムに挿入することで、該入力プログラムを、並列に処理を行なう並列処理プログラムに変換するシステムの並列化変換方法であって、
    上記コンピュータは第1〜第3の処理手段を有し、
    上記第1の処理手段は、
    上記自動生成した並列化指示文からユニークな文字列を生成し、該並列化指示文と同一の行にコメントとして挿入する手を実行し
    上記第2の処理手段は、
    入力された上記並列処理プログラムにおける上記文字列と、該文字列と同一の行に挿入された並列化指示文から上記第1処理手段の手順により生成される文字列とを照合
    該照合結果で両文字列が一致すれば、上記並列化指示文が上記自動生成され、かつ、ユーザ変更されていないものであると判別し、
    上記並列処理プログラムから上記文字列と上記並列化指示文を削除する手を実行し、
    上記第3の処理手段は、
    上記第2の処理手段で上記文字列と上記並列化指示文を削除した上記並列処理プログラムに対して上記第1の処理手段の手順を含む上記コンパイル処理を実行して、該並列処理プログラムに対する再変換を行なうことを特徴とする並列化変換方法。
  6. 請求項5に記載の並列化変換方法であって、
    上記第2の手順では、上記並列化指示文の文字列を一方向関数に通すことで上記文字列を生成することを特徴とする並列化変換方法。
  7. コンピュータに、逐次的に処理を行なうよう記述されたソースプログラムを、並列に処理を行なうオブジェクトプログラムに変換させるコンパイラであって、
    上記コンピュータに、
    上記ソースプログラムの並列性を解析し並列化指示文を生成して挿入する第1の手順と、
    上記並列化指示文からユニークな文字列を生成し、該並列化指示文と同一の行にコメントとして挿入する第2の手順と、
    上記並列化指示文と上記文字列を挿入した並列処理プログラムのソースファイルを記憶装置に格納する第3の手順と、
    再変換のために入力した上記並列処理プログラムに上記第2の手順でコメントとして挿入された文字列と、該文字列が同一の行に挿入された上記並列化指示文から上記第2の手順により生成される文字列とを照合し、一致すれば、該並列化指示文が上記第1の手順により生成され、かつ、ユーザ変更されていない特定指示文であると判別
    上記並列処理プログラムから上記文字列と上記特定指示文を削除する第4の手順と、
    上記文字列と上記特定指示文を削除した上記並列処理プログラムに対する上記第1〜第3の手順を含めたコンパイル手順とを実行させることを特徴とするコンパイラ。
JP2002182292A 2002-06-24 2002-06-24 並列化変換システムと並列化変換方法およびプログラムならびにコンパイラ Expired - Fee Related JP4019361B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2002182292A JP4019361B2 (ja) 2002-06-24 2002-06-24 並列化変換システムと並列化変換方法およびプログラムならびにコンパイラ

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2002182292A JP4019361B2 (ja) 2002-06-24 2002-06-24 並列化変換システムと並列化変換方法およびプログラムならびにコンパイラ

Publications (2)

Publication Number Publication Date
JP2004029982A JP2004029982A (ja) 2004-01-29
JP4019361B2 true JP4019361B2 (ja) 2007-12-12

Family

ID=31178843

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2002182292A Expired - Fee Related JP4019361B2 (ja) 2002-06-24 2002-06-24 並列化変換システムと並列化変換方法およびプログラムならびにコンパイラ

Country Status (1)

Country Link
JP (1) JP4019361B2 (ja)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7391499B2 (en) * 2004-12-02 2008-06-24 Asml Netherlands B.V. Lithographic apparatus and device manufacturing method
EP2361408A4 (en) * 2008-12-01 2012-05-23 Kpit Cummins Infosystems Ltd METHOD AND SYSTEM FOR PARALLELIZING SEQUENCEL COMPUTER PROGRAM CODES

Also Published As

Publication number Publication date
JP2004029982A (ja) 2004-01-29

Similar Documents

Publication Publication Date Title
Ansel et al. Pytorch 2: Faster machine learning through dynamic python bytecode transformation and graph compilation
Anand et al. CertiCoq: A verified compiler for Coq
Verdoolaege et al. Polyhedral extraction tool
US7493610B1 (en) Versioning optimization for dynamically-typed languages
JP3190773B2 (ja) 言語処理プログラムのコンパイル処理方法
US7917899B2 (en) Program development apparatus, method for developing a program, and a computer program product for executing an application for a program development apparatus
CN104536898B (zh) C程序并行区域的检测方法
JP2009503677A (ja) プログラムをデータオブジェクトとしてサポートするコンパイラ
Yallop Staged generic programming
Ďurfina et al. Design of a retargetable decompiler for a static platform-independent malware analysis
Blindell Instruction Selection
US8966463B2 (en) Eliminating redundant function calls
US20100042982A1 (en) Optimization of imperative implementation of compositional content
van Binsbergen et al. GLL parsing with flexible combinators
JP4019361B2 (ja) 並列化変換システムと並列化変換方法およびプログラムならびにコンパイラ
JP2006163686A (ja) コンパイル方法、コンパイルプログラム、コンパイル装置およびコンパイル用の記録媒体
JP2004259007A (ja) コンパイラ装置、コンパイラプログラム、及び記録媒体
Taha et al. Multi-stage programming (poster)
JP2007226589A (ja) プログラム変換システム
JP5932707B2 (ja) 計算機、プログラム及びデータ生成方法
Dillig et al. SAIL: Static analysis intermediate language with a two-level representation
US20040045018A1 (en) Using address space bridge in postoptimizer to route indirect calls at runtime
JP6326838B2 (ja) プログラム処理装置、プログラム処理方法、及びプログラム処理プログラム
JP2017151903A (ja) コンパイル装置、コンパイル方法およびコンパイルプログラム
JP2009181558A (ja) プログラム変換装置

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20040813

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20070521

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20070525

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20070719

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20070913

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

Free format text: PAYMENT UNTIL: 20101005

Year of fee payment: 3

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

Year of fee payment: 4

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

Free format text: PAYMENT UNTIL: 20121005

Year of fee payment: 5

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

Free format text: PAYMENT UNTIL: 20121005

Year of fee payment: 5

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

Free format text: PAYMENT UNTIL: 20131005

Year of fee payment: 6

LAPS Cancellation because of no payment of annual fees