(57)【要約】様々なデータ形式の分散処理を行うことができないこと。本発明である分散処理システム２００は、分散処理を行うデータのデータ形式と、分散処理を行うデータのデータ形式に依存するパラメータと、を受け取るインターフェース手段２０１と、データから当該データを分散処理するときの処理単位であるデータパーティションを作成すると共に、データパーティション毎に対応し、当該データパーティションを作成した元となるデータのデータ形式に依存するパラメータに基づく情報を含むメタデータを作成する分割データ作成手段２０２と、を備える。
2018074444.tif 000002
【特許請求の範囲】
【請求項１】
分散処理を行うデータのデータ形式と、分散処理を行うデータのデータ形式に依存するパラメータと、を受け取るインターフェース手段と、
前記データから当該データを分散処理するときの処理単位であるデータパーティションを作成すると共に、前記データパーティション毎に対応し、当該データパーティションを作成した元となる前記データのデータ形式に依存する前記パラメータに基づく情報を含むメタデータを作成する分割データ作成手段と、
を備えた分散処理システム。
【請求項２】
請求項１に記載の分散処理システムであって、
前記分割データ作成手段は、前記インターフェース手段にて受け取った情報と、前記データパーティションを作成する元となる前記データを読み込むことで得られた情報と、に基づいて前記メタデータを作成する、
分散処理システム。
【請求項３】
請求項２に記載の分散処理システムであって、
前記分割データ作成手段は、前記データパーティションを作成した元となる前記データのデータ形式に依存する前記パラメータを含めて前記メタデータを作成する、
分散処理システム。
【請求項４】
請求項２又は３に記載の分散処理システムであって、
前記分割データ作成手段は、前記データパーティションのデータ構造に基づいて前記メタデータを生成する、
分散処理システム。
【請求項５】
請求項１乃至４のいずれかに記載の分散処理システムであって、
前記パラメータは、前記データのデータ構造に基づく情報を含む、
分散処理システム。
【請求項６】
請求項１乃至５のいずれかに記載の分散処理システムであって、
前記データの前記データ形式は、画像であり、
前記パラメータは、前記データの画像サイズ、作成する前記データパーティションの画像サイズ、及び、作成する前記データパーティションの冗長部分サイズ、を含む、
分散処理システム。
【請求項７】
請求項６に記載の分散処理システムであって、
前記メタデータは、前記データの画像サイズ、作成する前記データパーティションの画像サイズ、及び、前記データの先頭から作成する前記データパーティションのオフセット、を含む、
分散処理システム。
【請求項８】
請求項１乃至５のいずれかに記載の分散処理システムであって、
前記データの前記データ形式は、密行列であり、
前記パラメータは、前記データの行列サイズ、及び、作成する前記データパーティションの行列サイズ、を含む、
分散処理システム。
【請求項９】
請求項８に記載の分散処理システムであって、
前記メタデータは、作成する前記データパーティションの行列サイズ、を含む、
分散処理システム。
【請求項１０】
請求項１乃至５のいずれかに記載の分散処理システムであって、
前記データの前記データ形式は、疎行列であり、
前記パラメータは、前記データの行列サイズ、作成する前記データパーティションの行列サイズ、及び、前記データ内の非ゼロ要素数、を含む、
分散処理システム。
【請求項１１】
請求項１０に記載の分散処理システムであって、
前記メタデータは、作成する前記データパーティションの行列サイズ、及び、作成する前記データパーティション内の非ゼロ要素数、を含む、
分散処理システム。
【請求項１２】
請求項１乃至１１のいずれかに記載の分散処理システムであって、
さらに、前記データパーティションを処理するプログラム関数に、前記データパーティションと共に前記メタデータを渡すタスク実行手段を備えた、
分散処理システム。
【請求項１３】
請求項１２に記載の分散処理システムであって、
前記データパーティションを処理する前記プログラム関数は、外部から受け取ったユーザ定義関数である、
分散処理システム。
【請求項１４】
請求項１２又は１３に記載の分散処理システムであって、
前記分割データ作成手段が作成した前記メタデータを格納すると共に、前記タスク実行手段が前記データパーティションを処理する前記プログラム関数を実行させる場合に、当該タスク実行手段に、格納している前記メタデータを提供するメタデータ格納手段をさらに備えた、
分散処理システム。
【請求項１５】
情報処理装置に、
分散処理を行うデータのデータ形式と、分散処理を行うデータのデータ形式に依存するパラメータと、を受け取るインターフェース手段と、
前記データから当該データを分散処理するときの処理単位であるデータパーティションを作成すると共に、前記データパーティション毎に対応し、当該データパーティションを作成した元となる前記データのデータ形式に依存する前記パラメータに基づく情報を含むメタデータを作成する分割データ作成手段と、
を実現させるためのプログラムを記録するプログラム記録媒体。
【請求項１６】
請求項１５に記載のプログラム記録媒体であって、
前記分割データ作成手段は、前記インターフェース手段にて受け取った情報と、前記データパーティションを作成する元となる前記データを読み込むことで得られた情報と、に基づいて前記メタデータを作成する、
プログラム記録媒体。
【請求項１７】
請求項１６に記載のプログラム記録媒体であって、
前記分割データ作成手段は、前記データパーティションを作成した元となる前記データのデータ形式に依存する前記パラメータを含めて前記メタデータを作成する、
プログラム記録媒体。
【請求項１８】
請求項１６又は請求項１７に記載のプログラム記録媒体であって、
前記分割データ作成手段は、前記データパーティションのデータ構造に基づいて前記メタデータを生成する、
プログラム記録媒体。
【請求項１９】
請求項１５乃至請求項１８のいずれかに記載のプログラム記録媒体であって、
前記パラメータは、前記データのデータ構造に基づく情報を含む、
プログラム記録媒体。
【請求項２０】
請求項１５乃至請求項１９のいずれかに記載のプログラム記録媒体であって、
前記情報処理装置に、さらに、
前記データパーティションを処理するプログラム関数に、前記データパーティションと共に前記メタデータを渡すタスク実行手段、
を実現させるためのプログラム記録媒体。
【請求項２１】
請求項２０に記載のプログラム記録媒体であって、
前記情報処理装置に、さらに、
前記分割データ作成手段が作成した前記メタデータを格納すると共に、前記タスク実行手段が前記データパーティションを処理する前記プログラム関数を実行させる場合に、当該タスク実行手段に、格納している前記メタデータを提供するメタデータ格納手段、
を実現させるためのプログラム記録媒体。
【請求項２２】
情報処理装置が、
分散処理を行うデータのデータ形式と、分散処理を行うデータのデータ形式に依存するパラメータと、を受け取り、
前記データから当該データを分散処理するときの処理単位であるデータパーティションを作成すると共に、前記データパーティション毎に対応し、当該データパーティションを作成した元となる前記データのデータ形式に依存する前記パラメータに基づく情報を含むメタデータを作成する、
分散処理方法。
【請求項２３】
請求項２２に記載の分散処理方法であって、
受け取った情報と、前記データパーティションを作成する元となる前記データを読み込むことで得られた情報と、に基づいて前記メタデータを作成する、
分散処理方法。
【請求項２４】
請求項２３に記載の分散処理方法であって、
前記データパーティションを作成した元となる前記データのデータ形式に依存する前記パラメータを含めて前記メタデータを作成する、
分散処理方法。
【請求項２５】
請求項２３又は請求項２４に記載の分散処理方法であって、
前記データパーティションのデータ構造に基づいて前記メタデータを生成する、
分散処理方法。
【請求項２６】
請求項２２乃至請求項２５のいずれかに記載の分散処理方法であって、
前記パラメータは、前記データのデータ構造に基づく情報を含む、
分散処理方法。
【請求項２７】
請求項２２乃至請求項２６のいずれかに記載の分散処理方法であって、
前記情報処理装置が、さらに、
前記データパーティションを処理するプログラム関数に、前記データパーティションと共に前記メタデータを渡す、
分散処理方法。
【請求項２８】
請求項２７に記載の分散処理方法であって、
前記情報処理装置が、さらに、
作成した前記メタデータを格納すると共に、タスク実行手段が前記データパーティションを処理する前記プログラム関数を実行させる場合に、当該タスク実行手段に、格納している前記メタデータを提供する、
分散処理方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、分散処理システム、分散処理方法及びプログラム記録媒体にかかり、特に、データを分割して分散処理する分散処理システム、分散処理方法及びプログラム記録媒体に関する。
【背景技術】
【０００２】
データを分散して処理するシステムとして、図１に示すような分散処理システムがある。図１に示す分散処理システムは、データの分散処理を行うスレーブコンピュータ３２１〜３２３と、スレーブコンピュータを制御するマスタコンピュータ３１０と、を含む。なお、スレーブコンピュータの数は複数であればよく、３つに限定されない。【０００３】
このような構成を有する分散処理システムは、次のように動作する。スレーブコンピュータ３２１〜３２３は、１つのデータを分割して保持する。分割したデータをデータパーティションと呼ぶ。マスタコンピュータ３１０は、スレーブコンピュータ３２１〜３２３が保持するデータパーティションに対して実行する処理をタスクとして生成し、各スレーブコンピュータにタスクを実行するよう指示を行う。スレーブコンピュータ３２１〜３２３は、指示されたタスクを、保持するデータパーティションに対して実行する。これにより、全てのデータパーティションに対して所望の処理が行われる。【０００４】
また、特許文献１には、画像データを分割して分散処理するシステムが開示されている。この分散処理システムでは、分割した画像データと、当該画像データに付随するパラメータ（処理手順、識別タグ）と、を分散処理するワークステーションに送信して、分散画像処理を実行している。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開平８−１６７６６号公報
【特許文献２】特開２０００−０２０３２７号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
ここで、分散処理の際にデータパーティションの処理を行う方法は、分散処理を行うデータのデータ形式に応じて異なる。そして、上述した分散処理システムでは、分散処理を行うデータのデータ形式を考慮していないため、様々なデータ形式の分散処理を行うことができず、汎用性がない、という問題が生じる。【０００７】
このため、本発明の目的は、上述した課題である、様々なデータ形式の分散処理を行うことができず汎用性がない、ということを解決することにある。
【課題を解決するための手段】
【０００８】
本発明の一形態である分散処理システムは、
分散処理を行うデータのデータ形式と、分散処理を行うデータのデータ形式に依存するパラメータと、を受け取るインターフェース手段と、
前記データから当該データを分散処理するときの処理単位であるデータパーティションを作成すると共に、前記データパーティション毎に対応し、当該データパーティションを作成した元となる前記データのデータ形式に依存する前記パラメータに基づく情報を含むメタデータを作成する分割データ作成手段と、
を備えた、
という構成をとる。【０００９】
また、本発明の一形態であるプログラム記録媒体は、
情報処理装置に、
分散処理を行うデータのデータ形式と、分散処理を行うデータのデータ形式に依存するパラメータと、を受け取るインターフェース手段と、
前記データから当該データを分散処理するときの処理単位であるデータパーティションを作成すると共に、前記データパーティション毎に対応し、当該データパーティションを作成した元となる前記データのデータ形式に依存する前記パラメータに基づく情報を含むメタデータを作成する分割データ作成手段と、
を実現させるプログラムを記録する、
という構成をとる。【００１０】
また、本発明の一形態である分散処理方法は、
情報処理装置が、
分散処理を行うデータのデータ形式と、分散処理を行うデータのデータ形式に依存するパラメータと、を受け取り、
前記データから当該データを分散処理するときの処理単位であるデータパーティションを作成すると共に、前記データパーティション毎に対応し、当該データパーティションを作成した元となる前記データのデータ形式に依存する前記パラメータに基づく情報を含むメタデータを作成する、
という構成をとる。
【発明の効果】
【００１１】
本発明は、以上のように構成されることにより、分散処理を行うデータのデータ形式に依存した分散処理が可能となり、汎用性の向上を図ることができる。
【図面の簡単な説明】
【００１２】
【図１】本発明に関連する分散処理システムの構成を示すブロック図である。
【図２】本発明の第１の実施形態における分散処理システムの構成を示すブロック図である。
【図３】図１に開示した分散処理システムにて用いられる情報の一例を示す図である。
【図４】図１に開示した分散処理システムにて用いられる情報の一例を示す図である。
【図５Ａ】図１に開示した分散処理システムにて用いられる情報の一例を示す図である。
【図５Ｂ】図１に開示した分散処理システムにて用いられる情報の一例を示す図である。
【図６】図１に開示した分散処理システムにて用いられる情報の一例を示す図である。
【図７】図１に開示した分散処理システムの動作を示すフローチャートである。
【図８】本発明の第２の実施形態における分散処理システムの構成を示すブロック図である。
【図９】各実施形態に示した分散処理システムを構成する装置を実現するハードウエア構成の一例を示す図である。
【発明を実施するための形態】
【００１３】
＜実施形態１＞
本発明の第１の実施形態を、図２乃至図７を参照して説明する。図２は、実施形態１における分散処理システムの構成を説明するための図である。図３乃至図６は、分散処理システムによる処理の内容を説明するための図である。図７は、分散処理方法を示すフローチャートである。
【００１４】
［構成］
本実施形態における分散処理システムは、図２に示すように、データを分割して分散処理を行うアクセラレータ２１〜２３と、当該アクセラレータ２１〜２３に行わせる処理を制御するホスト１と、を備えている。なお、アクセラレータの数は３つに制限されず、複数であればよい。また、アクセラレータが１つの場合に本実施の形態を採用することも可能である。以後、「アクセラレータ２」と記述する場合は、データのロードや処理の実行を行うアクセラレータ２１〜２３のいずれかを意味する。また「複数のアクセラレータ２」と記述する場合は、アクセラレータ２１〜２３の全体を意味する。
【００１５】
上記アクセラレータ２１は、図２に示すように、単数又は複数の演算コアを搭載しデータパーティションの処理を行うプロセッサ２１ａと、当該プロセッサの演算のために用いられるメモリ２１ｂと、の組で構成されており、他のアクセラレータ２２，２３も同様の構成である。一般的に、アクセラレータは、コンピュータのCPUより多数の演算コアを実装しているため、CPUより高い計算能力を提供することが知られている。アクセラレータ２１〜２３は、例えば、NVIDIA社が提供するGPU(Graphics Processing Unit)である。
【００１６】
ここで、本実施の形態では、分散処理対象のデータを分割したものを「データパーティション」と呼ぶ。本実施の形態で扱う分散処理は、データパーティションに対する処理を単位として、複数のアクセラレータで分散して実行することで実現する。
【００１７】
上記ホスト１は、演算装置と記憶装置とを備えた情報処理装置である。そして、ホスト１は、図２に示すように、複数のアクセラレータ２を用いて分散処理を行うアプリケーションプログラムであるユーザプログラム１１と、ユーザプログラム１１に複数のアクセラレータ２を利用するためのインターフェースを提供するＡＰＩ(Application Programming Interface)部１２と、複数のアクセラレータ２に分散処理を行わせるデータを格納するデータ格納部１３と、複数のアクセラレータ２の分散処理を制御するアクセラレータ制御部１４と、を備えている。上記ユーザプログラム１１と、ＡＰＩ部１２と、アクセラレータ制御部１４とは、演算装置がプログラムを実行することで構築される。また、上記データ格納部１３は、記憶装置に構成されている。
【００１８】
上記アクセラレータ制御部１４は、さらに、図２に示すように、ユーザプログラム１１が複数のアクセラレータ２に対して実行を要求する分散処理の解析を行うプログラム解析部１４１と、アクセラレータ２へのデータパーティションの準備を指示するデータスケジューラ部１４２と、を備える。また、アクセラレータ制御部１４は、データ格納部１３から処理を行うデータのデータパーティションに該当する部分を読み込み、データパーティションを作成してアクセラレータ２が保持するメモリにロードする分割データ作成部１４４と、アクセラレータ２に対しデータパーティションの処理を指示するタスクスケジューラ部１４３と、を備える。さらに、アクセラレータ制御部１４は、アクセラレータ２を制御しデータパーティションの処理を実行するタスク実行部１４５と、データパーティションのメタデータを保持するメタデータ格納部１４６と、を備える。
【００１９】
以下、上述したホスト１の構成について、さらに詳しく説明する。
【００２０】
上記ＡＰＩ部１２（インターフェース部）は、ユーザプログラム１１に対して、複数のアクセラレータ２に分散処理を行わせるプログラムを作成するためのアプリケーションプログラムインターフェースを提供する。また、ＡＰＩ部１２は、当該ＡＰＩ部１２がユーザプログラム１１に提供するインターフェースを用いて作成したユーザプログラム１１の実行を、アクセラレータ制御部１４に要求する。
【００２１】
図３に、ＡＰＩ部１２が提供するインターフェースを用いて作成したユーザプログラム１１の疑似コードの一例を示す。１行目の「ImageReader」は、分散処理を行うデータのデータ形式が「画像」である場合に、データを読み込むオブジェクトである。分散処理を行う画像を格納しているファイルの名前である「FileName1」や、画像を読み込むために必要なパラメータである「Param1」や「Param2」を含む。これらのパラメータは３つ以上でも良い。２行目では、「ImageReader」によって、読み込むデータをプログラム上で扱うために、「DDD」というデータオブジェクトとして「Image1」という名前を付与してインスタンス化している。３行目では、インスタンス化した「Image1」に対し「map」処理を実施し、map処理を実施した出力データをファイルに格納している。
【００２２】
具体的に、上記map処理は、データが含む各データ要素に同じ処理を実施するためのインターフェースである。この場合、「ProcessFunc」で指定された処理が、画像の各要素に適用される。「ProcessFunc」は、ユーザプログラム１１が与えるユーザ定義関数であり、画像の各要素に適用する具体的な処理である。なお、ユーザプログラム１１は外部から任意のものが提供されるため、ユーザ定義関数も外部から任意のものが提供される。また、出力データのファイルには、「FileName2」という名前が付与される。このプログラムでは、「outputFile」が呼ばれた時点で、１行目〜３行目で指定したアクセラレータの処理の実行がアクセラレータ制御部１４に対して要求される。
【００２３】
ＡＰＩ部１２は、「outputFile」の例のように、処理の要求をトリガ（開始）するインターフェースを規定している。このように、ユーザプログラム１１がインターフェースを呼ぶより後に、実際の処理が複数のアクセラレータ２で実行されるような遅延を伴う処理を一般に遅延評価と呼ぶ。また、ＡＰＩ部１２が提供する処理として「map」以外を定義し、「DDD」が含むデータ要素に対し様々な形態の処理を実現することは本分野の技術者であれば一般的に知る所である。
【００２４】
本実施の形態では、分散処理を行うデータのデータ形式として、上述した「画像」以外に、「密行列」や「疎行列」等の様々なデータ形式を扱うことが可能である。その場合、密行列では、図３に示した「ImageReader」に変わり「DenseMatrixReader」を、疎行列では、「ImageReader」に変わり「SparseMatrixReader」を使用する。つまり、データ形式に依存した「Reader」を用いる。また各「Reader」に与えるパラメータは、ファイル名以外はデータ形式に依存する。ここで、データ形式に依存するパラメータの一例を図４に示す。
【００２５】
図４において、画像の「ピクセルデータ型」は、各ピクセルのデータ型を示す。データ型の例は、整数型や浮動小数点型である。「画像サイズ」は、画像の縦と横の幅である。
幅の単位はピクセル数である。「データパーティションサイズ」は、各データパーティションが含む分割画像の縦と横の幅である。「パーティション袖幅」（冗長部分サイズ）は、各データパーティションが隣接する他のパーティションと重複して冗長に保持する画像の領域の幅である。
【００２６】
図４において、密行列の「要素データ型」は、行列の要素のデータ型である。「行列サイズ」は、行列の縦と横の幅である。「分割行列サイズ」は、行列を分割したデータパーティションが含むブロック行列の縦と横の幅である。幅の単位は行列の要素数である。疎行列では、密行列と名前が同じパラメータの意味は同じである。また、「非ゼロ要素数」は、疎行列が含む非ゼロ要素の数である。また同様の方法で、画像、密行列、疎行列以外にも、様々なデータ形式に対応したインターフェースをＡＰＩ部１２に拡張していくことが可能である。
【００２７】
以上のように、ＡＰＩ部１２は、ユーザプログラム１１から、分散処理を行うデータのデータ形式と、分散処理を行うデータのデータ形式に依存するパラメータと、を受け取る。そして、データ形式に依存するパラメータは、例えば、上述したように画像サイズや行列サイズ、非ゼロ要素など、データのデータ構造に基づく情報を含んでいる。
【００２８】
上記データ格納部１３は、分割前の分散処理対象となるデータを格納する。そして、データ格納部１３は、例えば、ファイルシステムであり、ホスト１が保持する記憶デバイスを使用してデータの格納及び管理を行う。
【００２９】
上記プログラム解析部１４１は、ＡＰＩ部１２からユーザプログラム１１の実行要求を受信する。ユーザプログラム１１で指定された処理は、処理対象となるデータを分割したデータパーティション毎に実行される。ここで、ユーザプログラム１１が指定するデータ全体に対する処理を「タスク」、データを分割したデータパーティションに対する処理を「サブタスク」と呼ぶ。サブタスクはタスクから生成される。プログラム解析部１４１は、データの処理に必要な数のサブタスクを生成し、データスケジューラ部１４２に処理対象となるデータパーティションのアクセラレータ２への準備を依頼する。図３の例では、「Image1」の画像を分割した画像がデータパーティションであり、そのデータパーティションが含む各画素に「ProcessFunc」のユーザ定義関数で指定された処理を行うサブタスクが、データパーティションの数だけ生成される。
【００３０】
上記データスケジューラ部１４２は、アクセラレータ２に実行が要求されたサブタスクの入力データパーティションを準備するよう分割データ作成部１４４に依頼する。データスケジューラ部１４２は、プログラム解析部１４１から複数のサブタスクに関する入力データパーティションの準備が要求された場合、最適な準備の順番を決定する。
【００３１】
上記分割データ作成部１４４（分割データ作成手段）は、データスケジューラ部１４２からアクセラレータ２への入力データパーティションの準備の要求を受ける。このとき、入力データパーティションを準備するアクセラレータも指定される。分割データ作成部１４４は、データ格納部１３からサブタスクの入力データパーティションに該当する範囲のデータを読み込み、指定されたアクセラレータ２にロードすることで、分散処理するときの処理単位であるデータパーティションを作成する。データの読み込みにはユーザプログラム１１からＡＰＩ部１２のインターフェースに渡されたファイル名等の識別子を用いる。またこのとき、ロードしたデータパーティションに関するメタデータを作成し、メタデータ格納部１４６（メタデータ格納手段）に登録する。
【００３２】
上記分割データ作成部１４４にて作成するデータパーティションの例を、図５Ａおよび図５Ｂに示す。図５Ａの「画像」の例では、３×３に画像を分割している。また、隣接データパーティションと冗長にピクセルを保持する袖（冗長部分）を作成する。袖部分は斜線で示している。図５Ｂの「疎行列」の例では、Ｍ×Ｎの行列を、行方向に並行にａ個のブロック行列に分割している。なお、これらの分割の仕方は、その数や分割の方向が１次元や２次元、あるいは高次元のアレイデータに対しては３次元以上の分割に拡張できることは、本分野の技術者であれば一般的に認識している通りである。
【００３３】
また、データパーティション毎に作成するメタデータは、データパーティション毎に対応する情報であり、当該データパーティションを作成した元データのデータ形式に依存する情報である。これはメタデータが含むパラメータの種類がデータ形式に依存するという意味である。これらのデータ形式やデータ形式に依存するメタデータの情報は、図４に示したＡＰＩ部１２がユーザプログラム１１から渡された情報と、データ格納部１３から読み込んだデータの情報から作成する。
【００３４】
図６にデータ形式毎に作成するメタデータを示す。なお、メタデータは、図４に示したＡＰＩ部が受け取るパラメータと同じものも含む（例えば、「画像サイズ」、「データパーティションサイズ」）。このため、メタデータの各情報のうち、ＡＰＩ部が受け取るパラメータと同じものについては、説明を省略する。データ形式「画像」の「先頭からのオフセット」は、データパーティションが含む分割画像の全体の画像に対する相対的な位置を示す。データ形式「疎行列」の「分割行列非ゼロ要素数」は、データパーティションが含む疎行列を分割したブロック行列が含む非ゼロ要素数を示す。
【００３５】
メタデータを作成する際に、図４に示したＡＰＩ部１２がユーザプログラム１１から渡された情報（ＡＰＩ部１２が受け取った情報）と、データ格納部１３から読み込んだデータの情報、の両方を使用する例を、疎行列で説明する。図６に示す疎行列のデータパーティションメタデータが含むパラメータの中で、「分割行列サイズ」は、図４に示すＡＰＩ部１２が提供するインターフェースのパラメータにある「分割行列サイズ」から取得できる。一方、「分割行列非ゼロ要素数」は、データ格納部１３から元データとなる疎行列を読み込まなければ、該当するデータパーティションが含む元の行列を分割したブロック行列の中に実際にいくつの非ゼロ要素数が含まれているかわからない。従って、「分割行列非ゼロ要素数」は、データ格納部１３から読み込んだデータの情報をもとに設定される。
【００３６】
このように、分割データ作成部１４４が作成するメタデータは、データパーティションを作成した分割前の元となるデータのデータ形式に依存するパラメータや、データパーティションのデータ構造に基づく情報を含むこととなる。
【００３７】
上記タスクスケジューラ部１４３は、データスケジューラ部１４２から入力データパーティションの準備ができたサブタスクの通知を受け、サブタスクを実行するようタスク実行部１４５に依頼する。実行中のサブタスクや実行待ちのサブタスクが複数存在する場合はそれらの実行順を決めるスケジューリングを行う。
【００３８】
上記タスク実行部１４５（タスク実行手段）は、タスクスケジューラ部１４３から指定されたサブタスクを、指定されたアクセラレータで実行する。つまり、タスク実行部１４５は、データパーティションを処理するプログラム関数に、データパーティションと共にメタデータを渡す。なお、メタデータは、上記メタデータ格納部１４６から渡すこととなる。ここで例として、サブタスクをアクセラレータ２１で実行する場合を考える。サブタスクを実行するプロセッサ２１ａは、サブタスクのユーザ定義関数と、ユーザ定義関数を実行する処理対象であるデータパーティションのメモリ２１ｂでのアドレスと、データパーティションのメタデータを受け取る。プロセッサ２１ａは、メタデータを使用してユーザ定義関数を実行することにより、データ形式に依存した処理が実現できる。
【００３９】
データ形式に依存した処理を実行する例として、図３に示した画像に対する処理を説明する。プロセッサ２１ａは、図３の３行目で「map」に渡される「ProcessFunc」をユーザ定義関数として、データパーティションが含むデータ要素に対して実行する。この場合、データ要素は分割画像が含むピクセルである。このとき「ProcessFunc」が呼ばれる引数としてメタデータ格納部１４６に格納されたメタデータが、タスク実行部１４５から渡される。「ProcessFunc」は、メタデータが含むデータパーティションサイズから処理すべき分割画像の大きさが判別できる。また、画像サイズと先頭からのオフセット、つまり分割画像の画像全体に対する相対位置から、処理対象の分割画像のどの周辺部分に袖があるかを判別することができ、袖を考慮した処理が行える。袖を考慮する処理の例として、画像のピクセル値を周囲のピクセル値を用いて平均化するステンシル処理がある。
【００４０】
［動作］
次に本発明の実施の形態の動作について、主に図７のフローチャートを参照して詳細に説明する。
【００４１】
ユーザプログラム１１を実行すると、ユーザプログラム１１の内部でＡＰＩ部１２が提供するインターフェースが使用される（ステップＳ１）。このとき、分散処理を行うデータのデータ形式とデータ形式に依存したパラメータがインターフェースに渡される。
【００４２】
ＡＰＩ部１２が提供するインターフェースで、処理をトリガするコマンドが呼ばれると、それまでにＡＰＩ部１２に対し指示されたユーザプログラム１１の処理の実行が、アクセラレータ制御部１４に要求される。つまり、ユーザプログラム１１の処理が遅延評価される（ステップＳ２）。
【００４３】
ユーザプログラム１１の実行の要求を受信したプログラム解析部１４１は、ユーザプログラム１１の処理を実行するサブタスクのエントリを、処理データを分割したデータパーティション毎に作成する（ステップＳ３）。そして、サブタスクの入力となるデータパーティションをアクセラレータ２のいずれかに準備するようデータスケジューラ部１４２に要求する。
【００４４】
データスケジューラ部１４２は、入力データパーティションを準備するアクセラレータを選択し、分割データ作成部１４４に入力データパーティションを準備するよう要求する（ステップＳ４）。ここで、データスケジューラ部１４２がプログラム解析部１４１から複数のサブタスクの入力データパーティションの準備の要求を受けている場合は、最適なデータパーティションの準備の順番を決定するスケジュールを行う。
【００４５】
分割データ作成部１４４は、データ格納部１３が格納する処理データから、サブタスクの入力データパーティションに該当する部分を読み込み、データスケジューラ部１４２に指定されたアクセラレータ２のメモリにロードする（ステップＳ５）。また、データパーティションをロードした処理データに依存するメタデータを作成し、メタデータ格納部１４６に格納する（ステップＳ６）。
【００４６】
タスクスケジューラ部１４３は、データスケジューラ部１４２から入力データパーティションの準備が完了したサブタスクの通知を受信し、サブタスクの実行をタスク実行部１４５に要求する。このとき、未実行のサブタスクが複数存在する場合は、サブタスクを実行する順番を決定するスケジュールを行う（ステップＳ７）。
【００４７】
タスク実行部１４５は、タスクスケジューラ部１４３から通知を受けたサブタスクを入力データパーティションの準備が完了したアクセラレータ２で実行する（ステップＳ８）。このとき、サブタスクが実行するユーザ定義関数に、メタデータ格納部１４６に格納されている入力データパーティションのメタデータを渡す。そして、ユーザ定義関数が、渡されたメタデータを用いて実行される。
【００４８】
以上のように、本実施形態では、ユーザプログラムから分散処理を行うデータのデータ形式と当該データ形式に依存した情報を受け取るインターフェースを提供するＡＰＩ部１２を備えている。また、分散処理を実行する単位であるデータパーティションを作成する際にＡＰＩ部１２がユーザプログラムから受け取った情報と、データパーティションの作成において取得した情報を合わせて、データパーティション毎に分散処理を行うデータ形式に依存したメタデータを作成する分割データ作成部１４４を備えている。さらに、アクセラレータでユーザプログラムから与えられたユーザ定義関数をデータパーティションに対し実行する場合に、ユーザ定義関数にメタデータを渡すタスク実行部１４５を備えている。これにより、本実施形態は、ユーザプログラムから分散処理を行うデータのデータ形式とデータ形式に依存した情報を受け取り、データパーティションを作成する際に取得した情報と合わせてデータパーティション毎にメタデータを作成し、データパーティションをユーザ定義関数を用いて処理を行う場合に、ユーザ定義関数にメタデータを渡すように動作する。その結果、データ形式に依存した分散処理が可能となり、様々なデータ形式の分散処理を行うことが可能となる。
【００４９】
＜実施形態２＞
次に、本発明の第２の実施形態を、図８を参照して説明する。図８は、本発明における分散処理システムの構成を示すブロック図である。
【００５０】
図８に示すように、分散処理システム２００は、図示しない演算装置にプログラムが組み込まれることで構築された、インターフェース手段２０１と、分割データ作成手段２０２と、を備える。インターフェース手段２０１は、分散処理を行うデータのデータ形式と、分散処理を行うデータのデータ形式に依存するパラメータと、を受け取る。分割データ作成手段２０２は、データから当該データを分散処理するときの処理単位であるデータパーティションを作成すると共に、データパーティション毎に対応し、当該データパーティションを作成した元となるデータのデータ形式に依存する前記パラメータに基づく情報を含むメタデータを作成する。
【００５１】
上記分割データ作成手段２０２は、例えば、インターフェース手段２０１にて受け取った情報と、データパーティションを作成する元となるデータを読み込むことで得られた情報と、に基づいてメタデータを作成する。
【００５２】
上記構成の分散処理システムによると、ユーザプログラムから分散処理を行うデータのデータ形式とデータ形式に依存した情報を受け取り、データパーティションを作成する際に取得した情報と合わせてデータパーティション毎にメタデータを作成し、データパーティションをユーザ定義関数を用いて処理を行う場合に、ユーザ定義関数にメタデータを渡すように動作する。その結果、データ形式に依存した分散処理が可能となり、様々なデータ形式の分散処理を行うことが可能となる。
【００５３】
図２に示したホスト１の各部は、図９に例示するハードウエア資源において実現される。すなわち、図９に示す構成は、プロセッサ５０、ＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）５１、ＲＯＭ（Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）５２、外部接続インタフェース５３、記録装置５４および各構成要素を接続するバス５５を備える。図２のユーザプログラム１１は、ＲＯＭ５２または記録装置５４に格納されてもよい。
【００５４】
上述した各実施形態では、図９に示すプロセッサ５０が実行する一例として、ホスト１に対して、上述した機能を実現可能なコンピュータ・プログラムを供給した後、そのコンピュータ・プログラムを、プロセッサ５０がＲＡＭ５１に読み出して実行することによって実現する場合について説明した。しかしながら、上記各図に示した各ブロックに示す機能は、一部または全部を、ハードウエアとして実現してもよい。
【００５５】
係る供給されたコンピュータ・プログラムは、読み書き可能なメモリ（一時記憶媒体）またはハードディスク装置等のコンピュータ読み取り可能な記憶デバイスに格納すればよい。そして、このような場合において、本発明は、係るコンピュータ・プログラムを表すコード或いは係るコンピュータ・プログラムを格納した記憶媒体によって構成されると捉えることができる。
【００５６】
＜付記＞
上記実施形態の一部又は全部は、以下の付記のようにも記載されうる。以下、本発明における分散処理システム、プログラム記録媒体、分散処理方法の構成の概略を説明する。但し、本発明は、以下の構成に限定されない。
【００５７】
（付記１）
分散処理を行うデータのデータ形式と、分散処理を行うデータのデータ形式に依存するパラメータと、を受け取るインターフェース手段と、
前記データから当該データを分散処理するときの処理単位であるデータパーティションを作成すると共に、前記データパーティション毎に対応し、当該データパーティションを作成した元となる前記データのデータ形式に依存する前記パラメータに基づく情報を含むメタデータを作成する分割データ作成手段と、
を備えた分散処理システム。
【００５８】
（付記２）
付記１に記載の分散処理システムであって、
前記分割データ作成手段は、前記インターフェース手段にて受け取った情報と、前記データパーティションを作成する元となる前記データを読み込むことで得られた情報と、に基づいて前記メタデータを作成する、
分散処理システム。
【００５９】
（付記３）
付記２に記載の分散処理システムであって、
前記分割データ作成手段は、前記データパーティションを作成した元となる前記データのデータ形式に依存する前記パラメータを含めて前記メタデータを作成する、
分散処理システム。
【００６０】
（付記４）
付記２又は３に記載の分散処理システムであって、
前記分割データ作成手段は、前記データパーティションのデータ構造に基づいて前記メタデータを生成する、
分散処理システム。
【００６１】
（付記５）
付記１乃至４のいずれかに記載の分散処理システムであって、
前記パラメータは、前記データのデータ構造に基づく情報を含む、
分散処理システム。
【００６２】
（付記５．１）
付記１乃至５のいずれかに記載の分散処理システムであって、
前記データの前記データ形式は、画像であり、
前記パラメータは、前記データの画像サイズ、作成する前記データパーティションの画像サイズ、及び、作成する前記データパーティションの冗長部分サイズ、を含む、
分散処理システム。
【００６３】
（付記５．２）
付記５．１に記載の分散処理システムであって、
前記メタデータは、前記データの画像サイズ、作成する前記データパーティションの画像サイズ、及び、前記データの先頭から作成する前記データパーティションのオフセット、を含む、
分散処理システム。
【００６４】
（付記５．３）
付記１乃至５のいずれかに記載の分散処理システムであって、
前記データの前記データ形式は、密行列であり、
前記パラメータは、前記データの行列サイズ、及び、作成する前記データパーティションの行列サイズ、を含む、
分散処理システム。
【００６５】
（付記５．４）
付記５．３に記載の分散処理システムであって、
前記メタデータは、作成する前記データパーティションの行列サイズ、を含む、
分散処理システム。
【００６６】
（付記５．５）
付記１乃至５のいずれかに記載の分散処理システムであって、
前記データの前記データ形式は、疎行列であり、
前記パラメータは、前記データの行列サイズ、作成する前記データパーティションの行列サイズ、及び、前記データ内の非ゼロ要素数、を含む、
分散処理システム。
【００６７】
（付記５．６）
付記５．５に記載の分散処理システムであって、
前記メタデータは、作成する前記データパーティションの行列サイズ、及び、作成する前記データパーティション内の非ゼロ要素数、を含む、
分散処理システム。
【００６８】
（付記６）
付記１乃至５のいずれかに記載の分散処理システムであって、
さらに、前記データパーティションを処理するプログラム関数に、前記データパーティションと共に前記メタデータを渡すタスク実行手段を備えた、
分散処理システム。
【００６９】
（付記７）
付記６に記載の分散処理システムであって、
前記データパーティションを処理する前記プログラム関数は、外部から受け取ったユーザ定義関数である、
分散処理システム。
【００７０】
（付記８）
付記６又は７に記載の分散処理システムであって、
前記分割データ作成手段が作成した前記メタデータを格納すると共に、前記タスク実行手段が前記データパーティションを処理する前記プログラム関数を実行させる場合に、当該タスク実行手段に、格納している前記メタデータを提供するメタデータ格納手段をさらに備えた、
分散処理システム。
【００７１】
（付記９）
情報処理装置に、
分散処理を行うデータのデータ形式と、分散処理を行うデータのデータ形式に依存するパラメータと、を受け取るインターフェース手段と、
前記データから当該データを分散処理するときの処理単位であるデータパーティションを作成すると共に、前記データパーティション毎に対応し、当該データパーティションを作成した元となる前記データのデータ形式に依存する前記パラメータに基づく情報を含むメタデータを作成する分割データ作成手段と、
を実現させるためのプログラムを記録するプログラム記録媒体。
【００７２】
（付記９．１）
付記９に記載のプログラム記録媒体であって、
前記分割データ作成手段は、前記インターフェース手段にて受け取った情報と、前記データパーティションを作成する元となる前記データを読み込むことで得られた情報と、に基づいて前記メタデータを作成する、
プログラム記録媒体。
【００７３】
（付記９．２）
付記９．１に記載のプログラム記録媒体であって、
前記分割データ作成手段は、前記データパーティションを作成した元となる前記データのデータ形式に依存する前記パラメータを含めて前記メタデータを作成する、
プログラム記録媒体。
【００７４】
（付記９．３）
付記９．１又は９．２に記載のプログラム記録媒体であって、
前記分割データ作成手段は、前記データパーティションのデータ構造に基づいて前記メタデータを生成する、
プログラム記録媒体。
【００７５】
（付記９．４）
付記９乃至９．３のいずれかに記載のプログラム記録媒体であって、
前記パラメータは、前記データのデータ構造に基づく情報を含む、
プログラム記録媒体。
【００７６】
（付記９．５）
付記９乃至９．４のいずれかに記載のプログラム記録媒体であって、
前記情報処理装置に、さらに、
前記データパーティションを処理するプログラム関数に、前記データパーティションと共に前記メタデータを渡すタスク実行手段、
を実現させるためのプログラム記録媒体。
【００７７】
（付記９．６）
付記９．５に記載のプログラム記録媒体であって、
前記情報処理装置に、さらに、
前記分割データ作成手段が作成した前記メタデータを格納すると共に、前記タスク実行手段が前記データパーティションを処理する前記プログラム関数を実行させる場合に、当該タスク実行手段に、格納している前記メタデータを提供するメタデータ格納手段、
を実現させるためのプログラム記録媒体。
【００７８】
（付記１０）
情報処理装置が、
分散処理を行うデータのデータ形式と、分散処理を行うデータのデータ形式に依存するパラメータと、を受け取り、
前記データから当該データを分散処理するときの処理単位であるデータパーティションを作成すると共に、前記データパーティション毎に対応し、当該データパーティションを作成した元となる前記データのデータ形式に依存する前記パラメータに基づく情報を含むメタデータを作成する、
分散処理方法。
【００７９】
（付記１０．１）
付記１０に記載の分散処理方法であって、
受け取った情報と、前記データパーティションを作成する元となる前記データを読み込むことで得られた情報と、に基づいて前記メタデータを作成する、
分散処理方法。
【００８０】
（付記１０．２）
付記１０．１に記載の分散処理方法であって、
前記データパーティションを作成した元となる前記データのデータ形式に依存する前記パラメータを含めて前記メタデータを作成する、
分散処理方法。
【００８１】
（付記１０．３）
付記１０．１又は１０．２に記載の分散処理方法であって、
前記データパーティションのデータ構造に基づいて前記メタデータを生成する、
分散処理方法。
【００８２】
（付記１０．４）
付記１０乃至１０．３のいずれかに記載の分散処理方法であって、
前記パラメータは、前記データのデータ構造に基づく情報を含む、
分散処理方法。
【００８３】
（付記１０．５）
付記１０乃至１０．４のいずれかに記載の分散処理方法であって、
前記情報処理装置が、さらに、
前記データパーティションを処理するプログラム関数に、前記データパーティションと共に前記メタデータを渡す、
分散処理方法。
【００８４】
（付記１０．６）
付記１０．５に記載の分散処理方法であって、
前記情報処理装置が、さらに、
作成した前記メタデータを格納すると共に、タスク実行手段が前記データパーティションを処理する前記プログラム関数を実行させる場合に、当該タスク実行手段に、格納している前記メタデータを提供する、
分散処理方法。
【００８５】
なお、上述したプログラム記録媒体は、コンピュータが読み取り可能な記録媒体である。例えば、プログラム記録媒体は、フレキシブルディスク、光ディスク、光磁気ディスク、及び、半導体メモリ等の可搬性を有する媒体である。
【００８６】
以上、上記実施形態等を参照して本願発明を説明したが、本願発明は、上述した実施形態に限定されるものではない。本願発明の構成や詳細には、本願発明の範囲内で当業者が理解しうる様々な変更をすることができる。
【００８７】
この出願は、２０１６年１０月１９日に出願された日本出願特願２０１６−２０４７７０を基礎とする優先権を主張し、その開示のすべてをここに取り込む。
【産業上の利用可能性】
【００８８】
本発明によれば、様々なデータ形式のデータをアクセラレータを用いて分散処理する用途に使用できる。応用分野として画像処理やデータ解析向けの計算機がある。
【符号の説明】
【００８９】
１  ホスト
１１  ユーザプログラム
１２  ＡＰＩ部
１３  データ格納部
１４  アクセラレータ制御部
１４１  プログラム解析部
１４２  データスケジューラ部
１４３  タスクスケジューラ部
１４４  分割データ作成部
１４５  タスク実行部
１４６  メタデータ格納部
２１，２２，２３  アクセラレータ
２１ａ，２２ａ，２３ａ  プロセッサ
２１ｂ，２２ｂ，２３ｂ  メモリ
２００  分散処理システム
２０１  インターフェース部
２０２  分割データ作成部
３１０  マスタコンピュータ
３２１，３２２，３２３  スレーブコンピュータ
【図１】
2018074444.tif 000003
【図２】
2018074444.tif 000004
【図３】
2018074444.tif 000005
【図４】
2018074444.tif 000006
【図５Ａ】
2018074444.tif 000007
【図５Ｂ】
2018074444.tif 000008
【図６】
2018074444.tif 000009
【図７】
2018074444.tif 000010
【図８】
2018074444.tif 000011
【図９】
2018074444.tif 000012
【手続補正書】
【提出日】平成31年4月3日(2019.4.3)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
分散処理を行うデータのデータ形式と、分散処理を行うデータのデータ形式に依存するパラメータと、を受け取るインターフェース手段と、
前記データから当該データを分散処理するときの処理単位であるデータパーティションを作成すると共に、前記データパーティション毎に対応し、当該データパーティションを作成した元となる前記データのデータ形式に依存する前記パラメータに基づく情報を含むメタデータを作成する分割データ作成手段と、
を備えた分散処理システム。
【請求項２】
請求項１に記載の分散処理システムであって、
前記分割データ作成手段は、前記インターフェース手段にて受け取った情報と、前記データパーティションを作成する元となる前記データを読み込むことで得られた情報と、に基づいて前記メタデータを作成する、
分散処理システム。
【請求項３】
請求項２に記載の分散処理システムであって、
前記分割データ作成手段は、前記データパーティションを作成した元となる前記データのデータ形式に依存する前記パラメータを含めて前記メタデータを作成する、
分散処理システム。
【請求項４】
請求項２又は３に記載の分散処理システムであって、
前記分割データ作成手段は、前記データパーティションのデータ構造に基づいて前記メタデータを生成する、
分散処理システム。
【請求項５】
請求項１乃至４のいずれかに記載の分散処理システムであって、
前記パラメータは、前記データのデータ構造に基づく情報を含む、
分散処理システム。
【請求項６】
請求項１乃至５のいずれかに記載の分散処理システムであって、
さらに、前記データパーティションを処理するプログラム関数に、前記データパーティションと共に前記メタデータを渡すタスク実行手段を備えた、
分散処理システム。
【請求項７】
請求項６に記載の分散処理システムであって、
前記データパーティションを処理する前記プログラム関数は、外部から受け取ったユーザ定義関数である、
分散処理システム。
【請求項８】
請求項６又は７に記載の分散処理システムであって、
前記分割データ作成手段が作成した前記メタデータを格納すると共に、前記タスク実行手段が前記データパーティションを処理する前記プログラム関数を実行させる場合に、当該タスク実行手段に、格納している前記メタデータを提供するメタデータ格納手段をさらに備えた、
分散処理システム。
【請求項９】
情報処理装置に、
分散処理を行うデータのデータ形式と、分散処理を行うデータのデータ形式に依存するパラメータと、を受け取るインターフェース手段と、
前記データから当該データを分散処理するときの処理単位であるデータパーティションを作成すると共に、前記データパーティション毎に対応し、当該データパーティションを作成した元となる前記データのデータ形式に依存する前記パラメータに基づく情報を含むメタデータを作成する分割データ作成手段と、
を実現させるためのプログラム。
【請求項１０】
情報処理装置が、
分散処理を行うデータのデータ形式と、分散処理を行うデータのデータ形式に依存するパラメータと、を受け取り、
前記データから当該データを分散処理するときの処理単位であるデータパーティションを作成すると共に、前記データパーティション毎に対応し、当該データパーティションを作成した元となる前記データのデータ形式に依存する前記パラメータに基づく情報を含むメタデータを作成する、
分散処理方法。
【国際調査報告】
2018074444.tif 000013
2018074444.tif 000014