(57)【要約】【課題】複数の演算装置が混在したデータ処理装置において、データ転送にかかる負荷を軽減し、データ処理時間を短縮する。【解決手段】第１の演算装置２０２と、第１のメモリ２０２と、第２のメモリ２１５を具備する第２の演算装置２０３とを具備し、前記第１の演算装置２０２は、ネットワークを介して受信したデータの属性に応じた処理性能に基づいて、前記データの処理方法を決定し、この決定したデータ処理方法に従って、前記受信データの前記第１のメモリへの蓄積と該蓄積データの前記第２のメモリへの転送を行い、前記第２の演算装置２０３は、前記第２のメモリから前記転送データを読み出し、暗号化処理等を行う。【選択図】  図２
2014026484.tif 000002
【特許請求の範囲】
【請求項１】
第１の演算装置と、第１のメモリと、第２のメモリを具備する第２の演算装置と、を具備するデータ処理装置におけるデータ処理方法であって、
前記第１の演算装置により、
ネットワークを介して受信したデータの属性に応じた処理性能に基づいて、前記データの処理方法を決定し、該決定したデータ処理方法に従って、前記受信データの前記第１のメモリへの蓄積と該蓄積データの前記第２のメモリへの転送を行い、
前記第２の演算装置により、前記第２のメモリから前記転送データを読み出し所定の処理を行う、
ことを特徴とするデータ処理方法。
【請求項２】
前記属性は、前記受信データのデータ量を示す情報を含み、前記所定の処理は前記転送データの暗号化処理を含む、
ことを特徴とする請求項１に記載のデータ処理方法。
【請求項３】
前記データ処理装置は、ネットワークを介してデータ送受信装置と接続されており、
前記ネットワークにおけるネットワークデータ転送速度、前記第１のメモリと前記第２のメモリ間のデータ転送速度、及び、前記転送データのデータ量ごとの前記暗号化処理の速度を記憶する記憶装置を具備し、
前記第１の演算装置により、
前記属性と、前記ネットワーク転送速度、前記データ転送速度及び前記暗号化処理速度に基づいて、複数の前記受信データを前記第１のメモリに蓄積してから前記第２のメモリに転送する第１のデータ処理方法に基づく第１のデータ処理時間と、一つの受信データを前記第１のメモリに蓄積するごとに前記第２のメモリに転送する第２のデータ処理方法に基づく第２のデータ処理時間とを算出し、前記第１のデータ処理時間が前記第２のデータ処理時間より短い場合、前記第１のデータ処理方法を実施し、第１のデータ処理時間が前記第２のデータ処理時間より長い場合、前記第２のデータ処理方法を実施する、
ことを特徴とする請求項２に記載のデータ処理方法。
【請求項４】
前記第１の演算装置はＣＰＵであり、前記第２の演算装置はＧＰＵである、
ことを特徴とする請求項１に記載のデータ処理方法。
【請求項５】
前記データ処理装置は、複数の前記第２の演算装置を具備し、
前記第１の演算装置により、
前記第２の演算装置それぞれにおける前記受信データの属性に応じた処理性能に基づいて、前記データの処理方法を決定し、該決定したデータ処理方法に従って、前記受信データの前記第１のメモリへの蓄積と該蓄積データの前記何れかの第２の演算装置の第２のメモリへの転送を行ない、
前記転送データを受信した第２の演算装置は、前記第２のメモリから該転送データを読み出し暗号化処理を行う、
ことを特徴とする請求項１に記載のデータ処理方法。
【請求項６】
前記属性は、前記受信データのデータ量を示す情報を含み、前記所定の処理は前記転送データの暗号化処理を含む、
ことを特徴とする請求項５に記載のデータ処理方法。
【請求項７】
前記データ処理装置は、前記ネットワークを介してデータ送受信装置と接続されており、
前記データ処理装置は、前記ネットワークにおけるネットワーク転送速度、前記第１のメモリと前記第２のメモリ間のデータ転送速度、前記転送データのデータ量ごとの前記暗号化処理の速度、及び前記第２の演算装置における前記暗号化処理の終了予定時刻を記憶する記憶装置を具備し、
前記第１の演算装置により、
前記属性と、前記ネットワーク転送速度、前記データ転送速度及び前記暗号化処理速度に基づいて、複数の前記受信データを前記第１のメモリに蓄積してから前記第２のメモリに転送する第１のデータ処理方法に基づく第１のデータ処理終了予定時刻と、一つの受信データを前記第１のメモリに蓄積するごとに前記第２のメモリに転送する第２のデータ処理方法に基づく第２のデータ処理終了予定時刻とを算出し、該算出結果に基づいてもっとも処理終了予定時刻の早い第２の演算装置を選択し、該選択した第２の演算装置において、前記第１のデータ処理終了予定時刻が前記第２のデータ処理終了予定時刻より早い場合、前記第１のデータ処理方法を実施し、第１のデータ処理予定時刻が前記第２のデータ処理予定時刻より遅い場合、前記第２のデータ処理方法を実施する、
ことを特徴とする請求項６に記載のデータ処理方法。
【請求項８】
第１の演算装置と、
第１のメモリと、
第２のメモリを具備する第２の演算装置とを具備し、
前記第１の演算装置は、ネットワークを介して受信したデータの属性に応じた処理性能に基づいて、前記データの処理方法を決定し、該決定したデータ処理方法に従って、前記受信データの前記第１のメモリへの蓄積と該蓄積データの前記第２のメモリへの転送を行い、
前記第２の演算装置は、前記第２のメモリから前記転送データを読み出し所定の処理を行う、
ことを特徴とするデータ処理装置。
【請求項９】
前記属性は、前記受信データのデータ量を示す情報を含み、前記所定の処理は前記転送データの暗号化処理を含む、
ことを特徴とする請求項８に記載のデータ処理装置。
【請求項１０】
前記データ処理装置は、前記ネットワークを介してデータ送受信装置と接続されており、
前記データ処理装置は、前記ネットワークにおけるネットワークデータ転送速度、前記第１のメモリと前記第２のメモリ間のデータ転送速度、及び、前記転送データのデータ量ごとの前記暗号化処理の速度を記憶する記憶装置を具備し、
前記第１の演算装置は、
前記属性と、前記ネットワーク転送速度、前記データ転送速度及び前記暗号化処理速度に基づいて、複数の前記受信データを前記第１のメモリに蓄積してから前記第２のメモリに転送する第１のデータ処理方法に基づく第１のデータ処理時間と、一つの受信データを前記第１のメモリに蓄積するごとに前記第２のメモリに転送する第２のデータ処理方法に基づく第２のデータ処理時間とを算出し、前記第１のデータ処理時間が前記第２のデータ処理時間より短い場合、前記第１のデータ処理方法を実施し、第１のデータ処理時間が前記第２のデータ処理時間より長い場合、前記第２のデータ処理方法を実施する、
ことを特徴とする請求項９に記載のデータ処理装置。
【請求項１１】
前記第１の演算装置はＣＰＵであり、前記第２の演算装置はＧＰＵである、
ことを特徴とする請求項８に記載のデータ処理装置。
【請求項１２】
前記データ処理装置は、複数の前記第２の演算装置を具備し、
前記第１の演算装置は、
前記第２の演算装置それぞれにおける前記受信データの属性に応じた処理性能に基づいて、前記データの処理方法を決定し、該決定したデータ処理方法に従って、前記受信データの前記第１のメモリへの蓄積と該蓄積データの前記何れかの第２の演算装置の第２のメモリへの転送を行ない、
前記転送データを受信した第２の演算装置は、前記第２のメモリから該転送データを読み出し前記所定の処理を行う、
ことを特徴とする請求項８に記載のデータ処理装置。
【請求項１３】
前記属性は、前記受信データのデータ量を示す情報を含み、前記所定の処理は前記転送データの暗号化処理を含む、
ことを特徴とする請求項１２に記載のデータ処理装置。
【請求項１４】
前記データ処理装置は、前記ネットワークを介してデータ送受信装置と接続されており、
前記データ処理装置は、前記ネットワークにおけるネットワーク転送速度、前記第１のメモリと前記第２のメモリ間のデータ転送速度、前記転送データのデータ量ごとの前記暗号化処理の速度、及び前記第２の演算装置における前記暗号化処理の終了予定時刻を記憶する記憶装置を具備し、
前記第１の演算装置は、
前記属性と、前記ネットワーク転送速度、前記データ転送速度及び前記暗号化処理速度に基づいて、複数の前記受信データを前記第１のメモリに蓄積してから前記第２のメモリに転送する第１のデータ処理方法に基づく第１のデータ処理終了予定時刻と、一つの受信データを前記第１のメモリに蓄積するごとに前記第２のメモリに転送する第２のデータ処理方法に基づく第２のデータ処理終了予定時刻とを算出し、該算出結果に基づいてもっとも処理終了予定時刻の早い第２の演算装置を選択し、該選択した第２の演算装置において、前記第１のデータ処理終了予定時刻が前記第２のデータ処理終了予定時刻より早い場合、前記第１のデータ処理方法を実施し、第１のデータ処理予定時刻が前記第２のデータ処理予定時刻より遅い場合、前記第２のデータ処理方法を実施する、
ことを特徴とする請求項１３に記載のデータ処理装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、複数の演算装置が混在したデータ処理装置において、データ転送にかかる負荷を軽減し、データ処理時間を短縮できる技術に関する。
【背景技術】
【０００２】
近年、情報化社会の高度化に伴う様々なデータの取り扱いが増加し、これまでにない大量のデータ連携が進展している。プロトコルの異なるサーバ間で効率的にデータを連携させるためには、データ処理装置を介して処理することが多い。データ処理装置は、処理対象データを受信すると、連携先のサーバが処理可能なデータへとデータの変換を行う。データの変換処理として、データの暗号化や、文字コード変換、業務コード変換、ＸＭＬ（Ｅｘｔｅｎｓｉｂｌｅ  Ｍａｒｋｕｐ  Ｌａｎｇｕａｇｅ）形式変換などの処理が存在する。処理するデータ量の増加に伴い、データ処理装置の処理効率化が求められている。
【０００３】
一方、大量のデータを効率的に処理する技術として、ＧＰＵ（Ｇｒａｐｈｉｃｓ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）をグラフィックス処理のみならず汎用計算に利用するＧＰＧＰＵ（Ｇｅｎｅｒａｌ  Ｐｕｒｐｏｓｅ  ＧＰＵ）と呼ばれる技術が、近年注目されている。
【０００４】
ＧＰＵとは、一般的に画像処理を専門とする演算装置であり、ＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）と呼ばれる主演算装置の制御下で用いられる動画信号生成専用の集積回路である。動画像の実時間内での生成は高負荷な演算能力が要求されるが、その多くが定式化された単純な演算の繰り返しであるためハードウェア化に向いており、ＧＰＵを製造しているメーカーから、高速なメモリインタフェース機能と高い画像演算能力を備えた製品が販売されている。
【０００５】
ＧＰＧＰＵは、ＧＰＵを汎用計算に利用しているため、汎用性の高いＣＰＵと比較して、大量のデータを用いて、比較的単純な処理を並列処理することに向いているが、反面、その特性と合わないプログラムには性能を期待できない。
【０００６】
ＧＰＵを汎用計算に用いる場合には、処理対象のデータをＧＰＵ内のメモリに転送し、処理を行う必要がある。処理対象のデータのサイズが大きくなる場合、コピー処理時間も大きくなるため、処理対象データを繰り返し転送することは効率的ではない。
【０００７】
例えば、特許文献１には、ＧＰＵとＣＰＵの負荷状態を推定し、さらに処理対象の特性に基づいて、映像のエンコード処理あるいはトランスコード処理における各処理ステップを、ＧＰＵあるいはＣＰＵのどちらの処理として割り振るかを決定することで、処理負荷を分散し、処理の高速化を可能とする情報処理装置及び情報処理方法が開示されている。
【先行技術文献】
【特許文献】
【０００８】
【特許文献１】特開２０１０−２８７１１０号公報
【発明の概要】
【発明が解決しようとする課題】
【０００９】
特許文献１の技術は、第１の処理単位でＧＰＵあるいはＣＰＵのどちらで処理を実行するかを決定し、以降の処理をＧＰＵあるいはＣＰＵで実行することで、処理の負荷分散を行い処理の高速化を可能としている。しかし、データが次々と送られてくる環境では、送られてくる処理対象データを逐次処理してしまうため、データ転送にかかる負荷が増大し、情報処理装置におけるデータ処理時間が増大してしまうことがある。
【００１０】
本発明は、上記事情に鑑みてなされたものであり、複数の演算装置が混在したデータ処理装置において、データ転送にかかる負荷を軽減し、データ処理時間を短縮できるデータ処理方法及びこれを実施するデータ処理装置を提供することを目的とする。
【課題を解決するための手段】
【００１１】
本発明の代表的な一例は、以下の通りである。すなわち、本発明は、第１の演算装置と、第１のメモリと、第２のメモリを具備する第２の演算装置とを具備し、前記第１の演算装置は、ネットワークを介して受信したデータの属性に応じた処理性能に基づいて、前記データの処理方法を決定し、該決定したデータ処理方法に従って、前記受信データの前記第１のメモリへの蓄積と該蓄積データの前記第２のメモリへの転送を行い、前記第２の演算装置２０３は、前記第２のメモリから前記転送データを読み出し所定の処理を行うことを特徴とする。
【発明の効果】
【００１２】
本発明によれば、処理対象データを処理に最適なデータ量になるまで蓄積してから転送するため、複数の演算装置が混在したデータ処理装置において、データ転送にかかる負荷を軽減し、データ処理時間を短縮できる。
【図面の簡単な説明】
【００１３】
【図１】本発明の実施例１に係るデータ処理システムの構成例を示す図である。
【図２】本発明の実施例１に係るデータ処理装置１０２のハードウェア構成例を示す図である。
【図３】本発明の実施例１に係る処理速度データの一例を示す図である。
【図４】本発明の実施例１に係るメモリ転送速度データの一例を示す図である。
【図５】本発明の実施例１に係るネットワーク転送速度データの一例を示す図である。
【図６】本発明の実施例１に係るデータ処理装置１０２における情報処理を示すフローチャートである。
【図７】本発明の実施例１に係るデータ処理システムにおける処理シーケンスを示す図である。
【図８】本発明の実施例１に係る一つの処理対象データを受信するごとに転送する場合の処理シーケンスを表した図である。
【図９】本発明の実施例２に係るデータ処理装置１０２のハードウェア構成例を示す図である。
【図１０】本発明の実施例２に係る処理速度データの一例を示す図である。
【図１１】本発明の実施例２に係るメモリ転送速度データの一例を示す図である。
【図１２】本発明の実施例２に係る処理状態データの一例を示す図である。
【図１３】本発明の実施例２に係る情報処理を示すフローチャートである。
【図１４】本発明の実施例３に係るデータ処理システムの構成例を示す図である。
【図１５】本発明の実施例３に係るネットワーク速度データの一例を示す図である。
【発明を実施するための形態】
【００１４】
ＧＰＵは多くのコアを持っているため、大量データの並列処理を高速に行うことができる。しかし、ＧＰＵで処理を行うためには、ＧＰＵ内のメモリ（以下、ＧＰＵメモリと記す）に処理対象のデータを転送する必要があり、そのデータ転送に時間を要するという問題がある。サイズが小さなデータ、あるいはデータ量が少ないデータを次々と転送するよりは、ある程度のデータサイズ（データ量）になるまでデータをメインメモリに蓄積し、一括してＧＰＵメモリに転送することで、ＧＰＵによる処理を効率化することが可能となる。そこで、本実施形態では、処理対象データを処理に最適なデータ量になるまでメインメモリに蓄積し、その蓄積データを一括してＧＰＵメモリに転送し、暗号化処理を行うデータ処理システムを説明する。なお、本実施形態では、データ処理として、暗号化処理を行う場合のデータ処理システムについて説明する。データ処理は暗号化処理に限ったものではなく、例えば、文字コードの変換処理や、データフォーマットの変換処理、圧縮処理等を用いても良い。また、本実施形態では、データ処理装置が具備する複数の演算装置として、ＣＰＵとＧＰＵを例にとって説明するが、その他の演算装置であっても良い。
【００１５】
本実施形態では、データの蓄積判定処理により、処理対象データを処理に最適なデータ量になるまでデータ処理装置内のメモリに蓄積してからＧＰＵメモリに転送するか、一つの処理対象データをデータ処理装置内のメモリに蓄積するごとにＧＰＵメモリに転送するかを決定する。実施例１では、この点に着目し、速度データに基づくデータ蓄積判定処理について説明する。
【００１６】
実施例２では、複数のＣＰＵやＧＰＵを備えた場合のデータ蓄積判定処理について説明する。
【００１７】
実施例３では、複数のデータ送信装置や複数のデータ受信装置を備えた場合のデータ蓄積判定処理について説明する。
【実施例１】
【００１８】
図１は、本発明の実施例１に係るデータ処理システムの構成例を示す図である。実施例１に係るデータ処理システムは、処理対象データとその属性を送信するデータ送信装置１０１と、データ送信装置１０１が送信した処理対象データを受信し、処理を行うデータ処理装置１０２と、データ処理装置１０２が送信した処理結果データを受信するデータ受信装置１０３と、を含んで構成される。各装置間は、ネットワークを介して相互に接続される。
【００１９】
データ送信装置１０１は、処理対象のデータが格納された処理対象データベース（以下、「データベース」は「ＤＢ」と記す）１０４と、処理対象データＤＢ１０４に格納されている処理対象データの属性を作成する属性作成部１０５と、処理対象データＤＢ１０４に格納されている処理対象データ及び属性作成部１０５が作成した処理対象データの属性をデータ処理装置１０２に送信するデータ送信部１０６と、から構成される。なお、属性とは、処理対象データの性質（データサイズ、データ作成日、データ作成者、データフォーマット、データの価値等）や、処理対象データの処理方法（暗号化処理、フォーマット変換処理等）、データ送信装置１０１の性質（データ送信装置１０１の優先度、データ送信装置の処理能力等）を表すものである。本実施例では、属性として、処理対象データのデータサイズを用いる。
【００２０】
詳細を後述するが、データ処理装置１０２は、ＣＰＵ、ＧＰＵ、ＣＰＵ及びＧＰＵが実行する各種プログラムを記憶するメインメモリ、プログラム実行時に使用する各種データを記憶する記憶装置等を具備する。データ処理装置１０２は、データ送信装置１０１から処理対象データ及びその属性を受信するデータ受信部１０９と、データ受信部１０９が受信した属性、及び速度データＤＢ１０７に格納されている速度データから、処理対象データを処理に最適なデータ量になるまでデータ処理装置１０２内のメインメモリに蓄積してからＧＰＵメモリに転送するか、一つの処理対象データをデータ処理装置１０２内のメモリに蓄積するごとにＧＰＵメモリに転送するかを判定する蓄積判定部１０８と、蓄積判定部１０８の判定結果を受け、データ受信部１０９が受信した処理対象データに対して暗号化処理を実行する処理実行部１１１と、処理実行部１１１が処理した処理結果を、データ受信装置１０３に送信するデータ送信部１１０と、から構成される。なお、速度データＤＢ１０７の詳細について図２を用いて後述する。
【００２１】
データ受信装置１０３は、データ処理装置１０２から処理結果を受信するデータ受信部１１２と、データ受信部１１２が受信した処理結果を格納する、処理結果データＤＢ１１３と、から構成される。
【００２２】
図２は、最適なデータ量になるまでデータを蓄積し、処理を実行するデータ処理装置１０２のハードウェア構成例を示す図である。データ処理装置１０２は、ＣＰＵ２０２と、ＧＰＵ２０３と、ＣＰＵ２０２及びＧＰＵ２０３が処理を実行するために必要なデータを格納するためのメインメモリ２０４と、大量のデータを記憶する容量を持つハードディスクやフラッシュメモリなどの記憶装置２０５と、他装置と通信を行なうためのＩＦ（インタフェース）２０１と、キーボード、ディスプレイなどの入出力を行うための入出力装置２０６と、これらの各装置を接続する通信路（バス）２０７とを備えたコンピュータである。なお、通信路２０７は、例えば、バスやケーブルなどの情報伝達媒体である。
【００２３】
ＣＰＵ２０２は、メインメモリ２０４に格納されたデータ受信プログラム２０８を実行することにより、データ送信装置１０１が送信する処理対象データ及びその属性を受信する。また、ＣＰＵ２０２は、データ送信プログラム２０９を実行することにより、処理結果データをデータ受信装置１０３に送信する。また、ＣＰＵ２０２は、蓄積判定プログラム２１０を実行することにより、処理対象データを処理に最適なデータ量になるまでメインメモリ２０４に蓄積してからＧＰＵメモリ２１５に転送するか、一つの処理対象データをメインメモリ２０４に蓄積するごとにＧＰＵメモリ２１５に転送するかを判定する。また、ＣＰＵ２０２は、暗号化プログラム（処理実行プログラム）２１１を実行することにより、処理対象データの暗号化処理を行う。なお、暗号化プログラム２１１は、ＣＰＵ２０２によって実行されると、ＧＰＵ２０３を用いた暗号化処理を行う。
【００２４】
ＧＰＵ２０３は、ＧＰＵ２０３が処理を実行するために必要なデータを格納するためのＧＰＵメモリ２１５を備える。
【００２５】
記憶装置２０５には、データ量と暗号化処理速度との関係を示す処理速度データ２１２と、メインメモリ２０４とＧＰＵメモリ２１５間でのデータ転送速度を示すメモリ転送速度データ２１３と、データ送信装置１０１とデータ処理装置１０２間、及びデータ処理装置１０２とデータ受信装置１０３間のデータ転送速度を示すネットワーク転送速度データ２１４が格納されている。速度データＤＢ１０７は、処理速度データ２１２、メモリ転送速度データ２１３、ネットワーク転送速度データ２１４を含んで構成される。
【００２６】
上記の各プログラムやデータは、あらかじめメモリ２０４または記憶装置２０５に格納されていてもよいし、必要な時に、入出力装置２０６からまたは、ＩＦ２０１を介して他の装置から、インストール（ロード）されても良い。
【００２７】
図３は、処理速度データ２１２の一例を示す図である。図３に示すように、処理速度データ２１２は、データ量３０１と、処理速度３０２とを含む。データ量３０１は、暗号化プログラム２１１が処理するデータ量を表し、処理速度３０２は、暗号化プログラム２１１がデータ量３０１のデータを暗号化処理する際の処理速度を表す。
【００２８】
図３を用いて具体的に説明する。例えば、データ量３０１が「５０ＭＢ」、処理速度３０２が「５０ＭＢ／ｓｅｃ」の処理速度データ２１２は、ＧＰＵ２０３が、暗号化プログラム２１１を実行することにより、５０ＭＢのデータを１秒間で暗号化できることを表す。
【００２９】
なお、処理速度データ２１２は、暗号化プログラム２１１を用いてデータ量を変化させながら、処理時間を計測することにより求めることができる。処理時間は、データ処理装置１０２で予め算出していることが望ましいが、データ処理装置１０２上で事前の計測が難しい場合は、別の装置上で処理時間を計測して算出した処理速度データ２１２を設定しても良い。また、処理速度データ２１２の各情報は、管理者が必要に応じて、入力または更新しても良い。
【００３０】
処理速度データ２１２は、ＣＰＵ２０２により実行される蓄積判定プログラム２１０が処理対象データを処理に最適なデータ量になるまでメインメモリ２０４に蓄積してからＧＰＵメモリ２１５に転送するか、一つの処理対象データをメインメモリ２０４に蓄積するごとにＧＰＵメモリ２１５に転送するかを判定する際に利用される。蓄積判定プログラム２１０の具体的な処理については、図６を用いて後述する。
【００３１】
図４は、メモリ転送速度データ２１３の一例を示す図である。図４に示すように、メモリ転送速度データ２１３は、転送元メモリ４０１と、転送先メモリ４０２と、転送速度４０３とを含む。メモリ転送速度データ２１３は、転送元メモリ４０１から転送先メモリ４０２にデータを転送する際の転送速度が転送速度４０３であることを表す。
【００３２】
図４を用いて具体的に説明する。例えば、転送元メモリ４０１が「メインメモリ」、転送先メモリ４０２が「ＧＰＵメモリ」、転送速度４０３が「４００ＭＢ／ｓｅｃ」のメモリ転送速度データ２１３は、データ処理装置１０２のメインメモリ２０４から、ＧＰＵメモリ２１５へ、１秒間に４００ＭＢのデータを転送できることを表す。
【００３３】
なお、メモリ転送速度データ２１３は、データ転送にかかる処理時間を計測することにより求めることができる。処理時間は、データ処理装置１０２で予め算出していることが望ましいが、データ処理装置１０２上で事前の計測が難しい場合は、別の装置上で処理時間を計測して算出したメモリ転送速度データ２１３を設定しても良い。また、メモリ転送速度データ２１３の各情報は、管理者が必要に応じて、入力または更新しても良い。
【００３４】
メモリ転送速度データ２１３は、ＣＰＵ２０２により実行される蓄積判定プログラム２１０が処理対象データを処理に最適なデータ量になるまでメインメモリ２０４に蓄積してからＧＰＵメモリ２１５に転送するか、一つの処理対象データをメインメモリ２０４に蓄積するごとにＧＰＵメモリ２１５に転送するかを判定する際に利用される。蓄積判定プログラム２１０の具体的な処理については、図６を用いて後述する。
【００３５】
図５は、ネットワーク転送速度データ２１４の一例を示す図である。図５に示すように、ネットワーク転送速度データ２１４は、転送元装置５０１と、転送先装置５０２と、転送速度５０３とを含む。ネットワーク転送速度データ２１４は、転送元装置５０１から転送先装置５０２にデータを転送する際のネットワーク転送速度が転送速度５０３であることを表す。
【００３６】
図５を用いて具体的に説明する。例えば、転送元装置５０１が「データ送信装置」、転送先装置５０２が「データ処理装置」、転送速度５０３が「２００ＭＢ／ｓｅｃ」のネットワーク転送速度データは、データ送信装置１０１から、データ処理装置１０２へ、１秒間に２００ＭＢのデータをネットワークを介して転送できることを表す。
【００３７】
なお、ネットワーク転送速度データ２１４は、ネットワークを介したデータ転送にかかる処理時間を計測することにより求めることができる。処理時間の計測は、転送元装置と転送先装置間で予め算出していることが望ましい。また、ネットワーク転送速度データ２１４の各情報は、管理者が必要に応じて、入力または更新しても良い。
【００３８】
ネットワーク転送速度データ２１４は、ＣＰＵ２０２により実行される蓄積判定プログラム２１０がデータを蓄積するか否かを判定する際に利用される。蓄積判定プログラム２１０の具体的な処理については、図６を用いて後述する。
【００３９】
続いて、データ送信装置１０１がデータ処理装置１０２に処理対象データを送信する処理について説明する。
【００４０】
データ送信装置１０１は、処理対象データＤＢ１０４（図１）に格納された処理対象データに属性を付与し、付与した属性と、処理対象データとを、データ処理装置１０２にネットワークを介して送信する。
【００４１】
以下、具体例を用いて説明する。例えば、データ送信装置１０１が、１００ＭＢのデータと、１００ＭＢのデータと、を処理対象データとして、処理対象データＤＢ１０４に格納しているとする。データ送信部１０６は、これら処理対象データをデータ処理装置１０２に送信する際に、属性作成部１０５に処理対象データの属性作成を依頼する。依頼を受けた属性作成部１０５は、処理対象データを確認し、属性を作成する。この場合、処理対象データは１００ＭＢのデータと、１００ＭＢのデータであるので、属性として、「１００ＭＢ、１００ＭＢ」を作成し、データ送信部１０６に、作成した属性を通知する。
【００４２】
データ送信部１０６は、属性作成部１０５が作成した属性「１００ＭＢ、１００ＭＢ」と、処理対象データ（１００ＭＢのデータと、１００ＭＢのデータ）とを、ネットワークを介してデータ処理装置１０２に送信する。
【００４３】
続いて、データ処理装置１０２のデータ受信プログラム２０８が、データ送信装置１０１が送信した処理対象データ及びその属性を、ネットワークを介してＩＦ２０１から受信し、蓄積判定プログラム２１０が、受信した処理対象データを蓄積するか否かの判断を行い、暗号化プログラム２１１が、受信した処理対象データに暗号化処理を行い、データ送信プログラム２０９が、処理結果データをＩＦ２０１を介してネットワークに送信する処理について説明する。
【００４４】
図６は、データ処理装置１０２における処理を示すフローチャートである。図６に示すように、データ受信を行うデータ受信プログラム２０８は、ＣＰＵ２０２により実行され、データ送信装置１０１が送信する処理対象データ及びその属性を、ＩＦ２０１を介してネットワークから受信する（ステップ６０１）。ここで、属性とは、処理対象データのデータサイズを含む。
【００４５】
なお、データ受信プログラム２０８は、属性を受信すると、処理対象データを処理に最適なデータ量になるまでメインメモリ２０４に蓄積してからＧＰＵメモリ２１５に転送するか、一つの処理対象データをメインメモリ２０４に蓄積するごとにＧＰＵメモリ２１５に転送するかを判定する蓄積判定プログラム２１０を起動する。このとき、処理対象データの受信は完了している必要はなく、処理対象データの受信と並行して、データを蓄積するか否かの判定を行う。
【００４６】
蓄積判定プログラム２１０は、ＣＰＵ２０２により実行され、記憶装置２０５から速度データ２１２の情報を取得する（ステップ６０２）。ここで、速度データとは、処理速度データ２１２と、メモリ転送速度データ２１３と、ネットワーク転送速度データ２１４とを含む。
【００４７】
蓄積判定プログラム２１０は、ステップ６０１で取得した属性と、ステップ６０２で取得した速度データの情報とから、処理対象データを処理に最適なデータ量になるまでメインメモリ２０４に蓄積してからＧＰＵメモリ２１５に転送する場合の処理時間と、一つの処理対象データをメインメモリ２０４に蓄積するごとにＧＰＵメモリ２１５に転送する場合の処理時間とを算出する（ステップ６０３）。
【００４８】
なお、処理対象データを処理に最適なデータ量になるまでメインメモリ２０４に蓄積してからＧＰＵメモリ２１５に転送する場合の処理時間算出処理については図７を用いて、一つの処理対象データをメインメモリ２０４に蓄積するごとにＧＰＵメモリ２１５に転送する場合の処理時間算出処理については図８を用いて後述する。
【００４９】
蓄積判定プログラム２１０は、ステップ６０３で算出した、処理対象データを処理に最適なデータ量になるまでメインメモリ２０４に蓄積してからＧＰＵメモリ２１５に転送する場合の処理時間と、一つの処理対象データをメインメモリ２０４に蓄積するごとに転送する場合の処理時間とを比較し（ステップ６０４）、処理対象データを処理に最適なデータ量になるまでメインメモリ２０４に蓄積してからＧＰＵメモリ２１５に転送する場合の処理時間の方が短ければ（ステップ６０４でＹＥＳ）、暗号化プログラム２１１を起動し、ステップ６０５に進み、一つの処理対象データをメインメモリ２０４に蓄積するごとに転送する場合の処理時間の方が長ければ（ステップ６０４でＮＯ）、暗号化プログラム２１１を起動し、ステップ６０６に進む。
【００５０】
ステップ６０５において、暗号化プログラム２１１は、ステップ６０１で受信した処理対象データを処理に最適なデータ量になるまでメインメモリ２０４に蓄積してからＧＰＵメモリ２１５に転送し、暗号化処理を行い、データ送信プログラム２０９を起動する。具体的には、暗号化プログラム２１１は、処理対象データをメインメモリ２０４に蓄積していき、処理に最適なデータ量のメインメモリ２０４への蓄積が完了すると、蓄積した処理対象データをＧＰＵメモリ２１５に転送し、ＧＰＵ２０３を用いて暗号化処理を行う。暗号化プログラム２１１は、暗号化処理が完了すると、暗号化されたデータをＧＰＵメモリ２１５からメインメモリ２０４に転送する。なお、処理に最適なデータ量の算出処理は図７を用いて後述する。
【００５１】
ステップ６０６において、暗号化プログラム２１１は、ステップ６０１で一つの処理対象データをメインメモリ２０４に蓄積するごとにＧＰＵメモリ２１５に転送し、暗号化処理を行い、データ送信プログラム２０９を起動する。具体的には、暗号化プログラム２１１は、処理対象データをメインメモリ２０４に蓄積していき、一つ目の処理対象データの受信を完了すると、この処理対象データをＧＰＵメモリ２１５に転送し、ＧＰＵ２０３を用いて暗号化処理を行う。暗号化プログラム２１１は、暗号化処理が完了すると、暗号化されたデータをＧＰＵメモリ２１５からメインメモリ２０４に転送する。暗号化プログラム２１１は、２つ目の処理対象データの受信を完了すると、処理対象データをＧＰＵメモリ２１５に転送し、ＧＰＵ２０３を用いて暗号化処理を行う。暗号化プログラム２１１は、暗号化処理が完了すると、暗号化されたデータをＧＰＵメモリ２１５からメインメモリ２０４に転送する。以下同様に、一つの処理対象データをメインメモリ２０４に蓄積するごとに、処理対象データをＧＰＵメモリ２１５に転送し、ＧＰＵ２０３を用いて暗号化処理を行う。
【００５２】
データ送信プログラム２０９は、ＣＰＵ２０２により実行され、ステップ６０５、またはステップ６０６で暗号化処理された処理結果データ（暗号化データ）を、ＩＦ２０１を介してネットワークに送信し、処理を終了する（ステップ６０７）。
【００５３】
ステップ６０１からステップ６０７までの実行処理の流れを、具体例を用いて説明する。例えば、データ受信プログラム２０８が、データ送信装置１０１が送信した、属性「１００ＭＢ、１００ＭＢ」と、処理対象データ（１００ＭＢのデータと、１００ＭＢのデータ）とを受信した場合、属性「１００ＭＢ、１００ＭＢ」の受信を完了した段階で、蓄積判定プログラム２１０を起動する（ステップ６０１）。
【００５４】
蓄積判定プログラム２１０は、記憶装置２０５に格納された、処理速度データ２１２と、メモリ転送速度データ２１３と、ネットワーク転送速度データ２１４とを取得する（ステップ６０２）。
【００５５】
蓄積判定プログラム２１０は、ステップ６０１で取得した属性「１００ＭＢ、１００ＭＢ」と、ステップ６０２で取得した処理速度データ２１２と、メモリ転送速度データ２１３と、ネットワーク転送速度データ２１４とから、処理対象データを処理に最適なデータ量になるまでメインメモリ２０４に蓄積してからＧＰＵメモリ２１５に転送する場合の処理時間と、一つの処理対象データをメインメモリ２０４に蓄積するごとにＧＰＵメモリ２１５に転送する場合の処理時間とを算出する（ステップ６０３）。
【００５６】
ここで、処理対象データを処理に最適なデータ量になるまでメインメモリ２０４に蓄積してからＧＰＵメモリ２１５に転送する場合の処理時間算出方法を図７を用いて説明する。図７は、処理対象データを処理に最適なデータ量になるまでメインメモリ２０４に蓄積してからＧＰＵメモリ２１５に転送する場合の処理シーケンスを表した図である。なお、処理対象データを処理に最適なデータ量になるまでメインメモリ２０４に蓄積してからＧＰＵメモリ２１５に転送する場合、メインメモリ２０４に蓄積する処理対象データの組み合わせごとに処理時間算出を行い、もっとも処理時間が短い処理対象データの組み合わせによるデータ量を最適な処理データ量とする。具体的には、受信した処理対象データのデータ量が、受信順に１００ＭＢ、１５０ＭＢ、２００ＭＢの場合、蓄積判定プログラム２１０は、まず、１００ＭＢと１５０ＭＢのデータをメインメモリ２０４に蓄積してからＧＰＵメモリ２１５に転送する場合の処理時間と、１００ＭＢと１５０ＭＢと２００ＭＢのデータをメインメモリ２０４に蓄積してからＧＰＵメモリ２１５に転送を行う場合の処理時間とを算出し、もっとも処理時間が短い処理対象データの組み合わせによるデータ量を最適な処理データ量とする。
【００５７】
以下では、説明を簡単にするため、処理対象データが、１００ＭＢと１００ＭＢの場合を例にとり説明する。なお、この場合、メインメモリ２０４に蓄積する処理対象データの組み合わせは、１００ＭＢと１００ＭＢのデータの１通りとなる。  図７に示すように、蓄積判定プログラム２１０は、ネットワーク転送速度データ２１４（図５）から、データ送信装置１０１と、データ処理装置１０２間の転送速度５０３を取得し、ネットワーク転送に要する時間を算出する。具体的には、蓄積判定プログラム２１０は、ネットワーク転送速度データ２１４から、転送元装置５０１がステップ６０１で取得した属性情報の送信元の「データ送信装置」で転送先装置５０２が「データ処理装置」、に該当する転送速度５０３を取得し、ネットワーク転送に要する時間を算出する。このとき、転送元装置５０１が「データ送信装置」、転送先装置５０２が「データ処理装置」の転送速度５０３は、「２００ＭＢ／ｓｅｃ」であるので、１００ＭＢと、１００ＭＢとの計２００ＭＢの処理対象データを蓄積してから転送する場合のネットワーク転送に要する時間は「１．０ｓｅｃ（＝２００ＭＢ÷２００ＭＢ）」となる。
【００５８】
蓄積判定プログラム２１０は、メモリ転送速度データ２１３（図４）から、メインメモリ２０４と、ＧＰＵメモリ２１５間の転送速度４０３を取得し、処理対象データを処理に最適なデータ量になるまでメインメモリ２０４に蓄積してからＧＰＵメモリ２１５に転送する場合のメモリ転送に要する時間を算出する。具体的には、蓄積判定プログラム２１０は、メモリ転送速度データ２１３から、転送元メモリ４０１が「メインメモリ」で転送先メモリ４０２が「ＧＰＵメモリ」に該当する転送速度４０３を取得し、メモリ転送に要する時間を算出する。このとき、転送元メモリ４０１が「メインメモリ」、転送先メモリ４０２が「ＧＰＵメモリ」の転送速度４０３は、「４００ＭＢ／ｓｅｃ」であるので、１００ＭＢと、１００ＭＢとの計２００ＭＢの処理対象データを蓄積してから転送する場合のメモリ転送に要する時間は「０．５ｓｅｃ（＝２００ＭＢ÷４００ＭＢ）」となる。
【００５９】
蓄積判定プログラム２１０は、処理速度データ２１２（図３）から、暗号化処理速度３０２を取得し、データを蓄積する場合の暗号化処理に要する時間を算出する。具体的には、蓄積判定プログラム２１０は、処理速度データ２１２から、データ量３０１が、ステップ６０１で受信した処理対象データを、処理に最適なデータ量になるまでメインメモリ２０４に蓄積した場合のデータ量、に該当する処理速度３０２を取得し、暗号化処理に要する時間を算出する。このとき、データ量３０１が「２００ＭＢ」の処理速度３０２は、「１００ＭＢ／ｓｅｃ」であるので、１００ＭＢと、１００ＭＢとの計２００ＭＢの処理対象データを蓄積してから転送する場合の暗号化処理に要する時間は「２．０ｓｅｃ」となる。
【００６０】
蓄積判定プログラム２１０は、メモリ転送速度データ２１３（図４）から、ＧＰＵメモリ２１５と、メインメモリ２０４間の転送速度４０３を取得し、暗号化処理された処理対象データのメモリ転送に要する時間を算出する。具体的には、蓄積判定プログラム２１０は、メモリ転送速度データ２１３から、転送元メモリ４０１が「ＧＰＵメモリ」で転送先メモリ４０２が「メインメモリ」に該当する転送速度４０３を取得し、メモリ転送に要する時間を算出する。このとき、転送元メモリ４０１が「ＧＰＵメモリ」、転送先メモリ４０２が「メインメモリ」の転送速度４０３は、「４００ＭＢ／ｓｅｃ」であるので、２００ＭＢの暗号化処理された処理対象データのメモリ転送に要する時間は「０．５ｓｅｃ（＝２００ＭＢ÷４００ＭＢ）」となる。
【００６１】
蓄積判定プログラム２１０は、ネットワーク転送速度データ２１４（図５）から、データ処理装置１０２と、データ受信装置１０３間の転送速度５０３を取得し、ネットワーク転送に要する時間を算出する。具体的には、蓄積判定プログラム２１０は、ネットワーク転送速度データ２１４から、転送元装置５０１が「データ処理装置」で、転送先装置５０２が処理対象データの「データ送信装置」に該当する転送速度５０３を取得し、ネットワーク転送に要する時間を算出する。このとき、転送元装置５０１が「データ処理装置」、転送先装置５０２が「データ受信装置」の転送速度５０３は、「２００ＭＢ／ｓｅｃ」であるので、２００ＭＢの暗号化処理された処理対象データのネットワーク転送に要する時間は「１．０ｓｅｃ（＝２００ＭＢ÷２００ＭＢ）」となる。
【００６２】
以上の結果より、処理対象データを処理に最適なデータ量になるまでメインメモリ２０４に蓄積してからＧＰＵメモリ２１５に転送する場合の処理時間は、「５．０ｓｅｃ」（１．０＋０．５＋２．０＋０．５＋１．０）となる。
【００６３】
次に、一つの処理対象データをメインメモリ２０４に蓄積するごとにＧＰＵメモリ２１５に転送する場合の処理時間算出方法を図８を用いて説明する。図８は、一つの処理対象データをメインメモリ２０４に蓄積することにＧＰＵメモリ２１５に転送する場合の処理シーケンスを表した図である。
【００６４】
図８に示すように、蓄積判定プログラム２１０は、ネットワーク転送速度データ２１４（図５）から、データ送信装置１０１と、データ処理装置１０２間のネットワーク転送速度を取得し、ネットワーク転送に要する時間を算出する。具体的には、蓄積判定プログラム２１０は、ネットワーク転送速度データ２１４（図５）から、転送元装置５０１がステップ６０１で取得した属性情報の送信元の「データ送信装置」で転送先装置５０２が「データ処理装置」に該当する転送速度５０３を取得し、ネットワーク転送に要する時間を算出する。このとき、転送元装置５０１が「データ送信装置」、転送先装置５０２が「データ処理装置」の転送速度５０３は、「２００ＭＢ／ｓｅｃ」であるので、１００ＭＢの処理対象データのネットワーク転送に要する時間は「０．５ｓｅｃ（＝１００ＭＢ÷２００ＭＢ）」となる。
【００６５】
蓄積判定プログラム２１０は、メモリ転送速度データ２１３（図４）から、メインメモリ２０４と、ＧＰＵメモリ２１５間の転送速度４０３を取得し、メモリ転送に要する時間を算出する。具体的には、蓄積判定プログラム２１０は、メモリ転送速度データ２１３から、転送元４０１が「メインメモリ」で転送先４０２が「ＧＰＵメモリ」に該当する転送速度４０３を取得し、メモリ転送に要する時間を算出する。このとき、転送元メモリ４０１が「メインメモリ」、転送先メモリ４０２が「ＧＰＵメモリ」の、転送速度４０３は、「４００ＭＢ／ｓｅｃ」であるので、１００ＭＢの処理対象データのメモリ転送に要する時間は「０．２５ｓｅｃ（＝１００ＭＢ÷４００ＭＢ）」となる。
【００６６】
蓄積判定プログラム２１０は、処理速度データ２１２から、暗号化処理速度を取得し、一つの処理対象データを受信するごとに転送する場合の暗号化処理に要する時間を算出する。具体的には、蓄積判定プログラム２１０は、処理速度データ２１２から、データ量３０１が処理に最適なデータ量になるまでメインメモリ２０４に蓄積しない場合のデータ量に該当する処理速度３０２を取得し、暗号化処理に要する時間を算出する。このとき、データ量３０１が「１００ＭＢ」の処理速度３０２は、「５０ＭＢ／ｓｅｃ」であるので、１００ＭＢの処理対象データの暗号化処理に要する時間は「２．０ｓｅｃ（１００ＭＢ÷５０ＭＢ）」となる。
【００６７】
蓄積判定プログラム２１０は、メモリ転送速度データ２１３（図４）から、ＧＰＵメモリ２１５と、メインメモリ２０４間のメモリ転送速度を取得し、暗号化処理された処理対象データのメモリ転送に要する時間を算出する。具体的には、蓄積判定プログラム２１０は、メモリ転送速度データ２１３から、転送元４０１が「ＧＰＵメモリ」で転送先４０２が「メインメモリ」に該当する転送速度４０３を取得し、メモリ転送に要する時間を算出する。このとき、転送元メモリ４０１が「ＧＰＵメモリ」、転送先メモリ４０２が「メインメモリ」の転送速度４０３は、「４００ＭＢ／ｓｅｃ」であるので、１００ＭＢの暗号化処理された処理対象データのメモリ転送に要する時間は「０．２５ｓｅｃ（＝１００ＭＢ÷４００ＭＢ）」となる。
【００６８】
蓄積判定プログラム２１０は、２つめの処理対象データのメモリ転送に要する時間を算出する。蓄積判定プログラム２１０は、２つめの処理対象データのメモリ転送に要する時間を算出する。具体的には、蓄積判定プログラム２１０は、メモリ転送速度データ２１３から、転送元メモリ４０１が「メインメモリ」で転送先４０２が「ＧＰＵメモリ」に該当する転送速度４０３を取得し、メモリ転送に要する時間を算出する。このとき、転送元メモリ４０１が「メインメモリ」、転送先メモリ４０２が「ＧＰＵメモリ」の転送速度４０３は、「４００ＭＢ／ｓｅｃ」であるので、１００ＭＢの処理対象データのメモリ転送に要する時間は「０．２５ｓｅｃ（＝１００ＭＢ÷４００ＭＢ）」となる。
【００６９】
蓄積判定プログラム２１０は、２つめの処理対象データの暗号化処理に要する時間を算出する。具体的には、蓄積判定プログラム２１０は、データ量３０１が、処理速度データ２１２から、一つの処理対象データをメインメモリ２０４に蓄積するごとにＧＰＵメモリ２１５に転送する場合のデータ量に該当する処理速度３０２を取得し、暗号化処理に要する時間を算出する。このとき、データ量３０１が「１００ＭＢ」の処理速度３０２は、「５０ＭＢ／ｓｅｃ」であるので、１００ＭＢの処理対象データの暗号化処理に要する時間は「２．０ｓｅｃ（＝１００ＭＢ÷５０ＭＢ）」となる。
【００７０】
蓄積判定プログラム２１０は、２つめの暗号化処理された処理対象データのメモリ転送に要する時間を算出する。具体的には、蓄積判定プログラム２１０はメモリ転送速度データ２１３から、転送メモリ４０１が「ＧＰＵメモリ」で転送先メモリ４０２が「メインメモリ」、に該当する転送速度４０３を取得し、メモリ転送に要する時間を算出する。このとき、転送元メモリ４０１が「ＧＰＵメモリ」、転送先メモリ４０２が「メインメモリ」の転送速度４０３は、「４００ＭＢ／ｓｅｃ」であるので、１００ＭＢの暗号化処理された処理対象データのメモリ転送に要する時間は「０．２５ｓｅｃ＝（１００ＭＢ÷４００ＭＢ）」となる。
【００７１】
蓄積判定プログラム２１０は、ネットワーク転送速度データ２１４（図５）から、データ処理装置１０２と、データ受信装置１０３間のネットワーク転送速度を取得し、ネットワーク転送に要する時間を算出する。具体的には、蓄積判定プログラム２１０は、ネットワーク転送速度データ２１４から、転送元装置５０１が「データ処理装置」で転送先装置５０２が処理対象データの「データ送信装置」に該当する転送速度５０３を取得し、ネットワーク転送に要する時間を算出する。このとき、転送元装置５０１が「データ処理装置」、転送先装置５０２が「データ受信装置」の、転送速度５０３は、「２００ＭＢ／ｓｅｃ」であるので、１００ＭＢの暗号化処理された処理対象データのネットワーク転送に要する時間は「０．５ｓｅｃ」となる。
【００７２】
以上の結果より、一つの処理対象データをメインメモリ２０４に蓄積するごとにＧＰＵメモリ２１５に転送する場合の処理時間は、「６．０ｓｅｃ」（０．５＋０．２５＋２．０＋０．２５＋０．２５＋２．０＋０．２５＋０．５）となる。
【００７３】
蓄積判定プログラム２１０は、ステップ６０３で算出した、処理対象データを処理に最適なデータ量になるまでメインメモリ２０４に蓄積してからＧＰＵメモリ２１５に転送する場合の処理時間「５．０ｓｅｃ」と、一つの処理対象データをメインメモリ２０４に蓄積するごとにＧＰＵメモリ２１５に転送する場合の処理時間「６．０ｓｅｃ」とを比較する。この時、蓄積する場合の処理時間の方が短いので、蓄積判定プログラム２１０は、処理対象データを２００ＭＢメインメモリ２０４に蓄積してからＧＰＵメモリ２１５に転送を行うという判定を行い（ステップ６０４でＹＥＳ）、暗号化プログラム２１１を起動する。
【００７４】
暗号化プログラム２１１は、ステップ６０１で受信した１００ＭＢと、１００ＭＢとの処理対象データをメインメモリ２０４に蓄積し、ＧＰＵメモリ２１５に転送し、暗号化処理を行い、データ送信プログラム２０９を起動する（ステップ６０５）。具体的には、暗号化プログラム２１１は、１００ＭＢと、１００ＭＢとの処理対象データをメインメモリ２０４に蓄積していき、最適なデータ量である２００ＭＢの処理対象データの受信を完了すると、メインメモリ２０４に蓄積した処理対象データをＧＰＵメモリ２１５に転送し、ＧＰＵ２０３を用いて暗号化処理を行う。暗号化プログラム２１１は、暗号化処理が完了すると、暗号化されたデータをＧＰＵメモリ２１５からメインメモリ２０４に転送する。
【００７５】
データ送信プログラム２０９は、暗号化処理された２００ＭＢの処理対象データをＩＦ２０１を介してネットワークに送信し、処理を終了する（ステップ６０７）。
【００７６】
このように、本実施例では、ＣＰＵ２０２は、ネットワークを介して受信した処理対象データの属性に応じた処理性能に基づいて、処理対象データの処理方法を決定し、決定したデータ処理方法に従って、受信した処理対象データのメインメモリ２０４への蓄積とこの蓄積データのＧＰＵメモリ２１５への転送を行い、ＧＰＵ２０３は、ＧＰＵメモリ２１５から転送データを読み出し処理を行う。より具体的には、ＣＰＵ２０２は、属性と、ネットワーク転送速度、データ転送速度及び暗号化処理速度に基づいて、処理に最適なデータ量の複数の処理対象データをメインメモリ２０４に蓄積してからＧＰＵメモリ２１５に転送する第１のデータ処理方法に基づく第１のデータ処理時間と、一つの処理対象データをメインメモリ２０４に蓄積するごとにＧＰＵメモリ２１５に転送する第２のデータ処理方法に基づく第２のデータ処理時間を算出し、第１のデータ処理時間が第２のデータ処理時間より短い場合、第１のデータ処理方法を実施し、第１のデータ処理時間が第２のデータ処理時間より長い場合、第２のデータ処理方法を実施し、ＧＰＵ２０３は、ＧＰＵメモリ２１５から転送データを読み出し処理を行う。これによって、データ転送にかかる負荷を軽減し、データ処理時間を短縮できる。
【００７７】
なお、本実施例では、説明を簡単にするため処理対象データが１００ＭＢと１００ＭＢとの２つの場合を説明したが、処理対象データは３つ以上でも良い。この場合、属性には、全ての処理対象データのデータサイズが含まれており、蓄積する場合の処理時間は、任意の数の処理対象データをメインメモリ２０４に蓄積してからＧＰＵメモリ２１５に転送した場合の処理時間（例えば、最初の２つの処理対象データをメインメモリ２０４に蓄積してからＧＰＵメモリ２１５に転送する場合の処理時間や、最初の３つの処理対象データをメインメモリ２０４に蓄積してからＧＰＵメモリ２１５に転送する場合の処理時間等）を算出する。
【００７８】
また、処理対象データの蓄積は、ＧＰＵメモリ２１５のメモリサイズを考慮して、蓄積できるデータの上限を設けても良い。
【００７９】
なお、本実施例の一部を変更して、次のように実施してもよい。データ送信装置１０１と、データ処理装置１０２と、データ受信装置１０３とを一つの装置としても良い。これにより、ネットワーク転送に要する時間を考慮せずに、処理時間の算出を行うことが可能となる。
【００８０】
また、ネットワーク転送速度を属性として通知しても良い。これにより、ネットワーク転送速度が変化した際にも、柔軟に対応を行うことが可能となる。ネットワーク転送速度はデータ送信装置１０１のデータ送信能力に応じて値を決めても良い。
【００８１】
また、遅延許容時間を属性として通知しても良い。処理対象データを処理に最適なデータ量になるまでメインメモリ２０４に蓄積してからＧＰＵメモリ２１５に転送すると、全体としての処理時間は短縮できるが、一つの処理対象データをメインメモリ２０４に蓄積するごとにＧＰＵメモリ２１５に転送を行う場合と比べて、１つ目の処理対象データの処理終了時刻が遅くなってしまう場合がある。例えば、１００ＭＢと、１００ＭＢとのデータを処理するとすると、処理対象データを処理に最適なデータ量になるまでメインメモリ２０４に蓄積してからＧＰＵメモリ２１５に転送し、処理する場合、データ受信装置１０３が１つめの処理対象データの処理結果を受信する時間は、データ送信装置１０１が処理対象データを送信してから５．０ｓｅｃ後となる。一方、一つの処理対象データをメインメモリ２０４に蓄積するごとにＧＰＵメモリ２１５に転送し、処理する場合、データ受信装置１０３が１つめの処理対象データの処理結果を受信する時間は、データ送信装置１０１が処理対象データを送信してから３．５ｓｅｃ後となる。ここで、１つめのデータの遅延許容時間を「４．０ｓｅｃ」として属性に付与して送信する。この時、処理対象データを処理に最適なデータ量になるまでメインメモリ２０４に蓄積してからＧＰＵメモリ２１５に転送し、処理すると、遅延許容時間を超過してしまうため、一つの処理対象データをメインメモリ２０４に蓄積するごとにＧＰＵメモリ２１５に転送し、処理することとなる。このように遅延許容時間を属性として付与することにより、遅延時間を管理することが可能となる。
【００８２】
また、ステップ６０１において、属性を受信してすぐに蓄積判定を行わず、２つ目以降の属性も併せて蓄積判定を行っても良い。これにより、２つ目以降の属性に関する処理対象データも蓄積判定に含めることができ、ＧＰＵの処理効率を高めることが可能となる。
【実施例２】
【００８３】
本実施例は、実施例１に係るデータ処理装置１０２を含み、さらに複数のＧＰＵを考慮した場合の蓄積判定を行うデータ処理装置である。
【００８４】
実施例１では、ＧＰＵの処理状態を考慮せず暗号化処理の実行を行っているため、例えば、すでに暗号化処理が実行中であれば、新たな暗号化処理を実行する際に、現在実行されている暗号化処理の終了を待たなければ処理を実行できない。そこで、実施例２では、複数のＧＰＵを含み、処理状態を保持したデータ処理装置１０２を例にとり説明する。処理状態を保持することにより、暗号化処理の実行状態を考慮した処理実行が可能となり、効率的にリソースを活用することができる。
【００８５】
図９は、本実施例におけるデータ処理装置１０２の構成図の例である。実施例１と同一の構成要素には同一の符号を付すことによってその説明を省略し、以下では、実施例１と異なる点を中心に説明する。
【００８６】
図９に示すように、実施例２に係るデータ処理装置１０２は、既に説明した実施例１のデータ処理装置１０２に、複数のＧＰＵ９０１（ＧＰＵ１９０１ａ、ＧＰＵ２９０１ｂ、ＧＰＵｎ９０１ｃ）と、蓄積判定プログラム９０３と、処理速度データ９０４と、メモリ転送速度データ９０５と、処理状態データ９０６とを含んで構成される。ＧＰＵ９０１には、ＧＰＵ９０１が処理を実行するために必要なデータを格納するためのＧＰＵメモリ９０２（ＧＰＵメモリ１９０２ａ、ＧＰＵメモリ２９０２ｂ、ＧＰＵメモリ９０２ｃ）が格納されている。
【００８７】
なお、実施例１においてもＧＰＵ２０３と、ＧＰＵメモリ２１５が存在するが、実施例２では、複数のＧＰＵを含んだ構成を例示しているため、ここでは新たな符号を付した。また、実施例１においても蓄積判定プログラム２１０が存在するが、実施例２での蓄積判定プログラム９０３とは一部処理が異なるため、ここでは新たな符号を付した。さらに、実施例１においても処理速度データ２１２、メモリ転送速度データ２１３が存在するが、実施例２では、格納するデータが異なるため、ここでは新たな符号を付した。
【００８８】
ＣＰＵ２０２は、メインメモリ２０４に格納された蓄積判定プログラム９０３を実行することにより暗号化処理の処理状態を考慮した暗号化処理実行を行う。記憶装置２０５には、ＧＰＵ９０１毎にデータ量と暗号化処理速度との関係を示す処理速度データ９０４と、メインメモリ２０４とＧＰＵメモリ９０２間でのデータ転送速度を示すメモリ転送速度データ９０５と、暗号化処理の処理状態を保持した処理状態データ９０６が格納されている。
【００８９】
上記の各プログラムやデータは、あらかじめメインメモリ２０４または記憶装置２０５に格納されていてもよいし、必要な時に、入出力装置２０６からまたは、ＩＦ２０１を介して他の装置から、インストール（ロード）されてもよい。
【００９０】
図１０は、処理速度データ９０４の一例を示す図である。図１０に示すように、処理速度データ９０４は、ＩＤ１００１と、データ量１００２と、処理速度１００３とを含む。
【００９１】
ＩＤ１００１は、ＧＰＵ９０１を一意に識別できる情報（識別子）を表し、例えば、ＧＰＵ１９０１ａや、ＧＰＵ２９０１ｂ、ＧＰＵｎ９０１ｃが挙げられる。
【００９２】
データ量１００２は、暗号化プログラム２１１が処理するデータ量を表し、処理速度１００３は、暗号化プログラム２１１が、データ量１００２に格納されているデータ量のデータをＩＤ１００１に格納されているＧＰＵ９０１を用いて暗号化処理する際の処理速度を表す。
【００９３】
図１０を用いて具体的に説明する。例えば、ＩＤ１００１が「ＧＰＵ１」、データ量１００２が「５０ＭＢ」、処理速度１００３が「５０ＭＢ／ｓｅｃ」の処理速度データは、暗号化プログラム２１１がＧＰＵ１９０１ａを利用することで、５０ＭＢのデータを１秒間で暗号化できることを表す。
【００９４】
なお、処理速度データ９０４は、暗号化プログラム２１１を用いてデータ量を変化させながら、処理時間を計測することにより求めることができる。処理時間の計測は、データ処理装置１０２で予め算出していることが望ましいが、データ処理装置１０２上で事前の計測が難しい場合は、別の装置上で処理時間を計測し、処理速度データ９０４を設定しても良い。また、処理速度データ９０４に格納される各情報は、管理者が必要に応じて、入力または更新しても良い。
【００９５】
処理速度データ９０４は、ＣＰＵ２０２により実行される蓄積判定プログラム９０３が処理対象データを処理に必要なデータ量になるまでメインメモリ２０４に蓄積してからＧＰＵメモリ９０２に転送するか、一つの処理対象データをメインメモリ２０４に蓄積するごとにＧＰＵメモリ９０２に転送するかを判定する際に利用される。蓄積判定プログラム９０３の具体的な処理については、図１３を用いて後述する。
【００９６】
図１１は、メモリ転送速度データ９０５の一例を示す図である。図１１に示すように、メモリ転送速度データ９０５は、転送元１１０１と、転送先１１０２と、転送速度１１０３とを含む。メモリ転送速度データ９０５は、転送元１１０１のメモリから転送先１１０２のメモリにデータを転送する際の転送速度が転送速度１１０３であることを表す。
【００９７】
図１１を用いて具体的に説明する。例えば、転送元１１０１が「メインメモリ」、転送先１１０２が「ＧＰＵ１メモリ」、転送速度１１０３が「４００ＭＢ／ｓｅｃ」のメモリ転送速度データは、データ処理装置１０２のメインメモリ２０４から、ＧＰＵメモリ１９０２ａへ、１秒間に４００ＭＢのデータを転送できることを表す。
【００９８】
なお、メモリ転送速度データ９０５は、データ転送にかかる処理時間を計測することにより求めることができる。処理時間の計測は、データ処理装置１０２で予め算出していることが望ましいが、データ処理装置１０２上で事前の計測が難しい場合は、別の装置上で処理時間を計測し、メモリ転送速度データ９０５を設定しても良い。また、メモリ転送速度データ９０５に格納される各情報は、管理者が必要に応じて、入力または更新しても良い。
【００９９】
メモリ転送速度データ９０５は、ＣＰＵ２０２により実行される蓄積判定プログラム９０３が処理対象データを処理に最適なデータ量になるまでメインメモリ２０４に蓄積してからＧＰＵメモリ９０２に転送するか、一つの処理対象データをメインメモリ２０４に蓄積するごとにＧＰＵメモリ９０２に転送するかを判定する際に利用される。蓄積判定プログラム９０３の具体的な処理については、図１３を用いて後述する。
【０１００】
図１２は、処理状態データ９０６の一例を示す図である。図１２に示すように、処理状態データ９０６は、ＩＤ１２０１と、処理終了予定時刻１２０２とを含む。
【０１０１】
ＩＤ１２０１には、暗号化プログラム２１１が処理を行っているＧＰＵ９０１の情報を格納する。例えば、ＧＰＵ１９０１ａや、ＧＰＵ２９０１ｂ、ＧＰＵｎ９０１ｃが挙げられる。
【０１０２】
処理終了予定時刻１２０２には、暗号化処理の処理終了予定時刻が格納される。なお、処理終了予定時刻１２０２に値が格納されていない場合には、当該ＩＤ１２０１に格納されたＧＰＵ９０１において暗号化処理が実行されていないことを表す。
【０１０３】
図１２を用いて具体例を説明する。一行目に格納されているの処理状態データは、ＩＤ１２０１が「ＧＰＵ１」、処理終了予定時刻が「２０１２／４／１  １０：００：０５」である。このとき、現在ＧＰＵ１９０１ａにおいて、暗号化処理が実行されており、２０１２／４／１  １０：００：０５に暗号化処理が終了する予定であることを表している。
【０１０４】
処理状態データ９０６は、ＣＰＵ２０２により実行される蓄積判定プログラム９０３が、暗号化処理の実行状況を把握する際に利用される。蓄積判定９０３の具体的な処理については、図１３を用いて後述する。
【０１０５】
続いて、データ処理装置１０２のデータ受信プログラム２０８が、データ送信装置１０１が送信した属性及び処理対象データを、ネットワークを介してＩＦ２０１から受信し、蓄積判定プログラム９０３が、処理対象データを処理に最適なデータ量になるまでメインメモリ２０４に蓄積してからＧＰＵメモリ９０２に転送するか否かの判断を行い、暗号化プログラム２１１が、受信した処理対象データに暗号化処理を行い、データ送信プログラム２０９が、処理結果データをＩＦ２０１を介してネットワークに送信する処理について説明する。図１３は、処理のフローチャートである。
【０１０６】
図１３に示すように、データ受信を行うデータ受信プログラム２０８は、ＣＰＵ２０２により実行され、データ送信装置１０１が送信する処理対象データ及びその属性を、ＩＦ２０１を介してネットワークから受信する（ステップ１３０１）。ここで、属性とは、処理対象データのデータサイズの情報を含む。
【０１０７】
なお、データ受信プログラム２０８は、属性情報の受信を完了すると、処理対象データを処理に最適なデータ量になるまでメインメモリ２０４に蓄積してからＧＰＵメモリ９０２に転送するか、一つの処理対象データをメインメモリ２０４に蓄積するごとにＧＰＵメモリ９０２に転送するかを判定する蓄積判定プログラム９０３を起動する。このとき、処理対象データの受信は完了している必要はなく、処理対象データの受信と並行して、処理対象データを処理に最適なデータ量になるまでメインメモリ２０４に蓄積してからＧＰＵメモリ９０２に転送するか、一つの処理対象データをメインメモリ２０４に蓄積するごとにＧＰＵメモリ９０２に転送するかの判定を行う。
【０１０８】
蓄積判定プログラム９０３は、ＣＰＵ２０２により実行され、速度データの情報と、処理状態データ９０６の情報を取得する（ステップ１３０２）。ここで、速度データとは、処理速度データ９０４と、メモリ転送速度データ９０５と、ネットワーク転送速度データ２１４とを含む。
【０１０９】
蓄積判定プログラム９０３は、ステップ１３０１で取得した属性と、ステップ１３０２で取得した速度データの情報と処理状態データ９０６の情報とから、各ＧＰＵ９０１において、処理対象データを処理に最適なデータ量になるまでメインメモリ２０４に蓄積してからＧＰＵメモリ９０２に転送する場合の処理終了予定時間と、一つの処理対象データをメインメモリ２０４に蓄積するごとにＧＰＵメモリ９０２に転送する場合の処理終了予定時刻とを算出する（ステップ１３０３）。
【０１１０】
このとき、処理終了予定時刻の算出は、各ＧＰＵ９０１において、処理対象データを処理に最適なデータ量になるまでメインメモリ２０４に蓄積してからＧＰＵメモリ９０２に転送する場合の処理時間と、一つの処理対象データをメインメモリ２０４に蓄積するごとにＧＰＵメモリ９０２に転送する場合の処理時間を算出し、それぞれステップ１３０２で取得した、各ＧＰＵ９０１の処理終了予定時刻１２０２に加算することで算出する。なお、処理終了予定時刻１２０２に処理終了予定時刻が格納されていない場合は、処理対象データを処理に最適なデータ量になるまでメインメモリ２０４に蓄積してからＧＰＵメモリ９０２に転送する場合の処理時間と、一つの処理対象データをメインメモリ２０４に蓄積するごとにＧＰＵメモリ９０２に転送する場合の処理時間を算出し、それぞれ現在時刻に加算することで算出する。
【０１１１】
蓄積判定プログラム９０３は、ステップ１３０３で算出した、各ＧＰＵ９０１において、処理対象データを処理に最適なデータ量になるまでメインメモリ２０４に蓄積してからＧＰＵメモリ９０２に転送する場合の処理終了予定時刻と、一つの処理対象データをメインメモリ２０４に蓄積するごとにＧＰＵメモリ９０２に転送する場合の処理終了予定時刻とを比較し、もっとも処理終了予定時刻が早いＧＰＵ９０１を選択し、処理状態データ９０６に、選択したＧＰＵ９０１と、処理終了予定時刻とを格納する。さらに、蓄積判定プログラム９０３は、処理対象データを処理に最適なデータ量になるまでメインメモリ２０４に蓄積してからＧＰＵメモリ２１５に転送する場合の処理終了予定時刻の方が早ければ、暗号化プログラム２１１を起動し、ステップ１３０５に進み（ステップ１３０４でＹＥＳ）、一つの処理対象データをメインメモリ２０４に蓄積するごとにＧＰＵメモリ９０２に転送する場合の処理終了予定時刻の方が早ければ、暗号化プログラム２１１を起動し、ステップ１３０６に進む（ステップ１３０４でＮＯ）。
【０１１２】
暗号化プログラム２１１は、ステップ１３０１で受信した処理対象データを蓄積し、ステップ１３０４で選択したＧＰＵ９０１を用いて暗号化処理を行い、データ送信プログラム２０９を起動する（ステップ１３０５）。具体的には、暗号化プログラム２１１は、処理対象データをメインメモリ２０４に蓄積していき、処理に最適な量の処理対象データの受信を完了すると、メインメモリ２０４に蓄積した処理対象データを、ステップ１３０４で選択したＧＰＵ９０１のＧＰＵメモリ９０２に転送し、ステップ１３０４で選択したＧＰＵ９０１を用いて暗号化処理を行う。暗号化プログラム２１１は、暗号化処理が完了すると、暗号化されたデータをＧＰＵメモリ９０２からメインメモリ２０４に転送し、処理状態データ９０６に格納された当該、処理終了予定時刻の情報を削除する。
【０１１３】
暗号化プログラム２１１は、ステップ１３０１で受信した一つの処理対象データをメインメモリ２０４に蓄積し、暗号化処理を行い、データ送信プログラム２０９を起動する（ステップ１３０６）。具体的には、暗号化プログラム２１１は、処理対象データをメインメモリ２０４に蓄積していき、一つ目の処理対象データの受信を完了すると、処理対象データをステップ１３０４で選択したＧＰＵ９０１のＧＰＵメモリ９０２に転送し、ステップ１３０４で選択したＧＰＵ９０１を用いて暗号化処理を行う。暗号化プログラム２１１は、暗号化処理が完了すると、暗号化されたデータをＧＰＵメモリ９０２からメインメモリ２０４に転送する。暗号化プログラム２１１は、２つ目の処理対象データの受信を完了すると、処理対象データをステップ１３０４で選択したＧＰＵ９０１のＧＰＵメモリ９０２に転送し、ステップ１３０４で選択したＧＰＵ９０１を用いて暗号化処理を行う。暗号化プログラム２１１は、暗号化処理が完了すると、暗号化されたデータをＧＰＵメモリ９０２からメインメモリ２０４に転送する。暗号化プログラム２１１は、全ての処理対象データの暗号化処理を終了すると、処理状態データ９０６に格納された当該、処理終了予定時刻の情報を削除する。
【０１１４】
データ送信プログラム２０９は、ＣＰＵ２０２により実行され、ステップ１３０５、またはステップ１３０６で暗号化処理された処理結果データを、ＩＦ２０１を介してネットワークに送信し、処理を終了する（ステップ１３０７）。
【０１１５】
ステップ１３０１からステップ１３０７までの処理の流れを、具体例を用いて説明する。例えば、データ送信装置１０１が属性「１００ＭＢ、１００ＭＢ」と、処理対象データ（１００ＭＢのデータと、１００ＭＢのデータ）とを送信した場合を考える。
【０１１６】
データ受信を行うデータ受信プログラム２０８は、ＣＰＵ２０２により実行され、データ送信装置１０１が送信する属性と処理対象データとを、ＩＦ２０１を介してネットワークから受信する（ステップ１３０１）。この場合、データ受信プログラム２０８は、データ送信装置１０１が送信した、属性「１００ＭＢ、１００ＭＢ」と、処理対象データ（１００ＭＢのデータと１００ＭＢのデータ）とを、受信する。なお、データ受信プログラム２０８は、属性「１００ＭＢ、１００ＭＢ」の受信を完了すると、蓄積判定プログラム９０３を起動する。
【０１１７】
蓄積判定プログラム９０３は、ＣＰＵ２０２により実行され、処理速度データ９０４と、メモリ転送速度データ９０５と、ネットワーク転送速度データ２１４と、処理状態データ９０６との情報を取得する（ステップ１３０２）。
【０１１８】
蓄積判定プログラム９０３は、ステップ１３０１で取得した属性と、ステップ１３０２で取得した速度データの情報と処理状態データ９０６の情報とから、各ＧＰＵ９０１において、処理対象データを処理に最適なデータ量になるまでメインメモリ２０４に蓄積してからＧＰＵメモリ９０２に転送する場合の処理終了予定時間と、一つの処理対象データをメインメモリ２０４に蓄積するごとにＧＰＵメモリ９０２に転送する場合の処理終了予定時刻とを算出する（ステップ１３０３）。この場合、蓄積プログラム９０３は、まず、ＧＰＵ１９０１ａについて、実施例１と同様にして、処理対象データを処理に最適なデータ量になるまでメインメモリ２０４に蓄積してからＧＰＵメモリ１９０２ａに転送する場合の処理終了予定時刻と、一つの処理対象データをメインメモリ２０４に蓄積するごとにＧＰＵメモリ１９０２ａに転送する場合の処理終了予定時刻とを算出する。
【０１１９】
処理対象データを処理に最適なデータ量になるまでメインメモリ２０４に蓄積してからＧＰＵメモリ１９０２ａに転送する場合における、ＧＰＵ１９０１ａの処理終了予定時刻は、処理状態データ９０６の処理終了予定時刻１２０２に、ネットワーク転送に要する時間と、メモリ転送に要する時間とＧＰＵ１９０１ａでの暗号化処理に要する時間とを加算することにより、算出する。この場合、ＩＤ１２０１が「ＧＰＵ１」に該当する処理終了予定時刻１２０２は、「２０１２／４／１  １０：００：０５」となる。
【０１２０】
蓄積判定プログラム９０３は、ネットワーク転送速度データ２１４から、データ送信装置１０１と、データ処理装置１０２間のネットワーク転送速度を取得し、ＧＰＵ１９０１ａが、処理対象データを処理に最適なデータ量になるまでメインメモリ２０４に蓄積してからＧＰＵメモリ１９０２ａに転送する場合のネットワーク転送に要する時間を算出する。このとき、転送元装置５０１が「データ送信装置」、転送先装置５０２が「データ処理装置」の転送速度５０３は、「２００ＭＢ／ｓｅｃ」であるので、１００ＭＢと、１００ＭＢとの計２００ＭＢの処理対象データを蓄積してから転送する場合のネットワーク転送に要する時間は「１．０ｓｅｃ」となる。
【０１２１】
蓄積判定プログラム９０３、メモリ転送速度データ９０５から、メインメモリ２０４と、ＧＰＵメモリ１９０２ａ間のメモリ転送速度を取得し、ＧＰＵ１９０１ａが、処理対象データを処理に最適なデータ量になるまでメインメモリ２０４に蓄積してからＧＰＵメモリ１９０２ａに転送する場合のメモリ転送に要する時間を算出する。このとき、転送元１１０１が「メインメモリ」、転送先１１０２が「ＧＰＵメモリ１」の転送速度１１０３は、「４００ＭＢ／ｓｅｃ」であるので、１００ＭＢと、１００ＭＢとの計２００ＭＢの処理対象データをメインメモリ２０４に蓄積してからＧＰＵメモリ１９０２ａに転送する場合のメモリ転送に要する時間は「０．５ｓｅｃ」となる。
【０１２２】
蓄積判定プログラム９０３は、処理速度データ９０４から、暗号化処理速度を取得し、ＧＰＵ１９０１ａが、処理対象データを処理に最適なデータ量になるまでメインメモリ２０４に蓄積してからＧＰＵメモリ１９０２ａに転送する場合の暗号化処理に要する時間を算出する。このとき、ＩＤ１００１が「ＧＰＵ１」、データ量１１０２が「２００ＭＢ」の処理速度１１０３は、「１００ＭＢ／ｓｅｃ」であるので、１００ＭＢと、１００ＭＢとの計２００ＭＢの処理対象データをメインメモリ２０４に蓄積してからＧＰＵメモリ１９０２ａに転送する場合の暗号化処理に要する時間は「２．０ｓｅｃ」となる。
【０１２３】
蓄積判定プログラム９０３は、メモリ転送速度データ９０５から、ＧＰＵメモリ１９０２ａと、メインメモリ２０４間のメモリ転送速度を取得し、暗号化処理された処理対象データのメモリ転送に要する時間を算出する。このとき、転送元１１０１が「ＧＰＵメモリ１」、転送先１１０２が「メインメモリ」の転送速度１１０３は、「４００ＭＢ／ｓｅｃ」であるので、２００ＭＢの暗号化処理された処理対象データのメモリ転送に要する時間は「０．５ｓｅｃ」となる。
【０１２４】
蓄積判定プログラム９０３は、ネットワーク転送速度データ２１４から、データ処理装置１０２と、データ受信装置１０３間のネットワーク転送速度を取得し、ネットワーク転送に要する時間を算出する。このとき、転送元装置５０１が「データ処理装置」、転送先装置５０２が「データ受信装置」の転送速度５０３は、「２００ＭＢ／ｓｅｃ」であるので、２００ＭＢの暗号化処理された処理対象データのネットワーク転送に要する時間は「１．０ｓｅｃ」となる。
【０１２５】
以上の結果より、ＧＰＵ１９０１ａが、処理対象データを処理に最適なデータ量になるまでメインメモリ２０４に蓄積してからＧＰＵメモリ１９０２ａに転送する場合の処理終了予定時間は、現在、ＧＰＵ１９０１ａで実行されている暗号化処理が終了する予定時刻「２０１２／４／１  １０：００：０５」に「５．０ｓｅｃ」（１．０＋０．５＋２．０＋０．５＋１．０）を加算し、「２０１２／４／１  １０：００：１０」と算出される。
【０１２６】
ＧＰＵ１９０１ａが、一つの処理対象データをメインメモリ２０４に蓄積するごとにＧＰＵメモリ１９０２ａに転送する場合の処理終了予定時刻は、処理状態データ９０６の処理終了予定時刻１２０２に、ネットワーク転送に要する時間と、メモリ転送に要する時間とＧＰＵでの暗号化処理に要する時間とを加算することにより、算出する。この場合、ＩＤ１２０１が「ＧＰＵ１」に該当する処理終了予定時刻１２０２は、「２０１２／４／１  １０：００：０５」となる。
【０１２７】
蓄積判定プログラム９０３は、ネットワーク転送速度データ２１４から、データ送信装置１０１と、データ処理装置１０２間のネットワーク転送速度を取得し、ＧＰＵ１９０１ａが、一つの処理対象データをメインメモリ２０４に蓄積するごとにＧＰＵメモリ１９０２ａに転送する場合のネットワーク転送に要する時間を算出する。このとき、転送元装置５０１が「データ送信装置」、転送先装置５０２が「データ処理装置」の転送速度５０３は、「２００ＭＢ／ｓｅｃ」であるので、１００ＭＢの処理対象データのネットワーク転送に要する時間は「０．５ｓｅｃ」となる。
【０１２８】
蓄積判定プログラム９０３は、メモリ転送速度データ９０５から、メインメモリ２０４と、ＧＰＵメモリ１９０２ａ間のメモリ転送速度を取得し、メモリ転送に要する時間を算出する。このとき、転送元１１０１が「メインメモリ」、転送先１１０２が「ＧＰＵメモリ１」の、転送速度１１０３は、「４００ＭＢ／ｓｅｃ」であるので、１００ＭＢの処理対象データのメモリ転送に要する時間は「０．２５ｓｅｃ」となる。
【０１２９】
蓄積判定プログラム９０３は、処理速度データ９０４から、暗号化処理速度を取得し、ＧＰＵ１９０１ａが、一つの処理対象データをメインメモリ２０４に蓄積するごとにＧＰＵメモリ１９０２ａに転送する場合の暗号化処理に要する時間を算出する。このとき、ＩＤ１００１が「ＧＰＵ１」、データ量１００２が「１００ＭＢ」の処理速度１００３は、「５０ＭＢ／ｓｅｃ」であるので、１００ＭＢの処理対象データの暗号化処理に要する時間は「２．０ｓｅｃ」となる。
【０１３０】
蓄積判定プログラム９０３は、メモリ転送速度データ９０５から、ＧＰＵメモリ１９０２ａと、メインメモリ２０４間のメモリ転送速度を取得し、暗号化処理された処理対象データのメモリ転送に要する時間を算出する。このとき、転送元１１０１が「ＧＰＵメモリ１」、転送先１１０２が「メインメモリ」の転送速度１１０３は、「４００ＭＢ／ｓｅｃ」であるので、１００ＭＢの暗号化処理された処理対象データのメモリ転送に要する時間は「０．２５ｓｅｃ」となる。
【０１３１】
蓄積判定プログラム９０３は、２つめの処理対象データのメモリ転送に要する時間を算出する。このとき、送信元１１０１が「メインメモリ」、転送先１１０２が「ＧＰＵメモリ１」の転送速度１１０３は、「４００ＭＢ／ｓｅｃ」であるので、１００ＭＢの処理対象データのメモリ転送に要する時間は「０．２５ｓｅｃ」となる。
【０１３２】
蓄積判定プログラム９０３は、２つめの処理対象データの暗号化処理に要する時間を算出する。このとき、ＩＤ１００１が「ＧＰＵ１」、データ量１００２が「１００ＭＢ」の処理速度１１０３は、「５０ＭＢ／ｓｅｃ」であるので、１００ＭＢの処理対象データの暗号化処理に要する時間は「２．０ｓｅｃ」となる。
【０１３３】
蓄積判定プログラム９０３は、２つめの暗号化処理された処理対象データのメモリ転送に要する時間を算出する。このとき、転送元１１０１が「ＧＰＵメモリ１」、転送先１１０２が「メインメモリ」の転送速度１１０３は、「４００ＭＢ／ｓｅｃ」であるので、１００ＭＢの暗号化処理された処理対象データのメモリ転送に要する時間は「０．２５ｓｅｃ」となる。
【０１３４】
蓄積判定プログラム９０３は、ネットワーク転送速度データ２１４から、データ処理装置１０２と、データ受信装置１０３間のネットワーク転送速度を取得し、ネットワーク転送に要する時間を算出する。このとき、転送元装置５０１が「データ処理装置」、転送先装置５０２が「データ受信装置」の、転送速度５０３は、「２００ＭＢ／ｓｅｃ」であるので、１００ＭＢの暗号化処理された処理対象データのネットワーク転送に要する時間は「０．５ｓｅｃ」となる。
【０１３５】
以上の結果より、ＧＰＵ１９０１ａが、一つの処理対象データをメインメモリ２０４に蓄積するごとにＧＰＵメモリ１９０２ａに転送する場合の処理終了予定時間は、現在、ＧＰＵ１９０１ａで実行されている暗号化処理が終了する予定時刻「２０１２／４／１  １０：００：０５」に「６．０ｓｅｃ」（０．５＋０．２５＋２．０＋０．２５＋０．２５＋２．０＋０．２５＋０．５）を加算し、「２０１２／４／１  １０：００：１１」と算出される。
【０１３６】
次に、蓄積プログラム９０３は、ＧＰＵ２９０１ｂについて、実施例１と同様にして、処理対象データを処理に最適なデータ量になるまでメインメモリ２０４に蓄積してからＧＰＵメモリ２９０２ｂに転送する場合の処理終了予定時刻と、一つの処理対象データをメインメモリ２０４に蓄積するごとにＧＰＵメモリ２９０２ｂに転送する場合の処理終了予定時刻とを算出する。
【０１３７】
ＧＰＵ２９０１ｂが、処理対象データを処理に最適なデータ量になるまでメインメモリ２０４に蓄積してからＧＰＵメモリ２９０２ｂに転送する場合の処理終了予定時刻は、処理状態データ９０６の処理終了予定時刻１２０２に、ネットワーク転送に要する時間と、メモリ転送に要する時間とＧＰＵでの暗号化処理に要する時間とを加算することにより、算出する。この場合、ＩＤ１２０１が「ＧＰＵ２」に該当する処理終了予定時刻１２０２は、「」となり、現在ＧＰＵ２９０１ｂでは暗号化処理が行われていないことが分かる。
【０１３８】
蓄積判定プログラム９０３は、ネットワーク転送速度データ２１４から、データ送信装置１０１と、データ処理装置１０２間のネットワーク転送速度を取得し、ＧＰＵ２９０１ｂが、処理対象データを処理に最適なデータ量になるまでメインメモリ２０４に蓄積してからＧＰＵメモリ２９０２ｂに転送する場合のネットワーク転送に要する時間を算出する。このとき、転送元装置５０１が「データ送信装置」、転送先装置５０２が「データ処理装置」の転送速度５０３は、「２００ＭＢ／ｓｅｃ」であるので、１００ＭＢと、１００ＭＢとの計２００ＭＢの処理対象データをメインメモリ２０４に蓄積してからＧＰＵメモリ２９０２ｂに転送する場合のネットワーク転送に要する時間は「１．０ｓｅｃ」となる。
【０１３９】
蓄積判定プログラム９０３、メモリ転送速度データ９０５から、メインメモリ２０４と、ＧＰＵメモリ２９０２ｂ間のメモリ転送速度を取得し、ＧＰＵ２９０１ｂが、処理対象データを処理に最適なデータ量になるまでメインメモリ２０４に蓄積してからＧＰＵメモリ２９０２ｂに転送する場合のメモリ転送に要する時間を算出する。このとき、転送元１１０１が「メインメモリ」、転送先１１０２が「ＧＰＵメモリ２」の転送速度１１０３は、「５００ＭＢ／ｓｅｃ」であるので、１００ＭＢと、１００ＭＢとの計２００ＭＢの処理対象データをメインメモリ２０４に蓄積してからＧＰＵメモリ２９０２ｂに転送する場合のメモリ転送に要する時間は「０．４ｓｅｃ」となる。
【０１４０】
蓄積判定プログラム９０３は、処理速度データ９０４から、暗号化処理速度を取得し、ＧＰＵ２９０１ｂが、処理対象データを処理に最適なデータ量になるまでメインメモリ２０４に蓄積してからＧＰＵメモリ２９０２ｂに転送する場合の暗号化処理に要する時間を算出する。このとき、ＩＤ１００１が「ＧＰＵ２」、データ量１１０２が「２００ＭＢ」の処理速度１１０３は、「１２５ＭＢ／ｓｅｃ」であるので、１００ＭＢと、１００ＭＢとの計２００ＭＢの処理対象データを蓄積してから転送する場合の暗号化処理に要する時間は「１．６ｓｅｃ」となる。
【０１４１】
蓄積判定プログラム９０３は、メモリ転送速度データ９０５から、ＧＰＵメモリ２９０２ｂと、メインメモリ２０４間のメモリ転送速度を取得し、暗号化処理された処理対象データのメモリ転送に要する時間を算出する。このとき、転送元１１０１が「ＧＰＵメモリ１」、転送先１１０２が「メインメモリ２」の転送速度１１０３は、「５００ＭＢ／ｓｅｃ」であるので、２００ＭＢの暗号化処理された処理対象データのメモリ転送に要する時間は「０．４ｓｅｃ」となる。
【０１４２】
蓄積判定プログラム９０３は、ネットワーク転送速度データ２１４から、データ処理装置１０２と、データ受信装置１０３間のネットワーク転送速度を取得し、ネットワーク転送に要する時間を算出する。このとき、転送元装置５０１が「データ処理装置」、転送先装置５０２が「データ受信装置」の転送速度５０３は、「２００ＭＢ／ｓｅｃ」であるので、２００ＭＢの暗号化処理された処理対象データのネットワーク転送に要する時間は「１．０ｓｅｃ」となる。
【０１４３】
以上の結果より、ＧＰＵ２９０１ｂが、処理対象データを処理に最適なデータ量になるまでメインメモリ２０４に蓄積してからＧＰＵメモリ２９０２ｂに転送する場合の処理終了予定時間は、現在時刻を「２０１２／４／１  １０：００：００」とすると、「２０１２／４／１  １０：００：００」に「４．４ｓｅｃ」（１．０＋０．４＋１．６＋０．４＋１．０）を加算し、「２０１２／４／１  １０：００：０４．４」と算出される。
【０１４４】
ＧＰＵ２９０１ｂが、一つの処理対象データをメインメモリ２０４に蓄積するごとにＧＰＵメモリ２９０２ｂに転送する場合の処理終了予定時刻は、処理状態データ９０６の処理終了予定時刻１２０２に、ネットワーク転送に要する時間と、メモリ転送に要する時間とＧＰＵでの暗号化処理に要する時間とを加算することにより、算出する。この場合、ＩＤ１２０１が「ＧＰＵ２」に該当する処理終了予定時刻１２０２は、「」となり、現在ＧＰＵ２９０１ｂでは暗号化処理が行われていないことが分かる。
【０１４５】
蓄積判定プログラム９０３は、ネットワーク転送速度データ２１４から、データ送信装置１０１と、データ処理装置１０２間のネットワーク転送速度を取得し、ＧＰＵ２９０１ｂが、一つの処理対象データをメインメモリ２０４に蓄積するごとにＧＰＵメモリ２９０２ｂに転送する場合のネットワーク転送に要する時間を算出する。このとき、転送元装置５０１が「データ送信装置」、転送先装置５０２が「データ処理装置」の転送速度５０３は、「２００ＭＢ／ｓｅｃ」であるので、１００ＭＢの処理対象データのネットワーク転送に要する時間は「０．５ｓｅｃ」となる。
【０１４６】
蓄積判定プログラム９０３は、メモリ転送速度データ９０５から、メインメモリ２０４と、ＧＰＵメモリ２９０２ｂ間のメモリ転送速度を取得し、メモリ転送に要する時間を算出する。このとき、転送元１１０１が「メインメモリ」、転送先１１０２が「ＧＰＵメモリ２」の、転送速度１１０３は、「５００ＭＢ／ｓｅｃ」であるので、１００ＭＢの処理対象データのメモリ転送に要する時間は「０．２ｓｅｃ」となる。
【０１４７】
蓄積判定プログラム９０３は、処理速度データ９０４から、暗号化処理速度を取得し、ＧＰＵ２９０１ｂが、一つの処理対象データをメインメモリ２０４に蓄積するごとにＧＰＵメモリ２９０２ｂに転送する場合の暗号化処理に要する時間を算出する。このとき、ＩＤ１００１が「ＧＰＵ２」、データ量１００２が「１００ＭＢ」の処理速度１００３は、「１００ＭＢ／ｓｅｃ」であるので、１００ＭＢの処理対象データの暗号化処理に要する時間は「１．０ｓｅｃ」となる。
【０１４８】
蓄積判定プログラム９０３は、メモリ転送速度データ９０５から、ＧＰＵメモリ２９０２ｂと、メインメモリ２０４間のメモリ転送速度を取得し、暗号化処理された処理対象データのメモリ転送に要する時間を算出する。このとき、転送元１１０１が「ＧＰＵメモリ２」、転送先１１０２が「メインメモリ」の転送速度１１０３は、「５００ＭＢ／ｓｅｃ」であるので、１００ＭＢの暗号化処理された処理対象データのメモリ転送に要する時間は「０．２ｓｅｃ」となる。
【０１４９】
蓄積判定プログラム９０３は、２つめの処理対象データのメモリ転送に要する時間を算出する。このとき、送信元１１０１が「メインメモリ」、転送先１１０２が「ＧＰＵメモリ２」の転送速度１１０３は、「５００ＭＢ／ｓｅｃ」であるので、１００ＭＢの処理対象データのメモリ転送に要する時間は「０．２ｓｅｃ」となる。
【０１５０】
蓄積判定プログラム９０３は、２つめの処理対象データの暗号化処理に要する時間を算出する。このとき、ＩＤ１００１が「ＧＰＵ２」、データ量１００２が「１００ＭＢ」の処理速度１１０３は、「１００ＭＢ／ｓｅｃ」であるので、１００ＭＢの処理対象データの暗号化処理に要する時間は「１．０ｓｅｃ」となる。
【０１５１】
蓄積判定プログラム９０３は、２つめの暗号化処理された処理対象データのメモリ転送に要する時間を算出する。このとき、転送元１１０１が「ＧＰＵメモリ２」、転送先１１０２が「メインメモリ」の転送速度１１０３は、「５００ＭＢ／ｓｅｃ」であるので、１００ＭＢの暗号化処理された処理対象データのメモリ転送に要する時間は「０．２ｓｅｃ」となる。
【０１５２】
蓄積判定プログラム９０３は、ネットワーク転送速度データ２１４から、データ処理装置１０２と、データ受信装置１０３間のネットワーク転送速度を取得し、ネットワーク転送に要する時間を算出する。このとき、転送元装置５０１が「データ処理装置」、転送先装置５０２が「データ受信装置」の、転送速度５０３は、「２００ＭＢ／ｓｅｃ」であるので、１００ＭＢの暗号化処理された処理対象データのネットワーク転送に要する時間は「０．５ｓｅｃ」となる。
【０１５３】
以上の結果より、ＧＰＵ２９０１ｂが、一つの処理対象データをメインメモリ２０４に蓄積するごとにＧＰＵメモリ２９０２ｂに転送する場合の処理終了予定時間は、現在時刻を「２０１２／４／１  １０：００：００」とすると、「２０１２／４／１  １０：００：００」に「３．８ｓｅｃ」（０．５＋０．２＋１．０＋０．２＋０．２＋１．０＋０．２＋０．５）を加算し、「２０１２／４／１  １０：００：０３．８」と算出される。
【０１５４】
蓄積プログラム９０３は、データ処理装置１０２が具備しているＧＰＵ９０１の全てにおいて、上記手順と同様に、処理対象データを処理に最適なデータ量になるまでメインメモリ２０４に蓄積してからＧＰＵメモリ９０２に転送する場合の処理終了予定時刻と、一つの処理対象データをメインメモリ２０４に蓄積するごとにＧＰＵメモリ９０２に転送する場合の処理終了予定時刻とを算出する。なお、本実施例においては、他のＧＰＵ９０３の処理終了予定時刻算出は省略する。
【０１５５】
蓄積判定プログラム９０３は、ステップ１３０３で算出した、各ＧＰＵ９０１において、処理対象データを処理に最適なデータ量になるまでメインメモリ２０４に蓄積してからＧＰＵメモリ９０２に転送する場合の処理終了予定時刻と、一つの処理対象データをメインメモリ２０４に蓄積するごとにＧＰＵメモリ９０２に転送する場合の処理終了予定時刻とを比較し、もっとも処理終了予定時刻が早いＧＰＵ９０１を選択し、処理状態データ９０６に、選択したＧＰＵ９０１と、処理終了予定時刻とを格納する。この場合、もっとも処理終了予定時刻が早いＧＰＵ９０１は、ＧＰＵ２９０１ｂであるので、ＩＤ１２０１が「ＧＰＵ２」の処理終了予定時刻１２０２に「２０１２／４／１  １０：００：０３．８」を格納する。
【０１５６】
さらに、蓄積判定プログラム９０３は、ＧＰＵ２９０１ｂで蓄積する場合の処理終了予定時刻「２０１２／４／１  １０：００：０４．４」と、蓄積しない場合の処理終了予定時刻「２０１２／４／１  １０：００：０３．８」とを比較し、蓄積しない場合の処理終了予定時刻の方が早いので、暗号化プログラム２１１を起動し、ステップ１３０６に進む（ステップ１３０４）。
【０１５７】
暗号化プログラム２１１は、ステップ１３０１で受信した一つの処理対象データの暗号化処理を行い、データ送信プログラム２０９を起動する（ステップ１３０６）。この場合、暗号化プログラム２１１は、処理対象データをメインメモリ２０４に蓄積していき、一つ目の処理対象データ（１００ＭＢのデータ）の受信を完了すると、処理対象データをステップ１３０４で選択したＧＰＵ２９０１ｂのＧＰＵメモリ２９０２ｂに転送し、ステップ１３０４で選択したＧＰＵ２９０１ｂを用いて暗号化処理を行う。暗号化プログラム２１１は、暗号化処理が完了すると、暗号化されたデータをＧＰＵ２メモリ９０２ｂからメインメモリ２０４に転送する。暗号化プログラム２１１は、２つ目の処理対象データ（１００ＭＢのデータ）の受信を完了すると、処理対象データをステップ１３０４で選択したＧＰＵ２９０１ｂのＧＰＵメモリ２９０２ｂに転送し、ステップ１３０４で選択したＧＰＵ２９０１ｂを用いて暗号化処理を行う。暗号化プログラム２１１は、暗号化処理が完了すると、暗号化されたデータをＧＰＵメモリ２９０２ｂからメインメモリ２０４に転送する。暗号化プログラム２１１は、全ての処理対象データの暗号化処理を終了すると、処理状態データ９０６に格納された当該、処理終了予定時刻の情報を削除する。この場合、ＩＤ１２０１が「ＧＰＵ２」の処理終了予定時刻１２０２は「」となる。
【０１５８】
データ送信プログラム２０９は、ＣＰＵ２０２により実行され、ステップ１３０６で暗号化処理された処理結果データを、ＩＦ２０１を介してネットワークに送信し、処理を終了する（ステップ１３０７）。
【０１５９】
このように、蓄積判定プログラム９０３は受信した属性と、速度データと、処理状態とに基づいて、データを蓄積するか否かの判定を行うことで、処理時間の高速化を行うことが可能となる。
【０１６０】
なお、本実施例の一部を変更して、次のように実施してもよい。暗号化処理開始時に、処理状態データ９０６の処理終了予定時刻１２０２を上書きするのではなく、新たな行として追加する。これにより、過去にどのＧＰＵ９０１が暗号化処理を行っていたのかを把握することが可能となる。
【０１６１】
また、データ処理装置１０２が、異種のアーキテクチャをもつプロセッサを具備しても良い。これにより、ヘテロジニアスマルチコア環境において、アーキテクチャの違いを考慮した処理対象データの割り当てを行うことが可能となる。
【実施例３】
【０１６２】
本実施例は、複数のデータ送信装置と、複数のデータ受信装置が存在する場合の、データ処理システムである。
【０１６３】
実施例１では、一つのデータ送信装置１０１に一つのデータ処理装置１０２が存在するデータ処理システムを説明した。このため、データ送信装置１０１の数が増えると、それに伴いデータ処理装置１０２の数も増えてしまう。そこで、実施例３では、複数のデータ送信装置１０１の処理対象データを一つのデータ処理装置１０２で処理を行うデータ処理システムを説明する。一つのデータ処理装置１０２で処理を行うことで、データ処理装置１０２の数を抑えることが可能となる。
【０１６４】
図１４に、本実施例におけるデータ処理装置１０１を含むネットワークの構成例を示す。実施例１と同一の構成要素には同一の符号を付すことによってその説明を省略し、以下では、実施例１と異なる点を中心に説明する。
【０１６５】
データ処理装置１０２は、データ送信装置１１０１ａと、データ送信装置２１０１ｂと、データ送信装置３１０１ｃと、データ受信装置１１０３ａと、データ受信装置２１０３ｂと、データ受信装置３１０３ｃと、ネットワークを介して接続されている。ネットワークとは、例えば、インターネットなどのネットワーク、あるいはこれに接続するための通信網である。
【０１６６】
データ送信装置１０１（データ送信装置１１０１ａ、データ送信装置２１０１ｂ、データ送信装置３１０１ｃ）は、処理対象のデータが格納された処理対象データＤＢ１０４（処理対象データＤＢ１１０４ａ、処理対象データＤＢ２１０４ｂ、処理対象データＤＢ３１０４ｃ）と処理対象データＤＢ１０４に格納されている処理対象データに対して属性を作成する属性作成部１０５（属性作成部１１０５ａ、属性作成部２１０５ｂ、属性作成部３１０５ｃ）と処理対象データＤＢ１０４に格納されている処理対象データと、属性作成部１０５が作成した処理対象データの属性と、をデータ処理装置１０２に送信するデータ送信部１０６（データ送信部１１０６ａ、データ送信部２１０６ｂ、データ送信部３１０６ｃ）から構成される。
【０１６７】
データ処理装置１０２は、データ送信装置１０１から属性及び処理対象データを受信するデータ受信部１０９と、データ受信部１０９が受信した属性及び、速度データＤＢ１０７に格納されている速度データから、処理対象データを処理に最適なデータ量になるまでメインメモリ２０４に蓄積してからＧＰＵメモリ２１５に転送するか、一つの処理対象データをメインメモリ２０４に蓄積するごとにＧＰＵメモリ２１５に転送するかを判定する蓄積判定部１０８と、蓄積判定部１０８の判定結果を受け、データ受信部１０９が受信した処理対象データに対して処理を実行する処理実行部１１１と、処理実行部１１１が処理した処理結果を、データ受信装置１０３に送信するデータ送信部１１０から構成される。
【０１６８】
データ受信装置１０３（データ受信装置１１０３ａ、データ受信装置２１０３ｂ、データ受信装置３１０３ｃ）は、データ処理装置１０２から処理結果を受信するデータ受信部１１２（データ受信部１１１２ａ、データ受信部２１１２ｂ、データ受信部３１１２ｃ）と、データ受信部１１２が受信した処理結果を格納する、処理結果データＤＢ１１３（処理結果ＤＢ１１１３ａ、処理結果ＤＢ２１１３ｂ、処理結果ＤＢ３１１３ｂ）から構成される。
【０１６９】
なお、説明を簡単にするためデータ送信装置１０１を３台、データ受信装置１０３を３台で構成する例を示したが、必要に応じてデータ送信装置１０１及び、データ受信装置１０３の台数を増減しても良い。
【０１７０】
図１５は、本実施例におけるネットワーク転送速度データ２１４の一例を示す図である。図１５に示すように、ネットワーク転送速度データ２１４は、転送元装置１５０１と、転送先装置１５０２と、転送速度１５０３とを含む。ネットワーク転送速度データ２１４は、転送元装置１５０１から転送先装置１５０２にデータを転送する際のネットワーク転送速度が転送速度１５０３であることを表す。
【０１７１】
図１５を用いて具体的に説明する。例えば、転送元装置１５０１が「データ送信装置１」、転送先装置１５０２が「データ処理装置」、転送速度１５０３が「２００ＭＢ／ｓｅｃ」のネットワーク転送速度データは、データ送信装置１１０１ａから、データ処理装置１０２へ、１秒間に２００ＭＢのデータをネットワークを介して転送できることを表す。
【０１７２】
なお、ネットワーク転送速度データ２１４は、ネットワークを介したデータ転送にかかる処理時間を計測することにより求めることができる。処理時間の計測は、送信元装置と送信先装置間で予め算出していることが望ましい。また、ネットワーク転送速度データ２１４に格納される各情報は、管理者が必要に応じて、入力または更新しても良い。
【０１７３】
ネットワーク転送速度データ２１４は、ＣＰＵ２０２により実行される蓄積判定プログラム２１０がデータを蓄積するか否かを判定する際に利用される。蓄積判定プログラム２１０の具体的な処理については、図６を用いて後述する。
【０１７４】
図６に示すように、データ受信を行うデータ受信プログラム２０８は、ＣＰＵ２０２により実行され、データ送信装置１０１が送信する属性と処理対象データと処理結果を受信するデータ装置との情報を、ＩＦ２０１を介してネットワークから受信する（ステップ６０１）。
【０１７５】
なお、本実施例においては、データ受信プログラム２０８は、属性情報の受信を完了したのち、予め定めた秒数（例えば５秒）ほど、受信処理を継続したのち、データを蓄積するか否かを判定する蓄積判定プログラム２１０を起動する。これは、複数のデータ送信装置が送信する属性を受信するためである。
【０１７６】
蓄積判定プログラム２１０は、ＣＰＵ２０２により実行され、速度データの情報を取得する（ステップ６０２）。
【０１７７】
蓄積判定プログラム２１０は、ステップ６０１で取得した属性と、ステップ６０２で取得した速度データの情報とから、処理対象データを処理に最適なデータ量になるまでメインメモリ２０４に蓄積してからＧＰＵメモリ２１５に転送する場合の処理時間と、一つの処理対象データをメインメモリ２０４に蓄積するごとにＧＰＵメモリ２１５に転送する場合の処理時間とを算出する（ステップ６０３）。
【０１７８】
蓄積判定プログラム２１０は、ステップ６０３で算出した、処理対象データを処理に最適なデータ量になるまでメインメモリ２０４に蓄積してからＧＰＵメモリ２１５に転送する場合の処理時間と、一つの処理対象データをメインメモリ２０４に蓄積するごとにＧＰＵメモリ２１５に転送する場合の処理時間とを比較し、処理対象データを処理に最適なデータ量になるまでメインメモリ２０４に蓄積してからＧＰＵメモリ２１５に転送する場合の処理時間の方が短ければ、暗号化プログラム２１１を起動し、ステップ６０５に進み（ステップ６０４でＹＥＳ）、一つの処理対象データをメインメモリ２０４に蓄積するごとにＧＰＵメモリ２１５に転送する場合の処理時間の方が長ければ、暗号化プログラム２１１を起動し、ステップ６０６に進む（ステップ６０４でＮＯ）。
【０１７９】
暗号化プログラム２１１は、ステップ６０１で受信した処理対象データを処理に最適なデータ量になるまでメインメモリ２０４に蓄積してからＧＰＵメモリ２１５に転送し、暗号化処理を行い、データ送信プログラム２０９を起動する（ステップ６０５）。具体的には、暗号化プログラム２１１は、処理対象データをメインメモリ２０４に蓄積していき、処理に最適なデータ量の処理対象データの受信を完了すると、蓄積した処理対象データをＧＰＵメモリ２１５に転送し、ＧＰＵ２０３を用いて暗号化処理を行う。暗号化プログラム２１１は、暗号化処理が完了すると、暗号化されたデータをＧＰＵメモリ２１５からメインメモリ２０４に転送する。
【０１８０】
暗号化プログラム２１１は、ステップ６０１で受信した一つの処理対象データをメインメモリ２０４に蓄積するごとにＧＰＵメモリ２１５に転送し、暗号化処理を行い、データ送信プログラム２０９を起動する（ステップ６０６）。具体的には、暗号化プログラム２１１は、処理対象データをメインメモリ２０４に蓄積していき、一つ目の処理対象データの受信を完了すると、処理対象データをＧＰＵメモリ２１５に転送し、ＧＰＵ２０３を用いて暗号化処理を行う。暗号化プログラム２１１は、暗号化処理が完了すると、暗号化されたデータをＧＰＵメモリ２１５からメインメモリ２０４に転送する。暗号化プログラム２１１は、２つ目の処理対象データの受信を完了すると、処理対象データをＧＰＵメモリ２１５に転送し、ＧＰＵ２０３を用いて暗号化処理を行う。暗号化プログラム２１１は、暗号化処理が完了すると、暗号化されたデータをＧＰＵメモリ２１５からメインメモリ２０４に転送する。
【０１８１】
データ送信プログラム２０９は、ＣＰＵ２０２により実行され、ステップ６０５、またはステップ６０６で暗号化処理された処理結果データを、ステップ６０１で取得したデータ受信装置へＩＦ２０１を介して送信し、処理を終了する（ステップ６０７）。
【０１８２】
このように、データ処理装置１０２が、複数のデータ送信装置１０１からの属性と、処理対象データと、データ受信装置との情報を取得し、処理結果を複数のデータ受信装置１０３に送信することで、データ処理装置の台数を抑えたデータ処理が可能となる。
【０１８３】
以上、本発明の実施形態について説明したが、上記実施形態によれば、複数の演算装置が混在したデータ処理装置において、データ転送にかかる負荷を軽減し、データ処理時間を短縮できる。
【０１８４】
また、本発明は、上記実施形態そのままに限定されるものではなく、実施段階ではその要旨を逸脱しない範囲で構成要素を変形して具体化することができる。また、上記実施形態に開示されている複数の構成要素の適宜な組み合わせにより、種々の発明を形成することができる。例えば、実施形態に示される全構成要素からいくつかの構成要素を削除してもよい。さらに、異なる実施形態にわたる構成要素を適宜組み合わせても良い。
【符号の説明】
【０１８５】
１０１・・・データ送信装置、１０２・・・データ処理装置、１０３・・・データ受信装置、２０１・・・ＩＦ、２０２・・・ＣＰＵ、２０３・・・ＧＰＵ、２０４・・・メインメモリ、２０５、記憶装置、２１５・・・ＧＰＵメモリ。
【図１】
2014026484.tif 000003
【図２】
2014026484.tif 000004
【図３】
2014026484.tif 000005
【図４】
2014026484.tif 000006
【図５】
2014026484.tif 000007
【図６】
2014026484.tif 000008
【図７】
2014026484.tif 000009
【図８】
2014026484.tif 000010
【図９】
2014026484.tif 000011
【図１０】
2014026484.tif 000012
【図１１】
2014026484.tif 000013
【図１２】
2014026484.tif 000014
【図１３】
2014026484.tif 000015
【図１４】
2014026484.tif 000016
【図１５】
2014026484.tif 000017