並列処理方法、並列処理システム及び並列処理プログラム
【課題】 第一及び第二の集合の領域のデータの2つを入力として、第一及び第二の集合の各領域間の重なり合いの探索を高速に並列処理する。
【解決手段】 並列処理方法は、定義空間上に配置された第一及び第二の集合の領域のデータを入力する入力ステップ(S01)と、定義空間を複数の格子に分割して、分割した各格子について、各領域のうち当該格子に少なくとも領域の一部を含む領域を当該格子に仕分ける仕分ステップ(S02〜S06)と、分割された各格子について、一台以上の計算装置のうちの一つを選択して、選択した計算装置当該格子に仕分けられた各領域を示すデータを出力する選択ステップ(S07,S08)と、計算装置のそれぞれが、各領域間の重なり合う領域を判定して、判定の結果を出力する計算ステップ(S09)とを有する。
【解決手段】 並列処理方法は、定義空間上に配置された第一及び第二の集合の領域のデータを入力する入力ステップ(S01)と、定義空間を複数の格子に分割して、分割した各格子について、各領域のうち当該格子に少なくとも領域の一部を含む領域を当該格子に仕分ける仕分ステップ(S02〜S06)と、分割された各格子について、一台以上の計算装置のうちの一つを選択して、選択した計算装置当該格子に仕分けられた各領域を示すデータを出力する選択ステップ(S07,S08)と、計算装置のそれぞれが、各領域間の重なり合う領域を判定して、判定の結果を出力する計算ステップ(S09)とを有する。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、一台以上の計算装置を含んで構成される並列処理システムによる並列処理方法、当該並列処理システム及び並列処理プログラムに関する。
【背景技術】
【0002】
同じ二次元又は三次元の空間上に配置されたM個の領域からなる第一の集合と、N個の領域からなる第二の集合との間で(ここでM,Nは自然数)、第一の集合の各領域と第二の集合の各領域との重なり合いを探索する場合、単一の計算装置上での単純な総当り探索による方法では、「M×N」オーダーの計算量を必要とする。第一の集合のM個の領域、及び第二の集合のN個の領域を何らかの基準に従って予め並べ替え(ソート)してから照合する等のアルゴリズム上の工夫により、単純な総当り探索よりも計算量を削減できる余地はある。しかし、それにも限界があり、また、並べ替え処理自体の計算量が増加する。又は、スーパーコンピュータ等の高性能な計算装置を用いることで、総当り探索を高速に完了させることも考えられる。しかし、スーパーコンピュータは非常に高価であり、また、誰でも利用できるわけではない。
【0003】
ところで、リレーショナルデータベースにおいて、複数のテーブルのデータを組み合わせて結合する操作にJoinがある。リレーショナルデータベースにおけるJoin操作を高速化する方法は従来からいくつか提案されている。例えば、組み合わせ対象の一つである主データを複製する方法(従来技術1)や、その考え方を更に推し進めた非特許文献1に記載された方法(従来技術2)等がある。
【先行技術文献】
【非特許文献】
【0004】
【非特許文献1】“Application of Hash to Data BaseMachine and Its Architecture”,NEW GENERATION COMPUTING Volume 1,Number 1
【発明の概要】
【発明が解決しようとする課題】
【0005】
今日では、安価な計算装置を多数接続してクラスタを構築し、それらの間で計算負担を分担することで、膨大な計算を高速に完了する方法が主流となってきている。これは、予算に応じて接続する計算装置の種類や台数を任意に決定できること、及びそのような並列処理を実現するためのソフトウェアが広く利用可能になってきたことによる。以上の経緯を踏まえると、第一の集合のM個の領域と第二の集合のN個の領域との間で重なり合う領域を探索する処理を、並列処理により高速化することが考えられる。
【0006】
すると今度は、上記の探索処理をどのように並列処理するかが問題となる。ところで、上記の探索処理は、M個の領域からなる第一の集合を主データ、N個の領域からなる第二の集合を従データとして見ると、主従データの突き合わせ処理とみなせる(反対に、N個の領域からなる第二の集合を主データ、M個の領域からなる第一の集合を従データとしてみなしてもよい)。つまり、リレーショナルデータベースにおけるJoin操作に似た処理となっている(但し、あくまで似ているだけであって、領域のデータがリレーショナルデータベースに登録されている必要はない)。
【0007】
上述した従来技術1では、並列処理を行う計算装置に主データを複製し、その一方で従データを全ての計算装置で(ほぼ)均等に分配する。この方法を上記の探索処理に適用することを想定すると、計算装置1台あたりの計算量は、計算装置の台数をPとすると「M×N÷P」オーダーとなり、上述の単純な総当りにおける計算量よりも小さくなる。
【0008】
従来技術1による方法では、主データは全ての計算装置に複製されるため、主データのサイズ、及び計算装置の台数Pが大きくなるほど、計算装置群全体で見た場合の複製に要するコストはそれらの積に比例して大きくなる、という問題がある。また、主データの含まれる第一の集合の領域の個数Mが非常に大きい場合、計算装置1台あたりの計算量の削減が不十分となる場合が発生しえる。
【0009】
従来技術2は、主従両方のデータを計算装置に分配するものである。この方法では、主データ全体を計算装置群全体に複製する必要がなくなり、従来技術1に比べて複製に要するコストが削減される。また、従データと同様に、主データも全ての計算装置で(ほぼ)均等に分配すると、計算装置1台あたりの計算量は、「M×N÷P÷P」オーダーとなり、従来技術1による計算量より小さくなる。
【0010】
しかしながら、従来技術2は、主従2つのデータが予めリレーショナルデータベースに登録されていることを前提としている。リレーショナルデータベースに登録されているデータは、互いが完全に独立している個々のレコードから構成され、それぞれのレコードには予めキー情報が付与されている。主データは、同じキー情報を共有するレコード群(以下、グループと呼ぶ)を単位として分配される。同様に、従データもグループを単位として分配される。そして、同じキー情報を持つ主データからのグループと従データからのグループとが、計算装置群の中の一つに集められ、結合処理(Join操作)が行われる。
【0011】
しかしながら、領域間の重なり合いを探索する処理では、主データ(M個の領域からなる第一の集合)及び従データ(N個の領域からなる第二の集合)が予めリレーショナルデータベースに登録されていることを前提としない。例えば、GIS(Geographic Information System)において広く利用されているShapefile形式のファイルや、又は単純なテキストファイルとして用意することなどが考えられる。
【0012】
このように用意されたデータの場合、主データ及び従データには、予めキー情報が付与されている保証はなく、リレーショナルデータベースに登録されている、キー情報が付与されたデータが利用可能であるという前提をおくことはできない。また、第一及び第二の集合の領域のデータの何をもって、リレーショナルデータベースにおけるレコードやグループの概念に当てはめるかも自明ではない。従って、第一の集合の各領域と第二の集合の各領域との重なり合いを探索する処理に対して、データが予めリレーショナルデータベースに登録されていることを前提とする従来技術2を適用することはできない。
【0013】
本発明は、上記の問題点を鑑みてなされたものであり、一つ以上の領域からなる第一の集合及び一つ以上の領域からなる第二の集合のデータの2つを入力として、第一の集合の各領域と第二の集合の各領域との重なり合いの探索を高速に並列処理することができる並列処理方法、並列処理システム及び並列処理プログラムを提供することを目的とする。
【課題を解決するための手段】
【0014】
上記の目的を達成するために、本発明に係る並列処理方法は、一台以上の計算装置を含んで構成される並列処理システムによる並列処理方法であって、所定の空間上に配置された一つ以上の領域からなる第一の集合と当該空間上に配置された一つ以上の領域からなる第二の集合とをそれぞれ示すデータを入力する入力ステップと、空間を複数の格子に分割して、分割した各格子について、入力ステップにおいて入力されたデータによって示される第一の集合に含まれる領域のうち、当該格子に少なくとも当該領域の一部を含む領域を、当該領域と当該格子との交差領域として当該格子に仕分けると共に、入力ステップにおいて入力されたデータによって示される第二の集合に含まれる領域のうち、当該格子に少なくとも当該領域の一部を含む領域を当該格子に仕分ける仕分ステップと、仕分ステップにおいて分割された各格子について、一台以上の計算装置のうち一つの計算装置を選択して、選択した計算装置に仕分ステップにおいて当該格子に仕分けられた第一及び第二の集合に含まれる領域を示すデータを出力する選択ステップと、計算装置のそれぞれが、選択ステップにおいて出力されたデータを入力して、当該データによって示される第一の集合に含まれる領域と第二の集合に含まれる領域とが重なり合う領域を判定して、判定の結果を出力する計算ステップと、を有することを特徴とする。
【0015】
本発明に係る並列処理方法では、第一及び第二の集合の領域のデータの2つを入力としてそれらが配置される空間が複数の格子に分割されて、格子毎に各計算装置において、第一の集合に含まれる領域と第二の集合に含まれる領域とが重なり合う領域を探索する処理が行われる。これにより、第一及び第二の集合のデータの2つを入力として第一の集合の各領域と第二の集合の各領域との重なり合いの探索を高速に並列処理することができる。
【0016】
仕分ステップにおいて、第一の集合に含まれる領域と当該格子との交差領域の、当該第一の集合に含まれる領域に対する第一の比率を算出し、選択ステップにおいて、選択した計算装置に、格子に仕分けられた第一の集合に含まれる領域の第一の比率を示す情報を出力し、計算ステップにおいて、各格子における、第一の集合に含まれる領域と第二の集合に含まれる領域とが重なり合う領域の、当該第一の集合に含まれる領域に対する第二の比率を算出して、出力し、並列処理方法は、第一の比率と第二の比率とから、第一の集合に含まれる領域と第二の集合に含まれる領域とが重なり合う領域の、第一の集合に含まれる領域に対する比率を算出して出力する集計ステップを、更に有することが望ましい。この構成によれば、第一の集合に含まれる領域と第二の集合に含まれる領域とが重なり合う領域の、第一の集合に含まれる領域に対する比率を高速に算出することができる。
【0017】
仕分ステップにおいて、格子に少なくとも第二の集合に含まれる領域の一部を含む領域を当該領域全体として仕分けることが望ましい。あるいは、仕分ステップにおいて、格子に少なくとも第二の集合に含まれる領域の一部を含む領域を当該領域と当該格子との交差領域として仕分けることが望ましい。これらの構成の何れかによれば、第一の集合に含まれる領域と第二の集合に含まれる領域とが重なり合う領域を探索する処理を行うために適切かつ確実に第二の集合の領域を仕分けることができる。それにより、適切かつ確実に本発明を実施することができる。
【0018】
仕分ステップにおいて、各格子に仕分けられた第一の集合に含まれる領域の数、各格子に仕分けられた第二の集合に含まれる領域の数、及びそれらの和の少なくとも何れかが予め設定された閾値を超えているか否かを判断して、閾値を超えていると判断された場合には閾値を超えていた格子を再帰的に更に分割して、分割した各格子について第一及び第二の集合に含まれる領域を仕分けることが望ましい。この構成によれば、一つの格子に属する第一及び第二の集合の領域の数を十分に小さくすることが可能となる。これにより、並列処理の負荷分散効果が高くなる。
【0019】
ところで、本発明は、上記のように並列処理方法の発明として記述できる他に、以下のように並列処理システム及び並列処理プログラムの発明としても記述することができる。これはカテゴリ等が異なるだけで、実質的に同一の発明であり、同様の作用及び効果を奏する。
【0020】
即ち、本発明に係る並列処理システムは、一台以上の計算装置を含んで構成される並列処理システムであって、所定の空間上に配置された一つ以上の領域からなる第一の集合と当該空間上に配置された一つ以上の領域からなる第二の集合とをそれぞれ示すデータを入力する入力手段と、空間を複数の格子に分割して、分割した各格子について、入力手段によって入力されたデータによって示される第一の集合に含まれる領域のうち、当該格子に少なくとも当該領域の一部を含む領域を、当該領域と当該格子との交差領域として当該格子に仕分けると共に、入力手段によって入力されたデータによって示される第二の集合に含まれる領域のうち、当該格子に少なくとも当該領域の一部を含む領域を当該格子に仕分ける仕分手段と、仕分手段によって分割された各格子について、一台以上の計算装置のうち一つの計算装置を選択して、選択した計算装置に仕分手段によって当該格子に仕分けられた第一及び第二の集合に含まれる領域を示すデータを出力する選択手段と、を備え、計算装置のそれぞれが、選択手段によって出力されたデータを入力して、当該データによって示される第一の集合に含まれる領域と第二の集合に含まれる領域とが重なり合う領域を判定して、判定の結果を出力する、ことを特徴とする。
【0021】
また、本発明に係る並列処理プログラムは、複数のコンピュータに、一台以上の計算装置を含んで構成される並列処理システムによる並列処理を実行させる並列処理プログラムであって、コンピュータの少なくとも一つを、所定の空間上に配置された一つ以上の領域からなる第一の集合と当該空間上に配置された一つ以上の領域からなる第二の集合とをそれぞれ示すデータを入力する入力手段と、空間を複数の格子に分割して、分割した各格子について、入力手段によって入力されたデータによって示される第一の集合に含まれる領域のうち、当該格子に少なくとも当該領域の一部を含む領域を、当該領域と当該格子との交差領域として当該格子に仕分けると共に、入力手段によって入力されたデータによって示される第二の集合に含まれる領域のうち、当該格子に少なくとも当該領域の一部を含む領域を当該格子に仕分ける仕分手段と、仕分手段によって分割された各格子について、一台以上の計算装置のうち一つの計算装置を選択して、選択した計算装置に仕分手段によって当該格子に仕分けられた第一及び第二の集合に含まれる領域を示すデータを出力する選択手段と、して機能させ、複数のコンピュータのそれぞれを、選択手段によって出力されたデータを入力して、当該データによって示される第一の集合に含まれる領域と第二の集合に含まれる領域とが重なり合う領域を判定して、判定の結果を出力する計算装置として機能させることを特徴とする。
【発明の効果】
【0022】
本発明では、第一及び第二の集合の領域のデータの2つを入力としてそれらが配置される空間が複数の格子に分割されて、格子毎に各計算装置において、第一の集合に含まれる領域と第二の集合に含まれる領域とが重なり合う領域を探索する処理が行われる。これにより、本発明によれば、第一及び第二の集合のデータの2つを入力として第一の集合の各領域と第二の集合の各領域との重なり合いの探索を高速に並列処理することができる。
【図面の簡単な説明】
【0023】
【図1】本発明の実施形態に係る並列処理システムの機能構成を示す図である。
【図2】本実施形態の例における入力のうち、主データであるM個の領域からなる第一の集合を示す図である。
【図3】本実施形態の例における入力のうち、従データであるN個の領域からなる第二の集合を示す図である。
【図4】本実施形態の例において用いられる空間を分割した格子を示す図である。
【図5】本実施形態の例における主データ(第一の集合の領域)の仕分を示す図である。
【図6】本実施形態の例における第1の方法による従データ(第二の集合の領域)の仕分を示す図である。
【図7】本実施形態の例における第2の方法による従データ(第二の集合の領域)の仕分を示す図である。
【図8】本実施形態の例における第1の方法によって計算装置#1に集められるデータを示す図である。
【図9】本実施形態の例における第2の方法によって計算装置#1に集められるデータを示す図である。
【図10】本実施形態の例における計算装置#1に集められる第一の集合の領域に係る第一の面積比率を示す図である。
【図11】本実施形態の例における第2の方法によって計算装置#2に集められるデータを示す図である。
【図12】本実施形態の例における計算装置#2に集められる第一の集合の領域に係る第一の面積比率を示す図である。
【図13】本実施形態の例において計算された第一の集合の領域に係る第二の面積比率を示す図である。
【図14】本実施形態の例において集計された第一の集合の領域に係る第二の面積比率を示す図である。
【図15】本発明の実施形態に係る並列処理システムを構成する仕分用装置及び計算装置のハードウェア構成を示す図である。
【図16】本発明の実施形態に係る並列処理システムで実行される処理(並列処理方法)を示すフローチャートである。
【図17】本発明の実施形態に係る並列処理プログラムの構成を、記録媒体と共に示す図である。
【発明を実施するための形態】
【0024】
以下、図面と共に本発明に係る並列処理方法、並列処理システム及び並列処理プログラムの好適な実施形態について詳細に説明する。なお、図面の説明においては同一要素には同一符号を付し、重複する説明を省略する。
【0025】
図1に本実施形態に係る並列処理方法が実行される並列処理システム1を示す。並列処理システム1は、所定の空間上に配置された一つ以上の領域からなる第一の集合と当該空間上に配置された一つ以上の領域からなる第二の集合とをそれぞれ示すデータを入力して、第一の集合の各領域と第二の集合の各領域とが重なり合う領域を探索するためのシステムである。更に、本実施形態においては、並列処理システム1は、第一の集合の各領域と第二の集合の各領域とが重なり合う領域の、第一の集合の各領域に対する割合(領域が二次元であれば面積比、領域が三次元であれば体積比)を算出する。この割合は、重なり合う第二の集合の領域毎に算出される(より具体的には後述する)。ここで所定の空間とは、例えば、二次元又は三次元の有限の空間である。また、領域は、当該有限の空間に配置されえる(無限の広がりをもたない)有限の領域である。
【0026】
上記の処理は、具体的には以下のようなアプリケーションに用いられる。例えば、第一の集合の領域は行政区(市町村)の地図上の範囲に相当し、第二の集合の領域は各種のサービス(例えば、移動体通信に係るサービス)が受けられるエリアに相当し、上記の探索によって行政区毎の各種サービスのカバー率を把握することができる。あるいは、第一の集合の領域は住民の居住地区の分布の地図上の範囲に相当し、第二の集合の領域は汚染物質によって汚染された汚染地域の分布の地図上の範囲に相当し、上記の探索によって各居住地区が汚染地域にどの程度該当するかを把握することができる。
【0027】
図1に示すように、並列処理システム1は、仕分用装置10と1台以上の計算装置20とを含んで構成されている。仕分用装置10と計算装置20とは、無線あるいは有線の通信網によって接続されており、互いに情報の送受信を行うことができる。計算装置20は、上記の探索処理を実際に行う装置である。なお、並列処理を行う観点から、並列処理システム1は複数の計算装置20を含むことが望ましい。
【0028】
仕分用装置10は、並列処理システム1での処理対象となるデータを入力し、当該データを各計算装置20が探索処理を行えるように仕分ける装置である。なお、仕分用装置10は、図1に示すように各計算装置20とは別体として構成されていてもよいし、あるいは、各計算装置20の何れかに仕分用装置10の機能が備えられていてもよい。あるいは、複数の計算装置20によって仕分用装置10の機能が実現されていてもよい。また、仕分用装置10の機能の一部が、各計算装置20の何れに設けられていてもよい。
【0029】
以下の例では、領域が配置される空間は、二次元であるものとし、計算装置20の台数Pは4台とする。
【0030】
引き続いて、仕分用装置10及び計算装置20の機能について説明する。図1に示すように仕分用装置10は、入力部11と、仕分部12と、選択部13と、結果保存部14とを備えて構成されている。
【0031】
入力部11は、所定の空間上に配置された一つ以上の領域(M個の領域)からなる第一の集合と当該空間上に配置された一つ以上の領域(N個の領域)からなる第二の集合とをそれぞれ示すデータを入力する入力手段である。データの入力は、例えば、仕分用装置10に対するユーザの操作によって上記の各データが記録されたファイル(例えば、Shapefile形式のファイルや単純なテキストファイル)が読み込まれることによって行われる。なお、並列処理が行われる趣旨から、第一の集合の領域の数Mと第二の集合の領域の数Nとは、通常両方あるいは何れかが複数(2以上)である。
【0032】
第一及び第二の集合の領域を示すデータとしては、具体的には例えば、領域の頂点の座標の集合である。本実施形態では、第一の集合の領域を示すデータを主データ、第二の集合の領域を示すデータを主データに対応付ける従データとする。図2は、主データ(M個の領域40からなる第一の集合)の例である。説明のため、各領域40にはA〜Fの識別子を付与してある。図3は、従データ(N個の領域50からなる第二の集合)の例である。説明のため、各領域50にはα〜δの識別子を付与してある。なお、図2及び図3に示す領域40,50は、互いに重複している部分がないが、複数の領域40,50間で重複している部分があってもよい。また、領域40,50同士が隙間無く隣り合っていても良いし、図2及び図3に示すように隙間があいていてもよい。また、図2及び図3の周囲の四角形の破線が、領域40,50が配置される空間(定義空間)30の範囲を示している。
【0033】
なお、入力部11は、定義空間30を示すデータも領域40,50を示すデータと合わせて入力することとしてもよい。あるいは、入力されたデータによって示される領域40,50を全て含むように定義空間30が(例えば、後述する仕分部12等によって)生成(定義)されることとしてよい。また、リレーショナルデータベースに予め格納されていたならば利用できていたであろう、主データと従データとを付き合わせるためのキー情報は予め付与されていないものとする。また、領域40,50を示すデータは、必ずしも上記のデータに限られず、領域40,50を表現しうるものであればどのような形式のデータでもよい。
【0034】
入力部11は、入力したM個の領域40からなる第一の集合及びN個の領域50からなる第二の集合を示すデータを仕分部12に出力する。
【0035】
仕分部12は、定義空間を複数の格子に分割して、分割した各格子について、入力部11によって入力されたデータによって示される第一及び第二の集合に含まれる領域40,50のうち、当該格子に少なくとも当該領域40,50の一部を含む領域40,50を当該格子に仕分ける仕分手段である。
【0036】
具体的には、仕分部12は、まず、第一及び第二の集合に含まれる領域40,50が配置される定義空間30を複数の格子に分割する。各格子が、計算装置20における探索処理の単位となる。仕分部12は、どのように定義空間30を格子に分割するかの情報を、例えば、ユーザによって予め入力されて設定ファイルとして予め記憶している。どのように定義空間30を格子に分割するかの情報は、具体的には例えば、いくつの格子に分割するか、個々の格子の形状及び大きさを示す情報である。仕分部12は、当該情報に基づいて定義空間30を分割して格子を生成する。仕分部12は、定義空間30を分割して生成した各格子を識別できるように各格子に識別情報(識別子)を(動的に生成して)付与する。
【0037】
例えば、格子の数が4であり、格子の形状が矩形であるとすると、図4に示すように定義空間30が4つに分割されて4つの格子31が生成される。以下の説明では、格子の総数をKで表す。本実施形態の例では、計算装置20の台数Pと格子の総数Kが一致(P=K=4)している。図4に示す例では、各格子31には、1〜4の識別子が付与される。
【0038】
仕分部12は、上記のように複数の格子を生成すると、第一及び第二の集合に含まれる領域40,50を当該格子31に仕分ける。第一の集合に含まれる領域40については、仕分部12は、格子31に少なくとも領域40の一部を含む領域40を、当該領域40と当該格子31との交差領域(重複している領域)として各格子31に属しているものとして仕分ける。例えば、図5に示すように、例えば領域Bは、格子1に完全に包含されているため、その全体が交差領域となり、格子1にのみ属すると判定される。一方、領域Aは格子1及び2に跨っているため、領域Aと格子1との交差領域41、及び領域Aと格子2との交差領域41が計算され、それぞれの交差領域41がそれぞれの格子31に割り当てられる。なお、この交差領域41も、元々の領域40と同様に、当該有限の空間に配置されえる有限の領域である。その他の領域についても、同様に判定が下され、図5はその結果を示している。図5に示すように各領域40と格子31の交差領域41が各格子31に属するものとされる。仕分部12は、各領域(交差領域)41に当該領域41が属すると判定された格子31の識別子(格子番号)を割り当てる。
【0039】
また、仕分部12は、第一の集合に含まれる領域40と格子31との交差領域41の、当該第一の集合に含まれる領域40に対する第一の比率である第一の面積比率を算出(判定)する。本実施形態では、領域40が二次元であるので、領域40に対する交差領域41の第一の比率は面積比となる(もし、領域40が二次元であれば、比率は体積比となる。以下の比率についても同様である)。第一の面積比率は、各領域40及び交差領域41の面積を算出して、領域40の交差領域41毎に、交差領域41の面積の値を領域40の面積の値で割ることによって算出される。
【0040】
例えば、図5に示すように、例えば領域Bは、格子1に完全に包含されているため、格子1に関する領域Bの第一の面積比率は100%となる(図5の括弧内に第一の比率を示す)。また、領域Aについては、格子1に関する領域Aの第一の面積比率は30%となり、格子2に関する領域Aの第一の面積比率は70%となる。図5に示すように、領域40毎に、各格子31に関しての交差領域41の第一の面積比率が算出される。仕分部12は、各交差領域41に当該交差領域41に係る第一の面積比率を示す情報を割り当てる。
【0041】
仕分部12は、第二の集合に含まれる領域50については、以下の2つの方法の何れかによって行われる。何れの方法を用いるかは、ユーザ等によって予め仕分部12に設定されている。
【0042】
第1の方法では、仕分部12は、格子31に少なくとも領域50の一部を含む領域50を領域全体51として各格子31に属しているものとして仕分ける。この方法では図6に示すように、例えば領域βは、格子1に完全に包含されているため、格子1にのみ属すると判定される。一方、領域αは格子1,2,3,4に跨っているため、格子1,2,3,4の全てに属すると判定される。その他の領域についても、同様に判定が下され、図5はその結果を示している。図5に示すように各領域50の領域全体51が各格子31に属するものとされる。仕分部12は、各領域(全体)51に当該領域51が属すると判定された格子31の識別子(格子番号)を割り当てる。
【0043】
第2の方法では、仕分部12は、格子31に少なくとも領域50の一部を含む領域50を当該領域50と当該格子31との交差領域(重複している領域)52として各格子31に属しているものとして仕分ける。この方法では図7に示すように、例えば領域βは、格子1に完全に包含されているため、格子1にのみ属すると判定される。一方、領域αは格子1,2,3,4に跨っているため、領域αと各格子1,2,3,4との交差領域52が計算され、それぞれの交差領域52がそれぞれの格子31に割り当てられる。なお、この交差領域52も、元々の領域50と同様に、当該有限の空間に配置されえる有限の領域である。その他の領域50についても、同様に判定が下され、図7はその結果を示している。図7に示すように各領域50と格子31の交差領域52が各格子31に属するものとされる。仕分部12は、各領域(交差領域)52に当該領域52が属すると判定された格子31の識別子(格子番号)を割り当てる。
【0044】
仕分部12は、上記のように第一及び第二の集合に含まれる領域40,50を仕分けた後、各格子31について再仕分けが必要であるか判断して、必要であれば再帰的に再仕分けを行うこととしてもよい。その場合、仕分部12は、どのような条件で再仕分けを行うか否かの基準の情報を、例えば、ユーザによって予め入力されて設定ファイルとして予め記憶している。
【0045】
例えば、仕分部12は、格子31毎に、各格子31に仕分けられた第一の集合に含まれる領域41の数、各格子31に仕分けられた第二の集合に含まれる領域51,52の数、及びそれらの和の何れかが予め設定された閾値を超えているか否かを判断して、閾値を超えている場合にその格子31について再帰的に再仕分けを行うと判断する。なお、上記の判断は、各格子31に仕分けられた領域41,51,52の数及びそれらの和の全てについて判断する必要は無く、一種類の数のみにて判断が行われても良い。また、3種類の数のうち2つ、あるいは3種類全てが閾値を超えている場合にその格子31について再仕分けを行うと判断することとしてもよい。
【0046】
再仕分けを行うと判断されると仕分部12は、その格子31を更に細かい格子31に分割する。更なる格子31の分割についても、上述した(1度目の)定義空間の分割と同様に、どのように定義空間を格子に分割するかの情報を予め保持しておきその情報に基づいて行う。例えば、予め設定された数の同じ大きさの格子に再分割する。更に細かい格子31に分割すると、上記と同様に、当該格子31に識別情報を付与して領域41,51,52の仕分を行う。なお、再仕分けについては、予め設定された回数(例えば、1度)だけ行うこととしてもよいし、各格子31に仕分けられた領域41,51,52の数及びそれらの和の何れかが予め設定された閾値を超えない状態となるまで、繰り返し行うこととしてもよい。
【0047】
仕分部12は、仕分結果の情報を選択部13に出力する。具体的には、仕分部12は、格子31の識別情報が対応付けられた領域41,51,52を示すデータ、及び領域41に対応付けられた第一の面積比率を示すデータを選択部13に出力する。
【0048】
選択部13は、仕分部12によって分割された各格子31について、一台以上の計算装置20のうち一つの計算装置20を選択して、選択した計算装置20に仕分部12によって当該格子31に仕分けられた(対応付けられた)領域41,51,52、及び領域41に対応付けられた第一の面積比率を示すデータを出力する選択手段である。
【0049】
まず、選択部13は、格子31それぞれについて計算装置20を選択する。例えば、計算装置20を予め設定された基準に従って並べて、順番に選択していく。選択部13は、格子31毎に選択した計算装置20に、格子31に対応付けられた領域41,51,52、及び領域41に対応付けられた第一の面積比率を示すデータを出力(送信)する。仕分済みの第二の集合に属する領域51,52のデータについては、仕分の方法に応じたデータを出力する。
【0050】
第二の集合の領域50については、図6を用いて説明した第1の方法を用いた場合、領域全体51のデータが出力される。図6に示す例において、格子1に属する領域は、計算装置#1に割り当てられるものとする。その場合、格子1に属すると判定された領域α,β(の領域全体)が計算装置#1に出力される(割り当てられる)。ここで、領域αは格子2,3,4にも属すると判定されていたため、領域αのデータは複製され計算装置#2,#3,#4に出力される(割り当てられる)。図8に、図5及び図6の結果から計算装置#1が受け取ることになる領域41,51のデータを示す。また、図10に計算装置#1が受け取ることになる領域41(領域A,B,D)に対応付けられた第一の面積比率を示すデータを示す。なお、第一の面積比率を示すデータは、第二の集合の領域50の仕分の方法にかかわらず同一である。
【0051】
図7を用いて説明した第2の方法を用いた場合、交差領域52(但し、一つの格子31のみに属する領域については領域全体)のデータが出力される。この場合、一つの交差領域52は必ず一つの格子31にのみ属するため、領域の複製を行う必要はない。つまり、第1の方法と第2の方法とは、領域の(データの)複製を行うか、領域と格子との交差領域の計算を行うかのトレードオフの関係にある。図9に、図5及び図7の結果から計算装置#1が受け取ることになる領域41,52のデータを示す。また、図11に、図5及び図7の結果から計算装置#2が受け取ることになる領域41,52のデータを示す。図12に計算装置#2が受け取ることになる領域41(領域A,C)に対応付けられた第一の面積比率を示すデータを示す。
【0052】
図8、図9及び図11に示すように、図2及び図3に示した領域40,50の総数と比べ、1台の計算装置20で扱う領域の個数がそれぞれ削減されている。本実施形態の例では、説明を簡単にするために格子を4つだけ用いたが、計算装置20の台数P及び格子31の総数Kを増やすほど、1台の計算装置20で扱う領域41,51,52の個数が減少する。十分に少ない領域41,51,52の個数になれば、第一の集合の領域40(から生じた交差領域41)と、第二の集合の領域50(から生じた領域51,52)との間で重なっている領域の探索をそれらの間での単純な総当りにより行うことも現実的となる。
【0053】
結果保存部14は、計算装置20からの出力される判定結果を入力(受信)し、それらを集約して、当該データによって示される第一の集合に含まれる領域と第二の集合に含まれる領域とが重なり合う領域に係る情報として保存する。計算装置20から受信した情報の保存は、例えば永続的なストレージ装置や揮発メモリに記憶させることによって行われる。なお、情報の保存を行わずに、集約した情報を仕分用装置10が備えるディスプレイ上に結果を表示するだけでもよい。
【0054】
結果保存部14に記憶される情報は、各計算装置20で計算された各格子31における、第一の集合の領域40(から生じた交差領域41)と、第二の集合の領域50(から生じた領域51,52)との間で重なっている領域に係る情報である。具体的には、各格子31における、第一の集合に含まれる領域41と第二の集合に含まれる領域51,52とが重なり合う領域の、当該第一の集合に含まれる領域に対する第二の比率である第二の面積比率である(更に具体的には、図13を用いて後述する)。
【0055】
また、結果保存部14に記憶される情報は、(格子31毎ではなく)第一の集合に含まれる領域40毎に、第二の集合に含まれる領域50のうちどの領域と重なっているか、また重なり合いの比率を示す情報であってもよい。ここでの比率は、重なり合っている領域の、第一の集合の領域(全体)40に対する比率である(更に具体的には、図14を用いて後述する)。この情報は、上記の各計算装置20で計算された格子31毎の判定結果から、後述するように計算されて得られる。
【0056】
また、結果保存部14は、上記のように重なり合う領域の比率を記憶するのでなく、重なり合う領域自体がどのような領域であるかを示す情報を計算装置20から受信して記憶してもよい。
【0057】
計算装置20は、仕分用装置10から出力された領域41,51,52を示すデータを入力(受信)して、第一の集合に含まれる領域41と、第二の集合に含まれる領域51,52とが重なり合う領域を判定する計算装置である。即ち、計算装置20は、上記の重なり合う領域の探索を行う。なお、各計算装置20には格子31毎のデータが入力されているので、この探索は格子31毎に行われる。この探索は、上述したような単純な総当りによって行ってもよいし、あるいはアルゴリズム的な工夫を施してもよい。
【0058】
また、計算装置20は、各格子31における、第一の集合に含まれる領域41と第二の集合に含まれる領域51,52とが重なり合う領域の、当該第一の集合に含まれる領域に対する当該第二の比率である第二の面積比率を算出して、出力する。第二の面積比率は、第一の集合に含まれる各領域41、及び上記の重なり合う領域の面積を算出して、重なり合う領域毎に、当該重なり合う領域の面積の値を領域41の面積の値で割ることによって算出される。
【0059】
例えば、図13(a)に示すように、計算装置#1では、領域Aから生じた領域41の80%(第二の面積比率)が領域αと重なり、10%が領域β(第二の面積比率)と重なっている。領域Bから生じた領域41の20%(第二の面積比率)が領域αと重なり、30%が領域β(第二の面積比率)と重なっている。領域Dから生じた領域41の100%(第二の面積比率)が領域αと重なっている。図13(b)に示すように、計算装置#2では、領域Aから生じた領域41の60%(第二の面積比率)が領域αと重なり、10%が領域γ(第二の面積比率)と重なっている。領域Cから生じた領域41の80%(第二の面積比率)が領域αと重なっている。
【0060】
計算装置20は、これらの結果を、第一の集合の領域の識別子と第一の面積比率、及びそれに関連する第二の集合の領域の識別子と第二の面積比率をまとめて(図13に示すデータのように)1件のレコード(データ)として、仕分用装置10に出力する。
【0061】
仕分用装置10では、各計算装置20で計算された、格子31毎の計算結果(例えば、図13に示すデータ)が結果保存部14によって受信され保存される。各計算装置20で計算された計算結果が保存されると、以下のようにして、(格子31毎ではなく)第一の集合に含まれる領域40毎に、第二の集合に含まれる領域50のうちどの領域と重なっているか、また重なり合いの比率を示す情報が計算される。
【0062】
仕分用装置10では、各格子31の計算結果が受信されると、選択部13は、上記の計算を行うため、第一の集合に含まれる領域40毎に格子31それぞれについて計算装置20を選択する。この選択は、第一の集合の領域40の識別子に関するハッシュ値を計算装置20の台数Pで除算した際の剰余(いわゆるモジュロ)に基づいて決定する方法や、第一の集合の領域40の識別子を各計算装置20に順繰りに割り当てる方法(いわゆるラウンドロビン)等によって行われる。
【0063】
選択部13は、上記のように選択した計算装置20に第一の集合に含まれる領域40毎の計算結果を示す情報を送信する。即ち、同じ領域40(の識別子)についての、第一の面積比率と第二の面積比率とを示す情報を、当該領域40に応じて選択された計算装置20に送信する。例えば、図13において、計算装置#1及び計算装置#2それぞれで計算された領域Aについて計算装置#1を割り当て、計算装置#1に領域Aの第一の面積比率と第二の面積比率とを示す情報を送信する。
【0064】
計算装置20は、当該情報を受信して、第一の集合の領域40(の識別子)毎に、第一の面積比率と第二の面積比率とから面積比率の集計を行う。具体的には、まず、各レコード内で、第一の面積比率を第二の面積比率に乗じる。次いで、同じ領域40(の識別子)の全レコード間で、第二の集合の領域50毎に乗じた値を足し合わせる(集計する)。上記の集計の例を図14に示す。集計前の領域Aの計算結果から、領域Aについての第二の集合の領域50毎の比率が算出されている。領域Aの66%が領域αと、3%が領域βと、7%が領域γと重なっている。計算装置20は、集計した面積比率の情報を仕分用装置10に送信し、仕分用装置10では、結果保存部14が当該面積比率の情報を受信して、保存する。
【0065】
上記のように、選択部13及び各計算装置20は、第一の面積比率と第二の面積比率とから、第一の集合に含まれる領域40と第二の集合に含まれる領域50とが重なり合う領域の、第一の集合に含まれる領域に対する比率を算出して出力する集計手段を構成する。なお、計算装置1台あたりの第一の集合の領域40(の識別子)の平均割り当て個数は「M÷P」となる。よって、計算装置20の台数Pが多いほど、上記の集計処理による計算装置1台あたりの処理負荷は小さくなる。
【0066】
また、第一の集合の領域40毎の計算結果は、結果保存部14に記憶されているので、結果保存部14において上記の集計処理が行われてもよい。また、上記では、計算装置20は、第二の面積比率と集計した面積比率とを算出して、仕分用装置10に送信しているが、探索して得られた第一の集合に含まれる領域41と第二の集合に含まれる領域51,52とが重なり合う領域自体を示す情報を、探索結果として仕分用装置10に送信することとしてもよい。
【0067】
なお、選択部13における計算装置20を選択する機能、仕分用装置10と計算装置20との間の通信の制御、並びに計算装置20に割り当てられた領域41,51,52のデータを計算装置20上で処理するプログラムを実行する仕組み等は、計算装置を多数接続したクラスタ上での並列計算における汎用的な機能要件である。従って、近年ではそのような機能を提供するソフトウェアが多数利用できるようになってきている。例えば、MPI(Message Passing Interface)技術のオープンソース実装であるOpen MPI、Google社が提唱するMapReduce技術のオープンソース実装であるHadoop、Microsoft社が提唱するDryad技術等がある。選択部13や計算装置20の部分は、これらのソフトウェアを適用することで構築することが可能である。以上が、並列処理システム1の機能構成である。
【0068】
図15に並列処理システム1を構成する仕分用装置10及び計算装置20のハードウェア構成を示す。図15に示すように仕分用装置10及び計算装置20は、CPU(Central Processing Unit)101、主記憶装置であるRAM(Random Access Memory)102及びROM(ReadOnly Memory)103、通信を行うための通信モジュール104、並びにハードディスク等の補助記憶装置105等のハードウェアを備えるコンピュータを含むものとして構成される。これらの構成要素がプログラム等により動作することにより、上述した仕分用装置10及び計算装置20の機能が発揮される。以上が、並列処理システム1の構成である。
【0069】
引き続いて、図16のフローチャートを用いて、本実施形態に係る並列処理システム1で実行される処理である並列処理方法を説明する。まず、仕分用装置10において、入力部11によって、探索対象となる、定義空間30上に配置されたM個の領域40からなる第一の集合とN個の領域50からなる第二の集合とをそれぞれ示すデータが入力される(S01、入力ステップ)。当該入力は、上述したように例えば、ユーザの操作によって上記の各データが記録されたファイルが読み込まれることによって行われる。入力されたデータは入力部11から仕分部12に出力される。
【0070】
続いて仕分部12によって、定義空間30が複数の格子31に分割される(S02、仕分ステップ)。続いて仕分部12によって、分割された各格子31について、入力部11によって入力されたデータによって示される領域40,50のうち、当該格子に少なくとも当該領域40,50の一部を含む領域40,50が当該格子に仕分けられる(S03、仕分ステップ)。この仕分により、仕分済みの領域41,51,52には、対応付けられた格子31の識別情報が対応付けられる。また、この際、仕分部12によって、仕分けられた第一の集合の領域41について、領域40に対する第一の面積比率が算出されて、当該第一の面積比率を示す情報が領域41に対応付けられる。
【0071】
続いて仕分部12によって、各格子31について再仕分けが必要であるか判断される(S04、仕分ステップ)。この判断は、上述したように、格子31毎に、各格子31に仕分けられた領域41,51,52の数及びそれらの和の何れかが予め設定された閾値を超えているか否かを判断することによって行われる。
【0072】
格子31の何れかにについて再仕分けが必要であると判断されると(S04のYES)、仕分部12によって、当該格子31の更なる分割が行われる(S05、仕分ステップ)。続いて仕分部12によって、分割された各格子31について、元の格子31に対応付けられていた領域41,51,52のうち、当該格子に少なくとも当該領域41,51,52の一部を含む領域41,51,52が当該格子に仕分けられる(S06、仕分ステップ)。また、この際、S03と同様に領域41の第一の面積比率が算出されて、当該第一の面積比率を示す情報が領域41に対応付けられる。
【0073】
S06において、再仕分けが行われた後、再帰的にS04において各格子31について再仕分けが必要か否かが判断される。なお、この判断は、S06において更に分割された格子31のみに対して行われてもよい。S04において全ての格子31について再仕分けが必要でないと判断された場合(S04のNO)、仕分結果の情報が仕分部12から選択部13に出力される。なお、S04〜S06の再帰的な再仕分けについての処理は、予め設定された回数(例えば、1度)だけ行われてもよい。その場合、設定された回数の再仕分けが行われるとS06の処理の後に次の処理(S07)に移行する。
【0074】
続いて、選択部13によって、格子31それぞれについて計算装置20が選択される(S07、選択ステップ)。続いて、格子31毎に選択された計算装置20に対して、選択部13から当該格子31に対応付けられた領域41,51,52及び領域41に対応付けられた第一の面積比率を示すデータが出力される(S08、選択ステップ)。
【0075】
それぞれの計算装置20では、仕分用装置10から出力された当該データが入力される。各計算装置20では、当該データによって示される各領域41と各領域51,52とが重なり合う領域が判定される。即ち、各計算装置20では、各領域41と各領域51,52とが重なり合う領域の探索が行われる。続いて、即ち、各計算装置20では、判定された重なり合う領域の、領域41に対する第二の面積比率が計算される(S09、計算ステップ)。当該計算結果(判定結果)は、各計算装置20から仕分用装置10に出力される。仕分用装置10では、結果保存部14によって、計算装置20からの出力される計算結果が入力されて保存される。
【0076】
仕分用装置10では、各格子31の計算結果が計算装置20から受信されると、続いて、選択部13によって、第一の集合に含まれる領域40(の識別子)毎に上記の計算結果を集計するための計算装置20が選択される(S10、集計ステップ)。この選択は、例えば、上述したように第一の集合の領域40の識別子に基づいて行われる。
【0077】
続いて、選択部13から選択された計算装置20に対して、選択に係る領域40に係る、S10で受信した計算結果を示す情報が送信される(S11、集計ステップ)。即ち、同じ領域40(の識別子)についての、第一の面積比率と第二の面積比率とを示す情報が、領域40に応じて選択された計算装置20に送信される。
【0078】
続いて、各計算装置20では、当該情報が受信されて、第一の集合の領域40(の識別子)毎に、第一の面積比率を第二の面積比率を乗じることによって、第一の集合に含まれる領域40毎に、第二の集合に含まれる領域50のうちどの領域と重なっているか、また重なり合いの比率を示す情報が計算される(S12、集計ステップ)。この計算は、図14を用いて上述したように行われる。
【0079】
当該計算結果(集計結果)は、各計算装置20から仕分用装置10に出力される。仕分用装置10では、結果保存部14によって、計算装置20からの出力される計算結果が入力されて保存される(S13)。保存された探索結果は、アプリケーションに応じて適宜利用される。以上が、本実施形態に係る並列処理システム1で実行される処理である。
【0080】
上述したように本実施形態では、第一及び第二の集合の領域40,50のデータの2つを入力としてそれらが配置される定義空間30が複数の格子31に分割されて、格子31毎に各計算装置20において、第一の集合に含まれる領域41と第二の集合に含まれる領域51,52とが重なり合う領域を探索する処理が行われる。これにより、第一及び第二の集合の領域40,50のデータの2つを入力として第一の集合の各領域40と第二の集合の各領域50との重なり合いの探索を高速に並列処理することができる。
【0081】
その際、2つの入力は、予めリレーショナルデータベースに登録されていなく、任意の形式(例えば、上述したShapefile形式、テキストファイル形式)で与えることができる。また、探索処理の実行に際しても、リレーショナルデータベースシステムを用いる必要はなく、任意の並列処理システム(例えば、上述したOpenMPI、Hadoop、Dryad)を利用することができる。
【0082】
また、本実施形態のように、格子31への第一の集合に含まれる領域40の仕分時に第一の面積比率を算出し、重なり合う領域の探索時に第二の面積比率を算出して、これらから重なり合う領域の第一の集合に含まれる領域に対する比率を算出することが望ましい。この構成によれば、当該比率を高速に算出することができる。
【0083】
また、定義空間30を格子31に分割する際に格子の大きさを指定したり、領域40,50の仕分処理を再帰的に繰り返し行ったりすることにより、一つの格子31に属する領域41,51,52の総数を十分に小さくすることが可能になる。一つの格子31に属する領域41,51,52の総数が小さいほど、そして利用できる計算装置20の台数が多いほど、本発明による並列処理の負荷分散効果が高くなる。
【0084】
また、領域50の仕分については、上述した第1の方法及び第2の方法の何れかを用いることが望ましい。この構成により、第一及び第二の集合の領域41,51,52間の重なり合う領域を探索する処理が行うために適切かつ確実に領域31を仕分けることができる。それにより、適切かつ確実に本発明を実施することができる。
【0085】
上述した実施形態では、計算装置20の台数Pと格子31の総数Kとが一致(P=K=4)する例を示したが、これらは必ずしも一致する必要はない。格子31の総数の方が多い場合、計算装置1台あたりに複数の格子31を割り当てればよい。1台の計算装置20に複数の格子31が割り当てられた場合でも、計算装置20は格子31毎に探索処理を行うことができる。計算装置1台辺りの平均割り当て格子数AはK÷Pとなり、計算装置1台あたりの計算量は「M×N÷K÷K×A」オーダー、つまり「M×N÷K÷P」オーダーとなる。反対に、格子31の総数の方が少ない場合、計算装置20群の内のいくつかは格子31を割り当てられないことになり、その他の計算装置20には格子31を1つずつ割り当てればよい。この場合の計算装置1台あたりの計算量は「ゼロ」又は「M×N÷K÷K」オーダーとなる。
【0086】
また、上述した実施形態では、第一の集合の領域40を主データ、第二の集合の領域50を従データとして説明したが、第二の集合の領域50を主データ、第一の集合の領域40を従データとすることとしてもよい。
【0087】
引き続いて、上述した一連の並列処理システム1で実行される処理をコンピュータに実行させるための並列処理プログラムを説明する。並列処理プログラムは、図17(a)に示す仕分用装置側の並列処理プログラム61と、図17(b)に示す計算装置側の並列処理プログラム71とを含んで構成されている。図17に示すように、並列処理プログラム61,71は、コンピュータに挿入されてアクセスされる、あるいはコンピュータが備える記録媒体60,70に形成されたプログラム格納領域60a,70a内に格納される。
【0088】
仕分用装置側の並列処理プログラム61は、仕分用装置側の並列処理を統括的に制御するメインモジュール61aと、入力モジュール61bと、仕分モジュール61cと、選択モジュール61dと、結果保存モジュール61eとを備えて構成される。入力モジュール61bと、仕分モジュール61cと、選択モジュール61dと、結果保存モジュール61eとを実行させることにより実現される機能は、上述した仕分用装置10の入力部11と、仕分部12と、選択部13と、結果保存部14との機能とそれぞれ同様である。
【0089】
計算装置側の並列処理プログラム71は、計算装置側の並列処理を統括的に制御するメインモジュール71aと、計算モジュール71bとを備えて構成される。計算モジュール71bを実行させることにより実現される機能は、上述した計算装置20の機能と同様である。
【0090】
なお、並列処理プログラム61,71は、その一部若しくは全部が、通信回線等の伝送媒体を介して伝送され、他の機器により受信されて記録(インストールを含む)される構成としてもよい。また、並列処理プログラム61,71それぞれの各モジュールは、1つのコンピュータでなく、複数のコンピュータのいずれかにインストールされてもよい。その場合、当該複数のコンピュータによるコンピュータシステムよって上述した一連の並列処理プログラム61,71それぞれの処理が行われる。
【符号の説明】
【0091】
1…並列処理システム、10…仕分用装置、11…入力部、12…仕分部、13…選択部、14…結果保存部、20…計算装置、101…CPU、102…RAM、103…ROM、104…通信モジュール、105…補助記憶装置、60,70…記録媒体、60a,70a…プログラム格納領域、61…仕分用装置側の並列処理プログラム、61a…メインモジュール、61b…入力モジュール、61c…仕分モジュール、61d…選択モジュール、61e…結果保存モジュール、71…計算装置側の並列処理プログラム、71a…メインモジュール、71b…計算モジュール。
【技術分野】
【0001】
本発明は、一台以上の計算装置を含んで構成される並列処理システムによる並列処理方法、当該並列処理システム及び並列処理プログラムに関する。
【背景技術】
【0002】
同じ二次元又は三次元の空間上に配置されたM個の領域からなる第一の集合と、N個の領域からなる第二の集合との間で(ここでM,Nは自然数)、第一の集合の各領域と第二の集合の各領域との重なり合いを探索する場合、単一の計算装置上での単純な総当り探索による方法では、「M×N」オーダーの計算量を必要とする。第一の集合のM個の領域、及び第二の集合のN個の領域を何らかの基準に従って予め並べ替え(ソート)してから照合する等のアルゴリズム上の工夫により、単純な総当り探索よりも計算量を削減できる余地はある。しかし、それにも限界があり、また、並べ替え処理自体の計算量が増加する。又は、スーパーコンピュータ等の高性能な計算装置を用いることで、総当り探索を高速に完了させることも考えられる。しかし、スーパーコンピュータは非常に高価であり、また、誰でも利用できるわけではない。
【0003】
ところで、リレーショナルデータベースにおいて、複数のテーブルのデータを組み合わせて結合する操作にJoinがある。リレーショナルデータベースにおけるJoin操作を高速化する方法は従来からいくつか提案されている。例えば、組み合わせ対象の一つである主データを複製する方法(従来技術1)や、その考え方を更に推し進めた非特許文献1に記載された方法(従来技術2)等がある。
【先行技術文献】
【非特許文献】
【0004】
【非特許文献1】“Application of Hash to Data BaseMachine and Its Architecture”,NEW GENERATION COMPUTING Volume 1,Number 1
【発明の概要】
【発明が解決しようとする課題】
【0005】
今日では、安価な計算装置を多数接続してクラスタを構築し、それらの間で計算負担を分担することで、膨大な計算を高速に完了する方法が主流となってきている。これは、予算に応じて接続する計算装置の種類や台数を任意に決定できること、及びそのような並列処理を実現するためのソフトウェアが広く利用可能になってきたことによる。以上の経緯を踏まえると、第一の集合のM個の領域と第二の集合のN個の領域との間で重なり合う領域を探索する処理を、並列処理により高速化することが考えられる。
【0006】
すると今度は、上記の探索処理をどのように並列処理するかが問題となる。ところで、上記の探索処理は、M個の領域からなる第一の集合を主データ、N個の領域からなる第二の集合を従データとして見ると、主従データの突き合わせ処理とみなせる(反対に、N個の領域からなる第二の集合を主データ、M個の領域からなる第一の集合を従データとしてみなしてもよい)。つまり、リレーショナルデータベースにおけるJoin操作に似た処理となっている(但し、あくまで似ているだけであって、領域のデータがリレーショナルデータベースに登録されている必要はない)。
【0007】
上述した従来技術1では、並列処理を行う計算装置に主データを複製し、その一方で従データを全ての計算装置で(ほぼ)均等に分配する。この方法を上記の探索処理に適用することを想定すると、計算装置1台あたりの計算量は、計算装置の台数をPとすると「M×N÷P」オーダーとなり、上述の単純な総当りにおける計算量よりも小さくなる。
【0008】
従来技術1による方法では、主データは全ての計算装置に複製されるため、主データのサイズ、及び計算装置の台数Pが大きくなるほど、計算装置群全体で見た場合の複製に要するコストはそれらの積に比例して大きくなる、という問題がある。また、主データの含まれる第一の集合の領域の個数Mが非常に大きい場合、計算装置1台あたりの計算量の削減が不十分となる場合が発生しえる。
【0009】
従来技術2は、主従両方のデータを計算装置に分配するものである。この方法では、主データ全体を計算装置群全体に複製する必要がなくなり、従来技術1に比べて複製に要するコストが削減される。また、従データと同様に、主データも全ての計算装置で(ほぼ)均等に分配すると、計算装置1台あたりの計算量は、「M×N÷P÷P」オーダーとなり、従来技術1による計算量より小さくなる。
【0010】
しかしながら、従来技術2は、主従2つのデータが予めリレーショナルデータベースに登録されていることを前提としている。リレーショナルデータベースに登録されているデータは、互いが完全に独立している個々のレコードから構成され、それぞれのレコードには予めキー情報が付与されている。主データは、同じキー情報を共有するレコード群(以下、グループと呼ぶ)を単位として分配される。同様に、従データもグループを単位として分配される。そして、同じキー情報を持つ主データからのグループと従データからのグループとが、計算装置群の中の一つに集められ、結合処理(Join操作)が行われる。
【0011】
しかしながら、領域間の重なり合いを探索する処理では、主データ(M個の領域からなる第一の集合)及び従データ(N個の領域からなる第二の集合)が予めリレーショナルデータベースに登録されていることを前提としない。例えば、GIS(Geographic Information System)において広く利用されているShapefile形式のファイルや、又は単純なテキストファイルとして用意することなどが考えられる。
【0012】
このように用意されたデータの場合、主データ及び従データには、予めキー情報が付与されている保証はなく、リレーショナルデータベースに登録されている、キー情報が付与されたデータが利用可能であるという前提をおくことはできない。また、第一及び第二の集合の領域のデータの何をもって、リレーショナルデータベースにおけるレコードやグループの概念に当てはめるかも自明ではない。従って、第一の集合の各領域と第二の集合の各領域との重なり合いを探索する処理に対して、データが予めリレーショナルデータベースに登録されていることを前提とする従来技術2を適用することはできない。
【0013】
本発明は、上記の問題点を鑑みてなされたものであり、一つ以上の領域からなる第一の集合及び一つ以上の領域からなる第二の集合のデータの2つを入力として、第一の集合の各領域と第二の集合の各領域との重なり合いの探索を高速に並列処理することができる並列処理方法、並列処理システム及び並列処理プログラムを提供することを目的とする。
【課題を解決するための手段】
【0014】
上記の目的を達成するために、本発明に係る並列処理方法は、一台以上の計算装置を含んで構成される並列処理システムによる並列処理方法であって、所定の空間上に配置された一つ以上の領域からなる第一の集合と当該空間上に配置された一つ以上の領域からなる第二の集合とをそれぞれ示すデータを入力する入力ステップと、空間を複数の格子に分割して、分割した各格子について、入力ステップにおいて入力されたデータによって示される第一の集合に含まれる領域のうち、当該格子に少なくとも当該領域の一部を含む領域を、当該領域と当該格子との交差領域として当該格子に仕分けると共に、入力ステップにおいて入力されたデータによって示される第二の集合に含まれる領域のうち、当該格子に少なくとも当該領域の一部を含む領域を当該格子に仕分ける仕分ステップと、仕分ステップにおいて分割された各格子について、一台以上の計算装置のうち一つの計算装置を選択して、選択した計算装置に仕分ステップにおいて当該格子に仕分けられた第一及び第二の集合に含まれる領域を示すデータを出力する選択ステップと、計算装置のそれぞれが、選択ステップにおいて出力されたデータを入力して、当該データによって示される第一の集合に含まれる領域と第二の集合に含まれる領域とが重なり合う領域を判定して、判定の結果を出力する計算ステップと、を有することを特徴とする。
【0015】
本発明に係る並列処理方法では、第一及び第二の集合の領域のデータの2つを入力としてそれらが配置される空間が複数の格子に分割されて、格子毎に各計算装置において、第一の集合に含まれる領域と第二の集合に含まれる領域とが重なり合う領域を探索する処理が行われる。これにより、第一及び第二の集合のデータの2つを入力として第一の集合の各領域と第二の集合の各領域との重なり合いの探索を高速に並列処理することができる。
【0016】
仕分ステップにおいて、第一の集合に含まれる領域と当該格子との交差領域の、当該第一の集合に含まれる領域に対する第一の比率を算出し、選択ステップにおいて、選択した計算装置に、格子に仕分けられた第一の集合に含まれる領域の第一の比率を示す情報を出力し、計算ステップにおいて、各格子における、第一の集合に含まれる領域と第二の集合に含まれる領域とが重なり合う領域の、当該第一の集合に含まれる領域に対する第二の比率を算出して、出力し、並列処理方法は、第一の比率と第二の比率とから、第一の集合に含まれる領域と第二の集合に含まれる領域とが重なり合う領域の、第一の集合に含まれる領域に対する比率を算出して出力する集計ステップを、更に有することが望ましい。この構成によれば、第一の集合に含まれる領域と第二の集合に含まれる領域とが重なり合う領域の、第一の集合に含まれる領域に対する比率を高速に算出することができる。
【0017】
仕分ステップにおいて、格子に少なくとも第二の集合に含まれる領域の一部を含む領域を当該領域全体として仕分けることが望ましい。あるいは、仕分ステップにおいて、格子に少なくとも第二の集合に含まれる領域の一部を含む領域を当該領域と当該格子との交差領域として仕分けることが望ましい。これらの構成の何れかによれば、第一の集合に含まれる領域と第二の集合に含まれる領域とが重なり合う領域を探索する処理を行うために適切かつ確実に第二の集合の領域を仕分けることができる。それにより、適切かつ確実に本発明を実施することができる。
【0018】
仕分ステップにおいて、各格子に仕分けられた第一の集合に含まれる領域の数、各格子に仕分けられた第二の集合に含まれる領域の数、及びそれらの和の少なくとも何れかが予め設定された閾値を超えているか否かを判断して、閾値を超えていると判断された場合には閾値を超えていた格子を再帰的に更に分割して、分割した各格子について第一及び第二の集合に含まれる領域を仕分けることが望ましい。この構成によれば、一つの格子に属する第一及び第二の集合の領域の数を十分に小さくすることが可能となる。これにより、並列処理の負荷分散効果が高くなる。
【0019】
ところで、本発明は、上記のように並列処理方法の発明として記述できる他に、以下のように並列処理システム及び並列処理プログラムの発明としても記述することができる。これはカテゴリ等が異なるだけで、実質的に同一の発明であり、同様の作用及び効果を奏する。
【0020】
即ち、本発明に係る並列処理システムは、一台以上の計算装置を含んで構成される並列処理システムであって、所定の空間上に配置された一つ以上の領域からなる第一の集合と当該空間上に配置された一つ以上の領域からなる第二の集合とをそれぞれ示すデータを入力する入力手段と、空間を複数の格子に分割して、分割した各格子について、入力手段によって入力されたデータによって示される第一の集合に含まれる領域のうち、当該格子に少なくとも当該領域の一部を含む領域を、当該領域と当該格子との交差領域として当該格子に仕分けると共に、入力手段によって入力されたデータによって示される第二の集合に含まれる領域のうち、当該格子に少なくとも当該領域の一部を含む領域を当該格子に仕分ける仕分手段と、仕分手段によって分割された各格子について、一台以上の計算装置のうち一つの計算装置を選択して、選択した計算装置に仕分手段によって当該格子に仕分けられた第一及び第二の集合に含まれる領域を示すデータを出力する選択手段と、を備え、計算装置のそれぞれが、選択手段によって出力されたデータを入力して、当該データによって示される第一の集合に含まれる領域と第二の集合に含まれる領域とが重なり合う領域を判定して、判定の結果を出力する、ことを特徴とする。
【0021】
また、本発明に係る並列処理プログラムは、複数のコンピュータに、一台以上の計算装置を含んで構成される並列処理システムによる並列処理を実行させる並列処理プログラムであって、コンピュータの少なくとも一つを、所定の空間上に配置された一つ以上の領域からなる第一の集合と当該空間上に配置された一つ以上の領域からなる第二の集合とをそれぞれ示すデータを入力する入力手段と、空間を複数の格子に分割して、分割した各格子について、入力手段によって入力されたデータによって示される第一の集合に含まれる領域のうち、当該格子に少なくとも当該領域の一部を含む領域を、当該領域と当該格子との交差領域として当該格子に仕分けると共に、入力手段によって入力されたデータによって示される第二の集合に含まれる領域のうち、当該格子に少なくとも当該領域の一部を含む領域を当該格子に仕分ける仕分手段と、仕分手段によって分割された各格子について、一台以上の計算装置のうち一つの計算装置を選択して、選択した計算装置に仕分手段によって当該格子に仕分けられた第一及び第二の集合に含まれる領域を示すデータを出力する選択手段と、して機能させ、複数のコンピュータのそれぞれを、選択手段によって出力されたデータを入力して、当該データによって示される第一の集合に含まれる領域と第二の集合に含まれる領域とが重なり合う領域を判定して、判定の結果を出力する計算装置として機能させることを特徴とする。
【発明の効果】
【0022】
本発明では、第一及び第二の集合の領域のデータの2つを入力としてそれらが配置される空間が複数の格子に分割されて、格子毎に各計算装置において、第一の集合に含まれる領域と第二の集合に含まれる領域とが重なり合う領域を探索する処理が行われる。これにより、本発明によれば、第一及び第二の集合のデータの2つを入力として第一の集合の各領域と第二の集合の各領域との重なり合いの探索を高速に並列処理することができる。
【図面の簡単な説明】
【0023】
【図1】本発明の実施形態に係る並列処理システムの機能構成を示す図である。
【図2】本実施形態の例における入力のうち、主データであるM個の領域からなる第一の集合を示す図である。
【図3】本実施形態の例における入力のうち、従データであるN個の領域からなる第二の集合を示す図である。
【図4】本実施形態の例において用いられる空間を分割した格子を示す図である。
【図5】本実施形態の例における主データ(第一の集合の領域)の仕分を示す図である。
【図6】本実施形態の例における第1の方法による従データ(第二の集合の領域)の仕分を示す図である。
【図7】本実施形態の例における第2の方法による従データ(第二の集合の領域)の仕分を示す図である。
【図8】本実施形態の例における第1の方法によって計算装置#1に集められるデータを示す図である。
【図9】本実施形態の例における第2の方法によって計算装置#1に集められるデータを示す図である。
【図10】本実施形態の例における計算装置#1に集められる第一の集合の領域に係る第一の面積比率を示す図である。
【図11】本実施形態の例における第2の方法によって計算装置#2に集められるデータを示す図である。
【図12】本実施形態の例における計算装置#2に集められる第一の集合の領域に係る第一の面積比率を示す図である。
【図13】本実施形態の例において計算された第一の集合の領域に係る第二の面積比率を示す図である。
【図14】本実施形態の例において集計された第一の集合の領域に係る第二の面積比率を示す図である。
【図15】本発明の実施形態に係る並列処理システムを構成する仕分用装置及び計算装置のハードウェア構成を示す図である。
【図16】本発明の実施形態に係る並列処理システムで実行される処理(並列処理方法)を示すフローチャートである。
【図17】本発明の実施形態に係る並列処理プログラムの構成を、記録媒体と共に示す図である。
【発明を実施するための形態】
【0024】
以下、図面と共に本発明に係る並列処理方法、並列処理システム及び並列処理プログラムの好適な実施形態について詳細に説明する。なお、図面の説明においては同一要素には同一符号を付し、重複する説明を省略する。
【0025】
図1に本実施形態に係る並列処理方法が実行される並列処理システム1を示す。並列処理システム1は、所定の空間上に配置された一つ以上の領域からなる第一の集合と当該空間上に配置された一つ以上の領域からなる第二の集合とをそれぞれ示すデータを入力して、第一の集合の各領域と第二の集合の各領域とが重なり合う領域を探索するためのシステムである。更に、本実施形態においては、並列処理システム1は、第一の集合の各領域と第二の集合の各領域とが重なり合う領域の、第一の集合の各領域に対する割合(領域が二次元であれば面積比、領域が三次元であれば体積比)を算出する。この割合は、重なり合う第二の集合の領域毎に算出される(より具体的には後述する)。ここで所定の空間とは、例えば、二次元又は三次元の有限の空間である。また、領域は、当該有限の空間に配置されえる(無限の広がりをもたない)有限の領域である。
【0026】
上記の処理は、具体的には以下のようなアプリケーションに用いられる。例えば、第一の集合の領域は行政区(市町村)の地図上の範囲に相当し、第二の集合の領域は各種のサービス(例えば、移動体通信に係るサービス)が受けられるエリアに相当し、上記の探索によって行政区毎の各種サービスのカバー率を把握することができる。あるいは、第一の集合の領域は住民の居住地区の分布の地図上の範囲に相当し、第二の集合の領域は汚染物質によって汚染された汚染地域の分布の地図上の範囲に相当し、上記の探索によって各居住地区が汚染地域にどの程度該当するかを把握することができる。
【0027】
図1に示すように、並列処理システム1は、仕分用装置10と1台以上の計算装置20とを含んで構成されている。仕分用装置10と計算装置20とは、無線あるいは有線の通信網によって接続されており、互いに情報の送受信を行うことができる。計算装置20は、上記の探索処理を実際に行う装置である。なお、並列処理を行う観点から、並列処理システム1は複数の計算装置20を含むことが望ましい。
【0028】
仕分用装置10は、並列処理システム1での処理対象となるデータを入力し、当該データを各計算装置20が探索処理を行えるように仕分ける装置である。なお、仕分用装置10は、図1に示すように各計算装置20とは別体として構成されていてもよいし、あるいは、各計算装置20の何れかに仕分用装置10の機能が備えられていてもよい。あるいは、複数の計算装置20によって仕分用装置10の機能が実現されていてもよい。また、仕分用装置10の機能の一部が、各計算装置20の何れに設けられていてもよい。
【0029】
以下の例では、領域が配置される空間は、二次元であるものとし、計算装置20の台数Pは4台とする。
【0030】
引き続いて、仕分用装置10及び計算装置20の機能について説明する。図1に示すように仕分用装置10は、入力部11と、仕分部12と、選択部13と、結果保存部14とを備えて構成されている。
【0031】
入力部11は、所定の空間上に配置された一つ以上の領域(M個の領域)からなる第一の集合と当該空間上に配置された一つ以上の領域(N個の領域)からなる第二の集合とをそれぞれ示すデータを入力する入力手段である。データの入力は、例えば、仕分用装置10に対するユーザの操作によって上記の各データが記録されたファイル(例えば、Shapefile形式のファイルや単純なテキストファイル)が読み込まれることによって行われる。なお、並列処理が行われる趣旨から、第一の集合の領域の数Mと第二の集合の領域の数Nとは、通常両方あるいは何れかが複数(2以上)である。
【0032】
第一及び第二の集合の領域を示すデータとしては、具体的には例えば、領域の頂点の座標の集合である。本実施形態では、第一の集合の領域を示すデータを主データ、第二の集合の領域を示すデータを主データに対応付ける従データとする。図2は、主データ(M個の領域40からなる第一の集合)の例である。説明のため、各領域40にはA〜Fの識別子を付与してある。図3は、従データ(N個の領域50からなる第二の集合)の例である。説明のため、各領域50にはα〜δの識別子を付与してある。なお、図2及び図3に示す領域40,50は、互いに重複している部分がないが、複数の領域40,50間で重複している部分があってもよい。また、領域40,50同士が隙間無く隣り合っていても良いし、図2及び図3に示すように隙間があいていてもよい。また、図2及び図3の周囲の四角形の破線が、領域40,50が配置される空間(定義空間)30の範囲を示している。
【0033】
なお、入力部11は、定義空間30を示すデータも領域40,50を示すデータと合わせて入力することとしてもよい。あるいは、入力されたデータによって示される領域40,50を全て含むように定義空間30が(例えば、後述する仕分部12等によって)生成(定義)されることとしてよい。また、リレーショナルデータベースに予め格納されていたならば利用できていたであろう、主データと従データとを付き合わせるためのキー情報は予め付与されていないものとする。また、領域40,50を示すデータは、必ずしも上記のデータに限られず、領域40,50を表現しうるものであればどのような形式のデータでもよい。
【0034】
入力部11は、入力したM個の領域40からなる第一の集合及びN個の領域50からなる第二の集合を示すデータを仕分部12に出力する。
【0035】
仕分部12は、定義空間を複数の格子に分割して、分割した各格子について、入力部11によって入力されたデータによって示される第一及び第二の集合に含まれる領域40,50のうち、当該格子に少なくとも当該領域40,50の一部を含む領域40,50を当該格子に仕分ける仕分手段である。
【0036】
具体的には、仕分部12は、まず、第一及び第二の集合に含まれる領域40,50が配置される定義空間30を複数の格子に分割する。各格子が、計算装置20における探索処理の単位となる。仕分部12は、どのように定義空間30を格子に分割するかの情報を、例えば、ユーザによって予め入力されて設定ファイルとして予め記憶している。どのように定義空間30を格子に分割するかの情報は、具体的には例えば、いくつの格子に分割するか、個々の格子の形状及び大きさを示す情報である。仕分部12は、当該情報に基づいて定義空間30を分割して格子を生成する。仕分部12は、定義空間30を分割して生成した各格子を識別できるように各格子に識別情報(識別子)を(動的に生成して)付与する。
【0037】
例えば、格子の数が4であり、格子の形状が矩形であるとすると、図4に示すように定義空間30が4つに分割されて4つの格子31が生成される。以下の説明では、格子の総数をKで表す。本実施形態の例では、計算装置20の台数Pと格子の総数Kが一致(P=K=4)している。図4に示す例では、各格子31には、1〜4の識別子が付与される。
【0038】
仕分部12は、上記のように複数の格子を生成すると、第一及び第二の集合に含まれる領域40,50を当該格子31に仕分ける。第一の集合に含まれる領域40については、仕分部12は、格子31に少なくとも領域40の一部を含む領域40を、当該領域40と当該格子31との交差領域(重複している領域)として各格子31に属しているものとして仕分ける。例えば、図5に示すように、例えば領域Bは、格子1に完全に包含されているため、その全体が交差領域となり、格子1にのみ属すると判定される。一方、領域Aは格子1及び2に跨っているため、領域Aと格子1との交差領域41、及び領域Aと格子2との交差領域41が計算され、それぞれの交差領域41がそれぞれの格子31に割り当てられる。なお、この交差領域41も、元々の領域40と同様に、当該有限の空間に配置されえる有限の領域である。その他の領域についても、同様に判定が下され、図5はその結果を示している。図5に示すように各領域40と格子31の交差領域41が各格子31に属するものとされる。仕分部12は、各領域(交差領域)41に当該領域41が属すると判定された格子31の識別子(格子番号)を割り当てる。
【0039】
また、仕分部12は、第一の集合に含まれる領域40と格子31との交差領域41の、当該第一の集合に含まれる領域40に対する第一の比率である第一の面積比率を算出(判定)する。本実施形態では、領域40が二次元であるので、領域40に対する交差領域41の第一の比率は面積比となる(もし、領域40が二次元であれば、比率は体積比となる。以下の比率についても同様である)。第一の面積比率は、各領域40及び交差領域41の面積を算出して、領域40の交差領域41毎に、交差領域41の面積の値を領域40の面積の値で割ることによって算出される。
【0040】
例えば、図5に示すように、例えば領域Bは、格子1に完全に包含されているため、格子1に関する領域Bの第一の面積比率は100%となる(図5の括弧内に第一の比率を示す)。また、領域Aについては、格子1に関する領域Aの第一の面積比率は30%となり、格子2に関する領域Aの第一の面積比率は70%となる。図5に示すように、領域40毎に、各格子31に関しての交差領域41の第一の面積比率が算出される。仕分部12は、各交差領域41に当該交差領域41に係る第一の面積比率を示す情報を割り当てる。
【0041】
仕分部12は、第二の集合に含まれる領域50については、以下の2つの方法の何れかによって行われる。何れの方法を用いるかは、ユーザ等によって予め仕分部12に設定されている。
【0042】
第1の方法では、仕分部12は、格子31に少なくとも領域50の一部を含む領域50を領域全体51として各格子31に属しているものとして仕分ける。この方法では図6に示すように、例えば領域βは、格子1に完全に包含されているため、格子1にのみ属すると判定される。一方、領域αは格子1,2,3,4に跨っているため、格子1,2,3,4の全てに属すると判定される。その他の領域についても、同様に判定が下され、図5はその結果を示している。図5に示すように各領域50の領域全体51が各格子31に属するものとされる。仕分部12は、各領域(全体)51に当該領域51が属すると判定された格子31の識別子(格子番号)を割り当てる。
【0043】
第2の方法では、仕分部12は、格子31に少なくとも領域50の一部を含む領域50を当該領域50と当該格子31との交差領域(重複している領域)52として各格子31に属しているものとして仕分ける。この方法では図7に示すように、例えば領域βは、格子1に完全に包含されているため、格子1にのみ属すると判定される。一方、領域αは格子1,2,3,4に跨っているため、領域αと各格子1,2,3,4との交差領域52が計算され、それぞれの交差領域52がそれぞれの格子31に割り当てられる。なお、この交差領域52も、元々の領域50と同様に、当該有限の空間に配置されえる有限の領域である。その他の領域50についても、同様に判定が下され、図7はその結果を示している。図7に示すように各領域50と格子31の交差領域52が各格子31に属するものとされる。仕分部12は、各領域(交差領域)52に当該領域52が属すると判定された格子31の識別子(格子番号)を割り当てる。
【0044】
仕分部12は、上記のように第一及び第二の集合に含まれる領域40,50を仕分けた後、各格子31について再仕分けが必要であるか判断して、必要であれば再帰的に再仕分けを行うこととしてもよい。その場合、仕分部12は、どのような条件で再仕分けを行うか否かの基準の情報を、例えば、ユーザによって予め入力されて設定ファイルとして予め記憶している。
【0045】
例えば、仕分部12は、格子31毎に、各格子31に仕分けられた第一の集合に含まれる領域41の数、各格子31に仕分けられた第二の集合に含まれる領域51,52の数、及びそれらの和の何れかが予め設定された閾値を超えているか否かを判断して、閾値を超えている場合にその格子31について再帰的に再仕分けを行うと判断する。なお、上記の判断は、各格子31に仕分けられた領域41,51,52の数及びそれらの和の全てについて判断する必要は無く、一種類の数のみにて判断が行われても良い。また、3種類の数のうち2つ、あるいは3種類全てが閾値を超えている場合にその格子31について再仕分けを行うと判断することとしてもよい。
【0046】
再仕分けを行うと判断されると仕分部12は、その格子31を更に細かい格子31に分割する。更なる格子31の分割についても、上述した(1度目の)定義空間の分割と同様に、どのように定義空間を格子に分割するかの情報を予め保持しておきその情報に基づいて行う。例えば、予め設定された数の同じ大きさの格子に再分割する。更に細かい格子31に分割すると、上記と同様に、当該格子31に識別情報を付与して領域41,51,52の仕分を行う。なお、再仕分けについては、予め設定された回数(例えば、1度)だけ行うこととしてもよいし、各格子31に仕分けられた領域41,51,52の数及びそれらの和の何れかが予め設定された閾値を超えない状態となるまで、繰り返し行うこととしてもよい。
【0047】
仕分部12は、仕分結果の情報を選択部13に出力する。具体的には、仕分部12は、格子31の識別情報が対応付けられた領域41,51,52を示すデータ、及び領域41に対応付けられた第一の面積比率を示すデータを選択部13に出力する。
【0048】
選択部13は、仕分部12によって分割された各格子31について、一台以上の計算装置20のうち一つの計算装置20を選択して、選択した計算装置20に仕分部12によって当該格子31に仕分けられた(対応付けられた)領域41,51,52、及び領域41に対応付けられた第一の面積比率を示すデータを出力する選択手段である。
【0049】
まず、選択部13は、格子31それぞれについて計算装置20を選択する。例えば、計算装置20を予め設定された基準に従って並べて、順番に選択していく。選択部13は、格子31毎に選択した計算装置20に、格子31に対応付けられた領域41,51,52、及び領域41に対応付けられた第一の面積比率を示すデータを出力(送信)する。仕分済みの第二の集合に属する領域51,52のデータについては、仕分の方法に応じたデータを出力する。
【0050】
第二の集合の領域50については、図6を用いて説明した第1の方法を用いた場合、領域全体51のデータが出力される。図6に示す例において、格子1に属する領域は、計算装置#1に割り当てられるものとする。その場合、格子1に属すると判定された領域α,β(の領域全体)が計算装置#1に出力される(割り当てられる)。ここで、領域αは格子2,3,4にも属すると判定されていたため、領域αのデータは複製され計算装置#2,#3,#4に出力される(割り当てられる)。図8に、図5及び図6の結果から計算装置#1が受け取ることになる領域41,51のデータを示す。また、図10に計算装置#1が受け取ることになる領域41(領域A,B,D)に対応付けられた第一の面積比率を示すデータを示す。なお、第一の面積比率を示すデータは、第二の集合の領域50の仕分の方法にかかわらず同一である。
【0051】
図7を用いて説明した第2の方法を用いた場合、交差領域52(但し、一つの格子31のみに属する領域については領域全体)のデータが出力される。この場合、一つの交差領域52は必ず一つの格子31にのみ属するため、領域の複製を行う必要はない。つまり、第1の方法と第2の方法とは、領域の(データの)複製を行うか、領域と格子との交差領域の計算を行うかのトレードオフの関係にある。図9に、図5及び図7の結果から計算装置#1が受け取ることになる領域41,52のデータを示す。また、図11に、図5及び図7の結果から計算装置#2が受け取ることになる領域41,52のデータを示す。図12に計算装置#2が受け取ることになる領域41(領域A,C)に対応付けられた第一の面積比率を示すデータを示す。
【0052】
図8、図9及び図11に示すように、図2及び図3に示した領域40,50の総数と比べ、1台の計算装置20で扱う領域の個数がそれぞれ削減されている。本実施形態の例では、説明を簡単にするために格子を4つだけ用いたが、計算装置20の台数P及び格子31の総数Kを増やすほど、1台の計算装置20で扱う領域41,51,52の個数が減少する。十分に少ない領域41,51,52の個数になれば、第一の集合の領域40(から生じた交差領域41)と、第二の集合の領域50(から生じた領域51,52)との間で重なっている領域の探索をそれらの間での単純な総当りにより行うことも現実的となる。
【0053】
結果保存部14は、計算装置20からの出力される判定結果を入力(受信)し、それらを集約して、当該データによって示される第一の集合に含まれる領域と第二の集合に含まれる領域とが重なり合う領域に係る情報として保存する。計算装置20から受信した情報の保存は、例えば永続的なストレージ装置や揮発メモリに記憶させることによって行われる。なお、情報の保存を行わずに、集約した情報を仕分用装置10が備えるディスプレイ上に結果を表示するだけでもよい。
【0054】
結果保存部14に記憶される情報は、各計算装置20で計算された各格子31における、第一の集合の領域40(から生じた交差領域41)と、第二の集合の領域50(から生じた領域51,52)との間で重なっている領域に係る情報である。具体的には、各格子31における、第一の集合に含まれる領域41と第二の集合に含まれる領域51,52とが重なり合う領域の、当該第一の集合に含まれる領域に対する第二の比率である第二の面積比率である(更に具体的には、図13を用いて後述する)。
【0055】
また、結果保存部14に記憶される情報は、(格子31毎ではなく)第一の集合に含まれる領域40毎に、第二の集合に含まれる領域50のうちどの領域と重なっているか、また重なり合いの比率を示す情報であってもよい。ここでの比率は、重なり合っている領域の、第一の集合の領域(全体)40に対する比率である(更に具体的には、図14を用いて後述する)。この情報は、上記の各計算装置20で計算された格子31毎の判定結果から、後述するように計算されて得られる。
【0056】
また、結果保存部14は、上記のように重なり合う領域の比率を記憶するのでなく、重なり合う領域自体がどのような領域であるかを示す情報を計算装置20から受信して記憶してもよい。
【0057】
計算装置20は、仕分用装置10から出力された領域41,51,52を示すデータを入力(受信)して、第一の集合に含まれる領域41と、第二の集合に含まれる領域51,52とが重なり合う領域を判定する計算装置である。即ち、計算装置20は、上記の重なり合う領域の探索を行う。なお、各計算装置20には格子31毎のデータが入力されているので、この探索は格子31毎に行われる。この探索は、上述したような単純な総当りによって行ってもよいし、あるいはアルゴリズム的な工夫を施してもよい。
【0058】
また、計算装置20は、各格子31における、第一の集合に含まれる領域41と第二の集合に含まれる領域51,52とが重なり合う領域の、当該第一の集合に含まれる領域に対する当該第二の比率である第二の面積比率を算出して、出力する。第二の面積比率は、第一の集合に含まれる各領域41、及び上記の重なり合う領域の面積を算出して、重なり合う領域毎に、当該重なり合う領域の面積の値を領域41の面積の値で割ることによって算出される。
【0059】
例えば、図13(a)に示すように、計算装置#1では、領域Aから生じた領域41の80%(第二の面積比率)が領域αと重なり、10%が領域β(第二の面積比率)と重なっている。領域Bから生じた領域41の20%(第二の面積比率)が領域αと重なり、30%が領域β(第二の面積比率)と重なっている。領域Dから生じた領域41の100%(第二の面積比率)が領域αと重なっている。図13(b)に示すように、計算装置#2では、領域Aから生じた領域41の60%(第二の面積比率)が領域αと重なり、10%が領域γ(第二の面積比率)と重なっている。領域Cから生じた領域41の80%(第二の面積比率)が領域αと重なっている。
【0060】
計算装置20は、これらの結果を、第一の集合の領域の識別子と第一の面積比率、及びそれに関連する第二の集合の領域の識別子と第二の面積比率をまとめて(図13に示すデータのように)1件のレコード(データ)として、仕分用装置10に出力する。
【0061】
仕分用装置10では、各計算装置20で計算された、格子31毎の計算結果(例えば、図13に示すデータ)が結果保存部14によって受信され保存される。各計算装置20で計算された計算結果が保存されると、以下のようにして、(格子31毎ではなく)第一の集合に含まれる領域40毎に、第二の集合に含まれる領域50のうちどの領域と重なっているか、また重なり合いの比率を示す情報が計算される。
【0062】
仕分用装置10では、各格子31の計算結果が受信されると、選択部13は、上記の計算を行うため、第一の集合に含まれる領域40毎に格子31それぞれについて計算装置20を選択する。この選択は、第一の集合の領域40の識別子に関するハッシュ値を計算装置20の台数Pで除算した際の剰余(いわゆるモジュロ)に基づいて決定する方法や、第一の集合の領域40の識別子を各計算装置20に順繰りに割り当てる方法(いわゆるラウンドロビン)等によって行われる。
【0063】
選択部13は、上記のように選択した計算装置20に第一の集合に含まれる領域40毎の計算結果を示す情報を送信する。即ち、同じ領域40(の識別子)についての、第一の面積比率と第二の面積比率とを示す情報を、当該領域40に応じて選択された計算装置20に送信する。例えば、図13において、計算装置#1及び計算装置#2それぞれで計算された領域Aについて計算装置#1を割り当て、計算装置#1に領域Aの第一の面積比率と第二の面積比率とを示す情報を送信する。
【0064】
計算装置20は、当該情報を受信して、第一の集合の領域40(の識別子)毎に、第一の面積比率と第二の面積比率とから面積比率の集計を行う。具体的には、まず、各レコード内で、第一の面積比率を第二の面積比率に乗じる。次いで、同じ領域40(の識別子)の全レコード間で、第二の集合の領域50毎に乗じた値を足し合わせる(集計する)。上記の集計の例を図14に示す。集計前の領域Aの計算結果から、領域Aについての第二の集合の領域50毎の比率が算出されている。領域Aの66%が領域αと、3%が領域βと、7%が領域γと重なっている。計算装置20は、集計した面積比率の情報を仕分用装置10に送信し、仕分用装置10では、結果保存部14が当該面積比率の情報を受信して、保存する。
【0065】
上記のように、選択部13及び各計算装置20は、第一の面積比率と第二の面積比率とから、第一の集合に含まれる領域40と第二の集合に含まれる領域50とが重なり合う領域の、第一の集合に含まれる領域に対する比率を算出して出力する集計手段を構成する。なお、計算装置1台あたりの第一の集合の領域40(の識別子)の平均割り当て個数は「M÷P」となる。よって、計算装置20の台数Pが多いほど、上記の集計処理による計算装置1台あたりの処理負荷は小さくなる。
【0066】
また、第一の集合の領域40毎の計算結果は、結果保存部14に記憶されているので、結果保存部14において上記の集計処理が行われてもよい。また、上記では、計算装置20は、第二の面積比率と集計した面積比率とを算出して、仕分用装置10に送信しているが、探索して得られた第一の集合に含まれる領域41と第二の集合に含まれる領域51,52とが重なり合う領域自体を示す情報を、探索結果として仕分用装置10に送信することとしてもよい。
【0067】
なお、選択部13における計算装置20を選択する機能、仕分用装置10と計算装置20との間の通信の制御、並びに計算装置20に割り当てられた領域41,51,52のデータを計算装置20上で処理するプログラムを実行する仕組み等は、計算装置を多数接続したクラスタ上での並列計算における汎用的な機能要件である。従って、近年ではそのような機能を提供するソフトウェアが多数利用できるようになってきている。例えば、MPI(Message Passing Interface)技術のオープンソース実装であるOpen MPI、Google社が提唱するMapReduce技術のオープンソース実装であるHadoop、Microsoft社が提唱するDryad技術等がある。選択部13や計算装置20の部分は、これらのソフトウェアを適用することで構築することが可能である。以上が、並列処理システム1の機能構成である。
【0068】
図15に並列処理システム1を構成する仕分用装置10及び計算装置20のハードウェア構成を示す。図15に示すように仕分用装置10及び計算装置20は、CPU(Central Processing Unit)101、主記憶装置であるRAM(Random Access Memory)102及びROM(ReadOnly Memory)103、通信を行うための通信モジュール104、並びにハードディスク等の補助記憶装置105等のハードウェアを備えるコンピュータを含むものとして構成される。これらの構成要素がプログラム等により動作することにより、上述した仕分用装置10及び計算装置20の機能が発揮される。以上が、並列処理システム1の構成である。
【0069】
引き続いて、図16のフローチャートを用いて、本実施形態に係る並列処理システム1で実行される処理である並列処理方法を説明する。まず、仕分用装置10において、入力部11によって、探索対象となる、定義空間30上に配置されたM個の領域40からなる第一の集合とN個の領域50からなる第二の集合とをそれぞれ示すデータが入力される(S01、入力ステップ)。当該入力は、上述したように例えば、ユーザの操作によって上記の各データが記録されたファイルが読み込まれることによって行われる。入力されたデータは入力部11から仕分部12に出力される。
【0070】
続いて仕分部12によって、定義空間30が複数の格子31に分割される(S02、仕分ステップ)。続いて仕分部12によって、分割された各格子31について、入力部11によって入力されたデータによって示される領域40,50のうち、当該格子に少なくとも当該領域40,50の一部を含む領域40,50が当該格子に仕分けられる(S03、仕分ステップ)。この仕分により、仕分済みの領域41,51,52には、対応付けられた格子31の識別情報が対応付けられる。また、この際、仕分部12によって、仕分けられた第一の集合の領域41について、領域40に対する第一の面積比率が算出されて、当該第一の面積比率を示す情報が領域41に対応付けられる。
【0071】
続いて仕分部12によって、各格子31について再仕分けが必要であるか判断される(S04、仕分ステップ)。この判断は、上述したように、格子31毎に、各格子31に仕分けられた領域41,51,52の数及びそれらの和の何れかが予め設定された閾値を超えているか否かを判断することによって行われる。
【0072】
格子31の何れかにについて再仕分けが必要であると判断されると(S04のYES)、仕分部12によって、当該格子31の更なる分割が行われる(S05、仕分ステップ)。続いて仕分部12によって、分割された各格子31について、元の格子31に対応付けられていた領域41,51,52のうち、当該格子に少なくとも当該領域41,51,52の一部を含む領域41,51,52が当該格子に仕分けられる(S06、仕分ステップ)。また、この際、S03と同様に領域41の第一の面積比率が算出されて、当該第一の面積比率を示す情報が領域41に対応付けられる。
【0073】
S06において、再仕分けが行われた後、再帰的にS04において各格子31について再仕分けが必要か否かが判断される。なお、この判断は、S06において更に分割された格子31のみに対して行われてもよい。S04において全ての格子31について再仕分けが必要でないと判断された場合(S04のNO)、仕分結果の情報が仕分部12から選択部13に出力される。なお、S04〜S06の再帰的な再仕分けについての処理は、予め設定された回数(例えば、1度)だけ行われてもよい。その場合、設定された回数の再仕分けが行われるとS06の処理の後に次の処理(S07)に移行する。
【0074】
続いて、選択部13によって、格子31それぞれについて計算装置20が選択される(S07、選択ステップ)。続いて、格子31毎に選択された計算装置20に対して、選択部13から当該格子31に対応付けられた領域41,51,52及び領域41に対応付けられた第一の面積比率を示すデータが出力される(S08、選択ステップ)。
【0075】
それぞれの計算装置20では、仕分用装置10から出力された当該データが入力される。各計算装置20では、当該データによって示される各領域41と各領域51,52とが重なり合う領域が判定される。即ち、各計算装置20では、各領域41と各領域51,52とが重なり合う領域の探索が行われる。続いて、即ち、各計算装置20では、判定された重なり合う領域の、領域41に対する第二の面積比率が計算される(S09、計算ステップ)。当該計算結果(判定結果)は、各計算装置20から仕分用装置10に出力される。仕分用装置10では、結果保存部14によって、計算装置20からの出力される計算結果が入力されて保存される。
【0076】
仕分用装置10では、各格子31の計算結果が計算装置20から受信されると、続いて、選択部13によって、第一の集合に含まれる領域40(の識別子)毎に上記の計算結果を集計するための計算装置20が選択される(S10、集計ステップ)。この選択は、例えば、上述したように第一の集合の領域40の識別子に基づいて行われる。
【0077】
続いて、選択部13から選択された計算装置20に対して、選択に係る領域40に係る、S10で受信した計算結果を示す情報が送信される(S11、集計ステップ)。即ち、同じ領域40(の識別子)についての、第一の面積比率と第二の面積比率とを示す情報が、領域40に応じて選択された計算装置20に送信される。
【0078】
続いて、各計算装置20では、当該情報が受信されて、第一の集合の領域40(の識別子)毎に、第一の面積比率を第二の面積比率を乗じることによって、第一の集合に含まれる領域40毎に、第二の集合に含まれる領域50のうちどの領域と重なっているか、また重なり合いの比率を示す情報が計算される(S12、集計ステップ)。この計算は、図14を用いて上述したように行われる。
【0079】
当該計算結果(集計結果)は、各計算装置20から仕分用装置10に出力される。仕分用装置10では、結果保存部14によって、計算装置20からの出力される計算結果が入力されて保存される(S13)。保存された探索結果は、アプリケーションに応じて適宜利用される。以上が、本実施形態に係る並列処理システム1で実行される処理である。
【0080】
上述したように本実施形態では、第一及び第二の集合の領域40,50のデータの2つを入力としてそれらが配置される定義空間30が複数の格子31に分割されて、格子31毎に各計算装置20において、第一の集合に含まれる領域41と第二の集合に含まれる領域51,52とが重なり合う領域を探索する処理が行われる。これにより、第一及び第二の集合の領域40,50のデータの2つを入力として第一の集合の各領域40と第二の集合の各領域50との重なり合いの探索を高速に並列処理することができる。
【0081】
その際、2つの入力は、予めリレーショナルデータベースに登録されていなく、任意の形式(例えば、上述したShapefile形式、テキストファイル形式)で与えることができる。また、探索処理の実行に際しても、リレーショナルデータベースシステムを用いる必要はなく、任意の並列処理システム(例えば、上述したOpenMPI、Hadoop、Dryad)を利用することができる。
【0082】
また、本実施形態のように、格子31への第一の集合に含まれる領域40の仕分時に第一の面積比率を算出し、重なり合う領域の探索時に第二の面積比率を算出して、これらから重なり合う領域の第一の集合に含まれる領域に対する比率を算出することが望ましい。この構成によれば、当該比率を高速に算出することができる。
【0083】
また、定義空間30を格子31に分割する際に格子の大きさを指定したり、領域40,50の仕分処理を再帰的に繰り返し行ったりすることにより、一つの格子31に属する領域41,51,52の総数を十分に小さくすることが可能になる。一つの格子31に属する領域41,51,52の総数が小さいほど、そして利用できる計算装置20の台数が多いほど、本発明による並列処理の負荷分散効果が高くなる。
【0084】
また、領域50の仕分については、上述した第1の方法及び第2の方法の何れかを用いることが望ましい。この構成により、第一及び第二の集合の領域41,51,52間の重なり合う領域を探索する処理が行うために適切かつ確実に領域31を仕分けることができる。それにより、適切かつ確実に本発明を実施することができる。
【0085】
上述した実施形態では、計算装置20の台数Pと格子31の総数Kとが一致(P=K=4)する例を示したが、これらは必ずしも一致する必要はない。格子31の総数の方が多い場合、計算装置1台あたりに複数の格子31を割り当てればよい。1台の計算装置20に複数の格子31が割り当てられた場合でも、計算装置20は格子31毎に探索処理を行うことができる。計算装置1台辺りの平均割り当て格子数AはK÷Pとなり、計算装置1台あたりの計算量は「M×N÷K÷K×A」オーダー、つまり「M×N÷K÷P」オーダーとなる。反対に、格子31の総数の方が少ない場合、計算装置20群の内のいくつかは格子31を割り当てられないことになり、その他の計算装置20には格子31を1つずつ割り当てればよい。この場合の計算装置1台あたりの計算量は「ゼロ」又は「M×N÷K÷K」オーダーとなる。
【0086】
また、上述した実施形態では、第一の集合の領域40を主データ、第二の集合の領域50を従データとして説明したが、第二の集合の領域50を主データ、第一の集合の領域40を従データとすることとしてもよい。
【0087】
引き続いて、上述した一連の並列処理システム1で実行される処理をコンピュータに実行させるための並列処理プログラムを説明する。並列処理プログラムは、図17(a)に示す仕分用装置側の並列処理プログラム61と、図17(b)に示す計算装置側の並列処理プログラム71とを含んで構成されている。図17に示すように、並列処理プログラム61,71は、コンピュータに挿入されてアクセスされる、あるいはコンピュータが備える記録媒体60,70に形成されたプログラム格納領域60a,70a内に格納される。
【0088】
仕分用装置側の並列処理プログラム61は、仕分用装置側の並列処理を統括的に制御するメインモジュール61aと、入力モジュール61bと、仕分モジュール61cと、選択モジュール61dと、結果保存モジュール61eとを備えて構成される。入力モジュール61bと、仕分モジュール61cと、選択モジュール61dと、結果保存モジュール61eとを実行させることにより実現される機能は、上述した仕分用装置10の入力部11と、仕分部12と、選択部13と、結果保存部14との機能とそれぞれ同様である。
【0089】
計算装置側の並列処理プログラム71は、計算装置側の並列処理を統括的に制御するメインモジュール71aと、計算モジュール71bとを備えて構成される。計算モジュール71bを実行させることにより実現される機能は、上述した計算装置20の機能と同様である。
【0090】
なお、並列処理プログラム61,71は、その一部若しくは全部が、通信回線等の伝送媒体を介して伝送され、他の機器により受信されて記録(インストールを含む)される構成としてもよい。また、並列処理プログラム61,71それぞれの各モジュールは、1つのコンピュータでなく、複数のコンピュータのいずれかにインストールされてもよい。その場合、当該複数のコンピュータによるコンピュータシステムよって上述した一連の並列処理プログラム61,71それぞれの処理が行われる。
【符号の説明】
【0091】
1…並列処理システム、10…仕分用装置、11…入力部、12…仕分部、13…選択部、14…結果保存部、20…計算装置、101…CPU、102…RAM、103…ROM、104…通信モジュール、105…補助記憶装置、60,70…記録媒体、60a,70a…プログラム格納領域、61…仕分用装置側の並列処理プログラム、61a…メインモジュール、61b…入力モジュール、61c…仕分モジュール、61d…選択モジュール、61e…結果保存モジュール、71…計算装置側の並列処理プログラム、71a…メインモジュール、71b…計算モジュール。
【特許請求の範囲】
【請求項1】
一台以上の計算装置を含んで構成される並列処理システムによる並列処理方法であって、
所定の空間上に配置された一つ以上の領域からなる第一の集合と当該空間上に配置された一つ以上の領域からなる第二の集合とをそれぞれ示すデータを入力する入力ステップと、
前記空間を複数の格子に分割して、分割した各格子について、前記入力ステップにおいて入力されたデータによって示される第一の集合に含まれる領域のうち、当該格子に少なくとも当該領域の一部を含む領域を、当該領域と当該格子との交差領域として当該格子に仕分けると共に、前記入力ステップにおいて入力されたデータによって示される第二の集合に含まれる領域のうち、当該格子に少なくとも当該領域の一部を含む領域を当該格子に仕分ける仕分ステップと、
前記仕分ステップにおいて分割された各格子について、前記一台以上の計算装置のうち一つの計算装置を選択して、選択した計算装置に前記仕分ステップにおいて当該格子に仕分けられた第一及び第二の集合に含まれる領域を示すデータを出力する選択ステップと、
前記計算装置のそれぞれが、前記選択ステップにおいて出力されたデータを入力して、当該データによって示される第一の集合に含まれる領域と第二の集合に含まれる領域とが重なり合う領域を判定して、判定の結果を出力する計算ステップと、
を有する並列処理方法。
【請求項2】
前記仕分ステップにおいて、前記第一の集合に含まれる領域と当該格子との交差領域の、当該第一の集合に含まれる領域に対する第一の比率を算出し、
前記選択ステップにおいて、選択した計算装置に、前記格子に仕分けられた第一の集合に含まれる領域の第一の比率を示す情報を出力し、
前記計算ステップにおいて、各格子における、前記第一の集合に含まれる領域と前記第二の集合に含まれる領域とが重なり合う領域の、当該第一の集合に含まれる領域に対する第二の比率を算出して、出力し、
前記第一の比率と前記第二の比率とから、前記第一の集合に含まれる領域と前記第二の集合に含まれる領域とが重なり合う領域の、第一の集合に含まれる領域に対する比率を算出して出力する集計ステップを、
更に有する請求項1に記載の並列処理方法。
【請求項3】
前記仕分ステップにおいて、前記格子に少なくとも前記第二の集合に含まれる領域の一部を含む領域を当該領域全体として仕分けることを特徴とする請求項1又は2に記載の並列処理方法。
【請求項4】
前記仕分ステップにおいて、前記格子に少なくとも前記第二の集合に含まれる領域の一部を含む領域を当該領域と当該格子との交差領域として仕分けることを特徴とする請求項1又は2に記載の並列処理方法。
【請求項5】
前記仕分ステップにおいて、各格子に仕分けられた前記第一の集合に含まれる領域の数、各格子に仕分けられた前記第二の集合に含まれる領域の数、及びそれらの和の少なくとも何れかが予め設定された閾値を超えているか否かを判断して、閾値を超えていると判断された場合には閾値を超えていた格子を再帰的に更に分割して、分割した各格子について前記第一及び第二の集合に含まれる領域を仕分けることを特徴とする請求項1〜4の何れか一項に記載の並列処理方法。
【請求項6】
一台以上の計算装置を含んで構成される並列処理システムであって、
所定の空間上に配置された一つ以上の領域からなる第一の集合と当該空間上に配置された一つ以上の領域からなる第二の集合とをそれぞれ示すデータを入力する入力手段と、
前記空間を複数の格子に分割して、分割した各格子について、前記入力手段によって入力されたデータによって示される第一の集合に含まれる領域のうち、当該格子に少なくとも当該領域の一部を含む領域を、当該領域と当該格子との交差領域として当該格子に仕分けると共に、前記入力手段によって入力されたデータによって示される第二の集合に含まれる領域のうち、当該格子に少なくとも当該領域の一部を含む領域を当該格子に仕分ける仕分手段と、
前記仕分手段によって分割された各格子について、前記一台以上の計算装置のうち一つの計算装置を選択して、選択した計算装置に前記仕分手段によって当該格子に仕分けられた第一及び第二の集合に含まれる領域を示すデータを出力する選択手段と、を備え、
前記計算装置のそれぞれが、前記選択手段によって出力されたデータを入力して、当該データによって示される第一の集合に含まれる領域と第二の集合に含まれる領域とが重なり合う領域を判定して、判定の結果を出力する、
ことを特徴とする並列処理システム。
【請求項7】
複数のコンピュータに、一台以上の計算装置を含んで構成される並列処理システムによる並列処理を実行させる並列処理プログラムであって、
前記コンピュータの少なくとも一つを、
所定の空間上に配置された一つ以上の領域からなる第一の集合と当該空間上に配置された一つ以上の領域からなる第二の集合とをそれぞれ示すデータを入力する入力手段と、
前記空間を複数の格子に分割して、分割した各格子について、前記入力手段によって入力されたデータによって示される第一の集合に含まれる領域のうち、当該格子に少なくとも当該領域の一部を含む領域を、当該領域と当該格子との交差領域として当該格子に仕分けると共に、前記入力手段によって入力されたデータによって示される第二の集合に含まれる領域のうち、当該格子に少なくとも当該領域の一部を含む領域を当該格子に仕分ける仕分手段と、
前記仕分手段によって分割された各格子について、前記一台以上の計算装置のうち一つの計算装置を選択して、選択した計算装置に前記仕分手段によって当該格子に仕分けられた第一及び第二の集合に含まれる領域を示すデータを出力する選択手段と、して機能させ、
前記複数のコンピュータのそれぞれを、前記選択手段によって出力されたデータを入力して、当該データによって示される第一の集合に含まれる領域と第二の集合に含まれる領域とが重なり合う領域を判定して、判定の結果を出力する計算装置として機能させる並列処理プログラム。
【請求項1】
一台以上の計算装置を含んで構成される並列処理システムによる並列処理方法であって、
所定の空間上に配置された一つ以上の領域からなる第一の集合と当該空間上に配置された一つ以上の領域からなる第二の集合とをそれぞれ示すデータを入力する入力ステップと、
前記空間を複数の格子に分割して、分割した各格子について、前記入力ステップにおいて入力されたデータによって示される第一の集合に含まれる領域のうち、当該格子に少なくとも当該領域の一部を含む領域を、当該領域と当該格子との交差領域として当該格子に仕分けると共に、前記入力ステップにおいて入力されたデータによって示される第二の集合に含まれる領域のうち、当該格子に少なくとも当該領域の一部を含む領域を当該格子に仕分ける仕分ステップと、
前記仕分ステップにおいて分割された各格子について、前記一台以上の計算装置のうち一つの計算装置を選択して、選択した計算装置に前記仕分ステップにおいて当該格子に仕分けられた第一及び第二の集合に含まれる領域を示すデータを出力する選択ステップと、
前記計算装置のそれぞれが、前記選択ステップにおいて出力されたデータを入力して、当該データによって示される第一の集合に含まれる領域と第二の集合に含まれる領域とが重なり合う領域を判定して、判定の結果を出力する計算ステップと、
を有する並列処理方法。
【請求項2】
前記仕分ステップにおいて、前記第一の集合に含まれる領域と当該格子との交差領域の、当該第一の集合に含まれる領域に対する第一の比率を算出し、
前記選択ステップにおいて、選択した計算装置に、前記格子に仕分けられた第一の集合に含まれる領域の第一の比率を示す情報を出力し、
前記計算ステップにおいて、各格子における、前記第一の集合に含まれる領域と前記第二の集合に含まれる領域とが重なり合う領域の、当該第一の集合に含まれる領域に対する第二の比率を算出して、出力し、
前記第一の比率と前記第二の比率とから、前記第一の集合に含まれる領域と前記第二の集合に含まれる領域とが重なり合う領域の、第一の集合に含まれる領域に対する比率を算出して出力する集計ステップを、
更に有する請求項1に記載の並列処理方法。
【請求項3】
前記仕分ステップにおいて、前記格子に少なくとも前記第二の集合に含まれる領域の一部を含む領域を当該領域全体として仕分けることを特徴とする請求項1又は2に記載の並列処理方法。
【請求項4】
前記仕分ステップにおいて、前記格子に少なくとも前記第二の集合に含まれる領域の一部を含む領域を当該領域と当該格子との交差領域として仕分けることを特徴とする請求項1又は2に記載の並列処理方法。
【請求項5】
前記仕分ステップにおいて、各格子に仕分けられた前記第一の集合に含まれる領域の数、各格子に仕分けられた前記第二の集合に含まれる領域の数、及びそれらの和の少なくとも何れかが予め設定された閾値を超えているか否かを判断して、閾値を超えていると判断された場合には閾値を超えていた格子を再帰的に更に分割して、分割した各格子について前記第一及び第二の集合に含まれる領域を仕分けることを特徴とする請求項1〜4の何れか一項に記載の並列処理方法。
【請求項6】
一台以上の計算装置を含んで構成される並列処理システムであって、
所定の空間上に配置された一つ以上の領域からなる第一の集合と当該空間上に配置された一つ以上の領域からなる第二の集合とをそれぞれ示すデータを入力する入力手段と、
前記空間を複数の格子に分割して、分割した各格子について、前記入力手段によって入力されたデータによって示される第一の集合に含まれる領域のうち、当該格子に少なくとも当該領域の一部を含む領域を、当該領域と当該格子との交差領域として当該格子に仕分けると共に、前記入力手段によって入力されたデータによって示される第二の集合に含まれる領域のうち、当該格子に少なくとも当該領域の一部を含む領域を当該格子に仕分ける仕分手段と、
前記仕分手段によって分割された各格子について、前記一台以上の計算装置のうち一つの計算装置を選択して、選択した計算装置に前記仕分手段によって当該格子に仕分けられた第一及び第二の集合に含まれる領域を示すデータを出力する選択手段と、を備え、
前記計算装置のそれぞれが、前記選択手段によって出力されたデータを入力して、当該データによって示される第一の集合に含まれる領域と第二の集合に含まれる領域とが重なり合う領域を判定して、判定の結果を出力する、
ことを特徴とする並列処理システム。
【請求項7】
複数のコンピュータに、一台以上の計算装置を含んで構成される並列処理システムによる並列処理を実行させる並列処理プログラムであって、
前記コンピュータの少なくとも一つを、
所定の空間上に配置された一つ以上の領域からなる第一の集合と当該空間上に配置された一つ以上の領域からなる第二の集合とをそれぞれ示すデータを入力する入力手段と、
前記空間を複数の格子に分割して、分割した各格子について、前記入力手段によって入力されたデータによって示される第一の集合に含まれる領域のうち、当該格子に少なくとも当該領域の一部を含む領域を、当該領域と当該格子との交差領域として当該格子に仕分けると共に、前記入力手段によって入力されたデータによって示される第二の集合に含まれる領域のうち、当該格子に少なくとも当該領域の一部を含む領域を当該格子に仕分ける仕分手段と、
前記仕分手段によって分割された各格子について、前記一台以上の計算装置のうち一つの計算装置を選択して、選択した計算装置に前記仕分手段によって当該格子に仕分けられた第一及び第二の集合に含まれる領域を示すデータを出力する選択手段と、して機能させ、
前記複数のコンピュータのそれぞれを、前記選択手段によって出力されたデータを入力して、当該データによって示される第一の集合に含まれる領域と第二の集合に含まれる領域とが重なり合う領域を判定して、判定の結果を出力する計算装置として機能させる並列処理プログラム。
【図1】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【図12】
【図13】
【図14】
【図15】
【図16】
【図17】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【図12】
【図13】
【図14】
【図15】
【図16】
【図17】
【公開番号】特開2013−45297(P2013−45297A)
【公開日】平成25年3月4日(2013.3.4)
【国際特許分類】
【出願番号】特願2011−182860(P2011−182860)
【出願日】平成23年8月24日(2011.8.24)
【出願人】(392026693)株式会社エヌ・ティ・ティ・ドコモ (5,876)
【公開日】平成25年3月4日(2013.3.4)
【国際特許分類】
【出願日】平成23年8月24日(2011.8.24)
【出願人】(392026693)株式会社エヌ・ティ・ティ・ドコモ (5,876)
[ Back to top ]