<実施の形態1>
以下に、本発明の第1の実施の形態について、図面を参照して詳細に説明する。
(データ処理装置の構成)
図1は、本発明の一実施の形態に係るデータ処理装置のハードウェア構成を示す図である。
図1に示すように、データ処理装置1は、メインCPU(Central Processing Unit)110、メインメモリ120、CPU130、メモリ140、通信I/F(通信インタフェース)150および通信I/F160を備えている。
メインCPU110は、データ処理装置1の全体を制御する。メインメモリ120は、メインCPU110が直接的に使用する記憶装置である。メインメモリ120は、例えば、光ディスク、フレキシブルディスク、磁気光ディスク、外付けハードディスク、又は半導体メモリ等である。記憶装置の一部の記録媒体は、不揮発性記憶装置であり、そこにプログラムを記録する。また、プログラムは、通信網に接続されている図示しない外部コンピュータからダウンロードされてもよい。
メインCPU110、メインメモリ120および通信I/F150は、内部バス180を介して接続している。メインCPU110、メインメモリ120および通信I/F150により、ホスト部20が構成される。
CPU130は、アクセラレータ部30を制御する。メモリ140は、CPU130が直接的に使用する記憶装置である。メモリ140は、例えば、半導体メモリ等である。記憶装置の一部の記録媒体は、不揮発性記憶装置であり、そこにプログラムを記録する。また、プログラムは、通信網に接続されている図示しない外部コンピュータからダウンロードされてもよい。
CPU130、メモリ140および通信I/F160は、内部バス190を介して接続している。CPU130、メモリ140および通信I/F160により、アクセラレータ部30が構成される。
ホスト部20の通信I/F150と、アクセラレータ部30の通信I/F160とは、外部バス90を介して接続している。
なお、図1に示すデータ処理装置1は、1つのアクセラレータ部を備えた構成であるが、本発明はこれに限定されるものではなく、複数のアクセラレータ部を備える構成であってもよい。また、図1に示すデータ処理装置1は、本発明に特有な構成について表現したものであり、データ処理装置1が、例えば、入出力装置など、図1に示されていない構成を有していてもよいことは言うまでもない。
また、本実施の形態では、アクセラレータ部30が、データ処理装置1に内蔵される構成について説明を行うが、本発明はこれに限定されるものではない。アクセラレータ部30は、データ処理装置1に外付けされる構成であってもよい。
なお、以下の実施の形態において、ホスト部20およびアクセラレータ部30の夫々を特定せずに、ホスト部20およびアクセラレータ部30の何れかを指す場合、単に「ノード」と呼ぶ場合もある。また、以下では、ホスト部20をデータ処理制御装置と呼び、アクセラレータ部30をアクセラレータと呼ぶ場合もある。
次に、データ処理装置1の機能について、図2を参照して説明する。図2は、本実施の形態に係るデータ処理装置1の機能構成を示す機能ブロック図である。図2に示すとおり、データ処理装置1は、ホスト部20とアクセラレータ部30とを備えている。
(ホスト部20の構成)
図2に示すとおり、データ処理装置1のホスト部20は、入力部21、データ割当部22、データ範囲決定部23、入力データ送信部24、処理部25、出力データ受信部26および出力部27を備えている。
入力部21は、データ処理装置1に入力された入力データを読み込む。入力データは、データ処理装置1に連続して入力される。入力データの例としては、例えば、画像データなどが挙げられるが、これに限定されるものではない。入力部21は、データ処理装置1の外部から入力データを受け取ってもよい。または、入力部21は、データ処理装置1の内部の記憶装置等(図示しない)から入力データを読み出してもよい。入力部21は、入力データを読み込むと、読み込んだことをデータ割当部22に通知する。なお、入力部21は、読み込んだ入力データをデータ割当部22に供給してもよい。また、入力部21は、読み込んだ入力データを記憶装置(例えば、メインメモリ120)に記録してもよい。
データ割当部22は、入力部21が入力データを読み込んだことを示す通知を入力部21から受け取ると、入力部21が読み込んだ入力データを、ホスト部20とアクセラレータ部30とに割り当てる。具体的には、データ割当部22は、ホスト部20とアクセラレータ部30との負荷が均衡するように、入力データの集合をホスト部20とアクセラレータ部30とに割り当てる。データ割当部22は、入力データの集合をホスト部20に割り当てた結果(割当結果)を、処理部25に通知する。また、データ割当部22は、アクセラレータ部30に割り当てた割当結果を、データ範囲決定部23に通知する。
なお、データ割当部22は、割当結果を図示しない記憶装置に記録してもよい。また、データ割当部22は、各ノードに割り当てた割当結果とともに、入力部21が読み込んだ入力データを処理部25およびデータ範囲決定部23に供給してもよい。
データ範囲決定部23は、データ割当部22の割当結果に基づき、アクセラレータ部30に転送する入力データの集合の範囲を決定する。データ範囲決定部23は、決定した入力データの集合の範囲を入力データ送信部24に通知する。なお、データ範囲決定部23は、決定した範囲の入力データの集合を、入力データ送信部24に供給してもよい。
入力データ送信部24は、データ範囲決定部23が決定した範囲の入力データの集合をアクセラレータ部30に転送する。
処理部25は、データ割当部22の割当結果に基づき、ホスト部20に割り当てられた入力データの集合に対して、データ処理を行う。処理部25は、図2に示すように、1または複数のデータ処理の夫々を行う1または複数のサブ処理部(処理部(1)、処理部(2)、・・・、処理部(N))を有している。本実施の形態においては、処理部25は、N個のサブ処理部を有しているとするが、これに限定されるものではない。
出力データ受信部26は、アクセラレータ部30から送信されたデータであって、アクセラレータ部30がデータ処理を行ったデータを受信する。出力データ受信部26は、受信したデータを出力部27に供給する。
出力部27は、ホスト部20の処理部25がデータ処理を行ったデータと、アクセラレータ部30から受信したデータとを、出力データとして出力する。出力部27は、例えば、入力データに対応する順番で出力データを出力することが好ましい。
(アクセラレータ部30の構成)
図2に示すとおり、データ処理装置1のアクセラレータ部30は、入力データ受信部34、処理部35および出力データ送信部36を備えている。
入力データ受信部34は、ホスト部20から転送された入力データの集合を受信する。入力データ受信部34は、受信した入力データの集合を処理部35に供給する。
処理部35は、入力データ受信部34から供給された入力データの集合に対して、データ処理を行う。処理部35は、上述した処理部25と同様に、1または複数のサブ処理部を有している。本実施の形態においては、処理部35は、N個のサブ処理部を有しているとするが、これに限定されるものではない。
出力データ送信部36は、処理部35がデータ処理を行ったデータを、ホスト部20に送信する。
以降、処理部25および処理部35が備える複数のサブ処理部を、図2に示すとおり、処理部(1)、処理部(2)、・・・、処理部(N)と表現する。また、処理部25の処理部(1)を、処理部25(1)と示し、処理部35の処理部(1)を処理部35(1)と示す。また、例えば、処理部25の処理部(1)と処理部35の処理部(1)の夫々を特定しない場合、単に処理部(1)と示す。
(入力データの処理について)
次に、図3および図4を参照して、処理部25および処理部35のデータ処理に使用する入力データについて説明を行う。図3および図4は、処理部25および処理部35がデータ処理する入力データの一例を説明するための図である。
図3に示すとおり、本実施の形態では、処理部25および処理部35は、入力データ毎に独立して、データ処理を行うことができるとする。つまり、入力データiに対し、処理部25および処理部35のサブ処理部(処理部(1)、処理部(2)、・・・、処理部(N))の各々は、入力データiに対する各サブ処理部の結果を使用し、入力データi以外に対する各サブ処理部の結果を使用しない。このように、各サブ処理部は、当該サブ処理部がデータ処理する入力データとは異なる入力データをデータ処理するサブ処理部の処理後のデータの何れに対しても、依存関係を有していない。したがって、各サブ処理部は、各入力データに対して並列にデータ処理を実行することができる。
また、本実施の形態における入力データは、図4に示すように、処理部25および処理部35の各サブ処理部のうち、最初のサブ処理部(処理部(1))のみが、二つの入力データを使用する構成であってもよい。図4に示すように、処理部(1)が入力データiに対するデータ処理を行うとき、処理部(1)は、入力データiと入力データi−1とを使用する。また、その他のサブ処理部(処理部(2)、・・・、処理部(N))は、入力データiに対する各サブ処理部の結果のみを使用している。このように、本実施の形態においては、最初のサブ処理部で、複数の入力データを用いた場合であっても、その他の各サブ処理部が、当該サブ処理部がデータ処理する入力データとは異なる入力データをデータ処理するサブ処理部の処理後のデータの何れに対しても、依存関係を有していない構成である。
(データ処理装置の動作)
次に、図5を参照して、本実施の形態に係るデータ処理装置1の動作について説明する。図5は、本実施の形態に係るデータ処理装置1の動作の流れを示すフローチャートである。なお、ホスト部20の動作の流れを図5の左側に示し、アクセラレータ部30の動作の流れを図5の右側に示している。
まず、ホスト部20の入力部21が、データ処理装置1に入力された入力データを読み込む(S51)。その後、データ割当部22は、入力データを読み込んだことを示す通知を入力部21から受け取ると、入力部21が所定の数の入力データを読み込んだか否かを確認する(S52)。
所定の数の入力データが読み込まれていない場合(S52にてNO)、S51に戻り、入力部21は、再び入力データを読み込む。
所定の数の入力データが読み込まれた場合(S52にてYES)、データ割当部22は、読み込まれた入力データの集合から、ホスト部20とアクセラレータ部30とに割り当てる入力データの数を決定する(S53)。上記所定の数の入力データを各ノードに割り当てる際の、各ノードにおける入力データの数は、各ノードの処理の負荷を考慮して、各ノードの負荷が均衡するように決定する。各ノードの負荷が均衡しない場合、何れかのノードに処理を実行しない空き時間が発生する可能性がある。そのため、負荷が均衡するように入力データを割り当てることにより、負荷が均衡しない場合に比べ、処理性能が向上する。
一般には、アクセラレータ部30のほうが、ホスト部20より高い演算性能を持つ。したがって、ホスト部20より、アクセラレータ部30に、より多数の入力データを割り当てることが好ましい。データ割当部22は、例えば、各ノードにおける、各サブ処理部の処理時間、各ノードのプロセッサのコア数等を考慮して、各ノードにおける処理の負荷が均衡するように、入力データを割り当ててもよい。データ割当部22は、入力データをホスト部20とアクセラレータ部30とに割り当てると、当該割当結果をデータ範囲決定部23と処理部25とに通知する。
その後、データ範囲決定部23は、割当結果と、アクセラレータ部30の処理部35がデータ処理に使用するデータとに基づき、アクセラレータ部30に転送する入力データの集合の範囲を決定する(S54)。処理部35の各サブ処理部が、図4に示すように、1つの入力データのみを必要とする場合、アクセラレータ部30に割り当てられた入力データの集合の範囲が、転送する入力データの集合の範囲となる。
一方、図5に示すように、処理部35の処理部(1)が2つの入力データを使用する場合、データ範囲決定部23は、処理部35がデータ処理に使用する入力データに基づいて、転送する入力データの集合の範囲を決定する。図5の例では、処理部35は、入力データiに対するデータ処理を実行する際に、入力データiと入力データi−1とを使用する。したがって、例えば、データ割当部22がアクセラレータ部30に割り当てた入力データの集合が、入力データi〜入力データjである場合、データ範囲決定部23は、転送する入力データの集合の範囲を、入力データi−1〜入力データjの範囲であると決定する。そして、データ範囲決定部23は、決定した入力データの集合の範囲を入力データ送信部24に通知する。
その後、入力データ送信部24は、データ範囲決定部23が決定した範囲の入力データの集合をアクセラレータ部30に転送する(S55)。
アクセラレータ部30の入力データ受信部34は、ホスト部20から転送された入力データの集合を受信し(S61)、受信した入力データの集合を処理部35に供給する。
そして、ホスト部20の処理部25は、データ割当部22から入力データの集合の割当結果を受け取ると、処理部(1)の処理(処理1)から処理部(N)の処理(処理N)を実行する(S56〜S57)。
一方、アクセラレータ部30の処理部35は、処理1から処理Nを実行する(S62〜S63)。
ここで、各サブ処理部の動作について説明する。処理部(1)は、各ノードに割り当てられた入力データの集合に対して処理1を実行する。このとき処理部(1)は、各ノード上の複数のプロセッサコア(以下、単に「コア」とも呼ぶ)を利用し、入力データの集合に含まれる各入力データに対して並列にデータ処理することが好ましい。なお、各入力データに対する処理1内で、入力データを分割して並列にデータ処理するなどの階層的な並列化を行ってもよい。
そして、処理部(1)は、処理1が終了すると、当該処理1が終了したことを処理部(2)に通知する。なお、処理部(1)は、データ割当部22がホスト部20およびアクセラレータ部30に割り当てた入力データの集合に含まれる、全ての入力データに対して、処理1が終了した後に、処理1の終了を処理部(2)に通知してもよい。
また、処理部(1)は、上記入力データの集合に含まれる入力データの各々に対して処理1が終了する度に、処理1の終了を処理部(2)に通知してもよい。これにより、処理部(2)は、上記入力データの集合に含まれる全ての入力データに対する処理1の終了を待つことなく、処理2を開始できる。このような処理を行うことができるのは、上述したとおり、あるサブ処理部がデータ処理するデータとは異なるデータをデータ処理するサブ処理部の処理後のデータの何れに対しても、依存関係を有していないからである。
なお、上記通知には、処理部(1)の処理後のデータ(中間データ1と呼ぶ)を含むデータであって、処理部(2)がデータ処理を行う際に使用するデータが含まれていてもよい。また、処理部(1)は、処理部(2)に対し、処理後のデータを示す情報(例えば、番号など)を通知し、処理部(2)がデータ処理を行う際に使用するデータを別の手段で供給してもよい。
その後、処理部(2)は、入力データの集合に含まれる入力データの各々に対し、処理2を行い後続のサブ処理部に通知する。そして、処理Nが終了すると、処理部25は、処理が全て終了したことを、出力部27に通知する。また、処理部35は、処理が全て終了したことを、出力データ送信部36に通知する。
その後、出力データ送信部36は、処理部35のデータ処理後のデータの集合を、ホスト部20に送信する(S64)。
ホスト部20の出力データ受信部26は、アクセラレータ部30から出力データを受信すると(S58)、出力部27に供給する。出力部27は、処理部25の処理後のデータと、アクセラレータ部30から送信された処理後のデータとを出力データとして出力する(S59)。なお、出力部27は、典型的には、入力データに対応する順番で出力データを出力することが好ましい。
なお、図5では、S54およびS55の後に、処理部25の処理(S56、S5)を実行するとしているが、本発明はこれに限定されるものではない。ホスト部20が複数のコアを備える場合、S54と同時に処理部25の処理(S56)を実行してもよい。また、ホスト部20が複数のコアを備えない場合、時分割処理により、S54とS56とを並列して行ってもよい。
(効果)
図6を参照して、本実施の形態に係るデータ処理装置1の効果について説明する。図6は、本実施の形態に係るデータ処理装置1の効果の一例を説明するためのイメージ図である。図6において、横軸は時間を示している。図6に示す例では、所定の数の入力データの数を(m+n)個とし、(m+n)個の入力データを1つの集合としている。そして、データ割当部22が、ホスト部20に対し、m個の入力データを割り当て、アクセラレータ部30に対し、n個の入力データを割り当てているとする。mおよびnは、各ノードの負荷が均衡するように決定されている。具体的には、各ノード上の処理部25および処理部35の処理時間が均衡するように決定されている。また、処理部25および処理部35は、2つのサブ処理部(処理部(1)、処理部(2))を有しているとする。
図6に示すように、ホスト部20とアクセラレータ部30とは、処理時間が均衡しており、両ノードにおける空き時間は少なくなっている。
以上のように、本実施の形態に係るデータ処理装置1において、ホスト部20のデータ割当部22が、両ノードの負荷が均衡するように連続して当該データ処理装置1に入力される入力データを割り当てる。そして、ホスト部20の処理部25は、入力データのうち、データ割当部22がホスト部20に割り当てた入力データのデータ処理を行う。一方、アクセラレータ部30の処理部35は、データ割当部22がアクセラレータ部30に割り当てた結果および当該処理部35がデータ処理に使用するデータに基づいてデータ範囲決定部23が決定した範囲の入力データの集合に対し、データ処理を行う。
このように、本実施の形態に係るデータ処理装置1は、データ割当部22が両ノードの負荷が均衡するように入力データを割り当てるため、各ノードのプロセッサの空き時間を少なくすることができるという効果がある。
また、処理部25および処理部35は、異なる入力データに対してデータ処理を行う。したがって、各ノード間のデータ転送は、処理部35に入力する際と、処理部35の処理後のデータをホスト部20に受信する際のみ行われる。つまり、サブ処理部毎に処理後のデータの転送は不要である。このため、データ転送によるオーバーヘッドを低く抑えられるという効果がある。したがって、本実施の形態に係るデータ処理装置1は、データ処理を高速に行うことができる。
(変形例)
次に、図7を参照して、本実施の形態の変形例について説明を行う。図7は、本実施の形態の変形例に係るデータ処理装置1の機能構成を示した機能ブロック図である。なお、説明の便宜上、図2に示すデータ処理装置1に含まれる部材と同じ機能を有する部材については、同じ符号を付し、その説明を省略する。
図7に示すとおり、本変形例に係るデータ処理装置1のホスト部20は、入力部21、データ割当部22、データ範囲決定部23、入力データ送信部24、出力データ受信部26、出力部27および処理部45を備えている。また、本変形例に係るデータ処理装置1のアクセラレータ部30は、入力データ受信部34、出力データ送信部36および処理部55を備えている。なお、本変形例に係るデータ処理装置1のハードウェア構成は、図1に示すデータ処理装置1のハードウェア構成と同様である。
図7に示すデータ処理装置1が、図2に示すデータ処理装置1と異なる点は、処理部(1)がホスト部20のみに含まれる点である。
入力部21は、読み込んだ入力データを処理部45の処理部(1)に供給する。処理部(1)は、処理1を行い、処理1の終了後、当該処理1が終了したこと、データ割当部22に通知する。その後、データ割当部22は、上記通知を受け取ると、ホスト部20とアクセラレータ部30とに、入力データを割り当てる。このとき、データ割当部22は、処理1がホスト部20で実行されていることを考慮し、ホスト部20とアクセラレータ部30との負荷が均衡するように、入力データを、ホスト部20とアクセラレータ部30とに割り当てる。具体的には、データ割当部22は、アクセラレータ部30に割り当てられる入力データの数が、処理1が両ノードで行われる場合にアクセラレータ部30に割り当てられる入力データの数に比べ、多くなるように割り当てる。
そして、データ範囲決定部23は、割当結果と、アクセラレータ部30の処理部55がデータ処理に使用するデータとに基づき、アクセラレータ部30に転送するデータの集合の範囲を決定する。つまり、データ範囲決定部23は、処理1がホスト部20のみで実行されることを考慮し、アクセラレータ部30に転送するデータの集合の範囲を、入力データおよび処理部(1)の処理後のデータ(中間データ1)の中から決定する。例えば、アクセラレータ部30の処理部55の処理部(2)以降のデータ処理において、入力データを用いない場合、データ範囲決定部23は、当該入力データを転送しないように、転送するデータの範囲を決定する。
そして、入力データ送信部24は、データ範囲決定部23が決定した範囲のデータをアクセラレータ部30に転送する。
アクセラレータ部30の入力データ受信部34は、受信したデータの集合を処理部55に供給する。処理部55は、処理部(1)でのデータ処理が、既にホスト部20で行われているため、処理部(2)以降のデータ処理を行う。
以上により、処理部(1)がホスト部20上にのみ含まれる機能を利用する場合など、処理部(1)がホスト部20上でしか実行できない場合にも、本変形例に係るデータ処理装置1を適用できるという効果がある。
なお、処理部(1)での実行時間が、全体の実行時間と比較して極めて短く、ホスト部20およびアクセラレータ部30の負荷のばらつきが無視できるほどである場合、処理部(1)がホスト部20でのみ実行されることを考慮しなくてもよい。
また、図7に示すデータ処理装置1は、処理部(1)の処理1をホスト部20のみで実行する構成であることを例に説明を行ったが、本発明はこれに限定されるものではない。本変形例に係るデータ処理装置1は、他のサブ処理部のデータ処理をホスト部20のみで実行する構成であってもよい。また、本変形例に係るデータ処理装置1は、複数のサブ処理部のデータ処理をホスト部20のみで実行する構成であってもよい。さらに、本変形例に係るデータ処理装置1は、任意の数のサブ処理部のデータ処理をアクセラレータ部30のみで実行する構成であってもよい。
また、データ割当部22は、ホスト部20とアクセラレータ部30とに割り当てる入力データの数を、サブ処理部ごとに変更してもよい。これは、各サブ処理部によって、ホスト部20とアクセラレータ部30との実行時間の比率が変わる場合などに、より柔軟に負荷の均衡が図れるという効果がある。一方で、ホスト部20とアクセラレータ部30とに割り当てる入力データの数が変わる際には、ホスト部20とアクセラレータ部30との間でデータ転送を行うことに注意する。この場合、データ処理装置1は、割り当てるデータの数が変わる前後の各サブ処理部の間に、データ範囲決定部23と入力データ送信部24とを備える。
なお、複数のサブ処理部の各々のデータ処理を、ホスト部20およびアクセラレータ部30の何れか一方に、全て行うように構成することは、好ましくない。例えば、処理部(1)〜処理部(3)の処理は、ホスト部20のみで行い、処理部(4)〜処理部(N)の処理は、アクセラレータ部30のみで行うように構成することは、好ましくない。なぜならば、この場合、各ノードが異なるデータ処理を実行することになるからである。したがって、入力データをホスト部20とアクセラレータ部30とに割り当てても、ホスト部20とアクセラレータ部30との間の負荷を均衡することができなくなる。また、各ノードが実行する各サブ処理部の処理時間が均衡しない場合に、何れかのノードで空き時間が発生し、両ノードの性能を最大限に利用することができなくなる。
<実施の形態2>
次に、本発明の第2の実施の形態について図面を参照して詳細に説明する。本実施の形態では、前述の第1の実施の形態と同様に、データ処理装置が1つのアクセラレータ部を備えた構成について説明するが、本発明はこれに限定されるものではなく、複数のアクセラレータ部を備える構成であってもよい。なお、説明の便宜上、前述した第1の実施の形態で説明した図面に記載のデータ処理装置1に含まれる部材と同じ機能を有する部材については、同じ符号を付し、その説明を省略する。
(入力データの処理について)
まず、図8を参照して、処理部25および処理部35のデータ処理に使用する入力データについて説明を行う。図8は、処理部25および処理部35がデータ処理する入力データの一例を説明するための図である。なお、本実施の形態においては、処理部25および処理部35は、N個のサブ処理部を有しているとするが、これに限定されるものではない。
図8に示すとおり、本実施の形態では、処理部(2)は、以下の(a)および(b)を利用する。
(a)処理部25および処理部35がデータ処理する対象の入力データ(例えば、入力データi)(処理対象データとも呼ぶ)に対する処理部(1)の処理後のデータ。
(b)処理対象データに先行する入力データ(例えば、入力データi−1)(先行データとも呼ぶ)の処理1の処理後のデータ。
つまり、処理部(2)は、以下の(i)および(ii)に対して、依存関係を有している。
(i)当該処理部(2)の処理対象データに対する処理部(1)の処理後のデータ。
(ii)当該処理部(2)の処理対象データとは異なる入力データであって、当該処理対象データに先行する入力データに対する処理部(1)の処理後のデータ。
以降、処理部(1)の入力データiに対する処理後のデータを中間データ1(i)と呼び、処理部(1)の入力データi−1に対する処理後のデータを中間データ1(i−1)と呼ぶ。
説明の便宜上、図8では、処理対象データの中間データと、処理対象データに先行する1つ先行データの中間データとに対する処理部(2)の依存関係を矢印で示しているが、本発明はこれに限定されるものではない。処理部(2)は、複数の先行データの中間データに対して、依存関係を有していてもよい。
また、処理部(2)に依存関係を有する中間データの数が、当該処理部(2)がデータ処理する処理対象データ毎に異なっていてもよい。また、処理部(2)以外のサブ処理部が、先行データの中間データに対して、依存関係を有していてもよい。また、各サブ処理部は、各データ処理の実行中に、依存する中間データの数を変更してもよい。
(データ処理装置の構成)
次に、図9を参照して、本実施の形態に係るデータ処理装置1の機能について、説明する。図9は、本実施の形態に係るデータ処理装置1の機能構成を示した機能ブロック図である。図9に示すとおり、データ処理装置1は、ホスト部20とアクセラレータ部30とを備えている。
ホスト部20は、入力部21、データ割当部22、データ範囲決定部23、入力データ送信部24、処理部25、出力データ受信部26、出力部27、依存範囲決定部63および依存データ送受信部64を備えている。また、アクセラレータ部30は、入力データ受信部34、処理部35、出力データ送信部36、依存範囲決定部73および依存データ送受信部74を備えている。なお、本実施の形態に係るデータ処理装置1のハードウェア構成は、図1に示すデータ処理装置1のハードウェア構成と同様である。
図9に示すデータ処理装置1が、前述の第1の実施の形態のデータ処理装置1と異なる点は、ホスト部20が依存範囲決定部63および依存データ送受信部64を備え、アクセラレータ部30が依存範囲決定部73および依存データ送受信部74を備える点である。
依存範囲決定部63は、処理部(1)のデータ処理後のデータ(中間データ1)と依存関係を有する処理部(2)の当該依存関係に基づき、アクセラレータ部30に転送するデータの集合の範囲を決定する。なお、依存範囲決定部63の依存範囲の決定の方法については、後述する。依存範囲決定部63は、決定したデータの集合の範囲を依存データ送受信部64に通知する。なお、依存範囲決定部63は、決定した範囲のデータの集合を、依存データ送受信部64に供給してもよい。
依存データ送受信部64は、依存範囲決定部63が決定した範囲のデータの集合をアクセラレータ部30に転送する。また、依存データ送受信部64は、アクセラレータ部30から転送されたデータの集合を受信し、処理部25(2)に供給する。
依存範囲決定部73は、処理部(1)の中間データ1と依存関係を有する処理部(2)の当該依存関係に基づき、ホスト部20に転送するデータの集合の範囲を決定する。なお、依存範囲決定部73の依存範囲の決定の方法については、後述する。依存範囲決定部73は、決定したデータの集合の範囲を依存データ送受信部74に通知する。なお、依存範囲決定部73は、決定した範囲のデータの集合を、依存データ送受信部74に供給してもよい。
依存データ送受信部74は、依存範囲決定部73が決定した範囲のデータの集合をホスト部20に転送する。また、依存データ送受信部74は、ホスト部20から転送されたデータの集合を受信し、処理部35(2)に供給する。
全ての入力データは、ホスト部20上に存在するため、前述した第1の実施の形態では、データ処理に使用する入力データを、ホスト部20からアクセラレータ部30へ転送した。しかし、本実施の形態に係るデータ処理装置1では、処理部(1)の処理後のデータを使用して、処理部(2)以降の処理を行うため、ホスト部20とアクセラレータ部30との間で中間データを送受信する。なお、処理部(2)が依存関係を有する中間データの数、中間データの割当結果等によっては、片方向にデータ転送を行う構成であってもよい。
なお、本実施の形態に係るデータ処理装置1のデータ割当部22は、ホスト部20とアクセラレータ部30との負荷の均衡に加えて、処理部(2)が依存関係を有する中間データがあることを考慮して、入力データを割り当てることが好ましい。データ割当部22は、例えば、各ノードに対し、連続する入力データを割り当ててもよい。つまり、データ割当部22は、各ノードに割り当てる入力データの数だけを考慮するのではなく、入力データの順番も考慮することが好ましい。
(データ処理装置の動作)
次に、図10を参照して、本実施の形態に係るデータ処理装置1の動作について説明する。図10は、本実施の形態に係るデータ処理装置1の動作の流れを示すフローチャートである。なお、ホスト部20の動作の流れを図10の左側に示し、アクセラレータ部30の動作の流れを図10の右側に示している。
図10に示すS101〜S105およびS121は、夫々、図5に示すS51〜S55およびS61と同様の処理であるため、説明を省略する。
S105の後、ホスト部20の処理部25は、データ割当部22から入力データの集合の割当結果を受け取ると、処理部(1)の処理(処理1)を実行する(S106)。処理部(1)は、処理1が終了すると、当該処理1が終了したことを依存範囲決定部63および処理部(2)に通知する。なお、上記通知には、中間データ1が含まれていてもよい。また、処理部(1)は、処理部(2)に対し、処理後のデータを示す情報(例えば、番号など)を通知し、処理部(2)がデータ処理を行う際に使用するデータを別の手段で供給してもよい。
依存範囲決定部63は、処理1が終了したことを示す通知を受信すると、中間データ(本実施の形態においては、中間データ1)と依存関係を有する処理部(2)の当該依存関係に基づき、アクセラレータ部30に転送するデータの集合の範囲を決定する(S107)。そして、依存データ送受信部64は、依存範囲決定部63が決定した範囲のデータの集合をアクセラレータ部30に転送する(S108)。
一方、アクセラレータ部30の処理部35は、S121の後、処理1を実行する(S122)。アクセラレータ部30の処理部(1)は、処理1が終了すると、当該処理1が終了したことを依存範囲決定部73および処理部(2)に通知する。なお、上記通知には、中間データ1が含まれていてもよい。また、処理部(1)は、処理部(2)に対し、処理後のデータを示す情報(例えば、番号など)を通知し、処理部(2)がデータ処理を行う際に使用するデータを別の手段で供給してもよい。
依存範囲決定部73は、処理1が終了したことを示す通知を受信すると、中間データ1と依存関係を有する処理部(2)の当該依存関係に基づき、ホスト部20に転送する中間データの集合の範囲を決定する(S123)。そして、依存データ送受信部74は、依存範囲決定部73が決定した範囲の中間データの集合をホスト部20に転送する(S124)。
ここで、図8および図11を参照して、依存範囲決定部63および依存範囲決定部73における、データの集合の範囲の決定方法について説明する。図11は、ホスト部20の処理部25およびアクセラレータ部30の処理部35がデータ処理する入力データの一例を説明するための図である。
まず、入力データiに対してデータ処理を行う処理部(2)が、図8に示すように、中間データ1(i)と中間データ1(i−1)と、に対して、依存関係を有している場合の、データの集合の範囲の決定方法について説明する。ここで、入力データの1つの集合における入力データの数を、入力データi〜入力データi+29の30個とする。また、ホスト部20とアクセラレータ部30との負荷を均衡させるために、データ割当部22が、ホスト部20に10個(入力データi〜入力データi+9)の入力データを割り当て、アクセラレータ部30に20個(入力データi+10〜入力データi+29)の入力データを割り当てるとする。
このとき、依存範囲決定部63は、中間データ1(i+9)を、アクセラレータ部30に転送するデータの集合の範囲として決定する。なぜならば、入力データi+10に対してデータ処理を行うアクセラレータ部30の処理部35(2)は、中間データ1(i+9)を利用するためである。
また、依存範囲決定部73は、中間データ1(i+29)を、ホスト部20に転送するデータの集合の範囲として決定する。なぜならば、入力データの次の集合に含まれる入力データi+30に対してデータ処理を行うホスト部20の処理部25(2)は、中間データ1(i+29)を利用するためである。
次に、入力データiに対してデータ処理を行う処理部(2)が、図11に示すように、中間データ1(i)、中間データ1(i−1)、および、入力データi−1に対して依存関係を有している場合の、データの集合の範囲の決定方法について説明する。
このとき、依存範囲決定部63は、中間データ1(i+9)と、入力データi+9とを、アクセラレータ部30に転送するデータの集合の範囲として決定する。なぜならば、入力データi+10に対して処理を行うアクセラレータ部30の処理部35(2)は、中間データ1(i+9)と入力データi+9とを利用するためである。
また、図8の場合と同様に、依存範囲決定部73は、中間データ1(i+29)を、ホスト部20に転送するデータの集合の範囲として決定する。
なお、アクセラレータ部30の処理部(2)が利用する入力データの範囲(上述の例では、入力データi+9)は、データ範囲決定部23が決定してもよい。
図10に戻り、S108およびS124の処理後について説明を行う。S108後、ホスト部20の依存データ送受信部64は、アクセラレータ部30から転送されたデータを受信する(S109)。依存データ送受信部64は、受信したデータを処理部25(2)に供給する。処理部25(2)は、依存データ送受信部64から供給されたデータを用いて、処理2を行う(S110)。
なお、ある入力データに対する処理部25(2)が、当該ノード(即ち、ホスト部20)にあるデータを用いてデータ処理を行う場合、当該処理部25(2)の処理2を、別のノード(本実施の形態においては、アクセラレータ部30)からのデータを用いる処理2より先に開始してもよい。例えば、上述の例の場合では、入力データi+1〜入力データi+9に対するホスト部20の処理部25(2)のデータ処理は、ホスト部20上にある処理1の処理後のデータに依存する。従って、入力データi+1〜入力データi+9に対して、処理部25(2)は、アクセラレータ部30からの転送されるデータを待たずにデータ処理を開始することができる。
処理部25の処理部(2)の処理2が終了すると、処理部25は後続の処理(処理3〜処理N)を行う(S111)。そして、処理Nが終了すると、処理部25は、処理が全て終了したことを、出力部27に通知する。
一方、アクセラレータ部30の依存データ送受信部74は、S124後、ホスト部20から転送されたデータを受信する(S125)。そして、処理部35は、上述したS110、S111と同様に処理2〜処理Nを行う(S126、S127)。また、処理部35は、処理が全て終了したことを、出力データ送信部36に通知する。
その後、出力データ送信部36は、データ処理後のデータの集合を、ホスト部20に送信する(S128)。
ホスト部20の出力データ受信部26は、アクセラレータ部30から出力データを受信すると(S112)、出力部27に供給する。出力部27は、処理部25の処理後のデータと、アクセラレータ部30から送信された処理後のデータとを出力データとして出力する(S113)。なお、出力部27は、典型的には、入力データに対応する順番で出力データを出力することが好ましい。
(効果)
図12を参照して、本実施の形態に係るデータ処理装置1の効果について説明する。図12は、本実施の形態に係るデータ処理装置1の効果の一例を説明するためのイメージ図である。図12において、横軸は時間を示している。図12に示す例では、第1の実施の形態で説明した図6と同様に、所定の数の入力データの数を(m+n)個とし、(m+n)個の入力データを1つの集合としている。また、ホスト部20に対し、m個のデータを割り当て、アクセラレータ部30に対し、n個のデータを割り当てている。また、処理部25および処理部35は、2つのサブ処理部(処理部(1)、処理部(2))を夫々有しているとする。
本実施の形態に係るデータ処理装置1の依存範囲決定部63および依存範囲決定部73は、夫々、処理部(1)の処理後のデータと依存関係を有する処理部(2)の当該依存関係に基づき、ホスト部20とアクセラレータ部30との間で転送するデータの範囲を決定する。そして、図12に示すとおり、本実施の形態に係るデータ処理装置1では、ホスト部20とアクセラレータ部30との間で中間データの転送が行われる。
ホスト部20の処理部(2)は、データ割当部22がホスト部20に割り当てた入力データの集合と、アクセラレータ部30から受信したデータであって、依存範囲決定部73が決定した範囲のデータと、を用いてデータ処理を行う。また、アクセラレータ部30の処理部(2)は、データ範囲決定部23が決定した範囲のデータと、依存範囲決定部前記第1の依存範囲決定部63が決定した範囲のデータとを用いてデータ処理を行う。
これにより、本実施の形態に係るデータ処理装置1は、第1の実施の形態の効果に加え、各サブ処理部が中間データに対し依存関係を有している場合にも適用できるという効果がある。
(変形例)
本実施の形態の別形態に係るデータ処理装置1は、処理部(2)以外のサブ処理部が、他のサブ処理部の中間データに対して依存関係を有する構成であってもよい。
また、あるサブ処理部が複数の中間データに対して、依存関係を有する構成であってもよい。この場合、本変形例に係るデータ処理装置1は、当該サブ処理部が依存関係を有する中間データの各々を出力するサブ処理部に対して、依存範囲決定部と依存データ送受信部とを備える構成とすることができる。
また、本変形例に係るデータ処理装置1は、あるサブ処理部に対する複数の依存関係をまとめて、依存範囲を決定し、当該サブ処理部がデータ処理を行うように構成してもよい。何れの場合の構成および動作は本実施の形態から明らかである。
<実施の形態3>
次に、本発明の第3の実施の形態について図面を参照して詳細に説明する。本実施の形態では、前述した第1および第2の実施の形態と同様に、データ処理装置1が1つのアクセラレータ部を備えた構成について説明するが、本発明はこれに限定されるものではなく、複数のアクセラレータ部を備える構成であってもよい。なお、説明の便宜上、前述した第1および第2の実施の形態で説明した図面に記載のデータ処理装置1に含まれる部材と同じ機能を有する部材については、同じ符号を付し、その説明を省略する。
前述した第2の実施の形態では、処理1と処理2との間に中間データの転送が生じるが、中間データのデータサイズが大きい場合、転送待ちの時間が発生する場合がある。本実施の形態においては、中間データの転送にかかる時間を考慮し、両ノードにおける空き時間をより少なくするデータ処理装置1について説明する。
(データ処理装置の構成)
図13を参照して、本実施の形態に係るデータ処理装置1の機能について、説明する。図13は、本実施の形態に係るデータ処理装置1の機能構成を示した機能ブロック図である。図13に示すとおり、データ処理装置1は、ホスト部20とアクセラレータ部30とを備えている。
ホスト部20は、入力部21、データ割当部22、データ範囲決定部23、入力データ送信部24、出力データ受信部26、出力部27、依存範囲決定部63、依存データ送受信部64、処理部85および処理選択部88を備えている。また、アクセラレータ部30は、入力データ受信部34、出力データ送信部36、依存範囲決定部73、依存データ送受信部74、処理部95および処理選択部98を備えている。なお、本実施の形態に係るデータ処理装置1のハードウェア構成は、図1に示すデータ処理装置1のハードウェア構成と同様である。
また、本実施の形態に係るデータ処理装置1の処理部(2)は、第2の実施の形態と同様であるとする。つまり、処理部(2)は、(i)当該処理部(2)の処理対象データに対する処理部(1)の処理後のデータと、(ii)当該処理部(2)の処理対象データとは異なる入力データであって、当該処理対象データに先行する入力データに対する処理部(1)の処理後のデータと、に対して、依存関係を有しているとする。
なお、本実施の形態においても、前述した第2の実施の形態と同様に、処理部(2)が、複数の先行データの中間データに対して、依存関係を有していてもよい。また、処理部(2)に依存関係を有する中間データの数が、当該処理部(2)がデータ処理する処理対象データ毎に異なっていてもよい。また、処理部(2)以外のサブ処理部が、先行データの中間データに対して、依存関係を有していてもよい。また、各サブ処理部は、各データ処理の実行中に、依存する中間データの数を変更してもよい。
処理部85は、処理選択部88からの指示およびデータ割当部22の割当結果に基づき、ホスト部20に割り当てられた入力データの集合に対して、データ処理を行う。処理部85は、図13に示すように、1または複数のデータ処理の夫々を行う1または複数のサブ処理部(処理部(1)、処理部(2)、・・・、処理部(N))を有している。本実施の形態においては、処理部85は、N個のサブ処理部を有しているとするが、これに限定されるものではない。
処理選択部88は、処理部85(1)を実行するか、処理部85(2)を実行するかを選択し、選択した方のサブ処理部に対し、データ処理を実行するよう指示する。処理選択部88は、データ割当部22からの通知を受信すると、処理部85(1)に対し、処理1を実行するよう指示する。また、処理選択部88は、依存データ送受信部64からデータを受信したことを示す通知を受け取ると、処理部85(2)に処理2を実行するよう指示する。
なお、処理選択部88は、各処理の実行指示とともに、データ処理に用いるデータを各サブ処理部に供給してもよい。また、処理選択部88は、各サブ処理部に対し、使用するデータの場所を示す情報(例えば、番号など)を通知し、各サブ処理部がデータ処理を行う際に使用するデータを別の手段で供給してもよい。
処理部95は、処理選択部98からの指示に基づき、入力データ受信部34から供給された入力データの集合に対して、データ処理を行う。処理部95は、上述した処理部85と同様に、1または複数のサブ処理部を有している。本実施の形態においては、処理部95は、N個のサブ処理部を有しているとするが、これに限定されるものではない。
処理選択部98は、処理部95(1)を実行するか、処理部95(2)を実行するかを選択し、選択した方のサブ処理部に対し、データ処理を実行するよう指示する。処理選択部98は、入力データ受信部34から入力データを受信すると、処理部95(1)に対し、処理1を実行するよう指示する。また、処理選択部98は、依存データ送受信部74からデータを受信したことを示す通知を受け取ると、処理部95(2)に処理2を実行するよう指示する。
なお、処理選択部98は、各処理の実行指示とともに、データ処理に用いるデータを各サブ処理部に供給してもよい。また、処理選択部98は、各サブ処理部に対し、使用するデータの場所を示す情報(例えば、番号など)を通知し、各サブ処理部がデータ処理を行う際に使用するデータを別の手段で供給してもよい。
(データ処理装置の動作)
次に、図14および図15を参照して、本実施の形態に係るデータ処理装置1の動作について説明する。図14は、本実施の形態に係るデータ処理装置1におけるホスト部20の動作の流れを示すフローチャートである。また、図15は、本実施の形態に係るデータ処理装置1におけるアクセラレータ部30の動作の流れを示すフローチャートである。
まず、ホスト部20の動作について説明する。ホスト部20の入力部21が、データ処理装置1に入力された入力データを読み込む(S141)。その後、データ割当部22は、入力データを読み込んだことを示す通知を入力部21から受け取ると、入力部21が所定の数の入力データを読み込んだか否かを確認する(S142)。
所定の数の入力データが読み込まれた場合(S142にてYES)、データ割当部22は、読み込まれた入力データの集合から、ホスト部20とアクセラレータ部30とに割り当てる入力データの数を決定する(S143)。このとき、データ割当部22は、所定の数の入力データが読み込まれたことを示す通知を処理選択部88に通知する。
上記所定の数の入力データを各ノードに割り当てる際の、各ノードにおける入力データの数は、各ノードの処理の負荷を考慮して、各ノードの負荷が均衡するように決定する。データ割当部22は、入力データをホスト部20とアクセラレータ部30とに割り当てると、当該割当結果をデータ範囲決定部23に通知する。また、データ割当部22は、当該割当結果を通知処理選択部88に通知してもよい。
その後、データ範囲決定部23は、割当結果と、アクセラレータ部30の処理部95がデータ処理に使用するデータとに基づき、アクセラレータ部30に転送する入力データの集合の範囲を決定する(S144)。そして、データ範囲決定部23は、決定した入力データの集合の範囲を入力データ送信部24に通知する。
その後、入力データ送信部24は、データ範囲決定部23が決定した範囲の入力データの集合をアクセラレータ部30に転送する(S145)。
S145の後、処理選択部88は、データ割当部22から所定の数の入力データが読み込まれたことを示す通知を受信すると、処理1を実行するよう、処理部85(1)に指示する(S146)。なお、処理選択部88は、データ割当部22から入力データの集合の割当結果を示す通知を受信し、当該通知の受信後に、処理1を実行するよう、処理部85(1)に指示してもよい。
処理部85(1)は、上記指示を受信すると、処理1を実行する(S147)。処理部85(1)は、処理1が終了すると、当該処理1が終了したことを依存範囲決定部63および処理選択部88に通知する。なお、上記通知には、中間データ1が含まれていてもよい。
依存範囲決定部63は、処理1が終了したことを示す通知を受信すると、中間データ(本実施の形態においては、中間データ1)と依存関係を有する処理部(2)の当該依存関係に基づき、アクセラレータ部30に転送するデータの集合の範囲を決定する(S148)。そして、依存データ送受信部64は、依存範囲決定部63が決定した範囲のデータの集合をアクセラレータ部30に転送する(S149)。
S149の終了後、または、S142にて所定の数の入力データが読み込まれていない場合(S142にてNO)、処理選択部88は、中間データを受信したか否かを確認する(S150)。なお、処理選択部88は、処理部85(1)から処理1が終了したことを示す通知を受信した後に、S150を実行してもよい。
ここで、依存データ送受信部64は、アクセラレータ部30から中間データを受信すると、中間データを受信したことを示す通知を処理選択部88に通知する。処理選択部88は、当該通知の有無を確認することにより、中間データを受信したか否かを確認する。なお、依存データ送受信部64は、受信した中間データを処理部85に供給してもよい。
中間データを受信していない場合(S150にてNO)、S141に戻り、入力部21は、再び入力データを読み込む。中間データを受信している場合(S150にてYES)、処理選択部88は、処理2を実行するよう、処理部85(2)に指示する(S151)。処理部85(2)は、上記指示を受信すると、依存データ送受信部64が受信したデータを用いて、処理2を行う(S152)。
処理部85の処理部(2)の処理2が終了すると、処理部85は後続の処理(処理3〜処理N)を行う(S153)。そして、処理Nが終了すると、処理部85は、処理が全て終了したことを、出力部27に通知する。
その後、ホスト部20の出力データ受信部26は、アクセラレータ部30から出力データを受信すると(S154)、出力部27に供給する。出力部27は、処理部85の処理後のデータと、アクセラレータ部30から送信された処理後のデータとを出力データとして出力する(S155)。なお、出力部27は、典型的には、入力データに対応する順番で出力データを出力することが好ましい。
次に、アクセラレータ部30の動作について説明する。アクセラレータ部30の入力データ受信部34は、ホスト部20から転送された入力データの集合を受信し(S161)、受信した入力データの集合を処理選択部98に供給する。
処理選択部98は、入力データ受信部34から入力データを受信すると、処理部95(1)に対し、処理1を実行するよう指示する(S162)。処理部95(1)は、上記指示を受信すると、処理1を実行する(S163)。処理部95(1)は、処理1が終了すると、当該処理1が終了したことを依存範囲決定部73および処理選択部98に通知する。なお、上記通知には、中間データ1が含まれていてもよい。
依存範囲決定部73は、処理1が終了したことを示す通知を受信すると、中間データ1と依存関係を有する処理部(2)の当該依存関係に基づき、ホスト部20に転送する中間データの集合の範囲を決定する(S164)。そして、依存データ送受信部74は、依存範囲決定部73が決定した範囲の中間データの集合をホスト部20に転送する(S165)。
その後、処理選択部98は、中間データを受信したか否かを確認する(S166)。なお、処理選択部98は、処理部95(1)から処理1が終了したことを示す通知を受信した後に、S166を実行してもよい。
ここで、依存データ送受信部74は、ホスト部20から中間データを受信すると、中間データを受信したことを示す通知を処理選択部98に通知する。処理選択部98は、当該通知の有無を確認することにより、中間データを受信したか否かを確認する。なお、依存データ送受信部74は、受信した中間データを処理部95に供給してもよい。
中間データを受信していない場合(S166にてNO)、S161に戻る。中間データを受信している場合(S166にてYES)、処理選択部98は、処理2を実行するよう、処理部95(2)に指示する(S167)。処理部95(2)は、上記指示を受信すると、依存データ送受信部74が受信したデータを用いて、処理2を行う(S168)。処理部95の処理部(2)の処理2が終了すると、処理部95は後続の処理(処理3〜処理N)を行う(S169)。そして、処理部95は、処理が全て終了したことを、出力データ送信部36に通知する。
その後、出力データ送信部36は、データ処理後のデータの集合を、ホスト部20に送信する(S170)。
なお、以上の動作の説明は、全体の処理が逐次的に行われるように説明したが、複数のスレッドを用いて並列もしくは平行して処理してもよい。
(効果)
以上のように、本実施の形態に係るデータ処理装置1の処理選択部88および処理選択部98は、夫々、受信した通知の種類、即ち、各ノードが受信したデータの種類によって、複数のサブ処理部のうち、何れのサブ処理手段でデータ処理を行うかを選択する。処理選択部88は、例えば、ホスト部20が受信したデータが中間データの場合は、処理部(2)のデータ処理を行い、中間データではない場合、処理部(1)のデータ処理を行う。また、処理選択部98は、例えば、アクセラレータ部30が受信したデータが中間データの集合の場合、処理部(2)のデータ処理を行い、中間データではない場合、処理部(1)のデータ処理を行う。
したがって、ホスト部20とアクセラレータ部30との間で中間データの集合のデータ転送を行っている間に、処理部(1)のデータ処理を実行することができる。これにより、データの割当によってホスト部20とアクセラレータ部30との間の負荷を均衡させながら、両ノードにおける空き時間をより少なくすることができる。よって、データ転送によるオーバーヘッドをより削減することができる。
<実施の形態4>
以下に、本発明の第4の実施の形態について、図面を参照して詳細に説明する。なお、説明の便宜上、前述した第1〜第3の実施の形態で説明した図面に記載のデータ処理装置1に含まれる部材と同じ機能を有する部材については、同じ符号を付している。また、本実施の形態に係るデータ処理装置1のハードウェア構成は、図1に示すデータ処理装置1のハードウェア構成と同様である。
(データ処理装置の構成)
図16を参照して、本実施の形態に係るデータ処理装置1の機能について、説明する。図16は、本実施の形態に係るデータ処理装置1の機能構成を示した機能ブロック図である。図16に示すとおり、データ処理装置1は、ホスト部20とアクセラレータ部30とを備えている。
ホスト部20は、データ割当部22と、データ範囲決定部23と、処理部25とを備えている。また、アクセラレータ部30は、処理部35を備えている。
データ割当部22は、ホスト部20とアクセラレータ部30との負荷が均衡するように、連続して入力される入力データの集合を、ホスト部20とアクセラレータ部30とに割り当てる。
データ範囲決定部23は、データ割当部22の割当結果に基づき、アクセラレータ部30に転送するデータの集合の範囲を決定する。
処理部25は、データ割当部22がホスト部20に割り当てた入力データの集合に対し、データ処理を行う。
処理部35は、データ範囲決定部23が決定した範囲のデータの集合に対し、データ処理を行う。
このように、本実施の形態に係るデータ処理装置1は、データ割当部22が両ノードの負荷が均衡するように入力データを割り当てる。したがって、各ノードのプロセッサの空き時間を少なくすることができるという効果がある。
また、処理部25は、データ割当部22が割り当てた入力データに対してデータ処理を行う。また、処理部35は、データ範囲決定部23が決定した範囲のデータを用いてデータ割当部22が割り当てた入力データに対してデータ処理を行う。つまり、処理部25および処理部35は、異なる入力データに対してデータ処理を行う。したがって、処理部35がデータ処理に使用する入力データの集合のデータ転送は、当該集合に含まれる入力データの処理を開始する際に行われる。したがって、入力データ毎にデータの転送を行う場合に比べ、データ転送によるオーバーヘッドを少なくすることができる。よって、本実施の形態に係るデータ処理装置1は、データ処理を高速に行うことができる。
(実施例)
次に、具体的な実施例を用いて本発明を実施するための形態の動作を説明する。
以下では、画像処理を、アクセラレータを備えた計算機システムで高速に実行する実施例について説明する。本実施例に係る計算機システムは、計算機システムに入力される映像に対して、一連の画像処理を行う。映像は、連続する画像フレーム(以下、単にフレームとも呼ぶ)で構成される。また、映像は、例えば、33ms間隔で計算機システムに入力される。当該画像処理は、例えば、ビデオカメラから入力された映像に対して適用することができる。
図17を参照して、本実施例に係る計算機システム10の機能について、説明する。図17は、本実施例に係る計算機システム10の機能構成を示した機能ブロック図である。
なお、本実施例に係る計算機システム10において、アクセラレータは前述した第1〜第4の実施の形態に係るアクセラレータ部30に相当する。また、フレーム割当部がデータ割当部22に相当し、フレーム範囲決定部がデータ範囲決定部23に相当し、入力フレーム送信部が入力データ送信部24に相当する。また、出力フレーム受信部が出力フレーム受信部26に相当し、ホスト部20の中間結果送受信部が依存データ送受信部64に相当する。更に、入力フレーム受信部が入力データ受信部34に相当し、出力フレーム送信部が出力フレーム送信部36に相当し、アクセラレータの中間結果送受信部が依存データ送受信部74に相当する。このように、前述した第1〜第4の実施の形態で説明した図面に記載のデータ処理装置1に含まれる部材と同じ機能を有する部材については、同じ符号を付している。
本実施形態に係る計算機システム10の処理部105および処理部115は、図17に示すとおり、2つの画像処理部(画像処理部(1)、画像処理部(2))を備えている。各画像処理部の画像処理の処理内容については、本発明に特有なものではないため、説明を省略する。
ここで、図18を参照して、処理部105および処理部115の画像処理に使用する入力フレームについて説明を行う。図18は、処理部105および処理部115が画像処理する入力フレームの一例を説明するための図である。なお、図18において、簡略化のため、フレームの入力を表すいくつかの線の記載を省略している。
図18に示すとおり、本実施例における処理部105および処理部115は、入力フレームiに対して画像処理を行う際、画像処理部(1)で入力フレームiと入力フレームi−1を利用する。また、入力フレームiに対する画像処理部(2)は、入力フレームi−2、入力フレームi−1および入力フレームiに加え、以下の(a)〜(c)を利用する。
(a)処理部105および処理部115が画像処理の対象とする入力フレーム(入力フレームi)(処理対象フレームとも呼ぶ)に対する、画像処理部(1)における画像処理後のフレーム(中間結果1(i)と呼ぶ)。
(b)処理対象フレームの1つ前の入力フレーム(入力フレームi−1)に対する、画像処理部(1)における画像処理後のフレーム(中間結果1(i−1)と呼ぶ)。
(c)処理対象フレームの2つ前の入力フレーム(入力フレームi−2)に対する、画像処理部(1)における画像処理後のフレーム(中間結果1(i−2)と呼ぶ)。
つまり、画像処理部(2)は、以下の(i)〜(vi)に対して、依存関係を有している。
(i)当該画像処理部(2)の処理対象フレーム。
(ii)当該処理対象フレームの1つ前の入力フレーム。
(iii)当該処理対象フレームの2つ前の入力フレーム。
(iv)当該画像処理部(2)の処理対象フレームに対する画像処理部(1)の画像処理後のフレーム。
(v)当該画像処理部(2)の処理対象フレームとは異なる入力フレームであって、当該処理対象フレームの1つ前の入力フレームに対する画像処理部(1)の画像処理後のフレーム。
(vi)当該画像処理部(2)の処理対象フレームとは異なる入力フレームであって、当該処理対象フレームの2つ前の入力フレームに対する画像処理部(1)の画像処理後のフレーム。
次に、本実施例の計算機システム10の動作について説明する。なお、図18に示すように、処理部105および処理部115の画像処理部(1)は、他の画像処理部の結果に対し依存関係を有していないので、複数のフレームに対し、画像処理1を同時に実行することができる。
また、1フレームに対する処理部105および処理部115の画像処理は、各ノードが備えるプロセッサコアのうち4コアを用いて実行した。これは、1フレームに対する画像処理部(1)の画像処理に並列性(たとえば画像をブロックに分割したブロック間の並列性)があることを示している。画像処理に並列性がない場合は、1コアで実行することが望ましいが、当該コア数は本発明に特有なものではないため、説明を省略する。
入力部21が入力フレームを読み込むと、フレーム割当部22は、読み込まれた入力フレームの集合を所定の数蓄積し、当該入力フレームの集合を、ホスト部20とアクセラレータ30との負荷が均衡するように、ホスト部20とアクセラレータ30とに割り当てる。
ここで、図19を参照して、ホスト部20およびアクセラレータ30の処理時間について説明する。図19は、ホスト部20およびアクセラレータ30の夫々のコア数および処理時間を示す図である。図19における各ノードの処理時間は、4コアでの処理時間である。
図19に示すとおり、本実施例におけるホスト部20のコア数は8であり、アクセラレータ30のコア数は32である。また、本実施例におけるアクセラレータ30の4コアでの各画像処理部の処理時間は、ホスト部20の4コアでの各画像処理部の処理時間の2倍である。
処理部105および処理部115は、4コアで実行される。そのため、ホスト部20の全8コアにフレームを割り当てるためには、2フレームが必要となる。一方、アクセラレータ30の全32コアにフレームを割り当てるために、8フレームが必要となる。ここで、図19に示したとおり、ホスト部20の各画像処理部は、アクセラレータ30の各画像処理部よりも、半分の処理時間で画像処理を行う。そのため、フレーム割当部22は、ホスト部20とアクセラレータ30との負荷を均衡させるために、1:2の比率で、ホスト部20とアクセラレータ30とに入力フレームを割り当てる。したがって、フレーム割当部22は、ホスト部20に4フレーム単位、アクセラレータ30に8フレーム単位で、入力フレームを割り当てる。
図20に、上記割り当てを行った場合の割当フレームのイメージを示す。図20は、割当フレームと当該割当フレームの画像処理後のフレームのイメージを示す図である。図20において、フレーム割当部22は、フレーム0〜フレーム11までの12フレームをホスト部20とアクセラレータ30とに割り当てている。
図20における数字は、フレームの番号を示している。図20に示すとおり、ホスト部20に4フレーム(フレーム0〜フレーム3)、アクセラレータ30に8フレーム(フレーム4〜フレーム11)が割り当てられている。ホスト部20は8コアであるため、まず、最初の2フレーム(フレーム0およびフレーム1)に対し、画像処理を行い、その後、次の2フレーム(フレーム2およびフレーム3)に対して、画像処理を行う。
図21を参照して、フレーム割当部22における入力フレームの割当例について説明する。図21は、フレーム割当部22における入力フレームの割当の一例を示す図である。図21に示す割当例では、12フレーム毎に、先頭の4フレームをホスト部20に、次の8フレームをアクセラレータ30に割り当てている。そして、次の4フレームをホスト部20に、更に次の8フレームをアクセラレータ30に割り当てている。
フレーム範囲決定部23は、上記のようにアクセラレータ30に割り当てられた入力フレームの集合と、処理部115が当該入力フレームの集合の画像処理に使用する入力フレームとに基づき、アクセラレータ30に転送する入力フレームの範囲を決定する。したがって、上述のようにフレーム4〜フレーム11の入力フレームが割り当てられたとき、画像処理部(1)は、フレーム4に対する画像処理を行う場合、フレーム4とフレーム3とを利用する。また、画像処理部(2)は、フレーム4に対する画像処理を行う場合、フレーム2〜4を利用する。したがって、フレーム範囲決定部23は、アクセラレータ30に転送する入力フレームの範囲として、フレーム2〜フレーム11の範囲を決定する。そして、入力フレーム送信部24は、フレーム範囲決定部23が決定した範囲の入力フレームの集合を、アクセラレータ30に転送する。なお、フレーム範囲決定部23は、動作を簡略化するために、全部のフレームをアクセラレータ30に送ってもよい。
処理選択部88は、フレーム割当部22から入力フレームの集合の割当結果を示す通知を受信し、当該通知の受信後に、処理部105の画像処理部(1)の画像処理(画像処理1と呼ぶ)を実行するよう、画像処理部(1)に指示する。
また、入力フレーム受信部34は、ホスト部20から転送された入力フレームの集合を受信し、処理選択部98に供給する。処理選択部98は、入力フレーム受信部34から入力フレームを受信すると、処理部115の画像処理部(1)に対し、画像処理1を実行するよう指示する。
ホスト部20の画像処理部(1)は、2フレームの画像処理を同時に行うことができるため、例えば、フレーム0〜フレーム3に対する画像処理1を実行するよう指示されると、フレーム0とフレーム1とに対する画像処理1を行う。
同様に、アクセラレータ30の画像処理部(1)は、8フレームの画像処理を同時に行うことができる。そのため、アクセラレータ30の画像処理部(1)は、例えば、フレーム4〜フレーム11に対する画像処理1を実行するよう指示されると、フレーム4〜フレーム11に対する画像処理1を行う。
ホスト部20の画像処理部(1)は、フレーム0とフレーム1とに対する画像処理1が終わると、フレーム2とフレーム3とに対する画像処理1を行う。
ホスト部20の画像処理1が終了すると、依存範囲決定部63は、画像処理1の処理後のフレーム(中間結果1)と依存関係を有する画像処理部(2)の当該依存関係に基づき、アクセラレータ30に転送するフレームの集合の範囲を決定する。
図18に示すように、本実施例において、画像処理部(2)は、中間結果1のうち、処理対象フレームの2つ前までのフレーム対する、中間結果1を利用する。また、上述したように、入力フレームの集合に含まれる12フレームのうち、先頭4フレームがホスト部20に割り当てられており、後続の8フレームがアクセラレータ30に割り当てられている。したがって、依存範囲決定部63は、2フレーム分の中間結果1を、ホスト部20からアクセラレータ30に転送するフレームの範囲として決定する。
そして、中間結果送受信部64は、依存範囲決定部63が決定した範囲のフレームの集合をアクセラレータ30に転送する。
一方、アクセラレータ30の画像処理1が終了すると、依存範囲決定部73は、画像処理1の処理後のフレーム(中間結果1)と依存関係を有する画像処理部(2)の当該依存関係に基づき、ホスト部20に転送するフレームの集合の範囲を決定する。ホスト部20の依存範囲決定部63と同様に、依存範囲決定部73は、2フレーム分の中間結果1を、アクセラレータ30からホスト部20に転送するフレームの範囲として決定する。
そして、中間結果送受信部74は、依存範囲決定部73が決定した範囲のフレームの集合をホスト部20に転送する。
ここで、フレーム割当部22によって、ホスト部20にフレーム0〜フレーム3が割り当てられ、アクセラレータ30にフレーム4〜フレーム11が割り当てられた場合における、依存範囲決定部63および依存範囲決定部73が決定するフレームの範囲について、更に説明する。
アクセラレータ30の処理部115の画像処理部(2)における画像処理2で利用される中間結果1は、フレーム2およびフレーム3に対する画像処理部(1)の中間結果(中間結果1(2)および中間結果1(3))である。したがって、依存範囲決定部63は、アクセラレータ30に転送するフレームの範囲を、中間結果1(2)および中間結果1(3)の範囲であると決定する。
一方、アクセラレータ30の依存範囲決定部73は、ホスト部20に転送するフレームの範囲を、フレーム10およびフレーム11に対する画像処理部(1)の中間結果(中間結果1(10)および中間結果1(11))の範囲であると決定する。これは、上記中間結果1が、次にホスト部20に割り当てられたフレーム(フレーム12〜フレーム15)に対する画像処理2で利用されるからである。
その後、中間結果送受信部64は、アクセラレータ30から中間結果を受信すると、中間結果を受信したことを示す通知を処理選択部88に通知する。処理選択部88は、当該通知を受け取ると、割り当てられたフレームの集合(フレーム0〜フレーム3)に対し、処理部105の画像処理部(2)の画像処理(画像処理2と呼ぶ)を実行するよう、画像処理部(2)に指示する。中間結果送受信部64が中間結果をアクセラレータ30から受信しているため、画像処理2で利用するフレームは、全て、ホスト部20上に存在する。そのため、画像処理部(2)は、上記フレームを用いて画像処理2を行うことができる。
同様に、中間結果送受信部74は、ホスト部20から中間結果を受信すると、中間結果を受信したことを示す通知を処理選択部98に通知する。処理選択部98は、当該通知を受け取ると、割り当てられたフレームの集合(フレーム4〜フレーム11)に対し、処理部115の画像処理部(2)の画像処理2を実行するよう、画像処理部(2)に指示する。
その後、出力フレーム送信部36は、アクセラレータ30に割り当てられたフレームの集合に対する処理部115の画像処理後のフレームの集合をホスト部20に転送する。そして、出力フレーム受信部26は、出力フレーム送信部36から転送されたフレームの集合を受信する。
出力部27は、ホスト部20に割り当てられたフレームの集合に対する処理105の画像処理後のフレームの集合と、出力フレーム受信部26が受信したフレームの集合とを合わせ、出力フレームの集合として出力する。
本実施例の特徴的な動作として、処理選択部88および処理選択部98が、中間結果を受信したことを示す通知を受け取る前に、入力フレームを所定の数読み込んだことを示す通知を受け取る場合の動作がある。これは、画像処理部(1)1の画像処理時間と、中間結果の転送に要する時間との間に、次の入力フレーム集合が入力された場合に起こる。この場合、処理選択部88および処理選択部98は、夫々、先行する入力フレームの集合に対する画像処理1が完了すると、次の入力フレームの集合に対する画像処理1を行うように画像処理部1に指示をする。これにより中間結果の転送中に、次のフレームの集合に対する画像処理が開始されるため、中間結果の受信待ちのためにプロセッサがアイドルとなる時間を削減することができる。
本動作を繰り返す場合の、ホスト部20およびアクセラレータ30の画像処理のイメージを図22に示す。図22は、ホスト部20およびアクセラレータ30における時間軸に対する画像処理の動作を示すイメージ図である。
図22において、ハッチングの部分はフレームの転送による待ち時間を示している。また、図22における実線は入力フレーム送信部24による入力フレームの転送を示し、破線は中間結果送受信部64または中間結果送受信部74による中間結果の転送を示している。図22に示すように、フレームの転送は、画像処理とオーバーラップして行われるため、データ転送によるオーバーヘッドを削減することができる。
(変形例)
次に、本実施例の変形例について説明する。
フレーム割当部22における入力フレームの割当例の他の例について、図23に説明する。図23は、フレーム割当部22における入力フレームの割当の他の例を示す図である。図23に示す割当例では、12フレーム毎に、ホスト部20に4フレームを割り当て、アクセラレータ30に8フレームを割り当てている。
図23にハッチングの部分は、図21のフレームの割当例と異なる点である。図23では、フレーム割当部22は、2つ目の集合のうち、1つ目の集合のフレームに続く8フレーム(フレーム12〜フレーム19)をアクセラレータ30に割り当て、その次の4フレーム(フレーム20〜フレーム23)をホスト部20に割り当てている。
このように折り返す様に割り当てることによって、連続するフレームを異なるノードに割り当てる回数を削減することができる。したがって、フレームの転送量を削減することができる。
また、フレーム割当部22が上述のようなフレームの割当を行うことにより、依存範囲決定部63および依存範囲決定部73の動作が変わる。例えば、フレーム0〜フレーム11のフレームの集合に対して、アクセラレータ30は、ホスト部20へ中間結果を送る必要がない。なぜならば、フレーム4〜フレーム11に対するアクセラレータ30での画像処理1の中間結果1を利用するフレーム12〜フレーム19は、アクセラレータ30で画像処理されるためである。
なお、上述の実施例では、画像処理部(2)のみが必要とする入力フレーム(上記の例では、フレーム2)をフレーム送信部24で転送したが、当該入力フレームは、中間結果送受信部64で送信するようにしてもよい。この場合、入力フレームの転送を、当該入力フレームを利用する直前まで遅らせることができる。従って、画像処理部(2)が必要とするフレーム数が変更になった場合に余分なフレームを転送せずにすむという効果がある。
また、本実施例の更に別の例として、フレーム割当部22が、12フレームが入力されるのを待たずに、フレームの割り当てを行うという例がある。この場合、フレーム割当部22がホスト部20とアクセラレータ30とに割り当てる入力フレームの集合は上述した実施例と同様であるとする。これにより、先行するフレームに対する画像処理を早く開始することができる。そのため、処理全体のレイテンシを小さくすることができる。また、この場合、中間結果の転送も、12フレーム分を待たずに行うといった方式をとることができる。
また,本実施例の処理選択部88および処理選択部98は、通知を受けた際に対応する画像処理部に対し画像処理の実行を指示したが、常に一定の順番で画像処理部の画像処理を実行するように指示してもよい。処理選択部88および処理選択部98は、例えば、常に、次の(1)〜(4)の順番を繰り返すように、対応する画像処理部に指示してもよい。
(1)ある入力フレームの集合(集合1と呼ぶ)に対する画像処理1
(2)次の入力フレームの集合(集合2と呼ぶ)に対する画像処理1
(3)集合1に対する画像処理2
(4)集合2に対する画像処理2
なお、通知を受けた順番がこの順番と異なる場合、処理選択部88および処理選択部98は,通知を受けても画像処理の実行を指示せずに、順番通りの画像処理を開始できる通知が来るまで待つ。この方法は、何らかの理由で通知の順序が変わった場合にも、常に一定の順序で実行することができる。したがって、常にデータ転送と処理をオーバーラップさせることができるといった効果がある。
上記の実施形態の一部又は全部は、以下の付記のようにも記載されうるが、以下には限られない
(付記1)ホスト部と、アクセラレータ部とを備え、前記ホスト部は、前記ホスト部と前記アクセラレータ部との負荷が均衡するように、連続して入力される入力データの集合を前記ホスト部と前記アクセラレータ部とに割り当てるデータ割当手段と、前記データ割当手段の割当結果に基づき、前記アクセラレータ部に転送するデータの集合の範囲を決定するデータ範囲決定手段と、前記データ割当手段が前記ホスト部に割り当てた前記入力データの集合に対し、データ処理を行う第1の処理手段と、を備え、前記アクセラレータ部は、前記データ範囲決定手段が決定した範囲のデータの集合に対し、データ処理を行う第2の処理手段を備えることを特徴とするデータ処理装置。
(付記2)前記データ範囲決定手段は、前記割当結果と、前記第2の処理手段がデータ処理に使用するデータとに基づき前記データの集合の範囲を決定する、ことを特徴とする付記1に記載のデータ処理装置。
(付記3)前記第1の処理手段は、複数のデータ処理の夫々を行う複数のサブ処理手段を有し、前記データ範囲決定手段は、前記割当結果、並びに、前記複数のサブ処理手段の少なくとも何れかと前記第2の処理手段とがデータ処理に使用するデータに基づき、前記データの範囲を決定する、ことを特徴とする付記1または付記2に記載のデータ処理装置。
(付記4)前記第1の処理手段および前記第2の処理手段は、複数のデータ処理の夫々を行う複数のサブ処理手段を夫々有し、前記ホスト部および前記アクセラレータ部は、夫々、前記複数のサブ処理手段の少なくとも何れかの処理後のデータと依存関係を有するサブ処理手段の当該依存関係に基づき、前記ホスト部と前記アクセラレータ部との間で転送するデータの範囲を決定する第1の依存範囲決定手段と第2の依存範囲決定手段とを備え、前記第1の処理手段における、前記依存関係を有するサブ処理手段は、前記データ割当手段が前記ホスト部に割り当てた前記入力データの集合と、前記第2の依存範囲決定手段が決定した範囲のデータとを用いてデータ処理を行い、前記第2の処理手段における、前記依存関係を有するサブ処理手段は、前記データ範囲決定手段が決定した範囲のデータと、前記第1の依存範囲決定手段が決定した範囲のデータとを用いてデータ処理を行う、ことを特徴とする請求項1または2に記載のデータ処理装置。
(付記5)前記サブ処理手段が依存関係を有する処理後のデータは、当該サブ処理手段がデータ処理を行うデータに対応する入力データとは異なる入力データに対応する処理後のデータであることを特徴とする付記4に記載のデータ処理装置。
(付記6)前記第1の依存範囲決定手段および前記第2の依存範囲決定手段は、更に、前記サブ処理手段が依存関係を有する入力データの数に基づいて、前記ホスト部と前記アクセラレータ部との間で転送するデータの範囲を決定することを特徴とする付記4または5に記載のデータ処理装置。
(付記7)前記ホスト部および前記アクセラレータ部は、夫々、受信したデータの種類によって、前記複数のサブ処理部のうち、何れのサブ処理手段でデータ処理を行うかを選択する処理選択手段を更に備えることを特徴とする付記4から6の何れかに記載のデータ処理装置。
(付記8)前記データ割当手段は、前記第1の処理手段および前記第2の処理手段におけるデータ処理時間と、前記第1の処理手段および前記第2の処理手段で同時に実行可能なデータの数とに基づいて、前記入力データの集合を前記ホスト部と前記アクセラレータ部とに割り当てる、ことを特徴とする付記1から付記7の何れかに記載のデータ処理装置。
(付記9)前記データ割当手段は、前記ホスト部および前記アクセラレータ部のうち、少なくとも一方のノードにおけるサブ処理手段が依存関係を有する処理後のデータが、他方のノードで処理されたデータであるか否かに基づき、当該他方のノードで処理されたデータが少なくなるように、前記入力データの集合を前記ホスト部と前記アクセラレータ部とに割り当てる、ことを特徴とする付記4から付記7、並びに、付記4から付記7の何れかを従属する付記8の何れかに記載のデータ処理装置。
(付記10)前記データ割当手段は、前記ホスト部および前記アクセラレータ部のうち、一方のノードに、前記入力データの集合に含まれる入力データを入力順に所定の数割り当て、他方のノードに、前記入力データの集合に含まれる入力データのうち、当該所定の数割り当てた入力データ以外の入力データを割り当て、更に、前記他方のノードに、前記入力データの集合の次に前記データ処理装置に入力された入力データの集合に含まれる入力データを入力順に所定の数割り当て、前記一方のノードに、前記次の入力データの集合に含まれる入力データのうち、当該他方のノードに所定の数割り当てた入力データ以外の入力データを割り当てることを特徴とする付記4から付記7、付記9、並びに、付記4から付記7の何れかを従属する付記8の何れかに記載のデータ処理装置。
(付記11)前記入力データは、画像フレームであることを特徴とする付記1から付記10の何れかに記載のデータ処理装置。
(付記11)ホスト部とアクセラレータ部とを備えたデータ処理装置のデータ処理方法であって、前記ホスト部と、前記アクセラレータ部との負荷が均衡するように、前記入力データの集合を前記ホスト部と前記アクセラレータ部とに割り当て、前記ホスト部に割り当てた前記入力データの集合に対し、データ処理を行い、割当結果に基づき、前記アクセラレータ部に転送するデータの範囲を決定し、前記決定した範囲のデータの集合に対し、データ処理を行うことを特徴とするデータ処理方法。
(付記12)アクセラレータに接続されたデータ処理制御装置であって、該データ処理制御装置と連続して入力される入力データに対しデータ処理を行う前記アクセラレータとの負荷が均衡するように、前記入力データの集合を該データ処理制御装置と前記アクセラレータとに割り当てるデータ割当手段と、前記データ割当手段の割当結果に基づき、前記アクセラレータに転送するデータの範囲を決定するデータ範囲決定手段と、前記データ割当手段が該データ処理制御装置に割り当てた前記入力データの集合に対し、データ処理を行う処理手段と、を備えることを特徴とするデータ処理制御装置。
(付記13)ホスト部とアクセラレータ部との負荷が均衡するように、連続して入力される入力データの集合を前記ホスト部と前記アクセラレータ部とに割り当てるデータ割当処理と、前記割当結果に基づき、前記アクセラレータ部に転送するデータの集合の範囲を決定するデータ範囲決定処理と、前記ホスト部に割り当てた前記入力データの集合に対するデータ処理を、前記ホスト部で行う第1の処理と、前記決定された範囲のデータの集合に対するデータ処理を、前記アクセラレータ部で行う第2の処理と、をコンピュータに実行させることを特徴とするプログラム。
(付記14)付記13に記載のプログラムを記録した記録媒体。
以上、実施の形態を参照して本願発明を説明したが、本願発明は上記実施の形態に限定されたものではない。本願発明の構成や詳細には、本願発明のスコープ内で当業者が理解し得る様々な変更をすることができる。