JPH0432416B2 - - Google Patents

Info

Publication number
JPH0432416B2
JPH0432416B2 JP2170388A JP17038890A JPH0432416B2 JP H0432416 B2 JPH0432416 B2 JP H0432416B2 JP 2170388 A JP2170388 A JP 2170388A JP 17038890 A JP17038890 A JP 17038890A JP H0432416 B2 JPH0432416 B2 JP H0432416B2
Authority
JP
Japan
Prior art keywords
program
parallel
subprogram
sections
serialization
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 - Lifetime
Application number
JP2170388A
Other languages
English (en)
Other versions
JPH0338735A (ja
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 filed Critical
Publication of JPH0338735A publication Critical patent/JPH0338735A/ja
Publication of JPH0432416B2 publication Critical patent/JPH0432416B2/ja
Granted legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Prevention of errors by analysis, debugging or testing of software
    • G06F11/362Debugging of software
    • G06F11/3624Debugging of software by performing operations on the source code, e.g. via a compiler
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Prevention of errors by analysis, debugging or testing of software
    • G06F11/3604Analysis of software for verifying properties of programs

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • Quality & Reliability (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Debugging And Monitoring (AREA)
  • Devices For Executing Special Programs (AREA)

Description

【発明の詳細な説明】 A 産業上の利用分野 本発明は計算機システムの分野に関し、詳細に
は、コンピユータ・プログラムのデバツグに関す
るものである。具体的には、選択的直列化による
並列プログラムのデバツグのための方法を記載す
る。
B 従来技術及びその課題 共用メモリ・マルチプロセツサは、潜在的に強
力な計算力を得るための安価で効率的な方法を提
供する。この計算力を利用するためには、ソー
ス・プログラムは並列言語(またはマルチプロセ
ツサ用の直列言語の拡張)で書かなければならな
い。最近、共用メモリ・マルチプロセツサ上での
並列プログラムの開発をサポートするため、フオ
ートランやC言語等の直列言語に対する多くの並
列拡張が設計され、実施されてきた。
プログラムの一般開発、特に並列プログラムの
開発における1つの大きな問題は、プログラム中
のエラーを見つけ訂正すること、すなわちデバツ
グと呼ばれるステツプである。直列プログラムを
デバツグするための方法は周知であるが、これら
の方法は並列プログラムには容易に適用できな
い。プログラムをデバツグするための幾つかの一
般的方式、すなわち区切り点や事象追跡のどれ
も、並列プログラムには容易に適用できない。
並列プログラムは、幾つかの理由で直列プログ
ラムよりもデバツグを行なうのが難しい。第1
に、実行中の処理を制御し、これらの処理が停止
する区切り点における情報を表示するのが難し
い。第2に、実行追跡情報または状況情報を印刷
するというオーバヘツドが、並列実行の順序を変
え、エラーをおおい隠し、さらには新しいエラー
を生じる可能性さえある。第3に、通常のデバツ
グ用ツールは、プログラムの実行中に大量の情報
を表示する。並列システムをデバツグするときに
表示される出力データの量は、直列システムをデ
バツグするときに必要な量よりも大きくなること
さえある。
さらに、エラーが、「不完全な」プログラム・
ステートメントが実行された後でしか現れないこ
とがよくある。ユーザ・プログラムにおける並列
作業が並列システムにおける複数のプログラムに
わたつてどのように分散されているかに関する追
加の知識がないと、並列システムのデバツグは、
直列システムよりも1桁難しくなる。
本発明では、前処理プログラムまたは並列言語
の並列化コンパイラ内で走行する並列デバツグ機
能をもたらす方法を記載する。この方法は、長つ
たらしい追跡や区切り点の設定を必要とせずにユ
ーザが並列プログラムのバグを探し出すのを助
け、したががつて上記の問題を回避する。
本発明の方法は、並列プログラミングに関する
以下の知見に基づくものである。
1 使用可能な並列プログラミング言語の大部分
は、ユーザが並列作業及び同期化を指定できる
ように小さな1組の並列構造によつて拡大され
た通常の直列言語である。これらの言語では、
並列構造は、それらがユーザ・プログラムのど
こで使用されていても、識別しラベルをつける
ことができる。
2 通常、並列プログラムは、計算が直列セクシ
ヨンと並列セクシヨンに分離されるように編成
されている。並列セクシヨンとは、幾つかの処
理によつて実行可能なプログラム・セグメント
である。並列DOループ及びフオーク()構造
は最も一般的な並列セクシヨンである。
3 多くの並列化されたプログラムは依然として
並列システムで1つの処理によつて順次実行す
ることができる。並列プログラムを順次実行し
たときの結果と並列に実行したときの結果は、
同じであるか、または実質的に同じであるほど
十分に近いものである。
直列セクシヨンは、1台のプロセツサによつ
てのみ実行可能な並列セクシヨンと見なすこと
ができるので、プログラムの任意の並列セクシ
ヨンを直列セクシヨンに変更し、依然として同
様な結果を得ることが可能である。並列実行で
プログラム・エラーが発生して、誤つた結果を
生じる場合、プログラムの順次実行の結果を使
つて、対応する並列実行を較正することができ
る。
C 課題を解決するための手段 本発明は、コンパイラの直列化のためのコード
の並列セクシヨンの選択、及び最終的には単一プ
ロセツサの実行において、コンピユータ・プログ
ラマを支援する働きをする。一度実行されると、
プログラマは単一プロセツサ及びマルチプロセツ
サ環境でのコードの並列セクシヨンの実行の結果
を準備することができる。各環境での実行結果が
異なると並列プログラミング・エラーを示し、プ
ログラマがそれを訂正することができる。
本発明の動作は以下のような一連のステツプで
行なわれる。最初に、ソース・コード中の並列構
造に関する情報を集める。この情報を使つてプロ
グラム構造を確立し、並列構造が含まれるコー
ド・セクシヨンを探し出す。次にプログラム構造
及びプログラム内の並列構造の位置が表示され
る。この表示を見て、プログラマは直列化すべき
並列構造を選択する。最初に、プログラマが入力
した直列化命令に従つて、プログラムの目的コー
ドが生成される。
直列化デバツグ機能は、プログラム中のエラー
を探し出すため、単一プロセツサで実行される並
列プログラムの並列セクシヨンの選択において、
コンピユータ・プログラマを支援する働きをす
る。ソース・プログラム中の並列構造に関する情
報を集める。この情報を使つてプログラム構造を
確立し、並列構造が含まれるプログラムのセクシ
ヨンを探し出す。次にプログラム構造及びプログ
ラム内の並列構造の位置が木グラフとして表示さ
れる。この表示を見て、プログラマは直列化すべ
き並列セクシヨンを選択する。次にプログラマが
入力した直列化命令に従つて、プログラムの目的
コードが生成される。一度実行されると、プログ
ラマは単一プロセツサ及びマルチプロセツサ環境
でのプログラムの並列セクシヨンの実行の結果を
比較することができる。各環境での実行結果が異
なると、並列プログラミング・エラーを示し、プ
ログラマがそれを訂正することができる。直列化
すべきプログラムの異なるセクシヨンを選択する
度に、プログラマはこれらのステツプを繰り返す
ことができる。このようにして、プログラムのエ
ラー・セクシヨンの位置を限定(局在化)し、識
別することができる。
D 実施例 以下に、本発明の説明で使用する用語の定義を
示す。
並列プログラム:複数の処理によつて実行され
る作業断片を含むプログラム。個々の部分での直
列実行または並列実行を指定するようにコーデイ
ングされている。
処理:並例プログラムの並列実行に関与する論
理実行ストリーム。並列セクシヨンで協働的に実
行される処理は、通常それらの間で作業を分担す
る。一般に、1つの処理のみを使つて並列プログ
ラムを実行し、したがつて実質的にプログラムを
逐次的に実行することが可能である。簡略化され
た形では、実行中の処理はマルチプロセツサ・シ
ステムにおけるプロセツサ(またはCPU)と1
対1の対応をもつものと考えられる。
直列セクシヨン:1つの処理によつてのみ実行
されるようにコーデイングされた並列プログラム
のセグメント。
その実行中、他の処理は遊休状態にあるか、ま
たは作業の別の断片を実行している。
並列セクシヨン(parsect):複数の処理によつ
て同時に実行されるようにコーデイングされた並
列プログラムのセグメント(たとえば、並列DO
ループでは、異なる処理がDOループのそれぞれ
異なる繰返しで働くことができる)。
並列セクシヨンの直列化:並列言語の前処理プ
ログラム/コンパイラが、並列実行すべく指定さ
れた並列プログラムのセクシヨン(並列セクシヨ
ン)を、直列実行に適した形式に変換できるよう
にする技術。
サブプログラム:プログラムのプログラム単位
(たとえば、サブルーチン、機能、メイン等)。
呼出しグラフ:プログラム中の各サブプログラ
ムのためのノードがあるグラフ。サブプログラム
Aの本体内からサブプログラムBが呼び出される
場合のみ、呼出しグラフ内に、ノードAからノー
ドBへの有向辺がある。
計算モデル:並列プログラミング・システム内
の並列プログラムの処理をユーザがどんなものだ
と思うか。
前処理プログラム:並列プログラムを、並列実
行のための段取りを備えた直列言語で書かれたプ
ログラムに変換することができるソフトウエア・
ツール。
並列構造:プログラムの並列実行に関する特定
の情報(たとえば、並列部分の始めと終り、また
は直列部分の始めと終り)を保持する並列言語の
構造。一般に、並列構造はプログラムの逐次実行
にとつては重要でない。
本発明による並列プログラムのデバツグ・セツ
シヨンは、以下のステツプを含む。
1 並列構造を有するプログラムを、プログラム
全体が直列化されるように、1台のプロセツサ
上でコンパイルし実行する。正しい結果が得ら
れるまで、通常の方法を使つてプログラムをデ
バツグする。
2 プログラムを所望の数をプロセツサ上で再コ
ンパイルし、実行する。誤つた結果が得られ
る。
3 正しい結果と誤つた結果の違いに基づいて、
直列化すべきコードの並列セクシヨンを指定す
る。コードのどの部分を直列化すべきかを決定
する方法については以下に考察する。
4 プログラムを所望の数のプロセツサ上で再コ
ンパイルし実行する。ただし、ステツプ3で指
定されたコード部分が直列化される。
5 プログラム・エラーが、直列化されたコード
の特定セクシヨンに絞られるまで、ステツプ3
及びステツプ4を繰り返す。
6 識別された部分の元のソース・コードに注意
を戻す。このコードをこれらのセクシヨンにエ
ラーがあるかどうか探索する。
ステツプ3ないし6のシーケンスをサイクルと
呼び、1つまたは複数のプログラム・エラーを探
し出すため、必要な回数だけ繰り返すことができ
る。
第1図は、通常のマルチプロセツサ・コンピユ
ータ・システムのブロツク・ダイヤグラムであ
る。N台のプロセツサ101,102,103の
グループが、並列プログラムの異なるセクシヨン
を同時に実行することができる。各プロセツサ
は、共用メモリ・システム104、及び周辺装置
との連絡のためにプロセツサが使用する共用入出
力バス105にアクセスできる。図形表示ジエネ
レータ107によつて駆動される図形表示装置1
09を介して、情報がユーザに表示される。デー
タは印刷装置108を介しても得られる。ポイン
テイング・システム106(マウス等)を使う
と、ユーザが図形表示装置109を介してコンピ
ユータ・システムと対話することができる。ユー
ザはまたキーボード110を介してコンピユー
タ・システムと対話することもできる。
通常の並列プログラミング・システムの全体的
構造を第2A図に示す。この構造はフロント・エ
ンド1005及びバツク・エンド3005を含
む。フロント・エンドでは、プログラムが走査さ
れ、変数名やステートメント・タイプ等の情報が
集められる。一般的なフロント・エンド1005
のアクテイビテイには、語彙分析や解析がある。
バツク・エンド3005はこの情報を使つて目的
コードを生成する。
第2B図は、直列化デバツグ機能を含む通常の
並列プログラミング・システムの構成を示す。直
列化デバツグ機能は破線の矩形500内に示す。
第2B図は、通常のフロント・エンド処理と通常
のバツク・エンド処理の間に幾つかの追加のステ
ツプがある点で第2A図とは異なつている。
デバツグ・システムの全体的機能は、プログラ
マが指定した並列コードの特定セクシヨンの直列
化を受け入れるため、プログラムに関する追加情
報を集めることである。この機能を実現するた
め、デバツグ機能は3つの部分に分かれている。
第1のセクシヨンは通常の並列プログラミング・
システムのフロント・エンド・セクシヨン100
5に対する追加部分1000であり、第2のセク
シヨンはデバツグ管理プログラム2000であ
り、第3のセクシヨンは通常の並列プログラミン
グ・システムのバツグ・エンド3005に対する
追加部分3000である。
前処理プログラムのフロント・エンド1005
及び1000では、並列プログラム・ソース・コ
ード上の第1の経路が、プログラムに関する情報
を集め、編成する。この情報のあるものは、以下
に述べるように、そのプログラム用の呼出しグラ
フを生成し、サブプログラムとこれらのサブプロ
グラムに含まれる並列部分との間で接続を確立す
るために使用される、データ構造に入れられる。
デバツグ管理プログラム2000は、ユーザとの
間のすべての対話を処理し、呼出しグラフを表示
し、ユーザが選択的な直列化情報を指定すること
を可能にする。最後に、バツク・エンド3000
及び3005は、直列化情報に応じて、部分的に
または完全に逐次形式の並列プログラム用の目的
コードを生成する。
並列プログラミング・システムに対するフロン
ト・エンド追加部分1000では、デバツグ機能
は入力プログラムを読み取り、呼出しグラフを生
成するために必要な情報を集める。このフロン
ト・エンド追加部分は情報を2つのデータ構造、
すなわち、サブプログラム・テーブル及び並例セ
クシヨン(parsect)テーブルに入れる。
基本的に、サブプログラム・テーブルは、プロ
グラムの呼出しグラフを構成するために必要な情
報を含む(呼出しグラフの一例を第12図に示
す)。この呼出しグラフは、直列化情報を表示し、
操作するための基準として働く。サブプログラ
ム・テーブル内のレコードの構造を第3図に示
す。このテーブルの各レコードは、特定のサブプ
ログラム用のデータを保持する。フイールド30
1は、サブプログラムの名前(サブルーチン、機
能またはメインの名前)を保持する。このサブプ
ログラムを呼び出す(calling)サブプログラム
の数が、レコードのフイールド302に保持され
る。フイールド303は、このサブプログラムを
呼び出すための、サブプログラム用のサブプログ
ラム・テーブル・インデツクス・アレイを指すポ
インタを保持する。より迅速な探索及びより簡単
な作表のため、サブプログラム・テーブルに呼出
しサブプログラムの名前ではなく呼出しサブプロ
グラムのインデツクスを保持することが好まし
い。
上記情報は、プログラム用の呼出しグラフを構
成するのに十分である。さらに、サブプログラム
内のコードの並列セクシヨンの数を保持するフイ
ールド305と、parsectテーブル内のparsectに
対するインデツクス・アレイを指すポインタを保
持するフイールド306がある。タイプ・フイー
ルド(フイールド304)は、parsectの実行を
もたらす可能性のあるサブプログラム(すなわ
ち、parsectを含むか、またはparsectを含む他の
サブプログラムを呼び出すことができるサブプロ
グラム)を識別するために使用される。直列フラ
グ(フイールド307)は、ユーザがサブプログ
ラム全体の直列化を要求したことを示すために使
用される。終了フラグ(フイールド308)は、
コードの並列セクシヨンがあるかどうか探索され
たプログラムのセクシヨンを記録するために使用
される。このフラグは、第10図に関連して以下
に説明するアルゴリズムと一緒に使用される。
parsectテーブル内のレコードの構造を第4図
に示す。ラベル・フイールド(フイールド40
1)は、parsectを識別する(サブルーチン・テ
ーブル内のサブプログラムの名前と同様な)ラベ
ルを保持する。このラベルは、ソース・コード・
アドレス空間内のparsect位置に応じて発生され
る。直列フラグ(フイールド402)は、ユーザ
が現parsectの直列化を要求したことを示すため
に使用される。サブプログラムに対するインデツ
クスも維持される。このインデツクス(フイール
ド403)は、現parsectが存在するサブプログ
ラム(enclosing subgraph)を参照する。
第1図のフロント・エンド・ステツプ1000の全
体的構造を第5図に示す。フロント・エンドで
は、入力フアイルからのプログラム・ステートメ
ントが1行ずつ読み取られる(ステツプ1100)。
「フアイルの終り」が検出されると、プログラム
全体が読み取られたことを示す(ステツプ1106)。
プログラム全体が読み取られると、呼出しグラフ
の並列部分を見つけるアルゴリズムが実行を開始
する(ステツプ1600)。このアルゴリズムについ
ては、後で第10図に関して説明する。
ステツプ1106におけるステートメントがフアイ
ルの終りでない場合は、それはタイプによつて識
別され、当該の処置が講じられる。直列化デバツ
グ機能をサポートするため、以下のステートメン
ト・タイプがフロント・エンドで解析される。
SUBROUTINEステートメントや
FUNCTIONステートメント等、サブプログラム
を開始させるステートメント(ステツプ1101) PROGRAMステートメント等、プログラムを
開始させるステートメント(ステツプ1102) サブルーチンを呼び出すか、または機能ステー
トメントを呼び出すステートメント(ステツプ
1103) parsectに属する並列構造を含むステートメン
ト(ステツプ1104) フロント・エンドでの解析の間、現サブプログ
ラムまたは主プログラムを表すインデツクスが維
持されている。このインデツクスは、サブプログ
ラム・テーブル内の現在走査されているプログラ
ム要素を参照する。
SUBROUTINEステートメント及び
FUNCTIONステートメントは、第6図に示すよ
うに処理される。まず(ステツプ1201)サブプロ
グラムの名前を求めてサブプログラム・テーブル
が探索される。サブプログラムの名前が見つかつ
た場合は(ステツプ1202)、現サブプログラムの
インデツクスが見つかつた項目にセツトされる
(ステツプ1203)。そうでない場合は(ステツプ
1204)、新しい項目がサブプログラム・テーブル
内で割り振られ、現サブプログラムのインデツク
スがセツトされる。前処理プログラムが当該の
SUBROUTINEステートメントまたは
FUNCTIONステートメントに出会う前でも、特
定のサブプログラムに対する項目がサブプログラ
ム内で割り振られることがある。これは、そのサ
ブプログラムに対するCALLステートメント、ま
たは機能の呼出しが別のサブルーチンまたは主プ
ログラム中で行なわれたために生じる。
PROGRAMステートメントも同様に処理され
る(第7図参照)。PROGRAMステートメント
は1度だけしか現われないので、常にサブプログ
ラム・テーブル内に新しい項目を発生する(ステ
ツプ1301)。この割振りが行なわれた後、現サブ
プログラムのインデツクスがセツトされる(ステ
ツプ1302)。
CALLステートメント(または別のステートメ
ントに組み込まれた機能呼出し)は、第8図に示
すように処理される。まず、呼び出されたサブプ
ログラム(すなわち、サブルーチンまたは機能)
の名前を求めてサブプログラム・テーブルが探索
される(ステツプ1401)。サブプログラムが見つ
からない場合は(ステツプ1402)、サブプログラ
ム・テーブル内にサブプログラムに対する新しい
項目が割り振られる(ステツプ1403)。サブプロ
グラム・テーブル内でサブプログラムが見つかる
か、または作成された場合は、そのサブプログラ
ムはサブプログラムによつて呼び出されているも
のとしてマークされる(ステツプ1404)。
新しいparsectの始めに出会つたときは、第9
図に示すように処理される。まず、parsectに識
別子及びparsectテーブル内の新しい項目が割り
振られる(ステツプ1501)。parsectラベルは、第
2B図に示す並列プログラミング・システムによ
つて生成されるソース・コードのリストに印刷す
ることができる。parsectの外側のサブプログラ
ムのインデツクス(第3図のparsectテーブル・
レコードのフイールド403参照)が、現サブプ
ログラムのインデツクスにセツトされる。次に、
新しいparsectが現サブプログラムに追加される
(ステツプ1502)。
入力フアイル全体が処理されたとき、サブプロ
グラム・テーブルはプログラムの呼出しグラフを
構成するのに十分な情報を有する。ただし、
parsectの実行を決してもたらさず、したがつて
デバツグ機能にとつて重要でないプログラム部分
がある。したがつて、プログラムのこれらの部分
に対応するグラフのノードはユーザには示されな
い。呼出しグラフのこれらのノードは、グラフを
走査し、各ノードのタイプ・フイールドを適当に
セツトすることにより識別される。
第10図は、parsectの実行をもたらす可能性
があるプログラム部分を見つけるアルゴリズムの
流れ図である。この図に記述されるアルゴリズム
は、この機能を実現するために呼出しグラフを走
査する好ましい方法である。
第10図に示すアルゴリズムはその実行を制御
するため3つの変数、すなわちCHANGE、I及
びJを使用する。変数CHANGEは、呼出しグラ
フに対してアルゴリズムを丸々実行しなければな
らない回数を制御する。このアルゴリズムは、主
プログラム内にネストされているサブプログラム
の各レベルごとに実行される。変数Iはプログラ
ムの各サブルーチンを参照するために使用され、
変数Jは、サブルーチンIを呼び出す各サブルー
チンを参照するために使用される。
このアルゴリズムはCHANGEを1に初期設定
する(ステツプ1601)。ステツプ1602で、
CHANGEが0の値をもつ場合は、ステツプ1620
が実行され、呼出しグラフの走査が終了する。そ
うでない場合は、ステツプ1604が実行され、変数
CHANGEが0にセツトされる。アルゴリズムの
後の部分で、CHANGEが再び1にセツトされる
(ステツプ1612)場合は、呼出しグラフのすべて
のレベルが処理されたことを確認するため、アル
ゴリズムが再び実行される(ステツプ1602)。
ステツプ1605でIが1に初期設定される。アル
ゴリズムは次に各サブプログラムを次々に調べる
(呼出しサブプログラムを次々に分析するステツ
プ1607,1608、及び1615)。直列サブプログラム
は無視される(ステツプ1608)。すべてのサブル
ーチンが分析された場合(ステツプ1607)、制御
はステツプ1602に移り、すべての処理が完了され
た場合はアルゴリズムはステツプ1602で終了し
(ステツプ1620)、CHANGEが1にセツトされた
場合は再び実行される。
コードの並列セクシヨンを有し、かつ完全に処
理されていず、したがつて他の点では直列なサブ
プログラムによつて呼び出される可能性があるサ
ブルーチンは、ステツプ1609−1614でさらに分析
される。分析中のサブルーチンを呼び出す各サブ
プログラムに対するインデツクスは最初に1にセ
ツトされ(ステツプ1609)、呼出しサブプログラ
ムがすべて処理されるまで(ステツプ1613)各サ
ブプログラムごとに1ずつ増分され(ステツプ
1610)、呼出しサブプログラムがすべて処理され
た時点で、そのサブルーチンまたは機能は「終
了」とマークされ(ステツプ1614)、次のサブル
ーチンまたは機能が分析される(ステツプ1608な
いしステツプ1615及び1607)。並列構造を含むサ
ブルーチンまたは機能と出会つたとき、呼出しプ
ログラムは並列であるとマークされ、変数
CHANGEが1にセツトされる(ステツプ1612)。
このようにして、並列性の表示が、呼出しグラフ
内の呼出しサブプログラムの最高レベルまで上向
きに伝えられる。
デバツグ管理プログラムの流れ図を第11図に
示す。第1のステツプ2100で、呼出しグラフが表
示される。呼出しグラフの1例を第12図に示
す。呼出しグラフに関連した情報を表示するため
の方法は多数あるが、好ましい実施例について説
明する。
ハードウエアの好ましい実施例では(第1図)、
呼出しグラフは、Xウインドウ(マサチユーセツ
ツ工科大学から無料ライセンスで入手可能)等の
図形表示ソフトウエア・システムにより図形表示
装置109に表示される。図形表示ソフトウエア
は、図形表示装置109上でイメージを作成する
図形表示ジエネレータ107を制御することがで
きる。本発明に関連した図形表示ソフトウエア、
ユーザ・コード及びプログラミングはすべて、第
1図に示すコンピユータ・システム上で走行する
ことができる。
サブプログラムは、グラフのノードとして表さ
れる。parsectコードを含むサブプログラムを表
すノードは、並列コードと呼ばれる。サブプログ
ラムXがサブプログラムYによつて少なくとも1
回呼び出された場合、グラフで、ノードXからノ
ードYに向かう上向きの辺がある。サブプログラ
ム・テーブル内の対応するサブプログラムに対す
る項目のインデツクスが、呼出しグラフのノード
上に現れる。
たとえば、第1図に示すマウス・システム10
6等のポインテイング装置を使用することによ
り、サブプログラムの名前及びparsectに対する
参照を一時的に表示することができる。これは、
たとえばマウスに関連するポインター図形が特定
のノード上にあるとき、マウスをクリツクするこ
とによつて行なうことができる。プログラマは
parsectコードにしか関心がないので、呼出しグ
ラフの並列ノードのみが表示される。この図形表
示に加えて、サブプログラム・テーブル・インデ
ツクスのリストが、対応するサブプログラム名、
ラベル及びparsect参照データと共に、印刷装置
105を介して並列プログラミング・システムに
より提供される。
デバツグ管理プログラムの次のステツプ(第1
1図のステツプ2200)は、第13図に示すような
グラフの直列化された部分を表示することであ
る。最初、デバツグ・セツシヨンが開始したとき
は、グラフのどの部分も直列化されていない。し
たがつて、第12図と比較して、呼出しグラフ上
で何も更新されていないはずである。ユーザが直
列化の照会を出し始めると(第11図のステツプ
2300)、直列化情報が直ちにグラフ上に表示され
る。
第13図で、要求されたサブプログラム直列化
の量の指示が表示される。本発明の好ましい実施
例では、2つの異なる陰影を使用する。一方の陰
影は、ユーザがサブプログラム全体の直列化を要
求したときに使用する(たとえば、第13図のサ
ブプログラムS2)。もう一方の陰影は、サブプ
ログラム内の1つまたは複数のparsectだけが直
列化されるときに使用する(たとえば、第13図
のサブプログラムS3及びS5)。ユーザが直列
化情報を指定し、自分のプログラムをコンパイル
して実行することによりデバツグ・セツシヨンを
続行した後、直列化情報は特別フアイルにセーブ
され(第11図のステツプ2400)、将来のデバツ
グ・セツシヨンの開始時に表示のために使用でき
る。
デバツグ・セツシヨンの前のサイクルからの直
列化情報を有する呼出しグラフが表示されると、
ユーザは情報を調べて変更する、すなわちプログ
ラムに直列化を加えるか、またはプログラムから
除去することができる。このことはデバツグ管理
プログラム中で照会を使つて行なわれる(第11
図のステツプ2300)。種々の照会を呼び出すため
にマウス型メユー構造を使用することができる。
別の方法では、第14図に示すように、照会を表
す一組の簡略記号をユーザが使用できるようにし
ておき、ユーザはキーボードで簡略記号をタイプ
することにより照会を呼び出すことができる。照
会に関する説明は次の通りである。
照会2301:名前によつてサブプログラムを直列
化する。この照会は、サブプログラム中のすべて
の並列構造を直列としてマークする方法を提供す
る。これは、対応する項目に対するサブプログラ
ム内の直列フラグをセツトすることによつて反映
される(この項目は、名前をキーとして使つてサ
ブプログラム・テーブルを探索することにより見
つけられる)。
照会2302:名前によつてサブプログラムを直列
化解除する。この照会は、照会2301を使つてセツ
トされた直列化を解除し、サブプログラム中のす
べての並列構造を並列にセツトする方法を提供す
る。
照会2303:インデツクスによつてサブプログラ
ムを直列化する。この照会は、サブプログラム全
体を直列としてマークする方法を提供する。これ
は、照会中で供給されたインデツクスに対するサ
ブプログラム・テーブル内の直列フラグをセツト
することによつて反映される。
照会2304:インデツクスによつてサブプログラ
ムを直列化解除する。この照会は、照会中で供給
されたサブプログラム・テーブルに対するインデ
ツクスに対して以前にセツトされた直列化を解除
する。
照会2305:サブプログラム・テーブル内のそのイ
ンデツクスが供給されるサブプログラムの名前を
表示する。この照会は、表示されるサブプログラ
ムのインデツクスと、プログラムのソース・コー
ドに現れる名前の関係を確立する方法を提供す
る。
照会2306:ラベルによつてparsectを直列化す
る。この照会は、照会中でそのラベルが供給され
るparsectを直列化する方法を提供する。本発明
のこの実施例では、parsectラベルはソース・プ
ログラム・リストの一部として並例プログラミン
グ・システムによつて提供される。parsectは、
対応する項目に対するparsectテーブル内の直列
フラグをセツトすることにより直列化される(こ
の項目は、ラベルをキーとして使つてparsectテ
ーブルを探索することにより見つけられる)。
照会2307:ラベルによつてparsectを直列化解
除する。この照会は、照会中でそのラベルが供給
されるparsectの直列化を解除する方法を提供す
る。この照会は照会2306に類似しているが、見つ
かつた項目の直列フラグをクリアする。
照会2308:インデツクスによつてparsectを直
列化する。この照会は、照会中でparsectテーブ
ル内のそのインデツクスが供給されるparsectの
直列化を解除する方法を提供する。
照会2309:インデツクスによつてparsectを直
列化解除する。この照会は、照会中でparsectテ
ーブル内のそのインデツクスが供給される
parsectの直列化を解除する方法を提供する。
照会2310:parsectテーブル内のそのインデツ
クスが供給されるparsectのラベルを表示する。
この照会は、表示されるparsectテーブル内の
parsectのインデツクスと、プログラムのソー
ス・コード中に現れる対応するparsectのラベル
の関係を確立する方法を提供する。
照会2311:そのインデツクスが照会中で供給さ
れるサブプログラムに含まれるすべてのparsect
の状況(parsectのラベル、直列または並列)を
表示する。
照会2312:そのインデツクスが照会中で供給さ
れるサブプログラム内のすべてのparsectを直列
化する。この照会は、サブプログラム内のすべて
のparsectを1つずつ調べることなく、それらを
直列化する好都合な方法を提供する。
照会2313:そのインデツクスが照会中で供給さ
れるサブプログラム内のすべてのparsectを直列
化解除する。この照会は、サブプログラム内のす
べてのparsectを1つずつ調べることなく、それ
らの直列化を解除する好都合な方法を提供する。
照会2314:プログラムからすべての直列化を除
去する。
照会2315:EXITはユーザとデバツグ管理プロ
グラムの間の連絡を終了させる。デバツグ・セツ
シヨンの流れは第11図のステツプ2400に進む。
ユーザの要求がすべて入力された後(第11図
のステツプ2300)、直列化データのフアイルが将
来の使用のため記憶される(第11図のステツプ
2400、第15図参照)。
直列化デバツグ機能500は、ユーザが指定した
parsectコードのコンパイラ直列化を指示するこ
とにより、通常の並列プログラミング・システム
の第2B図のバツク・エンド3005と共に働く。バ
ツク・エンド処理を示す流れ図を第16図に示
す。
バツク・エンドは、入力プログラムをステート
メントごとに2回目に読み取ることにより動作す
る(第16図のステツプ3100)。「フアイルの終
り」が見つかつた場合は(第16図のステツプ
3101)、コードの生成が終了する。
ステートメントPROGRAM、SUBROUTINE
またはFUNCTIONの1つが認識された場合(そ
れぞれ第16図のボツクス3102,3103,3104)、
そのステートメントはサブプログラムの始めとし
て処理される(第16図のステツプ3200)。どの
場合も、処理されたサブプログラムの名前によつ
てサブプログラム・テーブルが探索され、この探
索は、このプログラムのインデツクスが見つかり
(第17図のステツプ3201)、その項目の直列フラ
グが調べられる(第17図のステツプ3202)まで
続けられる。直列フラグがオンの場合、コンパイ
ラから直列セクシヨンの始めを確立する特別な命
令が出される(第17図のステツプ3203)。この
命令は、parsectコードが1つの処理によつての
み実行されるよう制限する。これは、ユーザがプ
ログラムのあるセクシヨンの直列化を明示的に要
求するとき、通常の並列プログラミング・システ
ムのフロント・エンドによつて出されるのと同じ
命令である。たとえば、並列実行が省略時解釈で
あり、直列部分が明示的に定義されるシステムで
は、コードの−セクシヨンは以下のようになる。
10 CODE 20 SERIAL BEGIN 30 CODE 40 SERIAL END 50 CODE この例では、ステートメント20及び40はコード
の直列セクシヨンを明示的に定義する。このシス
テムでは、ステツプ3203で出される命令は、上記
の例の行20及び40に示す命令と同じである。
しかし、コンピユータ・システムによつては、
省略時解釈が直列コードの生成であり、並列セク
シヨンが明示的に定義されることもある。たとえ
ば、 10 CODE 20 PARALLEL END 30 CODE 40 PARALLEL BEGIN 50 CODE この例では、ステートメント20及び40はコード
の直列セクシヨンを暗示的に定義する。ステツプ
3203で出される命令は、上記の例の行20及び40で
生成されるコードと同じではないが、コンパイラ
直列化に対して同じ効果を生じる。この種のシス
テムでは、各並列終了の前に並列開始があり、各
並列開始の後に並列終了がくるように注意する必
要がある。
ENDステートメントが見つかつた場合(第1
6図のステツプ3105)、サブプログラムの終りが
処理される(第16図のステツプ3300)。まず、
現サブプログラムのインデツクスに対応するサブ
プログラムの項目が調べられる(第18図のステ
ツプ3301)。現サブプログラムが直列である場合
は(第18図のステツプ3302)、直列セクシヨン
の終りに対して特別な命令が作成される(第18
図のステツプ3303)。現サブプログラムが直列で
ない場合は、何も行なわれない。
並列構造(parallel construct)が見つかつた
場合は(第16図のステツプ3106)、これらの並
列構造が処理される(第16図のステツプ3400)。
まず、並列構造がparsectの始めに関するものか
どうか検査が行なわれる(第19図のステツプ
3401)。そうである場合は、現parsectのインデツ
クスが1だけ増分される(第19図のステツプ
3402)。現サブプログラムまたは現parsectが直列
化されている場合は(第19図のステツプ3403及
び3404)、何も行なわれない。現サブプログラム
または現parsectが直列化されていない場合は
(第19図のステツプ3403及び3404)、並列構造に
対する特別な命令が作成される(第19図のステ
ツプ3405)。
コンパイラはこれらの命令を使つて、ソース・
コードから目的コードへの変換により、プログラ
ムの実行が1台のプロセツサ(直列実行)で行な
えるか、それとも複数のプロセツサ(並列実行)
で行なえるかを判定する。目的コードが作成され
た後、(任意の適当なリンカを使つて)リンクさ
れ、実行される。コードの並列セクシヨンの並列
化されたコンパイルの結果が、コードの並列セク
シヨンの直列化されたコンパイルと比較される。
この比較は、自動的に行なつてコンピユータで違
いを強調表示することもでき、またプログラマが
手動で行なうこともできる。結果が異なる場合
は、プログラマは、並列コードに1つまたは複数
のエラーがあることに気づく。呼出しグラフを見
ることにより、プログラマは並列コードの特定セ
クシヨンの直列化を指定し、したがつてエラーの
位置を限定する機会をもたらすことができる。
E 発明の効果 本発明の方法を用いると、ユーザがエラーを見
つけるためプログラムの並列セクシヨンを選択的
に直列化することができる。問題のあるコード部
分が識別されると、コードの検査または他の通常
の方法(すなわち、区切り点や事象追跡)によつ
てエラーを見つけることができる。
【図面の簡単な説明】
第1図は、本発明によるデバツグ・システムを
サポートすることができるコンピユータ・システ
ムのブロツク・ダイヤグラムである。第2A図
は、従来技術によつて定義された並列プログラミ
ング・システムの構造を示す流れ図である。第2
B図は、本発明の実施例を含む並列プログラミン
グ・システムの構造を示す流れ図である。第3図
は、第2図に示した並列プログラミング・システ
ムで使用されるサブプログラム・テーブル内のレ
コードの形式を示すデータ構造図である。第4図
は、第2図に示した並列プログラミング・システ
ムで使用される並列セクシヨンのテーブル内のレ
コードの形式を示すデータ構造図である。第5図
は、第2図に概略的に示した並列プログラミン
グ・システムのフロント・エンド・セクシヨン内
での処理を記述した流れ図である。第6図は、第
5図に概略的に示したSUBROUTINEステート
メント及びFUNCTIONステートメントの処理を
示す流れ図である。第7図は、第5図に概略的に
示したPROGRAMステートメントの処理を示す
流れ図である。第8図は、第5図に概略的に示し
たCALLステートメントの処理を示す流れ図であ
る。第9図は、第5図に概略的に示した
PARSECT BEGINの処理を示す流れ図である。
第10図は、呼出しグラフの生成を示す流れ図で
ある。第11図は、第2図に概略的に示したデバ
ツグ管理プログラム内での処理の流れ図である。
第12図は呼出しグラフの一例を示す説明図であ
る。第13図は、直列化情報をどのように呼出し
グラフ上に表示することができるかについての一
例を示す説明図である。第14図は、第11図に
概略的に示したデバツグ管理プログラムからの照
会のリストである。第15図は、構成フアイルの
作成を示す流れ図である。第16図は、第2図に
概略的に示した並列プログラミング・システムの
バツク・エンド処理を示す流れ図である。第17
図は、第16図に示したバツク・エンド処理での
サブプログラムの開始を示す流れ図である。第1
8図は、第16図に示したバツク・エンド処理で
のサブプログラムの終了を示す流れ図である。第
19図は、第16図に概略的に示した並列プログ
ラミングのバツク・エンド部分での並列構造の処
理を示す流れ図である。 101,102,103……プロセツサ、10
4……共用メモリ・システム、105……入出力
バス、106……ポインテイング・システム、1
07……図形表示ジエネレータ、108……印刷
装置、109……図形表示装置、110……キー
ボード。

Claims (1)

  1. 【特許請求の範囲】 1 並列プログラム中のエラーを探し出す方法で
    あつて、 (a) 上記プログラムの同時に実行できるセクシヨ
    ンを探し出すステツプと、 (b) 上記セクシヨン及びそれらの相互関係を表す
    情報を表示するステツプと、 (c) 表示された情報に応答して、直列化のため上
    記セクシヨンの少なくとも1つを選択するステ
    ツプと、 (d) 上記の選択されたセクシヨンの直列実行を可
    能とするプログラムの目的コードを発生するス
    テツプとを含む上記方法 2 ステツプbが、木グラフの形で上記セクシヨ
    ンの情報及びそれらの相互関係を表わすステツプ
    を含む、特許請求の範囲第1項に記載の方法。 3 プログラムがサブプログラムから成り、特許
    請求の範囲第1項のステツプbがさらに、 (a) サブプログラムをノードとして木グラフ上に
    示すステツプと、 (b) ノードYで表されるサブプログラムが、ノー
    ドXで表されるサブプログラムによつて少なく
    とも1回呼び出された場合に、ノードXからノ
    ードYへの辺を表すステツプとを含む、特許請
    求の範囲第2項に記載の方法。 4 (e) 並列プログラムをコンパイルして実行す
    るステツプと、 (f) 特許請求の範囲第1項のステツプdで生成さ
    れる目的コードを実行するステツプと、 (g) ステツプe及びステツプfで得られた結果を
    比較するステツプとをさらに含む、特許請求の
    範囲第3項に記載の方法。 5 並列コードのエラー・セクシヨンの位置が限
    定されるまで特許請求の範囲第4項のステツプを
    繰り返すステツプをさらに含む、特許請求の範囲
    第4項に記載の方法。 6 サブプログラム全体の直列化が要求されたと
    きに表示されるノードに第1の方式で陰影をつ
    け、直列化のためサブプログラムの特定セクシヨ
    ンが要求されたときにノードに第2の方式で陰影
    をつけるという、特許請求の範囲第5項に記載の
    方法。 7 マルチプロセツサ・コンピユータ・システム
    から成る、並列プログラム内のエラーの位置決定
    を支援するためのシステムであつて、 (a) 上記プログラムの同時に実行できるセクシヨ
    ンを探し出す手段と、 (b) 上記セクシヨン及びそれらの相互関係を表す
    情報を表示する手段と、 (c) 表示された情報に応答して、直列化のため上
    記セクシヨンの少なくとも1つを選択する手段
    と、 (d) 上記の選択されたセクシヨンの直列実行を可
    能にするプログラムの目的コードを生成するた
    めの手段とを含む上記システム。 8 上記セクシヨン及びそれらの相互関係を表す
    情報が木構造形式で表示される、特許請求の範囲
    第7項に記載のシステム。
JP2170388A 1989-06-29 1990-06-29 並列プログラム中のエラーを探す方法及び支援システム Granted JPH0338735A (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US373953 1982-05-03
US07/373,953 US5048018A (en) 1989-06-29 1989-06-29 Debugging parallel programs by serialization

Publications (2)

Publication Number Publication Date
JPH0338735A JPH0338735A (ja) 1991-02-19
JPH0432416B2 true JPH0432416B2 (ja) 1992-05-29

Family

ID=23474605

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2170388A Granted JPH0338735A (ja) 1989-06-29 1990-06-29 並列プログラム中のエラーを探す方法及び支援システム

Country Status (4)

Country Link
US (1) US5048018A (ja)
EP (1) EP0406602B1 (ja)
JP (1) JPH0338735A (ja)
DE (1) DE69021659T2 (ja)

Families Citing this family (39)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2978189B2 (ja) * 1989-11-16 1999-11-15 シャープ株式会社 自動フローチャート作成装置
US5361352A (en) * 1989-11-27 1994-11-01 Hitachi, Ltd. Method for debugging in a parallel computer system and system for the same
US5412799A (en) * 1990-02-27 1995-05-02 Massachusetts Institute Of Technology Efficient data processor instrumentation for systematic program debugging and development
US5860009A (en) * 1994-04-28 1999-01-12 Kabushiki Kaisha Toshiba Programming method for concurrent programs and program supporting apparatus thereof
JPH0863346A (ja) * 1994-08-25 1996-03-08 Canon Inc プログラム編集方法とその装置
JP2738360B2 (ja) * 1994-09-12 1998-04-08 日本電気株式会社 マルチタスクプログラムのデバッグ方法およびデバッグシステム
US5799142A (en) * 1994-09-12 1998-08-25 Nec Corporation Debugging method and debugging system for multi-task programs
US5687375A (en) * 1994-10-14 1997-11-11 International Business Machines Corporation Debugging of High Performance Fortran programs with backup breakpoints
US5649085A (en) * 1994-12-09 1997-07-15 International Business Machines Corporation Method and system for storing and displaying system operation traces with asynchronous event-pairs
US5872909A (en) * 1995-01-24 1999-02-16 Wind River Systems, Inc. Logic analyzer for software
US5805890A (en) * 1995-05-15 1998-09-08 Sun Microsystems, Inc. Parallel processing system including arrangement for establishing and using sets of processing nodes in debugging environment
US5819024A (en) * 1995-07-11 1998-10-06 Hitachi, Ltd. Fault analysis system
US6067415A (en) * 1995-12-26 2000-05-23 Kabushiki Kaisha Toshiba System for assisting a programmer find errors in concurrent programs
US6353923B1 (en) * 1997-03-12 2002-03-05 Microsoft Corporation Active debugging environment for debugging mixed-language scripting code
US6275868B1 (en) * 1997-03-12 2001-08-14 Microsoft Corporation Script Engine interface for multiple languages
US6061517A (en) 1997-03-31 2000-05-09 International Business Machines Corporation Multi-tier debugging
US6286130B1 (en) * 1997-08-05 2001-09-04 Intel Corporation Software implemented method for automatically validating the correctness of parallel computer programs
US6757868B1 (en) 1998-06-22 2004-06-29 International Business Machines Corporation Programmatic switching of arbitrary HTML forms
US6408430B2 (en) * 1998-09-03 2002-06-18 Lucent Technologies, Inc. Interactive software testing system and method
US7117433B1 (en) 1998-09-29 2006-10-03 International Business Machines Corporation HTML mapping substitution graphical user interface for display of elements mapped to HTML files
US7882426B1 (en) * 1999-08-09 2011-02-01 Cognex Corporation Conditional cell execution in electronic spreadsheets
WO2001022228A1 (en) 1999-09-17 2001-03-29 Nortel Networks Limited System and method for producing a verification system for verifying procedure interfaces
JP2004192139A (ja) 2002-12-09 2004-07-08 Sharp Corp デバッグ装置、デバッグ方法および記録媒体
US20050223359A1 (en) * 2004-03-30 2005-10-06 Rao Nagaraju Kodalapura N Techniques for multi-core debugging
US7673295B1 (en) * 2004-04-27 2010-03-02 Sun Microsystems, Inc. System and method for compile-time non-concurrency analysis
US8266600B2 (en) * 2005-03-28 2012-09-11 Nec Laboratories America, Inc. Model checking of multi threaded software
US8185874B2 (en) * 2006-11-07 2012-05-22 Microsoft Corporation Automatic and systematic detection of race conditions and atomicity violations
US9317636B1 (en) * 2006-12-11 2016-04-19 Synopsys, Inc. System and method for stopping integrated circuit simulation
JP4908363B2 (ja) * 2007-09-25 2012-04-04 株式会社東芝 情報処理装置、並列処理最適化方法およびプログラム
GB2459353A (en) * 2008-04-09 2009-10-28 Nvidia Corp Translating a program for a multi core graphical processor to run on a general purpose processor
US9678775B1 (en) * 2008-04-09 2017-06-13 Nvidia Corporation Allocating memory for local variables of a multi-threaded program for execution in a single-threaded environment
US8776030B2 (en) * 2008-04-09 2014-07-08 Nvidia Corporation Partitioning CUDA code for execution by a general purpose processor
US8156476B2 (en) * 2008-06-10 2012-04-10 Microsoft Corporation Debugging support for tasks in multithreaded environments
US9846628B2 (en) 2010-06-15 2017-12-19 Microsoft Technology Licensing, Llc Indicating parallel operations with user-visible events
US9043761B2 (en) * 2010-09-01 2015-05-26 International Business Machines Corporation Fault localization using condition modeling and return value modeling
US8898640B2 (en) * 2012-06-06 2014-11-25 Microsoft Corporation Exception handling for a distributed runtime
US9753835B2 (en) 2015-11-10 2017-09-05 National Instruments Corporation Debugging parallel graphical program code
CN106201874B (zh) * 2016-07-06 2018-12-28 华为技术有限公司 并行程序的mhp分析方法和装置
CN108304330B (zh) * 2018-02-26 2021-09-21 腾讯科技(深圳)有限公司 内容提取方法、装置和计算机设备

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4502116A (en) * 1982-11-17 1985-02-26 At&T Bell Laboratories Multiple processor synchronized halt test arrangement
US4803683A (en) * 1985-08-30 1989-02-07 Hitachi, Ltd. Method and apparatus for testing a distributed computer system
JPH0756636B2 (ja) * 1985-12-11 1995-06-14 株式会社日立製作所 データ処理方法
EP0255118B1 (en) * 1986-07-30 1999-06-09 Hitachi, Ltd. Pattern generator
US4953084A (en) * 1987-11-16 1990-08-28 Hewlett-Packard Company Method and apparatus using variable ranges to support symbolic debugging of optimized code

Also Published As

Publication number Publication date
DE69021659T2 (de) 1996-05-02
JPH0338735A (ja) 1991-02-19
EP0406602A2 (en) 1991-01-09
EP0406602B1 (en) 1995-08-16
US5048018A (en) 1991-09-10
DE69021659D1 (de) 1995-09-21
EP0406602A3 (en) 1991-12-27

Similar Documents

Publication Publication Date Title
JPH0432416B2 (ja)
Hennessy Symbolic debugging of optimized code
US5671416A (en) Apparatus and a method for searching and modifying source code of a computer program
US5764989A (en) Interactive software development system
US6530079B1 (en) Method for optimizing locks in computer programs
US5680622A (en) System and methods for quickly detecting shareability of symbol and type information in header files
Lee et al. Concurrent static single assignment form and constant propagation for explicitly parallel programs
US5848274A (en) Incremental byte code compilation system
US5175856A (en) Computer with integrated hierarchical representation (ihr) of program wherein ihr file is available for debugging and optimizing during target execution
US6014518A (en) Terminating polymorphic type inference program analysis
US20010011370A1 (en) Interactive software testing system and method
Copperman Debugging optimized code without being misled
US6202202B1 (en) Pointer analysis by type inference for programs with structured memory objects and potentially inconsistent memory object accesses
EP0643851A1 (en) Debugger program which includes correlation of computer program source code with optimized objet code
JPH04247536A (ja) オブジェクトの実行時データ形式の識別を支援するコンピュータソフトウェアコンパイルシステム及びデバッガ
Karmesin et al. Array design and expression evaluation in POOMA II
Sarkar et al. Parallel program graphs and their classification
US20080163184A1 (en) System for creating parallel applications
Alt et al. Cosy compiler phase embedding with the cosy compiler model
Marceau et al. The design and implementation of a dataflow language for scriptable debugging
GB2420638A (en) Method of substituting code fragments in Internal Representation
Browne et al. Visual programming and parallel computing
Nilsson A declarative approach to debugging for lazy functional languages
Zehendner A module-based assembly language with parallel processing constructs and its implementation in the ASTOR architecture
Vukasović Implementation of the debugging support for the llvm outlining optimization