JPH0816429A - Parallel program generation supporting device, parallel program generating method, and parallel program executing device - Google Patents

Parallel program generation supporting device, parallel program generating method, and parallel program executing device

Info

Publication number
JPH0816429A
JPH0816429A JP7127577A JP12757795A JPH0816429A JP H0816429 A JPH0816429 A JP H0816429A JP 7127577 A JP7127577 A JP 7127577A JP 12757795 A JP12757795 A JP 12757795A JP H0816429 A JPH0816429 A JP H0816429A
Authority
JP
Japan
Prior art keywords
program
parallel
execution
sequential
information
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.)
Granted
Application number
JP7127577A
Other languages
Japanese (ja)
Other versions
JP4050339B2 (en
Inventor
Naoshi Uchihira
直志 内平
Shinichi Hoiden
真一 本位田
Akihiko Osuga
昭彦 大須賀
Toshibumi Seki
俊文 關
Yasuo Nagai
保夫 永井
Keiichi Handa
恵一 半田
Satoshi Ito
聡 伊藤
Shinsuke Sawajima
信介 澤島
Yasuyuki Tawara
康之 田原
Hideaki Shiotani
英明 塩谷
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.)
Toshiba Corp
Original Assignee
Toshiba Corp
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 Toshiba Corp filed Critical Toshiba Corp
Priority to JP12757795A priority Critical patent/JP4050339B2/en
Publication of JPH0816429A publication Critical patent/JPH0816429A/en
Application granted granted Critical
Publication of JP4050339B2 publication Critical patent/JP4050339B2/en
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Landscapes

  • Stored Programmes (AREA)
  • Advance Control (AREA)
  • Debugging And Monitoring (AREA)

Abstract

PURPOSE:To provide a parallel program generating method and its generation supporting device which facilitate the test debugging of parallel programs and make the development of the parallel programs efficient, and the parallel program executing device which makes possible partial execution guaranteeing effective test debugging and reproducibility. CONSTITUTION:These devices are equipped with a sequencing means 12 which converts a 1st parallel program having parallel structure into a sequentially executable sequential program, a test debugging means 16 which performs the test debugging of the sequential program and generates test debugging information, a parallelizing means 18 which converts the sequential program after the test debugging into a 2nd parallel program by parallelizing the program based on the test debugging information. Further, the test debugging means 16 includes a means for introducing information regarding parallelism in the sequential program.

Description

【発明の詳細な説明】Detailed Description of the Invention

【0001】[0001]

【産業上の利用分野】本発明は、並行プログラムの作成
方法及びその作成支援装置並びに並行プログラム実行装
置に関する。
BACKGROUND OF THE INVENTION 1. Field of the Invention The present invention relates to a method for creating a parallel program, a creation support apparatus therefor, and a parallel program execution apparatus.

【0002】[0002]

【従来の技術】近年の半導体集積回路技術の進歩によ
り、複雑なプロセッサ及び大容量のメモリが小型かつ低
価格で実現できるようになり、多数のプロセッサからな
る並行処理システムや分散処理システムが実用化されて
いる。このようなハードウェアに対しては、専用のプロ
グラム、即ち並列プログラムや分散処理プログラム等
(以下「並行プログラム」という)を用いなければなら
ない。従って、並行プログラムをいかに効率よく開発す
るかは、優れたアルゴリズムを検討する場合と同様に重
要な課題となっている。
2. Description of the Related Art Recent advances in semiconductor integrated circuit technology have made it possible to realize complex processors and large-capacity memories at a small size and at low cost, and to put parallel processing systems and distributed processing systems consisting of a large number of processors into practical use. Has been done. For such hardware, a dedicated program, that is, a parallel program, a distributed processing program, or the like (hereinafter referred to as "parallel program") must be used. Therefore, how to develop a parallel program efficiently is as important as the case of examining a good algorithm.

【0003】ところで、プログラム開発においては、プ
ログラム中のバグを見つけ修正すること(即ちテスト・
デバッグ)と呼ばれる開発工程がプログラム開発の効率
に大きく影響する。しかし、並行プログラムの開発にお
いては、逐次プログラムの開発においては遭遇すること
のない、並行プログラム特有の問題を考慮する必要があ
る。この並行プログラム特有の問題とは、並行プログラ
ムを構成する各プロセスは、各プロセス間における相互
作用のタイミングにより様々な振る舞いをする可能性が
あるため、並行プログラム全体が正しく動作しないとい
う問題である。この問題は、並行プログラムの性質に基
づく問題であり、一般に「非決定性」と呼ばれる。
By the way, in developing a program, it is necessary to find and fix a bug in the program (ie,
A development process called debugging greatly affects the efficiency of program development. However, in the development of concurrent programs, it is necessary to consider the problems peculiar to concurrent programs that are not encountered in the development of sequential programs. The problem peculiar to the concurrent program is that the processes constituting the concurrent program may behave differently depending on the timing of interaction between the processes, and thus the entire concurrent program does not operate correctly. This problem is based on the nature of concurrent programs and is commonly called "non-deterministic".

【0004】例えば、図116に示す並行プログラムを
考慮する。図116(a)において、プロセスP1は、
共有メモリMの初期設定(init)を行うプロセス、
プロセスP2は、共有メモリMから読み出し(rea
d)を行うプロセス、プロセスP3は、共有メモリMに
書き込み(write)を行うプロセスを示す。これら
のプロセスをそれぞれ異なるプロセッサで実行するよう
な並列処理システム等で動作させた場合、全部で6通り
(図116(b)参照)の動作の組み合わせがあること
になる。通常、システムは初期設定で処理を開始するか
ら、今、プロセスP1(init)→P2(read)
→P3(write)又はP1(init)→P3(w
rite)→P2(read)の順番でプログラムが動
作する場合に正しい結果が得られるものとすれば、残り
の4通り(例えばP2→P3→P1)は、初期化が最初
に行われないため、明らかに正しい結果が得られないこ
とがわかる。
For example, consider the concurrent program shown in FIG. In FIG. 116 (a), the process P1 is
A process for initializing (init) the shared memory M,
The process P2 reads from the shared memory M (rea
A process for performing d), process P3, is a process for performing writing in the shared memory M. When these processes are operated by a parallel processing system or the like in which they are executed by different processors, there are a total of 6 combinations of operations (see FIG. 116 (b)). Normally, the system starts the process with the initial settings, so now the process P1 (init) → P2 (read)
→ P3 (write) or P1 (init) → P3 (w
If a correct result is obtained when the program operates in the order of write) → P2 (read), the remaining four ways (for example, P2 → P3 → P1) are not initialized first. It is clear that the correct result cannot be obtained.

【0005】上記のようにプロセスの振る舞いに関する
非決定性は、並行プログラムを動作させる毎に、その時
点におけるシステムの状況等によって結果を異なったも
のになる。従って、この非決定性に関する問題を解決し
ない限り、その並行プログラムは、テストにおいてたと
え正常に動作することがあっても、常に正常に動作する
という保証はない。
As described above, the non-determinism regarding the behavior of the process has different results each time the concurrent program is operated, depending on the state of the system at that time. Therefore, unless this problem of non-determinism is solved, there is no guarantee that the concurrent program will always work, even if it works fine in testing.

【0006】また、非決定性に関するバグは、一般に、
逐次プログラムにおけるバグを見つける場合よりも困難
である。なぜなら、逐次プログラムにおいては、テスト
・デバッグ時にプログラム中の全てのパスを実行するこ
とによって動作を確認することができるのに対し、並行
プログラムにおいては、全ての組合せ的なパス(即ち、
各プロセス中の全てのパスのみならず、プロセス相互間
の振る舞い)を考慮してパスを実行しなければならない
からである。上記の例のようにプロセスの数が少ない場
合にあっては、各プロセス相互間の振る舞いを全て列挙
することは比較的容易であるが、実際のプログラム開発
では、その数は膨大になり、その組み合わせも膨大なも
のとなるため、全ての振る舞いを把握することはもはや
不可能なものとなる。
Also, bugs related to non-determinism are generally
More difficult than finding bugs in a sequential program. Because, in a sequential program, the operation can be confirmed by executing all the paths in the program at the time of test / debug, whereas in the parallel program, all the combinatorial paths (that is,
This is because not only all the paths in each process, but also the behaviors among the processes must be taken into consideration when executing the paths. When the number of processes is small as in the above example, it is relatively easy to enumerate all the behaviors between each process, but in actual program development, the number becomes enormous. With so many combinations, it is no longer possible to understand all the behavior.

【0007】[0007]

【発明が解決しようとする課題】上記のように、並行プ
ログラム開発におけるテスト・デバッグは、逐次プログ
ラム開発におけるテスト・デバッグに比較して、非常に
困難である。特に、プログラム自体が巨大化した今日に
おいては、このテスト・デバッグは一層困難になってい
る。
As described above, the test / debug in the concurrent program development is very difficult as compared with the test / debug in the sequential program development. In particular, today, when the program itself has become huge, this test / debug becomes more difficult.

【0008】更に、並行プログラム特有の問題である非
決定性によって再現性が保証されないことからテスト・
デバッグが困難となり、また予期せぬエラーが出現する
という問題を有する。
Further, since the reproducibility is not guaranteed by the nondeterminism which is a problem peculiar to a concurrent program, the test
There are problems that debugging becomes difficult and an unexpected error appears.

【0009】本発明は、並行プログラムのテスト・デバ
ッグを容易に実現でき、並行プログラムの開発を効率よ
く行うことができる並行プログラムの作成方法及びその
作成支援装置を提供することを目的とする。
An object of the present invention is to provide a method for creating a parallel program and a creation support device for the parallel program, which can easily test / debug the parallel program and can efficiently develop the parallel program.

【0010】本発明の他の目的は、並行プログラムを逐
次的に実行することにより再現性を保証し、効果的なテ
スト・デバッグを行なうことを可能とすると共に、テス
ト・デバッグ後に一部分を並行化して実行することによ
り、非決定性による予期せぬエラーを排除した安全な並
行プログラムの実行が可能な並行プログラム実行装置を
提供することである。
Another object of the present invention is to ensure reproducibility by sequentially executing a parallel program, to enable effective test / debug, and to parallelize a part after the test / debug. It is to provide a concurrent program execution device capable of safely executing a concurrent program by eliminating an unexpected error due to nondeterminism.

【0011】本発明は並行プログラムを一旦逐次化し、
逐次化したプログラムに対してテスト・デバッグを行
い、テスト・デバッグが完了した時点で、プログラムの
並行性を復元することを骨子とする。
The present invention once serializes a concurrent program,
The main idea is to perform test / debug on the serialized program and restore the concurrency of the program when the test / debug is completed.

【0012】[0012]

【課題を解決するための手段】本発明は、上記の課題を
解決するために次のような手段を講じた。並行プログラ
ムのプログラミングの困難さは、「人間の思考は本来逐
次的であり、並行に動くものをありのままでは論理的に
認識することは困難である」ことに起因する。そこで、
本発明は並行プログラムをいったん逐次化し、逐次化し
たプログラムに対してプログラミング、テスト・デバッ
グを行う。これは、従来の逐次プログラミングと同じレ
ベルの困難さである。そして、テスト・デバッグが完了
した時点で並行性を、そのテスト・デバッグ情報を用い
て、自動的に復元する。
The present invention has taken the following means in order to solve the above problems. The difficulty of programming a concurrent program is that "human thinking is inherently sequential, and it is difficult to logically recognize what moves in parallel as it is." Therefore,
According to the present invention, a parallel program is serialized once, and programming, testing and debugging are performed on the serialized program. This is the same level of difficulty as conventional sequential programming. Then, when the test / debug is completed, the concurrency is automatically restored by using the test / debug information.

【0013】上記のようなプログラミングのスタイルを
「超逐次プログラミング」と呼ぶ。この「超逐次プログ
ラミング」によれば、従来の手法におけるプログラミン
グの困難さを解決できる。本発明の基本コンセプトは、
以下の3つのステップ(或いは手段)から構成される。
The above programming style is called "hyper sequential programming". According to this "hyper-sequential programming", the difficulty of programming in the conventional method can be solved. The basic concept of the present invention is
It consists of the following three steps (or means).

【0014】(1) 並行プログラムを逐次化して超逐
次プログラムを生成するステップ(手段)。
(1) A step (means) for serializing a parallel program to generate a hyper-sequential program.

【0015】(2) 超逐次プログラムに対して、作業
(プログラミング、テスト・デバッグ、並行性の導入)
を行うステップ(手段)。
(2) Work on hyper-sequential programs (programming, testing / debugging, introduction of concurrency)
Steps (means) for performing.

【0016】(3) 作業が完了した超逐次プログラム
を並行化して並行プログラムを作成するステップ(手
段)。
(3) A step (means) for parallelizing the hyper-sequential program whose work has been completed to create a parallel program.

【0017】ここで、「超逐次プログラム」とは、オリ
ジナルの並行プログラムの並行構造に関する情報を保ち
ながら逐次化したプログラムをいう。
Here, the "hyper-sequential program" refers to a program that is serialized while maintaining information about the parallel structure of the original parallel program.

【0018】本発明に係る並行プログラム作成装置は、
並行構造を有する第1並行プログラムを逐次実行可能な
逐次プログラムに変換する逐次化手段と、前記逐次プロ
グラムのテスト・デバッグを行い、テスト・デバッグ情
報を作成するテスト・デバッグ手段と、テスト・デバッ
グ後の前記逐次プログラムを前記テスト・デバッグ情報
に基づいて並行化することにより第2並行プログラムに
変換する並行化手段とを具備することを特徴とする。ま
た、本発明に係る並行プログラムの作成方法は、並行構
造を有する第1並行プログラムを逐次実行可能な逐次プ
ログラムに変換する第1ステップと、前記逐次プログラ
ムのテスト・デバッグを行い、テスト・デバッグ情報を
作成する第2ステップと、テスト・デバッグ後の前記逐
次プログラムを前記テスト・デバッグ情報に基づいて並
行化することにより第2並行プログラムに変換する第3
ステップとを具備することを特徴とする。
The parallel program creating apparatus according to the present invention is
Serializing means for converting the first concurrent program having a parallel structure into a serial program that can be sequentially executed, test / debug means for performing test / debug of the serial program, and creating test / debug information, and after test / debug Parallelizing means for converting the serial program into a second parallel program by parallelizing the sequential program based on the test / debug information. In addition, the method of creating a concurrent program according to the present invention includes a first step of converting a first concurrent program having a concurrent structure into a sequentially executable sequential program, and a test / debug of the sequential program to obtain test / debug information. And a third step of converting the serial program after the test and debug into a second parallel program by parallelizing the serial program based on the test and debug information.
And a step.

【0019】本発明の好ましい態様を以下に列挙する。 (1) 前記逐次プログラムに対して並行性に関する情
報を導入すること。この並行性に関する情報は、例え
ば、後述する良い非決定性に関する情報を含む。 (2) 第1並行プログラムの並行構造を解析し、この
並行構造と逐次プログラムをテストして得られた実行結
果を用いて逐次プログラムの並行化を行うこと。
The preferred embodiments of the present invention are listed below. (1) To introduce information about concurrency to the sequential program. The information about the concurrency includes, for example, information about good non-determinism described later. (2) The parallel structure of the first concurrent program is analyzed, and the parallel program is parallelized using the execution results obtained by testing this parallel structure and the sequential program.

【0020】(3) 第1並行プログラムの逐次プログ
ラムに変換されるセクションの並行構造と、逐次プログ
ラムのセクションの逐次構造をそれぞれ解析し、第1並
行プログラムの並行構造に関する相互関係及び逐次プロ
グラムの逐次構造に関する相互関係をグラフ情報として
表示する。このグラフ情報の表示においては、所定のセ
クション群をノードとし、第1並行プログラムの並行構
造に関する相互関係を第1アークとし、逐次プログラム
の逐次構造に関する相互関係を第2アークとしてグラフ
情報を表示する。そして、逐次プログラムのうち選択さ
れたセクションを並行化して部分的に逐次構造を有する
部分逐次プログラムに変換し、この部分逐次プログラム
を並行化して第2並行プログラムに変換する。
(3) The parallel structure of the section converted into the serial program of the first parallel program and the serial structure of the section of the serial program are analyzed respectively, and the mutual relationship regarding the parallel structure of the first parallel program and the serial of the serial program are analyzed. Display the interrelationships regarding the structure as graph information. In the display of the graph information, the predetermined section group is used as a node, the mutual relationship regarding the parallel structure of the first concurrent program is referred to as the first arc, and the mutual relationship relating to the sequential structure of the sequential program is displayed as the second arc. . Then, the selected section of the sequential program is parallelized and converted into a partial sequential program having a partial sequential structure, and this partial sequential program is parallelized and converted into a second parallel program.

【0021】ここで、第1並行プログラムを逐次プログ
ラムに変換するステップにおいて、逐次プログラムの所
望の実行結果が得られるまで逐次プログラムのテスト・
デバッグを行うステップを含ませるか、又は逐次プログ
ラムを部分逐次プログラムに変換するステップにおい
て、所望の実行結果が得られるまで部分逐次プログラム
のテスト・デバッグを行うステップを含ませるか、或い
はこれら両方のテスト・デバッグステップを含ませても
よい。
Here, in the step of converting the first concurrent program into a sequential program, a test of the sequential program is performed until a desired execution result of the sequential program is obtained.
Including the step of performing debugging, or in the step of converting the sequential program into the partial sequential program, including the step of testing and debugging the partial sequential program until the desired execution result is obtained, or both of these tests -A debug step may be included.

【0022】更に、逐次プログラムを部分逐次プログラ
ムに変換するステップに、部分逐次プログラムの逐次構
造を解析するステップを含ませた上で、グラフ情報の表
示と並行化セクションの選択及び部分逐次プログラムへ
の変換のステップを所定回数繰り返すようにしてもよ
い。
Further, the step of converting the sequential program into the partial sequential program includes the step of analyzing the sequential structure of the partial sequential program, and then displaying the graph information, selecting the parallelization section, and displaying the partial sequential program. The conversion step may be repeated a predetermined number of times.

【0023】(4) 第1並行プログラムを逐次プログ
ラムに変換する逐次化に際して、この第1並行プログラ
ムを実行してそれによる実行ログを保存するとともに、
この保存された実行ログ及び第1並行プログラムを解析
し、この解析結果に基づいて、保存された実行ログを並
べ替える。実行ログ及び第1並行プログラムの解析にお
いては、例えば保存された実行ログ及び第1並行プログ
ラムからプロセスの先行関係を抽出し、これを先行関係
情報として保存する。
(4) At the time of serialization for converting the first concurrent program into a sequential program, the first concurrent program is executed and the execution log resulting therefrom is saved, and
The saved execution log and the first parallel program are analyzed, and the saved execution logs are rearranged based on the analysis result. In the analysis of the execution log and the first concurrent program, for example, the preceding relation of the process is extracted from the saved execution log and the first concurrent program, and this is stored as the preceding relation information.

【0024】(5) 逐次プログラムに対する並行性に
関する情報の導入に際して、逐次プログラムのプロセス
の流れを制約と遷移条件からなるフィールドに変換し、
このフィールドをチューニングすることによって行う。
更に、このフィールドを表すフィールドデータを表示す
る。
(5) When introducing information about concurrency for a serial program, the process flow of the serial program is converted into a field consisting of constraints and transition conditions,
This is done by tuning this field.
Further, field data representing this field is displayed.

【0025】(6) 逐次プログラムに対して並行化の
候補となるプロセス群を指定し、このプロセス群の実行
順序を入れ換えて逐次プログラムを複数の並行模擬プロ
グラムに変換した後、これら複数の並行模擬プログラム
を部分的に逐次構造を有する1つの部分逐次プログラム
に変換し、この部分逐次プログラムを並行化して第2並
行プログラムに変換する。
(6) A process group that is a candidate for parallelization is designated for the sequential program, the execution order of the process group is changed, and the sequential program is converted into a plurality of parallel simulation programs. The program is partially converted into one partial sequential program having a sequential structure, and this partial sequential program is parallelized and converted into a second concurrent program.

【0026】ここで、第1並行プログラムを逐次プログ
ラムに変換するステップにおいて、逐次プログラムの所
望の実行結果が得られるまで該逐次プログラムのテスト
・デバッグを行うステップを含ませるか、又は複数の並
行模擬プログラム群を1つの部分逐次プログラムに変換
するステップにおいて、並行模擬プログラム群の所望の
実行結果が得られるまで複数の並行模擬プログラムのテ
スト・デバッグを行うか、或いはこれら両方のテスト・
デバッグステップを含ませてもよい。また、逐次プログ
ラムに対して並行化の候補となるプロセス群を指定する
際、第1並行プログラムを解析し、この解析結果から並
行化の候補となるプロセス群を抽出してもよい。また、
逐次プログラムを複数の並行模擬プログラムに変換する
ステップにおいて、複数の並行模擬プログラムの一部の
実行結果から不要と判断される並行模擬プログラムを取
り除くステップを含ませてもよい。更に、複数の並行模
擬プログラムを1つの部分逐次プログラムに変換するス
テップにおいて、部分逐次プログラムに対して並行化の
候補となるプロセス群を指定するステップを含ませ、逐
次プログラムを複数の並行模擬プログラムに変換するス
テップと、複数の並行模擬プログラムを1つの部分逐次
プログラムに変換するステップを所定の回数繰り返して
もよい。
Here, in the step of converting the first concurrent program into a sequential program, a step of testing and debugging the sequential program is included until a desired execution result of the sequential program is obtained, or a plurality of parallel simulations are performed. In the step of converting the program group into one partial sequential program, test / debug of a plurality of parallel simulated programs is performed until a desired execution result of the parallel simulated program group is obtained, or both of these test programs are tested.
Debug steps may be included. Further, when designating a process group that is a candidate for parallelization with respect to a sequential program, the first concurrent program may be analyzed and the process group that is a candidate for parallelization may be extracted from the analysis result. Also,
The step of converting the sequential program into a plurality of parallel simulation programs may include a step of removing a parallel simulation program determined to be unnecessary from a part of execution results of the plurality of parallel simulation programs. Further, in the step of converting a plurality of parallel simulation programs into one partial sequential program, a step of designating a process group that is a candidate for parallelization is included in the partial sequential program, and the sequential program is converted into a plurality of parallel simulation programs. The step of converting and the step of converting a plurality of parallel simulation programs into one partial sequential program may be repeated a predetermined number of times.

【0027】(7) 第1並行プログラムの逐次プログ
ラムへの変換を所定の逐次化ルールに従って行う場合、
この逐次化ルールを修正することによって、逐次プログ
ラムに対して並行性に関する情報を導入する。
(7) When the conversion of the first concurrent program into a serial program is performed according to a predetermined serialization rule,
By modifying this serialization rule, information about concurrency is introduced into the serial program.

【0028】(8) プロセス群がメッセージ情報を交
換しながら並行して動作する実行環境に用いられる並行
プログラムの作成を支援する並行プログラム作成支援装
置において、並行プログラムのプロセス群の実行履歴で
あるログ情報を逐次化ルールとして取得して記憶し、こ
の記憶したログ情報を修正可能とする。記憶されている
ログ情報に基づいてプロセス群を逐次的に起動制御し、
また記憶されたログ情報を並行化して第2並行プログラ
ムに変換する。
(8) A log which is an execution history of a process group of a parallel program in a parallel program creation support device for supporting creation of a parallel program used in an execution environment in which process groups operate in parallel while exchanging message information. Information is acquired and stored as a serialization rule, and the stored log information can be corrected. Sequential startup control of process groups based on stored log information,
Further, the stored log information is parallelized and converted into a second parallel program.

【0029】ここで、ログ情報修正手段は、前記ログ情
報記憶手段に記憶されているログ情報を時系列に表示す
る表示手段と、前記表示手段により時系列に表示された
ログ情報内のデータの順序の入れ換えを指示するための
入れ替え指示手段と、前記入れ替え指示手段による指示
に従って前記ログ情報記憶手段に記憶されているログ情
報を書き換える書換手段とを含むことを特徴とする。ま
た、ログ情報修正手段は、プロセス間の処理タイミング
の非決定性を導入する非決定性導入手段を含むことを特
徴とする。
Here, the log information correction means includes a display means for displaying the log information stored in the log information storage means in time series, and a data in the log information displayed in time series by the display means. The present invention is characterized by including replacement instruction means for instructing order replacement and rewriting means for rewriting the log information stored in the log information storage means in accordance with an instruction from the replacement instruction means. Further, the log information correcting means is characterized by including non-determinism introducing means for introducing non-determinism of processing timing between processes.

【0030】(9) プロセス群がメッセージ情報を交
換しながら並行して動作できる実行環境で前記プロセス
群が実行順序規定情報に従って動作するシステムにおい
て、実行順序規定情報を分割し、この分割された実行順
序情報に基づいてプロセス群を起動制御する。
(9) In a system in which the process groups operate in accordance with the execution order definition information in an execution environment in which the process groups can operate in parallel while exchanging message information, the execution order definition information is divided and the divided execution is executed. The process group is activated and controlled based on the sequence information.

【0031】この場合、実行順序規定情報を分割するた
めの基準を与える分割基準指定手段を保持する手段を更
に具備してもよい。また、メッセージ交換の履歴を実行
順序規定情報として用いるとともに、分割基準指定手段
における分割基準としてメッセージ中の宛先プロセス情
報を基準として用いる。また、メッセージ交換の履歴を
実行順序規定情報として用い、分割基準指定手段におけ
る分割基準として前記メッセージ中の宛先プロセス情報
を基準として用いるとともに、プロセス制御手段を各プ
ロセス毎に保持する手段を具備する。更に、メッセージ
交換の履歴を実行順序規定情報として用い、分割基準指
定手段における分割基準として前記メッセージ中の宛先
プロセス情報を基準として用いるとともに、プロセス制
御手段を各プロセス毎に保持する手段と、実行順序情報
分割手段によって分割された実行順序情報をそれぞれ別
々に保存する分割実行順序情報保存手段を具備し、プロ
セス制御手段は該プロセスに対応する分割実行順序情報
保存手段に保存されている分割実行順序情報に基づいて
プロセスを起動制御する。また、プロセス群の実行履歴
情報であるログ情報を実行順序規定情報として用いても
よい。
In this case, it is possible to further include means for holding a division standard designating means for giving a standard for dividing the execution order defining information. Further, the history of message exchange is used as the execution order defining information, and the destination process information in the message is used as the reference for division in the division reference designating means. Further, the history of message exchange is used as execution order defining information, the destination process information in the message is used as a reference as a division criterion in the division criterion specifying means, and a process control means is provided for each process. Furthermore, the history of message exchange is used as execution order defining information, the destination process information in the message is used as a reference as a division criterion in the division criterion specifying means, and a process control means is held for each process, and an execution order. The divided execution order information storing means stores the execution order information divided by the information dividing means separately, and the process control means stores the divided execution order information stored in the divided execution order information storing means corresponding to the process. Control the process based on Further, the log information, which is the execution history information of the process group, may be used as the execution order defining information.

【0032】(10) 第1並行プログラムをテスト実
行して、そのテスト実行の結果バグのない実行ログを蓄
積し、この蓄積されたバグのない実行ログのみを並行化
して第2並行プログラムに変換する。更に、テスト実行
の結果バグのある実行ログを蓄積し、この蓄積されたバ
グのある実行ログに基づいて第1並行プログラムを修正
する。
(10) The first parallel program is test-executed, a bug-free execution log is accumulated as a result of the test execution, and only the accumulated bug-free execution log is parallelized and converted into the second parallel program. To do. Further, as a result of the test execution, an execution log having a bug is accumulated, and the first concurrent program is modified based on the accumulated execution log having a bug.

【0033】また、本発明の並行プログラム実行装置
は、並行プログラムを解析してセクションを抽出し、そ
れらのセクション間の実行時の同期を制御するための実
行順序に関するルールを抽出するプログラム解析手段
と、実行時のセクション間の同期を調節するために実行
順序に関するルールを編集し、主に実行の効率化のため
に、抽出された当該セクションを融合・分割する編集手
段と、セクションをオブジェクトに変換するコンパイル
手段と、該実行順序に関するルールに従いセクション単
位で逐次又は並行に実行を行なう実行手段を具備する。
Further, the parallel program execution device of the present invention is a program analysis means for analyzing a parallel program to extract sections and extracting rules regarding an execution order for controlling synchronization at the time of execution between the sections. Edit the rules related to the execution order to adjust the synchronization between sections at the time of execution, and mainly to improve the efficiency of execution, edit means that fuses and divides the extracted sections, and converts the sections into objects And a executing means for executing serially or in parallel in section units according to a rule regarding the execution order.

【0034】[0034]

【作用】上記手段を講じた結果、次のような作用が生じ
る。本発明では並行プログラムを一旦逐次化し、逐次化
したプログラムに対してテスト・デバッグを行うことに
より、従来の並行プログラムのプログラミングより遥か
に容易な逐次プログラミングと同じレベルの困難さで並
行プログラムのテスト・デバッグが可能となる。
As a result of taking the above-mentioned means, the following effects occur. According to the present invention, by serializing a concurrent program once and performing test / debug on the serialized program, it is possible to test the concurrent program with the same level of difficulty as sequential programming, which is much easier than conventional concurrent program programming. Debugging is possible.

【0035】また、本発明では、いったん逐次化された
プログラムに対して意図的に並行性に関する情報(良い
非決定性)を導入できるので、意図しない並行性(悪い
非決定性)に基づいて発生するバグを回避でき、高信頼
化が達成できる。
Further, according to the present invention, since information about concurrency (good nondeterminism) can be intentionally introduced into a program that has been once serialized, a bug caused by unintended concurrency (bad nondeterminism). Can be avoided and high reliability can be achieved.

【0036】上記のグラフ情報によって並行化及び逐次
化の情報をユーザに対して同時に提示することにより、
ユーザは第1並行プログラムの並行構造を考慮しつつ、
良い非決定性部分の指定をすることができるようにな
る。また、並行プログラム記述レベルにおける良い非決
定性部分の指定・解除ではなく、グラフ情報に対して良
い非決定性部分を指定・解除を行うことでができるた
め、高度な並行プログラミング技術を必要とすることな
く、容易に並行プログラムの開発をすることができるよ
うになる。
By presenting parallelization and serialization information to the user at the same time by the above graph information,
The user considers the parallel structure of the first concurrent program,
You will be able to specify good non-deterministic parts. In addition, it is possible to specify and cancel the good non-deterministic part for the graph information instead of specifying and canceling the good non-deterministic part at the concurrent program description level. , Will be able to easily develop concurrent programs.

【0037】第1並行プログラムを逐次プログラムに変
換する際、第1並行プログラム及びその実行ログを解析
し、この解析結果に基づいて実行ログを並べ替えるよう
にすれば、並べ替え後の実行ログを表示してユーザに提
示することによって、並行プログラムの実行過程の理解
が容易となり、テスト・デバッグの効率が向上する。逐
次プログラムに並行性に関する情報を導入する際、逐次
プログラムのプロセスの流れを制約と遷移条件からなる
フィールドに変換し、更にそのフィールドデータを表示
することによって、フィールドを対話的・視覚的に編集
することで並行性に関する情報を効果的に導入し、バグ
のない並行プログラムが効率的に作成される。
When the first concurrent program is converted into the sequential program, the first concurrent program and its execution log are analyzed, and the execution logs are sorted based on the analysis result. By displaying it and presenting it to the user, it becomes easy to understand the execution process of the concurrent program, and the efficiency of test / debug is improved. When introducing information about concurrency into a serial program, the process flow of the serial program is converted into a field consisting of constraints and transition conditions, and the field data is displayed to edit the field interactively and visually. This effectively introduces information about concurrency and effectively creates bug-free concurrent programs.

【0038】第1並行プログラムから逐次化された逐次
プログラムに対して並行化の候補となるプロセス群を指
定し、このプロセス群の実行順序を入れ換えて逐次プロ
グラムを複数の並行模擬プログラムに変換した後、これ
ら複数の並行模擬プログラムを部分的に逐次構造を有す
る1つの部分逐次プログラムに変換し、この部分逐次プ
ログラムを並行化して第2並行プログラムに変換するこ
とにより、部分逐次プログラム上で並行プログラムの動
作を十分に確認することができる。また、部分逐次プロ
グラムに対して並行化の候補となるプロセス群を指定す
ることで、逐次構造プログラムを段階的に並行プログラ
ムへ変換することができる。更に、並行模擬動作系列に
基づく逐次実行で正しく動作することが確認された非決
定性のみを許容する並行性に関する情報を導入すること
で、正しく動作する並行プログラムを得ることができ
る。これらによって、並行プログラムのテスト・デバッ
グが容易となる。
After a process group that is a candidate for parallelization is designated for the serialized program serialized from the first concurrent program and the execution order of this process group is exchanged to convert the sequential program into a plurality of parallel simulated programs. , A plurality of parallel simulation programs are partially converted into one partial sequential program having a sequential structure, and the partial sequential program is parallelized and converted into a second parallel program, thereby making The operation can be fully confirmed. Further, by designating a process group that is a candidate for parallelization with respect to the partial sequential program, the sequential structure program can be gradually converted into a parallel program. Furthermore, by introducing information about concurrency that allows only nondeterminism that is confirmed to operate correctly by sequential execution based on the parallel simulated operation sequence, a parallel program that operates correctly can be obtained. These facilitate testing and debugging of concurrent programs.

【0039】プロセス群がメッセージ情報を交換しなが
ら並行して動作する実行環境に用いられる並行プログラ
ムの作成を支援する並行プログラム作成支援装置におい
て、第1並行プログラムのプロセス群の実行履歴である
ログ情報を逐次化ルールとして取得して記憶し、このロ
グ情報を修正可能とするとともに、記憶されているログ
情報に基づいてこれに基づいてプロセス群を逐次的に起
動制御し、記憶されたログ情報を並行化して第2並行プ
ログラムに変換することにより、ソースプログラムとし
ての並行プログラムを修正することなく、ログ情報の修
正で処理タイミングの非決定性に起因する不具合を解決
できる。これにより、処理タイミングの非決定性が内在
する並行/並列/分散プログラムの開発が容易となる。
また、ユーザの意図する良い非決定性のみを容易に導入
することができるため、並行プログラムとしての柔軟
性、再利用性及び拡張性を維持することもできる。
In a parallel program creation support device that supports creation of a parallel program used in an execution environment in which process groups operate in parallel while exchanging message information, log information that is the execution history of the process group of the first parallel program Is acquired as a serialization rule and stored, the log information can be corrected, and the process group is sequentially activated based on the stored log information, and the stored log information is stored. By parallelizing and converting to the second parallel program, it is possible to solve the problem caused by the nondeterminism of the processing timing by modifying the log information without modifying the parallel program as the source program. This facilitates the development of parallel / parallel / distributed programs with inherent non-deterministic processing timing.
Further, since only good nondeterminism intended by the user can be easily introduced, it is possible to maintain flexibility, reusability, and extensibility as a concurrent program.

【0040】プロセス群がメッセージ情報を交換しなが
ら並行して動作できる実行環境でプロセス群が実行順序
規定情報に従って動作するシステムにおいて、実行順序
規定情報を分割し、つまり並行プログラムを逐次化して
得られた全プロセスの集中ログ情報を各プロセス毎に分
割し、この分割された実行順序情報に基づいてプロセス
群を起動制御することにより、無害の非決定性を自然に
導入し、集中ログ情報に基づく逐次プログラムの実行時
と同一結果を高い処理効率で得ることが可能となる。
In a system in which the process groups operate according to the execution order defining information in an execution environment in which the process groups can operate in parallel while exchanging message information, the execution order defining information is divided, that is, a parallel program is serialized. By dividing the centralized log information of all the processes for each process and controlling the activation of the process group based on this divided execution order information, harmless nondeterminism is naturally introduced, and the sequential log information is used. It is possible to obtain the same result as when the program is executed with high processing efficiency.

【0041】第1並行プログラムをテスト実行してその
テスト実行の結果、その1つであるバグのない実行ログ
を蓄積し、この蓄積されたバグのない実行ログのみを並
行化して第2並行プログラムに変換することにより、テ
ストで通過したタイミングだけを許容するようにプログ
ラムが動くようになるため、テストしなかったことで残
存したバグに陥ることを回避でき、信頼性が向上する。
As a result of the test execution of the first concurrent program, a bug-free execution log, which is one of them, is accumulated, and only the accumulated bug-free execution log is parallelized to generate a second concurrent program. By converting to, the program moves so that only the timing passed in the test is allowed, so it is possible to avoid falling into the bug that remained due to not testing, and improve the reliability.

【0042】本発明の並行プログラム実行装置によれば
並行プログラムの逐次又は部分並行実行を行なうことが
可能となるので、従来の逐次プログラムと同様に再現性
を保証することができ、効果的かつ安定したテスト・デ
バッグを行なうことができる。また、逐次実行から部分
並行実行に容易に切替えることができるため、逐次化し
てテスト・デバッグをおこなったプログラムを非決定性
に影響されない安全な並行実行を可能とする。他に、セ
クションの実行順序に関するルールを編集して実行時の
セクション間の同期を制御することにより、効果的なテ
スト・デバッグを行なえるとともにプログラムの効率化
の指針とすることもできる。
According to the parallel program execution apparatus of the present invention, since it is possible to execute a serial or partial parallel execution of a parallel program, reproducibility can be guaranteed as in the conventional serial program, and it is effective and stable. You can perform the test / debug that you have done. Moreover, since it is possible to easily switch from serial execution to partial parallel execution, it is possible to safely execute parallel execution of a program that has been serialized and tested and debugged without being affected by nondeterminism. In addition, by editing the rules regarding the execution order of the sections and controlling the synchronization between the sections at the time of execution, it is possible to perform effective test / debug and also to guide the efficiency of the program.

【0043】更に、本発明の並行プログラム実行装置
は、本発明の並行プログラム作成支援装置或いは作成方
法と組み合わせて用いることもできる。この場合には、
並行プログラム実行装置は、第1並行プログラム(ソー
スプログラム)の実行手段として、機能する。更に、並
行プログラム実行装置は、本発明の並行プログラム作成
支援装置或いは作成方法により作成された並行プログラ
ムの検証用としても利用できる。
Furthermore, the parallel program execution device of the present invention can be used in combination with the parallel program creation support device or creation method of the present invention. In this case,
The parallel program execution device functions as an execution unit of the first parallel program (source program). Furthermore, the parallel program execution device can also be used for verification of a parallel program created by the parallel program creation support device or creation method of the present invention.

【0044】[0044]

【実施例】以下、図面を参照して本発明の実施例を説明
する。本発明の実施例の説明を行う前に、本発明におい
て使用する用語を以下のように定義する。
Embodiments of the present invention will be described below with reference to the drawings. Before describing the embodiments of the present invention, the terms used in the present invention are defined as follows.

【0045】並行システム:論理的な並行性を持つシス
テム。並行プログラムが動くシステムは並行システムで
ある。並列計算機や分散処理システムは並行システムで
ある。
Concurrent system: A system with logical concurrency. A system in which a concurrent program works is a concurrent system. Parallel computers and distributed processing systems are parallel systems.

【0046】並行プログラム(CP):論理的に並行に
動くモデルに基づいて記述されたプログラム。複数のC
PUから構成される並列計算機上で、論理的にも物理的
にも並行に動くプログラム(並列プログラム)は、並行
プログラムに含まれる。また、単一のCPU上で物理的
には逐次的に動く場合でも、マルチタスクシステムのよ
うに論理的に並行であれば、並行プログラムに含まれ
る。
Concurrent program (CP): A program written based on a model that logically moves in parallel. Multiple C
A program (parallel program) that operates in parallel both logically and physically on a parallel computer composed of PU is included in the parallel program. Further, even if they physically move sequentially on a single CPU, if they are logically parallel as in a multi-task system, they are included in a parallel program.

【0047】逐次プログラム:論理的に逐次に動くモデ
ルに基づいて記述されたプログラム。
Sequential program: A program written based on a model that logically moves sequentially.

【0048】超逐次プログラム(HSP):並行プログ
ラムにメタレベル(実行管理レベル)の制御を付加する
ことによって、逐次的に動くようにしたプログラム。例
えば、並行プログラムとして記述されたプログラムを、
実行管理レベルのスケジューラを付加することによって
逐次的に動くようにしたプログラムは、超逐次プログラ
ムである。超逐次プログラムは後述する非決定性を持た
ないので、外部からの入力が同じならばその挙動は必ず
再現性を持つ。また、超逐次プログラムにおいて、部分
的に並行性(非決定性)を導入することもできる。部分
的に並行性(非決定性)が導入された超逐次プログラム
を、特に、部分超逐次プログラム(PHSP)、並行性
(非決定性)が全くなく完全に逐次化されたプログラム
を完全超逐次プログラムと呼ぶこともある。
Hyper Sequential Program (HSP): A program that is made to run sequentially by adding meta level (execution management level) control to a concurrent program. For example, a program written as a concurrent program
A program that is made to run sequentially by adding a scheduler of the execution management level is a hyper sequential program. Since the hyper-sequential program does not have the nondeterminism described later, its behavior will always be reproducible if the input from the outside is the same. In addition, concurrency (nondeterminism) can be partially introduced in the hyper sequential program. A hyper-sequential program with partial concurrency (non-determinism) introduced is called a partial hyper-sequential program (PHSP), and a fully serialized program with no concurrency (non-determinism) is called a full hyper-sequential program. Sometimes called.

【0049】非決定性:入力が同じにもかかわらず、処
理のタイミングによってシステムの挙動が変わること。
並行プログラムの実行において、非決定性は本質的側面
である。ある意味で、非決定性のないプログラムは論理
的に逐次プログラムと等価である。
Nondeterminism: The behavior of the system changes depending on the timing of processing even though the inputs are the same.
Non-determinism is an essential aspect of the execution of concurrent programs. In a sense, non-deterministic programs are logically equivalent to sequential programs.

【0050】良い非決定性:ユーザの意図する非決定性
をいう、即ち、ユーザの仕様、その他実現要求に含まれ
る非決定性。この非決定性により、外部(環境)からの
非決定的な入力に適切に応答できるようになる。
Good non-determinism: The non-determinism intended by the user, that is, the non-determinism included in the user's specifications and other realization requirements. This nondeterminism allows appropriate response to nondeterministic input from the outside (environment).

【0051】悪い非決定性:ユーザが予想しなかった非
決定性。ユーザの思考回路は逐次的であるため、設計時
には意図しなかったケースが実際の並行プログラムの実
行では多々発生する。
Bad non-determinism: Non-determinism that the user did not expect. Since the user's thinking circuit is sequential, there are many cases in the actual execution of concurrent programs that were not intended during design.

【0052】無害な非決定性:その非決定的な選択肢の
選択が、最終的な結果に影響しないもの。「超逐次プロ
グラミング」の並行化装置において、並行化する対象
は、この「無害な非決定性」を含む。
Harmless nondeterminism: The choice of nondeterministic options does not affect the final outcome. In the "hyper-sequential programming" parallelization device, the object to be parallelized includes this "harmless nondeterminism".

【0053】デフォルト逐次化:実行管理レベルで逐次
化制御を行なうこと。
Default serialization: Perform serialization control at the execution management level.

【0054】並行模擬プログラム:超逐次プログラムに
おいて、並行化の候補となる特定の範囲について生成さ
れた並行模擬動作系列の集合。
Parallel simulation program: In a hyper sequential program, a set of parallel simulation operation sequences generated for a specific range that is a candidate for parallelization.

【0055】・並行模擬動作系列:超逐次プログラムに
おいて並行化の候補となる特定の範囲について並行プロ
グラムの動作を逐次プログラム上で模擬することを目的
として、逐次実行の順序を任意又は意図的に入れ替えて
生成される1つの動作列のこと。一般に、1つの並行化
範囲には複数の並行模擬動作系列が生成されるので、そ
の全体を1つの並行模擬プログラムという。超逐次プロ
グラム全体では複数の並行模擬プログラムが生成され
る。
Concurrent simulation operation sequence: In order to simulate the operation of a parallel program on a sequential program in a specific range that is a candidate for parallelization in a hyper sequential program, the order of sequential execution is arbitrarily or intentionally changed. One motion sequence generated by In general, since a plurality of parallel simulation operation sequences are generated in one parallelization range, the whole is called one parallel simulation program. Multiple parallel simulation programs are generated in the entire hyper-sequential program.

【0056】図1は、本発明に係る並行プログラム作成
支援装置を実現するためのコンピュータシステムの構成
例を示す図である。図1において、N台のプロセッサ1
−1、1−2、…、1−Nは、並行プログラムを同時に
実行することができ、I/Oインタフェース2を介して
共有メモリ3及び周辺装置とアクセスすることができ
る。周辺装置は、入力装置4と出力装置5及び外部記憶
装置6から構成される。入力装置4は、キーボードとポ
インティングデバイス等とからなり、各種コマンドやデ
ータの入力をするために用いられる。出力装置5は、C
RTディスプレイ等からなり、ソースプログラムやテス
ト・デバッグ状況に関する情報等をテキスト又はグラフ
ィック表示することにより、ユーザに提示する。ユーザ
は、これら入力装置4及び出力装置5を用いて、対話的
にコンピュータを操作することができる。
FIG. 1 is a diagram showing an example of the configuration of a computer system for realizing the parallel program creation support apparatus according to the present invention. In FIG. 1, N processors 1
-1, 1-2, ..., 1-N can execute parallel programs at the same time, and can access the shared memory 3 and peripheral devices via the I / O interface 2. The peripheral device includes an input device 4, an output device 5, and an external storage device 6. The input device 4 includes a keyboard and a pointing device, and is used to input various commands and data. The output device 5 is C
It consists of an RT display, etc., and presents it to the user by displaying text or graphic information on the source program and the test / debug status. The user can interactively operate the computer by using the input device 4 and the output device 5.

【0057】外部記憶装置6は、磁気ディスクや光磁気
ディスク等からなり、ソースプログラムやテスト・デバ
ッグ状況に関する情報を書き込み又は読み出すことがで
きるようになっている。
The external storage device 6 is composed of a magnetic disk, a magneto-optical disk, or the like, and is capable of writing or reading the source program and information regarding the test / debug state.

【0058】なお、上記説明したコンピュータシステム
の構成は、これにこだわる必要はなく、例えば、複数の
計算機をネットワークを用いて接続した、いわゆる分散
ネットワークを用いて構成してもよい。
The configuration of the computer system described above does not have to be particular about this. For example, a so-called distributed network in which a plurality of computers are connected via a network may be used.

【0059】上記のように構成されたコンピュータシス
テムにおいて、本発明における並行プログラムの作成
は、以下のようにして実現される。
In the computer system configured as described above, the creation of the parallel program according to the present invention is realized as follows.

【0060】(実施例1)実施例1では、テスト・デバ
ッグは部分超逐次プログラムに対して行い、好ましい実
施例として良い非決定性の導入を超逐次プログラムに対
して行う。なお、以下の実施例において、良い非決定性
を導入した例を説明するが、必ずしも良い非決定性を導
入しなくても良い。
(Embodiment 1) In Embodiment 1, test / debug is performed on a partial hyper-sequential program, and as a preferred embodiment, good nondeterminism is introduced to the hyper-sequential program. It should be noted that although an example in which good nondeterminism is introduced will be described in the following embodiments, good nondeterminism may not necessarily be introduced.

【0061】図2は、実施例1に係る並行プログラム作
成支援装置の概略構成を示す図である。実施例1に係る
並行プログラム作成支援装置は、逐次化装置12と、テ
スト実行装置15と、デバッグ装置16と、非決定性導
入装置17と、並行化装置18とを具備する。
FIG. 2 is a diagram showing a schematic configuration of the parallel program creation support apparatus according to the first embodiment. The concurrent program creation support device according to the first embodiment includes a serialization device 12, a test execution device 15, a debug device 16, a nondeterminism introduction device 17, and a parallelization device 18.

【0062】逐次化装置12は、第1CPファイル記憶
部11に記憶されたソースプログラム(以下、「第1並
行プログラム」と称する)を逐次化ルール記憶部13に
記憶された逐次化ルールに基づいて超逐次プログラムに
変換して、その結果がHSPファイル記憶部14に記憶
される。第1CPファイル記憶部11には、モデル化さ
れ並行プログラミング言語で記述された第1並行プログ
ラムが格納されている。この第1並行プログラムには、
バグが存在する可能性がある。第1並行プログラムを記
述する並行プログラミング言語には、例えば以下のもの
がある。 (a)Concurrent PASCAL (b)ADA (c)GHC (d)Modula3 (e)Occam (f)cooC テスト実行装置15及びデバッグ装置16は、それぞ
れ、HSPファイル記憶部14に記憶された超逐次プロ
グラムのテスト・デバッグを行う。
The serialization device 12 uses the source program stored in the first CP file storage unit 11 (hereinafter referred to as “first parallel program”) based on the serialization rules stored in the serialization rule storage unit 13. It is converted into a hyper sequential program and the result is stored in the HSP file storage unit 14. The first CP file storage unit 11 stores a first parallel program modeled and described in a parallel programming language. In this first concurrent program,
There may be a bug. Concurrent programming languages for describing the first concurrent program include, for example, the following. (A) Concurrent PASCAL (b) ADA (c) GHC (d) Modula3 (e) Occam (f) cooC The test execution device 15 and the debug device 16 respectively store the hyper sequential programs stored in the HSP file storage unit 14. Test and debug.

【0063】非決定性導入装置17は、第1並行プログ
ラムを超逐次プログラムに変換する際に、良い非決定性
を導入する。
The nondeterminism introducing device 17 introduces good nondeterminism when converting the first concurrent program into a hyper sequential program.

【0064】並行化装置18は、HSPファイル記憶部
14に記憶された超逐次プログラムのテスト・デバッグ
情報に基づいて、超逐次プログラムを並行化して、第2
並行プログラムを生成する。この第2並行プログラム
は、第2CPファイル記憶部19に記憶される。
The parallelizing device 18 parallelizes the hyper sequential program based on the test / debug information of the hyper sequential program stored in the HSP file storage unit 14,
Generate a concurrent program. This second parallel program is stored in the second CP file storage unit 19.

【0065】図3は、実施例1に係る並行プログラム作
成方法の概略手順を示すフローチャートである。
FIG. 3 is a flowchart showing a schematic procedure of the parallel program creating method according to the first embodiment.

【0066】(1) ステップA1:モデル化 対象の並行システムに対し、並行性を用いた自然なモデ
ル化を行う。また、並行システムの各プロセス構造を決
定する。更に、該各プロセス内を並行プログラム等を用
いたプログラミングにより、並行構造を有する並行プロ
グラムをソースプログラムとして記述する。なお、「並
行構造を有する」としたのは、一般に並行プログラム
は、その全てが並行構造で構成されているわけではな
く、逐次性を用いたモデル化の方がより自然である場合
には、その部分は逐次構造である場合があるからであ
る。なお、このソースプログラムには、バグが潜在的に
存在する可能性がある。
(1) Step A1: Modeling Natural modeling using concurrency is performed on the target parallel system. Moreover, each process structure of the parallel system is determined. Further, a parallel program having a parallel structure is described as a source program by programming in each process using a parallel program or the like. It should be noted that "having a parallel structure" generally means that a parallel program does not consist entirely of a parallel structure, and if modeling using sequentiality is more natural, This is because that part may be a sequential structure. Note that there is a potential bug in this source program.

【0067】(2) ステップA2:逐次化 デフォルト逐次化によって、第1並行プログラムを逐次
構造の超逐次プログラムに変換する。本実施例では、メ
タレベルにおいて逐次性を導入する。ここで、メタレベ
ルとはソースプログラム(すなわち、第1並行プログラ
ム)そのもののレベルではなく、ソースプログラムの実
行を管理するレベルをいう。例えば、並行プログラムで
記述されたソースプログラムを、それとは別に管理され
るスケジューラによって逐次的に実行することを保障し
たプログラムのソースプログラムに変換する。
(2) Step A2: Serialization By default serialization, the first concurrent program is converted into a hyperserial program having a sequential structure. In this embodiment, the sequentiality is introduced at the meta level. Here, the meta level does not mean the level of the source program (that is, the first concurrent program) itself, but the level of managing the execution of the source program. For example, a source program written in a parallel program is converted into a source program of a program guaranteed to be sequentially executed by a scheduler managed separately from the source program.

【0068】(3) ステップA3:超逐次プログラム
のテスト・デバッグ 超逐次プログラムのテスト・デバッグを行う。テスト実
行装置により超逐次プログラムをテスト実行した結果に
基づいて、デバッグ装置により超逐次プログラムからバ
グを除去する。ここでのテスト・デバッグは、逐次プロ
グラムにおける通常のテスト・デバッグ方法と同様に行
うことができる。超逐次プログラムが正常に動作するこ
とが保障されるまで、テスト・デバッグを行う。
(3) Step A3: Test / debug of hyper sequential program Test / debug of hyper sequential program. Based on the result of test execution of the hyper sequential program by the test execution device, the debug device removes a bug from the hyper sequential program. The test / debug here can be performed in the same manner as the normal test / debug method in the sequential program. Test and debug until the super sequential program is guaranteed to operate normally.

【0069】(4) ステップA4:超逐次プログラム
に対する良い非決定性の導入 テスト・デバッグが行われた超逐次プログラムに対し
て、良い非決定性に関する情報(並行性に関する情報)
を与える。これにより超逐次プログラムは、非決定性に
関する情報を一部に持つことで、部分超逐次プログラム
となる。良い非決定性に関する情報の導入方法は後述す
る。
(4) Step A4: Introduction of Good Nondeterminism to Hypersequential Program Information on good nondeterminism (information about concurrency) for hyperserial programs that have been tested and debugged.
give. As a result, the hyper-sequential program becomes a partial hyper-sequential program by partially having information about nondeterminism. The method of introducing information about good nondeterminism will be described later.

【0070】(5) ステップA5:部分超逐次プログ
ラムのテスト・デバッグ ステップA4で得られた部分超逐次プログラムに対し
て、テスト・デバッグを行う。すなわち、ステップA4
で良い非決定性に関する情報が導入された超逐次プログ
ラムをテスト・デバッグする。
(5) Step A5: Test / Debug of Partial Hyper-Sequential Program The partial hyper-sequential program obtained in Step A4 is tested / debugged. That is, step A4
Test and debug hyper-sequential programs with information about good nondeterminism introduced in.

【0071】(6) ステップA6:部分超逐次プログ
ラムに対する良い非決定性の導入・拡大 ステップA5でテスト・デバッグが行われた部分超逐次
プログラムに対して、良い非決定性に関する情報を追加
する。ステップA5〜ステップA6を所定の回数繰り返
し、良い非決定性を徐々に拡大していく。
(6) Step A6: Introduction / Expansion of Good Nondeterminism for Partial Hypersequential Program Information about good nondeterminism is added to the partial hypersequential program tested and debugged in step A5. Steps A5 to A6 are repeated a predetermined number of times to gradually expand the good nondeterminism.

【0072】(7) ステップA7:並行化コンパイル 良い非決定性に関する情報が導入された部分超逐次プロ
グラムのうち、無害な非決定性部分を抽出し、その部分
を並行化することで、部分超逐次プログラム全体を並行
プログラム(すなわち、第2並行プログラム)に復元す
る。すなわち、並行化に関する情報が導入されなかった
部分に関しては、デフォルト逐次化で与えられた逐次性
を並行プログラム中に反映させて(例えば、ソースプロ
グラム自体に埋め込む)、メタレベルのデフォルト逐次
性は解除する。
(7) Step A7: Parallelization Compile A partial hyper-sequential program is extracted by extracting a harmless non-deterministic part from the partial hyper-sequential program in which information on good non-determinism is introduced and parallelizing the part. The whole is restored to the concurrent program (that is, the second concurrent program). That is, regarding the part where the information about the parallelization is not introduced, the seriality given by the default serialization is reflected in the parallel program (for example, embedded in the source program itself), and the default seriality at the meta level is canceled. .

【0073】図4〜図7を参照して、本発明をより具体
的に説明する。
The present invention will be described more specifically with reference to FIGS.

【0074】図4は、簡単な並行プログラムの一例を示
す図である。
FIG. 4 is a diagram showing an example of a simple parallel program.

【0075】図4の並行プログラムは、プロセスP1と
プロセスP2とから構成されている。これらのプロセス
は、並行プログラムのソースコードがコンパイルされる
ことにより生成された実行モジュールがコンピュータ上
で実行された時に初めて実体化するものであり、プロセ
スP1とプロセスP2とにそれぞれ対応する並行プログ
ラムが必ずしも物理的に別の記憶媒体に記憶されている
必要はない。また、メモリMはここでは共有メモリ(sha
red memory) を表し、並行プログラムのアクセス命令に
よって書き込み/読み込み等のアクセスを行うことがで
きる。図4において実線矢印はプロセスP1、P2が実
行された時に共有メモリMとの間でアクセスが行われる
ことを示す。
The parallel program of FIG. 4 is composed of a process P1 and a process P2. These processes are realized only when the execution module generated by compiling the source code of the parallel program is executed on the computer, and the parallel programs corresponding to the processes P1 and P2 are It does not necessarily have to be physically stored in another storage medium. Further, the memory M is a shared memory (sha
red memory), and access such as writing / reading can be performed by the access instruction of the parallel program. In FIG. 4, solid arrows indicate that access is performed to the shared memory M when the processes P1 and P2 are executed.

【0076】CPファイル記憶部11に格納された第1
並行プログラムは、ユーザによる入力装置4からの指示
により引き出され、逐次化装置12に入力される。逐次
化装置12に入力された第1並行プログラムは、逐次化
ルール記憶部13に格納された逐次化ルールに従って、
メタレベルにおいてデフォルト逐次性が導入されること
により、超逐次プログラム(HSP)に変換され、HS
Pファイル記憶部14に記録される。
First stored in CP file storage unit 11
The parallel program is extracted by a user's instruction from the input device 4 and input to the serialization device 12. The first concurrent program input to the serialization device 12 follows the serialization rule stored in the serialization rule storage unit 13
By introducing default seriality at the meta level, it is converted into a hyper sequential program (HSP), and HS
It is recorded in the P file storage unit 14.

【0077】逐次化ルールの代表的なものには以下のも
のがある。 (a)プロセスに優先度を導入するルール。 (b)プロセス内の処理単位(オブジェクト指向におけ
るメソッド)に優先度を導入するルール。 (c)具体的な実行ログに基づく逐次化ルール。 (d)メッセージの到着先の実行を優先する逐次化ルー
ル。 (e)メッセージの送信元の実行を優先する逐次化ルー
ル。
Typical serialization rules are as follows. (A) A rule that introduces priority into a process. (B) A rule for introducing a priority to a processing unit (method in object orientation) in a process. (C) A serialization rule based on a specific execution log. (D) A serialization rule that gives priority to the execution of the destination of the message. (E) A serialization rule that prioritizes the execution of the message sender.

【0078】図4の下方に記載した" P1>>P2" が
図4の並行プログラムに対する逐次化ルールの一例であ
り、二つのプロセスP1、P2に対してP1をP2より
優先的に動作させるという優先度を与えることを表して
いる。これは上記(a)のルールに相当する。この逐次
化ルールは、例えば第1並行プログラムの先頭で宣言し
ておき、プログラム本体ととともにコンパイルすること
により並行プログラムに導入するようにしても良いし、
並行プログラムとは別にファイルに記述しておき、並行
プログラムが実行時にオペレーティングシステムやスケ
ジューラが解釈することにより導入するようにしても良
い。なお、本実施例では逐次化ルールを" >>" で示し
たが、これに限らず任意の記号を用いることができる。
"P1 >>P2" described in the lower part of FIG. 4 is an example of the serialization rule for the parallel program of FIG. 4, and it is said that P1 is preferentially operated over P2 for the two processes P1 and P2. This represents giving priority. This corresponds to the rule (a) above. This serialization rule may be introduced at the beginning of the first concurrent program, for example, and may be introduced into the concurrent program by compiling with the program body.
It may be described in a file separately from the parallel program and introduced by being interpreted by the operating system or the scheduler when the parallel program is executed. In the present embodiment, the serialization rule is indicated by ">>", but the present invention is not limited to this and any symbol can be used.

【0079】図5は、メタレベルにおいてデフォルト逐
次性が導入された超逐次プログラムHSPの概念図であ
り、プロセスP1とプロセスP2とはスケジューラSに
よって管理されていることを示しており、図5におい
て、破線矢印は図4に示した逐次化ルール(" P1>>
P2" )に従って、スケジューラSがプロセスP1を実
行後、プロセスP2を実行することを示す。なお、この
超逐次プログラムHSPの概念図は、図5の下方に記載
した式、 HSP=P1|P2|S のように記述するものとする。これは、超逐次プログラ
ムHSPはプロセスP1とプロセスP2とスケジューラ
Sとから構成されていることを示す。ここで、逐次化ル
ールはスケジューラのスケジューリング規則に対応す
る。
FIG. 5 is a conceptual diagram of the hyper-sequential program HSP in which the default seriality is introduced at the meta level, and shows that the process P1 and the process P2 are managed by the scheduler S. In FIG. The broken line arrow indicates the serialization rule ("P1 >>" shown in FIG.
P2 ″) indicates that the scheduler S executes the process P1 and then the process P2. The conceptual diagram of this hyper-sequential program HSP is HSP = P1 | P2 | Suppose that the hyper-sequential program HSP is composed of a process P1, a process P2, and a scheduler S. Here, the serialization rule corresponds to the scheduling rule of the scheduler. .

【0080】ユーザは、この超逐次プログラムHSPを
出力装置5によって見ることができる。この超逐次プロ
グラムHSPは、ユーザによる入力装置4からの指示に
よってテスト実行装置15に入力され、テスト実行が行
われる。テスト実行装置15は、テスト実行の結果(実
行ログ)を出力装置5に提示する。ユーザは、このテス
ト実行の結果に基づいて、入力装置4をデバッグ装置1
6として用いて、超逐次プログラムHSPに対し所定の
テスト・デバッグを行うことができる。具体的なテスト
・デバッグ技術には、 (a)ソースコードのトレーサ (b)ブレークポイント (c)アニメーション 等がある。
The user can see the hyper sequential program HSP by the output device 5. This hyper-sequential program HSP is input to the test execution device 15 according to an instruction from the input device 4 by the user, and the test execution is performed. The test execution device 15 presents the result of the test execution (execution log) to the output device 5. The user sets the input device 4 to the debug device 1 based on the result of this test execution.
6 can be used to perform predetermined test / debug on the hyper sequential program HSP. Specific test / debug techniques include (a) source code tracer, (b) breakpoints, and (c) animation.

【0081】図6は、この時のテスト・デバッグのイメ
ージを表す図である。図6において、出力装置5上のデ
バッグ画面60には、各種ウィンドウ61〜65がオー
プンされ、各種情報が表示されており、これらウィンド
ウ61〜65は、適宜オープン・クローズすることが可
能である。なお、ここでのテスト・デバッグは、基本的
には公知のデバッグ装置を用いることができ、具体的に
は、UNIXワークステーション上のdbxtool等
が知られている。
FIG. 6 is a diagram showing an image of the test / debug at this time. In FIG. 6, various windows 61 to 65 are opened and various information is displayed on the debug screen 60 on the output device 5, and these windows 61 to 65 can be appropriately opened and closed. Note that, for the test / debug here, a known debug device can be basically used, and specifically, dbxtool on a UNIX workstation is known.

【0082】ユーザは、超逐次プログラムHSPに対し
て所定のテスト・デバッグを行った後、入力装置4から
再度テスト実行の指示を与える。これにより、テスト・
デバッグの行われた超逐次プログラムHSPは、テスト
実行装置15に入力され、再度テスト実行が行われる。
このテスト・デバッグは、超逐次プログラムHSPが正
常に動作することを確認するまで繰り返し行われる。テ
スト・デバッグにより正常に動作することを確認した時
点で、非決定性導入装置17により超逐次プログラムに
対して良い非決定性に関する情報を部分的に導入してい
く。非決定性導入装置17より導入された良い非決定性
に関する情報は、超逐次プログラムHSPに反映され、
HSPファイル記憶部14に記録される。なお、非決定
性導入装置17については後述する。
The user gives a test execution instruction again from the input device 4 after performing a predetermined test / debug on the hyper sequential program HSP. This allows you to test
The debugged hyper sequential program HSP is input to the test execution device 15 and the test execution is performed again.
This test / debug is repeated until it is confirmed that the hyper sequential program HSP operates normally. When the normal operation is confirmed by the test / debug, the nondeterminism introducing device 17 partially introduces the information regarding good nondeterminism into the hyper sequential program. Information about the good nondeterminism introduced by the nondeterminism introducing device 17 is reflected in the hyper sequential program HSP,
It is recorded in the HSP file storage unit 14. The non-determinacy introducing device 17 will be described later.

【0083】図7は、超逐次プログラムに良い非決定性
に関する情報が導入された状態の一例を示す図である。
ここで、並行プログラムの各プロセスの実行単位を「セ
クション」と呼ぶと、図7はセクションS1とセクショ
ンS2とに分けられたプロセスP1と、セクションS3
とセクションS4とに分けられたプロセスP2につい
て、セクションS2とセクションS3の優先度を同じも
のとすることにより、非決定性が導入された状態を示
す。
FIG. 7 is a diagram showing an example of a state in which information on good nondeterminism is introduced into a hyper sequential program.
Here, when the execution unit of each process of the parallel program is called a “section”, FIG. 7 shows a process P1 divided into a section S1 and a section S2 and a section S3.
With respect to the process P2 divided into the section S4 and the section S4, the section S2 and the section S3 have the same priority, thereby showing a state in which nondeterminism is introduced.

【0084】より具体的には、実行単位毎に異なる優先
度を与えている逐次化ルールに対し所定の部分に良い非
決定性に関する情報を与える(例えば、優先度を同じに
したいプロセスをマウスで指定する)ことにより、当該
部分については優先度を同じとして、並行に実行可能に
する。図7の例では、S1〜S4の4つのセクションの
うち、「S2である" write1" とS3である" r
ead2" の優先度を同じにする」という情報(S2=
S3)を良い非決定性として導入している。すなわち、
優先度が同じプロセスは、どちらが先に実行されてもか
まわないので、非決定性を持つ。
More specifically, information about good nondeterminism is given to a predetermined part of a serialization rule that gives different priorities for each execution unit (for example, processes that want to have the same priority are designated with a mouse). By doing so, the portions have the same priority and can be executed in parallel. In the example of FIG. 7, of the four sections S1 to S4, "S2 is" write1 "and S3 is" r.
The information "ead2" has the same priority "(S2 =
S3) is introduced as a good nondeterminism. That is,
Processes with the same priority are non-deterministic because either process can be executed first.

【0085】次に、非決定性導入装置17により良い非
決定性に関する情報が導入された超逐次プログラム(部
分超逐次プログラムPHSP)は、ユーザからの指示に
従ってテスト実行装置15によりテスト実行が行われ、
デバッグ装置16によりテスト・デバッグが行われる。
この場合、部分超逐次プログラムPHSPの振る舞い
は、良い非決定性に関する情報の導入された部分につい
ては非決定的な振る舞いをするので、その振る舞い全て
についてテスト・デバッグを行うことが好ましい。この
ようにして、テスト・デバッグ及び良い非決定性に関す
る情報の導入を繰り返し、良い非決定性に関する情報を
徐々に付加していく。
Next, the hyper-sequential program (partial hyper-sequential program PHSP) in which the information on good non-determinism is introduced into the non-determinism introducing device 17 is test-executed by the test executing device 15 according to an instruction from the user,
Test / debugging is performed by the debug device 16.
In this case, the behavior of the partial hyper-sequential program PHSP behaves in a non-deterministic manner with respect to the portion in which the information regarding good non-determinism is introduced, and therefore it is preferable to test / debug all the behaviors. In this way, the test / debugging and the introduction of the information on the good nondeterminism are repeated, and the information on the good nondeterminism is gradually added.

【0086】良い非決定性に関する情報がインクリメン
タル(incremental) に導入されて得られた部分超逐次プ
ログラムPHSPは、ユーザからの指示により並行化装
置18に入力される。並行化装置18は、部分超逐次プ
ログラムPHSPのうち無害な非決定性部分を抽出し、
部分超逐次プログラムPHSP全体を並行化する。即
ち、並行化装置18は、導入された良い非決定性と無害
な非決定性に関してデフォルト逐次性を解除し、並行プ
ログラムCP(第2並行プログラム)としてファイルに
記録する。ここで、良い非決定性と無害な非決定性以外
はデフォルト逐次化で与えられた逐次性が並行プログラ
ムCPに反映されなければならない。ユーザは、この第
2並行プログラムを出力装置5によって見ることができ
るとともに、最終的なテスト・デバッグを行うことがで
きる。
The partial hyper-sequential program PHSP obtained by incrementally introducing information on good nondeterminism is input to the parallelization device 18 according to an instruction from the user. The parallelizer 18 extracts a harmless nondeterministic part of the partial hypersequential program PHSP,
Partial hyper sequential program The whole PHSP is parallelized. That is, the parallelization device 18 releases the default seriality with respect to the introduced good nondeterminism and harmless nondeterminism, and records it in the file as the parallel program CP (second parallel program). Here, except for good non-determinism and harmless non-determinism, the seriality given by default serialization must be reflected in the concurrent program CP. The user can see the second parallel program by the output device 5 and can perform final test / debug.

【0087】実施例1は、本発明の基本的な実施例を示
したが、以下、更に詳細な実施例を実施例を説明する。
但し、以下の実施例においては、実施例1と共通の部分
や相対応する部分については同一符号を付して説明を簡
略化するか又は省略し、相違点を中心に説明する。
Although the first embodiment has shown a basic embodiment of the present invention, a more detailed embodiment will be described below.
However, in the following embodiments, portions common to or corresponding to those of the first embodiment are designated by the same reference numerals to simplify or omit the description, and different points will be mainly described.

【0088】(実施例2)実施例2では、実施例1と同
様に、次のような並行プログラムを対象とする。並行プ
ログラムは複数のプロセスから構成される。並行プログ
ラムは、共有メモリ型のマルチプロセッサで実行され
る。各プロセス毎にプロセッサ(CPU)が割り当てら
れる。各プロセスの同期は、同期基本命令と共有メモリ
型で実現される。
(Embodiment 2) In Embodiment 2, as in Embodiment 1, the following parallel program is targeted. A concurrent program consists of multiple processes. A parallel program is executed by a shared memory type multiprocessor. A processor (CPU) is assigned to each process. The synchronization of each process is realized by a synchronization basic instruction and a shared memory type.

【0089】上記の並行プログラムに本発明を適用した
実施例を説明する。図8は、実施例2に係る並行プログ
ラム作成支援装置の概略構成を示すブロック図であり、
図9は、実施例2に係る並行プログラム作成方法の概略
手順を示すフローチャートである。図8が、図2と異な
る点は、セクション設定装置7を更に具備し、テスト実
行装置15とデバッグ装置16とを、具体的に、テスト
実行装置15、修正装置9、及び解析装置10とし、解
析装置10で解析された解析情報を記憶する解析情報記
憶部20を有する点である。解析装置10では、超逐次
プログラムを解析し、解析情報として後述する先行制約
を抽出する。他の構成部分は実施例1と同様であるの
で、説明を省略する。なお、図8には、並行化装置18
で、超逐次プログラムの並行化を行う際に参照される並
行化ルールを記憶する並行化ルール記憶部21を入れて
いる。
An embodiment in which the present invention is applied to the above parallel program will be described. FIG. 8 is a block diagram showing a schematic configuration of a parallel program creation support device according to the second embodiment.
FIG. 9 is a flowchart of a schematic procedure of the parallel program creating method according to the second embodiment. 8 is different from FIG. 2 in that it further includes a section setting device 7, and the test execution device 15 and the debug device 16 are specifically a test execution device 15, a correction device 9, and an analysis device 10. The point is that it has an analysis information storage unit 20 that stores the analysis information analyzed by the analysis device 10. The analysis device 10 analyzes the hyper-sequential program and extracts a preceding constraint described later as analysis information. Since the other components are the same as those in the first embodiment, the description thereof will be omitted. It should be noted that FIG.
Then, the parallelization rule storage unit 21 for storing the parallelization rule referred to when the hyperserial program is parallelized is provided.

【0090】セクション設定装置7は、第1並行プログ
ラムの各プロセスをいくつかのセクション(プログラム
単位)に分割する。
The section setting device 7 divides each process of the first parallel program into some sections (program units).

【0091】修正装置9は、テスト実行装置15による
テストの結果バグがあれば、修正を行う。
If there is a bug as a result of the test by the test execution device 15, the correction device 9 corrects it.

【0092】テスト実行装置15は、実施例1と同様
に、超逐次プログラムのテストを行う。
The test execution unit 15 tests the hyper-sequential program as in the first embodiment.

【0093】解析情報記憶部20は、解析装置10で解
析された情報を記憶する。
The analysis information storage section 20 stores the information analyzed by the analysis device 10.

【0094】実施例2の動作を図9のフローチャートを
参照して説明する。なお、図9において、図3のフロー
チャートと同一動作には同一の符号を付す。
The operation of the second embodiment will be described with reference to the flowchart of FIG. In FIG. 9, the same operations as those in the flowchart of FIG. 3 are designated by the same reference numerals.

【0095】(1) ステップA1:モデル化 対象の並行システムに対し、並行性を用いた自然なモデ
ル化を行う。また、並行システムの各プロセス構造を決
定する。更に、該各プロセス内を並行プログラム等を用
いたプログラミングにより、並行構造を有する並行プロ
グラムをソースプログラムとして記述する。このソース
プログラムには、バグが潜在的に存在する可能性があ
る。
(1) Step A1: Modeling Natural modeling using concurrency is performed on the target parallel system. Moreover, each process structure of the parallel system is determined. Further, a parallel program having a parallel structure is described as a source program by programming in each process using a parallel program or the like. This source program may have potential bugs.

【0096】(2) ステップB1:セクションの設定 セクション設定装置7により、設計者が第1並行プログ
ラムの各プロセスをいくつかのセクション(単位)に分
割する。ここで、第1並行プログラム中の同期命令は自
動的に単独のセクションとする。ここで、セクションは
プロセスの処理の単位であり、以下のステップでは、セ
クションを単位として、逐次化及び並行化を行う。この
場合において、設計者によるセクション設定がなくても
構わない。この場合は、同期命令で区切られる区間が自
動的にセクションになる。
(2) Step B1: Section Setting By the section setting device 7, the designer divides each process of the first concurrent program into some sections (units). Here, the synchronization instruction in the first concurrent program is automatically set as a single section. Here, the section is a unit of process processing, and in the following steps, serialization and parallelization are performed in units of sections. In this case, the designer does not need to set the section. In this case, the section delimited by the synchronization command automatically becomes a section.

【0097】セクションの設定は、プロセスのソースコ
ードを分割し、分割された各区間にセクションIDを設
定することで実現できる。ソースコード分割の一例とし
ては、図10に示すように、区切りポイントを挿入し、
区切りポイントから次の区切りポイントまでの処理をセ
クションとする方法がある。ここで、上記のように同期
命令の前後には自動的に区切りポイントが挿入される。
The section can be set by dividing the source code of the process and setting the section ID in each of the divided sections. As an example of source code division, as shown in FIG.
There is a method in which the processing from a break point to the next break point is a section. Here, as described above, the break points are automatically inserted before and after the synchronization command.

【0098】(3) ステップA2:逐次化 逐次化ルールに基づき、逐次化装置により、第1並行プ
ログラムを逐次化する。逐次化ルールの一例としては、
プロセスに優先度を導入する方式がある。この優先度に
基づいて実行すれば、実行時の非決定性は存在しないの
で、超逐次プログラムとみなすことができる。このよう
にして並行構造に関するプログラム情報を持ちながら逐
次化されたプログラムを超逐次プログラムとする。逐次
化方式の一例としては、「プロセスの優先度」に基づく
方式がある。この方式によれば、プロセスに予め固定の
優先度を設定し、優先度が高いプロセスのセクションの
実行を優先することにより、非決定性のない逐次的な実
行順序が得られる。別の逐次化方式の例としては、図1
1に示すような「同期命令のwait側の実行を優先する方
式(逐次化ルール1)」や「同期命令のsend側の実行を
優先する方式(逐次ルール2)」等がある。ここで、超
逐次プログラムは、3種のプログラム情報、すなわちセ
クション情報と、プログラム構造情報と、逐次化情報と
から構成される。セクション情報は、セクションの識別
子(ID)とセクションの属するソースコードの情報で
ある。プログラム構造情報は、オリジナルの並行プログ
ラムにおける、プロセス毎のセクションの実行順序情
報、更に、異なるプロセスのセクション間のデータ依存
関係の情報である。逐次化情報は、逐次化によるグロー
バルなセクションの実行順序情報であり、同時によい並
行性の関する情報も持つ。一例としては、並行システム
のモデル化手法であるペトリネットで逐次化情報を表現
する方法がある。
(3) Step A2: Serialization Based on the serialization rule, the serialization device serializes the first concurrent program. As an example of the serialization rule,
There is a method to introduce priority to the process. If executed based on this priority, since there is no nondeterminism at the time of execution, it can be regarded as a hyper-sequential program. A program serialized while having program information about the parallel structure in this way is called a hyper-sequential program. As an example of the serialization method, there is a method based on "process priority". According to this method, a fixed priority is set in advance for a process, and priority is given to execution of a section of a process having a high priority, whereby a sequential execution order without nondeterminism can be obtained. As an example of another serialization method, FIG.
As shown in FIG. 1, there are a "method of giving priority to execution of the synchronous instruction on the wait side (serialization rule 1)" and a "method of giving priority to execution of the synchronous instruction on the send side (serial rule 2)". Here, the hyper-sequential program is composed of three types of program information, that is, section information, program structure information, and serialization information. The section information is information on the section identifier (ID) and the source code to which the section belongs. The program structure information is information on the execution order of sections for each process in the original concurrent program, and information on data dependence between sections of different processes. The serialization information is global section execution order information by serialization, and at the same time, has information on good concurrency. As an example, there is a method of expressing serialization information by a Petri net, which is a modeling method of a parallel system.

【0099】(4) ステップA3:超逐次プログラム
に対するテスト・デバッグ 超逐次プログラムに対して、テスト実行装置15でテス
トを行い、バグがある場合は、修正装置9でデバッグ/
修正を行う。また、プログラムの修正が同期命令等の並
行構造の変更にも及ぶ場合は、ステップA1に戻り、プ
ログラム作成装置8でモデル化を行い、再度セクション
の設定及び逐次化を行う。ここで、プログラム6は逐次
化されているので、テスト・デバッグは逐次プログラム
なみに容易になる。
(4) Step A3: Test / Debug of Hyper Sequential Program The hyper serial program is tested by the test execution unit 15, and if there is a bug, debug / correction is performed by the correction unit 9.
Make corrections. Further, when the modification of the program extends to the change of the parallel structure such as the synchronous instruction, the process returns to step A1, the modeling is performed by the program creating device 8, and the section setting and the serialization are performed again. Here, since the program 6 is serialized, test / debug becomes as easy as a sequential program.

【0100】(5) ステップA4:超逐次プログラム
に対する良い非決定性の導入 非決定性導入装置17により、出力装置5に超逐次プロ
グラムの構造が示される。設計者はこの構造を見ながら
非決定性導入装置17により良い非決定性による並行性
を明示的に導入できる。この時、解析装置10により抽
出された超逐次プログラムのプログラム情報により、設
計者による良い非決定性の導入を支援する。良い非決定
性の導入の必要がなければ、ステップB2に進む。良い
非決定性の導入方式として、例えば、超逐次プログラム
の逐次化情報がペトリネットで表現されている場合に
は、プログラム構造を保存する範囲でのペトリネットの
書換によって良い非決定性を導入する。
(5) Step A4: Introduction of Good Nondeterminism to Hypersequential Program The nondeterminism introducing device 17 shows the structure of the hypersequential program on the output device 5. The designer can explicitly introduce good nondeterministic concurrency into the nondeterministic introducing device 17 while viewing this structure. At this time, the program information of the hyper-sequential program extracted by the analysis device 10 assists the designer in introducing good nondeterminism. If it is not necessary to introduce good nondeterminism, the process proceeds to step B2. As a method of introducing good nondeterminism, for example, when the serialization information of the hyper-sequential program is represented by a Petri net, the good nondeterminism is introduced by rewriting the Petri net within the range in which the program structure is preserved.

【0101】(6) ステップA5:テスト・デバッグ 良い非決定性が導入された超逐次プログラムに対して、
ステップA3と同様に、テスト実行装置15でテストを
行い、バグがある場合は、修正装置9でテスト・デバッ
グを行う。また、プログラムの修正が同期命令等の並行
構造の変更にも及ぶ場合は、ステップA1に戻り、プロ
グラム作成装置で修正を行い、再度セクションの設定及
び逐次化を行う。ここで、プログラム6で並行化が導入
された部分に関しては、並行に実行を行う。この場合に
おいて、超逐次プログラムの逐次化情報がペトリネット
で表現されている場合には、ペトリネットのシミュレー
タを用いて、トークン(token) のあるプレースに対応す
るセクションを実行することで、超逐次プログラムのテ
スト実行が実現できる。
(6) Step A5: Test / Debug For a hyper sequential program in which good nondeterminism is introduced,
Similar to step A3, the test execution device 15 performs a test, and if there is a bug, the correction device 9 performs test / debug. Further, when the modification of the program extends to the modification of the parallel structure such as the synchronous instruction, the process returns to step A1, the modification is performed by the program creating device, and the section setting and the serialization are performed again. Here, with respect to the part in which the parallelization is introduced in the program 6, the parallel execution is performed. In this case, if the serialization information of the hyper-sequential program is represented by a Petri net, by executing the section corresponding to the place with the token using the Petri net simulator, the hyper-sequential The test execution of the program can be realized.

【0102】(7) ステップA6:部分超逐次プログ
ラムに対する良い非決定性の導入・拡大 ステップA5でテスト・デバッグが行われた超逐次プロ
グラムに対して、良い非決定性に関する情報を追加す
る。ステップA5〜ステップA6を所定の回数繰り返
し、良い非決定性を徐々に拡大していく。更に良い非決
定性を導入する必要があれば、ステップA5と同様に非
決定性導入装置17で並行性を追加し、ステップA6に
戻る。必要がなければ、ステップB2に進む。
(7) Step A6: Introduction / Expansion of Good Nondeterminism to Partial Hyper-Sequential Program Information about good non-determinism is added to the hyper-sequential program tested and debugged in Step A5. Steps A5 to A6 are repeated a predetermined number of times to gradually expand the good nondeterminism. If it is necessary to introduce better nondeterminism, the nondeterminism introducing device 17 adds parallelism as in step A5, and the process returns to step A6. If there is no need, go to step B2.

【0103】(8) ステップB2:自動並行化 設計者による良い非決定性の導入が終わった超逐次プロ
グラムに対して、解析装置10により抽出された超逐次
プログラムの解析情報12により、並行可能な部分を自
動抽出し、並行化装置18で並行化ルールを用いて超逐
次プログラムの並行性を自動拡大する。並行化ルール
は、例えば、以下のようになっている。プログラム情報
から、解析装置10によってデータ依存関係及び制御依
存関係に基づく先行制約を抽出し、先行制約のないセク
ションに関しては並行化できる。この並行化処理は、予
め定められた並行化ルールを適用することにより行うこ
とができる。並行化ルールの一例としては、図12に示
すようなペトリネットによる逐次化情報の書換ルールが
ある。データ依存関係及び制御依存関係に関しては、公
知である。
(8) Step B2: Automatic parallelization For the hyper-sequential program for which good nondeterminism has been introduced by the designer, the parts that can be parallelized by the analysis information 12 of the hyper-sequential program extracted by the analyzer 10. Is automatically extracted, and the parallelization device 18 automatically expands the parallelism of the hyper-sequential program using the parallelization rule. The parallelization rule is as follows, for example. From the program information, the analysis apparatus 10 can extract the preceding constraint based on the data dependency and the control dependency, and can parallelize the sections having no preceding constraint. This parallelization process can be performed by applying a predetermined parallelization rule. As an example of the parallelization rule, there is a serialization information rewriting rule by a Petri net as shown in FIG. The data dependency and the control dependency are known.

【0104】(9) ステップB3:並行プログラムの
作成 並行化装置18において、自動的に並行性を拡大した超
逐次プログラムに対して、超逐次プログラムのプログラ
ム情報をソースコードに反映させた並行プログラム15
を生成する。
(9) Step B3: Creation of Concurrent Program In the parallelizer 18, a parallel program 15 in which the program information of the hyper sequential program is reflected in the source code for the hyper sequential program whose parallelism is automatically expanded
Generate

【0105】通常、逐次プログラムに比べて、並行プロ
グラムのテスト・デバッグは非常に困難な作業である。
これは、並行性によるプログラムの非決定により、ある
タイミングによっては、プログラムが設計者の意図しな
い挙動を示すからである。並行プログラムのテスト・デ
バッグでは、設計者の意図しない並行性(悪い非決定
性)によるバグを1つ1つテストで発見して取り除いて
いる。しかし、この方法では、バグを完全に取り除くの
は非常に困難であり、更に労力を要する。
In general, test / debug of a parallel program is a very difficult task as compared with a sequential program.
This is because, due to the non-determination of the program due to concurrency, the program may behave unintended by the designer at some timing. In testing / debugging a concurrent program, bugs due to concurrency (bad non-determinism) that the designer does not intend are found and removed one by one in the test. However, with this method, it is very difficult to completely eliminate the bug, and further labor is required.

【0106】本発明の超逐次プログラミングでは、並行
プログラムをまず逐次化し、それに対して設計者が意図
する並行性を徐々に導入し、最終的に自動的に並行化で
きる部分を並行化し、並行プログラムを復元する。
In the hyper-sequential programming of the present invention, a concurrent program is first serialized, the concurrency intended by the designer is gradually introduced, and finally the part that can be automatically parallelized is parallelized. To restore.

【0107】すなわち、本発明の超逐次プログラミング
は、並行プログラムから悪い非決定性を除くのではな
く、逐次プログラムに良い非決定性を導入する。このよ
うに、超逐次プログラミングでは、逐次プログラムから
ボトムアップ的に並行プログラムを作成するので、予期
せぬタイミングで発生するバグが入る余地がなく、非常
に信頼性の高いプログラムを作成することができる。ま
た、テスト・デバッグがはるかに容易になる。逐次プロ
グラミングでは、逐次化による性能劣化等が懸念される
が、スーパーコンピュータ等の分野におけるFORTR
AN等の逐次プログラムの自動並行化技術が利用できる
ので、多くの場合では実用上問題がない。実施例2の基
本的な構成及び動作を説明したが、以下に、実施例2の
具体例を示す。 (a) 第1具体例 図13は、並行プログラムの例を示す。ここで、P1と
P2は並行に動くプロセスである。また、P1とP2
は、共有メモリMをアクセスしている。
That is, the hyper-sequential programming of the present invention does not remove bad non-determinism from a concurrent program, but introduces good non-determinism into a serial program. As described above, in super-sequential programming, a concurrent program is created from a sequential program in a bottom-up manner, so there is no room for bugs that occur at unexpected timings, and a very reliable program can be created. . It also makes testing and debugging much easier. In serial programming, performance deterioration due to serialization is a concern, but FORTR in the field of supercomputers etc.
Since automatic parallelization technology for sequential programs such as AN can be used, there are practically no problems in many cases. Although the basic configuration and operation of the second embodiment have been described, a specific example of the second embodiment will be shown below. (A) First Specific Example FIG. 13 shows an example of a parallel program. Here, P1 and P2 are processes that move in parallel. Also, P1 and P2
Is accessing the shared memory M.

【0108】(1) ステップA1:モデル化 並行プログラムPを図14のように記述する。(1) Step A1: Modeling The parallel program P is described as shown in FIG.

【0109】(2) ステップB1:セクションの設定 この場合は、各命令が1つのセクションを形成すると考
える。簡単のため、セクションIDを命令そのものとす
る。
(2) Step B1: Setting of Section In this case, it is considered that each instruction forms one section. For simplicity, the section ID is the command itself.

【0110】(3) ステップA2:逐次化 プロセス優先度を導入することによる逐次化を行う。具
体的には、P1>>P2(P1はP2より優先する)と
する。この時、逐次化されたセクションの実行順序は、
以下のようになる。 init1→read1→write1→read2→
write2 逐次化により生成された超逐次プログラムは、それぞれ
図15に示すように、セクション情報、プログラム構造
情報、超逐次化情報から構成される。ここで、逐次化情
報は、上記の実行順序をペトリネットで表現したもので
ある。
(3) Step A2: Serialization The serialization is performed by introducing the process priority. Specifically, P1 >> P2 (P1 has priority over P2). At this time, the execution order of the serialized sections is
It looks like this: init1 → read1 → write1 → read2 →
The hyper2 serial program generated by the write2 serialization is composed of section information, program structure information, and hyperserialization information, as shown in FIG. Here, the serialization information is a representation of the above execution order by a Petri net.

【0111】(4) ステップA3:超逐次プログラム
に対するテスト・デバッグ 超逐次プログラムを実行し、バグがあればセクションの
各セクションのソースコード、或いは、オリジナルの並
行プログラムを修正する。ここでは、バグはなかったと
する。
(4) Step A3: Test / Debug of Hyper Sequential Program The hyper sequential program is executed, and if there is a bug, the source code of each section of the section or the original concurrent program is corrected. Here, it is assumed that there is no bug.

【0112】(5) ステップA4:超逐次プログラム
に対する良い非決定性の導入 逐次化情報のペトリネットを表示装置で表示し、逐次関
係を切断することにより、並行化を行う。ここでは、w
rite1とread2の逐次関係を切断することにす
る(図16(a))。write1とread2はプロ
グラム構造情報での実行順序関係はないので、切断可能
である。ここで、どの逐次関係を切断すべきかに関する
ガイダンス情報を後述する解析情報20に基づき提供す
ることもできる。
(5) Step A4: Introduction of Good Nondeterminism to Hyper-Sequential Program A Petri net of serialization information is displayed on a display device, and the serial relationship is cut to perform parallelization. Here, w
The sequential relationship between write1 and read2 is cut (FIG. 16 (a)). Since write1 and read2 have no execution order relationship in the program structure information, they can be disconnected. Here, guidance information regarding which sequential relationship should be disconnected can be provided based on analysis information 20 described later.

【0113】(6) ステップA5:テスト・デバッグ 並行性の導入された超逐次プログラムをテスト実行す
る。ここでは、 init1→read1→write1→read2→
write2 init1→read1→read2→write1→
write2 のような実行が可能である。実行の結果、バグがあれば
修正する。ここでは、バグはなかったとする。
(6) Step A5: Test / Debug The hyper-sequential program in which concurrency is introduced is test-executed. Here, init1 → read1 → write1 → read2 →
write2 init1 → read1 → read2 → write1 →
Execution like write2 is possible. If there is a bug as a result of execution, fix it. Here, it is assumed that there is no bug.

【0114】(7) ステップB2:自動並行化 超逐次プログラムの逐次化情報とプログラム情報のデー
タ依存関係から、解析情報20により、セクション間の
先行制約が得られる。この先行制約が解析情報20であ
る。先行制約とは、データ依存関係にあるセクション間
の実行順序の制約である。すなわち、データ依存関係に
あるセクション間は、実行順序によって計算結果が変わ
り得るので、逐次化情報で定められた順序を保持する必
要がある。ここでの先行制約は以下の3つである。 init1→read2 init1→write2 read1→write2 例えば、P1がread1で読み込む値は、P2のwr
ite2がread1の前で起こるか後で起こるかによ
って影響を受ける。逐次情報では、read1→wri
te2であるので、これが先行制約となる。以上の先行
制約がないセクションに関しては、並行化が可能であ
り、並行化ルールにより自動並行化できる。ここでは、
read1とread2には先行制約がないため、並行
化ルール1(図12)を適用できた(図16(b))。
(7) Step B2: Automatic parallelization From the data dependency relationship between the serialization information of the hyper-sequential program and the program information, the analysis information 20 provides the preceding constraint between sections. This precedence constraint is the analysis information 20. The preceding constraint is a constraint on the execution order between the sections having a data dependency relationship. That is, since the calculation result may change depending on the execution order between the sections having the data dependence, it is necessary to maintain the order defined by the serialization information. The preceding constraints here are the following three. init1 → read2 init1 → write2 read1 → write2 For example, the value read by P1 as read1 is wr of P2.
Affected by whether ite2 occurs before or after read1. For sequential information, read1 → wri
Since it is te2, this becomes the preceding constraint. The section without the preceding constraint can be parallelized and can be automatically parallelized by the parallelization rule. here,
Since read1 and read2 have no preceding constraint, parallelization rule 1 (FIG. 12) could be applied (FIG. 16 (b)).

【0115】(8) ステップB3:並行プログラムの
作成 自動並行化を行った逐次プログラミングから、並行プロ
グラムのソースコードを生成する。この例では、図10
における逐次化情報1と逐次化情報2を実現する同期命
令(send、wait)をソースコードに埋め込む。
その他の逐次化情報は、オリジナルの並行プログラムが
持っている逐次化情報(実行順序)である。変換された
プログラムは図17のようになる。この並行プログラム
は、図13のような構造の並列計算機上で実行される。 (b) 第2具体例 第2具体例では、並行プログラムが同期命令、ループ構
造、条件分岐を持つ場合の超逐次プログラミングの手順
を示す。
(8) Step B3: Creation of Concurrent Program Source code of the parallel program is generated from the sequential programming with automatic parallelization. In this example, FIG.
The synchronization instructions (send, wait) for realizing the serialization information 1 and the serialization information 2 in step 1 are embedded in the source code.
The other serialization information is serialization information (execution order) held by the original parallel program. The converted program is as shown in FIG. This parallel program is executed on the parallel computer having the structure shown in FIG. (B) Second Concrete Example A second concrete example shows a procedure of hyper-sequential programming when a concurrent program has a synchronous instruction, a loop structure, and a conditional branch.

【0116】(1) ステップA1:モデル化及びステ
ップB2:セクションの設定は省略し、図18のような
セクションの実行順序(プログラム構造情報)を持つ並
行プログラムが与えられたとする。ここで、同期命令
(send、wait)とデータ依存関係(S13とS
22)、ループ構造及び条件分岐があることに注目され
たい。
(1) Step A1: Modeling and step B2: Section setting is omitted, and a parallel program having a section execution order (program structure information) as shown in FIG. 18 is given. Here, the synchronization command (send, wait) and the data dependency (S13 and S)
22), there is a loop structure and conditional branching.

【0117】(2) ステップA2:逐次化 プロセスに優先度(P1がP2より優先度が高い;すな
わち、P1>>P2)を導入することによる逐次化を行
う。逐次化の結果は図19のようになる。すなわち、超
逐次プログラムは、それぞれ図18及び図19のプログ
ラム構造情報と逐次化情報を持つ(セクション情報は省
略)。ここで、同期命令によって実行されるプロセスが
切り替わっていることに注目されたい。例えば、wai
t命令によって、P1のS12の実行の後にP2のS2
1が実行されている。また、ループ及び分岐構造もペト
リネットで表現されている。
(2) Step A2: Serialization is performed by introducing a priority (P1 has a higher priority than P2; that is, P1 >> P2) into the serialization process. The result of serialization is shown in FIG. That is, the hyper-sequential program has the program structure information and the serialization information of FIGS. 18 and 19, respectively (section information is omitted). It should be noted here that the process executed by the synchronization instruction is switched. For example, wai
By the t instruction, after execution of S12 of P1, S2 of P2
1 is being executed. The loop and branch structures are also represented by Petri nets.

【0118】(3) ステップA3:超逐次プログラム
に対するテスト・デバッグ 超逐次プログラムを実行し、バグがあればセクションの
各セクションのソースコード、或いは、オリジナルの並
行プログラムを修正する。ここでは、バグはなかったと
する。
(3) Step A3: Test / Debug of Hyper Sequential Program The hyper sequential program is executed, and if there is a bug, the source code of each section of the section or the original concurrent program is corrected. Here, it is assumed that there is no bug.

【0119】(4) ステップA4:超逐次プログラム
に対する良い非決定性の導入 逐次化情報のペトリネットを表示装置で表示し、逐次関
係を切断することにより、並行化を行う。この例では、
明示的には、良い非決定性を入れなかったとする。
(4) Step A4: Introduction of Good Nondeterminism to Hyper-Sequential Program A Petri net of serialization information is displayed on a display device, and the serial relationship is broken to perform parallelization. In this example,
Suppose we didn't explicitly include good nondeterminism.

【0120】(5) ステップB2:自動並行化 超逐次プログラムの逐次化情報とプログラム情報のデー
タ依存関係から、セクション間の先行制約が得られる。
ここでは、先行制約としては、S22→S13だけであ
る。ここで、ループにおいては、先行関係にもループが
生じることがある。ここでは、1回のループにおける先
行関係のみに注目する。先行制約がないセクションに関
しては、並行化が可能であり、並行化ルールにより自動
並行化できる。この例では、先行関係はS22→S13
だけであり、図12の並行化ルール1と並行化ルール2
により、最終的に図20が生成できる。
(5) Step B2: Automatic parallelization The preceding constraint between sections can be obtained from the data dependency relationship between the serialization information of the hyper sequential program and the program information.
Here, the only prior constraint is S22 → S13. Here, in the loop, a loop may occur in the preceding relationship. Here, attention is paid only to the preceding relationship in one loop. A section without a preceding constraint can be parallelized and can be automatically parallelized by a parallelization rule. In this example, the preceding relationship is S22 → S13.
Only the parallelization rule 1 and parallelization rule 2 in FIG.
Thus, FIG. 20 can be finally generated.

【0121】(6) ステップB3:並行プログラムの
変換 第1具体例と同様に、残った逐次化情報に関して同期命
令を埋め込むことによって並行プログラムが生成でき
る。
(6) Step B3: Conversion of Parallel Program As in the first specific example, a parallel program can be generated by embedding a synchronization instruction in the remaining serialization information.

【0122】(実施例3)図21は実施例3に係る並行
プログラム作成支援装置の概略構成を示す図であり、図
22は、本実施例に係る並行プログラム作成方法の概略
手順を示すフローチャートである。
(Third Embodiment) FIG. 21 is a diagram showing a schematic configuration of a parallel program creation support apparatus according to a third embodiment, and FIG. 22 is a flow chart showing a schematic procedure of a parallel program creation method according to the present embodiment. is there.

【0123】本実施例では、テスト実行装置401とテ
ストケース記憶部402によって逐次化装置12が構成
される。この逐次化装置12では、今までの実施例と異
なり特別に逐次化ルールはなく、逐次化はランダムに行
われる。すなわち、ランダムに実行したときのログを超
逐次プログラムとみなす。以下、本実施例を具体的に説
明する。
In this embodiment, the test execution device 401 and the test case storage unit 402 constitute the serialization device 12. Unlike the above-described embodiments, the serialization device 12 has no special serialization rule, and the serialization is performed randomly. That is, the log when randomly executed is regarded as a hyper sequential program. Hereinafter, this embodiment will be specifically described.

【0124】本実施例における並行プログラムの作成
は、以下のような手順によって実現される。ここで、第
1並行プログラムとして全く独立に動く2つのプロセス
P1とP2から構成される簡単な並行プログラムを考え
る。
Creation of a parallel program in this embodiment is realized by the following procedure. Here, consider a simple parallel program as the first parallel program, which is composed of two processes P1 and P2 that operate independently.

【0125】(1) ステップA1:モデル化 対象の並行システムに対し、並行性を用いた自然なモデ
ル化を行う。また、各プロセス構造を決定する。更に、
該プロセス内を並行プログラム等を用いたプログラミン
グにより、並行構造を有する並行プログラムをソースプ
ログラムとして記述する。このソースプログラムには、
バグが潜在的に存在する可能性がある。ここでは、2つ
のプロセスP1とP2を図23に示すようにプログラミ
ングする。
(1) Step A1: Modeling Natural modeling using concurrency is performed on the target parallel system. Also, each process structure is determined. Furthermore,
A parallel program having a parallel structure is described as a source program by programming in the process using a parallel program or the like. This source program contains
Potential bugs may exist. Here, two processes P1 and P2 are programmed as shown in FIG.

【0126】(2) ステップC1:テスト テスト実行装置401により、テストケース記憶部40
2からテストケースを引き出し、CPファイル記憶部1
1からの第1並行プログラムを実行し、実行結果を出力
装置5に表示してランダムにテストを行う。ここでは、
実行ログが、 log1=job11→job12→job21→jo
b22 であったとする。
(2) Step C1: Test The test execution unit 401 causes the test case storage unit 40 to
CP file storage unit 1
The first concurrent program from 1 is executed, the execution result is displayed on the output device 5, and the test is performed at random. here,
The execution log is log1 = job11 → job12 → job21 → job
It is assumed that it is b22.

【0127】(3) ステップC2:バグ判定 ステップC1のテストの結果、バグがなければステップ
C4に進み、バグがあれば、その実行ログを実行ログ記
憶部403に保存してステップC3に進む。ここで、も
しバグがあればステップC3に進むが、ここではバグが
なかったとしてステップC4に進む。
(3) Step C2: Bug Judgment As a result of the test in Step C1, if there is no bug, the procedure proceeds to Step C4. If there is a bug, the execution log is stored in the execution log storage unit 403 and the procedure proceeds to Step C3. Here, if there is a bug, the process proceeds to step C3, but here, since there is no bug, the process proceeds to step C4.

【0128】(4) ステップC3:テスト・デバッグ デバッグ装置16により、実行ログ記憶部403に保存
された実行ログに基づくバグの発見を出力装置5を用い
て行い、CPファイル記憶部11に格納されている第1
並行プログラムを修正してバグを除去する。テスト・デ
バッグが完了したら、ステップC1に戻る。
(4) Step C3: Test / Debug The debug device 16 uses the output device 5 to find a bug based on the execution log stored in the execution log storage unit 403 and stores it in the CP file storage unit 11. The first
Fix concurrent programs and eliminate bugs. When the test / debug is completed, the process returns to step C1.

【0129】(5) ステップC4:実行ログの蓄積 ステップC1のテストの結果、ステップC2でバグがな
いと判定されれば、実行ログlog1を実行ログデータ
ベース404に蓄積する。実行ログは、超逐次的な実行
系列であり、超逐次プログラムの特殊な形態とみなすこ
とができる。
(5) Step C4: Accumulation of Execution Log If the result of the test in Step C1 is that there is no bug in Step C2, the execution log log1 is accumulated in the execution log database 404. The execution log is a hyper sequential execution sequence, and can be regarded as a special form of the hyper sequential program.

【0130】(6) ステップC5:残テストケースの
有無判定 テストケース記憶部402にテストケースが残っている
かどうかを判定し、残っていればステップC1に戻って
テストを続行し、テストケースが残っていなければステ
ップA7に進む。本ステップでは、別のテストケースも
試みるためにステップC1に戻ってテストを続行する。
この2回目のテストで、次に示す実行ログlog2が実
行ログデータベース404に保存されたとする。 log2=job11→job21→job12→jo
b22 (7) ステップA7:並行プログラムの生成 CPファイル記憶部11に格納されている第1並行プロ
グラムと実行ログデータベース404に格納されている
実行ログから、テストで通過したパスだけしか実行しな
いような並行プログラムを並行化装置18により生成
し、第2CPファイル記憶部19に格納する。
(6) Step C5: Judgment of Presence of Remaining Test Cases It is judged whether or not there are any test cases in the test case storage unit 402, and if any, the process returns to step C1 to continue the test, and the test cases remain. If not, the process proceeds to step A7. In this step, the test is continued by returning to step C1 in order to try another test case.
In the second test, it is assumed that the following execution log log2 is saved in the execution log database 404. log2 = job11 → job21 → job12 → job
b22 (7) Step A7: Generation of Concurrent Program From the first concurrent program stored in the CP file storage unit 11 and the execution log stored in the execution log database 404, only the paths passed in the test are executed. The parallel program is generated by the parallelization device 18 and stored in the second CP file storage unit 19.

【0131】本ステップでは、実行ログデータベース4
04に保存された2つの実行ログlog1、log2だ
けを実行するような並行プログラムを以下の手順で生成
する。 (A)全ての実行ログをマージしてグローバル状態遷移
システムGTS(Global Transition System)を生成する
(図24(a))。 (B)GTSを2つのプロセスP1、P2に射影する。
この時、相手のプロセスの挙動を認識し、同期を取るた
めの同期命令(job11−ok、job21−ok、
job12−ok、job22−ok)が埋め込まれ
る。生成されたプログラムをP1′、P2′とする(図
24(b))。 (C)P1′、P2′の同期命令には冗長性があるた
め、この冗長性を除去する。この冗長性を除去した後の
最終的なプロセスをP1″、P2″とする(図24
(c))。
In this step, the execution log database 4
A parallel program that executes only the two execution logs log1 and log2 saved in 04 is generated by the following procedure. (A) All execution logs are merged to generate a global state transition system GTS (Global Transition System) (FIG. 24 (a)). (B) Project GTS into two processes P1 and P2.
At this time, the synchronization command (job11-ok, job21-ok, for recognizing the behavior of the process of the other party and synchronizing)
job12-ok, job22-ok) are embedded. The generated programs are designated as P1 'and P2' (Fig. 24 (b)). (C) Since the synchronous instructions of P1 'and P2' have redundancy, this redundancy is removed. The final process after removing this redundancy is P1 ″ and P2 ″ (FIG. 24).
(C)).

【0132】上記の手順により、2つのプロセスP
1″、P2″から構成される並行プログラムCP″が生
成できる。この並行プログラムCP″では、テストで正
しく動くことを確認した実行log1、log2は可能
だが、テストしてないケース、例えば log3=job21→job11→job12→jo
b22 は実行されることはない。
According to the above procedure, the two processes P
A parallel program CP ″ composed of 1 ″ and P2 ″ can be generated. With this parallel program CP ″, execution log1 and log2 that are confirmed to work correctly in the test are possible, but a case without test, for example, log3 = job21 → job11 → job12 → job
b22 is never executed.

【0133】上記のように、テストしてないケースは実
行されることはないので、非常に安全なプログラムであ
るといえる。
As described above, a case that has not been tested is never executed, so it can be said that this is a very safe program.

【0134】実施例3によれば、逐次プログラミングと
同程度の困難さで並行プログラムのプログラミングがで
き、ユーザはテストを効率的にできるばかりではなく、
テストしない部分は動かないので、非常に高い信頼性が
達成できる副次的効果も期待できる。
According to the third embodiment, programming of a parallel program can be performed with the same degree of difficulty as sequential programming, so that the user can not only test efficiently but also
Since the part that is not tested does not move, a side effect that can achieve extremely high reliability can be expected.

【0135】(実施例4)図25は、実施例4における
並行プログラム作成方法の概略手順を示すフローチャー
トである。
(Fourth Embodiment) FIG. 25 is a flow chart showing a schematic procedure of a parallel program creating method in the fourth embodiment.

【0136】(1) ステップA1:モデル化 (2) ステップA2:逐次化 (3) ステップA3:超逐次プログラムのテスト・デ
バッグ 以上のステップA1〜A3は、図3に示したステップA
1〜A3と全く同様であるため、説明を省略する。
(1) Step A1: Modeling (2) Step A2: Serialization (3) Step A3: Test / debug of hyper-sequential program The above steps A1 to A3 are the steps A shown in FIG.
The description is omitted because it is exactly the same as 1 to A3.

【0137】(4) ステップA4:超逐次プログラム
に対する良い非決定性部分の導入 ステップA3でテスト・デバッグが行われた超逐次プロ
グラムに対して、ユーザが非決定性導入装置17によ
り、非決定的に動作する部分(これを「良い非決定性部
分」という)を指定する。非決定性導入装置17により
指定された良い非決定性部分は、超逐次プログラムに良
い非決定性に関する情報(並行性に関する情報)として
反映される。これにより超逐次プログラムは、良い非決
定性部分を持つ部分超逐次プログラムとなる。良い非決
定性部分の指定方法は後述する。
(4) Step A4: Introducing a good non-deterministic portion into the hyper-sequential program The user operates the non-deterministic introduction device 17 in a non-deterministic manner with respect to the hyper-sequential program tested and debugged in step A3. Specify the part (this is called the "good nondeterministic part"). The good non-deterministic part designated by the non-deterministic introduction device 17 is reflected in the hyper-sequential program as information about the good non-determinism (information about concurrency). This makes the hypersequential program a partial hypersequential program with good nondeterministic parts. A method of specifying a good non-deterministic part will be described later.

【0138】(5) ステップA5:部分超逐次プログ
ラムのテスト・デバッグ ステップA4で得られた部分超逐次プログラムに対し
て、テスト・デバッグを行う。すなわち、ステップA4
で良い非決定性部分が導入された部分超逐次プログラム
をテスト・デバッグする。ここでは、部分超逐次プログ
ラムを実行形式に変換して実行する際に、ステップA4
において導入された良い非決定性部分のみが並行構造の
実行形式に、導入されなかった部分は元の逐次構造のま
ま実行形式に変換され、実行される。そして、この実行
結果に基づいて、超逐次プログラムに対してテスト・デ
バッグする。変換された実行形式のプログラムが正しく
動作しない場合は、変換前の逐次プログラムにおいて導
入した良い非決定性部分は本来、非決定的に動作させる
べき部分ではないとみなして、並行化の解除を行う。 (6) ステップA6:超逐次プログラムにおける良い
非決定性部分の拡大 ステップA5でテスト・デバッグが行われた部分超逐次
プログラムに対して、良い非決定性に関する情報を追加
する。ステップA4〜ステップA6を所定の回数繰り返
し、良い非決定性部分を徐々に拡大していく。
(5) Step A5: Test / Debug of Partial Hyper-Sequential Program The partial hyper-sequential program obtained in Step A4 is tested / debugged. That is, step A4
Test and debug a partial hyper-sequential program in which a good non-deterministic part is introduced. Here, when the partial hyper-sequential program is converted into the execution format and executed, step A4
Only the good non-deterministic part introduced in (1) is converted into the execution form of the parallel structure, and the part not introduced is converted into the execution form with the original sequential structure and executed. Then, based on this execution result, the hyper sequential program is tested and debugged. When the converted executable program does not operate properly, the good nondeterministic part introduced in the serial program before conversion is considered to be the part that should not be operated nondeterministically, and the parallelization is released. (6) Step A6: Expansion of Good Nondeterministic Part in Hyper Sequential Program Information about good nondeterminism is added to the partial hypersequential program that has been tested and debugged in step A5. Steps A4 to A6 are repeated a predetermined number of times to gradually expand the good nondeterministic portion.

【0139】(7) ステップA7:並行化コンパイル メタレベルのデフォルト逐次性で管理されている部分超
逐次プログラムのデフォルト逐次性を解除する(例え
ば、ソースプログラム自体に逐次情報及び並行情報を直
接埋め込む)。また、この時、部分超逐次プログラムの
うちの良い非決定性に関する情報が導入されなかった部
分について、可能な限り、無害な非決定性部分を抽出
し、その部分を並行化することを試みて、部分超逐次プ
ログラムの並行性を高める。例えば、良い非決定性に関
する情報が導入されなかった部分について各プロセス間
の依存関係を解析し、依存関係がないと解析された部分
に対応するソースプログラムの部分の逐次性を解除す
る。なお、無害な非決定性部分の抽出は、ステップA2
で逐次化する際に解析された並行情報を参照することに
より行われる。
(7) Step A7: Parallelization Compile The default seriality of the partial hyper sequential program managed by the meta-level default seriality is canceled (for example, serial information and parallel information are directly embedded in the source program itself). At this time, for the part of the partial hyper-sequential program where information about good nondeterminism was not introduced, the harmless nondeterministic part was extracted as much as possible, and the part was attempted to be parallelized. Increase the parallelism of hyper sequential programs. For example, the dependency relationship between the processes is analyzed for the portion where the information on good nondeterminism is not introduced, and the sequentiality of the portion of the source program corresponding to the portion analyzed without the dependency relationship is released. In addition, the harmless non-determination part is extracted in step A2.
It is performed by referring to the parallel information analyzed when serializing in.

【0140】次に、本実施例に係る並行プログラム作成
方法及び作成支援装置の詳細について説明する。
Next, details of the parallel program creating method and the creating support apparatus according to the present embodiment will be described.

【0141】本実施例は、出力装置5上に表示された超
逐次グラフを用いることにより、非決定性部分の導入
を、視覚的に行うことができるようにしたことを特徴と
する。超逐次グラフとは、並行構造を有する並行プログ
ラムに対してデフォルト逐次性を導入した超逐次プログ
ラムのプロセス処理順序を表した遷移グラフをいうもの
とする。この超逐次グラフの表示は、逐次化情報に基づ
いて行われる。逐次化情報は、逐次化装置12により並
行プログラムが超逐次プログラムに変換される際に生成
される。
The present embodiment is characterized in that the use of the hyper-sequential graph displayed on the output device 5 makes it possible to visually introduce the nondeterministic portion. A hyper-sequential graph is a transition graph that represents the process processing sequence of a hyper-sequential program in which default seriality is introduced to a parallel program having a parallel structure. The display of the hyper-sequential graph is performed based on the serialization information. The serialization information is generated when the serialization device 12 converts a parallel program into a hyper-sequential program.

【0142】より具体的には、逐次化情報とは、所定の
フィールドを有するプロセステーブルと呼ばれるデータ
列群である。図26は、プロセステーブルの構造を示す
図である。
More specifically, the serialization information is a data string group called a process table having a predetermined field. FIG. 26 is a diagram showing the structure of the process table.

【0143】図26において、名前フィールドF1は、
個々のプロセスを識別するための名前を保持する。ポイ
ンタフィールドF2は、当該プロセスから呼び出される
プロセス(以下「被呼出プロセス」という)の名前リス
トを格納する被呼出プロセスリストテーブル(図示しな
い)のポインタを保持する。この被呼出プロセスリスト
テーブルは、別に設けられている。優先順位フィールド
F3は、プロセスの優先順位を保持する。このプロセス
の優先順位は、もとの並行構造を有するプログラムに基
づき、ある処理時点において複数のプロセスが実行可能
な場合に、逐次化装置12によって決定され、その結果
が当該フィールドに記述される。優先順位バッファフィ
ールドF3は、後述するように非決定性導入装置17に
より、その値が変更される。このため、優先順位バッフ
ァフィールドF4は、変更前の優先順位を保持すること
により、変更前の状態に戻すことを可能とする。グルー
プ化情報フィールドF5は、特定のノード群がグループ
化された場合に、各グループ間を識別する情報を保持
し、グループ化されたノード群に対応するプロセス群の
うち、最初に実行されるプロセスの名前が書き込まれ
る。
In FIG. 26, the name field F1 is
Holds a name that identifies an individual process. The pointer field F2 holds a pointer of a called process list table (not shown) that stores a name list of processes called from the process (hereinafter, called process). This called process list table is provided separately. The priority field F3 holds the priority of the process. Based on the program having the original parallel structure, the priority of this process is determined by the serializer 12 when a plurality of processes can be executed at a certain processing point, and the result is described in the field. The value of the priority buffer field F3 is changed by the nondeterminism introducing device 17, as described later. Therefore, the priority order buffer field F4 can return to the state before the change by holding the priority order before the change. The grouping information field F5 holds information for identifying each group when a specific node group is grouped, and is a process executed first among the process groups corresponding to the grouped node group. The name of is written.

【0144】本実施例における逐次化装置12について
説明する。
The serialization device 12 in this embodiment will be described.

【0145】図27に示すような並行プログラムが逐次
化装置12に読み込まれたとする。逐次化装置12は、
まず並行プログラムの並行構造を解析する。図27に示
す並行プログラムは、概念的には図28のような並行構
造を有するものであると解析される。この解析は、例え
ば、木構造探索アルゴリズム等を用いることにより実現
できる。そして、逐次化装置12はその解析結果をプロ
セステーブルに書込む。具体的には、逐次化装置12
は、図26に示したプロセステーブルの優先順位フィー
ルドF3に優先順位を書込むことによってデフォルト逐
次性を導入し、超逐次プログラムに変換する。すなわ
ち、図28において、プロセスBの処理の後、プロセス
CとプロセスDとのいずれが処理されるかは、その時点
におけるシステム環境等により異なる。このような場合
に、逐次化装置12は、所定の規則(逐次化ルール)に
より優先順位を一意に決定する。なお、所定の規則と
は、例えば、プロセスの読み込み順に従うとする規則や
乱数により決定するという規則等があげられるが、種々
の事情に応じてユーザが設定することができるものとす
る。なお、本実施例における超逐次プログラムは、概念
的には、ソースプログラムとそれをメタレベルで管理す
る逐次化情報とにより構成されることになる。
It is assumed that a parallel program as shown in FIG. 27 is read by the serializer 12. The serialization device 12 is
First, the parallel structure of a parallel program is analyzed. The parallel program shown in FIG. 27 is conceptually analyzed as having a parallel structure as shown in FIG. This analysis can be realized, for example, by using a tree structure search algorithm or the like. Then, the serialization device 12 writes the analysis result in the process table. Specifically, the serialization device 12
Introduces the default sequentiality by writing the priority in the priority field F3 of the process table shown in FIG. 26, and converts it into the hyper sequential program. That is, in FIG. 28, which of the process C and the process D is processed after the process B is processed depends on the system environment at that time. In such a case, the serialization device 12 uniquely determines the priority order according to a predetermined rule (serialization rule). Note that the predetermined rule includes, for example, a rule that the process is read in the order of reading, a rule that is determined by a random number, and the like, but it can be set by the user according to various circumstances. The hyper-sequential program in this embodiment is conceptually composed of a source program and serialization information for managing it at the meta level.

【0146】例えば、上記の例において、所定の規則に
よりプロセスCの方がプロセスDよりも優先的に処理す
るものと決定されると、プロセステーブルにおけるプロ
セスCの優先順位フィールドF3には「1」が書き込ま
れ、プロセステーブルにおけるプロセスDの優先順位フ
ィールドF3には「2」が書き込まれる。なお、優先順
位を決定する必要がないプロセスについては、優先順位
フィールドF3は「0」のままである。この優先順位の
決定は、階層レベルが等しいプロセス間で行われる。例
えば、図28におけるプロセスC、G、Iとプロセス
D、H、Jとは、同じレベルのプロセスであるが、その
中のプロセスEとプロセスFとは一階層下のレベルであ
るとされる。
For example, in the above example, when it is determined that the process C is to be processed with priority over the process D according to the predetermined rule, "1" is set in the priority field F3 of the process C in the process table. Is written, and “2” is written in the priority field F3 of the process D in the process table. Note that the priority field F3 remains "0" for the process that does not need to determine the priority. This priority determination is performed between processes having the same hierarchical level. For example, the processes C, G, and I and the processes D, H, and J in FIG. 28 are processes at the same level, but the processes E and F therein are one level lower.

【0147】このようにして逐次化装置12は、並行プ
ログラムの並行構造を解析して逐次化情報(プロセステ
ーブル)を生成し、これをファイルに記録する。
In this way, the serialization device 12 analyzes the parallel structure of the parallel program, generates serialization information (process table), and records this in a file.

【0148】図29は、逐次化装置12によって並行プ
ログラムの構造を解析した結果作成されたプロセステー
ブルの内容を示す図である。すなわち、図29はプロセ
スAからプロセスKまでに対応する各レコードにおける
各フィールドの内容を示す。より具体的には、プロセス
Aの次に呼び出されるプロセスはプロセスBであり、プ
ロセスAの優先順位は0であることを示す。また、例え
ば、プロセスBでは次に呼び出されるプロセスとしてプ
ロセスC又はプロセスDであることを示しており、プロ
セスCとプロセスDとは本来非決定的であるということ
を意味している。そして、このプロセスCとプロセスD
とは逐次化装置12によりそれぞれ優先順位「1」と
「2」とが割り当てられ、プロセスCがプロセスDより
も優先的に呼び出される(実行される)ことを意味して
いる。
FIG. 29 is a diagram showing the contents of the process table created as a result of analyzing the structure of the parallel program by the serializer 12. That is, FIG. 29 shows the contents of each field in each record corresponding to process A to process K. More specifically, the process called next to the process A is the process B, and the priority of the process A is 0. Further, for example, the process B indicates that the process to be called next is the process C or the process D, which means that the process C and the process D are essentially non-deterministic. And this process C and process D
Means that the serialization device 12 assigns priorities “1” and “2” respectively, and the process C is called (executed) with priority over the process D.

【0149】良い非決定性に関する情報の導入(つま
り、良い非決定性部分の指定方法)について説明する。
良い非決定性部分の導入は、図2に示した非決定性導入
装置17を用いたユーザによる対話的操作により行われ
る。すなわち、この非決定性装置17は、出力装置5上
に超逐次グラフを表示し、ユーザは、この超逐次グラフ
に対して入力装置4を用いて、良い非決定性部分の導入
・解除を行う。
Introduction of information on good non-determinism (that is, a method for designating good non-determinism) will be described.
The introduction of the good non-deterministic part is performed by the interactive operation by the user using the non-deterministic introduction device 17 shown in FIG. That is, the non-deterministic device 17 displays the hyper-sequential graph on the output device 5, and the user uses the input device 4 to introduce / cancel a good non-deterministic part to the hyper-sequential graph.

【0150】図30は、超逐次グラフの一例を示す図で
ある。図30において、各ノードは各プロセスを表し、
破線矢印で示されたアークはもとの並行プログラムの並
行構造を表している。また、実線矢印は逐次化装置12
によりデフォルト逐次性が導入されることにより決定さ
れたプロセスの逐次構造を表し、その逐次構造に従って
プロセスの実行順序が連番で付されている。つまり、も
との並行プログラムにおいては、プロセスC→G→Iと
プロセスD→E→F→H→Jとは、本来並行処理される
ように記述されていることを表しているが、超逐次プロ
グラムにおいてはプロセスC→G→Iを一連に処理した
後、プロセスD以降を処理することを表している。
FIG. 30 is a diagram showing an example of the hyper-sequential graph. In FIG. 30, each node represents each process,
The arc indicated by the dashed arrow represents the parallel structure of the original concurrent program. Also, the solid arrow indicates the serialization device 12.
Represents the sequential structure of the process determined by the introduction of the default sequentiality, and the execution order of the processes is sequentially numbered according to the sequential structure. That is, in the original concurrent program, the process C → G → I and the process D → E → F → H → J are originally described as being processed in parallel. In the program, the process C → G → I is processed in series, and then the process D and subsequent processes are processed.

【0151】ユーザは、このような超逐次グラフを出力
装置5により視覚的に把握することができる。更に、ユ
ーザは、並行プログラムが逐次化装置12により逐次化
され、逐次化情報が生成された後は、超逐次グラフを表
示する旨の指示を与えることにより、いつでも出力装置
5により視覚的に把握することができる。本実施例で
は、超逐次グラフの表示は、非決定性導入装置17の超
逐次グラフ表示制御部によって行われる。この超逐次グ
ラフ表示制御部は、ユーザにより超逐次グラフを表示す
る旨の指示を受けると、所定の内蔵プログラムに従って
超逐次グラフの表示を開始する。
The user can visually recognize such a hyper sequential graph by the output device 5. Further, after the serial program is serialized by the serialization device 12 and the serialization information is generated, the user gives an instruction to display a hyper-sequential graph, so that the output device 5 can visually grasp at any time. can do. In the present embodiment, the display of the hyper-sequential graph is performed by the hyper-sequential graph display control unit of the nondeterminism introducing device 17. The super-sequential graph display control unit starts displaying the super-sequential graph according to a predetermined built-in program when receiving an instruction from the user to display the super-sequential graph.

【0152】図31は、超逐次グラフ表示制御部の構成
を示す機能ブロック図である。 超逐次グラフ表示制御
部は、逐次化情報記憶部31に格納されている逐次化情
報に従って、各プロセスに対応するノードと、ノード間
の呼び出し関係を示す並行構造及び逐次構造に対するア
ークを決定し、これらを画像データ生成部35により出
力装置5上に表示するために必要な画像データに変換す
る。
FIG. 31 is a functional block diagram showing the structure of the super sequential graph display control unit. The hyper-sequential graph display control unit determines, according to the serialization information stored in the serialization information storage unit 31, a node corresponding to each process, an arc for a parallel structure and a sequential structure indicating a calling relationship between the nodes, The image data generator 35 converts these into image data necessary for displaying on the output device 5.

【0153】逐次化情報読込部32は、逐次化情報記憶
部31から逐次化情報を読み込み、並行構造解析部33
及び逐次構造解析部34に送出する。
The serialization information reading unit 32 reads the serialization information from the serialization information storage unit 31, and the parallel structure analysis unit 33
And to the sequential structure analysis unit 34.

【0154】並行構造解析部33及び逐次構造解析部3
4は、逐次化情報を参照して並行構造を解析する。具体
的には、並行構造解析部33は、ポインタフィールドF
2に指示された被呼出プロセスリストテーブルを参照す
ることにより、名前フィールドF1に記述されたプロセ
スによって呼出され得るプロセス名の間の呼出関係を特
定する。逐次構造解析部34は、これらのフィールドに
加え、更に優先順位フィールドF3に記述された優先順
位を参照して逐次構造を特定する。これら並行構造解析
部33及び逐次構造解析部34による解析結果は、画像
データ生成部35に送出される。画像データ生成部35
は、入力されたこれらの解析結果に基づいて、各プロセ
スに対応するノードを表示するための画像データと、該
プロセス間の呼出関係を接続するための2つのアーク
(つまり、並行構造に対するアーク及び逐次構造に対応
するアーク)を表示するための画像データを生成し、出
力装置5に送出する。出力装置5は、これらの画像デー
タに基づいて遷移グラフ(即ち、超逐次グラフ)を表示
する。
Concurrent structure analysis unit 33 and sequential structure analysis unit 3
4 analyzes the parallel structure with reference to the serialization information. Specifically, the parallel structure analysis unit 33 uses the pointer field F
By referring to the called process list table designated by 2, the calling relationship between the process names that can be called by the process described in the name field F1 is specified. The sequential structure analyzing unit 34 specifies the sequential structure by referring to the priority described in the priority field F3 in addition to these fields. The analysis results by the parallel structure analysis unit 33 and the sequential structure analysis unit 34 are sent to the image data generation unit 35. Image data generator 35
Is based on these input analysis results, image data for displaying the node corresponding to each process, and two arcs for connecting the calling relationship between the processes (that is, arcs for the parallel structure and Image data for displaying the arc corresponding to the sequential structure is generated and sent to the output device 5. The output device 5 displays a transition graph (that is, a hyper sequential graph) based on these image data.

【0155】なお、上記超逐次グラフの表示に際し、並
行構造解析部33により解析された並行構造の各ノード
間の接続関係に、従属的に逐次構造解析部34により解
析された逐次構造の各ノード間の接続関係を付加するこ
とにより画像データを生成することが望ましい。換言す
れば、超逐次グラフは、もとの並行プログラムの並行構
造を保持した超逐次グラフであることが望ましい。これ
により、ユーザは、もとの並行プログラムが本来持つ並
行構造を意識しつつ、逐次化された処理の流れ(プロセ
ス)に対して、良い非決定性部分を導入することができ
る。
When the hyper sequential graph is displayed, each node of the sequential structure subordinately analyzed by the sequential structure analysis unit 34 is subordinate to the connection relation between the nodes of the parallel structure analyzed by the parallel structure analysis unit 33. It is desirable to generate image data by adding a connection relationship between them. In other words, the hyper-sequential graph is preferably a hyper-sequential graph that retains the parallel structure of the original concurrent program. As a result, the user can introduce a good nondeterministic portion into the serialized processing flow (process) while being aware of the parallel structure that the original concurrent program originally has.

【0156】出力装置5に超逐次グラフが表示される
と、図2の非決定性導入装置17はユーザによる良い非
決定性部分の入力待ちの状態になる。(部分)超逐次プ
ログラムのテスト・デバッグ開始当初は、非決定性部分
が導入されていないので、逐次構造に対するアークは出
力装置5上の全てのノードに対して設けられており、並
行化情報は表示されていない。ここで、並行化情報と
は、良い非決定性部分が導入されたノードに対して与え
られる情報であり、良い非決定性部分が導入されたか否
かにより画面上で視覚的に区別されて(例えば陰影の濃
度、色分け等)表示される。また、この並行化情報は、
階層化された良い非決定性部分についても視覚的に区別
されて表示される。
When the hyper-sequential graph is displayed on the output device 5, the nondeterminism introducing device 17 in FIG. 2 is in a state of waiting for the input of a good nondeterminism part by the user. (Part) Since the nondeterministic part is not introduced at the beginning of the test / debug of the hyper sequential program, the arc for the sequential structure is provided for all the nodes on the output device 5, and the parallelization information is displayed. It has not been. Here, the parallelization information is information given to a node in which a good nondeterministic part is introduced, and is visually distinguished on the screen depending on whether or not the good nondeterministic part is introduced (for example, shadows). Density, color coding, etc.) is displayed. Also, this parallelization information is
Good non-deterministic parts that are hierarchized are also visually distinguished and displayed.

【0157】ユーザによる良い非決定性部分の導入は、
入力装置4を用いて行われる。具体的な良い非決定性の
導入方法については後述するが、略説すれば、入力装置
4を用いてノード間の逐次構造の接続関係(アーク)を
断ち切ったり、接続したりすることにより行われ、その
結果は、逐次化情報変更部36により逐次化情報記憶部
31の内容が変更される。変更された内容は、再び逐次
化情報読込み部により読み込まれ、出力装置5上に表示
されることになる。
The introduction of a good non-deterministic part by the user is
This is performed using the input device 4. Although a specific method for introducing good nondeterminism will be described later, in brief, it is performed by cutting or connecting the connection relation (arc) of the sequential structure between the nodes using the input device 4. As a result, the serialization information changing unit 36 changes the contents of the serialization information storage unit 31. The changed contents are read again by the serialization information reading unit and displayed on the output device 5.

【0158】良い非決定性部分の導入の具体的操作例に
ついて説明する。
A specific operation example of introducing a good nondeterministic portion will be described.

【0159】図32は、良い非決定性部分の導入方法を
説明するための図である。
FIG. 32 is a diagram for explaining a method of introducing a good nondeterministic portion.

【0160】複数のプロセス間に対して良い非決定性を
導入する場合、良い非決定性の導入モードにおいて、該
プロセスに対応する所望のノードを続けて指定すること
により行われる。良い非決定性の導入モードは、例え
ば、指示操作メニュー等により選択され、該モードに移
行する。
When introducing a good nondeterminism between a plurality of processes, it is performed by successively designating a desired node corresponding to the process in the good nondeterminism introducing mode. The good non-deterministic introduction mode is selected by, for example, an instruction operation menu or the like, and shifts to the mode.

【0161】図32において、プロセスEとFとの並行
化を許容する場合、入力装置4により操作されるカーソ
ルPでノードE、Fを続けて指定する。この指定された
ノードは、指定されていない他のノードと視覚的に区別
できるように、陰影が付される。対象とするノード全て
について指定が完了した場合、ユーザは完了した旨を非
決定性導入装置17に与える。これにより、逐次化情報
変更部36は、逐次化情報記憶部31内のプロセステー
ブルにおける対応するプロセスの優先順位フィールドF
3の現在の値を優先順位バッファフィールドF4に対比
させるとともに、優先順位フィールドF3の値を「0」
に変更する。
In FIG. 32, when the parallelization of the processes E and F is allowed, the nodes E and F are successively designated by the cursor P operated by the input device 4. The designated node is shaded so that it can be visually distinguished from other undesignated nodes. When the designation has been completed for all the target nodes, the user gives the nondeterminism introducing device 17 the completion. As a result, the serialization information changing unit 36 causes the serialization information storage unit 31 to store the priority field F of the corresponding process in the process table.
The current value of 3 is compared with the priority buffer field F4, and the value of the priority field F3 is set to "0".
Change to

【0162】つまり、本実施例では、プロセスE及びF
の優先順位フィールドF3の値「1」及び「2」がそれ
ぞれ優先順位バッファフィールドF4に対比されるとと
もに、それぞれの優先順位フィールドF3の値は「0」
に変更される。逐次化情報変更部36による逐次化情報
記憶部31の更新後、再度、出力装置5上に超逐次グラ
フが表示される。この時、プロセスEとFとの間の優先
順位はないため、それに対応する逐次構造のアークは表
示されない。つまり、出力装置5上では、プロセスEと
Fとは、並行に動作することが確認される。
That is, in this embodiment, the processes E and F are
The values "1" and "2" of the priority field F3 are compared with the priority buffer field F4, and the value of each priority field F3 is "0".
Is changed to. After updating the serialization information storage unit 31 by the serialization information changing unit 36, the hyper-sequential graph is displayed again on the output device 5. At this time, since there is no priority between the processes E and F, the corresponding arc of the sequential structure is not displayed. That is, it is confirmed that the processes E and F operate in parallel on the output device 5.

【0163】図33は、上記の場合において、良い非決
定部分が導入された超逐次グラフの一例を示す図であ
る。
FIG. 33 is a diagram showing an example of the hyper-sequential graph in which the good non-decision part is introduced in the above case.

【0164】上記のようにして良い非決定性部分が導入
されたプログラム(部分超逐次プログラム)は、テスト
実行装置15により実行形式に変換され、テスト実行さ
れる。ユーザは、テスト実行装置15による実行結果に
基づいて、プログラムが正しく動作するか否かを確認す
る。この動作確認は、並行性に基づく全てのパスについ
て実行する必要がある。テスト実行装置15が正しく動
作しなかった場合、良い非決定性部分を導入した部分
は、本来並行化を許容する部分ではないとみなすことが
できるため、ユーザは並行化を解除する指定をする。
The program (partial hyper-sequential program) into which the good non-deterministic part is introduced as described above is converted into the execution form by the test execution device 15 and the test is executed. The user confirms whether or not the program operates properly based on the execution result by the test execution device 15. This operation check needs to be executed for all paths based on concurrency. When the test execution unit 15 does not operate correctly, the part in which the good non-deterministic part is introduced can be regarded as the part that does not allow the parallelization, so the user specifies the parallelization to be released.

【0165】並行化の解除は、非決定性部分解除モード
において、良い非決定性部分を導入する場合と同様に指
定することにより行われる。これにより、逐次化情報変
更部36は、逐次化情報記憶部31内のプロセステーブ
ルにおける優先順位バッファフィールドF4に格納され
ている値を優先順位フィールドF3に戻す。
The cancellation of parallelization is performed by specifying in the nondeterministic part cancellation mode in the same manner as in the case of introducing a good nondeterministic part. As a result, the serialization information changing unit 36 returns the value stored in the priority order buffer field F4 in the process table in the serialization information storage unit 31 to the priority order field F3.

【0166】本実施例では、良い非決定性部分の導入に
際し、階層レベルごとにグループ化することも可能であ
る。例えば、プロセスC、G、Iのグループ(グループ
1という)とプロセスD、H、Jのグループ(グループ
2という)とは同一の階層レベルであるので、これらは
互いに並行動作しうる。従って、個々のプロセスについ
て操作したのでは操作性に欠けるため、これらをグルー
プ化することが有効である。このグループ化は、グルー
プ化モードを選択することにより行われる。具体的に
は、グループ化モードにおいて、対象とするノードを順
次選択し、完了した旨を与えることにより、対象となる
ノードがグループ化されて1つの新たなノードとして表
示される。
In this embodiment, when introducing a good non-deterministic part, it is possible to group by hierarchy level. For example, since the group of processes C, G, and I (referred to as group 1) and the group of processes D, H, and J (referred to as group 2) are at the same hierarchical level, they can operate in parallel with each other. Therefore, if the individual processes are operated, the operability is insufficient, so it is effective to group these processes. This grouping is performed by selecting the grouping mode. Specifically, in the grouping mode, target nodes are sequentially selected and given the fact that the target nodes have been completed, so that the target nodes are grouped and displayed as one new node.

【0167】図34は、グループ化されたノードを持つ
超逐次グラフの一例を示す図である。
FIG. 34 is a diagram showing an example of a hyper-sequential graph having grouped nodes.

【0168】図34において、グループ1及び2のノー
ドは、グループ化されていない他のノードと視覚的に区
別できるように、例えば、楕円形で表示されている。更
に、グループ2は、更に下位階層(プロセスE及びF)
を持っているため、例えば、影付きで表示される。この
ような超逐次グラフに対し、ユーザは、良い非決定性部
分を指定することができる。なお、このようなグループ
化された超逐次グラフに対して良い非決定性部分を導入
した場合であっても、先頭のプロセス(プロセスC及び
D)の優先順位フィールドF3を変更するだけでよい。
In FIG. 34, the nodes of groups 1 and 2 are displayed in, for example, an elliptical shape so that they can be visually distinguished from other ungrouped nodes. Further, the group 2 has a lower hierarchy (processes E and F).
Because it has, it is displayed with a shadow, for example. For such hyper-sequential graphs, the user can specify good non-deterministic parts. Even if a good nondeterministic part is introduced into such a grouped hyper-sequential graph, it is sufficient to change the priority field F3 of the leading process (processes C and D).

【0169】超逐次グラフのノードに対して良い非決定
性部分を導入する場合には、上述したように所望のノー
ドを入力装置4により直接指定することにより行われる
が、このような方法ではなく、特定のノード群を囲い込
むことによって、又は指定領域が特定のノード群に掛か
ることによって指定されたとするようにしてもよい。な
お、プロセスが多数ありそれに対応するノードが多数あ
るため、出力装置5上で確認することが困難な場合も想
定できる。このような場合は、グループ化されたノード
群のみを表示することにより対処することができる。
In order to introduce a good nondeterministic part into a node of a hyper-sequential graph, the desired node is directly specified by the input device 4 as described above, but this method is not The designation may be made by enclosing a specific node group or by causing the designated area to hang on the specific node group. Since there are many processes and many nodes corresponding to them, it can be assumed that it is difficult to confirm on the output device 5. Such a case can be dealt with by displaying only the grouped nodes.

【0170】本実施例では更に、逐次化装置12により
決定されたプロセス間の優先順位を変更することもでき
る。つまり、優先順位変更モードにおいて、所望のノー
ドを指定することにより、対象とされたノード間の優先
順位を変更する。
In this embodiment, the priority order among the processes determined by the serializer 12 can be changed. That is, in the priority order changing mode, the priority order among the targeted nodes is changed by designating a desired node.

【0171】図32の超逐次グラフに対し、優先順位変
更モードにおいて、プロセスEとFとの優先順位を変更
するとする。ユーザは、上記のように入力装置4によ
り、ノードE及びFとを指定し、指定完了の旨を非決定
性導入装置17に与える。これにより、逐次化情報変更
部36は、逐次化情報記憶部31内のプロセステーブル
におけるプロセスEの優先順位フィールドF3の値を
「2」、プロセスFの優先順位フィールドF3の値を
「1」と変更する。これにより、出力装置5上には、新
たな超逐次グラフが表示されることとなる。図35は、
この時の超逐次グラフの一例を示す図である。図35に
示すように、優先順位変更後は、逐次構造に対するアー
クが変更されることになる。
With respect to the hyper-sequential graph of FIG. 32, it is assumed that the priorities of processes E and F are changed in the priority change mode. The user designates the nodes E and F by the input device 4 as described above, and gives the non-determinacy introducing device 17 the designation completion. As a result, the serialization information changing unit 36 sets the value of the priority field F3 of the process E to “2” and the value of the priority field F3 of the process F to “1” in the process table in the serialization information storage unit 31. change. As a result, a new hyper sequential graph is displayed on the output device 5. FIG. 35 shows
It is a figure which shows an example of the hyper sequential graph at this time. As shown in FIG. 35, after the priority order is changed, the arc for the sequential structure is changed.

【0172】このようなプロセスの優先順位の変更は、
ユーザの意図したプロセス間の動作が保証されるため、
良い非決定性部分の導入に有効に役立てることができ
る。すなわち、まず、ユーザは図32の超逐次プログラ
ムについてテスト実行装置15で実行形式に変換し、テ
スト実行を行う。次に、ユーザは、優先順位変更後の図
35の超逐次グラフについて同様にテスト実行を行う。
これにより、両方のテスト実行結果がユーザの意図した
ものであることが確認できれば、プロセスEとプロセス
Fは、どちらを先に実行しても良いとみなせるので、良
い非決定性部分の導入を行うことができる。
The change of the priority order of such a process is as follows.
Since the behavior between processes intended by the user is guaranteed,
It can be useful for introducing good non-deterministic parts. That is, first, the user converts the hyper-sequential program shown in FIG. 32 into the execution format by the test execution device 15, and executes the test. Next, the user similarly performs the test execution on the hyper-sequential graph of FIG. 35 after the priority change.
If it is confirmed by this that both test execution results are intended by the user, either process E or process F can be considered to execute either one first. Therefore, a good nondeterministic part should be introduced. You can

【0173】なお、本実施例では、2プロセス間の非決
定性の導入について説明したが、3プロセス以上の場合
も同様である。
In this embodiment, the introduction of nondeterminism between two processes has been described, but the same applies to the case of three or more processes.

【0174】図36は、3プロセス間の良い非決定性部
分の導入を説明するための図である。並行構造のプロセ
スB、C、D間において、その全てについて並行化を許
容するようにすることもできるが、図36においては、
プロセスBとCとの間のみ並行化を許容されている場合
を示す。このような良い非決定性部分の導入により、超
逐次グラフは図37のようになる。つまり、図37に示
す超逐次グラフは、プロセスB及びCの両方が実行され
た後に、プロセスDが実行されることを示す。上記のよ
うに本実施例によれば、出力装置5上に表示した超逐次
グラフによって並行化情報及び逐次化情報をユーザに対
して同時に提示するので、ユーザはもとの並行構造を考
慮しつつ、良い非決定性部分の指定をすることができる
ようになる。また、並行プログラム記述レベルにおける
良い非決定性部分の指定・解除ではなく、超逐次グラフ
に対して良い非決定性部分を指定・解除をするので、高
度な並行プログラミング技術を必要とすることなく、容
易に並行プログラムの開発をすることができるようにな
る。
FIG. 36 is a diagram for explaining the introduction of a good nondeterministic portion between the three processes. Although it is possible to allow parallelization for all of the processes B, C, and D of the parallel structure, in FIG.
The case where parallelization is allowed only between processes B and C is shown. By introducing such a good nondeterministic part, the hypersequential graph becomes as shown in FIG. That is, the hyper-sequential graph shown in FIG. 37 shows that the process D is executed after both the processes B and C are executed. As described above, according to the present embodiment, since the parallelization information and the serialization information are presented to the user at the same time by the hyper-sequential graph displayed on the output device 5, the user considers the original parallel structure. , Will be able to specify a good non-deterministic part. Also, rather than specifying / releasing a good non-deterministic part at the concurrent program description level, specifying / releasing a good non-deterministic part for a hyper-sequential graph makes it easy to use without requiring advanced parallel programming technology. You will be able to develop concurrent programs.

【0175】(実施例5)図38は、本実施例に係る並
行プログラム生成作成支援装置のブロック図であり、特
に図2におけるHSPファイル記憶部14と非決定性導
入装置17について詳しく示す。
(Embodiment 5) FIG. 38 is a block diagram of a concurrent program generation / creating support apparatus according to this embodiment, and particularly shows the HSP file storage unit 14 and the nondeterminism introducing apparatus 17 in FIG. 2 in detail.

【0176】図38において、CPファイル記憶部11
に格納されている第1並行プログラムは、逐次化装置1
2により先の実施例のように逐次化され、得られた超逐
次プログラムはHSPファイル記憶部14内の逐次化プ
ロセスリスト記憶部51に格納される。なお、超逐次プ
ログラムは、図38には図示してないデバッグ装置によ
り、逐次化プロセスリスト記憶部51に格納される時に
は既に逐次化された状態でのバグが取り去られている。
In FIG. 38, the CP file storage unit 11
The first concurrent program stored in is the serialization device 1
2, the serialized program is serialized as in the previous embodiment, and the obtained hyper-sequential program is stored in the serialized process list storage unit 51 in the HSP file storage unit 14. Note that, when the hyper-sequential program is stored in the serialization process list storage unit 51 by a debug device (not shown in FIG. 38), bugs in the serialized state have been removed.

【0177】ここで生成された超逐次プログラム(逐次
化プロセス)は、フィールドデータ生成部53によりフ
ィールドデータに変換され、フィールドデータ記憶部5
2に保存される。これら逐次化プロセスリスト記憶部5
1とフィールドデータ記憶部52の情報は、中間ファイ
ルたるHSPファイル記憶部14に保存される。フィー
ルドデータ記憶部52からのフィールドデータは、フィ
ールドチューニング部54を介してフィールドエディタ
55での編集に供される。
The hyper-sequential program (serialization process) generated here is converted into field data by the field data generation unit 53, and the field data storage unit 5
Stored in 2. These serialization process list storage unit 5
1 and the information in the field data storage unit 52 are stored in the HSP file storage unit 14 which is an intermediate file. The field data from the field data storage unit 52 is used for editing by the field editor 55 via the field tuning unit 54.

【0178】非決定性導入装置17は、フィールドデー
タ生成部53、フィールドチューニング部54及びフィ
ールドエディタ55で構成される。フィールドエディタ
55で編集が終了したフィールドデータは、並行化装置
18(フィールドデータ変換部)で修正された並行プロ
グラムに変換され、第2CPファイル記憶部19に格納
される。
The non-determinism introducing device 17 is composed of a field data generating section 53, a field tuning section 54 and a field editor 55. The field data edited by the field editor 55 is converted into a parallel program corrected by the parallelization device 18 (field data conversion unit) and stored in the second CP file storage unit 19.

【0179】図39は、図38におけるCPファイル記
憶部11に格納されている第1並行プログラムの一例を
示しており、説明の便宜上、意図的にバグを含ませてい
る。ここでは、バグとしてプロセスP4とP5の並行実
行は誤りであり、逆に、プロセスP2とP6は並行実行
が可能であるとし、正しい並行プログラムは後述する図
66であるとする。図40は図39の第1並行プログラ
ムで実行されるプロセスの流れをイメージした図であ
り、プロセスP4とP5、プロセスP7とP8がそれぞ
れ並行に実行される。図41は、図38における逐次化
プロセスリスト記憶部51に格納されている逐次化プロ
セスの一例であり、逐次化装置12において図39の第
1並行プログラムで並行な部分に、ある順番を付けるこ
とで逐次化されている。
FIG. 39 shows an example of the first parallel program stored in the CP file storage unit 11 in FIG. 38, and bugs are intentionally included for convenience of explanation. Here, as a bug, it is assumed that the parallel execution of the processes P4 and P5 is incorrect, and conversely, the processes P2 and P6 can be executed in parallel, and the correct parallel program is shown in FIG. 66 described later. FIG. 40 is a diagram imagining the flow of processes executed by the first parallel program of FIG. 39, in which processes P4 and P5 and processes P7 and P8 are executed in parallel. FIG. 41 is an example of the serialization process stored in the serialization process list storage unit 51 in FIG. 38. In the serialization device 12, a certain order is assigned to the parallel part in the first concurrent program of FIG. 39. Has been serialized in.

【0180】また、図42は図41で実行されるプロセ
スの流れをイメージした図である。この例では偶然、P
4、P5の順で逐次化されているので、この点に関する
バグは取り除かれている。仮に、逐次化がP5、P4の
順で行われていたなら、上記のバグが従来のデバック手
法で検出されるはずであり、逐次化の時点で誤った並行
化(悪い非決定性)を取り除くことができる。
Further, FIG. 42 is a diagram imagining the flow of the process executed in FIG. In this example, P
Since it is serialized in the order of 4, P5, the bug related to this point has been removed. If the serialization was performed in the order of P5 and P4, the above bug should be detected by the conventional debug method, and the wrong parallelization (bad nondeterminism) should be removed at the time of serialization. You can

【0181】図43は、図38におけるフィールドデー
タ生成部53で実行される処理の流れを示すフローチャ
ートである。ここでは、1つのプロセスからもう1つの
プロセスへ処理が進むことをある制約と遷移条件が存在
する範囲(エリア)ととらえて、超逐次プログラム(逐
次化プロセス)をフィールドデータに変換している。図
43に示すように、ステップD1でスタートエリアを生
成し、最後のプロセスが来るまでステップD3〜D9を
繰り返し実行する。そして、最後のプロセスが来たらス
テップE10〜E12の処理を行って終了となる。図4
4は、図43に示した処理によって生成される一般的な
エリアのデータ構造を示す。このエリアの接続で構成さ
れる全体構造としてフィールドが形成される。
FIG. 43 is a flow chart showing the flow of processing executed by the field data generator 53 shown in FIG. Here, the process progressing from one process to another process is regarded as a range (area) where certain constraints and transition conditions exist, and a hyper-sequential program (serialization process) is converted into field data. As shown in FIG. 43, a start area is generated in step D1, and steps D3 to D9 are repeatedly executed until the final process comes. Then, when the final process comes, the processes of steps E10 to E12 are performed and the process ends. FIG.
4 shows a general area data structure generated by the processing shown in FIG. A field is formed as an overall structure composed of connections in this area.

【0182】エリアA(i)には以下のような情報が記
述されている。 (1) エリアA(i)にいる限りは、"constraint"に
記述された制約が存在する。(例えば、P( x1) はP
( x2) より先に実行される) (2) エリアA(i)から他のエリアへ移るための遷
移条件は、"transition"に記述されている。(例えば、
P(z1)が終了してA(j)へ遷移できる) (3) エリアA(i)から移ることのできるエリア
は、A(j) である。 (4) エリアA(i)へ移る以前の状態は、エリアA
(k)である。
The following information is described in area A (i). (1) As long as you are in area A (i), there are constraints described in "constraint". (For example, P (x1) is P
(Executed before (x2)) (2) The transition condition for moving from area A (i) to another area is described in "transition". (For example,
(P (z1) can be completed and transit to A (j)) (3) The area that can be transited from area A (i) is A (j). (4) The state before moving to area A (i) is area A
(K).

【0183】図45は、図43に示した処理により図4
1に記述されたプログラムをエリアの集合で構成された
フィールドに変換した様子を示す。
FIG. 45 is obtained by the processing shown in FIG.
1 shows a state in which the program described in 1 is converted into a field composed of a set of areas.

【0184】このフィールドは処理の順序関係の制約が
最も強い。非決定性の導入は、この制約を変更したり、
なくしたりすることで行なうことができる。つまり、フ
ィールドチューニングを行うことで非決定性を導入し、
並行化を図ることができる。なお、一般的には制約によ
るチューニングであるので、ユーザには制約と遷移条件
を表示する。
This field has the strongest constraint on the processing order relation. The introduction of non-determinism can change this constraint,
It can be done by losing it. In other words, introduce nondeterminism by performing field tuning,
Parallelization can be achieved. Note that since the tuning is generally performed by constraints, the constraints and transition conditions are displayed to the user.

【0185】図46は、図38におけるフィールドチュ
ーニング部54で実行される処理のフローチャートであ
る。
FIG. 46 is a flowchart of the processing executed by the field tuning unit 54 shown in FIG.

【0186】ステップE1で選択されたフィールドデー
タは、ステップE2においてそのエリア間の連結情報が
解析されて視覚的にフィールドが生成され、フィールド
エディタ55に表示される。ユーザは、フィールドエデ
ィタ55の画面を見ながらステップE3でコマンドを入
力し、フィールドのチューニングを行うことができる。
In the field data selected in step E1, the connection information between the areas is analyzed in step E2 to visually generate a field, which is displayed in the field editor 55. The user can tune the field by inputting a command in step E3 while looking at the screen of the field editor 55.

【0187】ステップE5で編集中のフィールド保存で
き、編集終了ならステップE17を経て終了する。な
お、ステップE14〜E16にて、編集による制約の矛
盾を検出している。
At step E5, the field being edited can be saved, and if the editing is completed, the process goes to step E17 and ends. Incidentally, in steps E14 to E16, the contradiction of the constraint due to the editing is detected.

【0188】ステップE9は制約の書き換え処理に関す
るサブルーチンである。また、ステップE11は制約の
追加処理に関するサブルーチンである。そして、ステッ
プE13は制約の削除処理に関するサブルーチンであ
る。
Step E9 is a subroutine relating to constraint rewriting processing. Further, step E11 is a subroutine relating to the process of adding a constraint. Then, step E13 is a subroutine relating to the constraint deletion processing.

【0189】図47は図46におけるステップE9の処
理を行なうサブルーチンである。
FIG. 47 is a subroutine for performing the processing of step E9 in FIG.

【0190】ステップE9−1で編集された制約に関し
て、ステップE9−2で自明な制約の有無を検査し、も
し自明な制約が存在すれば、制約の書き換えにエラーが
あることをユーザにステップE9−9で伝え、ステップ
E9−10で書き換えを無効にする。もし、自明な制約
が存在しなければ、ステップE9−4のようにフィール
ドを書き換える。そして、ステップE9−5〜E9−8
でフィールドチェックする。
Regarding the constraint edited in step E9-1, it is checked in step E9-2 whether or not there is a trivial constraint, and if there is a trivial constraint, the user is informed that there is an error in rewriting the constraint in step E9-2. In step E9-10, rewriting is invalidated. If there is no obvious constraint, the field is rewritten as in step E9-4. Then, steps E9-5 to E9-8
Check the field with.

【0191】図48は、図46におけるステップE9ー
4の制約の変更操作のアルゴリズムによって起こるフィ
ールドの変化を示した図である。これは"before Pi Pj"
を"before Pl Pj"に変更したときの様子を示しており、
図48の(a)から(b)へとフィールドが変化する。
ここでは、A(y)のエリアがエリアA(a)の"next"
に接続され、それに伴って各エリアの属性が変化する。
FIG. 48 is a diagram showing field changes caused by the constraint modification operation algorithm of step E9-4 in FIG. This is "before Pi Pj"
Shows the situation when is changed to "before Pl Pj",
The field changes from (a) to (b) in FIG.
Here, the area of A (y) is "next" of area A (a).
, And the attributes of each area change accordingly.

【0192】図49は図46におけるステップE11の
処理を行なうサブルーチンである。ステップE11−1
で編集された制約に関して、ステップE11−2で自明
な制約の有無を検査し、もし自明な制約が存在すれば、
制約の書き換えにエラーがあることをユーザにステップ
E11−9で伝え、ステップE11−10で追加を無効
にする。もし、自明な制約が存在しなければ、ステップ
E11−4のようにフィールドを書き換える。そして、
ステップE11−5〜E11−8でフィールドチェック
する。
FIG. 49 shows a subroutine for performing the process of step E11 in FIG. Step E11-1
With respect to the constraint edited in step E11-2, it is checked in step E11-2 whether or not there is a trivial constraint, and if there is a trivial constraint,
At step E11-9, the user is informed that there is an error in rewriting the constraint, and the addition is invalidated at step E11-10. If there is no obvious constraint, the field is rewritten as in step E11-4. And
Field check is performed in steps E11-5 to E11-8.

【0193】図50は図49におけるステップE11−
4の制約の追加操作のアルゴリズムによっておこるフィ
ールドの変化を示した図である。ここではエリアA
(y)に"before Pj Pk"を追加したときの様子を示した
もので、図50(a)から(b)へとフィールドが変化
する。ここでは、A(y)のエリアが新たにエリアA
(x2)のnextに追加され、それに伴って各エリアの属
性が変化する。
FIG. 50 shows step E11- in FIG.
It is the figure which showed the change of the field which arises by the algorithm of the addition operation of the restrictions of 4. Area A here
FIG. 50 shows a state in which "before Pj Pk" is added to (y), and the field changes from FIG. 50 (a) to (b). Here, the area A (y) is newly added to area A.
It is added to the next of (x2), and the attribute of each area changes accordingly.

【0194】図51は図47におけるステップE13の
処理を行なうサブルーチンである。
FIG. 51 is a subroutine for performing the processing of step E13 in FIG.

【0195】エリアには少なくとも1つの制約が必要で
あるので、ステップE13−1で指定したエリアA
(y)の制約の個数を調べ、もし1つならステップE1
3−8でエラーメッセージを表示して終了する。もし、
複数の制約があれば、ユーザの指定した制約を削除し、
ステップE13−3のようにフィールドを書き換える。
そして、ステップE13−4〜E11−7でフィールド
チェックし、自明な制約の発生を防ぐ。
Since at least one constraint is required for the area, area A specified in step E13-1
Check the number of constraints of (y), and if there is one, step E1
An error message is displayed in 3-8 and the process ends. if,
If there are multiple constraints, delete the constraint specified by the user,
The field is rewritten as in step E13-3.
Then, the fields are checked in steps E13-4 to E11-7 to prevent the occurrence of obvious restrictions.

【0196】図52は、図51におけるステップE13
の制約の削除操作のアルゴリズムによって起こるフィー
ルドの変化を示した図である。
FIG. 52 shows a step E13 in FIG.
FIG. 6 is a diagram showing a change in a field caused by an algorithm of a constraint deletion operation of (1).

【0197】これは"before Pj Pk"を削除したときの様
子を示しており、図52(a)から(b)へとフィール
ドが変化する。ここでは、A(x2)のエリアがエリア
A(z)の"pre" に接続され、それに伴って各エリアの
属性が変化する。
This shows a state in which "before Pj Pk" is deleted, and the field changes from FIG. 52 (a) to (b). Here, the area of A (x2) is connected to the "pre" of the area A (z), and the attribute of each area changes accordingly.

【0198】図53はフィールドに矛盾を発生させる自
明な制約を検出する処理であり、図47のE9−2、E
9−5、図49のE11−2、E12−5、図51のE
13−4で共通に実行されるサブルーチンである。ここ
では、例えば"before A B"、"before B C"が存在するに
も関わらず、"before A C"のような自明な制約を検出す
る。
FIG. 53 is a process for detecting a trivial constraint that causes a contradiction in a field. E9-2 and E in FIG.
9-5, E11-2 and E12-5 of FIG. 49, and E of FIG.
13-4 is a subroutine commonly executed. Here, for example, even if "before AB" and "before BC" exist, an obvious constraint such as "before AC" is detected.

【0199】図53においてE9−3〜E9−2−6の
繰り返しにより、自明制約が生成され、E9−2−7で
制約集合との間のに共通要素を探すことにより実現され
る。例えば、図54のような自明制約"before A D"を含
んだフィールドを仮定した場合、この処理によって図5
5のテンポラリ集合(a)、テンポラリ集合(b)、テ
ンポラリ集合(c)の順番で処理が実行され、共通要
素"before A D"を検出することができる。
In FIG. 53, the trivial constraint is generated by repeating E9-3 to E9-2-6, and it is realized by searching the common element with the constraint set at E9-2-7. For example, assuming a field including the obvious constraint “before AD” as shown in FIG.
The processing is executed in the order of the temporary set (a), the temporary set (b), and the temporary set (c) of No. 5, and the common element "before AD" can be detected.

【0200】図56は、フィールドエディタ55の表示
画面を示す。フィールドエディタ55では、フィールド
の読み込み、保存、制約編集、表示モードの変更等をメ
ニュー71を指定して行うことができ、四角で表現され
たエリア72を選択すると、編集画面73が現れる。図
57は、表示モードとして「2D表示モード」を選択し
た場合のフィールドの表示例を示す。このモードでは、
平面的にフィールドが表示される。図58は、表示モー
ドとして「3D表示モード」を選択した場合のフィール
ドの表示例を示す。このモードでは、立体的にフィール
ドが表示され、全体が大きくなったり、多くの並行処理
部分がある場合にも、全体を見渡しやすくすることがで
きる。
FIG. 56 shows a display screen of the field editor 55. In the field editor 55, reading, saving, constraint editing, change of display mode, etc. of fields can be performed by designating the menu 71. When an area 72 represented by a square is selected, an editing screen 73 appears. FIG. 57 shows a display example of fields when “2D display mode” is selected as the display mode. In this mode,
The field is displayed in a plane. FIG. 58 shows a display example of fields when “3D display mode” is selected as the display mode. In this mode, the fields are displayed three-dimensionally, and it is possible to make it easy to overlook the whole even when the whole becomes large or there are many parallel processing parts.

【0201】図59〜図66は、図44に示したフィー
ルドデータが図46のアルゴリズムでチューニングされ
ていく様子を示す。
59 to 66 show how the field data shown in FIG. 44 is tuned by the algorithm shown in FIG. 46.

【0202】図59では、例えばユーザはP5とP6に
因果関係がなく、P6はP2の後であれはバグとなる悪
い非決定的な動きはしない判断したとする。この場合、
図59中に示されるように制約の書き換えるという編集
を行うと、表示は図60のようになる。図60では、例
えばP6とP4に因果関係はなく、P4はP3とのみ正
しい順序が存在すると判断したとする。この場合、図6
0中に示されるようにある制約("before P6 P4")を削
除する編集を行うと、表示は図61のようになる。以下
同様に、ユーザがエリア内の制約を吟味し、徐々に編集
を加えていくと、フィールドデータは図62→図63→
…→図66のように変化する。
In FIG. 59, for example, it is assumed that the user has no causal relationship between P5 and P6, and that P6 does not make a bad non-deterministic movement that becomes a bug even after P2. in this case,
When editing is performed to rewrite the constraint as shown in FIG. 59, the display is as shown in FIG. In FIG. 60, it is assumed that there is no causal relationship between P6 and P4, for example, and it is determined that P4 and P3 have the correct order. In this case,
When editing is performed to delete a certain constraint ("before P6 P4") as shown in 0, the display is as shown in FIG. Similarly, when the user examines the restrictions in the area and gradually edits the field data, the field data will be changed from FIG. 62 to FIG. 63.
→→ Changes as shown in FIG. 66.

【0203】図67は、図38における並行化装置(フ
ィールドデータ変換部)18で実行される処理を示すフ
ローチャートである。図67に示されるように、並行化
装置18ではフィールドデータ記憶部52からフィール
ドデータを読み込み(ステップF1)、エリア間のグラ
フ構造を解析してプロセスフローを生成し(ステップF
2)、更にそのプロセスフローを解析して非決定性のみ
導入された形で並行プログラムのソースを生成し(Sス
テップF3)、第2CPファイル記憶部19に保存する
(ステップF4)。
FIG. 67 is a flow chart showing the process executed by the parallelization device (field data conversion unit) 18 in FIG. As shown in FIG. 67, the parallelization device 18 reads field data from the field data storage unit 52 (step F1), analyzes the graph structure between the areas, and generates a process flow (step F).
2) Further, the process flow is analyzed to generate a source of the parallel program in a form in which only nondeterminism is introduced (S step F3), and the source is stored in the second CP file storage unit 19 (step F4).

【0204】図68は、図66の状態となったフィール
ドを並行化装置18で解析して変換して得られた並行プ
ログラムである。図68に示されるように、図39の第
1並行プログラムで仮定したバグであるP4とP5の並
行実行が直され、逆に、良い非決定性であるP3とP6
の並行化が行われている。
FIG. 68 shows a parallel program obtained by analyzing and converting the field in the state of FIG. 66 by the parallelization device 18. As shown in FIG. 68, the parallel execution of the bugs P4 and P5 assumed in the first concurrent program of FIG. 39 is corrected, and conversely, P3 and P6 of good nondeterminism are fixed.
Parallelization is being done.

【0205】また、図69は図68の並行プログラムで
実行されるプロセスの流れをイメージした図である。
Further, FIG. 69 is an image showing the flow of processes executed by the parallel program of FIG.

【0206】本実施例によれば、逐次化された並行プロ
グラムのプロセスの流れを制約と遷移条件からなるフィ
ールド(場)という概念として捉え、このフィールドを
チューニングすることで良い非決定性を導入し、バグの
ない高品質な並行プログラムを効率的に生成することが
できる。また、本実施例では逐次化されたプログラムが
制約を外すことによって並行化が進んでいくと、図形的
に細長いフィールドだったものが縦方向に伸びていくの
で、直観的に理解しやすく、操作が容易となるという利
点がある。
According to this embodiment, the process flow of a serialized concurrent program is regarded as a concept of a field consisting of constraints and transition conditions, and this field is tuned to introduce good nondeterminism. It is possible to efficiently generate high-quality concurrent programs without bugs. Further, in this embodiment, when the serialized program removes the constraint and the parallelization progresses, the graphically long and narrow field grows in the vertical direction, which is intuitive and easy to understand. There is an advantage that it becomes easy.

【0207】(実施例6)本実施例に係る並行プログラ
ム作成方法及び作成支援装置では、テスト・デバッグ
は、超逐次プログラムに対して行う。また、良い非決定
性に関する情報の導入も、超逐次プログラムに対して行
う。
(Sixth Embodiment) In the parallel program creation method and creation support apparatus according to the present embodiment, the test / debug is performed on the hyper sequential program. We also introduce information about good nondeterminism into hypersequential programs.

【0208】図70は、実施例6に係る並行プログラム
作成支援装置の概略構成を示す図である。図70におい
て、CPファイル記憶部11に格納された第1並行プロ
グラムは、ユーザによる入力装置4からの指示により引
き出され、逐次化装置12に入力される。逐次化装置1
2に入力された第1並行プログラムは、逐次化ルール記
憶部13に格納された逐次化ルールに従って完全超逐次
プログラムHSPに変換され、複数の完全超逐次プログ
ラムを格納可能なHSPファイル記憶部14に記録され
る。
FIG. 70 is a diagram showing a schematic configuration of a parallel program creation support apparatus according to the sixth embodiment. In FIG. 70, the first parallel program stored in the CP file storage unit 11 is extracted by a user's instruction from the input device 4 and input to the serialization device 12. Serialization device 1
The first parallel program input to 2 is converted into a complete hyper-sequential program HSP according to the serialization rule stored in the serialization rule storage unit 13, and stored in the HSP file storage unit 14 capable of storing a plurality of complete hyper-sequential programs. Will be recorded.

【0209】この完全超逐次プログラムHSPに対し
て、テスト実行装置15でテストが行われる。ここで、
バグがあればデバッグ装置16を用いて、HSPファイ
ル記憶部14に格納されている完全超逐次プログラムH
SPを修正する。テスト・デバッグが完了したならば、
完全超逐次プログラムHSPをHSPファイル記憶部1
4に保存する。
A test is executed by the test execution unit 15 on the completely hyper sequential program HSP. here,
If there is a bug, the complete hyper sequential program H stored in the HSP file storage unit 14 using the debug device 16
Modify SP. Once the test debug is complete,
Complete hyper sequential program HSP HSP file storage unit 1
Save to 4.

【0210】次に、非決定性導入装置17で変更装置2
5を介して完全超逐次プログラムHSPの実行順序を変
更し、別の完全超逐次プログラムHSPを生成する。こ
の完全超逐次プログラムHSPに対して、同様のテスト
・デバッグを繰り返しながら、完全超逐次プログラムH
SPをHSPファイル記憶部14に蓄積していく。すな
わち、良い非決定性を1つの部分超逐次プログラムとし
て表現する替わりに、複数の完全超逐次プログラムとし
て表現したものである。非決定性導入装置17による良
い非決定性導入が完了したならば、最終的にHSPファ
イル記憶部14に蓄積された完全超逐次プログラムHS
Pの集合から、並行化装置18で並行プログラムが生成
され、第2CPファイル記憶部19に格納される。
Next, the nondeterministic introduction device 17 changes the change device 2
The execution order of the perfect hyper-sequential program HSP is changed via 5 to generate another perfect hyper-sequential program HSP. While repeating the same test and debug for this complete hyper sequential program HSP, complete hyper sequential program HSP
The SP is accumulated in the HSP file storage unit 14. That is, instead of expressing good nondeterminism as one partial hypersequential program, it is expressed as a plurality of complete hypersequential programs. When the good non-deterministic introduction is completed by the non-deterministic introduction device 17, the complete hyper-sequential program HS finally stored in the HSP file storage unit 14 is completed.
A parallel program is generated from the set of P by the parallelization device 18 and stored in the second CP file storage unit 19.

【0211】(実施例7)本実施例において並行プログ
ラム作成支援装置の構成は、実施例6と同様であり(図
70)、その並行プログラム作成手順が異なっているの
で、図示は省略する。図71は、本実施例における並行
プログラム作成方法の概略手順を説明するためのフロー
チャートである。
(Seventh Embodiment) In the present embodiment, the configuration of the parallel program creation support device is the same as that of the sixth embodiment (FIG. 70), and the parallel program creation procedure is different, so that the illustration is omitted. FIG. 71 is a flow chart for explaining the outline procedure of the parallel program creating method in the present embodiment.

【0212】(1) ステップA1:モデル化 対象の並行システムに対し、並行性を用いた自然なモデ
ル化を行う。また、各プロセス構造を決定する。更に、
該プロセス内を並行プログラム等を用いたプログラミン
グにより、並行構造を有する並行プログラムをソースプ
ログラムとして記述する。このソースプログラムには、
バグが潜在的に存在する可能性がある。 (2) ステップA2:逐次化 デフォルト逐次性を導入することによって、並行プログ
ラムを逐次構造の超逐次プログラムに変換する。本実施
例では、メタレベルにおいてデフォルト逐次性を導入す
る。ここで、メタレベルとはソースプログラムそのもの
のレベルについていうのではなく、ソースプログラムの
実行を管理するレベルをいう。例えば、並行プログラム
で記述されたソースプログラムを、それとは別に管理さ
れるスケジューラによって逐次的に実行することを保障
したプログラムのソースプログラムに変換する。
(1) Step A1: Modeling Natural modeling using concurrency is performed on the target parallel system. Also, each process structure is determined. Furthermore,
A parallel program having a parallel structure is described as a source program by programming in the process using a parallel program or the like. This source program contains
Potential bugs may exist. (2) Step A2: Serialization A default program is introduced to convert a parallel program into a hyperstructured program with a sequential structure. In this example, default seriality is introduced at the meta level. Here, the meta level does not mean the level of the source program itself, but the level of managing the execution of the source program. For example, a source program written in a parallel program is converted into a source program of a program guaranteed to be sequentially executed by a scheduler managed separately from the source program.

【0213】(3) ステップA3:超逐次プログラム
のテスト・デバッグ ステップA2で変換された超逐次プログラムに対して、
テスト・デバッグを行う。すなわち、テスト実行装置に
より逐次プログラムをテスト実行した結果に基づいて、
デバッグ装置により超逐次プログラムからバグを除去す
る。ここでのテスト・デバッグは、逐次プログラムにお
ける通常のテスト・デバッグ方法と同様に行うことがで
きる。超逐次プログラムが正常に動作することが保障さ
れるまで、このテスト・デバッグを行う。
(3) Step A3: Test / Debug of Hyper Sequential Program For the hyper sequential program converted in Step A2,
Test and debug. That is, based on the result of test execution of sequential programs by the test execution device,
The debugging device removes bugs from the hyper sequential program. The test / debug here can be performed in the same manner as the normal test / debug method in the sequential program. This test and debug is performed until it is guaranteed that the hyper sequential program operates normally.

【0214】(4) ステップG1:並行模擬プログラ
ム化 ステップA3でテスト・デバッグが行われた超逐次プロ
グラムに対し、並行化の候補となるプロセス群を導入
し、変更装置20によって複数の並行模擬動作系列を生
成する。本実施例では、メタレベルにおいて並行模擬動
作系列を導入する。
(4) Step G1: Parallel Simulated Program Creation A process group that is a candidate for parallelization is introduced into the hyper sequential program that has been tested and debugged in Step A3, and a plurality of parallel simulated operations are performed by the change device 20. Generate a series. In this embodiment, a parallel simulated operation sequence is introduced at the meta level.

【0215】(5) ステップG2:並行模擬動作系列
の実行・確認 ステップG1で得られた並行模擬動作系列をステップA
3でテスト・デバッグが行われた超逐次プログラムを用
いて実行し、実行結果の確認を行う。この実行は、プロ
グラムが並行に動作する状況を超逐次プログラム上で模
擬的に再現している。ユーザは、各動作結果が正しいか
否かを並行模擬実行装置に記録する。
(5) Step G2: Execution / Confirmation of Parallel Simulated Operation Sequence The parallel simulated operation sequence obtained in Step G1 is processed in Step A.
Execute using the hyper-sequential program that was tested and debugged in 3 and confirm the execution result. This execution simulates the situation in which the programs operate in parallel on the hyper sequential program. The user records in the parallel simulation execution device whether or not each operation result is correct.

【0216】(6) ステップG3:良い非決定性の選
択による部分逐次化 ステップG2の実行結果から、正しく実行された並行模
擬動作系列を許容し、かつ実行の正しくない並行模擬動
作系列を排除する非決定性を導入して、良い非決定性と
して登録する。ステップG1〜ステップG3の処理を所
定の回数繰り返し、良い非決定性の範囲を徐々に拡大し
ていく。
(6) Step G3: Partial serialization by selection of good non-determinism From the execution result of step G2, a non-determined process that allows a correctly executed parallel simulated motion sequence and excludes an incorrectly executed parallel simulated motion sequence Introduce sex and register as good nondeterminism. The processes of steps G1 to G3 are repeated a predetermined number of times to gradually expand the range of good nondeterminism.

【0217】(7) ステップA7:並行化コンパイル 良い非決定性の導入された部分超逐次プログラムのう
ち、無害な非決定性部分を抽出し、その部分を並行化す
ることで、部分超逐次プログラム全体を並行プログラム
に変換する。すなわち、並行化に関する情報が導入され
なかった部分に関しては、デフォルト逐次性を並行プロ
グラムに反映させて(例えば、ソースプログラム自体に
埋め込む)、メタレベルのデフォルト逐次性を解除す
る。
(7) Step A7: Parallelization Compile A harmless nondeterministic part is extracted from the partial hypersequential program with good nondeterminism introduced, and the part is parallelized to generate the partial hypersequential program as a whole. Convert to a concurrent program. That is, with respect to the portion where the information about parallelization is not introduced, the default seriality is reflected in the concurrent program (for example, embedded in the source program itself) to cancel the meta-level default seriality.

【0218】図72は、ユーザが想定していた並行プロ
グラムモデルの例である。ここで、P1、P2、P3等
はプログラムが実行される単位を表しており、これらを
プロセスと呼ぶ。同図の例は、ユーザの意図においてプ
ロセスP3、P4、P5は並行実行され、プロセスP
7、P8、P9は逐次実行されることを表している。更
に、プロセスP2、P3、P4、P5、P6からなるプ
ロセス群と、プロセスP7、P8、P9からなるプロセ
ス群も並行実行可能である。
FIG. 72 shows an example of a concurrent program model which the user has assumed. Here, P1, P2, P3, etc. represent units in which the program is executed, and these are called processes. In the example shown in the figure, the processes P3, P4, and P5 are executed in parallel as intended by the user, and the process P
7, P8 and P9 indicate that they are sequentially executed. Furthermore, the process group including the processes P2, P3, P4, P5, and P6 and the process group including the processes P7, P8, and P9 can be executed in parallel.

【0219】超逐次プログラムHSPは、逐次化装置1
2により並行モデルにおけるプロセスの前後関係を壊さ
ない範囲で、全てのプロセスを一列に並べて得られる。
The hyper-sequential program HSP is the serialization device 1
According to 2, all processes can be obtained by arranging them in a line so long as the context of the processes in the parallel model is not broken.

【0220】図73は、図72の並行プログラムから得
られる超逐次プログラムHSPの実行系列をモデル化し
た例である。このように逐次化モデルでは、並行に実行
されるプロセスP3、P4、P5等は任意の順で、場合
によっては離れた位置に置かれるが、これらより先に実
行されるべきプロセスP1、P2は、プロセスP3、P
4、P5のいずれよりも前に置かれ、またこれらより後
に実行されるべきプロセスP6、P10は、プロセスP
3、P4、P5のいずれよりも後に置かれる。同様に、
プロセスP2、P3、P4、P5、P6からなるプログ
ラム群と、プロセスP7、P8、P9からなるプログラ
ム群を逐次化した際の群の間の前後関係は任意で、場合
によっては両方の群のプロセスが逐次モデル上に交互に
表れることもある。
FIG. 73 shows an example in which the execution sequence of the hyper sequential program HSP obtained from the parallel program of FIG. 72 is modeled. In this way, in the serialization model, the processes P3, P4, P5, etc. that are executed in parallel are placed in an arbitrary order and in some cases separated positions, but the processes P1, P2 to be executed earlier than these are , Processes P3, P
Processes P6 and P10 which are to be placed before any of P4 and P5 and to be executed after these are
It is placed after any of 3, P4, and P5. Similarly,
When the program group including the processes P2, P3, P4, P5, and P6 and the program group including the processes P7, P8, and P9 are serialized, the context between the groups is arbitrary, and in some cases, the processes of both groups are processed. May appear alternately on the model.

【0221】超逐次プログラムHSPは、ユーザによる
入力装置4からの指示により、テスト実行装置15に入
力され、テスト実行が行われる。テスト実行装置15
は、テスト実行の結果を出力装置に提示する。ユーザ
は、このテスト実行の結果に基づいて超逐次プログラム
HSPに対し、入力装置4を用いて所定のテスト・デバ
ッグを行うことができる。また、ユーザは超逐次プログ
ラムHSPに対して所定のテスト・デバッグを行った
後、再度入力装置4からテスト実行の指示を与える。こ
れにより、テスト・デバッグの行われた超逐次プログラ
ムHSPは、テスト実行装置15に入力され、再度テス
ト実行が行われる。このテスト・デバッグは、プログラ
ムHSPが正常に動作することを確認するまで繰り返し
行われる。
The super-sequential program HSP is input to the test execution device 15 according to an instruction from the input device 4 by the user, and the test execution is performed. Test execution device 15
Presents the result of the test execution on the output device. The user can perform a predetermined test / debug using the input device 4 on the hyper sequential program HSP based on the result of the test execution. Further, the user gives a test execution instruction from the input device 4 again after performing a predetermined test / debug on the hyper sequential program HSP. As a result, the hyper-sequential program HSP subjected to the test / debug is input to the test execution device 15 and the test execution is performed again. This test / debug is repeated until it is confirmed that the program HSP operates normally.

【0222】テスト・デバッグにより正常に動作するこ
とを確認した時点で、非決定性入力装置17により超逐
次プログラムを部分逐次プログラムへ変換する。まず、
超逐次プログラムを複数の並行模擬プログラムへ変換
し、並行模擬プログラムの実行結果より、良い非決定性
に関する情報を蓄積する。この手順を図74に示す。こ
の図74に示す手順に従い、図73の逐次モデルを並行
模擬モデルへ変換し、部分逐次モデルを得るまでの過程
の具体例を図75〜図78に示す。
When the normal operation is confirmed by the test / debug, the non-deterministic input device 17 converts the hyper sequential program into a partial sequential program. First,
Converts a hyper sequential program into multiple concurrent simulation programs and accumulates information about good nondeterminism from the execution results of the concurrent simulation programs. This procedure is shown in FIG. 75 to 78 show specific examples of the process of converting the sequential model of FIG. 73 into a parallel simulation model and obtaining a partial sequential model according to the procedure shown in FIG. 74.

【0223】以下、この例の手順について説明する。The procedure of this example will be described below.

【0224】図75(a)ではポインティングデバイス
等によって、並行模擬範囲としてP3、P4、P5が選
ばれる(ステップH1)。更に、各々のプロセスが単独
で並行化の単位に指定される(ステップH2)。図75
では、並行化単位が色の違いによって区別される。超逐
次プログラムでは、この並行模擬範囲の内部でプロセス
はP3、P4、P5の順番で実行される。
In FIG. 75 (a), P3, P4, and P5 are selected as parallel simulation ranges by a pointing device or the like (step H1). Further, each process is independently designated as a parallelization unit (step H2). Fig. 75
Then, the parallelization units are distinguished by the difference in color. In the hyper sequential program, the processes are executed in the order of P3, P4, and P5 within this parallel simulation range.

【0225】図75(b)では、並行化単位の置き換え
としてP4、P5が置き換えられ(ステップH3)、一
つの並行模擬動作系列が獲得される。この並行模擬動作
系列では、並行模擬範囲の内部でプロセスはP3、P
5、P4の順番で実行される。このプログラムを実行し
て実行結果が保証されると(ステップH4)、図75
(c)のようなプログラムが獲得される(ステップH
5)。この部分逐次プログラムでは、並行模擬範囲の内
部でプロセスP3を実行した後にP4とP5が並行に実
行される。
In FIG. 75 (b), P4 and P5 are replaced as replacement of the parallelization unit (step H3), and one parallel simulated motion sequence is obtained. In this parallel simulation operation sequence, the processes are P3, P within the parallel simulation range.
5 and P4 are executed in this order. When this program is executed and the execution result is guaranteed (step H4), FIG.
A program like (c) is obtained (step H
5). In this partial sequential program, after the process P3 is executed within the parallel simulation range, P4 and P5 are executed in parallel.

【0226】更に、同一範囲内での非決定性の拡大がユ
ーザによって指示されると(ステップH6)、図76
(a)では単独のプロセスP3と2つのプロセスの組P
4&P5が置き換えられ(ステップH3)、もう一つの
並行模擬動作系列が獲得される。この並行模擬動作系列
では、並行模擬範囲の内部でプロセスはP4とP5が並
行に実行された後にP3が実行される。このプログラム
を実行して正しさが確認されると(ステップH4)、図
76(b)のような非決定性を持つプログラムが獲得さ
れる(ステップH5)。この部分逐次プログラムでは、
並行模擬範囲の内部でプロセスP3、P4、P5が並行
に実行される。これによって、この並行模擬範囲内での
非決定性は十分となるので、ステップH6からステップ
H7に進み、並行範囲の拡大がユーザによって指示され
ると(ステップH7)、図77〜図78に示すように、
ステップH1に戻って同様の処理を繰り返す。
Further, when the user instructs the expansion of nondeterminism within the same range (step H6), FIG.
In (a), a single process P3 and a set P of two processes P
4 & P5 is replaced (step H3), and another parallel simulated motion sequence is acquired. In this parallel simulation operation sequence, the process executes P3 after P4 and P5 are executed in parallel within the parallel simulation range. When this program is executed and the correctness is confirmed (step H4), a program having nondeterminism as shown in FIG. 76 (b) is acquired (step H5). In this partial sequential program,
The processes P3, P4, and P5 are executed in parallel within the parallel simulation range. As a result, the nondeterminism within this parallel simulation range is sufficient, so that the process proceeds from step H6 to step H7, and when the user instructs the expansion of the parallel range (step H7), as shown in FIGS. 77 to 78. To
Returning to step H1, the same processing is repeated.

【0227】良い非決定性に関する情報がインクリメン
タルに導入され得られた部分逐次プログラムPHSP
は、ユーザからの指示により、並行化装置18に入力さ
れる。この並行化装置18では、良い非決定性のみを持
つ部分逐次プログラムPHSPを並行プログラムCPと
して第2CPファイル記憶部19に記録する。ユーザ
は、このプログラムCPを出力装置5によって見ること
ができるとともに、最終的なテスト・デバッグを行うこ
とができる。
Partial sequential program PHSP obtained by incrementally introducing information about good nondeterminism
Is input to the parallelization device 18 according to an instruction from the user. In the parallelization device 18, the partial sequential program PHSP having only good nondeterminism is recorded in the second CP file storage unit 19 as the parallel program CP. The user can see the program CP by the output device 5 and can perform final test / debug.

【0228】本実施例によれば、超逐次プログラム上で
並行プログラムの動作を十分に確認することができる。
また、超逐次プログラムに対して並行化の候補となる範
囲を指定することで、超逐次プログラムを段階的に並行
プログラムへ変換することができる。更に、並行模擬動
作系列に基づく逐次実行で正しく動作することが確認さ
れた非決定性のみを許容する並行性を導入することで、
正しく動作する並行プログラムを得ることができる。こ
れによって、並行プログラムのテスト・デバッグが更に
容易となるという利点がある。
According to this embodiment, the operation of the parallel program can be sufficiently confirmed on the hyper sequential program.
Further, by designating a range that is a candidate for parallelization with respect to the hyper-sequential program, the hyper-sequential program can be converted into a parallel program stepwise. Furthermore, by introducing concurrency that allows only non-determinism that is confirmed to operate correctly by sequential execution based on the parallel simulated operation sequence,
You can get a concurrent program that works correctly. This has the advantage of making it easier to test and debug concurrent programs.

【0229】(実施例8)本実施例は、図1のように構
成されたコンピュータシステムにおいて、図79に示す
ように各プロセッサ1−1〜1−Nに少なくとも1個以
上のプロセスA〜Dが登録され、それぞれのプロセスは
並行/並列に動作しており、互いにメッセージを交換し
ながら情報交換して処理を行うというプロセス実行環境
において、並行プログラムの作成を行う例である。
(Embodiment 8) In this embodiment, in the computer system configured as shown in FIG. 1, at least one process A to D is provided to each processor 1-1 to 1-N as shown in FIG. Is registered, each process is operating in parallel / parallel, and an example in which a parallel program is created in a process execution environment in which information is exchanged while exchanging messages with each other to perform processing.

【0230】本実施例では、並行プログラムのテストを
超逐次プログラムに対して行うが、バグのあった場合は
ソースコードたる並行プログラムを修正せずに、逐次化
ルールを修正することでテスト・デバッグを行う。
In this embodiment, the test of the parallel program is performed on the hyper-sequential program. However, if there is a bug, the serial program is not modified, and the serialization rule is modified to perform the test / debug. I do.

【0231】図80は、本実施例に係る並行プログラム
作成支援装置の概略構成を示す図である。
FIG. 80 is a diagram showing the schematic structure of a parallel program creation support apparatus according to this embodiment.

【0232】図80において、CPファイル記憶部11
に格納されている第1並行プログラムは、逐次化装置1
2において逐次化ルール記憶部13に格納された逐次化
ルールに従って、メタレベルにおいてデフォルト逐次性
が導入されることにより、超逐次プログラム(HSP)
に変換され、HSPファイル記憶部14に記録される。
ここで、逐次化ルールはソースプログラム(CPファイ
ル)を実行装置22で実行させた際に得られる実行ログ
情報となり、HSPファイル記憶部14はCPファイル
と逐次化ルールである実行ログ情報の対からなる。ユー
ザは、この超逐次プログラムHSPを出力装置5によっ
て見ることができる。この超逐次プログラムHSPは、
ユーザによる入力装置4からの指示によってテスト実行
装置15に入力され、テスト実行が行われる。
In FIG. 80, the CP file storage unit 11
The first concurrent program stored in is the serialization device 1
In accordance with the serialization rule stored in the serialization rule storage unit 13 in 2, the default seriality is introduced at the meta level, so that the hyper sequential program (HSP)
And is recorded in the HSP file storage unit 14.
Here, the serialization rule becomes the execution log information obtained when the source program (CP file) is executed by the execution device 22, and the HSP file storage unit 14 is composed of a pair of the CP file and the execution log information which is the serialization rule. Become. The user can see the hyper sequential program HSP by the output device 5. This super sequential program HSP is
The user inputs an instruction from the input device 4 to the test execution device 15, and the test is executed.

【0233】テスト実行装置15は、テスト実行の結果
(実行ログ)を出力装置5に提示する。ユーザは、この
テスト実行の結果に基づいて、逐次化ルール修正装置2
6を用いて逐次化ルール記憶部13に格納されている逐
次化ルールを修正し、超逐次プログラムHSPに対し所
定のテスト・デバッグを行うことができる。
The test execution device 15 presents the result of the test execution (execution log) to the output device 5. The user uses the serialization rule correction device 2 based on the result of this test execution.
6 can be used to modify the serialization rule stored in the serialization rule storage unit 13 to perform predetermined test / debug on the hyper-sequential program HSP.

【0234】ユーザは、このように逐次化ルールの修正
により超逐次プログラムHSPに対して所定のテスト・
デバッグを行った後、入力装置4から再度テスト実行の
指示を与える。これにより、テスト・デバッグの行われ
た超逐次プログラムHSPは、テスト実行装置15に入
力され、再度テスト実行が行われる。このテスト・デバ
ッグは、超逐次プログラムHSPが正常に動作すること
を確認するまで繰り返し行われる。
By modifying the serialization rule in this way, the user can perform a predetermined test on the hyper sequential program HSP.
After performing the debugging, the test execution instruction is given again from the input device 4. As a result, the hyper-sequential program HSP subjected to the test / debug is input to the test execution device 15 and the test execution is performed again. This test / debug is repeated until it is confirmed that the hyper sequential program HSP operates normally.

【0235】そして、本実施例ではテスト・デバッグに
より正常に動作することを確認した時点で、逐次化ルー
ル修正装置26により逐次化ルール記憶部13に格納さ
れている逐次化ルールが修正され、この修正の後の逐次
化ルールが逐次化ルール記憶部13に新たに記録され
る。この逐次化ルールの修正によって、超逐次プログラ
ムに対して良い非決定性に関する情報が部分的に導入さ
れる。超逐次プログラムHSPは部分超逐次プログラム
PHSPに変換される。
Then, in the present embodiment, when it is confirmed by the test / debug that the operation is normal, the serialization rule correction device 26 corrects the serialization rule stored in the serialization rule storage unit 13. The corrected serialization rule is newly recorded in the serialization rule storage unit 13. This modification of the serialization rules partially introduces information about good nondeterminism into hypersequential programs. The hyper sequential program HSP is converted into a partial hyper sequential program PHSP.

【0236】次に、部分超逐次プログラムPHSPは、
潜在的に存在する無害な並行性を顕在化させるために、
並行化装置18にて部分超逐次プログラムPHSPにお
ける逐次化ルールを分割基準指定装置23からの指示に
基づいて各プロセス毎に分割し、各プロセス毎の起動順
序制御を可能とする第2並行プログラム19に変換す
る。
Next, the partial hyper-sequential program PHSP is
To uncover potentially harmless concurrency,
The second parallel program 19 that divides the serialization rule in the partial hyper-sequential program PHSP into each process in the parallelization device 18 based on an instruction from the division reference designating device 23 and enables the activation order control of each process. Convert to.

【0237】図81は、本実施例に係る並行プログラム
作成方法の概略手順を説明するための図である。
FIG. 81 is a view for explaining the schematic procedure of the parallel program creating method according to the present embodiment.

【0238】(1) ステップA1:モデル化 対象の並行システムに対し、並行性を用いた自然なモデ
ル化を行う。また、各プロセス構造を決定する。更に、
該プロセス内を並行プログラム等を用いたプログラミン
グにより、並行構造を有する第1並行プログラムをソー
スプログラムとして記述する。このソースプログラムに
は、バグが潜在的に存在する可能性がある。
(1) Step A1: Modeling Natural modeling using concurrency is performed on the target parallel system. Also, each process structure is determined. Furthermore,
The first parallel program having a parallel structure is described as a source program by programming in the process using a parallel program or the like. This source program may have potential bugs.

【0239】(2) ステップA2:逐次化 デフォルト逐次性を導入することによって、第1並行プ
ログラムを逐次構造の超逐次プログラムに変換する。本
実施例では、メタレベルにおいてデフォルト逐次性を導
入する。ここで、メタレベルとはソースプログラムその
もののレベルについていうのではなく、ソースプログラ
ムの実行を管理するレベルをいう。例えば、並行プログ
ラムで記述された第1並行プログラムを、それとは別に
管理されるスケジューラによって逐次的に実行すること
をいう。すなわち、ここでいう逐次化とは、CPファイ
ル記憶部11と逐次化ルール記憶部13を対応付けるこ
とである。よって、得られる超逐次プログラムは、第1
並行プログラムと逐次化ルールの対からなるとする。
(2) Step A2: Serialization By introducing default seriality, the first concurrent program is converted into a hyperstructured program having a sequential structure. In this example, default seriality is introduced at the meta level. Here, the meta level does not mean the level of the source program itself, but the level of managing the execution of the source program. For example, it means to sequentially execute the first parallel program described in the parallel program by a scheduler managed separately from the first parallel program. That is, the term “serialization” here means associating the CP file storage unit 11 and the serialization rule storage unit 13. Therefore, the obtained hyper sequential program is the first
It consists of a pair of concurrent programs and serialization rules.

【0240】(3) ステップA3:超逐次プログラム
のテスト・デバッグ ステップA2で逐次化された超逐次プログラムを実行
し、テストを行う。この際のテスト実行は、第1並行プ
ログラムを逐次化ルールに基づいて動作させることをい
う。機能面のバグがある場合は、第1並行プログラムを
修正し、ステップA2へ戻る。タイミング面のバグがあ
る場合は、ステップJ1に移行する。タイミング面のバ
グがない場合は、その逐次化ルールを保存してステップ
A4に移行する。
(3) Step A3: Test / Debug of Hyper Sequential Program The hyper serial program serialized in step A2 is executed and tested. The test execution at this time means operating the first concurrent program based on the serialization rule. If there is a functional bug, the first concurrent program is modified and the process returns to step A2. If there is a timing bug, the process moves to step J1. If there is no timing bug, the serialization rule is saved and the process proceeds to step A4.

【0241】(4) ステップJ1:逐次化ルールの修
正 ステップA3でタイミング面のバグがある場合は、逐次
化ルールを修正した後、ステップA2に戻る。
(4) Step J1: Correction of Serialization Rule If there is a timing bug in step A3, the serialization rule is corrected, and then the process returns to step A2.

【0242】(5) ステップA4:良い非決定性の導
入 良い非決定性の追加が必要な場合は、逐次化ルールを修
正した後、ステップA2に戻る。良い非決定性の追加が
必要ない場合は、ステップA7に移行する。
(5) Step A4: Introduction of Good Nondeterminism When it is necessary to add good nondeterminism, after correcting the serialization rule, the process returns to step A2. If it is not necessary to add good nondeterminism, the process proceeds to step A7.

【0243】(6) ステップA7:並行化コンパイル ステップA3で保存された逐次化ルールから無害な非決
定性部分を抽出し、その部分を並行化することで、部分
超逐次プログラム全体を第2並行プログラムに変換す
る。
(6) Step A7: Parallelization Compile The harmless nondeterministic part is extracted from the serialization rule saved in step A3, and the part is parallelized, whereby the entire partial hypersequential program is converted into the second parallel program. Convert to.

【0244】図82は、図79に示したようなプロセス
間通信のある並行プログラムをメタレベルにおいてデフ
ォルト逐次性を導入して実行した結果の実行履歴である
ログ情報の一例を示す図である。
FIG. 82 is a diagram showing an example of log information which is an execution history as a result of execution of a parallel program with inter-process communication as shown in FIG. 79 by introducing default seriality at the meta level.

【0245】ユーザは、このログ情報を出力装置5によ
って見ることができる。図82において、縦のスクロー
ルバーは任意の時刻のログ情報を見るために表示情報を
スクロールするために用い、横のスクロールバーは良い
非決定性を導入し複数の実行可能な候補がある時に、そ
れら情報を見るために用いる。このように縦と横のスク
ロールバーを用いることにより、全ログ情報中の任意の
場所を見ることができる。更に、画面上部に示された
「順序修正」と「非決定性導入」は、後述するそれぞれ
の操作を要求する時に、選択して処理を指示するために
用いる。
The user can see this log information by the output device 5. In FIG. 82, the vertical scroll bar is used to scroll the display information to see the log information at any time, and the horizontal scroll bar introduces a good nondeterminism, and when there are multiple feasible candidates, Used to see information. By using the vertical and horizontal scroll bars in this way, it is possible to see an arbitrary place in all log information. Furthermore, “order correction” and “non-determinism introduction” shown at the top of the screen are used to select and instruct processing when requesting each operation described later.

【0246】更に、ユーザは入力装置4を介して指示を
行うことによって、HSPファイル記憶部14に保存さ
れている第1並行プログラムと実行ログ情報ファイルを
テスト実行装置15に入力し、超逐次プログラムHSP
としてテスト実行を行うことができる。
Furthermore, the user inputs an instruction via the input device 4 to the first execution program and the execution log information file saved in the HSP file storage unit 14 to the test execution device 15, and the hyper sequential program HSP
You can perform a test run as.

【0247】テスト実行装置15は、テスト実行の結果
を出力装置5に提示する。ユーザは、このテスト実行の
結果に基づいて、超逐次プログラムHSPに対し入力装
置4を用いて所定のテスト・デバッグを行うことができ
る。テスト・デバッグは、機能面の不具合についてはC
Pファイル記憶部11内の第1並行プログラムを修正
し、タイミング面の不具合については逐次化ルール記憶
部13内の実行ログ情報ファイルを修正し、再度、修正
された第1並行プログラムと実行ログ情報を対応付けし
直し、超逐次プログラムを再作成する。
The test execution device 15 presents the result of the test execution to the output device 5. The user can perform predetermined test / debug on the hyper sequential program HSP using the input device 4 based on the result of the test execution. For test / debug, please refer to C for functional defects.
The first parallel program in the P-file storage unit 11 is corrected, and regarding the timing problem, the execution log information file in the serialization rule storage unit 13 is corrected, and the corrected first parallel program and execution log information are corrected again. And re-create the hyper-sequential program.

【0248】ユーザは、超逐次プログラムHSPに対し
て前記テスト・デバッグを行った後、再度入力装置4か
らテスト実行の指示を与える。これにより、テスト・デ
バッグの行われた超逐次プログラムHSPは、テスト実
行装置15に入力され、再度テスト実行が行われる。こ
のテスト・デバッグは、超逐次プログラムHSPが正常
に動作することを確認するまで繰り返し行われる。
After performing the test / debug on the hyper sequential program HSP, the user again gives a test execution instruction from the input device 4. As a result, the hyper-sequential program HSP subjected to the test / debug is input to the test execution device 15 and the test execution is performed again. This test / debug is repeated until it is confirmed that the hyper sequential program HSP operates normally.

【0249】テスト・デバッグにより正常に動作するこ
とを確認した時点で、逐次化ルール修正装置26により
超逐次プログラムに対して良い非決定性に関する情報を
部分的に導入していく。逐次化ルール修正装置26より
導入された良い非決定性に関する情報は、ログ情報に反
映され、HSPファイル記憶部14に記録される。
When it is confirmed by test / debug that the operation is normal, the serialization rule modification device 26 partially introduces information about good nondeterminism into the hyper-sequential program. The information about the good nondeterminism introduced by the serialization rule correction device 26 is reflected in the log information and recorded in the HSP file storage unit 14.

【0250】次に、逐次化ルール修正装置26により良
い非決定性に関する情報が導入された超逐次プログラム
(部分超逐次プログラムPHSP)について、ユーザか
らの指示に従ってテスト実行装置15によりテスト実行
を行い、テスト・デバッグを行う。この場合、部分超逐
次プログラムPHSPの振る舞いは、良い非決定性に関
する情報の導入された部分については、非決定的な振る
舞いをするので、その振る舞い全てについてテスト・デ
バッグを行うことが好ましい。このようにして、テスト
・デバッグ及び良い非決定性に関する情報の導入を繰り
返し、良い非決定性に関する情報を徐々に付加してい
く。
Next, the hyperserial program (partial hyperserial program PHSP) into which the information about good nondeterminism is introduced by the serialization rule modification device 26 is tested by the test execution device 15 according to the instruction from the user, and the test is executed. -Perform debugging. In this case, the behavior of the partial hyper-sequential program PHSP behaves in a non-deterministic manner with respect to the portion in which the information about good non-determinism is introduced, and therefore it is preferable to test / debug all the behavior. In this way, the test / debugging and the introduction of the information on the good nondeterminism are repeated, and the information on the good nondeterminism is gradually added.

【0251】良い非決定性に関する情報がインクリメン
タルに導入され得られた部分超逐次プログラムPHSP
は、ユーザからの指示により並行化装置18に入力され
る。この並行化装置18では、部分超逐次プログラムP
HSPのうち、無害な非決定性部分を抽出し、部分超逐
次プログラムPHSP全体を並行化する。即ち、集中ロ
グ情報を各プロセス毎にその起動順序を規定するように
分割し、各プロセス毎に起動制御を行うようにすること
で、デフォルト逐次性を解除し、部分超逐次プログラム
を並行プログラムに変換して第2CPファイル記憶部1
9に記録する。ユーザは、この並行プログラムを出力装
置によって見ることができるとともに、最終的なテスト
・デバッグを行うことができる。
Partial hyper-sequential program PHSP obtained by incrementally introducing information about good nondeterminism
Is input to the parallelization device 18 according to an instruction from the user. In the parallelization device 18, the partial hyper-sequential program P
The harmless nondeterministic part of the HSP is extracted, and the entire partial hypersequential program PHSP is parallelized. That is, the centralized log information is divided so as to define the activation order for each process, and the activation control is performed for each process, thereby canceling the default sequentiality and converting the partial hyper sequential program into a parallel program. Converted to the second CP file storage unit 1
Record at 9. The user can see this parallel program on the output device and perform final test and debug.

【0252】図83は、まず、ステップA2〜ステップ
A4の処理に関する部分超逐次プログラムを構成するま
での部分の構成例を示す。以下に、それぞれの構成部分
の機能実現法について説明する。
FIG. 83 shows an example of the structure of parts up to the formation of the partial hyper-sequential program relating to the processing of steps A2 to A4. The method of realizing the function of each component will be described below.

【0253】図84に、プロセス間で交換されるメッセ
ージのフォーマットを示す。「宛先情報」には宛先プロ
セス名等の情報伝達先を指定する情報がセットされ、
「送信元情報」には送信元プロセス名等の送信元を規定
する情報がセットされる。「メッセージ本体」には、プ
ロセス間で交換するデータがセットされる。
FIG. 84 shows the format of messages exchanged between processes. In the "destination information", information that specifies the information transmission destination such as the destination process name is set,
In the "source information", information defining the source such as the source process name is set. Data exchanged between processes is set in the "message body".

【0254】ログ情報として保存される情報は、図84
のメッセージフォーマット中の宛先情報と送信元情報を
用いて生成される。以下の説明においては、ログ情報と
して宛先情報として宛先プロセス名を、送信元情報とし
て送信元プロセス名だけを用いるが、同一プロセスが複
数回利用される場合は、何回目の使用かの判別がつかな
くなるので、送信元情報を{プロセス名とプロセス起動
回数}からなるように拡張することができる。更に、あ
るプロセスの1回の起動中に複数回のメッセージ送信が
ある場合は、今回の起動後の何回目の送信かを特定する
ため、送信元情報を{プロセス名、プロセス起動回数、
メッセージ送信回数}からなるように拡張することがで
きる。更に、各プロセスが複数の処理の単位(メソッド
と以降呼ぶ)を持つ場合には、その情報も付加して送信
元情報は{プロセス名、メソッド名、メソッド起動回
数、メッセージ送信回数}とする事もできる。
Information stored as log information is shown in FIG.
It is generated by using the destination information and the source information in the message format of. In the following description, the destination process name is used as the destination information as the log information, and only the source process name is used as the source information. Since there is no more, the sender information can be expanded to include {process name and process activation count}. Furthermore, when a message is sent multiple times during one start of a process, the sender information is specified as {process name, number of process starts,
Message transmission count}. Furthermore, if each process has multiple processing units (hereinafter referred to as a method), add that information and make the sender information {process name, method name, method invocation count, message transmission count}. You can also

【0255】また、宛先情報も宛先プロセス名だけでな
く、宛先メソッド名を付加して{宛先プロセス名とメソ
ッド名}とすることもできる。もちろん、実行形態に応
じて宛先情報と送信元情報を組み合わせることができる
ため、計8通りの組み合わせが存在する。
Further, the destination information can be not only the destination process name but also the destination method name to be {destination process name and method name}. Of course, since the destination information and the source information can be combined according to the execution mode, there are a total of eight combinations.

【0256】まず、実行装置22について詳述する。前
述したように、第1並行プログラムをランダムに実行す
る。その際の実行ログを逐次化ルールとするため、本実
施例では、逐次化ルールとしてプロセス間の全ての通信
を一旦プロセス群制御部203に送り、処理待ちメッセ
ージ保存部204に蓄える。プロセス群制御部203
は、処理待ちメッセージ保存部204から順次メッセー
ジを取り出し、本来の宛先に対して再度送る。よってプ
ロセス群制御部203によって全プロセスの起動が逐次
的に制御されるため、第1並行プログラムは逐次的に処
理されるようになる。
First, the execution unit 22 will be described in detail. As described above, the first concurrent program is randomly executed. Since the execution log at that time is used as the serialization rule, in the present embodiment, all communication between processes is once sent to the process group control unit 203 and stored in the process waiting message storage unit 204 as the serialization rule. Process group control unit 203
Sequentially retrieves the messages from the pending message storage unit 204 and sends them again to the original destination. Therefore, since the process group control unit 203 sequentially controls the activation of all processes, the first concurrent program is sequentially processed.

【0257】この時、プロセス群制御部203によって
逐次的に処理されたメッセージは、ログ情報取得部20
2によって時系列にログ情報としてログ情報記憶部20
1に保存される。このログ情報が逐次化ルール記憶部1
3となり、以降の逐次実行時の実行制約条件となる。
At this time, the messages sequentially processed by the process group control unit 203 are the log information acquisition unit 20.
2, the log information storage unit 20 as the log information in time series
Stored in 1. This log information is stored in the serialization rule storage unit 1
3, which is an execution constraint condition for subsequent sequential execution.

【0258】図85は、プロセス間の通信をプロセス群
制御部203を経由して行う様子を示す。この例では、
プロセスAとBがプロセスCにメッセージを送信する
時、プロセスAとBのどちらのメッセージが先にプロセ
スCに届いても良いとする良い非決定性が存在する場合
であるが、実行時にたまたまプロセスAがプロセスBよ
り先にメッセージを送信したとすると、プロセス群制御
部203において{プロセスA→プロセスC}が先にロ
グ情報に記憶され、続いて{プロセスB→プロセスC}
が記憶される。図86に、その場合の逐次化ルールであ
るログ情報の一例を示す。
FIG. 85 shows how communication between processes is performed via the process group control unit 203. In this example,
When processes A and B send a message to process C, there is a good nondeterminism that either message of process A or B may reach process C first. If the process group control unit 203 stores the message before the process B, {process A → process C} is stored in the log information first, and then {process B → process C}.
Is stored. FIG. 86 shows an example of log information which is the serialization rule in that case.

【0259】次に、逐次化装置12において、CPファ
イル記憶部11に記憶されている第1並行プログラムと
上記のようにして得られた逐次化ルールであるログ情報
を対応付ける。これにより、並行性を持った第1並行プ
ログラムは、逐次化情報が付加された超逐次プログラム
に変換される。
Next, in the serialization device 12, the first parallel program stored in the CP file storage unit 11 is associated with the log information which is the serialization rule obtained as described above. As a result, the first parallel program having parallelism is converted into a hyper sequential program to which serialization information is added.

【0260】次に、テスト実行装置15におけるテスト
・デバッグの段階では、プロセス間で交換されるメッセ
ージをプロセス群制御部203において一旦受信し、ロ
グ情報記憶部201に記憶されたログ情報の順序に従っ
て本来の宛先に対して送信するようにする。このためプ
ロセス群制御部203は、処理待ちメッセージ保存部2
04に保存されたメッセージ中から、ログ情報に従った
順序でメッセージを取り出して送信する機構を有してい
る。
Next, in the test / debug stage of the test execution apparatus 15, the process group control unit 203 once receives messages exchanged between processes, and in accordance with the order of the log information stored in the log information storage unit 201. Try to send to the original destination. For this reason, the process group control unit 203 uses the process waiting message storage unit 2
It has a mechanism for extracting and transmitting the messages from the messages stored in 04 in the order according to the log information.

【0261】上記のように、プロセス群制御部203で
メッセージ送信順序をログ情報に指定された順序で送信
するようにすることにより、並行プログラムの難しさの
一つである処理順序の非決定性を解決することができ、
処理の再現性が実現される。つまり、図85の例におい
て、あるテスト実行時にはプロセスBの方がプロセスA
より先にメッセージをプロセスCに送ったとしても、プ
ロセス群制御部203でログ情報に図86に示すように
プロセスAからのメッセージを先にプロセスCに送る旨
が記載されている場合は、プロセスBからのメッセージ
を処理待ちメッセージ保存部204に保存しておき、プ
ロセスAからのメッセージを受信しプロセスCに対して
送信した後、処理待ちメッセージ保存部204に保存し
ておいたプロセスBからのメッセージをプロセスCに送
る。
As described above, by making the process group control unit 203 transmit the message transmission order in the order specified in the log information, the nondeterminism of the processing order, which is one of the difficulties of the parallel program, is eliminated. Can be resolved,
Reproducibility of processing is realized. That is, in the example of FIG. 85, the process B is the process A when a certain test is executed.
Even if the message is sent to the process C earlier, if the process group control unit 203 describes in the log information that the message from the process A is sent to the process C first as shown in FIG. The message from B is stored in the pending message storage unit 204, the message from the process A is received and transmitted to the process C, and then the message from the process B stored in the pending message storage unit 204 is stored. Send message to process C.

【0262】図87に、プロセス群制御部203の処理
の流れを示す。
FIG. 87 shows a processing flow of the process group control unit 203.

【0263】ログ情報記憶部201に保存されたログ情
報に従って実行順番が一意に規定された超逐次プログラ
ムにおけるテスト・デバッグは、機能面に不具合がある
場合はソースプログラムを修正して上記処理ステップの
ステップA2から再度行う必要があるが、タイミングの
みに不具合がある場合は、容易にテスト・デバッグをす
る事ができる。つまり逐次化ルールであるログ情報を修
正し意図する順番にログ情報を書き換えれば良い。この
書換は、ログ情報修正部205によって行う。逐次化ル
ールであるログ情報の修正は、ユーザからの指示により
逐次化ルール修正装置26内のログ情報修正部205に
おいて行う。ログ情報修正部205は、図82に示すよ
うにその処理した順番(時系列)にログ情報を表示する
ことができる表示部を持つ。そしてタイミングのバグを
修正したいユーザは、ログ情報の順序を入れ換える入替
部を起動し、図88に示すように処理順序を交換したい
メッセージを指定する。図88の例では、2メッセージ
間の順序入れ替えを指示したが、複数メッセージの順序
を入れ換えることも可能である。もちろん1メッセージ
以上のメッセージを1つの集合としてとらえ、集合間で
の交換も可能である。そして、ログ情報修正部205に
は、ログ情報記憶部201のログ情報を入替部によって
指定されたように書き換える書換部があり、図88の例
の場合は図89のように変更される。また入れ替えメッ
セージの指定法としては、ポインティングデバイスを使
って該当メッセージを指定する方法や、画面上の行番号
をキーボードから指定する方法等がある。
In the test / debug in the hyper-sequential program whose execution order is uniquely defined according to the log information stored in the log information storage unit 201, if there is a functional defect, the source program is modified to perform the above-mentioned processing steps. It is necessary to perform again from step A2, but if there is a problem only in the timing, the test / debug can be easily performed. That is, the log information, which is the serialization rule, may be modified and the log information may be rewritten in the intended order. This rewriting is performed by the log information correction unit 205. The log information correction unit 205 in the serialization rule correction device 26 corrects the log information, which is the serialization rule, according to an instruction from the user. The log information correction unit 205 has a display unit capable of displaying the log information in the processing order (time series) as shown in FIG. Then, the user who wants to correct the timing bug activates the exchanging unit for exchanging the order of the log information, and designates the message whose processing order is to be exchanged as shown in FIG. 88. In the example of FIG. 88, the order change of two messages is instructed, but it is also possible to change the order of a plurality of messages. Of course, one or more messages can be regarded as one set and exchanged between the sets. Then, the log information correction unit 205 has a rewriting unit that rewrites the log information in the log information storage unit 201 as specified by the replacement unit, and in the case of the example of FIG. 88, it is changed as shown in FIG. 89. As a method of specifying the exchange message, there are a method of specifying the message using a pointing device, a method of specifying the line number on the screen from the keyboard, and the like.

【0264】上記のように、ログ情報を意図する順序に
並べ替えることによって、テスト実行時にプロセス群制
御部203が受信メッセージを本来の宛先プロセスに送
信する順番を変えることになるため、タイミングの不具
合を容易に修正することができるようになる。
As described above, by rearranging the log information in the intended order, the process group control unit 203 changes the order in which the received message is sent to the original destination process during the test execution. Can be easily modified.

【0265】例えば、図85において本来プロセスCは
プロセスBからのメッセージをプロセスAからのメッセ
ージより先に処理しなければならない場合に、ログ情報
に図86に示すようにプロセスAからのメッセージを先
に処理するようになっていたならば、上記の手順に従っ
てログ情報を図89に示すように修正すればよい。これ
によって、プロセス群制御部203のメッセージ処理順
番が変更されるため、処理のタイミングの不具合を解決
することができる。
For example, in FIG. 85, when the process C originally had to process the message from the process B before the message from the process A, the message from the process A as shown in FIG. If it is designed to process the log information, the log information may be corrected as shown in FIG. 89 according to the above procedure. As a result, the message processing order of the process group control unit 203 is changed, so that the problem of the processing timing can be solved.

【0266】このようなタイミングの不具合解決方法を
用いることによって、プロセスの処理順序を変更するた
めにソースプログラムを修正することなく、容易にテス
ト・デバッグをすることが可能となり、プログラム開発
の生産性が向上する。
By using such a timing problem solving method, it becomes possible to easily perform test / debug without modifying the source program in order to change the processing order of the process, and to improve the productivity of program development. Is improved.

【0267】次に、良い非決定性の導入方法について説
明する。
Next, a method for introducing good nondeterminism will be described.

【0268】良い非決定性は、ログ情報修正部205内
の非決定性導入部によってログ情報を修正することで行
う。これは、超逐次化されたプログラムにユーザが意図
的に非決定性を導入するものである。例えば図85に示
す処理において、プロセスAとプロセスBのどちらが先
にプロセスCにメッセージを送っても良い場合には、対
象となるログ情報を図90に示すように指定することに
よって行う。これによって、非決定性導入部は、指定さ
れたメッセージの順序制約を解除した形で、例えば図9
1(a)、図91(b)に示すようにログ情報記憶部2
01に記憶されたログ情報を修正する。図91(b)
は、図91(a)を横スクロールバーで右へシフトする
ように指示することによって得られる。この場合は2つ
のメッセージ順序の非決定性を導入した場合であるが、
更に多数のメッセージ順序の非決定性を導入する場合
は、順次右へシフトすることによってその一覧を見るこ
とができる。
Good nondeterminism is achieved by modifying the log information by the nondeterminism introducing unit in the log information modifying unit 205. This is where the user intentionally introduces nondeterminism into a hyper-serialized program. For example, in the process shown in FIG. 85, when either process A or process B may send the message to process C first, the target log information is designated as shown in FIG. 90. As a result, the non-determinism introducing unit releases the specified order constraint of the messages, for example, as shown in FIG.
1 (a) and the log information storage unit 2 as shown in FIG. 91 (b).
The log information stored in 01 is corrected. FIG. 91 (b)
Is obtained by instructing the horizontal scroll bar to shift to the right in FIG. 91 (a). In this case, we have introduced the nondeterminism of two message orders.
If you introduce more message order nondeterminism, you can view the list by shifting to the right sequentially.

【0269】図91では、プロセスAないしプロセスB
からのメッセージであれば、プロセスCにメッセージを
送り、続いて次のタイミングでも、プロセスAないしプ
ロセスBからのメッセージであれば、プロセスCにメッ
セージを送るように解釈する。プロセス群制御部203
が上記のようにログ情報を解釈するようにすることによ
って良い非決定性を扱うことが可能となる。これは、プ
ロセス群制御部203の処理における図87におけるス
テップK3において、メッセージ送信元として一致する
か否かのチェック対象が、一つから複数個に拡張される
ことによって実現できる。
In FIG. 91, process A and process B
If the message is from the process A, the message is sent to the process C. Then, at the next timing, if the message is from the process A or the process B, the message is sent to the process C. Process group control unit 203
By interpreting the log information as described above, it becomes possible to handle good nondeterminism. This can be realized by expanding the check target of whether or not there is a match as a message transmission source from one to a plurality of items in step K3 in FIG. 87 in the process of the process group control unit 203.

【0270】但し、上記例では、プロセスCがプロセス
AないしプロセスBから続けて2つのメッセージを受信
した場合でも、それらのメッセージを処理してしまう問
題点があるが、これは、先に受信したメッセージを次の
起動候補から削除することによって容易に防止すること
ができる。削除対象となるメッセージは、本実施例では
説明の容易のために、送信先情報をプロセス名のみで示
したが、図84の送信先情報説明で前述したように唯一
に特定できるので、未処理メッセージの情報を削除する
ことはない。
However, in the above example, even if the process C continuously receives two messages from the process A and the process B, there is a problem that those messages are processed. However, this is received first. This can be easily prevented by deleting the message from the next activation candidate. In the present embodiment, the message to be deleted is shown only by the process name for the destination information for ease of explanation, but since it can be uniquely identified as described above in the description of the destination information in FIG. 84, it is unprocessed. It does not delete the information in the message.

【0271】よって、この良い非決定性の導入によっ
て、外部からの非決定的な刺激に適切に反応でき、プロ
セスの柔軟性、再利用性、拡張性を実現できる。
Therefore, by introducing this good nondeterminism, it is possible to appropriately react to a nondeterministic stimulus from the outside and to realize flexibility, reusability, and expandability of the process.

【0272】上記の実施例では、良い非決定性を2つの
メッセージの到着順序に関して示したが、2つ以上の複
数のメッセージの到着順序に良い非決定性を与えること
も可能である。その場合でも、上記処理と同様にプロセ
ス群制御部203の処理における図87のステップK3
においてメッセージ送信元として一致するか否かのチェ
ック対象を、一つから複数個に拡張することによって解
決されるので、正しく動作することは明らかである。
In the above embodiment, the good nondeterminism is shown with respect to the arrival order of two messages, but it is also possible to give the good nondeterminism to the arrival order of two or more messages. Even in that case, the step K3 in FIG.
Since it is solved by expanding the check target for matching as the message transmission source from one to a plurality in (1), it is obvious that the operation is correct.

【0273】次に図81におけるステップA7と図80
の並行化装置18に関する並行化コンパイルのフェーズ
について詳述する。図92に、ステップA7の処理に関
する部分の構成例を示す。ここで、集中ログ情報記憶部
301はHSPファイル記憶部14内に保存されている
良い非決定性導入後の実行ログ情報を保存している記憶
部である。例えば図79におけるプロセス群が図93に
示すようなメッセージ交換を行った場合、図82で示し
たような超逐次プログラム用の集中ログ情報から、例え
ば図94のように良い非決定性が導入された集中ログ情
報に変換されたものが保存されているとする。
Next, step A7 in FIG. 81 and FIG.
The parallelization compilation phase relating to the parallelization device 18 will be described in detail. FIG. 92 shows an example of the configuration of a part related to the process of step A7. Here, the centralized log information storage unit 301 is a storage unit that stores the execution log information after the introduction of the good nondeterminism that is stored in the HSP file storage unit 14. For example, when the process group in FIG. 79 exchanges messages as shown in FIG. 93, good nondeterminism is introduced as shown in FIG. 94 from the centralized log information for hyper sequential program as shown in FIG. It is assumed that the converted log information is saved.

【0274】以下には、良い非決定性が導入された集中
ログ情報を各プロセス毎に分割する手順を図92、図9
4、図95を用いて説明する。集中ログ情報を分割する
基準は、分割基準指定装置23内の分割基準指定部30
3から指定する。この基準としては、例えば宛先プロセ
ス名であったり、宛先計算機番号であったりするが、以
下の説明では、宛先プロセス名を用いる。宛先名にメソ
ッド名も付加する場合には、分割基準として、{宛先プ
ロセス名、メソッド名}を指定して、宛先メソッド毎に
分割して分割ログを作ることも可能である。分割基準指
定部303では、この分割基準を保持している。
In the following, a procedure for dividing the centralized log information having good nondeterminism introduced into each process will be described with reference to FIGS.
4 and FIG. 95. The criterion for dividing the centralized log information is the division criterion specifying unit 30 in the division criterion specifying device 23.
Specify from 3. The reference may be, for example, a destination process name or a destination computer number, but the destination process name will be used in the following description. When a method name is also added to the destination name, {destination process name, method name} can be specified as the division criterion, and division can be made for each destination method to create a division log. The division standard designation unit 303 holds this division standard.

【0275】ユーザからの指示により集中ログ情報を分
割させようとすると、ログ情報分割部302が起動され
る。ログ情報分割部302は、図95に示す手順に従っ
て集中ログ情報を分割基準指定部303によって指定さ
れた基準で分割する。
[0275] When an attempt is made to divide the centralized log information by an instruction from the user, the log information dividing unit 302 is activated. The log information division unit 302 divides the centralized log information according to the standard designated by the division standard designation unit 303 according to the procedure shown in FIG.

【0276】ログ情報分割部302が起動されると、分
割基準指定部303より分割基準値を読み込み(ステッ
プL1)、分割基準を把握する。続いて集中ログ情報記
憶部301に保存されているログ情報を1レコード読み
込み(ステップL2)、最終レコードか否かチェックす
る(ステップL3)。この例では、集中ログ情報の1レ
コード目は、図94に示すようにプロセスAからプロセ
スDへのメッセージなので、最終レコードでないと判断
し、分割基準(宛先プロセス名=プロセスD)に従っ
て、該当する分割ログ情報記憶部(ここでは、分割ログ
情報記憶部Dとする)に保存する(ステップL4)。こ
の操作を集中ログ情報記憶部301に記憶されているロ
グ情報が終了するまで繰り返す。この結果、図96に示
すようにあて先プロセス毎に分割されたログ情報が分割
ログ情報記憶部A、B、C、Dのそれぞれに保存され
る。
When the log information division unit 302 is activated, the division standard value is read from the division standard designation unit 303 (step L1) and the division standard is grasped. Then, one record of the log information stored in the centralized log information storage unit 301 is read (step L2), and it is checked whether it is the final record (step L3). In this example, since the first record of the centralized log information is a message from process A to process D as shown in FIG. 94, it is determined that it is not the last record, and it is applicable according to the division criterion (destination process name = process D). It is saved in the divided log information storage unit (here, referred to as the divided log information storage unit D) (step L4). This operation is repeated until the log information stored in the centralized log information storage unit 301 ends. As a result, as shown in FIG. 96, the log information divided for each destination process is stored in each of the divided log information storage units A, B, C, D.

【0277】図96(a)では、例えばプロセスAはプ
ロセスCからのメッセージを処理した後に、プロセスD
からのメッセージを処理することを規定している。ま
た、図96(c)のプロセスCは、いわゆる良い非決定
性を導入した処理であり、プロセスAないしプロセスB
からのメッセージを最初に処理し、次もプロセスAない
しプロセスBからのメッセージを処理することを規定し
ている。これは言い替えると、プロセスAからのメッセ
ージとプロセスBからのメッセージのどちらが先に来て
も良いという良い非決定性を表現している。ここでは、
2つのメッセージの順序の制約を解除した例を示した
が、より多くのメッセージの順序制約を解除し、良い非
決定性を導入したい場合は、同一行に所望数のメッセー
ジを列挙すれば良い。
In FIG. 96 (a), for example, the process A processes the message from the process C and then processes D
Stipulates that the message from is processed. Further, the process C in FIG. 96C is a process in which so-called good nondeterminism is introduced, and the process A or the process B is used.
It is specified that the message from process A is processed first and the message from process A or process B is processed next. In other words, this expresses the good nondeterminism that either the message from process A or the message from process B may come first. here,
Although an example in which the order constraint of two messages is released has been shown, if it is desired to remove the order constraint of more messages and introduce good nondeterminism, it is sufficient to list a desired number of messages in the same line.

【0278】また、分割ログ情報は宛先プロセス毎に分
割されるため、分割ログ情報中の送信先プロセス名を省
略することもできる。
Since the divided log information is divided for each destination process, the destination process name in the divided log information can be omitted.

【0279】次に、このようにプロセス毎に分割された
ログ情報に従って各プロセスが動作する方式の一例を述
べる。各プロセスは、例えば図97に示すようにメッセ
ージを受信し実際のプロセスの処理を開始する前にプロ
セス制御部305を呼出し、図98に示す処理を行う。
このようなプロセス制御部の呼出は、並行化装置18の
一部として第1並行プログラムにおける各プロセスの処
理の先頭に呼出処理を挿入するようにソースプログラム
を書き換えることによって行うことができる。即ち、各
プロセスは図99に示すように、当該プロセス本来の処
理部分に加え、プロセス制御部305、分割ログ情報記
憶部304、処理待ちメッセージ保存部306からな
る。プロセス制御部305は、当該プロセスに内在する
分割ログ情報記憶部304に保存されているログ情報を
参照してメッセージ処理を行い、処理すべきメッセージ
でない場合は、処理待ちメッセージ保存部306に保存
する。
Next, an example of a method in which each process operates in accordance with the log information thus divided for each process will be described. Each process calls the process control unit 305 before receiving the message as shown in FIG. 97 and starting the process of the actual process, and performs the process shown in FIG. 98.
Such calling of the process control unit can be performed by rewriting the source program so that the calling process is inserted at the beginning of the process of each process in the first parallel program as a part of the parallelization device 18. That is, as shown in FIG. 99, each process includes a process control unit 305, a division log information storage unit 304, and a process waiting message storage unit 306 in addition to the original processing part of the process. The process control unit 305 performs message processing by referring to the log information stored in the divided log information storage unit 304 included in the process, and when the message is not a message to be processed, stores it in the processing-waiting message storage unit 306. .

【0280】次に、プロセス制御部305の処理につい
て図96と図98を用いて説明する。
Next, the processing of the process control unit 305 will be described with reference to FIGS. 96 and 98.

【0281】例えばプロセスAは、図93に示す処理の
流れの場合、プロセスCとプロセスDのどちらから先に
メッセージをもらうかは決定されておらず、ここに処理
タイミングの非決定性が存在している。しかし、ここで
は超逐次で実行したときの実行ログ(図82相当)よ
り、プロセスCからのメッセージを先に処理し、その後
にプロセスDからのメッセージを処理するように規定さ
れる。よって、無害の非決定性を導入したとしても、こ
のメッセージ処理順序の規定は守られなければならな
い。
For example, in the case of the flow of processing shown in FIG. 93, it is not determined which of the process C and the process D receives the message first, and there is nondeterminism in the processing timing. There is. However, here, it is specified that the message from the process C is processed first and then the message from the process D is processed based on the execution log (corresponding to FIG. 82) when the processes are executed in a super-sequential manner. Therefore, even if harmless nondeterminism is introduced, this rule of message processing order must be observed.

【0282】最初の例として、プロセスAが最初にプロ
セスCからのメッセージを受信して起動された場合を示
す。プロセスAがプロセスCからのメッセージを受信し
て起動されたならば、プロセス制御部が呼び出され、当
該プロセスを起動させたメッセージの送信元情報を得る
(ステップM1)。ここでは、送信元情報Is={プロ
セスC}となる。続いて分割ログ情報記憶部よりまず最
初に来るべきメッセージ情報Ir1を得る(ステップM
2)。ここでは、Ir1={プロセスC}となる。
As a first example, the case where the process A is first activated by receiving the message from the process C is shown. When the process A receives the message from the process C and is activated, the process control unit is called to obtain the sender information of the message that activated the process (step M1). Here, the transmission source information Is = {process C}. Subsequently, the message information Ir1 that should come first is obtained from the divided log information storage unit (step M
2). Here, Ir1 = {process C}.

【0283】次に、現在受信したメッセージが分割ログ
情報に記憶された順序に一致しているかを調べるため、
IsがIr1に含まれているかどうかを調べる(ステッ
プM3)。この場合は、ともにプロセスCで一致し含ま
れているため、受信メッセージに基づいた処理を即行う
ことが許される。よって次の起動チェックのために分割
ログ情報記憶部から読み出すレコードを1つ進めておく
(ステップM4)。そして、プロセス本体の処理を開始
する前に、処理待ちメッセージ保存部に実行待ちメッセ
ージが存在している場合には、その保存されたメッセー
ジが起動可能となったかどうかを調べる。つまり、分割
ログ情報記憶部に保存されている情報から次に処理すべ
きメッセージ情報Ir2を取り出し(ステップM5)、
それに含まれるメッセージが処理待ちメッセージ保存部
に存在しているか調べる(ステップM6)。この場合
は、Ir2={プロセスD}となるが、処理待ちメッセ
ージ保存部にメッセージが存在しないため処理を終了
し、プロセスCからのメッセージに基づいた本処理を行
う。
Next, in order to check whether the currently received message matches the order stored in the division log information,
It is checked whether Is is included in Ir1 (step M3). In this case, since both of them are the same and included in the process C, it is possible to immediately perform the processing based on the received message. Therefore, the record read from the divided log information storage unit for the next activation check is advanced by one (step M4). Then, before the processing of the process body is started, if there is an execution waiting message in the processing waiting message saving unit, it is checked whether or not the saved message can be activated. That is, the message information Ir2 to be processed next is extracted from the information stored in the divided log information storage unit (step M5),
It is checked whether or not the message included in the message is present in the pending message storage (step M6). In this case, Ir2 = {process D}, but since there is no message in the process waiting message storage unit, the process ends, and the main process based on the message from process C is performed.

【0284】続いて、プロセスA宛にプロセスDからの
メッセージが届いたならば、上記同様に処理を行うと、
Is={プロセスD}、Ir1={プロセスD}とな
り、集合Isは集合Ir1と等しいか又はIr1に含ま
れる。Ir2は存在しないため、処理待ちメッセージ保
存部内のメッセージを調べる必要なく処理を終了し、プ
ロセスDからのメッセージに基づいた処理を行う。
Subsequently, if a message from the process D arrives at the process A, the same process as described above is performed.
Is = {process D}, Ir1 = {process D}, and the set Is is equal to or included in the set Ir1. Since Ir2 does not exist, the process is terminated without having to check the message in the process waiting message storage unit, and the process based on the message from the process D is performed.

【0285】また、逆にプロセスAが、プロセスDから
先にメッセージを受信した場合の処理の流れを示す。つ
まりプロセスAが、最初にプロセスDからのメッセージ
を受信して起動されたならば、プロセス制御部が呼び出
され、当該プロセスを起動させたメッセージの送信元情
報を得る(ステップM1)。ここでは、送信元情報Is
={プロセスD}となる。続いて、分割ログ情報記憶部
よりまず最初に来るべきメッセージ情報Ir1を得る
(ステップM2)。ここではIr1={プロセスC}と
なる。
On the contrary, the process flow when the process A receives the message first from the process D is shown. That is, when the process A first receives the message from the process D and is activated, the process control unit is called to obtain the sender information of the message that activated the process (step M1). Here, the transmission source information Is
= {Process D}. Then, the message information Ir1 that should come first is obtained from the divided log information storage unit (step M2). Here, Ir1 = {process C}.

【0286】次に、現在受信したメッセージが分割ログ
情報に記憶された順序に一致しているかどうかを調べる
ため、IsがIr1に含まれているか調べる(ステップ
M3)。この場合は、含まれないため即プロセスDから
のメッセージを処理してはいけないと判断し、処理待ち
メッセージ保存部306にプロセスDからのメッセージ
を保存し(ステップM8)、プロセスAの処理を強制的
に終了させる(ステップM9)。即ち、プロセスDから
のメッセージに基づいた処理を行うことなくプロセスA
の処理を終了する。
Next, in order to check whether the currently received message matches the order stored in the divided log information, it is checked whether Is is included in Ir1 (step M3). In this case, it is determined that the message from the process D should not be processed immediately because it is not included, the message from the process D is saved in the process waiting message saving unit 306 (step M8), and the process of the process A is forced. (Step M9). That is, the process A is performed without performing the process based on the message from the process D.
Is completed.

【0287】続いて、プロセスA宛にプロセスCからの
メッセージが届いたならば、上記同様に処理を行うと、
Is={プロセスC}、Ir1={プロセスC}となり
IsはIr1に含まれるため、受信メッセージに基づい
た処理を即行うことが許される。よって次の起動チェッ
クのために分割ログ情報記憶部から読み出すレコードを
1つ進る(ステップM4)。そして、プロセス本体の処
理を開始する前に、処理待ちメッセージ保存部に起動可
能となった実行待ちメッセージが存在しているかどうか
を調べる。つまり、分割ログ情報記憶部に保存されてい
る情報から次に処理すべきメッセージ情報Ir2を取り
出し(ステップM5)、それに含まれるメッセージが処
理待ちメッセージ保存部に存在しているか調べる(ステ
ップM6)。この場合は、Ir2={プロセスD}とな
り、処理待ちメッセージ保存部に先ほど保存しておいた
該当メッセージが存在するため、その実行可能となった
メッセージを次に処理するために、送信先(ここではプ
ロセスA)宛に送信元情報等をそのまま(この例では、
プロセスDのまま)送信する(ステップM7)。そし
て、プロセスAは受信メッセージとしてプロセスCから
送られたメッセージに基づく処理を行うべくプロセス制
御部の処理を終了する。
Subsequently, if a message from the process C arrives at the process A, the same process as described above is performed.
Since Is = {process C} and Ir1 = {process C}, and Is is included in Ir1, it is permitted to immediately perform the processing based on the received message. Therefore, the record read from the divided log information storage unit for the next activation check is advanced by one (step M4). Then, before starting the processing of the process body, it is checked whether or not there is a ready-to-run execution waiting message in the processing waiting message storage. That is, the message information Ir2 to be processed next is taken out from the information stored in the divided log information storage unit (step M5), and it is checked whether the message contained therein exists in the processing waiting message storage unit (step M6). In this case, Ir2 = {process D} is satisfied, and since the corresponding message that has been stored in the processing-waiting message storage unit already exists, in order to process the executable message next time, the destination (here Then, the sender information etc. is directly sent to the process A) (in this example,
The process D remains unchanged (step M7). Then, the process A ends the process of the process control unit so as to perform the process based on the message sent from the process C as the received message.

【0288】更に、プロセスAは前記処理待ちメッセー
ジ保存部から取り出し送信したメッセージを受信するの
で、上記同様に処理を行うと、Is={プロセスD}、
Ir1={プロセスD}となりIsはIr1となる。I
r2はもはや存在しないため、処理待ちメッセージ保存
部内のメッセージを調べる必要なく処理を終了し、プロ
セスDからのメッセージに基づいた処理を行う。
Further, since the process A receives the message extracted from the waiting message storage section and transmitted, if the same process as above is performed, Is = {process D},
Ir1 = {process D} and Is becomes Ir1. I
Since r2 does not exist anymore, the process is terminated without checking the message in the process-waiting message storage unit, and the process based on the message from the process D is performed.

【0289】このことより、たとえメッセージの到着順
序が実行ログに記載された順序と異なっていたとして
も、実行ログに記載された順序に処理され、非決定的な
処理の再現性が保証される。
As a result, even if the order of arrival of the messages is different from the order described in the execution log, the processing is performed in the order described in the execution log, and the reproducibility of the non-deterministic processing is guaranteed.

【0290】次に良い非決定性を導入した場合の処理例
として、プロセスCの動作を例に示す。プロセスCが最
初にプロセスAからのメッセージを受信して起動された
ならば、プロセス制御部が呼び出され、当該プロセスを
起動させたメッセージの送信元情報を得る(ステップM
1)。ここでは、送信元情報Is={プロセスA}とな
る。続いて分割ログ情報記憶部よりまず最初に来るべき
メッセージ情報Ir1を得る(ステップM2)。ここで
はIr1={プロセスA、プロセスB}となり、プロセ
スAからのメッセージでもプロセスBからのメッセージ
でも、どちらからのメッセージでも良いとしている。
Next, the operation of the process C will be shown as an example of the process when the better nondeterminism is introduced. When the process C first receives the message from the process A and is activated, the process control unit is called and the sender information of the message that activated the process is obtained (step M
1). Here, the transmission source information Is = {process A}. Then, the message information Ir1 that should come first is obtained from the divided log information storage unit (step M2). Here, Ir1 = {process A, process B}, and the message from process A, the message from process B, or the message from either may be used.

【0291】次に、現在受信したメッセージが分割ログ
情報に記憶された順序に一致しているかを調べるため、
IsがIr1に含まれているかどうかを調べる(ステッ
プM3)。この場合、集合Isは集合Ir1と等しいか
又はIr1に含まれるため、受信メッセージに基づいた
処理を即行うことが許される。よって、次の起動チェッ
クのために分割ログ情報記憶部から読み出すレコードを
1つ進めておく(ステップM4)。そして、プロセス本
体の処理を開始する前に、処理待ちメッセージ保存部に
実行待ちメッセージが存在している場合には、その保存
されたメッセージが起動可能となったかを調べる。つま
り、分割ログ情報記憶部に保存されている情報から次に
処理すべきメッセージ情報Ir2を取り出し(ステップ
M5)、それに含まれるメッセージが処理待ちメッセー
ジ保存部に存在しているか調べる(ステップM6)。こ
の場合は、Ir2={プロセスA、プロセスB}となる
が、処理待ちメッセージ保存部にメッセージが存在しな
いため、処理を終了し、プロセスAからのメッセージに
基づいた本処理を行う。
Next, in order to check whether the currently received message matches the order stored in the division log information,
It is checked whether Is is included in Ir1 (step M3). In this case, since the set Is is equal to or included in the set Ir1, it is possible to immediately perform the processing based on the received message. Therefore, the record read from the divided log information storage unit for the next activation check is advanced by one (step M4). Before the processing of the process body is started, if an execution waiting message exists in the processing waiting message storage unit, it is checked whether the stored message can be activated. That is, the message information Ir2 to be processed next is taken out from the information stored in the divided log information storage unit (step M5), and it is checked whether the message contained therein exists in the processing waiting message storage unit (step M6). In this case, Ir2 = {process A, process B}, but since there is no message in the process waiting message storage unit, the process is terminated and the main process based on the message from process A is performed.

【0292】続いて、プロセスC宛にプロセスBからの
メッセージが届いたならば、上記同様に処理を行うと、
Is={プロセスB}、Ir1={プロセスA、プロセ
スB}となり、IsはIr1と等しいか又はIr1に含
まれる。Ir2は存在しないため、処理待ちメッセージ
保存部内のメッセージを調べる必要なく処理を終了し、
プロセスBからのメッセージに基づいた処理を行う。
Subsequently, if a message from the process B arrives at the process C, the same process as described above is performed.
Is = {process B}, Ir1 = {process A, process B}, and Is is equal to Ir1 or included in Ir1. Since Ir2 does not exist, the processing is terminated without the need to check the message in the processing waiting message storage unit.
Processing based on the message from the process B is performed.

【0293】上記の良い非決定性導入の例では、メッセ
ージの到着順序が逆の状態、即ちプロセスCに、プロセ
スBからのメッセージが先に到着し、その後にプロセス
Aからのメッセージが到着した場合も同様に処理できる
ことは明かである。
In the above example of good non-deterministic introduction, even if the message from the process B arrives first in the state where the message arrival order is reversed, that is, in the process C, the message from the process A arrives thereafter. Obviously, the same can be done.

【0294】但し、上記例では、プロセスCがプロセス
AないしプロセスBから続けて2つのメッセージを受信
した場合でも、それらのメッセージを処理してしまう問
題点があるが、これは、先に受信したメッセージを次の
起動候補から削除することによって容易に防止すること
ができる。削除対象となるメッセージは、本実施例では
説明の容易のために、送信先情報をプロセス名のみで示
したが、図84の送信先情報説明で前述したように唯一
に特定できるので、、未処理メッセージの情報を削除す
ることはない。
However, in the above example, even if the process C receives two messages in succession from the process A and the process B, there is a problem that those messages are processed. However, this is received first. This can be easily prevented by deleting the message from the next activation candidate. In the present embodiment, for the message to be deleted, the destination information is indicated only by the process name for ease of explanation, but since it can be uniquely identified as described above in the description of the destination information in FIG. It does not delete the processing message information.

【0295】上記のように、オブジェクト毎に実行ログ
情報を分割して動作させることによって、並行プログラ
ムが潜在的に持っている無害な非決定性を実現しなが
ら、超逐次プログラムで抽出した逐次性を維持している
ため、処理の再現性を保持しており、超逐次プログラム
実行時と同一結果を、より高い処理性能で実現すること
が可能となる。
As described above, by dividing the operation log information for each object and operating it, the sequentiality extracted by the hyper-sequential program can be realized while realizing the harmless nondeterminism potentially possessed by the concurrent program. Since the processing is maintained, the reproducibility of the processing is maintained, and the same result as when the hyper sequential program is executed can be realized with higher processing performance.

【0296】また、上記の例では良い非決定性を2つの
メッセージの到着順序に関して示したが、2つ以上の複
数のメッセージの到着順序に良い非決定性を与えること
も可能である。その場合でも、上記処理はIr1ないし
Ir2が複数の要素を持つことによって解決されるの
で、正しく動作することは明らかである。
Further, in the above example, the good nondeterminism is shown with respect to the arrival order of two messages, but it is also possible to give the good nondeterminism to the arrival order of two or more messages. Even in that case, it is obvious that the above-mentioned processing works correctly because Ir1 and Ir2 are solved by having plural elements.

【0297】また、上記例では、各プロセスないし各メ
ソッドの処理の始めにプロセス制御部を呼び出して実現
する実施例を示したが、各計算機のオペレーティングシ
ステムが、宛先プロセス毎の処理待ちメッセージ保存部
を保持し、メッセージ処理の都度、該当する分割ログ情
報を参照して、該当プロセスを起動すること又は処理待
ちメッセージ保存部に保存することによって実現するこ
とも可能である。
Further, in the above example, the embodiment in which the process control unit is called at the beginning of the processing of each process or each method has been described. However, the operating system of each computer has a message waiting storage unit for each destination process. It is also possible to realize the above by holding the above, and referring to the corresponding division log information each time the message is processed, activating the corresponding process or saving it in the processing waiting message saving unit.

【0298】この場合は、図98におけるステップM7
で次の処理対象メッセージを送信することなく、実行待
ち状態から次に起動可能なプロセスとしてスケジューリ
ング対象に変更すれば良い。
In this case, step M7 in FIG.
Then, it is sufficient to change from the waiting state to the scheduling target as the next process that can be started without sending the next processing target message.

【0299】本実施例によれば、ソースプログラムを修
正することなく逐次化ルールであるログ情報を書き換え
ることにより、処理タイミングの非決定性に起因する不
具合を容易に解決することができる。このことによっ
て、処理タイミングの非決定性が内在する並行/並列/
分散プログラムの開発を容易にし、生産性を向上させる
ことができる。
According to this embodiment, by rewriting the log information which is the serialization rule without modifying the source program, it is possible to easily solve the problem caused by the nondeterminism of the processing timing. As a result, parallel / parallel /
The development of distributed programs can be facilitated and productivity can be improved.

【0300】また、本実施例では、ユーザの意図する良
い非決定性のみを容易に導入することが可能になるた
め、並行プログラムとしての柔軟性、再利用性、拡張性
を維持することもできる。
Further, in the present embodiment, since it is possible to easily introduce only the good non-determinism intended by the user, it is possible to maintain the flexibility, reusability and extensibility as a concurrent program.

【0301】更に、並行プログラムを逐次化して得られ
た全プロセスの集中ログ情報を各プロセス毎に分割し、
分割されたログ情報に基づいて各プロセスを制御するこ
とによって、無害の非決定性を自然に導入し、集中ログ
情報に基づく超逐次プログラム実行時と同一結果を高い
処理効率で得ることができる。
Further, the centralized log information of all processes obtained by serializing the parallel program is divided into each process,
By controlling each process based on the divided log information, harmless nondeterminism can be naturally introduced, and the same result as when the hyper sequential program is executed based on the centralized log information can be obtained with high processing efficiency.

【0302】尚、本実施例に係るコンピュータシステム
の構成は、図1において、(a) 共有メモリ3が存在
しない構成の場合、(b) I/Oインタフェース2が
バスで密にプロセッサ1−1〜1−Nが接続している並
列計算機の場合、(c) I/Oインタフェースが通信
路で疎に結合している分散ネットワーク計算機構成の場
合、(d) 単一プロセッサで構成される場合、及びそ
れらの組み合わせの場合、が考えられる。
Note that the configuration of the computer system according to this embodiment is as shown in FIG. 1 in the case where (a) the shared memory 3 does not exist, (b) the I / O interface 2 is a bus and the processor 1-1 is densely arranged. In the case of a parallel computer to which 1 to N are connected, (c) in the case of a distributed network computer configuration in which I / O interfaces are loosely coupled in a communication path, (d) in the case of a single processor, And in the case of a combination thereof,

【0303】(実施例9)本実施例で使用される新しい
概念であるセクションについて説明をする。
(Ninth Embodiment) A section which is a new concept used in this embodiment will be described.

【0304】本実施例におけるセクションとはスレッド
の入口を1個のみ持ち、出口を複数持つプログラム断片
を言う。ここでスレッドとは、コンピュータ言語の分野
で一般的に用いられる用語であり、プログラムをたどり
ながら実行をする作用体をいう。例えばスレッドが同時
に複数走った場合には、それは並行実行を意味してい
る。
The section in this embodiment refers to a program fragment having only one thread entrance and a plurality of exits. Here, a thread is a term generally used in the field of computer languages, and refers to an agent that executes a program while executing it. For example, if multiple threads run at the same time, it means parallel execution.

【0305】下記のようなプログラム断片があったとす
る。 code1 code2 : branch 処理1 処理2 ここで、簡単のためcode1からbranch命令ま
での区間で、区間外への分岐命令又は同期命令はないも
のとする。このプログラム断片をスレッドが処理してい
くとき、code1が実行の開始点、すなわち、cod
e1がスレッドの入口となる。次に、処理が進みbra
nch命令に到達した時、branch命令までの処理
内容に応じて処理1に分岐するか処理2に進むかが決ま
るとすれば、スレッドが処理1に進む場合と処理2に進
む場合の2個の出口があることになる。従って、cod
e1からbranch命令までのプログラム断片はスレ
ッドの出口を2個持つセクションとなる。ところで、も
しcode1からbranchまでの間でこのプログラ
ム断片から外部への分岐命令があった場合は、そこもこ
のセクションの出口の一つとなる。
It is assumed that there is the following program fragment. code1 code2: branch processing 1 processing 2 Here, for simplification, it is assumed that there is no branch instruction or synchronization instruction to the outside of the section in the section from code1 to the branch instruction. When a thread processes this program fragment, code1 starts at the execution point, that is, cod.
e1 becomes the entrance of the thread. Next, the process proceeds
When it is decided whether to branch to the process 1 or proceed to the process 2 when the nch instruction is reached, depending on the processing contents up to the branch instruction, there are two threads, one for the thread to proceed to the process 1 and one for the thread to proceed to the process 2. There will be an exit. Therefore, cod
The program fragment from e1 to the branch instruction is a section having two thread exits. By the way, if there is a branch instruction from this program fragment to the outside between code1 and branch, that also becomes one of the exits of this section.

【0306】上記の例は、1本のスレッドが複数の出口
から1個の出口を選択して出ていく場合を示したが、次
にプログラム断片の内部でスレッドの生成が行なわれる
場合の例を示す。 code1 code2 : fork 処理1 上記の例では、fork命令でスレッドの分裂、すなわ
ちもう一つのスレッドの生成が行なわれる。この時、処
理1は分裂した2本のスレッドによって並行に処理され
るが、これを2個の出口から各々のスレッドが出て行
き、処理1を実行するものとみなすことができる。従っ
て、code1からfork命令の間は、この区間に外
部への分岐命令がなければ、出口を2個持つセクション
となる。このように、プログラム断片の内部でスレッド
の生成が行なわれる場所も一種の分岐とみなされ、複数
の出口をもつセクションとなり得る。
The above example shows the case where one thread selects one exit from a plurality of exits and exits. However, an example in which a thread is generated inside a program fragment next Indicates. code1 code2: fork process 1 In the above example, a fork instruction splits a thread, that is, another thread is generated. At this time, the process 1 is processed in parallel by the two split threads, but it can be regarded that each thread exits from the two exits and executes the process 1. Therefore, between code1 and fork instruction, if there is no branch instruction to the outside in this section, the section has two exits. In this way, the place where the thread is created inside the program fragment is also regarded as a kind of branch, and can be a section having a plurality of exits.

【0307】図100は、上記のようなセクションを概
念的に表した図である。図100に示すように、セクシ
ョンは、スレッドの入口101と、セクションの本体部
分102と、スレッドの複数の出口103とからなる。
以後セクションを概念的に図示する時にはこのような表
現を用いる。
[0307] Fig. 100 is a diagram conceptually showing the above section. As shown in FIG. 100, a section consists of a sled inlet 101, a section body portion 102, and a plurality of sled outlets 103.
Hereinafter, such expressions will be used when conceptually illustrating the section.

【0308】次にセクションの融合と分割を説明する。
図101はセクションの融合を表す概念図である。図1
01は、S11とS12の2個のセクションが融合して
S13という新たなセクションを生成する例を示してい
る。図101中の矢印201はS11の出口の一つであ
り、それをS12の入口に接続することで2個のセクシ
ョンの融合を可能としている。この例では2個のセクシ
ョンの融合を示したが、一般に複数のセクションにおい
て出口と入口を接続することにより、新たなセクション
を生成(融合)することができる。
Fusion and division of sections will be described below.
FIG. 101 is a conceptual diagram showing the fusion of sections. FIG.
01 shows an example in which two sections S11 and S12 are fused to generate a new section S13. An arrow 201 in FIG. 101 is one of the exits of S11, and connecting it to the entrance of S12 enables fusion of two sections. Although this example shows the fusion of two sections, a new section can generally be created (fused) by connecting the outlet and the inlet in a plurality of sections.

【0309】図102はセクションの分割を表す概念図
である。図102は、セクションS21を2個のセクシ
ョンS22とS23に分割する例を示している。ここ
で、以下のプログラム断片の例を考える。 code1 : code2 code3 : code4 ただし、code1〜4には分岐命令を含まないものと
する。これをスレッドが処理する時、code1が入口
でcode4が出口となることから、このプログラム断
片を出口が1個のセクションとみなすことができる。こ
のプログラム断片をセクションS21に対応させる。次
に、例えば、code2とcode3の間で分割して、
code1〜code2をセクションS22、code
3〜code4をセクションS23に対応させれば、セ
クションS21はセクションS22とセクションS23
に分割されたことになる。このように1個のセクション
を複数のセクションに分割することが可能である。
FIG. 102 is a conceptual diagram showing division of sections. FIG. 102 shows an example in which the section S21 is divided into two sections S22 and S23. Now consider the following example program fragment. code1: code2 code3: code4 However, it is assumed that code1 to code4 do not include branch instructions. When the thread processes this, code1 serves as the entry and code4 serves as the exit, so this program fragment can be regarded as a section with one exit. This program fragment is associated with section S21. Then, for example, split between code2 and code3,
code1 and code2 are section S22, code
If 3 to code4 correspond to the section S23, the section S21 becomes the section S22 and the section S23.
Will be divided into. In this way, one section can be divided into a plurality of sections.

【0310】次にセクションの分類について説明する。
セクションは基本セクションとグループセクションに分
類される。基本セクションは、内部に分岐命令や同期命
令を含まないセクションをいう。基本セクションを分割
した場合には、基本セクションになる。グループセクシ
ョンは基本セクション以外のセクションをいい、グルー
プセクションは複数の基本セクションに分割することが
できる。
Next, the classification of sections will be described.
Sections are classified into basic sections and group sections. The basic section is a section that does not include a branch instruction or a synchronization instruction inside. When the basic section is divided, it becomes the basic section. A group section is a section other than the basic section, and the group section can be divided into multiple basic sections.

【0311】セクションに予測実行時間を付加する場合
を説明する。ここではセクションを構成する個々の命令
の実行時間(又は平均実行時間)がわかっているものと
し、この時間を各命令の予測実行時間と呼ぶことにす
る。
A case where the predicted execution time is added to the section will be described. Here, it is assumed that the execution time (or average execution time) of the individual instructions making up the section is known, and this time is called the predicted execution time of each instruction.

【0312】基本セクションは途中で分岐することなく
直列に実行されるので、セクションを構成する各々の命
令の予測実行時間を合計することにより、そのセクショ
ンの入口から出口までの予測実行時間が計算される。基
本セクションの場合は、出口が複数あってもセクション
の出口は必ず命令列の最後の分岐命令又は同期命令であ
るため、一般に入口から各出口までの予測実行時間は等
しくなる。
Since the basic sections are executed in series without branching in the middle, the predicted execution time from the entry to the exit of the section is calculated by summing the predicted execution times of the instructions forming the section. It In the case of a basic section, even if there are a plurality of exits, the exit of the section is always the last branch instruction or synchronous instruction of the instruction sequence, so generally the predicted execution time from the entry to each exit is equal.

【0313】グループセクションは基本セクションに分
解できるため、グループセクションの入口から各出口ま
でに通過する基本セクションの予測実行時間を加えるこ
とにより、出口までの予測実行時間が計算される。すな
わちグループセクションでは出口によって予測実行時間
は変わってくる。また、グループセクション内部に処理
結果に応じて回数が変わるループや無限ループ、joi
n等の同期命令、入出力命令を含む実行時間の予測は不
可能である。その時は、グループセクションを、上記の
ような実行時間の予測ができないようなループ、同期命
令、入出力命令を内部に含まない複数のセクションに分
割し、分割されたセクションを対象とすれば良い。
Since the group section can be decomposed into basic sections, the predicted execution time to the exit is calculated by adding the predicted execution time of the basic section passing from the entrance of the group section to each exit. That is, in the group section, the predicted execution time changes depending on the exit. Also, inside the group section, a loop whose number of times changes depending on the processing result, an infinite loop, joy
It is impossible to predict the execution time including synchronous instructions such as n and input / output instructions. At that time, the group section may be divided into a plurality of sections that do not internally include the loop, the synchronization instruction, and the input / output instruction whose execution time cannot be predicted, and the divided sections may be targeted.

【0314】上記の方法によりセクションの各出口まで
の予測実行時間が計算された後に、その中で最大のもの
をセクション自身の予測実行時間とする。
After the predicted execution time to each exit of the section is calculated by the above method, the largest one among them is set as the predicted execution time of the section itself.

【0315】セクションの予測実行時間は、セクション
の実行の効率化のためにセクションの融合・分割をする
ときの指針となり、プログラム自身を最適化するときの
指針としても利用できる。
The predicted execution time of a section serves as a guideline when merging / dividing sections in order to improve the efficiency of section execution, and can also be used as a guideline when optimizing the program itself.

【0316】本実施例では同期の容易さ、実行時間の予
測の容易さのため、fork等のスレッドを生成する命
令とjoin等の同期命令、入出力命令はセクションの
内部には含まれずセクションの終端に位置し、実行時間
の予測不可能なループは内部に持たないものとする。
In this embodiment, for ease of synchronization and easy prediction of execution time, an instruction for generating a thread such as fork, a synchronization instruction such as join, and an input / output instruction are not included in the section. A loop that is located at the end and whose execution time is unpredictable shall not be included inside.

【0317】実施例9を図面を参照して具体的に説明す
る。図103は、本発明の実施例9の概略構成を示す図
である。
Example 9 will be specifically described with reference to the drawings. FIG. 103 is a diagram showing a schematic configuration of the ninth embodiment of the present invention.

【0318】プログラム解析部411は、図示されない
入力部から入力されたソースプログラムを解析し、基本
セクションへの分割及びセクションの実行順序に関する
ルールの抽出をおこなう。プログラム解析部411で解
析された情報(すなわちセクション情報)はセクション
情報記憶部412に記憶される。
The program analysis unit 411 analyzes a source program input from an input unit (not shown), divides the source program into basic sections, and extracts rules regarding the execution order of sections. The information analyzed by the program analysis unit 411 (that is, section information) is stored in the section information storage unit 412.

【0319】セクション情報編集部413はセクション
情報記憶部412に記憶されたセクション情報の編集を
行なう。具体的には、セクションの実行順序に関するル
ールの編集やセクションの融合・分割が、自動的に又は
ユーザによって行なわれる。コンパイル部414は各セ
クションをコンパイルしてオブジェクトコードに変換
し、その結果をセクション情報記憶部412に登録す
る。
The section information editing unit 413 edits the section information stored in the section information storage unit 412. Specifically, the rules regarding the execution order of sections and the fusion / division of sections are performed automatically or by the user. The compiling unit 414 compiles each section, converts it into an object code, and registers the result in the section information storage unit 412.

【0320】実行部415はセクション情報記憶部41
2に記憶されたセクション情報に基づき、セクションを
単位として逐次又は並行にプログラムを実行していく。
実行方法の逐次と並行の切替えは、逐次実行モードと並
行実行モードの2種類のモード間を切替えることによっ
て行なわれる。逐次実行モードで実行をすれば並行プロ
グラムの再現性の問題を回避することができる。すなわ
ち何度実行しても同じ結果が得られるため、並行プログ
ラムについて有効なテスト・デバッグを行なうことがで
きる。その状態で並行実行モードに切替えて実行すれ
ば、セクション単位の同期をとりながら実行をすること
により、安全な並行実行を行なうことができる。なお、
実行部415がインタプリタ的にのみプログラムを実行
する場合は、コンパイル部414は省略することができ
る。
The execution unit 415 is the section information storage unit 41.
Based on the section information stored in 2, the program is executed sequentially or in parallel for each section.
Switching between the sequential execution mode and the parallel execution mode is performed by switching between two types of modes, that is, the sequential execution mode and the parallel execution mode. Execution in the sequential execution mode can avoid the problem of reproducibility of a parallel program. That is, the same result can be obtained no matter how many times it is executed, so that effective test / debug can be performed on a parallel program. If the mode is switched to the parallel execution mode and executed in that state, the safe parallel execution can be performed by executing the sections in synchronization with each other. In addition,
If the execution unit 415 executes the program interpretively only, the compiling unit 414 can be omitted.

【0321】実施例9を構成する各部分について詳細に
説明する。
Each part of the ninth embodiment will be described in detail.

【0322】まず、図103に示されるセクション情報
記憶部412について、特にセクションに関する情報が
どのような構造で記憶されるのかを詳細に説明する。セ
クション情報は、セクション自身に関する情報とセクシ
ョンの実行順序に関する情報(ルール)とに2分され
る。まずセクション自身がどのように記憶されているか
を図104を用いて説明する。
First, the section information storage unit 412 shown in FIG. 103 will be described in detail with a particular structure in which information regarding sections is stored. The section information is divided into information on the section itself and information (rules) on the execution order of the sections. First, how the section itself is stored will be described with reference to FIG.

【0323】図104は、出口が3個のグループセクシ
ョン2個と出口が2個の基本セクション1個とから構成
される例を示し、全体として出口が6個のグループセク
ションの記憶方法を示している。セクション情報記憶部
412は、図104に示すような、セクションの管理テ
ーブル501、505、506、509を有する。これ
らの管理テーブルには図105に示すように、セクショ
ンのラベルと、セクションがコンパイルされているかを
示すフラグと、コンパイルされているならそのオブジェ
クトを指すポインタと、セクションがプログラムコード
かを示すフラグと、このセクションを構成するセクショ
ンの部品テーブルを指すか又はプログラムコードを指す
ポインタと、各出口を指すポインタとその出口までの予
想実行時間等が記憶される。
FIG. 104 shows an example in which two exits have three group sections and one exit has two basic sections. As a whole, a storage method of a group section having six exits is shown. There is. The section information storage unit 412 has section management tables 501, 505, 506, and 509 as shown in FIG. In these management tables, as shown in FIG. 105, a section label, a flag indicating whether the section has been compiled, a pointer pointing to the object if the section has been compiled, and a flag indicating whether the section is a program code. A pointer that points to a parts table of a section that constitutes this section or points to a program code, a pointer that points to each exit, and an expected execution time to that exit are stored.

【0324】セクション情報記憶部412は、更に、図
104に示すセクションの部品テーブル502、50
3、504を有する。部品テーブルとはグループセクシ
ョンを構成する個々の部品としてのセクションについて
記憶するテーブルである。具体的には、部品テーブル
は、図106に示すように、部品としてのセクションの
管理テーブルを指すポインタと、各出口がどのセクショ
ンに接続されているかを指すポインタ等が記憶される。
図104に示す例では部品テーブル502は他のグルー
プセクションの管理テーブル505を指すポインタと、
3個のうち2個の出口の接続先のセクションの、部品テ
ーブル503、504を指すポインタを記憶している。
ここで、例えば部品テーブルにおける出口508はどの
部品テーブルにも接続されていない。この時、その出口
を指すポインタは、管理テーブル501にセクションの
出口として記憶される。また、管理テーブル506がプ
ログラムコード507を指しているように、管理テーブ
ルはプログラムコードも同様に管理している。
The section information storage unit 412 further includes the section component tables 502 and 50 shown in FIG.
3, 504. The parts table is a table that stores sections as individual parts that form a group section. Specifically, as shown in FIG. 106, the parts table stores a pointer that points to a management table of sections as parts, a pointer that points to which section each exit is connected, and the like.
In the example shown in FIG. 104, the parts table 502 has a pointer pointing to the management table 505 of another group section,
It stores pointers to the parts tables 503 and 504 of the sections to which two of the three outlets are connected.
Here, for example, the outlet 508 in the parts table is not connected to any parts table. At this time, the pointer pointing to the exit is stored in the management table 501 as the exit of the section. Further, as the management table 506 indicates the program code 507, the management table also manages the program code.

【0325】セクションの実行順序に関するルールを説
明する。この場合において、スレッド1が以下のプログ
ラム断片を実行するとする。 処理1 join スレッド2 処理2 上記のセクションは、スレッド1が処理1を終了させた
後、スレッド2の終了を待ち、処理2を行なう、という
ことを意味している。図107は上記の例をセクション
の概念図に置き換えて図示したものである。S31は上
記の処理1を構成するセクションのうち最後のセクショ
ンである。S32は上記の処理2を構成するセクション
のうち最初のセクションである。S33はスレッド2が
実行する最後のセクションである。この時、このjoi
n文によって、 セクションS31の実行後、スレッド2におけるセクシ
ョンS33の実行が終了してからセクションS32の実
行が開始される というセクション実行順序のルールが抽出され、セクシ
ョン情報記憶部412に記憶される。このようにセクシ
ョンの実行順序に関するルールは、主に実行時にセクシ
ョン間の同期をとるために利用される。
The rules regarding the execution order of sections will be described. In this case, it is assumed that thread 1 executes the following program fragment. Process 1 join Thread 2 Process 2 The above section means that after thread 1 finishes process 1, it waits for thread 2 to finish and then process 2. FIG. 107 shows the above example by replacing it with a conceptual diagram of the section. S31 is the last section among the sections constituting the above-mentioned processing 1. S32 is the first section among the sections forming the above-mentioned processing 2. S33 is the last section executed by thread 2. At this time, this joy
By the n statement, the rule of the section execution order that the execution of the section S32 is started after the execution of the section S33 in the thread 2 after the execution of the section S31 is extracted and stored in the section information storage unit 412. As described above, the rules regarding the execution order of the sections are mainly used to synchronize the sections during execution.

【0326】図108は図103におけるプログラム解
析部411の詳細な構成を示す。図108において中間
言語変換部901は図示されない入力部から入力された
ソースプログラムを中間言語に変換する。中間言語変換
部901で中間言語に変換するのは、セクションの抽出
がしやすくなることと、各命令の実行時間が予測しやす
くなるという理由による。なお、中間言語変換部901
での変換に当たっては従来のコンパイラの技術がそのま
ま使用できる。セクション情報抽出部902は、中間言
語変換部901によって変換された中間言語から基本セ
クションを切り出し、セクションの実行順序に関するル
ール等を抽出する。
FIG. 108 shows the detailed structure of the program analysis unit 411 in FIG. In FIG. 108, an intermediate language conversion unit 901 converts a source program input from an input unit (not shown) into an intermediate language. The reason why the intermediate language conversion unit 901 converts the intermediate language is that the sections can be easily extracted and the execution time of each instruction can be easily predicted. The intermediate language conversion unit 901
For conversion in, the conventional compiler technology can be used as it is. The section information extraction unit 902 cuts out a basic section from the intermediate language converted by the intermediate language conversion unit 901, and extracts rules and the like regarding the execution order of the sections.

【0327】プログラム解析部411における処理の流
れを図を用いて詳細に説明する。図109はプログラム
解析部411における処理の流れを示した図である。
The flow of processing in the program analysis unit 411 will be described in detail with reference to the drawings. FIG. 109 is a diagram showing a flow of processing in the program analysis unit 411.

【0328】入力されたソースコードは、中間言語変換
部901において中間言語に変換される(ステップN
1)。変換された中間言語はセクション情報抽出部90
2に引き渡される。
The input source code is converted into an intermediate language by the intermediate language conversion unit 901 (step N).
1). The converted intermediate language has a section information extraction unit 90.
Handed over to 2.

【0329】セクション情報抽出部902は、中間言語
から基本セクションの切り出しや実行順序のルールを抽
出するために初期化される(ステップN2)。この初期
化は新しいセクションの切り出しのたびに行なわれる。
この例では、基本セクションを切り出しながら同時にそ
のセクションの予測実行時間を計算するため、それに関
する初期化も行う。
The section information extraction unit 902 is initialized to extract the basic section from the intermediate language and the rule of the execution order (step N2). This initialization is performed every time a new section is cut out.
In this example, while the basic section is cut out, the predicted execution time of the section is calculated at the same time, so initialization related to it is also performed.

【0330】中間言語を1行ずつ読み込み、処理を繰り
返していく。この繰り返しの中で中間言語の読み込みが
すべて終了した時は(ステップN3)、この時点まで読
み込んだ中間言語列を1個の基本セクションとしてセク
ション情報記憶部412に記憶し(ステップN8)、処
理を終了する(ステップN9)。
The intermediate language is read line by line and the process is repeated. When the reading of the intermediate language is completed during this repetition (step N3), the intermediate language string read up to this point is stored as one basic section in the section information storage unit 412 (step N8), and the processing is performed. The process ends (step N9).

【0331】中間言語の読込みが終了していないのであ
れば、更に中間言語を1行読込み(ステップN4)、読
み込んだ中間言語が、例えばjoinセクションの実行
順序のルールを決める命令ならば(ステップN5)、そ
れによって決定されるルールをセクション情報記憶部4
12に登録する(ステップN10)。中間言語が分岐又
は同期命令ならば(ステップN6)、その命令は基本セ
クションの切れ目となるので、初期化以降に読み込んだ
プログラム断片を1個の基本セクションとしてセクショ
ン情報記憶部412に記憶し(ステップN11)、次の
セクションの抽出を行うために、ステップN2に戻る。
ステップN4において、読み込んだ中間言語の命令が上
記の条件を満たさなければ、その命令の予測実行時間を
切り出し中のセクションの予測実行時間に加え(ステッ
プN7)、ステップN3に戻る。ここで中間言語の各命
令の予測実行時間は、あらかじめ測定をする等してテー
ブル等に記憶させておけば良い。以上の手続きが終った
時点で、もとのプログラムは、中間言語列として切り出
された基本セクションと、セクション実行順序のルール
とに変換され、セクション情報記憶部412に記憶され
たことになる。
If the reading of the intermediate language is not completed, one line of the intermediate language is further read (step N4), and the read intermediate language is, for example, an instruction for determining the execution order rule of the join section (step N5). ), The rules determined by the section information storage unit 4
12 (step N10). If the intermediate language is a branch or synchronization instruction (step N6), that instruction is a break in the basic section, so the program fragment read after initialization is stored in the section information storage unit 412 as one basic section (step S6). N11), the process returns to step N2 to extract the next section.
If the read intermediate language instruction does not satisfy the above condition in step N4, the predicted execution time of the instruction is added to the predicted execution time of the section being cut out (step N7), and the process returns to step N3. Here, the predicted execution time of each instruction in the intermediate language may be measured in advance and stored in a table or the like. When the above procedure is completed, the original program is converted into the basic section cut out as the intermediate language sequence and the section execution order rule, and stored in the section information storage unit 412.

【0332】セクション情報編集部413の詳細な説明
をする。セクション情報編集部413は大きく二つの動
作をする。一つはセクションの融合・分割をする動作で
あり、もう一つの動作は、セクションの実行順序のルー
ルを編集する動作である。
The section information editing unit 413 will be described in detail. The section information editing unit 413 has two main operations. One is the operation of merging and dividing the sections, and the other is the operation of editing the rule of the execution order of the sections.

【0333】セクションの融合・分割の主な目的として
は、セクションの大きさを揃えることによって、実行部
415においてより効率的な実行を行なわせることにあ
る。本実施例では、この動作にセクションの予測実行時
間を利用している。セクション情報編集部413では、
各セクションの予測実行時間がほぼ均一になるようにセ
クションの融合・分割をすれば良く、これは容易に自動
化できる。
The main purpose of merging / dividing sections is to make the sizes of the sections uniform so that the execution section 415 can execute the sections more efficiently. In this embodiment, the estimated execution time of the section is used for this operation. In the section information editor 413,
The sections may be fused / divided so that the predicted execution time of each section becomes almost uniform, and this can be easily automated.

【0334】また、セクション情報編集部413のセク
ションの実行順序のルールの編集により、実行時におけ
るセクション間の同期や、実行順序等を自由に変更する
ことができ、効果的なテスト・デバッグを可能とする。
Also, by editing the section execution order rules of the section information editing unit 413, it is possible to freely change the synchronization between sections at the time of execution, the execution order, etc., and effective testing / debugging is possible. And

【0335】図110を用いてセクション情報編集部4
13の詳細な構成を説明する。図110においてセクシ
ョン情報変換部1101は、図示されない入力装置によ
り入力されたセクションの融合・分割の指示、セクショ
ンの実行順序のルールの編集要求に従い、セクション情
報記憶部412に記憶されたセクション情報を変更す
る。この動作は主にユーザによってなされるが、セクシ
ョンの融合・分割に関してはセクションの予測実行時間
を利用することにより容易に自動化をすることができ
る。セクション情報表示部1102はセクション情報記
憶部412に記憶されたセクション情報を、セクション
情報変更部1101からの指示に従い表示する。
The section information editing unit 4 will be described with reference to FIG.
A detailed configuration of 13 will be described. In FIG. 110, the section information conversion unit 1101 changes the section information stored in the section information storage unit 412 in accordance with an instruction of section fusion / division input by an input device (not shown) and a request for editing a rule of the execution order of sections. To do. This operation is mainly performed by the user, but the fusion / division of sections can be easily automated by using the estimated execution time of the sections. The section information display unit 1102 displays the section information stored in the section information storage unit 412 according to an instruction from the section information changing unit 1101.

【0336】図111は図103におけるコンパイル部
414の詳細な構成を示す。図111において、セクシ
ョン末端処理部1601は、セクションの末端に次に実
行すべきセクションの登録とセクションの終了のための
コードを書き込む。セクションコンパイル部1602
は、末端処理を受けたセクションをコンパイルしてオブ
ジェクトに変換し、セクション情報記憶部412に登録
する。
FIG. 111 shows the detailed structure of the compiling unit 414 in FIG. In FIG. 111, the section end processing unit 1601 writes a code for registering a section to be executed next and ending the section at the end of the section. Section compiling unit 1602
Compiles the section subjected to the end processing, converts it into an object, and registers it in the section information storage unit 412.

【0337】ここで、セクションの末端の処理の仕方を
説明する。例えば、あるセクションの末端が以下のよう
なコードであったとする。 処理1 branch label 処理2 label: 処理3 上記のコードは、処理1の結果によって、labelに
ジャンプして処理3を実行するか、そのまま処理2を実
行する、ということを表したコードである。ここで、処
理2の先頭に位置するセクションをセクション2、処理
3の先頭に位置するセクションをセクション3、とした
とき、上記コードは以下のように処理される。 処理1 branch label section−end セクション2 label: 図112は図103における実行部415の詳細な構成
図を示す。図112において、実行セクション選択部1
201は、セクション情報及び実行セクション候補記憶
部1203に記憶される情報に基づき、次に実行すべき
セクションを1個又は複数選択する。実行セクション選
択部1201は、図示されない入力部から切替えること
が可能な2つのモード(逐次実行モードと並行実行モー
ド)を有する。逐次実行モードではセクションの選択は
1個である。並行実行モードではセクションの選択は一
般に複数となる。セクション実行部1202は、実行セ
クション選択部1201によって選択されたセクション
を実行する。特に、選択されたセクションが複数の場合
は並行に実行する。実行セクション候補記憶部1203
は、セクション実行部1202で実行した結果から決め
られる次の実行の候補となるセクションを記憶する。
Here, a method of processing the end of the section will be described. For example, suppose a section has the following code: Process 1 branch label Process 2 label: Process 3 The above code is a code indicating that, depending on the result of Process 1, jump to label and execute Process 3 or execute Process 2 as it is. Here, when the section located at the beginning of the process 2 is section 2 and the section located at the beginning of the process 3 is section 3, the above code is processed as follows. Process 1 branch label section-end section 2 label: FIG. 112 is a detailed block diagram of the execution unit 415 in FIG. 103. In FIG. 112, the execution section selection unit 1
The section 201 selects one or more sections to be executed next based on the section information and the information stored in the execution section candidate storage unit 1203. The execution section selection unit 1201 has two modes (sequential execution mode and parallel execution mode) that can be switched from an input unit (not shown). In the sequential execution mode, only one section is selected. In parallel execution mode, there are generally multiple section selections. The section execution unit 1202 executes the section selected by the execution section selection unit 1201. In particular, when the selected sections are plural, they are executed in parallel. Execution section candidate storage unit 1203
Stores a section that is a candidate for the next execution determined from the result executed by the section execution unit 1202.

【0338】図113は、実行部415における処理の
流れを示す図である。プログラムは、セクション情報記
憶部412に記憶されるセクションの情報及び実行順序
のルールに従って、セクション単位に実行される。
FIG. 113 is a diagram showing the flow of processing in the execution unit 415. The program is executed in section units according to the section information stored in the section information storage unit 412 and the rules of the execution order.

【0339】全体の初期化が行なわれる(ステップP
1)。この時、実行セクション候補記憶部1203には
最初に実行すべきセクションが記憶される。
The entire initialization is performed (step P
1). At this time, the execution section candidate storage unit 1203 stores the section to be executed first.

【0340】次にセクション毎に実行を行なうループに
入る。このループの最初では、次に実行するセクション
の選択が、モードによって異なる方法で行なわれる(ス
テップP2)。逐次実行モードでは、実行セクション候
補記憶部1203に記憶される次に実行されるセクショ
ンの候補の中から実行順序のルールに従うものを1個選
択する(ステップP3)。一般に候補となるセクション
の中には、ルールに従うものが複数ある。これから1個
を選択する方法としては、例えば記憶された時間が最も
前のものを選択しても良いし、又は、固定された乱数列
に従って選択しても良い。ただし、ここでの選択方法と
しては再現性が保証される方法を用いる必要がある。プ
ログラムの実行のたびに選択される順序が変化しない
(すなわち再現性が保証されている)ことは本発明の重
要な動機の一つだからである。モードが並行実行モード
では、実行候補の中からルールに従うセクションをすべ
て選択する(ステップP4)。選択されたセクションは
一般に複数となる。
Next, a loop for executing each section is entered. At the beginning of this loop, the selection of the section to be executed next is performed in a different manner depending on the mode (step P2). In the sequential execution mode, one of the section candidates to be executed next stored in the execution section candidate storage unit 1203 that follows the rule of the execution order is selected (step P3). In general, there are several candidate sections that follow the rules. As a method of selecting one from this, for example, the one with the earliest stored time may be selected, or the fixed random number sequence may be selected. However, it is necessary to use a method that guarantees reproducibility as the selection method here. This is because one of the important motives of the present invention is that the order of selection is not changed (that is, reproducibility is guaranteed) every time the program is executed. When the mode is the parallel execution mode, all the sections that follow the rule are selected from the execution candidates (step P4). There will generally be more than one section selected.

【0341】ステップP3又はステップP4において、
選択に失敗した場合は(ステップP5)、プログラムが
終了したか、実行順序を決めるルールの異常により失敗
した場合が考えられる。そこで、候補のリストを確かめ
(ステップP6)、候補が残っていないならば正常終了
(ステップP7)、残っているならば異常終了(ステッ
プP8)とする。異常終了の場合には、例えばデッドロ
ック状態が考えられ、この旨をユーザに提示することに
よりテスト・デバッグの指針とすることができる。ステ
ップP3及びステップP4において、選択に成功した時
は、選択されたセクションの実行をする(ステップP
9)。
In step P3 or step P4,
If the selection fails (step P5), the program may have ended or may have failed due to an abnormality in the rule that determines the execution order. Therefore, the candidate list is checked (step P6), and if no candidate remains, the process ends normally (step P7), and if any remains, the process ends abnormally (step P8). In the case of abnormal termination, for example, a deadlock state can be considered, and by presenting this to the user, it can be used as a guideline for testing and debugging. When the selection is successful in steps P3 and P4, the selected section is executed (step P
9).

【0342】複数のセクションが選択された時には、そ
れらのセクションは並行に実行される。この後セクショ
ン実行部415は、並行に実行されたセクションすべて
の実行の終了を待ってから、次のステップに進む。
When multiple sections are selected, they are executed in parallel. After that, the section execution unit 415 waits for the end of the execution of all the sections executed in parallel, and then proceeds to the next step.

【0343】なお、本実施例で使用しているセクション
の内部には、無限ループ等の実行時間を予測不可能にす
る因子は含まれていないため、セクションの実行終了を
永久に待ち続けるということはない。
Since the section used in this embodiment does not include a factor that makes the execution time unpredictable, such as an infinite loop, it means that the section is kept waiting forever. There is no.

【0344】実行が終了すると、まず終了したセクショ
ンが実行セクション候補記憶部1203から消去され、
次に実行結果に応じて次の実行候補となるセクションが
記憶される(ステップP10)。「実行結果に応じて」
ということは例えばセクションの最後がif文のとき
は、計算結果によって次に分岐する分岐先、すなわち次
に実行するべきセクションが変わる、ということを意味
する。また、セクションがend文で終了するときは、
それを実行していたスレッドも終了するので、このスレ
ッドが次に実行すべきセクションは無いことになる。こ
の時は、実行セクション候補記憶部1203には何も記
憶されない。
When the execution is finished, the finished section is erased from the execution section candidate storage unit 1203,
Next, the section to be the next execution candidate is stored according to the execution result (step P10). "Depending on the execution result"
This means that, for example, when the end of the section is an if statement, the branch destination for the next branch, that is, the section to be executed next, changes depending on the calculation result. Also, when a section ends with an end statement,
The thread that was executing it also exits, so this thread has no next section to execute. At this time, nothing is stored in the execution section candidate storage unit 1203.

【0345】実行セクション候補記憶部1203での記
憶内容の詳細な変化を説明する。図114は、プログラ
ムの一例をセクションの概念図を使って表した図であ
る。1本のスレッドがセクション1を実行し、その中の
fork文により2本のスレッドに分裂し、それぞれの
スレッドがセクション2とセクション4を実行し、jo
in命令により同期をとって1本のスレッドに戻り、最
後にセクション3を実行して終了する例を示す。ここで
join文により同期をとるために、セクション3はセ
クション4の後に実行されるというセクションの実行順
序に関するルールが、事前のプログラム解析により抽出
されているとする。
A detailed change in the stored contents in the execution section candidate storage unit 1203 will be described. FIG. 114 is a diagram showing an example of a program by using a conceptual diagram of sections. One thread executes section 1, and the fork statement in it divides into two threads, and each thread executes section 2 and section 4, and jo
An example is shown in which an in instruction is used to synchronously return to one thread, and finally section 3 is executed and terminated. Here, it is assumed that a rule regarding the execution order of the section that section 3 is executed after section 4 is extracted by the program analysis in advance in order to synchronize with the join statement.

【0346】図115は上記の例を、逐次実行モードで
実行した時の実行セクション候補記憶部1203の変化
を示す図である。
FIG. 115 is a diagram showing changes in the execution section candidate storage unit 1203 when the above example is executed in the sequential execution mode.

【0347】初期状態1401では最初に実行されるセ
クション1が記憶されている。そこで、まずセクション
1が実行される。セクション1が実行されるとfork
文によりスレッドが2本に分裂することから、次の実行
候補としてセクション2とセクション4の2セクション
が記憶される(状態1402)。ここで並行実行モード
であればセクション2とセクション4が同時に選択され
実行されるが、ここでは逐次実行モードで実行している
ため、どちらか1個が選択されなければならない。そこ
でセクション2を選択し、実行したとする。セクション
2が終了すると、次の候補としてのセクション3が記憶
される(状態1403)。
In the initial state 1401, the section 1 to be executed first is stored. Therefore, section 1 is executed first. Fork when section 1 is executed
Since the thread is divided into two by the statement, two sections, section 2 and section 4, are stored as the next execution candidates (state 1402). In the parallel execution mode, section 2 and section 4 are selected and executed at the same time. However, since the sections are executed in the sequential execution mode, one of them must be selected. Therefore, assume that section 2 is selected and executed. When section 2 ends, section 3 as the next candidate is stored (state 1403).

【0348】次に、候補を見る限りではセクション3と
セクション4のどちらを選択しても良さそうだが、先に
示した実行順序のルール「セクション3はセクション4
の後に実行される」により、セクション4しか選択する
ことができないので、セクション4が実行されることに
なる。セクション4の実行が終了すると、それを実行し
たスレッドが終了するため候補記憶部1203ではセク
ション4に続くセクションが無くなっている(状態14
04)。そして、セクション3を実行し全処理を終了し
たことになる(状態1405)。
Next, as far as the candidates are seen, it seems that either section 3 or section 4 may be selected, but the rule of the execution order shown above is that "section 3 is section 4".
Executed after "means that only Section 4 can be selected, so Section 4 will be executed. When the execution of section 4 ends, the thread that executed it ends, so that the candidate storage unit 1203 has no section following section 4 (state 14
04). Then, the section 3 is executed and all the processing is completed (state 1405).

【0349】本発明は、上記実施例に限定されない。The present invention is not limited to the above embodiments.

【0350】上記実施例は、それぞれ独立の実施例とし
て記載したが、それぞれ適宜組み合わせることにより、
より効果的な並行プログラムを作成することが可能にな
る。特に、実施例1〜実施例8において作成された並行
プログラムを実施例9の並行プログラム実行装置で実行
させてその妥当性を検証することも可能であるし、実施
例9において、ソースプログラムである並行プログラム
を並行プログラム実行装置で実行させて、実施例1〜実
施例8に示すように、実行情報(テスト・デバッグ情報
を含む)に基づいて、逐次プログラムを並行化する、或
いは、ソースプログラムをバグのない並行プログラムに
変換しても良い。
Although the above embodiments have been described as independent embodiments, by combining them appropriately,
It becomes possible to create more effective concurrent programs. In particular, it is possible to execute the concurrent programs created in the first to eighth embodiments by the concurrent program execution device of the ninth embodiment to verify the validity thereof, and in the ninth embodiment, the source program is used. The parallel program is executed by the parallel program execution device, and as shown in the first to eighth embodiments, the sequential program is parallelized based on the execution information (including the test / debug information), or the source program is executed. It may be converted to a parallel program without bugs.

【0351】本実施例によれば、実行ログを意味を変え
ない範囲でユーザに理解し易い形に並べ替え、ユーザに
提示することができる。並べ替えても意味が変わらない
ことが保証されているので、オリジナルの実行ログにバ
グがある場合は、並べ替え後の実行ログにおいてもバグ
が存在する。この性質により、テスト・デバッグの効率
が向上するという効果が得られる。
According to the present embodiment, the execution logs can be rearranged and presented to the user in a form that is easy for the user to understand without changing the meaning. Since it is guaranteed that the meaning does not change even if rearranged, if there is a bug in the original execution log, the bug also exists in the rearranged execution log. This property has the effect of improving the efficiency of test / debug.

【0352】(実施例10)本実施例では、図2の逐次
化装置12の具体的な実現法について述べる。図117
は逐次化装置12の実施例を示すブロック図である。こ
の逐次化装置12は、テスト実行装置121、第1実行
ログファイル記憶部122、解析装置123、先行関係
情報ファイル124、並べ替え装置125及び第2実行
ログファイル記憶部126からなる。
(Embodiment 10) In this embodiment, a concrete method of realizing the serialization device 12 of FIG. 2 will be described. FIG. 117
FIG. 3 is a block diagram showing an embodiment of the serialization device 12. The serialization device 12 includes a test execution device 121, a first execution log file storage unit 122, an analysis device 123, a preceding relationship information file 124, a rearrangement device 125, and a second execution log file storage unit 126.

【0353】図118は図117の逐次化装置12を用
いた場合の並行プログラム作成方法の概略手順を示すフ
ローチャートである。
FIG. 118 is a flow chart showing a schematic procedure of a parallel program creating method when the serializing device 12 of FIG. 117 is used.

【0354】(1) ステップA1:モデル化 対象の並行システムに対し、並行性を用いた自然なモデ
ル化を行う。また、各プロセス構造を決定する。更に、
該プロセス内を並行プログラム等を用いたプログラミン
グにより、ソースプログラムCPを記述する。このソー
スプログラムには、バグが潜在的に存在する可能性があ
る。図119は、こうして記述されたソースプログラム
CPの具体例であり、2つのプロセスP1とP2をプロ
グラミングしている。
(1) Step A1: Modeling Natural modeling using concurrency is performed on the target parallel system. Also, each process structure is determined. Furthermore,
The source program CP is described in the process by programming using a parallel program or the like. This source program may have potential bugs. FIG. 119 is a specific example of the source program CP described in this way, and programs two processes P1 and P2.

【0355】(2) ステップQ1:実行 テスト実行装置121により、ソースプログラムCPを
実行し、実行ログを第1実行ログファイル記憶部122
に格納するとともに図2の出力装置5に表示する。この
例の場合、図119のソースプログラムCPに対する可
能な実行ログは数多く存在するが、ここでは、図120
のような実行ログが生成されたとする。しかし、この実
行ログはプロセスP1とプロセスP2が複雑に絡み合っ
ており、実行過程が把握しにくいものとなっている。
(2) Step Q1: Execution The source program CP is executed by the test execution device 121, and the execution log is stored in the first execution log file storage unit 122.
And is displayed on the output device 5 of FIG. In this example, there are many possible execution logs for the source program CP of FIG. 119, but here, FIG.
It is assumed that an execution log such as However, in this execution log, the process P1 and the process P2 are intricately intertwined with each other, and the execution process is difficult to grasp.

【0356】(3) ステップQ2:バグの判定 テストの結果、バグがなければ終了する。テストの結果
バグがあれば、その実行ログ3を保存しステップQ3に
進む。この例の場合、図120の実行ログが示す実行後
のMの値は「M=−1」であり、バグであると判定した
とする(期待した値は「M=0」)。
(3) Step Q2: Judgment of Bug If there is no bug as a result of the test, the process ends. If there is a bug as a result of the test, the execution log 3 is saved and the process proceeds to step Q3. In the case of this example, it is assumed that the value of M after execution indicated by the execution log of FIG. 120 is “M = −1”, and it is determined to be a bug (the expected value is “M = 0”).

【0357】(4) ステップQ3:解析 解析装置123により、第1CPファイル記憶部11か
らのソースプログラムCP及び第1実行ログファイル記
憶部122に格納された実行ログからプロセス間の先行
関係情報を抽出し、先行関係情報ファイル124に格納
する。図121に、図119の実行ログにおける2つの
プロセスP1とP2の各命令の先行関係を示す。
(4) Step Q3: Analysis The analysis device 123 extracts the preceding relationship information between processes from the source program CP from the first CP file storage unit 11 and the execution log stored in the first execution log file storage unit 122. Then, it is stored in the preceding relationship information file 124. FIG. 121 shows the precedence relationship between the instructions of the two processes P1 and P2 in the execution log of FIG. 119.

【0358】(5) ステップQ4:実行ログの並べ替
え 第1実行ログファイル記憶部122と先行関係情報ファ
イル124に格納された実行ログ及び先行関係情報か
ら、並べ替え装置125によりユーザが理解しやすい順
序に並べ替えた実行ログを生成し、第2実行ログファイ
ル記憶部126に格納する。この例の場合、図121の
先行関係を満たす範囲で、ユーザが理解しやすい順序に
並べ替えた実行ログを生成する。具体的な並べ替え規則
の一例としては、(a)プロセスに優先順位を導入し、
その優先順位を用いて実行ログを並べ替える、(b)待
ち状態が解除されたプロセスを優先して実行ログを並べ
替える (c)ユーザが指定する、などがある。図122に、プ
ロセスに優先順位を導入して並べ替えた後の実行ログを
示す。
(5) Step Q4: Rearrangement of Execution Logs From the execution logs and precedence relation information stored in the first execution log file storage unit 122 and precedence relation information file 124, the rearrangement device 125 makes it easy for the user to understand. The execution log sorted in order is generated and stored in the second execution log file storage unit 126. In the case of this example, the execution logs rearranged in an order that is easy for the user to understand are generated within a range that satisfies the preceding relationship in FIG. As an example of a specific rearrangement rule, (a) introducing a priority into the process,
For example, the execution logs are rearranged using the priority order, (b) the execution logs are rearranged by giving priority to the process whose waiting state has been released, and (c) the user specifies. FIG. 122 shows an execution log after rearranging the processes by introducing the priority order.

【0359】(6) ステップQ5:実行ログの表示 第2実行ログファイル記憶部126に格納された並べ替
え後の実行ログを逐次プログラムとして出力し、かつ出
力装置5により表示してユーザに提示する。
(6) Step Q5: Display of Execution Log The rearranged execution logs stored in the second execution log file storage unit 126 are sequentially output as a program, and displayed by the output device 5 to be presented to the user. .

【0360】この例では、図122に示す実行ログが出
力装置5で図122に示すように表示される。この実行
ログはプロセスP1とプロセスP2の命令が先行関係を
保つ範囲でまとまっており、ユーザにとって実行過程が
把握し易いものとなっている。
In this example, the execution log shown in FIG. 122 is displayed on the output device 5 as shown in FIG. This execution log is collected within a range in which the instructions of the process P1 and the process P2 maintain the preceding relationship, and the user can easily understand the execution process.

【0361】(7) ステップQ6:並行プログラムの
デバッグ/修正 ユーザは出力装置5で表示された実行ログを見て実行過
程を把握又は実行を再現し、バグの原因を発見すればプ
ログラムを修正する。プログラムを修正したらステップ
Q1に戻る。この例の場合、図122の実行ログの表示
から、ユーザは、バグの原因は「P2:read(M、
Y);」と「P1:write(M、XX);」の順序が間違って
いることであると認識し、P2のsend命令の場所を
修正することができる。修正されたプログラムは図12
3のようになる。この修正後のプログラムを実行する
と、実行後のMの値は「M=0」となり、バグが削除で
きたことがわかる。
(7) Step Q6: Debugging / Modifying Concurrent Program The user grasps the execution process or reproduces the execution by looking at the execution log displayed on the output device 5, and corrects the program if the cause of the bug is found. . After correcting the program, return to step Q1. In the case of this example, from the display of the execution log in FIG. 122, the user finds that the cause of the bug is “P2: read (M,
The position of the send instruction of P2 can be corrected by recognizing that the order of "Y);" and "P1: write (M, XX);" is incorrect. Figure 12 shows the modified program.
It becomes like 3. When the modified program is executed, the value of M after execution becomes “M = 0”, which indicates that the bug can be deleted.

【0362】(実施例11)本実施例では、テスト実行
は部分超逐次プログラムに対して行うが、ソースコード
の修正はオリジナルの並行プログラムに対して行う。ま
た、良い非決定性に関する情報の導入は、逐次化条件に
対して行い、良い非決定性の導入毎にオリジナルの並行
プログラムの逐次化(部分逐次化)を行う。
(Embodiment 11) In this embodiment, the test execution is performed on the partial hyper-sequential program, but the source code is corrected on the original concurrent program. Information about good nondeterminism is introduced under the serialization condition, and the original concurrent program is serialized (partial serialization) every time good nondeterminism is introduced.

【0363】図124は、本実施例に係る並行プログラ
ム作成支援装置の概略構成を示す図である。同図におい
て、第1CPファイル記憶部11に格納されたソースプ
ログラムCPは、ユーザによる入力装置4からの指示に
より引き出され、逐次化装置12に入力される。逐次化
装置12に入力されたソースプログラムCPは、逐次化
ルール記憶部13に格納された逐次化ルールに従って超
逐次プログラムHSP又は部分超逐次プログラムPHS
Pに変換され、HSP/PHSPファイル記憶部141
に記録される。
FIG. 124 is a diagram showing a schematic configuration of the parallel program creation support apparatus according to this embodiment. In the figure, the source program CP stored in the first CP file storage unit 11 is extracted by a user's instruction from the input device 4 and input to the serialization device 12. The source program CP input to the serialization device 12 is a hyper sequential program HSP or a partial hyper sequential program PHS according to the serialization rule stored in the serialization rule storage unit 13.
Converted to P, HSP / PHSP file storage unit 141
Recorded in.

【0364】このプログラムHSP/PHSPに対し
て、テスト実行装置15でテストが行われる。ここで、
バグがあればデバッグ装置16を用いて、第1CPファ
イル記憶部11に格納されているソースプログラムCP
を修正する。修正されたソースプログラムCPは再度逐
次化され、超逐次プログラム(HSP)又は部分超逐次
プログラム(PHSP)が生成されてHSP/PHSP
ファイル記憶部141に記録される。
The test execution unit 15 tests the program HSP / PHSP. here,
If there is a bug, the source program CP stored in the first CP file storage unit 11 is debugged using the debug device 16.
To fix. The modified source program CP is re-serialized to generate a hyper-sequential program (HSP) or a partial hyper-sequential program (PHSP), and HSP / PHSP is generated.
It is recorded in the file storage unit 141.

【0365】この一連のサイクルを繰り返し、テスト・
デバッグが完了したならば、非決定性導入装置17で、
逐次化ルール記憶部13に格納されている逐次化ルール
の制約を緩めて、部分超逐次プログラムPHSPを生成
する。そして、この部分超逐次プログラムPHSPに対
して、同様のテスト・デバッグを繰り返しながら、非決
定性導入装置17で、徐々に逐次化ルールの制約を弱め
ていく。このようにして良い非決定性導入が完了したな
らば、最終的に並行化装置18で並行プログラムが生成
され、第2CPファイル記憶部19に格納される。
This series of cycles is repeated to
When debugging is completed, with the non-deterministic introduction device 17,
The restriction of the serialization rule stored in the serialization rule storage unit 13 is relaxed, and the partial hyper-sequential program PHSP is generated. Then, the same test / debug is repeated for this partial hyper-sequential program PHSP, and the nondeterminism introducing device 17 gradually weakens the constraint of the serialization rule. When the good non-deterministic introduction is completed in this way, a parallel program is finally generated in the parallelization device 18 and stored in the second CP file storage unit 19.

【0366】(実施例12)本実施例では、テスト超逐
次プログラムに対して行うが、バグのあった場合はソー
スコードたる並行プログラムを修正せずに、逐次化ルー
ルを修正することでテスト・デバッグを行う。その他の
部分に関しては、基本的にこれまでの実施例と同じであ
る。
(Embodiment 12) In this embodiment, a test hyper-sequential program is tested. However, if there is a bug, the test is performed by modifying the serialization rule without modifying the concurrent program as the source code. Debug. Other parts are basically the same as those in the above-described embodiments.

【0367】本実施例における並行プログラムの作成
は、以下のような手順によって実現される。図125
は、本実施例に係る並行プログラム作成方法の概略手順
を示すフローチャートである。
Creation of a parallel program in this embodiment is realized by the following procedure. Fig. 125
3 is a flowchart showing a schematic procedure of a parallel program creating method according to the present embodiment.

【0368】(1) ステップA1:モデル化 対象の並行システムに対し、並行性を用いた自然なモデ
ル化を行う。また、各プロセス構造を決定する。更に、
該プロセス内を並行プログラム等を用いたプログラミン
グにより、並行構造を有する並行プログラムをソースプ
ログラムとして記述する。このソースプログラムには、
バグが潜在的に存在する可能性がある。 (2) ステップA2:逐次化 ステップA1で得られた並行プログラムを所定の逐次化
ルールに基づいて超逐次プログラムに変換する。
(1) Step A1: Modeling Natural modeling using concurrency is performed on the target parallel system. Also, each process structure is determined. Furthermore,
A parallel program having a parallel structure is described as a source program by programming in the process using a parallel program or the like. This source program contains
Potential bugs may exist. (2) Step A2: Serialization The parallel program obtained in Step A1 is converted into a hyper-sequential program based on a predetermined serialization rule.

【0369】(3) ステップA3:テスト・デバッグ ステップA2で変換された超逐次プログラムを実行して
テストを行い、機能面のバグがある場合は、超逐次プロ
グラムを修正してテスト・デバッグを行う。
(3) Step A3: Test / debug The hyper-sequential program converted in step A2 is executed for testing, and if there is a functional bug, the hyper-sequential program is modified for test / debug. .

【0370】(4) ステップC2:バグ判定 ステップA3のテストの結果、タイミング面のバグがあ
る場合は、ステップJ1に移行する。いずれのバグもな
い場合は、その超逐次プログラムを保存しステップA4
に移行する。
(4) Step C2: Bug Judgment If the result of the test in Step A3 shows that there is a bug in timing, the process proceeds to Step J1. If there are no bugs, save the hyper sequential program and proceed to step A4.
Move to

【0371】(5) ステップJ1:逐次化ルールの修
正 ステップC2でタイミング面のバグがあると判定された
場合は、逐次化ルールを修正し、ステップA2に戻る。
(5) Step J1: Modification of Serialization Rule If it is determined in step C2 that there is a bug in timing, the serialization rule is modified and the process returns to step A2.

【0372】(6) ステップA4:良い非決定性の導
入 良い非決定性の追加が必要な場合は、ステップJ1によ
り逐次化ルールを修正して新たな逐次化ルールを設定
し、ステップA2に戻る。良い非決定性の追加が必要で
ない場合は、ステップA7に移行する。
(6) Step A4: Introduction of Good Nondeterminism If good nondeterminism needs to be added, the serialization rule is modified in step J1 to set a new serialization rule, and the process returns to step A2. If it is not necessary to add good nondeterminism, the process proceeds to step A7.

【0373】(7) ステップA7:並行化コンパイル 保存された超逐次プログラムの集合から、無害な非決定
性部分を抽出し、それを並行プログラムとして生成す
る。
(7) Step A7: Parallelization Compilation A harmless non-deterministic part is extracted from the stored set of hyper-sequential programs and is generated as a parallel program.

【0374】図126は、本実施例に係る並行プログラ
ム作成支援装置の概略構成を示す図である。同図におい
て、第1CPファイル記憶部11に格納されているソー
スプログラムCPは、逐次化装置12において逐次化ル
ール記憶部13に格納された逐次化ルールに従って、メ
タレベルにおいてデフォルト逐次性が導入されることに
より、超逐次プログラム(HSP)に変換され、HSP
ファイル記憶部14に記録される。ユーザは、この超逐
次プログラムHSPを出力装置5によって見ることがで
きる。この超逐次プログラムHSPは、ユーザによる入
力装置4からの指示によってテスト実行装置15に入力
され、テスト実行が行われる。
FIG. 126 is a diagram showing a schematic configuration of the parallel program creation support apparatus according to this embodiment. In the figure, in the source program CP stored in the first CP file storage unit 11, the default serialization is introduced at the meta level according to the serialization rule stored in the serialization rule storage unit 13 in the serialization device 12. Is converted into a hyper sequential program (HSP) by
It is recorded in the file storage unit 14. The user can see the hyper sequential program HSP by the output device 5. This hyper-sequential program HSP is input to the test execution device 15 according to an instruction from the input device 4 by the user, and the test execution is performed.

【0375】テスト実行装置15は、テスト実行の結果
(実行ログ)を出力装置5に提示する。ユーザは、この
テスト実行の結果に基づいて、逐次化ルール修正装置2
6を用いて逐次化ルール記憶部13に格納されている逐
次化ルールを修正し、超逐次プログラムHSPに対し所
定のテスト・デバッグを行うことができる。
The test execution device 15 presents the result of the test execution (execution log) to the output device 5. The user uses the serialization rule correction device 2 based on the result of this test execution.
6 can be used to modify the serialization rule stored in the serialization rule storage unit 13 to perform predetermined test / debug on the hyper-sequential program HSP.

【0376】ユーザは、このように逐次化ルールの修正
により超逐次プログラムHSPに対して所定のテスト・
デバッグを行った後、入力装置4から再度テスト実行の
指示を与える。これにより、テスト・デバッグの行われ
た超逐次プログラムHSPは、テスト実行装置15に入
力され、再度テスト実行が行われる。このテスト・デバ
ッグは、超逐次プログラムHSPが正常に動作すること
を確認するまで繰り返し行われる。
By modifying the serialization rule in this way, the user can perform a predetermined test on the hyper-sequential program HSP.
After performing the debugging, the test execution instruction is given again from the input device 4. As a result, the hyper-sequential program HSP subjected to the test / debug is input to the test execution device 15 and the test execution is performed again. This test / debug is repeated until it is confirmed that the hyper sequential program HSP operates normally.

【0377】そして、本実施例ではテスト・デバッグに
より正常に動作することを確認した時点で、逐次化ルー
ル修正装置26により逐次化ルール記憶部13に格納さ
れている逐次化ルールが修正され、この修正の後の逐次
化ルールが逐次化ルール記憶部13に新たに記録され
る。この逐次化ルールの修正によって、超逐次プログラ
ムに対して良い非決定性に関する情報が部分的に導入さ
れる。
Then, in the present embodiment, when it is confirmed by the test / debug that the operation is normal, the serialization rule correction device 26 corrects the serialization rule stored in the serialization rule storage unit 13. The corrected serialization rule is newly recorded in the serialization rule storage unit 13. This modification of the serialization rules partially introduces information about good nondeterminism into hypersequential programs.

【0378】その他本発明の要旨を変更しない範囲で種
々変形して実施できるのは勿論である。
It is needless to say that various modifications can be made without departing from the scope of the present invention.

【0379】[0379]

【発明の効果】本発明によれば次のような効果が得られ
る。
According to the present invention, the following effects can be obtained.

【0380】本発明では並行プログラムを一旦逐次化
し、逐次化したプログラムに対してテスト・デバッグを
行うことにより、従来の並行プログラムのプログラミン
グより遥かに容易な逐次プログラミングと同じレベルの
困難さで並行プログラムのテスト・デバッグが可能とな
る。
In the present invention, a concurrent program is serialized once, and the serialized program is tested and debugged, so that the concurrent program can be executed at the same level of difficulty as the sequential programming, which is much easier than the conventional concurrent program programming. It is possible to test and debug.

【0381】上記のグラフ情報によって並行化及び逐次
化の情報をユーザに対して同時に提示することにより、
ユーザは第1並行プログラムの並行構造を考慮しつつ、
良い非決定性部分の指定をすることができるようにな
る。また、並行プログラム記述レベルにおける良い非決
定性部分の指定・解除ではなく、グラフ情報に対して良
い非決定性部分を指定・解除を行うことでができるた
め、高度な並行プログラミング技術を必要とすることな
く、容易に並行プログラムの開発をすることができるよ
うになる。
By presenting parallelization and serialization information to the user at the same time by the above graph information,
The user considers the parallel structure of the first concurrent program,
You will be able to specify good non-deterministic parts. In addition, it is possible to specify and cancel the good non-deterministic part for the graph information instead of specifying and canceling the good non-deterministic part at the concurrent program description level. , Will be able to easily develop concurrent programs.

【0382】第1並行プログラムを逐次プログラムに変
換する際、第1並行プログラム及びその実行ログを解析
し、この解析結果に基づいて実行ログを並べ替えるよう
にすれば、並べ替え後の実行ログを表示してユーザに提
示することによって、並行プログラムの実行過程の理解
が容易となり、テスト・デバッグの効率が向上する。逐
次プログラムに並行性に関する情報を導入する際、逐次
プログラムのプロセスの流れを制約と遷移条件からなる
フィールドに変換し、更にそのフィールドデータを表示
することによって、フィールドを対話的・視覚的に編集
することで並行性に関する情報を効果的に導入し、バグ
のない並行プログラムが効率的に作成される。
When the first concurrent program is converted into a sequential program, the first concurrent program and its execution log are analyzed, and the execution logs are sorted based on the result of this analysis. By displaying it and presenting it to the user, it becomes easy to understand the execution process of the concurrent program, and the efficiency of test / debug is improved. When introducing information about concurrency into a serial program, the process flow of the serial program is converted into a field consisting of constraints and transition conditions, and the field data is displayed to edit the field interactively and visually. This effectively introduces information about concurrency and effectively creates bug-free concurrent programs.

【0383】第1並行プログラムから逐次化された逐次
プログラムに対して並行化の候補となるプロセス群を指
定し、このプロセス群の実行順序を入れ換えて逐次プロ
グラムを複数の並行模擬プログラムに変換した後、これ
ら複数の並行模擬プログラムを部分的に逐次構造を有す
る1つの部分逐次プログラムに変換し、この部分逐次プ
ログラムを並行化して第2並行プログラムに変換するこ
とにより、部分逐次プログラム上で並行プログラムの動
作を十分に確認することができる。また、部分逐次プロ
グラムに対して並行化の候補となるプロセス群を指定す
ることで、逐次構造プログラムを段階的に並行プログラ
ムへ変換することができる。更に、並行模擬動作系列に
基づく逐次実行で正しく動作することが確認された非決
定性のみを許容する並行性に関する情報を導入すること
で、正しく動作する並行プログラムを得ることができ
る。これらによって、並行プログラムのテスト・デバッ
グが容易となる。
After a process group which is a candidate for parallelization is designated for the serialized program serialized from the first concurrent program and the execution order of this process group is exchanged to convert the sequential program into a plurality of parallel simulated programs. , A plurality of parallel simulation programs are partially converted into one partial sequential program having a sequential structure, and the partial sequential program is parallelized and converted into a second parallel program, thereby making The operation can be fully confirmed. Further, by designating a process group that is a candidate for parallelization with respect to the partial sequential program, the sequential structure program can be gradually converted into a parallel program. Furthermore, by introducing information about concurrency that allows only nondeterminism that is confirmed to operate correctly by sequential execution based on the parallel simulated operation sequence, a parallel program that operates correctly can be obtained. These facilitate testing and debugging of concurrent programs.

【0384】プロセス群がメッセージ情報を交換しなが
ら並行して動作する実行環境に用いられる並行プログラ
ムの作成を支援する並行プログラム作成支援装置におい
て、第1並行プログラムのプロセス群の実行履歴である
ログ情報を逐次化ルールとして取得して記憶し、このロ
グ情報を修正可能とするとともに、記憶されているログ
情報に基づいてこれに基づいてプロセス群を逐次的に起
動制御し、記憶されたログ情報を並行化して第2並行プ
ログラムに変換することにより、ソースプログラムとし
ての並行プログラムを修正することなく、ログ情報の修
正で処理タイミングの非決定性に起因する不具合を解決
できる。これにより、処理タイミングの非決定性が内在
する並行/並列/分散プログラムの開発が容易となる。
また、ユーザの意図する良い非決定性のみを容易に導入
することができるため、並行プログラムとしての柔軟
性、再利用性及び拡張性を維持することもできる。
In a parallel program creation support device for supporting creation of a parallel program used in an execution environment in which process groups exchange message information and operate in parallel, log information which is an execution history of the process group of the first parallel program Is acquired as a serialization rule and stored, the log information can be corrected, and the process group is sequentially activated based on the stored log information, and the stored log information is stored. By parallelizing and converting to the second parallel program, it is possible to solve the problem caused by the nondeterminism of the processing timing by modifying the log information without modifying the parallel program as the source program. This facilitates the development of parallel / parallel / distributed programs with inherent non-deterministic processing timing.
Further, since only good nondeterminism intended by the user can be easily introduced, it is possible to maintain flexibility, reusability, and extensibility as a concurrent program.

【0385】プロセス群がメッセージ情報を交換しなが
ら並行して動作できる実行環境でプロセス群が実行順序
規定情報に従って動作するシステムにおいて、実行順序
規定情報を分割し、つまり並行プログラムを逐次化して
得られた全プロセスの集中ログ情報を各プロセス毎に分
割し、この分割された実行順序情報に基づいてプロセス
群を起動制御することにより、無害の非決定性を自然に
導入し、集中ログ情報に基づく逐次プログラムの実行時
と同一結果を高い処理効率で得ることが可能となる。
In a system in which the process groups operate in accordance with the execution order specifying information in an execution environment in which the process groups can operate in parallel while exchanging message information, the execution order specifying information is divided, that is, a parallel program is serialized. By dividing the centralized log information of all the processes for each process and controlling the activation of the process group based on this divided execution order information, harmless nondeterminism is naturally introduced, and the sequential log information is used. It is possible to obtain the same result as when the program is executed with high processing efficiency.

【0386】第1並行プログラムをテスト実行してその
テスト実行の結果、その1つであるバグのない実行ログ
を蓄積し、この蓄積されたバグのない実行ログのみを並
行化して第2並行プログラムに変換することにより、テ
ストで通過したタイミングだけを許容するようにプログ
ラムが動くようになるため、テストしなかったことで残
存したバグに陥ることを回避でき、信頼性が向上する。
As a result of the test execution of the first parallel program, one of them, a bug-free execution log, is accumulated, and only the accumulated bug-free execution log is parallelized to generate a second parallel program. By converting to, the program moves so that only the timing passed in the test is allowed, so it is possible to avoid falling into the bug that remained due to not testing, and improve the reliability.

【0387】本発明の並行プログラム実行装置によれば
並行プログラムの逐次又は部分並行実行を行なうことが
可能となるので、従来の逐次プログラムと同様に再現性
を保証することができ、効果的かつ安定したテスト・デ
バッグを行なうことができる。また、逐次実行から部分
並行実行に容易に切替えることができるため、逐次化し
てテスト・デバッグをおこなったプログラムを非決定性
に影響されない安全な並行実行を可能とする。他に、セ
クションの実行順序に関するルールを編集して実行時の
セクション間の同期を制御することにより、効果的なテ
スト・デバッグを行なえるとともにプログラムの効率化
の指針とすることもできる。
According to the parallel program execution device of the present invention, since it is possible to execute a serial or partial parallel execution of a parallel program, reproducibility can be assured like a conventional serial program, and it is effective and stable. You can perform the test / debug that you have done. Moreover, since it is possible to easily switch from serial execution to partial parallel execution, it is possible to safely execute parallel execution of a program that has been serialized and tested and debugged without being affected by nondeterminism. In addition, by editing the rules regarding the execution order of the sections and controlling the synchronization between the sections at the time of execution, it is possible to perform effective test / debug and also to guide the efficiency of the program.

【図面の簡単な説明】[Brief description of drawings]

【図1】 本発明に係る並行プログラム作成支援装置を
実現するためのコンピュータシステムの構成図。
FIG. 1 is a configuration diagram of a computer system for realizing a parallel program creation support device according to the present invention.

【図2】 実施例1に係る並行プログラム作成支援装置
の概略構成を示すブロック図。
FIG. 2 is a block diagram showing a schematic configuration of a parallel program creation support device according to the first embodiment.

【図3】 実施例1に係る並行プログラム作成方法の概
略手順を示すフローチャート。
FIG. 3 is a flowchart showing a schematic procedure of a parallel program creating method according to the first embodiment.

【図4】 実施例1の動作説明のための並行プログラム
の一例と逐次化ルールを示す図。
FIG. 4 is a diagram showing an example of a parallel program and a serialization rule for explaining the operation of the first embodiment.

【図5】 実施例1の動作説明のためのメタレベルのデ
フォルト逐次性が導入された超逐次プログラムの概念
図。
FIG. 5 is a conceptual diagram of a hyper-sequential program in which meta-level default seriality is introduced for explaining the operation of the first embodiment.

【図6】 実施例1の動作説明のためのデバッグ画面の
一例を示す図。
FIG. 6 is a diagram showing an example of a debug screen for explaining the operation of the first embodiment.

【図7】 実施例1の動作説明のための非決定性に関す
る情報の導入例を示す図。
FIG. 7 is a diagram showing an example of introducing information about nondeterminism for explaining the operation of the first embodiment.

【図8】 実施例2に係る並行プログラム作成支援装置
の概略構成を示すブロック図。
FIG. 8 is a block diagram showing a schematic configuration of a parallel program creation support device according to a second embodiment.

【図9】 実施例2に係る並行プログラム作成方法の概
略手順を示すフローチャート。
FIG. 9 is a flowchart showing a schematic procedure of a parallel program creating method according to the second embodiment.

【図10】 セクションの設定方法の一例を示す図。FIG. 10 is a diagram showing an example of a section setting method.

【図11】 逐次化方式の一例を示す図。FIG. 11 is a diagram showing an example of a serialization method.

【図12】 逐次化情報の書換ルール例を示す図。FIG. 12 is a diagram showing an example of a rewriting rule of serialization information.

【図13】 並行プログラムの例を示す図。FIG. 13 is a diagram showing an example of a parallel program.

【図14】 並行プログラムの記載例を示す図。FIG. 14 is a diagram showing a description example of a parallel program.

【図15】 それぞれ、超逐次プログラムのセクション
情報、プログラム構造情報、超逐次化情報を示す図。
FIG. 15 is a diagram showing section information, program structure information, and hyper-serialization information of a hyper-sequential program, respectively.

【図16】 良い並行性の導入を説明するための図。FIG. 16 is a diagram for explaining the introduction of good concurrency.

【図17】 自動並行化を行った逐次プログラミングか
ら生成された並行プログラムのソースコードを示す図。
FIG. 17 is a diagram showing source code of a parallel program generated from sequential programming with automatic parallelization.

【図18】 超逐次プログラムのプログラム構造情報を
示す図。
FIG. 18 is a diagram showing program structure information of a hyper sequential program.

【図19】 超逐次プログラムの逐次化情報を示す図。FIG. 19 is a diagram showing serialization information of a hyper sequential program.

【図20】 自動並行化された超逐次プログラムの処理
の流れを示す図。
FIG. 20 is a diagram showing the flow of processing of a hyper-sequential program that is automatically parallelized.

【図21】 実施例3に係る並行プログラム作成支援装
置の概略構成を示すブロック図。
FIG. 21 is a block diagram showing a schematic configuration of a parallel program creation support device according to a third embodiment.

【図22】 実施例3に係る並行プログラム作成方法の
概略手順を示すフローチャート。
FIG. 22 is a flowchart showing a schematic procedure of a parallel program creating method according to the third embodiment.

【図23】 実施例3の動作説明のためのソースプログ
ラムである並行プログラムの一例を示す図。
FIG. 23 is a diagram showing an example of a parallel program which is a source program for explaining the operation of the third embodiment.

【図24】 実施例3における並行プログラム合成例を
示す図。
FIG. 24 is a diagram showing an example of parallel program composition in the third embodiment.

【図25】 実施例4に係る並行プログラム作成法の概
略手順を示すフローチャート。
FIG. 25 is a flowchart showing a schematic procedure of a parallel program creation method according to the fourth embodiment.

【図26】 実施例4で用いるプロセステーブルを示す
図。
FIG. 26 is a diagram showing a process table used in the fourth embodiment.

【図27】 実施例4の動作説明のための並行プログラ
ムの一例を示す図。
FIG. 27 is a diagram showing an example of a parallel program for explaining the operation of the fourth embodiment.

【図28】 図27における並行プログラムの並行構造
を示す概念図。
28 is a conceptual diagram showing the parallel structure of the parallel program in FIG.

【図29】 実施例4で用いる並行プログラムの構造解
析の結果作成されるプロセステーブルを示す図。
FIG. 29 is a diagram showing a process table created as a result of structural analysis of a parallel program used in the fourth embodiment.

【図30】 実施例4で用いる超逐次グラフの一例を示
す図。
FIG. 30 is a diagram showing an example of a hyper-sequential graph used in the fourth embodiment.

【図31】 実施例4における超逐次グラフ生成装置の
動作処理を説明するための図。
FIG. 31 is a diagram for explaining an operation process of the hyper-sequential graph generation device according to the fourth embodiment.

【図32】 実施例4における並行化部分の指定方法を
説明するための図。
FIG. 32 is a diagram for explaining a method of designating a parallelization part according to the fourth embodiment.

【図33】 実施例4における並行化部分指定後の超逐
次グラフの一例を示す図。
FIG. 33 is a diagram showing an example of a hyper-sequential graph after designation of a parallelization part according to the fourth embodiment.

【図34】 グループ化されたノードを持つ超逐次グラ
フの一例を示す図。
FIG. 34 is a diagram showing an example of a hyper-sequential graph having grouped nodes.

【図35】 優先順位変更後の超逐次グラフの一例を示
す図。
FIG. 35 is a diagram showing an example of a hyper-sequential graph after priority change.

【図36】 3プロセス間の良い非決定性部分の導入を
説明するための図。
FIG. 36 is a diagram for explaining the introduction of a good nondeterministic portion between three processes.

【図37】 良い非決定性部分の導入後の超逐次グラフ
を示す図。
FIG. 37 is a diagram showing a hypersequential graph after introduction of a good nondeterministic part.

【図38】 実施例5に係る並行プログラム作成支援装
置の概略構成を示すブロック図。
FIG. 38 is a block diagram showing a schematic configuration of a parallel program creation support device according to the fifth embodiment.

【図39】 実施例5の動作説明のためのソースプログ
ラムである並行プログラムを示す図。
FIG. 39 is a diagram showing a parallel program which is a source program for explaining the operation of the fifth embodiment.

【図40】 図39の並行プログラムで実行される処理
の流れを示す図。
FIG. 40 is a diagram showing the flow of processing executed by the parallel program shown in FIG. 39.

【図41】 実施例5における逐次化プロセスファイル
に格納されている逐次化プロセスの一例を示す図。
FIG. 41 is a diagram showing an example of a serialization process stored in a serialization process file according to the fifth embodiment.

【図42】 図41の逐次化プロセスで実行される処理
の流れを示す図。
42 is a diagram showing the flow of processing executed in the serialization process of FIG. 41. FIG.

【図43】 実施例5におけるフィールドデータ生成部
で実行される処理の流れを示すフローチャート。
FIG. 43 is a flowchart showing the flow of processing executed by the field data generation unit according to the fifth embodiment.

【図44】 図43の処理により生成されるエリアのデ
ータ構造を示す図。
FIG. 44 is a diagram showing a data structure of an area generated by the processing of FIG. 43.

【図45】 実施例5におけるフィールドデータ生成部
で生成されるフィールドデータの一例を示す図。
FIG. 45 is a diagram showing an example of field data generated by a field data generation unit in the fifth embodiment.

【図46】 実施例5におけるフィールドチューニング
部で実行される処理の流れを示すフローチャート。
FIG. 46 is a flowchart showing the flow of processing executed by the field tuning unit in the fifth embodiment.

【図47】 図46の一部(ステップE9)を詳細に示
す図。
FIG. 47 is a diagram showing a part (step E9) of FIG. 46 in detail.

【図48】 実施例5における制約変更操作によって起
こるフィールドの変化を示す図。
FIG. 48 is a diagram showing a change in a field caused by a constraint changing operation according to the fifth embodiment.

【図49】 図46の他の一部(ステップE11)を詳
細に示す図。
FIG. 49 is a diagram showing another part (step E11) of FIG. 46 in detail.

【図50】 実施例5における制約変更操作によって起
こるフィールドの変化を示す図。
FIG. 50 is a diagram showing a change in field caused by a constraint changing operation according to the fifth embodiment.

【図51】 図46の更に他の一部(ステップE13)
を詳細に示す図。
51 is a further part of FIG. 46 (step E13).
The figure which shows in detail.

【図52】 実施例5における制約変更操作によって起
こるフィールドの変化を示す図。
FIG. 52 is a diagram showing a change in field caused by a constraint changing operation according to the fifth embodiment.

【図53】 フィールドに矛盾を発生させる自明な制約
を検出する処理を示す図。
FIG. 53 is a diagram showing a process of detecting a trivial constraint that causes a contradiction in a field.

【図54】 自明制約を含むフィールド例を示す図。FIG. 54 is a diagram showing an example of a field including a trivial constraint.

【図55】 自明制約の検出例を示す図。FIG. 55 is a diagram showing an example of detecting a trivial constraint.

【図56】 フィールドエディタの表示画面の例を示す
図。
FIG. 56 is a diagram showing an example of a display screen of a field editor.

【図57】 フィールドエディタの表示画面の他の例を
示す図。
FIG. 57 is a diagram showing another example of the display screen of the field editor.

【図58】 フィールドエディタの表示画面の更に他の
例を示す図。
FIG. 58 is a diagram showing still another example of the display screen of the field editor.

【図59】 実施例5におけるフィールドデータのチュ
ーニング過程の様子示す図。
FIG. 59 is a diagram showing a state of a field data tuning process according to the fifth embodiment.

【図60】 実施例5におけるフィールドデータのチュ
ーニング過程の様子示す図。
FIG. 60 is a diagram showing a state of a tuning process of field data according to the fifth embodiment.

【図61】 実施例5におけるフィールドデータのチュ
ーニング過程の様子示す図。
FIG. 61 is a diagram showing a state of a tuning process of field data according to the fifth embodiment.

【図62】 実施例5におけるフィールドデータのチュ
ーニング過程の様子示す図。
FIG. 62 is a diagram showing a state of a tuning process of field data according to the fifth embodiment.

【図63】 実施例5におけるフィールドデータのチュ
ーニング過程の様子示す図。
FIG. 63 is a diagram showing a state of a tuning process of field data according to the fifth embodiment.

【図64】 実施例5におけるフィールドデータのチュ
ーニング過程の様子示す図。
FIG. 64 is a diagram showing a state of a tuning process of field data according to the fifth embodiment.

【図65】 実施例5におけるフィールドデータのチュ
ーニング過程の様子示す図。
FIG. 65 is a diagram showing a state of a tuning process of field data according to the fifth embodiment.

【図66】 実施例5におけるフィールドデータのチュ
ーニング過程の様子示す図。
FIG. 66 is a diagram showing a state of a tuning process of field data according to the fifth embodiment.

【図67】 実施例5におけるフィールド変換部で実行
される処理を示すフローチャート。
FIG. 67 is a flowchart showing processing executed by the field conversion unit according to the fifth embodiment.

【図68】 実施例5における修正後の並行プログラム
の一例を示す図。
FIG. 68 is a diagram showing an example of a corrected parallel program according to the fifth embodiment.

【図69】 図68の並行プログラムで実行されるプロ
セスの流れをイメージした図。
69 is a diagram imagining the flow of processes executed by the parallel program of FIG. 68.

【図70】 実施例6に係る並行プログラム作成支援装
置の概略構成を示す図。
FIG. 70 is a diagram showing a schematic configuration of a concurrent program creation support device according to the sixth embodiment.

【図71】 実施例7に係る並行プログラム作成方法の
概略手順を示すフローチャート。
FIG. 71 is a flowchart showing a schematic procedure of a parallel program creating method according to the seventh embodiment.

【図72】 実施例7の動作説明のためのユーザが想定
した並行プログラムモデルの一例を示す図。
FIG. 72 is a diagram showing an example of a concurrent program model assumed by the user for explaining the operation of the seventh embodiment.

【図73】 図72の並行プログラムから得られる超逐
次プログラムの実行系列をモデル化した例を示す図。
73 is a diagram showing an example in which an execution sequence of a hyper sequential program obtained from the parallel program of FIG. 72 is modeled.

【図74】 実施例7における超逐次プログラムから部
分並行プログラムへの変換手順を示すフローチャート。
FIG. 74 is a flowchart showing the procedure for converting a hyper-sequential program to a partial parallel program according to the seventh embodiment.

【図75】 実施例7における超逐次プログラムから部
分並行プログラムへの変換例を示す図。
FIG. 75 is a diagram showing an example of conversion from a hyper sequential program to a partial parallel program in the seventh embodiment.

【図76】 実施例7における超逐次プログラムから部
分並行プログラムへの変換例を示す図。
FIG. 76 is a diagram showing an example of conversion from a hyper sequential program to a partial parallel program in the seventh embodiment.

【図77】 実施例7における超逐次プログラムから部
分並行プログラムへの変換例を示す図。
FIG. 77 is a diagram showing an example of conversion from a hyper sequential program to a partial parallel program in the seventh embodiment.

【図78】 実施例7における超逐次プログラムから部
分並行プログラムへの変換例を示す図。
FIG. 78 is a diagram showing an example of conversion from a hyper sequential program to a partial parallel program according to the seventh embodiment.

【図79】 実施例8に係るプロセス間の情報交換の一
例を示す図。
FIG. 79 is a diagram showing an example of information exchange between processes according to the eighth embodiment.

【図80】 実施例8に係る並行プログラム作成支援装
置の概略構成を示すブロック図。
FIG. 80 is a block diagram showing a schematic configuration of a parallel program creation support device according to an eighth embodiment.

【図81】 実施例8に係る並行プログラム作成方法の
概略手順を示すフローチャート。
FIG. 81 is a flowchart showing a schematic procedure of a parallel program creating method according to the eighth embodiment.

【図82】 実施例8におけるメッセージの実行履歴で
あるログ情報の一例を示す図。
FIG. 82 is a diagram showing an example of log information which is an execution history of messages in the eighth embodiment.

【図83】 実施例8に係るログ情報に基づく並行プロ
グラムデバッグ装置の概略構成を示すブロック図。
FIG. 83 is a block diagram showing a schematic configuration of a parallel program debug device based on log information according to the eighth embodiment.

【図84】 実施例8におけるメッセージフォーマット
の一例を示す図。
FIG. 84 is a diagram showing an example of a message format according to the eighth embodiment.

【図85】 実施例8におけるプロセス間情報交換を示
す図。
FIG. 85 is a diagram showing inter-process information exchange according to the eighth embodiment.

【図86】 実施例8におけるログ情報の一例を示す
図。
FIG. 86 is a diagram showing an example of log information according to the eighth embodiment.

【図87】 実施例8におけるプロセス群制御部の処理
手順を示すフローチャート。
FIG. 87 is a flowchart showing the processing procedure of the process group control unit according to the eighth embodiment.

【図88】 実施例8におけるログ情報を修正するため
に入れ替え対象を指示している一例を示す図。
FIG. 88 is a diagram showing an example of instructing a replacement target in order to correct the log information according to the eighth embodiment.

【図89】 実施例8における修正後のログ情報の一例
を示す図。
FIG. 89 is a diagram showing an example of corrected log information according to the eighth embodiment.

【図90】 実施例8におけるログ情報に良い非決定性
を導入するためにその対象箇所を指定している一例を示
す図。
FIG. 90 is a diagram showing an example in which the target portion is specified in order to introduce good nondeterminism into the log information in the eighth embodiment.

【図91】 実施例8における良い非決定性導入後のロ
グ情報の一例を示す図。
FIG. 91 is a diagram showing an example of log information after introduction of good non-determinism in Example 8.

【図92】 実施例8におけるログ情報に基づく並行プ
ログラム実行システムの構成を示す図。
FIG. 92 is a diagram showing a configuration of a parallel program execution system based on log information in the eighth embodiment.

【図93】 実施例8におけるタスク間情報交換を示す
図。
FIG. 93 is a diagram showing information exchange between tasks according to the eighth embodiment.

【図94】 実施例8における良い非決定性を導入した
場合のログ情報の一例を示す図。
FIG. 94 is a diagram showing an example of log information when good nondeterminism is introduced in the eighth embodiment.

【図95】 実施例8におけるタスク制御部の処理手順
を示すフローチャート。
FIG. 95 is a flowchart showing the processing procedure of the task control unit according to the eighth embodiment.

【図96】 実施例8におけるタスク制御部を起動する
ための一手段であるプログラム例を示す図。
FIG. 96 is a diagram showing an example of a program that is one means for activating a task control unit according to the eighth embodiment.

【図97】 実施例8におけるメッセージフォーマット
を示す図。
FIG. 97 is a diagram showing a message format according to the eighth embodiment.

【図98】 実施例8におけるタスク制御部の処理手順
を示すフローチャート。
FIG. 98 is a flowchart showing the processing procedure of the task control unit according to the eighth embodiment.

【図99】 実施例8における各タスクの構成例を示す
図。
FIG. 99 is a diagram showing a configuration example of each task in the eighth embodiment.

【図100】 セクションの概念を示す図。FIG. 100 is a view showing the concept of sections.

【図101】 セクションの融合を示す概念図。101 is a conceptual diagram showing section fusion. FIG.

【図102】 セクションの分割を示す概念図。FIG. 102 is a conceptual diagram showing division of sections.

【図103】 本発明の実施例9の概略構成を示す図。FIG. 103 is a diagram showing a schematic configuration of a ninth embodiment of the present invention.

【図104】 セクションを記憶するためのデータ構造
を示す図。
FIG. 104 shows a data structure for storing sections.

【図105】 セクション管理テーブルの構造を示す
図。
FIG. 105 is a diagram showing the structure of a section management table.

【図106】 部品テーブルの構造を示す図。FIG. 106 is a view showing the structure of a parts table.

【図107】 セクションの実行順序のルールを説明す
るための図。
FIG. 107 is a view for explaining the rules of the execution order of sections.

【図108】 プログラム解析部の詳細構成を示す図。FIG. 108 is a diagram showing a detailed configuration of a program analysis unit.

【図109】 プログラム解析の流れを示すフローチャ
ート。
FIG. 109 is a flowchart showing the flow of program analysis.

【図110】 セクション情報編集部の詳細構成を示す
図。
FIG. 110 is a diagram showing a detailed configuration of a section information editing unit.

【図111】 コンパイル部の詳細構成を示す図。FIG. 111 is a diagram showing a detailed configuration of a compiling unit.

【図112】 実行部の詳細構成を示す図。FIG. 112 is a diagram showing a detailed configuration of an execution unit.

【図113】 実行部の処理の流れを示すフローチャー
ト。
FIG. 113 is a flowchart showing the processing flow of the execution unit.

【図114】 実行セクション候補記憶部の変化を説明
するための図。
FIG. 114 is a diagram for explaining changes in the execution section candidate storage unit.

【図115】 実行セクション候補記憶部の変化を示す
図。
FIG. 115 is a diagram showing changes in the execution section candidate storage unit.

【図116】 従来技術の問題点を説明するための図。FIG. 116 is a diagram for explaining a problem of the conventional technique.

【図117】 実施例10に係る逐次化装置の構成を示
すブロック図。
117 is a block diagram showing the configuration of the serialization device according to the tenth embodiment. FIG.

【図118】 実施例10に係る並行プログラム作成方
法の概略手順を示すフローチャート。
FIG. 118 is a flowchart showing a schematic procedure of a parallel program creating method according to the tenth embodiment.

【図119】 実施例10の動作説明のためのソースプ
ログラムである並行プログラムの一例を示す図。
FIG. 119 is a diagram showing an example of a parallel program which is a source program for explaining the operation of the tenth embodiment.

【図120】 実施例10の動作説明のための図119
の並行プログラムの実行ログを示す図。
120] FIG. 119 for explaining the operation of the tenth embodiment.
Of the execution log of the concurrent program of.

【図121】 実施例10の動作説明のための並行プロ
グラムの先行関係を示す図。
FIG. 121 is a diagram showing a preceding relationship of a parallel program for explaining the operation of the tenth embodiment.

【図122】 実施例10の動作説明のための並行プロ
グラムの実行ログの並べ替えた後の状態を示す図。
FIG. 122 is a diagram showing a state after rearranging the execution logs of the parallel program for explaining the operation of the tenth embodiment.

【図123】 実施例10の動作説明のための修正後の
並行プログラムの一例を示す図。
FIG. 123 is a diagram showing an example of a modified parallel program for explaining the operation of the tenth embodiment.

【図124】 実施例11に係る並行プログラム作成支
援装置の概略構成を示す図。
FIG. 124 is a diagram showing a schematic configuration of a concurrent program creation support device according to the eleventh embodiment.

【図125】 実施例12に係る並行プログラム作成方
法の概略手順を示すフローチャート。
FIG. 125 is a flowchart showing a schematic procedure of a parallel program creating method according to the twelfth embodiment.

【図126】 実施例12に係る並行プログラム作成支
援装置の概略構成を示すブロック図。
FIG. 126 is a block diagram showing a schematic configuration of a parallel program creation support device according to the twelfth embodiment.

【符号の説明】[Explanation of symbols]

1〜1〜1−N…プロセッサ 2…I/Oインタフェ
ース 3…共有メモリ 4…入力装置 5…出力装置 6…記憶装置 11…第1CPファイル記憶部 12…逐次化装置 13…逐次化ルール記憶部 14…HSPファイル
記憶部 15…テスト実行装置 16…デバッグ装置 17…非決定性導入装置 18…並行化装置 19…第2CPファイル記憶部 20…解析情報記憶部 21…並行化ルール記
憶部 22…実行装置 23…分割基準指定装
置 25…変更装置 26…逐次化ルール修
正装置 31…逐次化情報記憶部 32…逐次化情報読込
部 33…並行構造解析部 34…逐次構造解析部 35…画像データ生成部 51…逐次化プロセスリスト記憶部 52…フィールドデータ記憶部 53…フィールドデー
タ生成部 54…フィールドチューニング部 55…フィールドエディタ 201…ログ情報記憶部 202…ログ情報取得
部 203…プロセス群制御部 204…メッセージ保
存部 205…ログ情報修正部 301…集中ログ情報記憶部 302…ログ情報分割
部 303…分割基準指定部 304…分割ログ情報
記憶部 305…プロセス制御部 306…処理待ちメッ
セージ保存部 401…テスト実行装置 402…テストケース
記憶部 403…実行ログ記憶部 404…実行ログデー
タベース 411…プログラム解析部 412…セクション情
報記憶部 413…セクション情報編集部 414…コンパイル部 415…実行部
1-1 to 1-N ... Processor 2 ... I / O interface 3 ... Shared memory 4 ... Input device 5 ... Output device 6 ... Storage device 11 ... First CP file storage unit 12 ... Serialization device 13 ... Serialization rule storage unit 14 ... HSP file storage unit 15 ... Test execution device 16 ... Debugging device 17 ... Non-deterministic introduction device 18 ... Parallelization device 19 ... Second CP file storage unit 20 ... Analysis information storage unit 21 ... Parallelization rule storage unit 22 ... Execution device 23 ... Division standard designation device 25 ... Change device 26 ... Serialization rule correction device 31 ... Serialization information storage unit 32 ... Serialization information reading unit 33 ... Parallel structure analysis unit 34 ... Sequential structure analysis unit 35 ... Image data generation unit 51 ... serialization process list storage unit 52 ... field data storage unit 53 ... field data generation unit 54 ... field tuning unit 55 Field editor 201 ... Log information storage unit 202 ... Log information acquisition unit 203 ... Process group control unit 204 ... Message storage unit 205 ... Log information correction unit 301 ... Centralized log information storage unit 302 ... Log information division unit 303 ... Division standard designation unit 304 ... Divided log information storage unit 305 ... Process control unit 306 ... Process waiting message storage unit 401 ... Test execution device 402 ... Test case storage unit 403 ... Execution log storage unit 404 ... Execution log database 411 ... Program analysis unit 412 ... Section information Storage unit 413 ... Section information editing unit 414 ... Compiling unit 415 ... Execution unit

───────────────────────────────────────────────────── フロントページの続き (72)発明者 關 俊文 神奈川県川崎市幸区柳町70番地 株式会社 東芝柳町工場内 (72)発明者 永井 保夫 神奈川県川崎市幸区柳町70番地 株式会社 東芝柳町工場内 (72)発明者 半田 恵一 神奈川県川崎市幸区柳町70番地 株式会社 東芝柳町工場内 (72)発明者 伊藤 聡 神奈川県川崎市幸区柳町70番地 株式会社 東芝柳町工場内 (72)発明者 澤島 信介 神奈川県川崎市幸区小向東芝町1番地 株 式会社東芝研究開発センター内 (72)発明者 田原 康之 神奈川県川崎市幸区柳町70番地 株式会社 東芝柳町工場内 (72)発明者 塩谷 英明 神奈川県川崎市幸区柳町70番地 株式会社 東芝柳町工場内 ─────────────────────────────────────────────────── ─── Continuation of the front page (72) Inventor Toshifumi Kaban 70 Yanagicho, Sachi-ku, Kawasaki-shi, Kanagawa, Toshiba Yanagimachi Co., Ltd. (72) Inventor Yasuo Nagai 70, Yanagicho, Sachi-ku, Kawasaki, Kanagawa Toshiba Yanagimachi, Ltd. (72) Inventor Keiichi Handa 70 Yanagi-cho, Sachi-ku, Kawasaki-shi, Kanagawa Prefecture, Yanagimachi Plant, Toshiba Corporation (72) Inventor Satoshi Ito 70, Yanagi-cho, Sachi-ku, Kawasaki City, Kanagawa Prefecture, Yanagicho, Toshiba Corporation (72) Inventor Shinsuke Sawashima 1 Komukai Toshiba-cho, Sachi-ku, Kawasaki-shi, Kanagawa Incorporated Toshiba Research and Development Center (72) Inventor Yasuyuki Tahara 70, Yanagi-cho, Sachi-ku, Kawasaki-shi, Kanagawa Toshiba Yanagi-cho Plant (72) Inventor Hideaki Shiotani 70 Yanagimachi, Saiwai-ku, Kawasaki-shi, Kanagawa Toshiba Yanagimachi Factory

Claims (50)

【特許請求の範囲】[Claims] 【請求項1】並行構造を有する第1並行プログラムを逐
次実行可能な逐次プログラムに変換する逐次化手段と、 前記逐次プログラムのテスト・デバッグを行い、テスト
・デバッグ情報を作成するテスト・デバッグ手段と、 テスト・デバッグ後の前記逐次プログラムを前記テスト
・デバッグ情報に基づいて並行化することにより第2並
行プログラムに変換する並行化手段と、を具備すること
を特徴とする並行プログラム作成支援装置。
1. Serializing means for converting a first parallel program having a parallel structure into a serial program that can be serially executed, and test / debug means for performing test / debug of the serial program and creating test / debug information. And a parallelizing means for converting the serial program after the test and debug into a second parallel program by parallelizing the serial program based on the test and debug information.
【請求項2】 前記テスト・デバッグ手段は、前記逐次
プログラムに対して並行性に関する情報を導入する手段
を含むことを特徴とする請求項1記載の並行プログラム
作成支援装置。
2. The concurrent program creation support apparatus according to claim 1, wherein the test / debug means includes means for introducing information about concurrency into the sequential program.
【請求項3】 前記逐次プログラムは、セクション情報
と、プログラム構造情報と、逐次化情報とを含むことを
特徴とする請求項1記載の並行プログラム作成支援装
置。
3. The concurrent program creation support device according to claim 1, wherein the serial program includes section information, program structure information, and serialization information.
【請求項4】 前記第1並行プログラムの並行構造を解
析する解析手段を更に具備し、前記並行化手段は、前記
テスト・デバッグ手段によりテスト・デバッグが行われ
た前記逐次プログラムを前記解析手段の解析結果を用い
て並行化して、第2並行プログラムに変換する手段を含
むことを特徴とする請求項1記載の並行プログラム作成
支援装置。
4. The analysis means for analyzing the parallel structure of the first concurrent program is further provided, and the parallelization means is configured to analyze the sequential program tested and debugged by the test / debug means of the analysis means. 2. The parallel program creation support apparatus according to claim 1, further comprising means for parallelizing using the analysis result and converting it into a second parallel program.
【請求項5】並行構造を有する第1並行プログラムの所
定のセクション群を逐次実行可能な逐次プログラムに変
換する逐次化手段と、 前記第1並行プログラムの所定のセクション群の並行構
造を解析する並行構造解析手段と、 前記逐次プログラムの所定のセクション群の逐次構造を
解析する逐次構造解析手段と、 前記並行構造解析手段で解析された並行構造に関する相
互関係及び前記逐次構造解析手段で解析された逐次構造
に関する相互関係をグラフ情報として表示するグラフ情
報表示手段と、 前記逐次プログラムのうち選択された所定のセクション
群を並行化して部分的に逐次構造を有する部分逐次プロ
グラムに変換する部分逐次化手段と、 前記部分逐次プログラムを並行化して第2並行プログラ
ムに変換する並行化手段と、を具備することを特徴とす
る並行プログラム作成支援装置。
5. A serialization means for converting a predetermined section group of a first concurrent program having a parallel structure into a sequentially executable serial program, and a parallel processing for analyzing a parallel structure of the predetermined section group of the first concurrent program. A structural analysis means, a sequential structure analysis means for analyzing a sequential structure of a predetermined section group of the sequential program, a mutual relation regarding the parallel structure analyzed by the parallel structure analysis means, and a sequential analyzed by the sequential structure analysis means Graph information display means for displaying the mutual relation regarding the structure as graph information, and partial serialization means for parallelizing a selected predetermined section group in the sequential program and converting it into a partial sequential program partially having a sequential structure A parallelizing means for parallelizing the partial sequential program and converting it into a second parallel program. Concurrent program creation support apparatus, characterized in that.
【請求項6】 前記逐次化手段は、 前記第1並行プログラムを実行する実行手段と、 前記実行手段による実行ログを保存する保存手段と、 前記保存手段により保存された実行ログ及び前記第1並
行プログラムを解析する解析手段と、 前記保存手段により保存された実行ログを前記解析手段
による解析結果に基づいて並べ替えする並べ替え手段
と、を含むことを特徴とする請求項1ないし請求項5の
いずれかに記載の並行プログラム作成支援装置。
6. The serializing means executes means for executing the first parallel program, saving means for saving an execution log by the executing means, execution log saved by the saving means, and the first parallelism. The analysis means for analyzing a program, and the rearrangement means for rearranging the execution logs stored by the storage means based on the analysis result by the analysis means are included. The parallel program creation support device described in any one of the above.
【請求項7】 前記実行手段は、 前記第1並行プログラムを解析してセクション情報の抽
出をおこなうプログラム解析手段と、 前記セクション情報を記憶するセクション情報記憶手段
と、 前記セクション情報記憶手段に記憶されたセクション情
報を変更するセクション情報変更手段と、 前記セクション情報記憶手段により記憶されたセクショ
ン情報に基づいて前記並行プログラムの実行を行なう並
行プログラム実行手段と、を含むことを特徴とする請求
項6記載の並行プログラム作成支援装置。
7. The execution means is a program analysis means for analyzing the first parallel program to extract section information, a section information storage means for storing the section information, and a section information storage means for storing the section information. 7. The section information changing means for changing the section information, and the parallel program executing means for executing the parallel program based on the section information stored by the section information storage means. Parallel program creation support device.
【請求項8】 前記導入手段は、 前記逐次プログラムのプロセスの流れを制約と遷移条件
からなるフィールドに変換して該フィールドを表すフィ
ールドデータを生成するフィールドデータ生成手段と、 前記手段により生成されたフィールドデータで表される
フィールドをチューニングするためのチューニング手段
と、 前記フィールドデータ生成手段により生成されたフィー
ルドデータで表されるフィールドを表示する表示手段
と、含むことを特徴とする請求項1ないし請求項5のい
ずれかに記載の並行プログラム作成支援装置。
8. The introduction means converts the process flow of the sequential program into a field consisting of constraints and transition conditions to generate field data representing the field, and field data generation means. 4. A tuning means for tuning a field represented by field data, and a display means for displaying a field represented by the field data generated by said field data generating means. Item 6. A parallel program creation support device according to any one of items 5.
【請求項9】前記逐次化手段は、前記第1並行プログラ
ムを複数の超逐次プログラムに変換する手段を含み、 前記テスト・デバッグ手段は、前記複数の超逐次プログ
ラムを独立にテスト・デバッグする手段を含むことを特
徴とする請求項1ないし請求項4のいずれかに記載の並
行プログラム作成支援装置。
9. The serializing means includes means for converting the first concurrent program into a plurality of hyper sequential programs, and the test / debug means independently tests and debugs the hyper sequential programs. 5. The concurrent program creation support device according to claim 1, further comprising:
【請求項10】並行構造を有する第1並行プログラムの
所定のプロセス群を所定の実行順序に従って逐次実行可
能な逐次プログラムに変換する逐次化手段と、 前記逐次構造プログラムに対して並行化の候補となるプ
ロセス群を指定するプロセス群指定手段と、 前記手段により指定されたプロセス群の実行順序を入れ
換えて前記逐次プログラムを複数の並行模擬プログラム
に変換する模擬並行プログラム変換手段と、 前記複数の並行模擬プログラムを部分的に逐次構造を有
する1つの部分逐次プログラムに変換する部分逐次化手
段と、 前記部分逐次プログラムを並行化して第2並行プログラ
ムに変換する並行化手段とを具備することを特徴とする
並行プログラム作成支援装置。
10. A serialization means for converting a predetermined process group of a first parallel program having a parallel structure into a serial program that can be sequentially executed according to a predetermined execution order, and a candidate for parallelization of the sequential structure program. Process group designating means for designating a process group, a simulated parallel program conversion means for transposing the sequential program into a plurality of parallel simulation programs by exchanging the execution order of the process groups designated by the means, and the plurality of parallel simulation programs. A partial serializing means for converting a program into one partial sequential program having a partial serial structure, and a parallelizing means for parallelizing the partial serial program and converting it into a second parallel program. Concurrent program creation support device.
【請求項11】逐次化ルールを格納する逐次化ルール格
納手段と、 前記逐次化ルール格納手段に格納された逐次化ルールに
従って並行構造を有する第1並行プログラムを逐次実行
可能な逐次プログラムに変換する逐次化手段と、 前記逐次プログラムに対して並行性に関する情報を導入
すべく前記逐次化ルール格納手段に格納された逐次化ル
ールを修正する逐次化ルール修正手段と、 前記逐次プログラムのテスト・デバッグを行うためのテ
スト・デバッグ手段と、 前記逐次化ルール修正手段により並行性に関する情報が
導入されかつ前記テスト・デバッグ手段によりテスト・
デバッグが行われた逐次プログラムを並行化して第2並
行プログラムに変換する並行化手段と、を具備すること
を特徴とする並行プログラム作成支援装置。
11. A serialization rule storage unit for storing a serialization rule, and a first concurrent program having a parallel structure according to the serialization rule stored in the serialization rule storage unit is converted into a serial program that can be serially executed. Serializing means, serializing rule modifying means for modifying the serializing rule stored in the serializing rule storing means to introduce information about concurrency into the serial program, and test / debug of the serial program. A test / debug means for performing the test, and information about concurrency introduced by the serialization rule modifying means and a test / debug means by the test / debug means.
A parallel program creation support device comprising: a parallelizing means for parallelizing a debugged serial program and converting it into a second parallel program.
【請求項12】 プロセス群がメッセージ情報を交換し
ながら並行して動作する実行環境に用いられる並行プロ
グラムの作成を支援する並行プログラム作成支援装置に
おいて、 第1並行プログラムのプロセス群の実行履歴であるログ
情報を逐次化ルールとして取得するログ情報取得手段
と、 前記ログ情報取得手段により取得されたログ情報を記憶
するログ情報記憶手段と、 前記ログ情報記憶手段に記憶されているログ情報を修正
するためのログ情報修正手段と、 前記ログ情報記憶手段に記憶されているログ情報に基づ
いて前記プロセス群を逐次的に起動制御するプロセス群
制御手段と、 前記ログ情報記憶手段に記憶されたログ情報を並行化し
て第2並行プログラムに変換する並行化手段と、を具備
することを特徴とする並行プログラム作成支援装置。
12. The execution history of a process group of a first concurrent program in a concurrent program creation support device for supporting creation of a concurrent program used in an execution environment in which process groups exchange message information and operate in parallel. Log information acquisition means for acquiring log information as a serialization rule, log information storage means for storing the log information acquired by the log information acquisition means, and modifying the log information stored in the log information storage means Log information correction means, a process group control means for sequentially controlling activation of the process groups based on the log information stored in the log information storage means, and log information stored in the log information storage means Parallelizing means for parallelizing and converting the second parallel program to a second parallel program Assistance devices.
【請求項13】 前記ログ情報修正手段は、 前記ログ情報記憶手段に記憶されているログ情報を時系
列に表示する表示手段と、 前記表示手段により時系列に表示されたログ情報内のデ
ータの順序の入れ換えを指示するための入れ替え指示手
段と、 前記入れ替え指示手段による指示に従って前記ログ情報
記憶手段に記憶されているログ情報を書き換える書換手
段と、を含むことを特徴とする請求項12記載の並行プ
ログラム作成支援装置。
13. The log information correction means includes a display means for displaying the log information stored in the log information storage means in time series, and a data in the log information displayed in time series by the display means. 13. The method according to claim 12, further comprising replacement instruction means for instructing order replacement, and rewriting means for rewriting the log information stored in the log information storage means in accordance with an instruction from the replacement instruction means. Concurrent program creation support device.
【請求項14】 前記ログ情報修正手段は、プロセス間
の処理タイミングの非決定性を導入する非決定性導入手
段を含むことを特徴とする請求項12記載の並行プログ
ラム作成支援装置。
14. The parallel program creation support apparatus according to claim 12, wherein the log information correction means includes non-determinism introduction means for introducing non-determinism of processing timing between processes.
【請求項15】 プロセス群がメッセージ情報を交換し
ながら並行して動作できる実行環境で前記プロセス群が
実行順序規定情報に従って動作する並行プログラムを作
成支援する並行プログラム作成支援装置において、 前記実行順序規定情報を分割する実行順序情報分割手段
と、 前記実行順序情報分割手段によって分割された実行順序
情報に基づいて前記プロセスを起動制御するプロセス制
御手段と、を具備することを特徴とする並行プログラム
作成支援装置。
15. A parallel program creation support device for supporting the creation of a parallel program in which the process groups operate according to execution order definition information in an execution environment in which the process groups can operate in parallel while exchanging message information. A parallel program creation support comprising: an execution order information dividing unit that divides information; and a process control unit that controls activation of the process based on the execution order information divided by the execution order information dividing unit. apparatus.
【請求項16】 前記実行順序規定情報を分割するため
の基準を与える分割基準指定手段を保持する手段を更に
具備することを特徴とする請求項15記載の並行プログ
ラム作成支援装置。
16. The parallel program creation support apparatus according to claim 15, further comprising means for holding a division criterion designating means for giving a criterion for dividing the execution order defining information.
【請求項17】 前記プロセス制御手段は、前記メッセ
ージ交換の実行履歴であるログ情報を実行順序規定情報
として用いるとともに、前記分割基準指定手段における
分割基準として前記メッセージ中の宛先プロセス情報を
基準として用いることを特徴とする請求項15記載の並
行プログラム作成支援装置。
17. The process control means uses log information, which is an execution history of the message exchange, as execution order defining information, and uses the destination process information in the message as a reference for division in the division reference specifying means. 16. The parallel program creation support device according to claim 15, wherein:
【請求項18】 前記プロセス制御手段を各プロセス毎
に保持する手段を具備することを特徴とする請求項17
記載の並行プログラム作成支援装置。
18. A means for holding the process control means for each process is provided.
The parallel program creation support device described.
【請求項19】 前記実行順序情報分割手段によって分
割された実行順序情報をそれぞれ別々に保存する分割実
行順序情報保存手段を更に具備し前記プロセス制御手段
は該プロセスに対応する分割実行順序情報保存手段に保
存されている分割実行順序情報に基づいてプロセスを起
動制御する手段を含むことを特徴とする請求項18記載
の並行プログラム作成支援装置。
19. The divided execution order information storage means for separately storing the execution order information divided by the execution order information division means, wherein the process control means corresponds to the divided execution order information storage means. 19. The parallel program creation support apparatus according to claim 18, further comprising means for controlling the activation of the process based on the divided execution order information stored in.
【請求項20】 前記プロセス制御手段は、前記プロセ
ス群の実行履歴であるログ情報を前記実行順序規定情報
として用いることを特徴とする請求項15記載の並行プ
ログラム作成支援装置。
20. The parallel program creation support apparatus according to claim 15, wherein the process control means uses log information, which is an execution history of the process group, as the execution order definition information.
【請求項21】並行構造を有する第1並行プログラムを
逐次的にテスト実行する逐次的テスト実行手段と、 前記テスト実行手段によるテスト実行の結果、正常に実
行終了したテスト実行結果のバグのない逐次的実行ログ
を蓄積する実行ログ蓄積手段と、 前記実行ログ蓄積手段により蓄積された逐次的実行ログ
を並行化して第2並行プログラムに変換する並行化手段
と、を具備することを特徴とする並行プログラム作成支
援装置。
21. A sequential test execution means for sequentially executing a test of a first parallel program having a parallel structure, and a bug-free sequential execution result of a test execution result as a result of the test execution by the test execution means. Parallel execution means for accumulating an execution log and a parallelization means for parallelizing the sequential execution log accumulated by the execution log accumulation means and converting it into a second parallel program. Program creation support device.
【請求項22】並行構造を有する第1並行プログラムを
テスト実行するテスト実行手段と、 前記テスト実行手段によるテスト実行の結果バグのない
実行ログを蓄積する第1の実行ログ蓄積手段と、 前記テスト実行手段によるテスト実行の結果バグのある
実行ログを蓄積する第2の実行ログ蓄積手段と、 前記第2の実行ログ蓄積手段により蓄積された実行ログ
を修正し、修正された実行ログを前記第1の実行ログ蓄
積手段に蓄積する修正手段と、 前記第1の実行ログ蓄積手段により蓄積された実行ログ
を並行化して第2並行プログラムに変換する並行化手段
と、を具備することを特徴とする並行プログラム作成支
援装置。
22. Test execution means for performing test execution of a first parallel program having a parallel structure, first execution log storage means for storing a bug-free execution log as a result of test execution by the test execution means, and the test. Second execution log storage means for storing an execution log having a bug as a result of test execution by the execution means; and correction of the execution log stored by the second execution log storage means, and the corrected execution log is stored as the first execution log. And a parallelizing means for parallelizing the execution log accumulated by the first execution log accumulating means and converting the execution log accumulated in the first execution log accumulating means into a second parallel program. A parallel program creation support device.
【請求項23】並行構造を有する第1並行プログラムを
逐次実行可能な逐次プログラムに変換する第1ステップ
と、 前記逐次プログラムのテスト・デバッグを行い、テスト
・デバッグ情報を作成する第2ステップと、 テスト・デバッグ後の前記逐次プログラムを前記テスト
・デバッグ情報に基づいて並行化することにより第2並
行プログラムに変換する第3ステップと、を具備するこ
とを特徴とする並行プログラム作成方法。
23. A first step of converting a first concurrent program having a parallel structure into a sequential program that can be sequentially executed, and a second step of performing test / debug of the sequential program and creating test / debug information. And a third step of converting the serial program after the test and debug into a second parallel program by parallelizing the serial program based on the test and debug information.
【請求項24】 前記第2ステップは、前記逐次プログ
ラムに対して並行性に関する情報を導入するサブステッ
プを含むことを特徴とする請求項23記載の並行プログ
ラム作成方法。
24. The method according to claim 23, wherein the second step includes a sub-step of introducing information about concurrency into the sequential program.
【請求項25】前記第1ステップは、前記第1並行プロ
グラムの並行構造を解析するサブステップを含み、 前記第3ステップは、テスト・デバッグ後の前記逐次プ
ログラムを前記第1並行プログラムの並行構造を用いて
並行化するサブステップとを含むことを特徴とする請求
項23記載の並行プログラム作成方法。
25. The first step includes a sub-step of analyzing a parallel structure of the first concurrent program, and the third step converts the sequential program after test / debug into the parallel structure of the first concurrent program. 24. The parallel program creating method according to claim 23, further comprising a sub-step of parallelizing using the.
【請求項26】 前記第2ステップは、前記逐次プログ
ラムに対して指定された非決定性を前記並行性に関する
情報として導入するサブステップを含むことを特徴とす
る請求項23ないし請求項25のいずれかに記載の並行
プログラム作成方法。
26. The method according to claim 23, wherein the second step includes a substep of introducing nondeterminism specified for the sequential program as information on the concurrency. The parallel program creation method described in.
【請求項27】前記第1ステップは、 並行構造を有する前記第1並行プログラムの所定のセク
ション群を逐次実行可能な逐次プログラムに変換する第
1サブステップと、 前記第1並行プログラムの所定のセクション群の並行構
造を解析する第2サブステップと、 前記逐次プログラムの所定のセクション群の逐次構造を
解析する第3サブステップと、 前記第2サブステップで解析された並行構造に関する相
互関係及び前記第3サブステップで解析された逐次構造
に関する相互関係をグラフ情報として表示する第4サブ
ステップと、 前記逐次プログラムのうち選択された所定のセクション
群を並行化して部分的に逐次構造を有する部分逐次プロ
グラムに変換する第5サブステップと、を含み、 前記第3ステップは、前記部分逐次プログラムを並行化
して第2並行プログラムに変換するサブステップを含む
ことを特徴とする請求項23記載の並行プログラム作成
方法。
27. The first step comprises: a first substep of converting a predetermined section group of the first concurrent program having a parallel structure into a sequentially executable sequential program; and a predetermined section of the first concurrent program. A second sub-step of analyzing a parallel structure of a group, a third sub-step of analyzing a sequential structure of a predetermined section group of the sequential program, an interrelationship of the parallel structure analyzed in the second sub-step, and the A fourth sub-step of displaying the mutual relationship regarding the sequential structure analyzed in the three sub-steps as graph information, and a partial sequential program having a partial sequential structure by parallelizing a predetermined group of sections selected from the sequential program A fifth sub-step of converting the partial sequential program into Go to parallel programming method of claim 23, characterized in that it comprises a sub-step of converting the second concurrent program.
【請求項28】並行構造を有する前記第1並行プログラ
ムの所定のセクション群を逐次実行可能な逐次プログラ
ムに変換する第1ステップと、 前記第1並行プログラムの所定のセクション群の並行構
造を解析する第2ステップと、 前記逐次プログラムの所定のセクション群の逐次構造を
解析する第3ステップと、 前記第2ステップで解析された並行構造に関する相互関
係及び前記第3ステップで解析された逐次構造に関する
相互関係をグラフ情報として表示する第4ステップと、 前記逐次プログラムのうち選択された所定のセクション
群を並行化して部分的に逐次構造を有する部分逐次プロ
グラムに変換する第5ステップと、 前記部分逐次プログラムを並行化して第2並行プログラ
ムに変換する第6ステップと、を具備することを特徴と
する並行プログラム作成方法。
28. A first step of converting a predetermined section group of the first concurrent program having a parallel structure into a sequentially executable sequential program, and analyzing a parallel structure of the predetermined section group of the first concurrent program. A second step, a third step of analyzing a sequential structure of a predetermined section group of the sequential program, a mutual relation of the parallel structure analyzed in the second step, and a mutual relation of the sequential structure analyzed in the third step. A fourth step of displaying the relationship as graph information, a fifth step of parallelizing a selected predetermined section group of the sequential program and converting it into a partial sequential program partially having a sequential structure, and the partial sequential program And a sixth step of parallelizing and converting the second parallel program into a second parallel program. Concurrent program how to create that.
【請求項29】前記第1サブステップは、前記逐次プロ
グラムの所望の実行結果が得られるまで当該逐次プログ
ラムのテスト・デバッグを行うサブステップを含むこと
を特徴とする請求項28記載の並行プログラム作成方
法。
29. The parallel program creation according to claim 28, wherein the first substep includes a substep of performing test / debug of the sequential program until a desired execution result of the sequential program is obtained. Method.
【請求項30】 前記第4サブステップは、前記所定の
セクション群をノードとし、前記並行構造に関する相互
関係を第1アークとし、前記逐次構造に関する相互関係
を第2アークとして前記グラフ情報を表示するサブステ
ップを含むことを特徴とする請求項28記載の並行プロ
グラム作成方法。
30. The fourth sub-step displays the graph information with the predetermined section group as a node, the mutual relationship regarding the parallel structure as a first arc, and the mutual relationship regarding the sequential structure as a second arc. 29. The method according to claim 28, further comprising substeps.
【請求項31】 前記第5サブステップは、前記部分逐
次プログラムの所望の実行結果が得られるまで該部分逐
次プログラムのテスト・デバッグを行うサブステップを
含むことを特徴とする請求項28記載の並行プログラム
作成方法。
31. The parallel processing according to claim 28, wherein the fifth sub-step includes a sub-step of testing and debugging the partial sequential program until a desired execution result of the partial sequential program is obtained. How to create a program.
【請求項32】前記第5サブステップは、前記部分逐次
プログラムにおける所定のセクション群の逐次構造を解
析するサブステップを含み、 前記第1ステップは、前記第4サブステップから第5サ
ブステップを所定の回数繰り返すサブステップを更に含
むことを特徴とする請求項28記載の並行プログラム作
成方法。
32. The fifth sub-step includes a sub-step of analyzing a sequential structure of a predetermined section group in the partial sequential program, and the first step includes the fourth to fifth sub-steps. 29. The concurrent program creating method according to claim 28, further comprising a sub-step of repeating the number of times.
【請求項33】前記第1ステップは、 前記第1並行プログラムを実行する第1サブステップ
と、 前記第1サブステップによる実行ログを保存する第2サ
ブステップと、 前記第2サブステップにより保存された実行ログ及び前
記第1並行プログラムを解析する第3サブステップと、 前記第2サブステップにより保存された実行ログを前記
第3サブステップによる解析結果に基づいて並べ替える
第4サブステップと、を含むことを特徴とする請求項2
3ないし請求項25、請求項28又は請求項29のいず
れかに記載の並行プログラム作成方法。
33. The first step comprises: a first sub-step for executing the first concurrent program; a second sub-step for storing an execution log by the first sub-step; and a second sub-step. A third sub-step of analyzing the execution log and the first concurrent program, and a fourth sub-step of rearranging the execution log stored by the second sub-step based on the analysis result of the third sub-step. 3. The method according to claim 2, wherein
The parallel program creating method according to any one of claims 3 to 25, 28 or 29.
【請求項34】 前記第3サブステップは、前記第2サ
ブステップにより保存された実行ログ及び前記第1並行
プログラムからプロセスの先行関係を抽出し先行関係情
報として保存するサブステップを含むことを特徴とする
請求項33記載の並行プログラム作成方法。
34. The third sub-step includes a sub-step of extracting a preceding relationship of processes from the execution log and the first concurrent program saved by the second sub-step and saving it as preceding relationship information. The parallel program creation method according to claim 33.
【請求項35】 前記第2ステップは、前記逐次プログ
ラムのプロセスの流れを制約と遷移条件からなるフィー
ルドに変換するサブステップと、前記フィールドをチュ
ーニングするサブステップと、前記並行性に関する情報
を導入するサブステップとを含むことを特徴とする請求
項23ないし請求項25のいずれかに記載の並行プログ
ラム作成方法。
35. The second step introduces a substep of converting the process flow of the sequential program into a field consisting of constraints and transition conditions, a substep of tuning the field, and information about the concurrency. 26. The concurrent program creating method according to claim 23, further comprising a substep.
【請求項36】複数のプロセス群を有し並行構造を有す
る第1並行プログラムの所定のプロセス群を所定の実行
順序に従って逐次実行可能な逐次プログラムに変換する
第1ステップと、 前記逐次プログラムに対して並行化の候補となるプロセ
ス群を指定する第2ステップと、 前記第2ステップにより指定されたプロセス群の実行順
序を入れ換えて前記逐次プログラムを複数の並行模擬プ
ログラムに変換する第3ステップと、 前記複数の並行模擬プログラムを部分的に逐次構造を有
する1つの部分逐次プログラムに変換する第4ステップ
と、 前記部分逐次プログラムを並行化して第2並行プログラ
ムに変換する第5ステップと、を具備することを特徴と
する並行プログラム作成方法。
36. A first step of converting a predetermined process group of a first parallel program having a plurality of process groups and having a parallel structure into a sequential program that can be sequentially executed according to a predetermined execution order; A second step of designating a process group that is a candidate for parallelization, and a third step of exchanging the execution order of the process group designated by the second step and converting the sequential program into a plurality of parallel simulation programs, A fourth step of converting the plurality of parallel simulation programs into one partial sequential program having a partial sequential structure; and a fifth step of parallelizing the partial sequential program and converting it into a second concurrent program. A method for creating a parallel program characterized by the above.
【請求項37】 前記第1ステップは、前記逐次プログ
ラムの所望の実行結果が得られるまで該逐次プログラム
のテスト・デバッグを行うサブステップを含むことを特
徴とする請求項36記載の並行プログラム作成方法。
37. The method according to claim 36, wherein the first step includes a sub-step of performing test / debug of the sequential program until a desired execution result of the sequential program is obtained. .
【請求項38】 前記第2ステップは、 前記第1並行プログラムを解析するサブステップと、 前記解析結果から前記並行化の候補となるプロセス群を
抽出するサブステップと、を含むことを特徴とする請求
項36記載の並行プログラム作成方法。
38. The second step includes a substep of analyzing the first concurrent program, and a substep of extracting a process group that is a candidate for the parallelization from the analysis result. The parallel program creating method according to claim 36.
【請求項39】 前記第3ステップは、前記複数の並行
模擬プログラムの所望の実行結果が得られるまで前記複
数の並行模擬プログラムのテスト・デバッグを行うサブ
ステップを含むことを特徴とする請求項36記載の並行
プログラム作成方法。
39. The third step includes a sub-step of performing test / debug of the plurality of parallel simulation programs until a desired execution result of the plurality of parallel simulation programs is obtained. How to create a parallel program as described.
【請求項40】 前記第3ステップは、前記複数の並行
模擬プログラムの一部の実行結果から不要と判断される
並行模擬プログラムを取り除くサブステップを含むこと
を特徴とする請求項36記載の並行プログラム作成方
法。
40. The concurrent program according to claim 36, wherein the third step includes a sub-step of removing a concurrent simulation program determined to be unnecessary from execution results of a part of the plurality of concurrent simulation programs. How to make.
【請求項41】 前記第4ステップは、前記部分逐次プ
ログラムに対して並行化の候補となるプロセス群を指定
するサブステップを含み、 前記第3ステップから前記第4ステップを所定の回数繰
り返すステップを更に具備することを特徴とする請求項
36記載の並行プログラム作成方法。
41. The fourth step includes a substep of designating a process group that is a candidate for parallelization for the partial sequential program, and a step of repeating the third step to the fourth step a predetermined number of times. The parallel program creating method according to claim 36, further comprising:
【請求項42】 前記第1ステップは、 前記第1並行プログラムを逐次化ルールに従って前記逐
次プログラムに変換する第1サブステップと、 前記逐次プログラムに対して並行性に関する情報を導入
するために前記逐次化ルールを修正する第2サブステッ
プと、を含み、 前記第3ステップは、前記テスト・デバッグ情報と、前
記並行性に関する情報とに基づいて前記逐次プログラム
を並行化して第2並行プログラムに変換するサブステッ
プを含むことを特徴とする請求項23記載の並行プログ
ラム作成方法。
42. The first step comprises: a first substep of converting the first concurrent program into the sequential program according to a serialization rule; and the serial step of introducing information about concurrency into the sequential program. A second sub-step of modifying the parallelization rule, wherein the third step parallelizes the serial program based on the test / debug information and the information about the concurrency, and converts the serial program into a second concurrent program. 24. The concurrent program creation method according to claim 23, further comprising substeps.
【請求項43】並行構造を有する第1並行プログラムを
テスト実行する第1ステップと、 前記第1ステップによるテスト実行の結果バグのない実
行ログを蓄積する第2ステップと、 前記第2ステップにより蓄積された前記実行ログを並行
化して第2並行プログラムに変換する第3ステップと、
を具備することを特徴とする並行プログラム作成方法。
43. A first step of test-executing a first concurrent program having a parallel structure, a second step of accumulating a bug-free execution log as a result of the test execution by the first step, and an accumulation of the second step. A third step of parallelizing the executed execution log into a second parallel program,
A method for creating a parallel program, comprising:
【請求項44】前記第1ステップによるテスト実行の結
果バグのある実行ログを蓄積する第4ステップと、 前記第4ステップにより蓄積された実行ログに基づいて
前記第1並行プログラムを修正して、再度実行ログを蓄
積する第5ステップと、を更に具備することを特徴とす
る請求項43記載の並行プログラム作成方法。
44. A fourth step of accumulating an execution log having a bug as a result of the test execution by the first step, and modifying the first concurrent program based on the execution log accumulated by the fourth step, The parallel program creating method according to claim 43, further comprising a fifth step of accumulating execution logs again.
【請求項45】並行プログラムを解析してセクション情
報の抽出をおこなうプログラム解析手段と、 前記セクション情報を記憶するセクション情報記憶手段
と、 前記セクション情報記憶手段により記憶されたセクショ
ン情報に基づいて前記並行プログラムの実行を行なう並
行プログラム実行手段と、を具備することを特徴とする
並行プログラム実行装置。
45. Program analysis means for analyzing a parallel program to extract section information, section information storage means for storing the section information, and the parallel processing based on the section information stored by the section information storage means. A parallel program execution device, comprising: a parallel program execution means for executing a program.
【請求項46】 前記セクション情報記憶手段によって
記憶されるセクション情報を編集するセクション情報編
集手段及び前記セクション情報記憶手段によって記憶さ
れるセクション情報内の各セクションをオブジェクトに
変換するコンパイル手段の少なくとも一方を更に具備す
ることを特徴とする請求項45記載の並行プログラム実
行装置。
46. At least one of a section information editing unit that edits section information stored by the section information storage unit and a compiling unit that converts each section in the section information stored by the section information storage unit into an object. The parallel program execution device according to claim 45, further comprising:
【請求項47】 前記プログラム解析手段が、入力され
たプログラムを中間言語に変換する手段と、前記中間言
語からセクションを抽出する手段とを更に含むことを特
徴とする請求項45記載の並行プログラム実行装置。
47. The parallel program execution according to claim 45, wherein said program analysis means further includes means for converting an inputted program into an intermediate language and means for extracting a section from said intermediate language. apparatus.
【請求項48】 前記実行手段が、実行するセクション
の候補を記憶する実行セクション候補記憶手段と、前記
実行セクション候補記憶手段によって記憶されるセクシ
ョンから次に実行するセクションを選択する実行セクシ
ョン選択手段と、前記実行セクション選択手段によって
選択されたセクションを実行するセクション実行手段と
を更に含むことを特徴とする請求項45記載の並行プロ
グラム実行装置。
48. An execution section candidate storage means for storing a candidate for a section to be executed by the execution means, and an execution section selection means for selecting a section to be executed next from the sections stored by the execution section candidate storage means. 46. The concurrent program execution device according to claim 45, further comprising: section execution means for executing the section selected by the execution section selection means.
【請求項49】 前記実行セクション選択手段が、実行
可能なセクションを一つ選択するモードと実行可能なセ
クションをすべて選択するモードを含むことを特徴とす
る請求項48記載の並行プログラム実行装置。
49. The concurrent program execution device according to claim 48, wherein said execution section selection means includes a mode for selecting one executable section and a mode for selecting all the executable sections.
【請求項50】 前記実行セクション実行手段が、前記
実行セクション選択手段によって選択されたセクション
が複数の時はそれらのセクションを並行に実行すること
を特徴とする請求項48記載の並行プログラム実行装
置。
50. The concurrent program execution device according to claim 48, wherein said execution section execution means executes those sections in parallel when there are a plurality of sections selected by said execution section selection means.
JP12757795A 1994-04-28 1995-04-28 Concurrent program creation support device, parallel program creation method, and parallel program execution device Expired - Fee Related JP4050339B2 (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP12757795A JP4050339B2 (en) 1994-04-28 1995-04-28 Concurrent program creation support device, parallel program creation method, and parallel program execution device

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
JP11466894 1994-04-28
JP6-114668 1994-04-28
JP12757795A JP4050339B2 (en) 1994-04-28 1995-04-28 Concurrent program creation support device, parallel program creation method, and parallel program execution device

Publications (2)

Publication Number Publication Date
JPH0816429A true JPH0816429A (en) 1996-01-19
JP4050339B2 JP4050339B2 (en) 2008-02-20

Family

ID=26453366

Family Applications (1)

Application Number Title Priority Date Filing Date
JP12757795A Expired - Fee Related JP4050339B2 (en) 1994-04-28 1995-04-28 Concurrent program creation support device, parallel program creation method, and parallel program execution device

Country Status (1)

Country Link
JP (1) JP4050339B2 (en)

Cited By (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH11175369A (en) * 1997-12-10 1999-07-02 Toshiba Corp Program development supporting device, program development supporting method and medium recording program development supporting program
US6067415A (en) * 1995-12-26 2000-05-23 Kabushiki Kaisha Toshiba System for assisting a programmer find errors in concurrent programs
JP2003167715A (en) * 2001-11-29 2003-06-13 Ricoh Co Ltd Method for displaying communication history among processes, program for making computer execute the same, image formation device, and image formation system
JP2003529808A (en) * 1999-01-13 2003-10-07 エービー イニティオ ソフトウェア コーポレーション Script driven tool parallel processing application
JP2005502104A (en) * 2001-06-11 2005-01-20 トータルイーケア・インコーポレイテッド A system that manages changes to the computing infrastructure
US7178064B2 (en) 2002-12-09 2007-02-13 Sharp Kabushiki Kaisha Debug device, debug method and storage medium
JP2008299763A (en) * 2007-06-01 2008-12-11 Hitachi Ltd Distributed object development tool
JP2009123070A (en) * 2007-11-16 2009-06-04 Keyence Corp Test support system and image processing controller
JP2011014137A (en) * 2009-06-30 2011-01-20 Intel Corp Automatic conversion of mpi source code program into mpi thread-based program
JP2014038613A (en) * 2012-08-17 2014-02-27 Ge Aviation Systems Llc Method for developing software in parallel computing environment
US9116955B2 (en) 2011-05-02 2015-08-25 Ab Initio Technology Llc Managing data queries
US9665620B2 (en) 2010-01-15 2017-05-30 Ab Initio Technology Llc Managing data queries
US9891901B2 (en) 2013-12-06 2018-02-13 Ab Initio Technology Llc Source code translation
US10417281B2 (en) 2015-02-18 2019-09-17 Ab Initio Technology Llc Querying a data source on a network
US10437819B2 (en) 2014-11-14 2019-10-08 Ab Initio Technology Llc Processing queries containing a union-type operation
US11093223B2 (en) 2019-07-18 2021-08-17 Ab Initio Technology Llc Automatically converting a program written in a procedural programming language into a dataflow graph and related systems and methods

Cited By (23)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6067415A (en) * 1995-12-26 2000-05-23 Kabushiki Kaisha Toshiba System for assisting a programmer find errors in concurrent programs
JPH11175369A (en) * 1997-12-10 1999-07-02 Toshiba Corp Program development supporting device, program development supporting method and medium recording program development supporting program
JP2003529808A (en) * 1999-01-13 2003-10-07 エービー イニティオ ソフトウェア コーポレーション Script driven tool parallel processing application
US7047232B1 (en) 1999-01-13 2006-05-16 Ab Initio Software Corporation Parallelizing applications of script-driven tools
JP2005502104A (en) * 2001-06-11 2005-01-20 トータルイーケア・インコーポレイテッド A system that manages changes to the computing infrastructure
JP2003167715A (en) * 2001-11-29 2003-06-13 Ricoh Co Ltd Method for displaying communication history among processes, program for making computer execute the same, image formation device, and image formation system
US7178064B2 (en) 2002-12-09 2007-02-13 Sharp Kabushiki Kaisha Debug device, debug method and storage medium
JP2008299763A (en) * 2007-06-01 2008-12-11 Hitachi Ltd Distributed object development tool
JP2009123070A (en) * 2007-11-16 2009-06-04 Keyence Corp Test support system and image processing controller
JP2011014137A (en) * 2009-06-30 2011-01-20 Intel Corp Automatic conversion of mpi source code program into mpi thread-based program
US9665620B2 (en) 2010-01-15 2017-05-30 Ab Initio Technology Llc Managing data queries
US11593369B2 (en) 2010-01-15 2023-02-28 Ab Initio Technology Llc Managing data queries
US10521427B2 (en) 2011-05-02 2019-12-31 Ab Initio Technology Llc Managing data queries
US9116955B2 (en) 2011-05-02 2015-08-25 Ab Initio Technology Llc Managing data queries
JP2014038613A (en) * 2012-08-17 2014-02-27 Ge Aviation Systems Llc Method for developing software in parallel computing environment
US10289396B2 (en) 2013-12-06 2019-05-14 Ab Initio Technology Llc Source code translation
US10282181B2 (en) 2013-12-06 2019-05-07 Ab Initio Technology Llc Source code translation
US11106440B2 (en) 2013-12-06 2021-08-31 Ab Initio Technology Llc Source code translation
US9891901B2 (en) 2013-12-06 2018-02-13 Ab Initio Technology Llc Source code translation
US10437819B2 (en) 2014-11-14 2019-10-08 Ab Initio Technology Llc Processing queries containing a union-type operation
US10417281B2 (en) 2015-02-18 2019-09-17 Ab Initio Technology Llc Querying a data source on a network
US11308161B2 (en) 2015-02-18 2022-04-19 Ab Initio Technology Llc Querying a data source on a network
US11093223B2 (en) 2019-07-18 2021-08-17 Ab Initio Technology Llc Automatically converting a program written in a procedural programming language into a dataflow graph and related systems and methods

Also Published As

Publication number Publication date
JP4050339B2 (en) 2008-02-20

Similar Documents

Publication Publication Date Title
US5860009A (en) Programming method for concurrent programs and program supporting apparatus thereof
Abdulla et al. Stateless model checking for TSO and PSO
JP4050339B2 (en) Concurrent program creation support device, parallel program creation method, and parallel program execution device
JP4042604B2 (en) Program parallelization apparatus, program parallelization method, and program parallelization program
US6574788B1 (en) Method and system for automatically generating low level program commands as dependency graphs from high level physical design stages
US20060075305A1 (en) Method and system for source-code model-based testing
US9152389B2 (en) Trace generating unit, system, and program of the same
JP2002099312A (en) Programmable controller and control program development supporting device
US6067415A (en) System for assisting a programmer find errors in concurrent programs
US7086047B1 (en) Determining hardware generated by high level language compilation through loop optimizations
Hoey et al. Reversible imperative parallel programs and debugging
JP3675623B2 (en) Program development support apparatus and method, and recording medium recording program development support software
Potop-Butucaru et al. Optimizations for faster execution of Esterel programs
JP3274036B2 (en) Method and apparatus for automatically generating an operation model of a processor and a test instruction sequence for logic verification
Lah et al. Tree compaction of microprograms
US6581029B1 (en) Method and system for optimizing execution of a collection of related module sequences by eliminating redundant modules
JP3641090B2 (en) Programming support apparatus and method
JP2012014526A (en) Structure conversion apparatus for program code, and code structure conversion program
JP3930255B2 (en) System specification information processing apparatus, system specification information processing method, and program
Frey et al. Testing parallel and distributed programs with temporal logic specifications
JP2016146148A (en) Design support device and design support method
JP6279750B2 (en) Source code equivalence verification device
JP2014157384A (en) Parallelization design support system, program, and method
JPH03135630A (en) Instruction scheduling system
JP4569284B2 (en) Integrated circuit debugging method and debugging program

Legal Events

Date Code Title Description
A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20031225

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20040120

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20040322

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20041005

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20041104

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20041206

A911 Transfer of reconsideration by examiner before appeal (zenchi)

Free format text: JAPANESE INTERMEDIATE CODE: A911

Effective date: 20050119

A912 Removal of reconsideration by examiner before appeal (zenchi)

Free format text: JAPANESE INTERMEDIATE CODE: A912

Effective date: 20050422

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20071105

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20071129

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

Free format text: PAYMENT UNTIL: 20101207

Year of fee payment: 3

LAPS Cancellation because of no payment of annual fees