JP2014525640A - 並列処理開発環境の拡張 - Google Patents

並列処理開発環境の拡張 Download PDF

Info

Publication number
JP2014525640A
JP2014525640A JP2014529910A JP2014529910A JP2014525640A JP 2014525640 A JP2014525640 A JP 2014525640A JP 2014529910 A JP2014529910 A JP 2014529910A JP 2014529910 A JP2014529910 A JP 2014529910A JP 2014525640 A JP2014525640 A JP 2014525640A
Authority
JP
Japan
Prior art keywords
data
algorithm
kernel
pattern
state machine
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.)
Pending
Application number
JP2014529910A
Other languages
English (en)
Inventor
ケビン ディー. ハワード,
Original Assignee
マッシブリー パラレル テクノロジーズ, インコーポレイテッド
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 マッシブリー パラレル テクノロジーズ, インコーポレイテッド filed Critical マッシブリー パラレル テクノロジーズ, インコーポレイテッド
Publication of JP2014525640A publication Critical patent/JP2014525640A/ja
Pending legal-status Critical Current

Links

Classifications

    • 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/314Parallel programming languages
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/448Execution paradigms, e.g. implementations of programming paradigms
    • G06F9/4498Finite state machines

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computing Systems (AREA)
  • Devices For Executing Special Programs (AREA)
  • Multi Processors (AREA)
  • Stored Programmes (AREA)
  • Compression Or Coding Systems Of Tv Signals (AREA)

Abstract

並列処理システムを実行するアルゴリズムの並列化のための方法。拡張機能要素が、アルゴリズムのセクションのそれぞれに対して生成され、セクションは、複数の処理要素へのデータの分散、アルゴリズムの外部からアルゴリズムの内部へのデータの転送、処理要素間のデータのグローバル相互通信、処理要素のサブセットへのデータの移動、およびアルゴリズムの内部からアルゴリズムの外部へのデータの転送を備える。各拡張機能要素は、アルゴリズムの並列化が生じ得る、アルゴリズム内の個別の場所に、並列化を提供するように機能する。

Description

(関連出願)
本願は、米国特許出願第61/531,973号(2011年9月7日出願)に対する利益および優先権を主張するものであり、この開示の全体は、参照により本明細書中に援用される。
以下に示す米国特許出願は、参照により本明細書中に援用される:米国特許第6,857,004号、米国特許出願公開第2010/0183028号、米国特許出願公開第2010/0185719号、米国特許出願第61/382,405号、米国特許出願第12/852,919号。
コード再利用の正式概念は、Bell LaboratoriesのDouglas Mcllroyが、再使用可能構成要素に関するソフトウェア産業の基礎を提案した1968年に遡る。それ以来、いくつかの実施例を挙げると、「カット・アンド・ペースト」、ソフトウェアライブラリ、およびオブジェクト指向プログラミング等のいくつかの関連概念が、開発されている。「カット・アンド・ペースト」とは、あるファイルから別のファイルにテキストをコピーすることを意味する。ソフトウェアの場合、「カット・アンド・ペースト」とは、コンピュータプログラマが、最初に、要求されるソースコードテキストを見つけ、それを別のソフトウェアプログラムのソースコードファイル内にコピーすることを意味する。ソフトウェアライブラリは、典型的には、関連付けられた、事前にコンパイルされた関数のグループである。コンピュータプログラマは、ライブラリ内の関数を使用する権利を購入または別様に取得し、次いで、関数情報を標的ソースコードファイル内にコピーする。関数ライブラリは、概して、関連付けられた関数を含有する(例えば、画像処理関数、財務分析関数、生物情報学関数等)。オブジェクト指向プログラミング技法は、その方法が再使用され得る、オブジェクトを作成するための能力を含む。おそらく、関数ライブラリより優れているが、オブジェクト指向プログラミング技法を用いても、ソフトウェアプログラマは、依然として、正しいコードを選択しなければならない。
汎用フレームプロトコル(SRIInternationalおよびStanfordUniversityの共同開発であって、本プロトコルは、汎用インターフェースを人工知能システムのための下層フレーム表現システムに提供する)および構成要素ベースのソフトウェアエンジニアリング(構成要素ベースのソフトウェアエンジニアリングとも呼ばれる)等の他の技法は、関連関数またはデータのいくつかのセット(システムプロセスと呼ばれる)をカプセル化する、ウェブサービスまたはモジュールを再使用することを試みる。全システムプロセスは、各構成要素の内部のデータおよび関数の全てが、意味的に関連するように、別個の構成要素内に配置される。本意味では、構成要素は、ソフトウェアライブラリおよびソフトウェアオブジェクトと同様に挙動する。全構成要素は、システムの残りへのサービスとして作用する各構成要素と、インターフェースを介して、相互に通信する。本サービス指向性は、構成要素ベースのソフトウェアエンジニアリングとオブジェクト指向クラスとの間の主な差異である。コード再使用技法に関する主な問題は、それらが、依然として、プログラマに、使用するための適切な再使用可能コード構成要素またはオブジェクトを選択することを要求し、自動プロセスであることが所望されるものに関して、手動アクティビティを強いることである。
導入
本システムおよび方法は、以下の並列処理開発環境に対する6つの拡張機能(拡張機能要素)を含む:トポロジ、分散、データ入力、相互通信、集積、およびデータ出力。第1の拡張機能要素は、ネットワークトポロジを記述するものであって、離散化、すなわち、複数の処理要素にわたる問題の分割を判定する。5つの残りの拡張機能要素は、データまたはプログラム(実行可能コード)移動が生じる異なるプログラム段階に対応する、すなわち、情報は、ネットワーク内の任意の2つのノード間で転送され、したがって、並列化が生じ得る場所を表す。6つの並列処理段階および関連拡張機能要素は、以下である。
(1)ネットワークトポロジ(トポロジ判定は、プログラム実行に先立って生じる)。実施例:1−2−3次元デカルトおよび1−2−3次元トロイダル。
(2)複数の処理要素へのデータの分散方法(分散は、プログラム実行に先立って、またはプログラム実行の間に生じ得る)。実施例:散乱、ベクトル散乱、スキャン、真のブロードキャスト、ツリーブロードキャスト。
(3)アプリケーションの外部からアプリケーションの内部へのデータの転送(データ入力、直列および並列入力)。
(4)処理要素間のデータのグローバル相互通信(相互通信は、プログラム実行の間に生じる)。実施例:全対全、ベクトル全対全、次n隣接、ベクトル次n隣接、赤黒、左右。
(5)処理要素のサブセットへのデータの移動(集積は、プログラム実行後に生じる)。実施例:縮小、全縮小、縮小−散乱、収集、ベクトル収集、全収集、ベクトル全収集。
(6)アプリケーションの内部からアプリケーションの外部へのデータの転送(データ出力、直列I/Oおよび並列I/O)。
前述の6つの要素のいずれかの選択は、所与のカーネルの正しい使用が、プロファイル化の間に行なわれることを保証する。
図1は、標的アルゴリズムが、どのようにデータにアクセスし、状態遷移を行なうかを図示する、例示的データフロー図を示す。 図2は、データおよび遷移プロファイル出力の有効な組み合わせの例示的テーブルを示す。 図3は、システムライブラリからの「shmget」の使用を図示する、例示的ソースコードを示す。 図4は、4つの計算要素による処理のための16のシーケンシャルデータアイテムの例示的ビニングを図示する、テーブルを示し、各要素は、1−4のビンのうちの1つに対応する。 図5は、1つのオブジェクトを伴う、次元タイプ1の静的アレイ処理を図示する。 図6は、2つのオブジェクトを伴う、次元タイプ1の静的アレイ処理を図示する。 図7は、3つの不等間隔オブジェクトを伴う、標準1次元静的アレイ処理を図示する。 図8は、データオブジェクトが、アレイ内でスキップされる場合に生じる、別のタイプの静的オブジェクトを示す。 図9は、2つの移動オブジェクトを伴う、標準1次元動的アレイ処理を図示する。 図10は、2つの成長オブジェクトを伴う、標準1次元動的アレイ処理を図示する。 図11は、リングを中心として移動する2つのオブジェクトを伴う、標準1次元動的アレイ処理を図示する。 図12は、リングを中心として成長する2つのオブジェクトを伴う、標準1次元動的アレイ処理を図示する。 図13は、アレイの両端(ビン1およびビン4)に集中する4つのデータオブジェクトの実施例を示し、ビン2およびビン3は、ワークがない、不均衡ワークロードを図示する。 図14は、ポインタの使用を通して、アレイ内の不均衡データオブジェクト位置からワークロードを均衡化するステップを図示する。 図15は、いくつかのデータが移動後の図14の4つのデータオブジェクトの位置を示す。 図16は、インデックス、ストライド、インデックスとストライド、オーバーラップ、インデックスとオーバーラップ、ストライドとオーバーラップ、およびインデックスとストライドとオーバーラップを伴う、次元標準データセットトポロジを図示する、一例示的テーブルを示す。 図17は、例示的2次元標準データセットトポロジを示す。 図18は、a[x][y]変換の適用に先立った静的オブジェクトの例示的2次元テーブルと、変換が適用された後のアレイを表す、アップデートされたアレイとを示す。 図19は、2つの小データオブジェクトを伴う、標準2次元静的マトリクス処理を図示する。 図20は、2つの移動オブジェクトを伴う、標準2次元動的アレイ処理を図示する。 図21は、標準2次元交互データセットトポロジ2102および4つの付加的実施例を示す。 図22は、一例示的3次元標準データセットトポロジを図示する。 図22は、一例示的3次元標準データセットトポロジを図示する。 図23−26は、インデックス、ストライド(Stripe)、およびオーバーラップを利用する、3次元メッシュタイプの標準分解の4つの実施例を示す。 図23−26は、インデックス、ストライド(Stripe)、およびオーバーラップを利用する、3次元メッシュタイプの標準分解の4つの実施例を示す。 図23−26は、インデックス、ストライド(Stripe)、およびオーバーラップを利用する、3次元メッシュタイプの標準分解の4つの実施例を示す。 図23−26は、インデックス、ストライド(Stripe)、およびオーバーラップを利用する、3次元メッシュタイプの標準分解の4つの実施例を示す。 図23−26は、インデックス、ストライド(Stripe)、およびオーバーラップを利用する、3次元メッシュタイプの標準分解の4つの実施例を示す。 図23−26は、インデックス、ストライド(Stripe)、およびオーバーラップを利用する、3次元メッシュタイプの標準分解の4つの実施例を示す。 図23−26は、インデックス、ストライド(Stripe)、およびオーバーラップを利用する、3次元メッシュタイプの標準分解の4つの実施例を示す。 図27は、1次元標準データセットトポロジ内のビンに追加されるデータ位置を示す。 図28は、1次元交互データセットトポロジ内のビンに追加されるデータ位置を示す。 図29は、静的オブジェクトを有する、1次元交互静的モデルの一実施例を示す。 図30は、図28の実施例に適用されるようなインデックス、ストライド、およびオーバーラップを伴う、1次元交互データセットトポロジを示す。 図31は、一例示的2次元メッシュタイプの交互トポロジを図示する。 図32は、テーブル内の2次元交互データセットトポロジの4つの実施例を示す。 図33は、テーブル内の3次元における一例示的交互トポロジを示す。 図33は、テーブル内の3次元における一例示的交互トポロジを示す。 図34は、ビン内に置かれるデータのブロックを伴う、1次元ブロックトポロジテーブルを示す。 図35は、インデックス、ステップ、およびオーバーラップを伴う、1次元連続ブロックデータセットトポロジのテーブルを示す。 図36は、2次元連続ブロックトポロジの実施例を示す。 図37は、インデックス、ステップ、およびオーバーラップパラメータを伴う、2次元連続ブロックデータセットトポロジモデルの一実施例を示す。 図38は、データが、例示的計算要素1−4に分散されるように、3次元連続ブロックトポロジの実施例を示す。 図39は、データが、例示的計算要素1−4に分散されるように、2次元以上のアレイを行のブロックに分解する、Mesh_Type_ROW_BLOCKメッシュタイプを示す。 図40は、インデックス、ステップ、およびオーバーラップパラメータを伴う、2次元行ブロックデータセットトポロジモデルの一実施例を示す。 図41は、データが、例示的計算要素1−4に分散されるように、2次元以上のアレイを列のブロックに分解する、Mesh_Type_Column_BLOCKメッシュタイプを示す。 図42は、インデックス、ステップ、およびオーバーラップを伴う、2次元列ブロックデータセットトポロジをもたらすために、図40の実施例に適用されるパラメータインデックス、ステップ、およびオーバーラップを示す。 図43は、簡略化されたハワードカスケードのデータ移動およびタイミング図を示す。 図44は、図43の第1の時間ステップにおける、スマートNICおよびスイッチと通信するノードの例証的ハードウェア図を示す。 図45は、図43の第2の時間ステップにおける、スマートNICおよびスイッチと通信するノードの例証的ハードウェア図を示す。 図46は、9つのノードの多重通信チャネルシステムデータ移動およびタイミング図の一実施例を示す。 図47は、図46の2チャネルハワードカスケードベースのマルチキャスト/ブロードキャストの第1の時間ステップの一実施例の例証的ハードウェア図を示す。 図48は、図46の2チャネルハワードカスケードベースのマルチキャスト/ブロードキャストの第2の時間ステップの一実施例の例証的ハードウェア図を示す。 図49は、和演算を使用する、スキャンコマンドの一実施例を示す。 図50は、一例示的な十分なチャネルのラムダ交換モデル5000を示す。 図51は、十分なチャネルのラムダ交換モデルを利用して伝送されるデータの一例示的ハードウェア図を示す。 図52は、十分なチャネルのラムダ交換モデルを使用して、スキャン(和を用いる)を行なう、スマートNIC5212、5214を示す。 図53は、マルチキャストまたはブロードキャストの使用を検出するために使用される、検出可能通信パターン5300を示す。 図54は、十分なチャネルのハワードカスケードベースのマルチキャスト/ブロードキャストの一例示的論理図を示す。 図55は、図54の十分なチャネルのハワードカスケードベースのマルチキャストまたはブロードキャスト通信モデルの例示的ハードウェア図を示す。 図56は、一例示的散乱データパターンを示す。 図57は、一例示的十分なチャネルのハワードカスケード散乱を示す。 図58は、図57の十分なチャネルのハワードカスケード散乱の一例示的ハードウェア図を示す。 図59は、一例示的論理ベクトル散乱を示す。 図60は、ベクトル散乱演算のための一例示的タイミング図およびデータ移動を示す。 図61は、図60のベクトル散乱演算の一例示的ハードウェア図を示す。 図62は、ハワードカスケードベースのデータ伝送を使用する、直列データ入力の論理図を示す。 図62は、トップレベル計算ノードのホームノード選択が、分解されたデータセットをシステムの一部に並行して伝送する、一例示的システムを示す。 図63は、図62のNASデバイスからのデータセットの一部を伝送する第1の時間ステップの一例示的ハードウェア図を示す。 図64は、図62のNASデバイスからのデータセットの一部を伝送する第2の時間ステップの一例示的ハードウェア図を示す。 図65−67は、分解されたデータセットをシステムの一部に伝送する一実施例を示す。 図65−67は、分解されたデータセットをシステムの一部に伝送する一実施例を示す。 図65−67は、分解されたデータセットをシステムの一部に伝送する一実施例を示す。 図68は、デカルトトポロジ下において、1次元左右交換を検出するために使用されるパターンを示す。 図69は、円形トポロジ下において、左右交換を検出するために使用されるパターンを示す。 図70は、第1および第2のマトリクスとしての全対全交換検出パターンを示す。 図71は、3つの時間ステップにおける、一例示的4つのノードの全対全交換を示す。 図72は、図71の全対全交換(PAAX/FAAXモデル)の例証的ハードウェア図を示す。 図73は、ベクトル全対全交換モデルのデータパターン検出を示す。 図74は、デカルトトポロジにおける、2次元次隣接データ交換を示す。 図75は、トロイドトポロジにおける、2次元次隣接データ交換を示す。 図76は、図76に示されるデカルトトポロジにおける、2次元赤黒交換を示す。 図77は、トロイドトポロジにおける、2次元赤黒交換を示す。 図78は、デカルトトポロジにおける、2次元左右交換を示す。 図79は、トロイドトポロジにおける、2次元左右交換を示す。 図80は、全縮小交換を検出するために要求されるデータパターンを示す。 図81は、図80の十分なチャネルベースのFAAXの例証的論理図を示す。 図82は、図81の十分なチャネルベースのFAAX交換の例証的ハードウェア図を示す。 図83は、3チャネルオーバーラップ通信における、FAAXモデルを使用して、全縮小(和を用いる)を行なう、スマートNICを示す。 図84は、十分なチャネルの部分的データセットの全対全交換(PAAX)の論理図を示す。 図85は、縮小−散乱モデルデータの移動およびタイミング図を示す。 図86は、PAAXモデルを使用して、縮小散乱(和を用いる)を行なう、スマートNIC8210を示す。 図87は、一例示的全収集データ移動のテーブルを示す。 図88は、十分なチャネルの完全データセット全対全交換(FAAX)としてのベクトル全収集を示す。 図89は、最終結果が、中心の位置であるように、散乱データ部分を収集するための集積モデルのための一例示的データ移動およびタイミング図を示す。 図90は、第1の時間ステップの間の図89に示される集積収集の一例示的ハードウェア図9000を示す。 図91は、第2の時間ステップの間の図89に示される集積収集の一例示的ハードウェア図9100を示す。 図92は、2チャネルハワードカスケードデータの移動およびタイミング図の論理図を示し、本実施例は、縮小和演算を示す。 図93は、2チャネルデータおよびコマンド移動の図92の第1の時間ステップのハードウェア図を示す。 図94は、図92の第2の時間ステップの一例示的ハードウェア図を示す。 図95は、収集モデルのデータ移動の例証的実施例を示す。 図96は、十分なチャネルのハワードカスケード収集の論理図を示す。 図97は、十分なチャネルのハワードカスケードベースの収集通信モデルのハードウェア図を示す。 図98は、和−縮小に取って代わり得る、基本収集演算のリストである。 図99は、和演算を使用する、縮小コマンドの一実施例を示す。 図100は、和演算を使用する縮小コマンドを使用した、ハワードカスケードデータの移動およびタイミング図の一実施例を示す。 図101は、十分なチャネルのオーバーラップハワードカスケードベースの縮小コマンドのハードウェア図を示す。 図102は、計算を伴うオーバーラップ通信を利用して、縮小を行なう、スマートNICの一実施例を示す。 図103は、ベクトル収集演算として検出される、データ移動を示す。 図104は、3つのノードを有する、ベクトル収集システムの論理図を示す。 図105は、十分なチャネルのハワードカスケードベクトル収集演算を行なうための図104のシステムのハードウェア図を示す。 図106は、ハワードカスケードベースのデータ伝送を使用する、直列データ出力のシステムの論理図を示す。 図107は、図106の第1の時間ステップにおける、ハワードカスケードベースのデータ伝送を使用する、直列データシステムの部分的例証的ハードウェア図を示す。 図108は、第2の時間ステップにおける、ハワードカスケードベースのデータ伝送を使用する、直列データシステムの部分的例証的ハードウェア図を示す。 図109は、ハワードカスケードベースの並列データ入力伝送の一実施例を示す。 図110は、図109の第1の時間ステップの間、ハワードカスケードを使用する、並列データ出力システムの一例証的ハードウェア図を示す。 図111は、図109の第2の時間ステップの間、ハワードカスケードを使用する、並列データ出力システムの一例証的ハードウェア図を示す。 図112は、2つの状態(状態1および状態2)および4つの伝送を伴う、状態機械を示す。 図113は、加えて、状態2.1および状態2.2を含む、図112の状態2を示す。 図114は、検出のための状態遷移を伴う、組み合わせデータ移動を要求する、並列処理判定プロセスの例証的実施例を示す。 図115は、各関連付けられたデータおよび遷移カーネル関連付けのためのインデックス、出力値のリスト、および拡張機能カーネルへのポインタを含有するファイルを出力する、アルゴリズムを処理するための例示的方法を示す。 図116は、my adding(追加)、changing(変更)、またはdeleting(削除)のいずれかの並列拡張機能を処理するための一例示的方法11600を示す。 図117は、アルゴリズムを処理するための一例示的システムを示す。 図118は、6つの並列処理構成要素を組み合わせるために使用される、例示的アルゴリズムを示す。
定義
本書の目的のために、以下の定義は、本明細書で使用されるように、以下の用語の解釈のためのガイドラインを供給するために提供される。
制御カーネル−制御カーネルは、以下のタイプのコンピュータ言語構造:サブルーチン呼出し、ループ文(for、while、do等)、決定文(if−then、−else等)、および分岐文(go to、jump、continue、exit等)のみを含有する、いくつかのソフトウェアルーチンまたは関数である。
プロセスカーネル−プロセスカーネルは、以下のタイプのコンピュータ言語構造:サブルーチン呼出し、ループ文、決定文、または分岐文を含有しない、いくつかのソフトウェアルーチンまたは関数である。情報は、RAMを介して、プロセスカーネルへおよびそこから渡される。
混合カーネル−混合カーネルは、制御およびプロセスカーネルコンピュータ言語構造の両方を含む、いくつかのソフトウェアルーチンまたは関数である。
データ転送通信モデル−これらは、別個のサーバ、プロセッサ、またはコアへ/から情報を転送するためのモデルである。
制御転送モデル−制御転送モデルは、制御情報をシステム状態機械インタープリタに転送するために使用される方法から成る。
状態機械−本明細書で採用される状態機械は、正しい順序でプロセスカーネルのアクティブ化を提供する、単一の非言語構造内に、全関連付けられた制御カーネルをともにリンクさせる、2次元マトリクスである。
状態機械インタープリタ−状態機械インタープリタは、状態機械の状態および状態遷移が、ドキュメンテーションとしてではなく、アクティブソフトウェアとして使用される、方法である。
プロファイル化−プロファイル化は、アルゴリズム処理タイミング、ランダムアクセスメモリ利用、データ移動パターン、および状態遷移パターンのランタイム分析が、行なわれる、方法である。
ノード−ノードは、処理コア、またはプロセッサ、メモリ、および通信能力から成る、処理要素である。
ホームノード−ホームノードは、ハワードカスケードベースのコンピュータシステム内の制御ノードである。
拡張機能カーネルの操作
本方法を使用して、並列処理システム内の実行のために書かれなければならない唯一のコードは、線形独立コードのみを表す、プロセスカーネルのために要求されるコードである。前述の6つの拡張機能要素のいずれかの選択は、インターフェースシステム(例えば、図117に示されるシステム11700)に、新しい並列化モデルが定義されていることを通知する。本実施形態では、並列処理クラスタシステム11701(図117)は、状態機械(例えば、有限状態機械11746)内において、非拡張機能カーネルのみを実行する。状態機械内の状態は、動作されるべき非拡張機能カーネルコードに対応し、状態遷移は、制御フロー条件に対応する。並列処理クラスタシステム11701は、状態機械内の「非拡張機能」カーネルのみを実行するため、状態遷移および非拡張機能カーネルは、6つの拡張機能要素のそれぞれに対して、異なる検出可能、並列処理パターンをもたらす。
本システムは、並列処理モデルを定義する、カーネルの作成を促進する。これらのカーネルは、「並列拡張機能カーネル」と呼ばれる。並列拡張機能カーネルを定義するために、並列処理を定義するために必要とされる、以下の全6つの要素が、定義されなければならない:トポロジ、分散、入力データ、出力データ、相互通信、および集積。図118は、全6つの要素を組み合わせ、並列拡張機能カーネルを定義するために使用される、例示的アルゴリズムを示す。
図118に示されるように、インターフェースシステムが、最初に、ステップ11805において、名称および新しい並列拡張機能カーネルへのポインタを受信する。ステップ11810では、定義されている要素が、入力データセットまたは出力データセットである場合、受信された入力/出力データ変数の名称、タイプ、および次元は、定義されている本拡張機能カーネルと関連付けられる。
ステップ11820−11835では、拡張機能要素のどの可能性として考えられる他のタイプが、現在、定義されているかを判定するためのチェックが、行なわれる。タイプの拡張機能要素のタイプが、判定されると、次いで、ステップ11840において、既存の並列拡張機能モデル要素が選択されているかどうか、または新しいモデル、すなわち、既存のモデル内の新しい要素が、定義されているかどうかに関して、チェックが、行なわれる。
既存の並列拡張機能モデル要素が、選択されている場合、ステップ11850において、適切な要素が、インターフェースシステム上に常駐するリスト、例えば、LTM11722内のリスト11754から選択される。新しい並列拡張機能モデル、すなわち、既存のモデル内の新しい要素が、定義されている場合、ステップ11845では、拡張機能の名称(または、拡張機能モデルの名称)および関連パラメータが、受信され、インターフェースシステム内のリスト、例えば、LTM11722内のリスト11754に追加される。両方の場合において、選択された拡張機能要素または他の供給された情報は、定義されている並列拡張機能カーネルと関連付けられる。
データおよび遷移の2つのパターンタイプが、存在する。これらのパターンタイプの存在は、カーネルタイプ、アルゴリズム抽出データアクセスパターンカーネル、およびアルゴリズム状態遷移パターンカーネルを判定する、2つの特殊パターンによって判定されてもよい。カーネルタイプを検索するこれらの2つのパターンの出力値は、組み合わせて、第3のカーネル(並列拡張機能カーネル)が、状態機械インタープリタによって起動される必要があるかどうかを判定するために使用される。
本システムによると、状態機械インタープリタ(SMI)(図示せず)は、入力として、制御カーネルから成る状態ベクトルを使用してともに接続される、プロセスカーネルおよび関連付けられたデータストレージである、状態から成る、有限状態機械をとる、コンピュータシステムである。プロセスカーネル、データストレージ、および制御カーネルの組み合わせは、標準コンピュータプログラムと同一の能力を提供し、したがって、SMIの出力は、機能的コンピュータプログラムである。
パターン使用−並列拡張機能カーネルの追加
並列拡張機能カーネルは、例えば、システムユーザによって追加されてもよい。この一実施例は、要素の選択後、例えば、ユーザインターフェースからの管理レベルユーザの追加ボタン選択である。システムインターフェースは、次いで、自動化並列拡張機能登録(APER)画面を表示する。APER画面は、並列拡張機能の名称を表示し、作成組織の名称と組み合わせられたカテゴリは、新しい並列拡張機能要素を定義する。
拡張機能要素は、以下の3つのコンピュータプログラムタイプのうちの1つを有してもよい:データカーネル、遷移カーネル、および拡張機能カーネル。データカーネルは、標準カーネルまたはアルゴリズムが、プロファイル化されるときに生じる、RAMアクセスを追跡する、ソフトウェアである。したがって、データカーネルは、データ移動/アクセスパターンを判定するために使用される、検出方法を表す。
遷移カーネルは、プロファイル化されたカーネルまたはアルゴリズムのための状態機械の実行の間に生じる、データ遷移を追跡する、ソフトウェアである。遷移カーネルは、状態遷移パターンを判定するために使用される検出方法を表す。データカーネルと遷移カーネルとの間に存在する関係は、「データおよび遷移パターン関係条件」と称される。データおよび遷移パターン関係条件は、状態機械インタープリタが、拡張機能カーネルを利用するための条件が存在することを把握するように、データカーネルおよび遷移カーネルの一方または両方からの出力データをチェックするために使用される。
拡張機能カーネルは、並列処理モデルを表す、ソフトウェアである。拡張機能カーネルは、データまたは遷移パターンが検出される場所(相互通信集合要素の場合)、または適切な時間(他の集合要素の場合)のいずれかの点で利用される。並列処理イベントの自動検出および検出された並列処理を行なうために要求される後続コード等の知的特性が、開発者による使用のために利用可能になる状況では、コードを利用可能にする組織は、並列化されたアプリケーションコードに対して、料金をエンドライセンス料に追加してもよい。
図115は、インデックス、出力値のリスト、および各関連付けられたデータおよび遷移カーネルに対する拡張機能カーネルへのポインタを含有するファイルを出力する、アルゴリズムを処理するための方法11500を示す。最初に、アルゴリズムが、実行され、最大ベクトル/マトリクスへのデータアクセスが、追跡される。データの物理的移動は、要素のコンテンツの同一のベクトル/マトリクス内の異なる要素へのコピーを伴う。相対的物理的要素移動は、追跡され、追跡記録は、保存される。保存された追跡記録は、パターンと呼ばれる。保存された追跡記録は、次いで、既知のパターンのライブラリと比較される。現在のパターンが、パターンのライブラリ内で見つけられる場合、見つけられたライブラリパターンの離散化(トポロジ)モデルが、現在のカーネルに割り当てられる。見つけられたライブラリパターンの(と関連付けられた)拡張された並列カーネルは、現在のカーネルに付け加えられ、ある状態として、現在のカーネルと、少なくとも1つの他の状態として、拡張された並列カーネルとを伴う、有限状態機械を形成する。
ステップ11510では、方法11500は、アルゴリズムの有限状態機械の直列バージョンを、そのプロファイラがONに設定された状態機械インタープリタ内にロードする。ステップ11520は、アルゴリズムの有限状態機械によって使用される全メモリ位置を全データカーネルに渡す。ステップ11530は、データカーネルのリストをスレッド1上で動作させ、全データ移動をデータ出力Aファイル内に記憶する。ステップ11540は、遷移カーネルのリストをスレッド2上で動作させ、全遷移データをデータ出力Bファイル内に記憶する。ステップ11550は、全入力データが処理されるまで、試験入力データを使用して、アルゴリズムの有限状態機械をスレッド3上で動作させる。ステップ11560は、インデックスをゼロに等しくなるように設定する。決定ステップ11570は、インデックスされたデータ出力Aおよびデータ出力Bが、パターンに一致するかどうか判定し、その一実施例は、以下に示される。
データパターン検出実施例:
以下の2次元データ移動の検出:
これは、以下に変換される:
加えて、検出の過程の間、検出されたデータ移動が、以下のようである場合:
Xインデックス={1,2,3,1,2,3,1,2,3}
および
Yインデックス={1,1,1,2,2,2,3,3,3}、
これは、2次元転置行列を示す。本タイプの2次元転置行列のデータは、複数の行に分割され得(並列サーバあたり1行程度と少ない)、離散化モデル、複数のサーバにわたる入力データセット分散、およびシステムの集積モデルバックアウトを含意する。一実施例では、前述のパターンの検出からの並列化は、以下である:
離散化拡張機能:サーバ1=(1,1)、(1,2)、(1,3)
サーバ2=(2,1)、(2,2)、(2,3)
サーバ3=(3,1)、(3,2)、(3,3)
ハワードカスケード分散拡張機能
転置行列拡張機能
ハワードカスケード集積拡張機能
識別されたモデルの組み込みは、本システムが、アプリケーションを完全に並列化することを可能にする。インデックスデータAおよびデータBが、パターンに一致する場合、方法11500は、ステップ11575に移動し、方法11500は、関連付けられた拡張機能カーネルをアルゴリズムの有限状態機械内に記憶し、処理は、ステップ11580に移動する。一実施例では、データ出力Aのインデックス3は、データ出力Bのインデックス3と同一の拡張機能カーネルを指す。そうでなければ、処理は、ステップ11580に移動する。
ステップ11580は、インデックスをインクリメントし、次いで、ステップ11590に移動し、インデックスの判定は、遷移およびデータパターン関連付けの総数に等しい。ステップ11590が、インデックスが、遷移およびデータパターン関連付けの総数と等しくないと判定する場合、処理は、ステップ11570に移動する。そうでなければ、方法11500は、終了する。
図116は、my adding(追加)、changing(変更)、またはdeleting(削除)のいずれかの並列拡張機能を処理するための一例示的方法11600を示す。方法11600では、ユーザは、並列拡張機能(ステップ11602)、並列処理要素(ステップ11604)、および操作選択肢(ステップ11606)を選択する。ステップ11602−11604の実施例は、ユーザによるユーザインターフェース上の1つ以上のボタンを選択である。
決定ステップ11620は、追加拡張機能が選択されるかどうか判定する。追加決定が、ステップ11602−11606において選択される場合、11620は、決定ステップ11622に移動する。ステップ11622では、選択された並列拡張機能の名称が存在するかどうか判定される(ステップ11602において選択される)。並列拡張機能の名称が、存在しない場合、処理は、エラー条件ステップ11650に移動し、エラーが、方法11600の終了に先立って判定される。ステップ11622において、選択された並列拡張機能の名称が存在すると判定される場合、処理は、ステップ11624に移動する。ステップ11624では、方法11600は、方法11600の終了に先立って、拡張機能に関連付けられたデータならびに記述情報のためのコードを状態機械インタープリタに追加する。ステップ11620において、追加拡張機能が選択されないと判定される場合、処理は、決定ステップ11630に移動する。
決定ステップ11630において、方法11600は、変更拡張機能が、ステップ11602−11606において選択されたかどうか判定する。変更拡張機能が選択される場合、処理は、ステップ11632に移動する。ステップ11632では、選択された並列拡張機能の名称が存在するかどうか判定される。並列拡張機能の名称が存在しない場合、処理は、エラー条件ステップ11650に移動し、エラーが、方法11600の終了に先立って判定される。拡張機能の名称が存在すると判定される場合、処理は、ステップ11634に移動する。ステップ11634において、方法11600が、データまたは遷移または拡張機能または記述情報のためのコードを変更し、次いで、変更を状態機械インタープリタに追加する。方法11600は、次いで、終了する。ステップ11630において、変更拡張機能が選択されない場合は、処理は、決定ステップ11640に移動する。
ステップ11640において、削除拡張機能が、ステップ11602−11606において選択されるかどうか判定される。削除拡張機能が選択される場合、処理は、決定ステップ11642に移動する。ステップ11642では、選択された並列拡張機能の名称が存在するかどう判定される。並列拡張機能の名称が存在しない場合、処理は、エラー条件ステップ11650に移動し、エラーが、方法11600の終了に先立って判定される。拡張機能の名称が存在すると判定される場合、処理は、ステップ11644に移動する。ステップ11644では、並列拡張機能の名称データが、方法11600の終了に先立って削除される。ステップ11640において、追加拡張機能が選択されないと判定される場合、処理は、エラー条件ステップ11650に移動し、エラーが、方法11600の終了に先立って判定される。
図117は、図115の方法11500に説明されるように、アルゴリズムを処理するための一例示的システムを示す。システム11700は、プロセッサ11712(例えば、中央処理単位)、内部通信システム(ICS)11714(例えば、北/南ブリッジチップセット)、Ethernet(登録商標)コントローラ117116、不揮発性メモリ(NVM)11718(例えば、「キープアライブ」バッテリと連結されたCMOSメモリ)、RAM11720、および長期メモリ(LTM)11722(例えば、HDD)を含む。
本実施例では、RAM11720は、プロファイラ11732、第1のスレッド11734、第2のスレッド11736、第3のスレッド11738、データ出力A11740、データ出力B11742、およびインデックス11744を有する、インタープリタ11730を記憶する。LTM11722は、有限状態機械(FSM)11746、メモリ位置11748ストレージ、試験データ11750、およびシステムソフトウェアを記憶する。NVM11718は、ファームウェア11719を記憶する。ICS11714は、システム11700内およびシステム11700の外部のシステムと通信するためのEthernet(登録商標)コントローラ11716およびEthernet(登録商標)接続部11717へのデータの転送を促進する。プロセッサ11712は、コード、例えば、インタープリタ11730、ファームウェア11719、およびシステムソフトウェア11752を実行する。システム11700は、方法11500によって説明されるように、アルゴリズムを処理するための機能性を維持する限り、タイプの含まれる構成要素の数およびタイプならびに組織構造によって変動されてもよいことを理解されるであろう。
図1は、関連付けられたクラスタシステム(例えば、図17における並列処理クラスタシステム11701)が、自動的に、特定の並列処理拡張機能をそのアルゴリズムに適用可能であるように、標的アルゴリズムが、どのようにデータにアクセスし、状態遷移を行なうかを図示する、例示的データフロー図100である。図1に示されるように、データアクセスパターン抽出アルゴリズム110が、アルゴリズムデータ104にアクセスするプロファイル化されたアルゴリズム102によって行なわれるデータアクセス106から、データアクセス情報108を抽出する。
データアクセスパターン抽出アルゴリズム110によって抽出されたデータアクセスパターンが、データカーネル内で見つけられたパターンに一致する場合、関連付けられたデータカーネルの出力データ、データ−A112は、真であると設定される。そうでなければ、偽であると設定される。同様に、状態遷移パターンが、状態遷移パターン抽出アルゴリズムプロファイラ130によって、状態インタープリタ122とアルゴリズム遷移124との間の通信を介して、遷移126のためのアクセスデータ128から抽出される。状態遷移パターンが、遷移カーネル内で見つけられたパターンに一致する場合、遷移−カーネル出力データ、データ−B132は、真であると設定される。そうでなければ、偽であると設定される。
2つのプロファイル方法は、データおよび遷移パターン関係を使用して、組み合わせられることができる。図2のテーブル200は、データおよび遷移プロファイル出力の有効な組み合わせを示す。テーブル200では、データパターンプロファイル化の出力(図1のデータ−A112)は、Aによって表され、遷移パターンプロファイル化の出力(図1のデータ−B132)は、Bによって表される。
図1に示されるように、決定ステップ134において、パターン−出力値間の比較の結果が、真と解明される場合、すなわち、データ−Aが、データ−Bと互換性がある場合、現在の要素のための拡張機能が、「インタープリタに対する追加拡張機能」140に示されるように、プロファイル化によって識別されたメモリ位置において、状態インタープリタ122に適用される。複数のカーネルが、自動並列処理に関与するが、複数のカーネルは、ともに記憶される。したがって、ライセンス料、ライセンス期間、使用あたり料金、無料使用の回数、および記述を含み得る、カーネル属性が、アプリケーションと呼ばれる単一エンティティ内の本グループの複数のカーネルと関連付けられる。
作成された拡張機能は、並列処理クラスタシステム11701内に(例えば、データベース内に)記憶される。拡張機能はまた、クラスタシステム11701内で編集および削除されてもよい。
初期トポロジ実施例
本システムに対して想像可能な特定の任意のトポロジを追加することが可能であるが、以下は、着目初期トポロジを説明する。
メモリアクセス追従方法
メモリに対する変化が、種々のデータトポロジタイプを検出するために追跡される。並列処理クラスタシステム11701は、RAM(例えば、図117におけるRAM11720)を利用して、プロセスカーネルをともに接続し、したがって、正しいアドレスおよびRAMキーを伴う、任意のプロセスカーネルが、そのデータの処理に干渉せずに、RAMエリア11720を閲覧し得る。例えば、分析のために、共有データを別のシステム(または、同一のシステムの異なる部分)にゴーストコピーすることが可能である。アプリケーションは、最初に、RAMエリアからジョブ番号をとり、本ジョブ番号をRAMキーとして使用する。標準「shmget」コマンドを呼び出し、RAMのブロックを配分するのではなく、アプリケーションは、「MPT_shmget」と呼ばれる、「shmget」の修正バージョンを呼び出す。図3は、システムライブラリからの「shmget」の使用を図示する、例示的ソースコード300を示す。
関数「shmget」は、C−プログラミング言語関数「shmget」、「calloc」、または「malloc」と同様に定義されるが、キー、サイズ、およびフラグパラメータならびにRAM識別(「MPT_shmid」)が、メッシュタイプ決定子によってアクセス可能である。本メッシュタイプ決定子は、周期的に、またはソフトウェア中断の検出が、RAMエリアからRAMゴーストコピーエリア(典型的には、ディスクストレージエリア)内に、RAM値をタイムスタンプとともにコピーさせた後のいずれかにおいて、パターン検出器によって行なわれる分析に基づいて、複数のサーバ間でデータセットを分割する方法を判定する、ソフトウェアである。アルゴリズムの動作が完了すると、システム11700は、RAMゴーストコピーエリア内でデータを分析し、メッシュタイプを判定する。以下のセクションは、メッシュタイプを定義するために使用される、データセットアクセスパターンを説明する。
Mesh_Type_Standardの判定、1次元実施例
本メッシュタイプの目的は、アレイ内において、データを連続して処理することである。ワークロードは、処理されているアレイ要素にかかわらず、同一のままであると仮定される。プロファイラは、各要素を処理するためにかかる時間を計算する。MESH_TYPE_Standardメッシュタイプは、ビンに基づいて、分解する。第1に、MESH_TYPE_Standardは、N個のデータビンを作成し、各ビンは、計算要素(サーバ、プロセッサ、またはコア)数に対応する。各計算要素は、それと関連付けられた1つ以上のビンを有してもよいことを理解されたい。次に、アレイ要素は、ビンにわたって、等しく分散される。図4は、4つの計算要素によって処理するための16のシーケンシャルデータアイテムの例示的ビニングを図示する、テーブル400であって、各要素は、ビン1−4の1つに対応する。
Mesh_Type_Standard、1次元静的および動的オブジェクト実施例
適切なメッシュタイプ標準(Mesh_Type_Standard)トポロジモデルを選択するために使用される、以下の2つの分析方法が存在する:静的オブジェクト方法および動的オブジェクト方法。本明細書では、「オブジェクト」と称される、データオブジェクトはまた、任意の有効な数値データ値であってもよく、そのサイズは、アレイ要素サイズ以上であって、要素の最大数までである。オブジェクトが、最大数の要素に等しい場合、定義によって、オブジェクトは、静的となる。また、データオブジェクトが、要素位置を変更していない、またはそれが定義するアレイ要素の数を変更していない場合、オブジェクトは、静的である。代替として、カーネル処理の間、任意のデータオブジェクトが、要素位置を変更している、またはアレイ要素の数を変更している場合、それらのオブジェクトは、動的である。
図5は、1つのオブジェクトを伴う、次元タイプ1の静的アレイ処理を図示する。図5は、a[x]変換502が適用される前の例示的データアレイ500と、変換502が適用された後のアレイ500を表す、アップデートされたアレイ504とを表す。
図6は、2つのオブジェクトを伴う、次元タイプ1の静的アレイ処理を図示する。図6は、a[x]変換602が適用される前の例示的データアレイ600と、変換602が適用された後のアレイ600を表す、アップデートされたアレイ604とを示す。
図7は、3不等間隔オブジェクトを伴う、標準1次元静的アレイ処理を図示する。図7は、a[x]変換702が適用される前の例示的データアレイ700と、変換702が適用された後のアレイ700を表す、アップデートされたアレイ704とを示す。
図5では、要素のうちの9つが、オブジェクトを分離するいかなる未処理要素も伴わずに、変換後、値を変更する。変更は、隣接要素のそれぞれにおいて、異なる値をもたらす。図6では、未処理エリアによって分離される、複数のセットの隣接する処理済み要素が、存在する。データオブジェクトが、オブジェクトが移動していないため、特定されているが、アレイは、標準静的オブジェクトとして取り扱われることができる。
図8は、データオブジェクトがアレイ内でスキップされる場合に生じる、別のタイプの静的オブジェクトを示す。図8は、a[x]変換802が適用される前の例示的データアレイ800と、変換802が適用された後のアレイ800を表す、アップデートされたアレイ804とを表す。これは、スキップ要素によってアクセスされる5つのオブジェクトを伴う、標準1次元静的アレイ処理を図示する。
図9は、2つの移動オブジェクトを伴う、標準1次元動的アレイ処理を図示する。図9は、a[x]変換902が適用される前の例示的データアレイ900と、変換902が適用された後のアレイ900を表す、アップデートされたアレイ904とを示す。
図10は、2つの成長オブジェクトを伴う、標準1次元動的アレイ処理を図示する。図10は、a[x]変換1002が適用される前の例示的データアレイ1000と、変換1002が適用された後のアレイ1000を表す、アップデートされたアレイ1004とを示す。
図9および10の実施例は、動的オブジェクトを表す。図9は、オブジェクトが、位置を変更しているため、動的オブジェクトを示し、図10は、オブジェクトのうちの1つ以上がサイズを変更しているため、動的オブジェクトを示す。
以下の説明は、どのMesh_Type_Standardモデルが、カーネルをプロファイル化するために利用されるかを詳述する。カーネルをプロファイル化する間、同一のワークロードを伴う、静的データのアレイが、連続してアクセスされる場合、インデックス、ストライド、またはオーバーラップを伴わない、メッシュタイプ標準(Mesh_Type_Standard)トポロジモデルが、使用される。静的オブジェクトを伴う、アレイの処理が、アレイの第1の要素からオフセットされて開始される場合、インデックスを伴う、メッシュタイプ標準トポロジモデルが、使用される。静的オブジェクトを伴う、アレイの処理が、開始され、アクセスされるオブジェクト間の距離が固定される、またはカーネルが、いくつかの要素を均等にスキップすることによって、静的データにアクセスする場合、ストライドを伴う、メッシュタイプ標準トポロジが、使用される。カーネルが、複数の静的な不等間隔オブジェクトにアクセスする場合、オブジェクトのサイズは、可能なビンの数を定義する。加えて、ビン間のオーバーラップは、最大オブジェクトのサイズの2倍であるように定義される。同一のワークロードを伴う、動的データのアレイが、アクセスされる場合、オーバーラップを伴う、メッシュタイプ標準トポロジモデルが、使用される。オーバーラップエリアのサイズは、最大データオブジェクトサイズが遭遇する2倍である。
加えて、種々のメッシュタイプ標準トポロジモデルは、例えば、以下のメッシュタイプ標準トポロジモデルを生成するためにともに組み合わせられることができる:インデックス、ストライド、インデックスとストライド、インデックスとオーバーラップ、ストライドとオーバーラップ、およびインデックスとストライドとオーバーラップ。
Mesh_Type_Standard、リングデータ構造実施例
処理の間、アレイの両端が一致する場合、アレイは、リング構造と見なされる。リング構造は、動的データオブジェクトにのみ関連する。以下は、リング構造を使用する、動的データオブジェクトの実施例である。
図11は、リングを中心として移動する2つのオブジェクトを伴う、標準1次元動的アレイ処理を図示する。図11は、a[x]変換1102が適用される前の例示的データアレイ1100と、変換1102が適用された後のアレイ1100を表す、アップデートされたアレイ1104とを示す。
図12は、リングを中心として成長する2つのオブジェクトを伴う、標準1次元動的アレイ処理を図示する。図12は、a[x]変換1202が適用される前の例示的データアレイ1200と、変換1202が適用された後のアレイ1200を表す、アップデートされたアレイ1204とを示す。
Mesh_Type_Standard、1次元不均衡ワークロード実施例
明確にするために、図13および14は、ともに検討されるべきである。静的データオブジェクトは、潜在的データビンのいくつかのみ内にランダムに集中され得る。これが検出されると、システムトポロジは、ビンあたりのデータオブジェクトの数を均衡化することによって、ワークロードを均衡化しなければならない。図13は、アレイ1300の両端(ビン1およびビン4)に集中される4つのデータオブジェクト(データオブジェクト1302−1308)の実施例を示し、不均衡ワークロードを図示し、ビン2およびビン3は、ワークがない。
ワークを均衡化するために、ポインタ(例えば、図14におけるポイント1402−1408)は、各データオブジェクト1302−1308と関連付けられる。各ポインタは、次いで、ビンによって参照され、例えば、ビン1は、図14に示されるように、ポインタ1402を参照する。図14は、ポインタの使用を通して、アレイ1400内の不均衡データオブジェクト位置からワークロードを均衡化するステップを図示する。
単一レベルの間接参照によって、すなわち、ポインタの使用を通して、データオブジェクトとビンを関連付けることによって、静的ランダムに配置されたデータオブジェクトから生成されるワークを均衡化することが可能である。本モデルは、データオブジェクトがワークを均衡化するために要求されるどのようなものでも、各ビンが含有することを可能にする。
Mesh_Type_Standard、1次元可変グリッド実施例
1次元可変グリッドトポロジは、ある数のデータ移動サイクル後に生じ得、データオブジェクトは、集中を変更し、したがって、ワークロードを変更する。一例として、ポイントがデータオブジェクトとビンを関連付けるために使用される、図14に示される均衡化されたワークロードシナリオを仮定する。図15の実施例では、ある数のデータ移動後、4つのデータオブジェクトが、図15に示されるように、位置する。ポインタ1402−1408をアップデートすることによって、均衡化されたワークロードが維持される。
Mesh_Type_Standard、1次元実施例:インデックス、ストライド、インデックスとストライド、およびオーバーラップ実施例のデータ分解計算
統合して、本メッシュタイプのためのデータトポロジを作成する、3つのパラメータが、存在する。パラメータは、インデックス、ストライド、およびオーバーラップ(「オーバーラップ」は、図16にOとして示される)である。図16は、インデックス、ストライド、インデックスとストライド、オーバーラップ、インデックスとオーバーラップ、ストライドとオーバーラップ、およびインデックスとストライドとオーバーラップを伴う、次元標準データセットトポロジを図示する、一例示的テーブル1600を示す。図16は、3つのパラメータインデックス、ストライド、およびオーバーラップを図4に与えられる実施例に適用することによってもたらされ得る、実施例を示す。
Mesh_Type_Standard、2次元実施例
メッシュタイプ標準トポロジ方法は、要素あたりのワークの量が同一のままである限り、2次元に拡張され得る。図17は、例示的2次元標準データセットトポロジ1700を示す。
Mesh_Type_Standard、2次元静的および動的オブジェクト実施例
単一次元メッシュタイプの標準モデル同様に、2次元バージョンは、静的および動的オブジェクトの両方を有する。余剰次元のため、データオブジェクトの定義は、第2の次元に拡張される。動的データオブジェクトは、同様に、両次元において成長および移動することができる。図18は、1つの大きいデータオブジェクトを伴う、標準2次元静的アレイ処理を図示する。図18は、a[x][y]変換1802の適用される前の静的オブジェクトの一例示的2次元テーブル1800と、変換1802が適用された後のアレイ1800を表す、アップデートされたアレイ1804とを示す。
図19は、2つの小データオブジェクトを伴う、標準2次元静的マトリクス処理を図示する。図19は、a[x][y]変換1902が適用される前の静的オブジェクトの一例示的2次元テーブル1900と変換1902が適用された後のアレイ1900を表す、アップデートされたアレイ1904とを示す。
図18と図19との間の差異に留意されたい。図18および19を参照すると、オブジェクトは、非ゼロ値の隣接する要素のグループであって、未処理要素は、処理/変換の間、値を変更しない要素、例えば、図19に見られるように、ゼロ値を伴う要素である。また、未処理要素は、オブジェクトを分離してもよい。図18では、オブジェクトを分離するいかなる未処理要素も伴わずに、変換1802によって処理された後、全100のデータ要素が、値を変更する。すなわち、テーブル1800および1804は、オブジェクトを相互から隔離する、任意のゼロ値(未処理要素)を含有しない。さらに、変更は、隣接要素のそれぞれにおいて、異なる値をもたらす。図19では、未処理エリアによって分離される、隣接処理済み要素から成る、2つのオブジェクト、オブジェクト1906および1908が、存在する。複数のオブジェクトが存在するが、オブジェクトは、オブジェクトが移動していないため、特定可能である。したがって、アレイは、標準静的オブジェクトとして取り扱われることができる。
図20は、2つの移動オブジェクトを伴う、標準2次元動的アレイ処理を図示する。図20は、オブジェクトの一例示的2次元テーブル2000と、−a[x][y]変換2002適用前のオブジェクト2006、2008、および2010と、変換2002が適用された後のアレイ2000を表す、アップデートされたアレイ2004とを示す。オブジェクト2010は、変換2002がテーブル2000に適用されると、オブジェクト2010の最右要素が、アレイからシフトされるため、オブジェクト2010’に変換される。図20に示される「変換後」テーブル2004は、2次元デカルト空間のx−軸にわたるオブジェクト移動の効果を示す。空間は、有限であるため、オブジェクトは、事実上、空間から「飛び出る」。これが、2次元トロイドの場合、1+最後のx−軸インデックス値は、最初のx−軸インデックス値となるであろう。y−軸は、同様に挙動し、2次元トロイドの1+最大y−値は、最初のy−軸インデックス値に等しくなるであろう。
Mesh_Type_Standard、2次元実施例:インデックス、ストライド、インデックスとストライド、およびオーバーラップデータ分解計算
1次元の場合におけるように、実際のトポロジは、インデックス、ストライド、およびオーバーラップパラメータを用いて生じる。図21は、インデックス2104、ストライド2106、インデックスとストライド2108、およびオーバーラップ2110実施例を伴う、2次元交互データセットトポロジを含む、標準2次元交互データセットトポロジ2102および4つの付加的実施例を示す。各次元は、その独自のオーバーラップパラメータ、オーバーラップ2112および2114を有することに留意されたい。
Mesh_Type_Standard、3次元実施例
図22は、全次元が単調である限り、3次元に拡張され得る、一例示的3次元標準データセットトポロジを図示する。図22は、全次元が単調である限り、3次元に拡張され得る、メッシュタイプ交互トポロジ方法によって形成される、テーブル2200を示す。テーブル2210は、例示的計算デバイス2201、2202、2203、および2204を示す。図22の実施例では、各計算デバイス2201、2202、2203、および2204は、4つの3次元ビン、(例えば、デバイス1は、ビン1,1,1、ビン1,1,2、ビン1,1,3、およびビン1,1,4を有する)を含む。各ビンは、テーブル2200の例示的メッシュタイプ交互トポロジ方法によって分散される複数のデータポイントを含む。
Mesh_Type_Standard、3次元実施例:インデックス、ストライド、およびオーバーラップデータ分解計算
図23−26は、インデックス、ストライド、およびオーバーラップを利用する、3次元メッシュタイプの標準分解の4つの実施例を示す。1次元および2次元場合と同様に、3次元トポロジは、インデックスおよびステップパラメータを用いて生じるが、第3の次元の複雑性が追加されている。以下は、3次元交互トポロジの4つの実施例を示す。
図23は、3次元交互トポロジモデルを使用する、4つの計算デバイスへの1から256のデータポイントの分散を示す。
図24は、インデックス=1を利用する、4つの計算デバイスへのデータポイントの分散を示す。図24の実施例では、最初のデータアイテムは、インデックス(スキップ)され、ビンに対する最後のデータアイテム(最初のデータアイテムに一致される、オリジナルデータアイテムの数が偶数である場合)もまた、スキップされる。最初と最後のデータアイテムのスキップは、各次元における計算デバイスのそれぞれに対して生じる。
図25は、ストライド=1を利用する、4つの計算デバイスへのデータポイントの分散を示す。図25の実施例では、ストライド=1によって、分散方法は、1つおきのデータ単位をストライドする(スキップする)。すなわち、ストライド=0の場合、ビン1,1,1は、データ単位{(1、2、3、4、9、10、11、12、245、246、247、248、253、254、255、256)を受信するであろう。ストライド=1では、ビン1,1,1は、データ単位(2、4、10、12、246、248、254、256)がスキップされるように、データ単位(1、3、9、11、245、247、253、255)を受信する。これは、各次元における計算デバイスのそれぞれに対して生じる。
図26は、1要素ずつ、x、y、およびz次元にオーバーラップさせることによる、4つの計算デバイスへのデータポイントの分散を示す。各次元は、その独自のオーバーラップパラメータを有することを理解されるであろう。本実施例では、x、y、およびz次元のオーバーラップパラメータは、それぞれ、Ο、O、およびOである。したがって、図26の実施例では、1要素ずつ、x、y、およびz次元にオーバーラップさせることは、オーバーラップがO=O=O=1となるように選択することである。
Mesh_Type_Alternateの判定、1次元実施例
Mesh_Type_Alternateメッシュタイプの目的は、使用されるデータアイテムの関数として、ワークロードへの単調変更が存在するとき、ロードバランシングを提供することである。プロファイラは、各要素を処理するためにかかる時間を計算する。処理時間が、継続的に増加するか、または継続的に減少するかのいずれかである場合、ワークロードに対する単調変更が存在する。Mesh_Type_ALTERNATEメッシュタイプは、最初に作成するN個のデータビンに基づいて分解し、各ビンは、計算要素(サーバ、プロセッサ、またはコア)数に対応する。次に、交互データ位置が、各ビンに追加される。
比較として、データ位置が、交互性(例えば、1次元標準方法におけるように)を伴わずに、各ビンに追加される場合、処理時間に不均衡が生じるであろう。この一実施例は、データセット{1、2、3、4、5、6、7、8、9、10、11、12、13、14、15、16}によって描写されるように、ワークロードが線形に成長する場合(すなわち、データ移動間の時間が、線形に成長する場合)であって、本系列は、時間の増加を表す。発生の順序で各増加項を4つの計算要素(ビンによって表される)に追加することは、例えば、図27のテーブル2700に示されるように、計算要素の不均衡を発生させるであろう:
ビン、={1、2、3、4}、平均処理時間=(1+2+3+4)/4=2.5時間単位/データアイテム、
ビン={5、6、7、8}、平均処理時間=(5+6+7+8)/4=6.5時間単位/データアイテム、
ビン={9、10、11、12}、平均処理時間=(9+10+11+12)/4=10.5時間単位/データアイテム、
ビン={13、14、15、16}、平均処理時間=(13+14+15+16)/4=14.5時間単位/データアイテム。
これは、処理時間における不均衡のため、ワークを完了するために、14.5時間単位(最長ビン化グループ時間)かかるであろうことを意味する。代替として、1次元交互データセットトポロジが使用される場合、図28のテーブル2800に示されるように、以下となる:
計算デバイス1=ビン={1、16、2、15}、平均処理時間=8.5時間単位/データアイテム、
計算デバイス1=ビン={3、14、4、13)、平均処理時間=8.5時間単位/データアイテム、
計算デバイス1=ビン={5、12、6、11}、平均処理時間=8.5時間単位/データアイテム、
計算デバイス1=ビン={7、10、8、9}、平均処理時間=8.5時間単位/データアイテム。
したがって、1次元交互データセットトポロジは、1次元標準方法より1.7(14.5/8.5)倍高速である。
1次元交互データセットトポロジ方法は、インデックス機能性およびストライド機能性(前述の)等の交互および/または拡張機能性を有することができることを理解されるであろう。
Mesh_Type_Alternate、1次元静的および動的オブジェクト実施例
2つの分析方法は、適切なメッシュタイプ交互トポロジモデル:静的−オブジェクト方法および動的−オブジェクト方法を選択するために使用されてもよい。オブジェクトという用語は、データオブジェクトを指す。データオブジェクトは、そのサイズが、アレイ要素サイズ以上であって、最大数の要素までの任意の有効な数値データ値であることができる。データオブジェクトは、(1)データオブジェクトが、最大数の要素に等しい場合、あるいは(2)データオブジェクトが、要素位置を変更していない、またはそれを定義するアレイ要素の数を変更していない場合、静的データオブジェクトである。データオブジェクトは、カーネル処理の間、任意のデータオブジェクトが、要素位置を変更している、またはそれらを定義するアレイ要素の数を変更している場合、動的である。
図29は、a[x][y]変換2902前の静的オブジェクトの一例示的1−次元テーブル2900と、変換2902が適用された後のアレイ2900を表す、アップデートされたアレイ2904とを示す。
カーネルをプロファイル化するプロセスでは、カーネルが、データに連続してアクセスのみする場合、インデックス、ストライド、またはオーバーラップを伴わない、単一次元メッシュタイプ交互トポロジモデルが、使用される。代替として、カーネルが、連続して、データにアクセスされるが、開始アドレスを超える位置において、アレイ内でシーケンシャルデータアクセスを開始する場合、インデックスモデルを伴う、メッシュタイプ交互トポロジが、使用される。処理が、要素を均等にスキップすることによって、アレイの要素にアクセスする場合、ストライドを伴う、メッシュタイプ交互トポロジモデルが、使用される。
Mesh_Type_Alternate、1次元実施例:インデックス、ストライド、およびオーバーラップデータ分解計算
図27は、1次元標準データセットトポロジ内において、ビンに追加されるデータ位置を示す。図28は、1次元交互データセットトポロジ内において、ビンに追加されるデータ位置を示す。インデックス、ストライド、およびオーバーラップパラメータは、統合して、Mesh_Type_Alternateメッシュタイプのための実際のデータトポロジを作成する、3つのパラメータである。これらの3つのパラメータは、図28に示される実施例に適用され、図30に示されるテーブル3000をもたらし、1次元交互データセットトポロジは、インデックス、ストライド、およびオーバーラップを伴う。
インデックスパラメータは、トポロジのための開始データ位置である。ストライドパラメータは、トポロジ構成の間、データセットをスキップするとき、スキップすべきデータ要素の数を表す。オーバーラップパラメータは、2つのビンのデータ境界においてオーバーラップされるデータ要素の数を定義するために使用される。
Mesh_Type_Alternate、2次元実施例
メッシュタイプ交互トポロジ方法は、両次元が、単調である限り、2次元に拡張されることができる。図31は、2次元における交互トポロジの一実施例である、テーブル3100を示す。
図31は、一例示的2次元メッシュタイプの交互トポロジを図示する。図31は、全次元が、単調である限り、2次元に拡張されることができる、メッシュタイプ交互トポロジ方法によって形成される、テーブル3100を示す。テーブル3110は、例示的計算デバイス3111−3114を示す。図31の実施例では、各計算デバイス3111−3114は、2次元ビンを含む(例えば、デバイス3111は、ビン1,1を有し、デバイス3112は、ビンを有する等となる)。各ビンは、テーブル3100の例示的メッシュタイプ交互トポロジ方法によって分散される、複数のデータポイントを含む。
Mesh_Type_Alternate−2次元実施例:インデックス、ストライド、およびオーバーラップデータ分解計算
1次元の場合におけるように、実際のトポロジは、インデックス、ストライド、およびオーバーラップパラメータを用いて生じる。図32は、テーブル3200内の2次元交互データセットトポロジの4つの実施例を示す。第1の実施例は、インデックス=ストライド=O=O=0を有する。第2の実施例は、インデックス=1およびストライド=O=O=0を有する。第3の実施例は、ストライド=1およびインデックス=O=0=0を有する。第4の実施例は、O=O=1およびインデックス=ストライド=0を有する。各次元は、その独自のオーバーラップパラメータを有することに留意されたい。
Mesh_Type_Alternate、3次元実施例
メッシュタイプ交互トポロジ方法は、全次元が、単調である限り、3次元に拡張されることができる。図33は、3次元における、一例示的交互トポロジである、テーブル3300を示す。テーブル3310は、例示的計算デバイス3311−3314を示す。図33の実施例では、各計算デバイス3311−3314は、4つの3次元ビンを含む(例えば、デバイス3311は、ビン1,1,1、ビン1,1,2、ビン1,1,3、ビン1,1,4を有し、デバイス3312は、をビン2,1,1、ビン2,1,2、ビン2,1,3、ビン2,1,4有する等となる)。各ビンは、テーブル3300の例示的メッシュタイプ交互トポロジ方法によって分散される、複数のデータポイントを含む。
Mesh_Type_Alternate、3次元実施例:インデックス、ストライド、およびオーバーラップデータ分解計算
3次元実施例は、示されないが、1および2次元の場合のように、3次元Mesh_TYPE_ALTERNATEトポロジは、インデックス、ストライド、およびオーバーラップを用いて生じることを理解されるであろう。
Mesh_Type_Cont_Block、1次元実施例
MESH_TYPE_CONT_BLOCKメッシュタイプの目的は、データセットをブロックに均等に分解することである。本実施例は、1次元ブロック実施例である。MESH_TYPE_CONT_BLOCKメッシュタイプは、多くの単純線形データタイプのために利用されてもよい。第1のステップでは、計算要素の数に対応するビンが、作成される。第2のステップでは、データのブロックが、ビン内に配置され、均等に分散されたデータのブロックが、例えば、図34の1次元ブロックトポロジテーブル3400に示されるように、アクセスされることを可能にする。
テーブル3400に示される1次元の場合、以下の情報が、以下のように保存される:
ビン={1、2、3、4}、
ビン={5、6、7、8}、
ビン={9、10、11、12}、
ビン={13、14、15、16}。
したがって、計算要素1は、ビンに対応し、計算要素2は、ビンに対応し、計算要素3は、ビンに対応し、および計算要素4は、ビンに対応する。
Mesh_Type_Cont_Block、1次元実施例:インデックス、ステップ、およびオーバーラップデータ分解計算
前述の実施例同様に、統合して、本メッシュタイプのための実際のデータトポロジを作成する、以下の3つのパラメータが、存在する:インデックス、ステップ、およびオーバーラップ。これらの3つのパラメータを図34のテーブル3400の実施例に適用することは、図35のテーブル3500に示されるインデックス、ステップ、およびオーバーラップを伴う、1次元連続ブロックデータセットトポロジをもたらす。
Mesh_Type_Cont_Block、2次元実施例
データセットトポロジの連続ブロックモデルは、2次元に拡張されることができる。本メッシュタイプは、非FFT−関連画像処理に有用である。図36のテーブル3600は、2次元連続ブロックトポロジの実施例を示す。
テーブル3600の2次元実施例では、データが、以下のように分散されるように、計算要素1=ビン1,1、計算要素2=ビン1,2、計算要素3=ビン2,1および計算要素4=ビン2,2である:
ビン1,1={1、2、3、4、5、6、7、8、17、18、19、20、21、22、23、24}、
ビン2,1={9、10、11、12、13、14、15、16、25、26、27、28、29、30、31、32}、
ビン1,2={33、34、35、36、37、38、39、40、49、50、51、52、53、54、55、56}、
ビン2,2={41、42、43、44、45、46、47、48、57、58、59、60、61、62、63、64}。
Mesh_Type_Contブロック、2次元実施例:インデックス、ステップ、およびオーバーラップデータ分解計算
1次元の場合のように、2次元に対する連続ブロックのための実際のデータセットトポロジは、3つのパラメータ:インデックス、ステップ、およびオーバーラップを要求する。図37は、インデックス、ステップ、およびオーバーラップパラメータを伴う、2次元連続ブロックデータセットトポロジモデルの一実施例である、テーブル3700を示す。
Mesh_Type_Cont_Block、3次元実施例
連続ブロックデータトポロジモデルもまた、データが、以下のように、例示的計算要素1−4に分散されるように、図38のテーブル3800の3次元連続ブロックトポロジ実施例に示されるように、3次元の場合に拡張されることができる:
計算要素1=[ビン1,1,1={1、2、3、4、5、6、7、8、17、18、19、20、21、22、23、24}、ビン1,1,2={65、66、67、68、69、70、71、72、81、82、83、84、85、86、87、88}、ビン1,1,3={129、130、131、132、133、134、134、136、145、146、147、148、149、150、151、152}、ビン1,1,4={193、194、195、196、197、198、199、200、209、210、211、212、213、214、215、216}];
計算要素2=[ビン2,1,1={9、10、11、12、13、14、15、16、25、26、27、28、29、30、31、32}、ビン2,1,2={73、74、75、76、77、78、79、80、89、90、91、92、93、94、95、96}、ビン2,1,3={137、138、139、140、141、142、143、144、153、154、155、156、157、158、159、160}、ビン2,1,4={201、202、203、204、205、206、207、208、217、218、219、220、221、222、223、224}];
計算要素3=[ビン1,2,1={33、34、35、36、37、38、39、40、49、50、51、52、53、54、55、56}、ビン1,2,2={97、98、99、100、101、102、103、104、113、114、115、116、117、118、119、120}、ビン1,2,3={161、162、163、164、165、166、167、168、177、178、179、180、181、182、183、184}、ビン1,2,4={225、226、227、228、229、230、231、232、241、242、243、244、245、246、247、248}];
計算要素4=[ビン2,2,1={41、42、43、44、45、46、47、48、57、58、59、60、61、62、63、64}、ビン2,2i1={105、106、107、108、109、110、111、112、121、122、123、124、125、126、127、128}、ビン2,2,1={169、170、171、172、173、174、175、176、185、186、187、188、189、190、191、192}、ビン2,2,1={233、234、235、236、237、238、239、240、249、250、251、252、253、254、255、256}]。
Mesh_Type_Cont_Block、3次元実施例:インデックス、ステップ、およびオーバーラップデータ分解計算
3次元実施例は、示されないが、1および2次元場合に説明される前述と同様に、3次元連続ブロックデータトポロジモデルも、インデックス、ステップ、およびオーバーラップパラメータを利用することを理解されるであろう。
Mesh_Type_Row_Block実施例
MESH_TYPE_ROW_BLOCKメッシュタイプは、データが、以下のように、例示的計算要素1−4に分散されるように、2次元以上のアレイを行のブロックに分解し、その一実施例は、図39のテーブル3900に示される:
計算要素(CE)1=ビン1,1={1、2、3、4}、ビン2,1={5、6、7、8}、ビン3,1={9、10、11、12}、ビン4,1={13、14、15、16};
計算要素(CE)2=ビン1,2={17、18、19、20}、ビン2,2={21、22、23、24}、ビン={25、26、27、28}、ビン4,2={29、30、31、32};
計算要素(CE)3=ビン1,3={33、34、35、36}、ビン2,3={37、38、39、40}、ビン3,3={41、42、43、44}、ビン4,3={45、46、47、48};
計算要素(CE)4=ビン1,4={49、50、51、52}、ビン2,4={53、54、55、56}、ビン3,4={57、58、59、60}、ビン4,4={61、62、63、64}。
Mesh_Type_Row_Block、2次元実施例:インデックス、ステップ、およびオーバーラップデータ分解計算
1次元の場合のように、2次元に対するMesh_Type_Row_Blockメッシュタイプトポロジのための実際のデータセットトポロジは、3つのパラメータ:インデックス、ステップ、およびオーバーラップを要求する。図40は、インデックス、ステップ、およびオーバーラップパラメータを伴う、2次元行ブロックデータセットトポロジモデルの一実施例である、テーブル4000を示す。
Mesh_Type_Column_Block実施例
MESH_TYPE_Column_BLOCKメッシュタイプは、データが、以下のように、例示的計算要素1−4に分散されるように、図41のテーブル4100に示されるように、2次元以上のアレイを列のブロックに分解する:
計算要素(CE)1=[ビン1,1={1、2、3、4}、ビン1,2={17、18、19、20}、ビン1,3={33、34、35、36}、ビン1,4={49、50、51、52}];
計算要素(CE)2=[ビン2,1={5、6、7、8}、ビン,={21、22、23、24}、ビン={37、38、39、40}、ビン={53、54、55、56}];
計算要素(CE)3=[ビン={9、10、11、12}、ビン={25、26、27、28}、ビン={41、42、43、44}、ビン={57、58、59、60}];
計算要素(CE)4=[ビン={13、14、15、16}、ビン4,2={29、30、31、32}、ビン={45、46、47、48}、ビン={61、62、63、64}]。
Mesh_Type_Column_Block、2次元実施例:インデックス、ステップ、およびオーバーラップデータ分解計算
前述の実施例同様に、統合して、本メッシュタイプのための実際のデータトポロジを作成する、以下の3つのパラメータが、存在する:インデックス、ステップ、およびオーバーラップ。これらの3つのパラメータを図40のテーブル4100の実施例に適用することは、図42のテーブル4200に示されるインデックス、ステップ、およびオーバーラップを伴う、2次元列ブロックデータセットトポロジをもたらす。
初期分散モデル
一般に、システムは、分散モデルを使用して、要求される処理ノードをアクティブ化し、ノードが、アルゴリズムの要件を満たし得るように、十分な情報をそれらのノードに渡し得る。ノードに渡される情報は、いくつかの分散モデルが形成されるため、ノードが情報を他のノードに中継するように、使用される分散のタイプを含んでもよい。情報を渡すために、いくつかのシステムは、ブロードキャストまたはマルチキャスト伝送プロセスを使用し、要求される情報を伝送する。ブロードキャスト伝送は、同一の情報メッセージを同時に全アタッチされた処理ノードに送信する一方、マルチキャスト伝送は、情報メッセージを処理ノードの選択されたグループに送信する。しかしながら、ノードが、情報の完全転送を受信したかどうかを把握することは不可能であるため、ブロードキャストまたはマルチキャストのいずれの使用も、本質的に、不安定である。代わりに、散乱コマンドが、複数のノードへの情報の安全転送のために使用されてもよい。散乱コマンドは、データを中心位置から複数のノードに移動させる。典型的非マルチキャスト、非ブロードキャスト通信モデルは、ツリー−ブロードキャスト、ツリー−マルチキャスト、あるいはハワードカスケードブロードキャストまたはマルチキャスト情報分散モデルを使用する。
図43は、ハワードカスケードベースの単一チャネルマルチキャスト/ブロードキャストの論理図を示す。図43の簡略化されたハワードカスケードデータ移動およびタイミング図4300は、第1の時間ステップ4320および第2の時間ステップ4330における、ノード4310からノード4312−4316へのデータの転送を示す。図44および45は、図43に説明されるハワードカスケードベースのブロードキャスト/マルチキャストの第1および第2の時間ステップ4320、4330の例示的ハードウェア図を示す。
図44は、それぞれ、バス4440−4446を介して、それぞれ、スマートNICカード4410−4416と通信する、ノード4310−4316を示す。NICカード4410−4416は、ノード4310−4316間のルーティングのために、スイッチ4450と通信する。第1の時間ステップ4320におけるルーティングの実施例は、図44に描写される。図44は、バス4440、NICカード4410、およびデータ伝送4460、スイッチ4450、データ伝送4462、NICカード4412、およびバス4440を介して、ノード4310からノード4312に送信されるデータの例証的ハードウェア図を示す。
第2の時間ステップ4330におけるルーティングの実施例は、図45に描写される。図45は、ノード4310からノード4314に送信されるデータと、ノード4312からノード4316に送信されるデータとの例証的ハードウェア図を示す。ノード4310からノード4314に送信されるデータは、バス4440、NICカード4410、データ伝送4560、スイッチ4450データ伝送4564、NICカード4414、およびバス4444を介して生じる。ノード4312からノード4316に送信されるデータは、バス4442、NICカード4412、データ伝送4562、スイッチ4450データ伝送4566、NICカード4416、およびバス4446を介して生じる。
図44および45は、ハワードカスケードが、スマートNICカード(例えば、NICカード4410−4416)から要求されるコマンドを使用して、データ移動および有効な演算の両方を行なう、一実施例を図示する。スマートNICカード上に有効な演算を配置することは、通信/計算のオーバーラップを促進する。
一実施形態では、システムは、多重通信チャネルを利用する。別個の実施形態では、システムは、多重通信チャネルを模倣する、帯域幅制限スイッチおよびネットワーク−インターフェースカード技術を用いて、十分なチャネルの性能を利用する。米国特許第20100183028号を参照されたい。いずれの実施形態でも、データ移動は、図43−45に示される実施例と異なる。図46は、9つのノード(ノード4610−4628)の多重通信チャネルシステム4600の一実施例を示す。統合することで最も良く示される、図46−48の実施例では、チャネルは、物理的、仮想的、またはそれら2つの組み合わせであってもよい。システム4600内では、各ノードは、2つの通信チャネルとともに、図式的に示される。第1の時間ステップ4620では、ノード4610は、ノード4612およびノード4614に伝送する。第2の時間ステップ4630では、ノード4610は、ノード4618および4620に伝送し、ノード4612は、ノード4622および4624に伝送し、ノード4614は、ノード4626および4628に伝送する。
図47は、図46の2チャネルハワードカスケードベースのマルチキャスト/ブロードキャストの第1の時間ステップ4620の一実施例の例証的ハードウェア図を示す。図48は、図46の第2の時間ステップ4630の一実施例の例証的ハードウェア図を示す。図47は、それぞれ、バス4710−4726を介して、それぞれ、スマートNICカード4710−4726と通信する、ノード4610−4626を示す。明確にするために、全通信経路が、示されるわけではないが、全スマートNIC4710−4726は、ノード4610−4626間のルーティングのために、それぞれ、通信経路4760−4776を介して、スイッチ4750と通信する。図47の実施例では、ノード4610は、バス4740、スマートNIC4710、通信経路4760、スイッチ4750、通信経路4762、4764、スマートNIC4712、4714、およびバス4742、4744を介して、ノード4612−4614に伝送する。
図48は、図46の2チャネルハワードカスケードベースのマルチキャスト/ブロードキャストの第2の時間ステップ4630の一実施例の例証的ハードウェア図を示す。図48は、バス4740−4756、NICカード4710−4726、およびデータ伝送4760−4764、およびスイッチ4450を介して、ノード4610−4614からノード4616−4626に送信されるデータを示す。ノード4610−4614は、その2チャネル通信経路の両チャネルを介して、伝送する。ノード4616−4626は、その2チャネル通信経路の一方のチャネルを介して、受信する。ノード4610−4626は、図46に示されるように、伝送および受信し、例えば、ノード4610は、ノード4618および4629等に伝送する。
スキャン検出
スキャンコマンドは、ハワードカスケード(米国特許第6857004号参照)またはラムダ交換(後述)分散モデル4900、図49(また、米国特許公開第20100185719号参照)のいずれかを使用してもよい。以下は、和演算を使用する、スキャンコマンドの一実施例を示す。検出されたデータパターンは、システムに、スキャンを使用するように指示する。図49の実施例では、ノードは、行によって表され、データアイテムは、列によって表される。ラムダ交換は、スマートNICレベルで行なわれるパススルー交換(例えば、図4のスマートNIC4710−4726によって)であって、同時に、演算関数およびパススルー関数の両方を行なうことが可能である。
図50は、一例示的十分なチャネルのラムダ交換モデル5000を示す。モデル5000は、伝送5030を介して、ノード5020からノード5022に伝送され、データ5022として記憶される、データ5020を示す。データ5022は、次いで、伝送5032を介して、ノード5012からノード5014に伝送され、データ5024として記憶される。
図51は、十分なチャネルのラムダ交換モデルを利用して、ノード5010からノード5012およびノード5012からノード5014に伝送される、データの一例示的ハードウェア図5100を示す。データは、バス5140、スマートNIC5110、通信経路5160、スイッチ5150、通信経路5162、スマートNIC5112、およびバス5142を介して、ノード5010からノード5012に伝送される。データ5022は、バス5142、スマートNIC5112、通信経路5163、スイッチ5150、通信経路5165、スマートNIC5114、およびバス5144を介して、ノード5012からノード5014に伝送される。
図52は、十分なチャネルのラムダ交換モデルを使用して、スキャン(和を用いる)を行なう、スマートNIC5212、5214を例証的に示す、一例示的システム5200を示す。図52の実施例では、NIC5212は、データ5242を受信し、和演算を行い、データをデータ5232として記憶する。NIC5212は、次いで、データ5232をデータ5244として、NIC5224に伝送する。NIC5224は、和演算を行い、データをデータ5234として記憶する。
マルチキャストおよびブロードキャスト検出
図53は、マルチキャストまたはブロードキャストの使用を検出するために使用される、検出可能通信パターン5300を示す。図53の実施例では、ノードは、行内に表され、データアイテムは、列内に表される。ブロードキャストコマンドの十分なチャネルのハワードカスケードバージョンは、通信チャネルを複数の仮想通信チャネルに細分割し、全仮想チャネルにわたって伝送する。本モデルは、対として定義され、したがって、安全なデータ伝送であるため、標準ブロードキャストより優れた利点を有する。十分な仮想チャネルの数が、ノードの数未満である場合、ハワードカスケードの多重仮想チャネルバージョンが、高効率ツリー状ブロードキャストを行なうために使用される。
図54は、十分なチャネルのハワードカスケードベースのマルチキャスト/ブロードキャストの一例示的論理図を示す。図54の実施例では、ノード5410は、マルチキャスト/ブロードキャストを介して、データ5420をノード5412、5414に伝送する。ノード5412およびノード5414は、それぞれ、データ5422およびデータ5424として、データ5420を記憶する。
図55は、図54の十分なチャネルのハワードカスケードベースのマルチキャストまたはブロードキャスト通信モデルの例示的ハードウェア図を示す。図55の実施例では、ノード5410は、バス5540、スマートNIC5510、通信経路5560、スイッチ5550、通信経路5562、スマートNIC5512、およびバス5542を介して、データ5420(図54)のあるコピーをノード5412に伝送する。ノード5410は、バス5540、スマートNIC5510、通信経路5560、スイッチ5550、通信経路5564、スマートNIC5514、およびバス5544を介して、データ5420(図54)の別のコピーをノード5414に伝送する。
散乱検出
一例示的散乱データパターン5600は、図56に示される。散乱データパターン5600では、ノードは、行によって表される。データアイテムは、列によって表される。データパターン5610は、データ散乱前のノードおよびデータアイテムを表す。データパターン5610は、1つのノード内の全データアイテムA0、B0、およびC0を示す。データパターン5620は、データ散乱後のノードおよびデータアイテムを表す。データパターン5620は、3つのノードのそれぞれ内の1つのデータアイテムを示す。図57は、十分なチャネルのハワードカスケード散乱を示し、ノード5710は、データ5720の第1の部分(B0)をノード5712に、データ5720の第2の部分(C0)をノード5714に伝送する。ノード5712は、受信されたデータ部分をデータ5722として記憶する。ノード5714は、受信されたデータ部分をデータ5714として記憶する。図57には図示されないが、データ散乱後、ノード5710は、データアイテムA0を維持するが、B0およびC0データアイテムを記憶していないことを理解されるであろう。
図58は、図57の十分なチャネルのハワードカスケードベースの散乱モデルの第1のステップの一実施例の例証的ハードウェア図を示す。図58の実施例では、ノード5710は、バス5840、スマートNIC5810、通信経路5860、スイッチ5850、通信経路5862、スマートNIC5812、およびバス5842を介して、データ5720(B0)の一部をノード5712に伝送する。ノード5710は、バス5840、スマートNIC5810、通信経路5860、スイッチ5850、通信経路5864、スマートNIC5814、およびバス5844を介して、データ5720(C0)の第2の部分をノード5714に伝送する。
ベクトル散乱検出実施例
以下の検出可能データ移動パターンは、ベクトル散乱コマンドが要求されるときを判定する。図59は、論理ベクトル散乱図5900を示す。データパターン5910は、ベクトル散乱演算前のデータ位置を示す。データパターン5920は、ベクトルデータ演算後のデータ位置を示す。ベクトル散乱演算は、ユーザが、システムに、それが種々の場所から受信したデータを配置すべき場所を指示する、オフセットテーブルを指定することを可能にする。ベクトル散乱は、送信側のためのデータの位置が、送信整数変位アレイによって指定され、受信側のデータの配置の位置が、受信整数変位アレイによって指定されるという点において、柔軟性を標準散乱演算に追加する。
図60は、ベクトル散乱演算のための一例示的タイミング図およびデータ移動を示す。
図61は、図60のベクトル散乱演算の一例示的ハードウェア図を示す。
初期データ入力モデル実施例
データ入力は、システムが、いくつかの外部ソースから情報を受信するための能力である。概して、2つのタイプのデータ入力方式:直列および並列が、存在する。直列入力は、単一通信チャネルを使用して、データを受信する一方、並列入力は、多重通信チャネルを使用して、データを受信する。現在のスイッチ技術を使用して、データをシステム内の複数の独立計算デバイスにブロードキャストすることが可能である。しかしながら、本データ転送は、確実ではない場合がある。別の可能性は、データをデータセットに分解し、異なるデータセットをシステム内の異なる計算デバイスに送信することである。
直列データ入力実施例
データは、ストレージエリアネットワーク(SAN)、ネットワークアタッチストレージ(NAS)、または他のオンラインデータストレージ方法からの単一通信チャネルを介して、ネットワークを通して、システムに送信されることができる。図62は、ハワードカスケードベースのデータ伝送を使用する、直列データ入力の論理図を示す。図62は、トップレベルのホームノード選択が、ノードを計算し、並行して、分解されたデータセットをシステムの一部に伝送する、一例示的システム6200を示す。システム6200は、ホームノード6206、計算ノード6210−6214、およびNAS6208を含む。システム6200内には、直列データ伝送は、NAS6208と通信6228するホームノード6206によって生じる。NAS6208は、第1の時間ステップ伝送6230において、データをノード6212に伝送する。第2の時間ステップ伝送6240において、ノード6210は、ノード621に伝送し、NAS6208は、ノード6212に伝送する。
図63および64は、NASデバイスからシステム6300内のノードにデータセットの一部を伝送する、第1および第2の時間ステップの一例示的ハードウェア図を示す。図63および64内では、ノード6206は、明確にするために、示されない。図63は、第1の時間ステップにおいて、分解されたデータセットの一部をネットワークアタッチストレージ(NAS)6208からノード6210に伝送する、システム6300の一例示的ハードウェア図を示す。図63は、バス6338、スマートNIC6338、通信経路6358スイッチ6350、通信経路6360、スマートNIC6310、およびバス6340を介して、ノード6210に伝送する、NAS6208を示す。図64は、それぞれ、分解されたデータセットの一部をNAS6208およびノード6210からノード6212および6214に伝送する、第2の時間ステップを示す。NAS6208は、バス6338、NIC6308、通信ライン6358、スイッチ6350、通信ライン6362、NIC6312、およびバス6342を介して、ノード6212に伝送する。同時に(並行して)、ノード6210は、バス6340、NIC6310、スイッチ6350、NIC6314、およびバス6344を介して、ノード6214に伝送する。
並列データ入力実施例
データはまた、ネットワークアタッチストレージ(NAS)、ストレージエリアネットワーク(SAN)、または他の方法を通して、並行して、システムに送信されることができる。これは、分解されたデータセットをとり、並行して、それをシステムの一部に伝送するであろう、トップレベル計算ノードのホームノード選択を介して、達成されることができる。図65−67は、分解されたデータセットをシステム6500、6600の一部に伝送する一実施例を示す。図65の実施例では、NAS6508は、第1の時間ステップ6530において、ノード6510、6512、6514に伝送する。第2の時間ステップ6540において、NAS6508は、ノード6516、6518、6520に伝送する。また、第2の時間ステップ6540では、ノード6510、6512、および6514は、それぞれ、ノード6522、6524および6526に伝送する。第1の時間ステップ6530伝送のハードウェア図は、図66に、システム6600として示され、第2の時間ステップ6540伝送は、図67に、システム6700として示される。
図66および67は、NAS6508およびノード6510−6526を含む。NAS6508は、バス6638を介して、スマートNIC6608と通信する。ノード6510−6526は、それぞれ、バス6640−6656を介して、それぞれ、スマートNIC6610−6626と通信する。システム6600では、NAS6508は、並行して、ノード6510、6512および6514にデータを伝送する。データは、バス6638、NIC6608、および並列通信ライン6658を介して、NAS6508からスイッチ6650に伝送される。データは、次いで、それぞれ、通信ライン6660、6662、6664、NIC6610、6612、6614、およびバス6642、6644、6646を介して、スイッチ6650からノード6510、6512、6514に伝送される。
図67のハードウェア図に示される、第2の時間ステップでは、システム6700、データは、並行して、NAS6508からノード6516、6518、および6520に伝送される。加えて、データは、それぞれ、ノード6510、6512、および6514からノード6522、6524、および6526に伝送される。データは、バス6638−6644、NIC6608−6626、通信ライン6658−6676、およびスイッチ6650を介して、システム6700内で伝送される。
相互通信モデル実施例
種々の1および2次元相互通信交換が、以下に示される。データ−アクセスパターンは、システムによって、プロファイル化の試みの一部として遭遇されるとき、どのタイプの交換モデルが、アルゴリズムによって使用されるべきかを判定するために使用される。
1次元左右検出
単一次元左右交換は、異なるトポロジ下では、異なって挙動する。デカルトおよび円形トポロジの両方下の1次元左右交換が、以下に示される。
1次元左右交換、デカルト
図68は、デカルトトポロジ下の1次元左右交換を検出するために使用されるパターンを示す。
1次元左右交換、円形
図69は、円形トポロジ下の左右交換を検出するために使用されるパターンを示す。
2次元全対全検出
全対全交換検出パターンが、図70に、第1および第2のマトリクス7010、7020として示される。マトリクス7010、7020では、前述のように、ノードは、行および列表現データ要素によって表される。マトリクス7010は、全対全交換前に分散されるデータを示し、あるデータ要素が、各ノード上に記憶され、行あたり1つのデータ要素によって表される。マトリクス7020は、全対全交換後に分散されたデータを示す、全データ要素A0、B0、C0が、各ノード上に記憶される。
図71は、3つの時間ステップにおける、一例示的4つのノードの全対全交換を示す。第1の時間ステップでは、ノード7110および7112は、それぞれ、ノード7114および7116とデータ7150、7151を交換する。第2の時間ステップでは、ノード7110および7114は、ノード7112および7116とデータ7152、7153を交換する。第3の最終時間ステップでは、ノード7110および7112は、それぞれ、ノード7116および7114とデータ7154、7155を交換する。図71に示される全対全交換の最終時間ステップ後、全ノードは、同一のデータを含有する。
図72は、図71のシステム7100の全対全交換(PAAX/FAAXモデル)の例証的ハードウェア図7200を示す。ハードウェア図7200では、ノード7110−7116は、第3の時間ステップ後、全ノードが、交換されるように選択された同一のデータを含有するように、データを交換する。
第1の時間ステップでは、ノード7110および7114は、データを交換し、ノード7112および7116は、データを交換する。ノード7110および7114は、バス7240、7244、スマートNIC7210、7214、通信経路7260、7264、およびスイッチ7250を介して、データを交換する。ノード7112および7116は、バス7242、7246、スマートNIC7212、7216、通信経路7262、7266、およびスイッチ7250を介して、データを交換する。
第2の時間ステップでは、ノード7110および7112は、データを交換し、ノード7114および7116は、データを交換する。ノード7110および7112は、バス7240、7242、スマートNIC7210、7212、通信経路7260、7262、およびスイッチ7250を介して、データを交換する。ノード7114および7116は、バス7244、7246、スマートNIC7214、7216、通信経路7264、7266、およびスイッチ7250を介して、データを交換する。
第3の時間ステップでは、ノード7110および7116は、データを交換し、ノード7112および7114は、データを交換する。ノード7110および7116は、バス7240、7246、スマートNIC7210、7216、通信経路7260、7266、およびスイッチ7250を介して、データを交換する。ノード7112および7114は、バス7242、7244、スマートNIC7212、7214、通信経路7262、7264、およびスイッチ7250を介して、データを交換する。
ベクトル全対全検出
図73は、ベクトル全対全交換モデルデータパターン検出を示す。
次隣接交換検出
図74は、デカルトトポロジ内の2次元次隣接データ交換を示す。図75は、トロイドトポロジ内の2次元次隣接データ交換を示す。次隣接データ交換は、典型的には、2次元にわたって定義されるが、より高い次元も、可能である。次隣接データ交換は、トポロジが、交換の結果の区別する交換である。図74および75は両方とも、同一の初期データ7410から開始するが、最終データ7420および7520は、異なるトポロジ、すなわち、デカルトトポロジおよびトロイドトポロジのため、異なる。
図74の2次元デカルト次隣接交換は、データを全隣接する位置から全他の隣接する位置にコピーする。図74の実施例では、データ要素Aを含有する、初期データ7410の第1の行、第1の列は、データ要素B、D、およびEに隣接する。したがって、最終データ7420の第1の行、第1の列は、データ要素A、B、D、およびEを含有する、すなわち、初期データ7410の第1の行、第1の列データ要素に隣接する全データ要素は、最終データ7420の第1の行第1の列に追加される。全他のデータ交換も、本パターンに従う。本データ移動を達成するための標準方法は、データを隣接する位置へと左に(該当する場合)、次いで、右に、次いで、上に、次いで、下に、次いで、斜め上に、最後に、斜め下に移動させることである。そこから分かるように、これは、6つのデータ移動をとる。十分なチャネルのPAAX交換を使用する、システムは、これをより高速で行なうことができる。
前述のように、トロイドトポロジのための2次元次隣接交換データパターンは、デカルトトポロジと異なる。トロイドトポロジのための2次元次隣接交換は、データを全隣接する位置から全他の隣接する位置にコピーする。最終データ7520は、トロイドトポロジ内の全データ要素が、1つおきのデータ要素に隣接するため、最終データ7420と異なる。したがって、初期データ7410の全データ要素が、最終データ7520の全データ要素にコピーされる。そこから分かるように、2次元トロイド次隣接交換は、真のPAAXを生成する。
2次元赤黒交換検出
2次元赤黒交換は、マトリクス内のデータ対角線要素を交換する。一例証的実施例では、赤黒交換は、交互する赤および黒正方形を伴う、格子模様であるようなマトリクスを取り扱う。赤正方形内のデータは、全他の接触赤正方形(すなわち、対角線上に)および接触黒正方形交換そのデータ(すなわち、対角線上に)と交換される。これは、2つのFAAX;接触赤正方形の第1のFAAX交換および接触黒正方形の第2のFAAX交換に相当する。次隣接交換のように、赤黒交換は、異なるトポロジ下では、異なって挙動する。
デカルトトポロジ内の2次元赤黒交換は、図76に示される。
トロイドトポロジ内の2次元赤黒交換は、図77に示される。パターンは、全対全接触赤交換に、全対全接触黒交換を加えたものに相当することに留意されたい。
2次元左右交換検出
2次元左右交換は、セルの左および右側上のデータ(存在する場合)をセル内に配置する。前述の交換と同様に、左右交換は、異なるトポロジ下では異なる。
図78は、デカルトトポロジ内の2次元左右交換を示す。図79は、トロイド内の2次元左右交換を示す。
全縮小コマンドソフトウェア検出
図80は、全縮小交換を検出するために要求される、データパターンを示す。一実施例では、十分なチャネルの完全データセット全対全交換(FAAX)通信モデルが、要求される演算の適用と組み合わせられ、検出された全縮小交換のための実装モデルが使用されるように機能する。図80は、和演算を使用する、全縮小コマンドの例証的実施例である。前述のように、ノードは、行によって表され、データアイテムは、列によって表される。
図81は、図80の十分なチャネルベースのFAAXの例証的論理図を示す。十分なチャネルの数が、1からノード/サーバ8110−8116の数を引いたものに等しいとき、全通信が、ある時間ステップにおいて生じる。最悪でも、本通信は、二項収集後、二項散乱が続くための(n)時間ステップと比較して、(n−1)時間ステップ(1つのみの十分なチャネル)をとる。
図82は、図81の十分なチャネルベースのFAAX交換の例証的ハードウェア図を示し、各ノード8110−8116は、それぞれ、3つのチャネル通信経路8260−8266を利用して、スイッチ8250を介して、全他のノードと通信する。各ノード8110−8116は、バス8240−8246およびスマートNIC8210−8216を介して、通信経路8260−8266を利用する。
図83は、3チャネル8260オーバーラップ通信において、FAAXモデルを使用して全縮小(和を用いる)を行なう、スマートNIC、NIC8210を示す。計算を伴うオーバーラップされた通信は、スマートNIC8210上で利用可能なプロセッサ(図示せず)を使用する。標的和−縮小演算の3つの仮想チャネル8260のそれぞれは、最終演算前に、各チャネルに対してデータを別個に計算させる。
縮小−散乱検出
縮小−散乱モデルは、要求される演算関数の適用と組み合わせられ、十分なチャネルの部分データセット全対全交換(PAAX)通信モデルを使用する。図84は、十分なチャネルの部分データセット全対全交換(PAAX)の論理図を示す。前述のように、ノードは、行によって表され、データアイテムは、列によって表される。
PAAXとFAAX通信モデルとの間の差異は、前述の全縮小コマンドによって使用されるFAAX交換では、各ノードからのデータの一部のみ、他のノードに伝送されることである。図85の実施例では、ノード8510は、データ要素Aを受信し、ノード8512は、データ要素Bを受信し、ノード8514は、データ要素Cを受信し、ノード8516は、データ要素Dを受信する。本データ交換を完了するために、PAAX通信モデルは、(n−1)の平方根である、FAAX交換を行なう時間平方根を要求する一方、収集後の散乱は、(n)時間ステップかかる。十分なチャネルベースのPAAX交換(図示せず)のハードウェア図は、図81の十分なチャネルベースのFAAX交換の例証的ハードウェア図と同一である。
前述のように、計算を伴うオーバーラップされた通信は、スマートNIC上で利用可能なプロセッサ(図示せず)を使用する。標的和−縮小演算の各仮想チャネルは、最終演算前に、各チャネルに対してデータを別個に計算させる。図86は、PAAXモデルを使用して縮小散乱(和を用いる)を行なう、スマートNIC8210を示す。
全収集検出
全収集データ交換は、一例示的全収集データ移動テーブル8700を図示する、図87に示されるデータ移動によって検出される。テーブル8700は、初期データ8710および最終データ8720を示す。全収集のための例証的論理図および例証的ハードウェア図は、前述に示されるものと同一である。
ベクトル全収集検出
図88は、十分なチャネルの完全データセット全対全交換(FAAX)として、ベクトル全収集を示す。図88では、初期データ8810および最終データ8820を伴う、ベクトル全収集データテーブル8800が示される。前述のように、ノードは、行によって表され、データアイテムは、列によって表される。全収集のための例証的論理図および例証的ハードウェア図は、前述で示されるものと同一である。
初期集積モデル実施例
集積は、最終結果が、中心に位置するように、処理された散乱データ部分の結果を収集する。図89の実施例では、結果A0、A1、およびA2は、ノード8910に収集され、最終結果A0+A1+A2をもたらす。結果は、ハワードカスケード内で縮小−和方法を使用して、第1の時間ステップ8930および第2の時間ステップ8940において収集される。第1の時間ステップ8930では、ノード8914は、結果A2をノード8910に送信し、ノード8916は、結果A1をノード8912に送信する。第2の時間ステップ8940では、ノード8912は、組み合わせられた結果A0+A1をノード8910に送信し、これは、A2と組み合わせられ、最終結果A0+A1+A2をもたらす。
図90は、第1の時間ステップ8930の間の図89に示される集積収集の一例示的ハードウェア図9000を示す。システム9000では、ノード8916は、バス9046、スマートNIC9016、通信経路9066、スイッチ9050、通信経路9062、スマートNIC9012、およびバス9042を介して、結果A1をノード8912に送信する。ノード8914は、バス9044、スマートNIC9014、通信経路9064、スイッチ9050、通信経路9060、スマートNIC9010、およびバス9040を介して、結果A2をノード8910に送信する。
図91は、第2の時間ステップ8940の間の図89に示される集積収集の一例示的ハードウェア図9100を示す。第2の時間ステップ8940では、ノード8912は、バス9042、スマートNIC9012、通信経路9062、スイッチ9050、通信経路9060、スマートNIC9010、およびバス9040を介して、組み合わせられた結果A0+A1をノード8910に送信する。
ハワードカスケードが使用されるとき、任意の要求されるスマートNICコマンドが、最初に、スマートNIC、例えば、スマートNIC9010−9016から要求されることを理解されるであろう。スマートNICは、次いで、データ移動および有効な演算(例えば、前述に示される和演算)の両方を行なう。有効な演算をスマートNIC上に配置することは、オーバーラップ通信および計算を促進する。
多重通信チャネルを伴うか、または帯域幅制限を伴う十分なチャネルの性能(多重通信チャネルを模倣する)を使用可能であるかのいずれかのシステムでは、次いで、データ移動は、図92に示されるように、変更する。
図92は、2チャネルハワードカスケードデータ移動およびタイミング図の論理図を示し、本実施例は、縮小和演算を示す。第1の時間ステップ9230では、ノード9220、9222は、ノード9112に伝送し、ノード9224、9226は、ノード9214に伝送し、ノード9216、9218は、ノード9210に伝送する。第2の時間ステップ9240では、ノード9212、9214は、ノード9210に伝送する。
図93は、2チャネルデータおよびコマンド移動の第1の時間ステップ9230(図92)のハードウェア図を示す。そこから分かるように、チャネル数は、図92に従う。チャネルは、物理的、仮想的、またはその2つの組み合わせであることができる。図93では、ノードが、図92に記述されるように、データを伝送することが分かる。図93におけるデータの伝送は、通信チャネル9360−9376を介し、そのうちのいくつかは、2チャネル通信チャネル、例えば、通信チャネル9360−9364として作用する。全通信チャネル9360−9376が、2チャネル通信チャネルであってもよいことを理解されるであろう。
図94は、第2の時間ステップ9240(図92)の一例示的ハードウェア図を示す。図94では、ノード9212、9214は、ノード9210に伝送する。
収集モデル検出
収集モデルデータ移動検出は、図95−98に示される。
図95は、収集モデルデータ移動の例証的実施例を示す。図95では、ノードは、行によって表され、データアイテムは、列によって表される。収集前マトリクス9510は、各行(ノード)内に1つのデータアイテム(A0、B0、C0)とともに示される。収集後マトリクス9520は、1行(ノード)内に全3つのデータアイテム(A0、B0、C0)とともに示される。
図96は、十分なチャネルのハワードカスケード収集、システム9600の論理図を示す。通信チャネルは、物理的、仮想的、またはその2つの組み合わせであってもよい。システム9600の実施例では、収集演算前に、ノード9610は、データA0を記憶し、ノード9612は、データB0を記憶し、ノード9614は、データC0を記憶する。ノード9612は、データB0をノード9610に伝送する。第1の時間ステップ9630の間、ノード9612は、データB0をノード9610に伝送する。第2の時間ステップ9640の間、ノード9610は、データC0をノード9610に伝送する。
図97は、十分なチャネルのハワードカスケードベースの収集通信モデルである、システム9700のハードウェア図を示す。第1の時間ステップ9630(図96)では、ノード9612は、バス9742、スマートNIC9712、通信経路9762、スイッチ9750、通信経路9760、スマートNIC9710、およびバス9740を介して、データをノード9610に伝送する。第2の時間ステップ9640(図96)では、ノード9614は、バス9744、スマートNIC9714、通信経路9764、スイッチ9750、通信経路9760、スマートNIC9710、およびバス9740を介して、データをノード9610に伝送する。これは、収集演算を完了させる。
図98は、和−縮小に取って代わり得る、基本収集演算のリスト9800である。
縮小コマンドの検出
使用されるべき縮小並列通信モデルを識別する変換が、以下に示される。
図99は、和演算を使用する、縮小コマンドの一実施例を示す。図99では、ノードは、行によって表され、データアイテムは、列によって表される。和演算マトリクス9910を使用する縮小前コマンドは、各行(ノード)内の1セットのデータアイテム(例えば、A0、B0、C0)とともに示される。和演算マトリクス9520を使用する、縮小後コマンドは、第1の列内の「A」データアイテム、次の列内の「B」データアイテム、および最後の列内の「C」データアイテムを伴う、1行(ノード)内の全データアイテム(A0、A1、A2、B0、B1、B2、C0、C1、C2)とともに示される。
十分なチャネルのオーバーラップしたハワードカスケード通信パターンの使用は、図100に示されるように、縮小−和パターンが実装されることを可能にする。図100は、和演算を用いる縮小コマンドを使用する、ハワードカスケードデータ移動およびタイミング図の一実施例である、システム10000を示す。システム10000では、ノード10012および10014は、第1の時間ステップ10030において、データをノード10010に伝送する。ノード10012は、データB0、B1、B2を伝送する。ノード10014は、データC0、C1、C2を伝送する。
図101は、十分なチャネルのオーバーラップしたハワードカスケードベースの縮小コマンドのハードウェア図である、システム10100を示す。システム10100の実施例では、データは、第1の時間ステップ10030(図100)の間、ノード10012および10014からノード10010同時に伝送される。
計算を伴うオーバーラップされる通信は、スマートNIC10110、10112、10114上で利用可能なプロセッサを使用する。標的縮小演算の各仮想チャネル(例えば、通信経路10160−10164)は、各チャネル上でデータを別個に計算させた後、最終演算が続いてもよい。縮小を行なう、本実施例におけるスマートNIC、NIC10210の一実施例は、図102に示される。データA1、B1、C1およびA2、B2、C2は、NIC10110によって受信され、NIC10110によって処理され、次いで、バス10140を介して、ノード10010に伝送される。
ベクトル収集検出
ベクトル収集演算の検出は、2つのマトリクス10310および10320を図示する、図103に示されるデータ移動の検出から生じる。マトリクス10310は、3つのノード上に記憶されるデータA0、B0、C0の表現である(前述のように、列は、データアイテムを表し、行は、ノードを表す)。マトリクス10320は、1つのノード上に記憶されるデータA0、B0、C0とともに、ベクトル収集演算後のデータを示す。
図104は、3つのノード10410、10412、および10414を有する、ベクトル収集システム10400の論理図を示す。図104では、システム10400は、データが、同一の時間ステップ10430にいおいて、ノード10412および10414から伝送されるように、十分なチャネルのハワードカスケードを利用して、ベクトル収集演算を行なう。
図105は、図103および104に示される十分なチャネルのハワードカスケードベクトル収集演算のシステム10500のハードウェア図を示す。図105では、ノード10412、10414は、バス10542、10544、スマートNIC10512、10514、通信経路10562、10564、スイッチ10550、通信経路10560、スマートNIC、10510、およびバス10540を介して、データをノード10410に伝送する。
初期データ出力モデル実施例
データ出力は、システムが情報を受信源に伝送する能力として定義されることができる。概して、2つのタイプのデータ出力:直列および並列が、存在する。直列出力は、単一通信チャネルを使用して、データを伝送する。並列データ出力は、多重通信チャネルを使用して、データを伝送する。
直列データ出力実施例
データは、単一通信チャネルを有するネットワークを利用して、システム内のデータストレージデバイスに伝送されることができる。データストレージデバイスの実施例として、ストレージエリアネットワーク(SAN)、ネットワークアタッチストレージ(NAS)、および他のオンラインデータストレージ方法が挙げられるが、それらに限定されない。データの伝送は、集積されたデータセットをとり、それをシステムの一部に直列に伝送するであろう、トップレベル計算ノードのホームノード選択を介して達成されることができる。図106は、ハワードカスケードベースのデータ伝送を使用する、直列データ出力のシステム10600の論理図を示す。システム10600内では、ホームノード10610およびノード10612−10616は、NAS10608と直列通信する。データA2、A1は、第1の時間ステップ10630において、それぞれ、NAS10608およびノード10612に送信される。ノード10612内のデータA0、A1は、ノード10612データA0+A1が、ノード1614データA2と組み合わせられる、第2の時間ステップ10640において、組み合わせられ、NAS10608に送信される。ノードは、現時点において、NAS10608を介して、組み合わせられたデータA0+A1+A2へのアクセスを有する。
図107は、図106の第1の時間ステップ10630において、ハワードカスケードベースのデータ伝送を使用する、直列データシステム10700の部分的例証的ハードウェア図を示す。システム10700では、ノード10612、10614は、直列通信を利用して、データをノード10612およびNAS10608に伝送する。
図108は、第2の時間ステップにおいて、ハワードカスケードベースのデータ伝送を使用する、直列データシステム10700の部分的例証的ハードウェア図を示す。第2の時間ステップでは、ノード10612は、直列通信を利用して、データをNAS10608に伝送する。
並列データ入力実施例
データはまた、並列通信構造を利用するシステムを用いて、データストレージデバイスに送信されることができる。データストレージデバイスの実施例として、ネットワークアタッチストレージ(NAS)、ストレージエリアネットワーク(SAN)、および他のデバイスが挙げられるが、それらに限定されない。データの伝送は、分解されたデータセットをとり、並行して、それをシステムの一部を伝送するであろう、トップレベル計算ノードのホームノード選択を介して達成されることができる。
図109は、ハワードカスケードベースの並列データ入力伝送の一実施例を示す。第1の時間ステップ10930内では、ノード10916、10918、10920は、NAS10908に伝送し、ノード10922、10924、10926は、それぞれ、ノード10910、10912、19014に伝送する。第2の時間10940ステップでは、ノード10910、10912、10914は、NAS10908に伝送する。第2の時間ステップ10940後、ホームノード10906は、NAS10908に伝送される全データへのアクセスを有する。
図110は、図109の第1の時間ステップ10930の間、ハワードカスケードを使用する、並列データ出力システム11000の一例証的ハードウェア図を示す。データ転送は、図109に説明されるように生じ、バス11036−11058、スマートNIC11006−11026、通信経路11060−11076、およびスイッチ11050は、並列データ転送に関与する。
図111は、図109の第2の時間ステップ10940の間、ハワードカスケードを使用する、並列データ出力システム11000の一例証的ハードウェア図を示す。データ転送は、図109に説明されるように生じ、バス11036−11044、スマートNIC11006−11014、通信経路11060−11064、およびスイッチ11050は、並列データ転送に関与する。
初期状態遷移パターン
いくつかの並列処理パターンは、状態遷移レベルでのみ判定される。図112、113に示される実施例では、状態機械11200は、以下のように、状態遷移を介して、ループ構造を検出する。
図112は、2つの状態、状態1および状態2、および4つの伝送、伝送11210、11220、11230、11260を伴う、状態機械11200を示す。伝送11210、11220は、多重レベルループ構造を含み得る、グループ化された状態からの呼出し−リターンを伴う、多重シーケンシャル呼出し−リターンサイクルとして説明され得る、伝送である。伝送11230は、多重レベルループ構造を含み得る、グループ化された状態(図113参照)の呼び出しを伴う、直接ループである。伝送11260は、非グループ状態である、単一ループ構造の呼び出しを伴う、直接ループである。
図113は、状態11210、11220を伴う、図112の状態2を示す。状態2は、加えて、状態2.1および状態2.2を含む。伝送11240、11250は、後続状態非グループ化状態2.1、2.2を伴う、グループ化された状態である、状態2の内部の多重シーケンシャル呼出し−リターンサイクルである。図113の伝送12270は、図112の伝送11230に類似し、その差異は、図113の伝送11270が、状態2.1と関連付けられることである。
遷移ベクトル(例えば、伝送11210、11220、11230等)は、ループ条件を判定するために要求される変数および変数値情報の全てを提供することを理解されるであろう。
初期組み合わせデータ移動と遷移パターン
いくつかの並列処理判定は、検出のために、データ移動と状態遷移の組み合わせを要求する。図114に示される一実施例では、状態20において見つけられたデータ移動は、状態30においてアクセスされる変数にアクセスしない。状態30は、常時、状態20後に呼び出され、したがって、状態20および状態30は両方とも、ともに処理されることができる。
変更が、本明細書の範囲から逸脱することなく、前述の方法およびシステムに行なわれてもよい。したがって、前述の説明に含有される、または付随の図面に示される事柄は、限定的意味ではなく、例証的として解釈されるべきであることに留意されたい。以下の請求項は、本明細書に記述される全ての一般的かつ具体的特徴と、文言上、その間に収まる可能性のある、本方法およびシステムの範囲の全記載とを網羅することを意図する。

Claims (20)

  1. 自動的に、並列コンピューティングシステム上で実行する有限状態機械によって定義される直列アルゴリズムに、並列処理能力を追加するための方法であって、
    プロセスカーネルを実行し、前記アルゴリズムによって参照されるメモリにアクセスするために使用されるデータアクセスパターンを判定するステップと、
    制御カーネルを実行し、前記アルゴリズムの状態遷移パターンを判定するステップであって、
    前記プロセスカーネルは、前記状態機械の状態を定義し、
    前記制御カーネルは、前記状態機械の状態遷移を定義する、ステップと、
    前記データアクセスパターンおよび前記状態遷移パターンをライブラリ内の所定のパターンと比較するステップと、
    前記データアクセスパターンおよび前記状態遷移パターンが、所定のパターンに一致すると、前記所定のパターンと関連付けられた拡張機能カーネルを前記アルゴリズムの有限状態機械内に記憶するステップと、
    を含み、
    前記拡張機能カーネルは、前記アルゴリズムの並列化が生じ得る、前記アルゴリズムのセクションに対する並列処理モデルを定義する、ソフトウェアを備え、前記セクションは、前記並列コンピューティングシステムのネットワークトポロジ、前記コンピューティングシステムを通したデータ分散、コンピューティングシステムデータ入力および出力、前記コンピューティングシステム内の相互通信、および計算が前記コンピューティングシステムによって行なわれた後のデータの集積を備え、
    前記拡張機能カーネルは、前記アルゴリズム内の非拡張機能カーネルに付け加えられ、前記有限状態機械を作成し、前記現在のカーネルは、ある状態であって、前記拡張されたカーネルは、別の状態である、方法。
  2. 前記状態機械は、前記アルゴリズムが実行されると、正しい順序で前記プロセスカーネルのアクティブ化を提供する、単一の非言語構造内に、全ての関連付けられた制御カーネルをともにリンクさせる、請求項1に記載の方法。
  3. 前記制御カーネルは、サブルーチン呼出し、ループ文、決定文、および分岐文から成る、コンピュータ言語構造を含有する、請求項1に記載の方法。
  4. 前記プロセスカーネルは、実行されている線形独立コードのみを表し、
    サブルーチン呼出し、ループ文、決定文、および分岐文から成る、コンピュータ言語構造を含有しない、請求項1に記載の方法。
  5. データ分散、データ入力および出力、相互通信、および集積のセクションは、前記アルゴリズムの実行の間、前記コンピューティングシステム上で動作する、状態機械インタープリタによって起動される、請求項1に記載の方法。
  6. 拡張機能カーネルの状態を前記有限状態機械に追加することによって、並列処理能力を含むために、前記有限状態機械に注釈を付けるステップをさらに含む、請求項1に記載の方法。
  7. 並列処理システム上で実行するアルゴリズムをプロファイル化するための方法であって、
    状態機械インタープリタに、前記アルゴリズムを表す、有限状態機械の直列バージョンをロードするステップと、
    データカーネルのリストを第1のスレッド上で実行し、データ移動データを生成するステップと、
    前記データ移動データを第1のデータ出力ファイル内に記憶するステップと、
    遷移カーネルのリストを第2のスレッド上で実行し、遷移データを生成するステップと、
    前記遷移データを第2のデータ出力ファイル内に記憶するステップと、
    前記有限状態機械を第3のスレッド上で実行するステップと、
    前記第1のデータ出力ファイルおよび前記第2のデータ出力ファイルが、所定のパターンに一致するかどうかを判定するステップと、
    前記所定のパターンが、一致する場合、前記パターンと関連付けられたデータを使用して、前記状態機械インタープリタに、前記パターンを示す、データ移動および遷移条件が、前記アルゴリズムのプロファイル化の間に識別されると、前記パターンと関連付けられた拡張機能カーネルを利用するように命令するステップと、
    を含み、
    前記拡張機能カーネルは、前記アルゴリズムの並列化が生じ得る、前記アルゴリズムのセクションに対する並列処理モデルを定義する、ソフトウェアを備え、前記セクションは、前記並列コンピューティングシステムのネットワークトポロジ、前記コンピューティングシステムを通したデータ分散、コンピューティングシステムデータ入力および出力、前記コンピューティングシステム内の相互通信、および計算が前記コンピューティングシステムによって行なわれた後のデータの集積を備える、方法。
  8. 試験入力データが、前記アルゴリズムの有限状態機械を前記第3のスレッド上で実行するステップにおいて実行される、請求項7に記載の方法。
  9. 前記パターンが、一致すると、前記アルゴリズムの実行に先立って、関連付けられた拡張機能カーネルを前記アルゴリズムの有限状態機械内に記憶する、請求項7に記載の方法。
  10. 自動的に、並列処理システム上で実行する有限状態機械によって定義される直列アルゴリズムに、並列処理能力を追加するための方法であって、
    情報の移動が、前記アルゴリズムの実行の間、前記並列処理システム内で生じる、並列処理の各段階に対して拡張機能カーネルを定義するステップであって、前記拡張機能カーネルは、(a)ネットワークトポロジ、(b)問題セット分散、(c)入力データ受信、(d)ネットワーク相互通信、(e)データ集積、および(f)出力データ伝送から成る、前記拡張機能カーネルのセットから選択される、ソフトウェアを備える、並列処理モデルを表す、カーネルを備える、ステップと、
    前記アルゴリズムをプロファイル化するステップであって、
    前記状態機械の状態を表すプロセスカーネルを作成するステップと、
    前記状態機械の状態遷移を定義する制御カーネルを作成するステップと、
    前記プロセスカーネルを実行することによって、前記プロセスカーネルのデータアクセスパターンを判定するステップと、
    前記アルゴリズムの実行の間、制御カーネル状態遷移パターンを判定するステップと、
    によって行う、ステップと、
    前記データアクセスパターンおよび前記状態遷移パターンを分析し、前記プロファイル化の間、現在実行されているカーネルによって使用されているメモリ位置において、アルゴリズムランタイム時に状態インタープリタに適用されるべき現在実行されているカーネルに対する拡張機能カーネルを判定するステップと、
    を含む、方法。
  11. 前記状態機械は、前記状態が、前記プロセスカーネルであって、前記状態遷移が、前記制御カーネルによって定義されるように注釈が付けられ、並列処理能力は、新しい状態を備える拡張機能カーネルを前記アルゴリズムを表す前記有限状態機械に追加することによって確立される、請求項10に記載の方法。
  12. 前記状態機械は、前記プロセスカーネルである状態および関連付けられたデータストレージを備え、前記状態は、制御カーネルから成る、状態ベクトルを使用して、ともに接続される、請求項10に記載の方法。
  13. 前記制御カーネルは、サブルーチン呼出し、ループ文、決定文、および分岐文から成る、コンピュータ言語構造を含有する、請求項12に記載の方法。
  14. 前記プロセスカーネルは、実行されている線形独立コードのみを表し、サブルーチン呼出し、ループ文、決定文、および分岐文から成る、コンピュータ言語構造を含有しない、請求項10に記載の方法。
  15. 状態機械は、前記アルゴリズムが実行されると、正しい順序で前記プロセスカーネルのアクティブ化を提供する、単一の非言語構造内に、全ての関連付けられた制御カーネルをともにリンクさせる、請求項10に記載の方法。
  16. 並列処理システム上で実行するアルゴリズムの並列化のための方法であって、
    前記アルゴリズムのセクションのそれぞれに対する拡張機能要素を生成するステップであって、前記セクションは、
    複数の処理要素へのデータの分散と、
    前記アルゴリズムの外部から前記アルゴリズムの内部へのデータの転送と、
    処理要素間のデータのグローバル相互通信と、
    前記処理要素のサブセットへのデータの移動と、
    前記アルゴリズムの内部から前記アルゴリズムの外部へのデータの転送と、
    を備える、ステップ
    を含み、各前記拡張機能要素は、前記アルゴリズムの並列化が生じ得る、前記アルゴリズム内の個別の位置において、前記並列化を提供するように機能する、方法。
  17. 前記並列コンピューティングシステムのネットワークトポロジは、前記並列処理システム上での前記アルゴリズムの実行に先立って判定される、請求項13に記載の方法。
  18. 状態機械は、前記アルゴリズムが実行されると、正しい順序で前記プロセスカーネルのアクティブ化を提供する、単一の非言語構造内に、全ての関連付けられた制御カーネルをともにリンクさせる、請求項13に記載の方法。
  19. 並列処理システム上でデータを処理するために実行するアルゴリズムの並列化のための方法であって、
    前記アルゴリズムを実行するステップと、
    前記アルゴリズムによって使用される最大ベクトル/マトリクスへのデータアクセスを追跡するステップと、
    前記データが、前記ベクトル/マトリクスの要素のコンテンツを同一のベクトル/マトリクス内の異なる要素にコピーすることによって移動されると、前記相対的物理的要素移動を追跡し、現在のデータ移動パターンを判定するステップと、
    前記現在のデータ移動パターンをライブラリ内の既存のパターンと比較するステップと、
    前記現在のパターンが、パターンのライブラリ内に見つけられる場合、前記見つけられたライブラリパターンに対する離散化モデルが、前記現在のカーネルに割り当てられる、ステップと、
    前記現在のカーネルに、前記見つけられたライブラリパターンと関連付けられた並列拡張機能カーネルを付け加え、ある状態として、前記現在のカーネルと、少なくとも1つの他の状態として、少なくとも1つの付加的前記並列拡張機能カーネルとを伴う、有限状態機械を形成するステップと、
    を含み、
    前記並列拡張機能カーネルは、
    複数の処理要素へのデータの分散、前記アルゴリズムの外部から前記アルゴリズムの内部へのデータの転送、処理要素間のデータのグローバル相互通信、前記処理要素のサブセットへのデータの移動、および前記アルゴリズムの内部から前記アルゴリズムの外部へのデータの転送のそれぞれを処理するためのソフトウェアを備える、方法。
  20. 前記離散化モデルは、前記並列処理システムのトポロジを示す、請求項19に記載の方法。
JP2014529910A 2011-09-07 2012-09-07 並列処理開発環境の拡張 Pending JP2014525640A (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US201161531973P 2011-09-07 2011-09-07
US61/531,973 2011-09-07
PCT/US2012/054247 WO2013036824A2 (en) 2011-09-07 2012-09-07 Parallel processing development environment extensions

Publications (1)

Publication Number Publication Date
JP2014525640A true JP2014525640A (ja) 2014-09-29

Family

ID=47831037

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2014529910A Pending JP2014525640A (ja) 2011-09-07 2012-09-07 並列処理開発環境の拡張

Country Status (4)

Country Link
US (1) US20130067443A1 (ja)
EP (1) EP2754033A2 (ja)
JP (1) JP2014525640A (ja)
WO (1) WO2013036824A2 (ja)

Families Citing this family (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7418470B2 (en) 2000-06-26 2008-08-26 Massively Parallel Technologies, Inc. Parallel processing systems and method
JP2014525640A (ja) * 2011-09-07 2014-09-29 マッシブリー パラレル テクノロジーズ, インコーポレイテッド 並列処理開発環境の拡張
US8762946B2 (en) 2012-03-20 2014-06-24 Massively Parallel Technologies, Inc. Method for automatic extraction of designs from standard source code
US9165035B2 (en) * 2012-05-10 2015-10-20 Microsoft Technology Licensing, Llc Differential dataflow
US9146709B2 (en) * 2012-06-08 2015-09-29 Massively Parallel Technologies, Inc. System and method for automatic detection of decomposition errors
US9832068B2 (en) 2012-12-17 2017-11-28 Microsoft Technology Licensing, Llc Reachability-based coordination for cyclic dataflow
US8977589B2 (en) * 2012-12-19 2015-03-10 International Business Machines Corporation On the fly data binning
US9851949B2 (en) 2014-10-07 2017-12-26 Kevin D. Howard System and method for automatic software application creation
US10496514B2 (en) 2014-11-20 2019-12-03 Kevin D. Howard System and method for parallel processing prediction
IT201700088977A1 (it) * 2017-08-02 2019-02-02 St Microelectronics Srl Procedimento per il riconoscimento di gesti, circuito, dispositivo e prodotto informatico corrispondenti
US11520560B2 (en) 2018-12-31 2022-12-06 Kevin D. Howard Computer processing and outcome prediction systems and methods
WO2021195987A1 (en) * 2020-03-31 2021-10-07 Alibaba Group Holding Limited Topology aware multi-phase method for collective communication
GB2593756B (en) * 2020-04-02 2022-03-30 Graphcore Ltd Control of data transfer between processing nodes
US11687328B2 (en) 2021-08-12 2023-06-27 C Squared Ip Holdings Llc Method and system for software enhancement and management
US11861336B2 (en) 2021-08-12 2024-01-02 C Squared Ip Holdings Llc Software systems and methods for multiple TALP family enhancement and management
CN115408653B (zh) * 2022-11-01 2023-03-21 泰山学院 一种IDRstab算法高可扩展并行处理方法及系统

Family Cites Families (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP3601341B2 (ja) * 1999-02-09 2004-12-15 株式会社日立製作所 並列プログラム生成方法
US7418470B2 (en) * 2000-06-26 2008-08-26 Massively Parallel Technologies, Inc. Parallel processing systems and method
US7835361B1 (en) * 2004-10-13 2010-11-16 Sonicwall, Inc. Method and apparatus for identifying data patterns in a file
US8141054B2 (en) * 2007-08-08 2012-03-20 International Business Machines Corporation Dynamic detection of atomic-set-serializability violations
US8645933B2 (en) * 2008-08-01 2014-02-04 Leon Schwartz Method and apparatus for detection and optimization of presumably parallel program regions
US8335757B2 (en) * 2009-01-26 2012-12-18 Microsoft Corporation Extracting patterns from sequential data
JP2014525640A (ja) * 2011-09-07 2014-09-29 マッシブリー パラレル テクノロジーズ, インコーポレイテッド 並列処理開発環境の拡張

Also Published As

Publication number Publication date
EP2754033A2 (en) 2014-07-16
US20130067443A1 (en) 2013-03-14
WO2013036824A2 (en) 2013-03-14
WO2013036824A3 (en) 2013-05-10

Similar Documents

Publication Publication Date Title
JP2014525640A (ja) 並列処理開発環境の拡張
Ben-Nun et al. Groute: An asynchronous multi-GPU programming model for irregular computations
Wang et al. {RStream}: Marrying relational algebra with streaming for efficient graph mining on a single machine
Batarfi et al. Large scale graph processing systems: survey and an experimental evaluation
Bajaber et al. Big data 2.0 processing systems: Taxonomy and open challenges
Jha et al. A tale of two data-intensive paradigms: Applications, abstractions, and architectures
Chen et al. Computation and communication efficient graph processing with distributed immutable view
Bader et al. Parallel algorithm design for branch and bound
CN106663075A (zh) 执行基于图的程序规范
Zhang et al. Harp: Collective communication on hadoop
Misale et al. A comparison of big data frameworks on a layered dataflow model
Xiao et al. Plasticity-on-chip design: Exploiting self-similarity for data communications
Ying et al. Bluefog: Make decentralized algorithms practical for optimization and deep learning
Walulya et al. Viper: A module for communication-layer determinism and scaling in low-latency stream processing
Eckstein et al. Pebbl: an object-oriented framework for scalable parallel branch and bound
Roth et al. Pgx. d/async: A scalable distributed graph pattern matching engine
Wang et al. A framework for distributed data-parallel execution in the Kepler scientific workflow system
Zhu et al. WolfGraph: The edge-centric graph processing on GPU
Shi et al. Welder: Scheduling deep learning memory access via tile-graph
Chien Concurrent aggregates (CA): design and experience with a concurrent object-oriented language based on aggregates
Brighen et al. Listing all maximal cliques in large graphs on vertex-centric model
Chan et al. A distributed stream library for Java 8
Alemi et al. CCFinder: using Spark to find clustering coefficient in big graphs
Khan Hadoop performance modeling and job optimization for big data analytics
Tardieu et al. X10 and APGAS at Petascale