JP2010118082A - Information processing apparatus and program verifying method - Google Patents

Information processing apparatus and program verifying method Download PDF

Info

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
Application number
JP2010044396A
Other languages
Japanese (ja)
Other versions
JP5017396B2 (en
Inventor
Ryuji Sakai
隆二 境
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 JP2010044396A priority Critical patent/JP5017396B2/en
Publication of JP2010118082A publication Critical patent/JP2010118082A/en
Application granted granted Critical
Publication of JP5017396B2 publication Critical patent/JP5017396B2/en
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Abstract

<P>PROBLEM TO BE SOLVED: To provide an information processing apparatus achieving low-cost operation verification in programs processed in parallel. <P>SOLUTION: A parallel processing verification part 230 of a runtime library 200 saves data in a work memory for all inputs before executing each serial basic module 101. After saving the data, the parallel processing verification part 230 executes the serial basic modules 101, and after that, whether all the saved data are completely match original data is checked. If there is a mismatch, the parallel processing verification part 230 executes error processing so as to display a warning message, for example, and to forcibly terminate the program. <P>COPYRIGHT: (C)2010,JPO&INPIT

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).

特開2005−258920号公報JP 2005-258920 A

プログラムの並列処理の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.

この発明の実施形態に係る情報処理装置のシステム構成の一例を示す図。The figure which shows an example of the system configuration | structure of the information processing apparatus which concerns on embodiment of this invention. 本実施形態の情報処理装置によって実行される並行処理仕様のプログラムの概略構成を説明するための図。The figure for demonstrating schematic structure of the program of the parallel processing specification performed by the information processing apparatus of this embodiment. 一般的なマルチスレッド処理を示す図。The figure which shows general multithread processing. 本実施形態の情報処理装置によって実行されるプログラムを構成する直列基本モジュールと並列実行制御記述との関係を示す図。The figure which shows the relationship between the serial basic module which comprises the program run by the information processing apparatus of this embodiment, and parallel execution control description. 本実施形態の情報処理装置によって実行されるプログラムの並列実行制御記述を説明するための図。The figure for demonstrating the parallel execution control description of the program run by the information processing apparatus of this embodiment. 本実施形態の情報処理装置上で動作するランタイムライブラリが行うプログラムの並列処理制御を説明するための図。The figure for demonstrating the parallel processing control of the program which the runtime library which operate | moves on the information processing apparatus of this embodiment performs. 本実施形態の情報処理装置上におけるランタイムライブラリの動作状態を示す図。The figure which shows the operation state of the runtime library on the information processing apparatus of this embodiment. 本実施形態の情報処理装置上で動作するランタイムライブラリの機能ブロックを示す図。FIG. 3 is a diagram showing functional blocks of a runtime library that operates on the information processing apparatus according to the embodiment. 並列プログラムが動作する時のメモリモデルを示す図。The figure which shows a memory model when a parallel program operate | moves. 本実施形態の情報処理装置上で動作するランタイムライブラリが実行する並列処理検証の第1の動作を説明するための図。The figure for demonstrating the 1st operation | movement of the parallel processing verification which the runtime library which operate | moves on the information processing apparatus of this embodiment performs. 本実施形態の情報処理装置上で動作するランタイムライブラリが実行する並列処理検証の第2の動作を説明するための図。The figure for demonstrating the 2nd operation | movement of the parallel processing verification which the runtime library which operate | moves on the information processing apparatus of this embodiment performs. 本実施形態の情報処理装置上で動作するランタイムライブラリが並列処理検証の第1および第2の動作を同時進行させる場合の例を説明するための図。The figure for demonstrating the example in case the runtime library which operate | moves on the information processing apparatus of this embodiment advances the 1st and 2nd operation | movement of parallel processing verification simultaneously. 本実施形態の情報処理装置上で動作するランタイムライブラリが実行する並列処理検証の第1の動作の流れを示すフローチャート。6 is a flowchart showing a first operation flow of parallel processing verification executed by a runtime library operating on the information processing apparatus according to the embodiment. 本実施形態の情報処理装置上で動作するランタイムライブラリが実行する並列処理検証の第2の動作の流れを示すフローチャート。10 is a flowchart showing a second operation flow of parallel processing verification executed by a runtime library operating on the information processing apparatus according to the embodiment. 本実施形態の情報処理装置上で動作するランタイムライブラリが実行する並列処理検証の変形例を説明するための第1の図。The 1st figure for demonstrating the modification of the parallel processing verification which the runtime library which operate | moves on the information processing apparatus of this embodiment performs. 本実施形態の情報処理装置上で動作するランタイムライブラリが実行する並列処理検証の変形例を説明するための第2の図。The 2nd figure for demonstrating the modification of the parallel processing verification which the runtime library which operate | moves on the information processing apparatus of this embodiment performs.

以下、図面を参照して、この発明の一実施形態を説明する。   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 processor 1, a main memory 2, and a hard disk drive (HDD) 3, which are connected to each other via an internal bus.

プロセッサ1は、HDD3から主メモリにロードされたプログラムを実行制御する中央演算処理装置(CPU)であり、主要部の演算回路(CPUコア)であるコア11を複数内蔵している。   The processor 1 is a central processing unit (CPU) that controls execution of a program loaded from the HDD 3 to the main memory, and includes a plurality of cores 11 that are arithmetic circuits (CPU cores) of the main part.

主メモリ2は、プロセッサ1がアクセス可能な、例えば半導体で構成される記憶装置である。一方、HDD3は、本コンピュータにおける補助記憶としての役割を担う、(主メモリ2と比較して)低速大容量の記憶媒体である。   The main memory 2 is a storage device made of, for example, a semiconductor that can be accessed by the processor 1. On the other hand, the HDD 3 is a low-speed and large-capacity storage medium (compared to the main memory 2) that plays a role of auxiliary storage in the computer.

また、図示していないが、プロセッサ1によるプログラムの処理結果等を表示するためのディスプレイや処理データ等を入力するためのキーボードなどの入出力装置が、例えばノートブックタイプの場合はさらに備えられ、また、例えばデスクトップタイプの場合はケーブル等により外部接続される。   Although not shown, an input / output device such as a display for displaying a processing result of the program by the processor 1 and a keyboard for inputting processing data, for example, is further provided in the case of a notebook type. For example, in the case of a desktop type, it is externally connected by a cable or the like.

コア11を複数内蔵するプロセッサ1を搭載する本コンピュータは、複数のプログラムを並列実行することが可能であり、また、1つのプログラム中の複数の処理を並列実行することも可能である。ここで、図2を参照して、本コンピュータによって実行される並行処理仕様のプログラムの概略構成について説明する。   The computer equipped with the processor 1 incorporating a plurality of cores 11 can execute a plurality of programs in parallel, and can also execute a plurality of processes in one program in parallel. Here, with reference to FIG. 2, a schematic configuration of a parallel processing specification program executed by the computer will be described.

図2に示すように、本コンピュータによって実行される並行処理仕様の実行プログラム100は、複数の直列基本モジュール101と、この複数の直列基本モジュール101をどのような順序で実行すべきかを定義する並列実行制御記述102とから構成される。   As shown in FIG. 2, a parallel processing specification execution program 100 executed by the computer includes a plurality of serial basic modules 101 and a parallel definition that defines the order in which the serial basic modules 101 should be executed. And an execution control description 102.

いわゆるマルチスレッド処理では、一般的に、図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 basic modules 101 are created by dividing a program into processing units that can be executed asynchronously without having to synchronize with other modules. At the same time, a parallel execution control description 102 that defines constraints on the execution order of the plurality of serial basic modules 101 is created. For parallel execution control, each serial basic module 101 is represented as a node. Thus, the serial basic module refers to a module of a processing unit that can be executed asynchronously with other modules. Next, the parallel execution control description 102 will be described with reference to FIG.

図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 basic module 101. As shown in the figure, each serial basic module 101 can be regarded as a node having a link to a preceding node and a connector to a subsequent node. The parallel execution control description 102 defines the execution order of the plurality of serial basic modules 101 by writing link information to the preceding node for each serial basic module 101. FIG. 5B is a diagram illustrating a parallel execution control description relating to a certain serial basic module 101. As illustrated, the serial basic module ID that is each identifier and the preceding node of the serial basic module 101 are shown. Link information is written. In addition, information such as output buffer type and cost is also described.

続いて、この複数の直列基本モジュール101と並列実行制御記述102とから構成されるという独自の構成をもつ実行プログラム100を本コンピュータがどのように実行するのかについて説明する。   Next, how the computer executes the execution program 100 having a unique configuration composed of the plurality of serial basic modules 101 and the parallel execution control description 102 will be described.

このような独自の構成をもつ実行プログラム100を並列処理するために、本コンピュータでは、図6に示すランタイムライブラリ200が用意される。このランタイムライブラリ200は、スケジューラとしての機能を備えており、並列実行制御記述102がグラフデータ構造生成情報201として与えられる。並列実行制御記述102は、例えば関数型言語を用いて作成され、トランスレータによってグラフデータ構造生成情報201に変換される。   In order to perform parallel processing on the execution program 100 having such a unique configuration, a runtime library 200 shown in FIG. 6 is prepared in this computer. The runtime library 200 has a function as a scheduler, and a parallel execution control description 102 is given as graph data structure generation information 201. The parallel execution control description 102 is created using a functional language, for example, and is converted into graph data structure generation information 201 by a translator.

何らかのデータ入力が行われると、このデータを処理するための直列基本モジュール101をいくつか実行する必要が生じるが、その都度、ランタイムライブラリ200は、グラフデータ構造生成情報201に基づき、グラフデータ構造202を動的に生成・更新していく。グラフデータ構造202は、その時々で適宜に実行されていくノード群の前後関係を示すグラフデータであり、ランタイムライブラリ200は、追加対象のノード間での前後関係は勿論、実行待ちの状態にあるノードとの間の前後関係も考慮して、それらノード群のグラフデータ構造202への追加を行っていく。   When some data is input, it is necessary to execute some serial basic modules 101 for processing this data. In each case, the runtime library 200 uses the graph data structure generation information 201 to execute the graph data structure 202. Will be generated and updated dynamically. The graph data structure 202 is graph data indicating the context of the node group that is appropriately executed from time to time, and the runtime library 200 is waiting for execution as well as the context between the nodes to be added. Considering the context between nodes, the node group is added to the graph data structure 202.

また、ランタイムライブラリ200は、あるノードの実行が完了すると、このノードをグラフデータ構造202から削除すると共に、このノードを先行ノードとし、かつ、その他に先行ノードがないか、または、その他の先行ノードがすべて完了している後続ノードの有無を調べて、この条件を満たす後続ノードが存在したら、そのノードをいずれかのコア11に割り当てる。   In addition, when the execution of a certain node is completed, the runtime library 200 deletes this node from the graph data structure 202, sets this node as a preceding node, and there are no other preceding nodes, or other preceding nodes. Is checked, and if there is a subsequent node that satisfies this condition, that node is assigned to one of the cores 11.

このランタイムライブラリ200の働きにより、並列実行制御記述102に基づく複数の直列基本モジュール101の並列実行が矛盾無く進められていく。ランタイムライブラリ200は、直列基本モジュール101の実行完了後に排他的に呼び出され、入出力のチェック、グラフデータのアップデート、次に実行すべき直列基本モジュール101の選択までを行ってリターンする。コア11上では、選択された直列基本モジュール101を実行する。別のコアが次々とランタイムライブラリ200を呼び出して、次に実行すべき直列基本モジュール101を得てこれを実行する。スレッド間の排他制御は、ランタイムライブラリ200による、グラフデータ構造202からのノードの選択と、当該グラフデータ構造の更新とのみに止まるので(図7参照)、図3に示した一般的なマルチスレッド処理と比較して、高い並列性能を得ることを実現する。   Due to the function of the runtime library 200, parallel execution of the plurality of serial basic modules 101 based on the parallel execution control description 102 proceeds without contradiction. The runtime library 200 is called exclusively after the execution of the serial basic module 101 is completed, performs input / output check, graph data update, and selection of the serial basic module 101 to be executed next, and returns. On the core 11, the selected serial basic module 101 is executed. Another core calls the runtime library 200 one after another to obtain the serial basic module 101 to be executed next and execute it. Since exclusive control between threads is limited only to selection of a node from the graph data structure 202 and update of the graph data structure by the runtime library 200 (see FIG. 7), the general multithread shown in FIG. High parallel performance is achieved compared to processing.

そして、このように、非同期に実行可能な処理単位にプログラムを分割することで、複数の直列基本モジュール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 basic modules 101 are created, and the runtime library 200 orders the plurality of serial basic modules 101 into the plurality of cores 11 in order. The computer 1 that is often assigned provides a mechanism for detecting a problem that the serial basic module 101 overwrites input data without rewriting the source code during program execution. The computer 1 also provides a mechanism for checking that there is re-entrance when the same serial basic module 101 is simultaneously called from a plurality of cores 11. Hereinafter, this mechanism will be described in detail.

図8は、ランタイムライブラリ200の機能ブロック図である。   FIG. 8 is a functional block diagram of the runtime library 200.

ランタイムライブラリ200は、図8に示すように、ノード生成部210、グラフ構造解釈実行エンジン220および並列処理検証部230を有している。   As illustrated in FIG. 8, the runtime library 200 includes a node generation unit 210, a graph structure interpretation execution engine 220, and a parallel processing verification unit 230.

前述した、本ランタイムライブラリ200による、グラフデータ構造生成情報201に基づくグラフデータ構造202の動的な生成・更新と、このグラフデータ構造202を用いたノードのコア11への割り当て制御とは、ノード生成部210およびグラフ構造解釈実行エンジン220によって実現されている。そして、並列処理検証部230が、このノード生成部210およびグラフ構造解釈実行エンジン220によって実現される並列処理の検証を実施する。   The above-described dynamic generation / update of the graph data structure 202 based on the graph data structure generation information 201 by the runtime library 200 and the assignment control of the node to the core 11 using the graph data structure 202 are as follows: This is realized by the generation unit 210 and the graph structure interpretation execution engine 220. Then, the parallel processing verification unit 230 performs verification of the parallel processing realized by the node generation unit 210 and the graph structure interpretation execution engine 220.

図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 basic module 101 is only the result output buffer. By doing so, the execution of the serial basic module 101 is determined by the input data alone, and can be prevented from interfering with the operations of the other serial basic modules 101.

しかし、このような制約を設けたとしても、直列基本モジュール101の実装を、性能を達成するためにC言語やC++言語で記述すると、コンパイラで、この制約をチェックすることができない。また、プログラムローダにより、アドレス空間の割り当ての違いでリードオンリーセクションにデータを割り当てることができるが、先行ノードの直列基本モジュール101が結果を書き込むため、単純なハードウェアによるプロテクションだけでは十分でない。   However, even if such a restriction is provided, if the implementation of the serial basic module 101 is described in C language or C ++ language to achieve performance, the compiler cannot check this restriction. The program loader can allocate data to the read-only section depending on the address space allocation. However, since the serial basic module 101 of the preceding node writes the result, simple hardware protection is not sufficient.

そこで、ランタイムライブラリ200の並列処理検証部230は、第1に、直列基本モジュール101の実行途中で、入力データの変化がなかったことをチェックする。より具体的には、図10に示すように、各直列基本モジュール101の実行前に、入力となる先行ノードの実行結果を作業メモリに退避しておき、当該直列基本モジュール101の実行が終わった時点で、元の入力データと、この退避したデータの比較を行い、入力データに変化がないことをチェックする。ランタイムライブラリ200は、すべての並列プログラムに共通に使える部分であるため、並列プログラムを実装する度に、このようなチェックコードをソースコードに埋め込む手間が省けるため、開発効率の向上になる。また、テストコードの実装漏れを防ぐことができるため、網羅的なテストが可能となり、信頼性の高いプログラムを作成できる。   Therefore, the parallel processing verification unit 230 of the runtime library 200 first checks that there is no change in input data during the execution of the serial basic module 101. More specifically, as shown in FIG. 10, before the execution of each serial basic module 101, the execution result of the preceding node as an input is saved in the working memory, and the execution of the serial basic module 101 is finished. At the time, the original input data is compared with the saved data, and it is checked that there is no change in the input data. Since the runtime library 200 is a part that can be used in common for all parallel programs, it is possible to save time and effort to embed such a check code in the source code every time the parallel program is implemented, thereby improving development efficiency. In addition, since test code implementation omissions can be prevented, exhaustive testing is possible, and highly reliable programs can be created.

また、ランタイムライブラリ200の並列処理検証部230は、入力データの変化をモニタリングするだけでなく、第2に、直列基本モジュール101のリエントランス性(スレッドセーフでもある)のチェックを行う。より具体的には、図11に示すように、各直列基本モジュール101の実行時に、結果出力用のバッファ(オブジェクトとみなすことも可能)を2つ準備し、同じ入力に対して、同時に直列基本モジュール101を実行し、この2つの結果を比較する。結果が一致した場合は、どちらか1つの結果を破棄して、処理を継続する。これにより、テストがパスする限り、中断なく検証作業を進められる。   Further, the parallel processing verification unit 230 of the runtime library 200 not only monitors the change of input data, but secondly checks the re-entrance property (also thread-safe) of the serial basic module 101. More specifically, as shown in FIG. 11, at the time of executing each serial basic module 101, two buffers for output of results (which can also be regarded as objects) are prepared, and the same basic input is connected to the serial basic at the same time. Module 101 is executed and the two results are compared. If the results match, discard one of the results and continue the process. This allows verification to proceed without interruption as long as the test passes.

なお、図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 basic module 101, the execution result of the preceding node to be input is saved in the working memory, and two result output buffers are prepared. The serial basic module 101 is input with the input data and the saved data as inputs. Thus, after the execution, the original input data and the saved data can be compared to check that there is no change in the input data, and by comparing the two results, You can check the entrance.

図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 processing verification unit 230 of the runtime library 200 saves data to the working memory for all inputs before the execution of each serial basic module 101 (step A1).

このデータの退避後、並列処理検証部230は、当該直列基本モジュール101を実行させ(ステップA2)、その実行後に、元の入力と退避したデータとが全て一致しているかどうかを調べる(ステップA3)。そして、不一致が検出されたら(ステップA3のNO)、並列処理検証部230は、例えば警告メッセージを表示して当該プログラムの実行を強制終了させる等のエラー処理を実行する(ステップA4)。   After saving the data, the parallel processing verification unit 230 executes the serial basic module 101 (step A2), and checks whether the original input and the saved data all match after the execution (step A3). ). When a mismatch is detected (NO in step A3), the parallel processing verification unit 230 executes error processing such as displaying a warning message and forcibly terminating the execution of the program (step A4).

また、図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 processing verification unit 230 of the runtime library 200 secures another result output buffer when each serial basic module 101 is executed (step B1), and executes two serial basic modules 101 (step B2). .

その実行後、並列処理検証部230は、これら2つの結果が一致しているかどうかを調べ(ステップB3)、不一致が検出されたら(ステップB3のNO)、並列処理検証部230は、例えば警告メッセージを表示して当該プログラムの実行を強制終了させる等のエラー処理を実行する(ステップB4)。また、一致が確認されたら(ステップB3のYES)、並列処理検証部230は、どちらか1つの結果を開放し(ステップB5)、当該プログラムの実行を継続する。   After the execution, the parallel processing verification unit 230 checks whether or not these two results match (step B3). If a mismatch is detected (NO in step B3), the parallel processing verification unit 230, for example, displays a warning message. Is displayed and error processing such as forcibly terminating the execution of the program is executed (step B4). When the match is confirmed (YES in step B3), the parallel processing verification unit 230 releases one of the results (step B5) and continues execution of the program.

このように、本コンピュータは、ランタイムライブラリ200に、並列処理の検証を実施する並列処理検証部230を搭載することにより、並列処理するプログラムにおける動作検証の低コスト化が実現される。   As described above, by installing the parallel processing verification unit 230 that performs parallel processing verification in the runtime library 200, the computer can realize cost reduction of operation verification in a parallel processing program.

なお、以上では、直列基本モジュール101の入力データの上書きチェックと、直列基本モジュール101のリエントラント性のチェックとを行う例を示したが、さらに、並列処理による潜在的なタイミング問題を早期に発見するための仕組みを並列処理検証部230に持たせることも有効である。   In the above, an example of performing the overwrite check of the input data of the serial basic module 101 and the reentrant check of the serial basic module 101 has been described. Further, a potential timing problem due to parallel processing is discovered early. It is also effective to provide the parallel processing verification unit 230 with a mechanism for this.

例えば、図15に示すような、各直列基本モジュール101の平均実行時間を保持するためのテーブルを管理し、図16に示すような手順で、(平均実行時間から導き出される適正な範囲内で)各直列基本モジュール101の実行タイミングを遅延させるためのランダムな待ち時間を挿入する機能を並列処理検証部230が備えることにより、タイミング問題による不具合発生時の問題箇所特定のための仕組みを提供できる。   For example, a table for holding the average execution time of each serial basic module 101 as shown in FIG. 15 is managed, and the procedure as shown in FIG. 16 is performed (within an appropriate range derived from the average execution time). By providing the parallel processing verification unit 230 with a function of inserting a random waiting time for delaying the execution timing of each serial basic module 101, it is possible to provide a mechanism for identifying a problem location when a malfunction occurs due to a timing problem.

このように、本発明は上記実施形態そのままに限定されるものではなく、実施段階ではその要旨を逸脱しない範囲で構成要素を変形して具体化できる。また、上記実施形態に開示されている複数の構成要素の適宜な組み合わせにより、種々の発明を形成できる。例えば、実施形態に示される全構成要素から幾つかの構成要素を削除してもよい。さらに、異なる実施形態にわたる構成要素を適宜組み合わせてもよい。   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 SYMBOLS 1 ... Processor, 2 ... Main memory, 3 ... Hard disk drive (HDD), 11 ... Core, 100 ... Execution program, 101 ... Serial basic module, 102 ... Parallel execution control description, 200 ... Runtime library, 201 ... Graph data structure Generation information, 202 ... graph data structure, 210 ... node generation unit, 220 ... graph structure interpretation execution engine, 230 ... parallel processing verification unit.

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.
前記検証手段は、前記基本モジュールの入力データとして各実行ユニットが入力した前記システムメモリ上の領域のデータと、当該システムメモリ上の他の領域に退避させたデータとの値が異なっていた場合、その旨を報知する手段を含むことを特徴とする請求項1記載の情報処理装置。   When the value of the data in the area on the system memory input by each execution unit as the input data of the basic module is different from the data saved in another area on the system memory, The information processing apparatus according to claim 1, further comprising means for notifying that effect. 前記検証手段は、前記基本モジュールを前記複数の実行ユニットの中のいずれかの実行ユニットに割り当てて実行させる時に、前記システムメモリ上の他の領域に退避させたデータを入力データとする前記基本モジュールと同一の基本モジュールを他の実行ユニットに割り当てて別途実行させ、前記2つの同一の基本モジュールの実行後に、当該2つの基本モジュールの出力データとして各実行ユニットが出力した前記システムメモリ上の2つの領域のデータを比較して、前記基本モジュールが同じ入力データに対して同じ出力データを得ていることを検証する手段を含むことを特徴とする請求項1記載の情報処理装置。   The basic module uses the data saved in another area on the system memory as input data when the verification module allocates and executes the basic module to any execution unit of the plurality of execution units. The same basic module is assigned to another execution unit and executed separately, and after the execution of the two same basic modules, two execution data output by the execution units as the output data of the two basic modules 2. The information processing apparatus according to claim 1, further comprising means for comparing the data in the areas and verifying that the basic module obtains the same output data for the same input data. 前記検証手段を機能させるか否かを設定する設定手段をさらに具備することを特徴とする請求項1記載の情報処理装置。   The information processing apparatus according to claim 1, further comprising a setting unit configured to set whether or not the verification unit functions. 複数の実行ユニットと、
前記複数の実行ユニットから共有されるシステムメモリと、
先行する基本モジュールの出力データを入力データとし、かつ、他のモジュールとの同期を取る必要がない複数の基本モジュールに分割され、当該複数の基本モジュールの実行順序の制約が定義されるプログラムを、前記複数の実行ユニットによって並列実行するために、前記実行順序の制約に基づき、前記複数の実行ユニットに対する前記複数の基本モジュールの割り当てを制御するスケジューラと、
を具備し、
前記スケジューラは、
前記基本モジュールを前記複数の実行ユニットの中のいずれかの実行ユニットに割り当てて実行させる時に、前記基本モジュールの入力データとして前記いずれかの実行ユニットが入力する前記システムメモリ上の領域のデータを同じく入力データとする前記基本モジュールと同一の基本モジュールを他の実行ユニットに割り当てて別途実行させ、前記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.
前記検証手段は、各実行ユニットが出力した前記システムメモリ上の2つの領域のデータの値が異なっていた場合、その旨を報知する手段を含むことを特徴とする請求項5記載の情報処理装置。   6. The information processing apparatus according to claim 5, wherein the verification means includes means for notifying the fact that data values in the two areas on the system memory outputted by the execution units are different. . 前記検証手段を機能させるか否かを設定する設定手段をさらに具備することを特徴とする請求項5記載の情報処理装置。   6. The information processing apparatus according to claim 5, further comprising setting means for setting whether or not the verification means functions. 前記スケジューラは、
前記複数の基本モジュールそれぞれの前記複数の実行ユニットによる平均実行時間を計測する計測手段をさらに有し、
前記検証手段は、前記基本モジュールの実行前に、前記計測手段が計測した当該基本モジュールの平均実行時間を用いて、当該基本モジュールの実行開始を遅延させる時間を無作為に算出し、この時間分、当該基本モジュールの実行開始を遅延させる手段を含む、
ことを特徴とする請求項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.
JP2010044396A 2010-03-01 2010-03-01 Information processing apparatus and program verification method Expired - Fee Related JP5017396B2 (en)

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)

* Cited by examiner, † Cited by third party
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

Patent Citations (3)

* Cited by examiner, † Cited by third party
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