(57)【要約】【課題】ユーザにアプリケーションの並列化の手段を提供する。【解決手段】アプリケーションの並列化支援装置は、実行を開始してから要求された時間内に完了を求められるプログラムを複数のコアのいずれに実行させるかの選択を受け付けるコア選択受付部と、プログラムを、コアに割り当てるための指標を表示するコア選択支援情報表示部と、を備える。ユーザはコア選択支援情報表示部が表示する指標を参考にして適切にプログラムを実行するＣＰＵコアを選択することができる。【選択図】図１
2015106233.tif 000002
【特許請求の範囲】
【請求項１】
実行を開始してから要求された時間内に完了を求められるプログラムを複数のコアのいずれに実行させるかの選択を受け付けるコア選択受付部と、
前記プログラムを、前記コアに割り当てるための指標を表示するコア選択支援情報表示部と、
を備えることを特徴とするアプリケーションの並列化支援装置。
【請求項２】
前記指標は、前記選択を受け付けたコアにおいて前記プログラムを前記要求された時間内に完了するように実行させた場合における、当該コアの負荷率である
ことを特徴とする請求項１に記載のアプリケーションの並列化支援装置。
【請求項３】
前記指標は、前記選択を受け付けたコアにおいて前記プログラムだけを実行した場合における、当該プログラムの実行に要する時間である
ことを特徴とする請求項１又は請求項２に記載のアプリケーションの並列化支援装置。
【請求項４】
プログラムを構成する単位であるロジックシートを実行プログラムへ割り当てる操作を受け付けるロジックシート集約受付部と
を備えることを特徴とする請求項１から請求項３の何れか1項に記載のアプリケーションの並列化支援装置。
【請求項５】
複数の前記ロジックシート間における関係を表示するロジックシート関係出力部と
を備えることを特徴とする請求項４に記載のアプリケーションの並列化支援装置。
【請求項６】
実行するプログラムについて、請求項１から請求項５の何れか1項に記載のアプリケーションの並列化支援装置において前記コア選択受付部が受け付けたコアの識別子を取得し、取得した識別子が示すコアにおいて前記プログラムを実行することを特徴とするアプリケーションの実行装置。
【請求項７】
請求項６に記載のアプリケーションの実行装置によってプラントにおける装置の制御を行うことを特徴とするプラントの制御システム。
【請求項８】
実行を開始してから要求された時間内に完了を求められるプログラムを複数のコアのいずれに実行させるかの選択を受け付け、
前記プログラムを、前記コアに割り当てるための指標を表示する
ことを特徴とするアプリケーションの並列化支援方法。
【請求項９】
アプリケーションの並列化支援装置のコンピュータを、
実行を開始してから要求された時間内に完了を求められるプログラムを複数のコアのいずれに実行させるかの選択を受け付ける手段、
前記プログラムを、前記コアに割り当てるための指標を表示する手段
として機能させることを特徴とするプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、並列化支援装置、実行装置、制御システム、並列化支援方法及びプログラムに関する。
【背景技術】
【０００２】
ガスタービンなどのプラント設備で使用される制御システムにおいては、例えばプラントに備えられた計測器などから各種の状態量を取得しその状態量が示す変化に応じてプラントを適切に制御できるように速やかに応答することが求められる。その為、制御システムのＯＳ（Ｏｐｅｒａｔｉｎｇ  Ｓｙｓｔｅｍ）には所望の時間内に処理を完了することできるリアルタイムＯＳが採用されることが一般的である。また、そのような制御用システムにおけるコンピュータでは、制御対象をコントロールするために制御に必要な信号を入力しそれに応じて演算を行うという一連のサイクルを短い周期で繰り返す定周期演算に多くの時間を費やしていることが多い。
【０００３】
ところで、近年では汎用のＰＣサーバ等においてもマルチコアのＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）が搭載され、上記の定周期演算においてもマルチコアを利用した並列処理を行うことによって高速化を図ることが可能である。しかし、マルチコアに対応していないアプリケーションをマルチコアのＣＰＵが搭載されたコンピュータで実行させても並列化の効果はほとんど得られないことが一般的に知られている。マルチコアの能力を活用するためには、プログラマが専門的な知識を使ってそのアプリケーションのプログラムをマルチコアに対応するように書き換える必要がある。例えば特許文献１には、プログラム内の関数ごとにコアへ割り当て定義を行い、プログラマがその定義を読み込んでビルドしたプログラムを実行しながら期待する性能に近づけていく開発手法が記載されている。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２０１１−１３４０５５号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
一般にアプリケーションエンジニアはアプリケーションの仕様に精通しているがプログラミングの知識には精通していないことが多い。また、逆にプログラマはプログラミングができてもアプリケーションの仕様に精通していないことが多い。従ってアプリケーションエンジニアは、アプリケーションを構成するプログラムによる処理のうちどの処理が並列実行が可能かを容易に判断することができるが、アプリケーションを並列化させる技術がなかったためにその知識を用いてマルチコアの能力を引き出すことができなかった。
【０００６】
そこでこの発明は、上述の課題を解決することのできる並列化支援装置、実行装置、制御システム、並列化支援方法及びプログラムを提供することを目的としている。
【課題を解決するための手段】
【０００７】
本発明の第１の態様は、実行を開始してから要求された時間内に完了を求められるプログラムを複数のコアのいずれに実行させるかの選択を受け付けるコア選択受付部と、前記プログラムを、前記コアに割り当てるための指標を表示するコア選択支援情報表示部と、を備えることを特徴とするアプリケーションの並列化支援装置である。
【０００８】
また本発明の第２の態様における前記指標は、前記選択を受け付けたコアにおいて前記プログラムを前記要求された時間内に完了するように実行させた場合における、当該コアの負荷率であることを特徴とする。
【０００９】
また本発明の第３の態様における前記指標は、前記選択を受け付けたコアにおいて前記プログラムだけを実行した場合における、当該プログラムの実行に要する時間であることを特徴とする。
【００１０】
また本発明の第４の態様における並列化支援装置は、プログラムを構成する単位であるロジックシートを実行プログラムへ割り当てる操作を受け付けるロジックシート集約受付部を備えることを特徴とする。
【００１１】
また本発明の第５の態様における並列化支援装置は、複数の前記ロジックシート間における関係を表示するロジックシート関係出力部を備えることを特徴とする。
【００１２】
また本発明の第６の態様は、実行するプログラムについて、上記の並列化支援装置において前記コア選択受付部が受け付けたコアの識別子を取得し、取得した識別子が示すコアにおいて前記プログラムを実行することを特徴とするアプリケーションの実行装置である。
【００１３】
また本発明の第７の態様は、第６の態様の実行装置によってプラントにおける装置の制御を行うことを特徴とするプラントの制御システムである。
【００１４】
また本発明の第８の態様は、実行を開始してから要求された時間内に完了を求められるプログラムを複数のコアのいずれに実行させるかの選択を受け付け、前記プログラムを、前記コアに割り当てるための指標を表示することを特徴とするアプリケーションの並列化支援方法である。
【００１５】
また本発明の第９の態様は、アプリケーションの並列化支援装置のコンピュータを、実行を開始してから要求された時間内に完了を求められるプログラムを複数のコアのいずれに実行させるかの選択を受け付ける手段、前記プログラムを、前記コアに割り当てるための指標を表示する手段として機能させることを特徴とするプログラムである。
【発明の効果】
【００１６】
本発明によれば、アプリケーションエンジニアが自身の知識を用いてマルチコアの能力を引き出すことができるようになる。
【図面の簡単な説明】
【００１７】
【図１】本発明の第一の実施形態による並列化支援装置及び実行装置を含む制御システムの概略図である。
【図２】本発明の第一の実施形態における制御ロジック演算機能の説明図である。
【図３】本発明の第一の実施形態による並列化支援装置の機能ブロック図である。
【図４】本発明の第一の実施形態による並列化支援装置の操作画面の一例を示す第１の図である。
【図５】本発明の第一の実施形態による並列化支援装置の操作画面の一例を示す第２の図である。
【図６】本発明の第一の実施形態による並列化支援装置の処理フローを示す図である。
【図７】本発明の第一の実施形態による並列化支援装置の操作画面の一例を示す第３の図である。
【図８】本発明の第一の実施形態による並列化支援装置の操作画面の一例を示す第４の図である。
【発明を実施するための形態】
【００１８】
＜第一の実施形態＞
以下、本発明の第一の実施形態によるアプリケーションの並列化支援装置及び実行装置を図１〜図８を参照して説明する。
図１は第１の実施形態によるアプリケーションの並列化支援装置及び実行装置を含む制御システムの概略図である。
図１に示すように本実施形態の制御システムは、並列化支援装置１０と、実行装置２０と、制御対象装置３０と、を備えている。
並列化支援装置１０は、コンピュータを備えており、ユーザが使用する設計ツールのアプリケーションプログラムがインストールされ稼働している。
実行装置２０は、コンピュータを備えており、リアルタイムＯＳ（以下、ＲＴＯＳと称する）や制御用アプリケーションプログラムがインストールされ稼働している。実行装置２０のコンピュータは、マルチコアのＣＰＵを備えている。実行装置２０は、制御システムにおけるコントローラであって制御対象装置３０を制御する。なお、以下ではアプリケーションプログラムをアプリケーションと略して表記する。
制御対象装置３０は、制御対象となる例えばガスタービンなどの制御対象３１と、センサや操作端などの制御機器３２で構成されている。
【００１９】
この制御システムでは、並列化支援装置１０の設計ツールによって、並列化支援装置１０が実行装置２０のコンピュータに備わる複数のＣＰＵコアのうちどのコアで制御用アプリケーションを構成する様々なプログラムを実行するかをユーザが指定する。符号１００は、ユーザが操作する設計ツールの操作画面の一例を示している。また、実行装置２０では制御用アプリケーションを構成する様々なプログラムを指定されたコアによって実行し、制御対象装置３０の挙動を制御する。
【００２０】
ここで、図２を使用して以下で使用する用語の説明を行う。まず実行装置２０が実行する制御用アプリケーションを制御ロジック演算機能アプリケーションという。制御ロジック演算機能アプリケーションは、複数の機能演算グループと呼ばれるプログラムから構成されている。機能演算グループが示すプログラムは実行単位のプログラムモジュールであって、ＲＴＯＳ等のタスク、すなわちスレッドやプロセスとして実行される。各機能演算グループが示すプログラムは、その機能演算グループの処理に課せられた演算周期等に基づき優先度付けされ、ＲＴＯＳのスケジューリング機能によってスケジューリングされて実行装置２０の備えるＣＰＵによって実行される。
【００２１】
各機能演算グループは、複数のロジックシートと呼ばれるより小さい単位のプログラムで構成されている。ロジックシートは、逐次実行が必要な一纏まりの処理に対応するプログラムであって、複数の機能演算ブロックとそれらの処理順序や入出力の関係を示したデータフローの情報とを含んでいる。図２においてはデータフローを矢印で表している。ここで、機能演算ブロックとは、予め定められた実数演算、整数演算、論理演算を行う演算の単位である。各機能演算グループ内のロジックシートが示すプログラムは登録もしくは設定された順番に実行され、各ロジックシート内の機能演算ブロックは自動付番もしくは設定された順番に実行される。なお、各ロジックシートが示す処理は互いに実行順序が決まっており、機能演算グループ内の処理は、逐次的に実行される。
また、以下においてユーザは、制御システムの仕様、要求に精通しているアプリケーションエンジニアの意味で用いる。プログラマは、コーディングを行うことはできるが、制御対象の制御方法(制御ロジック)に対する深い知識を有しない者という意味に用いる。上記の機能演算グループやロジックシートが示すプログラムの作成はプログラマが行う。
【００２２】
図３は、本発明の第一の実施形態による並列化支援装置の機能ブロック図である。
図３を用いて本実施形態における並列化支援装置１０について説明する。
図３に示す通り、並列化支援装置１０は、コア選択支援情報表示部１０１、コア選択受付部１０２、選択コア記録部１０３、機能演算グループ出力部１０４、ロジックシート関係出力部１０５、ロジックシート集約受付部１０６、コア情報出力部１０７、操作検出部１０８、記憶部２００を備えている。
【００２３】
コア選択支援情報表示部１０１は、ユーザがどの機能演算グループのプログラムをどのコアで実行させるかを決定するのを助ける指標となる情報を出力する。指標となる情報とは、例えば機能演算グループのプログラムを実行するのに要する時間やＣＰＵコアごとのＣＰＵ負荷率などである。プラントなどの制御システムでは、少しの処理の遅れによって制御に狂いが生じ思わぬ事故などを招くおそれがあることから各処理が確実に定められた時間内に完了することが求められる場合が多い。従ってマルチコアのＣＰＵが持つ能力を活用し、各機能演算グループのプログラムを各コアに割り当てて実行することで負荷分散し、各処理が遅れずに実行できるようにすることが望ましい。ユーザは、コア選択支援情報表示部１０１が出力する情報を参照することで、各機能演算グループの処理が所望の時間内に完了できるかや、各コアに負荷が平滑化して割り当てられているかなどを確認することができる。
【００２４】
コア選択受付部１０２は、ユーザがどの機能演算グループのプログラムをどのコアで実行させるかを選択した結果の情報の入力を受け付ける。
選択コア記録部１０３は、コア選択受付部１０２が受け付けた情報に基づいて、各機能演算グループの識別子とコアの識別子とを対応付けて記憶部２００に記録する。
機能演算グループ出力部１０４は、コアに対して割り当てを行う対象となる機能演算グループやロジックシートの一覧を出力する。ユーザは、機能演算グループ出力部１０４が出力する一覧から機能演算グループを選択してその機能演算グループのプログラムを実行するコアの割り当てを行う。
【００２５】
ロジックシート関係出力部１０５は、ロジックシート間の関係を出力する。ロジックシート間の関係とは、「ロジックシート１」の処理と「ロジックシート２」の処理との実行順序や依存関係のことをいう。例えば、「ロジックシート１」と「ロジックシート２」のプログラムは、「ロジックシート１」、「ロジックシート２」の順に逐次的に実行しなければならない、あるいは「ロジックシート１」、「ロジックシート２」の処理と「ロジックシート３」の処理は並列して実行が可能であるといったことである。
【００２６】
ロジックシート集約受付部１０６は、ユーザによるロジックシートを実行プログラムである機能演算グループへ割り当てる操作を受け付ける。具体的には、ユーザが機能演算グループに新たにロジックシートを追加したり、あるロジックシートを別の機能演算グループへ移動させる場合などにその変更の入力を受け付ける。例えば、「機能演算グループ１」のプログラムが「ロジックシート１」〜「ロジックシート１０」で構成されていて、この「機能演算グループ１」のプログラムに１つのコアを占有させて処理を行ったとしても制御システムが要求する処理時間内に処理を完了させることができないような場合を考える。このような場合に「機能演算グループ１」のプログラムが「ロジックシート１」〜「ロジックシート５」と「ロジックシート６」〜「ロジックシート１０」に分割できるとする。すると、ユーザは、ロジックシート集約受付部１０６の機能を使用して「機能演算グループ１」を例えば「機能演算グループ１Ａ」、「機能演算グループ１Ｂ」に分割することができる。さらにユーザは、「機能演算グループ１Ａ」のプログラムに「ロジックシート１」〜「ロジックシート５」を割り当て、「機能演算グループ１Ｂ」のプログラムに「ロジックシート６」〜「ロジックシート１０」を割り当てることができる。なお、ユーザが１つの機能演算グループにロジックシートを割り当てる操作のことを「集約する」という。ロジックシート集約受付部１０６は、集約結果を記憶部２００に記録する。
【００２７】
コア情報出力部１０７は、ユーザが割り当てたＣＰＵコアと機能演算グループとの対応関係を出力する。
操作検出部１０８は、ユーザによるマウスやキーボードによる入力操作等を検出し、その操作指示情報を取得する。
記憶部２００は、実行装置２０ごと機能演算グループごとにＣＰＵ負荷率や処理に要する時間を格納している。ＣＰＵ負荷率は制御システムが要求する時間内に実行が完了するようにその機能演算グループのプログラムを実行した場合においてＣＰＵが自分の処理能力のうちどの程度をそのプログラムの実行に費やしたかを示す値である。この値は、実際に１つのコアを占有させて機能演算グループのプログラムを実行したときのＣＰＵ負荷率の実測値の平均値でもよいし、処理の複雑さなどに基づいて計算した値でもよい。また、処理に要する時間は、機能演算グループのプログラムを１つのコアを占有して実行した場合に実行の開始から完了までに要する時間である。
【００２８】
図４は本実施形態による並列化支援装置の操作画面の一例を示す第１の図である。
図４を用いてユーザが機能演算グループにＣＰＵコアを割り当てる際に用いる操作画面について説明する。
前提として実行装置２０のＣＰＵには、２つのコアが備えられているとする。また、ユーザが所定の操作により、これからコアの割り当てを行う対象となるプログラムを含むアプリケーションとして「制御ロジック演算機能１」を選択したものとする。
図４（ａ）の領域４１には、機能演算グループ出力部１０４が出力した「制御ロジック演算機能１」の機能演算グループ及びロジックシートの一覧が表示されている。
図４（ａ）の領域４２には、２つのＣＰＵコアのうちの一つである「コア１」へ割り当てられた機能演算グループが表示されている。図４（ａ）の符号４３は所定の操作によってユーザに選択された機能演算グループを示している。所定の操作とは、例えばある機能演算グループを「コア１」へ割り当てる場合、領域４１でその機能演算グループを選択し、領域４２へドラッグアンドドロップするといった操作でもよい。図４（ａ）の符号４４は、「機能演算グループ１」のプログラムを「コア１」へ割り当てて実行したときのＣＰＵ負荷率を示している。図４（ａ）の符号４５は、「コア１」へ割り当てられた機能演算グループ全てによるＣＰＵ負荷率を示している。これらのＣＰＵ負荷率は、コア選択支援情報表示部１０１が出力した情報である。同様にして図４（ａ）の領域４６には、「コア２」へ割り当てられた機能演算グループとそれぞれのプログラムを実行したときのＣＰＵ負荷率が表示されている。
【００２９】
この図４（ａ）の例の場合、「コア１」に「機能演算グループ１」が割り当てられ、２つのコアのうちの残りの一つである「コア２」に「機能演算グループ２」、「機能演算グループ３」、「機能演算グループ４」が割り当てられている。「機能演算グループ１」のＣＰＵ負荷率は５０％（符号４４）であるから「コア１」のＣＰＵ負荷率の総計は５０％となる。それに対し、「機能演算グループ２」のＣＰＵ負荷率は４０％（符号４７）、「機能演算グループ３」のＣＰＵ負荷率は５０％（符号４８）、「機能演算グループ４」のＣＰＵ負荷率は２０％（符号４９）であるから、「コア２」のＣＰＵ負荷率の総計は１１０％（符号５０）である。
ユーザはこの画面を見て「コア２」のＣＰＵ負荷率は１００％を超えているので、「コア２」に割り当てられた「機能演算グループ２」、「機能演算グループ３」、「機能演算グループ４」のプログラムは要求処理時間内に実行を完了できないことを把握することができる。また、ユーザは、所定の操作によって例えば「機能演算グループ４」を「コア２」から「コア１」へ割り当て直すことができる。所定の操作とは、この図の場合領域４６で「機能演算グループ４」を選択し、領域４２へドラッグアンドドロップするといった操作でもよい。
【００３０】
図４（ｂ）は、そのようにしてユーザが機能演算グループのコアへの割り当てを変更した結果の画面である。図４（ｂ）が示す画面では「コア１」に「機能演算グループ１」と「機能演算グループ４」が割り当てられ、「コア２」に「機能演算グループ２」と「機能演算グループ３」が割り当てられている。このように割り当てることによって「コア１」のＣＰＵ負荷率の総計は７０％（符号４５）、「コア２」のＣＰＵの負荷率の総計は９０％（符号５０）となり、１００％以内に抑えることができる。
なお、負荷率１００％をプログラムの割り当ての上限とするのは例であって、その基準は、例えば各コアのＣＰＵ負荷率の上限を６０％以内にするなどであってもよい。
符合４０は、ＯＫボタンを示している。操作検出部１０８がユーザによるＯＫボタン４０の押下を検出すると、選択コア記録部１０３が各コアの負荷率の総計が所定の閾値（１００％など）を超えていないか否かを判断し、超えていなければ選択コア記録部１０３が各機能演算グループの識別子と割り当てられたコアの識別子とを対応付けて記憶部２００に記録する。各コアの負荷率の総計が所定の閾値を超えていればコア情報出力部１０７が、エラーメッセージを出力してもよい。
【００３１】
図５は本実施形態による並列化支援装置の操作画面の一例を示す第２の図である。
図５を用いてコア選択支援情報表示部１０１が出力する指標となる情報の他の例について説明する。
図５は、図４における符号４２、４６の領域のみを示した図である。この図５（ａ）は、コア選択支援情報表示部１０１がＣＰＵ負荷率ではなく、機能演算グループごとに所要時間と要求処理時間を出力する例を示している。所要時間は、機能演算グループをユーザが指定したＣＰＵコアに割り当てて実行させた場合における実行完了に要する時間のことである。この値は、例えば記憶部２００に格納された「処理に要する時間」とＣＰＵ負荷率の総計とから計算した値である。例えば、「機能演算グループ１」の「処理に要する時間」が５０ｍｓｅｃで、ＣＰＵ負荷率の総計が２００％であるときの所要時間は１００ｍｅｃであると計算してもよい。要求処理時間は、その機能演算グループが示すプログラムの実行に要求される処理時間の上限値である。コア選択支援情報表示部１０１は、要求処理時間の代わりにその機能演算グループのプログラムを実行する周期を示す制御周期を出力してもよい。
この図の場合、「コア１」に割り当てられている「機能演算グループ１」及び「機能演算グループ４」の所要時間はどちらも要求処理時間内に収まっている（符号５１、５２）。例えば「機能演算グループ１」の要求処理時間は１５ｍｓｅｃであるのに対し、所要時間は１０ｍｓｅｃである。しかし、「コア２」に割り当てられている「機能演算グループ２」及び「機能演算グループ３」の所要時間はどちらも要求処理時間内に収まっていない（符号５３、５４）。
この表示を見て、ユーザは「機能演算グループ２」と「機能演算グループ３」の処理が要求処理時間内に完了できないことを把握し、ＣＰＵコアへの機能演算グループの割り当て方を検討することができる。
【００３２】
図５（ｂ）は、コア選択支援情報表示部１０１が指標となる情報を出力する別の例を示している。この例では、各コアへの負荷の状況が機能演算グループごとに「高」、「中」、「低」で表されている（符号５５、５６、５８、５９）。そしてコアごとに機能演算グループを割り当てた結果の総負荷がやはり「高」、「中」、「低」で表示されている（符号５７，６０）。総負荷の表示については、例えば１つの機能演算グループにおける負荷が「低」ならば、「２０％」、「中」ならば「４０％」、高ならば「６０％」などの数値に置き換えて、それらを合計した総負荷の値が「４０％」未満なら「低」、「４０％」以上「６０％」未満なら「中」などと表示してもよい。仮に総負荷が予め定められた最大負荷（例えば１００％）を超えている場合は、「過大」などの表示をしてもよい。また、「高」、「中」、「低」ではなく、負荷の状況に応じて「赤」、「黄」、「青」などの色別に表示してもよい。
【００３３】
図６は第一の実施形態による並列化支援装置の処理フローを示す図である。
図６の処理フローを用いて並列化支援装置において機能演算グループを実行するコアを設定する処理について説明する。
前提として、ユーザによる設定開始を指示する所定の操作により制御ロジック演算機能アプリケーションとそのアプリケーションを実行する実行装置２０が指定されているものとする。
まず、機能演算グループ出力部１０４が予め指定された制御ロジック演算機能アプリケーションの識別子を用いて記憶部２００からその制御ロジック演算機能アプリケーションに含まれる機能演算グループ及びロジックシートの情報を読み出す。そして機能演算グループ出力部１０４は、機能演算グループの一覧情報を例えば図４の領域４１で示したように出力する（ステップＳ１）。
また、コア情報出力部１０７が、指定された実行装置２０の識別子を用いて記憶部２００からその実行装置２０の備えるＣＰＵのコア数を取得する。そしてコア情報出力部１０７は、図４の領域４２、領域４６で示したようにコアに機能演算グループを割り当てる領域をコアの個数分表示する。また、コア情報出力部１０７は記憶部２００からユーザが指定した機能演算グループとそのプログラムを実行させるＣＰＵコアとの関係を読み出し、ＣＰＵコアと機能演算グループと対応関係を出力する（ステップＳ２）。例えば、図４〜５で示したように領域４２には「コア１」に割り当てた機能演算グループの一覧を出力する。
【００３４】
次に、操作検出部１０８がユーザによる機能演算グループをコアへ割り当てるユーザの操作を検出する（ステップＳ３）。すると、操作検出部１０８が割り当て操作があった旨の信号をコア選択支援情報表示部１０１、コア選択受付部１０２に出力する。そして、コア選択受付部１０２は、実行装置２０の識別子と、ユーザがドラッグアンドドロップ操作などにより割り当てたＣＰＵコアの識別子と機能演算グループの識別子とを対応付けてメモリ等に格納する。
次に、コア選択支援情報表示部１０１は、コア選択受付部１０２が格納した情報をメモリから読み取り、機能演算グループの識別子と実行装置２０の識別子とを用いて記憶部２００から当該機能演算グループのプログラムを当該実行装置２０で実行した場合におけるＣＰＵ負荷や所要時間など指標となる情報を読み出す。そして、コア選択支援情報表示部１０１は図４の符号４４などで示したようＣＰＵ負荷などを出力する。また、コア選択支援情報表示部１０１は、コア単位でＣＰＵ負荷率の総計を計算して図４の符号４５等で示したように出力する（ステップＳ４）。
【００３５】
次に操作検出部１０８がユーザによる機能演算グループのコアへの割り当てが完了したかどうかを検出する（ステップＳ５）。具体的には、操作検出部１０８がユーザによるＯＫボタン４０の押下を検出すると、割り当てが完了したと判断すればよい。操作検出部１０８が割り当て完了を検出しない場合（ステップＳ５＝Ｎｏ）、ステップＳ３からの処理を繰り返す。
操作検出部１０８が割り当て完了を検出した場合（ステップＳ５＝Ｙｅｓ）、選択コア記録部１０３は、コア選択受付部１０２がメモリに格納した情報を読み取り、実行装置２０の識別子とユーザが指定したＣＰＵコアの識別子と機能演算グループの識別子とを対応付けて記憶部２００に記録する（ステップＳ６）。
以上で本処理フローを終了する。
【００３６】
そしてこのようにしてユーザがコアの割り当てを行った機能演算グループのプログラムが実行装置２０において実行されるときは、実行装置２０のタスク制御プログラムが、各機能演算グループが示すプログラムにユーザが指定したＣＰＵコアを割り当てて実行を行う。記憶部２００に格納された機能演算グループとＣＰＵコアとの対応関係の情報は、実行装置２０が例えばネットワークを介して取得する。
【００３７】
本実施形態によれば、ユーザがアプリケーションを構成するプログラムをマルチコアのうちのいずれに実行させるかを選択することができる。また、ユーザは自分でプログラムを各コアに割り当てた場合の影響（ＣＰＵ負荷や処理時間）を把握することができる。それによってマルチコアに対応する為のプログラミング技術を持たないユーザであっても、自身が持つアプリケーションの仕様に関する知識を用いてマルチコアＣＰＵの能力を引き出すことができるようになる。
【００３８】
図７は本実施形態による並列化支援装置の操作画面の一例を示す第３の図である。
図７を用いて機能演算グループ出力部１０４が出力する、機能演算グループ一覧の他の例について説明する。
図７（ａ）の符合６１は、関係表示ボタンである。操作検出部１０８がユーザによる関係表示ボタン６１の押下を検出すると、ロジックシート関係出力部１０５が図７（ｂ）の情報を出力する。図７（ａ）の例の場合、「コア１」に「機能演算グループ１」が割り当てられ、「機能演算グループ１」のプログラムを実行したときのＣＰＵ負荷率が１１０％であるため、「コア１」のＣＰＵ負荷率の総計も１１０％となり１００％を超えてしまう。そこでユーザは、図７（ｂ）に示すロジックシート間の関係を示す図を参照しながら「機能演算グループ１」が分割できないかを検討する。
【００３９】
図７（ｂ）は、ロジックシート関係出力部１０５が出力するロジックシート間の関係を示す図である。この図は、機能演算グループ１を構成する「ロジックシート１−１」、「ロジックシート１−２」、「ロジックシート１−３」の依存関係を表示する図の一例である。この図は、「ロジックシート１−１」の処理と「ロジックシート１−２」の処理は逐次実行が必要であり、「ロジックシート１−３」の処理は、これらの処理とは独立して実行できることを示している。
ユーザは、この図に示す情報から例えば「機能演算グループ１」を２つのプログラム「機能演算グループ１Ａ」、「機能演算グループ１Ｂ」に分割して「ロジックシート１−１」及び「ロジックシート１−２」と、「ロジックシート１−３」とを別々の機能演算グループに集約し、さらに「機能演算グループ１Ａ」、「機能演算グループ１Ｂ」のそれぞれのプログラムを別々のＣＰＵコアに割り当てることを検討することもできる。
なお、ロジックシート間の関係を示す情報は予め記憶部２００に格納されており、ロジックシート関係出力部１０５がその情報を記憶部２００から読み出して所定の記述方法でロジックシート間の関係を示す情報を出力してもよい。ロジックシート関係出力部１０５が出力するロジックシート間の関係を示す情報は、例えばポップアップ表示されてもよい。また、ロジックシート関係出力部１０５は、ロジックシート間の関係に加えて、例えばＣＰＵ負荷率などの処理の重さに関する情報を各ロジックシートごとに出力してもよい。
【００４０】
図８は本実施形態による並列化支援装置の操作画面の一例を示す第４の図である。
図８は、図７の状態からユーザが所定の操作によって「機能演算グループ１」を「機能演算グループ１Ａ」と「機能演算グループ１Ｂ」に分け、「機能演算グループ１Ａ」に「ロジックシート１−１」及び「ロジックシート１−２」を集約し、「機能演算グループ１Ｂ」に「ロジックシート１−３」を集約した結果の操作画面の一例である。図８は、ロジックシートを集約した結果、「機能演算グループ１Ａ」のプログラムを実行したときのＣＰＵ負荷率は９５％、「機能演算グループ１Ｂ」のプログラムを実行したときのＣＰＵ負荷率は１５％となり、さらに「機能演算グループ１Ｂ」のプログラムを「コア２」に割り当てることで、「コア１」のＣＰＵ負荷率の総計が９５％（符号４５）、「コア２」のＣＰＵ負荷率の総計が７５％（符号５０）となったことを示している。
【００４１】
本実施形態によればユーザは各機能演算グループにおけるロジックシートの集約数を変更しの並列化を調整することができる。それによって各コアへのプログラムの割り当てをより柔軟に平滑化することが可能になり、コアの利用効率を高め、処理の高速化を図ることができる。
【００４２】
ところで、図８のように割り当てた「機能演算グループ１Ａ」と「機能演算グループ１Ｂ」のプログラムは別々のコアで実行される為、同期を取るような仕組みを利用しない限り実行のタイミングが異なる。例えば、「機能演算グループ１Ａ」のプログラムと「機能演算グループ１Ｂ」のプログラムとを別々のコアに割り当てて実行させると、「ロジックシート１−２」の処理が一定の周期で２回実行されている間に「ロジックシート１−３」の処理が１回しか実行されないことも起こり得る。さらに「ロジックシート１−２」プログラムと「ロジックシート１−３」プログラムとの実行結果を用いる後続の「ロジックシート１−４」と、「ロジックシート１−２」プログラムの実行結果だけを用いる「ロジックシート１−５」が存在するとする。この場合、「ロジックシート１−４」のプログラムが「ロジックシート１−３」のプログラムの実行完了を待ってから処理が開始されるのに対して、「ロジックシート１−５」のプログラムは「ロジックシート１−２」のプログラムが完了すると直ぐに実行される。このとき「ロジックシート１−４」と「ロジックシート１−５」の処理を実行するタイミングのずれによる影響が、プラントを制御する上で許容できるかどうかといった判断は、プログラマでは困難である場合が多い。仮にユーザがそのずれがプラントを制御する上で許容できないと判断すれば、ユーザは、「ロジックシート１−２」と「ロジックシート１−３」を例えば「機能演算グループ１Ａ」に集約することができる。ここで「機能演算グループ１Ａ」のプログラムが１回実行されると「ロジックシート１−２」及び「ロジックシート１−３」の処理が1回ずつ実行されるように設定されているとする。するとユーザが上記のように「機能演算グループ１Ａ」に集約し、「機能演算グループ１Ａ」のプログラムを実行すれば、「ロジックシート１−２」の処理と「ロジックシート１−３」の処理は同じ回数だけ実行されるため上記のようなずれは生じない。なお、このようにロジックシートを集約した結果ＣＰＵ負荷率の総和が１００％を超える場合、ユーザは、他の性能の良いＣＰＵが搭載された実行装置２０で「機能演算グループ１Ａ」のプログラムを実行することを検討することもできる。
本実施形態によればこのような場合でもユーザは、ロジックシート関係出力部１０５が出力する情報や自身の持つ制御システムに関する知識に基づいてロジックシートを適切に集約して１つの機能演算グループとし、それらを別々のコアに割り当てることでＣＰＵ資源をより有効に利用することができる。
【００４３】
図７から図８への機能演算グループの分割とロジックシートの集約は例えば以下のような処理によって実現される。
ユーザによる機能演算グループ作成指示の操作を操作検出部１０８が検出すると、操作検出部１０８は、その指示信号をロジックシート集約受付部１０６に出力する。ロジックシート集約受付部１０６は、追加した機能演算グループを加えた各機能演算グループとロジックシートとの対応関係（この場合新たに生成した機能演算グループを構成するロジックシートはまだ存在しない）を生成し、記憶部２００に格納する。一方、機能演算グループ出力部１０４は新たに生成された機能演算グループとロジックシートとの対応関係を示す一覧情報を記憶部２００から読み出し例えば図４の領域４１で示したように出力する。
次にユーザによるロジックシートの集約操作を操作検出部１０８が検出すると、操作検出部１０８は、その指示信号をロジックシート集約受付部１０６に出力する。そしてロジックシート集約受付部１０６は、「機能演算グループ１Ａ」の識別子と「ロジックシート１−１」及び「ロジックシート１−２」の識別子とを対応付けて記憶部２００に格納する。また、ロジックシート集約受付部１０６は、「機能演算グループ１Ｂ」の識別子と「ロジックシート１−３」の識別子とを対応付けて記憶部２００に格納する。そして、機能演算グループ出力部１０４は新たに生成された機能演算グループとロジックシートとの対応関係を示す一覧情報を記憶部２００から読み出し領域４１に出力する。また、コア情報出力部１０７はＣＰＵコアと機能演算グループとの対応関係を記憶部２００から読み出し例えば図４の領域４２、領域４６で示したように出力する。
【００４４】
なお、上述の並列化支援装置は内部にコンピュータを有している。そして、上述した並列化支援装置の各処理の過程は、プログラムの形式でコンピュータ読み取り可能な記録媒体に記憶されており、このプログラムをコンピュータが読み出して実行することによって、上記処理が行われる。ここでコンピュータ読み取り可能な記録媒体とは、磁気ディスク、光磁気ディスク、ＣＤ−ＲＯＭ、ＤＶＤ−ＲＯＭ、半導体メモリ等をいう。また、このコンピュータプログラムを通信回線によってコンピュータに配信し、この配信を受けたコンピュータが当該プログラムを実行するようにしてもよい。
【００４５】
また、上記プログラムは、前述した機能の一部を実現するためのものであってもよい。さらに、前述した機能をコンピュータシステムにすでに記録されているプログラムとの組み合わせで実現できるもの、いわゆる差分ファイル（差分プログラム）であってもよい。
【００４６】
その他、本発明の趣旨を逸脱しない範囲で、上記した実施の形態における構成要素を周知の構成要素に置き換えることは適宜可能である。また、この発明の技術範囲は上記の実施形態に限られるものではなく、本発明の趣旨を逸脱しない範囲において種々の変更を加えることが可能である。
【符号の説明】
【００４７】
１０・・・並列化支援装置
２０・・・実行装置
３０・・・制御対象装置
３１・・・制御対象
３２・・・制御機器
１０１・・・コア選択支援情報表示部
１０２・・・コア選択受付部
１０３・・・選択コア記録部
１０４・・・機能演算グループ出力部
１０５・・・ロジックシート関係出力部
１０６・・・ロジックシート集約受付部
１０７・・・コア情報出力部
１０８・・・操作検出部
２００・・・記憶部
【図１】
2015106233.tif 000003
【図２】
2015106233.tif 000004
【図３】
2015106233.tif 000005
【図４】
2015106233.tif 000006
【図５】
2015106233.tif 000007
【図６】
2015106233.tif 000008
【図７】
2015106233.tif 000009
【図８】
2015106233.tif 000010