(57)【特許請求の範囲】
【請求項１】
種類の異なる複数のハードウエアにより構成される異種ハードウエア群に、処理を実行させるためのデータを設定する設定サーバであって、
前記異種ハードウエア群は、汎用ハードウエアと、特定の処理の実行に適した特定ハードウエアを含み、
前記特定ハードウエアが前記特定の処理を実行するための中間言語パターンのロジックと、前記汎用ハードウエアが前記特定の処理を実行するためのソースコードパターンのロジックを対応づけたコードパターンデータを記憶する記憶装置と、
ユーザ端末から、前記汎用ハードウエアが処理を実行するためのソースコードデータを取得する取得手段と、
前記ソースコードデータのロジックのうち、前記コードパターンデータのソースコードパターンのロジックに類似する部分を、前記ソースコードパターンのロジックに対応する前記中間言語パターンのロジックに基づいて変換して、前記特定ハードウエアのための中間言語データを生成する変換手段と、
前記中間言語データを、前記特定ハードウエアに設定する設定手段
とを備えることを特徴とする設定サーバ。
【請求項２】
前記記憶装置は、
ユーザの識別子と、前記ユーザに割り当てられた前記特定ハードウエアの識別子を対応づけたハードウエアリストデータをさらに記憶し、
前記設定手段は、前記ハードウエアリストデータを参照して、前記ユーザに割り当てられた前記特定ハードウエアに、前記中間言語データを設定する
ことを特徴とする請求項１に記載の設定サーバ。
【請求項３】
種類の異なる複数のハードウエアにより構成される異種ハードウエア群に、処理を実行させるためのデータを設定する設定サーバであって、
前記異種ハードウエア群は、汎用ハードウエアと、特定の処理の実行に適した特定ハードウエアを含み、
前記特定ハードウエアが前記特定の処理を実行するための中間言語パターンと、前記汎用ハードウエアが前記特定の処理を実行するためのソースコードパターンを対応づけたコードパターンデータを記憶する記憶装置と、
ユーザ端末から、前記汎用ハードウエアが処理を実行するためのソースコードデータを取得する取得手段と、
前記ソースコードデータのうち、前記コードパターンデータのソースコードパターンに対応する部分を、前記ソースコードパターンに対応する前記中間言語パターンに基づいて変換して、前記特定ハードウエアのための中間言語データを生成する変換手段と、
前記中間言語データを、前記特定ハードウエアに設定する設定手段
とを備え、
前記コードパターンデータは、前記中間言語パターンに前記特定ハードウエアの種別をさらに対応づけ、
前記変換手段はさらに、前記ソースコードデータに対応する前記中間言語パターンに基づいて、前記特定ハードウエアの種別を特定し、
特定された前記特定ハードウエアの種別を含む割当リクエストを割当サーバに送信し、前記割当サーバから、前記特定ハードウエアの種別に対応する前記特定ハードウエアの識別子を取得する割当要求手段をさらに備え、
前記設定手段は、前記割当要求手段で取得した前記特定ハードウエアの識別子に対応する前記特定ハードウエアに、前記中間言語データを設定する
ことを特徴とする設定サーバ。
【請求項４】
種類の異なる複数のハードウエアにより構成される異種ハードウエア群に、処理を実行させるためのデータを設定する設定サーバに用いられる設定方法であって、
前記異種ハードウエア群は、汎用ハードウエアと、特定の処理の実行に適した特定ハードウエアを含み、
前記設定方法は、
前記設定サーバが、前記特定ハードウエアが前記特定の処理を実行するための中間言語パターンのロジックと、前記汎用ハードウエアが前記特定の処理を実行するためのソースコードパターンのロジックを対応づけたコードパターンデータを記憶するステップと、
前記設定サーバが、ユーザ端末から、前記汎用ハードウエアが処理を実行するためのソースコードデータを取得するステップと、
前記設定サーバが、前記ソースコードデータのロジックのうち、前記コードパターンデータのソースコードパターンのロジックに類似する部分を、前記ソースコードパターンのロジックに対応する前記中間言語パターンに基づいて変換して、前記特定ハードウエアのための中間言語データのロジックを生成するステップと、
前記設定サーバが、前記中間言語データを、前記特定ハードウエアに設定するステップ
とを備えることを特徴とする設定方法。
【請求項５】
前記設定サーバが、ユーザの識別子と、前記ユーザに割り当てられた前記特定ハードウエアの識別子を対応づけたハードウエアリストデータを記憶するステップをさらに備え、
前記設定サーバが、前記中間言語データを、前記特定ハードウエアに設定するステップは、
前記設定サーバが、前記ハードウエアリストデータを参照して、前記ユーザに割り当てられた前記特定ハードウエアに、前記中間言語データを設定する
ことを特徴とする請求項４に記載の設定方法。
【請求項６】
種類の異なる複数のハードウエアにより構成される異種ハードウエア群に、処理を実行させるためのデータを設定する設定サーバに用いられる設定方法であって、
前記異種ハードウエア群は、汎用ハードウエアと、特定の処理の実行に適した特定ハードウエアを含み、
前記設定方法は、
前記設定サーバが、前記特定ハードウエアが前記特定の処理を実行するための中間言語パターンと、前記汎用ハードウエアが前記特定の処理を実行するためのソースコードパターンを対応づけたコードパターンデータを記憶するステップと、
前記設定サーバが、ユーザ端末から、前記汎用ハードウエアが処理を実行するためのソースコードデータを取得するステップと、
前記設定サーバが、前記ソースコードデータのうち、前記コードパターンデータのソースコードパターンに対応する部分を、前記ソースコードパターンに対応する前記中間言語パターンに基づいて変換して、前記特定ハードウエアのための中間言語データを生成するステップと、
前記設定サーバが、前記中間言語データを、前記特定ハードウエアに設定するステップ
とを備え、
前記コードパターンデータは、前記中間言語パターンに前記特定ハードウエアの種別をさらに対応づけ、
前記中間言語データを生成するステップは、
前記ソースコードデータに対応する前記中間言語パターンに基づいて、前記特定ハードウエアの種別を特定し、
特定された前記特定ハードウエアの種別を含む割当リクエストを割当サーバに送信し、前記割当サーバから、前記特定ハードウエアの種別に対応する前記特定ハードウエアの識別子を取得するステップをさらに備え、
前記中間言語データを、特定ハードウエアに設定するステップは、
取得した前記特定ハードウエアの識別子に対応する前記特定ハードウエアに、前記中間言語データを設定する
ことを特徴とする設定方法。
【請求項７】
コンピュータを、請求項１ないし請求項３のいずれか１項に記載の設定サーバとして機能させるための設定プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、種類の異なる複数のハードウエア群のいずれかのハードウエアに、処理を実行させるためのデータを設定する設定サーバ、設定方法および設定プログラムに関する。
【背景技術】
【０００２】
近年、クラウドサービスの一形態として、ＩａａＳ（Ｉｎｆｒａｓｔｒｕｃｔｕｒｅ  ａｓ  ａ  Ｓｅｒｖｉｃｅ）サービスが発展している。ＩａａＳサービスは、インターネットを経由して用いるコンピュータシステムを、ユーザに、構築および稼動させるための基盤を提供する。ユーザは、事業者と契約することで、コンピュータリソースをオンデマンドに利用可能になる。初期のクラウドでは、パーソナルコンピュータと同等なサーバを並置し、Ｘｅｎ、ＫＶＭ（Ｋｅｒｎｅｌ  ｂａｓｅｄ  Ｖｉｒｔｕａｌ  Ｍａｃｈｉｎｅ）等のハイパーバイザ―で仮想化し、ＭａｐＲｅｄｕｃｅ等の分散処理技術を用いて、高い計算能力が得られていた。
【０００３】
しかしながら、近年のクラウドは、進歩したハードウエアのパワーを生かす形にシフトしている。例えば、メニーコアＣＰＵの性能を生かすため、仮想化を行わないベアメタルサーバを提供する事業者が出てきている。更に、ＧＰＵ（Ｇｒａｐｈｉｃｓ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）を強化したサーバで画像処理を行ったり、ＦＰＧＡ（Ｆｉｅｌｄ  Ｐｒｏｇｒａｍｍａｂｌｅ  Ｇａｔｅ  Ａｒｒａｙ）で特定計算処理をアクセラレートしたりするなど、特定サーバで専用処理を行う事業者が出始めている。
【０００４】
このように、特定の処理に特化したハードウエアのパワーを生かすことで、ユーザにとっても処理の高性能化が期待される。しかし、そのためには、ユーザは、動作させるハードウエアに合わせたアプリケーションのプログラミングが必要であり、多岐にわたる技術知識が求められる場合がある。
【０００５】
特定の処理に特化したハードウエアを用いるために、Ｃ言語、Ｃ＋＋言語、Ｊａｖａ（登録商標）等のソースプログラムに、何らかの指示行を付与し、動作を特定する場合がある。このように指示行が指定されたソースプログラムをコンパイルすることにより、特定のハードウエアに処理を実行させることを支援させるツールも普及している（例えば非特許文献１ないし３参照）。
【０００６】
また、特定の処理に特化した複数のハードウエアを使いわけるために、ユーザの要件に応じて、実行ファイル単位で、各ハードウエアに振り分ける技術もある（非特許文献４参照）。
【先行技術文献】
【非特許文献】
【０００７】
【非特許文献１】NVIDIA Corporation、"PGI Accelerator Compilers with OpenACC Directives"、［online］、［平成２８年４月２８日検索］、インターネット〈URL：https://www.pgroup.com/resources/accel.htm
【非特許文献２】Advanced Micro Devices, Inc、"Aparapi"、［online］、［平成２８年４月２８日検索］、インターネット〈URL：http://developer.amd.com/tools-and-sdks/opencl-zone/aparapi/
【非特許文献３】Altera Corporation、"Altera SDK for OpenCL"、［online］、［平成２８年４月２８日検索］、インターネット〈URL：https://www.altera.com/products/design-software/embedded-software-developers/opencl/documentation.html
【非特許文献４】Y. Yamato, “Server Structure Proposal and Automatic Verification Technology on IaaS Cloud of Plural Type Servers,” International Conference on Internet Studies (NETs2015), Tokyo, July 2015.
【発明の概要】
【発明が解決しようとする課題】
【０００８】
非特許文献１ないし３等に開示されるように、特定のハードウエアに処理を実行させることを支援させるツールが普及しているものの、ユーザは、特定のハードウエアに処理を実行させるための指示行を、ソースプログラムに記載する必要がある。すなわち、ツールによりユーザの負担は軽減されるものの、ユーザは、特定のハードウエアの特性や、各ハードウエアに適切な処理などを把握する必要があり、依然としてユーザに高い知識が求められる場合がある。
【０００９】
また、特定の処理に特化したハードウエアを有効に活用するためには、各ハードウエアに、各ハードウエアに適した処理を割り当てるのが好適である。しかしながら、非特許文献４に記載の方法では、実行ファイル単位で、各ハードウエアに振り分けるに留まり、各ハードウエアを有効に活用できない場合がある。
【００１０】
従って本発明の目的は、ユーザに高い知識がなくとも、種類の異なる複数のハードウエア群のいずれかのハードウエアに、適切に処理を実行させることが可能な設定サーバ、設定方法および設定プログラムを提供することである。
【課題を解決するための手段】
【００１１】
上記課題を解決するために、本発明の第１の特徴は、種類の異なる複数のハードウエアにより構成される異種ハードウエア群に、処理を実行させるためのデータを設定する設定サーバに関する。異種ハードウエア群は、汎用ハードウエアと、特定の処理の実行に適した特定ハードウエアを含む。第１の特徴に係る設定サーバは、特定ハードウエアが特定の処理を実行するための中間言語パターンと、汎用ハードウエアが特定の処理を実行するためのソースコードパターンを対応づけたコードパターンデータを記憶する記憶装置と、ユーザ端末から、汎用ハードウエアが処理を実行するためのソースコードデータを取得する取得手段と、ソースコードデータのうち、コードパターンデータのソースコードパターンに対応する部分を、ソースコードパターンに対応する中間言語パターンに基づいて変換して、特定ハードウエアのための中間言語データを生成する変換手段と、中間言語データを、特定ハードウエアに設定する設定手段とを備える。
【００１２】
ここで、記憶装置は、ユーザの識別子と、ユーザに割り当てられた特定ハードウエアの識別子を対応づけたハードウエアリストデータをさらに記憶し、設定手段は、ハードウエアリストデータを参照して、ユーザに割り当てられた特定ハードウエアに、中間言語データを設定しても良い。
【００１３】
また、コードパターンデータは、中間言語パターンに特定ハードウエアの種別をさらに対応づけ、変換手段はさらに、ソースコードデータに対応する中間言語パターンに基づいて、特定ハードウエアの種別を特定し、特定された特定ハードウエアの種別を含む割当リクエストを割当サーバに送信し、割当サーバから、特定ハードウエアの種別に対応する特定ハードウエアの識別子を取得する割当要求手段をさらに備え、設定手段は、割当要求手段で取得した特定ハードウエアの識別子に対応する特定ハードウエアに、中間言語データを設定しても良い。
【００１４】
本発明の第２の特徴は、種類の異なる複数のハードウエアにより構成される異種ハードウエア群に、処理を実行させるためのデータを設定する設定サーバに用いられる設定方法に関する。異種ハードウエア群は、汎用ハードウエアと、特定の処理の実行に適した特定ハードウエアを含む。第２の特徴に係る設定方法は、設定サーバが、特定ハードウエアが特定の処理を実行するための中間言語パターンと、汎用ハードウエアが特定の処理を実行するためのソースコードパターンを対応づけたコードパターンデータを記憶するステップと、設定サーバが、ユーザ端末から、汎用ハードウエアが処理を実行するためのソースコードデータを取得するステップと、設定サーバが、ソースコードデータのうち、コードパターンデータのソースコードパターンに対応する部分を、ソースコードパターンに対応する中間言語パターンに基づいて変換して、特定ハードウエアのための中間言語データを生成するステップと、設定サーバが、中間言語データを、特定ハードウエアに設定するステップとを備える。
【００１５】
ここで、設定サーバが、ユーザの識別子と、ユーザに割り当てられた特定ハードウエアの識別子を対応づけたハードウエアリストデータを記憶するステップをさらに備え、設定サーバが、中間言語データを、特定ハードウエアに設定するステップは、設定サーバが、ハードウエアリストデータを参照して、ユーザに割り当てられた特定ハードウエアに、中間言語データを設定しても良い。
【００１６】
また、コードパターンデータは、中間言語パターンに特定ハードウエアの種別をさらに対応づけ、中間言語データを生成するステップは、ソースコードデータに対応する中間言語パターンに基づいて、特定ハードウエアの種別を特定し、
特定された特定ハードウエアの種別を含む割当リクエストを割当サーバに送信し、割当サーバから、特定ハードウエアの種別に対応する特定ハードウエアの識別子を取得するステップをさらに備え、中間言語データを、特定ハードウエアに設定するステップは、取得した特定ハードウエアの識別子に対応する特定ハードウエアに、中間言語データを設定しても良い。
【００１７】
本発明の第３の特徴は、コンピュータを、本発明の第１の特徴に記載の設定サーバとして機能させるための設定プログラムに関する。
【発明の効果】
【００１８】
本発明によれば、ユーザに高い知識がなくとも、種類の異なる複数のハードウエア群のいずれかのハードウエアに、適切に処理を実行させることが可能な設定サーバ、設定方法および設定プログラムを提供することができる。
【図面の簡単な説明】
【００１９】
【図１】図１は、本発明の実施の形態に係る処理システムのシステム構成図である。
【図２】図２は、本発明の実施の形態に係る設定サーバのハードウエア構成と機能ブロックを説明する図である。
【図３】図３は、本発明の実施の形態に係るソースコードデータの一例である。
【図４】図４は、本発明の実施の形態に係るコードパターンデータの一例である。
【図５】図５は、本発明の実施の形態に係る中間言語データの一例である。
【図６】図６は、本発明の実施の形態に係る設定方法を説明するシーケンス図である。
【図７】図７は、変形例に係る処理システムのシステム構成図である。
【図８】図８は、変形例に係る設定サーバのハードウエア構成と機能ブロックを説明する図である。
【図９】図９は、変形例に係る設定方法を説明するシーケンス図である。
【発明を実施するための形態】
【００２０】
次に、図面を参照して、本発明の実施の形態を説明する。以下の図面の記載において、同一または類似の部分には同一または類似の符号を付している。
【００２１】
（処理システム）
本発明の実施の形態に係る処理システム５は、図１に示すように、設定サーバ１、ユーザ端末２および異種ハードウエア群３を備える。設定サーバ１およびユーザ端末２は、第１の通信ネットワークＮ１を介して、相互に通信可能に接続される。設定サーバ１および異種ハードウエア群３は、第２の通信ネットワークＮ２を介して相互に通信可能に接続される。ここで、第１の通信ネットワークＮ１および第２の通信ネットワークＮ２は、インターネット等の公衆通信回線であっても良いし、ＬＡＮ等の構内通信回線であっても良い。また本発明の実施の形態において、第１の通信ネットワークＮ１および第２の通信ネットワークＮ２は、それぞれ異なる通信ネットワークである場合を想定するが、同じ通信ネットワークであっても良い。さらに、ユーザ端末２と異種ハードウエア群３は、通信ネットワークにより相互に通信可能に接続されても良い。
【００２２】
設定サーバ１は、異種ハードウエア群３に、処理を実行させるためのデータを設定する。
【００２３】
異種ハードウエア群３の各ハードウエアは、いわゆるクラウドコンピューティングに用いられ、通信ネットワークを介して、ユーザ端末２にサービスを提供する。異種ハードウエア群３は、種類の異なる複数のハードウエアにより構成される。異種ハードウエア群３は、汎用ハードウエアと、特定の処理の実行に適した特定ハードウエアを含む。特定ハードウエアは、特定の処理を実行すれば、高速化などの処理の高性能化が期待できるハードウエアである。これに対し汎用ハードウエアは、何らかの処理に特化することなく、一般的な処理を実行するハードウエアである。
【００２４】
異種ハードウエア群３の各ハードウエアは、ユーザ端末２により設定されたソースコードデータ、または設定サーバ１により生成された中間言語データを実行するように構成される。特定ハードウエアは、ＨＤＤやＳＤＤの等の記憶装置、ハイパーバイザにより制御される仮想マシンを備えるコンピュータ、コンテナー、ＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）およびＧＰＵ（Ｇｒａｐｈｉｃｓ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）を備えるコンピュータ、ＮｏＳＱＬ（Ｎｏｔ  ｏｎｌｙ  ＳＱＬ）アクセラレートが定義されたＦＰＧＡ（Ｆｉｅｌｄ−Ｐｒｏｇｒａｍｍａｂｌｅ  Ｇａｔｅ  Ａｒｒａｙ）、ＦＦＴ（Ｆａｓｔ  Ｆｏｕｒｉｅｒ  Ｔｒａｎｓｆｏｒｍ）アクセラレートが定義されたＦＰＧＡ、未定義ＦＰＧＡ等である。ここに記載するハードウエアは例示であってこれに限るものではない。
【００２５】
本発明の実施の形態に係る異種ハードウエア群３の各特定ハードウエアは特に、ソースコードにおいて付与された指示行によって指定された処理を実行する。
【００２６】
例えば、ＯｐｅｎＡＣＣディレクティブを使った例において、ユーザが記載したＣ／Ｃ＋＋／Ｆｏｒｔｒａｎ言語で書かれたプログラムコードに、ＯｐｅｎＡＣＣに従ったディレクティブが指定される。ＯｐｅｎＡＣＣに従ったディレクティブとは、ここから並列処理させるなどを明示する指示行である。ＰＧＩコンパイラは、このプログラムコードをコンパイルすることで、ＧＰＵ用実行バイナリおよびＣＰＵ用実行バイナリを生成し、ＣＰＵおよびＣＰＵにそれぞれ実行させる。Ｊａｖａ（登録商標）でＧＰＧＰＵ（Ｇｅｎｅｒａｌ  Ｐｕｒｐｏｓｅ  ＧＰＵ）コンピューティングを可能とするＡｐａｒａｐｉライブラリも、同様にＧＰＵでの計算をＡＰＩで指定する。
【００２７】
ＦＰＧＡを制御するための、ＯｐｅｎＣＬ  ｆｏｒ  ＦＰＧＡの開発環境も提供されている。例えば、Ａｌｔｅｒａ  ＳＤＫ  ｆｏｒ  ＯｐｅｎＣＬは、ＯｐｅｎＣＬ  Ｃ  Ｃｏｍｐｉｌｅｒと、ＯｐｅｎＣＬ  Ｒｕｎｔｉｍｅ  Ｌｉｂｒａｒｙからなる。ＯｐｅｎＣＬ  Ｃ  Ｃｏｍｐｉｌｅｒは、ＦＰＧＡ内部のロジックを設定するために、ＯｐｅｎＣＬ  Ｃ言語をＦＰＧＡのビットストリームにコンパイルする。ＯｐｅｎＣＬ  Ｒｕｎｔｉｍｅ  Ｌｉｂｒａｒｙは、ＯｐｅｎＣＬ  ＡＰＩを提供するライブラリ群で、ＣＰＵ上で動作するアプリからＦＰＧＡ内部のロジックを制御する。ＯｐｅｎＣＬで、ＦＰＧＡロジックと制御を記述し、コンパイルすることで、ＣＰＵからロジック設定したＦＰＧＡに処理をオフロードすることが可能となる。
【００２８】
ユーザ端末２は、ユーザが扱う一般的なコンピュータである。ユーザ端末２は、異種ハードウエア群３に所定のプログラムを実行させるためのプログラムであるソースコードデータ１１を設定サーバ１に送信する。
【００２９】
設定サーバ１は、図２に示すように、ユーザ端末２から入力されたソースコードデータ１１を参照して、ソースコードデータ１１の各ロジックを、異種ハードウエア群３のいずれのハードウエアに実行させるべきかを決定する。このとき設定サーバ１は、特定の処理の実行に適した特定ハードウエアに、その特定の処理を実行させ、それ以外については、汎用ハードウエアに実行させるように決定する。設定サーバ１は、ソースコードデータ１１の各ロジックを、決定されたハードウエアに実行させるための中間言語データ１３に変換する。設定サーバ１は、変換された中間言語データ１３をそのハードウエアに設定しオフロードする。
【００３０】
本発明の実施の形態に係る処理システム５において、ユーザが汎用コンピュータ向けのソースコードデータ１１を生成すると、設定サーバ１が、ロジック毎に、最適なハードウエアにロジックを実行させるための中間言語データ１３を生成する。これにより、ソースコードデータ１１を生成するユーザに、特定ハードウエアの特性や特定ハードウエアに処理させるためのディレクティブに関して十分な知識がなくとも、異種ハードウエア群３を有効に活用し、処理の高速化を実現することができる。
【００３１】
（設定サーバ）
図２を参照して、本発明の実施の形態に係る設定サーバ１を説明する。設定サーバ１は、異種ハードウエア群３に、処理を実行させるためのデータを設定する。設定サーバ１は、Ｐａａｓ（Ｐｌａｔｆｏｒｍ  ａｓ  ａ  Ｓｅｒｖｉｃｅ）サーバとして機能しても良い。
【００３２】
設定サーバ１は、記憶装置１０、処理装置２０および通信制御装置３０を備える一般的なコンピュータである。一般的なコンピュータが、所定の機能を実現するための設定プログラムを実行することにより、図２に示す各手段を実装する。
【００３３】
記憶装置１０は、ソースコードデータ１１、コードパターンデータ１２、中間言語データ１３およびハードウエアリストデータ１４を記憶する。
【００３４】
ソースコードデータ１１は、ユーザ端末２から取得したソースコードであって、例えば、Ｃ／Ｃ＋＋／Ｆｏｒｔｒａｎ言語で書かれたプログラムコードである。ソースコードデータ１１は、例えば図３に示すデータであって、汎用ハードウエアに実行させるために記載される。
【００３５】
コードパターンデータ１２は、特定ハードウエアが特定の処理を実行するための中間言語パターンと、汎用ハードウエアが特定の処理を実行するためのソースコードパターンを対応づけたデータである。コードパターンデータ１２には、各種ロジックのうち、特定ハードウエアが実行するのに適したロジック、具体的には、特定ハードウエアが実行することにより処理の高速化などが期待できるロジックについて、中間言語パターンと、ソースコードパターンとを対応づける。
【００３６】
ソースコードパターンおよび中間言語パターンは、それぞれソースコードデータ１１のロジックと、このソースコードデータのロジックに対応する中間言語データ１３のロジックを、設定サーバ１等が把握可能な形式で記載される。設定サーバ１は、ソースコードデータ１１において設定されたパラメータや変数名等に影響を受けることなく、コードパターンデータ１２によって、特定ハードウエアが実行するのに適したロジックを特定できれば良い。
【００３７】
コードパターンデータ１２の中間言語パターンとして、制御するホスト側のプログラムコードと、ＧＰＵ等のデバイス側のカーネルコードが個別に必要な場合、コードパターンデータ１２の中間言語パターンとして、ホスト側のプログラムコードのパターンと、デバイス側のカーネルコードのパターンとがそれぞれ設定されても良い。
【００３８】
ここで、コードパターンデータ１２のソースコードパターンとして、プログラム言語で記載されたロジックが設定されても良いし、ソースコードデータ１１で呼び出される標準ライブラリ名が設定されても良い。
【００３９】
コードパターンデータ１２のソースコードパターンとして、メイン関数から利用されるサブ関数において、ＦＰＧＡやＧＰＵ等の特定ハードウエアに処理させた方が効率の良いサブ関数のコードパターンが、設定される。ＦＰＧＡやＧＰＵに処理させた方が効率の良いサブ関数のソースコードパターンに、ＦＰＧＡやＧＰＵ等をオフロードしてこれらのハードウエアで実行させるための中間言語パターンが対応づけられる。本発明の実施の形態において、サブ関数を、ＦＰＧＡやＧＰＵ等の一つのハードウエアに実行させれば良い場合を、コードパターンデータ１２に設定する。本発明の実施の形態において、ＦＰＧＡとＧＰＵにオフロードする処理同士で同期を取るなど、サブ関数において複数のハードウエアが相関し複雑な制御が必要なロジックについては、コードパターンデータ１２で設定されるロジックの対象外としても良い。
【００４０】
またコードパターンデータ１２において、中間言語パターンに、この中間言語パターンに基づいて生成される中間言語データ１３を実行するハードウエア種別が特定可能に設定されても良い。異種ハードウエア群３に、ＦＰＧＡやＧＰＵなどの複数種類の特定ハードウエアが含まれる場合、コードパターンデータ１２において、各ロジックを実行させる特定ハードウエアの種別を設定しても良い。
【００４１】
中間言語データ１３は、ソースコードデータ１１の少なくとも一部のロジックを、特定のハードウエアに実行させるためのデータである。中間言語データ１３は、変換手段２２によって生成される。
【００４２】
ハードウエアリストデータ１４は、異種ハードウエア群３に属するハードウエアを特定するためのデータである。ハードウエアリストデータ１４は、例えば、ユーザの識別子と、当該ユーザに割り当てられた特定ハードウエアの識別子を対応づけたデータである。ハードウエアリストデータ１４において、ユーザに割り当てられた特定ハードウエアの種別も対応づけられても良い。
【００４３】
ハードウエアリストデータ１４は、異種ハードウエア群３において、所定の種別の特定ハードウエアや汎用ハードウエアがそれぞれ複数台ある場合や、異種ハードウエア群３の各ハードウエアを複数のユーザで共有する場合などに用いられる。ハードウエアリストデータ１４がなくとも、ユーザに割り当てられるハードウエアを容易に特定できる場合は、設定サーバ１は、ハードウエアリストデータ１４を記憶しなくとも良い。
【００４４】
処理装置２０は、取得手段２１、変換手段２２および設定手段２３を備える。
【００４５】
取得手段２１は、ユーザ端末２から、汎用ハードウエアが処理を実行するためのソースコードデータ１１を取得する。取得手段２１は、取得したソースコードデータ１１を、記憶装置１０に記憶する。
【００４６】
変換手段２２は、ソースコードデータ１１のうち、コードパターンデータ１２のソースコードパターンに対応する部分を、ソースコードパターンに対応する中間言語パターンに基づいて変換して、特定ハードウエアのための中間言語データ１３を生成する。変換手段２２は、ソースコードデータ１１を読み出して、コードパターンデータ１２のソースコードパターンに一致する部分または類似する部分を抽出する。このとき変換手段２２は、ＣＣＦｉｎｄｅｒＸ等の既存の類似コード検出ツールを用いて、ソースコードパターンに対応するソースコードデータ１１のロジックを抽出しても良い。これにより、ソースコードデータ１１において、ＦＦＴを行うロジック、暗号化処理を行うロジック、画像分析を行うロジックなど、特定用途のロジックを特定することが可能となる。本発明の実施の形態では、ＦＦＴや暗号化処理は、これらのロジックにあわせたＦＰＧＡに、画像処理はＧＰＵにオフロードするなど、特定用途のロジックを、特定ハードウエアに実行させることにより、高速化が期待できる。
【００４７】
なお、ソースコードデータ１１において、コードパターンデータ１２のソースコードパターンとして設定された標準ライブラリが呼び出される場合、類似コード検出ツールを用いることなく、特定ハードウエアに実行させるロジックを特定することが可能になる。
【００４８】
さらに変換手段２２は、特定用途のロジックを、特定ハードウエアに実行させるための、ＯｐｅｎＣＬ言語等による中間言語データ１３を生成する。ここで、ＯｐｅｎＣＬ言語は、ヘテロジニアスプログラミングの主流言語である。ＦＰＧＡやＧＰＵ等の特定のハードウエアで実行する処理を記述するため、変換手段２２は、コードパターンデータ１２を参照して、ソースコードデータ１１に対して、オフロード部分にＯｐｅｎＣＬ等の指定コードを加えて、抽出する。なお、標準ライブラリの呼び出しを検出する場合、標準ライブラリの処理に対応する中間言語パターンを、コードパターンデータ１２から抽出しても良い。
【００４９】
設定手段２３は、変換手段２２により生成された中間言語データ１３を、特定ハードウエアに設定する（デプロイする）。設定手段２３は、ハードウエアリストデータ１４を参照して、ユーザに割り当てられた特定ハードウエアに、中間言語データ１３を設定しても良い。ここで、異種ハードウエア群３が例えば３台のＧＰＵ３台を含むなど、特定ハードウエアが複数台ある場合、設定手段２３は、負荷分散などの既存のロジックに基づいて特定されたハードウエアに、中間言語データ１３を設定する。設定手段２３は、異種ハードウエア群３のハードウエアを複数のユーザで利用する場合、ユーザが利用できるハードウエアに、中間言語データ１３を設定する。これらの中間言語データの設定の際には、Ａｌｔｅｒａ  ＳＤＫ  ｆｏｒ  ＯｐｅｎＣＬ等の既存のツールが用いられても良い。
【００５０】
ここでソースコードデータ１１のうち特定ハードウエアにオフロードしないロジックについて、汎用ハードウエアに実行させるための中間言語データが、汎用ハードウエアに設定されても良い。
【００５１】
設定手段２３は、設定結果として、ユーザが生成したソースコードデータ１１に対して用いるハードウエアの情報、さらに、ハードウエアの利用料金等の情報を、ユーザ端末２に提示しても良い。ユーザは、設定サーバ１から得られた情報を確認して問題がなければ、その旨を設定サーバ１に送信する。これにより、設定サーバ１は、異種ハードウエア群３の利用および課金を開始する。一方ユーザが了解しない場合、異種ハードウエア群３に設定された中間言語データ１３等を廃棄して、再度、変換手段２２による変換処理を行う。
【００５２】
ここで、ＦＰＧＡで所定のロジックを定義することにより、高速化が期待できるものの、異種ハードウエア群３が、そのロジックが定義されたＦＰＧＡを含まない場合が考えられる。その場合、変換手段２２は、未定義ＦＰＧＡにおいてそのロジックが定義された場合の中間言語データ１３を生成する。設定手段２３は、未定義ＦＰＧＡに対して、そのロジックを定義し、変換手段２２によって生成された中間言語データ１３を設定する。
【００５３】
（設定方法）
図６を参照して本発明の実施の形態に係る設定方法を説明する。
【００５４】
まずステップＳ１においてユーザ端末２は、設定サーバ１に、ユーザ等により生成されたソースコードデータ１１を送信する。
【００５５】
設定サーバ１は、ユーザ端末２からソースコードデータ１１を受信すると、ステップＳ２においてコードパターンデータ１２を参照して、オフロードするロジックの対象と、オフロード先のハードウエアを特定する。さらに設定サーバ１は、オフロード先のハードウエアで用いる中間言語データ１３を生成する。
【００５６】
ステップＳ３において設定サーバ１は、ステップＳ２で生成した中間言語データ１３を、異種ハードウエア群３のオフロード先のハードウエアに送信し、設定する。オフロード先のハードウエア種別に対応するハードウエアが複数台ある場合、設定サーバ１は、既存のロジックに従って特定したハードウエアに、中間言語データ１３を設定する。また異種ハードウエア群３にユーザが利用できないハードウエアを含む場合、設定サーバ１は、異種ハードウエア群３に属するハードウエアうちユーザが利用できるハードウエアに、中間言語データ１３を設定する。
【００５７】
このような本発明の実施の形態に係る設定サーバ１は、ユーザが汎用ハードウエア向けに記載したソースコードデータ１１から特定ハードウエアにオフロード可能なロジックを抽出し、その特定ハードウエアが実行可能な中間言語データ１３を生成する。これにより、ユーザにＧＰＵやＦＰＧＡ等のプログラム知識がなく、ユーザが複数の特定のハードウエアの利用に精通していなくとも、特定ハードウエアに特定の処理を実行させ、処理の高性能化が期待できる。
【００５８】
（変形例）
図７ないし図９を参照して、変形例に係る処理システム５ａを説明する。図７に示す変形例に係る処理システム５ａは、図１に示す処理システム５と比べて、割当サーバ４を備える点が異なる。割当サーバ４は、第１の通信ネットワークＮ１および第２の通信ネットワークＮ２に接続し、設定サーバ１ａ、ユーザ端末２および異種ハードウエア群３と相互に通信可能に接続される。
【００５９】
変形例に係る割当サーバ４は、いわゆるＩａａｓコントローラとして機能する。割当サーバ４は、設定サーバ１ａから、ハードウエアの割当を要求するための割当リクエストを受信する。ここで割当リストには、ＦＰＧＡ、ＧＰＵ、汎用ハードウエアなど、割当を要求するハードウエア種別を含む。割当サーバ４は、割当リストに基づいて、異種ハードウエア群３の各ハードウエアのうち、割り当て対象のハードウエアの識別子を設定サーバ１ａに送信する。
【００６０】
変形例に係る設定サーバ１ａは、図２に示す設定サーバ１と比べて、変換手段２２ａの処理が異なり、割当要求手段２４を備えている点が異なる。
【００６１】
変形例に係る変換手段２２ａは、コードパターンデータ１２を参照して、ソースコードデータ１１に対応する中間言語パターンに基づいて、特定ハードウエアの種別を特定する。変換手段２２ａは、異種ハードウエア群３に特定の種別に対応する特定ハードウエアが複数台ある場合でも、特定ハードウエアの種別を特定するに留まり、どの特定ハードウエアに中間言語データ１３を設定するかまでは特定しない。
【００６２】
変形例において割当要求手段２４は、変換手段２２ａによって特定された特定ハードウエアの種別を含む割当リクエストを割当サーバ４に送信し、割当サーバ４から、特定ハードウエアの種別に対応する特定ハードウエアの識別子を取得する。割当要求手段２４は、割当サーバ４から取得した特定ハードウエアの識別子を含むハードウエアリストデータ１４を生成し、記憶装置１０ａに記憶する。ハードウエアリストデータ１４において、特定ハードウエアの識別子に、この特定ハードウエアの種別が対応づけられても良い。
【００６３】
ここで、設定手段２３は、ハードウエアリストデータ１４に基づいて、割当要求手段２４で取得した特定ハードウエアの識別子に対応する特定ハードウエアに、中間言語データ１３を設定する。
【００６４】
例えば、ソースコードデータ１１に含まれるロジックについて、ＧＰＵで実行させることにより高速化が期待できる場合、変換手段２２ａは、特定ハードウエアの種別として「ＧＰＵ」を特定する。割当要求手段２４は、特定ハードウエアの種別として「ＧＰＵ」を割り当てるように要求する割当リクエストを割当サーバ４に送信する。割当サーバ４は、設定サーバ１ａから、「ＧＰＵ」の割当リクエストを受信すると、異種ハードウエア群３のＧＰＵのハードウエアのうち、割り当てるＧＰＵの識別子を設定サーバ１ａに返す。ここで割当サーバ４は、ＯｐｅｎＳｔａｃｋ  Ｈｅａｔ等を用いて、一括プロビジョニングを行っても良い。設定手段２３は、割当サーバ４から取得したＧＰＵの識別子に基づいて、取得したＧＰＵの識別子によって特定されるＧＰＵに、中間言語データ１３を設定する。
【００６５】
図９を参照して変形例に係る設定方法を説明する。
【００６６】
まずステップＳ２１においてユーザ端末２は、設定サーバ１ａに、ユーザ等により生成されたソースコードデータ１１を送信する。
【００６７】
設定サーバ１ａは、ユーザ端末２からソースコードデータ１１を受信すると、ステップＳ２２においてコードパターンデータ１２を参照して、オフロードするロジックの対象と、オフロード先のハードウエアの種別を特定する。さらに設定サーバ１ａは、オフロード先のハードウエアで用いる中間言語データ１３を生成する。
【００６８】
ステップＳ２３において設定サーバ１ａは、ステップＳ２２で特定したハードウエアの種別を含む割当リクエストを、割当サーバ４に送信する。ステップＳ２４において設定サーバ１ａは、割当サーバ４から割当応答を受信する。割当応答は、割当リクエストに含まれたハードウエアの種別に対応するハードウエアの識別子を含む。
【００６９】
ステップＳ２５において設定サーバ１ａは、ステップＳ２２で生成した中間言語データ１３を、ステップＳ２４で受信したハードウエアの識別子で特定されるハードウエアに送信し、設定する。
【００７０】
このように、変形例に係る処理システム５ａによれば、既存のＩａａｓコントローラと連携して、特定ハードウエアに中間言語データ１３を設定することができる。またユーザ端末２は、割当サーバ４により割り当てられたハードウエアに不満がある場合、ＯｐｅｎＳｔａｃｋ  Ｈｅａｔのｓｔａｃｋ−ｄｅｌｅｔｅ等のＡＰＩ利用をして、割り当てられたリソースを破棄しても良い。
【００７１】
（その他の実施の形態）
上記のように、本発明の実施の形態とその変形例によって記載したが、この開示の一部をなす論述および図面はこの発明を限定するものであると理解すべきではない。この開示から当業者には様々な代替実施の形態、実施例および運用技術が明らかとなる。
【００７２】
例えば、本発明の実施の形態に記載した設定サーバは、図１に示すように一つのハードウエア上に構成されても良いし、その機能や処理数に応じて複数のハードウエア上に構成されても良い。
【００７３】
また、設定サーバに入出力されるデータや、異種ハードウエア群の各ハードウエアに設定されるデータは一例であって、これに限るものではない。例えば、コンパイラ等のツールや異種ハードウエア群のハードウエア等に基づいて、設定サーバに、適切なデータが入出力される。
【００７４】
本発明はここでは記載していない様々な実施の形態等を含むことは勿論である。従って、本発明の技術的範囲は上記の説明から妥当な特許請求の範囲に係る発明特定事項によってのみ定められるものである。
【符号の説明】
【００７５】
１  設定サーバ
２  ユーザ端末
３  異種ハードウエア群
４  割当サーバ
５  処理システム
１０  記憶装置
１１  ソースコードデータ
１２  コードパターンデータ
１３  中間言語データ
１４  ハードウエアリストデータ
２０  処理装置
２１  取得手段
２２  変換手段
２３  設定手段
２４  割当要求手段
Ｎ  通信ネットワーク
【図１】
0006563363.tif 000002
【図２】
0006563363.tif 000003
【図３】
0006563363.tif 000004
【図４】
0006563363.tif 000005
【図５】
0006563363.tif 000006
【図６】
0006563363.tif 000007
【図７】
0006563363.tif 000008
【図８】
0006563363.tif 000009
【図９】
0006563363.tif 000010