JP3933380B2 - コンパイラ - Google Patents
コンパイラ Download PDFInfo
- Publication number
- JP3933380B2 JP3933380B2 JP2000305608A JP2000305608A JP3933380B2 JP 3933380 B2 JP3933380 B2 JP 3933380B2 JP 2000305608 A JP2000305608 A JP 2000305608A JP 2000305608 A JP2000305608 A JP 2000305608A JP 3933380 B2 JP3933380 B2 JP 3933380B2
- Authority
- JP
- Japan
- Prior art keywords
- processing
- information
- source program
- compiler
- parallelization
- 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
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/41—Compilation
- G06F8/45—Exploiting coarse grain parallelism in compilation, i.e. parallelism between groups of instructions
- G06F8/456—Parallelism detection
Landscapes
- Engineering & Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Devices For Executing Special Programs (AREA)
Description
【発明が属する技術分野】
本発明は、コンパイラに関し、より詳しくは並列コンピュータに対するソース・プログラムをコンパイルするコンパイラに関する。
【0002】
【従来の技術】
近年、複数のCPU(Central Processing Unit)を有するコンピュータは、CPU価格の下落等の理由で普及してきている。よって、例えばOpenMPといった、共有メモリ型の並列コンピュータ向けプログラミングにおけるAPI(Application Program Interface)の使用も広がってきている。このような状況の下、並列コンピュータのためのコンパイラの重要性も上がってきている。
【0003】
【発明が解決しようとする課題】
しかし、従来では並列化指示文がソース・プログラムにおいて指定されていた時に、コンパイラでは並列化指示文内の構造情報を保持することなく処理していた。また、並列化指示文と当該並列化指示文が有効となる文(式を含む)との関係を示す情報を保持することなく処理していた。このため、コンパイラにおける処理が複雑になり、且つ速度の向上を阻害していた。
【0004】
よって本発明の目的は、新規のデータ構造を導入して高速処理可能な、並列コンピュータのためのコンパイラを提供することである。
【0005】
【課題を解決するための手段】
本発明に係る、並列化指示文を含むソース・プログラムをコンパイルするコンパイラは、コンピュータに、当該ソース・プログラム中の並列化指示文を検出するステップと、
【0006】
並列化指示文を検出した場合に、当該並列化指示文内部の構造に従って当該並列化指示文の少なくとも一部分の各処理コードを階層構造をもって記憶領域上に配置することにより、並列化指示文に対するフロントエンド内中間言を生成するステップとを実行させる。
【0007】
これにより構文解析、意味解析などの解析処理で階層構造を有するフロントエンド内中間言を使用することができるようになり、その都度階層構造を確認しながら解析処理を行っていた従来よりも処理が高速化される。
【0008】
また、並列化指示文が有効となる文のフロントエンド内中間言に、当該並列化指示文が有効となる文のフロントエンド内中間言から当該並列化指示文に対するフロントエンド内中間言への参照情報を付加するステップをさらに実行させるようにする。これにより、並列化指示文とそれが有効となる文との関係が明確となる。使用する記憶領域を削減する効果もある。
【0009】
なお、上で述べたようなコンパイラが通常のコンピュータで実行されれば当該コンピュータはコンパイル装置となる。また、コンパイラは、例えばフロッピーディスク、CD−ROM、光磁気ディスク、半導体メモリ、ハードディスク等の記憶媒体又は記憶装置に格納される。また、コンパイラの処理途中の中間的なデータは、コンピュータのメインメモリなどの記憶装置に格納される。
【0010】
【発明の実施の形態】
本発明の一実施の形態に係る機能ブロック図を図1に示す。コンピュータ1は、OpenMPなどのAPIに従った並列化指示文を含むソースプログラムのファイル10をコンパイルし、生成したオブジェクトコードのファイル30を出力するコンパイラ20を実行する。コンパイラ20には、プログラミング言語に従って書かれたソースプログラムに含まれる各字句を解析する字句解析部21と、ソースプログラムの構造を解析する構文解析部22と、ソースプログラムの意味内容を解析する意味解析部23と、中間言変換部24とが含まれる。この字句解析部21と構文解析部22と意味解析部23と中間言変換部24はフロントエンド部40と呼ばれ、フロントエンド部40内で用いられる中間言をフロントエンド内中間言と呼ぶ。中間言変換部24は、フロントエンド内中間言を最適化処理などで用いるコンパイラ内中間言(単に「中間言」と呼ばれることもある。)に変換する。またコンパイラ20には、最適化処理を行う最適化処理部25と、最適化処理などの結果を用いてオブジェクトコードを生成するコード生成部26とがさらに含まれる。
【0011】
本実施の形態では構文解析部22に以下で説明する処理を追加することにより、OpenMPなどに従って記述された並列化指示文をリスト構造化して、フロントエンド内中間言を生成する。リスト構造は階層構造の一種である。
【0012】
例えば、
#pragma omp parallel private(a,b) lastprivate(c)
上の並列化指示文が有効となる文
といった文がソースプログラムに含まれている場合には、図2に示すようなデータ構造を生成する。なお、「#pragma omp」はOpenMPのAPIであることを示すものである。また、上の例ではparallelが指示子(directive)、private及びlastprivateが節(clause)、a,b及びcが並びと呼ばれている。
【0013】
図2では、並列化指示文が有効となる文のコード格納域201と、その文についての各種情報格納域203とが含まれる。例えば、並列化指示文がFOR文であれば、コード格納域201にはFOR文であることを示すコードが格納され、各種情報格納域203にはループの情報等が格納される。なお、ここまでは従来と変わらない。この領域をa_statementと呼ぶ。本実施の形態では、並列化指示文の指示子(上の例ではparallel)のアドレス格納域205が、並列化指示文が有効となる文のフロントエンド内中間言において付加されている。これにより、以下に示すリスト構造へのアクセスが容易になり、並列化指示文と当該並列化指示文が有効となる文との関係が明確化される。また、並列化指示文の存在のみを示すフロントエンド内中間言が不要になる。
【0014】
指示子のアドレス格納域205に格納されているアドレス(*1)が、指示子parallelに関連する節へのリンク情報等が格納される情報域207の先頭となる。また、情報域207に対応して、parallelに対応する処理コードが格納される情報域209も設けられている。また、節priveteに関連する並びへのリンク情報及び節lastprivateへのリンク情報等が格納される情報域211と、privateに対応する処理コードが格納される情報域213とが対応して設けられている。さらに、節lastprivateに関連する並びへのリンク情報等が格納される情報域215と、lastprivateに対応する処理コードが格納される情報域217とが対応して設けられる。
【0015】
節privateに関連する並びaに関連する他の並びへのリンク情報等が格納される情報域219と、aに対応する処理コードが格納される情報域221とが対応して設けられる。また、節privateに関連する並びbに関する情報が格納される情報域223(上の例では空)と、bに対応する処理コードが格納される情報域225とが対応して設けられる。また、節lastprivateに関連する並びcに関する情報が格納される情報域227(上の例では空)と、cに対応する処理コードが格納される情報域229とが対応して設けられる。なお、処理コードは、指示子、節、並びの種類を区別することも可能な一意のコード(数値)である。例えばparallelは0x01、privateは0x02である。
【0016】
このようなデータ構造を生成するために、従来の処理フローに加えて実施される処理フローを図3を用いて説明する。最初に並列化指示文か否かを判断する(ステップS1)。並列化指示文でなければ元の処理に戻る。並列化指示文である場合には、指示子があるか判断する(ステップS3)。並列化指示文であって指示子がない場合には、エラーであるから元の処理に戻る。もし指示子がある場合には、指示子の処理コードをリスト構造に設定する(ステップS5)。これがリスト構造の先頭領域となる。なお図2の例ではparallelの処理コードを設定する。そして、並列化指示文が有効となる文のフロントエンド中間言に、リスト構造の起点を登録する(ステップS7)。図2の例では指示子のアドレス格納域205に、指示子parallelの情報域207のアドレスを格納する。
【0017】
以下の説明では、情報域207及び209、情報域211及び213、情報域215及び217、情報域219及び221、情報域223及び225、情報域227及び229をそれぞれ1つの情報域として説明する場合もある。
【0018】
次に未処理の節が存在するか判断する(ステップS9)。未処理の節が存在しない場合には、元の処理に戻る。もし未処理の節が存在している場合には、節の処理コードをリスト構造に設定する(ステップS11)。なお、節の処理コードをリスト構造に設定した場合には、最初は当該節に関連する指示子の情報域に当該節の情報域のアドレスを格納する。また、節が2つ以上ある場合において、2番目以降の節については前の節の情報域に当該節の情報域のアドレスを格納する。図2の例では、指示子parallelに関連する節はprivateとlastprivateの2つあり、節privateの情報域211のアドレスは指示子parallelの情報域207に格納され、節lastprivateの情報域215のアドレスは節privateの情報域211に格納される。
【0019】
そして未処理の並びが存在するか判断する(ステップS13)。もし未処理の並びがなければステップS9に戻る。一方、未処理の並びが存在している場合には、並びの処理コードをリスト構造に設定する(ステップS15)。なお、並びの処理コードをリスト構造に設定した場合には、最初は当該並びに関連する節の情報域に当該並びの情報域のアドレスを格納する。また、並びが2つ以上ある場合において、2番目以降の並びについては前の並びの情報域に当該並びの情報域のアドレスを格納する。図2の例では、節privateに関連する並びはaとbの2つあり、並びaの情報域219のアドレスは節privateの情報域211に格納され、並びbの情報域223のアドレスは並びaの情報域219に格納される。なお、節lastprivateに関連する並びはcだけであり、並びcの情報域227のアドレスは節lastprivateの情報域215に格納される。
【0020】
ステップS13及びステップS15は未処理の並びが無くなるまで繰り返される。図3に示すような処理により図2に示されるようなデータ構造が生成される。
【0021】
図2に示されるようなデータ構造は、図4に示すような処理テーブルと合わせて使用される。図4の処理テーブルでは、列401が処理1についての情報を格納しており、列403が処理2についての情報を格納している。また、行405がparallelの処理コードに対応する、処理1、処理2...についての情報を格納しており、行407がprivateの処理コードに対応する、処理1、処理2...についての情報を格納しており、行409がvariableの処理コードに対応する処理1、処理2...についての情報を格納している。
【0022】
処理1、処理2といった処理は、例えば構文解析の情報取得又は処理関数実行や、意味解析の情報取得又は処理関数実行、型チェックの情報取得又は処理関数実行、コンパイラ内中間言の取得といった、構文解析部22、意味解析部23及び中間言変換部24において実行される各種処理である。
【0023】
例えば、処理1を型チェックのための情報取得とし、例えば図4のa1をon、図4のa2をoffとする。そうすると、型チェックのための情報取得を行う際には、parallelの処理コードに対してはonという情報が、privateの処理コードに対してはoffという情報が取得できる。同様に、処理2を意味解析用関数アドレスとし、図4のb1をparallel用の意味解析用関数アドレスとし、b2をprivate用の意味解析用関数アドレスとする。そうすると意味解析処理を行う際には、parallelの処理コードに対してparallel用の意味解析用関数アドレスを取得することができ、その関数を実行することができる。また、privateの処理コードに対してはprivate用の意味解析用関数アドレスを取得することができ、その関数を実行することができる。
【0024】
本実施の形態では、処理テーブル内の情報を取得する場合には、例えば以下のような式を用いる。
テーブル情報=処理テーブル[処理コード].処理x
ここで処理xとは、処理1、処理2...を表す。このように処理テーブルから取得した「テーブル情報」を用いて処理を行うことができる。例えば、処理1がコンパイラ内中間言の取得であって、a1がparallel(処理コード0x01)のコンパイラ内中間言であるparallel_xであり、a2がprivate(処理コード0x02)のコンパイラ内中間言であるprivate_xとすると、
parallelコンパイラ内中間言=処理テーブル[0x01].処理1
でparallelコンパイラ内中間言にparallel_xが入る。
privateコンパイラ内中間言=処理テーブル[0x02].処理1
でprivateコンパイラ内中間言にprivate_xが入る。
【0025】
一例として中間言変換部24における、処理テーブル及び処理コードを用いたフロントエンド内中間言からコンパイラ内中間言への変換処理(本実施の形態における変更分)を図5を用いて説明する。
【0026】
最初にリスト構造を有する文のフロントエンド内中間言であるか否かを判断する(ステップS21)。本実施の形態の場合、指示子のアドレス格納域が存在しているか検査すれば良い。もし、リスト構造を有する文のフロントエンド内中間言でなければ、元の処理に戻る。リスト構造を有する文のフロントエンド内中間言であれば、並列化指示文のコンパイラ内中間言を生成する(ステップS23)。並列化指示文のコンパイラ内中間言は、従来と同じである。
【0027】
そして指示子が存在しているか判断する(ステップS25)。指示子が存在しているかは、リスト構造において最初の処理コードを調べればよい。処理コードは、指示子、節、並びの別をも示している。もし、指示子が存在していなければ元の処理に戻る。指示子が存在していれば、指示子のコンパイラ内中間言を処理テーブルを用いて設定する(ステップS27)。ここでは、指示子コンパイラ内中間言=処理テーブル[指示子の処理コード].処理1(処理1がコンパイラ内中間言の取得である場合)という処理を行う。
【0028】
次に未処理の節が存在しているか判断する(ステップS29)。ステップS29の最初の実施の場合には、リスト構造内の指示子の情報域に格納されている他の情報域のアドレスが存在しているか否かで判断する。ステップS29の実施が2度目以降の場合には、前の節の情報域内に、並びの情報域以外の情報域のアドレスが格納されているかで判断する。もし、未処理の節が存在していない場合には、元の処理に戻る。未処理の節が存在している場合には、節のコンパイラ内中間言を処理テーブルを用いて設定する(ステップS31)。節の情報域のアドレスにアクセスし、その節の処理コードを取得する。そして、節コンパイラ内中間言=処理テーブル[節の処理コード].処理1という処理を行う。
【0029】
次に、未処理の並びが存在しているか判断する(ステップS33)。ステップS33の最初の実施の場合には、リスト構造内の節の情報域内に、他の情報域のアドレスが存在するか確認し、もし存在する場合には当該他の情報域のアドレスにアクセスしてその情報域に格納された処理コードが並びの処理コードか否かで判断する。また、ステップS33の2度目以降の実施の場合には、現在の並びの情報域に他の情報域へのアドレスが格納されているかで判断する。もし、未処理の並びが存在していない場合には、ステップS29に戻る。一方、未処理の並びが存在している場合には、並びのコンパイラ内中間言を処理テーブルを用いて設定する(ステップS35)。並びの情報域のアドレスにアクセスし、並びの処理コードを取得する。そして、並びコンパイラ内中間言=処理テーブル[並びの処理コード].処理1という処理を行う。
【0030】
以上のような処理を行うことにより、フロントエンド内中間言からコンパイラ内中間言を生成することができるようになる。指示子、節及び並びの処理コードを含むリスト構造と処理テーブルを保持しているため、無駄な解析処理を行わずに済むので、簡単且つ高速にコンパイラ内中間言を処理テーブルから取得することができる。
【0031】
なお、ステップS25以降の処理は、他の処理、例えば、意味解析用情報の取得や、意味解析処理の実施(意味解析用関数関数アドレスの取得と実行)等の場合でも、ステップS27、ステップS31及びステップS33を「テーブル情報=処理テーブル[処理コード].処理x」といった形の処理に変更すれば、他の処理に適用することができる。その場合には、無駄な解析処理を行わずに済むので、簡単且つ高速に所望の処理を実施することができるようになる。また、新たな処理が必要になった場合には、処理テーブルの列の数を増やせば簡単に対処することができるようになる。
【0032】
以上本発明の一実施の形態を説明したが、様々な変形が可能である。例えば図1において最適化処理部25の後にコード生成部26が設けられているが、最適化処理の他に他の処理(例えばレジスタ割付処理)を実施した後にコード生成処理を行うような構成であってもよい。また、リスト構造は図2のような構造でなくとも、並列化指示文の構造が表された階層的なデータ構造であっても良い。また、図3及び図5の処理フローはOpenMPにおける並列化指示文を前提とした処理フローとなっているので、他のルールに従った並列化指示文の場合にはその並列化指示文の構造に従って変更する必要がある。上でも述べたが図4の処理テーブルは、列を追加すれば様々な処理に対処できるようになり、行を増やせば取扱い処理コードの数が増える。
【0033】
また、図1のコンピュータ1がネットワークに接続されており、ソースプログラム・ファイル10が他のコンピュータから送信されてきたり、オブジェクトコード・ファイル30が他のコンピュータへ送信されるような場合もある。他のコンピュータは並列コンピュータである場合もある。
【0034】
さらに上で述べたコンパイラは通常のコンピュータにおいて実行されるプログラムの形態で実施され、その場合、コンパイラは、例えばフロッピーディスク、CD−ROM、光磁気ディスク、半導体メモリ、ハードディスク等の記憶媒体又は記憶装置に格納される。プログラムであるコンパイラは、ネットワークを介して配布される場合もある。
【0035】
(付記1)
ソース・プログラムをコンパイルするコンパイラを格納した記録媒体であって、
前記コンパイラは、コンピュータに、
前記ソース・プログラム中の並列化指示文を検出するステップと、
前記並列化指示文を検出した場合に、当該並列化指示文内部の構造に従って当該並列化指示文の少なくとも一部分の各処理コードを階層構造をもって記憶領域上に配置することにより、並列化指示文に対するフロントエンド内中間言を生成するステップと、
を実行させるためのコンパイラである、記録媒体。
【0036】
(付記2)
前記並列化指示文が有効となる文のフロントエンド内中間言に、当該並列化指示文が有効となる文のフロントエンド内中間言から前記並列化指示文に対するフロントエンド内中間言への参照情報を付加するステップ、
をさらに実行させるためのコンパイラであることを特徴とする付記1記載の記録媒体。
【0037】
(付記3)
各前記処理コードに対応する1又は複数の処理情報を格納する処理テーブルを用いて、前記並列化指示文に対するフロントエンド内中間言内の前記処理コードから現在の処理内容に対応する前記処理情報を取得するステップと、
を実行させるためのコンパイラであることを特徴とする付記1記載の記録媒体。
【0038】
(付記4)
前記現在の処理内容が、型解析、構文解析、意味解析、又はコンパイラ内中間言生成であることを特徴とする付記3記載の記録媒体。
【0039】
(付記5)
前記階層構造が、リスト構造であることを特徴とする付記1記載の記録媒体。
【0040】
(付記6)
前記並列化指示文の部分には、指示子、節及び並びが含まれ、
前記指示子の処理コードの下位に前記節の処理コード、前記節の処理コードの下位に並びの処理コードがリンク付けされる
ことを特徴とする付記1記載の記録媒体。
【0041】
(付記7)
ソース・プログラムをコンパイルするコンパイル装置であって、
前記ソース・プログラム中の並列化指示文を検出する手段と、
前記並列化指示文を検出した場合に、当該並列化指示文内部の構造に従って当該並列化指示文の少なくとも一部分の各処理コードを階層構造をもって記憶領域上に配置することにより、並列化指示文に対するフロントエンド内中間言を生成する手段と、
を有するコンパイル装置。
【0042】
【発明の効果】
以上のように、新規のデータ構造を導入して高速処理可能な、並列コンピュータのためのコンパイラを提供することができた。
【図面の簡単な説明】
【図1】本発明の一実施の形態に係るコンパイラを実行するコンピュータの機能ブロック図である。
【図2】本発明の一実施の形態に係るフロントエンド内中間言の一例を示す図である。
【図3】図2のデータ構造を生成するための処理フローを示す図である。
【図4】処理テーブルの一例を示す図である。
【図5】フロントエンド内中間言からコンパイラ内中間言を生成するための処理フローを表す図である。
【符号の説明】
1 コンピュータ 10 ソースプログラム・ファイル
20 コンパイラ 21 字句解析部 22 構文解析部
23 意味解析部 24 中間言変換部 25 最適化処理部
26 コード生成部 30 オブジェクトコード・ファイル
40 フロントエンド部
Claims (4)
- ソース・プログラムをコンパイルするコンパイラを格納した記録媒体であって、
前記コンパイラは、コンピュータに、
ソース・プログラム格納部に格納されている前記ソース・プログラムを読み出し、前記ソース・プログラム中の並列化指示文を検出するステップと、
前記並列化指示文を検出した場合に、当該並列化指示文内部の構造に従って、当該並列化指示文に含まれる所定の字句を抽出し、各前記所定の字句の識別情報を階層構造をもって記憶装置上に配置することにより、前記ソース・プログラムを解析する型解析処理、構文解析処理及び意味解析処理、並びに最適化処理で用いる中間データであるコンパイル内中間言の生成処理のうち少なくともいずれかを含む解析処理で用いる中間データであり且つ前記並列化指示文に対する第1フロントエンド内中間言を生成するステップと、
前記解析処理に含まれる処理のうち実施する処理に応じて、前記解析処理に含まれる処理で用いられる少なくとも関数のアドレス情報を含む処理情報を前記所定の字句毎に格納する処理テーブル格納部から、前記記憶装置内の前記第1フロントエンド内中間言の前記所定の字句の識別情報を基に、前記所定の字句に対応する前記処理情報を取得するステップと、
を実行させるためのコンパイラである、記録媒体。 - 前記解析処理で用いる中間データであり、前記並列化指示文が有効となる文の第2フロントエンド内中間言に、前記第1フロントエンド内中間言への参照情報を付加し、前記記憶装置に格納するステップ、
をさらに実行させるためのコンパイラであることを特徴とする請求項1記載の記録媒体。 - 前記階層構造が、リスト構造であることを特徴とする請求項1記載の記録媒体。
- ソース・プログラムをコンパイルするコンパイル装置であって、
前記ソース・プログラムを格納するプログラム記憶手段と、
前記ソース・プログラムを解析する型解析処理、構文解析処理及び意味解析処理、並びに最適化処理で用いる中間データであるコンパイル内中間言の生成処理のうち少なくともいずれかを含む解析処理で用いられる少なくとも関数のアドレス情報を含む処理情報を所定の字句毎に格納する処理情報記憶手段と、
前記プログラム記憶手段に格納されている前記ソース・プログラムを読み出し、前記ソース・プログラム中の並列化指示文を検出する手段と、
前記並列化指示文を検出した場合に、当該並列化指示文内部の構造に従って、当該並列化指示文に含まれる前記所定の字句を抽出し、各前記所定の字句の識別情報を階層構造をもって記憶領域上に配置することにより、前記解析処理で用いる中間データであり且つ前記並列化指示文に対する第1フロントエンド内中間言を生成する手段と、
前記解析処理に含まれる処理のうち実施する処理に応じて、前記処理情報記憶手段から、前記第1フロントエンド内中間言の前記所定の字句の識別情報を基に、前記所定の字句に対応する前記処理情報を取得する手段と、
を有するコンパイル装置。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2000305608A JP3933380B2 (ja) | 2000-10-05 | 2000-10-05 | コンパイラ |
US09/774,685 US6993753B2 (en) | 2000-10-05 | 2001-02-01 | Compiler for parallel computer |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2000305608A JP3933380B2 (ja) | 2000-10-05 | 2000-10-05 | コンパイラ |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2002116914A JP2002116914A (ja) | 2002-04-19 |
JP3933380B2 true JP3933380B2 (ja) | 2007-06-20 |
Family
ID=18786433
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2000305608A Expired - Fee Related JP3933380B2 (ja) | 2000-10-05 | 2000-10-05 | コンパイラ |
Country Status (2)
Country | Link |
---|---|
US (1) | US6993753B2 (ja) |
JP (1) | JP3933380B2 (ja) |
Families Citing this family (35)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7249242B2 (en) | 2002-10-28 | 2007-07-24 | Nvidia Corporation | Input pipeline registers for a node in an adaptive computing engine |
US7653710B2 (en) | 2002-06-25 | 2010-01-26 | Qst Holdings, Llc. | Hardware task manager |
US7962716B2 (en) | 2001-03-22 | 2011-06-14 | Qst Holdings, Inc. | Adaptive integrated circuitry with heterogeneous and reconfigurable matrices of diverse and adaptive computational units having fixed, application specific computational elements |
US7752419B1 (en) | 2001-03-22 | 2010-07-06 | Qst Holdings, Llc | Method and system for managing hardware resources to implement system functions using an adaptive computing architecture |
US6836839B2 (en) | 2001-03-22 | 2004-12-28 | Quicksilver Technology, Inc. | Adaptive integrated circuitry with heterogeneous and reconfigurable matrices of diverse and adaptive computational units having fixed, application specific computational elements |
US6577678B2 (en) | 2001-05-08 | 2003-06-10 | Quicksilver Technology | Method and system for reconfigurable channel coding |
US7046635B2 (en) | 2001-11-28 | 2006-05-16 | Quicksilver Technology, Inc. | System for authorizing functionality in adaptable hardware devices |
US6986021B2 (en) | 2001-11-30 | 2006-01-10 | Quick Silver Technology, Inc. | Apparatus, method, system and executable module for configuration and operation of adaptive integrated circuitry having fixed, application specific computational elements |
US8412915B2 (en) | 2001-11-30 | 2013-04-02 | Altera Corporation | Apparatus, system and method for configuration of adaptive integrated circuitry having heterogeneous computational elements |
US7215701B2 (en) | 2001-12-12 | 2007-05-08 | Sharad Sambhwani | Low I/O bandwidth method and system for implementing detection and identification of scrambling codes |
US7403981B2 (en) | 2002-01-04 | 2008-07-22 | Quicksilver Technology, Inc. | Apparatus and method for adaptive multimedia reception and transmission in communication environments |
US20030135535A1 (en) * | 2002-01-11 | 2003-07-17 | Hoeflinger Jay P. | Transferring data between threads in a multiprocessing computer system |
US7346898B2 (en) * | 2002-01-29 | 2008-03-18 | Texas Instruments Incorporated | Method for scheduling processors and coprocessors with bit-masking |
US6732354B2 (en) * | 2002-04-23 | 2004-05-04 | Quicksilver Technology, Inc. | Method, system and software for programming reconfigurable hardware |
US7660984B1 (en) | 2003-05-13 | 2010-02-09 | Quicksilver Technology | Method and system for achieving individualized protected space in an operating system |
US7328414B1 (en) | 2003-05-13 | 2008-02-05 | Qst Holdings, Llc | Method and system for creating and programming an adaptive computing engine |
JP3847672B2 (ja) * | 2002-07-03 | 2006-11-22 | 松下電器産業株式会社 | コンパイラ装置及びコンパイル方法 |
US8108656B2 (en) | 2002-08-29 | 2012-01-31 | Qst Holdings, Llc | Task definition for specifying resource requirements |
US7937591B1 (en) | 2002-10-25 | 2011-05-03 | Qst Holdings, Llc | Method and system for providing a device which can be adapted on an ongoing basis |
US8276135B2 (en) | 2002-11-07 | 2012-09-25 | Qst Holdings Llc | Profiling of software and circuit designs utilizing data operation analyses |
US7225301B2 (en) | 2002-11-22 | 2007-05-29 | Quicksilver Technologies | External memory controller node |
US20040199919A1 (en) * | 2003-04-04 | 2004-10-07 | Tovinkere Vasanth R. | Methods and apparatus for optimal OpenMP application performance on Hyper-Threading processors |
US7840949B2 (en) * | 2003-11-03 | 2010-11-23 | Ramal Acquisition Corp. | System and method for data transformation using dataflow graphs |
US8527971B2 (en) | 2006-03-30 | 2013-09-03 | Atostek Oy | Parallel program generation method |
US7882498B2 (en) * | 2006-03-31 | 2011-02-01 | Intel Corporation | Method, system, and program of a compiler to parallelize source code |
US8645933B2 (en) * | 2008-08-01 | 2014-02-04 | Leon Schwartz | Method and apparatus for detection and optimization of presumably parallel program regions |
US8745360B2 (en) * | 2008-09-24 | 2014-06-03 | Apple Inc. | Generating predicate values based on conditional data dependency in vector processors |
US8224997B2 (en) * | 2009-02-23 | 2012-07-17 | International Business Machines Corporation | Document source debugger |
JP2010204979A (ja) * | 2009-03-04 | 2010-09-16 | Renesas Electronics Corp | コンパイル方法及びコンパイラ |
US8869126B2 (en) * | 2009-10-20 | 2014-10-21 | Bull Hn Information Systems Inc. | Method and apparatus enabling multi threaded program execution for a Cobol program including OpenMP directives by utilizing a two-stage compilation process |
US8370820B2 (en) * | 2009-10-20 | 2013-02-05 | Guenthner Cynthia S | Method and apparatus for enabling parallel processing during execution of a Cobol source program using two-stage compilation |
JP5990466B2 (ja) | 2010-01-21 | 2016-09-14 | スビラル・インコーポレーテッド | ストリームに基づく演算を実装するための汎用複数コアシステムのための方法および装置 |
US20140223439A1 (en) * | 2010-02-22 | 2014-08-07 | Analog Devices, Inc. | Superscalar control for a probability computer |
US9207977B2 (en) | 2012-02-06 | 2015-12-08 | Honeywell International Inc. | Systems and methods for task grouping on multi-processors |
US9612868B2 (en) * | 2012-10-31 | 2017-04-04 | Honeywell International Inc. | Systems and methods generating inter-group and intra-group execution schedules for instruction entity allocation and scheduling on multi-processors |
Family Cites Families (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH01108638A (ja) * | 1987-10-21 | 1989-04-25 | Hitachi Ltd | 並列化コンパイル方式 |
JP2749039B2 (ja) * | 1987-11-06 | 1998-05-13 | 株式会社日立製作所 | オブジェクト生成方法 |
US5093916A (en) * | 1988-05-20 | 1992-03-03 | International Business Machines Corporation | System for inserting constructs into compiled code, defining scoping of common blocks and dynamically binding common blocks to tasks |
US5179702A (en) * | 1989-12-29 | 1993-01-12 | Supercomputer Systems Limited Partnership | System and method for controlling a highly parallel multiprocessor using an anarchy based scheduler for parallel execution thread scheduling |
JPH05257709A (ja) * | 1992-03-16 | 1993-10-08 | Hitachi Ltd | 並列化判別方法およびそれを用いた並列化支援方法 |
US6665688B1 (en) * | 1998-12-23 | 2003-12-16 | Cray Inc. | Method and system for automatically regenerating data on-demand |
JP2001167060A (ja) * | 1999-12-07 | 2001-06-22 | Hitachi Ltd | タスク並列化方法 |
-
2000
- 2000-10-05 JP JP2000305608A patent/JP3933380B2/ja not_active Expired - Fee Related
-
2001
- 2001-02-01 US US09/774,685 patent/US6993753B2/en not_active Expired - Fee Related
Also Published As
Publication number | Publication date |
---|---|
JP2002116914A (ja) | 2002-04-19 |
US6993753B2 (en) | 2006-01-31 |
US20020042907A1 (en) | 2002-04-11 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP3933380B2 (ja) | コンパイラ | |
US7856627B2 (en) | Method of SIMD-ization through data reshaping, padding, and alignment | |
US8091075B2 (en) | Method and apparatus for breakpoint analysis of computer programming code using unexpected code path conditions | |
US8566810B2 (en) | Using database knowledge to optimize a computer program | |
US7509632B2 (en) | Method and apparatus for analyzing call history data derived from execution of a computer program | |
TWI387927B (zh) | 程式碼轉換之部分無效碼刪除最佳化 | |
US8181170B2 (en) | Unwind information for optimized programs | |
US20110047532A1 (en) | Methods and apparatuses for selective code coverage | |
CN100405294C (zh) | 在运行时期间优化计算机程序的***与方法 | |
US20060048114A1 (en) | Method and apparatus for dynamic compilation of selective code blocks of computer programming code to different memory locations | |
US20110047531A1 (en) | Methods and apparatuses for selective code coverage | |
JPH08314728A (ja) | ソースプログラムをオブジェクトプログラムに変換する方法および装置 | |
JP2003173262A (ja) | プログラムチューニングシステムとプログラムチューニング方法およびプログラムと記録媒体 | |
JP2012038231A (ja) | バイナリコードを最適化するコンパイル方法、及びそのコンパイラシステム、並びにコンピュータ・プログラム | |
Holzmann | The Engineering of a Model Checker: the Gnu i-Protocol Case Study Revisited. | |
US20020062478A1 (en) | Compiler for compiling source programs in an object-oriented programming language | |
JP2004259007A (ja) | コンパイラ装置、コンパイラプログラム、及び記録媒体 | |
CN1188933A (zh) | 程序设计中内存操作错误的识别方法 | |
US8245206B2 (en) | System and method for efficient string concatenation in a virtual machine environment | |
US8589435B2 (en) | Method, system and program for simplifying data flow in a statement with sequenced subexpressions | |
Jakobsson et al. | Fast as a shadow, expressive as a tree: hybrid memory monitoring for C | |
US7334221B1 (en) | System and method for encoding trace framework enabling in an object file | |
Watson | Practical optimizations for automata | |
JP2008071065A (ja) | インライン展開を行うコンパイル装置、方法、プログラム、記憶媒体 | |
JP3692884B2 (ja) | プログラム処理方法および記録媒体 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20060829 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20061017 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20061121 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20070104 |
|
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: 20070313 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20070313 |
|
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: 20100330 Year of fee payment: 3 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20110330 Year of fee payment: 4 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20110330 Year of fee payment: 4 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20120330 Year of fee payment: 5 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20130330 Year of fee payment: 6 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20130330 Year of fee payment: 6 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20140330 Year of fee payment: 7 |
|
LAPS | Cancellation because of no payment of annual fees |