JP6563363B2 - 設定サーバ、設定方法および設定プログラム - Google Patents

設定サーバ、設定方法および設定プログラム Download PDF

Info

Publication number
JP6563363B2
JP6563363B2 JP2016096798A JP2016096798A JP6563363B2 JP 6563363 B2 JP6563363 B2 JP 6563363B2 JP 2016096798 A JP2016096798 A JP 2016096798A JP 2016096798 A JP2016096798 A JP 2016096798A JP 6563363 B2 JP6563363 B2 JP 6563363B2
Authority
JP
Japan
Prior art keywords
hardware
data
setting
specific
intermediate language
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
JP2016096798A
Other languages
English (en)
Other versions
JP2017204213A (ja
Inventor
山登 庸次
庸次 山登
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Nippon Telegraph and Telephone Corp
Original Assignee
Nippon Telegraph and Telephone Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Nippon Telegraph and Telephone Corp filed Critical Nippon Telegraph and Telephone Corp
Priority to JP2016096798A priority Critical patent/JP6563363B2/ja
Publication of JP2017204213A publication Critical patent/JP2017204213A/ja
Application granted granted Critical
Publication of JP6563363B2 publication Critical patent/JP6563363B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Devices For Executing Special Programs (AREA)
  • Stored Programmes (AREA)

Description

本発明は、種類の異なる複数のハードウエア群のいずれかのハードウエアに、処理を実行させるためのデータを設定する設定サーバ、設定方法および設定プログラムに関する。
近年、クラウドサービスの一形態として、IaaS(Infrastructure as a Service)サービスが発展している。IaaSサービスは、インターネットを経由して用いるコンピュータシステムを、ユーザに、構築および稼動させるための基盤を提供する。ユーザは、事業者と契約することで、コンピュータリソースをオンデマンドに利用可能になる。初期のクラウドでは、パーソナルコンピュータと同等なサーバを並置し、Xen、KVM(Kernel based Virtual Machine)等のハイパーバイザ―で仮想化し、MapReduce等の分散処理技術を用いて、高い計算能力が得られていた。
しかしながら、近年のクラウドは、進歩したハードウエアのパワーを生かす形にシフトしている。例えば、メニーコアCPUの性能を生かすため、仮想化を行わないベアメタルサーバを提供する事業者が出てきている。更に、GPU(Graphics Processing Unit)を強化したサーバで画像処理を行ったり、FPGA(Field Programmable Gate Array)で特定計算処理をアクセラレートしたりするなど、特定サーバで専用処理を行う事業者が出始めている。
このように、特定の処理に特化したハードウエアのパワーを生かすことで、ユーザにとっても処理の高性能化が期待される。しかし、そのためには、ユーザは、動作させるハードウエアに合わせたアプリケーションのプログラミングが必要であり、多岐にわたる技術知識が求められる場合がある。
特定の処理に特化したハードウエアを用いるために、C言語、C++言語、Java(登録商標)等のソースプログラムに、何らかの指示行を付与し、動作を特定する場合がある。このように指示行が指定されたソースプログラムをコンパイルすることにより、特定のハードウエアに処理を実行させることを支援させるツールも普及している(例えば非特許文献1ないし3参照)。
また、特定の処理に特化した複数のハードウエアを使いわけるために、ユーザの要件に応じて、実行ファイル単位で、各ハードウエアに振り分ける技術もある(非特許文献4参照)。
NVIDIA Corporation、"PGI Accelerator Compilers with OpenACC Directives"、[online]、[平成28年4月28日検索]、インターネット〈URL:https://www.pgroup.com/resources/accel.htm Advanced Micro Devices, Inc、"Aparapi"、[online]、[平成28年4月28日検索]、インターネット〈URL:http://developer.amd.com/tools-and-sdks/opencl-zone/aparapi/ Altera Corporation、"Altera SDK for OpenCL"、[online]、[平成28年4月28日検索]、インターネット〈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.
非特許文献1ないし3等に開示されるように、特定のハードウエアに処理を実行させることを支援させるツールが普及しているものの、ユーザは、特定のハードウエアに処理を実行させるための指示行を、ソースプログラムに記載する必要がある。すなわち、ツールによりユーザの負担は軽減されるものの、ユーザは、特定のハードウエアの特性や、各ハードウエアに適切な処理などを把握する必要があり、依然としてユーザに高い知識が求められる場合がある。
また、特定の処理に特化したハードウエアを有効に活用するためには、各ハードウエアに、各ハードウエアに適した処理を割り当てるのが好適である。しかしながら、非特許文献4に記載の方法では、実行ファイル単位で、各ハードウエアに振り分けるに留まり、各ハードウエアを有効に活用できない場合がある。
従って本発明の目的は、ユーザに高い知識がなくとも、種類の異なる複数のハードウエア群のいずれかのハードウエアに、適切に処理を実行させることが可能な設定サーバ、設定方法および設定プログラムを提供することである。
上記課題を解決するために、本発明の第1の特徴は、種類の異なる複数のハードウエアにより構成される異種ハードウエア群に、処理を実行させるためのデータを設定する設定サーバに関する。異種ハードウエア群は、汎用ハードウエアと、特定の処理の実行に適した特定ハードウエアを含む。第1の特徴に係る設定サーバは、特定ハードウエアが特定の処理を実行するための中間言語パターンと、汎用ハードウエアが特定の処理を実行するためのソースコードパターンを対応づけたコードパターンデータを記憶する記憶装置と、ユーザ端末から、汎用ハードウエアが処理を実行するためのソースコードデータを取得する取得手段と、ソースコードデータのうち、コードパターンデータのソースコードパターンに対応する部分を、ソースコードパターンに対応する中間言語パターンに基づいて変換して、特定ハードウエアのための中間言語データを生成する変換手段と、中間言語データを、特定ハードウエアに設定する設定手段とを備える。
ここで、記憶装置は、ユーザの識別子と、ユーザに割り当てられた特定ハードウエアの識別子を対応づけたハードウエアリストデータをさらに記憶し、設定手段は、ハードウエアリストデータを参照して、ユーザに割り当てられた特定ハードウエアに、中間言語データを設定しても良い。
また、コードパターンデータは、中間言語パターンに特定ハードウエアの種別をさらに対応づけ、変換手段はさらに、ソースコードデータに対応する中間言語パターンに基づいて、特定ハードウエアの種別を特定し、特定された特定ハードウエアの種別を含む割当リクエストを割当サーバに送信し、割当サーバから、特定ハードウエアの種別に対応する特定ハードウエアの識別子を取得する割当要求手段をさらに備え、設定手段は、割当要求手段で取得した特定ハードウエアの識別子に対応する特定ハードウエアに、中間言語データを設定しても良い。
本発明の第2の特徴は、種類の異なる複数のハードウエアにより構成される異種ハードウエア群に、処理を実行させるためのデータを設定する設定サーバに用いられる設定方法に関する。異種ハードウエア群は、汎用ハードウエアと、特定の処理の実行に適した特定ハードウエアを含む。第2の特徴に係る設定方法は、設定サーバが、特定ハードウエアが特定の処理を実行するための中間言語パターンと、汎用ハードウエアが特定の処理を実行するためのソースコードパターンを対応づけたコードパターンデータを記憶するステップと、設定サーバが、ユーザ端末から、汎用ハードウエアが処理を実行するためのソースコードデータを取得するステップと、設定サーバが、ソースコードデータのうち、コードパターンデータのソースコードパターンに対応する部分を、ソースコードパターンに対応する中間言語パターンに基づいて変換して、特定ハードウエアのための中間言語データを生成するステップと、設定サーバが、中間言語データを、特定ハードウエアに設定するステップとを備える。
ここで、設定サーバが、ユーザの識別子と、ユーザに割り当てられた特定ハードウエアの識別子を対応づけたハードウエアリストデータを記憶するステップをさらに備え、設定サーバが、中間言語データを、特定ハードウエアに設定するステップは、設定サーバが、ハードウエアリストデータを参照して、ユーザに割り当てられた特定ハードウエアに、中間言語データを設定しても良い。
また、コードパターンデータは、中間言語パターンに特定ハードウエアの種別をさらに対応づけ、中間言語データを生成するステップは、ソースコードデータに対応する中間言語パターンに基づいて、特定ハードウエアの種別を特定し、
特定された特定ハードウエアの種別を含む割当リクエストを割当サーバに送信し、割当サーバから、特定ハードウエアの種別に対応する特定ハードウエアの識別子を取得するステップをさらに備え、中間言語データを、特定ハードウエアに設定するステップは、取得した特定ハードウエアの識別子に対応する特定ハードウエアに、中間言語データを設定しても良い。
本発明の第3の特徴は、コンピュータを、本発明の第1の特徴に記載の設定サーバとして機能させるための設定プログラムに関する。
本発明によれば、ユーザに高い知識がなくとも、種類の異なる複数のハードウエア群のいずれかのハードウエアに、適切に処理を実行させることが可能な設定サーバ、設定方法および設定プログラムを提供することができる。
図1は、本発明の実施の形態に係る処理システムのシステム構成図である。 図2は、本発明の実施の形態に係る設定サーバのハードウエア構成と機能ブロックを説明する図である。 図3は、本発明の実施の形態に係るソースコードデータの一例である。 図4は、本発明の実施の形態に係るコードパターンデータの一例である。 図5は、本発明の実施の形態に係る中間言語データの一例である。 図6は、本発明の実施の形態に係る設定方法を説明するシーケンス図である。 図7は、変形例に係る処理システムのシステム構成図である。 図8は、変形例に係る設定サーバのハードウエア構成と機能ブロックを説明する図である。 図9は、変形例に係る設定方法を説明するシーケンス図である。
次に、図面を参照して、本発明の実施の形態を説明する。以下の図面の記載において、同一または類似の部分には同一または類似の符号を付している。
(処理システム)
本発明の実施の形態に係る処理システム5は、図1に示すように、設定サーバ1、ユーザ端末2および異種ハードウエア群3を備える。設定サーバ1およびユーザ端末2は、第1の通信ネットワークN1を介して、相互に通信可能に接続される。設定サーバ1および異種ハードウエア群3は、第2の通信ネットワークN2を介して相互に通信可能に接続される。ここで、第1の通信ネットワークN1および第2の通信ネットワークN2は、インターネット等の公衆通信回線であっても良いし、LAN等の構内通信回線であっても良い。また本発明の実施の形態において、第1の通信ネットワークN1および第2の通信ネットワークN2は、それぞれ異なる通信ネットワークである場合を想定するが、同じ通信ネットワークであっても良い。さらに、ユーザ端末2と異種ハードウエア群3は、通信ネットワークにより相互に通信可能に接続されても良い。
設定サーバ1は、異種ハードウエア群3に、処理を実行させるためのデータを設定する。
異種ハードウエア群3の各ハードウエアは、いわゆるクラウドコンピューティングに用いられ、通信ネットワークを介して、ユーザ端末2にサービスを提供する。異種ハードウエア群3は、種類の異なる複数のハードウエアにより構成される。異種ハードウエア群3は、汎用ハードウエアと、特定の処理の実行に適した特定ハードウエアを含む。特定ハードウエアは、特定の処理を実行すれば、高速化などの処理の高性能化が期待できるハードウエアである。これに対し汎用ハードウエアは、何らかの処理に特化することなく、一般的な処理を実行するハードウエアである。
異種ハードウエア群3の各ハードウエアは、ユーザ端末2により設定されたソースコードデータ、または設定サーバ1により生成された中間言語データを実行するように構成される。特定ハードウエアは、HDDやSDDの等の記憶装置、ハイパーバイザにより制御される仮想マシンを備えるコンピュータ、コンテナー、CPU(Central Processing Unit)およびGPU(Graphics Processing Unit)を備えるコンピュータ、NoSQL(Not only SQL)アクセラレートが定義されたFPGA(Field−Programmable Gate Array)、FFT(Fast Fourier Transform)アクセラレートが定義されたFPGA、未定義FPGA等である。ここに記載するハードウエアは例示であってこれに限るものではない。
本発明の実施の形態に係る異種ハードウエア群3の各特定ハードウエアは特に、ソースコードにおいて付与された指示行によって指定された処理を実行する。
例えば、OpenACCディレクティブを使った例において、ユーザが記載したC/C++/Fortran言語で書かれたプログラムコードに、OpenACCに従ったディレクティブが指定される。OpenACCに従ったディレクティブとは、ここから並列処理させるなどを明示する指示行である。PGIコンパイラは、このプログラムコードをコンパイルすることで、GPU用実行バイナリおよびCPU用実行バイナリを生成し、CPUおよびCPUにそれぞれ実行させる。Java(登録商標)でGPGPU(General Purpose GPU)コンピューティングを可能とするAparapiライブラリも、同様にGPUでの計算をAPIで指定する。
FPGAを制御するための、OpenCL for FPGAの開発環境も提供されている。例えば、Altera SDK for OpenCLは、OpenCL C Compilerと、OpenCL Runtime Libraryからなる。OpenCL C Compilerは、FPGA内部のロジックを設定するために、OpenCL C言語をFPGAのビットストリームにコンパイルする。OpenCL Runtime Libraryは、OpenCL APIを提供するライブラリ群で、CPU上で動作するアプリからFPGA内部のロジックを制御する。OpenCLで、FPGAロジックと制御を記述し、コンパイルすることで、CPUからロジック設定したFPGAに処理をオフロードすることが可能となる。
ユーザ端末2は、ユーザが扱う一般的なコンピュータである。ユーザ端末2は、異種ハードウエア群3に所定のプログラムを実行させるためのプログラムであるソースコードデータ11を設定サーバ1に送信する。
設定サーバ1は、図2に示すように、ユーザ端末2から入力されたソースコードデータ11を参照して、ソースコードデータ11の各ロジックを、異種ハードウエア群3のいずれのハードウエアに実行させるべきかを決定する。このとき設定サーバ1は、特定の処理の実行に適した特定ハードウエアに、その特定の処理を実行させ、それ以外については、汎用ハードウエアに実行させるように決定する。設定サーバ1は、ソースコードデータ11の各ロジックを、決定されたハードウエアに実行させるための中間言語データ13に変換する。設定サーバ1は、変換された中間言語データ13をそのハードウエアに設定しオフロードする。
本発明の実施の形態に係る処理システム5において、ユーザが汎用コンピュータ向けのソースコードデータ11を生成すると、設定サーバ1が、ロジック毎に、最適なハードウエアにロジックを実行させるための中間言語データ13を生成する。これにより、ソースコードデータ11を生成するユーザに、特定ハードウエアの特性や特定ハードウエアに処理させるためのディレクティブに関して十分な知識がなくとも、異種ハードウエア群3を有効に活用し、処理の高速化を実現することができる。
(設定サーバ)
図2を参照して、本発明の実施の形態に係る設定サーバ1を説明する。設定サーバ1は、異種ハードウエア群3に、処理を実行させるためのデータを設定する。設定サーバ1は、Paas(Platform as a Service)サーバとして機能しても良い。
設定サーバ1は、記憶装置10、処理装置20および通信制御装置30を備える一般的なコンピュータである。一般的なコンピュータが、所定の機能を実現するための設定プログラムを実行することにより、図2に示す各手段を実装する。
記憶装置10は、ソースコードデータ11、コードパターンデータ12、中間言語データ13およびハードウエアリストデータ14を記憶する。
ソースコードデータ11は、ユーザ端末2から取得したソースコードであって、例えば、C/C++/Fortran言語で書かれたプログラムコードである。ソースコードデータ11は、例えば図3に示すデータであって、汎用ハードウエアに実行させるために記載される。
コードパターンデータ12は、特定ハードウエアが特定の処理を実行するための中間言語パターンと、汎用ハードウエアが特定の処理を実行するためのソースコードパターンを対応づけたデータである。コードパターンデータ12には、各種ロジックのうち、特定ハードウエアが実行するのに適したロジック、具体的には、特定ハードウエアが実行することにより処理の高速化などが期待できるロジックについて、中間言語パターンと、ソースコードパターンとを対応づける。
ソースコードパターンおよび中間言語パターンは、それぞれソースコードデータ11のロジックと、このソースコードデータのロジックに対応する中間言語データ13のロジックを、設定サーバ1等が把握可能な形式で記載される。設定サーバ1は、ソースコードデータ11において設定されたパラメータや変数名等に影響を受けることなく、コードパターンデータ12によって、特定ハードウエアが実行するのに適したロジックを特定できれば良い。
コードパターンデータ12の中間言語パターンとして、制御するホスト側のプログラムコードと、GPU等のデバイス側のカーネルコードが個別に必要な場合、コードパターンデータ12の中間言語パターンとして、ホスト側のプログラムコードのパターンと、デバイス側のカーネルコードのパターンとがそれぞれ設定されても良い。
ここで、コードパターンデータ12のソースコードパターンとして、プログラム言語で記載されたロジックが設定されても良いし、ソースコードデータ11で呼び出される標準ライブラリ名が設定されても良い。
コードパターンデータ12のソースコードパターンとして、メイン関数から利用されるサブ関数において、FPGAやGPU等の特定ハードウエアに処理させた方が効率の良いサブ関数のコードパターンが、設定される。FPGAやGPUに処理させた方が効率の良いサブ関数のソースコードパターンに、FPGAやGPU等をオフロードしてこれらのハードウエアで実行させるための中間言語パターンが対応づけられる。本発明の実施の形態において、サブ関数を、FPGAやGPU等の一つのハードウエアに実行させれば良い場合を、コードパターンデータ12に設定する。本発明の実施の形態において、FPGAとGPUにオフロードする処理同士で同期を取るなど、サブ関数において複数のハードウエアが相関し複雑な制御が必要なロジックについては、コードパターンデータ12で設定されるロジックの対象外としても良い。
またコードパターンデータ12において、中間言語パターンに、この中間言語パターンに基づいて生成される中間言語データ13を実行するハードウエア種別が特定可能に設定されても良い。異種ハードウエア群3に、FPGAやGPUなどの複数種類の特定ハードウエアが含まれる場合、コードパターンデータ12において、各ロジックを実行させる特定ハードウエアの種別を設定しても良い。
中間言語データ13は、ソースコードデータ11の少なくとも一部のロジックを、特定のハードウエアに実行させるためのデータである。中間言語データ13は、変換手段22によって生成される。
ハードウエアリストデータ14は、異種ハードウエア群3に属するハードウエアを特定するためのデータである。ハードウエアリストデータ14は、例えば、ユーザの識別子と、当該ユーザに割り当てられた特定ハードウエアの識別子を対応づけたデータである。ハードウエアリストデータ14において、ユーザに割り当てられた特定ハードウエアの種別も対応づけられても良い。
ハードウエアリストデータ14は、異種ハードウエア群3において、所定の種別の特定ハードウエアや汎用ハードウエアがそれぞれ複数台ある場合や、異種ハードウエア群3の各ハードウエアを複数のユーザで共有する場合などに用いられる。ハードウエアリストデータ14がなくとも、ユーザに割り当てられるハードウエアを容易に特定できる場合は、設定サーバ1は、ハードウエアリストデータ14を記憶しなくとも良い。
処理装置20は、取得手段21、変換手段22および設定手段23を備える。
取得手段21は、ユーザ端末2から、汎用ハードウエアが処理を実行するためのソースコードデータ11を取得する。取得手段21は、取得したソースコードデータ11を、記憶装置10に記憶する。
変換手段22は、ソースコードデータ11のうち、コードパターンデータ12のソースコードパターンに対応する部分を、ソースコードパターンに対応する中間言語パターンに基づいて変換して、特定ハードウエアのための中間言語データ13を生成する。変換手段22は、ソースコードデータ11を読み出して、コードパターンデータ12のソースコードパターンに一致する部分または類似する部分を抽出する。このとき変換手段22は、CCFinderX等の既存の類似コード検出ツールを用いて、ソースコードパターンに対応するソースコードデータ11のロジックを抽出しても良い。これにより、ソースコードデータ11において、FFTを行うロジック、暗号化処理を行うロジック、画像分析を行うロジックなど、特定用途のロジックを特定することが可能となる。本発明の実施の形態では、FFTや暗号化処理は、これらのロジックにあわせたFPGAに、画像処理はGPUにオフロードするなど、特定用途のロジックを、特定ハードウエアに実行させることにより、高速化が期待できる。
なお、ソースコードデータ11において、コードパターンデータ12のソースコードパターンとして設定された標準ライブラリが呼び出される場合、類似コード検出ツールを用いることなく、特定ハードウエアに実行させるロジックを特定することが可能になる。
さらに変換手段22は、特定用途のロジックを、特定ハードウエアに実行させるための、OpenCL言語等による中間言語データ13を生成する。ここで、OpenCL言語は、ヘテロジニアスプログラミングの主流言語である。FPGAやGPU等の特定のハードウエアで実行する処理を記述するため、変換手段22は、コードパターンデータ12を参照して、ソースコードデータ11に対して、オフロード部分にOpenCL等の指定コードを加えて、抽出する。なお、標準ライブラリの呼び出しを検出する場合、標準ライブラリの処理に対応する中間言語パターンを、コードパターンデータ12から抽出しても良い。
設定手段23は、変換手段22により生成された中間言語データ13を、特定ハードウエアに設定する(デプロイする)。設定手段23は、ハードウエアリストデータ14を参照して、ユーザに割り当てられた特定ハードウエアに、中間言語データ13を設定しても良い。ここで、異種ハードウエア群3が例えば3台のGPU3台を含むなど、特定ハードウエアが複数台ある場合、設定手段23は、負荷分散などの既存のロジックに基づいて特定されたハードウエアに、中間言語データ13を設定する。設定手段23は、異種ハードウエア群3のハードウエアを複数のユーザで利用する場合、ユーザが利用できるハードウエアに、中間言語データ13を設定する。これらの中間言語データの設定の際には、Altera SDK for OpenCL等の既存のツールが用いられても良い。
ここでソースコードデータ11のうち特定ハードウエアにオフロードしないロジックについて、汎用ハードウエアに実行させるための中間言語データが、汎用ハードウエアに設定されても良い。
設定手段23は、設定結果として、ユーザが生成したソースコードデータ11に対して用いるハードウエアの情報、さらに、ハードウエアの利用料金等の情報を、ユーザ端末2に提示しても良い。ユーザは、設定サーバ1から得られた情報を確認して問題がなければ、その旨を設定サーバ1に送信する。これにより、設定サーバ1は、異種ハードウエア群3の利用および課金を開始する。一方ユーザが了解しない場合、異種ハードウエア群3に設定された中間言語データ13等を廃棄して、再度、変換手段22による変換処理を行う。
ここで、FPGAで所定のロジックを定義することにより、高速化が期待できるものの、異種ハードウエア群3が、そのロジックが定義されたFPGAを含まない場合が考えられる。その場合、変換手段22は、未定義FPGAにおいてそのロジックが定義された場合の中間言語データ13を生成する。設定手段23は、未定義FPGAに対して、そのロジックを定義し、変換手段22によって生成された中間言語データ13を設定する。
(設定方法)
図6を参照して本発明の実施の形態に係る設定方法を説明する。
まずステップS1においてユーザ端末2は、設定サーバ1に、ユーザ等により生成されたソースコードデータ11を送信する。
設定サーバ1は、ユーザ端末2からソースコードデータ11を受信すると、ステップS2においてコードパターンデータ12を参照して、オフロードするロジックの対象と、オフロード先のハードウエアを特定する。さらに設定サーバ1は、オフロード先のハードウエアで用いる中間言語データ13を生成する。
ステップS3において設定サーバ1は、ステップS2で生成した中間言語データ13を、異種ハードウエア群3のオフロード先のハードウエアに送信し、設定する。オフロード先のハードウエア種別に対応するハードウエアが複数台ある場合、設定サーバ1は、既存のロジックに従って特定したハードウエアに、中間言語データ13を設定する。また異種ハードウエア群3にユーザが利用できないハードウエアを含む場合、設定サーバ1は、異種ハードウエア群3に属するハードウエアうちユーザが利用できるハードウエアに、中間言語データ13を設定する。
このような本発明の実施の形態に係る設定サーバ1は、ユーザが汎用ハードウエア向けに記載したソースコードデータ11から特定ハードウエアにオフロード可能なロジックを抽出し、その特定ハードウエアが実行可能な中間言語データ13を生成する。これにより、ユーザにGPUやFPGA等のプログラム知識がなく、ユーザが複数の特定のハードウエアの利用に精通していなくとも、特定ハードウエアに特定の処理を実行させ、処理の高性能化が期待できる。
(変形例)
図7ないし図9を参照して、変形例に係る処理システム5aを説明する。図7に示す変形例に係る処理システム5aは、図1に示す処理システム5と比べて、割当サーバ4を備える点が異なる。割当サーバ4は、第1の通信ネットワークN1および第2の通信ネットワークN2に接続し、設定サーバ1a、ユーザ端末2および異種ハードウエア群3と相互に通信可能に接続される。
変形例に係る割当サーバ4は、いわゆるIaasコントローラとして機能する。割当サーバ4は、設定サーバ1aから、ハードウエアの割当を要求するための割当リクエストを受信する。ここで割当リストには、FPGA、GPU、汎用ハードウエアなど、割当を要求するハードウエア種別を含む。割当サーバ4は、割当リストに基づいて、異種ハードウエア群3の各ハードウエアのうち、割り当て対象のハードウエアの識別子を設定サーバ1aに送信する。
変形例に係る設定サーバ1aは、図2に示す設定サーバ1と比べて、変換手段22aの処理が異なり、割当要求手段24を備えている点が異なる。
変形例に係る変換手段22aは、コードパターンデータ12を参照して、ソースコードデータ11に対応する中間言語パターンに基づいて、特定ハードウエアの種別を特定する。変換手段22aは、異種ハードウエア群3に特定の種別に対応する特定ハードウエアが複数台ある場合でも、特定ハードウエアの種別を特定するに留まり、どの特定ハードウエアに中間言語データ13を設定するかまでは特定しない。
変形例において割当要求手段24は、変換手段22aによって特定された特定ハードウエアの種別を含む割当リクエストを割当サーバ4に送信し、割当サーバ4から、特定ハードウエアの種別に対応する特定ハードウエアの識別子を取得する。割当要求手段24は、割当サーバ4から取得した特定ハードウエアの識別子を含むハードウエアリストデータ14を生成し、記憶装置10aに記憶する。ハードウエアリストデータ14において、特定ハードウエアの識別子に、この特定ハードウエアの種別が対応づけられても良い。
ここで、設定手段23は、ハードウエアリストデータ14に基づいて、割当要求手段24で取得した特定ハードウエアの識別子に対応する特定ハードウエアに、中間言語データ13を設定する。
例えば、ソースコードデータ11に含まれるロジックについて、GPUで実行させることにより高速化が期待できる場合、変換手段22aは、特定ハードウエアの種別として「GPU」を特定する。割当要求手段24は、特定ハードウエアの種別として「GPU」を割り当てるように要求する割当リクエストを割当サーバ4に送信する。割当サーバ4は、設定サーバ1aから、「GPU」の割当リクエストを受信すると、異種ハードウエア群3のGPUのハードウエアのうち、割り当てるGPUの識別子を設定サーバ1aに返す。ここで割当サーバ4は、OpenStack Heat等を用いて、一括プロビジョニングを行っても良い。設定手段23は、割当サーバ4から取得したGPUの識別子に基づいて、取得したGPUの識別子によって特定されるGPUに、中間言語データ13を設定する。
図9を参照して変形例に係る設定方法を説明する。
まずステップS21においてユーザ端末2は、設定サーバ1aに、ユーザ等により生成されたソースコードデータ11を送信する。
設定サーバ1aは、ユーザ端末2からソースコードデータ11を受信すると、ステップS22においてコードパターンデータ12を参照して、オフロードするロジックの対象と、オフロード先のハードウエアの種別を特定する。さらに設定サーバ1aは、オフロード先のハードウエアで用いる中間言語データ13を生成する。
ステップS23において設定サーバ1aは、ステップS22で特定したハードウエアの種別を含む割当リクエストを、割当サーバ4に送信する。ステップS24において設定サーバ1aは、割当サーバ4から割当応答を受信する。割当応答は、割当リクエストに含まれたハードウエアの種別に対応するハードウエアの識別子を含む。
ステップS25において設定サーバ1aは、ステップS22で生成した中間言語データ13を、ステップS24で受信したハードウエアの識別子で特定されるハードウエアに送信し、設定する。
このように、変形例に係る処理システム5aによれば、既存のIaasコントローラと連携して、特定ハードウエアに中間言語データ13を設定することができる。またユーザ端末2は、割当サーバ4により割り当てられたハードウエアに不満がある場合、OpenStack Heatのstack−delete等のAPI利用をして、割り当てられたリソースを破棄しても良い。
(その他の実施の形態)
上記のように、本発明の実施の形態とその変形例によって記載したが、この開示の一部をなす論述および図面はこの発明を限定するものであると理解すべきではない。この開示から当業者には様々な代替実施の形態、実施例および運用技術が明らかとなる。
例えば、本発明の実施の形態に記載した設定サーバは、図1に示すように一つのハードウエア上に構成されても良いし、その機能や処理数に応じて複数のハードウエア上に構成されても良い。
また、設定サーバに入出力されるデータや、異種ハードウエア群の各ハードウエアに設定されるデータは一例であって、これに限るものではない。例えば、コンパイラ等のツールや異種ハードウエア群のハードウエア等に基づいて、設定サーバに、適切なデータが入出力される。
本発明はここでは記載していない様々な実施の形態等を含むことは勿論である。従って、本発明の技術的範囲は上記の説明から妥当な特許請求の範囲に係る発明特定事項によってのみ定められるものである。
1 設定サーバ
2 ユーザ端末
3 異種ハードウエア群
4 割当サーバ
5 処理システム
10 記憶装置
11 ソースコードデータ
12 コードパターンデータ
13 中間言語データ
14 ハードウエアリストデータ
20 処理装置
21 取得手段
22 変換手段
23 設定手段
24 割当要求手段
N 通信ネットワーク

Claims (7)

  1. 種類の異なる複数のハードウエアにより構成される異種ハードウエア群に、処理を実行させるためのデータを設定する設定サーバであって、
    前記異種ハードウエア群は、汎用ハードウエアと、特定の処理の実行に適した特定ハードウエアを含み、
    前記特定ハードウエアが前記特定の処理を実行するための中間言語パターンのロジックと、前記汎用ハードウエアが前記特定の処理を実行するためのソースコードパターンのロジックを対応づけたコードパターンデータを記憶する記憶装置と、
    ユーザ端末から、前記汎用ハードウエアが処理を実行するためのソースコードデータを取得する取得手段と、
    前記ソースコードデータのロジックのうち、前記コードパターンデータのソースコードパターンのロジック類似する部分を、前記ソースコードパターンのロジックに対応する前記中間言語パターンのロジックに基づいて変換して、前記特定ハードウエアのための中間言語データを生成する変換手段と、
    前記中間言語データを、前記特定ハードウエアに設定する設定手段
    とを備えることを特徴とする設定サーバ。
  2. 前記記憶装置は、
    ユーザの識別子と、前記ユーザに割り当てられた前記特定ハードウエアの識別子を対応づけたハードウエアリストデータをさらに記憶し、
    前記設定手段は、前記ハードウエアリストデータを参照して、前記ユーザに割り当てられた前記特定ハードウエアに、前記中間言語データを設定する
    ことを特徴とする請求項1に記載の設定サーバ。
  3. 種類の異なる複数のハードウエアにより構成される異種ハードウエア群に、処理を実行させるためのデータを設定する設定サーバであって、
    前記異種ハードウエア群は、汎用ハードウエアと、特定の処理の実行に適した特定ハードウエアを含み、
    前記特定ハードウエアが前記特定の処理を実行するための中間言語パターンと、前記汎用ハードウエアが前記特定の処理を実行するためのソースコードパターンを対応づけたコードパターンデータを記憶する記憶装置と、
    ユーザ端末から、前記汎用ハードウエアが処理を実行するためのソースコードデータを取得する取得手段と、
    前記ソースコードデータのうち、前記コードパターンデータのソースコードパターンに対応する部分を、前記ソースコードパターンに対応する前記中間言語パターンに基づいて変換して、前記特定ハードウエアのための中間言語データを生成する変換手段と、
    前記中間言語データを、前記特定ハードウエアに設定する設定手段
    とを備え、
    前記コードパターンデータは、前記中間言語パターンに前記特定ハードウエアの種別をさらに対応づけ、
    前記変換手段はさらに、前記ソースコードデータに対応する前記中間言語パターンに基づいて、前記特定ハードウエアの種別を特定し、
    特定された前記特定ハードウエアの種別を含む割当リクエストを割当サーバに送信し、前記割当サーバから、前記特定ハードウエアの種別に対応する前記特定ハードウエアの識別子を取得する割当要求手段をさらに備え、
    前記設定手段は、前記割当要求手段で取得した前記特定ハードウエアの識別子に対応する前記特定ハードウエアに、前記中間言語データを設定する
    ことを特徴とする設定サーバ
  4. 種類の異なる複数のハードウエアにより構成される異種ハードウエア群に、処理を実行させるためのデータを設定する設定サーバに用いられる設定方法であって、
    前記異種ハードウエア群は、汎用ハードウエアと、特定の処理の実行に適した特定ハードウエアを含み、
    前記設定方法は、
    前記設定サーバが、前記特定ハードウエアが前記特定の処理を実行するための中間言語パターンのロジックと、前記汎用ハードウエアが前記特定の処理を実行するためのソースコードパターンのロジックを対応づけたコードパターンデータを記憶するステップと、
    前記設定サーバが、ユーザ端末から、前記汎用ハードウエアが処理を実行するためのソースコードデータを取得するステップと、
    前記設定サーバが、前記ソースコードデータのロジックのうち、前記コードパターンデータのソースコードパターンのロジック類似する部分を、前記ソースコードパターンのロジックに対応する前記中間言語パターンに基づいて変換して、前記特定ハードウエアのための中間言語データのロジックを生成するステップと、
    前記設定サーバが、前記中間言語データを、前記特定ハードウエアに設定するステップ
    とを備えることを特徴とする設定方法。
  5. 前記設定サーバが、ユーザの識別子と、前記ユーザに割り当てられた前記特定ハードウエアの識別子を対応づけたハードウエアリストデータを記憶するステップをさらに備え、
    前記設定サーバが、前記中間言語データを、前記特定ハードウエアに設定するステップは、
    前記設定サーバが、前記ハードウエアリストデータを参照して、前記ユーザに割り当てられた前記特定ハードウエアに、前記中間言語データを設定する
    ことを特徴とする請求項4に記載の設定方法。
  6. 種類の異なる複数のハードウエアにより構成される異種ハードウエア群に、処理を実行させるためのデータを設定する設定サーバに用いられる設定方法であって、
    前記異種ハードウエア群は、汎用ハードウエアと、特定の処理の実行に適した特定ハードウエアを含み、
    前記設定方法は、
    前記設定サーバが、前記特定ハードウエアが前記特定の処理を実行するための中間言語パターンと、前記汎用ハードウエアが前記特定の処理を実行するためのソースコードパターンを対応づけたコードパターンデータを記憶するステップと、
    前記設定サーバが、ユーザ端末から、前記汎用ハードウエアが処理を実行するためのソースコードデータを取得するステップと、
    前記設定サーバが、前記ソースコードデータのうち、前記コードパターンデータのソースコードパターンに対応する部分を、前記ソースコードパターンに対応する前記中間言語パターンに基づいて変換して、前記特定ハードウエアのための中間言語データを生成するステップと、
    前記設定サーバが、前記中間言語データを、前記特定ハードウエアに設定するステップ
    とを備え、
    前記コードパターンデータは、前記中間言語パターンに前記特定ハードウエアの種別をさらに対応づけ、
    前記中間言語データを生成するステップは、
    前記ソースコードデータに対応する前記中間言語パターンに基づいて、前記特定ハードウエアの種別を特定し、
    特定された前記特定ハードウエアの種別を含む割当リクエストを割当サーバに送信し、前記割当サーバから、前記特定ハードウエアの種別に対応する前記特定ハードウエアの識別子を取得するステップをさらに備え、
    前記中間言語データを、特定ハードウエアに設定するステップは、
    取得した前記特定ハードウエアの識別子に対応する前記特定ハードウエアに、前記中間言語データを設定する
    ことを特徴とする設定方法
  7. コンピュータを、請求項1ないし請求項3のいずれか1項に記載の設定サーバとして機能させるための設定プログラム。
JP2016096798A 2016-05-13 2016-05-13 設定サーバ、設定方法および設定プログラム Active JP6563363B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2016096798A JP6563363B2 (ja) 2016-05-13 2016-05-13 設定サーバ、設定方法および設定プログラム

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2016096798A JP6563363B2 (ja) 2016-05-13 2016-05-13 設定サーバ、設定方法および設定プログラム

Publications (2)

Publication Number Publication Date
JP2017204213A JP2017204213A (ja) 2017-11-16
JP6563363B2 true JP6563363B2 (ja) 2019-08-21

Family

ID=60322347

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2016096798A Active JP6563363B2 (ja) 2016-05-13 2016-05-13 設定サーバ、設定方法および設定プログラム

Country Status (1)

Country Link
JP (1) JP6563363B2 (ja)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP7063289B2 (ja) * 2019-02-22 2022-05-09 日本電信電話株式会社 オフロードサーバのソフトウェア最適配置方法およびプログラム
WO2023233630A1 (ja) * 2022-06-02 2023-12-07 日本電気株式会社 演算装置、演算方法、および、記録媒体

Family Cites Families (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0210434A (ja) * 1988-06-28 1990-01-16 Mitsubishi Electric Corp プログラム言語トランスレータ
JPH02176831A (ja) * 1988-12-27 1990-07-10 Matsushita Electric Ind Co Ltd 言語変換処理装置
JP2000029678A (ja) * 1998-05-18 2000-01-28 Ntt Communication Ware Kk プログラム言語変換方法、変換装置および記録媒体
JP2011060035A (ja) * 2009-09-10 2011-03-24 Hitachi Solutions Ltd アプリケーションデプロイシステム、アプリケーションデプロイ方法及びプログラム
US20110161495A1 (en) * 2009-12-26 2011-06-30 Ralf Ratering Accelerating opencl applications by utilizing a virtual opencl device as interface to compute clouds
WO2012079825A1 (en) * 2010-12-15 2012-06-21 International Business Machines Corporation Hardware accelerated graphics for network enabled applications
US9841958B2 (en) * 2010-12-23 2017-12-12 Microsoft Technology Licensing, Llc. Extensible data parallel semantics
JP2014170525A (ja) * 2013-02-06 2014-09-18 Ricoh Co Ltd 情報処理システム
JP6102511B2 (ja) * 2013-05-23 2017-03-29 富士通株式会社 集積回路、制御装置、制御方法、および制御プログラム
US9432398B2 (en) * 2014-06-11 2016-08-30 Sap Se Securing cloud computing environments

Also Published As

Publication number Publication date
JP2017204213A (ja) 2017-11-16

Similar Documents

Publication Publication Date Title
US11163610B2 (en) Method, device, and computer program product for assigning tasks to dedicated processing resources
JP6099760B2 (ja) プロセスをマイグレートするためのコンピュータ実装方法、コンピュータベースのシステム、およびコンピュータプログラム
US20180046446A1 (en) Efficient workload deployment using containers and unikernels
Yamato Server selection, configuration and reconfiguration technology for IaaS cloud with multiple server types
Kumar et al. Economically efficient virtualization over cloud using docker containers
Yamato Proposal of optimum application deployment technology for heterogeneous IaaS cloud
KR102499219B1 (ko) 동적 네트워크 인터페이스를 사용하는 상호운용가능 클라우드 기반 미디어 처리
CN109697121B (zh) 用于向应用分配处理资源的方法、设备和计算机可读介质
US20190324816A1 (en) Method, apparatus, and computer program product for processing computing task
US20210271513A1 (en) Generic peer-to-peer platform as a service framework
Lin et al. Echo: An edge-centric code offloading system with quality of service guarantee
JP6778130B2 (ja) 仮想計算機システムおよびそのリソース割当て方法
US20230048399A1 (en) Offload server, offload control method, and offload program
JP2023046248A (ja) プログラマブルネットワークデバイスを用いたメトリックおよびセキュリティベースのアクセラレータサービスリスケジューリング並びに自動スケーリング
JP6563363B2 (ja) 設定サーバ、設定方法および設定プログラム
US8407322B1 (en) Runtime negotiation of execution blocks between computers
KR101335711B1 (ko) 서버, 연산 처리 방법 및 연산 처리 시스템
Kjorveziroski et al. Webassembly orchestration in the context of serverless computing
Sulaiman et al. Mamoc: Multisite adaptive offloading framework for mobile cloud applications
JP2012242975A (ja) 分散並列処理キャッシュ装置及び方法及び資源管理ノード及びプログラム
Sáez et al. Dynamic tailoring and cloud-based deployment of containerized service middleware
CN105677442A (zh) 一种基于容器虚拟化的部署方法
CN109271179B (zh) 虚拟机应用程序管理方法、装置、设备及可读存储介质
Liu et al. Improving resource utilization of a cloud-based testing platform for android applications
Vivek et al. Payload fragmentation framework for high-performance computing in cloud environment

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20180615

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20190213

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20190312

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20190423

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20190723

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20190724

R150 Certificate of patent or registration of utility model

Ref document number: 6563363

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150