以下、図面を参照して本発明に係る実施形態について説明する。以下の図面において、同一又は同様の構成要素について同一の符号を付している。
図1は本発明の一実施形態に係る、ユーザー毎のアプリケーションの利用傾向を収集してデータ処理装置20のハードウェアを自動生成するデータ処理システム100の構成を示すブロック図である。ここで、ユーザー毎のアプリケーションの利用状態又はその傾向(利用傾向)とは、例えば画像処理装置などのデータ処理装置20において、各ユーザー毎の、所定の使用頻度以上の「使用頻度の高い機能の処理」又は「使用頻度の高い処理」などをいう。
本実施形態に係るデータ処理装置20は、書き換え可能なハードウェアである再構成ハードウェア処理部32のFPGAを備えて所定の処理を行い、当該FPGAの回路情報の書き換えに際して、以下の特徴を有する。本実施形態は、他人の履歴情報を利用することにより、ユーザーがよく使う処理の機能のFPGA(ハードウェアアクセラレータ)の処理速度が最短となる最適な状態により早く到達することで処理時間を短縮させることを目的とする。ユーザー毎のアプリケーションの処理の利用傾向を収集してクラウドサーバ装置1に蓄積し、ユーザーの利用頻度に合わせて処理の機能毎のアクセラレータとなるFPGA内部での回路の並列度を調整し予めFPGAの回路情報を生成する。そしてデータ処理装置20で利用が想定されるユーザーに合わせた複数パターンのFPGAの回路情報をクラウドサーバ装置1からダウンロードし、利用するユーザーに合わせてFPGAの回路実装を処理速度を短縮するように自動的に最適化することを特徴とする。ここで、並列度とは、処理を同時に平行して実行できる回路の並列個数をいう。
図1は、ユーザー毎のアプリケーションの処理の利用傾向を収集し、FPGAのハードウェアの回路情報を自動生成するデータ処理システム100において、クラウドサーバ装置1と各データ処理装置20との接続関係の一例について図示する。図1において、クラウドサーバ装置1は、ハードウェア情報制御部10と、ネットワーク接続部11と、データベースメモリ12,13,14と、ハードウェア情報生成部15とを備えて構成される。ユーザー情報管理データベースメモリ12はユーザー情報管理データベース12aを格納し、ハードウェア情報データベースメモリ13はハードウェア情報データベース13aを格納する。また、データ処理結果管理データベースメモリ14はデータ処理結果管理データベース14aを格納する。なお、ハードウェア情報制御部10及びハードウェア情報生成部15は例えばディジタル計算機などのCPUを用いて構成される。
ハードウェア情報制御部10に接続されたネットワーク接続部11は、各データ処理装置20−1〜20−N(Nは複数)にそれぞれ接続されたネットワーク接続部21−1〜21−Nに所定のネットワークを介して接続される。ここで、データ処理装置20−1〜20−Nは総称して符号20を付し、ネットワーク接続部21−1〜21−Nは総称して符号21を付す。本実施形態に係るデータ処理システムは、ネットワークに接続可能なデータ処理装置20が複数N個存在し、それぞれがクラウドサーバ装置1と接続されている。そして、クラウドサーバ装置1は複数のデータ処理装置20のハードウェア情報を管理して利用するユーザー情報に応じてハードウェア情報を更新することを特徴としている。
クラウドサーバ装置1は、データ処理結果管理データベース14a、ハードウェア情報データベース13a、及びユーザー情報管理データベース12aを保持し、それぞれの情報が紐付けられた状態(対応付けられた状態)で保存されている。データ処理装置20からクラウドサーバ装置1に対するハードウェア情報の照会要求に応答して、ハードウェア情報生成部15は以下の比較及び情報生成を行う。クラウドサーバ装置1のユーザー情報管理データベース12aと、データ処理装置20のユーザー情報管理部37(図4)から取得されて上記照会要求に含まれる当該データ処理装置20に関するユーザー情報とを比較し最適化されたハードウェア情報を生成する。そして、ユーザー情報の比較結果に基いて回路の並列度を調整することで処理速度を短縮することができる最適化されたハードウェア情報を生成して提供する。ここで、ユーザー情報とは、例えば図8に示すように、ユーザーの性別、年齢、勤続年数、役職、所属部署などのユーザー属性のほか、使用頻度の高い(所定の頻度以上の)処理、ハードウェア情報識別番号を含む。ユーザー情報管理データベース12aに蓄積されたユーザー情報に新たな利用傾向が見られた場合は、ハードウェア情報生成部15は以下の処理を行う。ユーザー情報に基づいて利用頻度の高い処理の並列度が高くなるように(利用頻度の低い機能の処理の並列度が低くなるように)当該処理の並列度を調整した最適なハードウェア情報を生成してハードウェア情報データベース13aに登録する。
ここで、ユーザー情報管理データベース12aは、例えば、図8に示すユーザー情報である。ユーザー情報管理データベース12aのユーザー情報は、各データ処理装置20−1〜20−Nが記憶する全てのユーザー情報を包含する。また、ハードウェア情報データベース13aは、再構成ハードウェア処理部32にハードウェア情報として書き込む複数のコンフィグレーションデータである。ここで、コンフィグレーションデータとは、処理の利用頻度に応じて最適化された回路構成情報であり、再構成ハードウェア処理部32を構成する回路の情報を含むデータである。また、ハードウェア情報はハードウェア情報生成部15によってユーザー毎に作成されたコンフィグレーションデータであっても良いし、使用頻度の高い処理が共通するユーザーが複数人いる場合は、該ユーザーに共通のコンフィグレーションデータであっても良い。また、データ処理結果管理データベース14aは、例えば、データ処理装置20が所定の処理を実行した場合における該処理に要した時間をハードウェア情報とひも付けた情報である。
なお、図1のクラウドサーバ装置1において、各データベースメモリ12,13,14は、ハードディスクドライブ、ソリッドステートドライブ(SSD)などの所定の記憶手段であってもよい。
図2は図1のクラウドサーバ装置1により実行されるハードウェア情報生成処理の一例であるハードウェア情報の第1の生成処理を示すフローチャートである。
図2において、まず、ステップS1において各データ処理装置20により取得したユーザー情報及びデータ処理結果に基づいてそれぞれユーザー情報管理データベース12a及びデータ処理結果管理データベース14aを更新する。次いで、ステップS2において、ハードウェア情報制御部10は各データベース12a,13a,14aにそれぞれ格納されたユーザー情報、ハードウェア情報及びデータ処理結果の対応関係を照合する。ステップS3では、上記照合の結果、新たな利用傾向があるか否かが判断され、YESのときはステップS4に進む一方、NOのときはステップS1に戻る。ここで、新たな利用傾向があるとは、例えば図8のユーザー毎の使用頻度の高い処理がクラウドサーバ装置1で格納された情報と異なる場合などをいう。例えば、使用頻度の高い処理が共通するユーザーがいる場合、該ユーザーに最適化したハードウェア情報を生成済みであり、該ハードウェア情報を活用できるため、ハードウェア情報生成部15によって新たにハードウェア情報を生成する必要はない。一方、ユーザー情報に今まで登録されたことのない処理が、使用頻度の高い処理として追加された場合、ハードウェア情報生成部15によって新たにハードウェア情報を生成する。ステップS4では、ハードウェア情報生成部15は、ユーザー情報に基づいて利用頻度が高い処理の並列度が高くなるように(一方では、例えば利用頻度が低い処理の並列度が低くなるように)調整した最適なハードウェア情報を生成する。さらに、ステップS5では、ハードウェア情報制御部10は、生成されたハードウェア情報を、ユーザー情報及びデータ処理結果と互いに対応付ける、いわゆる紐付けを行って各データベース12a、13a、14aに格納する。そして、当該情報をすべてのデータ処理装置20に公開してステップS1に戻る。
以上説明したように、図2の第1の生成処理により、収集したユーザー情報とデータ処理結果から新たな利用傾向が見られた際に、ユーザー情報に基づき処理速度を短縮できる最適なハードウェア情報を自動的に生成することができる。
図3は図1のクラウドサーバ装置1により実行されるハードウェア情報生成処理の一例であるハードウェア情報の第2の生成処理を示すフローチャートである。図3の第2の生成処理は、図2の第1の生成処理に比較して、ステップS11〜S14の処理を追加したことを特徴としている。以下、相違点について詳述する。
図3のステップS11において、ハードウェア情報制御部10は、上記生成されたハードウェア情報を一部のデータ処理装置20に公開する。ここで、一部のデータ処理装置20とは、ステップS3で新たな利用傾向があったデータ処理装置20などをいう。次いで、ステップS12において、ハードウェア情報制御部10は、上記一部のデータ処理装置20で実行されたデータ処理結果を取得する。ステップS13において、データ処理結果が例えば実際の処理時間が、所定時間以下又は未満であったといったような良好な結果が得られたか否かが判断される。ステップS13でYESのときはステップS14に進む一方、NOのときはステップS4に戻り、ステップS4からの処理を再度実行する。さらに、ステップS14では、ハードウェア情報制御部10は、データ処理結果が良好であった、ユーザー情報、ハードウェア情報及びデータ処理結果を互いに対応づける、いわゆる紐付けを行って各データベース12a,13a,14aに格納する。そして、当該情報をすべてのデータ処理装置20に公開し、ステップS1に戻る。
以上説明したように、図3の第2の生成処理によれば、収集したユーザー情報とデータ処理結果から新たな利用傾向が見られた際に、ユーザー情報に基づき、ハードウェア情報を自動的に生成することができる。また、この第2の生成処理のように、新たに生成したハードウェア情報は、一部のデータ処理装置20にのみ公開し、例えば、実際の処理時間が所定時間以下又は未満であったといったような良好な結果が得られることを確認する。そして、すべてのデータ処理装置20に公開することで、自動的に生成されたハードウェア情報の品質を確保することも可能である。
図4は図1のデータ処理装置20の詳細構成を示すブロック図である。図4において、データ処理装置20は、処理内容制御部30と、ソフトウェア処理部31と、再構成ハードウェア処理部32と、データ処理結果取得部33と、ハードウェア情報保持部34と、ハードウェア情報制御部35とを備える。データ処理装置20はさらに、処理データ入力部41と、処理データ出力部42と、ユーザー要求入力部36と、ユーザー情報管理部37と、個人認証部43とを備える。なお、処理内容制御部30、ハードウェア情報制御部35及びソフトウェア処理部31、データ処理結果取得部33は例えばディジタル計算機などのCPUを用いて構成される。また、再構成ハードウェア処理部32は例えばFPGA(Field-Programmable Gate Array)を用いてハードウェアを再構成可能に構成される。ここで、ハードウェア情報制御部35はネットワーク接続部21を介してクラウドサーバ装置1(図1)に接続される。また、ハードウェア情報保持部34は所定の記憶手段を用いて構成され、ユーザー情報管理部37は例えばCPUと所定の記憶手段を用いて構成される。また、ユーザー要求入力部36はタッチパネルなどを用いて構成され、個人認証部43は例えばICカードインターフェースとCPUを用いて構成される。さらに、処理データ入力部41と処理データ出力部42はLABやUSB、PCI Expressなどの所定のインターフェースを用いて構成される。
個人認証部43は、ハードウェア情報制御部35と、処理内容制御部30と、ユーザー情報管理部37とに接続される。個人認証部43は、ICカードインターフェースなど用いてユーザーIDを取得することで、データ処理装置20にログインするユーザーを特定し、ユーザーのログインの可否を判断する。また、個人認証部43は、ログインユーザーのユーザー情報をハードウェア情報制御部35部とユーザー情報管理部37に出力する。処理内容制御部30は、ユーザー要求入力部36により入力されたユーザー要求に基づいて、処理データ入力部41からのデータに対して例えば所定の画像処理をソフトウェア処理部31及び再構成ハードウェア処理部32を用いて行う。そして、処理後のデータを処理データ出力部42に出力する。ここで、所定の画像処理とは例えばOCR(Optical Character Reader)処理や、セキュリティを向上させる目的で印刷処理を実行したユーザーのIDやデータ処理装置20の識別番号などを不可視情報として原稿に印刷する不可視情報埋め込み処理などである。ソフトウェア処理部31は処理内容制御部30の制御に基づき上記処理のソフトウェアを格納して再構成ハードウェア処理部32の処理を制御する。再構成ハードウェア処理部32はソフトウェア処理部31のソフトウェアの制御のもとで所定の処理を行って処理結果のデータを処理内容制御部30を介して処理データ出力部42に出力する。ユーザー情報管理部37はユーザー要求入力部36を用いて入力されるユーザー要求の機能の処理を入力して管理し、例えば図8の使用頻度の高い機能の処理を管理して格納して必要に応じてハードウェア情報制御部35に出力する。データ処理結果取得部33は例えば上記処理の実行に係る処理時間などのデータ処理結果を取得してハードウェア情報制御部35に出力する。ハードウェア情報保持部34は例えばハードディスクドライブなどの記憶手段で構成され、当該データ処理装置20のハードウェア情報を保持してハードウェア情報制御部35に出力する。ハードウェア情報制御部35は、ネットワーク接続部21を介してクラウドサーバ装置1と通信を行う。また、ハードウェア情報制御部35は、データ処理装置20にユーザーがログインする度に、ログインユーザーに応じて最適なハードウェア情報を再構成ハードウェア処理部32へ書き込む。このとき、ハードウェア情報制御部35は、ハードウェア情報保持部34で保持されているハードウェア情報にアクセスすることで、再構成ハードウェア処理部32で設定すべきハードウェア構成を決定して更新する。具体的には、ハードウェア情報制御部35は詳細後述する図6のハードウェア情報の取得処理、及び図7のハードウェア情報の書き換え処理を実行する。
図4のデータ処理装置20において、ハードウェア情報制御部35がネットワーク接続部21と接続されてネットワークを介してクラウドサーバ装置1からハードウェア情報を取得することが可能となる。また、データ処理結果取得部33及びユーザー情報管理部37と、ハードウェア情報制御部35とが接続されている。これにより、データ処理結果取得部33及びユーザー情報管理部37からの情報を元に、再構成ハードウェア処理部32の回路情報(ハードウェア情報)を書き換えることが可能になる。また、データ処理結果取得部33及びユーザー情報管理部37の情報をネットワーク接続部21を介してクラウドサーバ装置1に送信することが可能となる。
図5は図4のデータ処理装置20の処理内容制御部30により実行されるユーザー要求及び情報更新処理を示すフローチャートである。
図5のステップS21において、ユーザー要求入力部36においてユーザーの処理の要求があるか否かが判断され、YESのときはステップS22に進む一方、NOのときはステップS23に進む。ステップS22では、再構成ハードウェア処理部32を用いてユーザーの要求処理を実行してステップS21に戻る。ステップS23では、バックグランドでユーザー情報管理部37のユーザー情報を更新する。また、必要に応じてハードウェア情報制御部35を介してハードウェア情報保持部34のハードウェア情報を更新してステップS21に戻る。
以上説明したように、図5のユーザー要求及び情報更新処理によれば、ユーザーの要求がある場合はユーザーの要求に沿った処理を実施し、そうでない場合はユーザー情報とハードウェア情報を更新する。これにより、ユーザーからは特に指示することなく、自動的にクラウドサーバ装置1と連携してハードウェア情報を更新することが可能となる。
図6は図4のデータ処理装置20のハードウェア情報制御部35により実行されるハードウェア情報の取得処理を示すフローチャートである。図6の取得処理では、ユーザーの利用傾向に合わせて再構成ハードウェア処理部32の処理内容を書き換えるために、クラウドサーバ装置1からハードウェア情報を取得するための処理を行う。
図6のステップS31において、データ処理装置20とクラウドサーバ装置1で管理しているユーザー情報を照合する。次いで、ステップS32において、ログインしたユーザーのユーザー情報に適したハードウェア情報がハードウェア情報データベースメモリ13に存在するか否かが判断される。具体的には、例えば図8の「使用頻度の高い処理」に応じて最適な処理部の並列度に変更するハードウェア情報があるか否かが判断される。ステップS32においてYESのときはステップS33に進む一方、NOのときはステップS34に進む。ステップS33では、ログインしたユーザーのユーザー情報に適したハードウェア情報を取得し、ハードウェア情報保持部34に蓄積してステップS34に進む。ステップS34では、ハードウェア情報保持部34に格納されたハードウェア情報を再構成ハードウェア処理部32に書き込んで、当該取得処理を終了する。ステップS32でユーザー情報に適したハードウェア情報がハードウェア情報データベースメモリ13に存在しないと判断したときハードウェア情報保持部34に格納されている、平均的な性能が得られるハードウェア情報を再構成ハードウェア処理部32に書込む。
図6の取得処理により、データ処理装置20とクラウドサーバ装置1でそれぞれ管理しているユーザー情報を照合し、ユーザー情報に適したハードウェア情報をクラウドサーバ装置1から取得することが可能になる。
図7は図4のデータ処理装置20のハードウェア情報制御部35により実行されるハードウェア情報の書き換え処理を示すフローチャートである。
図7のS40において、個人認証部43がユーザーを特定し、データ処理装置20へのログインを許可する。ステップS41において、所定の画像処理に関するユーザー要求を入力し、ステップS42においてユーザー情報とハードウェア情報の照合を行う。ステップS43においてハードウェアの書き換えが必要であるか否かが判断され、YESのときはステップS44に進む一方、NOのときはステップS46に進む。ここで、再構成ハードウェア処理部32に現在書き込まれているハードウェア情報がログインユーザーに最適なハードウェア情報であるか否かを判断する。具体的には、ログインユーザーのユーザー情報にひも付けられたハードウェア情報と、再構成ハードウェア処理部32に現在書き込まれているハードウェア情報とが一致する場合は、ハードウェアを書き換える必要はない。一方、ログインユーザーのユーザー情報にひも付けられたハードウェア情報と再構成ハードウェア処理部32に現在書き込まれているハードウェア情報とが異なる場合は、ハードウェアを書き換える必要がある。ステップS44において、ハードウェア情報を取得済みであるか否かが判断され、YESのときはステップS45に進む一方、NOのときはステップS51に進む。ステップS45では、ユーザーに最適なハードウェア情報の書き換え処理(具体的には、例えば図8の使用頻度に基づく処理部の並列度)を実行する。ステップS46において、再構成ハードウェア処理部32を用いてユーザーの要求処理を実行し、ステップS47でデータ処理時間などのデータ処理結果を取得する。ステップS48では、所定の期待通りのデータ処理時間であるか(所定のしきい値以下のデータ処理時間であるか)判断され、YESのときはステップS49に進む一方、NOのときはステップS50に進む。ステップS49では、ハードウェアの書き換え処理を行ったデータ処理内容に基づきユーザー情報を修正してステップS50に進む。
図7のステップS51において、設計者により最適と考えられる、平均的な性能が得られるハードウェア情報の書き換え処理を実行する。次いで、ステップS52において再構成ハードウェア処理部32を用いてユーザーの要求処理を実行し、ステップS53でデータ処理結果を取得してステップS50に進む。ステップS50では、取得したデータ処理結果と、ハードウェア情報を含むユーザー情報とを紐付けしてクラウドサーバ装置1に送信して当該書き換え処理を終了する。
ここで、ステップS50の処置により、ハードウェア情報と紐付いたデータ処理結果をクラウドサーバ装置1に蓄積することができるようになり、データ処理結果に基づくハードウェア情報を最適化できる。
図7の書き換え処理により、ユーザー要求の入力があった際に、ユーザー情報を元にユーザー属性とハードウェア情報の照合を行い、必要に応じてユーザーに最適な再構成ハードウェア処理部32の回路情報に書き換えることが可能になる。また、クラウドサーバ装置1にユーザー情報及びハードウェア情報が蓄積されていない状態においては、設計者により一般的に最適と考えられる平均的な性能が得られるハードウェア情報の回路情報が利用される。クラウドサーバ装置1にユーザー情報及びハードウェア情報が蓄積されている状態においてはユーザー情報を元にユーザー属性とハードウェア情報の照合を行い、必要に応じてユーザーに最適な再構成ハードウェア処理部32の回路情報に書き換えることができる。
図8は図1のデータ処理装置20におけるユーザー情報の一例を示す表である。なお、ユーザー情報管理データベースメモリ12は、ユーザー情報管理データベース12aとして同様の情報を記憶する。図8において、ユーザー毎に、ユーザーID、ユーザーの性別、年齢、勤続年数、役職、所属部署などのユーザー属性のほか、使用頻度の高い(所定の頻度以上の)処理、ハードウェア情報と紐付けるために用いる情報であるハードウェア情報識別番号を含むユーザー情報を格納する。なお、使用頻度の高い処理とは、再構成ハードウェア処理部32を用いる処理のうち、過去にユーザーが実行した全ての処理の合計回数に占める使用回数の割合が、例えば30%を超える処理である。ここで示しているように、様々なユーザー属性を蓄積し、使用頻度の高い機能の処理と紐付けておくことで、他のユーザーが利用するときに、ユーザー属性を元に参照することで、よく使う機能の処理に最適化されたハードウェア情報を提供することが可能になる。
例えば、所属部署をユーザー属性の判定基準とすることができる。設計部署でユーザーA及びユーザーBがデータ処理装置20での処理を実施し、処理A及び処理Bの最適化されたハードウェア情報が生成されていたとする。そこに、同じ設計部署に所属するユーザーEが初めてデータ処理装置20を利用する際には、ユーザーEは、ユーザーA及びユーザーBがデータ処理装置20を利用した際の情報を元に処理Aと処理Bに最適化されたハードウェア情報を利用することが可能となる。
この他、勤続年数が五年未満のユーザーは処理Bを使う利用傾向にあるなど、複数のユーザー属性を組み合わせた判定基準を設けることで、より特定のユーザー属性に最適化されたハードウェア情報を提供することも可能である。
図9は、図1のデータ処理装置20におけるハードウェア情報の一例を示す表である。なお、ハードウェア情報データベースメモリ13もハードウェア情報データベース13aとして同様の情報を記憶する。図9においては、ハードウェア情報識別番号と、ハードウェア情報識別番号に対応するコンフィグレーションデータを格納する。ここで、コンフィグレーションデータ1は、処理Aの利用頻度の高いユーザーに最適化された回路構成情報である。また、コンフィグレーションデータ2は、処理A、Bの利用頻度の高いユーザーに最適化された回路構成情報である。また、コンフィグレーションデータ3は、処理Cの利用頻度の高いユーザーに最適化された回路構成情報である。また、コンフィグレーションデータ4は、処理A、Cの利用頻度の高いユーザーに最適化された回路構成情報である。また、コンフィグレーションデータ5は、処理Bの利用頻度の高いユーザーに最適化された回路構成情報である。また、コンフィグレーションデータ6は、設計者により最適と考えられる、平均的な性能が得られる回路構成情報である。なお、ハードウェア情報データベースメモリ13は全ての回路構成情報を記憶するが、データ処理装置20はハードウェア情報保持部34の記憶容量が小さい場合は、図9に示すコンフィグレーションデータのうち、一部のコンフィグレーションデータのみを記憶する。ただし、ハードウェア情報保持部34は、記憶容量が小さい場合であっても、コンフィグレーションデータ6を保持するものとする。
図10は図1のデータ処理装置20において最適なハードウェア情報と判定するときの判定基準の例を説明するための処理時間例を示す図である。ここで、図10(a)は最適化前の処理時間例を示す図であり、図10(b)は第1の最適化後の処理時間例を示す図であり、図10(c)は第2の最適化後の処理時間例を示す図である。
最適と判定する基準の1つに、処理時間があげられる。ユーザーが処理Aを頻繁に使用すると想定される場合、処理Aの並列度を上げたハードウェア情報を生成して提供し、実際に利用してもらう。その際に処理時間をデータ処理結果として取得し、事前に測定された図10(a)の最適化前の処理時間と比較することで、最適化が有効であったことを判定する。その後は処理Aを頻繁に使用すると想定されるユーザーに対しては、この最適化されたハードウェア情報を提供することで、処理Aの処理時間を短縮させるようなことが可能となる。
ユーザーが図10(b)の第1の最適化後の場合よりも更に処理Aのみを頻繁に使用すると想定される場合、処理Aの並列度をさらに向上させることが考えられる。しかし、並列度を過度に挙げても性能が向上しない可能性もあり、図10(c)の第2の最適化後2の場合は、第1の最適化後と比べても処理時間がほとんど変わらない。この場合は、並列度を更に向上させた第2の最適化後の場合のほうが、回路面積が大きくなっており、他の処理の並列度が下がっている事になるため、処理Aの並列度は並列度10まで向上させても効果が無いと判定させる。このように処理時間を最適と判定する基準にすることで、ユーザーにとって処理性能が最適化されたハードウェア情報を提供することができる。
図10の例では、処理時間を判定基準としたが、判定基準を変えることで、様々な用途で最適化されたハードウェア情報を提供することができる。例えば、OCRの例で考えると、識別精度を判定基準とすることで、OCRの辞書データを最適化することが可能になる。再構成ハードウェアによるアクセラレータを使った高速なOCRを行う場合、再構成ハードウェアが参照するOCRの辞書データを最適化していくケースが考えられる。再構成ハードウェアによるアクセラレータを使った高速なOCRを行うため、再構成ハードウェアが一度に利用可能なOCRの辞書データを限られた情報量にしている場合、認識率がそれほど高くないことが考えられる。その際、データ処理結果取得部33より、処理された画像データとOCR結果をクラウドサーバ装置1へ送信する。クラウドサーバ装置1ではより膨大な辞書データを用いた正確なOCR処理を行い、データ処理装置20でのOCR結果の識別精度を判定する。認識精度に応じて辞書データを入れ替えたハードウェア情報を生成して提供する。このように識別精度を判定基準として最適化していくことで、ユーザー属性に最適化された辞書データをもつOCRを行うことができる。この場合、ユーザー属性は性別を判定基準とすることなどが考えられる。
図11は、図1のデータ処理装置20におけるデータ処理結果の一例を示す表である。なお、データ処理結果管理データベースメモリ14もデータ処理結果管理データベース14aとして同様のデータ処理結果を記憶する。図11に示すように、ハードウェア情報識別番号毎に、各処理の並列度、各処理に要した処理時間を含む情報を格納する。
図12Aは図1のハードウェア情報生成部15によって生成される、再構成ハードウェア処理部32の第1の構成例を示すブロック図である。また、図12Bは図1のハードウェア情報生成部15によって生成される、再構成ハードウェア処理部32の第2の構成例を示すブロック図である。さらに、図12Cは図1のハードウェア情報生成部15によって生成される、再構成ハードウェア処理部32の第3の構成例を示すブロック図である。
図12A〜図12Cにおいて、再構成ハードウェア処理部32は、データ入力部51と、順次処理A、処理B及び処理Cを行う処理部52,53,54と、データ出力部55とを備えて構成される。図12Aにおいて、処理部52,53,54の並列度はともに「中」に設定されている。図12Bにおいて、処理部52,53,54の並列度は「低」、「高」、「低」に設定されている。図12Cにおいて、処理部52,53,54の並列度は「高」、「低」、「低」に設定されている。ここで、処理部52,53,54における並列度とは、再構成ハードウェア処理部32を構成する回路のうち、該処理部に割り当てられる回路数のことを示している。つまり、並列度が「高」とは、再構成ハードウェア処理部32を構成する回路のうち該処理部に割り当てられている回路数の割合が大きいことを意味し、並列度が「低」とは、回路数の割合が小さいことを意味する。なお、並列度が「中」とは、再構成ハードウェア処理部32を構成する回路のうち該処理部に割り当てられている回路数の割合が並列度「高」の場合よりも小さいが、並列度「小」の場合よりも大きいことを意味する。
ここで、図12Aに示す再構成ハードウェア処理部32の第1の構成例は、設計者により最適と考えられる、平均的な性能が得られるハードウェア情報が書き込んだ場合における構成の一例である。このとき、処理A、B、Cの並列度は全て同じ値に設定することができ、例えば、並列度4に設定することができる。また、図12Bに示す再構成ハードウェア処理部32の第2の構成例は、コンフィグレーションデータ5が書き込まれた場合における構成の一例である。このとき、使用頻度の高い処理である処理Bの並列度は所定の値よりも高く設定され、例えば並列度8に設定される。また、処理A、Cの並列度は、例えば並列度2に設定することができる。また、図12Cに示す再構成ハードウェア処理部32の第3の構成例は、コンフィグレーションデータ1が書き込まれた場合における構成の一例である。このとき、使用頻度の高い処理である処理Aの並列度は所定の値よりも高く設定され、例えば並列度8に設定される。また、処理A、Cの並列度は、例えば並列度2に設定することができる。ここで、所定の値とは、設計者により最適と考えられる、平均的な性能が得られるハードウェア情報における並列度であり、例えば並列度4である。
なお、処理A,B,Cの処理内容は、データ処理装置20で実行する機能によって異なる。例えば、データ処理装置20においてOCR機能を実行する場合、処理AはRGBデータからYMCKデータへの色変換、処理Bは画像から文字を切り出す文字領域切出処理とすることができる。また、処理Cは文字の斜線の傾きや交点の数などの文字の特徴を抽出する特徴抽出処理とすることができる。なお、データ処理装置20において複数の機能を実行可能な場合がある。例えば、不可視情報の埋め込み機能を実行する場合、データ処理装置20は処理A,D,Eを行う。このとき処理Dは画像を縮小する縮小処理、処理Eは印刷を実行したユーザーのIDやデータ処理装置20の識別番号などを不可視情報として画像に埋め込む不可視情報埋込処理とすることができる。データ処理装置20において異なる機能を実行する場合は異なる処理を行うが、色変換処理のように共通する処理を実行する場合がある。このため、OCR機能と不可視情報埋め込み機能を頻繁に使うユーザーの場合、OCR機能と不可視情報埋め込み機能とで共通する処理である処理Aが、使用頻度の高い処理としてユーザー情報に記憶される。
再構成ハードウェア処理部32は、処理の並列度を上げることで、処理を高速化することができるが、その反面、処理の並列度に応じて回路面積を消費するため、すべての処理の並列度を高くすることができない。そのため、並列度を柔軟に変更できるような回路情報を用意しておき、ユーザーの利用傾向に基づいて、ユーザーに最適なハードウェア構成を生成することで、最適化されたハードウェアアクセラレータなどのFPGAを有するデータ処理装置20を提供できる。
上記再構成ハードウェア処理部32の処理部52〜54の並列度を柔軟に変更できるような回路情報を生成する手段であるハードウェア情報生成部15として、OpenCL(登録商標)for FPGAなどを用いて構成することがあげられる。
以上説明したように、本実施形態によれば、ユーザーがよく使う機能のハードウェアアクセラレータの処理速度の最適化までのステップがシステム毎、ユーザー毎に、ゼロから必要になることない。また、他人の履歴情報を利用することにより、ユーザーがよく使う機能の処理速度が最適な状態により早く到達することができる。これにより、従来技術に比較して処理速度の最適化処理を短縮することができるデータ処理システム100を提供することができる。
また、ハードウェア情報生成部15を備えることによって、ハードウェア情報データベース13aに登録されていないハードウェア情報を生成することができるため、想定していない利用傾向にも最適化されたハードウェア情報を提供することができる。
さらに、新たに生成したハードウェア情報を一部のユーザーに公開し、例えば、実際の処理時間が、所定時間以下又は未満であったといったような所定条件を満たす結果が得られることを確認した後ハードウェア情報全ユーザーに公開する。すなわち、ハードウェア情報制御部35を備えたので、全ユーザーに公開するハードウェア情報が、自動的に生成されるハードウェア情報の中から良好な結果が得られるものに限定することができる。
またさらに、ユーザーからのデータ処理装置20に対する要求がない場合、データ処理装置20とクラウドサーバ装置1で管理しているユーザー情報とデータ処理結果を照合し、ユーザー情報に最適なハードウェア情報を予め取得する。これにより、ユーザーからのデータ処理装置20に対する要求が来る前に、あらかじめユーザー情報に最適なハードウェア情報を取得することができる。
また、データ処理装置20で実行された処理のデータ処理結果を取得するデータ処理結果取得部33を備え、ハードウェア情報制御部35は、ハードウェア情報を含むユーザー情報と紐付けた上でネットワーク接続部を介してクラウドサーバ装置1に送信する。従って、ハードウェア情報と紐付いたデータ処理結果をクラウドサーバ装置1に蓄積することができるようになり、データ処理結果に基づくハードウェア情報を最適化できる。
さらに、ハードウェア情報生成部15は、データ処理装置20のユーザー毎の処理の利用傾向に応じて、再構成可能なハードウェア処理部32の回路の並列度を調整してハードウェア情報を生成する。ここで、ハードウェア情報生成部15は、好ましくは、データ処理装置20のユーザー毎の使用頻度が所定値以上の高い機能の処理の並列度が所定値よりも高くなるように再構成可能なハードウェア処理部32の回路の並列度を調整する。さらに、ハードウェア情報生成部15は、データ処理装置20のユーザー毎の使用頻度が所定値以下の低い機能の処理の並列度が所定値よりも低くなるように再構成可能なハードウェア処理部32の回路の並列度を調整してもよい。
またさらに、OpenCL(登録商標)for FPGAを用いて処理の並列度を調整した最適なハードウェア情報を生成するハードウェア情報生成部15を備える。OpenCL(登録商標)for FPGAを使用することで当該手段を容易に実現することが可能になる。
以上の実施形態においては、クラウドサーバ装置1を用いているが、本発明はこれに限らず、クラウドを構成せず、複数のデータ処理装置20が所定のネットワークに接続されたサーバ装置であってもよい。