JPWO2014010007A1 - 情報処理システムおよびグラフ処理方法 - Google Patents
情報処理システムおよびグラフ処理方法 Download PDFInfo
- Publication number
- JPWO2014010007A1 JPWO2014010007A1 JP2014524503A JP2014524503A JPWO2014010007A1 JP WO2014010007 A1 JPWO2014010007 A1 JP WO2014010007A1 JP 2014524503 A JP2014524503 A JP 2014524503A JP 2014524503 A JP2014524503 A JP 2014524503A JP WO2014010007 A1 JPWO2014010007 A1 JP WO2014010007A1
- Authority
- JP
- Japan
- Prior art keywords
- vertex
- graph
- information
- vertices
- divided
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Ceased
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F15/00—Digital computers in general; Data processing equipment in general
- G06F15/16—Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
- G06F15/163—Interprocessor communication
- G06F15/17—Interprocessor communication using an input/output type connection, e.g. channel, I/O port
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F17/00—Digital computing or data processing equipment or methods, specially adapted for specific functions
- G06F17/10—Complex mathematical operations
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T1/00—General purpose image data processing
- G06T1/20—Processor architectures; Processor configuration, e.g. pipelining
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T2210/00—Indexing scheme for image generation or computer graphics
- G06T2210/52—Parallel processing
Abstract
大規模なスケールフリーグラフになるほど、並列処理しても計算時間が長くなる課題が生じる。本発明は、それぞれにメモリ空間が割当てられている複数のプロセスを実行する並列計算機システムで、第1プロセスに割当てられている第1メモリ空間に第1グラフ頂点の情報および第1グラフ頂点に接続されている第1グラフ頂点群の情報を配置し、第2プロセスに割当てられている第2メモリ空間に第1グラフ頂点の情報および第1グラフ頂点に接続されている第2グラフ頂点群の情報を配置し、第1プロセスでの第1グラフ頂点についての演算結果と、第2プロセスでの第1グラフ頂点の演算結果とを、第1プロセスと第2プロセスが共有することで、上述の課題を解決する。
Description
本発明は、グラフ処理を実行する情報処理システムとその処理方法に関する。
インターネットなどの通信技術の進歩とストレージ技術向上に伴う記録密度増大により、企業や個人が扱うデータ量が大きく増加し、近年はその大規模なデータの繋がり(ネットワークとも呼ばれる)を解析することが重要になってきた。特に人間関係など自然界で生じるデータの繋がりにはスケールフリーと呼ばれる特性を有するグラフが多く、このスケールフリー特性を有する大規模グラフ解析が重要になってきた(特許文献1)。
グラフは頂点と頂点の間の関係を表す辺で構成される。また、グラフ解析は、一般に、対象となるグラフの特徴量、例えばグラフ直径、中心性、ランダムウォークによる主成分ベクトルなどの算出が主であり、これら特徴量の算出は、頂点間の辺に沿った情報交換処理(トラバース処理)が多くを占める。
非特許文献1には、グラフ解析を高速に行う技術として、グラフを頂点単位で分割し並列処理する技術が開示されている。特許文献2には、グラフを頂点単位で分割し並列処理する上に、さらに、頂点の計算順序を入れ換えてから、グラフを圧縮し、圧縮されたグラフをそのまま計算する技術が開示されている。
ダグラス・グレガー(Douglas Gregor)、アンドルー・ラムスデン(Andrew Lumsdaine)、「分散メモリ並列計算のための順次グラフアルゴリズムの排除(Lifting sequential graph algorithms for distributed−memory parallel computation)」、「OOPSLA’05第20回オブジェクト指向プログラミング、システム、言語、アプリケーションに関するACM SIGPLAN年会紀要(OOPSLA’05 Proceedings of the 20th annual ACM SIGPLAN conference on Object−oriented programming, systems, languages, and applications」、エイシーエムニューヨーク(ACM New York)、(米国)、2005年、p.423−437
しかし、特許文献1および特許文献2に開示の技術では、大規模なスケールフリーグラフになるほど、そのグラフ解析に適用すると計算時間が長くなる課題が生じる。この課題は、ハブと呼ばれる次数(頂点に接続される辺の数)の多い頂点の存在に起因する。
図1にスケールフリーグラフの次数分布の典型的な例を示す。図1の横軸は、辺の数の対数を示す。図1の縦軸は、頂点数の対数を示す。集合100で示したハブ頂点は、該当する頂点の数は少数であるが次数が多い頂点を指す。一方、集合101で示した通常頂点は、該当する頂点の数は多数であるが次数は少ない。トラバース処理は、頂点間の辺に沿った情報交換処理であるため、次数が計算時間に大きな影響を及ぼす。
図2に次数と計算時間の関係の例を示す。図2に示すように、ハブ頂点は次数が多いので、その計算時間200は、平均的な次数を持つ通常頂点の計算時間201より、数桁長い。そして、グラフ解析の全体計算時間は、最も長い計算時間を要する頂点の計算時間で決定されるため、ハブ頂点の計算時間がグラフ処理全体の計算時間を劣化させる。
それに対し、特許文献1に開示の技術は頂点毎の分割に過ぎず、また、特許文献2に開示の技術は、頂点の計算順序を入れ換えることで高速化を図る手法のため、ハブ頂点の辺の数の問題は解決されず、ハブ頂点による計算時間の悪化を解決できない。
そこで本発明は、優れた並列スケーラビリティを有するグラフ処理方法および情報処理システムを実現することを目的とする。
本発明は、それぞれにメモリ空間が割当てられている複数のプロセスを実行する並列計算機システムで、第1プロセスに割当てられている第1メモリ空間に第1グラフ頂点の情報および第1グラフ頂点に接続されている第1グラフ頂点群の情報を配置し、第2プロセスに割当てられている第2メモリ空間に第1グラフ頂点の情報および第1グラフ頂点に接続されている第2グラフ頂点群の情報を配置し、第1プロセスでの第1グラフ頂点についての演算結果と、第2プロセスでの第1グラフ頂点の演算結果とを、第1プロセスと第2プロセスが共有することで、上述の課題を解決する。
本発明により、優れた並列処理スケーラビリティの確保が可能となる。
本発明のグラフ処理方法および情報処理システムの実施例について以下に説明する。図3に、本発明の入力グラフの一部の例として、グラフ310を示す。
グラフ310は、頂点が丸印で、有向エッジが頂点間を結ぶ矢印で表現されている。また有向エッジで繋がった頂点で、矢印元の頂点から見て矢印先の頂点を「隣接する」頂点と呼ぶ。ここで、次数が他の頂点に比べて比較的多い頂点、本実施例では次数が5以上の頂点をハブ頂点とし、それ以外の頂点を通常頂点とする。図3のグラフ310においては、ハブ頂点はハブ頂点Y(300−Y)とハブ頂点Z(300―Z)となり、通常頂点は通常頂点a〜n(301−a〜n)となる。
次に、グラフ310に対するグラフ解析処理の例として、ランダムウォークによる主成分ベクトルの計算を考える。ランダムウォークによる主成分ベクトルの計算は一般に、各頂点が保持する成分データを隣接する頂点に分配し、各頂点は分配された成分データを受け取り総和演算し、各頂点の成分データを更新する処理を繰り返すことで行われる。そして、複数回繰り返し更新処理を実施した後の各頂点が保持する成分データが、求める主成分ベクトルとなる。
グラフ310のハブ頂点Yにおいては、まず、ハブ頂点Y自身の持つ時刻t−1の成分データを隣接する頂点である通常頂点jおよび通常頂点nに分配する。ここで、ハブ頂点Y自身の持つ時刻t−1の成分データは、隣接する頂点の数、ここでは2で除算され送信される。この成分データの除算の計算を数式(1)に記載する。ここで、Dは成分データ、sendDは分配する成分データを表し、右肩の添え字は時刻、右下の添え字は対象とする頂点の頂点識別情報(頂点ID)を示す。次に、ハブ頂点Yにおいては、隣接される頂点(通常頂点b〜通常頂点i、ハブ頂点Z)から分配された成分データ(sendD)を受け取り、総和を算出する。総和の結果が時刻tの成分データとなる。総和の計算式を数式(2)に示す。
以上の処理を全ての頂点に対し複数回実施した後に各頂点が保持する成分データが、ランダムウォークによる主成分ベクトルの計算出力となる。
このとき、ハブ頂点Yは他の通常頂点よりも次数が多く、送る、および受け取る成分データも多いため、必要となる処理量が大きく、通常頂点との間で処理時間が不均一となり、これが並列処理スケーラビリティを低下させる原因となる。
そこで、本発明の情報処理システムでは、図4に示すように、グラフ310を複数のプロセスへ配置する。ハブ頂点については、複数のプロセスに分割して配置し、分割して配置されたハブ頂点はそれぞれ同一プロセスに配置された頂点と辺で接続される。各プロセスに分割されて配置されたハブ頂点を分割頂点と呼ぶ。ここで、プロセスとはオペレーティングシステムからメモリ空間(または記憶領域)を割り当てられた動作中のインスタンスであり、プログラムの実行単位である。
以下、図4の頂点配置概念図を用いて分割頂点とその配置について説明する。図4に示した頂点配置概念図では、ハブ頂点Yおよびハブ頂点Zがプロセス411〜413に分割されて配置され、各配置された分割頂点は、ハブ頂点Yについては分割頂点Y1(400−Y1)、Y2(400−Y2)、Y3(400−Y3)で、ハブ頂点Zについては分割頂点Z1(401−Z1)、Z2(401−Z2)、Z3(401−Y3)である。各分割頂点は、グラフ310の接続情報に従って、同一プロセス内に配置されている他の頂点と接続される。また、図4の頂点配置概念図の分割頂点間の破線(402など)は、分割される前の頂点が同一であることを表現している。
このときのハブ頂点Yの成分データの計算式を数式(3)、(4)、(5)、(6)に記載する。
sendDの算出は数式(1)に基づき行われる。数式(3)−(5)に基づいて、各分割頂点Y1(400−Y1)、Y2(400−Y2)、Y3(400−Y3)は、それぞれが配置されたプロセス内に配置された隣接される頂点から各成分データ(sendD)を受け取り、各分割頂点毎に一時成分データ(tmpD)が算出される。その後、数式(6)に基づいて、同一の頂点に由来する分割頂点間でそれぞれが得ている一時成分データを交換し、各分割頂点に対してハブ頂点Yの時刻tの成分データが算出される。
通常頂点の計算は、数式(1)と数式(2)に従う。したがって、ハブ頂点および通常頂点に対するsendDの計算は数式(1)に従う。通常頂点の成分データの計算は数式(2)に従い、ハブ頂点の成分データの計算は数式(3)−(6)に従う。
以上により、ハブ頂点の成分データの計算を、複数のプロセスに分散させることができ、前述の課題を解決できる。
本実施例の計算機上での計算手順の詳細を以下に説明する。図5に本実施例のグラフ処理を行う情報処理システム500の例を示す。情報処理システム500は、1つ以上の計算ノード501−1〜3、ストレージシステム502、および計算ノード501−1〜3とストレージシステム502などを接続するネットワークシステム503を備える。また、計算ノード501−1〜3のそれぞれは、1つ以上の中央処理装置(CPU)505−1〜2を有するプロセッサユニット504、メモリユニット507、通信ユニット506、およびこれらユニット群を接続するバス508を備える。計算ノード501〜3は、例えばサーバ装置である。上述したグラフ処理の各プロセスは1以上のCPUで演算され、各プロセスに対応するメモリ空間は1以上のメモリユニットに確保される。また1つのCPUが複数のプロセスを処理しても良いし、1つのメモリユニットが複数のプロセスのメモリ空間を保持して良い。CPUの代わりにFPGAやGPUなどの演算器が用られても良い。各プロセッサユニット504は、通信ユニット506を経由して、他の計算ノード内のメモリユニットなどのユニット群にアクセスが出来る。同様に、各プロセッサユニット504は、通信ユニット506を経由してストレージシステム502に格納されている情報にアクセスできる。
図6に、図4に示した頂点配置時の各プロセスの処理、各プロセスに割り当てられたメモリ空間(プロセス411に対応するメモリ空間600−1、プロセス412に対応するメモリ空間600−2、およびプロセス413に対応するメモリ空間600−3と、それらへの記憶内容である、頂点接続情報601、分割頂点リスト602、分割頂点接続情報603、成分データリスト604、および送信キュー605)を示す。図6において、頂点接続情報601、分割頂点リスト602、および分割頂点接続情報603のそれぞれの枠内に示されている丸印が記憶されている頂点を示し、丸内の文字が頂点IDを示し、矢印は隣接関係の情報、すなわち、矢印元から矢印先へ隣接することを示す。また成分データリスト604の枠内に記載した四角は、各頂点IDに対応する成分データ(D)を示す。
主成分ベクトルの成分データの計算手順を図7に示す。まず、ステップ700において、頂点配置処理を行う。頂点配置処理では、各プロセスが、ストレージシステム502に格納されている入力グラフにアクセスし、各プロセスに配置される頂点の頂点接続情報を取得する。各プロセスは自身のプロセス識別情報(プロセスID)と頂点IDを比較することで、各プロセスに配置される頂点を知ることができる。これは、例えば、プロセスIDが「1」のプロセスには、数値化した頂点IDを計算ノード数で除算した時の剰余が「1」の頂点が配置され、プロセスIDが「2」のプロセスには、剰余が「2」の頂点が配置され、プロセスIDが「3」のプロセスには、剰余が「3」の頂点が配置されるという手段で実現できる。例えば、プロセス数が16ならば、プロセスID=1に配置される頂点の頂点IDは、{1、17、33、...}である。各プロセスは、各プロセスが取得した頂点接続情報からそれぞれの頂点の次数を算出し、予め設定したハブ次数閾値と比較し、ハブ次数閾値より次数の少ない頂点を通常頂点として各プロセスに対応するメモリ空間に頂点接続情報を配置する。一方で、ハブ次数閾値より次数が多い頂点の場合には、各プロセスは、頂点接続情報601に加え、ハブ頂点として、分割頂点リスト602、分割頂点接続情報603を各プロセスのメモリ空間に配置する。これにより、分割頂点については、少なくとも2つのプロセスのメモリ空間のそれぞれに、同一の分割頂点の情報および該分割頂点に接続されているひとつ以上の頂点を含む頂点群の情報が配置される。このように、情報処理システム500は、分割頂点については、少なくとも2つのプロセスのメモリ空間のそれぞれに、同一の分割頂点の情報および該分割頂点に接続されているひとつ以上の頂点を含む頂点群の情報を配置する手段を有する。
ステップ700の次に、主成分ベクトル計算を複数回行うために、ステップ701−1からステップ701−2の間のステップで繰り返される時間刻みループ処理がある。ループ内には、主に4つの大きな処理があり、4つの処理は、通常頂点処理702、分割頂点処理703、通信処理704、分割頂点同期処理705である。以下、各処理の詳細を説明する。
通常頂点処理702は、通常頂点を対象とした成分データを計算する。図8に通常頂点処理702の計算手順を示す。ここでは、図6に図示したプロセス411に対応するメモリ空間600−1を例に説明する。通常頂点処理では、自プロセス内に配置された全通常頂点に対し800−1から800−2までのループ処理が行われる。図6に図示した例では、頂点接続情報601に格納されている頂点aと頂点bが通常頂点なので処理対象となり,各通常頂点に対して800−1から800−2の間の処理が実行される。そして、ステップ801において、これら通常頂点の成分データを成分データリスト604から取得し、頂点接続情報601から隣接数(頂点bの隣接する頂点は頂点Yだけのため隣接数は1)を取得し、分配する成分データ(sendD)を計算する(数式(1)に該当する)。そして、プロセス411は、これら通常頂点に隣接する頂点情報を頂点接続情報601から取得し、隣接する頂点の各々に対して802−1から802−2までのループ処理を行う。例えば、前述の頂点bの隣接する頂点は頂点Yのため、頂点Yに対して802−1から802−2の間の処理が実施される。
その後、プロセス411は、これら各隣接する頂点が分割頂点かを分頂点リスト602を参照し、ステップ803において判定する。隣接する頂点が分割頂点か否かで、前述したとおり計算式が異なるため、ステップ803において、処理を分岐する。前記判定結果が分割頂点であれば、ステップ807において、ステップ801で計算した分配する成分データを、隣接する頂点の一時成分データに加算する。例えば、頂点bのsendDを分割頂点Y1の一時成分データ(tmpD)に加算する。なお、隣接する頂点が分割頂点の場合の処理は、数式(3)から(5)に該当する。
一方で、判定結果が分割頂点でなければ、プロセス411は、隣接する頂点が他プロセス内に配置されているかをステップ804にて判定する。プロセス411では、隣接する頂点がプロセス411以外に配置されているか否かが判定される。前述の通り、各プロセスは自身のプロセス識別情報(プロセスID)と頂点IDを比較することで、各プロセスに配置される頂点を知ることができるため、隣接する頂点の頂点IDにより判定する。例えば、自プロセスIDが1で、隣接する頂点IDが「20」、プロセス数が16ならば、頂点ID(=20)/プロセス数(=16)の剰余(=4)が隣接する頂点が配置されているプロセスIDを示し、自プロセスIDが「1」のため、隣接する頂点は他プロセスに配置されていると判定できる。判定結果が、プロセス411以外に配置されている場合には、分配する情報である成分データは、隣接する頂点が配置されている他のプロセスに送信されるので、送信キュー605に保存される(ステップ806)。送信キュー605に保存される情報には、成分データの他に、送信先頂点の頂点ID、送信元頂点の頂点IDがある。プロセス411に配置されている場合には、プロセス411の成分データリスト604に分配先の成分データ(D)があるので、分配先の成分データ(D)に、分配する成分データ(sendD)が加算される(ステップ805)。なお、隣接する頂点が通常頂点の場合の処理は、数式(2)に従う。ここで、ステップ803において、ある頂点が分割頂点と通常頂点のどちらであるかを判定するためには、分割頂点リスト602の情報が用いられる。分割頂点リスト602は分割頂点の頂点IDを持つので、各プロセスが分割頂点リスト602を参照することで分割頂点か通常頂点かの判定が行われる。
次に、分割頂点処理703について図9のフロー図を用いて説明する。分割頂点処理703は、計算対象を分割頂点としているが、ステップ900−1、ステップ901、ステップ902−1については、それぞれ通常頂点処理702のステップ800−1、ステップ801、ステップ802−1と同様である。すなわち、ステップ900−1と900−2の間のループ処理は、プロセス411に配置された各分割頂点に対して行われ、ステップ901では、分割頂点が持つ成分データが成分データリスト604から読み出され、頂点接続情報601から読み出されたハブ頂点が隣接する頂点数で除算される。また、ステップ902−1〜902−2のループ処理では、分割頂点の隣接する各頂点に対して処理が実施される。
その後、ステップ903において、配置されている分割頂点に隣接する頂点が分割頂点か否かを判定し、判定結果が分割頂点の場合には、ステップ807と同様に、ステップ901で計算した分配する成分データ(sendD)を、隣接する頂点の一時成分データ(tmpD)に加算する処理が行われ(ステップ905)、判定結果が分割頂点でなければ、ステップ805と同様に、分配先の成分データ(D)に、分配する成分データ(sendD)を加算する処理が行われる。例えば、プロセス411に対応するメモリ空間600−1の例では、分割頂点Z1に隣接する通常頂点k、l、mに対し、分配先の成分データ(D)に、分配する成分データ(sendD)を加算する処理が実施される。ここで、分割頂点処理703には、ステップ806に相当する処理が無いのは、本実施例では、各分割頂点は各分割頂点が配置されているプロセスに配置されている頂点と隣接すると定義しているからである。このようにすることで、各分割頂点が、各分割頂点が配置されているプロセス以外のプロセスに配置されている頂点と隣接すると定義するよりも、プロセス間の通信量を削減できるので、グラフ処理を高速化できる。
そして、通信処理704において、送信キュー605に保存された情報がプロセス間で通信される。図10に、通信処理704のフロー図を示す。
まず、各プロセスは、送信キュー605内に保存された送信先頂点の頂点IDに従って、対応するプロセスに送信キュー605に保存された情報(送信先頂点ID、送信元頂点ID、成分データ)を送信する(ステップ1000)。その後、各プロセスは、送信された情報を受信する(ステップ1001)。そして、各プロセスは、受信した各データに対してループ処理(ステップ1002−1からステップ1002−2まで)を実施する。ループ内では、各データに対して、送信先頂点の頂点IDに従って、対応する通常頂点の成分データ(D)に、受信された成分データ(sendD)が加算される(ステップ1003)。ステップ1003の処理は数式(2)に従う。
続いて、分割頂点同期処理705において、分割頂点の成分データが計算される。すなわち、数式(6)に相当する処理が行われる。ステップ1100およびステップ1101において、各プロセスは、各プロセスにある一時成分データ(tmpD)を、分割頂点接続情報603に従って他プロセスに送信し、他のプロセスから送信された一時成分データ(tmpD)を受信する。これにより、それぞれのプロセスで演算された分割頂点についての演算結果を、プロセス間で共有する。このように、情報処理システム500は、それぞれのプロセスで演算された分割頂点についての演算結果を、プロセス間で共有する手段を有する。ステップ1100およびステップ1101で通信される情報は、送信先の分割頂点の頂点IDおよび一時成分データである。分割頂点接続情報603は、頂点の分割前に同一の頂点であったことを示す情報で、図6の例では、プロセス411に対応するメモリ空間600−1の分割頂点接続情報603は、ハブ頂点Yを分割した他の分割頂点Y2とY3の情報、およびハブ頂点Zを分割した他の分割頂点Z2とZ3の情報を持つ。その後、各プロセスは、受信した各データのループ処理(ステップ1102−1からステップ1102−2まで)を実施する。ループ処理内のステップ1103では、各受信データにおいて、送信先分割頂点の頂点IDに従って、受信された一時成分データが成分データリスト604内の該当する成分データに加算される。
以上の4つの処理によって、通常頂点、分割頂点のそれぞれの成分データを共に計算できる。また、ハブ頂点を各プロセスに分割して並列化した処理を実現できる。これにより、優れた並列スケーラビリティを実現できる。
実施例2では、同一ハブ頂点に対応する分割頂点を、グラフ処理を行っている全プロセスに配置した場合の処理方法の例を説明する。実施例2のグラフ処理方法は分割頂点接続情報603のデータ量を削減する効果を持つ。
図12に、実施例1の図6に相当する、実施例2における各プロセスに割り当てられたメモリ空間の概念図を示す。
実施例2では、同一ハブ頂点に対応する分割頂点が全プロセスに配置されているため、分割頂点同期処理705における接続先のプロセスは必ず全プロセスのため、実施例1における分割頂点同期処理705の内の分割頂点の情報を該当するプロセスへ送信する処理(図11のステップ1100)で実施した分割頂点接続情報603の参照をする必要がない。これにより、図12の分割頂点接続情報121のように接続先の情報を保持する必要がなく、実施例2のグラフ処理方法はデータ量を削減する効果を持つ。
実施例3では、通常頂点と分割頂点の判定のため、頂点IDに分割頂点の識別子を包含させる実施例1の変形例である。頂点IDが64ビットである場合、最上位ビットである64ビット目に分割頂点の識別子を準備し、分割頂点ならば該識別子を「1」、それ以外ならば「0」とする。このとき、頂点IDは62−0ビットの63ビットとなる。これにより、通常頂点と分割頂点の判定は、頂点IDの最上位ビットを確認するだけで可能となる。
実施例4では、分割頂点同期処理において、プロセス間の一時成分データの通信を、全プロセス対全プロセスでなく、デイジーチェーンによる通信で実現する処理方法の例を説明する。実施例4のグラフ処理方法は、分割頂点同期処理705における一時成分データのプロセス間の送信と受信(ステップ1100と1101に相当する)による通信回数を削減する効果を持つ。
図13に、実施例1のグラフ処理方法の、分割頂点同期処理703における通信パタンを示す。ここで、図13は例として、ハブ頂点Yを分割頂点Y1からY4として記し、4つのプロセス(1301から1304)に配置されている場合を記載している。図13において、分割頂点同期処理703の通信は、分割頂点Y1から分割頂点Y2と、分割頂点Y2から分割頂点Y1への通信(1300−1の通信)、分割頂点Y2から分割頂点Y3と、分割頂点Y3から分割頂点Y2への通信(1300−2の通信)、分割頂点Y3から分割頂点Y4と、分割頂点Y4から分割頂点Y3への通信(1300−3の通信)、分割頂点Y1から分割頂点Y3と、分割頂点Y3から分割頂点Y1への通信(1300−4の通信)、分割頂点Y2から分割頂点Y4と、分割頂点Y4から分割頂点Y2への通信(1300−5の通信)、分割頂点Y1から分割頂点Y4と、分割頂点Y4から分割頂点Y1への通信(1300−6の通信)の計12回の通信が行われる。
一方で、実施例4の分割頂点同期処理の通信パタンを図14に示す。図14では分割頂点Y1から分割頂点Y2と、分割頂点Y2から分割頂点Y1への通信(1400−1の通信)、分割頂点Y2から分割頂点Y3と、分割頂点Y3から分割頂点Y2への通信(1400−2の通信)、分割頂点Y3から分割頂点Y4と、分割頂点Y4から分割頂点Y3への通信(1400−3の通信)の計6回の通信に削減されている。このとき、各プロセスは、各分割頂点について、一時成分データを受信した時に、既に自身の有する分割頂点の一時成分データを受信した一時成分データに加算済みか否かを判定し、加算していなければ加算して、他プロセスに加算後の一時成分データを送信し、否ならば一時成分データを、成分データとして成分データリスト604に保存し、該成分データを他プロセスに送信する。図14では例えば、分割頂点Y1から同Y2へ一時成分データを送信して、Y2は受信した一時成分データとY2の一時成分データを和算しY3へ送信する。その後、同様にY3からY4へ送信する。そして次に、Y4が最後の分割頂点であるから、一時成分データを成分データとしてプロセス1304の成分データリスト604に保存する。その後、Y4からY3へ成分データを送信し、Y3はすでに一時成分データを加算済みのため、受信した成分データを自プロセス1303の成分データリスト604に保存する。同様にY3からY2へ、Y2からY1へ行う。このように、デイジーチェーンのように各プロセスを一通り通ることで、分割頂点同期処理を実行できる。以上から、実施例4は通信回数を削減する効果を持つ。
411〜413:プロセス、500:情報処理システム、501−1〜3:計算ノード、502:ストレージシステム、503:ネットワークシステム、504:プロセッサユニット、505−1〜2:CPU、506:通信ユニット、507:メモリユニット、508:バス、600−1〜3:メモリ空間、601:頂点接続情報、602:分割頂点リスト、603:分割頂点接続情報、604:成分データ、605:送信キュー。
Claims (10)
- それぞれにメモリ空間が割当てられている複数のプロセスを実行する情報処理システムでのグラフ処理方法であって、
第1プロセスに割当てられている第1メモリ空間に第1グラフ頂点の情報および前記第1グラフ頂点に接続されている第1グラフ頂点群の情報を配置し、
第2プロセスに割当てられている第2メモリ空間に前記第1グラフ頂点の情報および前記第1グラフ頂点に接続されている第2グラフ頂点群の情報を配置し、
前記第1プロセスでの前記第1グラフ頂点についての演算結果と、前記第2プロセスでの前記第1グラフ頂点の演算結果とを、前記第1プロセスと前記第2プロセスが共有することを特徴とするグラフ処理方法。 - 請求項1に記載のグラフ処理方法において、
前記第1プロセスは、前記第1グラフ頂点群の情報に基づいて前記第1グラフ頂点についての演算を行い、
前記第2プロセスは、前記第2グラフ頂点群の情報に基づいて前記第1グラフ頂点についての演算を行うことを特徴とするグラフ処理方法。 - 請求項1に記載のグラフ処理方法において、
前記複数のプロセスの全てに、前記第1グラフ頂点の情報が配置されていることを特徴とするグラフ処理方法。 - 請求項1に記載のグラフ処理方法において、
前記第1グラフ頂点は、ハブ頂点であることを特徴とするグラフ処理方法。 - 請求項4に記載のグラフ処理方法において、
前記第1グラフ頂点群には、通常頂点が含まれることを特徴とするグラフ処理方法。 - 請求項1に記載のグラフ処理方法において、
前記グラフ処理は、ランダムウォークによる主成分ベクトルの計算であることを特徴とするグラフ処理方法。 - それぞれにメモリ空間が割当てられている複数のプロセスを実行する情報処理システムであって、
第1プロセスに割当てられている第1メモリ空間に第1グラフ頂点の情報および前記第1グラフ頂点に接続されている第1グラフ頂点群の情報を配置し、第2プロセスに割当てられている第2メモリ空間に前記第1グラフ頂点の情報および前記第1グラフ頂点に接続されている第2グラフ頂点群の情報を配置する手段と、
前記第1プロセスでの前記第1グラフ頂点についての演算結果と、前記第2プロセスでの前記第1グラフ頂点の演算結果とを、前記第1プロセスと前記第2プロセスが共有する手段とを有することを特徴とする情報処理システム。 - 請求項7に記載の情報処理システムにおいて、
前記第1プロセスは、前記第1グラフ頂点群の情報に基づいて前記第1グラフ頂点についての演算を行い、
前記第2プロセスは、前記第2グラフ頂点群の情報に基づいて前記第1グラフ頂点についての演算を行うことを特徴とする情報処理システム。 - 請求項7に記載の情報処理システムにおいて、
前記第1グラフ頂点は、ハブ頂点であることを特徴とする情報処理システム。 - 請求項9に記載の情報処理システムにおいて、
前記第1グラフ頂点群には、通常頂点が含まれることを特徴とする情報処理システム。
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
PCT/JP2012/067422 WO2014010007A1 (ja) | 2012-07-09 | 2012-07-09 | 情報処理システムおよびグラフ処理方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
JPWO2014010007A1 true JPWO2014010007A1 (ja) | 2016-06-20 |
Family
ID=49915510
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2014524503A Ceased JPWO2014010007A1 (ja) | 2012-07-09 | 2012-07-09 | 情報処理システムおよびグラフ処理方法 |
Country Status (4)
Country | Link |
---|---|
US (1) | US20150324323A1 (ja) |
EP (1) | EP2871581A4 (ja) |
JP (1) | JPWO2014010007A1 (ja) |
WO (1) | WO2014010007A1 (ja) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP5969130B2 (ja) * | 2013-07-18 | 2016-08-17 | 株式会社日立製作所 | 情報処理装置 |
JP6196886B2 (ja) * | 2013-11-15 | 2017-09-13 | オリンパス株式会社 | 演算装置 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPS63118877A (ja) * | 1986-11-06 | 1988-05-23 | Hitachi Ltd | ル−ト探索方法および装置 |
JP2009258794A (ja) * | 2008-04-11 | 2009-11-05 | Fujitsu Ltd | 情報検索プログラム、情報検索装置、および情報検索方法 |
JP2011090352A (ja) * | 2009-10-20 | 2011-05-06 | Yahoo Japan Corp | 検索データ管理装置 |
Family Cites Families (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP4369791B2 (ja) | 2003-04-18 | 2009-11-25 | マイクロソフト コーポレーション | 有向スケールフリーオブジェクト関係のモデリング |
US8200596B2 (en) | 2009-05-28 | 2012-06-12 | Reid Andersen | Speeding up analysis of compressed web graphs using virtual nodes |
KR101805619B1 (ko) * | 2011-01-25 | 2017-12-07 | 삼성전자주식회사 | 3차원 의료 영상으로부터 최적의 2차원 의료 영상을 자동으로 생성하는 방법 및 장치 |
-
2012
- 2012-07-09 WO PCT/JP2012/067422 patent/WO2014010007A1/ja active Application Filing
- 2012-07-09 US US14/410,231 patent/US20150324323A1/en not_active Abandoned
- 2012-07-09 EP EP12881055.3A patent/EP2871581A4/en not_active Withdrawn
- 2012-07-09 JP JP2014524503A patent/JPWO2014010007A1/ja not_active Ceased
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPS63118877A (ja) * | 1986-11-06 | 1988-05-23 | Hitachi Ltd | ル−ト探索方法および装置 |
JP2009258794A (ja) * | 2008-04-11 | 2009-11-05 | Fujitsu Ltd | 情報検索プログラム、情報検索装置、および情報検索方法 |
JP2011090352A (ja) * | 2009-10-20 | 2011-05-06 | Yahoo Japan Corp | 検索データ管理装置 |
Non-Patent Citations (6)
Title |
---|
JOSEPH F. GRCAR: "Matrix STRETCHING for Linear Equations", [ONLINE], JPN6016013661, 11 March 2012 (2012-03-11), US, pages 3 - 68, ISSN: 0003296425 * |
山本 貴之 他: "「非構造化Peer−to−Peerネットワークにおける複数の動的エージェントを用いた管理領域の分割に", 電子情報通信学会技術研究報告 VOL.111 NO.232, vol. 第111巻, JPN6012056089, 6 October 2011 (2011-10-06), JP, pages 39 - 44, ISSN: 0003160870 * |
木村 洋輔 他: "「距離画像からの姿勢変動にロバストな人物検出と追跡」", 映像情報メディア学会技術報告 VOL.35 NO.33, vol. 第35巻, JPN6012056093, 22 August 2011 (2011-08-22), JP, pages 5 - 8, ISSN: 0003160872 * |
熊野 達夫 他: "「地理データに対する領域隣接グラフを利用した領域管理手法」", 電子情報通信学会論文誌(J90−D)第2号, vol. 第J90-D巻, JPN6012056086, 1 February 2007 (2007-02-01), JP, pages 586 - 591, ISSN: 0003160869 * |
酒井 理江 他: "「Linked Dataから潜在的な関係を探すためのクエリグラフパターン最適化」", 情報処理学会論文誌 論文誌ジャーナル, vol. 51, no. 12, JPN6012034074, 15 December 2010 (2010-12-15), JP, pages 2298 - 2309, ISSN: 0003160868 * |
齋藤 良平 他: "「低レベルPC操作ログからの業務パターン抽出手法の提案」", 電子情報通信学会技術研究報告 VOL.111 NO.310, vol. 第111巻, JPN6012056092, 14 November 2011 (2011-11-14), JP, pages 13 - 18, ISSN: 0003160871 * |
Also Published As
Publication number | Publication date |
---|---|
EP2871581A4 (en) | 2016-01-13 |
WO2014010007A1 (ja) | 2014-01-16 |
US20150324323A1 (en) | 2015-11-12 |
EP2871581A1 (en) | 2015-05-13 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
Kas et al. | Incremental closeness centrality for dynamically changing social networks | |
Cerinšek et al. | Generalized two-mode cores | |
CN111400555B (zh) | 图数据查询任务处理方法、装置、计算机设备和存储介质 | |
Kim et al. | Prediction based sub-task offloading in mobile edge computing | |
Peng et al. | A fast algorithm to find all-pairs shortest paths in complex networks | |
CN113190719B (zh) | 节点分组方法、装置及电子设备 | |
Srinivasan et al. | A shared-memory parallel algorithm for updating single-source shortest paths in large dynamic networks | |
Mirsadeghi et al. | Exploiting common neighborhoods to optimize MPI neighborhood collectives | |
Sattar et al. | Parallelizing louvain algorithm: Distributed memory challenges | |
Pearce et al. | One quadrillion triangles queried on one million processors | |
Bhuiyan et al. | Fast parallel algorithms for edge-switching to achieve a target visit rate in heterogeneous graphs | |
WO2014010007A1 (ja) | 情報処理システムおよびグラフ処理方法 | |
Zheng et al. | Towards a distributed local-search approach for partitioning large-scale social networks | |
Hajela et al. | Parallel implementations for solving shortest path problem using Bellman-Ford | |
Alam et al. | GPU-based parallel algorithm for generating massive scale-free networks using the preferential attachment model | |
Bochenina et al. | Scalable parallel simulation of dynamical processes on large stochastic Kronecker graphs | |
Weinbub et al. | Domain decomposition strategies for the two-dimensional Wigner Monte Carlo method | |
Santos et al. | Effectively handling new relationship formations in closeness centrality analysis of social networks using anytime anywhere methodology | |
Wang et al. | On runtime adaptive tile defragmentation for resource management in many-core systems | |
Abdelwahab et al. | BIRD-VNE: Backtrack-avoidance virtual network embedding in polynomial time | |
Zheng et al. | Path Merging Based Betweenness Centrality Algorithm in Delay Tolerant Networks | |
Abubaker et al. | Scaling stratified stochastic gradient descent for distributed matrix completion | |
Song et al. | Nslpa: A node similarity based label propagation algorithm for real-time community detection | |
Kim et al. | Thanos: High-performance cpu-gpu based balanced graph partitioning using cross-decomposition | |
Perozzi et al. | Scalable graph clustering with pregel |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 Effective date: 20160412 |
|
A045 | Written measure of dismissal of application [lapsed due to lack of payment] |
Free format text: JAPANESE INTERMEDIATE CODE: A045 Effective date: 20160830 |