(57)【要約】【課題】  サーバの利用コストが発生する次の所定時刻までに、進捗が遅れているタスクを適切なサーバに移行すること。【解決手段】  タスクの実行に際して所定時刻ごとに利用コストが発生する複数のサーバと通信可能な情報処理装置が、タスクの進捗を示す情報を、該タスクを実行している第一のサーバから取得する。そして、次に利用コストが発生する所定時刻とタスクの移行に要する時間とに基づくタイミングで、取得された情報に基づいてタスクの進捗が遅れているかを判定する。タスクの進捗が遅れていると判定された場合に、第一のサーバよりも処理能力の高い第二のサーバを選択し、選択された第二のサーバに対して、タスクの実行を指示する。【選択図】  図２０
2018092311.tif 000002
【特許請求の範囲】
【請求項１】
タスクの実行に際して所定時刻ごとに利用コストが発生する複数のサーバと通信可能な情報処理装置であって、
前記タスクの進捗を示す情報を、該タスクを実行している第一のサーバから取得する取得手段と、
次に利用コストが発生する前記所定時刻と前記タスクの移行に要する時間とに基づくタイミングで、前記取得された情報に基づいて前記タスクの進捗が遅れているかを判定する判定手段と、
前記判定手段により前記タスクの進捗が遅れていると判定された場合に、前記第一のサーバよりも処理能力の高い第二のサーバを選択する選択手段と、
前記選択された第二のサーバに対して、前記タスクの実行を指示する指示手段と、
を備えることを特徴とする情報処理装置。
【請求項２】
前記タイミングは、次に利用コストが発生する前記所定時刻から前記タスクの移行に要する時間を減じた時刻又は該時刻より前の時刻であることを特徴とする請求項１に記載の情報処理装置。
【請求項３】
前記選択手段は、所定の期限までに前記タスクを完了することの可能なサーバを前記第二のサーバとして選択することを特徴とする請求項１または２に記載の情報処理装置。
【請求項４】
前記タスクは、画像処理を複数回実行するタスクであり、
前記取得手段は、前記タスクの進捗を示す情報を、該タスクの画像処理が実行される度に取得することを特徴とする請求項１乃至３のいずれか１項に記載の情報処理装置。
【請求項５】
前記指示手段は、更に、前記第一のサーバに対して、前記タスクの実行に必要な情報を送信するよう指示することを特徴とする請求項１乃至４のいずれか１項に記載の情報処理装置。
【請求項６】
前記情報処理装置は、
前記タスクを実行するサーバの環境に応じたプログラムを、前記選択された第二のサーバに送信する送信手段
を更に備えることを特徴とする請求項１乃至５のいずれか１項に記載の情報処理装置。
【請求項７】
前記環境は、前記タスクを実行するサーバのハードウェア構成であることを特徴とする請求項６に記載の情報処理装置。
【請求項８】
前記プログラムは、前記タスクを実行するサーバの環境において最も高速に動作するプログラムであることを特徴とする請求項６または７に記載の情報処理装置。
【請求項９】
前記情報が示す進捗は、前記タスクの実行結果の評価値であることを特徴とする請求項１乃至８のいずれか１項に記載の情報処理装置。
【請求項１０】
前記サーバは、仮想マシンであることを特徴とする請求項１乃至９のいずれか１項に記載の情報処理装置。
【請求項１１】
タスクの実行に際して所定時刻ごとに利用コストが発生する複数のサーバと通信可能な情報処理装置の制御方法であって、
前記情報処理装置の取得手段が、前記タスクの進捗を示す情報を、該タスクを実行している第一のサーバから取得する取得ステップと、
前記情報処理装置の判定手段が、次に利用コストが発生する前記所定時刻と前記タスクの移行に要する時間とに基づくタイミングで、前記取得された情報に基づいて前記タスクの進捗が遅れているかを判定する判定ステップと、
前記情報処理装置の選択手段が、前記判定ステップにより前記タスクの進捗が遅れていると判定された場合に、前記第一のサーバよりも処理能力の高い第二のサーバを選択する選択ステップと、
前記情報処理装置の指示手段が、前記選択された第二のサーバに対して、前記タスクの実行を指示する指示ステップと、
を備えることを特徴とする情報処理装置の制御方法。
【請求項１２】
タスクの実行に際して所定時刻ごとに利用コストが発生する複数のサーバと通信可能な情報処理装置の制御方法を実行可能なプログラムであって、
前記情報処理装置を、
前記タスクの進捗を示す情報を、該タスクを実行している第一のサーバから取得する取得手段と、
次に利用コストが発生する前記所定時刻と前記タスクの移行に要する時間とに基づくタイミングで、前記取得された情報に基づいて前記タスクの進捗が遅れているかを判定する判定手段と、
前記判定手段により前記タスクの進捗が遅れていると判定された場合に、前記第一のサーバよりも処理能力の高い第二のサーバを選択する選択手段と、
前記選択された第二のサーバに対して、前記タスクの実行を指示する指示手段、
として機能させることを特徴とするプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、情報処理装置、その制御方法、及びプログラムに関する。
【背景技術】
【０００２】
ＣＴ（Ｃｏｍｐｕｔａｔｉｏｎａｌ  Ｔｏｍｏｇｒａｐｈｙ）やＭＲＩ（Ｍａｇｎｅｔｉｃ  Ｒｅｓｏｎａｎｃｅ  Ｉｍａｇｉｎｇ）などの画像診断装置では、患者を撮影することにより医用画像が生成される。この医用画像に対する画像解析の実行は、医師や技師が保有するワークステーションや、画像診断装置内で実行される。
【０００３】
一方、近年は、遠隔地にあるサーバの計算資源を共有利用する、いわゆるクラウドで画像解析を実行する手法も普及しつつある。クラウドはサービス提供者自身がサーバを管理するプライベートクラウドと、クラウドプロバイダと呼ばれるサーバ管理業者から有料でサーバをレンタルするパブリッククラウドに大別される。
【０００４】
パブリッククラウドは、多くの場合、ＣＰＵ、アクセラレータ、メモリ、記憶媒体などを仮想化した仮想マシンを、仮想マシンの種類と利用時間に応じた料金と支払うことで利用するものである。特許文献１には、タスクが期限内に完了するような仮想マシンを選択し、タスクの実行をスケジューリングする仕組みが開示されている。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特表２０１６−５０７１２１号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
仮想マシンの料金体系は、仮想マシンを利用した時間に応じて利用コストが発生する従量制と、仮想マシンを利用した時間に関わらず一定の利用コストが発生する定額制とが存在する。
【０００７】
特に従量制の料金体系の場合、仮想マシンで実行中のタスクの進捗が遅れてしまうと、このタスクが完了するまでに時間がかかってしまい、当初想定していた利用コストよりも金額が高くなってしまう可能性がある。また、進捗の遅れを取り戻すために、現在の仮想マシンから処理能力の高い他の仮想マシンにタスクを移行することも考えられるが、タスクの移行中に利用コストが発生してしまう可能性もある。特許文献１ではこれらの課題を解決するための手段が何ら開示されていない。
【０００８】
本発明は、サーバの利用コストが発生する次の所定時刻までに、進捗が遅れているタスクを適切なサーバに移行することを目的とする。
【課題を解決するための手段】
【０００９】
上記の目的を達成するために本発明の情報処理装置は、タスクの実行に際して所定時刻ごとに利用コストが発生する複数のサーバと通信可能な情報処理装置であって、前記タスクの進捗を示す情報を、該タスクを実行している第一のサーバから取得する取得手段と、次に利用コストが発生する前記所定時刻と前記タスクの移行に要する時間とに基づくタイミングで、前記取得された情報に基づいて前記タスクの進捗が遅れているかを判定する判定手段と、前記判定手段により前記タスクの進捗が遅れていると判定された場合に、前記第一のサーバよりも処理能力の高い第二のサーバを選択する選択手段と、前記選択された第二のサーバに対して、前記タスクの実行を指示する指示手段と、を備えることを特徴とする。
【発明の効果】
【００１０】
本発明により、サーバの利用コストが発生する次の所定時刻までに、進捗が遅れているタスクを適切なサーバに移行することが可能となる。
【図面の簡単な説明】
【００１１】
【図１】実施例１〜３における、情報処理システムのシステム構成の一例を示す図である。
【図２】実施例１〜３における、情報処理装置１０のハードウェア構成の一例を示す図である。
【図３】実施例１〜３における、情報処理装置１０の機能ブロックの一例を示す図である。
【図４】実施例１における処理の流れの一例を示すフローチャートである。
【図５】実施例２における処理の流れの一例を示すフローチャートである。
【図６】実施例３における処理の流れの一例を示すフローチャートである。
【図７】実施例４における、画像解析システム１００のシステム構成の一例を示す図である。
【図８】実施例４における、画像閲覧装置１０２のハードウェア構成の一例を示す図である。
【図９】実施例４における、解析画像選択部６０１を実行する際にヒューマンインタフェース２０４に表示する画面の一例を示す図である。
【図１０】実施例４における、第一の仮想マシン１０８、および第二の仮想マシン１０９のハードウェア構成の一例を示す図である。
【図１１】実施例４における、仮想マシン１０８および仮想マシン１０９の機能ブロックを示す図である。
【図１２】実施例４における、画像閲覧装置１０２の機能ブロックの一例を示す図である。
【図１３】実施例４における、仮想マシン価格表６０６、プログラム管理表６０８、仮想マシン利用管理表６１１、実行時間管理表６０７、プログラム特性管理表７０１の一例を示す図である。
【図１４】実施例４における、仮想マシン１０８および仮想マシン１０９の処理の流れの一例を示すフローチャートである。
【図１５】実施例４における、画像位置合わせを行う画像解析プログラムの概要の一例を示すフローチャートと、位置合わせ処理の詳細の一例を示すフローチャートである。
【図１６】実施例４における、画像閲覧装置１０２が実行する処理のうち、監視部６０９と移行制御部６１０が実行する処理の流れの一例を示すフローチャートである。
【図１７】実施例４における、画像閲覧装置１０２が実行する処理のうち、実行中の画像解析タスクに関して、コスト最適化の一例を示すフローチャートと、仮想マシンの移行制御の一例を示すフローチャートである。
【図１８】実施例４における、画像閲覧装置１０２が実行する処理のうち、画像解析処理の概要の一例を示すフローチャートである。
【図１９】各実施例の概要を説明するための図である。
【図２０】各実施例の概要を説明するための図である。
【発明を実施するための形態】
【００１２】
以下、各実施例について、図面を参照して説明する。尚、以下の各実施例（実施形態）は本発明を限定するものではなく、また、各実施例で説明されている特徴の組み合わせの全てが本発明の解決手段に必須のものとは限らない。尚、同一の構成については、同じ符号を付して説明する。
【００１３】
まず、各実施例の概要の一例について図１９及び図２０を用いて説明する。各実施例は、所定時刻ごとに利用コスト（利用料金）が発生する従量制の料金体系である仮想マシンに関する。利用コストは、図１９（Ａ）の２０１１−１〜２０１１−６に示すように、仮想マシンを利用し続けることによって、定期的に（所定時刻ごとに）発生する。また、利用コストが発生すると、次の所定時刻まで（次に利用コストが発生するまで）、ユーザは仮想マシンを利用することができる。各実施例は利用コストが所定時刻ごとに発生するものとして説明するが、これに限らない。利用コストが不定期に発生する形態であってもよい。
【００１４】
また、図１９（Ａ）の例は、第一の仮想マシンでタスク（例えば、画像解析処理や位置合わせ処理、画像変換処理等の実行すべき処理のことをいう。）を実行している場合を示している。このタスクは、２０１１−５が示す時刻までに完了する予定であったが、進捗が遅れており、完了予定時刻が２０１１−６の示す時刻を超えてしまうものである。
【００１５】
この遅れを改善するために、情報処理装置が、第一の仮想マシンよりも処理能力の高い第二の仮想マシンにタスクを移行する仕組みが考えられる。図１９（Ｂ）はこの移行に関する例である。図１９（Ｂ）は、現在時刻２０１２から移行処理を開始し、２０１４が示す時刻に移行が完了することを示している。これにより、タスクの進捗の遅れを改善することができるものの、第一の仮想マシンは、２０１１−５が示す時刻を超えて利用されているので、２０１１−５の時刻において利用コストが発生してしまう。
【００１６】
そこで、図２０に示すように、現在時刻２０１２が、次に利用コストが発生する所定時刻２０１１−５から移行に要する時間２０１５を減じた時刻になった場合に、情報処理装置が進捗の遅れ（移行の要否）を判定する。そして、進捗が遅れていると判定された場合（移行が必要である場合）に、情報処理装置が第一の仮想マシンよりも処理能力の高い第二の仮想マシンにタスクを移行する。こうすることで、次に利用コストが発生する所定時刻を考慮しつつ、進捗の遅れを改善できる。
【００１７】
尚、各実施例では仮想化技術により動作する仮想マシンを例に説明を行うが、物理的なマシンであるサーバであってもよい。また、サーバという表現は、物理的なマシンとしてのサーバと仮想マシンとを含むものである。
【００１８】
以下、図１９及び図２０に示す各実施例の概要を詳細に説明する。
【００１９】
＜実施例１〜３＞
図１は、実施例１〜３における情報処理システムのシステム構成の一例を示す図である。情報処理システムは、情報処理装置１０とクラウドシステム１１とを含む。
【００２０】
情報処理装置１０は、パーソナルコンピュータである。情報処理装置１０は、１または複数の仮想マシンと通信可能であり、仮想マシンに対するタスクの実行指示やその実行結果の閲覧を行うことができる。すなわち、タスクの実行に際して所定時刻ごとに利用コストが発生する複数のサーバと通信可能な情報処理装置に相当する。尚、情報処理装置１０は、サーバや携帯端末、更にはタブレット端末であってもよい。
【００２１】
クラウドシステム１１は、クラウドプロバイダによって管理された複数の種類の物理マシンを仮想化した複数の種類の仮想マシンで構成されている。そして、各仮想マシンはインターネット１０５に接続されている。尚、情報処理装置１０とクラウドシステム１１とが通信可能であれば、ＬＡＮ（Ｌｏｃａｌ  Ａｒｅａ  Ｎｅｔｗｏｒｋ）であってもよい。ネットワークの種類は特に問わない。
【００２２】
１０６は第一の仮想マシン群であり、第一の仮想マシン１０８の集合である。第一の仮想マシン群１０６は、情報処理装置１０からクラウドプロバイダへの利用開始要求に応じて利用可能となり、利用終了要求に応じて利用を終了するように構成されている。なお、第一の仮想マシン群１０６が連続で利用されている間、所定の間隔で利用料金（利用コスト）が発生する。
【００２３】
１０７は、先に説明した第一の仮想マシン群１０６よりも処理能力の高いプロセッサを有する第二の仮想マシン１０９の集合である。第二の仮想マシン群１０７も、情報処理装置１０からクラウドプロバイダへの利用開始要求に応じて利用可能となり、利用終了要求に応じて利用を終了するように構成されている。なお、第二の仮想マシン群１０７も連続で利用されている間、所定の間隔で利用料金（利用コスト）が発生する。
【００２４】
尚、本実施例では第一の仮想マシン（群）と第二の仮想マシン（群）の２つを例にとって説明するが、仮想マシン（群）の数は３つ以上であってもよい。また、複数の情報処理装置１０を１つの情報処理装置１０として動作させてもよい。
【００２５】
図２は、実施例１〜３における、情報処理装置１０のハードウェア構成の一例を示す図である。
【００２６】
２０１はシステムバスであり、各ハードウェア部品がデータをやりとりするための通信路である。
【００２７】
２０２はＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）であり、プログラムを実行し、各機能部を制御するものである。
【００２８】
２０３は通信Ｉ／Ｆ（Ｉｎｔｅｒｆａｃｅ）であり、インターネット１０５に接続されており、各種情報の送受信を行うためのインタフェースである。
【００２９】
２０４はタッチパネル、キーボード、ディスプレイなど、データの表示と操作入力機能を備えたヒューマンインタフェースである。
【００３０】
２０５はＤＲＡＭ（Ｄｙｎａｍｉｃ  Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）などの揮発メモリであり、プログラムやデータを一時的に保持するため利用される。
【００３１】
２０６はＨＤＤ（Ｈａｒｄ  Ｄｉｓｋ  Ｄｒｉｖｅ）などの不揮発メモリであり、プログラムやデータが格納されている。
【００３２】
図３は、実施例１〜３における、情報処理装置１０の機能ブロックの一例を示す図である。情報処理装置１０は機能部として、取得部３１、判定部３２、選択部３３、指示部３４、送信部３５を備える。より具体的には、実施例１と実施例２の情報処理装置１０は、取得部３１、判定部３２、選択部３３、指示部３４を備え、実施例３の情報処理装置１０は、取得部３１、判定部３２、選択部３３、指示部３４、送信部３５を備える。
【００３３】
取得部３１は、仮想マシンで実行中のタスクの進捗を示す情報を取得するための機能部である。第一の仮想マシンでタスクを実行しているのであれば、取得部３１は第一の仮想マシンからタスクの進捗を示す情報を取得する。タスクの進捗を示す情報とは、タスクの完了予定時刻やタスクの進捗の割合、タスクの実行結果を評価した評価値（タスクの実行結果の評価値に相当する。）などが挙げられる。
【００３４】
判定部３２は、取得部３１により取得された情報に基づいて、タスクの進捗が遅れているか（タスクを移行する必要があるか）を判定するための機能部である。判定部３２が判定を行うタイミングは、タスクの実行に際して次に利用コストが発生する所定時刻から、タスクを移行する場合に必要となる時間を減じた時刻である。または、該タイミングは、タスクの実行に際して次に利用コストが発生する所定時刻から、タスクを移行する場合に必要となる時間を減じた時刻よりも前の時刻である。このように、判定部３２は、次に利用コストが発生する所定時刻とタスクの移行に要する時間とに基づくタイミングで、取得部３１により取得された情報に基づいてタスクの進捗が遅れているかを判定する。
【００３５】
選択部３３は、タスクを実行する仮想マシンを選択するための機能部である。また、選択部３３は、判定部３２によりタスクの進捗が遅れていると判定された場合に、タスクを実行中の仮想マシンよりも処理能力の高い仮想マシンを選択する。タスクの進捗が遅れていると判定された場合に選択する仮想マシンは、所定の期限（例えば、ユーザから指定された時刻）までにタスクを完了することの可能な仮想マシンを選択することが望ましい。
【００３６】
指示部３４は、選択部３３により選択された仮想マシンに対してタスクの実行を指示するための機能部である。また、実施例２と実施例３では、指示部３４は、タスクを実行中の仮想マシンに対して、タスクの実行に必要な情報（実施例２では中間データと称する。）を送信するよう指示するものとして機能する。尚、中間データは、例えば処理途中のデータやパラメータ等である。
【００３７】
送信部３５は、実施例３において、タスクを実行する仮想マシンの環境に応じたプログラムを、選択部３３により選択された仮想マシンに送信するための機能部である。仮想マシンを動作させる物理的なマシンごとに、プロセッサやメモリ等のハードウェアの種別が異なる。そのため、そのハードウェアの環境に適したプログラムをあらかじめＨＤＤ等に記憶しておき、送信部３５が送信先の仮想マシンに応じてプログラムを取得して、これを送信する。
【００３８】
図４は、実施例１における処理の流れの一例を示すフローチャートである。以下説明するＳ４１乃至Ｓ４５の各ステップは、情報処理装置１０のＣＰＵが各機能部を動作することにより実現される処理である。
【００３９】
まず、タスクの実行が開始されたら図４に示す一連の処理が開始される。ステップＳ４１では、情報処理装置１０の取得部３１は、タスクの進捗を示す情報を、該タスクを実行している仮想マシン（第一のサーバ、または第一の仮想マシン）から取得する。タスクの進捗を示す情報は、情報処理装置１０からタスクを実行している仮想マシンに対して要求することにより取得してもよいし、該仮想マシンが定期的または不定期に情報処理装置１０に対して送信するようにしてもよい。
【００４０】
また、仮想マシンが画像処理を複数回実行するようなタスクの場合、その画像処理が実行される度に、仮想マシンが情報処理装置１０にタスクの進捗を示す情報を送信してもよい。すなわち、タスクの進捗を示す情報を、該タスクの画像処理が実行される度に取得する取得手段に相当する。
【００４１】
ステップＳ４２では、情報処理装置１０の判定部３２は、現在時刻が所定のタイミングであるか否かを判定する。より具体的には、判定部３２は、現在時刻が、タスクの実行に際して次に利用コストが発生する所定時刻から該タスクの移行に要する時間を減じた時刻であるか否かを判定する。または、判定部３２は、現在時刻が、タスクの実行に際して次に利用コストが発生する所定時刻から該タスクの移行に要する時間を減じた時刻よりも所定時間前（例えば１分前や５分前等）の時刻であるか否かを判定するようにしてもよい。ここでいう次に利用コストが発生する所定時刻とは、利用コストが発生する所定時刻のうち、現在時刻よりも後の最も近い所定時刻を指す。このようなタイミングである場合に、後述するステップＳ４３乃至ステップＳ４５を実行する。
【００４２】
また、タスクの移行に要する時間は、あらかじめ決められた時間であってもよいし、タスクの移行に要する時間を予測した結果であってもよい。タスクの移行に要する時間を予測する場合には、タスクを中断するための処理時間や新たな仮想マシンを起動する時間、新たな仮想マシンに処理途中の中間データを送信するための時間等を考慮し、タスクの移行に要する時間を算出すればよい。
【００４３】
判定部３２が、現在時刻が所定のタイミングであると判定した場合には、情報処理装置１０はステップＳ４３に処理を進める。判定部３２が、現在時刻が所定のタイミングでないと判定した場合には、情報処理装置１０は本一連の処理を終了する。
【００４４】
ステップＳ４３では、情報処理装置１０の判定部３２は、ステップＳ４１で取得したタスクの進捗を示す情報に基づいてタスクの進捗が遅れているか（タスクの移行が必要か）を判定する。すなわち、次に利用コストが発生する所定時刻とタスクの移行に要する時間とに基づくタイミングで、タスクの進捗を示す情報に基づいてタスクの進捗が遅れているかを判定する判定手段に相当する。タスクの進捗が遅れているか否かは、タスク実行前またはタスク実行後に情報処理装置１０または仮想マシンが見積もった進捗予定と、ステップＳ４１で取得した情報が示す進捗状況とを比較することにより判定部３２が判定すればよい。または、タスクの完了予定時間を予測し、ユーザからあらかじめ指定された所定の期限を該完了予定時間が超えてしまう場合に、タスクの進捗が遅れていると判定部３２が判定してもよい。更には、ユーザからタスク実行中に指定された所定の期限を該完了予定時刻が超えてしまう場合に、タスクの進捗が遅れていると判定部３２が判定してもよい。
【００４５】
判定部３２が、タスクの進捗が遅れていると判定した場合には、情報処理装置１０はステップＳ４４に処理を進める。判定部３２が、タスクの進捗が遅れていないと判定した場合には、情報処理装置１０は本一連の処理を終了する。すなわち、タスクの進捗が遅れていない場合は、情報処理システムはタスクの移行を行わない。
【００４６】
ステップＳ４４では、情報処理装置１０の選択部３３は、現在タスクを実行している仮想マシンよりも処理能力の高い仮想マシン（第二のサーバ、または第二の仮想マシン）を選択する。すなわち、タスクの進捗が遅れていると判定された場合に、第一のサーバよりも処理能力の高い第二のサーバを選択する選択手段に相当する。ここでいう仮想マシンの処理能力の高さとは、仮想マシンを動作するサーバのプロセッサの処理速度やメモリの容量、通信速度、プログラムの実行速度等のいずれか又はすべてを鑑みた性能の高さである。クラウドプロバイダはあらかじめ処理能力の異なる複数の仮想マシンを提供しているので、この仮想マシンの中から現在利用中の仮想マシンよりも上位の仮想マシンを選択すればよい。
【００４７】
また、タスクを完了すべき期限が定められている場合もある。この場合には、選択部３３はこの期限までにタスクを完了することの可能な仮想マシンを選択することが望ましい。すなわち、所定の期限までにタスクを完了することの可能なサーバを第二のサーバとして選択する選択手段に相当する。例えば、情報処理装置１０が残りのタスクを各仮想マシンで実行した場合の完了時刻を予測することで、期限内にタスクを完了することの可能な仮想マシンを抽出するようにすればよい。尚、完了時刻の予測は、各仮想マシンが実行してもよい。
【００４８】
ステップＳ４５では、情報処理装置１０の指示部３４は、ステップＳ４４で選択された仮想マシンに対して、タスクの未処理分の実行を指示する。すなわち、選択された第二のサーバに対して、タスクの実行を指示する指示手段に相当する。より具体的には、指示部３４は、今までタスクを実行していた仮想マシンに対してタスクの実行を中断するよう指示する。そして、選択された仮想マシンに対してタスクの実行に必要な情報を情報処理装置１０から送信し、情報処理装置１０が該仮想マシンに対してタスクの実行を開始するよう要求する。このようにして、情報処理システムはタスクを新たな仮想マシンに移行する。尚、指示部３４は、選択された仮想マシンにタスクを最初から実行するよう指示してもよいし、タスクを途中から実行するよう指示してもよいが、タスクの未処理部分を実行するよう指示することが望ましい。
【００４９】
ステップＳ４５の処理が完了したら、情報処理装置１０は、本一連の処理を終了する。尚、情報処理装置１０は、図４に示す一連の処理をタスクが完了するまで繰り返し実行する。そして、タスクが完了した場合には、情報処理装置１０は繰り返しを止める。
【００５０】
以上のような流れで情報処理装置１０が各処理を実行することにより、サーバ（仮想マシン）の利用コストが発生する次の所定時刻までに、進捗が遅れているタスクを適切なサーバに移行することが可能となる。
【００５１】
図５は、実施例２における処理の流れの一例を示すフローチャートである。以下説明するＳ４１乃至Ｓ４６の各ステップは、情報処理装置１０のＣＰＵが各機能部を動作することにより実現される処理である。
【００５２】
尚、ステップＳ４１乃至ステップＳ４４の各ステップは、実施例１と同様であるので説明は省略する。実施例２では、実施例１のステップＳ４１乃至ステップＳ４５に新たに追加されたステップＳ４６について説明する。
【００５３】
ステップＳ４４で仮想マシンの選択が完了したら、情報処理装置１０はステップＳ４６に処理を移行する。ステップＳ４６では、情報処理装置１０の指示部３４は、現在タスクを実行している仮想マシンに対して、中間データの送信を指示する。すなわち、第一のサーバに対して、タスクの実行に必要な情報を送信するよう指示する指示手段に相当する。中間データの送信先は、ステップＳ４４で選択した仮想マシンであってもよいし、情報処理装置１０であってもよい。情報処理装置１０に中間データが送信された場合には、指示部３４は、ステップＳ４４で選択された仮想マシンに対して情報処理装置１０が中間データを送信する。このように、選択された仮想マシンに中間データを移行することで、該仮想マシンはタスクの再開をスムーズに行うことが可能となる。
【００５４】
図６は、実施例３における処理の流れの一例を示すフローチャートである。以下説明するＳ４１乃至Ｓ４７の各ステップは、情報処理装置１０のＣＰＵが各機能部を動作することにより実現される処理である。
【００５５】
尚、ステップＳ４１乃至ステップＳ４６の各ステップは、実施例１及び実施例２と同様であるので説明は省略する。実施例３では、実施例２のステップＳ４１乃至ステップＳ４６に新たに追加されたステップＳ４７について説明する。また、ステップＳ４６は必須ではないので、実施例１にステップＳ４７を追加したフローチャートであってもよい。
【００５６】
ステップＳ４６で中間データの送信指示が完了したら、ステップＳ４７に処理を移行する。ステップＳ４７では、情報処理装置１０の送信部３５は、ステップＳ４４で選択された仮想マシンの環境に応じたプログラムを該仮想マシンに送信する。すなわち、タスクを実行するサーバの環境（ハードウェア構成）に応じたプログラムを、選択された第二のサーバに送信する送信手段に相当する。このプログラムは、タスクを実行するためのプログラムである。例えば、タスクが画像解析処理であれば、該プログラムは画像解析処理を実行可能なプログラムである。ユーザは情報処理装置１０のＨＤＤに仮想マシンの環境に応じたプログラムを複数記憶させておき、送信部３５が選択された仮想マシンの環境に対応するプログラムを取得して、該仮想マシンにこれを送信する。
【００５７】
各仮想マシン（サーバ）は、それぞれ異なるプロセッサやメモリ等を搭載していることがある。つまり、その環境に応じた適切なプログラムを実行することができれば、効率的にタスクを実行することが可能となる。例えば、現在タスクを実行している仮想マシンにＧＰＵが存在しない場合、該仮想マシンはＣＰＵで画像処理を行うプログラムを実行しなければならない。しかし、移行先の仮想マシンにＧＰＵが存在すれば、ＧＰＵで画像処理を行うプログラムが利用できるので、こうしたプログラムを情報処理装置１０から送信する。こうすることで、タスクの処理速度を向上させることができる。
【００５８】
＜実施例４＞
次に、実施例４について説明する。実施例４では、医用画像の画像解析処理を仮想マシンに実行させる場合を例にとり、より具体的な説明を行う。尚、各実施例は、医用画像や画像解析処理に限らず適用可能な仕組みである。
【００５９】
図７は本実施例における画像解析システムのシステム構成の一例を示す図である。
【００６０】
１００はパブリッククラウドシステムであり、クラウドプロバイダによって管理された複数の種類の物理マシンを仮想化した複数の種類の仮想マシンで構成され、各仮想マシンはインターネット１０５に接続されている。
【００６１】
１０１は病院内システムであり、画像閲覧装置１０２や画像診断装置１０３などと、それらを相互に通信可能とする病院内ネットワークに接続されている。なお、病院内ネットワークはインターネット１０５等のネットワークにも接続され、各装置からインターネットにも接続可能に構成されている。
【００６２】
１０２は画像閲覧装置であり、医師などの操作者に対し、画像診断装置１０３（詳細は後述）が形成した画像の表示、および画像解析を行うことができる。
【００６３】
１０３は画像診断装置であり、ＣＴ（Ｃｏｍｐｕｔａｔｉｏｎａｌ  Ｔｏｍｏｇｒａｐｈｙ）やＭＲＩ（Ｍａｇｎｅｔｉｃ  Ｒｅｓｏｎａｎｃｅ  Ｉｍａｇｉｎｇ）などである。この画像診断装置１０３が形成した画像（一般に画像再構成と呼ばれる処理により形成される）は、画像サーバ１０４（詳細は後述）に送信されて保管される。
【００６４】
１０４は画像サーバであり、画像診断装置１０３が形成した画像を保管するものである。また病院内ネットワークを通じて受信した画像閲覧装置１０２からの要求に応じて、保管された画像の送信や保存処理を行う。
【００６５】
１０５はインターネットである。パブリッククラウド１００と病院内システム１０１のデータの通信路である。
【００６６】
１０６は第一の仮想マシン群であり、第一の仮想マシン１０８（詳細は後述）の集合である。第一の仮想マシン群１０６は、画像閲覧装置１０２からクラウドプロバイダへの利用開始要求に応じて利用可能となり、利用終了要求に応じて利用を終了するように構成されている。なお、第一の仮想マシン群１０６が連続で利用されている間、所定の間隔で利用料金が発生する。
【００６７】
１０７は、先に説明した第一の仮想マシン群１０６とはプロセッサ種別の異なる、第二の仮想マシン１０９（詳細は後述）の集合である。第二の仮想マシン群１０７も、画像閲覧装置１０２からの利用開始要求に応じて実体が具現化し、利用終了要求に応じて実体が解放するように構成されている。なお、第二の仮想マシン群１０７も、利用開始から利用終了まで連続で利用されている間、所定の間隔で利用料金が発生する。この利用料金は、パブリックプロバイダにより仮想マシン群１０６とは独立して設定されている。
【００６８】
１０８は、第一の仮想マシン群１０６に属し、実体が具現化された仮想マシンである。１０９は、第二の仮想マシン群１０７に属し、実体が具現化された仮想マシンである。
【００６９】
図８は、本実施例における、画像閲覧装置１０２のハードウェア構成の一例を示す図である。尚、図８のハードウェア構成は、図２と同様である。
【００７０】
２０１はシステムバスであり、各ハードウェア部品がデータをやりとりするための通信路である。
【００７１】
２０２はＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）であり、プログラムを実行し、各機能部を制御するものである。
【００７２】
２０３は通信Ｉ／Ｆ（Ｉｎｔｅｒｆａｃｅ）であり、病院内ネットワークおよびインターネット１０５に接続されている。
【００７３】
２０４はタッチパネル、キーボード、ディスプレイなど、画像データの表示と操作入力機能を備えたヒューマンインタフェースである。
【００７４】
２０５はＤＲＡＭ（Ｄｙｎａｍｉｃ  Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）などの揮発メモリであり、画像解析プログラムや画像データを一時的に保持するため利用される。
【００７５】
２０６はＨＤＤ（Ｈａｒｄ  Ｄｉｓｋ  Ｄｒｉｖｅ）などの不揮発メモリであり、画像解析プログラムが格納されている。
【００７６】
図１０は、第一の仮想マシン１０８、および第二の仮想マシン１０９のハードウェア構成例の一例を示す図である。本実施例では、第一の仮想マシン１０８と第二の仮想マシン１０９は、ＣＰＵの数、ＧＰＵ（Ｇｒａｐｈｉｃａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）の有無が異なるものとしているが、説明を簡単にすべく、同一の図を用いて説明する。
【００７７】
４０１はシステムバスであり、各ハードウェア部品の通信路である。
【００７８】
４０２はＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）などの演算器であり、プログラムを実行する。なお本実施例では、仮想マシン１０８は２個のＣＰＵで構成され、仮想マシン１０９は３２個のＣＰＵを搭載した構成とするが、これに限らない。
【００７９】
４０３はＧＰＵ（Ｇｒａｐｈｉｃａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）などの演算器であり、ＣＰＵとは異なるプログラム言語で記述されたプログラムを実行する。なお本実施例では、仮想マシン１０８はＧＰＵを非搭載とし、仮想マシン１０９は１個のＧＰＵを搭載した構成とする。
【００８０】
４０４は通信Ｉ／Ｆ（Ｉｎｔｅｒｆａｃｅ）であり、パブリッククラウド内ネットワークおよびインターネット１０５の通信ネットワークに接続されている。
【００８１】
４０５はＤＲＡＭ（Ｄｙｎａｍｉｃ  Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）などの揮発メモリであり、画像解析プログラムや画像データを一時的に保持するため利用される。
【００８２】
４０６はＨＤＤ（Ｈａｒｄ  Ｄｉｓｋ  Ｄｒｉｖｅ）などの不揮発メモリであり、画像解析を目的とするプログラムが複数格納されている。なお、この複数の画像解析プログラムは、同一目的の画像解析プログラムも含まれ、それぞれ実行を行うハードウェアの数や種類ごとにチューニングされている。
【００８３】
図１１は本実施例における、仮想マシン１０８および仮想マシン１０９の機能ブロックを示した図である。なお本発明の説明に不要な、一般的な仮想マシンとしての機能ブロックは省略している。
【００８４】
５０１は解析プログラム・解析画像受信部あり、インターネット１０５を通じて画像閲覧装置１０２から、医師の指定した解析画像と解析処理に対応する画像解析プログラムを受信する。
【００８５】
５０２は画像解析部で、５０１が受信した画像解析プログラムを、５０１が受信した解析画像を対象に実行する。
【００８６】
５０３は状況送信部であり、画像解析プログラムの実行する画像解析の進捗状況を画像閲覧装置１０２に送信する。この進捗状況は、たとえば画像解析プログラムが進捗率を算出し、状況送信部５０３に送信する。なお、画像解析の採用するアルゴリズムに応じて、進捗状況の定義は異なってよい。たとえば画像類似度といった評価値を勾配法により最適化する位置合わせの場合、過去の収束回数と現時点の反復回数の比率から算出することができる。ほかにも、反復回数に応じて評価値がどのように減少していくかを示す予め用意したモデルとの比較によって算出してもよい。本発明は、画像解析プログラムの進捗状況の算出方法は特に限定されない。
【００８７】
５０４は終了判定部である。画像解析が終了するかを判定し、終了していれば結果送信部５０５が画像解析処理の結果を送信する。
【００８８】
５０５は結果送信部であり、画像解析処理の結果を送信する。
【００８９】
５０６は移行要求受信部であり、画像閲覧装置１０２より仮想マシンの移行要求がないか監視を行う。移行要求を受信した際は画像解析を中断する。
【００９０】
５０７は中間データ送信部であり、移行要求を受信した際に、移行先の仮想マシンに中間データを送信する。
【００９１】
図１２は本実施例における、画像閲覧装置１０２の機能ブロックを示した図である。なお本発明の説明に不要な、一般的な画像閲覧装置としての機能ブロックは省略している。
【００９２】
６０１は解析タスク決定部であり、解析対象の画像と解析手法、およびその実行時間の上限を決定する。操作者に選択肢を提示し、操作者によって決定される。
【００９３】
ここで、図９を用いてファイル選択や画像解析方法の選択を行う画面を説明する。図９は、本実施例における、解析タスク決定部６０１を実行する際にヒューマンインタフェース２０４に表示する画面の例を示す図である。
【００９４】
３０１は画像ファイル選択領域であり、画像サーバ１０４に格納された画像の名称一覧が表示され、操作者がヒューマンインタフェース２０４の操作を通じて複数を選択状態に設定可能となっている。
【００９５】
３０２はプレビュー領域であり、画像選択領域３０１によって最後に選択された画像を表示する領域である。操作者はこれにより、画像名称に対応する画像データの可視表現を視認することができる。
【００９６】
３０３は締め切り時間、すなわち実行時間の上限を指定する領域であり、操作者が任意の値を指定することができる。
【００９７】
３０４は解析の実行を指示するボタンであり、操作者が所望する解析手法が選択できるようになっている。この３０４の押下を契機に、３０１で選択された画像に対して、３０３で指定された上限にして、ボタンに表示された解析処理が開始される。
【００９８】
図１２の説明に戻る。６０２は解析プログラム・解析画像送信部であり、後述するプログラム選択部６０５により決定された画像解析プログラムと解析タスク決定部６０１で決定した解析画像を、後述するコスト最適化部６０３により決定された仮想マシンに送信する。
【００９９】
６０３はコスト最適化部であり、決定した解析タスクに関して、各仮想マシンでの実行速度予測値と、仮想マシンの価格に基づき、実行時間の締め切りを満たす仮想マシンのうち、コスト最適な仮想マシンを決定する。本実施例におけるコスト最適とは、解析タスクの実行時間の締め切りを満たしつつ、仮想マシンの利用コストを最も抑えたものをいう。尚、コスト最適は利用コストを最も抑えたものである必要はなく、現在利用している仮想マシンの利用コストと比較して金額が抑えられるものであればよい。
【０１００】
６０４は実行速度予測部であり、指定された仮想マシンを用いた場合の、指定された解析処理を行うプログラムの実行時間を予測する。本実施例では、過去の実行時間の記録を用いて予測を行う。
【０１０１】
６０５はプログラム選択部であり、指定された解析処理を行う画像解析プログラムが複数ある場合に、仮想マシンの特性に基づき、最も高速に実行可能な画像解析プログラムを選択する。尚、選択する画像解析プログラムが該仮想マシンにおいて最も高速である必要はない。実行時間の締め切りまでに解析タスクが完了できる画像解析プログラムが選択できればよい。
【０１０２】
６０６は仮想マシン価格表であり、仮想マシンの種別と、その利用料金を対応づけたものである。コスト最適化部６０３がコスト最適化を行う際に用いるもので、予め不揮発メモリ２０６に格納されている。なお、クラウドプロバイダが価格を更新した際は、この仮想マシン価格表も更新するように、クラウドプロバイダの提供する価格情報を監視するように構成することが望ましい。
【０１０３】
ここで、図１３（Ａ）は、仮想マシン価格表６０６の一例である。仮想マシンの種別、各種の演算機能、メモリ、アクセラレータの有無、ストレージ容量、利用料金、利用料金の発生契機などが格納されている。なおこれはあくまで一例であり、図示された項目以外の関連する情報を含めてよい。
【０１０４】
図１２の説明に戻る。６０７は実行時間管理表であり、仮想マシンで過去に実行した画像解析プログラムの実行時間を記録したものである。これは画像解析プログラムを実行するたびに更新してもよいし、あらかじめ測定をしたものを固定的に用いてもよい。不揮発メモリ２０６に格納されている。
【０１０５】
ここで、図１３（Ｄ）は、実行時間管理表６０７の一例である。プログラムの種別と、仮想マシンの種別を対応づけて、過去の実行時間がすべて記録されている。
【０１０６】
図１２の説明に戻る。６０８はプログラム管理表であり、予め用意された複数の画像解析プログラムが管理さており、不揮発メモリ２０６に格納されている。プログラム選択部６０５が画像解析プログラムの中から、仮想マシンで動作する画像解析プログラムを選択するのに用いる。
【０１０７】
ここで、図１３（Ｂ）は、プログラム管理表６０８の一例である。画像解析プログラム、その動作環境などが対応付けされている。
【０１０８】
図１２の説明に戻る。６０９は監視部であり、仮想マシンでの解析プログラムの実行状況を監視する。監視している状況に基づいてコスト最適化を行い、仮想マシンを移行すべきか判定を行う。
【０１０９】
６１０は移行制御部であり、監視部６０９が移行処理を決定した際に駆動されるものであり、画像解析プログラムを実行している仮想マシンから、解析が終わっている部分を引き継いで、新しい仮想マシンで実行を行うための制御を行う。具体的には、移行後の仮想マシンの利用開始手続きや画像解析プログラムの送信をしつつ、移行前の仮想マシンから、画像解析プログラムの継続に必要な中間データの抜き取りを行い、新しい仮想マシンへ転送を行う。
【０１１０】
６１１は仮想マシン利用管理表であり、現在実行している解析処理ごとに、実行している仮想マシンなどを対応づけたものである。これは、解析処理が実行や終了などを契機に更新されるもので、揮発メモリ２０５に格納される。
【０１１１】
ここで、図１３（Ｃ）は、仮想マシン利用管理表６１１の一例である。利用中の仮想マシンごとに、仮想マシンの種別、解析対象画像、利用開始時刻、画像解析プログラムの状態、利用領料金、および利用料金の発生契機などを対応づけている。
【０１１２】
図１２の説明に戻る。６１２は解析結果受信部であり、仮想マシンで実行した画像解析プログラムの解析結果を受信する。
【０１１３】
６１３は解析画像表示部であり、解析結果をヒューマンインタフェース２０４に表示する。
【０１１４】
ここで、図１８を用いて、解析タスク決定部６０１によって画像が選択されてから、解析画像表示部６１３が解析結果の画像を表示するまでの一連の流れを、画像閲覧装置１０２における処理について簡単に説明する。図１８は、画像閲覧装置１０２が実行する画像解析処理の概要を示したフローチャートである。
【０１１５】
ステップＳ１２０１は、画像閲覧装置１０２が解析開始の指示があるか判定するステップである。指示があれば、画像閲覧装置１０２がステップＳ１２０２に処理を進める。ここで画像開始の指示は、解析ボタン３０４の押下である。指示がない場合は、画像閲覧装置１０２がステップＳ１２０４に処理を進める。
【０１１６】
ステップＳ１２０２は、画像閲覧装置１０２がコスト最適な仮想マシンと、その仮想マシンで最も高速に動作する画像解析プログラムを選択するステップである。このとき、画像閲覧装置１０２は、すでに画像解析プログラムが終了している空き状態の仮想マシンと新規に利用できる仮想マシンから選択する。新たに利用を開始する場合は、画像閲覧装置１０２がクラウドプロバイダに利用開始を要求する。なお、画像解析プログラムが終了している仮想マシンは仮想マシン利用管理表６１１から検索することができ、新しい仮想マシンは仮想マシン価格表６０６から検索することができる。また、各仮想マシンで最も高速な画像解析プログラムと実行時間の予測値は、実行時間管理表６０７から検索することができる。
【０１１７】
ステップＳ１２０３は、画像閲覧装置１０２が、ステップＳ１２０２で選択した画像プログラムと解析対象の画像データを、ステップＳ１２０２で選択した仮想マシンに送信するステップである。
【０１１８】
ステップＳ１２０４は、画像閲覧装置１０２が、ステップＳ１２０３で送信した画像解析プログラムが完了したか判定するステップである。具体的には、画像閲覧装置１０２が画像解析プログラムの終了通知がくるまでステップＳ１２０４を繰り返し、完了すれば画像閲覧装置１０２がステップＳ１２０５に処理を進める。
【０１１９】
ステップＳ１２０５は、画像閲覧装置１０２が、仮想マシン利用管理表６１１の当該タスクが完了した旨を更新するステップである。この制御により、以降でコスト最適化を行う際に、次に利用料金が発生するまでは、当該実行マシンが利用可能となる。
【０１２０】
ステップＳ１２０６は、画像閲覧装置１０２が、画像解析プログラムが解析した解析結果を受信するステップである。
【０１２１】
ステップＳ１２０７は、画像閲覧装置１０２が、画像解析結果をヒューマンインタフェース２０４に表示するステップである。
【０１２２】
ステップＳ１２０８は、画像閲覧装置１０２が、ステップＳ１２０２で選択した仮想マシンの利用が終了したか判定するステップである。具体的には、画像閲覧装置１０２が、画像解析プログラムの終了通知がくるまでステップＳ１２０８を繰り返し、完了すれば画像閲覧装置１０２がステップＳ１２０９に処理を進める。
【０１２３】
ステップＳ１２０９は、画像閲覧装置１０２が、仮想マシン利用管理表６１１から、終了した仮想マシンの情報を削除するステップである。
【０１２４】
図１４は、本実施例における、図１１で説明した仮想マシンの機能ブロックの処理の流れを説明するためのフローチャートである。なお、仮想マシンの利用開始処理は予め終わっているものとする。
【０１２５】
ステップＳ８０１は、仮想マシンが、画像閲覧装置１０２から画像解析プログラムと処理対象である画像データの受信が完了しているか判定するステップである。完了していれば仮想マシンがステップＳ８０２に処理を進め、完了していなければ仮想マシンがステップＳ８０４に処理を進める。
【０１２６】
ステップＳ８０２は、仮想マシンが、受信した画像解析プログラムを、受信した画像データを対象に設定して起動するステップである。画像解析プログラムが終了すると、仮想マシンがステップＳ８０３に処理を進める。
【０１２７】
ここで、図１５を用いて、画像解析プログラムの処理を説明する。
【０１２８】
図１５（Ａ）は、本実施例における、画像位置合わせを行う画像解析プログラムの概要を示すフローチャートである。すなわち、３０４で示した解析ボタンのうち、位置合わせに対応する解析ボタンが押下された際に実行されるプログラムである。
【０１２９】
ステップＳ９０１は、仮想マシンが剛体位置合わせを実施するステップである。
【０１３０】
ステップＳ９０２は、仮想マシンが非剛体位置合わせを低解像度で行うステップである。このとき、仮想マシンは、ステップＳ９０１で求めた変形情報に基づいて、入力画像を変形してから位置合わせを行う。
【０１３１】
ステップＳ９０３は、仮想マシンが非剛体位置合わせを高解像度で行うステップである。このとき、仮想マシンは、ステップＳ９０２で求めた変形情報に基づいて、入力画像を変形してから位置合わせを行う。
【０１３２】
ステップＳ９０４は変形画像を送信するステップであり、ステップＳ９０３で求めた変形情報を用いて、入力画像を変形し、画像閲覧装置１０２に送信する。
【０１３３】
ステップＳ９０１、ステップＳ９０２、ステップＳ９０３で説明したように、本実施例における位置合わせ処理は、位置合わせを複数の手法で行い、段階を経るごとに高精度となるように設計されている。計算量が軽いが複雑な変形に対応できない剛体位置合わせをまず行い、次に、計算に時間がかかるが複雑な変形に対応した非剛体位置合わせを、低解像度、高解像度の順に行う。また各位置合わせ手法が求めた変形情報は、次の位置合わせ手法の入力画像の変形に利用される。
【０１３４】
ここで、図１５（Ｂ）を用いて、ステップＳ９０１，ステップＳ９０２，ステップＳ９０３の詳細な処理内容を、典型的な反復的位置合わせ手法をモデルとして述べる。図１５（Ｂ）は、ステップＳ９０１，ステップＳ９０２，ステップＳ９０３で実行される、位置合わせ処理の詳細を示すフローチャートである。
【０１３５】
ステップＳ９０５は、仮想マシンが変形情報の更新を行うステップであり、更新量を算出し、変形情報に反映させる。変形量算出方法は、位置合わせ手法によって様々な定義があるが、特に限定しない。
【０１３６】
ステップＳ９０６は、仮想マシンが位置合わせ精度を評価するステップであり、ステップＳ９０５によって更新された変形情報の評価値を算出する。
【０１３７】
ステップＳ９０７は、仮想マシンが評価値が収束したかを判定するステップであり、評価値の変化が少ない場合は処理を終了し、そうでなければステップＳ９０８へ処理を進める。
【０１３８】
ステップＳ９０８は、仮想マシンが進捗率を送信するステップであり、ステップＳ９０６で求めた評価値から進捗率を算出し、画像閲覧装置１０２に送信する。
【０１３９】
ステップＳ９１０は、仮想マシンが画像解析プログラムの移行要求を受信しているか判定するステップであり、画像閲覧装置１０２にから移行要求が来ていれば、ステップＳ９１１へ処理を進め、そうでなければステップＳ９０５へ処理を進める。
【０１４０】
ステップＳ９１１は、仮想マシンが画像解析プログラムの中間データ送信処理を行うステップであり、位置合わせ処理の継続に必要な変形情報を送信する。また、画像解析プログラムの中間データは、画像解析の種類に応じて異なる点に注意されたい。
【０１４１】
ステップＳ９１２は、仮想マシンがプログラムを終了するステップである。
【０１４２】
図１４の説明に戻る。ステップＳ８０３は、画像解析プログラムが終了したことを画像閲覧装置１０２へ通知するステップである。
【０１４３】
ステップＳ８０４は、仮想マシンが、現時刻に仮想マシン利用終了に要する時間を加味した時刻と、次の利用料金が発生する時刻の、差異が所定の値（例えば利用単位時間の１％）より少ないか判定するステップである。すなわち、仮想マシンの利用を終了している最中に利用料金が発生しないようにしている。差が少なければ仮想マシンはステップＳ８０５に処理を進め、そうでなければ仮想マシンはステップＳ８０１に処理を進める。
【０１４４】
ステップＳ８０５は、仮想マシンが、仮想マシンの利用を終了することを画像閲覧装置１０２へ通知するステップである。ステップＳ８０６は、仮想マシンが、仮想マシン利用終了をするステップである。
【０１４５】
図１６は、画像閲覧装置１０２の監視部６０９と移行制御部６１０が実行する処理の流れを示すフローチャートである。なお、図１０に示す監視及び移行の処理は、仮想マシン利用管理表６１１で管理されている画像解析タスクについて、ひとつずつ実行する。また、本フローチャートは、現在時刻が、タスクの実行に際して次に利用コストが発生する所定時刻から該タスクの移行に要する時間を減じた時刻である場合に実行される。または、現在時刻が、タスクの実行に際して次に利用コストが発生する所定時刻から該タスクの移行に要する時間を減じた時刻よりも所定時間前（例えば１分前や５分前等）の時刻である場合に実行される。
【０１４６】
ステップＳ１００１は、画像閲覧装置１０２が、仮想マシンで実行している仮想プログラムの進捗状況が、前回のスケジューリング時に予測した進捗状況との差異が所定値以上かを判定するステップである。すなわち、画像閲覧装置１０２が、タスクの進捗状況が悪いか否かを判定するということである。本実施例では、画像位置合わせ処理の場合、各段階での平均終了評価値との比較値と、実行時間の標準偏差の大きさに応じた安全係数をもちいて、画像閲覧装置１０２がタスクの進捗状況を算出する。差異が大きければ画像閲覧装置１０２がステップＳ１００５に処理を進め、そうでなければ画像閲覧装置１０２がステップＳ１００２に処理を進める。
【０１４７】
なお、それら平均終了時間や処理終了時の平均的な評価値などは、実行時間管理表６０７から都度算出する方法もあるが、あらかじめ算出したものを画像閲覧装置１０２が保持しておくと効率的である。一例を図１３（Ｅ）のプログラム特性管理表７０１を示しておく。なおこの表は、画像解析プログラムと仮想マシンの組み合わせごとに作成されているのが望ましい。
【０１４８】
ステップＳ１００２は、画像閲覧装置１０２が、現在の時刻が当該仮想マシンの利用料金が発生する契機が近い（例えば利用単位時間の１％以内）か判定するステップである。契機が近ければ画像閲覧装置１０２がステップＳ１００５に処理を進め、そうでなければ画像閲覧装置１０２がステップＳ１００３に処理を進める。
【０１４９】
ステップＳ１００３は、画像閲覧装置１０２が、画像解析タスクが終了しているか確認するステップである。当該タスクの終了がはじめて判明した際は、画像閲覧装置１０２がステップＳ１００５に処理を進め、そうでなければ画像閲覧装置１０２がステップＳ１００４に処理を進める。
【０１５０】
ステップＳ１００４は、画像閲覧装置１０２が、所定の間隔が経過したか判定するステップである。画像閲覧装置１０２は、以前にステップＳ１００４を実行した時刻と比較し、所定の間隔（例えば１分）がたっていれば、ステップＳ１００５に処理を進め、そうでなければステップＳ１００１に処理を進める。
【０１５１】
ステップＳ１００５は、画像閲覧装置１０２が、当該画像解析タスクに関して、コスト最適となる仮想マシンの割り当てを行うステップである。
【０１５２】
ここで、図１７（Ａ）を用いて、ステップＳ１００５の処理を詳細に説明する。図１７（Ａ）は、本実施例における、実行中の画像解析タスクに関して、コスト最適化を行うフローチャートである。
【０１５３】
ステップＳ１１０１は、画像閲覧装置１０２が、空き仮想マシンを利用したスケジュール案を生成するステップである。具体的には、画像閲覧装置１０２が仮想マシン利用管理表６１１を参照し、実行が完了している、利用中の仮想マシンを用いたスケジュール案を生成する。
【０１５４】
ステップＳ１１０２は、画像閲覧装置１０２が、新しく仮想マシンを利用したスケジュール案を生成するステップである。画像閲覧装置１０２は、新規に利用可能な仮想マシン全てで実行するスケジュールを仮想マシンごとに生成する。なお、利用料金の変化の契機などで他の実行マシンへ遷移するスケジュール案なども含めてもよい。
【０１５５】
ステップＳ１１０３は、画像閲覧装置１０２が、処理目的にあうプログラムについて繰り返し実行するステップである。画像閲覧装置１０２は、プログラム管理表６０８で管理されたプログラムのうち、実行する画像解析処理の用途に合うプログラムすべてについて、ひとつずつ繰り返す。
【０１５６】
ステップＳ１１０４は、画像閲覧装置１０２が、ステップＳ１１０１で作成したスケジュール案それぞれについて繰り返し実行するステップである。
【０１５７】
ステップＳ１１０５は、画像閲覧装置１０２が、画像解析プログラムの進捗率、入力画像の特徴、過去の実行時間といった情報に基づいて、スケジュール案が示す仮想マシンで実行した場合の残処理の実行時間を予測する。
【０１５８】
ステップＳ１１０６は、画像閲覧装置１０２が、スケジュール案が示す仮想マシンが、現在実行している仮想マシンと異なる場合には、ステップＳ１１０５で求めた予測実行時間に、移行に要する時間を加算する。ここで移行に要する時間とは、実行中の画像解析プログラムの処理中断に要する時間、処理の継続に必要な中間データの転送処理に要する時間、新しい仮想マシンに画像データと中間データと画像解析プログラムを送信するのに要する時間、などである。ほかに、新しく仮想マシンの利用を開始するのに要する時間などもある。
【０１５９】
ステップＳ１１０７は、画像閲覧装置１０２が、過去の実行時間のばらつきに応じてステップＳ１１０６で求めた予測実行時間を補正するステップである。ここで、ばらつきの大きいものには、より大きな安全係数を用いて補正する。ここでは、画像閲覧装置１０２は、プログラム特性管理表７０１に保持されている、実行時間の標準偏差に所定の係数を乗じたものを用いる。
【０１６０】
ステップＳ１１０８は、画像閲覧装置１０２が、予測実行時間に基づいて、仮想マシンの利用料金を算出するステップである。画像閲覧装置１０２は、仮想マシン価格表６０６を参照し、利用料金が発生する契機ごとに、その際の利用料金を積算することで算出する。
【０１６１】
ステップＳ１１０９は、画像閲覧装置１０２が、ステップＳ１１０４に処理を戻すステップである。
【０１６２】
ステップＳ１１１０は、画像閲覧装置１０２が、ステップＳ１１０３に処理を戻すステップである。
【０１６３】
ステップＳ１１１１は、画像閲覧装置１０２が、スケジュール案のうち、締め切りを守るかどうかを判定し、そのなかでも、利用料金が少ないスケジュール案を選択するステップである。
【０１６４】
ここで、図１６の説明に戻る。ステップＳ１００６は、画像閲覧装置１０２が、仮想マシン割り当てに変化があるか判定するステップである。ステップＳ１００５で求めたコスト最適な仮想マシン割り当てが、現在画像解析プログラムを実行している仮想マシンとは異なる場合、画像閲覧装置１０２がステップＳ１００７に処理を進め、そうでなければステップＳ１００１に処理を戻す。
【０１６５】
ステップＳ１００７は、画像閲覧装置１０２が、画像解析タスクを実行している仮想マシンを移行するステップである。仮想マシンの詳細については、図１７（Ｂ）を用いて後述する。ステップＳ１００７の処理が完了すると、ステップＳ１００１に戻る。
【０１６６】
ここで、図１７（Ｂ）を用いて、ステップＳ１００７の処理を詳細に説明する。図１７（Ｂ）は、本実施例における、画像解析タスクに関して、仮想マシンの移行を行うフローチャートである。
【０１６７】
本実施例では、ステップＳ１１１２およびステップＳ１１１４が並行に開始される。
【０１６８】
ステップＳ１１１２は、画像閲覧装置１０２が、移行先の仮想マシンの利用開始を行うステップである。画像閲覧装置１０２がパブリッククラウド１００のプロバイダの仮想マシン管理システム（不図示）と通信し、仮想マシンの割り当て、仮想ＯＳの起動などが行われる。
【０１６９】
ステップＳ１１１３は、画像閲覧装置１０２が、仮想マシンの起動が完了したか判定するステップである。画像閲覧装置１０２は、起動が完了するまで判定を繰り返し、完了したらステップＳ１１１６に処理を進める。
【０１７０】
ステップＳ１１１４は、画像閲覧装置１０２が、画像解析タスクを実行している仮想マシンに移行要求を送信するステップである。先に説明したとおり、この要求が行われると、仮想マシンは画像解析処理を中断し、画像解析処理の継続に必要な中間データが画像閲覧装置１０２に送信される。
【０１７１】
ステップＳ１１１５は、画像閲覧装置１０２が、仮想マシンから中間データを受信するステップである。中間データの受信が完了すると、画像閲覧装置１０２はステップＳ１１１６に処理を進める。
【０１７２】
ステップＳ１１１６は、画像閲覧装置１０２が、ステップＳ１１１３およびステップＳ１１１５のステップがどちらも完了したことを契機に開始される。ステップＳ１１１６は、画像閲覧装置１０２が移行先の仮想マシンに画像データ、ステップＳ１１１４で受信した中間データと、ステップＳ１１１１で選択されているプログラムを送信する処理である。
【０１７３】
以上説明した処理制御を行うと、画像解析タスクが進捗する度に、残処理に対するコスト最適な仮想マシンが選定され、仮想マシンの変更が必要な際は移行制御が行われることにより、一層の効率化が図られる。
【０１７４】
また、仮想マシンの移行時は、画像解析の中間データを転送するという特徴的な制御により、同一目的だが実装が異なる画像解析プログラムが処理を継続できるようになる。本実施例では、同一目的の画像解析プログラムを複数備え、仮想マシンごとに比較的高速な画像解析プログラムを選択するという特徴的な制御をさらに備え、仮想マシンの利用時間を短縮し、一層の効率化がなされる。
【０１７５】
また、画像解析プログラムの実行が完了しても、仮想マシンの利用料金が発生する直前まで仮想マシンの終了処理がなされないという特徴的な制御により、他の画像解析タスクが当該仮想マシンを活用可能となり、一層の効率化がなされる。
【０１７６】
＜実施例４の変形例＞
実施例４において、コスト最適化部６０３、実行速度予測部６０４、プログラム選択部６０５、監視部６０９、移行制御部６１０を画像閲覧装置１０２に備えるとしたが、これらの機能を、画像解析を行う仮想マシン内に備えるように構成してもよい。それにより、画像閲覧装置１０２の処理負荷を低減することが可能である。その場合は、ステップＳ９０８で進捗率を求めた直後に、図１７（Ａ）のフローを実行する。さらに別の構成として、図１７（Ａ）のフローを実行する仮想マシンを、画像解析用の仮想マシンとは別に、専用に用意する構成でもよい。
【０１７７】
本実施例において、実行時間の予測方法は過去の実行時間の記録に基づいて予測するとしたが、過去の実行時間の記録が無い場合に、ハードウェア特性の類似性の高い仮想マシンの記録を用いてもよい。その際は類似する仮想マシンの秒あたりの演算回数やメモリ転送帯域などの比率に基づいて算出した値を流用する。
【０１７８】
本実施例において、画像解析の対象が画像位置あわせ処理を例に説明したが、他の画像解析処理においても、進捗の算出方法が画像解析の方法に合わるだけで、同様の制御で適用可能である。
【０１７９】
本発明は、例えば、システム、装置、方法、プログラム若しくは記憶媒体等としての実施形態も可能であり、具体的には、複数の機器から構成されるシステムに適用してもよいし、また、１つの機器からなる装置に適用してもよい。
【０１８０】
＜その他の変形例＞
なお、各実施例は、前述した各実施例の機能を実現するソフトウェアのプログラムを、システム或いは装置に直接、或いは遠隔から供給するものを含む。そして、そのシステム或いは装置のコンピュータが前記供給されたプログラムコードを読み出して実行することによっても達成される場合も各実施例に含まれる。
【０１８１】
したがって、各実施例の機能処理をコンピュータで実現（実行可能と）するために、前記コンピュータにインストールされるプログラムコード自体も各実施例を実現するものである。つまり、各実施例は、各実施例の機能処理を実現するためのコンピュータプログラム自体も含まれる。
【０１８２】
その場合、プログラムの機能を有していれば、オブジェクトコード、インタプリタにより実行されるプログラム、ＯＳに供給するスクリプトデータ等の形態であってもよい。
【０１８３】
プログラムを供給するための記録媒体としては、例えば、フレキシブルディスク、ハードディスク、光ディスク、光磁気ディスク、ＭＯ、ＣＤ−ＲＯＭ、ＣＤ−Ｒ、ＣＤ−ＲＷなどがある。また、磁気テープ、不揮発性のメモリカード、ＲＯＭ、ＤＶＤ（ＤＶＤ−ＲＯＭ，ＤＶＤ−Ｒ）などもある。
【０１８４】
その他、プログラムの供給方法としては、クライアントコンピュータのブラウザを用いてインターネットのホームページに接続する。そして、前記ホームページから各実施例のコンピュータプログラムそのもの、若しくは圧縮され自動インストール機能を含むファイルをハードディスク等の記録媒体にダウンロードすることによっても供給できる。
【０１８５】
また、各実施例のプログラムを構成するプログラムコードを複数のファイルに分割し、それぞれのファイルを異なるホームページからダウンロードすることによっても実現可能である。つまり、各実施例の機能処理をコンピュータで実現するためのプログラムファイルを複数のユーザに対してダウンロードさせるＷＷＷサーバも、各実施例に含まれるものである。
【０１８６】
また、各実施例のプログラムを暗号化してＣＤ−ＲＯＭ等の記憶媒体に格納してユーザに配布し、所定の条件をクリアしたユーザに対し、インターネットを介してホームページから暗号化を解く鍵情報をダウンロードさせる。そして、ダウンロードした鍵情報を使用することにより暗号化されたプログラムを実行してコンピュータにインストールさせて実現することも可能である。
【０１８７】
また、コンピュータが、読み出したプログラムを実行することによって、前述した各実施例の機能が実現される。その他、そのプログラムの指示に基づき、コンピュータ上で稼動しているＯＳなどが、実際の処理の一部又は全部を行い、その処理によっても前述した各実施例の機能が実現され得る。
【０１８８】
さらに、記録媒体から読み出されたプログラムが、コンピュータに挿入された機能拡張ボードやコンピュータに接続された機能拡張ユニットに備わるメモリに書き込まれる。その後、そのプログラムの指示に基づき、その機能拡張ボードや機能拡張ユニットに備わるＣＰＵなどが実際の処理の一部又は全部を行い、その処理によっても前述した各実施例の機能が実現される。
【０１８９】
なお、前述した各実施例は、各実施例を実施するにあたっての具体化の例を示したものに過ぎず、これらによって各実施例の技術的範囲が限定的に解釈されてはならないものである。即ち、本開示の仕組みはその技術思想、又はその主要な特徴から逸脱することなく、様々な形で実施することができる。
【符号の説明】
【０１９０】
１０  情報処理装置
１０８  第一の仮想マシン
１０９  第二の仮想マシン
３１  取得部
３２  判定部
３３  選択部
３４  指示部
３５  送信部
【図１】
2018092311.tif 000003
【図２】
2018092311.tif 000004
【図３】
2018092311.tif 000005
【図４】
2018092311.tif 000006
【図５】
2018092311.tif 000007
【図６】
2018092311.tif 000008
【図７】
2018092311.tif 000009
【図８】
2018092311.tif 000010
【図９】
2018092311.tif 000011
【図１０】
2018092311.tif 000012
【図１１】
2018092311.tif 000013
【図１２】
2018092311.tif 000014
【図１３】
2018092311.tif 000015
【図１４】
2018092311.tif 000016
【図１５】
2018092311.tif 000017
【図１６】
2018092311.tif 000018
【図１７】
2018092311.tif 000019
【図１８】
2018092311.tif 000020
【図１９】
2018092311.tif 000021
【図２０】
2018092311.tif 000022