JP2010118082A - Information processing apparatus and program verifying method - Google Patents
Information processing apparatus and program verifying method Download PDFInfo
- Publication number
- JP2010118082A JP2010118082A JP2010044396A JP2010044396A JP2010118082A JP 2010118082 A JP2010118082 A JP 2010118082A JP 2010044396 A JP2010044396 A JP 2010044396A JP 2010044396 A JP2010044396 A JP 2010044396A JP 2010118082 A JP2010118082 A JP 2010118082A
- Authority
- JP
- Japan
- Prior art keywords
- execution
- basic module
- data
- basic
- modules
- 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
Links
Images
Abstract
Description
この発明は、例えばCPUコアを複数内蔵するCPUを搭載するコンピュータや、複数のCPUを搭載するコンピュータ等に適用して好適なプログラムの検証技術に関する。 The present invention relates to a program verification technique suitable for application to, for example, a computer having a CPU incorporating a plurality of CPU cores, a computer having a plurality of CPUs, and the like.
近年、ノートブックタイプやデスクトップタイプ等、様々な種類の個人向けコンピュータ(パーソナルコンピュータ)が広く普及している。この種のコンピュータでは、例えば高精細動画像データをソフトウェアによって再生する等、その情報処理能力に対する要求はCPUの性能向上の限界に迫るほどに高まる一方である。 In recent years, various types of personal computers (personal computers) such as notebook types and desktop types have been widely used. In this type of computer, for example, high-definition moving image data is reproduced by software, and the demand for information processing capability is increasing as it approaches the limit of CPU performance improvement.
このような事から、例えば複数のCPUを搭載したり、また、最近では、CPUコアを複数内蔵するCPUを搭載するコンピュータが登場してきている。即ち、プログラムを並列処理することで、所要時間の短縮化を図り、以て、コンピュータの性能を向上させるわけである。プログラムの並列処理を効率的に行うための仕組みについては、これまでも種々提案されている(例えば特許文献1等参照)。 For this reason, for example, computers equipped with a plurality of CPUs or recently equipped with a CPU incorporating a plurality of CPU cores have appeared. That is, by parallel processing the program, the required time is shortened, thereby improving the performance of the computer. Various mechanisms for efficiently performing parallel processing of programs have been proposed (see, for example, Patent Document 1).
プログラムの並列処理の1つの形態は、プログラム中の各処理単位を実行ユニットに割り当てる(複数のCPUを搭載するコンピュータにおいては、各CPUへの割り当てを行い、CPUコアを複数内蔵するCPUを搭載するコンピュータにおいては、各CPUコアへの割り当てを行う)スケジューラを含むランタイム処理と、各実行ユニット上で動作する処理単位との2つの構成要素から構成される。 One form of parallel processing of a program is to assign each processing unit in the program to an execution unit (in a computer equipped with a plurality of CPUs, an assignment is made to each CPU and a CPU incorporating a plurality of CPU cores is installed. In the computer, it is composed of two components: a runtime process including a scheduler (assigned to each CPU core) and a processing unit operating on each execution unit.
ところで、プログラムを並列処理するには、並列動作する各処理単位が独立な関係を保つ必要がある。例えば、処理単位Aの出力データを入力して処理単位Bと処理単位Cとが実行される場合、処理単位Bおよび処理単位Cのそれぞれは、処理単位Aの出力データのみによって結果が決まるものとならなければならない。このことから、各処理単位の入力データが保持されるシステムメモリ上の領域は、当該各処理単位の実行時、リードオンリー、即ち、書き換え不可能な領域として管理されなければならない。例えば、先に実行を開始した処理単位Bが入力データを上書きしてしまうと、その後に実行を開始した処理単位Cの結果に影響を与えることになる。 By the way, in order to process a program in parallel, it is necessary for each processing unit operating in parallel to maintain an independent relationship. For example, when the output data of the processing unit A is input and the processing unit B and the processing unit C are executed, the result of each of the processing unit B and the processing unit C is determined only by the output data of the processing unit A. Must be. For this reason, the area on the system memory in which the input data of each processing unit is held must be managed as a read-only, that is, non-rewritable area when each processing unit is executed. For example, if the processing unit B that has started execution overwrites the input data, it will affect the result of the processing unit C that has started execution thereafter.
このような事象が発生しないこと、即ち、プログラムの正当性を検証する場合、これまでは、テスト用のコードをプログラムに埋め込んでテストしていた。しかしながら、この作業は、プログラミング以上に作業コストがかかるという問題があった。また、並列処理においては、動作タイミングの問題で、不具合の再現性が低く、デバッグが難しくなるという問題もあった。 When such an event does not occur, that is, when the validity of a program is verified, a test code has been embedded in the program until now. However, this work has a problem that it costs more work than programming. In parallel processing, there is a problem that the reproducibility of defects is low due to the problem of operation timing, and debugging becomes difficult.
さらに、プログラムを並列処理するには、複数の実行ユニットから同一の基本モジュールが同時に呼び出される場合を考慮して、プログラムの各処理単位がリエントランス性を有することを検証する必要があるが、この検証においても、前述と同様の問題がある。 Furthermore, in order to process a program in parallel, it is necessary to verify that each processing unit of the program has re-entrance considering the case where the same basic module is called simultaneously from multiple execution units. The verification also has the same problem as described above.
この発明は、このような事情を考慮してなされたものであり、並列処理するプログラムにおける動作検証の低コスト化を実現した情報処理装置およびプログラムの検証方法を提供することを目的とする。 The present invention has been made in consideration of such circumstances, and an object of the present invention is to provide an information processing apparatus and a program verification method that realizes cost reduction of operation verification in a program to be processed in parallel.
前述した目的を達成するために、この発明の情報処理装置は、複数の実行ユニットと、前記複数の実行ユニットから共有されるシステムメモリと、先行する基本モジュールの出力データを入力データとし、かつ、他のモジュールとの同期を取る必要がない複数の基本モジュールに分割され、当該複数の基本モジュールの実行順序の制約が定義されるプログラムを、前記複数の実行ユニットによって並列実行するために、前記実行順序の制約に基づき、前記複数の実行ユニットに対する前記複数の基本モジュールの割り当てを制御するスケジューラと、を具備し、前記スケジューラは、前記複数の実行ユニットのそれぞれについて、前記基本モジュールの実行前に、前記基本モジュールの入力データとして各実行ユニットが入力する前記システムメモリ上の領域のデータを当該システムメモリ上の他の領域に複製して退避させ、前記基本モジュールの実行後に、前記基本モジュールの入力データとして各実行ユニットが入力した前記システムメモリ上の領域のデータと、当該システムメモリ上の他の領域に退避させたデータとを比較して、前記基本モジュールが入力データを上書きしていないことを検証する検証手段を有することを特徴とする。 In order to achieve the above-described object, an information processing apparatus according to the present invention uses a plurality of execution units, a system memory shared by the plurality of execution units, and output data of a preceding basic module as input data, and In order to execute in parallel by the plurality of execution units a program that is divided into a plurality of basic modules that do not need to be synchronized with other modules and in which execution order constraints of the plurality of basic modules are defined A scheduler that controls allocation of the plurality of basic modules to the plurality of execution units based on order constraints, the scheduler for each of the plurality of execution units prior to execution of the basic module, The system that each execution unit inputs as input data of the basic module Data in the area on the system memory is copied and saved in another area on the system memory, and after execution of the basic module, the data in the area on the system memory input by each execution unit as input data of the basic module And verifying means for verifying that the basic module has not overwritten the input data by comparing the data saved in another area on the system memory.
また、この発明の情報処理装置は、複数の実行ユニットと、前記複数の実行ユニットから共有されるシステムメモリと、先行する基本モジュールの出力データを入力データとし、かつ、他のモジュールとの同期を取る必要がない複数の基本モジュールに分割され、当該複数の基本モジュールの実行順序の制約が定義されるプログラムを、前記複数の実行ユニットによって並列実行するために、前記実行順序の制約に基づき、前記複数の実行ユニットに対する前記複数の基本モジュールの割り当てを制御するスケジューラと、を具備し、前記スケジューラは、前記基本モジュールを前記複数の実行ユニットの中のいずれかの実行ユニットに割り当てて実行させる時に、前記基本モジュールの入力データとして前記いずれかの実行ユニットが入力する前記システムメモリ上の領域のデータを同じく入力データとする前記基本モジュールと同一の基本モジュールを他の実行ユニットに割り当てて別途実行させ、前記2つの同一の基本モジュールの実行後に、当該2つの基本モジュールの出力データとして各実行ユニットが出力した前記システムメモリ上の2つの領域のデータを比較して、前記基本モジュールが同じ入力データに対して同じ出力データを得ていることを検証する検証手段を有することを特徴とする。 The information processing apparatus according to the present invention uses a plurality of execution units, a system memory shared by the plurality of execution units, and output data of a preceding basic module as input data, and is synchronized with other modules. In order to execute a program that is divided into a plurality of basic modules that do not need to be taken and that defines execution order constraints of the plurality of basic modules in parallel by the plurality of execution units, based on the execution order constraints, A scheduler for controlling allocation of the plurality of basic modules to a plurality of execution units, and the scheduler allocates the basic module to any execution unit of the plurality of execution units for execution. Any execution unit inputs as input data of the basic module The same basic module as the basic module having the same data in the area on the system memory as input data is assigned to another execution unit and executed separately. After the execution of the two same basic modules, the two basic modules Verifying means for comparing the data in two areas on the system memory output by each execution unit as the output data of the module and verifying that the basic module obtains the same output data for the same input data It is characterized by having.
この発明によれば、並列処理するプログラムにおける動作検証の低コスト化を実現することができる。 According to the present invention, it is possible to realize cost reduction of operation verification in a program to be processed in parallel.
以下、図面を参照して、この発明の一実施形態を説明する。 Hereinafter, an embodiment of the present invention will be described with reference to the drawings.
図1は、本実施形態に係る情報処理装置のシステム構成の一例を示す図である。この情報処理装置は、ノートブックタイプやデスクトップタイプ等のいわゆるパーソナルコンピュータとして実現されている。そして、図1に示すように、本コンピュータは、プロセッサ1、主メモリ2およびハードディスク駆動装置(HDD)3を有しており、これらは内部バスを介して相互に接続されている。
FIG. 1 is a diagram illustrating an example of a system configuration of the information processing apparatus according to the present embodiment. This information processing apparatus is realized as a so-called personal computer such as a notebook type or a desktop type. As shown in FIG. 1, the computer includes a
プロセッサ1は、HDD3から主メモリにロードされたプログラムを実行制御する中央演算処理装置(CPU)であり、主要部の演算回路(CPUコア)であるコア11を複数内蔵している。
The
主メモリ2は、プロセッサ1がアクセス可能な、例えば半導体で構成される記憶装置である。一方、HDD3は、本コンピュータにおける補助記憶としての役割を担う、(主メモリ2と比較して)低速大容量の記憶媒体である。
The
また、図示していないが、プロセッサ1によるプログラムの処理結果等を表示するためのディスプレイや処理データ等を入力するためのキーボードなどの入出力装置が、例えばノートブックタイプの場合はさらに備えられ、また、例えばデスクトップタイプの場合はケーブル等により外部接続される。
Although not shown, an input / output device such as a display for displaying a processing result of the program by the
コア11を複数内蔵するプロセッサ1を搭載する本コンピュータは、複数のプログラムを並列実行することが可能であり、また、1つのプログラム中の複数の処理を並列実行することも可能である。ここで、図2を参照して、本コンピュータによって実行される並行処理仕様のプログラムの概略構成について説明する。
The computer equipped with the
図2に示すように、本コンピュータによって実行される並行処理仕様の実行プログラム100は、複数の直列基本モジュール101と、この複数の直列基本モジュール101をどのような順序で実行すべきかを定義する並列実行制御記述102とから構成される。
As shown in FIG. 2, a parallel processing
いわゆるマルチスレッド処理では、一般的に、図3に示すように、他のスレッドとの間で(通信を含む)同期を取りながら、即ち、プログラム全体の整合性を保ちながら、各スレッドが処理を進行させていく。よって、同期の待ち合わせが多発すると、期待した並列性能が得られないことも考えられる。 In so-called multithread processing, generally, as shown in FIG. 3, each thread performs processing while maintaining synchronization (including communication) with other threads, that is, maintaining the integrity of the entire program. Let it go. Therefore, it is possible that the expected parallel performance cannot be obtained if synchronization waits occur frequently.
そこで、本実施形態では、図4に示すように、他のモジュールとの同期を取る必要がない、非同期に実行可能な処理単位にプログラムを分割することで、複数の直列基本モジュール101を作成すると共に、この複数の直列基本モジュール101の実行順序の制約を定義する並列実行制御記述102を作成する。並列実行制御上、各直列基本モジュール101は、ノードとして表現される。このように、直列基本モジュールとは、他のモジュールと非同期に実行可能な処理単位のモジュールをいう。次に、図5を参照して、並列実行制御記述102について説明する。
Therefore, in this embodiment, as shown in FIG. 4, a plurality of serial
図5(A)は、ある直列基本モジュール101を表現したノードの概念図である。図示のように、各直列基本モジュール101は、先行ノードへのリンクと、後続ノードへの結合子とを有するノードとして捉えることができる。並列実行制御記述102は、各直列基本モジュール101それぞれについて、先行ノードへのリンク情報を記すことにより、複数の直列基本モジュール101の実行順序を定義する。図5(B)は、ある直列基本モジュール101に関する並列実行制御記述を例示する図であり、図示のように、それぞれの識別子である直列基本モジュールIDと、その直列基本モジュール101の先行ノードへのリンク情報とが記される。また、その他に、出力バッファタイプやコスト等の情報が併せて記される。
FIG. 5A is a conceptual diagram of a node representing a certain series
続いて、この複数の直列基本モジュール101と並列実行制御記述102とから構成されるという独自の構成をもつ実行プログラム100を本コンピュータがどのように実行するのかについて説明する。
Next, how the computer executes the
このような独自の構成をもつ実行プログラム100を並列処理するために、本コンピュータでは、図6に示すランタイムライブラリ200が用意される。このランタイムライブラリ200は、スケジューラとしての機能を備えており、並列実行制御記述102がグラフデータ構造生成情報201として与えられる。並列実行制御記述102は、例えば関数型言語を用いて作成され、トランスレータによってグラフデータ構造生成情報201に変換される。
In order to perform parallel processing on the
何らかのデータ入力が行われると、このデータを処理するための直列基本モジュール101をいくつか実行する必要が生じるが、その都度、ランタイムライブラリ200は、グラフデータ構造生成情報201に基づき、グラフデータ構造202を動的に生成・更新していく。グラフデータ構造202は、その時々で適宜に実行されていくノード群の前後関係を示すグラフデータであり、ランタイムライブラリ200は、追加対象のノード間での前後関係は勿論、実行待ちの状態にあるノードとの間の前後関係も考慮して、それらノード群のグラフデータ構造202への追加を行っていく。
When some data is input, it is necessary to execute some serial
また、ランタイムライブラリ200は、あるノードの実行が完了すると、このノードをグラフデータ構造202から削除すると共に、このノードを先行ノードとし、かつ、その他に先行ノードがないか、または、その他の先行ノードがすべて完了している後続ノードの有無を調べて、この条件を満たす後続ノードが存在したら、そのノードをいずれかのコア11に割り当てる。
In addition, when the execution of a certain node is completed, the
このランタイムライブラリ200の働きにより、並列実行制御記述102に基づく複数の直列基本モジュール101の並列実行が矛盾無く進められていく。ランタイムライブラリ200は、直列基本モジュール101の実行完了後に排他的に呼び出され、入出力のチェック、グラフデータのアップデート、次に実行すべき直列基本モジュール101の選択までを行ってリターンする。コア11上では、選択された直列基本モジュール101を実行する。別のコアが次々とランタイムライブラリ200を呼び出して、次に実行すべき直列基本モジュール101を得てこれを実行する。スレッド間の排他制御は、ランタイムライブラリ200による、グラフデータ構造202からのノードの選択と、当該グラフデータ構造の更新とのみに止まるので(図7参照)、図3に示した一般的なマルチスレッド処理と比較して、高い並列性能を得ることを実現する。
Due to the function of the
そして、このように、非同期に実行可能な処理単位にプログラムを分割することで、複数の直列基本モジュール101を作成し、ランタイムライブラリ200によって、これら複数の直列基本モジュール101を複数のコア11に順序良く割り当てる本コンピュータ1では、プログラム実行時にソースコードを書き換えることなく、直列基本モジュール101が入力データを上書きしてしまう問題を検出する仕組みを提供する。また、本コンピュータ1は、複数のコア11から同一の直列基本モジュール101を同時に呼び出す場合に、リエントランス性があることをチェックする仕組みを提供する。以下、この仕組みについて詳述する。
In this way, by dividing the program into processing units that can be executed asynchronously, a plurality of serial
図8は、ランタイムライブラリ200の機能ブロック図である。
FIG. 8 is a functional block diagram of the
ランタイムライブラリ200は、図8に示すように、ノード生成部210、グラフ構造解釈実行エンジン220および並列処理検証部230を有している。
As illustrated in FIG. 8, the
前述した、本ランタイムライブラリ200による、グラフデータ構造生成情報201に基づくグラフデータ構造202の動的な生成・更新と、このグラフデータ構造202を用いたノードのコア11への割り当て制御とは、ノード生成部210およびグラフ構造解釈実行エンジン220によって実現されている。そして、並列処理検証部230が、このノード生成部210およびグラフ構造解釈実行エンジン220によって実現される並列処理の検証を実施する。
The above-described dynamic generation / update of the
図9は、並列プログラムが動作する時のメモリモデルを示している。プログラムを並列動作させるには、並列動作する処理が独立な関係を保つ必要がある。グラフベースの並列処理では、入力データとなる先行ノードの実行結果は、リードオンリー、即ち、書き換え不可能な領域として管理する。また、直列基本モジュール101で値を書き込む領域は、結果出力用のバッファのみである。こうすることによって、直列基本モジュール101の実行は、入力データのみによって結果が決まるものとなり、他の直列基本モジュール101の動作と干渉しないようにできるからである。
FIG. 9 shows a memory model when a parallel program operates. In order for programs to operate in parallel, the processes that operate in parallel must maintain an independent relationship. In the graph-based parallel processing, the execution result of the preceding node serving as input data is managed as a read-only, that is, non-rewritable area. In addition, the area where the value is written in the serial
しかし、このような制約を設けたとしても、直列基本モジュール101の実装を、性能を達成するためにC言語やC++言語で記述すると、コンパイラで、この制約をチェックすることができない。また、プログラムローダにより、アドレス空間の割り当ての違いでリードオンリーセクションにデータを割り当てることができるが、先行ノードの直列基本モジュール101が結果を書き込むため、単純なハードウェアによるプロテクションだけでは十分でない。
However, even if such a restriction is provided, if the implementation of the serial
そこで、ランタイムライブラリ200の並列処理検証部230は、第1に、直列基本モジュール101の実行途中で、入力データの変化がなかったことをチェックする。より具体的には、図10に示すように、各直列基本モジュール101の実行前に、入力となる先行ノードの実行結果を作業メモリに退避しておき、当該直列基本モジュール101の実行が終わった時点で、元の入力データと、この退避したデータの比較を行い、入力データに変化がないことをチェックする。ランタイムライブラリ200は、すべての並列プログラムに共通に使える部分であるため、並列プログラムを実装する度に、このようなチェックコードをソースコードに埋め込む手間が省けるため、開発効率の向上になる。また、テストコードの実装漏れを防ぐことができるため、網羅的なテストが可能となり、信頼性の高いプログラムを作成できる。
Therefore, the parallel
また、ランタイムライブラリ200の並列処理検証部230は、入力データの変化をモニタリングするだけでなく、第2に、直列基本モジュール101のリエントランス性(スレッドセーフでもある)のチェックを行う。より具体的には、図11に示すように、各直列基本モジュール101の実行時に、結果出力用のバッファ(オブジェクトとみなすことも可能)を2つ準備し、同じ入力に対して、同時に直列基本モジュール101を実行し、この2つの結果を比較する。結果が一致した場合は、どちらか1つの結果を破棄して、処理を継続する。これにより、テストがパスする限り、中断なく検証作業を進められる。
Further, the parallel
なお、図10に示した入力データの変化がなかったことのチェックと、図11に示したリエントランス性のチェックとは、同時進行させることも可能である。この場合、図12に示すように、各直列基本モジュール101の実行前に、入力となる先行ノードの実行結果を作業メモリに退避しておくと共に、結果出力用のバッファを2つ準備し、元の入力データと退避したデータとを各々入力とする直列基本モジュール101を実行する。これにより、その実行後、元の入力データと、この退避したデータの比較を行うことで、入力データに変化がないことをチェックすることができ、また、2つの結果を比較することで、リエントランス性をチェックすることができる。
Note that the check that there is no change in input data shown in FIG. 10 and the re-entrance check shown in FIG. 11 can be performed simultaneously. In this case, as shown in FIG. 12, before the execution of each serial
図13は、本コンピュータが実行する並列処理検証の第1の動作の流れを示すフローチャートである。 FIG. 13 is a flowchart showing the flow of the first operation of the parallel processing verification executed by the computer.
ランタイムライブラリ200の並列処理検証部230は、各直列基本モジュール101の実行前に、全ての入力について作業メモリへデータを退避する(ステップA1)。
The parallel
このデータの退避後、並列処理検証部230は、当該直列基本モジュール101を実行させ(ステップA2)、その実行後に、元の入力と退避したデータとが全て一致しているかどうかを調べる(ステップA3)。そして、不一致が検出されたら(ステップA3のNO)、並列処理検証部230は、例えば警告メッセージを表示して当該プログラムの実行を強制終了させる等のエラー処理を実行する(ステップA4)。
After saving the data, the parallel
また、図14は、本コンピュータが実行する並列処理検証の第2の動作の流れを示すフローチャートである。 FIG. 14 is a flowchart showing a second operation flow of the parallel processing verification executed by the computer.
ランタイムライブラリ200の並列処理検証部230は、各直列基本モジュール101の実行時に、もう1つの結果出力用のバッファを確保し(ステップB1)、当該直列基本モジュール101を2つ実行させる(ステップB2)。
The parallel
その実行後、並列処理検証部230は、これら2つの結果が一致しているかどうかを調べ(ステップB3)、不一致が検出されたら(ステップB3のNO)、並列処理検証部230は、例えば警告メッセージを表示して当該プログラムの実行を強制終了させる等のエラー処理を実行する(ステップB4)。また、一致が確認されたら(ステップB3のYES)、並列処理検証部230は、どちらか1つの結果を開放し(ステップB5)、当該プログラムの実行を継続する。
After the execution, the parallel
このように、本コンピュータは、ランタイムライブラリ200に、並列処理の検証を実施する並列処理検証部230を搭載することにより、並列処理するプログラムにおける動作検証の低コスト化が実現される。
As described above, by installing the parallel
なお、以上では、直列基本モジュール101の入力データの上書きチェックと、直列基本モジュール101のリエントラント性のチェックとを行う例を示したが、さらに、並列処理による潜在的なタイミング問題を早期に発見するための仕組みを並列処理検証部230に持たせることも有効である。
In the above, an example of performing the overwrite check of the input data of the serial
例えば、図15に示すような、各直列基本モジュール101の平均実行時間を保持するためのテーブルを管理し、図16に示すような手順で、(平均実行時間から導き出される適正な範囲内で)各直列基本モジュール101の実行タイミングを遅延させるためのランダムな待ち時間を挿入する機能を並列処理検証部230が備えることにより、タイミング問題による不具合発生時の問題箇所特定のための仕組みを提供できる。
For example, a table for holding the average execution time of each serial
このように、本発明は上記実施形態そのままに限定されるものではなく、実施段階ではその要旨を逸脱しない範囲で構成要素を変形して具体化できる。また、上記実施形態に開示されている複数の構成要素の適宜な組み合わせにより、種々の発明を形成できる。例えば、実施形態に示される全構成要素から幾つかの構成要素を削除してもよい。さらに、異なる実施形態にわたる構成要素を適宜組み合わせてもよい。 As described above, the present invention is not limited to the above-described embodiment as it is, and can be embodied by modifying the constituent elements without departing from the scope of the invention in the implementation stage. In addition, various inventions can be formed by appropriately combining a plurality of components disclosed in the embodiment. For example, some components may be deleted from all the components shown in the embodiment. Furthermore, constituent elements over different embodiments may be appropriately combined.
1…プロセッサ、2…主メモリ、3…ハードディスク駆動装置(HDD)、11…コア、100…実行プログラム、101…直列基本モジュール、102…並列実行制御記述、200…ランタイムライブラリ、201…グラフデータ構造生成情報、202…グラフデータ構造、210…ノード生成部、220…グラフ構造解釈実行エンジン、230…並列処理検証部。
DESCRIPTION OF
Claims (11)
前記複数の実行ユニットから共有されるシステムメモリと、
先行する基本モジュールの出力データを入力データとし、かつ、他のモジュールとの同期を取る必要がない複数の基本モジュールに分割され、当該複数の基本モジュールの実行順序の制約が定義されるプログラムを、前記複数の実行ユニットによって並列実行するために、前記実行順序の制約に基づき、前記複数の実行ユニットに対する前記複数の基本モジュールの割り当てを制御するスケジューラと、
を具備し、
前記スケジューラは、
前記複数の実行ユニットのそれぞれについて、前記基本モジュールの実行前に、前記基本モジュールの入力データとして各実行ユニットが入力する前記システムメモリ上の領域のデータを当該システムメモリ上の他の領域に複製して退避させ、前記基本モジュールの実行後に、前記基本モジュールの入力データとして各実行ユニットが入力した前記システムメモリ上の領域のデータと、当該システムメモリ上の他の領域に退避させたデータとを比較して、前記基本モジュールが入力データを上書きしていないことを検証する検証手段を有することを特徴とする情報処理装置。 Multiple execution units;
System memory shared by the plurality of execution units;
A program in which the output data of the preceding basic module is input data and is divided into a plurality of basic modules that do not need to be synchronized with other modules, and constraints on the execution order of the plurality of basic modules are defined. A scheduler for controlling the allocation of the plurality of basic modules to the plurality of execution units based on the execution order constraint for parallel execution by the plurality of execution units;
Comprising
The scheduler
For each of the plurality of execution units, before executing the basic module, the data in the area on the system memory that is input by each execution unit as input data of the basic module is copied to another area on the system memory. Compare the data in the area on the system memory input by each execution unit as the input data of the basic module with the data saved in another area on the system memory after the execution of the basic module. An information processing apparatus comprising verification means for verifying that the basic module does not overwrite input data.
前記複数の実行ユニットから共有されるシステムメモリと、
先行する基本モジュールの出力データを入力データとし、かつ、他のモジュールとの同期を取る必要がない複数の基本モジュールに分割され、当該複数の基本モジュールの実行順序の制約が定義されるプログラムを、前記複数の実行ユニットによって並列実行するために、前記実行順序の制約に基づき、前記複数の実行ユニットに対する前記複数の基本モジュールの割り当てを制御するスケジューラと、
を具備し、
前記スケジューラは、
前記基本モジュールを前記複数の実行ユニットの中のいずれかの実行ユニットに割り当てて実行させる時に、前記基本モジュールの入力データとして前記いずれかの実行ユニットが入力する前記システムメモリ上の領域のデータを同じく入力データとする前記基本モジュールと同一の基本モジュールを他の実行ユニットに割り当てて別途実行させ、前記2つの同一の基本モジュールの実行後に、当該2つの基本モジュールの出力データとして各実行ユニットが出力した前記システムメモリ上の2つの領域のデータを比較して、前記基本モジュールが同じ入力データに対して同じ出力データを得ていることを検証する検証手段を有することを特徴とする情報処理装置。 Multiple execution units;
System memory shared by the plurality of execution units;
A program in which the output data of the preceding basic module is input data and is divided into a plurality of basic modules that do not need to be synchronized with other modules, and constraints on the execution order of the plurality of basic modules are defined. A scheduler for controlling the allocation of the plurality of basic modules to the plurality of execution units based on the execution order constraint for parallel execution by the plurality of execution units;
Comprising
The scheduler
When the basic module is assigned to any execution unit of the plurality of execution units and executed, the data in the area on the system memory input by the execution unit as the input data of the basic module is the same. The same basic module as the basic module as input data is assigned to another execution unit and executed separately, and after execution of the two same basic modules, each execution unit outputs the output data of the two basic modules. An information processing apparatus comprising verification means for comparing data in two areas on the system memory and verifying that the basic module obtains the same output data for the same input data.
前記複数の基本モジュールそれぞれの前記複数の実行ユニットによる平均実行時間を計測する計測手段をさらに有し、
前記検証手段は、前記基本モジュールの実行前に、前記計測手段が計測した当該基本モジュールの平均実行時間を用いて、当該基本モジュールの実行開始を遅延させる時間を無作為に算出し、この時間分、当該基本モジュールの実行開始を遅延させる手段を含む、
ことを特徴とする請求項1、3または5記載の情報処理装置。 The scheduler
A measuring means for measuring an average execution time by the plurality of execution units of each of the plurality of basic modules;
The verification means randomly calculates a time for delaying the start of execution of the basic module using the average execution time of the basic module measured by the measurement means before the execution of the basic module. Including means for delaying the start of execution of the basic module,
The information processing apparatus according to claim 1, 3 or 5.
前記スケジューラが、
前記複数の実行ユニットのそれぞれについて、前記基本モジュールの実行前に、前記基本モジュールの入力データとして各実行ユニットが入力する前記システムメモリ上の領域のデータを当該システムメモリ上の他の領域に複製して退避させ、前記基本モジュールの実行後に、前記基本モジュールの入力データとして各実行ユニットが入力した前記システムメモリ上の領域のデータと、当該システムメモリ上の他の領域に退避させたデータとを比較して、前記基本モジュールが入力データを上書きしていないことを検証する
ことを特徴とするプログラムの検証方法。 Divided into multiple execution modules, system memory shared by the execution units, and output data of the preceding basic module as input data, and does not need to be synchronized with other modules The plurality of basic modules for the plurality of execution units is executed based on the execution order constraint, in order to execute the program in which the constraints on the execution order of the plurality of basic modules are defined in parallel by the plurality of execution units. A method for verifying a program in an information processing apparatus comprising a scheduler for controlling allocation of
The scheduler
For each of the plurality of execution units, before executing the basic module, the data in the area on the system memory that is input by each execution unit as input data of the basic module is copied to another area on the system memory. Compare the data in the area on the system memory input by each execution unit as the input data of the basic module with the data saved in another area on the system memory after the execution of the basic module. And verifying that the basic module does not overwrite the input data.
前記スケジューラが、
前記基本モジュールを前記複数の実行ユニットの中のいずれかの実行ユニットに割り当てて実行させる時に、前記基本モジュールの入力データとして前記いずれかの実行ユニットが入力する前記システムメモリ上の領域のデータを同じく入力データとする前記基本モジュールと同一の基本モジュールを他の実行ユニットに割り当てて別途実行させ、前記2つの同一の基本モジュールの実行後に、当該2つの基本モジュールの出力データとして各実行ユニットが出力した前記システムメモリ上の2つの領域のデータを比較して、前記基本モジュールが同じ入力データに対して同じ出力データを得ていることを検証する
ことを特徴とするプログラムの検証方法。 Divided into multiple execution modules, system memory shared by the execution units, and output data of the preceding basic module as input data, and does not need to be synchronized with other modules The plurality of basic modules for the plurality of execution units is executed based on the execution order constraint, in order to execute the program in which the constraints on the execution order of the plurality of basic modules are defined in parallel by the plurality of execution units. A method for verifying a program in an information processing apparatus comprising a scheduler for controlling allocation of
The scheduler
When the basic module is assigned to any execution unit of the plurality of execution units and executed, the data in the area on the system memory input by the execution unit as the input data of the basic module is the same. The same basic module as the basic module as input data is assigned to another execution unit and executed separately. After execution of the two same basic modules, each execution unit outputs the output data of the two basic modules. A program verification method comprising: comparing data in two areas on the system memory to verify that the basic module obtains the same output data for the same input data.
さらに、
前記複数の基本モジュールそれぞれの前記複数の実行ユニットによる平均実行時間を計測し、
前記基本モジュールの実行前に、前記計測手段が計測した当該基本モジュールの平均実行時間を用いて、当該基本モジュールの実行開始を遅延させる時間を無作為に算出し、この時間分、当該基本モジュールの実行開始を遅延させる、
ことを特徴とする請求項9または10記載のプログラムの検証方法。 The scheduler
further,
Measuring an average execution time by the plurality of execution units of each of the plurality of basic modules;
Prior to the execution of the basic module, the average execution time of the basic module measured by the measuring unit is used to randomly calculate a time for delaying the execution start of the basic module. Delay execution start,
11. The program verification method according to claim 9, wherein the program is verified.
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2010044396A JP5017396B2 (en) | 2010-03-01 | 2010-03-01 | Information processing apparatus and program verification method |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2010044396A JP5017396B2 (en) | 2010-03-01 | 2010-03-01 | Information processing apparatus and program verification method |
Related Parent Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2008086933A Division JP2009238176A (en) | 2008-03-28 | 2008-03-28 | Information processing apparatus and program verifying method |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2010118082A true JP2010118082A (en) | 2010-05-27 |
JP5017396B2 JP5017396B2 (en) | 2012-09-05 |
Family
ID=42305673
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2010044396A Expired - Fee Related JP5017396B2 (en) | 2010-03-01 | 2010-03-01 | Information processing apparatus and program verification method |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP5017396B2 (en) |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH0883195A (en) * | 1994-09-14 | 1996-03-26 | Toshiba Corp | Parallel program verification device |
JPH11134307A (en) * | 1997-10-31 | 1999-05-21 | Toshiba Corp | Program development supporting device and method therefor and recording medium for recording program development supporting software |
JP2007249884A (en) * | 2006-03-20 | 2007-09-27 | Fujitsu Ltd | Program, apparatus and method for verifying software |
-
2010
- 2010-03-01 JP JP2010044396A patent/JP5017396B2/en not_active Expired - Fee Related
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH0883195A (en) * | 1994-09-14 | 1996-03-26 | Toshiba Corp | Parallel program verification device |
JPH11134307A (en) * | 1997-10-31 | 1999-05-21 | Toshiba Corp | Program development supporting device and method therefor and recording medium for recording program development supporting software |
JP2007249884A (en) * | 2006-03-20 | 2007-09-27 | Fujitsu Ltd | Program, apparatus and method for verifying software |
Also Published As
Publication number | Publication date |
---|---|
JP5017396B2 (en) | 2012-09-05 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US20110145643A1 (en) | Reproducible test framework for randomized stress test | |
US9996394B2 (en) | Scheduling accelerator tasks on accelerators using graphs | |
JP4667206B2 (en) | Multi-core model simulation program, recording medium storing the program, multi-core model simulator, and multi-core model simulation method | |
US9990458B2 (en) | Generic design rule checking (DRC) test case extraction | |
US8875064B2 (en) | Automated design rule checking (DRC) test case generation | |
US9720793B2 (en) | Implementing processor functional verification by generating and running constrained random irritator tests for multiple processor system and processor core with multiple threads | |
US10067710B2 (en) | Detecting buffer overflows in general-purpose GPU applications | |
JP2010009395A (en) | Information processing apparatus, and method and program for adjusting grain size | |
JPWO2017145300A1 (en) | Test case generation apparatus and test case generation program | |
US9830731B2 (en) | Methods of a graphics-processing unit for tile-based rendering of a display area and graphics-processing apparatus | |
US8762781B2 (en) | Method and apparatus useful in manufacturing test case operations | |
US9218273B2 (en) | Automatic generation of a resource reconfiguring test | |
JP2009238176A (en) | Information processing apparatus and program verifying method | |
JP6567212B2 (en) | Equivalence verification device and equivalence verification program | |
CN108021563B (en) | Method and device for detecting data dependence between instructions | |
Welton et al. | Exposing hidden performance opportunities in high performance GPU applications | |
US20070079109A1 (en) | Simulation apparatus and simulation method | |
JP5017396B2 (en) | Information processing apparatus and program verification method | |
WO2022176027A1 (en) | Test case generation apparatus, test case generation method, and test case generation program | |
JP6807721B2 (en) | State transition editing device and state transition editing program | |
JP2009223841A (en) | Instruction log acquisition program and virtual machine system | |
JP2005332110A (en) | Simulation system | |
Pinto et al. | Maximizing efficiency in Reference model based verification of 2D Graphics Engine | |
JP6289235B2 (en) | Software generation method, software generation apparatus, and software execution apparatus | |
WO2018163387A1 (en) | Analysis device, analysis method, and analysis program |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20100301 |
|
TRDD | Decision of grant or rejection written | ||
A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 Effective date: 20120515 |
|
A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20120611 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20150615 Year of fee payment: 3 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20150615 Year of fee payment: 3 |
|
LAPS | Cancellation because of no payment of annual fees |