CPUおよびGPUを用いて実行されるプログラムの作成に際して、作成したプログラムの実行予測時間を求めるプログラム作成支援装置であって、実行予測時間を求める対象であるプログラムを取得するプログラム取得部と、前記プログラムの実行予測時間の算出に用いられる、CPUおよびGPUによる基本的処理に要する時間の情報を含む設定情報を記憶する設定情報記憶部と、前記設定情報記憶部に記憶された設定情報を参照して、前記プログラムのうち前記CPUにて実行されるCPU側実行プログラムの実行予測時間と、前記プログラムのうち前記GPUにて実行されるGPU側実行プログラムの実行予測時間と、前記CPUと前記GPUとの間におけるプログラム呼び出し時間と、を算出し、これらの時間を加算して前記プログラムの最大実行予測時間として算出する演算処理部と、前記演算処理部の演算結果の最大実行予測時間を出力する出力部と、を備えることを特徴とする、プログラム作成支援装置。前記GPUは、複数の第1演算処理部と、前記各第1演算処理部に複数搭載され、当該第1演算処理部より高速演算処理可能な第2演算処理部と、を備え、前記演算処理部は、前記GPU側実行プログラムの実行予測時間を、前記第1演算処理部により実行される第1プログラムの実行時間と、前記第2演算処理部により実行される第2プログラムの実行時間とを加算して算出することを特徴とする、請求項1に記載のプログラム作成支援装置。前記演算処理部は、前記GPU側実行プログラムの第1プログラムの実行時間を、当該第1プログラムにおけるロジック処理の実行に要するロジック実行時間と、前記各第1演算処理部に設けられた第1メモリを参照する第1メモリ参照時間と、前記GPUによりアクセス可能な共通メモリを参照する共通メモリ参照時間と、を加算して算出することを特徴とする、請求項2に記載のプログラム作成支援装置。前記演算処理部は、前記GPU側実行プログラムの第2プログラムの実行時間を、当該第2プログラムにおけるロジック処理の実行に要するロジック実行時間と、前記各第2演算処理部に設けられた第2メモリを参照する第2メモリ参照時間と、前記GPUによりアクセス可能な共通メモリを参照する共通メモリ参照時間と、を加算して算出することを特徴とする、請求項2または3に記載のプログラム作成支援装置。前記演算処理部は、前記CPU側実行プログラムの実行時間を、当該CPU側実行プログラムにおけるロジック処理の実行に要するロジック実行時間と、前記CPUによりアクセス可能なメモリを参照するメモリ参照時間と、を加算して算出することを特徴とする、請求項1~4のいずれか1項に記載のプログラム作成支援装置。前記演算処理部は、前記プログラム内における前記CPUと前記GPUとの間のプログラムの呼び出し数と、前記CPUと前記GPUとの間でのプログラムの呼び出し1回に要する基本呼び出し時間とに基づいて、前記CPUと前記GPUとの間におけるプログラム呼び出し時間を算出することを特徴とする、請求項1~5のいずれか1項に記載のプログラム作成支援装置。複数の入力領域からなり、前記解析対象のプログラムを実行されるハードウェアに応じて所定の前記入力領域に分離して入力可能な入力画面を表示する表示部と、前記入力画面の前記各入力領域に情報を入力する入力部と、をさらに備え、前記プログラム取得部は、前記入力画面の各入力領域から前記解析対象のプログラムを取得することを特徴とする、請求項1~6のいずれか1項に記載のプログラム作成支援装置。前記解析対象のプログラムは、プロセス制御システムにおけるオンライン最適化制御に用いられることを特徴とする、請求項1~7のいずれか1項に記載のプログラム作成支援装置。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との間におけるプログラム呼び出し時間と、を算出し、これらの時間を加算して前記プログラムの最大実行予測時間として算出する演算処理部と、前記演算処理部の演算結果の最大実行予測時間を出力する出力部と、を備えるプログラム作成支援装置としてコンピュータを機能させることを特徴とする、コンピュータプログラム。しかし、上記特許文献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を適切に用いたアプリケーションプログラムの作成に際して、設定情報を用いて最大実行予測時間を従来よりも高精度に評価することにより、当該プログラムの実システムでの安定した動作が可能なアプリケーションプログラムを従来よりも効率的に作成することを支援することが可能なプログラム作成支援装置、プログラム作成支援方法およびコンピュータプログラムを提供することができる。以下に添付図面を参照しながら、本発明の好適な実施の形態について詳細に説明する。なお、本明細書及び図面において、実質的に同一の機能構成を有する構成要素については、同一の符号を付することにより重複説明を省略する。<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は、ブリッジを介して、PCIPeripheralComponentInterconnect/Interfaceバスなどの外部バスに接続されている。入力装置109は、例えば、マウス、キーボード、タッチパネル、ボタン、スイッチおよびレバーなどユーザが操作する操作手段である。また、入力装置109は、例えば、赤外線やその他の電波を利用したリモートコントロール手段いわゆる、リモコンであってもよいし、プログラム作成支援装置10の操作に対応したPDA等の外部接続機器123であってもよい。さらに、入力装置109は、例えば、上記の操作手段を用いてユーザにより入力された情報に基づいて入力信号を生成し、CPU101あるいはGPU102に出力する入力制御回路などから構成されている。プログラム作成支援装置10のユーザは、この入力装置109を操作することにより、プログラム作成支援装置10に対して各種のデータを入力したり処理動作を指示したりすることができる。出力装置111は、取得した情報をユーザに対して視覚的または聴覚的に通知することが可能な装置で構成される。このような装置として、CRTディスプレイ装置、液晶ディスプレイ装置、プラズマディスプレイ装置、ELディスプレイ装置およびランプなどの表示装置や、スピーカおよびヘッドホンなどの音声出力装置や、プリンタ装置、携帯電話、ファクシミリなどがある。出力装置911は、例えば、プログラム作成支援装置10が行った各種処理により得られた結果を出力する。具体的には、表示装置は、プログラム作成支援装置10が行った各種処理により得られた結果を、テキストまたはイメージで表示する。他方、音声出力装置は、再生された音声データや音響データ等からなるオーディオ信号をアナログ信号に変換して出力する。ストレージ装置113は、プログラム作成支援装置10の記憶部の一例として構成されたデータ格納用の装置である。ストレージ装置113は、例えば、HDDHardDiskDrive等の磁気記憶部デバイス、半導体記憶デバイス、光記憶デバイス、または光磁気記憶デバイス等により構成される。このストレージ装置113は、CPU101あるいはGPU102が実行するプログラムや各種データ、および外部から取得した各種のデータなどを格納する。ドライブ115は、記録媒体用リーダライタであり、プログラム作成支援装置10に内蔵、あるいは外付けされる。ドライブ115は、装着されている磁気ディスク、光ディスク、光磁気ディスク、または半導体メモリ等のリムーバブル記録媒体121に記録されている情報を読み出して、RAM105に出力する。また、ドライブ115は、装着されている磁気ディスク、光ディスク、光磁気ディスク、または半導体メモリ等のリムーバブル記録媒体121に記録を書き込むことも可能である。リムーバブル記録媒体121は、例えば、CDメディア、DVDメディア、Blu-rayメディア等である。また、リムーバブル記録媒体121は、コンパクトフラッシュ登録商標CompactFlash:CF、フラッシュメモリ、または、SDメモリカードSecureDigitalmemorycard等であってもよい。また、リムーバブル記録媒体121は、例えば、非接触型ICチップを搭載したICカードIntegratedCircuitcardまたは電子機器等であってもよい。接続ポート117は、機器をプログラム作成支援装置10に直接接続するためのポートである。接続ポート117の一例として、USBUniversalSerialBusポート、IEEE1394ポート、SCSISmallComputerSystemInterfaceポート、RS-232Cポート等がある。この接続ポート117に外部接続機器123を接続することで、プログラム作成支援装置10は、外部接続機器123から直接各種のデータを取得したり、外部接続機器123に各種のデータを提供したりする。通信装置119は、例えば、通信網125に接続するための通信デバイス等で構成された通信インターフェースである。通信装置119は、例えば、有線または無線LANLocalAreaNetwork、Bluetooth登録商標、またはWUSBWirelessUSB用の通信カード等である。また、通信装置119は、光通信用のルータ、ADSLAsymmetricDigitalSubscriberLine用のルータ、または、各種通信用のモデム等であってもよい。この通信装置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炉のレンガ間の熱交換計算処理が並列処理される。仮に、すべてのレンガについて独立してレンガ間の熱交換計算処理を実行すると、mnl×k個の処理を順次実行することになるが、ストリーミングプロセッサ144に並列処理させることで、3×k個の処理を実行する時間でレンガ間の熱交換計算処理を実行させることができる。レンガ間の熱交換計算処理と同様に、熱プラントの各燃焼室におけるガスとレンガとの間での熱交換計算処理や、送風管における空洞とガスとの間およびレンガとレンガとの間での各熱交換計算処理も、マルチプロセッサ140のスペック等の特性を考慮して、可能な限り並列計算させることができる。これにより、オンライオンリアルタイム制御の要件である必要な時間許容時間内に処理を収めることができる。このように、GPU102の各ハードウェア特性を考慮して、熱プラント内の伝熱計算のメッシュ分割の計算処理を最適に割り当て設計することで、厳密物理モデルのプログラミング実行を達成することができる。そして、このような計算処理の最適な割り当ては、本実施形態に係るプログラム作成支援装置10を利用することで容易に実現することができる。以上、添付図面を参照しながら本発明の好適な実施形態について詳細に説明したが、本発明はかかる例に限定されない。本発明の属する技術の分野における通常の知識を有する者であれば、特許請求の範囲に記載された技術的思想の範疇内において、各種の変更例または修正例に想到し得ることは明らかであり、これらについても、当然に本発明の技術的範囲に属するものと了解される。例えば、上記実施形態では、解析対象のプログラムを実行する演算処理ユニットとして、CPUとGPUとをそれぞれ1つずつ用いた場合について説明したが、本発明はかかる例に限定されない。GPUは複数あってもよい。この場合、予測処理画面1内に、各GPUに対してそれぞれGPU側プログラム入力領域を設けることで、プログラム取得部によって各GPUにて実行されるプログラムを取得することが可能となり、各プログラムについて実行予測時間を算出することが可能となる。