JP2017117449A - ベクトル推定に基づくグラフ分割を伴う、コンピューティング装置のデータフロープログラミング - Google Patents

ベクトル推定に基づくグラフ分割を伴う、コンピューティング装置のデータフロープログラミング Download PDF

Info

Publication number
JP2017117449A
JP2017117449A JP2016235001A JP2016235001A JP2017117449A JP 2017117449 A JP2017117449 A JP 2017117449A JP 2016235001 A JP2016235001 A JP 2016235001A JP 2016235001 A JP2016235001 A JP 2016235001A JP 2017117449 A JP2017117449 A JP 2017117449A
Authority
JP
Japan
Prior art keywords
graph
data flow
clustering
nodes
computing device
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.)
Granted
Application number
JP2016235001A
Other languages
English (en)
Other versions
JP6382284B2 (ja
Inventor
ジェイ. サン ローレンス
J Sun Lawrence
ジェイ. サン ローレンス
アール. トヴィンケレ ヴァサント
R Tovinkere Vasanth
アール. トヴィンケレ ヴァサント
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Intel Corp
Original Assignee
Intel Corp
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Intel Corp filed Critical Intel Corp
Publication of JP2017117449A publication Critical patent/JP2017117449A/ja
Application granted granted Critical
Publication of JP6382284B2 publication Critical patent/JP6382284B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/30Creation or generation of source code
    • G06F8/34Graphical or visual programming
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/362Software debugging
    • G06F11/3636Software debugging by tracing the execution of the program
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/34Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment
    • G06F11/3452Performance evaluation by statistical analysis
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/3668Software testing
    • G06F11/3672Test management
    • G06F11/3692Test management for test results analysis
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/76Architectures of general purpose stored program computers
    • G06F15/82Architectures of general purpose stored program computers data or demand driven
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F17/00Digital computing or data processing equipment or methods, specially adapted for specific functions
    • G06F17/10Complex mathematical operations
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/30Creation or generation of source code
    • G06F8/31Programming languages or programming paradigms
    • G06F8/313Logic programming, e.g. PROLOG programming language

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • Computer Hardware Design (AREA)
  • Quality & Reliability (AREA)
  • Computing Systems (AREA)
  • Data Mining & Analysis (AREA)
  • Mathematical Physics (AREA)
  • Mathematical Analysis (AREA)
  • Databases & Information Systems (AREA)
  • Pure & Applied Mathematics (AREA)
  • Mathematical Optimization (AREA)
  • Computational Mathematics (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • Bioinformatics & Cheminformatics (AREA)
  • Bioinformatics & Computational Biology (AREA)
  • Evolutionary Biology (AREA)
  • Probability & Statistics with Applications (AREA)
  • Algebra (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Debugging And Monitoring (AREA)

Abstract

【課題】データフロープログラミングに関連付けられた装置及び方法を提供する。【解決手段】グラフ分割システム(GPS)のスペクトルグラフパーティショナ(SP)は、データフローグラフを、解析又はデバッグを実行するために使用される複数のサブグラフに分割する。SPは、ベクトルの関数の最小化によって、グラフを表現する行列の推定固有ベクトルを生成する。SPは、複数の固有ベクトルを生成して、固有ベクトルによって記述される複数次元空間でクラスタリングを実行する。SPは、固有ベクトルの生成を繰り返してクラスタリングを精緻化し、より高次元の空間を記述し、さらなるクラスタリングを実行する。SPはまた、クラスタについての品質メトリクスを決定し、品質メトリクスに基づいて精緻化を停止する。GPSは、グラフサイズ又は品質メトリクス等のファクタに基づいて、SPを使用するか1以上の他のパーティショナを使用するかを選択する。【選択図】図1

Description

本開示は、データ処理の分野に関し、詳細には、コンピューティング装置をプログラムするためのプログラムに関連付けられた大規模データフローグラフの自動分割を含む、コンピューティング装置のデータフロープログラミングに関連付けられた装置、方法、及び記憶媒体に関する。
本明細書で提供される背景技術は、本開示のコンテキストを一般的に提示することを目的とする。本明細書中に別途示されていない限り、このセクションに記載される情報は、本出願における請求項に対する先行技術ではなく、このセクションに含まれることにより先行技術であると認められるものではない。
データフロープログラミングのパラダイムにおいて、自動処理が、データフローグラフの形で記述され得る。データフロープログラムの性能解析を行うために、関連付けられたデータフローグラフは、個々に解析することができるより小さい独立したサブグラフに分割され得る。このような分割は、グラフの異なるパーティションが異なる性能特性を有する可能性があり、したがって、異なる性能ソリューションから恩恵を受ける可能性があるため、望ましいであろう。しかしながら、最適なグラフ分割を決定することは、通常、特にグラフサイズが増加するにつれて、効率的な計算をできなくする複雑なプロセスである。多くの典型的なグラフ分割プロセスは、大きなグラフサイズにうまく適合しない。
実施形態は、添付図面及び以下の詳細な説明によって容易に理解されるであろう。本説明を円滑にするために、同様の参照番号は、同様の構成要素を示す。実施形態は、限定ではなく例として、添付図面に示される。
さまざまな実施形態に従った、スペクトルグラフパーティショナを含むグラフ分割システムの例示的なコンポーネント及び情報フローを示す図。 さまざまな実施形態に従った、グラフを分割するグラフ分割システムの例示的なプロセスを示す図。 さまざまな実施形態に従った、グラフのスペクトル分割を実行するスペクトルグラフパーティショナの例示的なプロセスを示す図。 さまざまな実施形態に従った、グラフについての固有ベクトルを推定する例示的なプロセスを示す図。 さまざまな実施形態に従った、本開示のさまざまな態様を実施するのに適した例示的なコンピューティング環境を示す図。 さまざまな実施形態に従った、装置が本開示のさまざまな態様を実施することを可能にするよう構成された命令を有する例示的な記憶媒体を示す図。
以下の詳細な説明において、本明細書の一部を形成する添付図面を参照する。添付図面において、同様の参照番号は、全体を通して同様の部分を示し、実施することができる例示的な実施形態が示される。他の実施形態を使用することができ、構造的な変更又は論理的な変更を、本開示の範囲から逸脱することなく行うことができることを理解されたい。したがって、以下の詳細な説明は、限定的に解釈されるべきではなく、実施形態の範囲は、請求項及びその均等の構成によって定められる。
特許請求される主題を理解する上で最も役に立つ形で、さまざまな動作が、複数の別個のアクション又は動作として順番に説明され得る。しかしながら、説明の順番は、これらの動作が必ず順番に依存することを意味すると解釈されるべきではない。詳細には、これらの動作は、提示される順番で実行されないことがある。説明する動作は、説明する実施形態とは異なる順番で実行されることがある。さまざまなさらなる動作が実行されることもあるし、且つ/あるいは、説明する動作が、さらなる実施形態では省略されることもある。
本開示のために、「A及び/又はB」という語句は、(A)、(B)又は(A及びB)を意味する。本開示のために、「A、B、及び/又はC」という語句は、(A)、(B)、(C)、(A及びB)、(A及びC)、(B及びC)、又は(A、B、及びC)を意味する。
本説明では、「一実施形態において」又は「実施形態において」という語句が使用され得る。これらの語句の各々は、同じ実施形態又は異なる実施形態のうちの1以上を指すことがある。さらに、本開示の実施形態に対して使用される、「備える」、「含む」、「有する」等といった用語は、同義語である。
本明細書で使用される場合、「ロジック」及び「モジュール」という用語は、1以上のソフトウェアプログラム又はファームウェアプログラムを実行する特定用途向け集積回路(ASIC)、電子回路、プロセッサ(共用、専用、又はグループ)及び/若しくはメモリ(共用、専用、又はグループ)、組合せロジック回路、並びに/又は、説明する機能を提供する他の適切なコンポーネントを指すこともあるし、これらの一部であることもあるし、又は、これらを含むこともある。本明細書で説明するように、「ロジック」及び「モジュール」という用語は、以下で説明するように、システムオンチップを指すこともあるし、システムオンチップの一部であることもあるし、又は、システムオンチップを含むこともある。
さまざまな実施形態において、グラフ分割システム(「GPS」)のスペクトルグラフパーティショナ(「SP」)は、コンピューティング装置を複数のサブグラフにプログラムするためのプログラムに関連付けられたデータフローグラフの推定に基づく分割を実行するよう構成され得る。サブグラフを使用して、プログラムの解析又はデバッグを実行することができる。プログラムの解析又はデバッグの実行後、このプログラムを使用して、タスクを実行するようにコンピューティング装置をプログラムすることができる。SPを動作させるためのコンピューティング装置及びプログラムされるコンピューティング装置は、同じコンピューティング装置であってもよいし異なるコンピューティング装置であってもよい。このような1以上のコンピューティング装置は、コンピューティングタブレット、ラップトップ、デスクトップ、又はサーバを含む、当分野で既知の任意のコンピューティング装置であってよいが、これらに限定されるものではない。タスクは、システムサービスタスクからアプリケーションタスクまで、当分野で既知の任意のタスクであってよい。
SPは、データフローグラフ(以下、単に「グラフ」とする)を複数のノードクラスタに分割して、対応するサブグラフを形成するために使用する1以上のベクトルを推定するよう構成され得る。SPは、グラフを表現するラプラシアン行列の推定固有ベクトルを生成するよう構成され得る。SPは、
Figure 2017117449
によって表される関数を最小化するによって、ベクトルvとして推定固有ベクトルを生成するよう構成され得る。さまざまな実施形態において、SPは、関数fの最小化の間、ベクトルvのランダム座標を0に設定するよう構成され得る。固有ベクトルの推定後、0に設定された座標は、近傍座標の平均値に再設定され得る。
さまざまな実施形態において、SPは、グラフのノードを複数のクラスタにクラスタリングする際に、したがって、グラフを複数のサブグラフに分割する際に使用するための複数の推定固有ベクトルを生成するよう構成され得る。SPは、推定固有ベクトルによって記述される複数次元空間におけるk平均クラスタリングを使用してクラスタリングを実行するよう構成され得る。さまざまな実施形態において、SPはまた、さらなるクラスタリングが実行される場合がある、より高次元の空間を記述するために推定固有ベクトルの生成を繰り返すことによってクラスタリングを精緻化するよう構成され得る。SPはまた、クラスタについての品質メトリクスを決定し、品質メトリクスに基づいてクラスタリングの精緻化を停止するよう構成され得る。さまざまな実施形態において、GPSはまた、SPによって生成されたパーティションを使用するか又は分割のために1以上の他のパーティショナを使用するかを選択するよう構成され得る。例えば、GPSは、SPの代わりにグラフの1以上のパーティションをレポートするためにエッジ中心性パーティショナ(edge-centrality partitioner)を使用することができる。GPSは、例えば、SPによって生成された1以上のクラスタリングについてSPによって決定された品質メトリクス又はグラフサイズ等のさまざまなファクタに基づいて、SPと他のパーティショナとの間で選択することができる。
図1を参照すると、さまざまな実施形態に従った、SP150を含むGPS100のコンポーネント及び情報フローが示されている。特定のコンポーネントが図示されているが、さまざまな実施形態において、GPS100及び/又はSP150は、他のコンポーネントを含むこともあるし、且つ/あるいは、図1に示される1以上のコンポーネントを省略することもあることに留意されたい。さまざまな実施形態において、図示されるコンポーネントは、ハードウェア及び/又はソフトウェアにより実装され得、以下で説明するように、さまざまなフォームファクタのコンピューティングデバイス上で動作するよう構成され得る。
さまざまな実施形態において、GPS100は、図示される例示的なグラフ105等の、コンピューティング装置をプログラムするためのプログラムに関連付けられたグラフを受信し、解析し、サブグラフ195及び196として図1に示される複数のサブグラフに分割し、プログラムの解析及び/又はデバッグを容易にすることができる。グラフ105が、2つのサブグラフに分割されるものとして図示されているが、これは、例示のためであり、さまざまな実施形態において、パーティションは、さまざまな数のサブグラフを含んでもよいことに留意されたい。
さまざまな実施形態において、グラフ105は、さまざまなノードnとして図1に示される1以上の頂点又はノードを含み得る。グラフ105はまた、エッジeとして図1に示される、ノードを連結する1以上のエッジを含み得る。さまざまな実施形態において、GPS100、特に、SP150は、クラスタを連結するエッジの数が、最小化されないとしても、低減されるように、グラフ105のノードを複数のクラスタにクラスタリングするよう構成され得る。さまざまな実施形態において、グラフ105は、理解されるように、さまざまな形でGPS100に提供され得る。また、図示されるグラフ105は、8個のノードおよび11個のエッジのみを含むが、さまざまな実施形態において、グラフ105は、手動でグラフを効率的に分割する人間の能力をはるかに超える、数百又は数千のノード及び/又はエッジを含む、さらに大規模なものであり得ることが認識されよう。一般に、100個以上のノード及び/又はエッジを含むグラフは、人間が手動で効率的に分割することが困難である。
さまざまな実施形態において、SP150は、グラフ105に対してスペクトル分割を実行するためのさまざまなコンポーネントを含み得る。例えば、SP150は、ベクトル推定部110(「VE110」)を含み得る。VE110は、グラフ105の分割を補助することができる、推定固有ベクトル等の1以上の推定ベクトルを生成するよう構成され得る。さまざまな実施形態において、推定固有ベクトルは、理解されるように、グラフ105を記述するラプラシアン行列の推定固有ベクトルであり得る。固有ベクトル及びラプラシアン行列の具体的な説明は、以下で見出すことができる。さまざまな実施形態において、VE110は、ベクトルに基づいて評価関数を最小にする値を有する当該ベクトルを決定することによって固有ベクトル推定を実行するよう構成され得る。さまざまな実施形態において、VE110は、クラスタリングのために使用する複数の推定固有ベクトルを生成するよう構成され得る。VE110はまた、以下で説明するように、クラスタリングをより多くのサブグラフに精緻化するために、さらなる推定固有ベクトルを生成するよう構成され得る。
さまざまな実施形態において、SP150はまた、クラスタ決定部120(「CD120」)を含み得る。さまざまな実施形態において、CD120は、VE110によって生成された推定固有ベクトルに基づいて、グラフ105のノードを複数のクラスタにクラスタリングするよう構成され得る。さまざまな実施形態において、CD120は、生成された推定固有ベクトルによって記述される複数次元空間内の点として、グラフ105のノードを表現するよう構成され得る。さまざまな実施形態において、CD120は、理解されるように、k平均クラスタリングを実行して、複数次元空間においてグラフ105のノードをクラスタリングするよう構成され得る。他の実施形態において、CD120は、理解されるように、グラフのノードをクラスタリングするために他のプロセスを実行してもよい。
さまざまな実施形態において、SP150は、品質メトリクス決定部130(「QM130」)を含み得る。QM130は、CD120によって決定されたクラスタリングについての1以上の品質メトリクスを決定するよう構成され得る。さまざまな実施形態において、品質メトリクスは、本明細書で説明するように、モジュール性メトリクス(modularity metrics)及び/又はクラスタパス長メトリクス(cluster path length metrics)を含み得る。さまざまな実施形態において、他の品質メトリクスは、QM130によって決定され得る。さまざまな実施形態において、SP150は、精緻化制御部140(「RC140」)を含み得る。RC140は、より高品質のパーティションを決定するために、より多くの数の推定固有ベクトル及び/又はより多くの数のクラスタに対して、VE110による推定固有ベクトル推定とCD120によるクラスタ決定とを繰り返すようにSP150を制御するよう構成され得る。さまざまな実施形態において、RC140は、QM130によって決定された品質メトリクスに基づいて、ベクトル推定及びクラスタ決定を制御するよう構成され得る。例えば、RC140は、品質メトリクスが増加し続けている間は、ベクトル及びクラスタの数を増加させるよう構成され得る。品質メトリクスが増加しなくなる(あるいは、1以上の閾値を超えて増加しなくなる)と、RC140は、SP150及びSP150のコンポーネントによるさらなる分割を中止させることができる。
さまざまな実施形態において、GPS100は、分割の制御に加えてパーティションのレポートのために使用することができるコンポーネントを含み得る。さまざまな実施形態において、GPS100は、パーティショナセレクタ160(「PS160」)を含み得る。PS160は、SP150を使用して分割するか、又は、エッジ中心性パーティショナ180(「ECP180」)等の1以上の他の分割コンポーネントを使用して分割するか、を選択するよう構成され得る。さまざまな実施形態において、PS160は、例えば、グラフのサイズ又は複雑度等の、グラフ105の1以上の品質に基づいて、パーティショナの間で選択するよう構成され得る。他の実施形態において、PS160は、SP150によって提供されたクラスタリングについてのレビュー品質メトリクスを選択し、そのクラスタリングが、GPS100からの結果としてレポートするのに十分な品質であるかどうかを判定するよう構成され得る。クラスタリングが、十分な品質ではない場合、PS160は、ECP180又は他のグラフパーティショナを使用して、グラフ105の分割を実行することができる。
さまざまな実施形態において、ECP180は、1以上のエッジ中心性分割プロセスを実行することができる。さまざまな実施形態において、エッジ中心性グラフ分割プロセスは、エッジ中心性を計算し、より大きな中心性値を有するエッジを削除することができる。このプロセスは、グラフ105が切断されるようになるまで続けられ得、クラスタ品質メトリクスが、最近のエッジ削除がより良いクラスタ品質メトリクスをもたらしたかどうかを確認するために計算され得る。品質が改善した場合、このプロセスは、十分なパーティションが作成されるまで続けられ得る。品質が劣化した場合、削除されたエッジが、グラフに再び追加され得る。さまざまな実施形態において、ECP180によって実行される技術は、SP150の品質メトリクスよりも優れた品質メトリックを提供することができる。しかしながら、さまざまな実施形態において、ECP180は、所与のサイズのグラフに対しては、SP150よりも遅くその分割を実行し得る。この効率の差は、入力グラフのサイズが大きくなるにつれて急速に大きくなり得る。
GPS100はまた、レポータ190を含み得る。レポータ190は、プログラムの解析又はデバッグのために、SP150又は他のパーティショナによって実行された分割の結果をレポートするよう構成され得る。さまざまな実施形態において、レポータ190は、例えば、サブグラフ195及び196を記述するノードのアイデンティフィケーション(ID、識別情報)といったさまざまな形の結果を提供するよう構成され得る。さまざまな実施形態において、レポータは、アナライザ又はデバッガ(図示せず)による後続のアクセスのためのデータ構造の形で記憶デバイスに、且つ/又は、テキストレポート(図示せず)等を介してユーザに、分割結果を直接レポートするよう構成され得る。サブグラフ195及び196をレポートするための他の技術も理解されよう。
図2を参照すると、GPS100がグラフを分割する例示的なプロセス200が、さまざまな実施形態により示されている。図2は、特定の動作を特定の順番で示しているが、さまざまな実施形態において、動作は、組み合わされることもあるし、部分に分割されることもあるし、且つ/あるいは、省略されることもある。さまざまな実施形態において、GPS100は、図2のプロセスを実行して、入力グラフを分割することに加えて分割自体を実行するために、どのパーティショナを使用するかを選択することができる。
プロセス200は、決定動作210で開始することができ、決定動作210において、GPS100は、分割するためのグラフ105を受信することができる。さまざまな実施形態において、グラフ105は、1以上のノード及びノードを連結する1以上のエッジのインジケーション又はレコードを含み得る。さまざまな実施形態において、グラフ105は、有向グラフ又は無向グラフであり得、エッジ重みを含むこともあるし含まないこともある。さまざまな実施形態において、GPS100は、有向グラフを無向グラフに変換するよう構成され得る。次いで、判定動作215において、PS160は、ECP180によって実行されるような非推定分割技術(non-estimated partitioning technique)を、望ましくない処理時間を招くことなく実行することができるほど、グラフのサイズが十分に小さいかどうかを判定することができる。例えば、PS160は、グラフのサイズが100ノード未満である場合、分割のためにECP180を選択することができる。さまざまな実施形態において、グラフが十分に小さい場合、プロセス200は、次いで動作250に進み、動作250において、ECP180は、グラフ105をサブグラフ(例えば、サブグラフ195及び196)に分割するためにエッジ中心性プロセスを実行することができる。次いで、プロセス200は、動作260に進み、動作260において、サブグラフは、GPS100によってレポートされ得る。他の実施形態において、PS160は、グラフのサイズを解析する代わりに又はグラフのサイズを解析することに加えて、グラフ連結性(graph connectedness)又は他のグラフメトリクス等の、グラフ105の他の品質を解析するよう構成されてもよいことに留意されたい。
一方、判定動作215において、グラフ105が、非推定分割するには大きすぎるとPS160が判定した場合(又は、推定分割が何らかの他の理由により適用可能であるとPS160が判定した場合)、動作220において、SP150は、グラフ105に対して推定スペクトル分割を実行して、グラフ105におけるノードの1以上のクラスタリングを決定することができる。動作220のプロセスの特定の実施形態は、図3のプロセス300を参照して以下で説明され得る。
次いで、動作230において、QM130は、クラスタリングについての品質メトリクスを決定することができる。いくつかの実施形態において、品質メトリクスは、SP150がグラフ105を分割する過程でQM130によって決定され得る。他の実施形態において、品質メトリクスは、SP150がグラフ105を分割した後、SP150によって生成された1以上のパーティションについて決定され得る。さまざまな実施形態において、GPS100は、そのような決定のために、QM130以外の品質メトリクス決定部を含み得る。
さまざまな実施形態において、品質メトリクスは、連結性、コンパクト性、又は他の特性等の、グラフ105内の現在のクラスタリングの特性を示すさまざまなメトリクスを含み得る。例えば、動作230でのさまざまな実施形態において、QM130は、クラスタリングについてのモジュール性メトリクスQを計算することができる。QM130は、以下に示される式(1)を使用してモジュール性メトリクスQを計算することができる。Qを計算するために、QM130は、k×k行列eを構築することができ、ここで、kは、グラフ105内で見出されたパーティション又はクラスタの数である。eの各要素eijは、クラスタi内のノードをクラスタj内の頂点に連結する、グラフ105内の全てのエッジの割合(fraction)とすることができる。行列eの値は、元のグラフ105に基づいて決定され得る。行合計
Figure 2017117449
は、
Figure 2017117449
として定義することができ、クラスタi内のノードに連結するエッジの割合を表す。式(1)に示されるように、モジュール性尺度Qは、行列eのトレースから行列eの要素の合計を減算した値とすることができる。Qの値が0に近いことは、クラスタ内のエッジの数が、頂点間のランダム連結をもって予期されるよりも良くないことを示し得、したがって、クラスタリングが不充分であることを示し得る。Qの値が最大値である1に近いことは、良いクラスタリングを示し得る。
Figure 2017117449
いくつかの実施形態において、動作230において、QM130は、クラスタリングについての修正されたクラスタパス長メトリクスを計算することができる。QM130によって計算される修正されたクラスタパス長メトリクスは、モジュール性メトリクスQと比較して、大規模グラフに対する妥当なクラスタの数及びサイズで、且つ類似するクラスタリングに対するピークで最大化することができる。モジュール性メトリクスQと同様に、修正されたクラスタパス長の値が大きいほど、クラスタリングがより良いことを示し得る。式(2)に示されるように、修正されたクラスタパス長Mは、プラス成分Mからマイナス成分Mの4倍を減算した値とすることができる。
M=M−4M (2)
プラス成分Mは、式(3)に示されるように計算され得る。式(3)の項nは、クラスタi内のノードの数を表し、項nは、グラフ105内のノードの数を表す。したがって、プラス成分Mは、各クラスタ内のノードの相対数によって重み付けされた、各クラスタ内のノード間の平均距離に対するグラフ105内のノード間の平均距離の合計に等しい値とすることができる。
Figure 2017117449
マイナス成分Mは、式(4)に示されるように計算され得る。以下に示されるように、マイナス成分Mは、エッジ密度(Edge Density)を含み得る。エッジ密度は、式(5)に示されるように計算され得る。エッジ密度は、グラフ105に含まれる可能性があるエッジの最大可能数に対するグラフ105内のエッジの数の比を表し得る。マイナス成分Mにエッジ密度を含めることにより、疎グラフ105に対する過剰クラスタリングを防ぐことができる。
Figure 2017117449
Figure 2017117449
次いで、判定動作245において、SP150は、決定された品質メトリクスをレビューして、クラスタリングが十分な品質であるかどうかを判定することができる。さまざまな実施形態において、SP150は、判定動作245の判定を実行するために、決定された品質メトリクスを1以上の閾値と比較することができる。さまざまな実施形態において、SP150は、Qの値が0.3より大きい場合、及び/又はMの値が大きな正の整数である場合、クラスタリングが十分な品質であると判定することができる。判定動作245において、クラスタリングが十分な品質ではないとSP150が判定した場合、動作250において、ECP180は、グラフ105をサブグラフ(例えば、サブグラフ195及び196)に分割するためにエッジ中心性プロセスを実行することができる。いずれにせよ、動作260において、SP150又はECP190によって決定されたサブグラフは、GPS100によってレポートされ得る。
図3を参照すると、SP150がグラフ105のスペクトル分割を実行する例示的なプロセス300が、さまざまな実施形態により示されている。さまざまな実施形態において、プロセス300は、図2のプロセス200の動作220の全て又は一部を実施するために実行され得る。図3は、特定の動作を特定の順番で示しているが、さまざまな実施形態において、動作は、組み合わされることもあるし、部分に分割されることもあるし、且つ/あるいは、省略されることもある。プロセス300は、動作310で開始することができ、動作310において、VE110は、グラフ105についての固有ベクトルの初期セットを推定することができる。動作310のプロセスの特定の実施形態は、図4のプロセス400を参照して以下で説明され得る。さまざまな実施形態において、動作310を繰り返して、グラフ105についての5つの推定固有ベクトルの初期セットを形成することができる。しかしながら、他の実施形態において、他のサイズの初期セットが使用されてもよい。
図4を参照すると、グラフについての固有ベクトルを推定する例示的なプロセス400の例示的な処理が、さまざまな実施形態により示されている。さまざまな実施形態において、プロセス400は、図3のプロセス300の動作310の全て又は一部を実施するために実行され得る。図4は、特定の動作を特定の順番で示しているが、さまざまな実施形態において、動作は、組み合わされることもあるし、部分に分割されることもあるし、且つ/あるいは、省略されることもある。プロセス400は、動作410で開始することができ、動作410において、VE110は、グラフ105についてのラプラシアン行列を生成することができる。さまざまな実施形態において、グラフ105についてのラプラシアン行列は、以下の定義(6)による、グラフ105のノード及びエッジに従って定義される行列を含み得る。
Figure 2017117449
さまざまな実施形態において、動作420〜460は、以下の式(7)を参照して実行され得る。さまざまな実施形態において、VE110は、動作420〜460の過程にわたって、式(7)の関数を設定し最小化するよう構成され得る。
Figure 2017117449
ここで、nは、グラフ105内のノードの数であり、vは、vのi番目の座標であり、cは、定数であり、総和は、ノードiとノードjとがグラフ内のエッジによって連結される全ての座標vと座標vとに対してなされる(「i〜j」として示されている)。さまざまな実施形態において、式(7)のfの値を最小化することによって、動作410のラプラシアン行列の推定固有ベクトルを提供するために使用することができるベクトルvを得ることができる。さまざまな実施形態において、vの大きさの2乗がnに近くなるようにするために、式(7)の最後の項、例えば、
Figure 2017117449
が2乗され得ることに留意されたい(正規化のために1/nの係数が付加されている)。次いで、動作420において、VE110は、式(7)で使用するための定数cを選択することができる。いくつかの実施形態において、動作420において、cは、グラフ105の次数の逆数にほぼ等しい値に選択され得る。
次いで、動作430において、VE110は、vのランダム座標を選択し、その座標を0に設定することができる。さまざまな実施形態において、VE110は、非常に小さい固有ベクトルにつながる推定プロセスを回避するために、その座標を0に設定することができる。次いで、動作440において、VE110は、vの残りの座標をランダム値に設定することができる。動作450において、VE110は、式(7)の関数に対して最急降下法を実行して、fを最小化することができる。さまざまな実施形態において、最急降下法を実行するための技術が理解されよう。他の実施形態において、関数fを最小化するための他の技術が使用されてもよい。動作450の後、動作460において、VE110は、動作430において0に設定された座標を、新しい値で置換することができる。さまざまな実施形態において、0に設定された座標は、その近傍座標の平均値に設定され得る。例えば、vのi番目の座標vが、動作430において0に設定された場合、vは、vi−1とvi+1との平均値に設定され得る。動作460の完了後、vが、グラフ105についてのラプラシアン行列の推定固有ベクトルとして使用され得る。次いで、プロセス400は終了する。
図3に戻ると、動作320において、CD120は、動作310においてVE110によって生成された推定固有ベクトルによって記述されるn次元空間においてグラフのノードを表現することができる。例えば、動作310において、5つの固有ベクトルが推定された場合、動作320において、グラフは、これらの固有ベクトルによって記述される5次元空間において表現され得る。さまざまな実施形態において、n次元空間においてノードを表現するための技術が知られている。次いで、動作330において、理解されるように、ノードが、最近傍平均を有するクラスタに識別されるように、k平均クラスタリングを実行して、グラフの表現されたノードを、k個のクラスタに分割することができる。さまざまな実施形態において、そのようなクラスタリングが動作330において最初に生じるときに、2つのクラスタを決定するために、kが2に設定され得る。しかしながら、他の実施形態において、異なる数のクラスタが決定されてもよい。
次いで、動作340において、動作330で得られたクラスタリングが記録され得、動作350において、クラスタリングについての品質メトリクスが、QM130によって決定され得る。さまざまな実施形態において、QM130は、上述したようにQ及び/又はMのメトリクスを決定することができる。次いで、判定動作355において、RC140は、動作350において決定された品質メトリクスが、以前に決定されたメトリクスに対して依然として十分に増加しているかどうかを判定することができる。さまざまな実施形態において、判定動作355において、(もしあれば)1以上の品質メトリクスの増加量を閾値と比較して、増加量がさらなる精緻化に十分であるかどうかを判定することができる。
品質メトリクスが十分に増加している場合、クラスタリングがさらなる精緻化から改善できると判定され得、プロセス300は、動作370に進み、動作370において、さらなる固有ベクトルが、VE110によって推定され得る。動作310と同様に、動作370のプロセスの特定の実施形態は、図4のプロセス400を参照して説明され得る。次いで、動作380において、CD120は、kの値を1だけ増加させて、CD120は、次の反復でグラフ105をより多数のクラスタに分割することができる。次いで、プロセス300は、kの新しい値のための新しいクラスタリングを決定するために、動作320に戻ることができる。一方、判定動作355において、品質メトリクスが十分には増加していないと判定された場合、動作360において、CD120は、結果として生じたパーティションとして記録されたもののうち、より高品質のメトリクスを有する1以上のクラスタをレポートすることができる。次いで、プロセス300は終了する。
図5を参照すると、図2〜図4のプロセスを含む、本開示のさまざまな態様を実施するのに適した例示的なコンピュータが、さまざまな実施形態により示されている。図示されるように、コンピュータ500は、1以上のプロセッサ又はプロセッサコア502、及びシステムメモリ504を含み得る。特許請求の範囲を含む本出願の目的のために、「プロセッサ」及び「プロセッサコア」という用語は、文脈により別途明確に要求されない限り、同義語とみなされ得る。さらに、コンピュータ500は、大容量記憶デバイス506(例えば、ディスケット、ハードドライブ、コンパクトディスク読み取り専用メモリ(CD−ROM)等)、入力/出力デバイス508(例えば、ディスプレイ、キーボード、カーソルコントロール、リモートコントロール、ゲームコントローラ、画像キャプチャデバイス等)、及び通信インタフェイス510(例えば、ネットワークインタフェイスカード、モデム、赤外線受信機、無線トランシーバ(例えば、Bluetooth(登録商標)、Wi−Fi(登録商標)、近距離無線通信、無線周波数識別等))を含み得る。これらの要素は、1以上のバスを表し得るシステムバス512を介して互いに接続され得る。複数のバスの場合、それらのバスは、1以上のバスブリッジ(図示せず)によってブリッジされ得る。
これらの要素の各々は、当分野で知られている従来の機能を実行することができる。詳細には、システムメモリ504及び大容量記憶デバイス506は、集合的に計算ロジック522と呼ばれるSP150、PS160、ECP180、及び/又はレポータ190等の、図2〜図4を参照して説明した分割技術に関連する動作のうちの1以上を実装するプログラミング命令のワーキングコピー及び永続的コピーを記憶するために、使用され得る。さまざまな要素は、1以上のプロセッサ502によってサポートされるアセンブラ命令、又はそのような命令にコンパイルすることができる、例えばC等の高水準言語によって実装され得る。さまざまな実施形態において、システムメモリ504又は大容量記憶デバイス506は、システムオンチップ、USBフラッシュドライブ、SDカード、SATA SSD等の集積フラッシュメモリを含むさまざまなメモリ実装を含み得る。
プログラミング命令の永続的コピーは、例えば、コンパクトディスク(CD)等の配布媒体(図示せず)を介して、又は(配布サーバ(図示せず)から)通信インタフェイス510を介して、工場内又は現場で永続的記憶デバイス506に配置され得る。実施形態において、プログラミング命令は、1以上の非一時的なコンピュータ読み取り可能な記憶媒体に記憶され得る。他の実施形態において、プログラミング命令は、信号等の一時的な記憶媒体に符号化され得る。
これらの要素510〜512の数、機能、及び/又は能力は変わり得る。それらの構成は、既知であり、したがって、これ以上説明されない。
図6は、さまざまな実施形態に従った、上述した技術に関連する動作の全て又は選択された動作を実行するよう構成された命令を有する例示的なコンピュータ読み取り可能な記憶媒体602を示している。図示されるように、コンピュータ読み取り可能な記憶媒体602は、さまざまなプログラミング命令604を含み得る。プログラミング命令604は、プログラミング命令の実行に応じて、デバイス(例えば、コンピュータ500)が、例えば、上述した図面のプロセスのさまざまな動作(例えば、本明細書で説明した分割技術を実行するために実行されるさまざまな動作を含むが、これらに限定されるものではない)を実行することを可能にするよう構成され得る。代替実施形態において、プログラミング命令604は、複数のコンピュータ読み取り可能な記憶媒体602に配置されてもよい。
図5に戻ると、一実施形態に関して、プロセッサ502のうちの少なくとも1つは、図2〜図4のプロセスの態様を実施するよう構成された計算ロジック522を有するメモリと共にパッケージ化され得る。一実施形態に関して、プロセッサ502のうちの少なくとも1つは、システムインパッケージ(SiP)を形成するように、図2〜図4のプロセスの態様を実施するよう構成された計算ロジック522を有するメモリと共にパッケージ化され得る。一実施形態に関して、プロセッサ502のうちの少なくとも1つは、図2〜図4のプロセスの態様を実施するよう構成された計算ロジック522を有するメモリと共に同じダイ上に統合され得る。一実施形態に関して、プロセッサ502のうちの少なくとも1つは、システムオンチップ(SoC)を形成するように、図2〜図4のプロセスの態様を実施するよう構成された計算ロジック522を有するメモリと共にパッケージ化され得る。少なくとも1つの実施形態に関して、SoCは、例えば、コンピューティングタブレット(例えば、Wi−Fi(登録商標)、Bluetooth(登録商標)、Bluetooth(登録商標)低エネルギー、近距離無線通信、無線周波数識別(RFID)等)、及びシステムの機能要件及び非機能要件を満たすために必要な他のコンポーネントにおいて利用され得るが、これらに限定されるものではない。
上述した技術を実行するためのコンピュータ読み取り可能な媒体(少なくとも1つのコンピュータ読み取り可能な媒体を含む)、方法、装置、システム、及びデバイスは、本明細書で開示した実施形態の例である。さらに、上述したインタラクションにおける他のデバイスは、開示したさまざまな技術を実行するよう構成され得る。本明細書で説明した実施形態の特定の例は、以下を含むが、これらに限定されるものではない。
例1は、データフロープログラミングをサポートするよう構成されたコンピューティング装置を含み得る。コンピューティング装置は、1以上のコンピューティングプロセッサと、1以上のコンピューティングプロセッサ上で動作して、プログラムに関連付けられたデータフローグラフを複数のサブグラフに分割するスペクトルグラフパーティショナと、を含み得る。スペクトルグラフパーティショナは、グラフを複数のサブグラフに分割するための1以上の推定ベクトルを生成するベクトル推定部を含み得る。スペクトルグラフパーティショナはまた、グラフの複数の推定ベクトル及びクラスタノードに基づいて複数次元空間を定義し、複数次元空間において複数のサブグラフを形成するクラスタ決定部を含み得る。複数のサブグラフは、プログラムの解析又はデバッグにおいて使用され得、プログラムは、タスクを実行するようにコンピューティング装置又は別のコンピューティング装置をプログラムするために使用され得る。
例2は、例1のコンピューティング装置を含み得、ベクトル推定部は、グラフを記述するラプラシアン行列の固有ベクトルを生成することによって、1以上の推定ベクトルを生成することができる。
例3は、例2のコンピューティング装置を含み得、ベクトル推定部は、
Figure 2017117449
によって表される関数を最小化することによって、ベクトルvとして固有ベクトルを生成することができ、nは、グラフにおける頂点の数であり、cは、定数である。
例4は、例3のコンピューティング装置を含み得、関数を最小化することは、関数fに対して最急降下法を実行することを含み得る。
例5は、例3のコンピューティング装置を含み得、定数cの値は、グラフの次数の逆数に少なくとも部分的に基づき得る。
例6は、例3のコンピューティング装置を含み得、固有ベクトルを生成することは、関数fを最小化する前に、ベクトルvの1つの座標を0に設定することを含み得る。
例7は、例6のコンピューティング装置を含み得、固有ベクトルを生成することは、関数fを最小化した後、0に設定された座標を、その座標の近傍座標の平均値に設定することを含み得る。
例8は、例1〜7のいずれかのコンピューティング装置を含み得、クラスタ決定部は、k平均クラスタリングプロセスを実行することによって、グラフのノードをクラスタリングして、複数のサブグラフを形成することができる。
例9は、例1〜8のいずれかのコンピューティング装置を含み得、スペクトルグラフパーティショナは、グラフのノードのクラスタリングが与えられると、ノードのクラスタリングについての1以上の品質メトリクスを決定する品質メトリクス決定部をさらに含み得る。
例10は、例9のコンピューティング装置を含み得、品質メトリクス決定部は、ノードのクラスタリングについてのモジュール性メトリクスを決定することができる。
例11は、例9のコンピューティング装置を含み得、品質メトリクス決定部は、ノードのクラスタリングについてのクラスタパス長メトリクスを決定することができる。
例12は、例9のコンピューティング装置を含み得、スペクトルグラフパーティショナは、1以上の品質メトリクスに少なくとも部分的に基づいて、推定ベクトルの生成と、グラフのノードのクラスタリングと、を繰り返させる精緻化制御部をさらに含み得る。
例13は、例12のコンピューティング装置を含み得、精緻化制御部は、さらなる推定ベクトルが生成され得るように、グラフのノードを、増加した数のクラスタにクラスタリングさせることができる。
例14は、例1〜13のいずれかのコンピューティング装置を含み得、スペクトルグラフパーティショナを使用するか又はコンピューティング装置の1以上の他のグラフパーティショナを使用するかを選択するパーティショナセレクタをさらに含み得る。
例15は、例14のコンピューティング装置を含み得、パーティショナセレクタは、グラフのサイズに少なくとも部分的に基づいて選択することができる。
例16は、例14のコンピューティング装置を含み得、パーティショナセレクタは、スペクトルグラフパーティショナによって生成された1以上のクラスタリングについて決定された1以上の品質メトリクスに少なくとも部分的に基づいて選択することができる。
例17は、例14のコンピューティング装置を含み得、パーティショナセレクタは、スペクトルグラフパーティショナとエッジ中心性パーティショナとの間で選択することができる。
例18は、データフロープログラミングをサポートするためのコンピュータ実装方法を含み得る。方法は、コンピューティングシステムによって、プログラムに関連付けられたデータフローグラフを受信するステップと、コンピューティングシステムによって、グラフを複数のサブグラフに分割するための1以上の推定ベクトルを生成するステップと、コンピューティングシステムによって、複数の推定ベクトルに基づいて複数次元空間を定義するステップと、コンピューティングシステムによって、グラフのノードをクラスタリングして、複数次元空間において複数のサブグラフを形成するステップと、を含み得る。複数のサブグラフは、プログラムの解析又はデバッグにおいて使用され得、プログラムは、タスクを実行するようにコンピューティングシステム又は別のコンピューティングシステムをプログラムするために使用され得る。
例19は、例18の方法を含み得、1以上の推定ベクトルを生成するステップは、グラフを記述するラプラシアン行列の固有ベクトルを生成するステップを含み得る。
例20は、例19の方法を含み得、固有ベクトルを生成するステップは、
Figure 2017117449
によって表される関数を最小化することによって、ベクトルvとして固有ベクトルを生成するステップを含み得、nは、グラフにおける頂点の数であり、cは、定数である。
例21は、例20の方法を含み得、関数を最小化することは、関数fに対して最急降下法を実行することを含み得る。
例22は、例20の方法を含み得、コンピューティングシステムによって、グラフの次数の逆数に少なくとも部分的に基づく定数cの値を使用するステップをさらに含み得る。
例23は、例20の方法を含み得、固有ベクトルを生成するステップは、関数fを最小化する前に、ベクトルvの1つの座標を0に設定するステップを含み得る。
例24は、例23の方法を含み得、固有ベクトルを生成するステップは、関数fを最小化した後、0に設定された座標を、その座標の近傍座標の平均値に設定するステップを含み得る。
例25は、例18〜24のいずれかの方法を含み得、グラフのノードをクラスタリングして、複数のサブグラフを形成するステップは、k平均クラスタリングプロセスを実行するステップを含み得る。
例26は、例18〜25のいずれかの方法を含み得、グラフのノードのクラスタリングが与えられると、コンピューティングシステムによって、ノードのクラスタリングについての1以上の品質メトリクスを決定するステップをさらに含み得る。
例27は、例26の方法を含み得、1以上の品質メトリクスを決定するステップは、ノードのクラスタリングについてのモジュール性メトリクスを決定するステップを含み得る。
例28は、例26の方法を含み得、1以上の品質メトリクスを決定するステップは、ノードのクラスタリングについてのクラスタパス長メトリクスを決定するステップを含み得る。
例29は、例26の方法を含み得、コンピューティングシステムによって、1以上の品質メトリクスに少なくとも部分的に基づいて、推定ベクトルの生成と、グラフのノードのクラスタリングと、を繰り返すステップをさらに含み得る。
例30は、例29の方法を含み得、コンピューティングシステムによって、さらなる推定ベクトルが生成され得るように、グラフのノードを、増加した数のクラスタにクラスタリングするステップをさらに含み得る。
例31は、例18〜30のいずれかの方法を含み得、コンピューティングシステムによって、コンピューティングシステムのスペクトルグラフパーティショナを使用するか又は1以上の他のグラフパーティショナを使用するかを選択するステップをさらに含み得る。
例32は、例31の方法を含み得、選択するステップは、グラフのサイズに少なくとも部分的に基づいて選択するステップを含み得る。
例33は、例31の方法を含み得、選択するステップは、スペクトルグラフパーティショナによって生成された1以上のクラスタリングについて決定された1以上の品質メトリクスに少なくとも部分的に基づいて選択するステップを含み得る。
例34は、例31の方法を含み得、選択するステップは、スペクトル分割プロセスとエッジ中心性分割プロセスとの間で選択するステップを含み得る。
例35は、コンピューティングシステム上での実行に応じて、コンピューティングシステムにデータフロープログラミングをサポートさせる命令が書き込まれた1以上のコンピュータ読み取り可能な媒体を含み得る。命令は、コンピューティングシステムに、プログラムに関連付けられたデータフローグラフを受信させ、グラフを複数のサブグラフに分割するための1以上の推定ベクトルを生成させ、複数の推定ベクトルに基づいて複数次元空間を定義させ、グラフのノードをクラスタリングさせて、複数次元空間において複数のサブグラフを形成させることができる。複数のサブグラフは、プログラムの解析又はデバッグにおいて使用され得、プログラムは、タスクを実行するようにコンピューティングシステム又は別のコンピューティングシステムをプログラムするために使用され得る。
例36は、例35のコンピュータ読み取り可能な媒体を含み得、1以上の推定ベクトルを生成させることは、グラフを記述するラプラシアン行列の固有ベクトルを生成させることを含み得る。
例37は、例36のコンピュータ読み取り可能な媒体を含み得、固有ベクトルを生成させることは、
Figure 2017117449
によって表される関数を最小化させることによって、ベクトルvとして固有ベクトルを生成させることを含み得、nは、グラフにおける頂点の数であり、cは、定数である。
例38は、例37のコンピュータ読み取り可能な媒体を含み得、関数を最小化させることは、関数fに対して最急降下法を実行させることを含み得る。
例39は、例37のコンピュータ読み取り可能な媒体を含み得、命令は、さらに、コンピューティングシステムに、グラフの次数の逆数に少なくとも部分的に基づく定数cの値を使用させることができる。
例40は、例37のコンピュータ読み取り可能な媒体を含み得、固有ベクトルを生成させることは、関数fを最小化させる前に、ベクトルvの1つの座標を0に設定させることを含み得る。
例41は、例40のコンピュータ読み取り可能な媒体を含み得、固有ベクトルを生成させることは、関数fを最小化させた後、0に設定された座標を、その座標の近傍座標の平均値に設定させることを含み得る。
例42は、例35〜41のいずれかのコンピュータ読み取り可能な媒体を含み得、グラフのノードをクラスタリングさせて、複数のサブグラフを形成させることは、k平均クラスタリングプロセスを実行させることを含み得る。
例43は、例35〜42のいずれかのコンピュータ読み取り可能な媒体を含み得、命令は、さらに、グラフのノードのクラスタリングが与えられると、コンピューティングシステムに、ノードのクラスタリングについての1以上の品質メトリクスを決定させることができる。
例44は、例43のコンピュータ読み取り可能な媒体を含み得、1以上の品質メトリクスを決定させることは、ノードのクラスタリングについてのモジュール性メトリクスを決定させることを含み得る。
例45は、例43のコンピュータ読み取り可能な媒体を含み得、1以上の品質メトリクスを決定させることは、ノードのクラスタリングについてのクラスタパス長メトリクスを決定させることを含み得る。
例46は、例43のコンピュータ読み取り可能な媒体を含み得、命令は、さらに、コンピューティングシステムに、1以上の品質メトリクスに少なくとも部分的に基づいて、推定ベクトルの生成と、グラフのノードのクラスタリングと、を繰り返させることができる。
例47は、例46のコンピュータ読み取り可能な媒体を含み得、命令は、さらに、さらなる推定ベクトルが生成され得るように、コンピューティングシステムに、グラフのノードを、増加した数のクラスタにクラスタリングさせることができる。
例48は、例35〜47のいずれかのコンピュータ読み取り可能な媒体を含み得、命令は、さらに、コンピューティングシステムに、コンピューティングシステムのスペクトルグラフパーティショナを使用するか又は1以上の他のグラフパーティショナを使用するかを選択させることができる。
例49は、例48のコンピュータ読み取り可能な媒体を含み得、選択させることは、グラフのサイズに少なくとも部分的に基づいて選択させることを含み得る。
例50は、例48のコンピュータ読み取り可能な媒体を含み得、選択させることは、スペクトルグラフパーティショナによって生成された1以上のクラスタリングについて決定された1以上の品質メトリクスに少なくとも部分的に基づいて選択させることを含み得る。
例51は、例48のコンピュータ読み取り可能な媒体を含み得、選択させることは、スペクトル分割プロセスとエッジ中心性分割プロセスとの間で選択させることを含み得る。
例52は、データフロープログラミングをサポートするためのコンピューティング装置を含み得る。コンピューティング装置は、プログラムに関連付けられたデータフローグラフを受信する手段と、グラフを複数のサブグラフに分割するための1以上の推定ベクトルを生成する手段と、複数の推定ベクトルに基づいて複数次元空間を定義する手段と、グラフのノードをクラスタリングして、複数次元空間において複数のサブグラフを形成する手段と、を含み得る。複数のサブグラフは、プログラムの解析又はデバッグにおいて使用され得、プログラムは、タスクを実行するようにコンピューティング装置又は別のコンピューティング装置をプログラムするために使用され得る。
例53は、例52のコンピューティング装置を含み得、1以上の推定ベクトルを生成する手段は、グラフを記述するラプラシアン行列の固有ベクトルを生成する手段を含み得る。
例54は、例53のコンピューティング装置を含み得、固有ベクトルを生成する手段は、
Figure 2017117449
によって表される関数を最小化することによって、ベクトルvとして固有ベクトルを生成する手段を含み得、nは、グラフにおける頂点の数であり、cは、定数である。
例55は、例54のコンピューティング装置を含み得、関数を最小化する手段は、関数fに対して最急降下法を実行する手段を含み得る。
例56は、例54のコンピューティング装置を含み得、関数を最小化する手段は、グラフの次数の逆数に少なくとも部分的に基づく定数cの値を使用する。
例57は、例54のコンピューティング装置を含み得、固有ベクトルを生成する手段は、関数fを最小化する前に、ベクトルvの1つの座標を0に設定する手段を含み得る。
例58は、例57のコンピューティング装置を含み得、固有ベクトルを生成する手段は、関数fを最小化した後、0に設定された座標を、その座標の近傍座標の平均値に設定する手段を含み得る。
例59は、例52〜58のいずれかのコンピューティング装置を含み得、グラフのノードをクラスタリングして、複数のサブグラフを形成する手段は、k平均クラスタリングプロセスを実行する手段を含み得る。
例60は、例52〜59のいずれかのコンピューティング装置を含み得、グラフのノードのクラスタリングが与えられると、ノードのクラスタリングについての1以上の品質メトリクスを決定する手段をさらに含み得る。
例61は、例60のコンピューティング装置を含み得、1以上の品質メトリクスを決定する手段は、ノードのクラスタリングについてのモジュール性メトリクスを決定する手段を含み得る。
例62は、例60のコンピューティング装置を含み得、1以上の品質メトリクスを決定する手段は、ノードのクラスタリングについてのクラスタパス長メトリクスを決定する手段を含み得る。
例63は、例60のコンピューティング装置を含み得、1以上の品質メトリクスに少なくとも部分的に基づいて、推定ベクトルの生成と、グラフのノードのクラスタリングと、を繰り返させる手段をさらに含み得る。
例64は、例63のコンピューティング装置を含み得、さらなる推定ベクトルが生成され得るように、グラフのノードを、増加した数のクラスタにクラスタリングさせる手段をさらに含み得る。
例65は、例52〜64のいずれかのコンピューティング装置を含み得、コンピューティング装置のスペクトルグラフパーティショナを使用するか又は1以上の他のグラフパーティショナを使用するかを選択する手段をさらに含み得る。
例66は、例65のコンピューティング装置を含み得、選択する手段は、グラフのサイズに少なくとも部分的に基づいて選択する手段を含み得る。
例67は、例65のコンピューティング装置を含み得、選択する手段は、スペクトルグラフパーティショナによって生成された1以上のクラスタリングについて決定された1以上の品質メトリクスに少なくとも部分的に基づいて選択する手段を含み得る。
例68は、例65のコンピューティング装置を含み得、選択する手段は、スペクトル分割プロセスとエッジ中心性分割プロセスとの間で選択する手段を含み得る。
説明の目的のために、特定の実施形態が、図示され、本明細書で説明されたが、同じ目的を達成するために計算された広範な代替実施形態及び/又は均等実施形態若しくは実装形態が、本開示の範囲から逸脱することなく、図示され説明された実施形態の代わりに使用されてもよい。本出願は、本明細書で説明した実施形態の任意の応用形態及び変更形態を包含することが意図されている。したがって、本明細書で説明した実施形態は、請求項によってのみ定められることが明白に意図されている。
本開示において、「ある」又は「第1の」要素又はその均等物が記載されている場合、そのような開示は、1以上のそのような要素を含み、2以上のそのような要素を要求することもないし、2以上のそのような要素を排除することもない。さらに、識別された要素の序数インジケータ(例えば、第1の、第2の、又は第3の)は、要素を区別するために使用され、そのような要素の必要数又は限定数を示したり示唆したりするものでもないし、別途明示されない限り、そのような要素の特定の配置又は順番を示すものでもない。
100 グラフ分割システム
105 グラフ
110 ベクトル推定部
120 クラスタ決定部
130 品質メトリクス決定部
140 精緻化制御部
150 スペクトルグラフパーティショナ
160 パーティショナセレクタ
180 エッジ中心性パーティショナ
190 レポータ
195 サブグラフ
196 サブグラフ

Claims (26)

  1. データフロープログラミングをサポートするよう構成されたコンピューティング装置であって、
    1以上のコンピューティングプロセッサと、
    前記1以上のコンピューティングプロセッサ上で動作して、プログラムに関連付けられたデータフローグラフを複数のサブグラフに分割するスペクトルグラフパーティショナと、
    を備え、
    前記スペクトルグラフパーティショナは、
    前記データフローグラフを前記複数のサブグラフに分割するための1以上の推定ベクトルを生成するベクトル推定部と、
    クラスタ決定部であって、
    複数の推定ベクトルに基づいて複数次元空間を定義し、
    前記データフローグラフのノードをクラスタリングして、前記複数次元空間において前記複数のサブグラフを形成する
    クラスタ決定部と、
    を含み、
    前記複数のサブグラフは、前記プログラムの解析又はデバッグにおいて使用され、前記プログラムは、タスクを実行するように前記コンピューティング装置又は別のコンピューティング装置をプログラムするために使用される、コンピューティング装置。
  2. 前記ベクトル推定部は、前記データフローグラフを記述するラプラシアン行列の固有ベクトルを生成することによって、前記1以上の推定ベクトルを生成する、請求項1に記載のコンピューティング装置。
  3. 前記ベクトル推定部は、
    Figure 2017117449
    によって表される関数を最小化することによって、ベクトルvとして固有ベクトルを生成し、nは、前記データフローグラフにおける頂点の数であり、cは、定数である、請求項2に記載のコンピューティング装置。
  4. 前記関数を最小化することは、前記関数fに対して最急降下法を実行することを含む、請求項3に記載のコンピューティング装置。
  5. 前記定数cの値は、前記データフローグラフの次数の逆数に少なくとも部分的に基づく、請求項3に記載のコンピューティング装置。
  6. 固有ベクトルを生成することは、前記関数fを最小化する前に、前記ベクトルvの1つの座標を0に設定することを含む、請求項3に記載のコンピューティング装置。
  7. 固有ベクトルを生成することは、前記関数fを最小化した後、0に設定された前記座標を、前記座標の近傍座標の平均値に設定することを含む、請求項6に記載のコンピューティング装置。
  8. 前記クラスタ決定部は、k平均クラスタリングプロセスを実行することによって、前記データフローグラフの前記ノードをクラスタリングして、前記複数のサブグラフを形成する、請求項1乃至7いずれか一項に記載のコンピューティング装置。
  9. 前記スペクトルグラフパーティショナは、
    前記データフローグラフのノードのクラスタリングが与えられると、該ノードの該クラスタリングについての1以上の品質メトリクスを決定する品質メトリクス決定部
    をさらに含む、請求項1乃至7いずれか一項に記載のコンピューティング装置。
  10. 前記品質メトリクス決定部は、前記ノードの前記クラスタリングについてのモジュール性メトリクス又はクラスタパス長メトリクスを決定する、請求項9に記載のコンピューティング装置。
  11. 前記スペクトルグラフパーティショナは、
    前記1以上の品質メトリクスに少なくとも部分的に基づいて、推定ベクトルの生成と、前記データフローグラフのノードのクラスタリングと、を繰り返させる精緻化制御部
    をさらに含む、請求項9に記載のコンピューティング装置。
  12. 前記精緻化制御部は、さらなる推定ベクトルが生成されるように、前記データフローグラフの前記ノードを、増加した数のクラスタにクラスタリングさせる、請求項11に記載のコンピューティング装置。
  13. 前記スペクトルグラフパーティショナを使用するか又は前記コンピューティング装置の1以上の他のグラフパーティショナを使用するかを選択するパーティショナセレクタ
    をさらに備える、請求項1乃至7いずれか一項に記載のコンピューティング装置。
  14. 前記パーティショナセレクタは、前記スペクトルグラフパーティショナによって生成された1以上のクラスタリングについて決定された1以上の品質メトリクス又は前記データフローグラフのサイズに少なくとも部分的に基づいて選択する、請求項13に記載のコンピューティング装置。
  15. 前記パーティショナセレクタは、前記スペクトルグラフパーティショナとエッジ中心性パーティショナとの間で選択する、請求項13に記載のコンピューティング装置。
  16. データフロープログラミングをサポートするための方法であって、
    コンピューティングシステムによって、プログラムに関連付けられたデータフローグラフを受信するステップと、
    前記コンピューティングシステムによって、前記データフローグラフを複数のサブグラフに分割するための1以上の推定ベクトルを生成するステップと、
    前記コンピューティングシステムによって、複数の推定ベクトルに基づいて複数次元空間を定義するステップと、
    前記コンピューティングシステムによって、前記データフローグラフのノードをクラスタリングして、前記複数次元空間において前記複数のサブグラフを形成するステップと、
    を含み、
    前記複数のサブグラフは、前記プログラムの解析又はデバッグにおいて使用され、
    前記プログラムは、タスクを実行するように前記コンピューティングシステム又は別のコンピューティングシステムをプログラムするために使用される、方法。
  17. 前記1以上の推定ベクトルを生成するステップは、
    Figure 2017117449
    によって表される関数を最小化することによって、前記データフローグラフを記述するラプラシアン行列の固有ベクトルを生成するステップを含み、nは、前記データフローグラフにおける頂点の数であり、cは、定数である、請求項16に記載の方法。
  18. 前記データフローグラフのノードをクラスタリングして、前記複数次元空間において前記複数のサブグラフを形成するステップは、k平均クラスタリングプロセスを実行するステップを含む、請求項16又は17に記載の方法。
  19. 前記データフローグラフのノードのクラスタリングが与えられると、前記コンピューティングシステムによって、該ノードの該クラスタリングについての1以上の品質メトリクスを決定するステップ
    をさらに含む、請求項16又は17に記載の方法。
  20. 前記コンピューティングシステムによって、前記1以上の品質メトリクスに少なくとも部分的に基づいて、推定ベクトルの生成と、前記データフローグラフのノードのクラスタリングと、を繰り返すステップ
    をさらに含む、請求項19に記載の方法。
  21. コンピューティングシステムに請求項16乃至20いずれか一項に記載の方法を実行させるコンピュータプログラム。
  22. 請求項21に記載のコンピュータプログラムを記憶したコンピュータ読み取り可能な記憶媒体。
  23. データフロープログラミングをサポートするためのコンピューティング装置であって、
    プログラムに関連付けられたデータフローグラフを受信する手段と、
    前記データフローグラフを複数のサブグラフに分割するための1以上の推定ベクトルを生成する手段と、
    複数の推定ベクトルに基づいて複数次元空間を定義する手段と、
    前記データフローグラフのノードをクラスタリングして、前記複数次元空間において前記複数のサブグラフを形成する手段と、
    を備え、
    前記複数のサブグラフは、前記プログラムの解析又はデバッグにおいて使用され、
    前記プログラムは、タスクを実行するように前記コンピューティング装置又は別のコンピューティング装置をプログラムするために使用される、コンピューティング装置。
  24. 前記1以上の推定ベクトルを生成する手段は、
    Figure 2017117449
    によって表される関数を最小化することによって、前記データフローグラフを記述するラプラシアン行列の固有ベクトルを生成する手段を含み、nは、前記データフローグラフにおける頂点の数であり、cは、定数である、請求項23に記載のコンピューティング装置。
  25. 前記データフローグラフのノードをクラスタリングして、前記複数次元空間において前記複数のサブグラフを形成する手段は、k平均クラスタリングプロセスを実行する手段を含む、請求項23又は24に記載のコンピューティング装置。
  26. 前記データフローグラフのノードのクラスタリングが与えられると、該ノードの該クラスタリングについての1以上の品質メトリクスを決定する手段と、
    前記1以上の品質メトリクスに少なくとも部分的に基づいて、推定ベクトルの生成と、前記データフローグラフのノードのクラスタリングと、を繰り返させる手段と、
    をさらに備える、請求項23又は24に記載のコンピューティング装置。
JP2016235001A 2015-12-24 2016-12-02 ベクトル推定に基づくグラフ分割を伴う、コンピューティング装置のデータフロープログラミング Expired - Fee Related JP6382284B2 (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US14/998,137 2015-12-24
US14/998,137 US10019342B2 (en) 2015-12-24 2015-12-24 Data flow programming of computing apparatus with vector estimation-based graph partitioning

Publications (2)

Publication Number Publication Date
JP2017117449A true JP2017117449A (ja) 2017-06-29
JP6382284B2 JP6382284B2 (ja) 2018-08-29

Family

ID=59088426

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2016235001A Expired - Fee Related JP6382284B2 (ja) 2015-12-24 2016-12-02 ベクトル推定に基づくグラフ分割を伴う、コンピューティング装置のデータフロープログラミング

Country Status (4)

Country Link
US (1) US10019342B2 (ja)
JP (1) JP6382284B2 (ja)
CN (1) CN106919380B (ja)
WO (1) WO2017112208A1 (ja)

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2019102786A1 (ja) * 2017-11-21 2019-05-31 三菱電機株式会社 ソースコード分割装置、ソースコード解析装置、ソースコード分割方法及びソースコード分割プログラム
KR101990735B1 (ko) * 2018-03-30 2019-06-18 서울대학교산학협력단 사전 그래프 분할 기반 행렬 벡터 곱을 이용한 대규모 그래프 마이닝 방법 및 장치
KR102192551B1 (ko) * 2020-04-09 2020-12-17 국방과학연구소 그래프 클러스터링을 위한 장치, 방법, 컴퓨터 판독 가능한 기록 매체 및 컴퓨터 프로그램
KR20210053247A (ko) * 2019-11-01 2021-05-11 국방과학연구소 태스크 할당 방법 및 장치

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110363700A (zh) * 2019-07-12 2019-10-22 辽宁工程技术大学 一种基于深度图分割的自定义指令并行枚举方法

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2013534671A (ja) * 2010-06-22 2013-09-05 国立成功大学 アルゴリズムの固有平行度の分析方法
JP2013222327A (ja) * 2012-04-17 2013-10-28 Toyota Motor Corp ソフトウェア検証装置及びソフトウェア検証プログラム

Family Cites Families (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20070132754A1 (en) * 2005-12-12 2007-06-14 Intel Corporation Method and apparatus for binary image classification and segmentation
CN101001099B (zh) * 2006-01-13 2012-08-08 华为技术有限公司 一种分布式互助中转方法及中转系统
WO2009038822A2 (en) * 2007-05-25 2009-03-26 The Research Foundation Of State University Of New York Spectral clustering for multi-type relational data
US8561184B1 (en) * 2010-02-04 2013-10-15 Adometry, Inc. System, method and computer program product for comprehensive collusion detection and network traffic quality prediction
BR112012017275A2 (pt) * 2010-02-12 2016-04-19 Exxonmobil Upstream Res Co método e sistema para divisão de modelos de simulação paralelos
US8566360B2 (en) * 2010-05-28 2013-10-22 Drexel University System and method for automatically generating systematic reviews of a scientific field
US20120011186A1 (en) 2010-07-08 2012-01-12 National Cheng Kung University Method for quantifying and analyzing intrinsic parallelism of an algorithm
US8428363B2 (en) * 2011-04-29 2013-04-23 Mitsubishi Electric Research Laboratories, Inc. Method for segmenting images using superpixels and entropy rate clustering
US8886573B2 (en) 2012-04-04 2014-11-11 Microsoft Corporation Determining optimum graph bisection using a tree and pruning the tree using a packing lower bound
US9222791B2 (en) 2012-10-11 2015-12-29 Microsoft Technology Licensing, Llc Query scenarios for customizable route planning
US10198834B2 (en) 2013-04-29 2019-02-05 Microsoft Technology Licensing, Llc Graph partitioning for massive scale graphs
US9176732B2 (en) 2013-08-28 2015-11-03 Oracle International Corporation Method and apparatus for minimum cost cycle removal from a directed graph
US9338097B2 (en) 2013-10-31 2016-05-10 Telefonaktiebolaget L M Ericsson (Publ) Method and system for load balancing at a data network
FR3021776A1 (fr) * 2014-05-28 2015-12-04 Vaiomer Procede d'identification d'une relation entre des elements physiques
US20150363361A1 (en) * 2014-06-16 2015-12-17 Mitsubishi Electric Research Laboratories, Inc. Method for Kernel Correlation-Based Spectral Data Processing
EP3257160A1 (en) * 2016-04-19 2017-12-20 Huawei Technologies Co., Ltd. Concurrent segmentation using vector processing

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2013534671A (ja) * 2010-06-22 2013-09-05 国立成功大学 アルゴリズムの固有平行度の分析方法
JP2013222327A (ja) * 2012-04-17 2013-10-28 Toyota Motor Corp ソフトウェア検証装置及びソフトウェア検証プログラム

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
LIU, JIALU、他3名: "Large-Scale Spectral Clustering on Graphs", IJCAI'13 PROCEEDINGS OF THE TWENTY-THIRD INTERNATIONAL JOINT CONFERENCE ON ARTIFICIAL INTELLIGENCE,, JPN7018000589, 3 August 2013 (2013-08-03), pages 1486 - 1492, XP055397929, ISSN: 0003748096 *

Cited By (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2019102786A1 (ja) * 2017-11-21 2019-05-31 三菱電機株式会社 ソースコード分割装置、ソースコード解析装置、ソースコード分割方法及びソースコード分割プログラム
JPWO2019102786A1 (ja) * 2017-11-21 2020-04-02 三菱電機株式会社 ソースコード分割装置、ソースコード解析装置、ソースコード分割方法及びソースコード分割プログラム
GB2581057A (en) * 2017-11-21 2020-08-05 Mitsubishi Electric Corp Source-code dividing device, source-code analyzing device, source-code dividing method, and source-code dividing program
US11086604B2 (en) 2017-11-21 2021-08-10 Mitsubishi Electric Corporation Source code splitting device, source code analyzing device, source code splitting method, and computer readable medium
KR101990735B1 (ko) * 2018-03-30 2019-06-18 서울대학교산학협력단 사전 그래프 분할 기반 행렬 벡터 곱을 이용한 대규모 그래프 마이닝 방법 및 장치
KR20210053247A (ko) * 2019-11-01 2021-05-11 국방과학연구소 태스크 할당 방법 및 장치
KR102411173B1 (ko) 2019-11-01 2022-06-21 국방과학연구소 태스크 할당 방법 및 장치
KR102192551B1 (ko) * 2020-04-09 2020-12-17 국방과학연구소 그래프 클러스터링을 위한 장치, 방법, 컴퓨터 판독 가능한 기록 매체 및 컴퓨터 프로그램

Also Published As

Publication number Publication date
US10019342B2 (en) 2018-07-10
CN106919380A (zh) 2017-07-04
WO2017112208A1 (en) 2017-06-29
JP6382284B2 (ja) 2018-08-29
CN106919380B (zh) 2020-06-16
US20170185506A1 (en) 2017-06-29

Similar Documents

Publication Publication Date Title
JP6382284B2 (ja) ベクトル推定に基づくグラフ分割を伴う、コンピューティング装置のデータフロープログラミング
CN110301128B (zh) 基于学习的资源管理数据中心云架构的实现方法
US8799916B2 (en) Determining an allocation of resources for a job
US9483319B2 (en) Job scheduling apparatus and method therefor
US20210357697A1 (en) Techniques to embed a data object into a multidimensional frame
US9558852B2 (en) Method and apparatus for defect repair in NAND memory device
JPWO2008102739A1 (ja) 仮想サーバシステム及び物理サーバ選択方法
US20170161402A1 (en) Systems and methods for dynamic regression test generation using coverage-based clustering
US10193969B2 (en) Parallel processing system, method, and storage medium
WO2020247810A1 (en) Optimizing training data for image classification
WO2014199920A1 (ja) 予測関数作成装置、予測関数作成方法、及びコンピュータ読み取り可能な記録媒体
WO2015180340A1 (zh) 一种数据挖掘方法及装置
US20220245405A1 (en) Deterioration suppression program, deterioration suppression method, and non-transitory computer-readable storage medium
US20190286937A1 (en) Computer-readable recording medium, method for learning, and learning device
US20160077860A1 (en) Virtual machine placement determination device, virtual machine placement determination method, and virtual machine placement determination program
US20150302022A1 (en) Data deduplication method and apparatus
CN109344017A (zh) 一种基于机器学习预测内存故障的方法,设备及可读存储介质
WO2017039684A1 (en) Classifier
US8949793B1 (en) Test bed design from customer system configurations using machine learning techniques
WO2016018352A1 (en) Platform configuration selection based on a degraded makespan
US20170132045A1 (en) Load estimation system, information processing device, load estimation method, and storage medium for storing program
US11086679B2 (en) Determine whether to accelerate a process of a program based on characteristic values associated with strongly connected graphs
US11410065B2 (en) Storage medium, model output method, and model output device
US10089151B2 (en) Apparatus, method, and program medium for parallel-processing parameter determination
US20170293660A1 (en) Intent based clustering

Legal Events

Date Code Title Description
A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20180306

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20180604

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20180703

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20180801

R150 Certificate of patent or registration of utility model

Ref document number: 6382284

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

LAPS Cancellation because of no payment of annual fees