JP4983238B2 - 模擬ソースプログラム生成プログラム及び装置、並びに情報処理方法 - Google Patents

模擬ソースプログラム生成プログラム及び装置、並びに情報処理方法 Download PDF

Info

Publication number
JP4983238B2
JP4983238B2 JP2006334031A JP2006334031A JP4983238B2 JP 4983238 B2 JP4983238 B2 JP 4983238B2 JP 2006334031 A JP2006334031 A JP 2006334031A JP 2006334031 A JP2006334031 A JP 2006334031A JP 4983238 B2 JP4983238 B2 JP 4983238B2
Authority
JP
Japan
Prior art keywords
communication
storage unit
program
communication history
history 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.)
Expired - Fee Related
Application number
JP2006334031A
Other languages
English (en)
Other versions
JP2008146426A (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.)
Fujitsu Ltd
Original Assignee
Fujitsu Ltd
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 Fujitsu Ltd filed Critical Fujitsu Ltd
Priority to JP2006334031A priority Critical patent/JP4983238B2/ja
Priority to US11/903,961 priority patent/US20080141223A1/en
Publication of JP2008146426A publication Critical patent/JP2008146426A/ja
Application granted granted Critical
Publication of JP4983238B2 publication Critical patent/JP4983238B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • G06F8/45Exploiting coarse grain parallelism in compilation, i.e. parallelism between groups of instructions
    • G06F8/456Parallelism detection

Landscapes

  • Engineering & Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Debugging And Monitoring (AREA)

Description

本発明は、並列処理プログラムの挙動解析及び性能改善のための技術に関する。
並列処理プログラムでは、複数のプロセスが互いにデータのやりとりを行いながら、処理が進んでゆく。従って、並列処理プログラムの挙動解析や性能改善を行うためには、プロセス間でどのように通信が行われていたのかを理解する必要がある。
従来から、並列処理プログラムの実行時の挙動を把握する技術として、並列処理プログラム実行中に通信履歴を採取して、その履歴をグラフィカルに表示する技術が存在している。このような技術を用いれば、並列処理プログラムのどこでどのような問題が発生しているのかを特定でき、並列処理プログラムの改善に役立つ。
しかし、問題点が分かったとしても、そもそもプログラム修正は簡単ではない。さらに、並列処理プログラムの修正は逐次プログラムの修正よりも困難である。また、問題点の修正方法は1種類とは限られず、様々なアプローチが存在するのが通常であるが、その全てのアプローチを試すのは、並列処理プログラムの修正が困難であることを考えると、現実的ではない。仮に全ての修正方法を試したとしても、最終的に採用される修正方法は1種類であり、採用されなかった修正方法に要した時間は無駄となるので、作業効率が悪い。
また、例えば、特開平6−59939号公報には、アプリケーション実行時の各種の情報をトレース情報として蓄積しておき、そのトレース情報を元にシミュレーションを行う技術が開示されている。具体的には、複数のプロセッサからなり、メッセージ通信を基本とした並列計算機において、ユーザプログラムの実行時に、メッセージ送信開始時刻、メッセージ送信終了時刻、送信メッセージの送信先、サイズ、メッセージ受信開始時刻、メッセージ受信終了時刻、受信メッセージの送信元、サイズ、バリア同期開始時刻、バリア同期終了時刻等をトレース情報として蓄積し、そのトレース情報をシミュレータの実行諸元に基づいて書き換え、通信時間、或いは、通信以外の演算時間等を求めて、並列計算機の性能を評価するように構成する。しかしながら、並列処理の模擬ソースプログラムの生成については触れられていない。
さらに、特開2001−154998号公報には、並列化指示手順を提供し、解析モデルに対して、解析作業者に並列化したい個所を指示してもらい、並列化連成解析プログラム生成手順により、並列化連成解析プログラムを自動生成し、その並列化連成解析プログラムを実行する並列化汎用連成解析装置を提供することで、並列化した解析を行う技術が開示されている。しかし、人手による修正を前提とする模擬ソースプログラムの生成については考慮されていない。
また、特開平4−225439号公報には、複数のプロセスの並列動作時のログ/サンプリングデータを解析して出力する解析技術であって、並列計算プログラムの本来の実行の様子を変化させないで、デバッグ/チューニングに必要なログやサンプリングデータの量を少なくすると共に、出力装置の使用量や実行後解析に要する時間を低減するための技術が開示されている。具体的には、複数のプロセス間で一斉同期しつつ並列計算実行中に、各プロセスの予め指定したイベントのときにローカルログをそれぞれ採取しておき、あるいは予め指定したサンプリング時間間隔でローカルサンプリングデータをそれぞれ採取しておき、一斉同期時にこれら採取したローカルログあるいはローカルサンプリングデータを解析して必要なログあるいはサンプリングデータのみを出力するものである。しかし、人手による修正を前提とする模擬ソースプログラムの生成については考慮されていない。
特開平6−59939号公報 特開2001−154998号公報 特開平4−225439号公報
以上述べたような従来技術では、複数存在する修正方法の各々について性能改善効果を高精度で見積もるための技術は開示されておらず、並列処理プログラムの修正を効率よく行えるわけではない。
従って、本発明の目的は、並列処理プログラムの動作を擬似的に再現するためのソースプログラムを生成することである。
また、本発明の他の目的は、並列処理プログラムに対する各修正方法について性能改善効果を簡単且つ高精度で見積もることができるようにするための技術を提供することである。
さらに、本発明の他の目的は、並列処理プログラムの修正を効率よく行うことができるようにするための技術を提供することである。
本発明に係る情報処理方法は、並列処理プログラムによる複数のプロセス間における通信履歴データを格納する通信履歴データ格納部に格納された通信履歴データを用いて、各プロセスについて、通信時間以外の実行時間を特定して、当該実行時間だけCPU時間を消費するCPU時間消費関数を生成し、模擬ソースプログラム格納部に格納する第1生成ステップと、通信履歴データ格納部に格納された通信履歴データを用いて、各プロセスについて、当該通信履歴データが示す通信処理を行う通信関数を生成し、模擬ソースプログラム格納部に格納する第2生成ステップとを含む。
このように模擬ソースプログラム格納部に格納された関数で構成される模擬ソースプログラムを用いれば、並列処理プログラムの動作を擬似的に再現できる。このため、修正の簡単な模擬ソースプログラムを用いて様々な修正方法を試してみることができ、性能改善効果をそれぞれの修正方法について高精度で見積もることができるようになる。
上で述べた第1生成ステップが、通信履歴データに含まれる特定のエントリの開始時刻と、特定のエントリの1つ前のエントリの終了時刻との差から通信時間以外の実行時間を特定するステップを含むようにしてもよい。
さらに、上で述べた第2生成ステップが、通信履歴データに含まれる特定のエントリの通信パラメータを特定するステップと、特定された通信パラメータを含む通信関数を生成し、模擬ソースプログラム格納部に格納するステップとを含むようにしてもよい。
さらに、本発明に係る情報処理方法は、模擬ソースプログラム格納部に格納された模擬ソースプログラムに対する修正を受け付け、模擬ソースプログラム格納部に修正後の模擬ソースプログラムを修正模擬ソースプログラムとして格納するステップと、模擬ソースプログラム格納部に格納されている修正模擬ソースプログラムをコンパイルして、修正模擬プログラムを生成するステップと、修正模擬プログラムを実行して実行時間を測定するステップとをさらに含むようにしてもよい。このようにすれば、実行時間が短い修正方法を特定して、実際の並列処理プログラムの修正を行うことができるため、並列処理プログラムの修正を効率よく行うことができるようになる。
なお、本情報処理方法をコンピュータに実行させるためのプログラムを作成することができ、このプログラムは、例えばフレキシブルディスク、CD−ROM、光磁気ディスク、半導体メモリ、ハードディスク等の記憶媒体又は記憶装置に格納される。また、ネットワークなどを介してデジタル信号として配信される場合もある。尚、中間的な処理結果はメインメモリ等の記憶装置に一時保管される。
本発明によれば、並列処理プログラムに対する各修正方法について性能改善効果を簡単且つ高精度で見積もることができるようになる。
また、本発明の他の側面によれば、並列処理プログラムの修正を効率よく行うことができるようになる。
図1に本発明の一実施の形態に係るシステム概要図を示す。本実施の形態のシステムは、前処理部100と模擬処理部200とを有する。前処理部100は、並列処理プログラムであるオリジナルアプリケーション101と以下で述べるような実行ログを生成するための測定用ライブラリ102とをリンクして、実行ログを生成することができる並列処理プログラムのオリジナルアプリケーション103を生成する。オリジナルアプリケーション103は、EXE形式(実行可能な形式)のプログラムである。
模擬処理部200は、オリジナルアプリケーション103を試験実行することによって生成される実行ログ(具体的に通信履歴データ)を蓄積する実行ログ格納部201(通信履歴データ格納部とも呼ぶ)と、実行ログ格納部201に格納されている実行ログから模擬ソースプログラム2031を生成する模擬コードジェネレータ202と、模擬コードジェネレータ202が生成した模擬ソースプログラム2031を格納する模擬ソースプログラム格納部203と、模擬ソースプログラム2031と当該模擬ソースプログラム2031をEXE形式に変換する際に必要となる任意のライブラリ204とを用いてコンパイル及びリンクを行って生成された試験用模擬アプリケーション2051(EXE形式)を格納する試験用模擬アプリケーション格納部205と、試験用模擬アプリケーション2051を試験実行して測定した測定結果を格納する測定結果格納部206とを有する。なお、明示的には図示していないが、模擬処理部200には、並列処理プログラム用のコンパイラを含むようにしても良い。同様に、模擬ソースプログラム2031については、ユーザによって修正が加えられるが、ユーザの修正を支援するツールやエディタ等を含む場合もある。
模擬処理部200は、並列コンピュータによって試験実行されたオリジナルアプリケーション103の実行ログを取得して、実行ログ格納部201に格納する。模擬処理部200の模擬コードジェネレータ202は、実行ログ格納部201に格納されている実行ログを用いて模擬ソースプログラム2031を生成し、擬似ソースプログラム格納部203に格納する。模擬ソースプログラム2031は、以下で詳細に述べるが、オリジナルアプリケーション103の動作と同様の動作を簡略化した形で実現させるためのプログラムであり、オリジナルアプリケーション103の代わりに模擬ソースプログラム2031を可能な修正方法で修正して、当該修正方法の性能改善効果を試すためのものである。従って、模擬ソースプログラム格納部203に格納されている模擬ソースプログラム2031は、ユーザによって修正される。修正後の模擬ソースプログラム2031は、任意のライブラリ204とリンクされコンパイルされる。コンパイルの結果として生成される試験用模擬アプリケーション2051は、試験用模擬アプリケーション格納部205に格納される。その後、試験用模擬アプリケーション2051は、並列コンピュータによって実行され、同時に実行時間が測定されて、測定結果格納部206に格納される。この測定結果格納部206に格納されている実行時間によって、ユーザが行った修正方法が効果的であるかを判断することができる。すなわち実行時間が著しく短くなっていれば、より効果的であり、短くなっていなければ効果的とは言えない修正方法ということが分かる。修正方法が効果的ではない場合には、再度模擬ソースプログラム2031の修正に戻る。
効果的な修正方法であることが確認できれば、ユーザは、実施した修正方法に応じて実際に並列処理プログラムのソースコードの修正を行う。なお、模擬ソースプログラム2031の修正は簡単に行うことができるが、並列処理プログラムのソースコードの修正は、非常に困難であるから、実施すべき修正方法を実現できない場合もある。そのような場合には、他の効果的な修正方法を探すこととなる。
次に、図2に実行ログ格納部201に格納されるデータの一例を示す。図2の例は、1つのプロセスについての実行ログを示している。図2の例では、第1行目に採取開始時刻が記録されており、最終行(第8行)に採取終了時刻が記録されている。第2行目乃至第7行目には、通信関数名(func_name)と、開始時刻(stime)と、終了時刻(etime)と、各種パラメータ(params[]。例えば通信データ量と宛先プロセスID。)とが登録されている。本実施の形態では、データを送信するMPI_Send関数と、データを受信するMPI_Recv関数のいずれかが登録される。
このような実行ログを使用して、模擬コードジェネレータ202は、図3に示すような処理を実行することによって、模擬ソースプログラム2031を生成する。まず、実行ログ格納部201に格納されている採取開始時刻(stime0)と採取終了時刻(etime0)を取得し、変数curtimeにstime0を代入する(ステップS1)。次に、実行ログ格納部201から次の1エントリ分のデータを取得する(ステップS3)。そして、取得したエントリが有効であるか判断する(ステップS5)。より具体的には、取得したエントリが、通信関数であるか判断する。取得したエントリが有効である場合には、該当エントリの開始時刻(stime)と変数curtimeの差分を計算し、CPU時間を差分時間だけ消費するCPU時間消費関数を生成し、模擬ソースプログラム格納部203に格納する(ステップS7)。そして、該当エントリから通信関数のパラメータを抽出し、抽出したパラメータを含み且つ該当エントリに係る通信関数を生成し、模擬ソースプログラム格納部203に格納する(ステップS9)。
また、該当エントリの終了時刻(etime)を変数curtimeに代入する(ステップS11)。そしてステップS3に戻る。
一方、エントリが無効であると判断された場合には、変数curtimeと採取終了時刻etime0の差分を計算し、CPU時間を当該差分時間だけ消費するCPU時間消費関数を生成し、模擬ソースプログラム格納部203に格納する(ステップS13)。そして処理を終了する。
このような処理を実施すれば、例えば図2のような実行ログから図4に示すような模擬ソースプログラム2031が生成される。まず、実行ログの第2行目の開始時刻stime=10と採取開始時刻stime0=0との差分10だけCPU時間を消費するCPU時間消費関数use_cputime(10)を生成し、模擬ソースプログラム格納部203に格納する。次に、実行ログの第2行目のパラメータ(128,1,...)を特定し、当該パラメータと実行ログの第2行目の通信関数MPI_Sendから、通信関数MPI_Send(128,1,...)を生成し、模擬ソースプログラム格納部203に格納する。ここでcurtimeに実行ログの第2行目の終了時刻etime=20を代入する。
さらに、実行ログの第3行目の開始時刻stime=30とcurtime=20との差分10だけCPU時間を消費するCPU時間消費関数use_cputime(10)を生成し、模擬ソースプログラム格納部203に格納する。次に、実行ログの第3行目のパラメータ(128,1,...)を特定し、当該パラメータと実行ログの第3行目の通信関数MPI_Recvから、通信関数MPI_Recv(128,1,...)を生成し、模擬ソースプログラム格納部203に格納する。ここでcurtimeに実行ログの第3行目の終了時刻etime=200を代入する。
さらに、実行ログの第4行目の開始時刻stime=220とcurtime=200との差分20だけCPU時間を消費するCPU時間消費関数use_cputime(20)を生成し、模擬ソースプログラム格納部203に格納する。次に、実行ログの第4行目のパラメータ(256,2,...)を特定し、当該パラメータと実行ログの第4行目の通信関数MPI_Sendから、通信関数MPI_Send(256,2,...)を生成し、模擬ソースプログラム格納部203に格納する。ここでcurtimeに実行ログの第4行目の終了時刻etime250を代入する。
以下同様に処理されれば、図4に示すような模擬ソースプログラム2031が生成される。ユーザは、例えば模擬処理部200のツール又はエディタにて模擬ソースプログラム2031を修正する。
次に、模擬ソースプログラム2031の修正例及び性能改善効果の検証例を図5乃至図10を用いて説明する。まず、図5(a)に示すようなプロセス0についての模擬ソースプログラムが得られ、さらに図5(b)に示すようなプロセス1についての模擬ソースプログラムが得られているものとする。ここでは、これら2つのプロセス間でデータ交換しながら処理が進められるものとする。すなわち、プロセス0は、MPI_Send(128,1,...)を使用し、プロセス1は、MPI_Recv(128,0,...)を使用して、プロセス0からプロセス1へデータが送信される。また、プロセス1は、MPI_Send(128,0,...)を使用し、プロセス0は、MPI_Recv(128,1,...)を使用して、プロセス1からプロセス0へデータが送信される。このような処理をさらにもう一回行っている。
図5(a)及び(b)のような模擬ソースプログラムを任意のライブラリ204と共にリンク及びコンパイルして試験用模擬アプリケーション2051を生成して実行した際の詳細な実行時間測定結果を図6に示す。プロセス0では、CPU時間消費関数use_cputime(100)によって時間100が消費され、次にMPI_Send(128,1,...)によってデータがプロセス1に送信されるが、プロセス1では、CPU時間消費関数use_cputime(300)によって時間300が消費され、次にMPI_Recv(128,0,...)によってデータをプロセス0から受信する。ここで、CPU時間消費関数use_cputimeで消費される時間に偏りがあるため、データ送信待ちが発生している。
なお、プロセス1におけるMPI_Send(128,0,...)とプロセス0におけるMPI_Recv(128,1,...)とによるプロセス1からプロセス0へのデータ送信については、送信待ちは生じていない。
さらに、プロセス0では、CPU時間消費関数use_cputime(300)によって時間300が消費され、次にMPI_Send(128,1,...)によってデータがプロセス1に送信されるが、プロセス1では、CPU時間消費関数use_cputime(100)によって時間100が消費され、次にMPI_Recv(128,0,...)によってデータをプロセス0から受信する。ここで、CPU時間消費関数use_cputimeで消費される時間に偏りがあるため、データ受信待ちが発生している。
なお、プロセス1におけるMPI_Send(128,0,...)とプロセス0におけるMPI_Recv(128,1,...)とによるプロセス1からプロセス0へのデータ送信については、送信待ち又は受信待ちは生じていない。
このように、ロードインバランスが発生しているので、実行時間が長くなってしまい、並列効率が悪い状況である。
このようなロードインバランスを解消すべく、図5(a)及び(b)に示した模擬ソースプログラムを図7(a)及び(b)に示すように修正する。すなわち、図5(a)及び(b)に示すように修正前の模擬ソースプログラムでは、プロセス0で時間100を消費している間にプロセス1で時間300を消費しており、プロセス0で時間300を消費している間にプロセス1で時間100を消費しているので、通信の回数やタイミングについては変更せずにプロセス0でもプロセス1でも時間200を消費するように修正する。すなわち、use_cputime(100)及びuse_cputime(300)をuse_cputime(200)に書き換える。
このような修正後の模擬ソースプログラムを任意のライブラリ204と共にリンク及びコンパイルして試験用模擬アプリケーション2051を生成し、当該試験用模擬アプリケーション2051を試験実行すると、図8に示すように、図6に示した2カ所のデータ送信待ち及び受信待ちが解消されて、その分実行時間が削減されることが分かる。すなわち、実行時間がプロセス0とプロセス1とでバランスするように実際の並列処理プログラムを修正することができれば、図8に示したような性能改善効果を得ることができるようになる。
次に図5(a)及び(b)に示した模擬ソースプログラム2031を他の方法で修正する例を図9(a)及び(b)に示す。図9(a)に示すように、プロセス0では、use_cputime(100)とuse_cputime(300)とを統合してuse_cputime(400)に変更し、2回のMPI_Send(128,1,...)を1回のMPI_Send(256,1,...)に変更し、2回のMPI_Recv(128,1,...)を1回のMPI_Recv(256,1,...)に変更する。通常通信関数の起動には時間がかかるため、総通信量が同じでも通信回数を減らすことによって実行時間を短縮できるはずである。図9(b)でも同様である。
このような修正後の模擬ソースプログラムを任意のライブラリ204と共にリンク及びコンパイルして試験用模擬アプリケーション2051を生成し、当該試験用模擬アプリケーション2051を試験実行すると、例えば図10のような測定結果を得る。しかし、図10では、プロセス0及びプロセス1の間のデータ通信の時間が余計にかかるようになってしまい、削減される実行時間が少なくなってしまっている。すなわち、図9(a)及び(b)に示すような修正を行っても性能改善効果はあまり得られず、実際に並列処理プログラムをこのように修正することは無駄であることが分かる。
以上述べたように、模擬ソースプログラム2031を生成することによって、様々な修正方法を簡単に試すことができるようになる。そして、試行した修正方法の中で性能改善効果が高い修正方法を、実際に並列処理プログラムに施せば、修正の困難な並列処理プログラムに対する無駄な作業を減らすことができ、作業効率が向上する。
以上本発明の実施の形態を説明したが本発明はこれに限定されるものではない。例えば図1に示した機能ブロック図は一例であって、様々な補助機能が付加されたり、コンパイラと一体化される場合もある。
また、修正の方法については、上では2つの例を示したが、他の方法を採用しても良い。いずれの場合においても、性能改善効果が高い修正方法を採用して、並列処理プログラムを修正する。但し、模擬ソースプログラム2031は、簡単に修正できるが、並列処理プログラムは修正が困難で、実際的には性能改善効果が高いとされる修正方法を採用できない場合もある。このような場合であっても、性能改善効果が著しく低い修正方法を、並列処理プログラムに施すことが無くなるので、作業効率の改善は顕著である。
なお、前処理部100及び模擬処理部200は例えば1又は複数のコンピュータ装置であって、図11に示すように当該コンピュータ装置においては、メモリ2501(記憶部)とCPU2503(処理部)とハードディスク・ドライブ(HDD)2505と表示装置2509に接続される表示制御部2507とリムーバブル・ディスク2511用のドライブ装置2513と入力装置2515とネットワークに接続するための通信制御部2517とがバス2519で接続されている。オペレーティング・システム(OS)及びWebブラウザを含むアプリケーション・プログラムは、HDD2505に格納されており、CPU2503により実行される際にはHDD2505からメモリ2501に読み出される。必要に応じてCPU2503は、表示制御部2507、通信制御部2517、ドライブ装置2513を制御して、必要な動作を行わせる。また、処理途中のデータについては、メモリ2501に格納され、必要があればHDD2505に格納される。このようなコンピュータは、上で述べたCPU2503、メモリ2501などのハードウエアとOS及び必要なアプリケーション・プログラムとが有機的に協働することにより、上で述べたような各種機能を実現する。
(付記1)
並列処理プログラムによる複数のプロセス間における通信履歴データを格納する通信履歴データ格納部に格納された通信履歴データを用いて、各プロセスについて、通信時間以外の実行時間を特定して、当該実行時間だけCPU時間を消費するCPU時間消費関数を生成し、模擬ソースプログラム格納部に格納する第1生成ステップと、
前記通信履歴データ格納部に格納された通信履歴データを用いて、各プロセスについて、当該通信履歴データが示す通信処理を行う通信関数を生成し、模擬ソースプログラム格納部に格納する第2生成ステップと、
をコンピュータに実行させるための模擬ソースプログラム生成プログラム。
(付記2)
前記第1生成ステップが、
前記通信履歴データに含まれる特定のエントリの開始時刻と、前記特定のエントリの1つ前のエントリの終了時刻との差から前記通信時間以外の実行時間を特定するステップ
を含む付記1記載の模擬ソースプログラム生成プログラム。
(付記3)
前記第2生成ステップが、
前記通信履歴データに含まれる特定のエントリの通信パラメータを特定するステップと、
特定された前記通信パラメータを含む前記通信関数を生成し、前記模擬ソースプログラム格納部に格納するステップと、
を含む付記1記載の模擬ソースプログラム生成プログラム。
(付記4)
並列処理プログラムによる複数のプロセス間における通信履歴データを格納する通信履歴データ格納部に格納された通信履歴データを用いて、各プロセスについて、通信時間以外の実行時間を特定して、当該実行時間だけCPU時間を消費するCPU時間消費関数を生成し、模擬ソースプログラム格納部に格納する第1生成ステップと、
前記通信履歴データ格納部に格納された通信履歴データを用いて、各プロセスについて、当該通信履歴データが示す通信処理を行う通信関数を生成し、模擬ソースプログラム格納部に格納する第2生成ステップと、
を含み、コンピュータに実行される情報処理方法。
(付記5)
前記模擬ソースプログラム格納部に格納された模擬ソースプログラムに対する修正を受け付け、前記模擬ソースプログラム格納部に修正後の模擬ソースプログラムを修正模擬ソースプログラムとして格納するステップと、
前記模擬ソースプログラム格納部に格納されている前記修正模擬ソースプログラムをコンパイルして、修正模擬プログラムを生成するステップと、
前記修正模擬プログラムを実行して実行時間を測定するステップと、
をさらに含む付記4記載の情報処理方法。
(付記6)
並列処理プログラムによる複数のプロセス間における通信履歴データを格納する通信履歴データ格納部に格納された通信履歴データを用いて、各プロセスについて、通信時間以外の実行時間を特定して、当該実行時間だけCPU時間を消費するCPU時間消費関数を生成し、模擬ソースプログラム格納部に格納する第1生成手段と、
前記通信履歴データ格納部に格納された通信履歴データを用いて、各プロセスについて、当該通信履歴データが示す通信処理を行う通信関数を生成し、模擬ソースプログラム格納部に格納する第2生成手段と、
を有する模擬ソースプログラム生成装置。
本発明の実施の形態における機能概要図である。 実行ログ格納部に格納されるデータ例を示す図である。 模擬コードジェネレータの処理フローを示す図である。 模擬ソースプログラムの一例を示す図である。 (a)及び(b)は、模擬ソースプログラムの一例を示す図である。 図5(a)及び(b)の模擬ソースプログラムをコンパイルした後に実行した際の様子を示す図である。 (a)及び(b)は、模擬ソースプログラムの第1の修正例を示す図である。 図7(a)及び(b)の模擬ソースプログラムをコンパイルした後に実行した際の様子を示す図である。 (a)及び(b)は、模擬ソースプログラムの第2の修正例を示す図である。 図9(a)及び(b)の模擬ソースプログラムをコンパイルした後に実行した際の様子を示す図である。 コンピュータの機能ブロック図である。
符号の説明
100 処理部 200 模擬処理部
101 オリジナルアプリケーション
102 測定用ライブラリ
103 オリジナルアプリケーション(EXE形式)
201 実行ログ格納部
202 模擬コードジェネレータ
203 擬似ソースプログラム格納部
204 任意のライブラリ
205 試験用模擬アプリケーション格納部
206 測定結果格納部
2031 模擬ソースプログラム
2051 試験用模擬アプリケーション

Claims (4)

  1. 並列処理プログラムによ複数のプロセス間で行われた通信に関して、通信関数名、通信開始時刻及び通信終了時刻を含む、各プロセスの通信履歴データを格納する通信履歴データ格納部に格納された前記通信履歴データから、各プロセスについて、当該プロセスの通信履歴である特定エントリの通信開始時刻と、当該プロセスの当該特定エントリの直前の通信履歴であるエントリの通信終了時刻とを抽出して算出したCPU動作時間を消費するCPU動作時間消費関数を生成し、ースプログラム格納部に格納するテップと、
    前記通信履歴データ格納部に格納された通信履歴データから、各プロセスについて、前記特定エントリの前記通信関数名を抽出して、当該通信関数名に対応し且つ前記通信履歴が示す通信処理を行う通信関数を生成し、前記ソースプログラム格納部に格納するテップと、
    をコンピュータに実行させるためのースプログラム生成プログラム。
  2. 並列処理プログラムによ複数のプロセス間で行われた通信に関して、通信関数名、通信開始時刻及び通信終了時刻を含む、各プロセスの通信履歴データを格納する通信履歴データ格納部に格納された前記通信履歴データから、各プロセスについて、当該プロセスの通信履歴である特定エントリの通信開始時刻と、当該プロセスの当該特定エントリの直前の通信履歴であるエントリの通信終了時刻とを抽出して算出したCPU動作時間を消費するCPU動作時間消費関数を生成し、ースプログラム格納部に格納する第1ステップと、
    前記通信履歴データ格納部に格納された通信履歴データから、各プロセスについて、前記特定エントリの前記通信関数名を抽出して、当該通信関数名に対応し且つ前記通信履歴が示す通信処理を行う通信関数を生成し、前記ソースプログラム格納部に格納する第2ステップと、
    を含みコンピュータが実行する情報処理方法。
  3. 前記第1ステップ及び前記第2ステップにより前記ースプログラム格納部に格納されたースプログラムに対する修正を受け付け、前記ースプログラム格納部に修正後のースプログラムを修正ースプログラムとして格納するステップと、
    前記ースプログラム格納部に格納されている前記修正ースプログラムをコンパイルして、修正ログラムを生成するステップと、
    前記修正ログラムを実行して実行時間を測定するステップと、
    をさらに含む請求項記載の情報処理方法。
  4. 並列処理プログラムによ複数のプロセス間で行われた通信に関して、通信関数名、通信開始時刻及び通信終了時刻を含む、各プロセスの通信履歴データを格納する通信履歴データ格納部に格納された前記通信履歴データから、各プロセスについて、当該プロセスの通信履歴である特定エントリの通信開始時刻と、当該プロセスの当該特定エントリの直前の通信履歴であるエントリの通信終了時刻とを抽出して算出したCPU動作時間を消費するCPU動作時間消費関数を生成し、ースプログラム格納部に格納する手段と、
    前記通信履歴データ格納部に格納された通信履歴データから、各プロセスについて、前記特定エントリの前記通信関数名を抽出して、当該通信関数名に対応し且つ前記通信履歴が示す通信処理を行う通信関数を生成し、前記ソースプログラム格納部に格納する手段と、
    を有するースプログラム生成装置。
JP2006334031A 2006-12-12 2006-12-12 模擬ソースプログラム生成プログラム及び装置、並びに情報処理方法 Expired - Fee Related JP4983238B2 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2006334031A JP4983238B2 (ja) 2006-12-12 2006-12-12 模擬ソースプログラム生成プログラム及び装置、並びに情報処理方法
US11/903,961 US20080141223A1 (en) 2006-12-12 2007-09-25 Mock source program generation program, method and apparatus

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2006334031A JP4983238B2 (ja) 2006-12-12 2006-12-12 模擬ソースプログラム生成プログラム及び装置、並びに情報処理方法

Publications (2)

Publication Number Publication Date
JP2008146426A JP2008146426A (ja) 2008-06-26
JP4983238B2 true JP4983238B2 (ja) 2012-07-25

Family

ID=39499835

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2006334031A Expired - Fee Related JP4983238B2 (ja) 2006-12-12 2006-12-12 模擬ソースプログラム生成プログラム及び装置、並びに情報処理方法

Country Status (2)

Country Link
US (1) US20080141223A1 (ja)
JP (1) JP4983238B2 (ja)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8719801B2 (en) * 2008-06-25 2014-05-06 Microsoft Corporation Timing analysis of concurrent programs
US20190310933A1 (en) * 2018-04-10 2019-10-10 Ca, Inc. Externalized definition and reuse of mocked transactions
CN115769187A (zh) * 2020-07-07 2023-03-07 三菱电机株式会社 程序创建辅助装置

Family Cites Families (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2754495B2 (ja) * 1990-12-27 1998-05-20 富士通株式会社 ログ/サンプリングデータの解析方法
JP3348445B2 (ja) * 1992-08-10 2002-11-20 富士通株式会社 並列計算機のシミュレーション方法およびシミュレータ
JPH09167144A (ja) * 1995-12-19 1997-06-24 Hitachi Eng Co Ltd プログラム作成方法およびプログラム作成システム
US7315826B1 (en) * 1999-05-27 2008-01-01 Accenture, Llp Comparatively analyzing vendors of components required for a web-based architecture
US7020697B1 (en) * 1999-10-01 2006-03-28 Accenture Llp Architectures for netcentric computing systems
JP2001154998A (ja) * 1999-11-25 2001-06-08 Hitachi Ltd 並列化解析指示方法と並列化汎用連成解析装置
US7007268B2 (en) * 2001-08-20 2006-02-28 Sun Microsystems, Inc. Method and apparatus for debugging in a massively parallel processing environment
US20050166115A1 (en) * 2004-01-22 2005-07-28 Stefan Daume Method for performing software stress test
US7370043B1 (en) * 2004-06-28 2008-05-06 Teradata Us, Inc. Method and system for upgrade validation of database query plans
US7412623B1 (en) * 2005-06-13 2008-08-12 Sun Microsystems, Inc. State machine simulator for testing computer systems
US7725524B2 (en) * 2006-10-03 2010-05-25 Electric Cloud, Inc. Process automation system and method having a hierarchical architecture with multiple tiers
US7890796B2 (en) * 2006-10-04 2011-02-15 Emc Corporation Automatic media error correction in a file server

Also Published As

Publication number Publication date
US20080141223A1 (en) 2008-06-12
JP2008146426A (ja) 2008-06-26

Similar Documents

Publication Publication Date Title
US9207916B2 (en) Simulation apparatus, method and medium
US20180225096A1 (en) Reconstructing a High Level Compilable Program from an Instruction Trace
JP5961971B2 (ja) シミュレーション装置,方法,およびプログラム
US20040054991A1 (en) Debugging tool and method for tracking code execution paths
Chakravarty et al. Automated, retargetable back-annotation for host compiled performance and power modeling
Koong et al. Automatic testing environment for multi-core embedded software—ATEMES
CN104850411A (zh) 存储系统基准评测程序生成方法及装置
Zhao et al. Source-level performance, energy, reliability, power and thermal (PERPT) simulation
Meng et al. Mira: A framework for static performance analysis
Friese et al. Generating performance models for irregular applications
US20140316761A1 (en) Simulation apparatus and storage medium
JP4983238B2 (ja) 模擬ソースプログラム生成プログラム及び装置、並びに情報処理方法
US7684971B1 (en) Method and system for improving simulation performance
US20080066061A1 (en) Method and Data Processing System for Solving Resource Conflicts in Assembler Programs
Sharma et al. Performance evaluation of real-time systems
JP2000347900A (ja) 入力パラメータ生成装置、その方法及び記録媒体
JP2005071135A (ja) 変数の統計処理を行うコンパイル処理プログラム、およびその記録媒体、およびその処理方法ならびにその処理装置
Zhao et al. Host-compiled reliability modeling for fast estimation of architectural vulnerabilities
Mendes et al. Automatic performance prediction and scalability analysis for data parallel programs
JP5201068B2 (ja) 危険度判定プログラム、危険度判定装置及び方法
JP5021584B2 (ja) マイコンシミュレータ、そのシミュレーション方法、プログラム、及びコンピュータ読み取り可能な媒体
JP4860564B2 (ja) プログラムプロファイリング装置、プログラムプロファイリング方法、及びプログラム
JP2004287869A (ja) プログラム実行監視装置および方法
Saidi et al. End-to-end performance forecasting: finding bottlenecks before they happen
Maggio et al. {ARPE}: A Tool To Build Equation Models of Computing Systems

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20090810

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20110128

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20110920

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20111117

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20111206

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20120302

A911 Transfer of reconsideration by examiner before appeal (zenchi)

Free format text: JAPANESE INTERMEDIATE CODE: A911

Effective date: 20120308

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: 20120327

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: 20120409

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

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

Free format text: PAYMENT UNTIL: 20150511

Year of fee payment: 3

LAPS Cancellation because of no payment of annual fees