JP2013186770A - データ処理装置 - Google Patents
データ処理装置 Download PDFInfo
- Publication number
- JP2013186770A JP2013186770A JP2012052486A JP2012052486A JP2013186770A JP 2013186770 A JP2013186770 A JP 2013186770A JP 2012052486 A JP2012052486 A JP 2012052486A JP 2012052486 A JP2012052486 A JP 2012052486A JP 2013186770 A JP2013186770 A JP 2013186770A
- Authority
- JP
- Japan
- Prior art keywords
- processing
- processing module
- data
- module
- data processing
- 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.)
- Pending
Links
Images
Landscapes
- Stored Programmes (AREA)
Abstract
【課題】プログラム実行時に最適な処理モジュールを実行することで、プログラム処理時間を短縮する。
【解決手段】ホストプロセッサと、一以上のアクセラレータプロセッサとを備える計算機のデータ処理を行うデータ処理装置であって、処理方式と、データ型と、データ量と、実行する処理モジュールとを対応付けた処理モジュール選択ポリシを記憶する記憶手段と、計算機が、利用者からのデータ処理依頼を受信した際に、処理モジュール選択ポリシに記憶されているポリシに従って処理モジュールを実行する実行手段と、を備える。
【選択図】 図1
【解決手段】ホストプロセッサと、一以上のアクセラレータプロセッサとを備える計算機のデータ処理を行うデータ処理装置であって、処理方式と、データ型と、データ量と、実行する処理モジュールとを対応付けた処理モジュール選択ポリシを記憶する記憶手段と、計算機が、利用者からのデータ処理依頼を受信した際に、処理モジュール選択ポリシに記憶されているポリシに従って処理モジュールを実行する実行手段と、を備える。
【選択図】 図1
Description
本発明は、データ処理装置に関する。
近年、GPU(Graphics Processing Unit)をグラフィックス処理のみならず汎用計算に利用するGPGPU(General Purpose GPU)と呼ばれる技術が注目されている。
GPUとは、一般的に画像処理を専門とする演算装置であり、多くの場合CPU(Central Processing Unit)と呼ばれる主演算装置の制御下で用いられる動画信号生成専用の集積回路である。動画像の実時間内での生成は高負荷な演算能力が要求されるが、その多くが定式化された単純な演算の繰り返しであるためハードウェア化に向いており、GPUを製造しているメーカーから、高速なメモリインタフェース機能と高い画像演算能力を備えた製品が販売されている。
GPGPUは、GPUを汎用計算に利用しているため、汎用性の高いCPUと比較して、大量のデータを用いて、比較的単純な処理を並列処理することに向いているが、反面、その特性と合わないプログラムには性能を期待できない。
特許文献1に記載の技術には、データの処理方式に応じてCPUで処理するか、GPUで処理するかを選択することが記載されている。
また、特許文献2では、入力ソフトウェアのソースコードを解析して求めたループ中の算術演算回数をループ中にアクセスするデータのサイズで除した計算密度と、データを参照する領域を合計したデータ参照領域サイズと、あらかじめ用意されたホストプロセッサとアクセラレータプロセッサとの実行時間の優劣が定められている勝敗表とに基づいて、各ループを実行させるプロセッサを決定するシステムが提案されている。
しかしながら、特許文献1に記載の技術では処理方式によって処理するプロセッサが決定されるため、データ量が少ない場合にもGPUに処理が割り当てられる可能性がある。このように、プロセッサの特性を活かした処理の割り当てが行われないため、処理時間が増大してしまうという問題がある。
また、特許文献2の発明は、実際のデータ転送レートの変更、ホストプロセッサのキャッシュの振る舞いを考慮し、アクセラレータにオフロードするか否かを判断することが記載されている。しかし、ソフトウェアのソースコードを解析するだけでは、ソフトウェア実行時に動的にデータサイズが変化する場合に対応できないという問題がある。
上述した課題を解決し、目的を達成するために、本発明にかかるデータ処理装置は、データ処理のデータ量に対応する処理モジュールを記憶する処理モジュール選択ポリシ記憶部と、データ処理の依頼を受信した場合に、処理モジュール選択ポリシに記憶されているポリシに従って当該データ処理のデータ量に応じた処理モジュールを実行する処理モジュール実行部とを備える。
本発明によれば、プログラム実行時に、処理するデータ量に応じて最適な処理モジュールを実行することで、プログラム処理時間を短縮することができるという効果を奏する。
GPUは多くのコアを持っているため、大量データの並列処理を高速に行うことができる。しかし、一つのコアの処理能力はCPUに劣るため、データ量が少ないうちはCPUで処理させる方が、プログラムの処理に要する時間は少なくなる。そこで、処理するデータ量が少ないうちはCPUに処理を行わせ、処理するデータ量が多くなるとGPUに処理をさせることで、処理の効率化を行うことが可能となる。また、処理の内容によって、最適なデータ量は異なってくる。そこで、本発明では、処理方式と、処理データ量に基づき、CPUで処理をおこなうのか、GPUで処理をおこなうのかの割り当てを自動でおこなうデータ処理装置を説明する。
本実施形態では、プログラム実行時に最適な処理モジュールを実行することで、プログラム処理時間を短縮する。実施例1では、この点に着目し、処理モジュール選択ポリシに基づく処理モジュール選択について説明する。
実施例2では、処理状況を考慮した処理モジュール実行について説明する。
実施例3では、複数のデータ処理装置が存在する場合の処理モジュール実行について説明する。
図1に、本実施例における、処理データ量と処理方式に応じて適切な処理モジュールを実行するデータ処理装置101の構成例を示す。データ処理装置101は、CPU102と、GPU103と、CPU102及びGPU103が処理を実行するために必要なデータを格納するためのメモリ104と、大量のデータを記憶する容量を持つハードディスクやフラッシュメモリなどの記憶装置105と、キーボード、ディスプレイなどの入出力を行うための入出力装置106と、これらの各装置を接続する通信路(バス)107とを備えたコンピュータである。なお、通信路107は、例えば、バスやケーブルなどの情報伝達媒体である。
CPU102は、メモリ104に格納された処理モジュール実行プログラム108を実行することによりポリシに基づいた処理モジュールの実行を行う。なお、処理モジュールにはCPUを利用して処理を行う処理モジュール(処理モジュールC1108〜処理モジュールCn111)やGPUを利用して処理を行う処理モジュール(処理モジュールG1112〜処理モジュールGn114)が存在する。
これらの処理モジュールは、例えば、与えられた配列の総和を算出する「足し算」モジュールや、与えられた文字列の中から特定の文字列に一致するものがあるか否かを検出する「パターンマッチング」モジュール、与えられたデータを暗号化する「暗号化」モジュール、与えられた配列を昇順に並び変える「ソート」モジュールなどが挙げられる。なお、「パターンマッチング」モジュールでは、検出する文字列を、あらかじめ管理者が行っているものとする。
これら処理モジュールは必要に応じて、追加したり、削除したりしても良い。
記憶装置105には、最適な処理モジュールを選択するための処理モジュール選択ポリシ115が格納されている。
上記の各プログラムやデータは、あらかじめメモリ104または記憶装置105に格納されていてもよいし、必要な時に、入出力装置106からインストール(ロード)されてもよい。
なお、説明を簡単にするためデータ処理装置101が1つのCPU102及び1つのGPU103から構成される例を示したが、複数のCPUや、複数のCPUを含んで、データ処理装置101を構成しても良い。
図2は、処理モジュール選択ポリシ115の一例を示す図である。図2に示すように、処理モジュール選択ポリシ115は、ポリシID201と、処理方式202と、データ型203と、データ量204と、処理モジュール205とを含む。
ポリシID201は処理モジュール選択ポリシを一意に識別できる情報(識別子)を表す。
処理方式202は、どのような処理を行うのかの情報を表す。例えば配列の総和を算出する「足し算」処理や、文字列の中から特定の文字列に一致するものがあるか否かを検出する「パターンマッチング」処理、データを暗号化する「暗号化」処理、配列を昇順に並び変える「ソート」処理などが挙げられる。ここで挙げられた処理はCPUを利用して処理を行う処理モジュール(処理モジュールC1108〜処理モジュールCn111)やGPUを利用して処理を行う処理モジュール(処理モジュールG1112〜処理モジュールGn114)として実装しておく。
データ型203は、処理方式202が処理を行うデータの形式を表す。例えば、「整数」や、「文字列」などが挙げられる。
データ量204は、処理モジュールを選択する際の基準となる情報を表し、処理モジュール205は、実行する処理モジュールの情報を表す。
なお、処理モジュール205には、メモリ104に格納されている処理モジュール(処理モジュールC1108〜処理モジュールCn111、処理モジュールG1112〜処理モジュールGn114)と対応がとれる識別子が格納される。
なお、データ量204には、「−」(dont careを表す記号)を格納してもよい。「−」が格納されている場合には、データ量に関係なく、処理モジュール205に格納されている処理モジュールを実行することを表す。
図2を用いて具体的に説明する。例えば、ポリシID201が「1」の処理モジュール選択ポリシは、処理方式202が「足し算」、データ型203が「整数」、データ量204が「10000個以上」、処理モジュール205が「処理モジュールG1」であるため、10000個以上の整数の足し算を依頼された場合には、処理モジュールG1を選択することを表す。
処理モジュール選択ポリシ115に格納される各情報は、管理者が必要に応じて、入力または更新しても良い。
例えば、データ処理装置101に新たな処理方式を追加する場合には、管理者が新たに追加する処理方式のポリシID201、処理方式202、データ型203、データ量204、処理モジュール205を、処理モジュール選択ポリシ115に登録する。また、同時に、新たな処理方式を実装した処理モジュールをメモリ104に格納する。
なお、処理モジュール選択ポリシ115は、例えば、あらかじめデータ量と処理速度の関係を算出し作成してもよい。データ量と処理速度の関係から処理モジュール選択ポリシ115を作成する方法については、図3を用いて後述する。
処理モジュール選択ポリシ115は、CPU102により実行される処理モジュール実行プログラム108が、実行する処理モジュールを選択する際に利用される。処理モジュール実行プログラム108の具体的な処理については、図4を用いて後述する。
図3は、データ量と処理速度の関係の一例を示す図である。図3は、与えられた配列(整数型)の総和を算出する「足し算」処理について、データ量と処理速度の関係を表している。横軸はデータ量を、縦軸は処理時間を、実線はGPUの処理速度を、破線はCPUの処理速度を示す。ここで、データ量とは与えられた配列の個数を意味する。
このグラフは、データ量を増やしながら、CPU利用の「足し算」処理を行うモジュール(処理モジュールC1109)と、GPU利用の「足し算」処理を行うモジュール(処理モジュールG1112)を実行し、それらの処理に要した時間を計測し、プロットしたものである。なお、処理時間の計測を行っていないデータ量に関する処理時間は補間し、グラフを描画してある。
図3に示すように、データ量が少ない場合はCPUの方が処理時間が短いが、データ量が増えるに従いGPUの方が処理時間が短くなる。ここで例示した「足し算」処理については10000個のデータ付近でCPUの処理時間とGPUの処理時間が逆転しているため、データ量が10000個よりも少ない場合はCPUで処理を、データ量が10000個以上であればGPUを利用するように処理モジュール選択ポリシ115を設定する。
具体的には、ポリシID201が「1」、処理方式202が「足し算」、データ型203が「整数」、データ量204が「10000個以上」、処理モジュール205が「処理モジュールG1」の処理モジュール選択ポリシと、ポリシID201が「2」、処理方式202が「足し算」、データ型203が「整数」、データ量204が「10000個未満」、処理モジュール205が「処理モジュールC1」の処理モジュール選択ポリシの2つのポリシを設定する。
なお、ハードウェア構成が異なると処理時間にも影響がでるため、上述した処理モジュールの処理時間計測はデータ処理装置上で行うことが望ましい。しかし、データ処理装置上で事前の計測が難しい場合は、別の端末上で処理時間を計測し、処理モジュール選択ポリシを設定しても良い。また、上述したデータ量と処理時間の関係から処理モジュール選択ポリシを設定しなくても良い。
続いて、データ処理装置101の処理モジュール実行プログラム108が入出力装置106からデータ処理依頼を受信し、最適な処理モジュールを実行する処理(以下、実行処理と呼ぶ。)について説明する。図4は、実行処理のフローチャートである。
図4に示すように、実行処理を行う処理モジュール実行プログラム108は、CPU102により実行され、入出力装置106を介して利用者が送信したデータ処理依頼を受信する(ステップ401)。ここで、データ処理依頼には、処理方式、データ型、データ量、処理データの情報を含む。
なお、データ処理依頼とは、例えば、関数の呼び出しなどが挙げられる。なお、データ処理依頼は、必要に応じて、API(Application Programming Interface)や、サブプログラム、ライブラリの呼び出しと呼んでも良い。
例えば、C言語でソートを行うqsort関数は、void qsort( void *base、 size_t n、 size_t size、int(*comp)(const void *c1、 const void *c2))で表される。ここで、void *baseはソートする配列を、size_t nは配列要素の個数を、size_t sizeは配列要素のサイズを、int(*comp)(const void *c1、 const void *c2)は比較関数を表す。この関数の処理を依頼された場合、処理方式は「qsort」、データ型は「size」で示された型、データ量は「n」で示された値、処理データは「*base」で示されたアドレスに格納されているデータとなる。
また、データ処理依頼として、処理方式と、処理データの情報のみを渡しても良い。その場合、処理データの情報からデータ型や、データ量の情報を復元する。例えば、処理方式「ソート」、処理データ「1、2、3、4、5」という処理依頼を受信した場合には、データ型「整数」、データ量「5」の情報を復元する。
処理モジュール実行プログラム108は、受信したデータ処理依頼から、処理方式、データ型、データ量の情報を取得する(ステップ402)。
処理モジュール実行プログラム108は、処理モジュール選択ポリシ115から処理モジュール選択ポリシを取得する(ステップ403)。
処理モジュール実行プログラム108は、ステップ402で取得した処理方式、データ型の情報と、ステップ403で取得した処理モジュール選択ポリシの処理方式202、データ型203とを比較し、該当する処理モジュール選択ポリシが存在すれば、ステップ405に進み、存在しなければ実行処理を終了する(ステップ404)。
処理モジュール実行プログラム108は、ステップ404で該当した処理モジュール選択ポリシのデータ量204の情報と、ステップ402で取得したデータ量の情報とを比較し、該当する処理モジュール選択ポリシが存在すれば、ステップ406に進み、存在しなければ実行処理を終了する(ステップ405)。
処理モジュール実行プログラム108は、ステップ405で該当した処理モジュール選択ポリシの処理モジュール205に格納された処理モジュールを取得し、取得した処理モジュールへ、ステップ401で受信した処理データを送信して処理モジュールを実行し(ステップ406)、実行処理を終了する。すなわち、データ処理のデータ量に対応する処理モジュールを記憶し、データ処理の依頼を受信した場合に、処理モジュールプログラムは、処理モジュール選択ポリシに記憶されているポリシに従って当該データ処理のデータ量に応じた処理モジュールを実行する。
なお、取得した処理モジュールがCPU利用の処理モジュールである場合はCPU102が、取得した処理モジュールがGPU利用の処理モジュールである場合はGPU103が、それぞれ処理モジュールの実行を行う。すなわち、処理モジュールには、CPUの処理モジュールとGPUの処理モジュールとを含み、処理モジュール選択ポリシとは、一定の処理方式においてデータ量が一定値より多い場合にGPUの処理モジュールを選択し、データ量が一定値より少ない場合にCPUの処理モジュールを選択する。
ステップ401からステップ406までの実行処理の流れを、具体例を用いて説明する。例えば、処理モジュール実行プログラム108が、入出力装置106から処理方式「足し算」、データ型「整数」、データ量「10」、処理データ「1、2、3、4、5、6、7、8、9、10」という処理依頼を受信した場合(ステップ401)、受信した処理依頼から、処理方式「足し算」、データ型「整数」、データ量「10」を取得する(ステップ402)。
処理モジュール実行プログラム108は、記憶装置105に格納された処理モジュール選択ポリシ115の情報を取得し(ステップ403)、ステップ402で取得した処理方式「足し算」、データ型「整数」の情報と、ステップ403で取得した処理モジュール選択ポリシの処理方式202、データ型203とを比較する。この場合、ポリシID201が「1」の処理方式202「足し算」、データ型203「整数」の処理モジュール選択ポリシと、ポリシID201が「2」の処理方式「足し算」、データ型203「整数」の処理モジュール選択ポリシに該当する(ステップ404)。該当する選択ポリシがない場合存在しなければ実行処理を終了する。 処理モジュール実行プログラム108は、ステップ404で該当した、ポリシID201が「1」の処理モジュール選択ポリシと、ポリシID201が「2」の処理モジュール選択ポリシのデータ量204の情報と、ステップ402で取得したデータ量「10」の情報とを比較する。この場合、ポリシID201が「2」のデータ量204「10000個未満」の処理モジュール選択ポリシに該当する(ステップ405)。
処理モジュール実行プログラム108は、ステップ405で該当した、ポリシID201が「2」の処理モジュール選択ポリシの処理モジュール205に格納された処理モジュールを取得し、取得した処理モジュールへ、ステップ401で受信した処理データを送信して処理モジュールを実行する。この場合、ポリシID201が「2」の処理モジュール選択ポリシに格納されている処理モジュール205「処理モジュールC1」を取得し、取得した「処理モジュールC1」へ、ステップ401で受信した処理データ「1、2、3、4、5、6、7、8、9、10」を送信し、「処理モジュールC1」を実行する。なお、ここで、処理モジュールC1は「足し算」処理を行う処理モジュールであり、処理データ「1、2、3、4、5、6、7、8、9、10」を受信すると、その総和である「55」を出力する。
このように、処理モジュール実行プログラム108は受信した処理依頼から、処理方式、データ型、データ量を取得し、処理モジュール選択ポリシに基づいて、最適な処理モジュールを選択し実行することで、処理時間の高速化を行うことが可能となる。
なお、本実施例の一部を変更して、次のように実施してもよい。受信した処理依頼のデータ量が、処理モジュール選択ポリシに格納されたGPU利用の処理モジュールのデータ量より少ない場合に、受信した処理依頼の処理データをメモリ104に格納し、後続の処理依頼が行われた際に処理データを結合し、GPU利用の処理データを超えた際に、GPU利用の処理モジュールに処理を依頼する。これにより高速なGPU利用の処理モジュールで処理を行うことが可能となる。
また、GPU103の代わりにCPU102と特性の異なるCPUやアクセラレータを利用してもよい。これにより、GPUを具備していない端末においても処理モジュール選択ポリシ115に基づく処理モジュールの実行が可能となる。
さらに、処理モジュール選択ポリシ115を、データ量と消費電力の関係から作成してもよい。GPUはCPUと比べると簡略化された演算コアを多数搭載しているため、電力効率が高くなる。しかし、データ量が少ないうちは、GPUが搭載している多数の演算コアを活かしきれず、消費電力の削減効果が見込めない。そこで、データ量と消費電力の関係を算出し、処理モジュール選択ポリシ115を作成する。これにより、処理実行にかかる消費電力を削減することが可能となる。
本実施例は、実施例1のデータ処理装置を含み、さらに処理モジュールの実行状況を考慮した処理モジュール実行を行うデータ処理装置である。
実施例1では、処理モジュールの実行状況を考慮せず処理モジュールの実行を行っているため、例えば、すでに処理モジュールが実行中であれば、新たな処理モジュールの実行を行う際に、現在実行されている処理モジュールの終了を待たなければ処理を実行できない。そこで、実施例2では、処理モジュールの実行状態を保持したデータ処理装置を説明する。処理モジュール実行状態を保持することにより、処理モジュールの実行状態を考慮した処理モジュール実行が可能となり、効率的にリソースを活用することができる。
図5は、本実施例におけるデータ処理装置101の構成図の例である。実施例1と同一の構成要素には同一の符号を付すことによってその説明を省略し、以下では、実施例1と異なる点を中心に説明する。
図5に示すように、実施例2におけるデータ処理装置装置101は、既に説明した実施例1の脆弱性対策装置101に、GPU1501と、GPU2502と、処理モジュール実行プログラム503と、処理状況データ504とを含んで構成される。なお、実施例1においてもCPU103が存在するが、実施例2では、2つのGPUを含んだ構成を例示しているため、ここでは新たな符号を付した。また、実施例1においても処理モジュール実行プログラム108が存在するが、実施例2での処理モジュール実行プログラム503とは一部処理が異なるため、ここでは新たな符号を付した。
CPU102は、メモリ104に格納された処理モジュール実行プログラム503を実行することにより処理モジュールの実行状態を考慮した処理モジュール実行を行う。記憶装置105には、処理モジュールの実況状況を保持した実行状況データ504が格納されている。
なお、処理モジュール実行プログラム503は、あらかじめメモリ104に格納されていてもよいし、必要な時に入出力装置106からインストール(ロード)されても良い。
図6は、処理状況データ504の一例を示す図である。図6に示すように、処理状況データ504は、処理リソース601と、処理モジュール602と、処理開始時刻603と、処理終了時刻604とを含む。
処理リソース601には、処理モジュールが利用している、あるいは利用したリソースの情報を格納する。例えば、CPU102や、GPU1501、GPU2502が挙げられる。
処理モジュール602には、現在実行中の、あるいは実行が終了した処理モジュールの情報を格納する。例えば、処理モジュールC1108〜処理モジュールCn111、処理モジュールG1112〜処理モジュールGn114が挙げられる。
処理開始時刻603には、処理モジュールの実行開始時刻が、処理終了時刻604には、処理モジュールの実行終了時刻が格納される。なお、処理終了時刻604に値が格納されていない場合には、当該処理リソース601において処理モジュール602が実行されていることを表す。
図6を用いて具体例を説明する。一行目に格納されているの処理状況データ504は、処理リソース601が「GPU1」、処理モジュール602が「処理モジュールG3」、処理開始時刻603が「2011/1/1 10:00:00」、処理終了時刻604が「2011/1/1 10:00:10」である。このとき、2011/1/1 10:00:00から2011/1/1 10:00:10の間、GPU1を利用して処理モジュールG3が処理されていたことを表している。
処理状況データ504は、CPU102により実行される処理モジュール実行プログラム503が、処理モジュールの実行状況を把握する際に利用される。処理モジュール実行プログラム503の具体的な処理については、図7を用いて後述する。
続いて、データ処理装置101の処理モジュール実行プログラム503が入出力装置106を介して処理依頼を受信し、最適な処理モジュールを実行する処理(以下、実行処理と呼ぶ。)について説明する。図7は、実行処理のフローチャートである。
図7に示すように、実行処理を行う処理モジュール実行プログラム503は、CPU102により実行され、入出力装置106を介して利用者が送信したデータ処理依頼を受信する(ステップ701)。ここで、データ処理依頼には、処理方式、データ型、データ量、処理データの情報を含む。
処理モジュール実行プログラム503は、受信したデータ処理依頼から、処理方式、データ型、データ量の情報を取得する(ステップ702)。
処理モジュール実行プログラム503は、処理モジュール選択ポリシ115から処理モジュール選択ポリシを取得する(ステップ703)。
処理モジュール実行プログラム503は、ステップ702で取得した処理方式、データ型の情報と、ステップ703で取得した処理モジュール選択ポリシの処理方式202、データ型203とを比較し、該当する処理モジュール選択ポリシが存在すれば、ステップ705に進み、存在しなければ実行処理を終了する(ステップ704)。
処理モジュール実行プログラム503は、ステップ704で該当した処理モジュール選択ポリシのデータ量204の情報と、ステップ702で取得したデータ量の情報とを比較し、該当する処理モジュール選択ポリシが存在すれば、ステップ706に進み、存在しなければ実行処理を終了する(ステップ705)。
処理モジュール実行プログラム503は、ステップ705で該当した処理モジュール選択ポリシの処理モジュール205に格納された処理モジュールが利用するリソース(例えば、CPUや、GPU1、GPU2が挙げられる。)が空いているか否かを判断し、リソースが空いていれば処理707に進み、リソースが空いていなければ処理710に進む(ステップ706)。なお、リソースが空いているか否かの判断については、処理状況データ504を取得して行う。具体的には、処理状況データ504の処理リソース601と、処理終了時刻604を取得し、処理終了時刻604に値が格納されている場合に、処理リソース601に格納されているリソースが空いていると判断し、終了時刻604に値が格納されていない場合に、処理リソース601に格納されているリソースが空いていない(現在利用中のリソースである)と判断する。すなわち、データ処理が実行された場合、データ処理が終了した時刻を更に記憶し、処理モジュール実行プログラムは、新たなデータ処理の依頼を受信した場合、新たに選択された処理モジュールに対して時刻が記憶されていた場合に、新たなデータ処理を実行する。
図6を用いて具体例を説明する。処理状況データ504の1行目に格納されている、処理リソース601が「GPU1」、処理モジュール602が「処理モジュールG3」、処理開始時刻603が「2011/1/1 10:00:00」、処理終了時刻604が「2011/1/1 10:00:10」の処理状況データは、処理終了時刻604に値が格納されているため、現在空いているリソースだと判断できる。また、処理状況データ504の2行目に格納されている、処理リソース601が「GPU2」、処理モジュール602が「処理モジュールG2」、処理開始時刻603が「2011/1/1 10:00:00」の処理状況データは、処理終了時刻604に値が格納されていないため、現在利用中のリソースだと判断できる。さらに、処理状況データ504の3行目に格納されている、処理リソース601が「CPU」、処理モジュール602が「処理モジュールC1」、処理開始時刻603が「2011/1/1 10:00:10」の処理状況データは、処理終了時刻604に値が格納されていないため、現在利用中のリソースだと判断できる。
処理モジュール実行プログラム503は、ステップ706で該当した(空きリソースであった)処理状況データ504の処理モジュール602にステップ705で該当した処理モジュール選択ポリシの処理モジュール205に格納された処理モジュールの情報を、処理開始時刻603に現在時刻を格納し、処理終了時刻604に格納されている情報を空にする(ステップ707)。
処理モジュール実行プログラム503は、ステップ705で該当した処理モジュール選択ポリシの処理モジュール205に格納された処理モジュールを取得し、取得した処理モジュールへ、ステップ701で受信した処理データを送信して、ステップ706で空きリソースと判断したリソースで当該処理モジュールを実行する(ステップ708)。
処理モジュール実行プログラム503は、ステップ706で該当した(空きリソースであった)処理状況データ504の処理終了時刻604に現在時刻を格納し(ステップ709)、処理を終了する。
処理モジュール実行プログラム503は、ステップ704で該当し、かつ、ステップ705で該当しなかった処理モジュール選択ポリシの処理モジュール205に格納された処理モジュールが利用するリソースが空いているか否かを判断し、リソースが空いていれば処理711に進み、リソースが空いていなければ処理を終了する(ステップ710)。なお、リソースが空いているか否かの判断については、処理状況データ504を取得して行う。具体的には、処理状況データ504の処理リソース601と、処理終了時刻604を取得し、処理終了時刻604に値が格納されている場合に、処理リソース601に格納されているリソースが空いていると判断し、終了時刻604に値が格納されていない場合に、処理リソース601に格納されているリソースが空いていない(現在利用中のリソースである)と判断する。
処理モジュール実行プログラム503は、ステップ710で該当した(空きリソースであった)処理状況データ504の処理モジュール602にステップ704で該当し、かつ、ステップ705で該当しなかった処理モジュール選択ポリシの処理モジュール205に格納された処理モジュールの情報を、処理開始時刻603に現在時刻を格納し、処理終了時刻604に格納されている情報を空にする(ステップ711)。
処理モジュール実行プログラム503は、ステップ704で該当し、かつ、ステップ705で該当しなかった処理モジュール選択ポリシの処理モジュール205に格納された処理モジュールを取得し、取得した処理モジュールへ、ステップ701で受信した処理データを送信して、ステップ710で空きリソースと判断したリソースで当該処理モジュールを実行する(ステップ712)。
処理モジュール実行プログラム503は、ステップ710で該当した(空きリソースであった)処理状況データ504の処理終了時刻604に現在時刻を格納し(ステップ713)、処理を終了する。
ステップ701からステップ713までの実行処理の流れを、具体例を用いて説明する。例えば、処理モジュール実行プログラム503が、入出力装置106から処理方式「足し算」、データ型「整数」、データ量「10」、処理データ「1、2、3、4、5、6、7、8、9、10」という処理依頼を受信した場合(ステップ701)、受信した処理依頼から、処理方式「足し算」、データ型「整数」、データ量「10」を取得する(ステップ702)。
処理モジュール実行プログラム503は、記憶装置105に格納された処理モジュール選択ポリシ115の情報を取得し(ステップ703)、ステップ702で取得した処理方式「足し算」、データ型「整数」の情報と、ステップ703で取得した処理モジュール選択ポリシの処理方式202、データ型203とを比較する。この場合、ポリシID201が「1」の処理方式202「足し算」、データ型203「整数」の処理モジュール選択ポリシと、ポリシID201が「2」の処理方式「足し算」、データ型203「整数」の処理モジュール選択ポリシに該当する(ステップ704)。
処理モジュール実行プログラム503は、ステップ704で該当した、ポリシID201が「1」の処理モジュール選択ポリシと、ポリシID201が「2」の処理モジュール選択ポリシのデータ量204の情報と、ステップ402で取得したデータ量「10」の情報とを比較する。この場合、ポリシID201が「2」のデータ量204「10000個未満」の処理モジュール選択ポリシに該当する(ステップ705)。
処理モジュール実行プログラム503は、ステップ705で該当した、ポリシID201が「2」の処理モジュール選択ポリシの処理モジュール205に格納された処理モジュールを取得し、取得した処理モジュールが利用するリソースが空いているか否かの判断を行う(ステップ706)。この場合、該当する「処理モジュールC1」はCPUを利用する処理モジュールであるので、CPUが空いているか否かの判断を行う。処理モジュール実行プログラム503は処理状況データ504の3行目に格納されている、処理リソース601が「CPU」、処理モジュール602が「処理モジュールC1」、処理開始時刻603が「2011/1/1 10:00:10」、処理終了時刻604が「」の処理状況データを取得し、当該処理終了時刻604に値が格納されていないことから、CPUが空いていないリソースと判断する。
処理モジュール実行プログラム503は、ステップ704で該当し、かつステップ705で該当しなかった、ポリシID201が「1」の処理モジュール選択ポリシの処理モジュール205に格納された処理モジュールを取得し、取得した処理モジュールが利用するリソースが空いているか否かの判断を行う(ステップ710)。この場合、該当する「処理モジュールG1」はGPUを利用する処理モジュールであるので、GPUが空いているか否かの判断を行う。処理モジュール実行プログラム503は処理状況データ504の1行目に格納されている、処理リソース601が「GPU1」、処理モジュール602が「処理モジュールG3」、処理開始時刻603が「2011/1/1 10:00:00」、処理終了時刻604が「2011/1/1 10:00:10」の処理状況データより、当該処理終了時刻604に値が格納されていることからCPU1が空いているリソースと判断する。
処理モジュール実行プログラム503は、ステップ710で該当した処理状況データ504の処理モジュール602「処理モジュールG3」にステップ704で該当し、かつ、ステップ705で該当しなかった処理モジュール選択ポリシの処理モジュール205に格納された処理モジュール「処理モジュールG1」の情報を、処理開始時刻603に現在時刻を格納し、処理終了時刻604に格納されている情報を空にする(ステップ711)。この場合、例えば、現在時刻が、「2011/1/1 11:00:00」であるとすると、更新後の処理状況データ504の1行目に格納されている処理状況データは、処理リソース601が「GPU1」、処理モジュール602が「処理モジュールG1」、処理開始時刻603が「2011/1/1 11:00:00」、処理終了時刻604が「」となる。
処理モジュール実行プログラム503は、ステップ704で該当し、かつ、ステップ705で該当しなかった処理モジュール選択ポリシの処理モジュール205に格納された処理モジュール「処理モジュールG1」を取得し、取得した処理モジュール「処理モジュールG1」へ、ステップ701で受信した処理データ「1、2、3、4、5、6、7、8、9、10」を送信して、ステップ710で空きリソースと判断したリソース「GPU1」で当該処理モジュール「処理モジュールG1」を実行する(ステップ712)。なお、ここで、処理モジュールG1は「足し算」処理を行う処理モジュールであり、処理データ「1、2、3、4、5、6、7、8、9、10」を受信すると、その総和である「55」を出力する。
処理モジュール実行プログラム503は、ステップ710で該当した処理状況データ504の処理終了時刻604に現在時刻を格納し(ステップ713)、処理を終了する。この場合、例えば、現在時刻が、「2011/1/1 11:00:10」であるとすると、更新後の処理状況データ504の1行目に格納されている処理状況データは、処理リソース601が「GPU1」、処理モジュール602が「処理モジュールG1」、処理開始時刻603が「2011/1/1 11:00:00」、処理終了時刻604が「2011/1/1 11:00:10」となる。
このように、処理モジュール実行プログラム503は受信した処理依頼から、処理方式、データ型、データ量を取得し、処理モジュール選択ポリシと処理モジュールの処理状況に基づいて、最適な処理モジュールを選択し実行することで、処理時間の高速化を行うことが可能となる。
なお、本実施例の一部を変更して、次のように実施してもよい。処理モジュールの実行開始時に、処理状況データ504の処理開始時刻603を上書きするのではなく、新たな行として追加する。これにより、過去にどのような処理モジュールがどのリソースを利用して処理を行っていたのかを把握することが可能となる。
本実施例は、複数の処理サーバで処理モジュール実行を行うデータ処理装置である。
実施例3では、処理モジュールの実行を複数の処理サーバで行うデータ処理装置を説明する。処理モジュール実行を複数の処理サーバで行うことにより、データ処理装置101に係る負荷を軽減することが可能となる。
図8に、本実施例におけるデータ処理装置101を含むネットワークの構成例を示す。実施例2と同一の構成要素には同一の符号を付すことによってその説明を省略し、以下では、実施例2と異なる点を中心に説明する。
データ処理装置101は、処理依頼端末801と、処理サーバA802aと、処理サーバB802bと、処理サーバC802cとネットワーク803を介して接続されている。データ処理装置101は処理依頼端末801から送信された処理依頼を受信し、処理サーバ802(処理サーバA802a、処理サーバB802b、処理サーバC802c)に対して処理モジュールの実行命令を送信する。
ネットワーク803は、例えば、インターネットなどのネットワーク、あるいはこれらに接続するための通信網である。
処理依頼端末801は、利用者がデータ処理装置101に対して処理依頼を送信する端末である。
処理サーバ803とは、処理モジュールを1つ以上含んで構成された端末である。処理サーバ803は、データ処理装置101から処理モジュール実行命令を受信すると、自身が保持している処理モジュールを実行する。
処理サーバ803とは、処理モジュールを1つ以上含んで構成された端末である。処理サーバ803は、データ処理装置101から処理モジュール実行命令を受信すると、自身が保持している処理モジュールを実行する。
なお、説明を簡単にするためデータ処理装置101を1台で構成する例を示したが、必要に応じて複数のデータ処理装置101を用いて構成しても良い。また、処理サーバが3台から構成される構成例を示したが、必要に応じて処理サーバの台数を増減しても良い。
図9は、本実施例におけるデータ処理装置101の構成図の例である。図9に示すように、実施例3におけるデータ処理装置装置101は、CPU102と、CPU102が処理を実行するために必要なデータを格納するためのメモリ104と、大量のデータを記憶する容量を持つハードディスクやフラッシュメモリなどの記憶装置105と、他装置と通信を行なうためのIF(インタフェース)901と、キーボード、ディスプレイなどの入出力を行なうための入出力装置106と、これらの各装置を接続する通信路(バス)107とを備えたコンピュータである。
なお、IFは、接続先に応じて通信インタフェース、入出力インタフェース、又は動作に応じて通信装置、受信装置、送信装置、入出力装置などと呼ぶこともある。
CPU102は、メモリ104に格納された処理モジュール実行プログラム902を実行することにより処理サーバ802に処理モジュール実行命令を送信する。
記憶装置105には、処理モジュールを選択する基準となる処理モジュール選択ポリシ115、処理サーバの構成情報を格納した処理サーバ構成データ903、処理サーバへの処理依頼状況を格納した処理状況データ904が格納されている。なお、実施例2においても処理モジュール実行プログラム503が存在するが、実施例3での処理モジュール実行プログラム902とは一部処理が異なるため、ここでは新たな符号を付した。また、実施例2においても処理状況データ504が存在するが、実施例3での処理状況データ904とは一部構成が異なるため、ここでは新たな符号を付した。
上記の各プログラムやデータは、あらかじめメモリ104または記憶装置105に格納されていてもよいし、必要な時に、入出力装置106からまたは、IF901を介して他の装置から、インストール(ロード)されてもよい。
図10は、処理サーバ構成データ903の一例を示す図である。図10に示すように、処理サーバ構成データ903は、処理モジュール1001と、処理サーバ1002とを含む。
処理モジュール1001には、処理サーバ802が保持している処理モジュールの情報を格納する。 処理サーバ1002には、処理モジュール1001を保持している処理サーバの情報を格納する。
図10を用いて具体例を説明する。処理サーバ構成データ903の1行目に格納されている、処理モジュール1001が「処理モジュールG1」、処理サーバ1002が「処理サーバA、処理サーバB」の処理サーバ構成データは、処理サーバ「処理サーバA」および「処理サーバB」が、処理モジュール「処理モジュールG1」を保持していることを表す。
処理サーバ構成データ903に格納される情報は、管理者が必要に応じて、入力または更新しても良い。例えば、新たな処理サーバ802を追加した場合や、処理サーバ802に新たな処理モジュールを追加した場合には、処理サーバ構成データ903に情報を追加する。
処理サーバ構成データ903は、CPU102により実行される処理モジュール実行プログラム902が、実行する処理モジュールが保持されている処理サーバを選択する際に利用される。処理モジュール実行プログラム902の具体的な処理については、図12を用いて後述する。
図11は、処理状況データ904の一例を示す図である。図11に示すように、処理状況データ904は、処理サーバ1101と、処理モジュール1102と、処理開始時刻1103と、処理終了時刻1104とを含む。
処理サーバ1101には、処理モジュールが実行されている、あるいは実行した処理サーバ802の情報を格納する。たとえば、サーバA802aや、サーバB802b、サーバC802cが挙げられる。
処理モジュール1102には、現在実行中の、あるいは実行が終了した処理モジュールの情報を格納する。
処理開始時刻1103には、処理モジュールの実行開始時刻が、処理終了時1104には、処理モジュールの実行終了時刻が格納される。なお、処理終了時刻1104に値が格納されていない場合には、当該処理サーバ1101において処理モジュール1102が実行されていることを表す。
処理状況データ904は、CPU102により実行される処理モジュール実行プログラム902が、処理モジュールの実行状況を把握する際に利用される。処理モジュール実行プログラム902の具体的な処理については、図12を用いて後述する。
続いて、データ処理装置101の処理モジュール実行プログラム902が処理依頼端末801が送信した処理依頼をネットワーク803を介して受信し、ネットワーク803を介して処理モジュール実行命令を送信する処理(以下、実行処理と呼ぶ。)について説明する。図12は、実行処理のフローチャートである。
図12に示すように、実行処理を行う処理モジュール実行プログラム902は、CPU102により実行され、IF901を介して処理依頼装置801がネットワーク803に送信したデータ処理依頼を受信する(ステップ1201)。ここで、データ処理依頼には、処理方式、データ型、データ量、処理データの情報を含む。
処理モジュール実行プログラム902は、受信したデータ処理依頼から、処理方式、データ型、データ量の情報を取得する(ステップ1202)。
処理モジュール実行プログラム902は、処理モジュール選択ポリシ115から処理モジュール選択ポリシを取得する(ステップ1203)。
処理モジュール実行プログラム902は、ステップ1202で取得した処理方式、データ型の情報と、ステップ1203で取得した処理モジュール選択ポリシの処理方式202、データ型203とを比較し、該当する処理モジュール選択ポリシが存在すれば、ステップ1205に進み、存在しなければ実行処理を終了する(ステップ1204)。
処理モジュール実行プログラム902は、ステップ1204で該当した処理モジュール選択ポリシのデータ量204の情報と、ステップ1202で取得したデータ量の情報とを比較し、該当する処理モジュール選択ポリシが存在すれば、ステップ1206に進み、存在しなければ実行処理を終了する(ステップ1205)。
処理モジュール実行プログラム902は、記憶装置105に格納された処理サーバ構成データ903から処理サーバ構成データを取得する(ステップ1206)。
処理モジュール実行プログラム902は、ステップ1205で該当した処理モジュール選択ポリシの処理モジュール205に格納された処理モジュールが利用する処理サーバ802(例えば、処理サーバA802aや、処理サーバB802b、処理サーバC802cが挙げられる。)が空いているか否かを判断し、処理サーバ802が空いていれば処理1208に進み、処理サーバ802が空いていなければ処理1211に進む(ステップ1207)。なお、処理サーバ802が空いているか否かの判断については、ステップ1206で取得した処理サーバ構成データ903と、記憶装置105に格納されている処理状況データ904とを利用して判断する。具体的には、処理サーバ構成データ903から、ステップ1205で該当した処理モジュール選択ポリシの処理モジュール205に格納された処理モジュールに該当する処理サーバ1002を取得(処理モジュールを搭載している処理サーバ802の情報を取得)し、処理状況データ904から、先ほど取得した処理サーバ1002に該当する処理サーバ1101の処理終了時刻1104に格納されている値を取得する。この時、処理終了時刻1104に値が格納されている場合に、処理サーバ1101に格納されている処理サーバ802が空いていると判断し、終了時刻1104に値が格納されていない場合に、処理サーバ1101に格納されている処理サーバ802が空いていない(現在利用中の処理サーバである)と判断する。
図11を用いて具体例を説明する。処理状況データ904の1行目に格納されている、処理サーバ1101が「処理サーバA」、処理モジュール1102が「処理モジュールG1」、処理開始時刻1103が「2011/1/1 10:00:00」、処理終了時刻1104が「2011/1/1 10:00:10」の処理状況データは、処理終了時刻1104に値が格納されているため、現在空いている処理サーバだと判断できる。また、処理状況データ904の2行目に格納されている、処理サーバ1101が「処理サーバB」、処理モジュール1102が「処理モジュールG2」、処理開始時刻1103が「2011/1/1 10:00:00」の処理状況データは、処理終了時刻1104に値が格納されていないため、現在利用中の処理サーバだと判断できる。さらに、処理状況データ1104の3行目に格納されている、処理サーバ1101が「処理サーバB」、処理モジュール1102が「処理モジュールC1」、処理開始時刻1103が「2011/1/1 10:00:10」、処理終了時刻1104が「2011/1/1 10:00:20」の処理状況データは、処理終了時刻1104に値が格納されているため、現在空いている処理サーバだと判断できる。
処理モジュール実行プログラム902は、処理状況データ904の処理サーバ1101に、ステップ1207で該当した処理サーバ(空いている処理サーバ)の情報を、処理モジュール1102に、ステップ1205で該当した処理モジュール選択ポリシの処理モジュール205に格納された処理モジュールの情報を、処理開始時刻603に、現在時刻を新たに格納する(ステップ1208)。
処理モジュール実行プログラム902は、ステップ1207で該当した処理サーバに対して、ステップ1201で受信した、処理方式、データ型、データ量、処理データの情報を送信し、ステップ1205で該当した処理モジュール選択ポリシの処理モジュール205に格納された処理モジュールを実行する(ステップ1209)。
処理モジュール実行プログラム902は、ステップ1208で格納した処理状況データ904の処理終了時刻1104に現在時刻を格納し(ステップ1210)、処理を終了する。
処理モジュール実行プログラム902は、ステップ1204で該当し、かつ、ステップ1205で該当しなかった処理モジュール選択ポリシの処理モジュール205に格納された処理モジュールが利用する処理サーバが空いているか否かを判断し、処理サーバが空いていれば処理1212に進み、処理サーバが空いていなければ処理を終了する(ステップ1211)。なお、処理サーバが空いているか否かの判断については、処理状況データ904を取得して行う。具体的には、処理状況データ904の処理サーバ1101と、処理終了時刻1104を取得し、処理終了時刻1104に値が格納されている場合に、処理サーバ1101に格納されている処理サーバが空いていると判断し、終了時刻1104に値が格納されていない場合に、処理サーバ1101に格納されている処理サーバが空いていない(現在利用中の処理サーバである)と判断する。
処理モジュール実行プログラム902は、処理状況データ904の処理サーバ1101に、ステップ1211で該当した処理サーバ(空いている処理サーバ)の情報を、処理モジュール1102にステップ1204で該当し、かつ、ステップ1205で該当しなかった処理モジュール選択ポリシの処理モジュール205に格納された処理モジュールの情報を、処理開始時刻603に、現在時刻を新たに格納する(ステップ1212)。
処理モジュール実行プログラム902は、ステップ1211で該当した処理サーバに対して、ステップ1201で受信した、処理方式、データ型、データ量、処理データの情報を送信し、ステップ1204で該当し、かつ、ステップ1205で該当しなかった処理モジュール選択ポリシの処理モジュール205に格納された処理モジュールを実行する(ステップ1213)。
処理モジュール実行プログラム902は、ステップ1212で格納した処理状況データ904の処理終了時刻1104に現在時刻を格納し(ステップ1214)、処理を終了する。
ステップ1201からステップ1214までの実行処理の流れを、具体例を用いて説明する。例えば、処理モジュール実行プログラム902が、IF901を介して、処理依頼端末801がネットワーク803に送信した、処理方式「足し算」、データ型「整数」、データ量「10」、処理データ「1、2、3、4、5、6、7、8、9、10」という処理依頼を受信した場合(ステップ1201)、受信した処理依頼から、処理方式「足し算」、データ型「整数」、データ量「10」を取得する(ステップ1202)。
処理モジュール実行プログラム902は、記憶装置105に格納された処理モジュール選択ポリシ115の情報を取得し(ステップ1203)、ステップ1202で取得した処理方式「足し算」、データ型「整数」の情報と、ステップ1203で取得した処理モジュール選択ポリシの処理方式202、データ型203とを比較する。この場合、ポリシID201が「1」の処理方式202「足し算」、データ型203「整数」の処理モジュール選択ポリシと、ポリシID201が「2」の処理方式「足し算」、データ型203「整数」の処理モジュール選択ポリシに該当する(ステップ1204)。
処理モジュール実行プログラム902は、ステップ1204で該当した、ポリシID201が「1」の処理モジュール選択ポリシと、ポリシID201が「2」の処理モジュール選択ポリシのデータ量204の情報と、ステップ1202で取得したデータ量「10」の情報とを比較する。この場合、ポリシID201が「2」のデータ量204「10000個未満」の処理モジュール選択ポリシに該当する(ステップ1205)。
処理モジュール実行プログラム902は、記憶装置105に格納された処理サーバ構成データ903の情報を取得する(ステップ1206)。
処理モジュール実行プログラム902は、ステップ1205で該当した、ポリシID201が「2」の処理モジュール選択ポリシの処理モジュール205に格納された処理モジュールを取得し、取得した処理モジュールが利用する処理サーバが空いているか否かの判断を行う(ステップ1207)。この場合、ステップ1206で取得した処理サーバ構成データ903より、該当する「処理モジュールC1」は、「処理サーバA」及び「処理サーバB」に搭載していることが分かるので、「処理サーバA」及び「処理サーバB」が空いているか否かの判断を行う。処理モジュール実行プログラム902は処理状況データ904の1行目に格納されている、処理サーバ1101が「処理サーバA」、処理モジュール1102が「処理モジュールG1」、処理開始時刻1103が「2011/1/1 10:00:00」、処理終了時刻1104が「2011/1/1 10:00:10」の処理状況データを取得し、当該処理終了時刻1104に値が格納されていないことから、「処理サーバA」が空いている処理サーバと判断する。
処理モジュール実行プログラム902は、処理状況データ904の処理サーバ1101に、ステップ1207で該当した処理サーバ「処理サーバA」の情報を、処理モジュール1102に、ステップ1205で該当した処理モジュール選択ポリシの処理モジュール205に格納された処理モジュール「処理モジュールC1」の情報を、処理開始時刻1103に現在時刻を格納する(ステップ1208)。この場合、例えば、現在時刻が、「2011/1/1 11:00:00」であるとすると、更新後の処理状況データ904は、処理サーバ1101が「処理サーバA」、処理モジュール1102が「処理モジュールC1」、処理開始時刻1103が「2011/1/1 11:00:00」、処理終了時刻1104が「」の処理状況データが4行目に追加されることとなる。
処理モジュール実行プログラム902は、ステップ1207で該当した処理サーバ「処理サーバA」に、ステップ1201で受信した、処理方式「足し算」、データ型「整数」、データ量「10」、処理データ「1、2、3、4、5、6、7、8、9、10」という処理依頼を送信し、ステップ1205で該当した処理モジュール選択ポリシの処理モジュール205に格納された処理モジュール「処理モジュールC1」を実行する(ステップ1209)。
処理モジュール実行プログラム902は、ステップ1208で格納した処理状況データ904の処理終了時刻1104に現在時刻を格納し(ステップ1210)、処理を終了する。
このように、処理モジュール実行プログラム902は受信した処理依頼から、処理方式、データ型、データ量を取得し、処理モジュール選択ポリシと処理モジュールの処理状況に基づいて、最適な処理モジュールを実行する処理サーバを選択し実行することで、処理時間の高速化を行うことが可能となる。
本実施例は、上記実施の形態そのままに限定されるものではなく、実施段階ではその要旨を逸脱しない範囲で構成要素を変形して具体化することができる。また、上記実施の形態に開示されている複数の構成要素の適宜な組み合わせにより、種々の発明を形成することができる。例えば、実施の形態に示される全構成要素からいくつかの構成要素を削除してもよい。さらに、異なる実施の形態にわたる構成要素を適宜組み合わせても良い。
101:データ処理装置
102:CPU
103:GPU
108:処理モジュール実行プログラム
115:処理モジュール選択ポリシ
504:処理状況データ
902:処理サーバ選択プログラム
903:処理サーバ構成データ
102:CPU
103:GPU
108:処理モジュール実行プログラム
115:処理モジュール選択ポリシ
504:処理状況データ
902:処理サーバ選択プログラム
903:処理サーバ構成データ
Claims (14)
- データ処理のデータ量に対応する処理モジュールを記憶する処理モジュール選択ポリシ記憶部と、
データ処理の依頼を受信した場合に、前記処理モジュール選択ポリシに記憶されているポリシに従って当該データ処理のデータ量に応じた前記処理モジュールを実行する処理モジュール実行部と、
を備えることを特徴とするデータ処理装置。 - 前記処理モジュールとは、CPUの処理モジュールとGPUの処理モジュールとを含み、
前記処理モジュール選択ポリシとは、一定の処理方式においてデータ量が一定値より多い場合にGPUの処理モジュールを選択し、データ量が一定値より少ない場合にCPUの処理モジュールを選択することを特徴とする請求項1に記載のデータ処理装置。 - 前記データ処理が実行された場合、前記データ処理が終了した時刻を記憶する処理状況データ記憶部を更に備え、
前記処理モジュール実行部は、
新たなデータ処理の依頼を受信した場合、新たに選択された処理モジュールに対して前記時刻が記憶されていた場合に、新たなデータ処理を実行することを特徴とする請求項2に記載のデータ処理装置。 - 前記データ処理とは、処理方式と、データ型と、データ量とを含む処理であり、
前記実行部は、前記データ処理の依頼に含まれている処理方式と、前記データ処理の依頼に含まれているデータ型とに応じて、実行する処理モジュールを選択することを特徴とする請求項3記載のデータ処理装置。 - 前記実行部は、前記データ処理依頼に含まれているデータ量とに応じて、実行する処理モジュールを選択することを特徴とする請求項3記載のデータ処理装置。
- 前記実行部は、前記データ処理依頼を受信するごとに、実行する処理モジュールを選択することを特徴とする請求項3記載のデータ処理装置。
- 前記処理モジュール選択ポリシは、前記データ量に応じて、前記処理モジュールを実行するプロセッサが異なることを特徴とする請求項3記載のデータ処理装置。
- 前記記憶部は、前記処理モジュールの処理状況を記憶する手段とをさらに備えることを特徴とする請求項3記載のデータ処理装置。
- 前記実行部は、前記処理モジュールの前記処理状況に応じて、実行する前記処理モジュールを選択することを特徴とする請求項8に記載のデータ処理装置。
- 前記記憶部は、ネットワークを介して接続した複数のデータ処理装置と、前記データ処理装置が具備している前記処理モジュールとを対応付けて記録する手段とをさらに備えることを特徴とする請求項3に記載のデータ処理装置。
- 前記実行部は、前記ネットワークを介して接続した前記複数のデータ処理装置に対して、前記処理モジュールの実行命令を送信することを特徴とする請求項10に記載のデータ処理装置。
- あらかじめ処理モジュール選択ポリシ記憶部がデータ処理のデータ量に対応する処理モジュールを記憶し、
処理モジュール実行部がデータ処理の依頼を受信した場合に、前記処理モジュール選択ポリシに記憶されているポリシに従って当該データ処理のデータ量に応じた前記処理モジュールを実行することを特徴とするデータ処理方法。 - 前記処理モジュールとは、CPUの処理モジュールとGPUの処理モジュールとを含み、
前記処理モジュール選択ポリシとは、一定の処理方式においてデータ量が一定値より多い場合にGPUの処理モジュールを選択し、データ量が一定値より少ない場合にCPUの処理モジュールを選択することを特徴とする請求項12に記載のデータ処理方法。 - 処理状況データ記憶部は、データ処理が実行された場合、前記データ処理が終了した時刻を記憶し、
前記処理モジュール実行部は、
新たなデータ処理の依頼を受信した場合、新に選択された処理モジュールに対して前記時刻が記憶されていた場合に、新たなデータ処理を実行することを特徴とする請求項13に記載のデータ処理方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2012052486A JP2013186770A (ja) | 2012-03-09 | 2012-03-09 | データ処理装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2012052486A JP2013186770A (ja) | 2012-03-09 | 2012-03-09 | データ処理装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2013186770A true JP2013186770A (ja) | 2013-09-19 |
Family
ID=49388116
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2012052486A Pending JP2013186770A (ja) | 2012-03-09 | 2012-03-09 | データ処理装置 |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP2013186770A (ja) |
Cited By (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2016071886A (ja) * | 2014-09-29 | 2016-05-09 | 三星電子株式会社Samsung Electronics Co.,Ltd. | スケジューラコンピューティング装置、それを含む分散コンピューティングシステムのデータノード、及びその方法 |
JP2016081429A (ja) * | 2014-10-21 | 2016-05-16 | 富士通株式会社 | センシング制御プログラム及び携帯端末装置 |
JP2017164914A (ja) * | 2016-03-14 | 2017-09-21 | コニカミノルタ株式会社 | 描画処理装置、画像処理装置、描画処理方法及び描画処理プログラム |
WO2018158819A1 (ja) * | 2017-02-28 | 2018-09-07 | 株式会社日立製作所 | 分散データベースシステム及び分散データベースシステムのリソース管理方法 |
WO2018179873A1 (ja) * | 2017-03-28 | 2018-10-04 | 日本電気株式会社 | アクセラレータを有する計算機のためのライブラリ、およびアクセラレータ |
JP2019174969A (ja) * | 2018-03-27 | 2019-10-10 | 株式会社東芝 | 通信システム、ゲートウェイ装置および通信方法 |
JP2022047527A (ja) * | 2020-09-11 | 2022-03-24 | アクタピオ,インコーポレイテッド | 実行制御装置、実行制御方法および実行制御プログラム |
WO2023243099A1 (ja) * | 2022-06-17 | 2023-12-21 | 日本電信電話株式会社 | アクセラレータオフロード装置およびアクセラレータオフロード方法 |
-
2012
- 2012-03-09 JP JP2012052486A patent/JP2013186770A/ja active Pending
Cited By (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2016071886A (ja) * | 2014-09-29 | 2016-05-09 | 三星電子株式会社Samsung Electronics Co.,Ltd. | スケジューラコンピューティング装置、それを含む分散コンピューティングシステムのデータノード、及びその方法 |
JP2016081429A (ja) * | 2014-10-21 | 2016-05-16 | 富士通株式会社 | センシング制御プログラム及び携帯端末装置 |
JP2017164914A (ja) * | 2016-03-14 | 2017-09-21 | コニカミノルタ株式会社 | 描画処理装置、画像処理装置、描画処理方法及び描画処理プログラム |
WO2018158819A1 (ja) * | 2017-02-28 | 2018-09-07 | 株式会社日立製作所 | 分散データベースシステム及び分散データベースシステムのリソース管理方法 |
JPWO2018158819A1 (ja) * | 2017-02-28 | 2019-06-27 | 株式会社日立製作所 | 分散データベースシステム及び分散データベースシステムのリソース管理方法 |
WO2018179873A1 (ja) * | 2017-03-28 | 2018-10-04 | 日本電気株式会社 | アクセラレータを有する計算機のためのライブラリ、およびアクセラレータ |
JP2019174969A (ja) * | 2018-03-27 | 2019-10-10 | 株式会社東芝 | 通信システム、ゲートウェイ装置および通信方法 |
JP7258468B2 (ja) | 2018-03-27 | 2023-04-17 | 株式会社東芝 | 通信システム、ゲートウェイ装置および通信方法 |
JP2022047527A (ja) * | 2020-09-11 | 2022-03-24 | アクタピオ,インコーポレイテッド | 実行制御装置、実行制御方法および実行制御プログラム |
WO2023243099A1 (ja) * | 2022-06-17 | 2023-12-21 | 日本電信電話株式会社 | アクセラレータオフロード装置およびアクセラレータオフロード方法 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP2013186770A (ja) | データ処理装置 | |
CN113641457B (zh) | 容器创建方法、装置、设备、介质及程序产品 | |
JP5245722B2 (ja) | スケジューラ、プロセッサシステム、プログラム生成装置およびプログラム生成用プログラム | |
US8413158B2 (en) | Processor thread load balancing manager | |
CN102109997A (zh) | 通过利用虚拟OpenCL设备作为与计算云的接口来加速OpenCL应用 | |
WO2021012956A1 (zh) | 云平台的资源处理方法、相关设备及存储介质 | |
US20190327190A1 (en) | Technologies for scalable packet reception and transmission | |
CN109614227B (zh) | 任务资源调配方法、装置、电子设备及计算机可读介质 | |
CN106201481A (zh) | 应用程序开发系统中的组件管理方法和装置 | |
JP2013120438A (ja) | グラフィックスコマンド生成装置およびグラフィックスコマンド生成方法 | |
KR102563165B1 (ko) | 메모리 액세스 요청 스케줄링 방법, 장치, 기기 및 저장 매체 | |
US9471387B2 (en) | Scheduling in job execution | |
CN109033814A (zh) | 智能合约触发方法、装置、设备及存储介质 | |
WO2021258512A1 (zh) | 数据的聚合处理装置、方法和存储介质 | |
CN113886162A (zh) | 一种计算设备性能测试方法、计算设备及存储介质 | |
JP6788691B2 (ja) | OpenFabricsにおけるスループットの改善 | |
US11467946B1 (en) | Breakpoints in neural network accelerator | |
JP2007280397A (ja) | 複数処理ノードを含むコンピュータ・システムでプログラムをロードする方法、該プログラムを含むコンピュータ可読媒体、及び、並列コンピュータ・システム | |
JP2011141703A (ja) | 資源配置システム、資源配置方法、及び資源配置用プログラム | |
US9367329B2 (en) | Initialization of multi-core processing system | |
JP6065843B2 (ja) | サービスレベル管理装置、プログラム、及び、方法 | |
CN111228815B (zh) | 处理游戏的配置表的方法、装置、存储介质和系统 | |
JP2015094976A (ja) | 情報処理装置、情報処理方法、及び、プログラム | |
US20210073033A1 (en) | Memory management using coherent accelerator functionality | |
US10268529B2 (en) | Parallel processing apparatus and inter-node communication method |