(57)【要約】【課題】  本発明は、上記課題を鑑みてなされたものであり、ネットワーク上のデータの転送時間を考慮して、当該データの処理をネットワーク上の複数の演算デバイスに分散して行わせる情報処理装置を提供することを目的とする。【解決手段】  データの処理をネットワーク上の複数の演算デバイスに分散して行わせる情報処理装置であって、前記複数の演算デバイスそれぞれまでのデータ転送の時間に関する第一の情報を取得する第一の取得手段と、前記複数の演算デバイスそれぞれの演算の能力に関する第二の情報を取得する第二の取得手段と、前記第一の情報と前記第二の情報とに基づき、前記データの処理の完了が所定の値よりも小さくなるように、前記複数の演算デバイスから前記データの処理を行わせる演算デバイスを選択する選択手段と、を有することを特徴とする。【選択図】  図８
2016218926.tif 000002
【特許請求の範囲】
【請求項１】
データの処理をネットワーク上の複数の演算デバイスに分散して行わせる情報処理装置であって、
前記複数の演算デバイスそれぞれまでのデータ転送の時間に関する第一の情報を取得する第一の取得手段と、
前記複数の演算デバイスそれぞれの演算の能力に関する第二の情報を取得する第二の取得手段と、
前記第一の情報と前記第二の情報とに基づき、前記データの処理の完了が所定の値よりも小さくなるように、前記複数の演算デバイスから前記データの処理を行わせる演算デバイスを選択する選択手段と、を有することを特徴とする情報処理装置。
【請求項２】
前記データの処理は、ＯｐｅｎＣＬアプリケーションの処理であり、
前記第二の取得手段は、ＯｐｅｎＣＬのインターフェースを利用して、前記複数の演算デバイスそれぞれの演算の能力に関する第二の情報を取得することを特徴とする請求項１に記載の情報処理装置。
【請求項３】
前記複数の演算デバイスそれぞれに対して前記ネットワーク上でユニークな仮想デバイスＩＤを割り当てる割り当て手段と、
前記仮想デバイスＩＤとＯｐｅｎＣＬデバイスＩＤとを関連付けて管理し、前記ＯｐｅｎＣＬアプリケーションに対して、ＯｐｅｎＣＬデバイスＩＤとして前記仮想デバイスＩＤを提供する管理手段と、を更に有することを特徴とする請求項２に記載の情報処理装置。
【請求項４】
前記ＯｐｅｎＣＬアプリケーションの実行時に指定された演算デバイスと前記選択手段で選択された演算デバイスとが異なる場合、前記選択手段による選択を優先させる設定手段と、を更に有することを特徴とする請求項２もしくは３に記載の情報処理装置。
【請求項５】
データの処理をネットワーク上の複数の演算デバイスに分散して行わせる情報処理装置であって、
第一の取得手段が、前記複数の演算デバイスそれぞれまでのデータ転送の時間に関する第一の情報を取得する第一の取得工程と、
第二の取得手段が、前記複数の演算デバイスそれぞれの演算の能力に関する第二の情報を取得する第二の取得工程と、
選択手段が、前記第一の情報と前記第二の情報とに基づき、前記データの処理の完了が所定の値よりも小さくなるように、前記複数の演算デバイスから前記データの処理を行わせる演算デバイスを選択する選択工程と、を有することを特徴とする情報処理方法。
【請求項６】
コンピュータを、
データの処理をネットワーク上の複数の演算デバイスに分散して行わせる情報処理装置であって、
前記複数の演算デバイスそれぞれまでのデータ転送の時間に関する第一の情報を取得する第一の取得手段と、
前記複数の演算デバイスそれぞれの演算の能力に関する第二の情報を取得する第二の取得手段と、
前記第一の情報と前記第二の情報とに基づき、前記データの処理の完了が所定の値よりも小さくなるように、前記複数の演算デバイスから前記データの処理を行わせる演算デバイスを選択する選択手段と、を有することを特徴とする情報処理装置として機能させるためのコンピュータプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ネットワーク上の演算デバイスを利用する情報処理装置、情報処理方法およびコンピュータプログラムに関する。
【背景技術】
【０００２】
ＣＰＵとＧＰＵ、Ｃｅｌｌなどの異種混在の計算資源を利用した並列コンピューティング技術は、プロセッサの演算能力の向上と、Ｃｅｌｌ、ＧＰＵに代表される特定の演算に特化したコアを多数集積したプロセッサの登場により、様々な製品に採用されている。従来、このようなヘテロジニアスコンピューティング環境でのソフトウェアのコーディングにおいては、使用するプロセッサ群に特化した独自の実装をする必要があった。
【０００３】
ヘテロジニアスコンピューティング環境の並列プログラミングのための標準フレームワークとして、ＯｐｅｎＣＬ（Ｏｐｅｎ  Ｃｏｍｐｕｔｉｎｇ  Ｌａｎｇｕａｇｅ）がある。ＯｐｅｎＣＬは、並列演算デバイスやメモリなどを抽象化したモデルを定義しており、ＯｐｅｎＣＬフレームワークを利用することにより、同一のコードで、複数のプロセッシング環境に対応することが可能になる。この仕様は、現在、標準化団体クロノス・グループによって策定、公開されている。
【０００４】
一方で、インターネットなどのネットワークを介してコンピュータ処理を利用するクラウドコンピューティングがサービスとして徐々に拡大している。クラウドコンピューティングにおいても、その演算環境をモデル化することにより、特定の演算環境に依存しないアプリケーションの構築と演算の高速化を両立することが可能になると考えられる。
【０００５】
特許文献１には、ＯｐｅｎＣＬをクラウドコンピューティングへのインターフェースとして利用し、アプリケーション処理の高速化を行なう技術が開示されている。当該技術によれば、アプリケーションの処理要求が発生した場合、クラウド上の演算リソースの特性に基づきクラウド上の装置を選択し、分散処理を行い、処理負荷を軽減することが可能になっている。尚、演算リソースとは、具体的にはクラウド上のプロセッサとメモリになる。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】特開２０１１−１３８５０６号公報
【発明の概要】
【発明が解決しようとする課題】
【０００７】
特許文献１に開示されている技術を用いて、画像処理などの演算をクラウドなどのネットワーク上で処理するためには、処理に必要なデータをクラウド上の演算デバイスの間で送受信する必要がある。このデータが大きい場合、演算実行時間に対して、データ転送時間を無視できなくなる。例えば、クラウド上に演算能力が異なる２つの演算デバイスＡ、Ｂが存在し、あるアプリケーションを実行する時間は、演算デバイスＡでは１秒、演算デバイスＢでは２秒であったとする。演算デバイスへのデータ転送時間は、その演算デバイスまでのネットワーク環境に左右されるので、転送速度は同一ではない。演算能力の高い演算デバイスＡへのデータ転送速度が、演算能力の低い演算デバイスＢへのデータ転送速度より低い場合には、演算能力で演算デバイスを選択することが必ずしもアプリケーション実行時間を短くすることにはならない。前述のアプリケーションの実行に必要なデータを演算デバイスＡに転送する時間が４秒、演算デバイスＢに転送する時間が２秒であるとする。この場合、演算実行時間とデータ転送時間の合計であるアプリケーションの実行時間は、演算デバイスＡでは５秒、演算デバイスＢでは４秒となり、演算デバイスＢでの実行時間の方が短くなる。
【０００８】
一方で、クラウド上の演算デバイスを使うことを意図するのではなく、ＧＰＵなどの機器内のＯｐｅｎＣＬ環境用に作成されたＯｐｅｎＣＬアプリケーションは既に多く存在する。そこで、既存のＯｐｅｎＣＬアプリケーションを変更せずに、クラウド上の演算デバイスを使用してアプリケーションを実行できることが望ましい。
【０００９】
ＯｐｅｎＣＬでは、演算を実行するデバイスを指定する方法として、デバイスＩＤという物理デバイスを間接的に指し示すＩＤを使用する。ＯｐｅｎＣＬをクラウドコンピューティングへのインターフェースとして利用した場合に、クラウド上のノード毎にデバイスＩＤが割り振られるため、ノード間ではデバイスＩＤが重複し、そのままでは一意に識別できない。また、機器内アプリケーションは、クラウド環境のように複数のデバイスが存在することは想定していないことが多い。例えば、最初に識別されたデバイスのデバイスＩＤなど、固定のデバイスＩＤを使用してアプリケーションを実行するように作成されている。よって、クラウド上にある複数のデバイスから適切なデバイスを選択して実行するためには、そのデバイスを使用するようにアプリケーション側を変更しなければならない。
【００１０】
本発明は、上記課題を鑑みてなされたものであり、ネットワーク上のデータの転送時間を考慮して、当該データの処理をネットワーク上の複数の演算デバイスに分散して行わせる情報処理装置を提供することを目的とする。
【課題を解決するための手段】
【００１１】
本発明は、上記課題を解決するために、データの処理をネットワーク上の複数の演算デバイスに分散して行わせる情報処理装置であって、前記複数の演算デバイスそれぞれまでのデータ転送の時間に関する第一の情報を取得する第一の取得手段と、前記複数の演算デバイスそれぞれの演算の能力に関する第二の情報を取得する第二の取得手段と、前記第一の情報と前記第二の情報とに基づき、前記データの処理の完了が所定の値よりも小さくなるように、前記複数の演算デバイスから前記データの処理を行わせる演算デバイスを選択する選択手段と、を有することを特徴とする。
【発明の効果】
【００１２】
本発明によれば、上記課題を鑑みてなされたものであり、ネットワーク上のデータの転送時間を考慮して、当該データの処理をネットワーク上の複数の演算デバイスに分散して行わせる情報処理装置を提供することが出来る。
【図面の簡単な説明】
【００１３】
【図１】クラウド上に存在する演算リソースを利用するためのインターフェースとしてＯｐｅｎＣＬを使用するシステムのノード構成を示すブロック図である。
【図２】第１の実施形態におけるクラウド対応ＯｐｅｎＣＬドライバの構成を示すブロック図である。
【図３】第１の実施形態に関る演算デバイスのリソース情報とデータ転送時間を取得する手順を示すフローチャートである。
【図４】第１の実施形態に関る演算デバイス情報管理部で管理する演算デバイス情報の一例を表す図である。
【図５】第１の実施形態に関る演算デバイス選択部でＯｐｅｎＣＬアプリケーションを実行するのに適した演算デバイスを選択する手順を示すフローチャートである。
【図６】第１の実施形態に関るデータ転送時間と演算実行時間の合計時間の推定後の演算デバイス情報の一例を表す図である。
【図７】第１の実施形態に関るノードがネットワーク上に追加された後の演算デバイス情報の一例を表す図である。
【図８】第２の実施形態におけるＯｐｅｎＣＬドライバの別の構成を示すブロック図である。
【図９】第２の実施形態に関る演算デバイスのリソース情報とデータ転送時間の取得とデバイスＩＤの割り当てを行なう手順を示すフローチャートである。
【図１０】第２の実施形態に関る演算デバイス情報管理部で管理する演算デバイス情報の一例を表す図である。
【図１１】第２の実施形態に関るＯｐｅｎＣＬアプリケーションを実行する演算デバイスを決定後の演算デバイス情報の一例を表す図である。
【図１２】第２の実施形態に関るＯｐｅｎＣＬアプリケーションを実行する演算デバイスを決定後の演算デバイス情報の別の一例を表す図である。
【発明を実施するための形態】
【００１４】
（第１の実施形態）
以下、第１の実施形態について図面およびフローチャートを用いて説明する。ただし、本発明の技術的範囲がこの実施形態に限定されるものではない。
【００１５】
図１は、クラウド上に存在する演算リソースを利用するためのインターフェースとしてＯｐｅｎＣＬを使用するシステムのノード（情報処理装置）の構成を示すブロック図である。各ノード（情報処理装置）は、ＣＰＵ、各種コンピュータプログラムが格納された記録媒体などを有し、各種コンピュータプログラムを実行する。
【００１６】
図中、１０１は、ＯｐｅｎＣＬアプリケーション実行ノードであり、ＯｐｅｎＣＬアプリケーションを実行するネットワーク上のノードである。
【００１７】
１０２から１０４は、ＯｐｅｎＣＬインターフェース対応演算デバイスノードであり、ネットワーク越しに要求されるＯｐｅｎＣＬインターフェースの要求を実行し、結果を返す。図中には例として３つのノードを示しているが、その個数はこれには限らない。
【００１８】
１０５は、ネットワークであり、ＯｐｅｎＣＬアプリケーション実行ノードとＯｐｅｎＣＬインターフェース対応演算デバイスノードとの間の通信機能を担う。
【００１９】
１０１１は、ＯｐｅｎＣＬアプリケーションであり、画像処理などの並列演算処理のアプリケーションである。従来の機器内で閉じたＯｐｅｎＣＬ実行環境で動作するアプリケーションと同等のものである。
【００２０】
１０１２は、クラウド対応ＯｐｅｎＣＬドライバであり、演算リソースとしてクラウド上の演算デバイスを使用するように変更されたドライバで、ＯｐｅｎＣＬアプリケーションに提供するＡＰＩの形式は、従来の機器内ＯｐｅｎＣＬ環境と同等である。機能の詳細については後述する。
【００２１】
１０１３は、ネットワークインターフェースであり、クラウド対応ＯｐｅｎＣＬドライバと、ネットワーク上のＯｐｅｎＣＬインターフェース対応演算デバイスノード間の通信機能を仲介する。
【００２２】
１０２１は、ネットワークインターフェースであり、ネットワーク上のクラウド対応ＯｐｅｎＣＬドライバと、自ノードのＯｐｅｎＣＬドライバの間の通信を仲介する。
【００２３】
１０２２は、ＯｐｅｎＣＬドライバであり、ＯｐｅｎＣＬアプリケーションにＯｐｅｎＣＬインターフェースに準拠したＡＰＩを提供する。従来の機器内ＯｐｅｎＣＬ環境上のものと同等のものである。
【００２４】
１０２３は、演算デバイスであり、ＯｐｅｎＣＬインターフェースに準拠した演算機能を実行するデバイスで、従来の機器内ＯｐｅｎＣＬ環境上のものと同等のものである。
【００２５】
１０１１、１０２２、１０２３は、従来の機器内ＯｐｅｎＣＬ環境上のものと同等であり、本発明の特徴は、１０１２のクラウド対応ＯｐｅｎＣＬドライバ内の構成に集約されている。
【００２６】
図２は本発明におけるクラウド対応ＯｐｅｎＣＬドライバの実施形態の構成を示すブロック図である。
【００２７】
図中、１０１１のＯｐｅｎＣＬアプリケーション、１０１３のネットワークインターフェースは、図１中の同符号のブロックと同じものである。
【００２８】
１０１２のクラウド対応ＯｐｅｎＣＬドライバ内の構成を説明する。
【００２９】
１０１２１は、ＯｐｅｎＣＬ  ＡＰＩ変換部であり、従来の機器内ＯｐｅｎＣＬ環境上のＯｐｅｎＣＬドライバと同等のＡＰＩをＯｐｅｎＣＬアプリケーションに提供する。演算実行、リソース情報取得などの実処理は、後述する各ブロックの機能や、ネットワーク上のノードの演算機能を利用して、ＯｐｅｎＣＬインターフェースで定義されている機能を仮想化し、機器内で実行しているようにみせかける機能を担う。
【００３０】
１０１２２は、リソース情報取得部であり、ネットワークで接続されたノード上の演算デバイスの演算リソース情報を取得する。ＧＰＵ、ＣＰＵなどのプロセッサの種類や、演算ユニットの数、クロックの周波数、メモリのサイズなど、演算能力に関わる情報を取得する。
【００３１】
１０１２３は、データ転送速度取得部であり、本ノードとネットワークに接続されたノードとの間のデータの転送速度を取得する。
【００３２】
１０１２４は、演算デバイス選択部であり、ＯｐｅｎＣＬアプリケーションの演算要求を実行する演算デバイスを選択する。
【００３３】
１０１２５は、演算デバイス情報管理部であり、前記の１０１２２から１０１２４の各処理部が取得及び、決定した演算デバイスに関する情報を管理し、ＯｐｅｎＣＬ  ＡＰＩ変換部及び各処理部の要求に応じて情報を提供する。
【００３４】
リソース取得部、データ転送時間取得部が協調して、ネットワークに接続されたノードの演算デバイスのリソース情報と、データ転送時間を取得する手順を示すフローチャートを図３に示す。
【００３５】
この手順を行なう契機は、ＯｐｅｎＣＬアプリケーション実行ノードがネットワークに接続された時や、演算デバイスを持つノードがネットワークに接続された時などが考えられる。
【００３６】
ステップＳ３０１では、ネットワーク上のＯｐｅｎＣＬインターフェース対応演算デバイスを有するノードの中から、リソース情報を取得していないノードを探し、リソース情報を取得していないノードがない場合、終了する。リソース情報を取得していないノードがある場合、ステップＳ３０２に進み、そのノードを次の処理対象として選択する。
【００３７】
ステップＳ３０２では、選択したノード上の演算デバイスのリソース情報を取得する。ＯｐｅｎＣＬインターフェースでは、使用可能なプラットフォーム情報とそのプラットフォーム上でのデバイス情報を取得するＡＰＩが定義されている。リソース情報取得部１０１２２は、ネットワークインターフェース１０１３、１０２１を介して、ネットワーク越しのＯｐｅｎＣＬドライバ１０２２にアクセスし、このＡＰＩを使用して演算リソース情報を取得する。
【００３８】
ステップＳ３０３では、データ転送速度取得部１０１２３が、選択したノードとＯｐｅｎＣＬアプリケーション実行ノードとの間のデータの転送速度を取得する。
【００３９】
ステップＳ３０３の後、ステップＳ３０１に戻る。以降、ステップＳ３０１からステップＳ３０３をネットワーク上に存在するＯｐｅｎＣＬインターフェース対応演算デバイスを有するノードの数だけ繰り返す。
【００４０】
以上のステップの結果として、リソース取得部、データ転送時間取得部が取得した演算デバイスに関する情報は、演算デバイス情報管理部に集約され、リソース情報、データ転送速度を関連付けるデータリストを生成する。図４は演算デバイス情報管理部で管理する演算デバイス情報の一例である。この図を用いて、上記ステップの具体例を説明する。
【００４１】
ステップＳ３０１で、ネットワーク上に存在するＯｐｅｎＣＬインターフェース対応演算デバイスを有するノードを検索し、ＩＰアドレスが１０．２０．３０．４０のノードが該当したとする。このノードの識別情報として４０１のノード識別情報列にノード識別情報としてＩＰアドレスを記録する。
【００４２】
ステップＳ３０２で、このノードのリソース情報を取得する。ＯｐｅｎＣＬインターフェースでは、最初にプラットフォーム情報を取得する。ＯｐｅｎＣＬでは、１つのノード上に複数のＯｐｅｎＣＬ実行環境を持つことが可能であり、各プラットフォームの情報を取得することができる。各プラットフォームはプラットフォームＩＤで識別することができる。プラットフォーム情報として、このノードには２つのプラットフォームが存在するという情報が得られ、それぞれのプラットフォームＩＤは、０と１であったとする。この情報を４０２の取得したＯｐｅｎＣＬプラットフォームＩＤ列に記録する。
【００４３】
次にプラットフォーム毎に演算デバイス情報を取得する。ＯｐｅｎＣＬでは、１つのプラットフォーム上に複数の演算デバイスを持つことが可能であり、各演算デバイスの情報を取得することができる。各演算デバイスはデバイスＩＤで識別することができる。演算デバイス情報として、プラットフォームＩＤが０のプラットフォームには、２つの演算デバイスが存在するという情報が得られ、それぞれのデバイスＩＤは、０と１であったとする。また、プラットフォームＩＤが１のプラットフォームには、１つの演算デバイスが存在するという情報が得られ、デバイスＩＤは、０であったとする。これらの情報を４０３の取得したＯｐｅｎＣＬデバイスＩＤ列に記録する。
【００４４】
次に演算デバイス毎に演算デバイスの演算能力情報を取得する。ＯｐｅｎＣＬでは、各演算デバイスの様々な情報を取得することができる。ここでは、デバイスの演算能力を比較するために必要な情報を取得する。例えば、ＧＰＵ、ＣＰＵなどのプロセッサの種類や、演算ユニットの数、クロックの周波数、メモリのサイズ、デバイス名などの情報である。演算能力情報の１つとして、プロセッサ種別情報を取得する場合を例とする。プラットフォームＩＤが０、デバイスＩＤが０のデバイスのプロセッサ種別情報としてＧＰＵという情報が得られたとする。また、プラットフォームＩＤが０、デバイスＩＤが１のデバイスのプロセッサ種別情報としてＧＰＵ、プラットフォームＩＤが１、デバイスＩＤが０のデバイスのプロセッサ種別情報としてＣＰＵという情報が得られたとする。これらの情報を４０４の演算能力情報列に記録する。以上がステップＳ３０２で行なうリソース情報の取得である。
【００４５】
ステップＳ３０３では、このノードとの間のデータ転送速度を取得する。転送速度の測定方法としては、大容量データの入出力を伴う仮のＯｐｅｎＣＬアプリケーションを生成し、選択したノードで実行することによりデータの転送速度を求める方法が考えられる。また、ＯｐｅｎＣＬインターフェースに依存しない方法で、ノード間ネットワークのデータ転送速度を測定しても良い。プラットフォームＩＤが０、デバイスＩＤが０のデバイスとのデータ転送速度としてＡＡという情報が得られたとする。また、プラットフォームＩＤが０、デバイスＩＤが１のデバイスとのデータ転送速度としてＢＢ、プラットフォームＩＤが１、デバイスＩＤが０のデバイスとのデータ転送速度としてＣＣという情報が得られたとする。ここで得られた転送速度を４０５のデータ転送速度列に記録する。
【００４６】
以上で１つのノードに対する処理は終了で、次のノードに対して同様の処理を行なう。ＩＰアドレスが、１０．２０．４０．５０のリソース情報とデータ転送速度を得て、４０１から４０５の列に記録する。
【００４７】
図５は、この演算デバイス情報を利用して、演算デバイス選択部１０１２４が、ＯｐｅｎＣＬアプリケーションを実行するのに適した演算デバイスを選択する手順を示すフローチャートである。
【００４８】
この手順を行なう契機としては、当該ＯｐｅｎＣＬアプリケーションが最初に実行された時に行なう場合が考えられる。別の契機として、実行される可能性があるＯｐｅｎＣＬアプリケーションに対して適した演算デバイスを予め決定しておくために、システムの起動時などに行なう場合などが考えられる。
【００４９】
ステップＳ５０１では、実行するＯｐｅｎＣＬアプリケーションから転送するデータ量情報と演算情報を取得する。これらの情報は後述するステップＳ５０３で各演算デバイスに対するデータ転送時間と演算実行時間を求めるために必要な情報である。転送するデータ量情報としては、ＯｐｅｎＣＬアプリケーションに入出力するデータ量と、ＯｐｅｎＣＬアプリケーションプログラムそのもののデータ量を取得する。
【００５０】
ステップＳ５０２からステップＳ５０５は、先に取得した演算デバイスの数だけ繰り返す処理である。ステップＳ５０２では、ステップＳ５０３からステップＳ５０５の演算デバイスの評価処理を未実施のデバイス情報を探し、無い場合には終了する。評価処理を実施していないデバイスがある場合には、その演算デバイスを処理対象として選択し、ステップＳ５０３に進む。
【００５１】
ステップＳ５０３では、選択した演算デバイスで、当該ＯｐｅｎＣＬアプリケーションを実行する場合のデータ転送時間と演算実行時間の合計時間を推定する。ここでは、演算デバイス情報管理部１０１２５からそのデバイスのデータ転送速度、演算能力情報を取得し、ステップＳ５０１で取得したアプリケーションの転送するデータ量情報、演算情報を用いて、データ転送時間と演算実行時間の合計時間を推定する。また、その合計時間情報を演算デバイス情報管理部で管理する演算デバイス情報として記録する。
【００５２】
データ転送時間に関しては、データ量情報とデータ転送速度から算出できる。
【００５３】
演算実行時間に関しては、ＧＰＵ、ＣＰＵなどのデバイスに対する演算量対演算実行時間変換テーブルを予め用意しておき、ステップＳ５０１で得たアプリケーションの演算量から演算実行時間を得る方法がある。他の方法としては、当該ＯｐｅｎＣＬアプリケーションをその演算デバイスで実際に実行して、演算実行時間を得る方法もある。
【００５４】
ステップＳ５０４では、ステップＳ５０３で推定した合計時間が他の演算デバイスで推定合計時間より小さい場合には、ステップＳ５０５に進む。合計時間が他のデバイスより小さくない場合には、ステップＳ５０２に戻り、他のデバイスの評価ステップに進む。
【００５５】
ステップＳ５０５では、そのデバイスをＯｐｅｎＣＬアプリケーション実行デバイスとして選択する。具体的には、演算デバイス情報管理部に、当該ＯｐｅｎＣＬアプリケーションを実行するデバイスとして選択したという情報を伝え、演算デバイス情報管理部では、それを記録する。
【００５６】
以降、ステップＳ５０２からステップＳ５０５を演算デバイスの数だけ繰り返すことにより、合計時間が小さくなるデバイスを探索し、当該ＯｐｅｎＣＬアプリケーションを実行する演算デバイスを決定する。
【００５７】
この手順を実行した結果、特定のＯｐｅｎＣＬアプリケーションのデータ転送時間と演算実行時間の合計時間を追記した演算デバイス情報の一例を図６に示す。６０６の特定のアプリケーションのデータ転送時間と演算実行時間の合計の列に各演算デバイスでの情報を追記してある。この例では、ノード識別情報が１０．２０．３０．４０、プラットフォームＩＤが０、デバイスＩＤが１のデバイスの合計時間が小さいので、アプリケーションを実行する演算デバイスとしてこのデバイスを選択する。
【００５８】
演算デバイス情報管理部１０１２５に、図６に示したような演算デバイス情報が管理されている状態で、ＯｐｅｎＣＬアプリケーションを実行する時の動作例を説明する。
【００５９】
ＯｐｅｎＣＬアプリケーションは、ＯｐｅｎＣＬ  ＡＰＩ変換部１０１２１に、演算処理の実行を依頼する。ＯｐｅｎＣＬ  ＡＰＩ変換部は、ネットワーク上に存在する演算デバイスから演算を実行する実デバイスを決定するために、演算デバイス情報管理部に、デバイス情報を問い合わせる。演算デバイス情報管理部は、データ転送時間と演算実行時間の合計時間が最少であるノード識別情報が１０．２０．３０．４０、プラットフォームＩＤが０、デバイスＩＤが０のデバイスの情報をＯｐｅｎＣＬ  ＡＰＩ変換部に渡す。ＯｐｅｎＣＬ  ＡＰＩ変換部は、このノード上の該当デバイスに演算を実行させる。
【００６０】
次に、ＯｐｅｎＣＬインターフェース対応演算デバイスを有するノードがネットワーク上に追加されることにより、ＯｐｅｎＣＬアプリケーションを実行するデバイスが変更される例を説明する。
【００６１】
クラウド対応ＯｐｅｎＣＬドライバは、新たに接続されたＯｐｅｎＣＬインターフェース対応演算デバイスを有するノードに対して、図３で説明したリソース情報と、データ転送時間を取得する手順と図５で説明した演算デバイスを選択する手順を実行する。その結果として、演算デバイス情報管理部が管理する演算デバイス情報が図７になったとする。新たに追加されたノードはノード識別情報が５０．４０．３０．２０で、プラットフォームが２つあり、それぞれ１つのデバイスを持つ構成であるとする。先に取得したノード上のデバイスを含めて考え、データ転送時間と演算実行時間の合計（処理完了までの時間）が最小となる演算デバイスは、ノード識別情報が５０．４０．３０．２０、プラットフォームＩＤが０、デバイスＩＤが０のデバイスとなる。よって、当該ＯｐｅｎＣＬアプリケーションを実行するデバイスとしては、このデバイスを選択し、演算を実行する。尚、本実施形態では、処理完了までの時間が最小となるデバイスを選択したが、あらかじめ設定された所定の値よりも小さくなれば良く、必ずしも最小にする必要はない。
【００６２】
以上の本実施形態における演算処理システムによれば、ネットワーク上に存在する演算デバイスの中から、データ転送時間を考慮して、ＯｐｅｎＣＬアプリケーションの実行に最適な演算デバイスを選択することができる。
【００６３】
（第２の実施形態）
以下、第２の実施形態について、第１の実施形態との差異を中心に説明する。ただし、本発明の技術的範囲がこの実施形態に限定されるものではない。
【００６４】
本実施形態においては、ネットワーク上のＯｐｅｎＣＬインターフェース対応演算デバイスに対してユニークな仮想ＩＤを割り当て、最適な演算デバイスをＯｐｅｎＣＬアプリケーションに提供する実施例を説明する。
【００６５】
本実施形態におけるクラウド対応ＯｐｅｎＣＬドライバの構成を図８に示す。図２で示したブロックに、デバイスＩＤ割り当て部１０１２６を追加している。他のブロックは、図２の同符号のブロックと同様である。
【００６６】
１０１２６は、デバイスＩＤ割り当て部であり、ネットワークに接続されたノード上の演算デバイスにユニークなＩＤを割り当てる。
【００６７】
リソース取得部、データ転送時間取得部、デバイスＩＤ割り当て部が協調して、ネットワークに接続されたノードの演算デバイスのリソース情報と、データ転送時間を取得し、ユニークなデバイスＩＤを割り当てる手順を示すフローチャートを図９に示す。
【００６８】
ステップＳ３０１からステップＳ３０３は、図３で説明した同符号のステップと同等である。ステップＳ３０３の後、ステップＳ９０４に進む。
【００６９】
ステップＳ９０４では、デバイスＩＤ割り当て部が、そのノードに存在する演算デバイスに仮想のデバイスＩＤを割り当てる。リソース情報取得ステップで取得した演算デバイスに対して、ＯｐｅｎＣＬインターフェースでは、そのノード内では一意に特定できるデバイスＩＤを割り振られているが、ネットワーク上にあるノード間では、そのデバイスＩＤでは一意に特定できない。そこで、通常、ＩＰアドレスなどのノードを識別する情報との組み合わせにより、一意に識別することになる。このステップでは、ネットワーク上に存在する全ての演算デバイス間でユニークとなる仮想のデバイスＩＤを割り当てる。これにより、ＯｐｅｎＣＬアプリケーションは、演算デバイスが存在するノードの情報を知る必要がなく、従来の機器内ＯｐｅｎＣＬ実行環境と同等にデバイスにアクセスできることになる。
【００７０】
ステップＳ９０４の後、ステップＳ３０１に戻る。以降、ステップＳ３０１からステップＳ９０４をネットワーク上に存在するＯｐｅｎＣＬインターフェース対応演算デバイスを有するノードの数だけ繰り返す。
【００７１】
以上のステップの結果として、各処理部が取得、決定した演算デバイスに関する情報は、演算デバイス情報管理部に集約され、リソース情報、データ転送速度、仮想デバイスＩＤを関連付けるデータリストを生成する。図１０は演算デバイス情報管理部で管理する演算デバイス情報の一例である。この図を用いて、デバイスＩＤ割り当ての具体例を説明する。
【００７２】
４０１から４０５列の情報は、図４で説明した同符号の情報と同等である。
【００７３】
ノード識別情報が１０．２０．３０．４０のノードに対するステップＳ９０４において、そのノードに存在する演算デバイスに、ノード間に渡ってユニークな仮想のデバイスＩＤを割り当てる。プラットフォームＩＤが０、デバイスＩＤが０のデバイスの仮想デバイスＩＤを０と設定したとする。同様に、プラットフォームＩＤが０、デバイスＩＤが１のデバイスの仮想デバイスＩＤを１、プラットフォームＩＤが１、デバイスＩＤが０のデバイスの仮想デバイスＩＤを２と設定したとする。ここで得られた仮想デバイスＩＤを１００６の割り当てた仮想デバイスＩＤ列に記録する。
【００７４】
以上で１つのノードに対する処理は終了で、他のノードに対して同様の処理を行なう。ノード識別情報が１０．２０．４０．５０のノードと５０．４０．３０．２０のノードの仮想デバイスＩＤに関しては、ノード間でもユニークとなるＩＤを割り当て、１００６の列に記録する。この例では、仮想デバイスＩＤとして、０から昇順の数値を割り当てているが、識別可能なユニークな値であれば良い。
【００７５】
次に、複数のＯｐｅｎＣＬアプリケーションに対して、図５で説明した実行に適した演算デバイスを選択する手順を実行し、ＯｐｅｎＣＬアプリケーションを実行する演算デバイスを追記した演算デバイス情報の一例を図１１に示す。
【００７６】
演算デバイス選択手順をＯｐｅｎＣＬアプリケーションのアプリＸ、アプリＹ、アプリＺに対して実行したとする。アプリＸのデータ転送時間と演算実行時間の合計時間が小さいデバイスは、ノード識別情報が１０．２０．３０．４０、プラットフォームＩＤが０、デバイスＩＤが１のデバイスであったとする。アプリＹとアプリＺの合計時間が小さいデバイスは共に、ノード識別情報が５０．４０．３０．２０、プラットフォームＩＤが０、デバイスＩＤが０のデバイスであったとする。この場合、１１０７のデバイスで実行するＯｐｅｎＣＬアプリケーション列の該当デバイスの箇所に、そのアプリケーションの情報を記録する。
【００７７】
演算デバイス情報管理部１０１２５に、図１１に示したような演算デバイス情報が管理されている状態で、既存の機器内ＯｐｅｎＣＬ実行環境用に開発されたＯｐｅｎＣＬアプリケーションを実行する時の動作例を説明する。
【００７８】
ＯｐｅｎＣＬアプリケーションは、演算処理を実行する前に、実行するデバイスを確定するために、そのプラットフォーム上で使用可能なデバイス情報を取得するＡＰＩを使用して、デバイス情報を取得する。ＯｐｅｎＣＬアプリケーションは、ＯｐｅｎＣＬ  ＡＰＩ変換部１０１２１に対して同ＡＰＩをコールすると、ＯｐｅｎＣＬ  ＡＰＩ変換部は、演算デバイス情報管理部１０１２５からデバイス情報を取得し、アプリケーションに提供する。この時、ＯｐｅｎＣＬのデバイスＩＤに相当する情報としては、仮想デバイスＩＤを提供する。図１１に示した演算デバイスがネットワーク上に存在する場合には、６つのデバイス情報をアプリケーションに提供することになる。
【００７９】
ＯｐｅｎＣＬでは、どのデバイスでアプリケーションを実行するかは基本的にアプリケーション側が選択する。具体的には、取得されたデバイスＩＤ群の中から、適すると思われるデバイスをアプリケーションが１つ選択して、ＯｐｅｎＣＬドライバに対してそのデバイスＩＤを指定して演算の実行を依頼する。
【００８０】
ここで、機器内ＯｐｅｎＣＬ実行環境用に開発されたＯｐｅｎＣＬアプリケーションは、複数のデバイスが存在することは想定していないことが多いので、例えば、最初に識別されたデバイスのデバイスＩＤを選択したとする。この例では、仮想デバイスＩＤが０のデバイスを選択したとする。
【００８１】
デバイスＩＤを０として演算実行を依頼されたＯｐｅｎＣＬ  ＡＰＩ変換部は、仮想デバイスＩＤからネットワーク上に存在する実デバイスを決定するために、演算デバイス情報管理部に、アプケーション情報と共に、問い合わせる。
【００８２】
１つ目の例として、このときのアプリケーションがアプリＸ、Ｙ、Ｚ以外であったとする。演算デバイス情報管理部は、図１１中の１１０７列のＯｐｅｎＣＬアプリケーションと問い合わされたアプリケーションが一致するかどうかを検索する。この場合は一致しないので、仮想デバイスＩＤが０のデバイスであるノード識別情報が１０．２０．３０．４０、プラットフォームＩＤが０、デバイスＩＤが０のデバイスの情報をＯｐｅｎＣＬ  ＡＰＩ変換部に渡す。ＯｐｅｎＣＬ  ＡＰＩ変換部は、このノード上の該当デバイスに演算を実行させることになる。この場合は、実行に適した演算デバイスが特定されていなかった状態なので、アプリケーションから指定されたデバイスでそのまま実行することになる。
【００８３】
異なる例として、アプリケーションがアプリＸであったとする。演算デバイス情報管理部は、図１１中の１１０７列のＯｐｅｎＣＬアプリケーションと問い合わされたアプリケーションが一致するかどうかを検索し、この場合は一致することがわかる。アプリＸは仮想デバイスＩＤが１のデバイスで実行すること方が良いので、ノード識別情報が１０．２０．３０．４０、プラットフォームＩＤが０、デバイスＩＤが１のデバイスの情報をＯｐｅｎＣＬ  ＡＰＩ変換部に渡す。これと同時に、内部で管理している仮想デバイスＩＤを入れ替える。入れ替えた後の演算デバイス情報は図１２のようになる。ＯｐｅｎＣＬ  ＡＰＩ変換部は、このノード上の該当デバイスに演算を実行させることになり、アプリＸに対して最適な演算デバイスが優先的に設定され、処理を実行できることになる。
【００８４】
以上の本実施形態における演算処理システムによれば、ネットワーク上に存在する演算デバイスの中から、データ転送時間を考慮して、最適なデバイスを選択することができる。また、従来の機器内アプリケーションとして開発されたＯｐｅｎＣＬアプリケーションを変更することなく、ネットワーク上の最適なＯｐｅｎＣＬデバイスを選択し、利用することができる。
【００８５】
（その他の実施例）
本発明は、上述の実施形態の１以上の機能を実現するプログラムを、ネットワーク又は記憶媒体を介してシステム又は装置に供給し、そのシステム又は装置のコンピュータにおける１つ以上のプロセッサがプログラムを読出し実行する処理でも実現可能である。また、１以上の機能を実現する回路（例えば、ＡＳＩＣ）によっても実現可能である。
【符号の説明】
【００８６】
１０１  ＯｐｅｎＣＬアプリケーション実行ノード
１０２、１０３、１０４  ＯｐｅｎＣＬインターフェース対応演算デバイスノード
１０５  ネットワーク
１０１１  ＯｐｅｎＣＬアプリケーション
１０１２  クラウド対応ＯｐｅｎＣＬドライバ
１０１３、１０２１  ネットワークインターフェース
１０２２  ＯｐｅｎＣＬドライバ
１０２３  演算デバイス
１０１２１  ＯｐｅｎＣＬ  ＡＰＩ変換部
１０１２２  リソース情報取得部
１０１２３  データ転送速度取得部
１０１２４  演算デバイス選択部
１０１２５  演算デバイス情報管理部
１０１２６  デバイスＩＤ割り当て部
【図１】
2016218926.tif 000003
【図２】
2016218926.tif 000004
【図３】
2016218926.tif 000005
【図４】
2016218926.tif 000006
【図５】
2016218926.tif 000007
【図６】
2016218926.tif 000008
【図７】
2016218926.tif 000009
【図８】
2016218926.tif 000010
【図９】
2016218926.tif 000011
【図１０】
2016218926.tif 000012
【図１１】
2016218926.tif 000013
【図１２】
2016218926.tif 000014