(57)【要約】並列処理システムを実行するアルゴリズムの並列化のための方法。拡張機能要素が、アルゴリズムのセクションのそれぞれに対して生成され、セクションは、複数の処理要素へのデータの分散、アルゴリズムの外部からアルゴリズムの内部へのデータの転送、処理要素間のデータのグローバル相互通信、処理要素のサブセットへのデータの移動、およびアルゴリズムの内部からアルゴリズムの外部へのデータの転送を備える。各拡張機能要素は、アルゴリズムの並列化が生じ得る、アルゴリズム内の個別の場所に、並列化を提供するように機能する。
2014525640.tif 000002
【特許請求の範囲】
【請求項１】
自動的に、並列コンピューティングシステム上で実行する有限状態機械によって定義される直列アルゴリズムに、並列処理能力を追加するための方法であって、
プロセスカーネルを実行し、前記アルゴリズムによって参照されるメモリにアクセスするために使用されるデータアクセスパターンを判定するステップと、
制御カーネルを実行し、前記アルゴリズムの状態遷移パターンを判定するステップであって、
前記プロセスカーネルは、前記状態機械の状態を定義し、
前記制御カーネルは、前記状態機械の状態遷移を定義する、ステップと、
前記データアクセスパターンおよび前記状態遷移パターンをライブラリ内の所定のパターンと比較するステップと、
前記データアクセスパターンおよび前記状態遷移パターンが、所定のパターンに一致すると、前記所定のパターンと関連付けられた拡張機能カーネルを前記アルゴリズムの有限状態機械内に記憶するステップと、
を含み、
前記拡張機能カーネルは、前記アルゴリズムの並列化が生じ得る、前記アルゴリズムのセクションに対する並列処理モデルを定義する、ソフトウェアを備え、前記セクションは、前記並列コンピューティングシステムのネットワークトポロジ、前記コンピューティングシステムを通したデータ分散、コンピューティングシステムデータ入力および出力、前記コンピューティングシステム内の相互通信、および計算が前記コンピューティングシステムによって行なわれた後のデータの集積を備え、
前記拡張機能カーネルは、前記アルゴリズム内の非拡張機能カーネルに付け加えられ、前記有限状態機械を作成し、前記現在のカーネルは、ある状態であって、前記拡張されたカーネルは、別の状態である、方法。
【請求項２】
前記状態機械は、前記アルゴリズムが実行されると、正しい順序で前記プロセスカーネルのアクティブ化を提供する、単一の非言語構造内に、全ての関連付けられた制御カーネルをともにリンクさせる、請求項１に記載の方法。
【請求項３】
前記制御カーネルは、サブルーチン呼出し、ループ文、決定文、および分岐文から成る、コンピュータ言語構造を含有する、請求項１に記載の方法。
【請求項４】
前記プロセスカーネルは、実行されている線形独立コードのみを表し、
サブルーチン呼出し、ループ文、決定文、および分岐文から成る、コンピュータ言語構造を含有しない、請求項１に記載の方法。
【請求項５】
データ分散、データ入力および出力、相互通信、および集積のセクションは、前記アルゴリズムの実行の間、前記コンピューティングシステム上で動作する、状態機械インタープリタによって起動される、請求項１に記載の方法。
【請求項６】
拡張機能カーネルの状態を前記有限状態機械に追加することによって、並列処理能力を含むために、前記有限状態機械に注釈を付けるステップをさらに含む、請求項１に記載の方法。
【請求項７】
並列処理システム上で実行するアルゴリズムをプロファイル化するための方法であって、
状態機械インタープリタに、前記アルゴリズムを表す、有限状態機械の直列バージョンをロードするステップと、
データカーネルのリストを第１のスレッド上で実行し、データ移動データを生成するステップと、
前記データ移動データを第１のデータ出力ファイル内に記憶するステップと、
遷移カーネルのリストを第２のスレッド上で実行し、遷移データを生成するステップと、
前記遷移データを第２のデータ出力ファイル内に記憶するステップと、
前記有限状態機械を第３のスレッド上で実行するステップと、
前記第１のデータ出力ファイルおよび前記第２のデータ出力ファイルが、所定のパターンに一致するかどうかを判定するステップと、
前記所定のパターンが、一致する場合、前記パターンと関連付けられたデータを使用して、前記状態機械インタープリタに、前記パターンを示す、データ移動および遷移条件が、前記アルゴリズムのプロファイル化の間に識別されると、前記パターンと関連付けられた拡張機能カーネルを利用するように命令するステップと、
を含み、
前記拡張機能カーネルは、前記アルゴリズムの並列化が生じ得る、前記アルゴリズムのセクションに対する並列処理モデルを定義する、ソフトウェアを備え、前記セクションは、前記並列コンピューティングシステムのネットワークトポロジ、前記コンピューティングシステムを通したデータ分散、コンピューティングシステムデータ入力および出力、前記コンピューティングシステム内の相互通信、および計算が前記コンピューティングシステムによって行なわれた後のデータの集積を備える、方法。
【請求項８】
試験入力データが、前記アルゴリズムの有限状態機械を前記第３のスレッド上で実行するステップにおいて実行される、請求項７に記載の方法。
【請求項９】
前記パターンが、一致すると、前記アルゴリズムの実行に先立って、関連付けられた拡張機能カーネルを前記アルゴリズムの有限状態機械内に記憶する、請求項７に記載の方法。
【請求項１０】
自動的に、並列処理システム上で実行する有限状態機械によって定義される直列アルゴリズムに、並列処理能力を追加するための方法であって、
情報の移動が、前記アルゴリズムの実行の間、前記並列処理システム内で生じる、並列処理の各段階に対して拡張機能カーネルを定義するステップであって、前記拡張機能カーネルは、（ａ）ネットワークトポロジ、（ｂ）問題セット分散、（ｃ）入力データ受信、（ｄ）ネットワーク相互通信、（ｅ）データ集積、および（ｆ）出力データ伝送から成る、前記拡張機能カーネルのセットから選択される、ソフトウェアを備える、並列処理モデルを表す、カーネルを備える、ステップと、
前記アルゴリズムをプロファイル化するステップであって、
前記状態機械の状態を表すプロセスカーネルを作成するステップと、
前記状態機械の状態遷移を定義する制御カーネルを作成するステップと、
前記プロセスカーネルを実行することによって、前記プロセスカーネルのデータアクセスパターンを判定するステップと、
前記アルゴリズムの実行の間、制御カーネル状態遷移パターンを判定するステップと、
によって行う、ステップと、
前記データアクセスパターンおよび前記状態遷移パターンを分析し、前記プロファイル化の間、現在実行されているカーネルによって使用されているメモリ位置において、アルゴリズムランタイム時に状態インタープリタに適用されるべき現在実行されているカーネルに対する拡張機能カーネルを判定するステップと、
を含む、方法。
【請求項１１】
前記状態機械は、前記状態が、前記プロセスカーネルであって、前記状態遷移が、前記制御カーネルによって定義されるように注釈が付けられ、並列処理能力は、新しい状態を備える拡張機能カーネルを前記アルゴリズムを表す前記有限状態機械に追加することによって確立される、請求項１０に記載の方法。
【請求項１２】
前記状態機械は、前記プロセスカーネルである状態および関連付けられたデータストレージを備え、前記状態は、制御カーネルから成る、状態ベクトルを使用して、ともに接続される、請求項１０に記載の方法。
【請求項１３】
前記制御カーネルは、サブルーチン呼出し、ループ文、決定文、および分岐文から成る、コンピュータ言語構造を含有する、請求項１２に記載の方法。
【請求項１４】
前記プロセスカーネルは、実行されている線形独立コードのみを表し、サブルーチン呼出し、ループ文、決定文、および分岐文から成る、コンピュータ言語構造を含有しない、請求項１０に記載の方法。
【請求項１５】
状態機械は、前記アルゴリズムが実行されると、正しい順序で前記プロセスカーネルのアクティブ化を提供する、単一の非言語構造内に、全ての関連付けられた制御カーネルをともにリンクさせる、請求項１０に記載の方法。
【請求項１６】
並列処理システム上で実行するアルゴリズムの並列化のための方法であって、
前記アルゴリズムのセクションのそれぞれに対する拡張機能要素を生成するステップであって、前記セクションは、
複数の処理要素へのデータの分散と、
前記アルゴリズムの外部から前記アルゴリズムの内部へのデータの転送と、
処理要素間のデータのグローバル相互通信と、
前記処理要素のサブセットへのデータの移動と、
前記アルゴリズムの内部から前記アルゴリズムの外部へのデータの転送と、
を備える、ステップ
を含み、各前記拡張機能要素は、前記アルゴリズムの並列化が生じ得る、前記アルゴリズム内の個別の位置において、前記並列化を提供するように機能する、方法。
【請求項１７】
前記並列コンピューティングシステムのネットワークトポロジは、前記並列処理システム上での前記アルゴリズムの実行に先立って判定される、請求項１３に記載の方法。
【請求項１８】
状態機械は、前記アルゴリズムが実行されると、正しい順序で前記プロセスカーネルのアクティブ化を提供する、単一の非言語構造内に、全ての関連付けられた制御カーネルをともにリンクさせる、請求項１３に記載の方法。
【請求項１９】
並列処理システム上でデータを処理するために実行するアルゴリズムの並列化のための方法であって、
前記アルゴリズムを実行するステップと、
前記アルゴリズムによって使用される最大ベクトル／マトリクスへのデータアクセスを追跡するステップと、
前記データが、前記ベクトル／マトリクスの要素のコンテンツを同一のベクトル／マトリクス内の異なる要素にコピーすることによって移動されると、前記相対的物理的要素移動を追跡し、現在のデータ移動パターンを判定するステップと、
前記現在のデータ移動パターンをライブラリ内の既存のパターンと比較するステップと、
前記現在のパターンが、パターンのライブラリ内に見つけられる場合、前記見つけられたライブラリパターンに対する離散化モデルが、前記現在のカーネルに割り当てられる、ステップと、
前記現在のカーネルに、前記見つけられたライブラリパターンと関連付けられた並列拡張機能カーネルを付け加え、ある状態として、前記現在のカーネルと、少なくとも１つの他の状態として、少なくとも１つの付加的前記並列拡張機能カーネルとを伴う、有限状態機械を形成するステップと、
を含み、
前記並列拡張機能カーネルは、
複数の処理要素へのデータの分散、前記アルゴリズムの外部から前記アルゴリズムの内部へのデータの転送、処理要素間のデータのグローバル相互通信、前記処理要素のサブセットへのデータの移動、および前記アルゴリズムの内部から前記アルゴリズムの外部へのデータの転送のそれぞれを処理するためのソフトウェアを備える、方法。
【請求項２０】
前記離散化モデルは、前記並列処理システムのトポロジを示す、請求項１９に記載の方法。
【発明の詳細な説明】
【技術分野】
【０００１】
（関連出願）
本願は、米国特許出願第６１／５３１，９７３号（２０１１年９月７日出願）に対する利益および優先権を主張するものであり、この開示の全体は、参照により本明細書中に援用される。
【０００２】
以下に示す米国特許出願は、参照により本明細書中に援用される：米国特許第６，８５７，００４号、米国特許出願公開第２０１０／０１８３０２８号、米国特許出願公開第２０１０／０１８５７１９号、米国特許出願第６１／３８２，４０５号、米国特許出願第１２／８５２，９１９号。
【背景技術】
【０００３】
コード再利用の正式概念は、Ｂｅｌｌ  ＬａｂｏｒａｔｏｒｉｅｓのＤｏｕｇｌａｓ  Ｍｃｌｌｒｏｙが、再使用可能構成要素に関するソフトウェア産業の基礎を提案した１９６８年に遡る。それ以来、いくつかの実施例を挙げると、「カット・アンド・ペースト」、ソフトウェアライブラリ、およびオブジェクト指向プログラミング等のいくつかの関連概念が、開発されている。「カット・アンド・ペースト」とは、あるファイルから別のファイルにテキストをコピーすることを意味する。ソフトウェアの場合、「カット・アンド・ペースト」とは、コンピュータプログラマが、最初に、要求されるソースコードテキストを見つけ、それを別のソフトウェアプログラムのソースコードファイル内にコピーすることを意味する。ソフトウェアライブラリは、典型的には、関連付けられた、事前にコンパイルされた関数のグループである。コンピュータプログラマは、ライブラリ内の関数を使用する権利を購入または別様に取得し、次いで、関数情報を標的ソースコードファイル内にコピーする。関数ライブラリは、概して、関連付けられた関数を含有する（例えば、画像処理関数、財務分析関数、生物情報学関数等）。オブジェクト指向プログラミング技法は、その方法が再使用され得る、オブジェクトを作成するための能力を含む。おそらく、関数ライブラリより優れているが、オブジェクト指向プログラミング技法を用いても、ソフトウェアプログラマは、依然として、正しいコードを選択しなければならない。
【０００４】
汎用フレームプロトコル（ＳＲＩＩｎｔｅｒｎａｔｉｏｎａｌおよびＳｔａｎｆｏｒｄＵｎｉｖｅｒｓｉｔｙの共同開発であって、本プロトコルは、汎用インターフェースを人工知能システムのための下層フレーム表現システムに提供する）および構成要素ベースのソフトウェアエンジニアリング（構成要素ベースのソフトウェアエンジニアリングとも呼ばれる）等の他の技法は、関連関数またはデータのいくつかのセット（システムプロセスと呼ばれる）をカプセル化する、ウェブサービスまたはモジュールを再使用することを試みる。全システムプロセスは、各構成要素の内部のデータおよび関数の全てが、意味的に関連するように、別個の構成要素内に配置される。本意味では、構成要素は、ソフトウェアライブラリおよびソフトウェアオブジェクトと同様に挙動する。全構成要素は、システムの残りへのサービスとして作用する各構成要素と、インターフェースを介して、相互に通信する。本サービス指向性は、構成要素ベースのソフトウェアエンジニアリングとオブジェクト指向クラスとの間の主な差異である。コード再使用技法に関する主な問題は、それらが、依然として、プログラマに、使用するための適切な再使用可能コード構成要素またはオブジェクトを選択することを要求し、自動プロセスであることが所望されるものに関して、手動アクティビティを強いることである。
【発明の概要】
【課題を解決するための手段】
【０００５】
導入
本システムおよび方法は、以下の並列処理開発環境に対する６つの拡張機能（拡張機能要素）を含む：トポロジ、分散、データ入力、相互通信、集積、およびデータ出力。第１の拡張機能要素は、ネットワークトポロジを記述するものであって、離散化、すなわち、複数の処理要素にわたる問題の分割を判定する。５つの残りの拡張機能要素は、データまたはプログラム（実行可能コード）移動が生じる異なるプログラム段階に対応する、すなわち、情報は、ネットワーク内の任意の２つのノード間で転送され、したがって、並列化が生じ得る場所を表す。６つの並列処理段階および関連拡張機能要素は、以下である。
（１）ネットワークトポロジ（トポロジ判定は、プログラム実行に先立って生じる）。実施例：１−２−３次元デカルトおよび１−２−３次元トロイダル。
（２）複数の処理要素へのデータの分散方法（分散は、プログラム実行に先立って、またはプログラム実行の間に生じ得る）。実施例：散乱、ベクトル散乱、スキャン、真のブロードキャスト、ツリーブロードキャスト。
（３）アプリケーションの外部からアプリケーションの内部へのデータの転送（データ入力、直列および並列入力）。
（４）処理要素間のデータのグローバル相互通信（相互通信は、プログラム実行の間に生じる）。実施例：全対全、ベクトル全対全、次ｎ隣接、ベクトル次ｎ隣接、赤黒、左右。
（５）処理要素のサブセットへのデータの移動（集積は、プログラム実行後に生じる）。実施例：縮小、全縮小、縮小−散乱、収集、ベクトル収集、全収集、ベクトル全収集。
（６）アプリケーションの内部からアプリケーションの外部へのデータの転送（データ出力、直列Ｉ／Ｏおよび並列Ｉ／Ｏ）。
前述の６つの要素のいずれかの選択は、所与のカーネルの正しい使用が、プロファイル化の間に行なわれることを保証する。
【図面の簡単な説明】
【０００６】
【図１】図１は、標的アルゴリズムが、どのようにデータにアクセスし、状態遷移を行なうかを図示する、例示的データフロー図を示す。
【図２】図２は、データおよび遷移プロファイル出力の有効な組み合わせの例示的テーブルを示す。
【図３】図３は、システムライブラリからの「ｓｈｍｇｅｔ」の使用を図示する、例示的ソースコードを示す。
【図４】図４は、４つの計算要素による処理のための１６のシーケンシャルデータアイテムの例示的ビニングを図示する、テーブルを示し、各要素は、１−４のビンのうちの１つに対応する。
【図５】図５は、１つのオブジェクトを伴う、次元タイプ１の静的アレイ処理を図示する。
【図６】図６は、２つのオブジェクトを伴う、次元タイプ１の静的アレイ処理を図示する。
【図７】図７は、３つの不等間隔オブジェクトを伴う、標準１次元静的アレイ処理を図示する。
【図８】図８は、データオブジェクトが、アレイ内でスキップされる場合に生じる、別のタイプの静的オブジェクトを示す。
【図９】図９は、２つの移動オブジェクトを伴う、標準１次元動的アレイ処理を図示する。
【図１０】図１０は、２つの成長オブジェクトを伴う、標準１次元動的アレイ処理を図示する。
【図１１】図１１は、リングを中心として移動する２つのオブジェクトを伴う、標準１次元動的アレイ処理を図示する。
【図１２】図１２は、リングを中心として成長する２つのオブジェクトを伴う、標準１次元動的アレイ処理を図示する。
【図１３】図１３は、アレイの両端（ビン１およびビン４）に集中する４つのデータオブジェクトの実施例を示し、ビン２およびビン３は、ワークがない、不均衡ワークロードを図示する。
【図１４】図１４は、ポインタの使用を通して、アレイ内の不均衡データオブジェクト位置からワークロードを均衡化するステップを図示する。
【図１５】図１５は、いくつかのデータが移動後の図１４の４つのデータオブジェクトの位置を示す。
【図１６】図１６は、インデックス、ストライド、インデックスとストライド、オーバーラップ、インデックスとオーバーラップ、ストライドとオーバーラップ、およびインデックスとストライドとオーバーラップを伴う、次元標準データセットトポロジを図示する、一例示的テーブルを示す。
【図１７】図１７は、例示的２次元標準データセットトポロジを示す。
【図１８】図１８は、ａ［ｘ］［ｙ］変換の適用に先立った静的オブジェクトの例示的２次元テーブルと、変換が適用された後のアレイを表す、アップデートされたアレイとを示す。
【図１９】図１９は、２つの小データオブジェクトを伴う、標準２次元静的マトリクス処理を図示する。
【図２０】図２０は、２つの移動オブジェクトを伴う、標準２次元動的アレイ処理を図示する。
【図２１】図２１は、標準２次元交互データセットトポロジ２１０２および４つの付加的実施例を示す。
【図２２Ａ】図２２は、一例示的３次元標準データセットトポロジを図示する。
【図２２Ｂ】図２２は、一例示的３次元標準データセットトポロジを図示する。
【図２３】図２３−２６は、インデックス、ストライド（Ｓｔｒｉｐｅ）、およびオーバーラップを利用する、３次元メッシュタイプの標準分解の４つの実施例を示す。
【図２４】図２３−２６は、インデックス、ストライド（Ｓｔｒｉｐｅ）、およびオーバーラップを利用する、３次元メッシュタイプの標準分解の４つの実施例を示す。
【図２５】図２３−２６は、インデックス、ストライド（Ｓｔｒｉｐｅ）、およびオーバーラップを利用する、３次元メッシュタイプの標準分解の４つの実施例を示す。
【図２６Ａ】図２３−２６は、インデックス、ストライド（Ｓｔｒｉｐｅ）、およびオーバーラップを利用する、３次元メッシュタイプの標準分解の４つの実施例を示す。
【図２６Ｂ】図２３−２６は、インデックス、ストライド（Ｓｔｒｉｐｅ）、およびオーバーラップを利用する、３次元メッシュタイプの標準分解の４つの実施例を示す。
【図２６Ｃ】図２３−２６は、インデックス、ストライド（Ｓｔｒｉｐｅ）、およびオーバーラップを利用する、３次元メッシュタイプの標準分解の４つの実施例を示す。
【図２６Ｄ】図２３−２６は、インデックス、ストライド（Ｓｔｒｉｐｅ）、およびオーバーラップを利用する、３次元メッシュタイプの標準分解の４つの実施例を示す。
【図２７】図２７は、１次元標準データセットトポロジ内のビンに追加されるデータ位置を示す。
【図２８】図２８は、１次元交互データセットトポロジ内のビンに追加されるデータ位置を示す。
【図２９】図２９は、静的オブジェクトを有する、１次元交互静的モデルの一実施例を示す。
【図３０】図３０は、図２８の実施例に適用されるようなインデックス、ストライド、およびオーバーラップを伴う、１次元交互データセットトポロジを示す。
【図３１】図３１は、一例示的２次元メッシュタイプの交互トポロジを図示する。
【図３２】図３２は、テーブル内の２次元交互データセットトポロジの４つの実施例を示す。
【図３３Ａ】図３３は、テーブル内の３次元における一例示的交互トポロジを示す。
【図３３Ｂ】図３３は、テーブル内の３次元における一例示的交互トポロジを示す。
【図３４】図３４は、ビン内に置かれるデータのブロックを伴う、１次元ブロックトポロジテーブルを示す。
【図３５】図３５は、インデックス、ステップ、およびオーバーラップを伴う、１次元連続ブロックデータセットトポロジのテーブルを示す。
【図３６】図３６は、２次元連続ブロックトポロジの実施例を示す。
【図３７】図３７は、インデックス、ステップ、およびオーバーラップパラメータを伴う、２次元連続ブロックデータセットトポロジモデルの一実施例を示す。
【図３８】図３８は、データが、例示的計算要素１−４に分散されるように、３次元連続ブロックトポロジの実施例を示す。
【図３９】図３９は、データが、例示的計算要素１−４に分散されるように、２次元以上のアレイを行のブロックに分解する、Ｍｅｓｈ＿Ｔｙｐｅ＿ＲＯＷ＿ＢＬＯＣＫメッシュタイプを示す。
【図４０】図４０は、インデックス、ステップ、およびオーバーラップパラメータを伴う、２次元行ブロックデータセットトポロジモデルの一実施例を示す。
【図４１】図４１は、データが、例示的計算要素１−４に分散されるように、２次元以上のアレイを列のブロックに分解する、Ｍｅｓｈ＿Ｔｙｐｅ＿Ｃｏｌｕｍｎ＿ＢＬＯＣＫメッシュタイプを示す。
【図４２】図４２は、インデックス、ステップ、およびオーバーラップを伴う、２次元列ブロックデータセットトポロジをもたらすために、図４０の実施例に適用されるパラメータインデックス、ステップ、およびオーバーラップを示す。
【図４３】図４３は、簡略化されたハワードカスケードのデータ移動およびタイミング図を示す。
【図４４】図４４は、図４３の第１の時間ステップにおける、スマートＮＩＣおよびスイッチと通信するノードの例証的ハードウェア図を示す。
【図４５】図４５は、図４３の第２の時間ステップにおける、スマートＮＩＣおよびスイッチと通信するノードの例証的ハードウェア図を示す。
【図４６】図４６は、９つのノードの多重通信チャネルシステムデータ移動およびタイミング図の一実施例を示す。
【図４７】図４７は、図４６の２チャネルハワードカスケードベースのマルチキャスト／ブロードキャストの第１の時間ステップの一実施例の例証的ハードウェア図を示す。
【図４８】図４８は、図４６の２チャネルハワードカスケードベースのマルチキャスト／ブロードキャストの第２の時間ステップの一実施例の例証的ハードウェア図を示す。
【図４９】図４９は、和演算を使用する、スキャンコマンドの一実施例を示す。
【図５０】図５０は、一例示的な十分なチャネルのラムダ交換モデル５０００を示す。
【図５１】図５１は、十分なチャネルのラムダ交換モデルを利用して伝送されるデータの一例示的ハードウェア図を示す。
【図５２】図５２は、十分なチャネルのラムダ交換モデルを使用して、スキャン（和を用いる）を行なう、スマートＮＩＣ５２１２、５２１４を示す。
【図５３】図５３は、マルチキャストまたはブロードキャストの使用を検出するために使用される、検出可能通信パターン５３００を示す。
【図５４】図５４は、十分なチャネルのハワードカスケードベースのマルチキャスト／ブロードキャストの一例示的論理図を示す。
【図５５】図５５は、図５４の十分なチャネルのハワードカスケードベースのマルチキャストまたはブロードキャスト通信モデルの例示的ハードウェア図を示す。
【図５６】図５６は、一例示的散乱データパターンを示す。
【図５７】図５７は、一例示的十分なチャネルのハワードカスケード散乱を示す。
【図５８】図５８は、図５７の十分なチャネルのハワードカスケード散乱の一例示的ハードウェア図を示す。
【図５９】図５９は、一例示的論理ベクトル散乱を示す。
【図６０】図６０は、ベクトル散乱演算のための一例示的タイミング図およびデータ移動を示す。
【図６１】図６１は、図６０のベクトル散乱演算の一例示的ハードウェア図を示す。
【図６２】図６２は、ハワードカスケードベースのデータ伝送を使用する、直列データ入力の論理図を示す。
【図６２】図６２は、トップレベル計算ノードのホームノード選択が、分解されたデータセットをシステムの一部に並行して伝送する、一例示的システムを示す。
【図６３】図６３は、図６２のＮＡＳデバイスからのデータセットの一部を伝送する第１の時間ステップの一例示的ハードウェア図を示す。
【図６４】図６４は、図６２のＮＡＳデバイスからのデータセットの一部を伝送する第２の時間ステップの一例示的ハードウェア図を示す。
【図６５】図６５−６７は、分解されたデータセットをシステムの一部に伝送する一実施例を示す。
【図６６】図６５−６７は、分解されたデータセットをシステムの一部に伝送する一実施例を示す。
【図６７】図６５−６７は、分解されたデータセットをシステムの一部に伝送する一実施例を示す。
【図６８】図６８は、デカルトトポロジ下において、１次元左右交換を検出するために使用されるパターンを示す。
【図６９】図６９は、円形トポロジ下において、左右交換を検出するために使用されるパターンを示す。
【図７０】図７０は、第１および第２のマトリクスとしての全対全交換検出パターンを示す。
【図７１】図７１は、３つの時間ステップにおける、一例示的４つのノードの全対全交換を示す。
【図７２】図７２は、図７１の全対全交換（ＰＡＡＸ／ＦＡＡＸモデル）の例証的ハードウェア図を示す。
【図７３】図７３は、ベクトル全対全交換モデルのデータパターン検出を示す。
【図７４】図７４は、デカルトトポロジにおける、２次元次隣接データ交換を示す。
【図７５】図７５は、トロイドトポロジにおける、２次元次隣接データ交換を示す。
【図７６】図７６は、図７６に示されるデカルトトポロジにおける、２次元赤黒交換を示す。
【図７７】図７７は、トロイドトポロジにおける、２次元赤黒交換を示す。
【図７８】図７８は、デカルトトポロジにおける、２次元左右交換を示す。
【図７９】図７９は、トロイドトポロジにおける、２次元左右交換を示す。
【図８０】図８０は、全縮小交換を検出するために要求されるデータパターンを示す。
【図８１】図８１は、図８０の十分なチャネルベースのＦＡＡＸの例証的論理図を示す。
【図８２】図８２は、図８１の十分なチャネルベースのＦＡＡＸ交換の例証的ハードウェア図を示す。
【図８３】図８３は、３チャネルオーバーラップ通信における、ＦＡＡＸモデルを使用して、全縮小（和を用いる）を行なう、スマートＮＩＣを示す。
【図８４】図８４は、十分なチャネルの部分的データセットの全対全交換（ＰＡＡＸ）の論理図を示す。
【図８５】図８５は、縮小−散乱モデルデータの移動およびタイミング図を示す。
【図８６】図８６は、ＰＡＡＸモデルを使用して、縮小散乱（和を用いる）を行なう、スマートＮＩＣ８２１０を示す。
【図８７】図８７は、一例示的全収集データ移動のテーブルを示す。
【図８８】図８８は、十分なチャネルの完全データセット全対全交換（ＦＡＡＸ）としてのベクトル全収集を示す。
【図８９】図８９は、最終結果が、中心の位置であるように、散乱データ部分を収集するための集積モデルのための一例示的データ移動およびタイミング図を示す。
【図９０】図９０は、第１の時間ステップの間の図８９に示される集積収集の一例示的ハードウェア図９０００を示す。
【図９１】図９１は、第２の時間ステップの間の図８９に示される集積収集の一例示的ハードウェア図９１００を示す。
【図９２】図９２は、２チャネルハワードカスケードデータの移動およびタイミング図の論理図を示し、本実施例は、縮小和演算を示す。
【図９３】図９３は、２チャネルデータおよびコマンド移動の図９２の第１の時間ステップのハードウェア図を示す。
【図９４】図９４は、図９２の第２の時間ステップの一例示的ハードウェア図を示す。
【図９５】図９５は、収集モデルのデータ移動の例証的実施例を示す。
【図９６】図９６は、十分なチャネルのハワードカスケード収集の論理図を示す。
【図９７】図９７は、十分なチャネルのハワードカスケードベースの収集通信モデルのハードウェア図を示す。
【図９８】図９８は、和−縮小に取って代わり得る、基本収集演算のリストである。
【図９９】図９９は、和演算を使用する、縮小コマンドの一実施例を示す。
【図１００】図１００は、和演算を使用する縮小コマンドを使用した、ハワードカスケードデータの移動およびタイミング図の一実施例を示す。
【図１０１】図１０１は、十分なチャネルのオーバーラップハワードカスケードベースの縮小コマンドのハードウェア図を示す。
【図１０２】図１０２は、計算を伴うオーバーラップ通信を利用して、縮小を行なう、スマートＮＩＣの一実施例を示す。
【図１０３】図１０３は、ベクトル収集演算として検出される、データ移動を示す。
【図１０４】図１０４は、３つのノードを有する、ベクトル収集システムの論理図を示す。
【図１０５】図１０５は、十分なチャネルのハワードカスケードベクトル収集演算を行なうための図１０４のシステムのハードウェア図を示す。
【図１０６】図１０６は、ハワードカスケードベースのデータ伝送を使用する、直列データ出力のシステムの論理図を示す。
【図１０７】図１０７は、図１０６の第１の時間ステップにおける、ハワードカスケードベースのデータ伝送を使用する、直列データシステムの部分的例証的ハードウェア図を示す。
【図１０８】図１０８は、第２の時間ステップにおける、ハワードカスケードベースのデータ伝送を使用する、直列データシステムの部分的例証的ハードウェア図を示す。
【図１０９】図１０９は、ハワードカスケードベースの並列データ入力伝送の一実施例を示す。
【図１１０】図１１０は、図１０９の第１の時間ステップの間、ハワードカスケードを使用する、並列データ出力システムの一例証的ハードウェア図を示す。
【図１１１】図１１１は、図１０９の第２の時間ステップの間、ハワードカスケードを使用する、並列データ出力システムの一例証的ハードウェア図を示す。
【図１１２】図１１２は、２つの状態（状態１および状態２）および４つの伝送を伴う、状態機械を示す。
【図１１３】図１１３は、加えて、状態２．１および状態２．２を含む、図１１２の状態２を示す。
【図１１４】図１１４は、検出のための状態遷移を伴う、組み合わせデータ移動を要求する、並列処理判定プロセスの例証的実施例を示す。
【図１１５】図１１５は、各関連付けられたデータおよび遷移カーネル関連付けのためのインデックス、出力値のリスト、および拡張機能カーネルへのポインタを含有するファイルを出力する、アルゴリズムを処理するための例示的方法を示す。
【図１１６】図１１６は、ｍｙ  ａｄｄｉｎｇ（追加）、ｃｈａｎｇｉｎｇ（変更）、またはｄｅｌｅｔｉｎｇ（削除）のいずれかの並列拡張機能を処理するための一例示的方法１１６００を示す。
【図１１７】図１１７は、アルゴリズムを処理するための一例示的システムを示す。
【図１１８】図１１８は、６つの並列処理構成要素を組み合わせるために使用される、例示的アルゴリズムを示す。
【発明を実施するための形態】
【０００７】
定義
本書の目的のために、以下の定義は、本明細書で使用されるように、以下の用語の解釈のためのガイドラインを供給するために提供される。
【０００８】
制御カーネル−制御カーネルは、以下のタイプのコンピュータ言語構造：サブルーチン呼出し、ループ文（ｆｏｒ、ｗｈｉｌｅ、ｄｏ等）、決定文（ｉｆ−ｔｈｅｎ、−ｅｌｓｅ等）、および分岐文（ｇｏ  ｔｏ、ｊｕｍｐ、ｃｏｎｔｉｎｕｅ、ｅｘｉｔ等）のみを含有する、いくつかのソフトウェアルーチンまたは関数である。
【０００９】
プロセスカーネル−プロセスカーネルは、以下のタイプのコンピュータ言語構造：サブルーチン呼出し、ループ文、決定文、または分岐文を含有しない、いくつかのソフトウェアルーチンまたは関数である。情報は、ＲＡＭを介して、プロセスカーネルへおよびそこから渡される。
【００１０】
混合カーネル−混合カーネルは、制御およびプロセスカーネルコンピュータ言語構造の両方を含む、いくつかのソフトウェアルーチンまたは関数である。
【００１１】
データ転送通信モデル−これらは、別個のサーバ、プロセッサ、またはコアへ／から情報を転送するためのモデルである。
【００１２】
制御転送モデル−制御転送モデルは、制御情報をシステム状態機械インタープリタに転送するために使用される方法から成る。
【００１３】
状態機械−本明細書で採用される状態機械は、正しい順序でプロセスカーネルのアクティブ化を提供する、単一の非言語構造内に、全関連付けられた制御カーネルをともにリンクさせる、２次元マトリクスである。
【００１４】
状態機械インタープリタ−状態機械インタープリタは、状態機械の状態および状態遷移が、ドキュメンテーションとしてではなく、アクティブソフトウェアとして使用される、方法である。
【００１５】
プロファイル化−プロファイル化は、アルゴリズム処理タイミング、ランダムアクセスメモリ利用、データ移動パターン、および状態遷移パターンのランタイム分析が、行なわれる、方法である。
【００１６】
ノード−ノードは、処理コア、またはプロセッサ、メモリ、および通信能力から成る、処理要素である。
【００１７】
ホームノード−ホームノードは、ハワードカスケードベースのコンピュータシステム内の制御ノードである。
【００１８】
拡張機能カーネルの操作
本方法を使用して、並列処理システム内の実行のために書かれなければならない唯一のコードは、線形独立コードのみを表す、プロセスカーネルのために要求されるコードである。前述の６つの拡張機能要素のいずれかの選択は、インターフェースシステム（例えば、図１１７に示されるシステム１１７００）に、新しい並列化モデルが定義されていることを通知する。本実施形態では、並列処理クラスタシステム１１７０１（図１１７）は、状態機械（例えば、有限状態機械１１７４６）内において、非拡張機能カーネルのみを実行する。状態機械内の状態は、動作されるべき非拡張機能カーネルコードに対応し、状態遷移は、制御フロー条件に対応する。並列処理クラスタシステム１１７０１は、状態機械内の「非拡張機能」カーネルのみを実行するため、状態遷移および非拡張機能カーネルは、６つの拡張機能要素のそれぞれに対して、異なる検出可能、並列処理パターンをもたらす。
【００１９】
本システムは、並列処理モデルを定義する、カーネルの作成を促進する。これらのカーネルは、「並列拡張機能カーネル」と呼ばれる。並列拡張機能カーネルを定義するために、並列処理を定義するために必要とされる、以下の全６つの要素が、定義されなければならない：トポロジ、分散、入力データ、出力データ、相互通信、および集積。図１１８は、全６つの要素を組み合わせ、並列拡張機能カーネルを定義するために使用される、例示的アルゴリズムを示す。
【００２０】
図１１８に示されるように、インターフェースシステムが、最初に、ステップ１１８０５において、名称および新しい並列拡張機能カーネルへのポインタを受信する。ステップ１１８１０では、定義されている要素が、入力データセットまたは出力データセットである場合、受信された入力／出力データ変数の名称、タイプ、および次元は、定義されている本拡張機能カーネルと関連付けられる。
【００２１】
ステップ１１８２０−１１８３５では、拡張機能要素のどの可能性として考えられる他のタイプが、現在、定義されているかを判定するためのチェックが、行なわれる。タイプの拡張機能要素のタイプが、判定されると、次いで、ステップ１１８４０において、既存の並列拡張機能モデル要素が選択されているかどうか、または新しいモデル、すなわち、既存のモデル内の新しい要素が、定義されているかどうかに関して、チェックが、行なわれる。
【００２２】
既存の並列拡張機能モデル要素が、選択されている場合、ステップ１１８５０において、適切な要素が、インターフェースシステム上に常駐するリスト、例えば、ＬＴＭ１１７２２内のリスト１１７５４から選択される。新しい並列拡張機能モデル、すなわち、既存のモデル内の新しい要素が、定義されている場合、ステップ１１８４５では、拡張機能の名称（または、拡張機能モデルの名称）および関連パラメータが、受信され、インターフェースシステム内のリスト、例えば、ＬＴＭ１１７２２内のリスト１１７５４に追加される。両方の場合において、選択された拡張機能要素または他の供給された情報は、定義されている並列拡張機能カーネルと関連付けられる。
【００２３】
データおよび遷移の２つのパターンタイプが、存在する。これらのパターンタイプの存在は、カーネルタイプ、アルゴリズム抽出データアクセスパターンカーネル、およびアルゴリズム状態遷移パターンカーネルを判定する、２つの特殊パターンによって判定されてもよい。カーネルタイプを検索するこれらの２つのパターンの出力値は、組み合わせて、第３のカーネル（並列拡張機能カーネル）が、状態機械インタープリタによって起動される必要があるかどうかを判定するために使用される。
【００２４】
本システムによると、状態機械インタープリタ（ＳＭＩ）（図示せず）は、入力として、制御カーネルから成る状態ベクトルを使用してともに接続される、プロセスカーネルおよび関連付けられたデータストレージである、状態から成る、有限状態機械をとる、コンピュータシステムである。プロセスカーネル、データストレージ、および制御カーネルの組み合わせは、標準コンピュータプログラムと同一の能力を提供し、したがって、ＳＭＩの出力は、機能的コンピュータプログラムである。
【００２５】
パターン使用−並列拡張機能カーネルの追加
並列拡張機能カーネルは、例えば、システムユーザによって追加されてもよい。この一実施例は、要素の選択後、例えば、ユーザインターフェースからの管理レベルユーザの追加ボタン選択である。システムインターフェースは、次いで、自動化並列拡張機能登録（ＡＰＥＲ）画面を表示する。ＡＰＥＲ画面は、並列拡張機能の名称を表示し、作成組織の名称と組み合わせられたカテゴリは、新しい並列拡張機能要素を定義する。
【００２６】
拡張機能要素は、以下の３つのコンピュータプログラムタイプのうちの１つを有してもよい：データカーネル、遷移カーネル、および拡張機能カーネル。データカーネルは、標準カーネルまたはアルゴリズムが、プロファイル化されるときに生じる、ＲＡＭアクセスを追跡する、ソフトウェアである。したがって、データカーネルは、データ移動／アクセスパターンを判定するために使用される、検出方法を表す。
【００２７】
遷移カーネルは、プロファイル化されたカーネルまたはアルゴリズムのための状態機械の実行の間に生じる、データ遷移を追跡する、ソフトウェアである。遷移カーネルは、状態遷移パターンを判定するために使用される検出方法を表す。データカーネルと遷移カーネルとの間に存在する関係は、「データおよび遷移パターン関係条件」と称される。データおよび遷移パターン関係条件は、状態機械インタープリタが、拡張機能カーネルを利用するための条件が存在することを把握するように、データカーネルおよび遷移カーネルの一方または両方からの出力データをチェックするために使用される。
【００２８】
拡張機能カーネルは、並列処理モデルを表す、ソフトウェアである。拡張機能カーネルは、データまたは遷移パターンが検出される場所（相互通信集合要素の場合）、または適切な時間（他の集合要素の場合）のいずれかの点で利用される。並列処理イベントの自動検出および検出された並列処理を行なうために要求される後続コード等の知的特性が、開発者による使用のために利用可能になる状況では、コードを利用可能にする組織は、並列化されたアプリケーションコードに対して、料金をエンドライセンス料に追加してもよい。
【００２９】
図１１５は、インデックス、出力値のリスト、および各関連付けられたデータおよび遷移カーネルに対する拡張機能カーネルへのポインタを含有するファイルを出力する、アルゴリズムを処理するための方法１１５００を示す。最初に、アルゴリズムが、実行され、最大ベクトル／マトリクスへのデータアクセスが、追跡される。データの物理的移動は、要素のコンテンツの同一のベクトル／マトリクス内の異なる要素へのコピーを伴う。相対的物理的要素移動は、追跡され、追跡記録は、保存される。保存された追跡記録は、パターンと呼ばれる。保存された追跡記録は、次いで、既知のパターンのライブラリと比較される。現在のパターンが、パターンのライブラリ内で見つけられる場合、見つけられたライブラリパターンの離散化（トポロジ）モデルが、現在のカーネルに割り当てられる。見つけられたライブラリパターンの（と関連付けられた）拡張された並列カーネルは、現在のカーネルに付け加えられ、ある状態として、現在のカーネルと、少なくとも１つの他の状態として、拡張された並列カーネルとを伴う、有限状態機械を形成する。
【００３０】
ステップ１１５１０では、方法１１５００は、アルゴリズムの有限状態機械の直列バージョンを、そのプロファイラがＯＮに設定された状態機械インタープリタ内にロードする。ステップ１１５２０は、アルゴリズムの有限状態機械によって使用される全メモリ位置を全データカーネルに渡す。ステップ１１５３０は、データカーネルのリストをスレッド１上で動作させ、全データ移動をデータ出力Ａファイル内に記憶する。ステップ１１５４０は、遷移カーネルのリストをスレッド２上で動作させ、全遷移データをデータ出力Ｂファイル内に記憶する。ステップ１１５５０は、全入力データが処理されるまで、試験入力データを使用して、アルゴリズムの有限状態機械をスレッド３上で動作させる。ステップ１１５６０は、インデックスをゼロに等しくなるように設定する。決定ステップ１１５７０は、インデックスされたデータ出力Ａおよびデータ出力Ｂが、パターンに一致するかどうか判定し、その一実施例は、以下に示される。
【００３１】
データパターン検出実施例：
以下の２次元データ移動の検出：
【００３２】
【表１】
2014525640.tif 000003
これは、以下に変換される：
【００３３】
【表２】
2014525640.tif 000004
加えて、検出の過程の間、検出されたデータ移動が、以下のようである場合：
Ｘインデックス＝｛１，２，３，１，２，３，１，２，３｝
および
Ｙインデックス＝｛１，１，１，２，２，２，３，３，３｝、
これは、２次元転置行列を示す。本タイプの２次元転置行列のデータは、複数の行に分割され得（並列サーバあたり１行程度と少ない）、離散化モデル、複数のサーバにわたる入力データセット分散、およびシステムの集積モデルバックアウトを含意する。一実施例では、前述のパターンの検出からの並列化は、以下である：
離散化拡張機能：サーバ１＝（１，１）、（１，２）、（１，３）
サーバ２＝（２，１）、（２，２）、（２，３）
サーバ３＝（３，１）、（３，２）、（３，３）
ハワードカスケード分散拡張機能
転置行列拡張機能
ハワードカスケード集積拡張機能
識別されたモデルの組み込みは、本システムが、アプリケーションを完全に並列化することを可能にする。インデックスデータＡおよびデータＢが、パターンに一致する場合、方法１１５００は、ステップ１１５７５に移動し、方法１１５００は、関連付けられた拡張機能カーネルをアルゴリズムの有限状態機械内に記憶し、処理は、ステップ１１５８０に移動する。一実施例では、データ出力Ａのインデックス３は、データ出力Ｂのインデックス３と同一の拡張機能カーネルを指す。そうでなければ、処理は、ステップ１１５８０に移動する。
【００３４】
ステップ１１５８０は、インデックスをインクリメントし、次いで、ステップ１１５９０に移動し、インデックスの判定は、遷移およびデータパターン関連付けの総数に等しい。ステップ１１５９０が、インデックスが、遷移およびデータパターン関連付けの総数と等しくないと判定する場合、処理は、ステップ１１５７０に移動する。そうでなければ、方法１１５００は、終了する。
【００３５】
図１１６は、ｍｙ  ａｄｄｉｎｇ（追加）、ｃｈａｎｇｉｎｇ（変更）、またはｄｅｌｅｔｉｎｇ（削除）のいずれかの並列拡張機能を処理するための一例示的方法１１６００を示す。方法１１６００では、ユーザは、並列拡張機能（ステップ１１６０２）、並列処理要素（ステップ１１６０４）、および操作選択肢（ステップ１１６０６）を選択する。ステップ１１６０２−１１６０４の実施例は、ユーザによるユーザインターフェース上の１つ以上のボタンを選択である。
【００３６】
決定ステップ１１６２０は、追加拡張機能が選択されるかどうか判定する。追加決定が、ステップ１１６０２−１１６０６において選択される場合、１１６２０は、決定ステップ１１６２２に移動する。ステップ１１６２２では、選択された並列拡張機能の名称が存在するかどうか判定される（ステップ１１６０２において選択される）。並列拡張機能の名称が、存在しない場合、処理は、エラー条件ステップ１１６５０に移動し、エラーが、方法１１６００の終了に先立って判定される。ステップ１１６２２において、選択された並列拡張機能の名称が存在すると判定される場合、処理は、ステップ１１６２４に移動する。ステップ１１６２４では、方法１１６００は、方法１１６００の終了に先立って、拡張機能に関連付けられたデータならびに記述情報のためのコードを状態機械インタープリタに追加する。ステップ１１６２０において、追加拡張機能が選択されないと判定される場合、処理は、決定ステップ１１６３０に移動する。
【００３７】
決定ステップ１１６３０において、方法１１６００は、変更拡張機能が、ステップ１１６０２−１１６０６において選択されたかどうか判定する。変更拡張機能が選択される場合、処理は、ステップ１１６３２に移動する。ステップ１１６３２では、選択された並列拡張機能の名称が存在するかどうか判定される。並列拡張機能の名称が存在しない場合、処理は、エラー条件ステップ１１６５０に移動し、エラーが、方法１１６００の終了に先立って判定される。拡張機能の名称が存在すると判定される場合、処理は、ステップ１１６３４に移動する。ステップ１１６３４において、方法１１６００が、データまたは遷移または拡張機能または記述情報のためのコードを変更し、次いで、変更を状態機械インタープリタに追加する。方法１１６００は、次いで、終了する。ステップ１１６３０において、変更拡張機能が選択されない場合は、処理は、決定ステップ１１６４０に移動する。
【００３８】
ステップ１１６４０において、削除拡張機能が、ステップ１１６０２−１１６０６において選択されるかどうか判定される。削除拡張機能が選択される場合、処理は、決定ステップ１１６４２に移動する。ステップ１１６４２では、選択された並列拡張機能の名称が存在するかどう判定される。並列拡張機能の名称が存在しない場合、処理は、エラー条件ステップ１１６５０に移動し、エラーが、方法１１６００の終了に先立って判定される。拡張機能の名称が存在すると判定される場合、処理は、ステップ１１６４４に移動する。ステップ１１６４４では、並列拡張機能の名称データが、方法１１６００の終了に先立って削除される。ステップ１１６４０において、追加拡張機能が選択されないと判定される場合、処理は、エラー条件ステップ１１６５０に移動し、エラーが、方法１１６００の終了に先立って判定される。
【００３９】
図１１７は、図１１５の方法１１５００に説明されるように、アルゴリズムを処理するための一例示的システムを示す。システム１１７００は、プロセッサ１１７１２（例えば、中央処理単位）、内部通信システム（ＩＣＳ）１１７１４（例えば、北／南ブリッジチップセット）、Ｅｔｈｅｒｎｅｔ（登録商標）コントローラ１１７１１６、不揮発性メモリ（ＮＶＭ）１１７１８（例えば、「キープアライブ」バッテリと連結されたＣＭＯＳメモリ）、ＲＡＭ１１７２０、および長期メモリ（ＬＴＭ）１１７２２（例えば、ＨＤＤ）を含む。
【００４０】
本実施例では、ＲＡＭ１１７２０は、プロファイラ１１７３２、第１のスレッド１１７３４、第２のスレッド１１７３６、第３のスレッド１１７３８、データ出力Ａ１１７４０、データ出力Ｂ１１７４２、およびインデックス１１７４４を有する、インタープリタ１１７３０を記憶する。ＬＴＭ１１７２２は、有限状態機械（ＦＳＭ）１１７４６、メモリ位置１１７４８ストレージ、試験データ１１７５０、およびシステムソフトウェアを記憶する。ＮＶＭ１１７１８は、ファームウェア１１７１９を記憶する。ＩＣＳ１１７１４は、システム１１７００内およびシステム１１７００の外部のシステムと通信するためのＥｔｈｅｒｎｅｔ（登録商標）コントローラ１１７１６およびＥｔｈｅｒｎｅｔ（登録商標）接続部１１７１７へのデータの転送を促進する。プロセッサ１１７１２は、コード、例えば、インタープリタ１１７３０、ファームウェア１１７１９、およびシステムソフトウェア１１７５２を実行する。システム１１７００は、方法１１５００によって説明されるように、アルゴリズムを処理するための機能性を維持する限り、タイプの含まれる構成要素の数およびタイプならびに組織構造によって変動されてもよいことを理解されるであろう。
【００４１】
図１は、関連付けられたクラスタシステム（例えば、図１７における並列処理クラスタシステム１１７０１）が、自動的に、特定の並列処理拡張機能をそのアルゴリズムに適用可能であるように、標的アルゴリズムが、どのようにデータにアクセスし、状態遷移を行なうかを図示する、例示的データフロー図１００である。図１に示されるように、データアクセスパターン抽出アルゴリズム１１０が、アルゴリズムデータ１０４にアクセスするプロファイル化されたアルゴリズム１０２によって行なわれるデータアクセス１０６から、データアクセス情報１０８を抽出する。
【００４２】
データアクセスパターン抽出アルゴリズム１１０によって抽出されたデータアクセスパターンが、データカーネル内で見つけられたパターンに一致する場合、関連付けられたデータカーネルの出力データ、データ−Ａ１１２は、真であると設定される。そうでなければ、偽であると設定される。同様に、状態遷移パターンが、状態遷移パターン抽出アルゴリズムプロファイラ１３０によって、状態インタープリタ１２２とアルゴリズム遷移１２４との間の通信を介して、遷移１２６のためのアクセスデータ１２８から抽出される。状態遷移パターンが、遷移カーネル内で見つけられたパターンに一致する場合、遷移−カーネル出力データ、データ−Ｂ１３２は、真であると設定される。そうでなければ、偽であると設定される。
【００４３】
２つのプロファイル方法は、データおよび遷移パターン関係を使用して、組み合わせられることができる。図２のテーブル２００は、データおよび遷移プロファイル出力の有効な組み合わせを示す。テーブル２００では、データパターンプロファイル化の出力（図１のデータ−Ａ１１２）は、Ａによって表され、遷移パターンプロファイル化の出力（図１のデータ−Ｂ１３２）は、Ｂによって表される。
【００４４】
図１に示されるように、決定ステップ１３４において、パターン−出力値間の比較の結果が、真と解明される場合、すなわち、データ−Ａが、データ−Ｂと互換性がある場合、現在の要素のための拡張機能が、「インタープリタに対する追加拡張機能」１４０に示されるように、プロファイル化によって識別されたメモリ位置において、状態インタープリタ１２２に適用される。複数のカーネルが、自動並列処理に関与するが、複数のカーネルは、ともに記憶される。したがって、ライセンス料、ライセンス期間、使用あたり料金、無料使用の回数、および記述を含み得る、カーネル属性が、アプリケーションと呼ばれる単一エンティティ内の本グループの複数のカーネルと関連付けられる。
【００４５】
作成された拡張機能は、並列処理クラスタシステム１１７０１内に（例えば、データベース内に）記憶される。拡張機能はまた、クラスタシステム１１７０１内で編集および削除されてもよい。
【００４６】
初期トポロジ実施例
本システムに対して想像可能な特定の任意のトポロジを追加することが可能であるが、以下は、着目初期トポロジを説明する。
【００４７】
メモリアクセス追従方法
メモリに対する変化が、種々のデータトポロジタイプを検出するために追跡される。並列処理クラスタシステム１１７０１は、ＲＡＭ（例えば、図１１７におけるＲＡＭ１１７２０）を利用して、プロセスカーネルをともに接続し、したがって、正しいアドレスおよびＲＡＭキーを伴う、任意のプロセスカーネルが、そのデータの処理に干渉せずに、ＲＡＭエリア１１７２０を閲覧し得る。例えば、分析のために、共有データを別のシステム（または、同一のシステムの異なる部分）にゴーストコピーすることが可能である。アプリケーションは、最初に、ＲＡＭエリアからジョブ番号をとり、本ジョブ番号をＲＡＭキーとして使用する。標準「ｓｈｍｇｅｔ」コマンドを呼び出し、ＲＡＭのブロックを配分するのではなく、アプリケーションは、「ＭＰＴ＿ｓｈｍｇｅｔ」と呼ばれる、「ｓｈｍｇｅｔ」の修正バージョンを呼び出す。図３は、システムライブラリからの「ｓｈｍｇｅｔ」の使用を図示する、例示的ソースコード３００を示す。
【００４８】
関数「ｓｈｍｇｅｔ」は、Ｃ−プログラミング言語関数「ｓｈｍｇｅｔ」、「ｃａｌｌｏｃ」、または「ｍａｌｌｏｃ」と同様に定義されるが、キー、サイズ、およびフラグパラメータならびにＲＡＭ識別（「ＭＰＴ＿ｓｈｍｉｄ」）が、メッシュタイプ決定子によってアクセス可能である。本メッシュタイプ決定子は、周期的に、またはソフトウェア中断の検出が、ＲＡＭエリアからＲＡＭゴーストコピーエリア（典型的には、ディスクストレージエリア）内に、ＲＡＭ値をタイムスタンプとともにコピーさせた後のいずれかにおいて、パターン検出器によって行なわれる分析に基づいて、複数のサーバ間でデータセットを分割する方法を判定する、ソフトウェアである。アルゴリズムの動作が完了すると、システム１１７００は、ＲＡＭゴーストコピーエリア内でデータを分析し、メッシュタイプを判定する。以下のセクションは、メッシュタイプを定義するために使用される、データセットアクセスパターンを説明する。
【００４９】
Ｍｅｓｈ＿Ｔｙｐｅ＿Ｓｔａｎｄａｒｄの判定、１次元実施例
本メッシュタイプの目的は、アレイ内において、データを連続して処理することである。ワークロードは、処理されているアレイ要素にかかわらず、同一のままであると仮定される。プロファイラは、各要素を処理するためにかかる時間を計算する。ＭＥＳＨ＿ＴＹＰＥ＿Ｓｔａｎｄａｒｄメッシュタイプは、ビンに基づいて、分解する。第１に、ＭＥＳＨ＿ＴＹＰＥ＿Ｓｔａｎｄａｒｄは、Ｎ個のデータビンを作成し、各ビンは、計算要素（サーバ、プロセッサ、またはコア）数に対応する。各計算要素は、それと関連付けられた１つ以上のビンを有してもよいことを理解されたい。次に、アレイ要素は、ビンにわたって、等しく分散される。図４は、４つの計算要素によって処理するための１６のシーケンシャルデータアイテムの例示的ビニングを図示する、テーブル４００であって、各要素は、ビン１−４の１つに対応する。
【００５０】
Ｍｅｓｈ＿Ｔｙｐｅ＿Ｓｔａｎｄａｒｄ、１次元静的および動的オブジェクト実施例
適切なメッシュタイプ標準（Ｍｅｓｈ＿Ｔｙｐｅ＿Ｓｔａｎｄａｒｄ）トポロジモデルを選択するために使用される、以下の２つの分析方法が存在する：静的オブジェクト方法および動的オブジェクト方法。本明細書では、「オブジェクト」と称される、データオブジェクトはまた、任意の有効な数値データ値であってもよく、そのサイズは、アレイ要素サイズ以上であって、要素の最大数までである。オブジェクトが、最大数の要素に等しい場合、定義によって、オブジェクトは、静的となる。また、データオブジェクトが、要素位置を変更していない、またはそれが定義するアレイ要素の数を変更していない場合、オブジェクトは、静的である。代替として、カーネル処理の間、任意のデータオブジェクトが、要素位置を変更している、またはアレイ要素の数を変更している場合、それらのオブジェクトは、動的である。
【００５１】
図５は、１つのオブジェクトを伴う、次元タイプ１の静的アレイ処理を図示する。図５は、ａ［ｘ］変換５０２が適用される前の例示的データアレイ５００と、変換５０２が適用された後のアレイ５００を表す、アップデートされたアレイ５０４とを表す。
【００５２】
図６は、２つのオブジェクトを伴う、次元タイプ１の静的アレイ処理を図示する。図６は、ａ［ｘ］変換６０２が適用される前の例示的データアレイ６００と、変換６０２が適用された後のアレイ６００を表す、アップデートされたアレイ６０４とを示す。
【００５３】
図７は、３不等間隔オブジェクトを伴う、標準１次元静的アレイ処理を図示する。図７は、ａ［ｘ］変換７０２が適用される前の例示的データアレイ７００と、変換７０２が適用された後のアレイ７００を表す、アップデートされたアレイ７０４とを示す。
【００５４】
図５では、要素のうちの９つが、オブジェクトを分離するいかなる未処理要素も伴わずに、変換後、値を変更する。変更は、隣接要素のそれぞれにおいて、異なる値をもたらす。図６では、未処理エリアによって分離される、複数のセットの隣接する処理済み要素が、存在する。データオブジェクトが、オブジェクトが移動していないため、特定されているが、アレイは、標準静的オブジェクトとして取り扱われることができる。
【００５５】
図８は、データオブジェクトがアレイ内でスキップされる場合に生じる、別のタイプの静的オブジェクトを示す。図８は、ａ［ｘ］変換８０２が適用される前の例示的データアレイ８００と、変換８０２が適用された後のアレイ８００を表す、アップデートされたアレイ８０４とを表す。これは、スキップ要素によってアクセスされる５つのオブジェクトを伴う、標準１次元静的アレイ処理を図示する。
【００５６】
図９は、２つの移動オブジェクトを伴う、標準１次元動的アレイ処理を図示する。図９は、ａ［ｘ］変換９０２が適用される前の例示的データアレイ９００と、変換９０２が適用された後のアレイ９００を表す、アップデートされたアレイ９０４とを示す。
【００５７】
図１０は、２つの成長オブジェクトを伴う、標準１次元動的アレイ処理を図示する。図１０は、ａ［ｘ］変換１００２が適用される前の例示的データアレイ１０００と、変換１００２が適用された後のアレイ１０００を表す、アップデートされたアレイ１００４とを示す。
【００５８】
図９および１０の実施例は、動的オブジェクトを表す。図９は、オブジェクトが、位置を変更しているため、動的オブジェクトを示し、図１０は、オブジェクトのうちの１つ以上がサイズを変更しているため、動的オブジェクトを示す。
【００５９】
以下の説明は、どのＭｅｓｈ＿Ｔｙｐｅ＿Ｓｔａｎｄａｒｄモデルが、カーネルをプロファイル化するために利用されるかを詳述する。カーネルをプロファイル化する間、同一のワークロードを伴う、静的データのアレイが、連続してアクセスされる場合、インデックス、ストライド、またはオーバーラップを伴わない、メッシュタイプ標準（Ｍｅｓｈ＿Ｔｙｐｅ＿Ｓｔａｎｄａｒｄ）トポロジモデルが、使用される。静的オブジェクトを伴う、アレイの処理が、アレイの第１の要素からオフセットされて開始される場合、インデックスを伴う、メッシュタイプ標準トポロジモデルが、使用される。静的オブジェクトを伴う、アレイの処理が、開始され、アクセスされるオブジェクト間の距離が固定される、またはカーネルが、いくつかの要素を均等にスキップすることによって、静的データにアクセスする場合、ストライドを伴う、メッシュタイプ標準トポロジが、使用される。カーネルが、複数の静的な不等間隔オブジェクトにアクセスする場合、オブジェクトのサイズは、可能なビンの数を定義する。加えて、ビン間のオーバーラップは、最大オブジェクトのサイズの２倍であるように定義される。同一のワークロードを伴う、動的データのアレイが、アクセスされる場合、オーバーラップを伴う、メッシュタイプ標準トポロジモデルが、使用される。オーバーラップエリアのサイズは、最大データオブジェクトサイズが遭遇する２倍である。
【００６０】
加えて、種々のメッシュタイプ標準トポロジモデルは、例えば、以下のメッシュタイプ標準トポロジモデルを生成するためにともに組み合わせられることができる：インデックス、ストライド、インデックスとストライド、インデックスとオーバーラップ、ストライドとオーバーラップ、およびインデックスとストライドとオーバーラップ。
【００６１】
Ｍｅｓｈ＿Ｔｙｐｅ＿Ｓｔａｎｄａｒｄ、リングデータ構造実施例
処理の間、アレイの両端が一致する場合、アレイは、リング構造と見なされる。リング構造は、動的データオブジェクトにのみ関連する。以下は、リング構造を使用する、動的データオブジェクトの実施例である。
【００６２】
図１１は、リングを中心として移動する２つのオブジェクトを伴う、標準１次元動的アレイ処理を図示する。図１１は、ａ［ｘ］変換１１０２が適用される前の例示的データアレイ１１００と、変換１１０２が適用された後のアレイ１１００を表す、アップデートされたアレイ１１０４とを示す。
【００６３】
図１２は、リングを中心として成長する２つのオブジェクトを伴う、標準１次元動的アレイ処理を図示する。図１２は、ａ［ｘ］変換１２０２が適用される前の例示的データアレイ１２００と、変換１２０２が適用された後のアレイ１２００を表す、アップデートされたアレイ１２０４とを示す。
Ｍｅｓｈ＿Ｔｙｐｅ＿Ｓｔａｎｄａｒｄ、１次元不均衡ワークロード実施例
明確にするために、図１３および１４は、ともに検討されるべきである。静的データオブジェクトは、潜在的データビンのいくつかのみ内にランダムに集中され得る。これが検出されると、システムトポロジは、ビンあたりのデータオブジェクトの数を均衡化することによって、ワークロードを均衡化しなければならない。図１３は、アレイ１３００の両端（ビン１およびビン４）に集中される４つのデータオブジェクト（データオブジェクト１３０２−１３０８）の実施例を示し、不均衡ワークロードを図示し、ビン２およびビン３は、ワークがない。
【００６４】
ワークを均衡化するために、ポインタ（例えば、図１４におけるポイント１４０２−１４０８）は、各データオブジェクト１３０２−１３０８と関連付けられる。各ポインタは、次いで、ビンによって参照され、例えば、ビン１は、図１４に示されるように、ポインタ１４０２を参照する。図１４は、ポインタの使用を通して、アレイ１４００内の不均衡データオブジェクト位置からワークロードを均衡化するステップを図示する。
【００６５】
単一レベルの間接参照によって、すなわち、ポインタの使用を通して、データオブジェクトとビンを関連付けることによって、静的ランダムに配置されたデータオブジェクトから生成されるワークを均衡化することが可能である。本モデルは、データオブジェクトがワークを均衡化するために要求されるどのようなものでも、各ビンが含有することを可能にする。
【００６６】
Ｍｅｓｈ＿Ｔｙｐｅ＿Ｓｔａｎｄａｒｄ、１次元可変グリッド実施例
１次元可変グリッドトポロジは、ある数のデータ移動サイクル後に生じ得、データオブジェクトは、集中を変更し、したがって、ワークロードを変更する。一例として、ポイントがデータオブジェクトとビンを関連付けるために使用される、図１４に示される均衡化されたワークロードシナリオを仮定する。図１５の実施例では、ある数のデータ移動後、４つのデータオブジェクトが、図１５に示されるように、位置する。ポインタ１４０２−１４０８をアップデートすることによって、均衡化されたワークロードが維持される。
Ｍｅｓｈ＿Ｔｙｐｅ＿Ｓｔａｎｄａｒｄ、１次元実施例：インデックス、ストライド、インデックスとストライド、およびオーバーラップ実施例のデータ分解計算
統合して、本メッシュタイプのためのデータトポロジを作成する、３つのパラメータが、存在する。パラメータは、インデックス、ストライド、およびオーバーラップ（「オーバーラップ」は、図１６にＯ１として示される）である。図１６は、インデックス、ストライド、インデックスとストライド、オーバーラップ、インデックスとオーバーラップ、ストライドとオーバーラップ、およびインデックスとストライドとオーバーラップを伴う、次元標準データセットトポロジを図示する、一例示的テーブル１６００を示す。図１６は、３つのパラメータインデックス、ストライド、およびオーバーラップを図４に与えられる実施例に適用することによってもたらされ得る、実施例を示す。
【００６７】
Ｍｅｓｈ＿Ｔｙｐｅ＿Ｓｔａｎｄａｒｄ、２次元実施例
メッシュタイプ標準トポロジ方法は、要素あたりのワークの量が同一のままである限り、２次元に拡張され得る。図１７は、例示的２次元標準データセットトポロジ１７００を示す。
【００６８】
Ｍｅｓｈ＿Ｔｙｐｅ＿Ｓｔａｎｄａｒｄ、２次元静的および動的オブジェクト実施例
単一次元メッシュタイプの標準モデル同様に、２次元バージョンは、静的および動的オブジェクトの両方を有する。余剰次元のため、データオブジェクトの定義は、第２の次元に拡張される。動的データオブジェクトは、同様に、両次元において成長および移動することができる。図１８は、１つの大きいデータオブジェクトを伴う、標準２次元静的アレイ処理を図示する。図１８は、ａ［ｘ］［ｙ］変換１８０２の適用される前の静的オブジェクトの一例示的２次元テーブル１８００と、変換１８０２が適用された後のアレイ１８００を表す、アップデートされたアレイ１８０４とを示す。
【００６９】
図１９は、２つの小データオブジェクトを伴う、標準２次元静的マトリクス処理を図示する。図１９は、ａ［ｘ］［ｙ］変換１９０２が適用される前の静的オブジェクトの一例示的２次元テーブル１９００と変換１９０２が適用された後のアレイ１９００を表す、アップデートされたアレイ１９０４とを示す。
【００７０】
図１８と図１９との間の差異に留意されたい。図１８および１９を参照すると、オブジェクトは、非ゼロ値の隣接する要素のグループであって、未処理要素は、処理／変換の間、値を変更しない要素、例えば、図１９に見られるように、ゼロ値を伴う要素である。また、未処理要素は、オブジェクトを分離してもよい。図１８では、オブジェクトを分離するいかなる未処理要素も伴わずに、変換１８０２によって処理された後、全１００のデータ要素が、値を変更する。すなわち、テーブル１８００および１８０４は、オブジェクトを相互から隔離する、任意のゼロ値（未処理要素）を含有しない。さらに、変更は、隣接要素のそれぞれにおいて、異なる値をもたらす。図１９では、未処理エリアによって分離される、隣接処理済み要素から成る、２つのオブジェクト、オブジェクト１９０６および１９０８が、存在する。複数のオブジェクトが存在するが、オブジェクトは、オブジェクトが移動していないため、特定可能である。したがって、アレイは、標準静的オブジェクトとして取り扱われることができる。
【００７１】
図２０は、２つの移動オブジェクトを伴う、標準２次元動的アレイ処理を図示する。図２０は、オブジェクトの一例示的２次元テーブル２０００と、−ａ［ｘ］［ｙ］変換２００２適用前のオブジェクト２００６、２００８、および２０１０と、変換２００２が適用された後のアレイ２０００を表す、アップデートされたアレイ２００４とを示す。オブジェクト２０１０は、変換２００２がテーブル２０００に適用されると、オブジェクト２０１０の最右要素が、アレイからシフトされるため、オブジェクト２０１０’に変換される。図２０に示される「変換後」テーブル２００４は、２次元デカルト空間のｘ−軸にわたるオブジェクト移動の効果を示す。空間は、有限であるため、オブジェクトは、事実上、空間から「飛び出る」。これが、２次元トロイドの場合、１＋最後のｘ−軸インデックス値は、最初のｘ−軸インデックス値となるであろう。ｙ−軸は、同様に挙動し、２次元トロイドの１＋最大ｙ−値は、最初のｙ−軸インデックス値に等しくなるであろう。
【００７２】
Ｍｅｓｈ＿Ｔｙｐｅ＿Ｓｔａｎｄａｒｄ、２次元実施例：インデックス、ストライド、インデックスとストライド、およびオーバーラップデータ分解計算
１次元の場合におけるように、実際のトポロジは、インデックス、ストライド、およびオーバーラップパラメータを用いて生じる。図２１は、インデックス２１０４、ストライド２１０６、インデックスとストライド２１０８、およびオーバーラップ２１１０実施例を伴う、２次元交互データセットトポロジを含む、標準２次元交互データセットトポロジ２１０２および４つの付加的実施例を示す。各次元は、その独自のオーバーラップパラメータ、オーバーラップ２１１２および２１１４を有することに留意されたい。
【００７３】
Ｍｅｓｈ＿Ｔｙｐｅ＿Ｓｔａｎｄａｒｄ、３次元実施例
図２２は、全次元が単調である限り、３次元に拡張され得る、一例示的３次元標準データセットトポロジを図示する。図２２は、全次元が単調である限り、３次元に拡張され得る、メッシュタイプ交互トポロジ方法によって形成される、テーブル２２００を示す。テーブル２２１０は、例示的計算デバイス２２０１、２２０２、２２０３、および２２０４を示す。図２２の実施例では、各計算デバイス２２０１、２２０２、２２０３、および２２０４は、４つの３次元ビン、（例えば、デバイス１は、ビン１，１，１、ビン１，１，２、ビン１，１，３、およびビン１，１，４を有する）を含む。各ビンは、テーブル２２００の例示的メッシュタイプ交互トポロジ方法によって分散される複数のデータポイントを含む。
【００７４】
Ｍｅｓｈ＿Ｔｙｐｅ＿Ｓｔａｎｄａｒｄ、３次元実施例：インデックス、ストライド、およびオーバーラップデータ分解計算
図２３−２６は、インデックス、ストライド、およびオーバーラップを利用する、３次元メッシュタイプの標準分解の４つの実施例を示す。１次元および２次元場合と同様に、３次元トポロジは、インデックスおよびステップパラメータを用いて生じるが、第３の次元の複雑性が追加されている。以下は、３次元交互トポロジの４つの実施例を示す。
【００７５】
図２３は、３次元交互トポロジモデルを使用する、４つの計算デバイスへの１から２５６のデータポイントの分散を示す。
【００７６】
図２４は、インデックス＝１を利用する、４つの計算デバイスへのデータポイントの分散を示す。図２４の実施例では、最初のデータアイテムは、インデックス（スキップ）され、ビンに対する最後のデータアイテム（最初のデータアイテムに一致される、オリジナルデータアイテムの数が偶数である場合）もまた、スキップされる。最初と最後のデータアイテムのスキップは、各次元における計算デバイスのそれぞれに対して生じる。
【００７７】
図２５は、ストライド＝１を利用する、４つの計算デバイスへのデータポイントの分散を示す。図２５の実施例では、ストライド＝１によって、分散方法は、１つおきのデータ単位をストライドする（スキップする）。すなわち、ストライド＝０の場合、ビン１，１，１は、データ単位｛（１、２、３、４、９、１０、１１、１２、２４５、２４６、２４７、２４８、２５３、２５４、２５５、２５６）を受信するであろう。ストライド＝１では、ビン１，１，１は、データ単位（２、４、１０、１２、２４６、２４８、２５４、２５６）がスキップされるように、データ単位（１、３、９、１１、２４５、２４７、２５３、２５５）を受信する。これは、各次元における計算デバイスのそれぞれに対して生じる。
【００７８】
図２６は、１要素ずつ、ｘ、ｙ、およびｚ次元にオーバーラップさせることによる、４つの計算デバイスへのデータポイントの分散を示す。各次元は、その独自のオーバーラップパラメータを有することを理解されるであろう。本実施例では、ｘ、ｙ、およびｚ次元のオーバーラップパラメータは、それぞれ、Ο１、Ｏ２、およびＯ３である。したがって、図２６の実施例では、１要素ずつ、ｘ、ｙ、およびｚ次元にオーバーラップさせることは、オーバーラップがＯ１＝Ｏ２＝Ｏ３＝１となるように選択することである。
【００７９】
Ｍｅｓｈ＿Ｔｙｐｅ＿Ａｌｔｅｒｎａｔｅの判定、１次元実施例
Ｍｅｓｈ＿Ｔｙｐｅ＿Ａｌｔｅｒｎａｔｅメッシュタイプの目的は、使用されるデータアイテムの関数として、ワークロードへの単調変更が存在するとき、ロードバランシングを提供することである。プロファイラは、各要素を処理するためにかかる時間を計算する。処理時間が、継続的に増加するか、または継続的に減少するかのいずれかである場合、ワークロードに対する単調変更が存在する。Ｍｅｓｈ＿Ｔｙｐｅ＿ＡＬＴＥＲＮＡＴＥメッシュタイプは、最初に作成するＮ個のデータビンに基づいて分解し、各ビンは、計算要素（サーバ、プロセッサ、またはコア）数に対応する。次に、交互データ位置が、各ビンに追加される。
【００８０】
比較として、データ位置が、交互性（例えば、１次元標準方法におけるように）を伴わずに、各ビンに追加される場合、処理時間に不均衡が生じるであろう。この一実施例は、データセット｛１、２、３、４、５、６、７、８、９、１０、１１、１２、１３、１４、１５、１６｝によって描写されるように、ワークロードが線形に成長する場合（すなわち、データ移動間の時間が、線形に成長する場合）であって、本系列は、時間の増加を表す。発生の順序で各増加項を４つの計算要素（ビンによって表される）に追加することは、例えば、図２７のテーブル２７００に示されるように、計算要素の不均衡を発生させるであろう：
ビン１、＝｛１、２、３、４｝、平均処理時間＝（１＋２＋３＋４）／４＝２．５時間単位／データアイテム、
ビン２＝｛５、６、７、８｝、平均処理時間＝（５＋６＋７＋８）／４＝６．５時間単位／データアイテム、
ビン３＝｛９、１０、１１、１２｝、平均処理時間＝（９＋１０＋１１＋１２）／４＝１０．５時間単位／データアイテム、
ビン４＝｛１３、１４、１５、１６｝、平均処理時間＝（１３＋１４＋１５＋１６）／４＝１４．５時間単位／データアイテム。
【００８１】
これは、処理時間における不均衡のため、ワークを完了するために、１４．５時間単位（最長ビン化グループ時間）かかるであろうことを意味する。代替として、１次元交互データセットトポロジが使用される場合、図２８のテーブル２８００に示されるように、以下となる：
計算デバイス１＝ビン１＝｛１、１６、２、１５｝、平均処理時間＝８．５時間単位／データアイテム、
計算デバイス１＝ビン２＝｛３、１４、４、１３）、平均処理時間＝８．５時間単位／データアイテム、
計算デバイス１＝ビン３＝｛５、１２、６、１１｝、平均処理時間＝８．５時間単位／データアイテム、
計算デバイス１＝ビン４＝｛７、１０、８、９｝、平均処理時間＝８．５時間単位／データアイテム。
【００８２】
したがって、１次元交互データセットトポロジは、１次元標準方法より１．７（１４．５／８．５）倍高速である。
【００８３】
１次元交互データセットトポロジ方法は、インデックス機能性およびストライド機能性（前述の）等の交互および／または拡張機能性を有することができることを理解されるであろう。
【００８４】
Ｍｅｓｈ＿Ｔｙｐｅ＿Ａｌｔｅｒｎａｔｅ、１次元静的および動的オブジェクト実施例
２つの分析方法は、適切なメッシュタイプ交互トポロジモデル：静的−オブジェクト方法および動的−オブジェクト方法を選択するために使用されてもよい。オブジェクトという用語は、データオブジェクトを指す。データオブジェクトは、そのサイズが、アレイ要素サイズ以上であって、最大数の要素までの任意の有効な数値データ値であることができる。データオブジェクトは、（１）データオブジェクトが、最大数の要素に等しい場合、あるいは（２）データオブジェクトが、要素位置を変更していない、またはそれを定義するアレイ要素の数を変更していない場合、静的データオブジェクトである。データオブジェクトは、カーネル処理の間、任意のデータオブジェクトが、要素位置を変更している、またはそれらを定義するアレイ要素の数を変更している場合、動的である。
【００８５】
図２９は、ａ［ｘ］［ｙ］変換２９０２前の静的オブジェクトの一例示的１−次元テーブル２９００と、変換２９０２が適用された後のアレイ２９００を表す、アップデートされたアレイ２９０４とを示す。
【００８６】
カーネルをプロファイル化するプロセスでは、カーネルが、データに連続してアクセスのみする場合、インデックス、ストライド、またはオーバーラップを伴わない、単一次元メッシュタイプ交互トポロジモデルが、使用される。代替として、カーネルが、連続して、データにアクセスされるが、開始アドレスを超える位置において、アレイ内でシーケンシャルデータアクセスを開始する場合、インデックスモデルを伴う、メッシュタイプ交互トポロジが、使用される。処理が、要素を均等にスキップすることによって、アレイの要素にアクセスする場合、ストライドを伴う、メッシュタイプ交互トポロジモデルが、使用される。
【００８７】
Ｍｅｓｈ＿Ｔｙｐｅ＿Ａｌｔｅｒｎａｔｅ、１次元実施例：インデックス、ストライド、およびオーバーラップデータ分解計算
図２７は、１次元標準データセットトポロジ内において、ビンに追加されるデータ位置を示す。図２８は、１次元交互データセットトポロジ内において、ビンに追加されるデータ位置を示す。インデックス、ストライド、およびオーバーラップパラメータは、統合して、Ｍｅｓｈ＿Ｔｙｐｅ＿Ａｌｔｅｒｎａｔｅメッシュタイプのための実際のデータトポロジを作成する、３つのパラメータである。これらの３つのパラメータは、図２８に示される実施例に適用され、図３０に示されるテーブル３０００をもたらし、１次元交互データセットトポロジは、インデックス、ストライド、およびオーバーラップを伴う。
【００８８】
インデックスパラメータは、トポロジのための開始データ位置である。ストライドパラメータは、トポロジ構成の間、データセットをスキップするとき、スキップすべきデータ要素の数を表す。オーバーラップパラメータは、２つのビンのデータ境界においてオーバーラップされるデータ要素の数を定義するために使用される。
【００８９】
Ｍｅｓｈ＿Ｔｙｐｅ＿Ａｌｔｅｒｎａｔｅ、２次元実施例
メッシュタイプ交互トポロジ方法は、両次元が、単調である限り、２次元に拡張されることができる。図３１は、２次元における交互トポロジの一実施例である、テーブル３１００を示す。
【００９０】
図３１は、一例示的２次元メッシュタイプの交互トポロジを図示する。図３１は、全次元が、単調である限り、２次元に拡張されることができる、メッシュタイプ交互トポロジ方法によって形成される、テーブル３１００を示す。テーブル３１１０は、例示的計算デバイス３１１１−３１１４を示す。図３１の実施例では、各計算デバイス３１１１−３１１４は、２次元ビンを含む（例えば、デバイス３１１１は、ビン１，１を有し、デバイス３１１２は、ビン２，１を有する等となる）。各ビンは、テーブル３１００の例示的メッシュタイプ交互トポロジ方法によって分散される、複数のデータポイントを含む。
【００９１】
Ｍｅｓｈ＿Ｔｙｐｅ＿Ａｌｔｅｒｎａｔｅ−２次元実施例：インデックス、ストライド、およびオーバーラップデータ分解計算
１次元の場合におけるように、実際のトポロジは、インデックス、ストライド、およびオーバーラップパラメータを用いて生じる。図３２は、テーブル３２００内の２次元交互データセットトポロジの４つの実施例を示す。第１の実施例は、インデックス＝ストライド＝Ｏ１＝Ｏ２＝０を有する。第２の実施例は、インデックス＝１およびストライド＝Ｏ１＝Ｏ２＝０を有する。第３の実施例は、ストライド＝１およびインデックス＝Ｏ１＝０２＝０を有する。第４の実施例は、Ｏ１＝Ｏ２＝１およびインデックス＝ストライド＝０を有する。各次元は、その独自のオーバーラップパラメータを有することに留意されたい。
【００９２】
Ｍｅｓｈ＿Ｔｙｐｅ＿Ａｌｔｅｒｎａｔｅ、３次元実施例
メッシュタイプ交互トポロジ方法は、全次元が、単調である限り、３次元に拡張されることができる。図３３は、３次元における、一例示的交互トポロジである、テーブル３３００を示す。テーブル３３１０は、例示的計算デバイス３３１１−３３１４を示す。図３３の実施例では、各計算デバイス３３１１−３３１４は、４つの３次元ビンを含む（例えば、デバイス３３１１は、ビン１，１，１、ビン１，１，２、ビン１，１，３、ビン１，１，４を有し、デバイス３３１２は、をビン２，１，１、ビン２，１，２、ビン２，１，３、ビン２，１，４有する等となる）。各ビンは、テーブル３３００の例示的メッシュタイプ交互トポロジ方法によって分散される、複数のデータポイントを含む。
【００９３】
Ｍｅｓｈ＿Ｔｙｐｅ＿Ａｌｔｅｒｎａｔｅ、３次元実施例：インデックス、ストライド、およびオーバーラップデータ分解計算
３次元実施例は、示されないが、１および２次元の場合のように、３次元Ｍｅｓｈ＿ＴＹＰＥ＿ＡＬＴＥＲＮＡＴＥトポロジは、インデックス、ストライド、およびオーバーラップを用いて生じることを理解されるであろう。
【００９４】
Ｍｅｓｈ＿Ｔｙｐｅ＿Ｃｏｎｔ＿Ｂｌｏｃｋ、１次元実施例
ＭＥＳＨ＿ＴＹＰＥ＿ＣＯＮＴ＿ＢＬＯＣＫメッシュタイプの目的は、データセットをブロックに均等に分解することである。本実施例は、１次元ブロック実施例である。ＭＥＳＨ＿ＴＹＰＥ＿ＣＯＮＴ＿ＢＬＯＣＫメッシュタイプは、多くの単純線形データタイプのために利用されてもよい。第１のステップでは、計算要素の数に対応するビンが、作成される。第２のステップでは、データのブロックが、ビン内に配置され、均等に分散されたデータのブロックが、例えば、図３４の１次元ブロックトポロジテーブル３４００に示されるように、アクセスされることを可能にする。
【００９５】
テーブル３４００に示される１次元の場合、以下の情報が、以下のように保存される：
ビン１＝｛１、２、３、４｝、
ビン２＝｛５、６、７、８｝、
ビン３＝｛９、１０、１１、１２｝、
ビン４＝｛１３、１４、１５、１６｝。
【００９６】
したがって、計算要素１は、ビン１に対応し、計算要素２は、ビン２に対応し、計算要素３は、ビン３に対応し、および計算要素４は、ビン４に対応する。
Ｍｅｓｈ＿Ｔｙｐｅ＿Ｃｏｎｔ＿Ｂｌｏｃｋ、１次元実施例：インデックス、ステップ、およびオーバーラップデータ分解計算
前述の実施例同様に、統合して、本メッシュタイプのための実際のデータトポロジを作成する、以下の３つのパラメータが、存在する：インデックス、ステップ、およびオーバーラップ。これらの３つのパラメータを図３４のテーブル３４００の実施例に適用することは、図３５のテーブル３５００に示されるインデックス、ステップ、およびオーバーラップを伴う、１次元連続ブロックデータセットトポロジをもたらす。
Ｍｅｓｈ＿Ｔｙｐｅ＿Ｃｏｎｔ＿Ｂｌｏｃｋ、２次元実施例
データセットトポロジの連続ブロックモデルは、２次元に拡張されることができる。本メッシュタイプは、非ＦＦＴ−関連画像処理に有用である。図３６のテーブル３６００は、２次元連続ブロックトポロジの実施例を示す。
【００９７】
テーブル３６００の２次元実施例では、データが、以下のように分散されるように、計算要素１＝ビン１，１、計算要素２＝ビン１，２、計算要素３＝ビン２，１および計算要素４＝ビン２，２である：
ビン１，１＝｛１、２、３、４、５、６、７、８、１７、１８、１９、２０、２１、２２、２３、２４｝、
ビン２，１＝｛９、１０、１１、１２、１３、１４、１５、１６、２５、２６、２７、２８、２９、３０、３１、３２｝、
ビン１，２＝｛３３、３４、３５、３６、３７、３８、３９、４０、４９、５０、５１、５２、５３、５４、５５、５６｝、
ビン２，２＝｛４１、４２、４３、４４、４５、４６、４７、４８、５７、５８、５９、６０、６１、６２、６３、６４｝。
【００９８】
Ｍｅｓｈ＿Ｔｙｐｅ＿Ｃｏｎｔブロック、２次元実施例：インデックス、ステップ、およびオーバーラップデータ分解計算
１次元の場合のように、２次元に対する連続ブロックのための実際のデータセットトポロジは、３つのパラメータ：インデックス、ステップ、およびオーバーラップを要求する。図３７は、インデックス、ステップ、およびオーバーラップパラメータを伴う、２次元連続ブロックデータセットトポロジモデルの一実施例である、テーブル３７００を示す。
【００９９】
Ｍｅｓｈ＿Ｔｙｐｅ＿Ｃｏｎｔ＿Ｂｌｏｃｋ、３次元実施例
連続ブロックデータトポロジモデルもまた、データが、以下のように、例示的計算要素１−４に分散されるように、図３８のテーブル３８００の３次元連続ブロックトポロジ実施例に示されるように、３次元の場合に拡張されることができる：
計算要素１＝［ビン１，１，１＝｛１、２、３、４、５、６、７、８、１７、１８、１９、２０、２１、２２、２３、２４｝、ビン１，１，２＝｛６５、６６、６７、６８、６９、７０、７１、７２、８１、８２、８３、８４、８５、８６、８７、８８｝、ビン１，１，３＝｛１２９、１３０、１３１、１３２、１３３、１３４、１３４、１３６、１４５、１４６、１４７、１４８、１４９、１５０、１５１、１５２｝、ビン１，１，４＝｛１９３、１９４、１９５、１９６、１９７、１９８、１９９、２００、２０９、２１０、２１１、２１２、２１３、２１４、２１５、２１６｝］；
計算要素２＝［ビン２，１，１＝｛９、１０、１１、１２、１３、１４、１５、１６、２５、２６、２７、２８、２９、３０、３１、３２｝、ビン２，１，２＝｛７３、７４、７５、７６、７７、７８、７９、８０、８９、９０、９１、９２、９３、９４、９５、９６｝、ビン２，１，３＝｛１３７、１３８、１３９、１４０、１４１、１４２、１４３、１４４、１５３、１５４、１５５、１５６、１５７、１５８、１５９、１６０｝、ビン２，１，４＝｛２０１、２０２、２０３、２０４、２０５、２０６、２０７、２０８、２１７、２１８、２１９、２２０、２２１、２２２、２２３、２２４｝］；
計算要素３＝［ビン１，２，１＝｛３３、３４、３５、３６、３７、３８、３９、４０、４９、５０、５１、５２、５３、５４、５５、５６｝、ビン１，２，２＝｛９７、９８、９９、１００、１０１、１０２、１０３、１０４、１１３、１１４、１１５、１１６、１１７、１１８、１１９、１２０｝、ビン１，２，３＝｛１６１、１６２、１６３、１６４、１６５、１６６、１６７、１６８、１７７、１７８、１７９、１８０、１８１、１８２、１８３、１８４｝、ビン１，２，４＝｛２２５、２２６、２２７、２２８、２２９、２３０、２３１、２３２、２４１、２４２、２４３、２４４、２４５、２４６、２４７、２４８｝］；
計算要素４＝［ビン２，２，１＝｛４１、４２、４３、４４、４５、４６、４７、４８、５７、５８、５９、６０、６１、６２、６３、６４｝、ビン２，２ｉ１＝｛１０５、１０６、１０７、１０８、１０９、１１０、１１１、１１２、１２１、１２２、１２３、１２４、１２５、１２６、１２７、１２８｝、ビン２，２，１＝｛１６９、１７０、１７１、１７２、１７３、１７４、１７５、１７６、１８５、１８６、１８７、１８８、１８９、１９０、１９１、１９２｝、ビン２，２，１＝｛２３３、２３４、２３５、２３６、２３７、２３８、２３９、２４０、２４９、２５０、２５１、２５２、２５３、２５４、２５５、２５６｝］。
【０１００】
Ｍｅｓｈ＿Ｔｙｐｅ＿Ｃｏｎｔ＿Ｂｌｏｃｋ、３次元実施例：インデックス、ステップ、およびオーバーラップデータ分解計算
３次元実施例は、示されないが、１および２次元場合に説明される前述と同様に、３次元連続ブロックデータトポロジモデルも、インデックス、ステップ、およびオーバーラップパラメータを利用することを理解されるであろう。
【０１０１】
Ｍｅｓｈ＿Ｔｙｐｅ＿Ｒｏｗ＿Ｂｌｏｃｋ実施例
ＭＥＳＨ＿ＴＹＰＥ＿ＲＯＷ＿ＢＬＯＣＫメッシュタイプは、データが、以下のように、例示的計算要素１−４に分散されるように、２次元以上のアレイを行のブロックに分解し、その一実施例は、図３９のテーブル３９００に示される：
計算要素（ＣＥ）１＝ビン１，１＝｛１、２、３、４｝、ビン２，１＝｛５、６、７、８｝、ビン３，１＝｛９、１０、１１、１２｝、ビン４，１＝｛１３、１４、１５、１６｝；
計算要素（ＣＥ）２＝ビン１，２＝｛１７、１８、１９、２０｝、ビン２，２＝｛２１、２２、２３、２４｝、ビン３，２＝｛２５、２６、２７、２８｝、ビン４，２＝｛２９、３０、３１、３２｝；
計算要素（ＣＥ）３＝ビン１，３＝｛３３、３４、３５、３６｝、ビン２，３＝｛３７、３８、３９、４０｝、ビン３，３＝｛４１、４２、４３、４４｝、ビン４，３＝｛４５、４６、４７、４８｝；
計算要素（ＣＥ）４＝ビン１，４＝｛４９、５０、５１、５２｝、ビン２，４＝｛５３、５４、５５、５６｝、ビン３，４＝｛５７、５８、５９、６０｝、ビン４，４＝｛６１、６２、６３、６４｝。
【０１０２】
Ｍｅｓｈ＿Ｔｙｐｅ＿Ｒｏｗ＿Ｂｌｏｃｋ、２次元実施例：インデックス、ステップ、およびオーバーラップデータ分解計算
１次元の場合のように、２次元に対するＭｅｓｈ＿Ｔｙｐｅ＿Ｒｏｗ＿Ｂｌｏｃｋメッシュタイプトポロジのための実際のデータセットトポロジは、３つのパラメータ：インデックス、ステップ、およびオーバーラップを要求する。図４０は、インデックス、ステップ、およびオーバーラップパラメータを伴う、２次元行ブロックデータセットトポロジモデルの一実施例である、テーブル４０００を示す。
【０１０３】
Ｍｅｓｈ＿Ｔｙｐｅ＿Ｃｏｌｕｍｎ＿Ｂｌｏｃｋ実施例
ＭＥＳＨ＿ＴＹＰＥ＿Ｃｏｌｕｍｎ＿ＢＬＯＣＫメッシュタイプは、データが、以下のように、例示的計算要素１−４に分散されるように、図４１のテーブル４１００に示されるように、２次元以上のアレイを列のブロックに分解する：
計算要素（ＣＥ）１＝［ビン１，１＝｛１、２、３、４｝、ビン１，２＝｛１７、１８、１９、２０｝、ビン１，３＝｛３３、３４、３５、３６｝、ビン１，４＝｛４９、５０、５１、５２｝］；
計算要素（ＣＥ）２＝［ビン２，１＝｛５、６、７、８｝、ビン２，２，＝｛２１、２２、２３、２４｝、ビン２，３＝｛３７、３８、３９、４０｝、ビン２，４＝｛５３、５４、５５、５６｝］；
計算要素（ＣＥ）３＝［ビン３，１＝｛９、１０、１１、１２｝、ビン３，２＝｛２５、２６、２７、２８｝、ビン３，３＝｛４１、４２、４３、４４｝、ビン３，４＝｛５７、５８、５９、６０｝］；
計算要素（ＣＥ）４＝［ビン４、１＝｛１３、１４、１５、１６｝、ビン４，２＝｛２９、３０、３１、３２｝、ビン４，３＝｛４５、４６、４７、４８｝、ビン４，４＝｛６１、６２、６３、６４｝］。
【０１０４】
Ｍｅｓｈ＿Ｔｙｐｅ＿Ｃｏｌｕｍｎ＿Ｂｌｏｃｋ、２次元実施例：インデックス、ステップ、およびオーバーラップデータ分解計算
前述の実施例同様に、統合して、本メッシュタイプのための実際のデータトポロジを作成する、以下の３つのパラメータが、存在する：インデックス、ステップ、およびオーバーラップ。これらの３つのパラメータを図４０のテーブル４１００の実施例に適用することは、図４２のテーブル４２００に示されるインデックス、ステップ、およびオーバーラップを伴う、２次元列ブロックデータセットトポロジをもたらす。
初期分散モデル
一般に、システムは、分散モデルを使用して、要求される処理ノードをアクティブ化し、ノードが、アルゴリズムの要件を満たし得るように、十分な情報をそれらのノードに渡し得る。ノードに渡される情報は、いくつかの分散モデルが形成されるため、ノードが情報を他のノードに中継するように、使用される分散のタイプを含んでもよい。情報を渡すために、いくつかのシステムは、ブロードキャストまたはマルチキャスト伝送プロセスを使用し、要求される情報を伝送する。ブロードキャスト伝送は、同一の情報メッセージを同時に全アタッチされた処理ノードに送信する一方、マルチキャスト伝送は、情報メッセージを処理ノードの選択されたグループに送信する。しかしながら、ノードが、情報の完全転送を受信したかどうかを把握することは不可能であるため、ブロードキャストまたはマルチキャストのいずれの使用も、本質的に、不安定である。代わりに、散乱コマンドが、複数のノードへの情報の安全転送のために使用されてもよい。散乱コマンドは、データを中心位置から複数のノードに移動させる。典型的非マルチキャスト、非ブロードキャスト通信モデルは、ツリー−ブロードキャスト、ツリー−マルチキャスト、あるいはハワードカスケードブロードキャストまたはマルチキャスト情報分散モデルを使用する。
【０１０５】
図４３は、ハワードカスケードベースの単一チャネルマルチキャスト／ブロードキャストの論理図を示す。図４３の簡略化されたハワードカスケードデータ移動およびタイミング図４３００は、第１の時間ステップ４３２０および第２の時間ステップ４３３０における、ノード４３１０からノード４３１２−４３１６へのデータの転送を示す。図４４および４５は、図４３に説明されるハワードカスケードベースのブロードキャスト／マルチキャストの第１および第２の時間ステップ４３２０、４３３０の例示的ハードウェア図を示す。
【０１０６】
図４４は、それぞれ、バス４４４０−４４４６を介して、それぞれ、スマートＮＩＣカード４４１０−４４１６と通信する、ノード４３１０−４３１６を示す。ＮＩＣカード４４１０−４４１６は、ノード４３１０−４３１６間のルーティングのために、スイッチ４４５０と通信する。第１の時間ステップ４３２０におけるルーティングの実施例は、図４４に描写される。図４４は、バス４４４０、ＮＩＣカード４４１０、およびデータ伝送４４６０、スイッチ４４５０、データ伝送４４６２、ＮＩＣカード４４１２、およびバス４４４０を介して、ノード４３１０からノード４３１２に送信されるデータの例証的ハードウェア図を示す。
【０１０７】
第２の時間ステップ４３３０におけるルーティングの実施例は、図４５に描写される。図４５は、ノード４３１０からノード４３１４に送信されるデータと、ノード４３１２からノード４３１６に送信されるデータとの例証的ハードウェア図を示す。ノード４３１０からノード４３１４に送信されるデータは、バス４４４０、ＮＩＣカード４４１０、データ伝送４５６０、スイッチ４４５０データ伝送４５６４、ＮＩＣカード４４１４、およびバス４４４４を介して生じる。ノード４３１２からノード４３１６に送信されるデータは、バス４４４２、ＮＩＣカード４４１２、データ伝送４５６２、スイッチ４４５０データ伝送４５６６、ＮＩＣカード４４１６、およびバス４４４６を介して生じる。
【０１０８】
図４４および４５は、ハワードカスケードが、スマートＮＩＣカード（例えば、ＮＩＣカード４４１０−４４１６）から要求されるコマンドを使用して、データ移動および有効な演算の両方を行なう、一実施例を図示する。スマートＮＩＣカード上に有効な演算を配置することは、通信／計算のオーバーラップを促進する。
【０１０９】
一実施形態では、システムは、多重通信チャネルを利用する。別個の実施形態では、システムは、多重通信チャネルを模倣する、帯域幅制限スイッチおよびネットワーク−インターフェースカード技術を用いて、十分なチャネルの性能を利用する。米国特許第２０１００１８３０２８号を参照されたい。いずれの実施形態でも、データ移動は、図４３−４５に示される実施例と異なる。図４６は、９つのノード（ノード４６１０−４６２８）の多重通信チャネルシステム４６００の一実施例を示す。統合することで最も良く示される、図４６−４８の実施例では、チャネルは、物理的、仮想的、またはそれら２つの組み合わせであってもよい。システム４６００内では、各ノードは、２つの通信チャネルとともに、図式的に示される。第１の時間ステップ４６２０では、ノード４６１０は、ノード４６１２およびノード４６１４に伝送する。第２の時間ステップ４６３０では、ノード４６１０は、ノード４６１８および４６２０に伝送し、ノード４６１２は、ノード４６２２および４６２４に伝送し、ノード４６１４は、ノード４６２６および４６２８に伝送する。
【０１１０】
図４７は、図４６の２チャネルハワードカスケードベースのマルチキャスト／ブロードキャストの第１の時間ステップ４６２０の一実施例の例証的ハードウェア図を示す。図４８は、図４６の第２の時間ステップ４６３０の一実施例の例証的ハードウェア図を示す。図４７は、それぞれ、バス４７１０−４７２６を介して、それぞれ、スマートＮＩＣカード４７１０−４７２６と通信する、ノード４６１０−４６２６を示す。明確にするために、全通信経路が、示されるわけではないが、全スマートＮＩＣ４７１０−４７２６は、ノード４６１０−４６２６間のルーティングのために、それぞれ、通信経路４７６０−４７７６を介して、スイッチ４７５０と通信する。図４７の実施例では、ノード４６１０は、バス４７４０、スマートＮＩＣ４７１０、通信経路４７６０、スイッチ４７５０、通信経路４７６２、４７６４、スマートＮＩＣ４７１２、４７１４、およびバス４７４２、４７４４を介して、ノード４６１２−４６１４に伝送する。
【０１１１】
図４８は、図４６の２チャネルハワードカスケードベースのマルチキャスト／ブロードキャストの第２の時間ステップ４６３０の一実施例の例証的ハードウェア図を示す。図４８は、バス４７４０−４７５６、ＮＩＣカード４７１０−４７２６、およびデータ伝送４７６０−４７６４、およびスイッチ４４５０を介して、ノード４６１０−４６１４からノード４６１６−４６２６に送信されるデータを示す。ノード４６１０−４６１４は、その２チャネル通信経路の両チャネルを介して、伝送する。ノード４６１６−４６２６は、その２チャネル通信経路の一方のチャネルを介して、受信する。ノード４６１０−４６２６は、図４６に示されるように、伝送および受信し、例えば、ノード４６１０は、ノード４６１８および４６２９等に伝送する。
【０１１２】
スキャン検出
スキャンコマンドは、ハワードカスケード（米国特許第６８５７００４号参照）またはラムダ交換（後述）分散モデル４９００、図４９（また、米国特許公開第２０１００１８５７１９号参照）のいずれかを使用してもよい。以下は、和演算を使用する、スキャンコマンドの一実施例を示す。検出されたデータパターンは、システムに、スキャンを使用するように指示する。図４９の実施例では、ノードは、行によって表され、データアイテムは、列によって表される。ラムダ交換は、スマートＮＩＣレベルで行なわれるパススルー交換（例えば、図４のスマートＮＩＣ４７１０−４７２６によって）であって、同時に、演算関数およびパススルー関数の両方を行なうことが可能である。
【０１１３】
図５０は、一例示的十分なチャネルのラムダ交換モデル５０００を示す。モデル５０００は、伝送５０３０を介して、ノード５０２０からノード５０２２に伝送され、データ５０２２として記憶される、データ５０２０を示す。データ５０２２は、次いで、伝送５０３２を介して、ノード５０１２からノード５０１４に伝送され、データ５０２４として記憶される。
【０１１４】
図５１は、十分なチャネルのラムダ交換モデルを利用して、ノード５０１０からノード５０１２およびノード５０１２からノード５０１４に伝送される、データの一例示的ハードウェア図５１００を示す。データは、バス５１４０、スマートＮＩＣ５１１０、通信経路５１６０、スイッチ５１５０、通信経路５１６２、スマートＮＩＣ５１１２、およびバス５１４２を介して、ノード５０１０からノード５０１２に伝送される。データ５０２２は、バス５１４２、スマートＮＩＣ５１１２、通信経路５１６３、スイッチ５１５０、通信経路５１６５、スマートＮＩＣ５１１４、およびバス５１４４を介して、ノード５０１２からノード５０１４に伝送される。
【０１１５】
図５２は、十分なチャネルのラムダ交換モデルを使用して、スキャン（和を用いる）を行なう、スマートＮＩＣ５２１２、５２１４を例証的に示す、一例示的システム５２００を示す。図５２の実施例では、ＮＩＣ５２１２は、データ５２４２を受信し、和演算を行い、データをデータ５２３２として記憶する。ＮＩＣ５２１２は、次いで、データ５２３２をデータ５２４４として、ＮＩＣ５２２４に伝送する。ＮＩＣ５２２４は、和演算を行い、データをデータ５２３４として記憶する。
【０１１６】
マルチキャストおよびブロードキャスト検出
図５３は、マルチキャストまたはブロードキャストの使用を検出するために使用される、検出可能通信パターン５３００を示す。図５３の実施例では、ノードは、行内に表され、データアイテムは、列内に表される。ブロードキャストコマンドの十分なチャネルのハワードカスケードバージョンは、通信チャネルを複数の仮想通信チャネルに細分割し、全仮想チャネルにわたって伝送する。本モデルは、対として定義され、したがって、安全なデータ伝送であるため、標準ブロードキャストより優れた利点を有する。十分な仮想チャネルの数が、ノードの数未満である場合、ハワードカスケードの多重仮想チャネルバージョンが、高効率ツリー状ブロードキャストを行なうために使用される。
【０１１７】
図５４は、十分なチャネルのハワードカスケードベースのマルチキャスト／ブロードキャストの一例示的論理図を示す。図５４の実施例では、ノード５４１０は、マルチキャスト／ブロードキャストを介して、データ５４２０をノード５４１２、５４１４に伝送する。ノード５４１２およびノード５４１４は、それぞれ、データ５４２２およびデータ５４２４として、データ５４２０を記憶する。
【０１１８】
図５５は、図５４の十分なチャネルのハワードカスケードベースのマルチキャストまたはブロードキャスト通信モデルの例示的ハードウェア図を示す。図５５の実施例では、ノード５４１０は、バス５５４０、スマートＮＩＣ５５１０、通信経路５５６０、スイッチ５５５０、通信経路５５６２、スマートＮＩＣ５５１２、およびバス５５４２を介して、データ５４２０（図５４）のあるコピーをノード５４１２に伝送する。ノード５４１０は、バス５５４０、スマートＮＩＣ５５１０、通信経路５５６０、スイッチ５５５０、通信経路５５６４、スマートＮＩＣ５５１４、およびバス５５４４を介して、データ５４２０（図５４）の別のコピーをノード５４１４に伝送する。
【０１１９】
散乱検出
一例示的散乱データパターン５６００は、図５６に示される。散乱データパターン５６００では、ノードは、行によって表される。データアイテムは、列によって表される。データパターン５６１０は、データ散乱前のノードおよびデータアイテムを表す。データパターン５６１０は、１つのノード内の全データアイテムＡ０、Ｂ０、およびＣ０を示す。データパターン５６２０は、データ散乱後のノードおよびデータアイテムを表す。データパターン５６２０は、３つのノードのそれぞれ内の１つのデータアイテムを示す。図５７は、十分なチャネルのハワードカスケード散乱を示し、ノード５７１０は、データ５７２０の第１の部分（Ｂ０）をノード５７１２に、データ５７２０の第２の部分（Ｃ０）をノード５７１４に伝送する。ノード５７１２は、受信されたデータ部分をデータ５７２２として記憶する。ノード５７１４は、受信されたデータ部分をデータ５７１４として記憶する。図５７には図示されないが、データ散乱後、ノード５７１０は、データアイテムＡ０を維持するが、Ｂ０およびＣ０データアイテムを記憶していないことを理解されるであろう。
【０１２０】
図５８は、図５７の十分なチャネルのハワードカスケードベースの散乱モデルの第１のステップの一実施例の例証的ハードウェア図を示す。図５８の実施例では、ノード５７１０は、バス５８４０、スマートＮＩＣ５８１０、通信経路５８６０、スイッチ５８５０、通信経路５８６２、スマートＮＩＣ５８１２、およびバス５８４２を介して、データ５７２０（Ｂ０）の一部をノード５７１２に伝送する。ノード５７１０は、バス５８４０、スマートＮＩＣ５８１０、通信経路５８６０、スイッチ５８５０、通信経路５８６４、スマートＮＩＣ５８１４、およびバス５８４４を介して、データ５７２０（Ｃ０）の第２の部分をノード５７１４に伝送する。
【０１２１】
ベクトル散乱検出実施例
以下の検出可能データ移動パターンは、ベクトル散乱コマンドが要求されるときを判定する。図５９は、論理ベクトル散乱図５９００を示す。データパターン５９１０は、ベクトル散乱演算前のデータ位置を示す。データパターン５９２０は、ベクトルデータ演算後のデータ位置を示す。ベクトル散乱演算は、ユーザが、システムに、それが種々の場所から受信したデータを配置すべき場所を指示する、オフセットテーブルを指定することを可能にする。ベクトル散乱は、送信側のためのデータの位置が、送信整数変位アレイによって指定され、受信側のデータの配置の位置が、受信整数変位アレイによって指定されるという点において、柔軟性を標準散乱演算に追加する。
【０１２２】
図６０は、ベクトル散乱演算のための一例示的タイミング図およびデータ移動を示す。
【０１２３】
図６１は、図６０のベクトル散乱演算の一例示的ハードウェア図を示す。
【０１２４】
初期データ入力モデル実施例
データ入力は、システムが、いくつかの外部ソースから情報を受信するための能力である。概して、２つのタイプのデータ入力方式：直列および並列が、存在する。直列入力は、単一通信チャネルを使用して、データを受信する一方、並列入力は、多重通信チャネルを使用して、データを受信する。現在のスイッチ技術を使用して、データをシステム内の複数の独立計算デバイスにブロードキャストすることが可能である。しかしながら、本データ転送は、確実ではない場合がある。別の可能性は、データをデータセットに分解し、異なるデータセットをシステム内の異なる計算デバイスに送信することである。
【０１２５】
直列データ入力実施例
データは、ストレージエリアネットワーク（ＳＡＮ）、ネットワークアタッチストレージ（ＮＡＳ）、または他のオンラインデータストレージ方法からの単一通信チャネルを介して、ネットワークを通して、システムに送信されることができる。図６２は、ハワードカスケードベースのデータ伝送を使用する、直列データ入力の論理図を示す。図６２は、トップレベルのホームノード選択が、ノードを計算し、並行して、分解されたデータセットをシステムの一部に伝送する、一例示的システム６２００を示す。システム６２００は、ホームノード６２０６、計算ノード６２１０−６２１４、およびＮＡＳ６２０８を含む。システム６２００内には、直列データ伝送は、ＮＡＳ６２０８と通信６２２８するホームノード６２０６によって生じる。ＮＡＳ６２０８は、第１の時間ステップ伝送６２３０において、データをノード６２１２に伝送する。第２の時間ステップ伝送６２４０において、ノード６２１０は、ノード６２１に伝送し、ＮＡＳ６２０８は、ノード６２１２に伝送する。
【０１２６】
図６３および６４は、ＮＡＳデバイスからシステム６３００内のノードにデータセットの一部を伝送する、第１および第２の時間ステップの一例示的ハードウェア図を示す。図６３および６４内では、ノード６２０６は、明確にするために、示されない。図６３は、第１の時間ステップにおいて、分解されたデータセットの一部をネットワークアタッチストレージ（ＮＡＳ）６２０８からノード６２１０に伝送する、システム６３００の一例示的ハードウェア図を示す。図６３は、バス６３３８、スマートＮＩＣ６３３８、通信経路６３５８スイッチ６３５０、通信経路６３６０、スマートＮＩＣ６３１０、およびバス６３４０を介して、ノード６２１０に伝送する、ＮＡＳ６２０８を示す。図６４は、それぞれ、分解されたデータセットの一部をＮＡＳ６２０８およびノード６２１０からノード６２１２および６２１４に伝送する、第２の時間ステップを示す。ＮＡＳ６２０８は、バス６３３８、ＮＩＣ６３０８、通信ライン６３５８、スイッチ６３５０、通信ライン６３６２、ＮＩＣ６３１２、およびバス６３４２を介して、ノード６２１２に伝送する。同時に（並行して）、ノード６２１０は、バス６３４０、ＮＩＣ６３１０、スイッチ６３５０、ＮＩＣ６３１４、およびバス６３４４を介して、ノード６２１４に伝送する。
【０１２７】
並列データ入力実施例
データはまた、ネットワークアタッチストレージ（ＮＡＳ）、ストレージエリアネットワーク（ＳＡＮ）、または他の方法を通して、並行して、システムに送信されることができる。これは、分解されたデータセットをとり、並行して、それをシステムの一部に伝送するであろう、トップレベル計算ノードのホームノード選択を介して、達成されることができる。図６５−６７は、分解されたデータセットをシステム６５００、６６００の一部に伝送する一実施例を示す。図６５の実施例では、ＮＡＳ６５０８は、第１の時間ステップ６５３０において、ノード６５１０、６５１２、６５１４に伝送する。第２の時間ステップ６５４０において、ＮＡＳ６５０８は、ノード６５１６、６５１８、６５２０に伝送する。また、第２の時間ステップ６５４０では、ノード６５１０、６５１２、および６５１４は、それぞれ、ノード６５２２、６５２４および６５２６に伝送する。第１の時間ステップ６５３０伝送のハードウェア図は、図６６に、システム６６００として示され、第２の時間ステップ６５４０伝送は、図６７に、システム６７００として示される。
【０１２８】
図６６および６７は、ＮＡＳ６５０８およびノード６５１０−６５２６を含む。ＮＡＳ６５０８は、バス６６３８を介して、スマートＮＩＣ６６０８と通信する。ノード６５１０−６５２６は、それぞれ、バス６６４０−６６５６を介して、それぞれ、スマートＮＩＣ６６１０−６６２６と通信する。システム６６００では、ＮＡＳ６５０８は、並行して、ノード６５１０、６５１２および６５１４にデータを伝送する。データは、バス６６３８、ＮＩＣ６６０８、および並列通信ライン６６５８を介して、ＮＡＳ６５０８からスイッチ６６５０に伝送される。データは、次いで、それぞれ、通信ライン６６６０、６６６２、６６６４、ＮＩＣ６６１０、６６１２、６６１４、およびバス６６４２、６６４４、６６４６を介して、スイッチ６６５０からノード６５１０、６５１２、６５１４に伝送される。
【０１２９】
図６７のハードウェア図に示される、第２の時間ステップでは、システム６７００、データは、並行して、ＮＡＳ６５０８からノード６５１６、６５１８、および６５２０に伝送される。加えて、データは、それぞれ、ノード６５１０、６５１２、および６５１４からノード６５２２、６５２４、および６５２６に伝送される。データは、バス６６３８−６６４４、ＮＩＣ６６０８−６６２６、通信ライン６６５８−６６７６、およびスイッチ６６５０を介して、システム６７００内で伝送される。
【０１３０】
相互通信モデル実施例
種々の１および２次元相互通信交換が、以下に示される。データ−アクセスパターンは、システムによって、プロファイル化の試みの一部として遭遇されるとき、どのタイプの交換モデルが、アルゴリズムによって使用されるべきかを判定するために使用される。
１次元左右検出
単一次元左右交換は、異なるトポロジ下では、異なって挙動する。デカルトおよび円形トポロジの両方下の１次元左右交換が、以下に示される。
【０１３１】
１次元左右交換、デカルト
図６８は、デカルトトポロジ下の１次元左右交換を検出するために使用されるパターンを示す。
【０１３２】
１次元左右交換、円形
図６９は、円形トポロジ下の左右交換を検出するために使用されるパターンを示す。
２次元全対全検出
全対全交換検出パターンが、図７０に、第１および第２のマトリクス７０１０、７０２０として示される。マトリクス７０１０、７０２０では、前述のように、ノードは、行および列表現データ要素によって表される。マトリクス７０１０は、全対全交換前に分散されるデータを示し、あるデータ要素が、各ノード上に記憶され、行あたり１つのデータ要素によって表される。マトリクス７０２０は、全対全交換後に分散されたデータを示す、全データ要素Ａ０、Ｂ０、Ｃ０が、各ノード上に記憶される。
【０１３３】
図７１は、３つの時間ステップにおける、一例示的４つのノードの全対全交換を示す。第１の時間ステップでは、ノード７１１０および７１１２は、それぞれ、ノード７１１４および７１１６とデータ７１５０、７１５１を交換する。第２の時間ステップでは、ノード７１１０および７１１４は、ノード７１１２および７１１６とデータ７１５２、７１５３を交換する。第３の最終時間ステップでは、ノード７１１０および７１１２は、それぞれ、ノード７１１６および７１１４とデータ７１５４、７１５５を交換する。図７１に示される全対全交換の最終時間ステップ後、全ノードは、同一のデータを含有する。
【０１３４】
図７２は、図７１のシステム７１００の全対全交換（ＰＡＡＸ／ＦＡＡＸモデル）の例証的ハードウェア図７２００を示す。ハードウェア図７２００では、ノード７１１０−７１１６は、第３の時間ステップ後、全ノードが、交換されるように選択された同一のデータを含有するように、データを交換する。
【０１３５】
第１の時間ステップでは、ノード７１１０および７１１４は、データを交換し、ノード７１１２および７１１６は、データを交換する。ノード７１１０および７１１４は、バス７２４０、７２４４、スマートＮＩＣ７２１０、７２１４、通信経路７２６０、７２６４、およびスイッチ７２５０を介して、データを交換する。ノード７１１２および７１１６は、バス７２４２、７２４６、スマートＮＩＣ７２１２、７２１６、通信経路７２６２、７２６６、およびスイッチ７２５０を介して、データを交換する。
【０１３６】
第２の時間ステップでは、ノード７１１０および７１１２は、データを交換し、ノード７１１４および７１１６は、データを交換する。ノード７１１０および７１１２は、バス７２４０、７２４２、スマートＮＩＣ７２１０、７２１２、通信経路７２６０、７２６２、およびスイッチ７２５０を介して、データを交換する。ノード７１１４および７１１６は、バス７２４４、７２４６、スマートＮＩＣ７２１４、７２１６、通信経路７２６４、７２６６、およびスイッチ７２５０を介して、データを交換する。
【０１３７】
第３の時間ステップでは、ノード７１１０および７１１６は、データを交換し、ノード７１１２および７１１４は、データを交換する。ノード７１１０および７１１６は、バス７２４０、７２４６、スマートＮＩＣ７２１０、７２１６、通信経路７２６０、７２６６、およびスイッチ７２５０を介して、データを交換する。ノード７１１２および７１１４は、バス７２４２、７２４４、スマートＮＩＣ７２１２、７２１４、通信経路７２６２、７２６４、およびスイッチ７２５０を介して、データを交換する。
【０１３８】
ベクトル全対全検出
図７３は、ベクトル全対全交換モデルデータパターン検出を示す。
【０１３９】
次隣接交換検出
図７４は、デカルトトポロジ内の２次元次隣接データ交換を示す。図７５は、トロイドトポロジ内の２次元次隣接データ交換を示す。次隣接データ交換は、典型的には、２次元にわたって定義されるが、より高い次元も、可能である。次隣接データ交換は、トポロジが、交換の結果の区別する交換である。図７４および７５は両方とも、同一の初期データ７４１０から開始するが、最終データ７４２０および７５２０は、異なるトポロジ、すなわち、デカルトトポロジおよびトロイドトポロジのため、異なる。
【０１４０】
図７４の２次元デカルト次隣接交換は、データを全隣接する位置から全他の隣接する位置にコピーする。図７４の実施例では、データ要素Ａを含有する、初期データ７４１０の第１の行、第１の列は、データ要素Ｂ、Ｄ、およびＥに隣接する。したがって、最終データ７４２０の第１の行、第１の列は、データ要素Ａ、Ｂ、Ｄ、およびＥを含有する、すなわち、初期データ７４１０の第１の行、第１の列データ要素に隣接する全データ要素は、最終データ７４２０の第１の行第１の列に追加される。全他のデータ交換も、本パターンに従う。本データ移動を達成するための標準方法は、データを隣接する位置へと左に（該当する場合）、次いで、右に、次いで、上に、次いで、下に、次いで、斜め上に、最後に、斜め下に移動させることである。そこから分かるように、これは、６つのデータ移動をとる。十分なチャネルのＰＡＡＸ交換を使用する、システムは、これをより高速で行なうことができる。
【０１４１】
前述のように、トロイドトポロジのための２次元次隣接交換データパターンは、デカルトトポロジと異なる。トロイドトポロジのための２次元次隣接交換は、データを全隣接する位置から全他の隣接する位置にコピーする。最終データ７５２０は、トロイドトポロジ内の全データ要素が、１つおきのデータ要素に隣接するため、最終データ７４２０と異なる。したがって、初期データ７４１０の全データ要素が、最終データ７５２０の全データ要素にコピーされる。そこから分かるように、２次元トロイド次隣接交換は、真のＰＡＡＸを生成する。
【０１４２】
２次元赤黒交換検出
２次元赤黒交換は、マトリクス内のデータ対角線要素を交換する。一例証的実施例では、赤黒交換は、交互する赤および黒正方形を伴う、格子模様であるようなマトリクスを取り扱う。赤正方形内のデータは、全他の接触赤正方形（すなわち、対角線上に）および接触黒正方形交換そのデータ（すなわち、対角線上に）と交換される。これは、２つのＦＡＡＸ；接触赤正方形の第１のＦＡＡＸ交換および接触黒正方形の第２のＦＡＡＸ交換に相当する。次隣接交換のように、赤黒交換は、異なるトポロジ下では、異なって挙動する。
【０１４３】
デカルトトポロジ内の２次元赤黒交換は、図７６に示される。
【０１４４】
トロイドトポロジ内の２次元赤黒交換は、図７７に示される。パターンは、全対全接触赤交換に、全対全接触黒交換を加えたものに相当することに留意されたい。
２次元左右交換検出
２次元左右交換は、セルの左および右側上のデータ（存在する場合）をセル内に配置する。前述の交換と同様に、左右交換は、異なるトポロジ下では異なる。
【０１４５】
図７８は、デカルトトポロジ内の２次元左右交換を示す。図７９は、トロイド内の２次元左右交換を示す。
【０１４６】
全縮小コマンドソフトウェア検出
図８０は、全縮小交換を検出するために要求される、データパターンを示す。一実施例では、十分なチャネルの完全データセット全対全交換（ＦＡＡＸ）通信モデルが、要求される演算の適用と組み合わせられ、検出された全縮小交換のための実装モデルが使用されるように機能する。図８０は、和演算を使用する、全縮小コマンドの例証的実施例である。前述のように、ノードは、行によって表され、データアイテムは、列によって表される。
【０１４７】
図８１は、図８０の十分なチャネルベースのＦＡＡＸの例証的論理図を示す。十分なチャネルの数が、１からノード／サーバ８１１０−８１１６の数を引いたものに等しいとき、全通信が、ある時間ステップにおいて生じる。最悪でも、本通信は、二項収集後、二項散乱が続くための（ｎ）時間ステップと比較して、（ｎ−１）時間ステップ（１つのみの十分なチャネル）をとる。
【０１４８】
図８２は、図８１の十分なチャネルベースのＦＡＡＸ交換の例証的ハードウェア図を示し、各ノード８１１０−８１１６は、それぞれ、３つのチャネル通信経路８２６０−８２６６を利用して、スイッチ８２５０を介して、全他のノードと通信する。各ノード８１１０−８１１６は、バス８２４０−８２４６およびスマートＮＩＣ８２１０−８２１６を介して、通信経路８２６０−８２６６を利用する。
【０１４９】
図８３は、３チャネル８２６０オーバーラップ通信において、ＦＡＡＸモデルを使用して全縮小（和を用いる）を行なう、スマートＮＩＣ、ＮＩＣ８２１０を示す。計算を伴うオーバーラップされた通信は、スマートＮＩＣ８２１０上で利用可能なプロセッサ（図示せず）を使用する。標的和−縮小演算の３つの仮想チャネル８２６０のそれぞれは、最終演算前に、各チャネルに対してデータを別個に計算させる。
【０１５０】
縮小−散乱検出
縮小−散乱モデルは、要求される演算関数の適用と組み合わせられ、十分なチャネルの部分データセット全対全交換（ＰＡＡＸ）通信モデルを使用する。図８４は、十分なチャネルの部分データセット全対全交換（ＰＡＡＸ）の論理図を示す。前述のように、ノードは、行によって表され、データアイテムは、列によって表される。
【０１５１】
ＰＡＡＸとＦＡＡＸ通信モデルとの間の差異は、前述の全縮小コマンドによって使用されるＦＡＡＸ交換では、各ノードからのデータの一部のみ、他のノードに伝送されることである。図８５の実施例では、ノード８５１０は、データ要素Ａ１Ａ２Ａ３を受信し、ノード８５１２は、データ要素Ｂ０Ｂ２Ｂ３を受信し、ノード８５１４は、データ要素Ｃ０Ｃ１Ｃ２を受信し、ノード８５１６は、データ要素Ｄ０Ｄ１Ｄ２を受信する。本データ交換を完了するために、ＰＡＡＸ通信モデルは、（ｎ−１）の平方根である、ＦＡＡＸ交換を行なう時間平方根を要求する一方、収集後の散乱は、（ｎ）時間ステップかかる。十分なチャネルベースのＰＡＡＸ交換（図示せず）のハードウェア図は、図８１の十分なチャネルベースのＦＡＡＸ交換の例証的ハードウェア図と同一である。
【０１５２】
前述のように、計算を伴うオーバーラップされた通信は、スマートＮＩＣ上で利用可能なプロセッサ（図示せず）を使用する。標的和−縮小演算の各仮想チャネルは、最終演算前に、各チャネルに対してデータを別個に計算させる。図８６は、ＰＡＡＸモデルを使用して縮小散乱（和を用いる）を行なう、スマートＮＩＣ８２１０を示す。
全収集検出
全収集データ交換は、一例示的全収集データ移動テーブル８７００を図示する、図８７に示されるデータ移動によって検出される。テーブル８７００は、初期データ８７１０および最終データ８７２０を示す。全収集のための例証的論理図および例証的ハードウェア図は、前述に示されるものと同一である。
【０１５３】
ベクトル全収集検出
図８８は、十分なチャネルの完全データセット全対全交換（ＦＡＡＸ）として、ベクトル全収集を示す。図８８では、初期データ８８１０および最終データ８８２０を伴う、ベクトル全収集データテーブル８８００が示される。前述のように、ノードは、行によって表され、データアイテムは、列によって表される。全収集のための例証的論理図および例証的ハードウェア図は、前述で示されるものと同一である。
【０１５４】
初期集積モデル実施例
集積は、最終結果が、中心に位置するように、処理された散乱データ部分の結果を収集する。図８９の実施例では、結果Ａ０、Ａ１、およびＡ２は、ノード８９１０に収集され、最終結果Ａ０＋Ａ１＋Ａ２をもたらす。結果は、ハワードカスケード内で縮小−和方法を使用して、第１の時間ステップ８９３０および第２の時間ステップ８９４０において収集される。第１の時間ステップ８９３０では、ノード８９１４は、結果Ａ２をノード８９１０に送信し、ノード８９１６は、結果Ａ１をノード８９１２に送信する。第２の時間ステップ８９４０では、ノード８９１２は、組み合わせられた結果Ａ０＋Ａ１をノード８９１０に送信し、これは、Ａ２と組み合わせられ、最終結果Ａ０＋Ａ１＋Ａ２をもたらす。
【０１５５】
図９０は、第１の時間ステップ８９３０の間の図８９に示される集積収集の一例示的ハードウェア図９０００を示す。システム９０００では、ノード８９１６は、バス９０４６、スマートＮＩＣ９０１６、通信経路９０６６、スイッチ９０５０、通信経路９０６２、スマートＮＩＣ９０１２、およびバス９０４２を介して、結果Ａ１をノード８９１２に送信する。ノード８９１４は、バス９０４４、スマートＮＩＣ９０１４、通信経路９０６４、スイッチ９０５０、通信経路９０６０、スマートＮＩＣ９０１０、およびバス９０４０を介して、結果Ａ２をノード８９１０に送信する。
【０１５６】
図９１は、第２の時間ステップ８９４０の間の図８９に示される集積収集の一例示的ハードウェア図９１００を示す。第２の時間ステップ８９４０では、ノード８９１２は、バス９０４２、スマートＮＩＣ９０１２、通信経路９０６２、スイッチ９０５０、通信経路９０６０、スマートＮＩＣ９０１０、およびバス９０４０を介して、組み合わせられた結果Ａ０＋Ａ１をノード８９１０に送信する。
【０１５７】
ハワードカスケードが使用されるとき、任意の要求されるスマートＮＩＣコマンドが、最初に、スマートＮＩＣ、例えば、スマートＮＩＣ９０１０−９０１６から要求されることを理解されるであろう。スマートＮＩＣは、次いで、データ移動および有効な演算（例えば、前述に示される和演算）の両方を行なう。有効な演算をスマートＮＩＣ上に配置することは、オーバーラップ通信および計算を促進する。
【０１５８】
多重通信チャネルを伴うか、または帯域幅制限を伴う十分なチャネルの性能（多重通信チャネルを模倣する）を使用可能であるかのいずれかのシステムでは、次いで、データ移動は、図９２に示されるように、変更する。
【０１５９】
図９２は、２チャネルハワードカスケードデータ移動およびタイミング図の論理図を示し、本実施例は、縮小和演算を示す。第１の時間ステップ９２３０では、ノード９２２０、９２２２は、ノード９１１２に伝送し、ノード９２２４、９２２６は、ノード９２１４に伝送し、ノード９２１６、９２１８は、ノード９２１０に伝送する。第２の時間ステップ９２４０では、ノード９２１２、９２１４は、ノード９２１０に伝送する。
【０１６０】
図９３は、２チャネルデータおよびコマンド移動の第１の時間ステップ９２３０（図９２）のハードウェア図を示す。そこから分かるように、チャネル数は、図９２に従う。チャネルは、物理的、仮想的、またはその２つの組み合わせであることができる。図９３では、ノードが、図９２に記述されるように、データを伝送することが分かる。図９３におけるデータの伝送は、通信チャネル９３６０−９３７６を介し、そのうちのいくつかは、２チャネル通信チャネル、例えば、通信チャネル９３６０−９３６４として作用する。全通信チャネル９３６０−９３７６が、２チャネル通信チャネルであってもよいことを理解されるであろう。
【０１６１】
図９４は、第２の時間ステップ９２４０（図９２）の一例示的ハードウェア図を示す。図９４では、ノード９２１２、９２１４は、ノード９２１０に伝送する。
収集モデル検出
収集モデルデータ移動検出は、図９５−９８に示される。
【０１６２】
図９５は、収集モデルデータ移動の例証的実施例を示す。図９５では、ノードは、行によって表され、データアイテムは、列によって表される。収集前マトリクス９５１０は、各行（ノード）内に１つのデータアイテム（Ａ０、Ｂ０、Ｃ０）とともに示される。収集後マトリクス９５２０は、１行（ノード）内に全３つのデータアイテム（Ａ０、Ｂ０、Ｃ０）とともに示される。
【０１６３】
図９６は、十分なチャネルのハワードカスケード収集、システム９６００の論理図を示す。通信チャネルは、物理的、仮想的、またはその２つの組み合わせであってもよい。システム９６００の実施例では、収集演算前に、ノード９６１０は、データＡ０を記憶し、ノード９６１２は、データＢ０を記憶し、ノード９６１４は、データＣ０を記憶する。ノード９６１２は、データＢ０をノード９６１０に伝送する。第１の時間ステップ９６３０の間、ノード９６１２は、データＢ０をノード９６１０に伝送する。第２の時間ステップ９６４０の間、ノード９６１０は、データＣ０をノード９６１０に伝送する。
【０１６４】
図９７は、十分なチャネルのハワードカスケードベースの収集通信モデルである、システム９７００のハードウェア図を示す。第１の時間ステップ９６３０（図９６）では、ノード９６１２は、バス９７４２、スマートＮＩＣ９７１２、通信経路９７６２、スイッチ９７５０、通信経路９７６０、スマートＮＩＣ９７１０、およびバス９７４０を介して、データをノード９６１０に伝送する。第２の時間ステップ９６４０（図９６）では、ノード９６１４は、バス９７４４、スマートＮＩＣ９７１４、通信経路９７６４、スイッチ９７５０、通信経路９７６０、スマートＮＩＣ９７１０、およびバス９７４０を介して、データをノード９６１０に伝送する。これは、収集演算を完了させる。
【０１６５】
図９８は、和−縮小に取って代わり得る、基本収集演算のリスト９８００である。
縮小コマンドの検出
使用されるべき縮小並列通信モデルを識別する変換が、以下に示される。
【０１６６】
図９９は、和演算を使用する、縮小コマンドの一実施例を示す。図９９では、ノードは、行によって表され、データアイテムは、列によって表される。和演算マトリクス９９１０を使用する縮小前コマンドは、各行（ノード）内の１セットのデータアイテム（例えば、Ａ０、Ｂ０、Ｃ０）とともに示される。和演算マトリクス９５２０を使用する、縮小後コマンドは、第１の列内の「Ａ」データアイテム、次の列内の「Ｂ」データアイテム、および最後の列内の「Ｃ」データアイテムを伴う、１行（ノード）内の全データアイテム（Ａ０、Ａ１、Ａ２、Ｂ０、Ｂ１、Ｂ２、Ｃ０、Ｃ１、Ｃ２）とともに示される。
【０１６７】
十分なチャネルのオーバーラップしたハワードカスケード通信パターンの使用は、図１００に示されるように、縮小−和パターンが実装されることを可能にする。図１００は、和演算を用いる縮小コマンドを使用する、ハワードカスケードデータ移動およびタイミング図の一実施例である、システム１００００を示す。システム１００００では、ノード１００１２および１００１４は、第１の時間ステップ１００３０において、データをノード１００１０に伝送する。ノード１００１２は、データＢ０、Ｂ１、Ｂ２を伝送する。ノード１００１４は、データＣ０、Ｃ１、Ｃ２を伝送する。
【０１６８】
図１０１は、十分なチャネルのオーバーラップしたハワードカスケードベースの縮小コマンドのハードウェア図である、システム１０１００を示す。システム１０１００の実施例では、データは、第１の時間ステップ１００３０（図１００）の間、ノード１００１２および１００１４からノード１００１０同時に伝送される。
【０１６９】
計算を伴うオーバーラップされる通信は、スマートＮＩＣ１０１１０、１０１１２、１０１１４上で利用可能なプロセッサを使用する。標的縮小演算の各仮想チャネル（例えば、通信経路１０１６０−１０１６４）は、各チャネル上でデータを別個に計算させた後、最終演算が続いてもよい。縮小を行なう、本実施例におけるスマートＮＩＣ、ＮＩＣ１０２１０の一実施例は、図１０２に示される。データＡ１、Ｂ１、Ｃ１およびＡ２、Ｂ２、Ｃ２は、ＮＩＣ１０１１０によって受信され、ＮＩＣ１０１１０によって処理され、次いで、バス１０１４０を介して、ノード１００１０に伝送される。
【０１７０】
ベクトル収集検出
ベクトル収集演算の検出は、２つのマトリクス１０３１０および１０３２０を図示する、図１０３に示されるデータ移動の検出から生じる。マトリクス１０３１０は、３つのノード上に記憶されるデータＡ０、Ｂ０、Ｃ０の表現である（前述のように、列は、データアイテムを表し、行は、ノードを表す）。マトリクス１０３２０は、１つのノード上に記憶されるデータＡ０、Ｂ０、Ｃ０とともに、ベクトル収集演算後のデータを示す。
【０１７１】
図１０４は、３つのノード１０４１０、１０４１２、および１０４１４を有する、ベクトル収集システム１０４００の論理図を示す。図１０４では、システム１０４００は、データが、同一の時間ステップ１０４３０にいおいて、ノード１０４１２および１０４１４から伝送されるように、十分なチャネルのハワードカスケードを利用して、ベクトル収集演算を行なう。
【０１７２】
図１０５は、図１０３および１０４に示される十分なチャネルのハワードカスケードベクトル収集演算のシステム１０５００のハードウェア図を示す。図１０５では、ノード１０４１２、１０４１４は、バス１０５４２、１０５４４、スマートＮＩＣ１０５１２、１０５１４、通信経路１０５６２、１０５６４、スイッチ１０５５０、通信経路１０５６０、スマートＮＩＣ、１０５１０、およびバス１０５４０を介して、データをノード１０４１０に伝送する。
【０１７３】
初期データ出力モデル実施例
データ出力は、システムが情報を受信源に伝送する能力として定義されることができる。概して、２つのタイプのデータ出力：直列および並列が、存在する。直列出力は、単一通信チャネルを使用して、データを伝送する。並列データ出力は、多重通信チャネルを使用して、データを伝送する。
【０１７４】
直列データ出力実施例
データは、単一通信チャネルを有するネットワークを利用して、システム内のデータストレージデバイスに伝送されることができる。データストレージデバイスの実施例として、ストレージエリアネットワーク（ＳＡＮ）、ネットワークアタッチストレージ（ＮＡＳ）、および他のオンラインデータストレージ方法が挙げられるが、それらに限定されない。データの伝送は、集積されたデータセットをとり、それをシステムの一部に直列に伝送するであろう、トップレベル計算ノードのホームノード選択を介して達成されることができる。図１０６は、ハワードカスケードベースのデータ伝送を使用する、直列データ出力のシステム１０６００の論理図を示す。システム１０６００内では、ホームノード１０６１０およびノード１０６１２−１０６１６は、ＮＡＳ１０６０８と直列通信する。データＡ２、Ａ１は、第１の時間ステップ１０６３０において、それぞれ、ＮＡＳ１０６０８およびノード１０６１２に送信される。ノード１０６１２内のデータＡ０、Ａ１は、ノード１０６１２データＡ０＋Ａ１が、ノード１６１４データＡ２と組み合わせられる、第２の時間ステップ１０６４０において、組み合わせられ、ＮＡＳ１０６０８に送信される。ノードは、現時点において、ＮＡＳ１０６０８を介して、組み合わせられたデータＡ０＋Ａ１＋Ａ２へのアクセスを有する。
【０１７５】
図１０７は、図１０６の第１の時間ステップ１０６３０において、ハワードカスケードベースのデータ伝送を使用する、直列データシステム１０７００の部分的例証的ハードウェア図を示す。システム１０７００では、ノード１０６１２、１０６１４は、直列通信を利用して、データをノード１０６１２およびＮＡＳ１０６０８に伝送する。
【０１７６】
図１０８は、第２の時間ステップにおいて、ハワードカスケードベースのデータ伝送を使用する、直列データシステム１０７００の部分的例証的ハードウェア図を示す。第２の時間ステップでは、ノード１０６１２は、直列通信を利用して、データをＮＡＳ１０６０８に伝送する。
【０１７７】
並列データ入力実施例
データはまた、並列通信構造を利用するシステムを用いて、データストレージデバイスに送信されることができる。データストレージデバイスの実施例として、ネットワークアタッチストレージ（ＮＡＳ）、ストレージエリアネットワーク（ＳＡＮ）、および他のデバイスが挙げられるが、それらに限定されない。データの伝送は、分解されたデータセットをとり、並行して、それをシステムの一部を伝送するであろう、トップレベル計算ノードのホームノード選択を介して達成されることができる。
【０１７８】
図１０９は、ハワードカスケードベースの並列データ入力伝送の一実施例を示す。第１の時間ステップ１０９３０内では、ノード１０９１６、１０９１８、１０９２０は、ＮＡＳ１０９０８に伝送し、ノード１０９２２、１０９２４、１０９２６は、それぞれ、ノード１０９１０、１０９１２、１９０１４に伝送する。第２の時間１０９４０ステップでは、ノード１０９１０、１０９１２、１０９１４は、ＮＡＳ１０９０８に伝送する。第２の時間ステップ１０９４０後、ホームノード１０９０６は、ＮＡＳ１０９０８に伝送される全データへのアクセスを有する。
【０１７９】
図１１０は、図１０９の第１の時間ステップ１０９３０の間、ハワードカスケードを使用する、並列データ出力システム１１０００の一例証的ハードウェア図を示す。データ転送は、図１０９に説明されるように生じ、バス１１０３６−１１０５８、スマートＮＩＣ１１００６−１１０２６、通信経路１１０６０−１１０７６、およびスイッチ１１０５０は、並列データ転送に関与する。
【０１８０】
図１１１は、図１０９の第２の時間ステップ１０９４０の間、ハワードカスケードを使用する、並列データ出力システム１１０００の一例証的ハードウェア図を示す。データ転送は、図１０９に説明されるように生じ、バス１１０３６−１１０４４、スマートＮＩＣ１１００６−１１０１４、通信経路１１０６０−１１０６４、およびスイッチ１１０５０は、並列データ転送に関与する。
【０１８１】
初期状態遷移パターン
いくつかの並列処理パターンは、状態遷移レベルでのみ判定される。図１１２、１１３に示される実施例では、状態機械１１２００は、以下のように、状態遷移を介して、ループ構造を検出する。
【０１８２】
図１１２は、２つの状態、状態１および状態２、および４つの伝送、伝送１１２１０、１１２２０、１１２３０、１１２６０を伴う、状態機械１１２００を示す。伝送１１２１０、１１２２０は、多重レベルループ構造を含み得る、グループ化された状態からの呼出し−リターンを伴う、多重シーケンシャル呼出し−リターンサイクルとして説明され得る、伝送である。伝送１１２３０は、多重レベルループ構造を含み得る、グループ化された状態（図１１３参照）の呼び出しを伴う、直接ループである。伝送１１２６０は、非グループ状態である、単一ループ構造の呼び出しを伴う、直接ループである。
【０１８３】
図１１３は、状態１１２１０、１１２２０を伴う、図１１２の状態２を示す。状態２は、加えて、状態２．１および状態２．２を含む。伝送１１２４０、１１２５０は、後続状態非グループ化状態２．１、２．２を伴う、グループ化された状態である、状態２の内部の多重シーケンシャル呼出し−リターンサイクルである。図１１３の伝送１２２７０は、図１１２の伝送１１２３０に類似し、その差異は、図１１３の伝送１１２７０が、状態２．１と関連付けられることである。
【０１８４】
遷移ベクトル（例えば、伝送１１２１０、１１２２０、１１２３０等）は、ループ条件を判定するために要求される変数および変数値情報の全てを提供することを理解されるであろう。
【０１８５】
初期組み合わせデータ移動と遷移パターン
いくつかの並列処理判定は、検出のために、データ移動と状態遷移の組み合わせを要求する。図１１４に示される一実施例では、状態２０において見つけられたデータ移動は、状態３０においてアクセスされる変数にアクセスしない。状態３０は、常時、状態２０後に呼び出され、したがって、状態２０および状態３０は両方とも、ともに処理されることができる。
【０１８６】
変更が、本明細書の範囲から逸脱することなく、前述の方法およびシステムに行なわれてもよい。したがって、前述の説明に含有される、または付随の図面に示される事柄は、限定的意味ではなく、例証的として解釈されるべきであることに留意されたい。以下の請求項は、本明細書に記述される全ての一般的かつ具体的特徴と、文言上、その間に収まる可能性のある、本方法およびシステムの範囲の全記載とを網羅することを意図する。
【図３】
2014525640.tif 000005
【図５】
2014525640.tif 000006
【図６】
2014525640.tif 000007
【図７】
2014525640.tif 000008
【図８】
2014525640.tif 000009
【図９】
2014525640.tif 000010
【図１０】
2014525640.tif 000011
【図１１】
2014525640.tif 000012
【図１２】
2014525640.tif 000013
【図１８】
2014525640.tif 000014
【図１９】
2014525640.tif 000015
【図２０】
2014525640.tif 000016
【図２２Ａ】
2014525640.tif 000017
【図３３Ａ】
2014525640.tif 000018
【図３６】
2014525640.tif 000019
【図３８】
2014525640.tif 000020
【図３９】
2014525640.tif 000021
【図４１】
2014525640.tif 000022
【図４３】
2014525640.tif 000023
【図４４】
2014525640.tif 000024
【図４５】
2014525640.tif 000025
【図４６】
2014525640.tif 000026
【図４７】
2014525640.tif 000027
【図４８】
2014525640.tif 000028
【図４９】
2014525640.tif 000029
【図５０】
2014525640.tif 000030
【図５１】
2014525640.tif 000031
【図５２】
2014525640.tif 000032
【図５３】
2014525640.tif 000033
【図５５】
2014525640.tif 000034
【図５６】
2014525640.tif 000035
【図５８】
2014525640.tif 000036
【図５９】
2014525640.tif 000037
【図６２】
2014525640.tif 000038
【図６３】
2014525640.tif 000039
【図６４】
2014525640.tif 000040
【図６５】
2014525640.tif 000041
【図６６】
2014525640.tif 000042
【図６７】
2014525640.tif 000043
【図６８】
2014525640.tif 000044
【図６９】
2014525640.tif 000045
【図７０】
2014525640.tif 000046
【図７１】
2014525640.tif 000047
【図７２】
2014525640.tif 000048
【図７３】
2014525640.tif 000049
【図７４】
2014525640.tif 000050
【図７５】
2014525640.tif 000051
【図７６】
2014525640.tif 000052
【図７７】
2014525640.tif 000053
【図７８】
2014525640.tif 000054
【図７９】
2014525640.tif 000055
【図８１】
2014525640.tif 000056
【図８２】
2014525640.tif 000057
【図８３】
2014525640.tif 000058
【図８４】
2014525640.tif 000059
【図８５】
2014525640.tif 000060
【図８７】
2014525640.tif 000061
【図８８】
2014525640.tif 000062
【図８９】
2014525640.tif 000063
【図９０】
2014525640.tif 000064
【図９１】
2014525640.tif 000065
【図９２】
2014525640.tif 000066
【図９３】
2014525640.tif 000067
【図９４】
2014525640.tif 000068
【図９５】
2014525640.tif 000069
【図９６】
2014525640.tif 000070
【図９７】
2014525640.tif 000071
【図９９】
2014525640.tif 000072
【図１００】
2014525640.tif 000073
【図１０１】
2014525640.tif 000074
【図１０２】
2014525640.tif 000075
【図１０３】
2014525640.tif 000076
【図１０４】
2014525640.tif 000077
【図１０５】
2014525640.tif 000078
【図１０６】
2014525640.tif 000079
【図１０７】
2014525640.tif 000080
【図１０８】
2014525640.tif 000081
【図１０９】
2014525640.tif 000082
【図１１０】
2014525640.tif 000083
【図１１１】
2014525640.tif 000084
【図１】
2014525640.tif 000085
【図２】
2014525640.tif 000086
【図４】
2014525640.tif 000087
【図１３】
2014525640.tif 000088
【図１４】
2014525640.tif 000089
【図１５】
2014525640.tif 000090
【図１６】
2014525640.tif 000091
【図１７】
2014525640.tif 000092
【図２１】
2014525640.tif 000093
【図２２Ｂ】
2014525640.tif 000094
【図２３】
2014525640.tif 000095
【図２４】
2014525640.tif 000096
【図２５】
2014525640.tif 000097
【図２６Ａ】
2014525640.tif 000098
【図２６Ｂ】
2014525640.tif 000099
【図２６Ｃ】
2014525640.tif 000100
【図２６Ｄ】
2014525640.tif 000101
【図２７】
2014525640.tif 000102
【図２８】
2014525640.tif 000103
【図２９】
2014525640.tif 000104
【図３０】
2014525640.tif 000105
【図３１】
2014525640.tif 000106
【図３２】
2014525640.tif 000107
【図３３Ｂ】
2014525640.tif 000108
【図３４】
2014525640.tif 000109
【図３５】
2014525640.tif 000110
【図３７】
2014525640.tif 000111
【図４０】
2014525640.tif 000112
【図４２】
2014525640.tif 000113
【図５４】
2014525640.tif 000114
【図５７】
2014525640.tif 000115
【図６０】
2014525640.tif 000116
【図６１】
2014525640.tif 000117
【図８０】
2014525640.tif 000118
【図８６】
2014525640.tif 000119
【図９８】
2014525640.tif 000120
【図１１２】
2014525640.tif 000121
【図１１３】
2014525640.tif 000122
【図１１４】
2014525640.tif 000123
【図１１５】
2014525640.tif 000124
【図１１６】
2014525640.tif 000125
【図１１７】
2014525640.tif 000126
【図１１８】
2014525640.tif 000127
【国際調査報告】
2014525640.tif 000128
2014525640.tif 000129