JP2009238176A - 情報処理装置およびプログラムの検証方法 - Google Patents
情報処理装置およびプログラムの検証方法 Download PDFInfo
- Publication number
- JP2009238176A JP2009238176A JP2008086933A JP2008086933A JP2009238176A JP 2009238176 A JP2009238176 A JP 2009238176A JP 2008086933 A JP2008086933 A JP 2008086933A JP 2008086933 A JP2008086933 A JP 2008086933A JP 2009238176 A JP2009238176 A JP 2009238176A
- Authority
- JP
- Japan
- Prior art keywords
- execution
- basic
- execution units
- modules
- data
- 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.)
- Pending
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/08—Error detection or correction by redundancy in data representation, e.g. by using checking codes
- G06F11/10—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
- G06F11/1004—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's to protect a block of data words, e.g. CRC or checksum
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Preventing errors by testing or debugging software
- G06F11/362—Software debugging
- G06F11/3632—Software debugging of specific synchronisation aspects
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5027—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2209/00—Indexing scheme relating to G06F9/00
- G06F2209/48—Indexing scheme relating to G06F9/48
- G06F2209/483—Multiproc
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Quality & Reliability (AREA)
- Software Systems (AREA)
- Computer Security & Cryptography (AREA)
- Computer Hardware Design (AREA)
- Debugging And Monitoring (AREA)
Abstract
【課題】並列処理するプログラムにおける動作検証の低コスト化を実現した情報処理装置を提供する。
【解決手段】ランタイムライブラリ200の並列処理検証部230は、各直列基本モジュール101の実行前に、全ての入力について作業メモリへデータを退避する。このデータの退避後、並列処理検証部230は、当該直列基本モジュール101を実行させ、その実行後に、元の入力と退避したデータとが全て一致しているかどうかを調べる。そして、不一致が検出されたら、並列処理検証部230は、例えば警告メッセージを表示して当該プログラムの実行を強制終了させる等のエラー処理を実行する。
【選択図】 図8
【解決手段】ランタイムライブラリ200の並列処理検証部230は、各直列基本モジュール101の実行前に、全ての入力について作業メモリへデータを退避する。このデータの退避後、並列処理検証部230は、当該直列基本モジュール101を実行させ、その実行後に、元の入力と退避したデータとが全て一致しているかどうかを調べる。そして、不一致が検出されたら、並列処理検証部230は、例えば警告メッセージを表示して当該プログラムの実行を強制終了させる等のエラー処理を実行する。
【選択図】 図8
Description
この発明は、例えばCPUコアを複数内蔵するCPUを搭載するコンピュータや、複数のCPUを搭載するコンピュータ等に適用して好適なプログラムの検証技術に関する。
近年、ノートブックタイプやデスクトップタイプ等、様々な種類の個人向けコンピュータ(パーソナルコンピュータ)が広く普及している。この種のコンピュータでは、例えば高精細動画像データをソフトウェアによって再生する等、その情報処理能力に対する要求はCPUの性能向上の限界に迫るほどに高まる一方である。
このような事から、例えば複数のCPUを搭載したり、また、最近では、CPUコアを複数内蔵するCPUを搭載するコンピュータが登場してきている。即ち、プログラムを並列処理することで、所要時間の短縮化を図り、以て、コンピュータの性能を向上させるわけである。プログラムの並列処理を効率的に行うための仕組みについては、これまでも種々提案されている(例えば特許文献1等参照)。
特開2005−258920公報
プログラムの並列処理の1つの形態は、プログラム中の各処理単位を実行ユニットに割り当てる(複数のCPUを搭載するコンピュータにおいては、各CPUへの割り当てを行い、CPUコアを複数内蔵するCPUを搭載するコンピュータにおいては、各CPUコアへの割り当てを行う)スケジューラを含むランタイム処理と、各実行ユニット上で動作する処理単位との2つの構成要素から構成される。
ところで、プログラムを並列処理するには、並列動作する各処理単位が独立な関係を保つ必要がある。例えば、処理単位Aの出力データを入力して処理単位Bと処理単位Cとが実行される場合、処理単位Bおよび処理単位Cのそれぞれは、処理単位Aの出力データのみによって結果が決まるものとならなければならない。このことから、各処理単位の入力データが保持されるシステムメモリ上の領域は、当該各処理単位の実行時、リードオンリー、即ち、書き換え不可能な領域として管理されなければならない。例えば、先に実行を開始した処理単位Bが入力データを上書きしてしまうと、その後に実行を開始した処理単位Cの結果に影響を与えることになる。
このような事象が発生しないこと、即ち、プログラムの正当性を検証する場合、これまでは、テスト用のコードをプログラムに埋め込んでテストしていた。しかしながら、この作業は、プログラミング以上に作業コストがかかるという問題があった。また、並列処理においては、動作タイミングの問題で、不具合の再現性が低く、デバッグが難しくなるという問題もあった。
さらに、プログラムを並列処理するには、複数の実行ユニットから同一の基本モジュールが同時に呼び出される場合を考慮して、プログラムの各処理単位がリエントランス性を有することを検証する必要があるが、この検証においても、前述と同様の問題がある。
この発明は、このような事情を考慮してなされたものであり、並列処理するプログラムにおける動作検証の低コスト化を実現した情報処理装置およびプログラムの検証方法を提供することを目的とする。
前述した目的を達成するために、この発明の情報処理装置は、複数の実行ユニットと、前記複数の実行ユニットから共有されるシステムメモリと、他のモジュールと非同期に実行可能な複数の基本モジュールに分割され、当該複数の基本モジュールの実行順序の制約が定義されるプログラムを、前記複数の実行ユニットによって並列実行するために、前記実行順序の制約に基づき、前記複数の実行ユニットに対する前記複数の基本モジュールの割り当てを制御するスケジューラと、を具備し、前記スケジューラは、前記複数の実行ユニットのそれぞれについて、前記基本モジュールの実行前に、その基本モジュールの入力データとして各実行ユニットが入力する前記システムメモリ上の領域のデータを当該システムメモリ上の他の領域に複製して退避させ、前記基本モジュールの実行後に、各実行ユニットがアクセスした前記システムメモリ上の領域のデータと、当該システムメモリ上の他の領域に退避させたデータとを比較する検証手段を有することを特徴とする。
また、この発明の情報処理装置は、複数の実行ユニットと、前記複数の実行ユニットから共有されるシステムメモリと、他のモジュールと非同期に実行可能な複数の基本モジュールに分割され、当該複数の基本モジュールの実行順序の制約が定義されるプログラムを、前記複数の実行ユニットによって並列実行するために、前記実行順序の制約に基づき、前記複数の実行ユニットに対する前記複数の基本モジュールの割り当てを制御するスケジューラと、を具備し、前記スケジューラは、前記複数の実行ユニットのそれぞれについて、前記基本モジュールの実行時に、その基本モジュールの入力データとして各実行ユニットが入力する前記システムメモリ上の領域のデータを同じく入力データとする前記基本モジュールと同一の基本モジュールを他の実行ユニットに割り当てて別途実行させ、前記2つの同一の基本モジュールの実行後に、当該2つの基本モジュールの出力データとして各実行ユニットが出力した前記システムメモリ上の2つの領域のデータを比較する検証手段を有することを特徴とする。
また、この発明の情報処理装置は、複数の実行ユニットと、他のモジュールと非同期に実行可能な複数の基本モジュールに分割され、当該複数の基本モジュールの実行順序の制約が定義されるプログラムを、前記複数の実行ユニットによって並列実行するために、前記実行順序の制約に基づき、前記複数の実行ユニットに対する前記複数の基本モジュールの割り当てを制御するスケジューラと、を具備し、前記スケジューラは、前記複数の基本モジュールそれぞれの前記複数の実行ユニットによる平均実行時間を計測する計測手段と、前記基本モジュールの実行前に、前記計測手段が計測した当該基本モジュールの平均実行時間を用いて、当該基本モジュールの実行開始を遅延させる時間を無作為に算出し、この時間分、当該基本モジュールの実行開始を遅延させる検証手段を有することを特徴とする。
この発明によれば、並列処理するプログラムにおける動作検証の低コスト化を実現することができる。
以下、図面を参照して、この発明の一実施形態を説明する。
図1は、本実施形態に係る情報処理装置のシステム構成の一例を示す図である。この情報処理装置は、ノートブックタイプやデスクトップタイプ等のいわゆるパーソナルコンピュータとして実現されている。そして、図1に示すように、本コンピュータは、プロセッサ1、主メモリ2およびハードディスク駆動装置(HDD)3を有しており、これらは内部バスを介して相互に接続されている。
プロセッサ1は、HDD3から主メモリにロードされたプログラムを実行制御する中央演算処理装置(CPU)であり、主要部の演算回路(CPUコア)であるコア11を複数内蔵している。
主メモリ2は、プロセッサ1がアクセス可能な、例えば半導体で構成される記憶装置である。一方、HDD3は、本コンピュータにおける補助記憶としての役割を担う、(主メモリ2と比較して)低速大容量の記憶媒体である。
また、図示していないが、プロセッサ1によるプログラムの処理結果等を表示するためのディスプレイや処理データ等を入力するためのキーボードなどの入出力装置が、例えばノートブックタイプの場合はさらに備えられ、また、例えばデスクトップタイプの場合はケーブル等により外部接続される。
コア11を複数内蔵するプロセッサ1を搭載する本コンピュータは、複数のプログラムを並列実行することが可能であり、また、1つのプログラム中の複数の処理を並列実行することも可能である。ここで、図2を参照して、本コンピュータによって実行される並行処理仕様のプログラムの概略構成について説明する。
図2に示すように、本コンピュータによって実行される並行処理仕様の実行プログラム100は、複数の直列基本モジュール101と、この複数の直列基本モジュール101をどのような順序で実行すべきかを定義する並列実行制御記述102とから構成される。
いわゆるマルチスレッド処理では、一般的に、図3に示すように、他のスレッドとの間で(通信を含む)同期を取りながら、即ち、プログラム全体の整合性を保ちながら、各スレッドが処理を進行させていく。よって、同期の待ち合わせが多発すると、期待した並列性能が得られないことも考えられる。
そこで、本実施形態では、図4に示すように、他のモジュールとの同期を取る必要がない、非同期に実行可能な処理単位にプログラムを分割することで、複数の直列基本モジュール101を作成すると共に、この複数の直列基本モジュール101の実行順序の制約を定義する並列実行制御記述102を作成する。並列実行制御上、各直列基本モジュール101は、ノードとして表現される。このように、直列基本モジュールとは、他のモジュールと非同期に実行可能な処理単位のモジュールをいう。次に、図5を参照して、並列実行制御記述102について説明する。
図5(A)は、ある直列基本モジュール101を表現したノードの概念図である。図示のように、各直列基本モジュール101は、先行ノードへのリンクと、後続ノードへの結合子とを有するノードとして捉えることができる。並列実行制御記述102は、各直列基本モジュール101それぞれについて、先行ノードへのリンク情報を記すことにより、複数の直列基本モジュール101の実行順序を定義する。図5(B)は、ある直列基本モジュール101に関する並列実行制御記述を例示する図であり、図示のように、それぞれの識別子である直列基本モジュールIDと、その直列基本モジュール101の先行ノードへのリンク情報とが記される。また、その他に、出力バッファタイプやコスト等の情報が併せて記される。
続いて、この複数の直列基本モジュール101と並列実行制御記述102とから構成されるという独自の構成をもつ実行プログラム100を本コンピュータがどのように実行するのかについて説明する。
このような独自の構成をもつ実行プログラム100を並列処理するために、本コンピュータでは、図6に示すランタイムライブラリ200が用意される。このランタイムライブラリ200は、スケジューラとしての機能を備えており、並列実行制御記述102がグラフデータ構造生成情報201として与えられる。並列実行制御記述102は、例えば関数型言語を用いて作成され、トランスレータによってグラフデータ構造生成情報201に変換される。
何らかのデータ入力が行われると、このデータを処理するための直列基本モジュール101をいくつか実行する必要が生じるが、その都度、ランタイムライブラリ200は、グラフデータ構造生成情報201に基づき、グラフデータ構造202を動的に生成・更新していく。グラフデータ構造202は、その時々で適宜に実行されていくノード群の前後関係を示すグラフデータであり、ランタイムライブラリ200は、追加対象のノード間での前後関係は勿論、実行待ちの状態にあるノードとの間の前後関係も考慮して、それらノード群のグラフデータ構造202への追加を行っていく。
また、ランタイムライブラリ200は、あるノードの実行が完了すると、このノードをグラフデータ構造202から削除すると共に、このノードを先行ノードとし、かつ、その他に先行ノードがないか、または、その他の先行ノードがすべて完了している後続ノードの有無を調べて、この条件を満たす後続ノードが存在したら、そのノードをいずれかのコア11に割り当てる。
このランタイムライブラリ200の働きにより、並列実行制御記述102に基づく複数の直列基本モジュール101の並列実行が矛盾無く進められていく。ランタイムライブラリ200は、直列基本モジュール101の実行完了後に排他的に呼び出され、入出力のチェック、グラフデータのアップデート、次に実行すべき直列基本モジュール101の選択までを行ってリターンする。コア11上では、選択された直列基本モジュール101を実行する。別のコアが次々とランタイムライブラリ200を呼び出して、次に実行すべき直列基本モジュール101を得てこれを実行する。スレッド間の排他制御は、ランタイムライブラリ200による、グラフデータ構造202からのノードの選択と、当該グラフデータ構造の更新とのみに止まるので(図7参照)、図3に示した一般的なマルチスレッド処理と比較して、高い並列性能を得ることを実現する。
そして、このように、非同期に実行可能な処理単位にプログラムを分割することで、複数の直列基本モジュール101を作成し、ランタイムライブラリ200によって、これら複数の直列基本モジュール101を複数のコア11に順序良く割り当てる本コンピュータ1では、プログラム実行時にソースコードを書き換えることなく、直列基本モジュール101が入力データを上書きしてしまう問題を検出する仕組みを提供する。また、本コンピュータ1は、複数のコア11から同一の直列基本モジュール101を同時に呼び出す場合に、リエントランス性があることをチェックする仕組みを提供する。以下、この仕組みについて詳述する。
図8は、ランタイムライブラリ200の機能ブロック図である。
ランタイムライブラリ200は、図8に示すように、ノード生成部210、グラフ構造解釈実行エンジン220および並列処理検証部230を有している。
前述した、本ランタイムライブラリ200による、グラフデータ構造生成情報201に基づくグラフデータ構造202の動的な生成・更新と、このグラフデータ構造202を用いたノードのコア11への割り当て制御とは、ノード生成部210およびグラフ構造解釈実行エンジン220によって実現されている。そして、並列処理検証部230が、このノード生成部210およびグラフ構造解釈実行エンジン220によって実現される並列処理の検証を実施する。
図9は、並列プログラムが動作する時のメモリモデルを示している。プログラムを並列動作させるには、並列動作する処理が独立な関係を保つ必要がある。グラフベースの並列処理では、入力データとなる先行ノードの実行結果は、リードオンリー、即ち、書き換え不可能な領域として管理する。また、直列基本モジュール101で値を書き込む領域は、結果出力用のバッファのみである。こうすることによって、直列基本モジュール101の実行は、入力データのみによって結果が決まるものとなり、他の直列基本モジュール101の動作と干渉しないようにできるからである。
しかし、このような制約を設けたとしても、直列基本モジュール101の実装を、性能を達成するためにC言語やC++言語で記述すると、コンパイラで、この制約をチェックすることができない。また、プログラムローダにより、アドレス空間の割り当ての違いでリードオンリーセクションにデータを割り当てることができるが、先行ノードの直列基本モジュール101が結果を書き込むため、単純なハードウェアによるプロテクションだけでは十分でない。
そこで、ランタイムライブラリ200の並列処理検証部230は、第1に、直列基本モジュール101の実行途中で、入力データの変化がなかったことをチェックする。より具体的には、図10に示すように、各直列基本モジュール101の実行前に、入力となる先行ノードの実行結果を作業メモリに退避しておき、当該直列基本モジュール101の実行が終わった時点で、元の入力データと、この退避したデータの比較を行い、入力データに変化がないことをチェックする。ランタイムライブラリ200は、すべての並列プログラムに共通に使える部分であるため、並列プログラムを実装する度に、このようなチェックコードをソースコードに埋め込む手間が省けるため、開発効率の向上になる。また、テストコードの実装漏れを防ぐことができるため、網羅的なテストが可能となり、信頼性の高いプログラムを作成できる。
また、ランタイムライブラリ200の並列処理検証部230は、入力データの変化をモニタリングするだけでなく、第2に、直列基本モジュール101のリエントランス性(スレッドセーフでもある)のチェックを行う。より具体的には、図11に示すように、各直列基本モジュール101の実行時に、結果出力用のバッファ(オブジェクトとみなすことも可能)を2つ準備し、同じ入力に対して、同時に直列基本モジュール101を実行し、この2つの結果を比較する。結果が一致した場合は、どちらか1つの結果を破棄して、処理を継続する。これにより、テストがパスする限り、中断なく検証作業を進められる。
なお、図10に示した入力データの変化がなかったことのチェックと、図11に示したリエントランス性のチェックとは、同時進行させることも可能である。この場合、図12に示すように、各直列基本モジュール101の実行前に、入力となる先行ノードの実行結果を作業メモリに退避しておくと共に、結果出力用のバッファを2つ準備し、元の入力データと退避したデータとを各々入力とする直列基本モジュール101を実行する。これにより、その実行後、元の入力データと、この退避したデータの比較を行うことで、入力データに変化がないことをチェックすることができ、また、2つの結果を比較することで、リエントランス性をチェックすることができる。
図13は、本コンピュータが実行する並列処理検証の第1の動作の流れを示すフローチャートである。
ランタイムライブラリ200の並列処理検証部230は、各直列基本モジュール101の実行前に、全ての入力について作業メモリへデータを退避する(ステップA1)。
このデータの退避後、並列処理検証部230は、当該直列基本モジュール101を実行させ(ステップA2)、その実行後に、元の入力と退避したデータとが全て一致しているかどうかを調べる(ステップA3)。そして、不一致が検出されたら(ステップA3のNO)、並列処理検証部230は、例えば警告メッセージを表示して当該プログラムの実行を強制終了させる等のエラー処理を実行する(ステップA4)。
また、図14は、本コンピュータが実行する並列処理検証の第2の動作の流れを示すフローチャートである。
ランタイムライブラリ200の並列処理検証部230は、各直列基本モジュール101の実行時に、もう1つの結果出力用のバッファを確保し(ステップB1)、当該直列基本モジュール101を2つ実行させる(ステップB2)。
その実行後、並列処理検証部230は、これら2つの結果が一致しているかどうかを調べ(ステップB3)、不一致が検出されたら(ステップB3のNO)、並列処理検証部230は、例えば警告メッセージを表示して当該プログラムの実行を強制終了させる等のエラー処理を実行する(ステップB4)。また、一致が確認されたら(ステップB3のYES)、並列処理検証部230は、どちらか1つの結果を開放し(ステップB5)、当該プログラムの実行を継続する。
このように、本コンピュータは、ランタイムライブラリ200に、並列処理の検証を実施する並列処理検証部230を搭載することにより、並列処理するプログラムにおける動作検証の低コスト化が実現される。
なお、以上では、直列基本モジュール101の入力データの上書きチェックと、直列基本モジュール101のリエントラント性のチェックとを行う例を示したが、さらに、並列処理による潜在的なタイミング問題を早期に発見するための仕組みを並列処理検証部230に持たせることも有効である。
例えば、図15に示すような、各直列基本モジュール101の平均実行時間を保持するためのテーブルを管理し、図16に示すような手順で、(平均実行時間から導き出される適正な範囲内で)各直列基本モジュール101の実行タイミングを遅延させるためのランダムな待ち時間を挿入する機能を並列処理検証部230が備えることにより、タイミング問題による不具合発生時の問題箇所特定のための仕組みを提供できる。
このように、本発明は上記実施形態そのままに限定されるものではなく、実施段階ではその要旨を逸脱しない範囲で構成要素を変形して具体化できる。また、上記実施形態に開示されている複数の構成要素の適宜な組み合わせにより、種々の発明を形成できる。例えば、実施形態に示される全構成要素から幾つかの構成要素を削除してもよい。さらに、異なる実施形態にわたる構成要素を適宜組み合わせてもよい。
1…プロセッサ、2…主メモリ、3…ハードディスク駆動装置(HDD)、11…コア、100…実行プログラム、101…直列基本モジュール、102…並列実行制御記述、200…ランタイムライブラリ、201…グラフデータ構造生成情報、202…グラフデータ構造、210…ノード生成部、220…グラフ構造解釈実行エンジン、230…並列処理検証部。
Claims (11)
- 複数の実行ユニットと、
前記複数の実行ユニットから共有されるシステムメモリと、
他のモジュールと非同期に実行可能な複数の基本モジュールに分割され、当該複数の基本モジュールの実行順序の制約が定義されるプログラムを、前記複数の実行ユニットによって並列実行するために、前記実行順序の制約に基づき、前記複数の実行ユニットに対する前記複数の基本モジュールの割り当てを制御するスケジューラと、
を具備し、
前記スケジューラは、
前記複数の実行ユニットのそれぞれについて、前記基本モジュールの実行前に、その基本モジュールの入力データとして各実行ユニットが入力する前記システムメモリ上の領域のデータを当該システムメモリ上の他の領域に複製して退避させ、前記基本モジュールの実行後に、各実行ユニットがアクセスした前記システムメモリ上の領域のデータと、当該システムメモリ上の他の領域に退避させたデータとを比較する検証手段を有することを特徴とする情報処理装置。 - 前記検証手段は、各実行ユニットが入力した前記システムメモリ上の領域のデータと、当該システムメモリ上の他の領域に退避させたデータとの値が異なっていた場合、その旨を報知する手段を含むことを特徴とする請求項1記載の情報処理装置。
- 前記検証手段は、前記複数の実行ユニットのそれぞれについて、前記基本モジュールの実行時に、前記システムメモリ上の他の領域に退避させたデータを入力データとする前記基本モジュールと同一の基本モジュールを他の実行ユニットに割り当てて別途実行させ、前記2つの同一の基本モジュールの実行後に、当該2つの基本モジュールの出力データとして各実行ユニットが出力した前記システムメモリ上の2つの領域のデータを比較する手段を含むことを特徴とする請求項1記載の情報処理装置。
- 前記検証手段を機能させるか否かを設定する設定手段をさらに具備することを特徴とする請求項1記載の情報処理装置。
- 複数の実行ユニットと、
前記複数の実行ユニットから共有されるシステムメモリと、
他のモジュールと非同期に実行可能な複数の基本モジュールに分割され、当該複数の基本モジュールの実行順序の制約が定義されるプログラムを、前記複数の実行ユニットによって並列実行するために、前記実行順序の制約に基づき、前記複数の実行ユニットに対する前記複数の基本モジュールの割り当てを制御するスケジューラと、
を具備し、
前記スケジューラは、
前記複数の実行ユニットのそれぞれについて、前記基本モジュールの実行時に、その基本モジュールの入力データとして各実行ユニットが入力する前記システムメモリ上の領域のデータを同じく入力データとする前記基本モジュールと同一の基本モジュールを他の実行ユニットに割り当てて別途実行させ、前記2つの同一の基本モジュールの実行後に、当該2つの基本モジュールの出力データとして各実行ユニットが出力した前記システムメモリ上の2つの領域のデータを比較する検証手段を有することを特徴とする情報処理装置。 - 前記検証手段は、各実行ユニットが出力した前記システムメモリ上の2つの領域のデータの値が異なっていた場合、その旨を報知する手段を含むことを特徴とする請求項5記載の情報処理装置。
- 前記検証手段を機能させるか否かを設定する設定手段をさらに具備することを特徴とする請求項5記載の情報処理装置。
- 複数の実行ユニットと、
他のモジュールと非同期に実行可能な複数の基本モジュールに分割され、当該複数の基本モジュールの実行順序の制約が定義されるプログラムを、前記複数の実行ユニットによって並列実行するために、前記実行順序の制約に基づき、前記複数の実行ユニットに対する前記複数の基本モジュールの割り当てを制御するスケジューラと、
を具備し、
前記スケジューラは、
前記複数の基本モジュールそれぞれの前記複数の実行ユニットによる平均実行時間を計測する計測手段と、
前記基本モジュールの実行前に、前記計測手段が計測した当該基本モジュールの平均実行時間を用いて、当該基本モジュールの実行開始を遅延させる時間を無作為に算出し、この時間分、当該基本モジュールの実行開始を遅延させる検証手段を有することを特徴とする情報処理装置。 - 複数の実行ユニットと、前記複数の実行ユニットから共有されるシステムメモリと、他のモジュールと非同期に実行可能な複数の基本モジュールに分割され、当該複数の基本モジュールの実行順序の制約が定義されるプログラムを、前記複数の実行ユニットによって並列実行するために、前記実行順序の制約に基づき、前記複数の実行ユニットに対する前記複数の基本モジュールの割り当てを制御するスケジューラとを具備する情報処理装置におけるプログラムの検証方法であって、
前記スケジューラが、
前記複数の実行ユニットのそれぞれについて、前記基本モジュールの実行前に、その基本モジュールの入力データとして各実行ユニットが入力する前記システムメモリ上の領域のデータを当該システムメモリ上の他の領域に複製して退避させ、前記基本モジュールの実行後に、各実行ユニットがアクセスした前記システムメモリ上の領域のデータと、当該システムメモリ上の他の領域に退避させたデータとを比較することを特徴とするプログラムの検証方法。 - 複数の実行ユニットと、前記複数の実行ユニットから共有されるシステムメモリと、他のモジュールと非同期に実行可能な複数の基本モジュールに分割され、当該複数の基本モジュールの実行順序の制約が定義されるプログラムを、前記複数の実行ユニットによって並列実行するために、前記実行順序の制約に基づき、前記複数の実行ユニットに対する前記複数の基本モジュールの割り当てを制御するスケジューラとを具備する情報処理装置におけるプログラムの検証方法であって、
前記スケジューラが、
前記複数の実行ユニットのそれぞれについて、前記基本モジュールの実行時に、その基本モジュールの入力データとして各実行ユニットが入力する前記システムメモリ上の領域のデータを同じく入力データとする前記基本モジュールと同一の基本モジュールを他の実行ユニットに割り当てて別途実行させ、前記2つの同一の基本モジュールの実行後に、当該2つの基本モジュールの出力データとして各実行ユニットが出力した前記システムメモリ上の2つの領域のデータを比較することを特徴とするプログラムの検証方法。 - 複数の実行ユニットと、他のモジュールと非同期に実行可能な複数の基本モジュールに分割され、当該複数の基本モジュールの実行順序の制約が定義されるプログラムを、前記複数の実行ユニットによって並列実行するために、前記実行順序の制約に基づき、前記複数の実行ユニットに対する前記複数の基本モジュールの割り当てを制御するスケジューラとを具備する情報処理装置におけるプログラムの検証方法であって、
前記スケジューラが、
前記複数の基本モジュールそれぞれの前記複数の実行ユニットによる平均実行時間を計測し、
前記基本モジュールの実行前に、前記計測手段が計測した当該基本モジュールの平均実行時間を用いて、当該基本モジュールの実行開始を遅延させる時間を無作為に算出し、この時間分、当該基本モジュールの実行開始を遅延させる、
ことを特徴とするプログラムの検証方法。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2008086933A JP2009238176A (ja) | 2008-03-28 | 2008-03-28 | 情報処理装置およびプログラムの検証方法 |
US12/397,127 US20090249132A1 (en) | 2008-03-28 | 2009-03-03 | Data Processing Apparatus and Method of Verifying Programs |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2008086933A JP2009238176A (ja) | 2008-03-28 | 2008-03-28 | 情報処理装置およびプログラムの検証方法 |
Related Child Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2010044396A Division JP5017396B2 (ja) | 2010-03-01 | 2010-03-01 | 情報処理装置およびプログラムの検証方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2009238176A true JP2009238176A (ja) | 2009-10-15 |
Family
ID=41118979
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2008086933A Pending JP2009238176A (ja) | 2008-03-28 | 2008-03-28 | 情報処理装置およびプログラムの検証方法 |
Country Status (2)
Country | Link |
---|---|
US (1) | US20090249132A1 (ja) |
JP (1) | JP2009238176A (ja) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2011118014A1 (ja) * | 2010-03-25 | 2011-09-29 | 富士通株式会社 | 検証支援プログラム、制御プログラム、検証支援装置、マルチコアプロセッサシステム、検証支援方法、および制御方法 |
JP2016114998A (ja) * | 2014-12-11 | 2016-06-23 | 株式会社リコー | 動作検証装置、動作検証方法及び動作検証プログラム |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102736939B (zh) * | 2012-06-25 | 2014-07-30 | 腾讯科技(深圳)有限公司 | 一种软件安装方法、装置和系统 |
Family Cites Families (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5799142A (en) * | 1994-09-12 | 1998-08-25 | Nec Corporation | Debugging method and debugging system for multi-task programs |
JP3780732B2 (ja) * | 1999-03-10 | 2006-05-31 | 株式会社日立製作所 | 分散制御システム |
US6685567B2 (en) * | 2001-08-08 | 2004-02-03 | Igt | Process verification |
US8117640B1 (en) * | 2005-02-23 | 2012-02-14 | Mark Moriconi | Systems and methods for analyzing application security policies |
JP4712583B2 (ja) * | 2006-03-20 | 2011-06-29 | 富士通株式会社 | ソフトウェア検証プログラム、ソフトウェア検証装置、ソフトウェア検証方法 |
-
2008
- 2008-03-28 JP JP2008086933A patent/JP2009238176A/ja active Pending
-
2009
- 2009-03-03 US US12/397,127 patent/US20090249132A1/en not_active Abandoned
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2011118014A1 (ja) * | 2010-03-25 | 2011-09-29 | 富士通株式会社 | 検証支援プログラム、制御プログラム、検証支援装置、マルチコアプロセッサシステム、検証支援方法、および制御方法 |
JP5423876B2 (ja) * | 2010-03-25 | 2014-02-19 | 富士通株式会社 | 検証支援プログラム、検証支援装置、および検証支援方法 |
JP2016114998A (ja) * | 2014-12-11 | 2016-06-23 | 株式会社リコー | 動作検証装置、動作検証方法及び動作検証プログラム |
Also Published As
Publication number | Publication date |
---|---|
US20090249132A1 (en) | 2009-10-01 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US20110145643A1 (en) | Reproducible test framework for randomized stress test | |
JP4667206B2 (ja) | マルチコアモデルシミュレーションプログラム、該プログラムを記録した記録媒体、マルチコアモデルシミュレータ、およびマルチコアモデルシミュレーション方法 | |
US9990458B2 (en) | Generic design rule checking (DRC) test case extraction | |
US8875064B2 (en) | Automated design rule checking (DRC) test case generation | |
JP7088897B2 (ja) | データアクセス方法、データアクセス装置、機器及び記憶媒体 | |
US7788672B2 (en) | System for controlling assignment of a plurality of modules of a program to available execution units based on speculative executing and granularity adjusting | |
US8595726B2 (en) | Apparatus and method for parallel processing | |
JP2008009721A (ja) | 評価システム及びその評価方法 | |
US8762781B2 (en) | Method and apparatus useful in manufacturing test case operations | |
JP2009238176A (ja) | 情報処理装置およびプログラムの検証方法 | |
JP6567212B2 (ja) | 等価性検証装置および等価性検証プログラム | |
JP2009080583A (ja) | 情報処理装置、並列処理最適化方法およびプログラム | |
US10198784B2 (en) | Capturing commands in a multi-engine graphics processing unit | |
US20070079109A1 (en) | Simulation apparatus and simulation method | |
JP5017396B2 (ja) | 情報処理装置およびプログラムの検証方法 | |
US9038077B1 (en) | Data transfer protection in a multi-tasking modeling environment | |
US11544436B1 (en) | Hardware-software interaction testing using formal verification | |
CN113342698A (zh) | 一种测试环境调度方法、计算设备及存储介质 | |
CN113886741A (zh) | 用于对公式进行排版的方法及其相关产品 | |
JP7274063B2 (ja) | テストケース生成装置、テストケース生成方法及びテストケース生成プログラム | |
JP2011034517A (ja) | 等価性検証装置、そのデータ処理方法、およびプログラム | |
JP6807721B2 (ja) | 状態遷移編集装置および状態遷移編集プログラム | |
JP4681669B2 (ja) | 要求内容抽出プログラム、要求内容抽出方法および要求内容抽出装置 | |
JP6289235B2 (ja) | ソフトウェア生成方法、ソフトウェア生成装置及びソフトウェア実行装置 | |
JP2021057061A (ja) | 状態遷移編集装置および状態遷移編集プログラム |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20090714 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20090911 |
|
A02 | Decision of refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A02 Effective date: 20091201 |