JP2012181674A - プログラム作成支援装置、プログラム作成支援方法およびコンピュータプログラム - Google Patents

プログラム作成支援装置、プログラム作成支援方法およびコンピュータプログラム Download PDF

Info

Publication number
JP2012181674A
JP2012181674A JP2011044110A JP2011044110A JP2012181674A JP 2012181674 A JP2012181674 A JP 2012181674A JP 2011044110 A JP2011044110 A JP 2011044110A JP 2011044110 A JP2011044110 A JP 2011044110A JP 2012181674 A JP2012181674 A JP 2012181674A
Authority
JP
Japan
Prior art keywords
program
execution
gpu
time
cpu
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
JP2011044110A
Other languages
English (en)
Other versions
JP5429214B2 (ja
Inventor
Nobuo Sumita
伸夫 住田
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.)
Nippon Steel Corp
Original Assignee
Nippon Steel 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 Nippon Steel Corp filed Critical Nippon Steel Corp
Priority to JP2011044110A priority Critical patent/JP5429214B2/ja
Publication of JP2012181674A publication Critical patent/JP2012181674A/ja
Application granted granted Critical
Publication of JP5429214B2 publication Critical patent/JP5429214B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Abstract

【課題】GPUを適切に用いたアプリケーションプログラムの効率的な作成を支援するプログラム作成支援装置を提供する。
【解決手段】本発明のプログラム作成支援装置は、CPUおよびGPUを用いて実行されるプログラムの作成を支援する。プログラム作成支援装置は、実行予測時間を求める対象となるプログラムを取得するプログラム取得部と、プログラムの実行予測時間の算出に用いられる設定情報を記憶する設定情報記憶部と、設定情報記憶部を参照して、プログラムのうちCPUにて実行されるCPU側実行プログラムの実行予測時間と、プログラムのうちGPUにて実行されるGPU側実行プログラムの実行予測時間と、CPUとGPUとの間におけるプログラム呼び出し時間と、を算出し、これらの時間を加算してプログラムの最大実行予測時間として算出する演算処理部と、演算処理部の演算結果の最大実行予測時間を出力する出力部と、を備えることを特徴とする。
【選択図】図1

Description

本発明は、GPUを利用したプログラム作成支援装置、プログラム作成支援方法およびコンピュータプログラムに関する。
プロセス制御システムにおいて、最適化制御をオンラインで実施する場合、オンラインリアルタイム制御で必要な所定の時間内に演算処理を終える必要がある。この際、製造プロセスの厳密物理モデルとの連動や最適化計算で多量の演算処理を要すると、所定の時間内に演算処理を終えることができない場合がある。そこで、演算処理を所定の時間内で終えるために、現状では厳密モデルを簡易化したり、最適化計算範囲を狭めたりすることにより対処してきたが、制御精度への悪影響が避けられなかった。
また、ネットワークを介して多数のパソコンを分散処理するグリッド技術を用いる方法もあるが、当該技術では、分散処理のためのオーバーヘッドやネットワークの伝送遅れの影響で、所定の時間内に演算処理を終えることができない場合があった。さらには、多量の演算処理をGPU(Graphics Processing Unit)を使用して、1台のパソコン側演算装置との並列処理させるオフラインの科学技術演算処理が行われている。しかし、現状、GPUを用いた科学技術演算処理は、例えば気象予測のようなオフライン処理に適用されるのみであり、プロセス制御においてのオンライン処理へは適用されていない。
このように、演算結果の精度を保持しつつ演算処理を高速化するために、様々な手法が提案されている。例えば、特許文献1には、制御変数、状態変数、イベント変数を制御演算用CPUシステムとシステム解析用CPUシステムとの間で共用できる双方向メモリに格納して、制御演算用CPUシステムで動作する制御演算の制御変数をシステム解析用CPUシステムから最適化可能にするプロセス制御装置が開示されている。特許文献1の装置によれば、グリッド技術を用いて膨大な計算量を必要とするモデリングやシステム同定に対する処理能力を向上させることができ、制御演算の負荷を軽減することができる。
また、特許文献2には、グラフィックス処理ユニット(GPU)を用いて機械学習処理を実行し、当該実行結果に基づいてコンピュータアプリケーションによって使用できるように解を提供するコンピュータ実施方法が開示されている。特許文献2の方法によれば、GPUを用いて機械学習処理および非グラフィックスアプリケーション処理を実行することで、処理速度を高めることができる。
さらに、特許文献3には、粒子を用いた流体計算手法に基づく粒子法シミュレーションをGPUへ実装する実装方法が開示されている。特許文献3の方法によれば、GPUを効率よく利用して、粒子シミュレーションの近傍粒子探索に用いる格子のメモリ効率を良好にし、近傍粒子探索を効率化することができる。
特開平8−22305号公報 特開2005−182785号公報 特開2009−69930号公報
しかし、上記特許文献1〜3の技術を、リアルタイム制御分野のシステム構成に適用することは困難である。特許文献1の技術は、多数のパソコンをネットワーク結合するグリッド技術を用いているため、システム構成が複雑である。また、特許文献2の技術は、オフライン処理を前提としており、プロセス制御システムのオンラインリアルタイム制御への適用は困難である。さらに、特許文献3の技術は、GPUを効率よく利用して処理の効率化を図っているが、GPUを適切に利用したアプリケーションプログラムの設計には多大な時間とコストを要する。
CPUおよびGPUを用いて実行されるアプリケーションプログラムの作成においては、CPUおよびGPUそれぞれの特性にあった処理を実行させることで、効率的な演算処理を実現することができる。そして、作成したアプリケーションプログラムについて、当該アプリケーションプログラムを実際に製造ラインのプロセス制御等において稼動させる前に、オンラインリアルタイム制御で必要な所定の時間内に演算処理を終えることができるか否かを判断することで、システムを安定して稼動させることができる。
パーソナルコンピュータ等の計算機のCPUとGPUとでアプリケーションプログラムを並列処理する場合、従来、アプリケーションプログラムの実動作時間の判定は、図17および図18に示すように行われた。まず、ユーザにより、C言語で記述されたソースプログラムをCPU側で実行させるプログラム(標準C言語ソースプログラム)とGPU側で実行させるプログラム(拡張C言語ソースプログラム)とに手作業で分離される(S10)。そして、ユーザによって分離された各々のソースプログラムを動作可能とするためプログラミングの実装の手直しとデバッグが行われ(S12)、実動作時間が測定される(S14)。その後、ユーザは、実動作時間が許容時間以下であるか否かを判定し(S16)、実動作時間が許容時間以下あれば処理を終了し、実動作時間が許容時間より大きければステップS10の処理に戻り、ソースプログラムを改めて分離して処理を繰り返す。
このように、従来は、ステップS10〜S14の処理を試行錯誤で繰り返し行うため、多大な時間とコストが発生していた。また、実動作時間測定のための実行環境の構築とテストデータの準備が必要であることも、多大な時間とコストを要する要因となっている。一方で、ステップS10のソースプログラムの分離処理は機械によって自動的に行うこともなされているが、例えばループ処理を抽出してプログラムを分離するような簡単な分離機能を備えるに留まり、プロセス制御システムの複雑なプログラムを適切に分離することは困難である。
そこで、本発明は、上記問題に鑑みてなされたものであり、本発明の目的とするところは、GPUを適切に用いたアプリケーションプログラムの作成に際して、当該プログラムの実システムでの安定した動作が可能なアプリケーションプログラムを従来よりも効率的に作成することを支援することが可能な、新規かつ改良されたプログラム作成支援装置、プログラム作成支援方法およびコンピュータプログラムを提供することにある。
上記課題を解決するために、本発明のある観点によれば、CPUおよびGPUを用いて実行されるプログラムの作成に際して、作成したプログラムの実行予測時間を求めるプログラム作成支援装置が提供される。プログラム作成支援装置は、実行予測時間を求める対象となるプログラムを取得するプログラム取得部と、プログラムの実行予測時間の算出に用いられる、CPUおよびGPUによる基本的処理に要する時間の情報を含む設定情報を記憶する設定情報記憶部と、設定情報記憶部に記憶された設定情報を参照して、プログラムのうちCPUにて実行されるCPU側実行プログラムの実行予測時間と、プログラムのうちGPUにて実行されるGPU側実行プログラムの実行予測時間と、CPUとGPUとの間におけるプログラム呼び出し時間と、を算出し、これらの時間を加算してプログラムの最大実行予測時間として算出する演算処理部と、演算処理部の演算結果の最大実行予測時間を出力する出力部と、を備えることを特徴とする。
本発明によれば、CPUおよびGPUを利用して実行されるプログラムの作成において、作成されたプログラムを、CPUおよびGPUの各演算処理ユニットによって実行されるプログラムに分離して、演算処理部220によりそれぞれの実行予測時間が算出される。このように、プログラムの実行・デバッグ、実行環境の構築をすることなく、GPUを適切に用いたアプリケーションプログラムの効率的な作成を支援することができる。
ここで、GPUは、複数の第1演算処理部と、各第1演算処理部に複数搭載され、当該第1演算処理部より高速演算処理可能な第2演算処理部と、を備え、演算処理部は、GPU側実行プログラムの実行予測時間を、第1演算処理部により実行される第1プログラムの実行時間と、第2演算処理部により実行される第2プログラムの実行時間とを加算して算出してもよい。
また、演算処理部は、GPU側実行プログラムの第1プログラムの実行時間を、当該第1プログラムにおけるロジック処理の実行に要するロジック実行時間と、各第1演算処理部に設けられた第1メモリを参照する第1メモリ参照時間と、GPUによりアクセス可能な共通メモリを参照する共通メモリ参照時間と、を加算して算出してもよい。
さらに、演算処理部は、GPU側実行プログラムの第2プログラムの実行時間を、当該第2プログラムにおけるロジック処理の実行に要するロジック実行時間と、各第2演算処理部に設けられた第2メモリを参照する第2メモリ参照時間と、GPUによりアクセス可能な共通メモリを参照する共通メモリ参照時間と、を加算して算出してもよい。
また、演算処理部は、CPU側実行プログラムの実行時間を、当該CPU側実行プログラムにおけるロジック処理の実行に要するロジック実行時間と、CPUによりアクセス可能なメモリを参照するメモリ参照時間と、を加算して算出してもよい。
さらに、演算処理部は、プログラム内におけるCPUとGPUとの間のプログラムの呼び出し数と、CPUとGPUとの間でのプログラムの呼び出し1回に要する基本呼び出し時間とに基づいて、CPUとGPUとの間におけるプログラム呼び出し時間を算出してもよい。
本発明のプログラム作成支援装置は、複数の入力領域からなり、解析対象のプログラムを実行されるハードウェアに応じて所定の入力領域に分離して入力可能な入力画面を表示する表示部と、入力画面の各入力領域に情報を入力する入力部と、をさらに備えてもよい。このとき、プログラム取得部は、入力画面の各入力領域から解析対象のプログラムを取得することができる。
解析対象のプログラムは、例えばプロセス制御システムにおけるオンライン最適化制御に用いられるプログラムとしてもよい。
また、上記課題を解決するために、本発明の別の観点によれば、CPUおよびGPUを用いて実行されるプログラムの作成に際して、作成したプログラムの実行予測時間を求めるプログラム作成支援方法が提供される。かかるプログラム作成支援方法は、実行予測時間を求める対象となるプログラムを取得するプログラム取得ステップと、プログラムの実行予測時間の算出に用いられる、CPUおよびGPUによる基本的処理に要する時間の情報を含む予め設定された設定情報を参照して、プログラムのうちCPUにて実行されるCPU側実行プログラムの実行予測時間と、プログラムのうちGPUにて実行されるGPU側実行プログラムの実行予測時間と、CPUとGPUとの間におけるプログラム呼び出し時間と、を算出する第1算出ステップと、CPU側実行プログラムの実行予測時間、GPU側実行プログラムの実行予測時間、およびプログラム呼び出し時間を加算してプログラムの最大実行予測時間として算出する第2算出ステップと、少なくとも第2算出ステップの演算結果の最大実行予測時間を出力する出力ステップと、を含むことを特徴とする。
さらに、上記課題を解決するために、本発明の別の観点によれば、コンピュータを、CPUおよびGPUを用いて実行されるプログラムの作成に際して、作成したプログラムの実行予測時間を求めるプログラム作成支援装置として機能させるためのコンピュータプログラムが提供される。かかるコンピュータプログラムは、実行予測時間を求める対象となるプログラムを取得するプログラム取得部と、プログラムの実行予測時間の算出に用いられる、CPUおよびGPUによる基本的処理に要する時間の情報を含む設定情報を記憶する設定情報記憶部と、設定情報記憶部に記憶された設定情報を参照して、プログラムのうちCPUにて実行されるCPU側実行プログラムの実行予測時間と、プログラムのうちGPUにて実行されるGPU側実行プログラムの実行予測時間と、CPUとGPUとの間におけるプログラム呼び出し時間と、を算出し、これらの時間を加算してプログラムの最大実行予測時間として算出する演算処理部と、演算処理部の演算結果の最大実行予測時間を出力する出力部と、を備えるプログラム作成支援装置としてコンピュータを機能させることを特徴とする。
かかるプログラムは、コンピュータが備える記憶装置に格納され、コンピュータが備えるCPUに読み込まれて実行されることにより、そのコンピュータを上記のプログラム作成支援装置として機能させる。また、当該プログラムが記録された、コンピュータで読み取り可能な記録媒体も提供される。記録媒体は、例えば磁気ディスクや光ディスクなどである。
以上説明したように本発明によれば、GPUを適切に用いたアプリケーションプログラムの作成に際して、設定情報を用いて最大実行予測時間を従来よりも高精度に評価することにより、当該プログラムの実システムでの安定した動作が可能なアプリケーションプログラムを従来よりも効率的に作成することを支援することが可能なプログラム作成支援装置、プログラム作成支援方法およびコンピュータプログラムを提供することができる。
本発明の実施形態に係るプログラム作成支援装置の機能の概要を説明するための説明図である。 同実施形態に係るプログラム作成支援装置のハードウェア構成を説明するブロック図である。 同実施形態に係るGPUのハードウェア構成を説明する説明図である。 同実施形態に係るプログラム作成支援装置の予測処理部の機能構成を示す機能ブロック図である。 CPU側実行プログラムからGPU側実行プログラムを呼び出すオーバーヘッド時間(B)の算出処理を示すフローチャートである。 CPU側実行プログラムの実行予測時間(A)の算出処理を示すフローチャートである。 GPU側実行プログラムのうち、ブロックプログラムについての実行予測時間(C)の算出処理を示すフローチャートである。 GPU側実行プログラムのうち、スレッドプログラムについての実行予測時間(D)の算出処理を示すフローチャートである。 変数一覧リストの一構成例を示す説明図である。 ロジック行一覧リストの一構成例を示す説明図である。 グローバル変数一覧リストの一構成例を示す説明図である。 シェアード変数一覧リストの一構成例を示す説明図である。 ブロックプログラムのロジック行一覧リストの一構成例を示す説明図である。 ローカル変数一覧リストの一構成例を示す説明図である。 スレッドプログラムのロジック行一覧リストの一構成例を示す説明図である。 同実施形態に係るプログラム作成支援装置を利用して作成されるアプリケーションプログラムの一例を示す説明図である。 従来のアプリケーションプログラムの分離処理を示す説明図である。 従来のGPUを用いたアプリケーションプログラムの作成方法を示すフローチャートである。
以下に添付図面を参照しながら、本発明の好適な実施の形態について詳細に説明する。なお、本明細書及び図面において、実質的に同一の機能構成を有する構成要素については、同一の符号を付することにより重複説明を省略する。
<1.プログラム作成支援装置の概要>
まず、図1を参照して、本発明の実施形態に係るプログラム作成支援装置の概要について説明する。なお、図1は、本実施形態に係るプログラム作成支援装置の機能の概要を説明するための説明図である。
本実施形態に係るプログラム作成支援装置は、GPUを利用するアプリケーションプログラムを効率的に作成するための支援をする装置である。本実施形態に係るプログラム作成支援装置は、作成したアプリケーションプログラムについて、パーソナルコンピュータ等の計算機のCPU側で実行するプログラムと、GPU側で実行するプログラムとについて、実行予測時間をそれぞれ予測する。そして、プログラム作成支援装置は、予測された実行予測時間が許容時間内に収まっているか否かを判定して、作成したプログラムがオンラインリアルタイム制御で必要な所定の時間内に演算処理を終えることができるか否かを判定する。
具体的には、ユーザは、図1に示すように、作成したアプリケーションプログラム(例えば、C言語ソースプログラム)を、表示装置に表示された予測処理画面1内の該当する入力領域内に入力する。入力領域としては、CPU側で実行するプログラムを入力するCPU側プログラム入力領域2、GPU側で実行するプログラムを入力するGPU側プログラム入力領域3等がある。GPU側プログラム入力領域3内には、例えば、ブロックプログラム入力領域4、スレッドプログラム入力領域5、グローバルメモリ入力領域6、関数名入力領域7が設けられている。
ブロックプログラム入力領域4には、GPUのマルチプロセッサにより処理されるプログラム(「ブロックプログラム」ともいう。)が入力される。また、スレッドプログラム入力領域5には、GPUのストリーミングプロセッサにより処理されるプログラム(「スレッドプログラム」ともいう。)が入力される。グローバルメモリ入力領域6には、ビデオメモリに記憶された、GPU側実行プログラムにて共通に使用される変数(「グローバル変数」ともいう。)が入力される。関数名入力領域7には、CPU側実行プログラムからGPU側実行プログラムを呼び出すための関数名が入力される。
ユーザは、例えばコピーアンドペースト等により、アプリケーションプログラムからCPU側で実行するプログラムをCPU側プログラム入力領域2に入力し、GPU側で実行するプログラムをGPU側プログラム入力領域3に入力それぞれ入力する。そして、実行予測時間算出処理を開始する指示を与えると、プログラム作成支援装置は、実行予測時間算出処理を開始し、各入力領域内に入力されたプログラムソースを解析して、最大予測実行時間を算出する。プログラム作成支援装置によって算出された最大予測実行時間は、例えば予測処理画面1内の最大実行予測時間の出力結果表示領域8に表示される。
このように、ユーザは、各入力領域へ該当するソースプログラムを入力し、プログラム作成支援装置による実行予測時間算出処理を実行させるだけで、短時間でリアルタイム制御に必要な所定の時間内に演算処理を終えることができるか否かを知ることができる。すなわち、図17および図18に示した従来の手法のように、プログラムの実装・デバッグ、実行環境の構築の繰り返しを行うことなく、短時間でリアルタイム制御に必要な応答時間を確保したプログラム設計の確認が可能となる。そして、プログラムの実装・デバッグ、実行環境の構築は1回のみ行えばよく、GPUを用いたアプリケーションプログラムの作成に要する時間をより短縮することができる。
以下、本実施形態に係るプログラム作成支援装置の構成とその機能について、詳細に説明していく。
<2.ハードウェア構成例>
まず、図2および図3に基づいて、本発明の実施形態に係るプログラム作成支援装置10のハードウェア構成について、詳細に説明する。なお、図2は、本発明の実施形態に係るプログラム作成支援装置10のハードウェア構成を説明するブロック図である。図3は、本実施形態に係るGPU102のハードウェア構成を説明する説明図である。
プログラム作成支援装置10は、主に、CPU101と、GPU102と、ROM103と、RAM105と、を備える。また、プログラム作成支援装置10は、更に、バス107と、入力装置109と、出力装置111と、ストレージ装置113と、ドライブ115と、接続ポート117と、通信装置119とを備える。
CPU101は、演算処理装置および制御装置として機能し、ROM103、RAM105、ストレージ装置113、またはリムーバブル記録媒体121に記録された各種プログラムに従って、プログラム作成支援装置10内の動作全般またはその一部を制御する。GPU102は、CPU101とともに、演算処理装置および制御装置として機能し、ROM103、RAM105、ストレージ装置113、またはリムーバブル記録媒体121に記録された各種プログラムに従って、プログラム作成支援装置10内の動作全般またはその一部を制御する超高速並列処理装置である。
GPU102は、例えば、図3に示すように、複数のマルチプロセッサ(第1演算処理部)140を備える。各マルチプロセッサ140は、シェアードメモリ(第1メモリ)142と、当該シェアードメモリ142にアクセス可能な複数のストリーミングプロセッサ(第2演算処理部)144とからなる。シェアードメモリ142は、小容量であるが高速にデータ転送することができる。ストリーミングプロセッサ144により頻繁に読み出されるデータをシェアードメモリ142に格納するようにプログラムを設計することで、高速演算処理を実現することができる。また、ストリーミングプロセッサ144は、それぞれローカルメモリ(図示せず。)を備えている。ローカルメモリはシェアードメモリ142よりさらに高速にデータ転送することが可能である。
また、GPU102は、ビデオメモリ(共通メモリ)20にアクセス可能に設けられる。ビデオメモリ20は、大容量であるがデータ転送速度はシェアードメモリ142より遅い。したがって、ビデオメモリ20には、GPU102で実行されるプログラムにて共通して使用される変数等の情報が記憶される。
ROM103は、CPU101あるいはGPU102が使用するプログラムや演算パラメータ等を記憶する。RAM105は、CPU101あるいはGPU102が使用するプログラムや、プログラムの実行において適宜変化するパラメータ等を一次記憶する。これらはCPUバス等の内部バスにより構成されるバス107により相互に接続されている。本実施形態において、ROM103は、第2メモリとして機能する。
バス107は、ブリッジを介して、PCI(Peripheral Component Interconnect/Interface)バスなどの外部バスに接続されている。
入力装置109は、例えば、マウス、キーボード、タッチパネル、ボタン、スイッチおよびレバーなどユーザが操作する操作手段である。また、入力装置109は、例えば、赤外線やその他の電波を利用したリモートコントロール手段(いわゆる、リモコン)であってもよいし、プログラム作成支援装置10の操作に対応したPDA等の外部接続機器123であってもよい。さらに、入力装置109は、例えば、上記の操作手段を用いてユーザにより入力された情報に基づいて入力信号を生成し、CPU101あるいはGPU102に出力する入力制御回路などから構成されている。プログラム作成支援装置10のユーザは、この入力装置109を操作することにより、プログラム作成支援装置10に対して各種のデータを入力したり処理動作を指示したりすることができる。
出力装置111は、取得した情報をユーザに対して視覚的または聴覚的に通知することが可能な装置で構成される。このような装置として、CRTディスプレイ装置、液晶ディスプレイ装置、プラズマディスプレイ装置、ELディスプレイ装置およびランプなどの表示装置や、スピーカおよびヘッドホンなどの音声出力装置や、プリンタ装置、携帯電話、ファクシミリなどがある。出力装置911は、例えば、プログラム作成支援装置10が行った各種処理により得られた結果を出力する。具体的には、表示装置は、プログラム作成支援装置10が行った各種処理により得られた結果を、テキストまたはイメージで表示する。他方、音声出力装置は、再生された音声データや音響データ等からなるオーディオ信号をアナログ信号に変換して出力する。
ストレージ装置113は、プログラム作成支援装置10の記憶部の一例として構成されたデータ格納用の装置である。ストレージ装置113は、例えば、HDD(Hard Disk Drive)等の磁気記憶部デバイス、半導体記憶デバイス、光記憶デバイス、または光磁気記憶デバイス等により構成される。このストレージ装置113は、CPU101あるいはGPU102が実行するプログラムや各種データ、および外部から取得した各種のデータなどを格納する。
ドライブ115は、記録媒体用リーダライタであり、プログラム作成支援装置10に内蔵、あるいは外付けされる。ドライブ115は、装着されている磁気ディスク、光ディスク、光磁気ディスク、または半導体メモリ等のリムーバブル記録媒体121に記録されている情報を読み出して、RAM105に出力する。また、ドライブ115は、装着されている磁気ディスク、光ディスク、光磁気ディスク、または半導体メモリ等のリムーバブル記録媒体121に記録を書き込むことも可能である。リムーバブル記録媒体121は、例えば、CDメディア、DVDメディア、Blu−rayメディア等である。また、リムーバブル記録媒体121は、コンパクトフラッシュ(登録商標)(CompactFlash:CF)、フラッシュメモリ、または、SDメモリカード(Secure Digital memory card)等であってもよい。また、リムーバブル記録媒体121は、例えば、非接触型ICチップを搭載したICカード(Integrated Circuit card)または電子機器等であってもよい。
接続ポート117は、機器をプログラム作成支援装置10に直接接続するためのポートである。接続ポート117の一例として、USB(Universal Serial Bus)ポート、IEEE1394ポート、SCSI(Small Computer System Interface)ポート、RS−232Cポート等がある。この接続ポート117に外部接続機器123を接続することで、プログラム作成支援装置10は、外部接続機器123から直接各種のデータを取得したり、外部接続機器123に各種のデータを提供したりする。
通信装置119は、例えば、通信網125に接続するための通信デバイス等で構成された通信インターフェースである。通信装置119は、例えば、有線または無線LAN(Local Area Network)、Bluetooth(登録商標)、またはWUSB(Wireless USB)用の通信カード等である。また、通信装置119は、光通信用のルータ、ADSL(Asymmetric Digital Subscriber Line)用のルータ、または、各種通信用のモデム等であってもよい。この通信装置919は、例えば、インターネットや他の通信機器との間で、例えばTCP/IP等の所定のプロトコルに則して信号等を送受信することができる。また、通信装置119に接続される通信網125は、有線または無線によって接続されたネットワーク等により構成され、例えば、インターネット、家庭内LAN、赤外線通信、ラジオ波通信または衛星通信等であってもよい。
以上、本発明の実施形態に係るプログラム作成支援装置10の機能を実現可能なハードウェア構成の一例を示した。上記の各構成要素は、汎用的な部材を用いて構成されていてもよいし、各構成要素の機能に特化したハードウェアにより構成されていてもよい。従って、本実施形態を実施する時々の技術レベルに応じて、適宜、利用するハードウェア構成を変更することが可能である。
<3.プログラム作成支援装置の機能構成>
次に、図4に基づいて、プログラム作成支援装置10におけるアプリケーションプログラムの実行時間を予測する実行予測時間算出処理を行う予測処理部200について説明する。図4は、本実施形態に係るプログラム作成支援装置10の予測処理部200の機能構成を示す機能ブロック図である。予測処理部200は、図4に示すように、プログラム取得部210と、演算処理部220と、出力部230と、設定情報記憶部240と、メモリ250とからなる。
プログラム取得部210は、最大実行予測時間を算出するアプリケーションプログラムを取得する。本実施形態では、プログラム取得部210は、ユーザが図1に示した予測処理画面1内の各入力領域に入力したソースプログラムを取得する。プログラム取得部210は、取得したソースプログラムをメモリ250に記憶し、演算処理部220に対してソースプログラムが取得された旨の情報を通知する。
演算処理部220は、プログラム取得部210により取得されたソースプログラムを解析し、最大実行予測時間を算出する。演算処理部220は、例えば図2のCPU101により実現される。演算処理部220は、CPU側で実行されるソースプログラムとGPU側で実行されるソースプログラムとについてそれぞれ実行予測時間を算出し、ソースプログラム全体としての最大実行予測時間を算出する。演算処理部220による最大実行予測時間の算出処理の詳細については後述する。演算処理部220は、算出した最大実行予測時間を出力部230へ出力し、ユーザへ通知する。
出力部230は、例えば図2の出力装置111であって、最大実行予測時間を出力する。具体的には、出力部230は情報を表示するディスプレイ等の表示装置とすることができ、この場合、図1に示すように、表示装置に表示された予測処理画面1内の出力結果表示領域8に最大実行予測時間を表示させることができる。なお、予測処理画面1の出力結果表示領域8には、最大実行予測時間のみならず、例えばCPU側で実行されるソースプログラムおよびGPU側で実行されるソースプログラムの各実行予測時間等を表示させるようにしてもよい。また、出力部230は、最大実行予測時間を音声出力するスピーカ等であってもよい、
設定情報記憶部240は、演算処理部220による最大実行予測時間の算出処理において必要となる設定情報を記憶する記憶部であり、例えば図2のROM103やRAM105等により実現される。設定情報としては、例えば、GPUプログラムの呼び出しオーバーヘッド定数や、ロジック実行時間、メモリ参照時間、シェアードメモリ参照時間、グローバルメモリ参照時間等があり、プログラムの各ステップを構成する基本的処理の実行時間の情報の設定値とも言える。これらの設定値はCPUおよびGPU等の仕様またはユーザによる実測値もしくは経験値に基づいて決定してもよい。そして、設定情報は、プログラム作成支援装置10に予め記憶されていてもよく、ユーザが入力して設定してもよい。
メモリ250は、演算処理部220による最大実行予測時間の算出処理において必要な情報を一時的に記憶する記憶部であり、例えば図2のRAM105等により実現される。
<4.最大実行予測時間の算出処理>
プログラム作成支援装置10の予測処理部200は、上述の各機能部を機能させて、アプリケーションプログラムの最大実行予測時間を算出する。ここで、アプリケーションプログラムの最大実行予測時間は、CPU側実行プログラムの実行予測時間(A)、GPU側実行プログラムの実行予測時間(C、D)、およびCPU側実行プログラムからGPU側実行プログラムを呼び出すオーバーヘッド時間(B)の和で表される。予測処理部200の演算処理部220は、これらの時間を順次算出し、加算して、最大実行予測時間を算出する。
以下、図5〜図15に基づいて、本実施形態に係る予測処理部200による最大実行予測時間の算出処理を説明していく。なお、以下においては、既にユーザによって、CPU側実行プログラムがCPU側実行プログラム入力領域2に、GPU側実行プログラムがGPU側実行プログラム入力領域3に入力され、予測処理部200のプログラム取得部210によって入力された各プログラムがメモリ250に記憶された状態であるとする。また、本実施形態におけるアプリケーションプログラムはC言語によって記述されているものとして説明する。しかし、本発明はかかる例に限定されず、アプリケーションプログラムの記述言語はC言語以外のプログラム言語であってもよい。
[4−1.呼び出しオーバーヘッド時間(B)の算出処理]
まず、図5に基づいて、CPU側実行プログラムからGPU側実行プログラムを呼び出すオーバーヘッド時間(B)の算出処理を説明する。図5は、CPU側実行プログラムからGPU側実行プログラムを呼び出すオーバーヘッド時間(B)の算出処理を示すフローチャートである。
CPU側実行プログラムからGPU側実行プログラムを呼び出すオーバーヘッド時間(B)の算出処理は、図5に示すように、まず、演算処理部220によりCPU側実行プログラム内で、関数名入力領域7に入力された関数が呼び出された箇所を探索する(S100)。関数名入力領域7には、CPU側実行プログラムがGPU側実行プログラムを呼び出すための関数名がユーザによって入力される。例えば、図1に示す例では、関数「func1」が、CPU側実行プログラムがGPU側実行プログラムを呼び出す関数名であり、CPU側実行プログラムに関数「func1」が出現する度にGPU側実行プログラムが実行されることになる。
次いで、演算処理部220は、CPU側実行プログラムにおけるGPU側実行プログラムの呼び出し箇所がfor文で囲まれているか否かを判定する(S102)。すなわち、ステップS102では、繰り返し処理によって複数回CPU側実行プログラムがGPU側実行プログラムを呼び出しているか否かを判定している。GPU側実行プログラムを複数回呼び出していれば、その分GPU側実行プログラムの呼び出し時間がかかるため、最大実行予測時間に考慮する必要がある。
ステップS102にてGPU側実行プログラムの呼び出し箇所がfor文で囲まれていれば、演算処理部220は、for文のループ回数(繰り返し処理によりGPU側実行プログラムが呼び出される回数)をカウントし、繰り返し回数nにセットする(S104)。一方、ステップS102にてGPU側実行プログラムの呼び出し箇所がfor文で囲まれていなければ、演算処理部220は、繰り返し回数nに1をセットする(S106)。
その後、演算処理部220は、当該GPU側実行プログラムの呼び出し箇所におけるGPU側実行プログラムのオーバーヘッド時間を算出する(S108)。CPU側実行プログラムからGPU側実行プログラムを1回呼び出すのに要する時間であるGPUプログラムの呼び出しオーバーヘッド定数mは、設定情報記憶部240に記憶されている。演算処理部220は、呼び出しオーバーヘッド定数mを設定情報記憶部240から取得し、呼び出しオーバーヘッド定数mにステップS104またはS106にてセットされた繰り返し回数nを掛けて、オーバーヘッド時間Bに加算する。
そして、演算処理部220は、CPU側実行プログラムにおけるGPU側実行プログラムの呼び出し箇所すべてについてチェックしたか否かを判定し(S110)、チェックしていない呼び出し箇所があれば、次の呼び出し箇所についてステップS102〜S108の処理を繰り返す(S112)。一方、ステップS110にてすべてのGPU側実行プログラムの呼び出し箇所についてチェックしていると判定した場合には、当該処理を終了する。図5に示す処理が終了した段階でのオーバーヘッド時間Bが、アプリケーションプログラムにおけるオーバーヘッド時間Bとなる。
[4−2.CPU側実行プログラムの実行予測時間(A)の算出処理]
次いで、図6、図9および図10に基づいて、CPU側実行プログラムの実行予測時間(A)の算出処理を説明する。図6は、CPU側実行プログラムの実行予測時間(A)の算出処理を示すフローチャートである。図9は、変数一覧リストの一構成例を示す説明図である。図10は、ロジック行一覧リストの一構成例を示す説明図である。
CPU側実行プログラムの実行予測時間(A)は、CPU側実行プログラムで行われるロジック処理の実行時間(総ロジック実行時間A1)と、当該プログラムを実行するにあたりメモリを参照している時間(総メモリ参照時間A2)との加算値で表すことができる。そこで、まず、演算処理部220は、図6に示すように、CPU側実行プログラム内における変数宣言を探索し、変数一覧リストに格納する(S200)。変数一覧リストは、CPU側実行プログラムの実行予測時間を算出するための作業用テーブルであり、例えば図9に示すように、変数名、変数の型、サイズ等が格納される。変数一覧リストは、図4のメモリ250に記憶されている。
次いで、演算処理部220は、CPU側実行プログラム内のロジック部の行番号を、ロジック行一覧リストに格納する(S202)。ロジック行一覧リストも、CPU側実行プログラムの実行予測時間を算出するための作業用テーブルであり、例えば図10に示すように、ロジック部の行番号、回数、変数参照回数等が格納される。ロジック行一覧リストも、図4のメモリ250に記憶されている。
さらに、演算処理部220は、ロジック行一覧リストの各行について、ロジック行がfor文で囲まれているか否かを判定する(S204)。すなわち、ステップS204では、繰り返し処理によって複数回当該ロジック行が実行されているか否かを判定している。ステップS204にてロジック行がfor文で囲まれていれば、演算処理部220は、for文のループ回数をカウントし、ロジック行一覧リストの「回数」にセットする(S206)。一方、ステップS204にてロジック行がfor文で囲まれていなければ、演算処理部220は、ロジック行一覧リストの「回数」に1をセットする(S208)。
その後、演算処理部220は、ロジック行一覧リストに格納されたすべてのロジック行についてステップS204〜S208の処理を実行したか否かをチェックする(S210)。すべてのロジック行についてチェックしていない場合には、演算処理部220は、次のロジック行について、ステップS204〜S208の処理を繰り返す(S212)。一方、S210にてすべてのロジック行についてチェックした場合には、演算処理部220は、ロジック行一覧リストの各行について、変数一覧リストに登録されている変数の出現回数をカウントし、ロジック行一覧リストの「変数参照回数」に格納する(S214)。
ステップS214では、CPU側実行プログラムを実行する際に、CPU101が何回メモリにアクセスするかをカウントしている。演算処理部220は、ロジック行一覧リストの各行について、変数一覧リストに登録されている変数の出現回数に、ロジック行一覧リストの該当行の「回数」を掛け合わせて、「変数参照回数」に格納する。
次いで、演算処理部220は、CPU側実行プログラムにおける総ロジック実行時間A1を算出する(S216)。ロジック行を1つ実行するのに要するロジック実行時間L1は、設定情報記憶部240に記憶されている。演算処理部220は、ロジック実行時間L1を設定情報記憶部240から取得し、ロジック実行時間L1にロジック行一覧リストの「回数」の積算値を掛け合わせて、総ロジック実行時間A1を算出する。
さらに、演算処理部220は、CPU側実行プログラムにおける総メモリ参照時間A2を算出する(S218)。変数を1回参照するのに要するメモリ参照時間M1も、設定情報記憶部240に記憶されている。演算処理部220は、メモリ参照時間M1を設定情報記憶部240から取得し、メモリ参照時間M1にロジック行一覧リストの「変数参照回数」の積算値を掛け合わせて、総メモリ参照時間A2を算出する。
その後、演算処理部220は、ステップS216で算出した総ロジック実行時間A1と、ステップS218で算出した総メモリ参照時間A2とを加算し、CPU側実行プログラムの実行予測時間Aとする。
[4−3.GPU側実行プログラムの実行予測時間(C、D)の算出処理]
次いで、図7、図8、図11〜図15に基づいて、GPU側実行プログラムの実行予測時間(C、D)の算出処理を説明する。図7は、GPU側実行プログラムのうち、ブロックプログラムについての実行予測時間(C)の算出処理を示すフローチャートである。図8は、GPU側実行プログラムのうち、スレッドプログラムについての実行予測時間(D)の算出処理を示すフローチャートである。図11は、グローバル変数一覧リストの一構成例を示す説明図である。図12は、シェアード変数一覧リストの一構成例を示す説明図である。図13は、ブロックプログラムのロジック行一覧リストの一構成例を示す説明図である。図14は、ローカル変数一覧リストの一構成例を示す説明図である。図15は、スレッドプログラムのロジック行一覧リストの一構成例を示す説明図である。
上述したように、GPU側実行プログラムは、マルチプロセッサ140により実行されるブロックプログラム(第1プログラム)と、ストリーミングプロセッサ144によりされるスレッドプログラム(第2プログラム)とからなる。ブロックプログラムにおいてのみ使用される変数であるシェアード変数はシェアードメモリ142に格納することで、マルチプロセッサ140へ高速に伝送することができる。同様に、スレッドプログラムにおいてのみ使用される変数であるスレッド変数は、ストリーミングプロセッサ144のローカルメモリ(図示せず。)に格納することで、ストリーミングプロセッサ144へより高速に伝送することができる。なお、GPU102に搭載されているマルチプロセッサ140の個数をブロック数ともいい、GPU102に搭載されているストリーミングプロセッサ144の個数をスレッド数ともいう。
(4−3−1.準備処理)
GPU側実行プログラムの実行予測時間(C、D)の算出処理の準備処理として、演算処理部220は、図1のグローバルメモリ入力領域6に入力された変数宣言を探索し、グローバル変数一覧リストに格納する。グローバルメモリ入力領域6に入力された変数は、GPU側実行プログラムにて共通の変数(グローバル変数)であり、ビデオメモリ20に格納されている。グローバル変数一覧リストは、GPU側実行プログラムの実行予測時間を算出するための作業用テーブルであり、例えば図11に示すように、グローバル変数名、グローバル変数の型、サイズ等が格納される。グローバル変数一覧リストは、図4のメモリ250に記憶されている。
なお、GPU側実行プログラムにて宣言される変数のうち、グローバル変数以外の変数は、上述したように、通常、シェアードメモリ142またはストリーミングプロセッサ144のローカルメモリ(図示せず。)に格納される。演算処理部220は、グローバル変数一覧リストを作成すると、以下の手順に従って、ブロックプログラムについての実行予測時間(C)およびスレッドプログラムについての実行予測時間(D)を算出する。
(4−3−2.ブロックプログラムについての実行予測時間(C)の算出処理)
ブロックプログラムについての実行予測時間(C)の算出処理では、まず、演算処理部220は、図7に示すように、ブロックプログラム入力領域4に入力されたプログラムから、シェアード変数を探索し、シェアード変数一覧リストに格納する(S300)。ブロックプログラムにて宣言された変数であるシェアード変数は、各マルチプロセッサ140のシェアードメモリ142に記憶されている。一般に、当該シェアード変数が格納されたシェアードメモリ142にアクセス可能なストリーミングプロセッサ144にて実行されるプログラムに高い頻度で出現する変数がシェアード変数として設定される。
シェアード変数一覧リストは、GPU側実行プログラムの実行予測時間を算出するための作業用テーブルであり、例えば図12に示すように、シェアード変数名、シェアード変数の型、サイズ等が格納される。シェアード変数一覧リストは、図4のメモリ250に記憶されている。
次いで、演算処理部220は、ブロックプログラム入力領域4に入力されたプログラム内のロジック部の行番号を、ブロックプログラムのロジック行一覧リストに格納する(S302)。ブロックプログラムのロジック行一覧リストも、GPU側実行プログラムの実行予測時間を算出するための作業用テーブルであり、例えば図13に示すように、ロジック部の行番号、回数、シェアード変数参照回数、グローバル変数参照回数等が格納される。ブロックプログラムのロジック行一覧リストも、図4のメモリ250に記憶されている。
さらに、演算処理部220は、ブロックプログラムのロジック行一覧リストの各行について、ロジック行がfor文で囲まれているか否かを判定する(S304)。すなわち、ステップS304では、繰り返し処理によって複数回当該ロジック行が実行されているか否かを判定している。ステップS304にてロジック行がfor文で囲まれていれば、演算処理部220は、for文のループ回数をカウントし、ブロックプログラムのロジック行一覧リストの「回数」にセットする(S306)。一方、ステップS304にてロジック行がfor文で囲まれていなければ、演算処理部220は、ブロックプログラムのロジック行一覧リストの「回数」に1をセットする(S308)。
その後、演算処理部220は、ブロックプログラムのロジック行一覧リストに格納されたすべてのロジック行についてステップS304〜S308の処理を実行したか否かをチェックする(S310)。すべてのロジック行についてチェックしていない場合には、演算処理部220は、次のロジック行について、ステップS304〜S308の処理を繰り返す(S312)。一方、S310にてすべてのロジック行についてチェックした場合には、演算処理部220は、ブロックプログラムのロジック行一覧リストの各行について、シェアード変数一覧リストに登録されているシェアード変数の出現回数をカウントし、ブロックプログラムのロジック行一覧リストの「シェアード変数参照回数」に格納する(S314)。
ステップS314では、GPU側実行プログラムを実行する際に、GPU102が何回シェアードメモリ142にアクセスするかをカウントしている。演算処理部220は、ブロックプログラムのロジック行一覧リストの各行について、シェアード変数一覧リストに登録されている変数の出現回数に、ロジック行一覧リストの該当行の「回数」を掛け合わせて、「シェアード変数参照回数」に格納する。
また、演算処理部220は、ブロックプログラムのロジック行一覧リストの各行について、グローバル変数一覧リストに登録されているグローバル変数の出現回数をカウントし、ブロックプログラムのロジック行一覧リストの「グローバル変数参照回数」に格納する(S316)。ステップS316では、GPU側実行プログラムを実行する際に、GPU102が何回ビデオメモリ20にアクセスするかをカウントしている。演算処理部220は、ブロックプログラムのロジック行一覧リストの各行について、グローバル変数一覧リストに登録されている変数の出現回数に、ロジック行一覧リストの該当行の「回数」を掛け合わせて、「グローバル変数参照回数」に格納する。
その後、演算処理部220は、GPU側実行プログラムのブロックプログラムにおける総ロジック実行時間C1を算出する(S318)。ブロックプログラムのロジック行を1つ実行するのに要するロジック実行時間L2は、設定情報記憶部240に記憶されている。演算処理部220は、ロジック実行時間L2を設定情報記憶部240から取得し、ロジック実行時間L2にブロックプログラムのロジック行一覧リストの「回数」の積算値を掛け合わせて、総ロジック実行時間C1を算出する。
次いで、演算処理部220は、GPU側実行プログラムのブロックプログラムにおける総シェアードメモリ参照時間C2を算出する(S320)。シェアード変数を1回参照するのに要するシェアードメモリ参照時間M2も、設定情報記憶部240に記憶されている。演算処理部220は、シェアードメモリ参照時間M2を設定情報記憶部240から取得し、シェアードメモリ参照時間M2にブロックプログラムのロジック行一覧リストの「シェアード変数参照回数」の積算値を掛け合わせて、総シェアードメモリ参照時間C2を算出する。
さらに、演算処理部220は、GPU側実行プログラムのブロックプログラムにおける総グローバルメモリ参照時間C3を算出する(S322)。グローバル変数を1回参照するのに要するグローバルメモリ参照時間Gも、設定情報記憶部240に記憶されている。演算処理部220は、グローバルメモリ参照時間Gを設定情報記憶部240から取得し、グローバルメモリ参照時間Gにブロックプログラムのロジック行一覧リストの「グローバル変数参照回数」の積算値を掛け合わせて、総グローバルメモリ参照時間C3を算出する。
その後、演算処理部220は、ステップS318で算出した総ロジック実行時間C1と、ステップS320で算出した総シェアードメモリ参照時間C2と、ステップS322で算出した総グローバルメモリ参照時間C3とを加算し、ブロックプログラムの実行予測時間Cとする。
(4−3−3.スレッドプログラムについての実行予測時間(D)の算出処理)
スレッドプログラムについての実行予測時間(D)の算出処理も、図7に示したブロックプログラムについての実行予測時間(C)の算出処理と同様に行うことができる。以下、図8に基づいて、スレッドプログラムについての実行予測時間(D)の算出処理を説明するが、図7と同様の処理については詳細な説明を省略する。
まず、演算処理部220は、図8に示すように、スレッドプログラム入力領域5に入力されたプログラムから、ローカル変数を探索し、ローカル変数一覧リストに格納する(S400)。スレッドプログラムにて宣言された変数であるローカル変数は、スレッドプログラムのみで使用され、各ストリーミングプロセッサ144内のローカルメモリ(レジスタ)に記憶されている。ローカル変数一覧リストは、GPU側実行プログラムの実行予測時間を算出するための作業用テーブルであり、例えば図14に示すように、ローカル変数名、ローカル変数の型、サイズ等が格納される。ローカル変数一覧リストは、図4のメモリ250に記憶されている。
次いで、演算処理部220は、スレッドプログラム入力領域4に入力されたプログラム内のロジック部の行番号を、スレッドプログラムのロジック行一覧リストに格納する(S402)。スレッドプログラムのロジック行一覧リストも、GPU側実行プログラムの実行予測時間を算出するための作業用テーブルであり、例えば図13に示すように、ロジック部の行番号、回数、ローカル変数参照回数、グローバル変数参照回数等が格納される。スレッドプログラムのロジック行一覧リストも、図4のメモリ250に記憶されている。
さらに、演算処理部220は、スレッドプログラムのロジック行一覧リストの各行について、ロジック行がfor文で囲まれているか否かを判定する(S404)。ステップS404も、図7のステップS304と同様に処理することができる。ステップS404にてロジック行がfor文で囲まれていれば、演算処理部220は、for文のループ回数をカウントし、スレッドプログラムのロジック行一覧リストの「回数」にセットする(S406)。一方、ステップS404にてロジック行がfor文で囲まれていなければ、演算処理部220は、スレッドプログラムのロジック行一覧リストの「回数」に1をセットする(S408)。
その後、演算処理部220は、スレッドプログラムのロジック行一覧リストに格納されたすべてのロジック行についてステップS404〜S408の処理を実行したか否かをチェックする(S410)。すべてのロジック行についてチェックしていない場合には、演算処理部220は、次のロジック行について、ステップS404〜S408の処理を繰り返す(S412)。一方、S410にてすべてのロジック行についてチェックした場合には、演算処理部220は、スレッドプログラムのロジック行一覧リストの各行について、ローカル変数一覧リストに登録されているローカル変数の出現回数をカウントし、スレッドプログラムのロジック行一覧リストの「ローカル変数参照回数」に格納する(S414)。
ステップS414では、GPU側実行プログラムを実行する際に、GPU102が何回ストリーミングプロセッサ144のローカルメモリにアクセスするかをカウントしている。演算処理部220は、スレッドプログラムのロジック行一覧リストの各行について、ローカル変数一覧リストに登録されている変数の出現回数に、ロジック行一覧リストの該当行の「回数」を掛け合わせて、「ローカル変数参照回数」に格納する。
また、演算処理部220は、スレッドプログラムのロジック行一覧リストの各行について、グローバル変数一覧リストに登録されているグローバル変数の出現回数をカウントし、スレッドプログラムのロジック行一覧リストの「グローバル変数参照回数」に格納する(S416)。ステップS416の処理は、図7のステップS316と同様に処理することができる。演算処理部220は、スレッドプログラムのロジック行一覧リストの各行について、グローバル変数一覧リストに登録されている変数の出現回数に、ロジック行一覧リストの該当行の「回数」を掛け合わせて、「グローバル変数参照回数」に格納する。
その後、演算処理部220は、GPU側実行プログラムのスレッドプログラムにおける総ロジック実行時間D1を算出する(S418)。スレッドプログラムのロジック行を1つ実行するのに要するロジック実行時間L3は、設定情報記憶部240に記憶されている。演算処理部220は、ロジック実行時間L3を設定情報記憶部240から取得し、ロジック実行時間L3にスレッドプログラムのロジック行一覧リストの「回数」の積算値を掛け合わせて、総ロジック実行時間D1を算出する。
次いで、演算処理部220は、GPU側実行プログラムのスレッドプログラムにおける総ローカルメモリ参照時間D2を算出する(S420)。ローカル変数を1回参照するのに要するローカルメモリ参照時間M3も、設定情報記憶部240に記憶されている。演算処理部220は、ローカルメモリ参照時間M3を設定情報記憶部240から取得し、ローカルメモリ参照時間M3にスレッドプログラムのロジック行一覧リストの「ローカル変数参照回数」の積算値を掛け合わせて、総ローカルメモリ参照時間D2を算出する。
さらに、演算処理部220は、GPU側実行プログラムのスレッドプログラムにおける総グローバルメモリ参照時間D3を算出する(S422)。ステップS422の処理は、図7のステップS322の処理と同様にすることができる。演算処理部220は、グローバルメモリ参照時間Gを設定情報記憶部240から取得し、グローバルメモリ参照時間Gにスレッドプログラムのロジック行一覧リストの「グローバル変数参照回数」の積算値を掛け合わせて、総グローバルメモリ参照時間C3を算出する。
その後、演算処理部220は、ステップS418で算出した総ロジック実行時間D1と、ステップS420で算出した総ローカルメモリ参照時間D2と、ステップS422で算出した総グローバルメモリ参照時間D3とを加算し、スレッドプログラムの実行予測時間Dとする。
(4−3−4.GPU側実行プログラムの実行予測時間(C、D)の算出処理)
演算処理部220は、図7および図8に示した処理により、ブロックプログラムの実行予測時間Cとスレッドプログラムの実行予測時間Dとを加算して、GPU側実行プログラムの実行予測時間を取得する。
[4−4.最大実行予測時間]
演算処理部220は、CPU側実行プログラムの実行予測時間(A)、GPU側実行プログラムの実行予測時間(C、D)、およびCPU側実行プログラムからGPU側実行プログラムを呼び出すオーバーヘッド時間(B)を算出すると、これらの値を加算する。この加算値がアプリケーションプログラムの最大実行予測時間となる。演算処理部220は、アプリケーションプログラムの最大実行予測時間を算出すると、出力部230へ出力する。これにより、図1の予測処理画面1内の出力結果表示領域8に、アプリケーションプログラムの最大実行予測時間が表示される。
なお、出力結果表示領域8に、CPU側実行プログラムの実行予測時間(A)、GPU側実行プログラムの実行予測時間(C、D)、およびCPU側実行プログラムからGPU側実行プログラムを呼び出すオーバーヘッド時間(B)をそれぞれ表示させるようにしてもよい。これにより、ユーザは、どの箇所の処理に時間を要しているかを確認することができ、アプリケーションプログラムの設計を効率よく行うことが可能となる。
また、出力結果表示領域8に表示される最大実行予測時間が、オンラインリアルタイム制御で必要な時間(許容時間)内に収まっているか否かをユーザに提示することにより、アプリケーションプログラムの再設計の要否を明確に伝えることができる。例えば、最大実行予測時間が許容時間を超えている場合には、出力結果表示領域8に表示された最大実行予測時間の文字の色、あるいは領域の色等を、最大実行予測時間が許容時間以下である場合と相違させるようにして、ユーザに当該情報を提示することができる。
以上、本発明の実施形態に係るプログラム作成支援装置10の構成とこれによるプログラム作成支援処理について説明した。本実施形態によれば、GPUを用いて処理されるオンラインリアルタイム制御のためのアプリケーションプログラムを設計する際に、容易にアプリケーションプログラムの最大実行予測時間を取得することが可能となる。これにより、オンライオンリアルタイム制御の要件である必要な時間(許容時間)内に収めることができる。また、GPUを適用する際に必要な設計やプログラミング作業の時間を短縮できるので、コストを削減でき、工期も短縮することができる。さらには、従来、最適化計算は多大な時間を要していたため、精度を出すための十分な計算を実行できなかったが、本実施形態に係るプログラム作成支援装置10では、GPUのマルチプロセッサに最適化計算を並列実行させており、また、本プログラム作成支援装置10の構成により、必要な時間(許容時間)内に収めることができるため、プロセス制御システムにおける最適化制御精度を向上させ、操業変動への追従性も向上させることも期待される。
<5.適用例>
本実施形態に係るプログラム作成支援装置10を利用して作成されるアプリケーションプログラムの一例を図16に示す。図16は、熱プラント燃焼のオンライン最適化制御を行うアプリケーションプログラムの一例を示している。熱プラント燃焼のオンライン最適化制御装置は、実プロセスにおける燃料ガス温度や燃料ガス流量等の実績データや操業条件が入力値として入力されると、複数の候補解(例えば、燃料ガス温度や燃焼ガス流量等の設定候補値(設計変数))についてそれぞれ制御シミュレータによりシミュレートし、最適な設定値を決定して、制御情報としてプロセスコンピュータへ出力する。
熱プラント燃焼のオンライン最適化制御を行うアプリケーションプログラムは、リアルタイムに制御情報を出力する必要があるため、高速に処理を実行する必要がある。そこで、GPUをパーソナルコンピュータのCPUと並列処理させることにより、当該要求を満たすようにすることが考えられるが、CPUとGPUとで実行する処理の振り分けやメモリの使用の仕方によって演算処理速度は大きく変化する。したがって、これらの点を考慮したアプリケーションプログラムの設計が必要である。一方で、熱プラント燃焼のオンライン最適化制御を行うアプリケーションプログラムの構成は複雑であり、ユーザがオンラインリアルタイム制御で必要な所定の時間内に演算処理を終えることができるかを判断するのは困難である。
そこで、本実施形態に係るプログラム作成支援装置10を利用して、熱プラント燃焼のオンライン最適化制御を行うアプリケーションプログラムを作成することで、容易に当該プログラムの最大実行予測時間を算出することができる。また、算出された最大実行予測時間が許容時間を超えている場合でも、プログラムの再設計が容易であり、GPUを適用する際に必要な設計やプログラミング作業の時間を短縮できる。
作成されたアプリケーションプログラムは、例えば、CPU側実行プログラムにて最適化制御の全体処理を行い、GPU側実行プログラムにてシミュレーションの細部処理を実行するように構成される。また、GPU側実行プログラムも、GPU102のマルチプロセッサ140、ストリーミングプロセッサ144、シェアードメモリ142やローカルメモリ(図示せず。)等のハードウェア特性に応じて適切な処理が割り当てられている。
図16に示す例では、設計変数(1〜j個)について実行される多目的最適化処理はGPU102のマルチプロセッサ140で並列計算され、伝熱計算の繰り返し処理はマルチプロセッサ140内のストリーミングプロセッサ144で並列計算される。例えば、GPU102にマルチプロセッサ140が30個、各マルチプロセッサ140にストリーミングプロセッサ144が8個搭載されている場合、設計変数(1〜j個)について実行される最適化処理は、30個のマルチプロセッサ140により並列計算される。一方、単純計算が繰り返される伝熱計算の繰り返し処理は、例えば最大128個のストリーミングプロセッサ144で並列計算される。
ストリーミングプロセッサ144による繰り返し計算処理の1つとして、レンガとレンガとの間の熱交換計算処理がある。図16に示すように、熱プラントにおいては、例えばレンガA、レンガB、レンガCのように複数種類のレンガが用いられている。すべてのレンガについて、レンガ間の熱交換計算処理をそれぞれ独立して計算することが可能であるが、本実施例においては、スレッド数の上限により、いくつかのグループに分けてレンガ間の熱交換計算処理を実行している。
例えば、熱プラント内のレンガ部のうち中央レンガ部を除く部分を、縦方向にq分割、横方向にp分割したとする。縦方向にq分割された区域のうち、m分割分の区域にはレンガAが、n分割分の区域にはレンガBが、l分割分の区域にはレンガCが用いられている。一方、レンガA、レンガB、レンガCの横方向における分割数は、すべてpとする。
本実施例においては、ストリーミングプロセッサ144により熱プラントの同一種類のレンガ間の熱交換計算処理が並列して実行されている。例えば、レンガAについては、横方向の区域が同一であるm炉のレンガ間の熱交換計算処理が並列処理される。同様に、レンガBについては、横方向の区域が同一であるn炉のレンガ間の熱交換計算処理が並列処理され、レンガCについては、横方向の区域が同一であるl炉のレンガ間の熱交換計算処理が並列処理される。仮に、すべてのレンガについて独立してレンガ間の熱交換計算処理を実行すると、(m+n+l)×k個の処理を順次実行することになるが、ストリーミングプロセッサ144に並列処理させることで、3×k個の処理を実行する時間でレンガ間の熱交換計算処理を実行させることができる。
レンガ間の熱交換計算処理と同様に、熱プラントの各燃焼室におけるガスとレンガとの間での熱交換計算処理や、送風管における空洞とガスとの間およびレンガとレンガとの間での各熱交換計算処理も、マルチプロセッサ140のスペック等の特性を考慮して、可能な限り並列計算させることができる。これにより、オンライオンリアルタイム制御の要件である必要な時間(許容時間)内に処理を収めることができる。
このように、GPU102の各ハードウェア特性を考慮して、熱プラント内の伝熱計算のメッシュ分割の計算処理を最適に割り当て設計することで、厳密物理モデルのプログラミング実行を達成することができる。そして、このような計算処理の最適な割り当ては、本実施形態に係るプログラム作成支援装置10を利用することで容易に実現することができる。
以上、添付図面を参照しながら本発明の好適な実施形態について詳細に説明したが、本発明はかかる例に限定されない。本発明の属する技術の分野における通常の知識を有する者であれば、特許請求の範囲に記載された技術的思想の範疇内において、各種の変更例または修正例に想到し得ることは明らかであり、これらについても、当然に本発明の技術的範囲に属するものと了解される。
例えば、上記実施形態では、解析対象のプログラムを実行する演算処理ユニットとして、CPUとGPUとをそれぞれ1つずつ用いた場合について説明したが、本発明はかかる例に限定されない。GPUは複数あってもよい。この場合、予測処理画面1内に、各GPUに対してそれぞれGPU側プログラム入力領域を設けることで、プログラム取得部によって各GPUにて実行されるプログラムを取得することが可能となり、各プログラムについて実行予測時間を算出することが可能となる。
10 プログラム作成支援装置
101 CPU
102 GPU
140 マルチプロセッサ
142 シェアードメモリ
144 ストリーミングプロセッサ
200 予測処理部
210 プログラム取得部
220 演算処理部
230 出力部
240 設定情報記憶部
250 メモリ

Claims (10)

  1. CPUおよびGPUを用いて実行されるプログラムの作成に際して、作成したプログラムの実行予測時間を求めるプログラム作成支援装置であって、
    実行予測時間を求める対象であるプログラムを取得するプログラム取得部と、
    前記プログラムの実行予測時間の算出に用いられる、CPUおよびGPUによる基本的処理に要する時間の情報を含む設定情報を記憶する設定情報記憶部と、
    前記設定情報記憶部に記憶された設定情報を参照して、前記プログラムのうち前記CPUにて実行されるCPU側実行プログラムの実行予測時間と、前記プログラムのうち前記GPUにて実行されるGPU側実行プログラムの実行予測時間と、前記CPUと前記GPUとの間におけるプログラム呼び出し時間と、を算出し、これらの時間を加算して前記プログラムの最大実行予測時間として算出する演算処理部と、
    前記演算処理部の演算結果の最大実行予測時間を出力する出力部と、
    を備えることを特徴とする、プログラム作成支援装置。
  2. 前記GPUは、
    複数の第1演算処理部と、
    前記各第1演算処理部に複数搭載され、当該第1演算処理部より高速演算処理可能な第2演算処理部と、
    を備え、
    前記演算処理部は、
    前記GPU側実行プログラムの実行予測時間を、
    前記第1演算処理部により実行される第1プログラムの実行時間と、前記第2演算処理部により実行される第2プログラムの実行時間とを加算して算出することを特徴とする、請求項1に記載のプログラム作成支援装置。
  3. 前記演算処理部は、
    前記GPU側実行プログラムの第1プログラムの実行時間を、
    当該第1プログラムにおけるロジック処理の実行に要するロジック実行時間と、前記各第1演算処理部に設けられた第1メモリを参照する第1メモリ参照時間と、前記GPUによりアクセス可能な共通メモリを参照する共通メモリ参照時間と、を加算して算出することを特徴とする、請求項2に記載のプログラム作成支援装置。
  4. 前記演算処理部は、
    前記GPU側実行プログラムの第2プログラムの実行時間を、
    当該第2プログラムにおけるロジック処理の実行に要するロジック実行時間と、前記各第2演算処理部に設けられた第2メモリを参照する第2メモリ参照時間と、前記GPUによりアクセス可能な共通メモリを参照する共通メモリ参照時間と、を加算して算出することを特徴とする、請求項2または3に記載のプログラム作成支援装置。
  5. 前記演算処理部は、
    前記CPU側実行プログラムの実行時間を、
    当該CPU側実行プログラムにおけるロジック処理の実行に要するロジック実行時間と、前記CPUによりアクセス可能なメモリを参照するメモリ参照時間と、を加算して算出することを特徴とする、請求項1〜4のいずれか1項に記載のプログラム作成支援装置。
  6. 前記演算処理部は、前記プログラム内における前記CPUと前記GPUとの間のプログラムの呼び出し数と、前記CPUと前記GPUとの間でのプログラムの呼び出し1回に要する基本呼び出し時間とに基づいて、前記CPUと前記GPUとの間におけるプログラム呼び出し時間を算出することを特徴とする、請求項1〜5のいずれか1項に記載のプログラム作成支援装置。
  7. 複数の入力領域からなり、前記解析対象のプログラムを実行されるハードウェアに応じて所定の前記入力領域に分離して入力可能な入力画面を表示する表示部と、
    前記入力画面の前記各入力領域に情報を入力する入力部と、
    をさらに備え、
    前記プログラム取得部は、前記入力画面の各入力領域から前記解析対象のプログラムを取得することを特徴とする、請求項1〜6のいずれか1項に記載のプログラム作成支援装置。
  8. 前記解析対象のプログラムは、プロセス制御システムにおけるオンライン最適化制御に用いられることを特徴とする、請求項1〜7のいずれか1項に記載のプログラム作成支援装置。
  9. CPUおよびGPUを用いて実行されるプログラムの作成に際して、作成したプログラムの実行予測時間を求めるプログラム作成支援方法であって、
    実行予測時間を求める対象であるプログラムを取得するプログラム取得ステップと、
    前記プログラムの実行予測時間の算出に用いられる、CPUおよびGPUによる基本的処理に要する時間の情報を含む予め設定された設定情報を参照して、前記プログラムのうち前記CPUにて実行されるCPU側実行プログラムの実行予測時間と、前記プログラムのうち前記GPUにて実行されるGPU側実行プログラムの実行予測時間と、前記CPUと前記GPUとの間におけるプログラム呼び出し時間と、を算出する第1算出ステップと、
    前記CPU側実行プログラムの実行予測時間、前記GPU側実行プログラムの実行予測時間、およびプログラム呼び出し時間を加算して前記プログラムの最大実行予測時間として第2算出ステップと、
    少なくとも前記第2算出ステップの演算結果の最大実行予測時間を出力する出力ステップと、
    を含むことを特徴とする、プログラム作成支援方法。
  10. コンピュータを、CPUおよびGPUを用いて実行されるプログラムの作成に際して、作成したプログラムの実行予測時間を求めるプログラム作成支援装置として機能させるためのコンピュータプログラムであって、
    実行予測時間を求める対象となるプログラムを取得するプログラム取得部と、
    前記プログラムの実行予測時間の算出に用いられる、CPUおよびGPUによる基本的処理に要する時間の情報を含む設定情報を記憶する設定情報記憶部と、
    前記設定情報記憶部に記憶された設定情報を参照して、前記プログラムのうち前記CPUにて実行されるCPU側実行プログラムの実行予測時間と、前記プログラムのうち前記GPUにて実行されるGPU側実行プログラムの実行予測時間と、前記CPUと前記GPUとの間におけるプログラム呼び出し時間と、を算出し、これらの時間を加算して前記プログラムの最大実行予測時間として算出する演算処理部と、
    前記演算処理部の演算結果の最大実行予測時間を出力する出力部と、
    を備えるプログラム作成支援装置としてコンピュータを機能させることを特徴とする、コンピュータプログラム。
JP2011044110A 2011-03-01 2011-03-01 プログラム作成支援装置、プログラム作成支援方法およびコンピュータプログラム Active JP5429214B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2011044110A JP5429214B2 (ja) 2011-03-01 2011-03-01 プログラム作成支援装置、プログラム作成支援方法およびコンピュータプログラム

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2011044110A JP5429214B2 (ja) 2011-03-01 2011-03-01 プログラム作成支援装置、プログラム作成支援方法およびコンピュータプログラム

Publications (2)

Publication Number Publication Date
JP2012181674A true JP2012181674A (ja) 2012-09-20
JP5429214B2 JP5429214B2 (ja) 2014-02-26

Family

ID=47012825

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2011044110A Active JP5429214B2 (ja) 2011-03-01 2011-03-01 プログラム作成支援装置、プログラム作成支援方法およびコンピュータプログラム

Country Status (1)

Country Link
JP (1) JP5429214B2 (ja)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2014194660A (ja) * 2013-03-28 2014-10-09 Fujitsu Ltd 算出方法、算出プログラム、および算出装置
JP2015106233A (ja) * 2013-11-29 2015-06-08 三菱日立パワーシステムズ株式会社 並列化支援装置、実行装置、制御システム、並列化支援方法及びプログラム
KR102257028B1 (ko) * 2020-10-06 2021-05-27 주식회사 딥이티 컴퓨팅 플랫폼 기반의 적응형 딥러닝 작업 할당 장치 및 방법

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH10143400A (ja) * 1996-11-07 1998-05-29 Fuji Electric Co Ltd 制御用計算機システムの性能評価方法
JPH1196047A (ja) * 1997-09-19 1999-04-09 Mitsubishi Electric Corp プログラム開発支援装置及びプログラム開発支援方法
JP2001184204A (ja) * 1999-12-27 2001-07-06 Hitachi Ltd モジュール実行順序決定方法、電子システム及びそのための媒体

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH10143400A (ja) * 1996-11-07 1998-05-29 Fuji Electric Co Ltd 制御用計算機システムの性能評価方法
JPH1196047A (ja) * 1997-09-19 1999-04-09 Mitsubishi Electric Corp プログラム開発支援装置及びプログラム開発支援方法
JP2001184204A (ja) * 1999-12-27 2001-07-06 Hitachi Ltd モジュール実行順序決定方法、電子システム及びそのための媒体

Non-Patent Citations (4)

* Cited by examiner, † Cited by third party
Title
CSNG200700831021; 伊藤他: 'GPGPUアプリケーションの開発を支援するための性能モデル' 情報処理学会論文誌 Vol.48,No.SIG13(ACS19), 20070815, p.235-246, 社団法人情報処理学会 *
CSNG200900515006; 横田他: 'GPGPUによる電源配線シミュレーションの高速化手法と評価' 電子情報通信学会技術研究報告 Vol.109,No.201, 20090924, p.39-44, 社団法人電子情報通信学会 *
JPN6013054741; 伊藤他: 'GPGPUアプリケーションの開発を支援するための性能モデル' 情報処理学会論文誌 Vol.48,No.SIG13(ACS19), 20070815, p.235-246, 社団法人情報処理学会 *
JPN6013054742; 横田他: 'GPGPUによる電源配線シミュレーションの高速化手法と評価' 電子情報通信学会技術研究報告 Vol.109,No.201, 20090924, p.39-44, 社団法人電子情報通信学会 *

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2014194660A (ja) * 2013-03-28 2014-10-09 Fujitsu Ltd 算出方法、算出プログラム、および算出装置
JP2015106233A (ja) * 2013-11-29 2015-06-08 三菱日立パワーシステムズ株式会社 並列化支援装置、実行装置、制御システム、並列化支援方法及びプログラム
KR102257028B1 (ko) * 2020-10-06 2021-05-27 주식회사 딥이티 컴퓨팅 플랫폼 기반의 적응형 딥러닝 작업 할당 장치 및 방법

Also Published As

Publication number Publication date
JP5429214B2 (ja) 2014-02-26

Similar Documents

Publication Publication Date Title
JP5644606B2 (ja) メッシュ数予測方法、解析装置及びプログラム
JP5683000B2 (ja) Pid制御器の構成方法、プログラム及びシステム
CN113486611B (zh) 芯片设计方法、芯片设计装置及非暂时性存储介质
CN112149211B (zh) 一种基于bim模型的幕墙的建模方法及系统
JP5429214B2 (ja) プログラム作成支援装置、プログラム作成支援方法およびコンピュータプログラム
CN109923498A (zh) 用于电力性能管理的应用剖析
WO2013084628A1 (ja) 製造ラインシミュレーション装置、データ入力支援装置、およびデータ入力支援方法
US20090319240A1 (en) Simulation apparatus, simulation control method, and computer product
CN113505562A (zh) 时钟树综合最优策略预测方法、系统及应用
JPWO2006100712A1 (ja) 設計支援装置、設計支援方法、設計支援プログラム
CN107122401A (zh) 向数据库存储数据的方法、设备、中间件设备和服务器
US20240054385A1 (en) Experiment point recommendation device, experiment point recommendation method, and semiconductor device manufacturing device
JP2012003618A (ja) 情報処理システム、情報処理方法、情報処理装置
JP2017167739A (ja) 寸法公差解析システム、寸法公差解析方法、3次元モデル生成プログラム及び記録媒体
CN112114998A (zh) 一种静态随机存储器中冗余信息修复方法、装置、存储介质及终端
CN106557312A (zh) 程序开发支援装置以及程序开发支援软件
US20180182047A1 (en) Operation support apparatus, operation support system, and information processing apparatus
US20180247238A1 (en) Work range visualization device and work range visualization method
JP2012068870A (ja) 最適化処理プログラム、方法及び装置
WO2024045090A1 (zh) 产品模型的仿真方法和装置
CN114357907B (zh) 一种适用于拉格朗日型粒子类数值模拟的并行方法
JP2019067238A (ja) 制御装置、制御方法および制御プログラム
JPH08292974A (ja) 制御系・電気回路・管路網の連成汎用解析方法及び装置
JP2005352670A (ja) シミュレーション装置及び検査装置
WO2023100545A1 (ja) 更新内容検証システム及び更新内容検証方法

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20130212

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20131028

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

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20131205

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20131118

R151 Written notification of patent or utility model registration

Ref document number: 5429214

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R151

S533 Written request for registration of change of name

Free format text: JAPANESE INTERMEDIATE CODE: R313533

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350