(57)【要約】【課題】複数の処理装置が混在し、かつ連携して動作するデータ処理システムにおいて、データを処理に最適なサイズで分割し、データ処理システム全体でのデータ処理時間を短縮するデータ処理方法、これを実施するデータ処理システム及びデータ処理プログラムを提供する。【解決手段】処理装置１０１は、それぞれ、複数の処理装置１０１、１０２の各々が具備する演算装置の仕様を示すデータ２１１を記憶する記憶装置２０５を具備し、前記処理装置１０１が具備する演算装置２０２は、前記記憶装置２０５に記憶されている、前記複数の処理装置の各々が具備する複数の演算装置の仕様に基づいて、処理対象データの分割サイズを決定し、前記決定した分割サイズに従って、前記処理対象データを分割し、前記分割した処理対象データに対して、所定の処理を実行する。【選択図】  図２
2014170259.tif 000002
【特許請求の範囲】
【請求項１】
複数の演算装置を具備する第１の処理装置と、
前記演算装置とは、仕様が異なる複数の演算装置を具備した第２の処理装置と、
から構成されるデータ処理システムにおけるデータ処理方法であって、
前記第１の処理装置の前記演算装置により、
前記第１の処理装置に記憶されている、前記第１の処理装置の前記演算装置の仕様と、前記第２の処理装置の前記演算装置の仕様と、に基づいて、処理対象データの分割サイズを決定し、
前記決定した分割サイズに従って、前記処理対象データを分割し、
前記分割した処理対象データに対して、所定の処理を行い、
前記第２の処理装置の前記演算装置により、
前記第２の処理装置に記憶されている、前記第１の処理装置の前記演算装置の仕様と、前記第２の処理装置の前記演算装置の仕様と、に基づいて、処理対象データの分割サイズを決定し、
前記決定した分割サイズに従って、前記処理対象データを分割し、
前記分割した処理対象データに対して、所定の処理を行う、
ことを特徴とするデータ処理方法。
【請求項２】
前記仕様は、前記第１の処理装置の前記演算装置が具備するコア数及びメモリサイズと、
前記第２の処理装置の前記演算装置が具備するコア数及びメモリサイズを示す情報と、を含む、
ことを特徴とする請求項１に記載のデータ処理方法。
【請求項３】
前記所定の処理は前記処理対象データのハッシュ化処理を含む、
ことを特徴とする請求項１に記載のデータ処理方法。
【請求項４】
前記分割サイズは、
前記第１の処理装置の前記演算装置が具備する前記メモリサイズを前記第１の処理装置の前記演算装置が具備する前記コア数で除した値と、
前記第２の処理装置の前記演算装置が具備する前記メモリサイズを前記第２の処理装置の前記演算装置が具備する前記コア数で除した値と、
の最大公約数である、
ことを特徴とする請求項２に記載のデータ処理方法。
【請求項５】
前記複数の演算装置はＣＰＵとＧＰＵである、
ことを特徴とする請求項１に記載のデータ処理方法。
【請求項６】
前記第１の処理装置の前記演算装置により、
前記第１の処理装置の優先度と、前記第２の処理装置の優先度と、
を比較し、優先度の高い処理装置の前記演算装置が具備する前記メモリサイズを前記優先度の高い処理装置の前記演算装置が具備する前記コア数で除した値を、前記分割サイズとする、
ことを特徴とする請求項２に記載のデータ処理方法。
【請求項７】
前記第１の処理装置の前記演算装置により、
前記第２の処理装置から、前記第２の処理装置が具備する前記演算装置の仕様を取得し、前記分割サイズを決定する、
ことを特徴とする請求項２に記載のデータ処理方法。
【請求項８】
複数の演算装置を具備する第１の処理装置と、
前記演算装置とは、仕様が異なる複数の演算装置を具備した第２の処理装置と、
から構成されるデータ処理システムであって、
前記第１の処理装置の前記演算装置により、
前記第１の処理装置に記憶されている、前記第１の処理装置の前記演算装置の仕様と、前記第２の処理装置の前記演算装置の仕様と、に基づいて、処理対象データの分割サイズを決定し、
前記決定した分割サイズに従って、前記処理対象データを分割し、
前記分割した処理対象データに対して、所定の処理を行い、
前記第２の処理装置の前記演算装置により、
前記第２の処理装置に記憶されている、前記第１の処理装置の前記演算装置の仕様と、前記第２の処理装置の前記演算装置の仕様と、に基づいて、処理対象データの分割サイズを決定し、
前記決定した分割サイズに従って、前記処理対象データを分割し、
前記分割した処理対象データに対して、所定の処理を行う、
ことを特徴とするデータ処理システム。
【請求項９】
前記仕様は、前記第１の処理装置の前記演算装置が具備するコア数及びメモリサイズと、
前記第２の処理装置の前記演算装置が具備するコア数及びメモリサイズを示す情報と、を含む、
ことを特徴とする請求項８に記載のデータ処理システム。
【請求項１０】
前記所定の処理は前記処理対象データのハッシュ化処理を含む、
ことを特徴とする請求項８に記載のデータ処理システム。
【請求項１１】
前記分割サイズは、
前記第１の処理装置の前記演算装置が具備する前記メモリサイズを前記第１の処理装置の前記演算装置が具備する前記コア数で除した値と、
前記第２の処理装置の前記演算装置が具備する前記メモリサイズを前記第２の処理装置の前記演算装置が具備する前記コア数で除した値と、
の最大公約数である、
ことを特徴とする請求項９に記載のデータ処理システム。
【請求項１２】
前記複数の演算装置はＣＰＵとＧＰＵである、
ことを特徴とする請求項８に記載のデータ処理システム。
【請求項１３】
前記第１の処理装置の前記演算装置により、
前記第１の処理装置の優先度と、前記第２の処理装置の優先度と、
を比較し、優先度の高い処理装置の前記演算装置が具備する前記メモリサイズを前記優先度の高い処理装置の前記演算装置が具備する前記コア数で除した値を、前記分割サイズとする、
ことを特徴とする請求項９に記載のデータ処理システム。
【請求項１４】
前記第１の処理装置の前記演算装置により、
前記第２の処理装置から、前記第２の処理装置が具備する前記演算装置の仕様を取得し、前記分割サイズを決定する、
ことを特徴とする請求項９に記載のデータ処理方法。
【請求項１５】
複数の処理装置とデータ送受信を行うコンピュータに実行させるデータ処理プログラムであって、
記憶部に記憶されている、前記各処理装置が具備する複数の演算装置の仕様に基づいて、処理対象データの分割サイズを決定し、
前記決定した分割サイズに従って、前記処理対象データを分割し、
前記分割した処理対象データに対して、所定の処理を実行させる、データ処理プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、複数の処理装置が混在し、かつ連携して動作するデータ処理システムにおいて、データ処理にかかる処理時間を短縮する技術に関する。
【背景技術】
【０００２】
公共分野では、公共機関が保有する様々なデータのオープン化が押し進められている。医療分野においても、情報（カルテ等）利活用のための環境整備が進められており、今後は、これまでにない大容量データの連携が想定される。公共機関が保有しているデータには機微な情報が含まれており、安全なデータ連携を実現するためには、データが改ざんされていないことを確認する技術が重要となる。改ざん検知技術として、ハッシュ処理を利用した電子署名が存在するが、大容量データのハッシュ処理には時間を要する。以上のような背景から、大容量データを高速にハッシュ処理する技術が求められている。
【０００３】
一方、データを効率的に処理する技術として、ＧＰＵ（Ｇｒａｐｈｉｃｓ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）をグラフィックス処理のみならず汎用計算に利用するＧＰＧＰＵ（Ｇｅｎｅｒａｌ  Ｐｕｒｐｏｓｅ  ＧＰＵ）と呼ばれる技術が、近年注目されている。
【０００４】
ＧＰＵとは、一般的に画像処理を専門とする演算装置であり、ＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）と呼ばれる主演算装置の制御下で用いられる動画信号生成専用の集積回路である。動画像の実時間内での生成は高負荷な演算能力が要求されるが、その多くが定式化された単純な演算の繰り返しであるためハードウェア化に向いており、ＧＰＵを製造しているメーカーから、高速なメモリインタフェース機能と高い画像演算能力を備えた製品が販売されている。これらの製品は日々進化しており、各社から多数の、仕様の異なる製品が提供されているのが現状である。
【０００５】
ＧＰＧＰＵは、ＧＰＵを汎用計算に利用しているため、汎用性の高いＣＰＵと比較して、大量のデータを用いて、比較的単純な処理を並列処理することに向いているが、反面、その特性と合わないプログラムには性能を期待できない。
【０００６】
例えば、特許文献１には、対象データを固定長のセグメントに分割し、分割したセグメントごとに一方向ハッシュ関数をその全データ列に適用してセグメント別ハッシュ値を算出し、セグメント別ハッシュ値を対象データのデータ順に応じて並べ、再度一方向ハッシュ関数を適用して全体のハッシュ値を算出するハッシュ値生成プログラムが開示されている。特許文献１において、セグメント別ハッシュ値の算出を、ＧＰＵなどの並列動作が可能なハッシュ値計算手段で実行することで、ハッシュ値算出に要する時間を短縮することができる。
【先行技術文献】
【特許文献】
【０００７】
【特許文献１】特開２００７−２５７５６６号公報
【発明の概要】
【発明が解決しようとする課題】
【０００８】
特許文献１の技術は、対象データを固定長のセグメントに分割し、セグメント別ハッシュ値の算出を並列に動作させることで、ハッシュ処理の高速化を行っている。しかし、ハッシュ処理などのデータ処理を行う処理装置には、処理装置が具備する演算装置のコア数やコアの演算性能、メモリ容量が異なるなど様々な構成が存在しており、これらが連携するシステムにおいて、固定長のセグメント分割ではシステム全体での処理時間を短縮することができない。
【０００９】
本発明は、上記事情に鑑みてなされたものであり、複数の処理装置が混在し、かつ連携して動作するデータ処理システムにおいて、最適な分割サイズを決定し、システム全体としてさらなる処理時間の短縮を行うデータ処理方法、これを実施するデータ処理システム及びデータ処理プログラムを提供することを目的とする。
【課題を解決するための手段】
【００１０】
本発明の代表的な一例は、以下の通りである。すなわち、本発明は、複数の処理装置とデータ送受信を行うコンピュータに実行させるデータ処理プログラムであって、記憶部に記憶されている、前記各処理装置が具備する複数の演算装置の仕様に基づいて、処理対象データの分割サイズを決定し、前記決定した分割サイズに従って、前記処理対象データを分割し、前記分割した処理対象データに対して、所定の処理を実行させることを特徴とする。
【発明の効果】
【００１１】
本発明によれば、処理対象データを処理に最適なデータ量で分割し処理を行うため、複数の処理装置が混在し、かつ連携して動作するデータ処理システムにおいて、システム全体でのデータ処理時間を短縮できる。
【図面の簡単な説明】
【００１２】
【図１】本発明の実施例１に係るデータ処理システムの構成例を示す図である。
【図２】本発明の実施例１に係る処理装置のハードウェア構成例を示す図である。
【図３】本発明の実施例１に係るＧＰＵ仕様データの一例を示す図である。
【図４】本発明の実施例１に係るハッシュ値算出処理の概要を示す図である。
【図５】本発明の実施例１に係る署名生成処理を示すフローチャートである。
【図６】本発明の実施例１に係る分割サイズ算出処理を示すフローチャートである。
【図７】本発明の実施例１に係るハッシュ値算出処理を示すフローチャートである。
【図８】本発明の実施例１に係る署名検証処理を示すフローチャートである。
【図９】本発明の実施例２に係る処理装置のハードウェア構成例を示す図である。
【図１０】本発明の実施例２に係る優先度データの一例を示す図である。
【図１１】本発明の実施例２に係る分割サイズ算出処理を示すフローチャートである。
【図１２】本発明の実施例３に係るデータ処理装置のハードウェア構成例を示す図である。
【図１３】本発明の実施例３に係るＧＰＵ仕様を交換する場合のシーケンスを表した図である。
【発明を実施するための形態】
【００１３】
ＧＰＵは多くのコア（演算機能を備えた演算器）を持っているため、大量データの並列処理を高速に行うことができる。ＧＰＵで処理を行うためには、ＧＰＵ内のメモリ（以下、ＧＰＵメモリと記す）に処理対象のデータを転送する必要がある。転送された処理対象データに対して、ＧＰＵが備える大量のコアで演算を行うことで、並列処理を実現している。
【００１４】
ＧＰＵの性能を最大限に発揮するためには、大量のコアを同時に利用して演算処理することが望ましい。例えば、処理対象データをＧＰＵが持つコア数で分割し、各コアで演算することで、ＧＰＵが持つコアを最大限に活用した演算を行うことが可能となる。一方、データを分割して行う処理には、分割サイズが後々の処理に影響を与えるものも存在する。例えば、ハッシュ化処理では分割したサイズ毎にハッシュ処理をしなければ生成されるハッシュ値が異なってしまう。そのため、ＧＰＵの性能が異なる処理装置（コンピュータ）が混在したデータ処理システムにおいては、１つ目の処理装置で最適になるようにデータ分割を行うと、２つめの処理装置では性能が発揮できなくなってしまうという問題がある。
【００１５】
そこで、本実施形態では、複数の処理装置が具備するＧＰＵの仕様を用いて、データ分割サイズを算出し、データ処理を行うデータ処理システムを説明する。なお、本実施形態では、データ処理として、ハッシュ化処理を行う場合のデータ処理システムについて説明する。データ処理はハッシュ化処理に限ったものではなく、データ連携するにあたり対になる処理（例えば、暗号化処理と復号化処理や、圧縮処理と解凍処理等）を用いても良い。また、本実施形態では、データ処理装置が具備する複数の演算装置として、ＣＰＵとＧＰＵを例にとって説明するが、その他の演算装置（例えば、マルチコアＣＰＵやＤＳＰ（Ｄｉｇｉｔａｌ  Ｓｉｇｎａｌ  Ｐｒｏｃｅｓｓｏｒ）等）であっても良い。
【００１６】
本実施形態では、データの分割サイズ算出処理により、処理に最適なデータサイズを算出する。実施例１では、この点に着目し、ＧＰＵ仕様データに基づくデータ分割サイズ算出処理について説明する。
【００１７】
実施例２では、処理装置の優先度を考慮した場合のデータ分割サイズ算出処理について説明する。
【００１８】
実施例３では、ＧＰＵ仕様データを格納しない場合のデータ分割サイズ算出処理について説明する。
【実施例１】
【００１９】
図１は、本発明の実施例１に係るデータ処理システムの構成例を示す図である。実施例１に係るデータ処理システムは、処理対象データを分割しデータ処理を行う処理装置Ａ１０１と、処理装置Ａ１０１が送信した処理対象データと処理結果を受信し、データ処理を行う処理装置Ｂ１０２と、を含んで構成される。各処理装置間は、ネットワークを介して相互に接続される。
【００２０】
詳細を後述するが、処理装置Ａ１０１は、ＣＰＵ、ＧＰＵ、ＣＰＵ及びＧＰＵが実行する各種プログラムを記憶するメインメモリ、プログラム実行時に使用する各種データを記憶する記憶装置等を具備する。処理装置Ａ１０１は、データ処理システムの処理装置が具備するＧＰＵの仕様データが格納されたＧＰＵ仕様データベース（以下、「データベース」は「ＤＢ」と記す）１０３と、ＧＰＵ仕様ＤＢ１０３に格納されているＧＰＵ仕様データに基づき、分割サイズを算出する分割サイズ算出部１０５と、分割サイズ算出部１０５が算出した分割サイズに従って、処理対象データ１０４を分割するデータ分割部１０６と、データ分割部１０６が分割した処理対象データ１０４のハッシュ値を算出するハッシュ処理部１０７と、ハッシュ処理部１０７が算出した処理対象データ１０４のハッシュ値を暗号化処理する暗号化部１０８と、暗号化処理部が算出したデータ処理結果と処理対象データ１０４とを処理装置Ｂ１０２に送信するデータ送信部１０９と、から構成される。なお、ＧＰＵ仕様データとは、ＧＰＵが具備するコア数や、コアの演算性能（クロック数）、メモリ容量や、メモリ帯域、コアの消費電力等のＧＰＵのスペックを表すものである。本実施例では、コア数及び、メモリ容量を用いて分割サイズを算出する方法を説明するが、その他の仕様を用いて分割サイズを算出しても良い。ＧＰＵ仕様ＤＢ１０３の詳細について図３を用いて後述する。
【００２１】
処理装置Ｂ１０２は、処理装置Ａ１０１から処理対象データ１０４及びその処理結果を受信するデータ受信部１１０と、ＧＰＵ仕様ＤＢ１１６に格納されているＧＰＵ仕様データに基づき、分割サイズを算出する分割サイズ算出部１１５と、データ受信部１１０が受信した処理対象データ１０４を、分割サイズ算出部１１５が算出した分割サイズに従って分割するデータ分割部１１２と、データ分割部１１２が分割した処理対象データ１０４のハッシュ値を算出するハッシュ処理部１１３と、データ受信部１１０が受信した処理結果を復号化する復号化部１１１と、ハッシュ処理部１１３が算出したハッシュ値と、復号化部１１１が算出した処理結果の復号結果とを比較する比較部１１４と、から構成される。
【００２２】
図２は、複数の処理装置が具備するＧＰＵの仕様を用いて、データ分割サイズを算出し、データ処理を行う処理装置のハードウェア構成例を示す図である。処理装置Ａ１０１は、ＣＰＵ２０１と、ＧＰＵＡ２０２と、ＣＰＵ２０１及びＧＰＵＡ２０２が処理を実行するために必要なデータを格納するためのメインメモリ２０４と、大量のデータを記憶する容量を持つハードディスクやフラッシュメモリなどの記憶装置２０５と、他装置と通信を行なうためのＩＦ（インタフェース）２０３と、キーボード、ディスプレイなどの入出力を行うための入出力装置２０６と、これらの各装置を接続する通信路（バス）２０７と、を備えたコンピュータである。なお、通信路２０７は、例えば、バスやケーブルなどの情報伝達媒体である。
【００２３】
ＧＰＵＡ２０２は、ＧＰＵＡ２０２が処理を実行するために必要なデータを格納するためのＧＰＵメモリＡ２１２を備える。
【００２４】
ＣＰＵ２０１は、メインメモリ２０４に格納された分割サイズ算出プログラム２０８を実行することにより、ＧＰＵ仕様ＤＢ１０３に基づいた分割サイズの算出を行う。また、ＣＰＵ２０１は、署名作成プログラム２０９を実行することにより、処置対象データ１０４の分割及び、ＧＰＵＡ２０２を用いたハッシュ値算出、当該ハッシュ値の暗号化処理を行う。また、ＣＰＵ２０１は、送受信プログラム２１０を実行することにより、処理対象データ１０４及び、処理結果（暗号化されたハッシュ値）を処理装置Ｂ１０２に送信する。
【００２５】
記憶装置２０５には、データ処理システムに存在する処理装置が具備するＧＰＵの仕様を示すＧＰＵ仕様データ２１１が格納されている。
【００２６】
上記の各プログラムやデータは、あらかじめメモリ２０４または記憶装置２０５に格納されていてもよいし、必要な時に、入出力装置２０６からまたは、ＩＦ２０３を介して他の装置から、インストール（ロード）されても良い。
【００２７】
処理装置Ｂ１０２は、ＣＰＵ２１３と、ＧＰＵＢ２１４と、ＣＰＵ２１３及びＧＰＵＢ２１４が処理を実行するために必要なデータを格納するためのメインメモリ２１６と、大量のデータを記憶する容量を持つハードディスクやフラッシュメモリなどの記憶装置２１７と、他装置と通信を行なうためのＩＦ（インタフェース）２１５と、キーボード、ディスプレイなどの入出力を行うための入出力装置２１８と、これらの各装置を接続する通信路（バス）２１９と、を備えたコンピュータである。なお、通信路２１９は、例えば、バスやケーブルなどの情報伝達媒体である。
【００２８】
ＧＰＵＢ２１４は、ＧＰＵＢ２１４が処理を実行するために必要なデータを格納するためのＧＰＵメモリＢ２２４を備える。なお、本実施例では、ＧＰＵＡ２０２と、ＧＰＵＢ２１４の仕様が異なっていることを想定し、説明を行う。
【００２９】
ＣＰＵ２１３は、送受信プログラム２２２を実行することにより、処理対象データ１０４及び、処理結果（暗号化されたハッシュ値）を処理装置Ａ１０１から受信する。また、ＣＰＵ２１３は、メインメモリ２１６に格納された分割サイズ算出プログラム２２０を実行することにより、ＧＰＵ仕様ＤＢ１１６に基づいた分割サイズの算出を行う。また、ＣＰＵ２１３は、署名検証プログラム２２１を実行することにより、処置対象データ１０４の分割及び、ＧＰＵＢ２１４を用いたハッシュ値算出、受信した処理結果の復号化処理、算出したハッシュ値と、復号化した処理結果との比較処理を行い、受信した処理対象データ１０４が改ざんされていなか確認を行う。
【００３０】
記憶装置２１７には、データ処理システムに存在する処理装置が具備するＧＰＵの仕様を示すＧＰＵ仕様データ２２３が格納されている。
【００３１】
上記の各プログラムやデータは、あらかじめメモリ２１６または記憶装置２１７に格納されていてもよいし、必要な時に、入出力装置２１８からまたは、ＩＦ２１５を介して他の装置から、インストール（ロード）されても良い。
【００３２】
なお、処理装置Ａ１０１と、処理装置Ｂ１０２とは、ネットワーク２２５を介して接続されている。
【００３３】
図３は、ＧＰＵ仕様データ２２１の一例を示す図である。図３に示すように、ＧＰＵ仕様データ２２１は、処理装置ＩＤ３０１と、ＧＰＵＩＤ３０２と、ＧＰＵコア数３０３と、ＧＰＵメモリサイズ３０４と、を含む。処理装置ＩＤ３０１は、データ処理システムに存在する処理装置を一意に識別できる情報（識別子）を表している。ＧＰＵＩＤ３０２は、処理装置に存在するＧＰＵを一意に識別できる情報を表している。ＧＰＵコア数３０３は、ＧＰＵが具備するコアの数を表し、ＧＰＵメモリサイズ３０４は、ＧＰＵが具備するＧＰＵメモリのサイズを表している。処理装置ＩＤ３０１と、ＧＰＵＩＤ３０２を用いることにより、データ処理システム内のどの処理装置のどのＧＰＵの仕様を表しているかを一意に特定することが可能となる。
【００３４】
図３を用いて具体的に説明する。例えば、処理装置ＩＤ３０１が「処理装置Ａ」、ＧＰＵＩＤ３０２が「ＧＰＵＡ」、ＧＰＵコア数３０３が「１００」、ＧＰＵメモリサイズ３０４が「１．５Ｇ」のＧＰＵ仕様データは、「処理装置Ａ」の処理装置が、「ＧＰＵＡ」のＧＰＵを具備しており、当該ＧＰＵのコア数が「１００」、メモリサイズが「１．５Ｇ」であることを表す。
【００３５】
なお、ＧＰＵ仕様データ２２１は、ＧＰＵの仕様情報を基に設定する。また、ＧＰＵ仕様データ２２１の各情報は、管理者が必要に応じて、入力または更新しても良い。
【００３６】
ＧＰＵ仕様データ２２１は、ＣＰＵ２０１により実行される分割サイズ算出プログラム２０８が処理対象データの分割サイズを算出する際に利用される。分割サイズ算出プログラム２０８の具体的な処理については、図６を用いて後述する。
【００３７】
ここで、ＧＰＵを用いたハッシュ値算出処理の概要について説明する。図４は、ＧＰＵを用いてハッシュ値を算出する処理を示した図である。通常ハッシュ値を算出する際には、処理対象データ１０４に対してハッシュ処理を行う。本実施例では、処理対象データ１０４を分割したサブデータ４０１のそれぞれにハッシュ処理４０２を行うことで、サブデータのハッシュ値４０３を算出する。算出されたサブデータのハッシュ値４０３に対してＣＰＵを用いて再度ハッシュ処理を行うことで、処理対象データ１０４のハッシュ値４０４を算出する。ここで、サブデータ４０１に対するハッシュ処理４０２をＧＰＵで並列実行することにより、処理対象データ１０４のハッシュ値４０４算出にかかる処理時間を短縮することが可能となる。
【００３８】
なお、サブデータのハッシュ値４０３に対するハッシュ処理はＣＰＵで行うことを説明したが、ＧＰＵを用いて処理しても良い。この場合、サブデータのハッシュ値４０３を処理対象データ１０４とみなし、再度データ分割を行ってハッシュ処理を行うことで、さらなる処理時間の短縮が可能となる。
【００３９】
続いて、処理装置Ａ１０１の分割サイズ算出プログラム２０８が、ＧＰＵ仕様データ２１１を基に分割サイズを算出し、署名作成プログラム２０９が、処理対象データ１０４の暗号化されたハッシュ値を生成（署名を生成）し、送受信プログラム２１０が処理対象データ１０４と、処理対象データ１０４の処理結果をＩＦ２０３を介してネットワークに送信する処理について説明する。
【００４０】
図５は、処理装置Ａ１０１における処理を示すフローチャートである。図５に示すように、署名生成を行う署名作成プログラム２０９は、ＣＰＵ２０１により実行され、処理対象データ、処理結果を送信する処理装置ＩＤ、送信元処理装置（処理装置Ａ１０１）で利用するＧＰＵＩＤの情報、及び処理結果送信先処理装置で利用するＧＰＵＩＤの情報を取得する（ステップ５０１）。
【００４１】
署名作成プログラム２０９は、分割サイズ算出プログラム２０８を起動し、ＧＰＵ仕様データ２１１に基づき分割サイズを算出する（ステップ５０２）。この時、署名作成プログラム２０９は、送信元処理装置で利用するＧＰＵと、送信先処理装置で利用するＧＰＵの情報を分割サイズ算出プログラム２０８に送信する。ここで、送信元処理装置で利用するＧＰＵの情報とは、署名作成プログラム２０９が稼働している処理装置の処理装置ＩＤ３０１及び、ＧＰＵＩＤ３０２を表し、送信先処理装置で利用するＧＰＵの情報とは、ステップ５０１で取得した処理結果送信先処理装置の処理装置ＩＤ３０１及びＧＰＵＩＤ３０２を表す。なお、ＧＰＵ仕様データ２１１に基づいた分割サイズ算出については、図６を用いて後述する。
【００４２】
署名作成プログラム２０９は、ステップ５０２で算出した分割サイズに従って処理対象データを分割し、ＧＰＵＡ２０２を用いて処理対象データのハッシュ値を算出する（ステップ５０３）。なお、ＧＰＵＡ２０２を用いた処理対象データのハッシュ値算出処理については、図７を用いて後述する。
【００４３】
署名作成プログラム２０９は、ステップ５０３で算出したハッシュ値の暗号化を行う（ステップ５０４）。
【００４４】
署名作成プログラム２０９は、送受信プログラムを起動し、ステップ５０１で取得した処理対象データと、ステップ５０３で算出した暗号化済みハッシュ値と、送信元処理装置で利用するＧＰＵ情報と、送信先処理装置で利用するＧＰＵの情報を、ＩＦ２０３を介してネットワーク２２５に送信し、処理を終了する（ステップ５０５）。
【００４５】
図６は、分割サイズ算出プログラム２０８の分割サイズ算出を示すフローチャートである。図６に示すように、分割サイズを算出する分割サイズ算出プログラム２０８は、ＣＰＵ２０１により実行され、送信元処理装置で利用するＧＰＵと、送信先処理装置で利用するＧＰＵの情報を、署名作成プログラム２０９より受信する（ステップ６０１）。
【００４６】
分割サイズ算出プログラム２０８は、ＧＰＵ仕様データ２１１を取得する（ステップ６０２）。
【００４７】
分割サイズ算出プログラム２０８は、送信元処理装置における最適分割サイズを算出する（ステップ６０３）。具体的には、送信元処理装置が具備するＧＰＵメモリサイズ３０４を、ＧＰＵコア数３０３で割った値を、送信元処理装置における最適分割サイズとして算出する。
【００４８】
分割サイズ算出プログラム２０８は、送信先処理装置における最適分割サイズを算出する（ステップ６０４）。具体的には、送信先処理装置が具備するＧＰＵメモリサイズ３０４を、ＧＰＵコア数３０３で割った値を、送信先処理装置における最適分割サイズとして算出する。
【００４９】
分割サイズ算出プログラム２０８は、ステップ６０３で算出した送信元処理装置における最適分割サイズと、ステップ６０４で算出した送信先処理装置における最適分割サイズから、データ処理システムにおける最適分割サイズを算出する（ステップ６０５）。具体的には、送信元処理装置における最適分割サイズと、送信先処理装置における最適分割サイズとの最大公約数を、データ処理システムにおける最適分割サイズとして算出する。
【００５０】
図７は、署名作成プログラム２０９のＧＰＵを用いたハッシュ値算出を示すフローチャートである。図７に示すように、ハッシュ値を算出する署名作成プログラム２０９は、ＣＰＵ２０１により実行され、処理対象データを分割サイズ算出プログラム２０８が算出した分割サイズで分割し、処理装置Ａ１０１が具備するＧＰＵＡ２０２のコア数分の分割されたデータをＧＰＵメモリＡ２１２に転送する（ステップ７０１）。
【００５１】
署名作成プログラム２０９は、ＧＰＵＡ２０２を用いて、ＧＰＵメモリＡ２１２に転送された分割済みデータのハッシュ処理を行い、算出された分割データのハッシュ値をメインメモリ２０４に転送する（ステップ７０２）。
【００５２】
署名作成プログラム２０９は、処理対象データのうちハッシュ化処理が完了していないデータが存在すれば、当該データを新たな処理対象データとしてステップ７０１に進み、すべての処理対象データがハッシュ化処理されていればステップ７０４に進む（ステップ７０３）。
【００５３】
署名作成プログラム２０９は、メインメモリに格納された分割データのハッシュ値を全て集め、再度ハッシュ処理を行い、処理対象データのハッシュ値を算出し、終了する（ステップ７０４）。
【００５４】
ステップ６０１からステップ６０５及び、ステップ７０１からステップ７０４を含めたステップ５０１からステップ５０５までの処理の流れを、具体例を用いて説明する。例えば、ＧＰＵＡ２０２のコア数が「１００」、メモリサイズが「１．５Ｇ」、ＧＰＵＢ２１４のコア数が「２００」、メモリサイズが「２．０Ｇ」とし、処理対象データ１０４のファイルサイズが「１．０Ｇ」であるとする。
【００５５】
署名作成プログラム２０９は、処理対象データ１０４と、処理結果送信先処理装置ＩＤ「処理装置Ｂ」、処理装置Ａ１０１で利用するＧＰＵＩＤ「ＧＰＵＡ」、処理結果送信先処理装置で利用するＧＰＵＩＤ「ＧＰＵＢ」を取得する（ステップ５０１）。
【００５６】
署名作成プログラム２０９は、分割サイズ算出プログラム２０８を起動する。分割サイズ算出プログラム２０８は、送信元処理装置で利用するＧＰＵ情報と、送信先処理装置で利用するＧＰＵの情報を署名作成プログラム２０９から受信する（ステップ６０１）。具体的には、送信元処理装置ＩＤ「処理装置Ａ」、送信元処理装置が利用するＧＰＵＩＤ「ＧＰＵＡ」、送信先処理装置ＩＤ「処理装置Ｂ」、送信先処理装置で利用するＧＰＵＩＤ「ＧＰＵＢ」の情報を受信する。
【００５７】
分割サイズ算出プログラム２０８は、ＧＰＵ仕様データ２１１より、ＧＰＵの仕様を取得する（ステップ６０２）。具体的には、分割サイズ算出プログラム２０８は、ＧＰＵ仕様データ２１１から、送信元処理装置が利用するＧＰＵの仕様及び、送信先処理装置が利用するＧＰＵの仕様を取得する。この時、送信元処理装置が利用するＧＰＵの仕様は、処理装置ＩＤ３０１が「処理装置Ａ」、ＧＰＵＩＤ３０２が「ＧＰＵＡ」に該当する、ＧＰＵコア数３０３が「１００」、ＧＰＵメモリサイズ３０４が「１．５Ｇ」の情報となる。また、送信先処理装置が利用するＧＰＵの仕様は、処理装置ＩＤ３０１が「処理装置Ｂ」、ＧＰＵＩＤ３０２が「ＧＰＵＢ」に該当する、ＧＰＵコア数３０３が「２００」、ＧＰＵメモリサイズ３０４が「２．０Ｇ」の情報となる。
【００５８】
分割サイズ算出プログラム２０８は、送信元処理装置におけるＧＰＵメモリサイズを、ＧＰＵコア数で割った値を、送信元処理装置の最適分割サイズとして算出する（ステップ６０３）。具体的には、ステップ６０２で取得した送信元処理装置のＧＰＵメモリサイズ３０４「１．５Ｇ」をＧＰＵコア数３０３「１００」で割った値「１５Ｍ」を、送信元処理装置における最適分割サイズとして算出する。
【００５９】
分割サイズ算出プログラム２０８は、送信先処理装置におけるＧＰＵメモリサイズを、ＧＰＵコア数で割った値を、送信先処理装置の最適分割サイズとして算出する（ステップ６０４）。具体的には、ステップ６０２で取得した送信先処理装置のＧＰＵメモリサイズ３０４「２．０Ｇ」をＧＰＵコア数３０３「２００」で割った値「１０Ｍ」を、送信先処理装置における最適分割サイズとして算出する。
【００６０】
分割サイズ算出プログラム２０８は、送信元処理装置の最適分割サイズと、送信先処理装置の最適分割サイズから、データ処理システムの最適分割サイズを算出する（ステップ６０５）。具体的には、ステップ６０３で算出した送信元処理装置における最適分割サイズ「１５Ｍ」と、ステップ６０４で算出した送信先処理装置における最適分割サイズ「１０Ｍ」の最大公約数「５Ｍ」をデータ処理システムの最適分割サイズとして算出する。
【００６１】
署名作成プログラム２０９は、分割サイズ算出プログラム２０８が算出した分割サイズ「５Ｍ」を取得する（ステップ５０２）と、ＧＰＵを用いたハッシュ値算出処理を行う（ステップ５０３）。
【００６２】
署名作成プログラム２０９は、処理対象データ１０４を分割サイズ算出プログラム２０８が算出した分割サイズ「５Ｍ」で分割し、処理装置Ａ１０１が具備するＧＰＵＡ２０２のコア数「１００」分の分割されたデータ「５００Ｍ」（５Ｍ×１００）をＧＰＵメモリＡ２１２に転送する（ステップ７０１）。
【００６３】
署名作成プログラム２０９は、ＧＰＵメモリＡ２１２に転送されたデータに対して、ＧＰＵＡ２０２を用いたハッシュ化処理を行い、算出したハッシュ値をメインメモリ２０４に転送する（ステップ７０２）。具体的には、ＧＰＵＡ２０２の１００個のコアを用いて、１００個分のハッシュ値を算出する。なお、ハッシュ化処理には、ＳＨＡ２５６（Ｓｅｃｕｒｅ  Ｈａｓｈ  Ａｌｇｏｒｉｔｈｍ  ２５６ｂｉｔ）等のハッシュ関数を用いる。
【００６４】
署名作成プログラム２０９は、ハッシュ化処理していない処理対象データ１０４が存在する場合には、ステップ７０１に進み、ハッシュ化処理していない処理対象データ１０４が存在していなければ処理７０４に進む（ステップ７０３）。この時、処理対象データ１０４のファイルサイズは「１Ｇ」であり、このうちの「５００Ｍ」はまだ処理していないため、ステップ７０１に進む。
【００６５】
署名作成プログラム２０９は、処理対象データ１０４のハッシュ化処理していないデータ「５００Ｍ」を分割サイズ算出プログラム２０８が算出した分割サイズ「５Ｍ」で分割し、処理装置Ａ１０１が具備するＧＰＵＡ２０２のコア数「１００」分の分割されたデータ「５００Ｍ」（５Ｍ×１００）をＧＰＵメモリＡ２１２に転送する（ステップ７０１）。
【００６６】
署名作成プログラム２０９は、ＧＰＵメモリＡ２１２に転送されたデータに対して、ＧＰＵＡ２０２を用いたハッシュ化処理を行い、算出したハッシュ値をメインメモリ２０４に転送する（ステップ７０２）。
【００６７】
署名作成プログラム２０９は、ハッシュ化処理していない処理対象データ１０４が存在する場合には、ステップ７０１に進み、ハッシュ化処理していない処理対象データ１０４が存在していなければ処理７０４に進む（ステップ７０３）。この時、処理対象データ１０４のファイルサイズは「１Ｇ」であり、このすべてをハッシュ化処理したため、ステップ７０４に進む。
【００６８】
署名作成プログラム２０９は、メインメモリ２０４に格納された分割データのハッシュ値を全て集め、ＣＰＵ２０１を用いたハッシュ化処理を行い、処理対象データ１０４のハッシュ値を算出する（ステップ７０４）。この時、メインメモリには、２００個分のハッシュ値が格納されており、この２００個分のハッシュ値を処理対象データ１０４のデータ順に応じて並べ、ハッシュ化処理を行う。なお、ハッシュ化処理には、ＳＨＡ２５６等のハッシュ関数を用いる。
【００６９】
署名作成プログラム２０９は、ステップ５０３（ステップ７０４）で算出した処理対象データ１０４のハッシュ値に対して暗号化処理を行う（ステップ５０４）。
【００７０】
署名作成プログラム２０９は、送受信プログラム２１０を起動し、処理対象データ１０４と、ステップ５０４で算出した暗号化処理されたハッシュ値と、送信元処理装置で利用するＧＰＵ情報（送信元処理装置ＩＤ「処理装置Ａ」、送信元処理装置が利用するＧＰＵＩＤ「ＧＰＵＡ」）と、送信先処理装置で利用するＧＰＵ情報（送信先処理装置ＩＤ「処理装置Ｂ」、送信先処理装置で利用するＧＰＵＩＤ「ＧＰＵＢ」）と、をＩＦ２０３を介してネットワーク２２５に送信し、処理を終了する（ステップ５０５）。
【００７１】
続いて、処理装置Ｂ１０２の送受信プログラム２２２が、処理装置Ａ１０１からネットワーク２２５に送信された処理対象データ１０４と、暗号化されたハッシュ値と、送信元処理装置で利用するＧＰＵ情報と、送信先処理装置で利用するＧＰＵ情報と、をＩＦ２１５を介して受信し、分割サイズ算出プログラム２２０が、ＧＰＵ仕様データ２２３を基に分割サイズを算出し、署名検証プログラム２２１が、処理対象データ１０４をハッシュ化処理して算出したハッシュ値と、暗号化されたハッシュ値を復号化して得られたハッシュ値とを比較し、処理対象データ１０４が改ざんされているか否かを検証する処理について説明する。
【００７２】
図８は、処理装置Ｂ１０２における処理を示すフローチャートである。図８に示すように、データ受信を行う送受信プログラム２２２は、ＣＰＵ２１３により実行され、処理対象データと、処理結果と、送信元処理装置で利用するＧＰＵ情報と、送信先処理装置で利用するＧＰＵ情報と、をＩＦ２１５を介してネットワーク２２５から受信する（ステップ８０１）。
【００７３】
送受信プログラム２２２は、分割サイズ算出プログラム２２０を起動し、ＧＰＵ仕様データ２２３に基づき分割サイズを算出する（ステップ８０２）。この時、送受信プログラム２２２は、ステップ８０１で受信した送信元処理装置で利用するＧＰＵ情報と、送信先処理装置で利用するＧＰＵ情報を、分割サイズ算出プログラム２２０に送信する。なお、ＧＰＵ仕様データ２２３に基づいた分割サイズ算出については、図６で示したフローと同様であるため、その説明を省略する。
【００７４】
分割サイズ算出プログラム２２０は、署名検証プログラム２２１を起動し、ステップ８０２で算出した分割サイズに従って処理対象データを分割し、ＧＰＵＢ２１４を用いて処理対象データのハッシュ値を算出する（ステップ８０３）。なお、ＧＰＵＢ２１４を用いた処理対象データのハッシュ値算出処理については、図７で示したフローと同様であるため、その説明を省略する。
【００７５】
署名検証プログラム２２１は、ステップ８０１で取得した処理結果を復号化する（ステップ８０４）。
【００７６】
署名検証プログラム２２１は、ステップ８０３で算出した処理対象データのハッシュ値と、ステップ８０４で算出した復号化された処理結果を比較し、その値が異なっている場合は、処理対象データが改ざんされたと検知し、入出力装置２１８にアラートを出力して処理を終了する（ステップ８０５）。
【００７７】
ステップ８０１からステップ８０５までの処理の流れを、具体例を用いて説明する。先ほどと同様、ＧＰＵＡ２０２のコア数が「１００」、メモリサイズが「１．５Ｇ」、ＧＰＵＢ２１４のコア数が「２００」、メモリサイズが「２．０Ｇ」とし、処理対象データ１０４のファイルサイズが「１．０Ｇ」であるとする。
【００７８】
送受信プログラム２２２は、ＣＰＵ２１３により実行され、処理対象データ１０４と、処理結果（暗号化されたハッシュ値）と、送信元処理装置で利用するＧＰＵ情報（送信元処理装置ＩＤ「処理装置Ａ」、送信元処理装置が利用するＧＰＵＩＤ「ＧＰＵＡ」）と、送信先処理装置で利用するＧＰＵ情報（送信先処理装置ＩＤ「処理装置Ｂ」、送信先処理装置で利用するＧＰＵＩＤ「ＧＰＵＢ」）と、をＩＦ２１５を介してネットワーク２２５から受信する（ステップ８０１）。
【００７９】
送受信プログラム２２２は、分割サイズ算出プログラム２２０を起動し、ＧＰＵ仕様データ２２３に基づき分割サイズを算出する（ステップ８０２）。この時、送受信プログラム２２２は、ステップ８０１で受信した送信元処理装置で利用するＧＰＵ情報と、送信先処理装置で利用するＧＰＵ情報を、分割サイズ算出プログラム２２０に送信する。この処理により、分割サイズとして「５ＭＢ」が算出される。
【００８０】
分割サイズ算出プログラム２２０は、署名検証プログラム２２１を起動し、ステップ８０２で算出した分割サイズ「５ＭＢ」に従って処理対象データ１０４を分割し、ＧＰＵＢ２１４を用いて処理対象データのハッシュ値を算出する（ステップ８０３）。
【００８１】
署名検証プログラム２２１は、ステップ８０１で取得した処理結果（暗号化されたハッシュ値）を復号化する（ステップ８０４）。
【００８２】
署名検証プログラム２２１は、ステップ８０３で算出した処理対象データ１０４のハッシュ値と、ステップ８０４で算出した復号化された処理結果を比較し、その値が異なっている場合は、処理対象データが改ざんされたと検知し、入出力装置２１８にアラートを出力して処理を終了する（ステップ８０５）。
【００８３】
このように、本実施例では、ＣＰＵ２０１は、データ処理システムに存在する処理装置が具備するＧＰＵの仕様に基づいて、処理対象データの分割サイズを算出し、算出した分割サイズに従って、処理対象データの分割及び、ＧＰＵメモリＡ２１２への転送を行い、ＧＰＵＡ２０２は、ＧＰＵメモリＡ２１２から転送データを読み出し並列処理を行う。より具体的には、ＣＰＵ２０１は、データ送信元処理装置が具備するＧＰＵのコア数及びメモリサイズと、データ送信先処理装置が具備するＧＰＵのコア数及びメモリサイズより、各処理装置のＧＰＵコアが最大限に利用される分割サイズを算出し、算出した分割サイズに従って、処理対象データの分割及び、ＧＰＵメモリＡ２１２への転送を行い、ＧＰＵＡ２０２は、ＧＰＵメモリＡ２１２から転送データを読み出し、ＧＰＵＡ２０２が具備するコアを最大限に活用してデータ処理を行う。これによって、データ処理システム全体でのデータ処理に要する時間を短縮できる。
【００８４】
なお、本実施例では、説明を簡単にするため処理装置が１つのＧＰＵを具備する場合を説明したが、処理装置は複数のＧＰＵを具備しても良い。この時、複数のＧＰＵのうちの利用するＧＰＵをＧＰＵＩＤによって指定することが可能となる。また、複数のＧＰＵを同時に利用する場合には、分割サイズ算出プログラム２０８において、利用するＧＰＵの仕様をすべて取得し、各ＧＰＵごとに求めた最適分割サイズ（ＧＰＵメモリサイズ÷ＧＰＵコア数）の最大公約数を、データ処理システムにおける最適分割サイズとしても良い。
【００８５】
また、ＧＰＵの代わりに、マルチコアＣＰＵやＤＳＰなどの複数のコアを備えたプロセッサを用いても良い。
【００８６】
なお、本実施例の一部を変更して、次のように実施しても良い。予め分割サイズ算出プログラム２０８でデータ分割サイズを求めておいても良い。これにより、処理対象データを取得するごとに分割サイズを算出する必要がなくなり、処理時間の更なる短縮が可能となる。
【００８７】
また、分割サイズを少しづつ変化させながら、データ処理システムのデータ処理にかかる時間を計測し、最も処理時間が短くなったときの分割サイズをデータ処理システムの最適分割サイズとしても良い。これにより、ＧＰＵの仕様が分からないときにも、最適な分割サイズを算出することが可能となる。
【００８８】
また、処理装置Ａ１０１の送受信プログラム２１０が処理対象データと、暗号化済みハッシュ値と、送信元処理装置で利用するＧＰＵ情報と、送信先処理装置で利用するＧＰＵ情報とを送信する際に、データ分割サイズも併せて送信しても良い。これにより、処理装置Ｂ１０２でデータ分割サイズを算出する必要がなくなり、処理時間の更なる短縮が可能となる。
【００８９】
また、送信元処理装置と、送信元処理装置で利用するＧＰＵと、送信先処理装置と、送信先処理装置で利用するＧＰＵが予め判明している場合には、送受信プログラム２１０が送信する情報に、送信元処理装置で利用するＧＰＵ情報と、送信先処理装置で利用するＧＰＵ情報とを含めなくても良い。これにより、ネットワーク帯域を節約することが可能となる。
【実施例２】
【００９０】
本実施例は、実施例１に係る処理装置Ａ１０１及び処理装置Ｂ１０２を含み、さらに処理装置の優先度を考慮した場合の分割サイズ算出を行うデータ処理システムである。
【００９１】
実施例１では、データ処理システム全体で処理時間が短くなるような分割サイズ算出を行った。しかし、例えば、署名の検証を定期的に行わなければならない場合、即ち処理装置Ａ１０１で作成した署名を、処理装置Ｂ１０２で何度も署名検証する必要がある場合や、処理装置Ｂ１０２では他の業務も行っているために、処理装置Ｂ１０２における処理時間を短縮したい場合などは、処理装置Ｂ１０２での処理時間を短縮するような分割サイズ算出を行うことが望ましい。そこで、実施例２では、処理装置の優先度を考慮した分割サイズ算出を行う処理装置を例にとり説明する。優先度を考慮することにより、業務状態に応じた処理負荷の割り当てを行うことが可能となる。
【００９２】
図９は、本実施例における処理装置のハードウェア構成の例である。実施例１と同一の構成要素には同一の符号を付すことによってその説明を省略し、以下では、実施例１と異なる点を中心に説明する。
【００９３】
図９に示すように、実施例２に係る処理装置Ａ１０１は、既に説明した実施例１の処理装置Ａ１０１に、分割サイズ算出プログラム９０１と、優先度データ９０２と、を含んで構成される。なお、実施例１においても分割サイズ算出プログラム２０８が存在するが、実施例２での分割サイズ算出プログラム９０１とは一部処理が異なるため、ここでは新たな符号を付した。
【００９４】
ＣＰＵ２０１は、メインメモリ２０４に格納された分割サイズ算出プログラム９０１を実行することにより、優先度を考慮した分割サイズ算出を行う。記憶装置２０５には、データ処理システムに含まれる処理装置の優先度を示す優先度データ９０２が格納されている。
【００９５】
上記の各プログラムやデータは、あらかじめメインメモリ２０４または記憶装置２０５に格納されていてもよいし、必要な時に、入出力装置２０６からまたは、ＩＦ２０３を介して他の装置から、インストール（ロード）されてもよい。
【００９６】
処理装置Ｂ１０２は、既に説明した実施例１の処理装置Ｂ１０２に、分割サイズ算出プログラム９０３と、優先度データ９０４と、を含んで構成される。なお、実施例１においても分割サイズ算出プログラム２２０が存在するが、実施例２での分割サイズ算出プログラム９０３とは一部処理が異なるため、ここでは新たな符号を付した。
【００９７】
ＣＰＵ２１３は、メインメモリ２１６に格納された分割サイズ算出プログラム９０３を実行することにより、優先度を考慮した分割サイズ算出を行う。記憶装置２１７には、データ処理システムに含まれる処理装置の優先度を示す優先度データ９０４が格納されている。
【００９８】
上記の各プログラムやデータは、あらかじめメインメモリ２１６または記憶装置２１７に格納されていてもよいし、必要な時に、入出力装置２１８からまたは、ＩＦ２１５を介して他の装置から、インストール（ロード）されてもよい。
【００９９】
図１０は、優先度データ９０２の一例を示す図である。図１０に示すように、優先度データ９０２は、処理装置ＩＤ１００１と、優先度１００２と、を含む。処理装置ＩＤ１００１は、データ処理システムに存在する処理装置を一意に識別できる情報（識別子）を表している。優先度１００２は、処理装置ＩＤ１００１に該当する処理装置の優先度を０〜１００の整数で表している。数値が高い程優先度が高いことを表す。
【０１００】
図１０を用いて具体的に説明する。例えば、処理装置ＩＤ１００１が「処理装置Ａ」、優先度１００２が「５０」の優先度データは、「処理装置Ａ」の処理装置が、「５０」の優先度を持っていることを表し、処理装置ＩＤ１００１が「処理装置Ｂ」、優先度１００２が「１００」の優先度データは、「処理装置Ｂ」の処理装置が、「１００」の優先度を持っていることを表している。これより、「処理装置Ａ」の処理装置よりも、「処理装置Ｂ」の処理装置の方が優先度が高いことが分かる。
【０１０１】
なお、優先度データ９０２の各情報は、管理者が必要に応じて、入力または更新しても良い。
【０１０２】
優先度データ９０２は、ＣＰＵ２０１により実行される分割サイズ算出プログラム９０１が処理対象データの分割サイズを算出する際に利用される。分割サイズ算出プログラム９０１の具体的な処理については、図１１を用いて後述する。
【０１０３】
続いて、処理装置Ａ１０１の分割サイズ算出プログラム９０１が、ＧＰＵ仕様データ２１１と、優先度データ９０２と、を基に優先度を考慮した分割サイズを算出する処理について説明する。
【０１０４】
図１１は、分割サイズ算出プログラム９０１の分割サイズ算出を示すフローチャートである。図１１に示すように、優先度を考慮した分割サイズを算出する分割サイズ算出プログラム９０１は、ＣＰＵ２０１により実行され、送信元処理装置で利用するＧＰＵと、送信先処理装置で利用するＧＰＵの情報を、署名作成プログラム２０９より受信する（ステップ１１０１）。
【０１０５】
分割サイズ算出プログラム９０１は、ＧＰＵ仕様データ２１１を取得する（ステップ１１０２）。
【０１０６】
分割サイズ算出プログラム９０１は、優先度データ９０２を取得する（ステップ１１０３）。
【０１０７】
分割サイズ算出プログラム９０１は、送信元処理装置と、送信先処理装置との優先度を比較し、優先度が高い方の処理装置における最適分割サイズを算出する（ステップ１１０４）。具体的には、優先度が高い方の処理装置が具備するＧＰＵメモリサイズ３０４を、ＧＰＵコア数３０３で割った値を、データ処理システムにおける最適分割サイズとして算出する。なお、優先度が等しい場合には、実施例１で示したように、各処理装置における最適分割サイズを算出し、それらの最大公約数をデータ処理システムにおける最適分割サイズとする。
【０１０８】
ステップ１１０１からステップ１１０４までの処理の流れを、具体例を用いて説明する。例えば、ＧＰＵＡ２０２のコア数が「１００」、メモリサイズが「１．５Ｇ」、ＧＰＵＢ２１４のコア数が「２００」、メモリサイズが「２．０Ｇ」とし、処理装置Ａ１０１の優先度が「５０」、処理装置Ｂの優先度が「１００」であるとする。
【０１０９】
分割サイズ算出プログラム９０１は、署名作成プログラム２０９により起動される。分割サイズ算出プログラム９０１は、送信元処理装置で利用するＧＰＵ情報と、送信先処理装置で利用するＧＰＵの情報を署名作成プログラム２０９から受信する（ステップ１１０１）。具体的には、送信元処理装置ＩＤ「処理装置Ａ」、送信元処理装置が利用するＧＰＵＩＤ「ＧＰＵＡ」、送信先処理装置ＩＤ「処理装置Ｂ」、送信先処理装置で利用するＧＰＵＩＤ「ＧＰＵＢ」の情報を受信する。
【０１１０】
分割サイズ算出プログラム９０１は、ＧＰＵ仕様データ２１１より、ＧＰＵの仕様を取得する（ステップ１１０２）。具体的には、分割サイズ算出プログラム９０１は、ＧＰＵ仕様データ２１１から、送信元処理装置が利用するＧＰＵの仕様及び、送信先処理装置が利用するＧＰＵの仕様を取得する。この時、送信元処理装置が利用するＧＰＵの仕様は、処理装置ＩＤ３０１が「処理装置Ａ」、ＧＰＵＩＤ３０２が「ＧＰＵＡ」に該当する、ＧＰＵコア数３０３が「１００」、ＧＰＵメモリサイズ３０４が「１．５Ｇ」の情報となる。また、送信先処理装置が利用するＧＰＵの仕様は、処理装置ＩＤ３０１が「処理装置Ｂ」、ＧＰＵＩＤ３０２が「ＧＰＵＢ」に該当する、ＧＰＵコア数３０３が「２００」、ＧＰＵメモリサイズ３０４が「２．０Ｇ」の情報となる。
【０１１１】
分割サイズ算出プログラム９０１は、優先度データ９０２より、処理装置の優先度を取得する（ステップ１１０３）。具体的には、分割サイズ算出プログラム９０１は、優先度データ９０２から、送信元処理装置の優先度及び、送信先処理装置の優先度を取得する。この時、送信元処理装置の優先度は、処理装置ＩＤ１００１が「処理装置Ａ」に該当する、優先度１００２が「５０」の情報となる。また、送信先処理装置の優先度は、処理装置ＩＤ１００１が「処理装置Ｂ」に該当する、優先度１００２が「１００」の情報となる。
【０１１２】
分割サイズ算出プログラム９０１は、送信元処理装置と、送信先処理装置との優先度を比較し、優先度が高い方の処理装置における最適分割サイズを算出する（ステップ１１０４）。具体的には、ステップ１１０３で取得した送信元処理装置「処理装置Ａ」の優先度「５０」と、送信先処理装置「処理装置Ｂ」の優先度「１００」を比較する。この時、送信先処理装置の優先度の方が高いため、送信先処理装置「処理装備Ｂ」のＧＰＵメモリサイズ３０４「２．０Ｇ」をＧＰＵコア数３０３「２００」で割った値「１０Ｍ」を、データ処理システムにおける最適分割サイズとして算出する。
【０１１３】
このように、分割サイズ算出プログラム９０１は、処理装置が具備するＧＰＵの仕様と、処理装置の優先度と、に基づいてデータ分割サイズを算出することで、業務状態に応じた処理負荷の割り当てを行うことが可能となる。
【０１１４】
なお、本実施例の一部を変更して、次のように実施しても良い。予め分割サイズ算出プログラム２０８で優先度データを考慮したデータ分割サイズを求めておいても良い。これにより、処理対象データを取得するごとに分割サイズを算出する必要がなくなり、処理時間の更なる短縮が可能となる。
【実施例３】
【０１１５】
本実施例は、ＧＰＵ仕様データを格納しない場合の分割サイズ算出を行うデータ処理システムである。実施例１では、データ処理を行う場合には予め管理者がＧＰＵの仕様を入力しなければならなかった。そこで、実施例３では、ＧＰＵ仕様の交換を行うデータ処理装置から構成されるデータ処理システムを説明する。ＧＰＵ仕様を交換することにより、ＧＰＵ仕様データを予め登録することなく、分割サイズの算出を行うことが可能となる。
【０１１６】
図１２は、本実施例における処理装置のハードウェア構成の例である。実施例１と同一の構成要素には同一の符号を付すことによってその説明を省略し、以下では、実施例１と異なる点を中心に説明する。
【０１１７】
図１２に示すように、実施例３に係る処理装置Ａ１０１は、既に説明した実施例１の処理装置Ａ１０１に、分割サイズ算出プログラム１２０１と、仕様交換プログラム１２０２と、を含んで構成される。なお、実施例１においても分割サイズ算出プログラム２０８が存在するが、実施例３での分割サイズ算出プログラム１２０１とは一部処理が異なるため、ここでは新たな符号を付した。
【０１１８】
ＣＰＵ２０１は、メインメモリ２０４に格納された分割サイズ算出プログラム１２０１を実行することにより分割サイズ算出を行い、仕様交換プログラム１２０２を実行することにより、ＧＰＵ仕様データの交換を行う。
【０１１９】
上記の各プログラムは、あらかじめメインメモリ２０４に格納されていてもよいし、必要な時に、入出力装置２０６からまたは、ＩＦ２０３を介して他の装置から、インストール（ロード）されてもよい。
【０１２０】
処理装置Ｂ１０２は、既に説明した実施例１の処理装置Ｂ１０２に、仕様交換プログラム１２０３を含んで構成される。
【０１２１】
ＣＰＵ２１３は、仕様交換プログラム１２０３を実行することにより、ＧＰＵ仕様の交換を行う。
【０１２２】
上記の各プログラムは、あらかじめメインメモリ２１６に格納されていてもよいし、必要な時に、入出力装置２１８からまたは、ＩＦ２１５を介して他の装置から、インストール（ロード）されてもよい。
【０１２３】
続いて、処理装置Ａ１０１の仕様交換プログラム１２０２が、ＧＰＵ仕様の交換を行い、分割サイズを算出する場合の処理について説明する。
【０１２４】
図１３は、ＧＰＵ仕様を交換する場合のシーケンスを示す図である。図１３に示すように、処理装置Ａ１０１において、署名生成を行う署名作成プログラム２０９は、ＣＰＵ２０１により実行され、処理対象データ及び、処理送信先装置の情報を取得すると、分割サイズ算出プログラム１２０１を起動し、分割サイズ算出プログラム１２０１は、分割サイズ算出処理１３０１を行う。
【０１２５】
分割サイズ算出処理１３０１において、仕様交換を行う仕様交換プログラム１２０２が起動され、仕様交換プログラム１２０２は仕様交換処理１３０２を行う。
【０１２６】
仕様交換処理１３０２では、送信先処理装置に対して、送信先処理装置が処理に利用するＧＰＵの、ＧＰＵ仕様問い合わせ１３０３を行う。
【０１２７】
処理装置Ｂ１０２は、ＧＰＵ仕様問い合わせ１３０３を受信すると、仕様交換を行う仕様交換プログラム１２０３を起動し、仕様交換プログラム１２０３は、仕様交換処理１３０４を行う。
【０１２８】
仕様交換処理１３０４では、処理装置Ｂ１０２が処理に利用するＧＰＵの仕様を、ＧＰＵ仕様１３０５として、処理装置Ａ１０１に送信する。
【０１２９】
処理装置Ａ１０１の仕様交換プログラム１２０２は、ＧＰＵ仕様１３０５を受信すると、分割サイズ算出プログラム１２０１にＧＰＵ仕様１３０５を送信し、処理を終了する。
【０１３０】
分割サイズ算出プログラム１２０１は、受信したＧＰＵ仕様１３０５を用いて、データ処理システムに最適な分割サイズの算出を行う。なお、データ処理システムに最適な分割サイズの算出については、ステップ６０３からステップ６０５と同様であるため、ここでは説明を省略する。
【０１３１】
署名作成プログラム２０９は、分割サイズ算出処理１３０１によって算出された分割サイズに従い、データ処理１３０６を行う。なお、データ処理１３０６については、ステップ５０３からステップ５０４と同様であるため、ここでは説明を省略する。
【０１３２】
署名作成プログラム２０９は、送受信プログラム２１０を起動し、送受信プログラム２１０は、送信処理１３０７を行う。
【０１３３】
送信処理１３０７では、処理対象データ１０４と、データ処理１３０６の処理結果と、分割サイズ算出処理１３０１で算出した分割サイズ（１３０８）と、を処理装置Ｂ１０２に送信する。
【０１３４】
処理装置Ｂ１０２は、処理対象データ１０４と、データ処理１３０６の処理結果と、分割サイズ算出処理１３０１で算出した分割サイズ（１３０８）と、を送受信プログラム２２２により受信する（１３０９）と、署名検証プログラム２２１を起動し、データ処理１３１０を行う。なお、データ処理１３１０は、処理８０３から処理８０５と同様であるため、ここでは説明を省略する。この時、データ処理システムにおける最適分割サイズについては、受信処理１３０９で受信した分割サイズを用いる。
【０１３５】
ＧＰＵ仕様を交換する場合の処理の流れを仕様交換シーケンスを中心に、具体例を用いて説明する。例えば、ＧＰＵＡ２０２のコア数が「１００」、メモリサイズが「１．５Ｇ」、ＧＰＵＢ２１４のコア数が「２００」、メモリサイズが「２．０Ｇ」とし、処理対象データ１０４のファイルサイズが「１．０Ｇ」であるとする。
【０１３６】
処理装置Ａ１０１の署名作成プログラム２０９は、処理対象データ１０４と、送信先処理装置「処理装置Ｂ」を取得すると、分割サイズ算出プログラム１２０１を起動する。
【０１３７】
分割サイズ算出プログラム１２０１は、分割サイズ算出処理１３０１を開始し、仕様交換プログラム１２０２を起動する。
【０１３８】
仕様交換プログラム１２０２は、仕様交換処理１３０２を開始し、ＧＰＵ仕様問い合わせ１３０３を、送信先処理装置「処理装置Ｂ」に送信する。
【０１３９】
処理装置Ｂ１０２は、送信元処理装置「処理装置Ａ」からのＧＰＵ仕様問い合わせ１３０３を受信すると、仕様交換プログラム１２０３を起動する。
【０１４０】
仕様交換プログラム１２０３は、仕様交換処理１３０４を開始し、処理装置Ｂ１０２が具備するＧＰＵ仕様を、ＧＰＵ仕様１３０５として、処理装置Ａ１０１に送信する。具体的には、ＧＰＵＩＤ「ＧＰＵＢ」、ＧＰＵコア数「２００」、ＧＰＵメモリサイズ「２．０Ｇ」を送信する。
【０１４１】
処理装置Ａ１０１の仕様交換プログラム１２０２は、処理装置Ｂ１０２が送信したＧＰＵ仕様１３０５を受信すると、仕様交換処理１３０２を終了し、分割サイズ算出処理１３０１に戻る。
【０１４２】
分割サイズ算出プログラム１２０１は、送信元処理装置におけるＧＰＵメモリサイズを、ＧＰＵコア数で割った値を、送信元処理装置の最適分割サイズとして算出する。具体的には、送信元処理装置「処理装置Ａ」のＧＰＵメモリサイズ「１．５Ｇ」をＧＰＵコア数「１００」で割った値「１５Ｍ」を、送信元処理装置「処理装置Ａ」における最適分割サイズとして算出する。
【０１４３】
分割サイズ算出プログラム１２０１は、送信先処理装置におけるＧＰＵメモリサイズを、ＧＰＵコア数で割った値を、送信先処理装置の最適分割サイズとして算出する。具体的には、仕様交換処理１３０２で取得したＧＰＵメモリサイズ「２．０Ｇ」をＧＰＵコア数「２００」で割った値「１０Ｍ」を、送信先処理装置「処理装置Ｂ」における最適分割サイズとして算出する。
【０１４４】
分割サイズ算出プログラム１２０１は、送信元処理装置の最適分割サイズと、送信先処理装置の最適分割サイズから、データ処理システムの最適分割サイズを算出する。具体的には、送信元処理装置「処理装置Ａ」における最適分割サイズ「１５Ｍ」と、送信先処理装置「処理装置Ｂ」における最適分割サイズ「１０Ｍ」の最大公約数「５Ｍ」をデータ処理システムの最適分割サイズとして算出する。
【０１４５】
署名作成プログラム２０９は、分割サイズ算出プログラム１２０１が算出した分割サイズ「５Ｍ」に従い、処理対象データ１０４を分割し、ＧＰＵを用いたデータ処理１３０６を行い、送受信プログラム２１０を起動する。
【０１４６】
送受信プログラム２１０は、送信処理１３０７を開始し、処理対象データ１０４と、データ処理１３０６によって算出された暗号化済みハッシュ値と、分割サイズ算出処理１３０１によって算出された分割サイズ「５Ｍ」と、を処理装置Ｂ１０２に送信する。
【０１４７】
処理装置Ｂ１０２は、処理装置Ａ１０１が送信した、処理対象データ１０４と、データ処理１３０６によって算出された暗号化済みハッシュ値と、分割サイズ算出処理１３０１によって算出された分割サイズ「５Ｍ」と、を受信すると、送受信プログラム２２２を起動し、受信処理１３０９を開始する。
【０１４８】
送受信プログラムは、署名検証プログラム２２１を起動し、受信した処理対象データ１０４が改ざんされていないか検証処理（データ処理１３１０）を行う
このように、ＧＰＵ仕様を交換することにより、ＧＰＵ仕様データを予め登録することなく、データ処理システムに最適な分割サイズの算出を行うことが可能となる。
【０１４９】
なお、本実施例の一部を変更して、次のように実施しても良い。予め仕様交換プログラム１２０２でＧＰＵ仕様を交換し、分割サイズ算出プログラム１２０１でデータ分割サイズを求めておき、図３に示すような、ＧＰＵ仕様データテーブルで管理しても良い。これにより、処理対象データを取得するごとにＧＰＵ仕様の交換及び分割サイズの算出をする必要がなくなり、処理時間の更なる短縮が可能となる。
【０１５０】
以上、本発明の実施形態について説明したが、上記実施形態によれば、複数の処理装置が混在し、かつ連携して動作するデータ処理システムにおいて、処理対象データを処理に最適なデータ量で分割し処理を行うことで、システム全体でのデータ処理時間を短縮できる。
【０１５１】
また、本発明は、上記実施形態そのままに限定されるものではなく、実施段階ではその要旨を逸脱しない範囲で構成要素を変形して具体化することができる。また、上記実施形態に開示されている複数の構成要素の適宜な組み合わせにより、種々の発明を形成することができる。例えば、実施形態に示される全構成要素からいくつかの構成要素を削除してもよい。さらに、異なる実施形態にわたる構成要素を適宜組み合わせても良い。
【符号の説明】
【０１５２】
１０１、１０２・・・処理装置、２０１、２１３・・・ＣＰＵ、２０２、２１４・・・ＧＰＵ、２０３、２１５・・・ＩＦ、２０４、２１６・・・メインメモリ、２０５、２１７・・・記憶装置。
【図１】
2014170259.tif 000003
【図２】
2014170259.tif 000004
【図３】
2014170259.tif 000005
【図４】
2014170259.tif 000006
【図５】
2014170259.tif 000007
【図６】
2014170259.tif 000008
【図７】
2014170259.tif 000009
【図８】
2014170259.tif 000010
【図９】
2014170259.tif 000011
【図１０】
2014170259.tif 000012
【図１１】
2014170259.tif 000013
【図１２】
2014170259.tif 000014
【図１３】
2014170259.tif 000015