JP5017396B2 - 情報処理装置およびプログラムの検証方法 - Google Patents

情報処理装置およびプログラムの検証方法 Download PDF

Info

Publication number
JP5017396B2
JP5017396B2 JP2010044396A JP2010044396A JP5017396B2 JP 5017396 B2 JP5017396 B2 JP 5017396B2 JP 2010044396 A JP2010044396 A JP 2010044396A JP 2010044396 A JP2010044396 A JP 2010044396A JP 5017396 B2 JP5017396 B2 JP 5017396B2
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.)
Expired - Fee Related
Application number
JP2010044396A
Other languages
English (en)
Other versions
JP2010118082A (ja
Inventor
隆二 境
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/ja
Publication of JP2010118082A publication Critical patent/JP2010118082A/ja
Application granted granted Critical
Publication of JP5017396B2 publication Critical patent/JP5017396B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Debugging And Monitoring (AREA)

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の動作を説明するための図。 本実施形態の情報処理装置上で動作するランタイムライブラリが実行する並列処理検証の第2の動作を説明するための図。 本実施形態の情報処理装置上で動作するランタイムライブラリが並列処理検証の第1および第2の動作を同時進行させる場合の例を説明するための図。 本実施形態の情報処理装置上で動作するランタイムライブラリが実行する並列処理検証の第1の動作の流れを示すフローチャート。 本実施形態の情報処理装置上で動作するランタイムライブラリが実行する並列処理検証の第2の動作の流れを示すフローチャート。 本実施形態の情報処理装置上で動作するランタイムライブラリが実行する並列処理検証の変形例を説明するための第1の図。 本実施形態の情報処理装置上で動作するランタイムライブラリが実行する並列処理検証の変形例を説明するための第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. 前記検証手段は、前記基本モジュールの入力データとして各実行ユニットが入力した前記システムメモリ上の領域のデータと、当該システムメモリ上の他の領域に退避させたデータとの値が異なっていた場合、その旨を報知する手段を含むことを特徴とする請求項1記載の情報処理装置。
  3. 前記検証手段は、前記基本モジュールを前記複数の実行ユニットの中のいずれかの実行ユニットに割り当てて実行させる時に、前記システムメモリ上の他の領域に退避させたデータを入力データとする前記基本モジュールと同一の基本モジュールを他の実行ユニットに割り当てて別途実行させ、前記2つの同一の基本モジュールの実行後に、当該2つの基本モジュールの出力データとして各実行ユニットが出力した前記システムメモリ上の2つの領域のデータを比較して、前記基本モジュールが同じ入力データに対して同じ出力データを得ていることを検証する手段を含むことを特徴とする請求項1記載の情報処理装置。
  4. 前記検証手段を機能させるか否かを設定する設定手段をさらに具備することを特徴とする請求項1記載の情報処理装置。
  5. 複数の実行ユニットと、
    前記複数の実行ユニットから共有されるシステムメモリと、
    先行する基本モジュールの出力データを入力データとし、かつ、他のモジュールとの同期を取る必要がない複数の基本モジュールに分割され、当該複数の基本モジュールの実行順序の制約が定義されるプログラムを、前記複数の実行ユニットによって並列実行するために、前記実行順序の制約に基づき、前記複数の実行ユニットに対する前記複数の基本モジュールの割り当てを制御するスケジューラと、
    を具備し、
    前記スケジューラは、
    前記基本モジュールを前記複数の実行ユニットの中のいずれかの実行ユニットに割り当てて実行させる時に、前記基本モジュールの入力データとして前記いずれかの実行ユニットが入力する前記システムメモリ上の領域のデータを同じく入力データとする前記基本モジュールと同一の基本モジュールを他の実行ユニットに割り当てて別途実行させ、前記2つの同一の基本モジュールの実行後に、当該2つの基本モジュールの出力データとして各実行ユニットが出力した前記システムメモリ上の2つの領域のデータを比較して、前記基本モジュールが同じ入力データに対して同じ出力データを得ていることを検証する検証手段を有することを特徴とする情報処理装置。
  6. 前記検証手段は、各実行ユニットが出力した前記システムメモリ上の2つの領域のデータの値が異なっていた場合、その旨を報知する手段を含むことを特徴とする請求項5記載の情報処理装置。
  7. 前記検証手段を機能させるか否かを設定する設定手段をさらに具備することを特徴とする請求項5記載の情報処理装置。
  8. 前記スケジューラは、
    前記複数の基本モジュールそれぞれの前記複数の実行ユニットによる平均実行時間を計測する計測手段をさらに有し、
    前記検証手段は、前記基本モジュールの実行前に、前記計測手段が計測した当該基本モジュールの平均実行時間を用いて、当該基本モジュールの実行開始を遅延させる時間を無作為に算出し、この時間分、当該基本モジュールの実行開始を遅延させる手段を含む、
    ことを特徴とする請求項1、3または5記載の情報処理装置。
  9. 複数の実行ユニットと、前記複数の実行ユニットから共有されるシステムメモリと、先行する基本モジュールの出力データを入力データとし、かつ、他のモジュールとの同期を取る必要がない複数の基本モジュールに分割され、当該複数の基本モジュールの実行順序の制約が定義されるプログラムを、前記複数の実行ユニットによって並列実行するために、前記実行順序の制約に基づき、前記複数の実行ユニットに対する前記複数の基本モジュールの割り当てを制御するスケジューラとを具備する情報処理装置におけるプログラムの検証方法であって、
    前記スケジューラが、
    前記複数の実行ユニットのそれぞれについて、前記基本モジュールの実行前に、前記基本モジュールの入力データとして各実行ユニットが入力する前記システムメモリ上の領域のデータを当該システムメモリ上の他の領域に複製して退避させ、前記基本モジュールの実行後に、前記基本モジュールの入力データとして各実行ユニットが入力した前記システムメモリ上の領域のデータと、当該システムメモリ上の他の領域に退避させたデータとを比較して、前記基本モジュールが入力データを上書きしていないことを検証する
    ことを特徴とするプログラムの検証方法。
  10. 複数の実行ユニットと、前記複数の実行ユニットから共有されるシステムメモリと、先行する基本モジュールの出力データを入力データとし、かつ、他のモジュールとの同期を取る必要がない複数の基本モジュールに分割され、当該複数の基本モジュールの実行順序の制約が定義されるプログラムを、前記複数の実行ユニットによって並列実行するために、前記実行順序の制約に基づき、前記複数の実行ユニットに対する前記複数の基本モジュールの割り当てを制御するスケジューラとを具備する情報処理装置におけるプログラムの検証方法であって、
    前記スケジューラが、
    前記基本モジュールを前記複数の実行ユニットの中のいずれかの実行ユニットに割り当てて実行させる時に、前記基本モジュールの入力データとして前記いずれかの実行ユニットが入力する前記システムメモリ上の領域のデータを同じく入力データとする前記基本モジュールと同一の基本モジュールを他の実行ユニットに割り当てて別途実行させ、前記2つの同一の基本モジュールの実行後に、当該2つの基本モジュールの出力データとして各実行ユニットが出力した前記システムメモリ上の2つの領域のデータを比較して、前記基本モジュールが同じ入力データに対して同じ出力データを得ていることを検証する
    ことを特徴とするプログラムの検証方法。
  11. 前記スケジューラが、
    さらに、
    前記複数の基本モジュールそれぞれの前記複数の実行ユニットによる平均実行時間を計測し、
    前記基本モジュールの実行前に、前記計測手段が計測した当該基本モジュールの平均実行時間を用いて、当該基本モジュールの実行開始を遅延させる時間を無作為に算出し、この時間分、当該基本モジュールの実行開始を遅延させる、
    ことを特徴とする請求項9または10記載のプログラムの検証方法。
JP2010044396A 2010-03-01 2010-03-01 情報処理装置およびプログラムの検証方法 Expired - Fee Related JP5017396B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2010044396A JP5017396B2 (ja) 2010-03-01 2010-03-01 情報処理装置およびプログラムの検証方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2010044396A JP5017396B2 (ja) 2010-03-01 2010-03-01 情報処理装置およびプログラムの検証方法

Related Parent Applications (1)

Application Number Title Priority Date Filing Date
JP2008086933A Division JP2009238176A (ja) 2008-03-28 2008-03-28 情報処理装置およびプログラムの検証方法

Publications (2)

Publication Number Publication Date
JP2010118082A JP2010118082A (ja) 2010-05-27
JP5017396B2 true JP5017396B2 (ja) 2012-09-05

Family

ID=42305673

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2010044396A Expired - Fee Related JP5017396B2 (ja) 2010-03-01 2010-03-01 情報処理装置およびプログラムの検証方法

Country Status (1)

Country Link
JP (1) JP5017396B2 (ja)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN117539705A (zh) * 2024-01-10 2024-02-09 深圳鲲云信息科技有限公司 片上系统的验证方法、装置、系统及电子设备

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0883195A (ja) * 1994-09-14 1996-03-26 Toshiba Corp 並行プログラム検証装置
JP3675623B2 (ja) * 1997-10-31 2005-07-27 株式会社東芝 プログラム開発支援装置及び方法並びにプログラム開発支援用ソフトウェアを記録した記録媒体
JP4712583B2 (ja) * 2006-03-20 2011-06-29 富士通株式会社 ソフトウェア検証プログラム、ソフトウェア検証装置、ソフトウェア検証方法

Also Published As

Publication number Publication date
JP2010118082A (ja) 2010-05-27

Similar Documents

Publication Publication Date Title
US20110145643A1 (en) Reproducible test framework for randomized stress test
US9996394B2 (en) Scheduling accelerator tasks on accelerators using graphs
US9836354B1 (en) Automated error detection and recovery for GPU computations in a service environment
JP4667206B2 (ja) マルチコアモデルシミュレーションプログラム、該プログラムを記録した記録媒体、マルチコアモデルシミュレータ、およびマルチコアモデルシミュレーション方法
US9990458B2 (en) Generic design rule checking (DRC) test case extraction
US8875064B2 (en) Automated design rule checking (DRC) test case generation
JP7088897B2 (ja) データアクセス方法、データアクセス装置、機器及び記憶媒体
US10067710B2 (en) Detecting buffer overflows in general-purpose GPU applications
JP2010009395A (ja) 情報処理装置、粒度調整方法およびプログラム
JP2009157684A (ja) 仮想化プログラム、シミュレーション装置、仮想化方法
US9396095B2 (en) Software verification
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
JP2009238176A (ja) 情報処理装置およびプログラムの検証方法
JP5017396B2 (ja) 情報処理装置およびプログラムの検証方法
Welton et al. Exposing hidden performance opportunities in high performance GPU applications
US10929584B1 (en) Environmental modification testing for design correctness with formal verification
WO2018154657A1 (ja) 等価性検証装置および等価性検証プログラム
US20070079109A1 (en) Simulation apparatus and simulation method
CN113342698A (zh) 一种测试环境调度方法、计算设备及存储介质
WO2022176027A1 (ja) テストケース生成装置、テストケース生成方法及びテストケース生成プログラム
KR101225577B1 (ko) 어셈블리 언어 코드의 분석 장치 및 방법
JP6807721B2 (ja) 状態遷移編集装置および状態遷移編集プログラム
JP6289235B2 (ja) ソフトウェア生成方法、ソフトウェア生成装置及びソフトウェア実行装置
Pinto et al. Maximizing efficiency in Reference model based verification of 2D Graphics Engine

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