特許第6221584号(P6221584)IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ 日本電気株式会社の特許一覧

特許6221584処理の並列化装置、処理の並列化方法及びプログラム
<>
  • 特許6221584-処理の並列化装置、処理の並列化方法及びプログラム 図000003
  • 特許6221584-処理の並列化装置、処理の並列化方法及びプログラム 図000004
  • 特許6221584-処理の並列化装置、処理の並列化方法及びプログラム 図000005
  • 特許6221584-処理の並列化装置、処理の並列化方法及びプログラム 図000006
  • 特許6221584-処理の並列化装置、処理の並列化方法及びプログラム 図000007
  • 特許6221584-処理の並列化装置、処理の並列化方法及びプログラム 図000008
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】6221584
(24)【登録日】2017年10月13日
(45)【発行日】2017年11月1日
(54)【発明の名称】処理の並列化装置、処理の並列化方法及びプログラム
(51)【国際特許分類】
   G06F 9/50 20060101AFI20171023BHJP
【FI】
   G06F9/46 465C
   G06F9/46 465D
【請求項の数】8
【全頁数】13
(21)【出願番号】特願2013-204606(P2013-204606)
(22)【出願日】2013年9月30日
(65)【公開番号】特開2015-69518(P2015-69518A)
(43)【公開日】2015年4月13日
【審査請求日】2016年8月5日
(73)【特許権者】
【識別番号】000004237
【氏名又は名称】日本電気株式会社
(74)【代理人】
【識別番号】100103894
【弁理士】
【氏名又は名称】家入 健
(72)【発明者】
【氏名】佐川 友章
【審査官】 田中 幸雄
(56)【参考文献】
【文献】 特開2012−247979(JP,A)
【文献】 特開2006−352236(JP,A)
【文献】 特開平10−97544(JP,A)
【文献】 特開平8−297643(JP,A)
【文献】 特開2006−309777(JP,A)
(58)【調査した分野】(Int.Cl.,DB名)
G06F 9/50
(57)【特許請求の範囲】
【請求項1】
複数のプロセッサと、
少なくともキーとデータとを有する、複数の入力レコードを入力し、前記入力レコード夫々にかかる処理を、いずれかの前記プロセッサに割り当てる入力レコード分類手段と、を有し、
前記入力レコード分類手段は、
予め定められたしきい値を参照し、
複数の前記プロセッサに処理が割り当てられた前記入力レコードの数の偏りを示す指標が、前記しきい値を超えない場合は、同一の前記キーを有する複数の前記入力レコードを、同一の前記プロセッサが処理するよう割り当て、前記指標が前記しきい値以上の場合は、同一の前記キーを有する複数の前記入力レコードを、複数のプロセッサが処理するよう割り当てる
並列化装置。
【請求項2】
前記入力レコード分類手段は、
第1の入力レコードを入力した際、前記第1の入力レコードと同一の前記キーを有する他の前記入力レコードを処理している前記プロセッサが無い場合には、複数の前記プロセッサのうち負荷が最も低い前記プロセッサに、前記第1の入力レコードの処理を割り当てる
請求項1記載の並列化装置。
【請求項3】
複数の前記プロセッサによる処理結果を集計する集計手段をさらに有する
請求項1又は2記載の並列化装置。
【請求項4】
前記プロセッサ毎に、処理が割り当てられた前記入力レコードの数と、処理が割り当てられた前記入力レコード夫々が有する前記キーと、を保持する分散管理テーブルをさらに有する
請求項1乃至いずれか1項記載の並列化装置。
【請求項5】
コンピュータが、少なくともキーとデータとを有する、複数の入力レコードを入力するステップと、
前記コンピュータが、前記入力レコード夫々にかかる処理を、複数のプロセッサのいずれかに割り当てる入力レコード分類ステップと、を有し、
前記入力レコード分類ステップでは、前記コンピュータは、
予め定められたしきい値を参照し、
複数の前記プロセッサに処理が割り当てられた前記入力レコードの数の偏りを示す指標が前記しきい値を超えない場合は、同一の前記キーを有する複数の前記入力レコードを、同一の前記プロセッサが処理するよう割り当て、前記偏りを示す指標が前記しきい値以上の場合は、同一の前記キーを有する複数の前記入力レコードを、複数のプロセッサが処理するよう割り当てる
並列化方法。
【請求項6】
前記入力レコード分類ステップは、
第1の入力レコードを入力した際、前記第1の入力レコードと同一の前記キーを有する他の前記入力レコードを処理している前記プロセッサが無い場合には、複数の前記プロセッサのうち負荷が最も低い前記プロセッサに、前記第1の入力レコードの処理を割り当てるものである
請求項記載の並列化方法。
【請求項7】
前記コンピュータが、複数の前記プロセッサによる処理結果を集計する集計ステップをさらに有する
請求項5又は6記載の並列化方法。
【請求項8】
コンピュータに、請求項乃至いずれか1項の方法を実行させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は処理の並列化装置、処理の並列化方法及びプログラムに関し、例えば逐次処理を前提としたループ集計処理を、効率的に稼働する並列化処理に再構築する技術に関する。
【背景技術】
【0002】
近時、コンピュータシステムの処理能力を増強するため、ハードウェアの台数を増加させて並列稼働させること(スケールアウト)がよく行われるようになった。このようなハードウェアのスケールアウトを見据えたとき、共有メモリ型並列計算機用のソフトウェアよりも、分散メモリ型並列計算機用のソフトウェアのほうが適しているとされる。
【0003】
共有メモリ型並列計算機における並列処理では、各並列処理間でメモリ空間を共有できるメリットがある。その反面、ハードウェアのスケールアウトが困難である。一方、分散メモリ型並列計算機における並列処理では、各並列処理間でメモリ空間を共有できないためプロセス間で通信する必要がある。その反面、ハードウェアのスケールアウトが容易である。
【0004】
従来、並列処理ソフトウェアを設計するに際しては、プログラマに対してこれらの特徴を踏まえた設計スキルが要求されており、その設計作業の負荷は大きいものであった。そのため、並列処理ソフトウェアを自動的に作成するための手法がいくつか提案されている。
【0005】
特許文献1は、分散メモリ型並列計算機において、特にループ処理について、並列化可能な処理と逐次処理とを分けて異なる方式で処理を行う手法、及び並列化を徹底しつつ並列処理結果を都度プロセッサ間で通信して集計する手法を提案している。
【0006】
また、特許文献2−3は、分散メモリ型並列計算機において、並列処理が可能な処理を効率的に実行するための種々の手法を提案している。
【先行技術文献】
【特許文献】
【0007】
【特許文献1】特開平06−231099号公報
【特許文献2】特開平07−200498号公報
【特許文献3】特開2001−005792号公報
【発明の概要】
【発明が解決しようとする課題】
【0008】
しかしながら、特許文献1に記載の並列化可能な処理と逐次処理とを分けて異なる方式で処理を行う手法では、並行して行われる複数の処理と逐次で行われる1つの処理が併存するため、様々な弊害が発生する。また、並列化を徹底しつつ並列処理結果を都度プロセッサ間で通信して集計する手法では、プロセッサ間のデータの受け渡しを多数行う必要があるため、処理が非効率である。
【0009】
また、特許文献2−3は、いずれも並列処理が可能であることが分かっている処理について、それを効率化する手法を提案するものであり、逐次処理を並列化することや、逐次処理と並列処理を併せた処理手法については、何ら言及していない。
【0010】
本発明は、このような問題点を解決するためになされたものであり、逐次処理を前提とした処理、特にループ集計処理を、効率的に稼働する並列化処理に再構築することができる、処理の並列化装置、処理の並列化方法及びプログラムを提供することを目的とする。
【0011】
その他の課題と新規な特徴は、本明細書の記述及び添付図面から明らかになるであろう。
【課題を解決するための手段】
【0012】
本発明にかかる並列化装置は、複数のプロセッサと、少なくともキーとデータとを有する、複数の入力レコードを入力し、前記入力レコード夫々にかかる処理を、いずれかの前記プロセッサに割り当てる入力レコード分類手段と、を有し、前記入力レコード分類手段は、同一の前記キーを有する複数の前記入力レコードを、同一の前記プロセッサが処理するよう割り当てるものである。
【0013】
本発明にかかる並列化方法は、少なくともキーとデータとを有する、複数の入力レコードを入力するステップと、前記入力レコード夫々にかかる処理を、複数のプロセッサのいずれかに割り当てる入力レコード分類ステップと、を有し、前記入力レコード分類ステップでは、同一の前記キーを有する複数の前記入力レコードを、同一の前記プロセッサが処理するよう割り当てるものである。
【0014】
本発明にかかるプログラムは、上記並列化方法をコンピュータに実行させるためのプログラムである。
【発明の効果】
【0015】
本発明により、逐次処理を前提としたループ集計処理を、効率的に稼働する並列化処理に再構築することが可能な処理の並列化装置、処理の並列化方法及びプログラムを提供することができる。
【図面の簡単な説明】
【0016】
図1】本発明の実施の形態の構成を示す図である。
図2】本発明の実施の形態における分散管理テーブルの構成を示す図である。
図3】本発明の実施の形態の処理を示す図である。
図4】本発明の実施の形態における入力及び出力の例を示す図である。
図5】本発明の実施の形態における分散管理テーブルの例を示す図である。
図6】本発明の実施の形態における入力の例を示す図である。
【発明を実施するための形態】
【0017】
以下、本発明を適用した具体的な実施の形態について、図面を参照しながら詳細に説明する。
【0018】
はじめに、本実施の形態における並列化装置100の概要について説明する。並列化装置100は、ループ集計処理を並列化する処理を行う装置である。すなわち、並列化装置100は、逐次処理を前提として設計されたループ集計処理を、分散メモリ型並列計算機上において効率的に稼働するような並列化処理に再構築する処理を行うことに特徴を有するものである。ループ集計処理は、複数の入力レコード間に依存関係がないため各入力レコードを独立して処理できる部分と、各入力レコード間に依存関係がある処理と、の2種類の処理に分けることができる。前者は、例えば集計キーをIDとしたマスタ引き当て処理や、1レコード内の情報の加工処理がある。後者は、集計キーが同一のグループの複数の入力レコードに含まれる集計対象の集計処理や、入力レコード数のカウントアップ処理がある。本発明は、従来、主に逐次処理によって行われていた後者の処理を、効率的に並列化する手法に関する。
【0019】
本実施の形態では、一例として、図4の表41のような、複数の入力レコードからなる入力データを、親キー及び子キーをソートキーとして使用して集計し、図4の表42のような集計結果を得る、ループ集計処理に本発明を適用する場合について説明する。すなわち、並列化装置100は、このループ集計処理を複数のプロセッサに効率的に並列処理させる手法に特徴を有するものである。
【0020】
なお、ここでいう親キー及び子キーとは、例えば、店舗名(親キー)と、その店舗で売れた商品名(子キー)のような、集計対象(およそ「商品」)を分類するための互いに独立したキーとしての関係を有する。この例に則れば、図4の表41の1レコード目(親キー=X、子キー=A、データ=3)は、「店舗Xにおいて商品Aが3個売れた」ことを意味する。同様に、3レコード目(親キー=Y、子キー=B、データ=5)は、「店舗Yにおいて商品Bが5個売れた」ことを意味する。そして、集計処理とは、店舗(親キー)毎及び商品名(子キー)毎に、その商品が何個売れたのかを集計する処理をいう。集計結果である表42は、例えば、店舗Xにおいて商品が合計9個売れたこと、そのうち商品Aの販売数は5であったことを示している。
【0021】
図1乃至図5を用いて、本実施の形態における並列化装置100の構成について説明する。
【0022】
並列化装置100は、入力レコード分類手段101、複数のプロセッサ111、集計手段121の処理手段を有する。また、並列化手段100は、図示しない記憶領域上に、しきい値131、プロセッサ数132、分散管理テーブル102、入力ファイル等141、出力ファイル等142のデータを保持する。
【0023】
入力レコード分類手段101は、ループ集計処理が処理される際に、入力ファイル141等から入力レコードを読み込み、各プロセッサに入力レコードの集計処理をさせる指示を出す処理を行う。具体的には、入力レコード分類手段101は、現在の処理環境において利用できるプロセッサの数を、プロセッサ数132の情報を読み込むことで認識し、指示を出力すべきプロセッサ数の上限値を決定する。また、入力レコード分類手段101は、分散管理テーブル102を参照することで、各入力レコードを処理するため最も効率が良いプロセッサを選択する。ここでいう効率を判断するための処理フローは後述するが、入力レコード分類手段101は、しきい値131の情報を読み込んでその判断に利用する。
【0024】
図2に示すように、分散管理テーブル102は、プロセッサ番号21、子キー22、親キー23、処理レコード数24の各項目を管理する記憶手段である。ここで管理するプロセッサの数、すなわち分散管理テーブル102が管理するレコード数は、プロセッサ数132の情報に応じて決定される。
【0025】
複数のプロセッサ111は、ループ集計処理を実際に実行する演算処理手段である。プロセッサ111の数はプロセッサ数132の情報により決定される。
【0026】
集計手段121は、全プロセッサ111によるループ集計処理の集計処理(第1段階の集計処理)が完了するまで待ち合わせ、各プロセッサ111による第1段階の集計処理結果を集計する処理(第2段階の集計処理)を行う。なお、集計手段121による第2段階の集計処理は、最も効率よく複数のプロセッサ111に処理が分散された場合は行われない。すなわち、この場合は、プロセッサ111における第1段階の集計処理によってすべての処理が完了するので、集計手段121による第2段階の集計処理は必要ない。一方、分散が効率よくなされなかったときは、各プロセッサ111における第1段階の集計処理の結果を対象として、集計手段121が第2段階の集計処理を行うことで、集計が完了する。
【0027】
しきい値131は、複数のプロセッサ111のうちどのプロセッサ111に処理を行わせれば効率が良いかを判断する際の判断基準となる数値である。しきい値131は、分散管理テーブル102での処理レコード数の標準偏差と比較される。なお、しきい値131は、事前に利用者によって任意の適切な値に設定されるべきパラメータである。しきい値131を小さくすると、処理の分散がなされやすくなり、多くのプロセッサ111が活用されるようになる。しきい値131を大きくすると、処理が集中されやすくなり、使用されるプロセッサ111が偏在するようになる。
【0028】
プロセッサ数132は、現在の処理環境下において使用可能なプロセッサ111の数を示す数値である。
【0029】
入力ファイル等141は、ループ集計処理の処理対象となる入力ファイル、DB(データベース)の表(テーブル)、またはメモリ上の複数のレコード等である。入力ファイル等141に含まれる複数のレコードは、必ずしも集計キーでソートされている必要はない。
【0030】
出力ファイル等142は、ループ集計処理の処理結果の格納先となる出力ファイル、DB(データベース)の表(テーブル)、またはメモリ上の複数のレコード等である。一般に、出力ファイル等142には、明細レコードと集計結果となるレコードとが混在している。
【0031】
つづいて、図3のフローチャートを用いて、並列化装置100の動作について説明する。ここでは、並列化装置100が、入力ファイル等141としての入力レコード41(図4)を入力し、入力レコード41に対する集計処理を実行する場合を例として説明する。
【0032】
ここで、集計処理とは、入力レコード41の親キーおよび子キーをキーとしてレコードの名寄せを行い、データを合算する処理をいう。かかる集計処理の結果、並列化装置100は、出力ファイル等142としての出力レコード42(図4)を出力する。
【0033】
なお、この集計処理の前提として、しきい値131は1.5に設定されているものとする。また、分散管理テーブル102として、図5に示す分散管理テーブル61乃至65を使用するものとする。
【0034】
ステップ31:入力ファイル等141の1レコードを入力する。
入力レコード分類手段101が、入力レコード41の1レコード目を入力する。1レコード目の内容は、親キー=X、子キー=A、データ=3である。
【0035】
ステップ32:入力レコードの子キーが分散管理テーブル102に存在するか確認する。
入力レコード分類手段101が、分散管理テーブル61(図5)を参照し、ステップ31で入力したレコードの子キーが、分散管理テーブル61に存在するか判定する。分散管理テーブルとは、あるプロセッサ111が、あるレコードを対象とする集計処理を行っている場合、そのレコードの子キー及び親キーの情報を、そのプロセッサ111のプロセッサ番号と紐付けて保持する役割を担うテーブルである。いま、分散管理テーブル61には、いずれのプロセッサ111にも、何らの子キーも紐付けられていない。すなわち、ステップ31で入力したレコードの子キー「A」と紐付けられたプロセッサ111は存在しない。これは、この時点で、子キー「A」を有するレコードを処理しているプロセッサ111が1つも存在しないことを意味している。この場合、ステップ34に移行する。
【0036】
ステップ34:入力レコードの親キーが分散管理テーブル102に存在するか確認する。
入力レコード分類手段101が、分散管理テーブル61(図5)を参照し、ステップ31で入力したレコードの親キーが、分散管理テーブル61に存在するか判定する。いま、分散管理テーブル61には、いずれのプロセッサ111にも、何らの親キーも紐付けられていない。すなわち、ステップ31で入力したレコードの親キー「X」と紐付けられたプロセッサ111は存在しない。これは、この時点で、親キー「X」を有するレコードを処理しているプロセッサ111が1つも存在しないことを意味している。この場合、ステップ37に移行する。
【0037】
ステップ37:負荷が最も低いプロセッサ111を選択。
入力レコード分類手段101は、現時点で最も処理負荷が低いプロセッサ111を1つ選択し、そのプロセッサ111を、ステップ31で入力したレコードの集計処理を行うべきプロセッサとして決定する。なお、最も処理負荷が低いプロセッサ111が複数存在する場合は、その中から任意の1つのプロセッサ111を選択する。例えば、複数のプロセッサ111に予め序列を付与しておき、最も序列の高いプロセッサ111を選択することができる。ここでは、入力レコード分類手段101によりプロセッサ「1」が選択されたものとする。
【0038】
この時点で、入力レコード分類手段101は、分散管理テーブル61の内容を、分散管理テーブル62のように更新する。すなわち、選択されたプロセッサ111のプロセッサ番号「1」と、入力レコードの子キー「A」及び親キー「X」とを、紐付けて保持する。また、プロセッサ番号「1」が集計処理を行うべきレコード数を保持する。ここでは、処理レコード数は「1」となる。この後、ステップ31に移行する。
【0039】
ステップ31(2回目):
入力レコード分類手段101が、入力レコード41の2レコード目を入力する。1レコード目の内容は、親キー=X、子キー=A、データ=2である。
【0040】
ステップ32:
入力レコード分類手段101が、現時点の分散管理テーブル62を参照し、2回目の入力レコードの子キー「A」が、分散管理テーブル62に存在するか判定する。いま、分散管理テーブル62では、プロセッサ「1」と子キー「A」が紐付けられている。これは、この時点で、子キー「A」を有するレコードを、プロセッサ「1」が既に処理していることを意味している。この場合、ステップ33に移行する。
【0041】
ステップ33:既に子キーを処理しているプロセッサ111を選択。
入力レコード分類手段101が、2レコード目をプロセッサ「1」で処理すべきことを決定する。これは、同じキーを持つレコードの集計処理は極力同一プロセッサで行う方が、プロセッサ間のデータ通信を削減でき、効率的だからである。
【0042】
入力レコード分類手段101は、この時点で、分散管理テーブル62の内容を、分散管理テーブル63のように更新する。すなわち、プロセッサ番号「1」が集計処理を行うべきレコード数は「2」となる。この後、再びステップ31に移行する。
【0043】
ステップ31(3回目):
入力レコード分類手段101が、入力レコード41の3レコード目を入力する。3レコード目の内容は、親キー=Y、子キー=B、データ=5である。
【0044】
ステップ32:
入力レコード分類手段101が、現時点の分散管理テーブル63を参照し、3回目の入力レコードの子キー「B」が、分散管理テーブル63に存在するか判定する。この時点で、分散管理テーブル63には該当するレコードがない。これは、子キー「B」を有するレコードを処理しているプロセッサ111は存在しないことを意味している。この場合、ステップ34に移行する。
【0045】
ステップ34:
入力レコード分類手段101が、現時点の分散管理テーブル63を参照し、3回目の入力レコードの親キー「Y」が、分散管理テーブル63に存在するか判定する。この時点で、分散管理テーブル63には該当するレコードがない。これは、親キー「Y」を有するレコードを処理しているプロセッサ111は存在しないことを意味している。この場合、ステップ37に移行する。
【0046】
ステップ37:負荷が最も低いプロセッサ111を選択。
入力レコード分類手段101は、現時点で最も処理負荷が低いプロセッサ111を1つ選択し、そのプロセッサ111を、3レコード目を処理すべきプロセッサとして決定する。ここでは、入力レコード分類手段101によりプロセッサ「2」が選択されたものとする。
【0047】
この時点で、入力レコード分類手段101は、分散管理テーブル63の内容を、分散管理テーブル64のように更新する。すなわち、選択されたプロセッサ111のプロセッサ番号「2」と、入力レコードの子キー「B」及び親キー「Y」とを、紐付けて保持する。また、プロセッサ「2」の処理レコード数は「1」となる。この後、再びステップ31に移行する。
【0048】
ステップ31(4回目):
入力レコード分類手段101が、入力レコード41の4レコード目を入力する。4レコード目の内容は、親キー=X、子キー=C、データ=4である。
【0049】
ステップ32:
入力レコード分類手段101が、現時点の分散管理テーブル64を参照し、4回目の入力レコードの子キー「C」が、分散管理テーブル64に存在するか判定する。この時点で、分散管理テーブル64には該当するレコードがない。これは、子キー「C」を有するレコードを処理しているプロセッサ111は存在しないことを意味している。この場合、ステップ34に移行する。
【0050】
ステップ33:
入力レコード分類手段101が、現時点の分散管理テーブル64を参照し、4回目の入力レコードの親キー「X」が、分散管理テーブル64に存在するか判定する。いま、分散管理テーブル64では、プロセッサ「1」と親キー「X」が紐付けられている。これは、この時点で、親キー「X」を有するレコードを、プロセッサ「1」が既に処理していることを意味している。この場合、ステップ35に移行する。
【0051】
ステップ35:しきい値判定
入力レコード分類手段101は、入力レコードをステップ33で発見したプロセッサ111に処理させるべきかを判断するため、しきい値判定を行う。しきい値判定の処理は次の通りである。まず、入力レコード分類手段101は、現在の分散管理テーブル64に対し、入力レコードと同一の親キーを既に処理しているプロセッサ111で入力レコードを処理すると仮定して、分散管理テーブル64の「処理レコード数」カラムを更新した状態を想定する。この例では、プロセッサ「1」の処理レコード数を「3」とした状態を想定する。その上で、処理レコード数の標準偏差を求める。この例では、標準偏差は1.24となり、しきい値1.5を超えない。この場合、入力レコード分類手段101は、入力レコードをステップ33で発見したプロセッサ111に処理させてよいと判断する。すなわち、4レコード目をプロセッサ「1」に割り当てることとする。この場合、ステップ36に移行する。
【0052】
なお、処理レコード数の標準偏差が閾値を超えた場合は、入力レコード分類手段101は、入力レコードをステップ33で発見したプロセッサ111に処理させるべきでないと判断する。すなわち、4レコード目の処理をプロセッサ「1」以外のプロセッサ111に割り当てることとする。この場合、ステップ37に移行し、現時点で処理負荷が最も低いプロセッサに処理を割り当てる。
【0053】
同じ親キーを持つレコードの集計処理は極力同一プロセッサで行う方が、プロセッサ間のデータ通信を削減できる点で効率的である。しかしながら、特定のプロセッサに処理が集中しすぎると、逆にシステム全体として処理効率が低下してしまう。そのため、本実施の形態ではプロセッサ111の分散を調整する役割を担うしきい値131を導入し、これを利用者により適宜調整可能として、最も優れた処理効率を求めることができるようにした。
【0054】
ステップ36:既に親キーを処理しているプロセッサ111を選択。
入力レコード分類手段101は、4レコード目を、既に同一の親キー「X」処理しているプロセッサ「1」で処理すべきものと決定する。
【0055】
この時点で、入力レコード分類手段101は、分散管理テーブル64の内容を、分散管理テーブル65のように更新する。すなわち、選択されたプロセッサ111のプロセッサ番号「1」と、入力レコードの子キー「C」及び親キー「Y」とを、紐付けて保持する。この結果、プロセッサ「1」に紐づけられる子キーは「A,C」となる。また、プロセッサ「1」の処理レコード数は累計「3」となる。この後、再びステップ31に移行する。
【0056】
以下、入力レコード分類手段101は、入力レコード41の5レコード目から7レコード目についても、上述の処理と同様に、図3のフローチャートに沿って特定のプロセッサ111に割り当てる処理を行う。その結果、7レコード全てを処理した時点では、分散管理テーブル102は、分散管理テーブル66(図5)のようになる。
【0057】
そして、各プロセッサ111は、入力レコード分類手段101によって自らに割り当てられた入力レコード41のレコードのみについて、それぞれ集計処理を行う。かかる集計処理により、図4の出力レコード42のように、プロセッサ1では親キー「X」の集計値「9」と子キー「A」「C」の集計値「5」「4」が得られ、プロセッサ2では親キー「Y」の集計値「11」と子キー「B」の集計値「11」が得られ、プロセッサ3で親キー「Z」の集計値「5」と子キー「D」「E」の集計値「3」「2」が得られる。
【0058】
この例における集計処理の効率について検討するに、図5の分散管理テーブル66における処理レコード数の標準偏差は、0.47と低い。このことから、3つのプロセッサ「1」「2」「3」が偏りなく均等に利用されていることがわかる。また、各プロセッサ111で行われた集計処理において使用されたキーの数は、「X」「A」「C」「Y」「B」「Z」「D」「E」の8個と少ない。このことから、効率よく分散処理がなされていることがわかる。
【0059】
なお、標準偏差は、以下の数1により求めることができる。ここで、n:分散管理テーブルのレコード数、i:プロセッサ番号、xi:プロセッサ番号iの処理レコード数、xa:処理レコード数の平均、を示す。
【数1】
【0060】
ここで、仮に、本実施の形態にかかる手法を採用せず、単に各プロセッサ111を均等に利用することを重視する手法(例えば、ラウンドロビン等の公知の負荷分散手法)を採用し(これはしきい値131を0に近づけた場合と等価である)、上記7レコードを処理する場合を想定する。この場合、処理レコード数の標準偏差は0.47であり、本実施の形態と略同等である。しかしながら、各プロセッサ111で行われた集計処理において使用されるキーの数は、「X」「A」「Y」「Z」「B」「E」「X」「Z」「C」「D」の10個となり、本実施の形態よりも多い。これは、異なるプロセッサ111で、同じキーを有する異なるレコードの集計処理が、より多く行われていることを意味する。この場合、プロセッサ間の通信が増加する。加えて、複数のプロセッサ111で分散して集計された親キー「X」と「Z」については、集計手段121を使用して、最終的な集計処理(第2段階の集計処理)を実施する必要が生ずる。
【0061】
また、仮に、本実施の形態にかかる手法を採用せず、単にプロセッサ間の通信を最小化することのみを重視し、親キーが同一のレコードをすべて同一プロセッサで処理することとした手法を採用し(これはしきい値131を∞に近づけた場合と等価である)、上記7レコードを処理する場合を想定する。この場合は、処理レコード数の標準偏差、及び各プロセッサ111で行われた集計処理において使用されたキーの数は、本実施の形態と同等となる。しかしながら、例えば入力ファイル等141として、図6の入力レコード71を使用した場合では、本実施の形態に示す手法では処理レコード数の標準偏差が0.47であるのに対し、親キーが同一のレコードをすべて同一プロセッサで処理する手法における標準偏差は2.05と比較的大きくなる。これは、後者の手法において、利用されないプロセッサがより多く現れることを示している。
【0062】
本実施の形態によれば、入力レコード分類手段101が、入力レコードと同一のキーを有する他の入力レコードを既に処理しているプロセッサ111が無い場合、処理負荷が最も低いプロセッサ111に処理を割り当てる。これにより、利用可能なプロセッサ111を均等に利用し、並列処理を効果的に行うことができる。
【0063】
また、本実施の形態によれば、入力レコード分類手段101が、同一のキーを有する複数の入力レコードの集計処理を、同一のプロセッサ111に処理させる。これにより、集計結果を得るために必要なプロセッサ間の通信量を最小限に抑制し、並列処理を効率的に行うことができる。
【0064】
さらに、本実施の形態によれば、入力レコード分類手段101は、しきい値131の値に応じて、複数のプロセッサ111に処理を分散させる程度を変更することができる。これにより、入力レコードの傾向に即した最適な並列処理を行うことができる。
【0065】
このように、本実施の形態によれば、従来の逐次処理を前提としたループ集計処理を、適切なしきい値を与えるだけで、効率的に稼働する並列化処理に再構築することが可能である。
【0066】
<その他の実施の形態>
なお、本発明は上記実施の形態に限られたものではなく、趣旨を逸脱しない範囲で適宜変更することが可能である。例えば、上述の実施の形態では親キーを1つとした例を説明したが、親キーが2つ以上の場合も同様の考えで処理できる。この場合、しきい値131は親キーの数だけ別々に設定し、図2の分散管理テーブル102の親キーの列を親キーの数だけ増やし、かつ図3のフローチャートのステップ34:親キー判定処理を、親キーの数だけ実施することになる。
【0067】
また、上述の実施の形態では、本発明を主にハードウェアの構成として説明したが、これに限定されるものではなく、任意の処理を、CPU(Central Processing Unit)にコンピュータプログラムを実行させることにより実現することも可能である。この場合、コンピュータプログラムは、様々なタイプの非一時的なコンピュータ可読媒体(non−transitory computer readable medium)を用いて格納され、コンピュータに供給することができる。非一時的なコンピュータ可読媒体は、様々なタイプの実体のある記録媒体(tangible storage medium)を含む。非一時的なコンピュータ可読媒体の例は、磁気記録媒体(例えばフレキシブルディスク、磁気テープ、ハードディスクドライブ)、光磁気記録媒体(例えば光磁気ディスク)、CD−ROM(Read Only Memory)、CD−R、CD−R/W、半導体メモリ(例えば、マスクROM、PROM(Programmable ROM)、EPROM(Erasable PROM)、フラッシュROM、RAM(random access memory))を含む。また、プログラムは、様々なタイプの一時的なコンピュータ可読媒体(transitory computer readable medium)によってコンピュータに供給されてもよい。一時的なコンピュータ可読媒体の例は、電気信号、光信号、及び電磁波を含む。一時的なコンピュータ可読媒体は、電線及び光ファイバ等の有線通信路、又は無線通信路を介して、プログラムをコンピュータに供給できる。
【符号の説明】
【0068】
100 並列化装置
101 入力レコード分類手段
111 プロセッサ
121 集計手段
131 しきい値
132 プロセッサ数
102 分散管理テーブル
141 入力ファイル等
142 出力ファイル等
図1
図2
図3
図4
図5
図6