(57)【要約】      （修正有）【課題】より高い生産性およびパフォーマンスのための並列計算の効率的スケジューリングを提供する。【解決手段】分散スケジューリングにおいて、場所iの作業プロセッサにあるアクテビティは、それぞれの場所における親和性だけを用いて、必要なメモリを有することが保証されている遠隔場所jに子アクティビティを生成してスケジュールする。各場所に十分なスペースがあることが保証されているので、スペース不足に起因する物理的デッドロックは生じ得ない。【選択図】図３
2011096247.tif 000002
【特許請求の範囲】
【請求項１】
一つ以上のプロセッサと、
コンピュータ可読プログラム・コードを有し、前記一つ以上のプロセッサによって実行可能なコンピュータ・プログラムと、
を含む装置であって、
前記コンピュータ可読プログラム・コードは、
多場所計算のオンライン分散親和性駆動スケジューリングをデッドロック・フリーな仕方で、一つ以上の場所に提供するように作られたコンピュータ可読プログラム・コードを含み、前記一つ以上の場所の各々は、共有メモリを有する一つ以上のプロセッサを含む、
前記装置。
【請求項２】
多場所計算のオンライン分散親和性駆動スケジューリングをデッドロック・フリーな仕方で提供することは、場所当たり無制約のスペースを有し、負荷バランスのための場所内ワーク・スティーリングと親和性を持続するための場所群を通した遠隔ワーク・プッシングとを組合せて使う、厳格な場所注釈マルチスレッド計算のための分散親和性駆動スケジューリングを提供することをさらに含み、
新着アクテビティ・バッファは、遠隔場所から子生成された新規アクテビティを保持するため使われる並列デキューとして実装される、
請求項１に記載の装置。
【請求項３】
多場所計算のオンライン分散親和性駆動スケジューリングをデッドロック・フリーな仕方で提供することは、デッドロック・フリーに実行される、由来厳格な多場所計算のための分散親和性駆動スケジューリングを提供することをさらに含む、請求項１に記載の装置。
【請求項４】
多場所計算のオンライン分散親和性駆動スケジューリングをデッドロック・フリーな仕方で提供することは、多場所計算のスケジューリングのための階層的親和性駆動スケジューリングを提供することをさらに含み、前記階層的親和性駆動スケジューリングは、場所内および場所群を通した親和性駆動スケジューリングを含む、請求項１に記載の装置。
【請求項５】
前記コンピュータ可読プログラム・コードは、場所不問アクテビティと親和性駆動アクテビティとを含むハイブリッド並列計算のためのスケジューリングを提供するように作られたコンピュータ可読プログラム・コードをさらに含む、請求項１に記載の装置。
【請求項６】
前記コンピュータ可読プログラム・コードは、場所群を通した自動的負荷バランスを可能にするため、並列計算中に場所不問アクテビティを設けるように作られたコンピュータ可読プログラム・コードをさらに含む、請求項１に記載の装置。
【請求項７】
前記コンピュータ可読プログラム・コードは、場所群を通した優先化ランダム・ワーク・スティーリングを提供するように作られたコンピュータ可読プログラム・コードをさらに含み、より近い場所からアクテビティを盗む確率は、より遠い場所から盗む確率よりも高い、請求項１に記載の装置。
【請求項８】
前記コンピュータ可読プログラム・コードは、一般的な計算に対する場所内ワーク・スティーリングおよび遠隔ワーク・プッシングの一つ以上を用いる無制約スペース・スケジューリングを提供するように作られたコンピュータ可読プログラム・コードをさらに含む、請求項１に記載の装置。
【請求項９】
前記コンピュータ可読プログラム・コードは、由来厳格な計算のための有限スペース・スケジューリングを提供するように作られたコンピュータ可読プログラム・コードをさらに含む、請求項１に記載の装置。
【請求項１０】
前記有限スペース・スケジューリングは、デッドロック・フリーな実行のため、アクテビティ／スレッドの深度ベース優先付けをさらに含む、請求項９に記載の装置。
【請求項１１】
前記コンピュータ可読プログラム・コードは、カーネル・スケジューラがジョブに利用可能なリソースを利用度に基づいて変更する、多重プログラム・モードを提供するように作られたコンピュータ可読プログラム・コードをさらに含む、請求項１に記載の装置。
【請求項１２】
一つ以上のプロセッサを使い、プログラム記憶デバイス中に有形に具現された命令のプログラムを実行する方法であって、
前記命令のプログラムは、
多場所計算のオンライン分散親和性駆動スケジューリングを、一つ以上の場所にデッドロック・フリーな仕方で提供するように作られたコンピュータ可読プログラム・コードを含み、前記一つ以上の場所の各々は、共有メモリを有する一つ以上のプロセッサを含む、
前記方法。
【請求項１３】
多場所計算のオンライン分散親和性駆動スケジューリングをデッドロック・フリーな仕方で提供することは、場所当たり無制約のスペースを有し、負荷バランスのための場所内ワーク・スティーリングと親和性を持続するための場所群を通した遠隔ワーク・プッシングとを組合せて使う、厳格な場所注釈マルチスレッド計算のための分散親和性駆動スケジューリングを提供するステップと、新着アクテビティ・バッファを、遠隔場所から子生成された新規アクテビティを保持するため使う並列デキューとして実装するステップと、をさらに含む、
請求項１２に記載の方法。
【請求項１４】
多場所計算のオンライン分散親和性駆動スケジューリングをデッドロック・フリーな仕方で提供することは、デッドロック・フリーに実行される、由来厳格な多場所計算のための分散親和性駆動スケジューリングを提供するステップをさらに含む、請求項１２に記載の方法。
【請求項１５】
多場所計算のオンライン分散親和性駆動スケジューリングをデッドロック・フリーな仕方で提供することは、多場所計算のスケジューリングのための階層的親和性駆動スケジューリングを提供するステップをさらに含み、前記階層的親和性駆動スケジューリングは、場所内および場所群を通した親和性駆動スケジューリングを含む、請求項１２に記載の方法。
【請求項１６】
前記命令のプログラムは、場所不問アクテビティと親和性駆動アクテビティとを含むハイブリッド並列計算のためのスケジューリングを提供するように作られたコンピュータ可読プログラム・コードをさらに含む、請求項１２に記載の方法。
【請求項１７】
前記命令のプログラムは、場所群を通した自動的負荷バランスを可能にするため、並列計算中に場所不問アクテビティを設けるように作られたコンピュータ可読プログラム・コードをさらに含む、請求項１２に記載の方法。
【請求項１８】
前記命令のプログラムは、場所群を通した優先化ランダム・ワーク・スティーリングを提供するように作られたコンピュータ可読プログラム・コードをさらに含み、より近い場所からアクテビティを盗む確率は、より遠い場所から盗む確率よりも高い、請求項１２に記載の方法。
【請求項１９】
前記命令のプログラムは、一般的な計算に対する場所内ワーク・スティーリングおよび遠隔ワーク・プッシングの一つ以上を用いる無制約スペース・スケジューリングを提供するように作られたコンピュータ可読プログラム・コードをさらに含む、請求項１２に記載の方法。
【請求項２０】
前記命令のプログラムは、由来厳格な計算のための有限スペース・スケジューリングを提供するように作られたコンピュータ可読プログラム・コードをさらに含む、請求項１２に記載の方法。
【請求項２１】
前記命令のプログラムは、カーネル・スケジューラがジョブに利用可能なリソースを利用度に基づいて変更する、多重プログラム・モードを提供するように作られたコンピュータ可読プログラム・コードをさらに含む、請求項１２に記載の方法。
【請求項２２】
コンピュータ可読プログラム・コードを有するコンピュータ・プログラムであって、
前記コンピュータ可読プログラム・コードは、
多場所計算のオンライン分散親和性駆動スケジューリングをデッドロック・フリーな仕方で、一つ以上の場所に提供するように作られたコンピュータ可読プログラム・コードを含み、前記一つ以上の場所の各々は、共有メモリを有する一つ以上のプロセッサを含む、
前記コンピュータ・プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、並列計算の親和性駆動分散スケジューリングのための装置、方法、およびにコンピュータ・プログラムに関する。
【背景技術】
【０００２】
区分化大域アドレス（ＰＧＡＳ：ｐａｒｔｉｔｉｏｎｅｄ  ｇｌｏｂａｌ  ａｄｄｒｅｓｓ）パラダィムに基づいた、Ｘ１０、Ｃｈａｐｅｌ、およびＦｏｒｔｒｅｓｓなどの言語は、メニーコア・超並列プラットフォームによるより高い生産性およびパフォーマンスを目指した、国防高等研究計画局の高生産性計算システム（ＤＡＲＰＡ  ＨＰＣＳ：ＤｅｆｅｎｓｅＡｄｖａｎｃｅｄ Ｒｅｓｅａｒｃｈ Ｐｒｏｊｅｃｔｓ Ａｇｅｎｃｙ Ｈｉｇｈ Ｐｒｏｄｕｃｔｉｖｉｔｙ Ｃｏｍｐｕｔｉｎｇ Ｓｙｓｔｅｍｓ）プログラムの一部として設計され、実現されたものである。しかしながら、メニーコア・超並列プラットフォームは、並列計算のスケジューリングに関して重大な欠点を有する。
【発明の概要】
【発明が解決しようとする課題】
【０００３】
本発明の実施形態は、より高い生産性およびパフォーマンスのための、並列計算の効率的なスケジューリングを提供する。本発明の実施形態は、物理的デッドロック・フリーな、多場所（「場所」とは共有のメモリを持つプロセッサの群である）並列計算の親和性駆動分散スケジューリングのための効果的な各種方法を提供する。本発明の実施形態は、無制約なスペースを想定した厳密な場所注釈マルチスレッド計算のためのオンライン親和性駆動分散スケジューリング処理を提供する。さらに、本発明の実施形態は、場所あたり制限されたスペースを想定した、新規な親和性駆動オンライン分散スケジューリング処理を提供する。
【課題を解決するための手段】
【０００４】
要約すれば、本発明の一つの態様は、一つ以上のプロセッサと、該一つ以上のプロセッサが実行可能な、体内に具現されたコンピュータ可読プログラム・コードを有するコンピュータ・プログラム（コンピュータ可読記憶媒体に記憶されることもある）とを含む装置を提供し、該コンピュータ可読プログラム・コードは、多場所計算のオンライン分散親和性駆動スケジューリングをデッドロック・フリーな仕方で一つ以上の場所に提供するように作られたコンピュータ可読プログラム・コードを含み、該一つ以上の場所の各々は、共用メモリを有する一つ以上のプロセッサを含む。
【０００５】
本発明の別の態様は、プログラム記憶デバイス中に有形に具現された命令のプログラムを一つ以上のプロセッサを用いて実行するステップを含む方法を提供し、該命令のプログラムは、多場所計算のオンライン分散親和性駆動スケジューリングを、デッドロック・フリーな仕方で一つ以上の場所に提供するように作られたコンピュータ可読プログラム・コードを含み、該一つ以上の場所の各々は共用メモリを有する一つ以上のプロセッサを含む。
【０００６】
本発明のさらなる態様は、（体内に具現された）コンピュータ可読のプログラム・コードを有する（コンピュータ可読記憶媒体を含む、）コンピュータ・プログラムを提供し、該コンピュータ可読プログラム・コードは、多場所計算のオンライン分散親和性駆動スケジューリングを、デッドロック・フリーな仕方で一つ以上の場所に提供するように作られたコンピュータ可読プログラム・コードを含み、該一つ以上の場所の各々は共用メモリを有する一つ以上のプロセッサを含む。
【０００７】
本発明の例示的実施形態を、本発明の他のおよびさらなる特質と利点とともにより良く理解してもらうため、添付の図面と関連させて以下の説明に言及することとし、本発明の請求対象の実施形態の範囲については、特許請求の範囲に記載した請求項において指摘するものとする。
【図面の簡単な説明】
【０００８】
【図１】本発明の実施形態による、定義および記号のいくつかを示す。
【図２】本発明の実施形態による、場所注釈計算ＤＡＧを示す。
【図３】本発明の実施形態による、分散スケジューリング処理を示す。
【図４】本発明の実施形態による、分散スケジューリング処理を示す。
【図５】本発明の実施形態による、分散データ構造を示す。
【図６】本発明の実施形態による、有限スペースのスケジューリングに対する分散データ構造を示す。
【図７】本発明の実施形態による、遠隔子生成および空デキューのケースを示す。
【図８】本発明の実施形態による、多場所分散スケジューリングを示す。
【図９】本発明の実施形態による、ハイブリッド分散スケジューリングを示す。
【図１０】本発明の実施形態による、分散スケジューリングを示す。
【図１１】本発明の実施形態による、場所の円環群を有する２Ｄトーラスを示す。
【図１２】本発明の実施形態による、多場所分散データ構造を示す。
【図１３】本発明の実施形態による、有限スペースのスケジューリングに対する分散データ構造を示す。
【図１４】本発明の実施形態による、多場所分散スケジューリングを示す。
【図１５】各種スケジューリングと本発明の実施形態によるスケジューリングとの間の例示的比較を提示する。
【図１６】本発明の一つの実施形態による、例示的コンピュータ・システムを示す。
【発明を実施するための形態】
【０００９】
本明細書に一般的に記述され図に示された本発明の実施形態の構成要素が、記載された例示的実施形態の他にも、種々さまざまの異なった構成に編成でき設計できることは容易に理解されよう。従って、以下の、図に示されたような本発明の実施形態のさらに詳細な説明は、特許請求の範囲の各請求項において請求された本発明の実施形態の範囲を限定することを意図したものでなく、単に本発明の例示的実施形態を表したものである。
【００１０】
本明細書全体を通して、「一つの実施形態」または「ある実施形態」（または類似の語句）への言及は、その実施形態に関連して説明する特定の特質、構造、または特性が、本発明の少なくとも一つの実施形態に含まれていることを意味する。しかして、本明細書全体を通してさまざまな箇所における「一つの実施形態において」または「ある実施形態において」または類似の語句の出現は、必ずしもその全てが、同一の実施形態に言及してはいない。
【００１１】
さらに、記述された特質、構造、または特性は、任意の適切なやり方で一つ以上の実施形態中に組み合わせることができる。以下の説明において、本発明の実施形態の完全な理解を得るために、数多くの具体的明細が提示される。しかしながら、当業者は、一つ以上の特定の明細がなくても、あるいは他の方法、構成要素、材料などを使っても、本発明の各種実施形態が実施可能なことを認識するであろう。他の事例では、本発明の態様があいまいになるのを避けるために、周知の構造、材料、または工程については提示せず説明もしない。
【００１２】
本発明者は、マルチコアおよびメニーコア・アーキテクチャの出現とともに、より高い生産性およびパフォーマンスを得るための並列プログラムのスケジューリングが重要な課題となっているのを認識している。Ｘ１０、Ｃｈａｐｅｌ、およびＦｏｒｔｒｅｓｓなど、ＰＧＡＳパラダィムに基づく言語は、メニーコア・超並列プラットフォームによるより高い生産性およびパフォーマンスを目指した、ＤＡＲＰＡＨＰＣＳプログラムの一部として設計され、実現されたものである。これらの言語は、並列プログラム中のスレッド（アクテビティともいう）の初期配置およびデータ構造のための内蔵サポートを有し、これにプログラムには局所性が暗黙裡に含まれている。これらの言語のランタイム・システムは、中程度〜きめ細かな並列処理を使った並列計算のアルゴリズム的オンライン・スケジューリングを備える必要がある。大きな並列計算を取り扱うため、該スケジューリング・アルゴリズムは、メニーコア・超並列アーキテクチャを使い分散されたやり方で機能するよう設計する必要がある。さらに、該アルゴリズムは、有限スペース下で物理的デッドロック・フリーな実行を確実にする必要がある。並列計算は、制御、データ、または同期依存に起因するいかなる論理的デッドロックをも有さず、従って、物理的デッドロックは、有限スペースでの循環依存に起因してだけ生じ得ることが前提とされる。これは非常に困難な課題である。というのは、分散スケジューリング・アルゴリズムは、分散方式のデッドロック・フリー性を保ちつつ、親和性を追跡して効率的なスペースおよび時間計算量（ｃｏｍｐｌｅｘｉｔｙ）を提供する必要があるからである。
【００１３】
以降、図面を参照しながら説明する。本発明の例示的実施形態は、図面を参照することによって最善に理解することができよう。以下の説明は、例示のためだけに意図されたものであって、本明細書の特許請求の範囲の各請求項において請求される本発明の選ばれた特定の例示的実施形態を説明するだけのものである。
【００１４】
図面中のフローチャートおよびブロック図は、本発明の各種実施形態によるシステム、装置、方法、およびコンピュータ・プログラムの実行可能な実施のアーキテクチャ、機能、および工程を示す。この点に関し、フローチャートまたはブロック図の中の各ブロックは、規定された論理機能（群）を実行するための一つ以上の実行可能命令を含む、コードのモジュール、セグメント、または部分を表し得る。また、別のいくつか実施において、ブロック中に記載された機能が、図面に記載された順序と異なる順序で生じる得ることにも留意すべきである。例えば、連続して示される２つのブロックが、関与する機能如何によっては、実際上ほぼ同時に実行されることがあり、あるいはこれらブロックが逆の順序で実行され得る。また、ブロック図またはフローチャート図あるいはその両方の中の各ブロック、およびブロック図またはフローチャート図あるいはその両方の中のブロックの組合せが、特定の機能または作用を実施する特殊用途ハードウエア・ベースのシステムによって、あるいは特殊用途ハードウエアおよびコンピュータ命令の組合せによって実行可能であることにも留意する。
【００１５】
本明細書で取り扱う親和性駆動分散スケジューリングの課題は、以下の２つである。所与課題：（ａ）細かな〜中程度のきめの並列処理を使った、並列マルチスレッド計算を表現するインプット計算ＤＡＧ（図２）。ＤＡＧ中の各ノードは、ａｎｄ／ｏｒ／ａｄｄなどの基本演算であり、そのノードが実行されるべき場所を表す場所識別子で注釈されている。ＤＡＧ中の矢印線は、（ｉ）新規スレッドの生成、または（ｉｉ）実行の逐次的流れ、または（ｉｉｉ）２つのノード間の同期依存を表す。（ｂ）計算ＤＡＧをスケジュールする標的アーキテクチャとしてのｎ個ＳＭＰのクラスタ（場所とも呼ばれる各ＳＭＰは一定数（ｍ）のプロセッサおよびメモリを有する）。解決策：両方の課題に対し、インプットＤＡＧ中の指定された場所へのノードの的確なマッピングを確実にするオンライン分散方式で、計算ＤＡＧのノードに対するスケジュールを生成する必要がある。特に、第一の課題に対しては、インプットは、厳格な（インプットＤＡＧ中の同期依存矢印線が、あるスレッドとその祖先スレッドとの間だけにつながっている）計算ＤＡＧであり、場所当たり無制約のスペースがあると想定される。ここでは、時間およびメッセージの計算量を最小化しながら、計算ＤＡＧ中のノードに対するオンライン・スケジュールを生成する必要がある。第二の課題に対しては、インプットは、由来厳格な（ｔｅｒｍｉｎａｌｌｙｓｔｒｉｃｔ）並列計算ＤＡＧ（同期依存矢印線が、あるアクテビティが子孫アクテビティの完了を待っている状態を表している）であり、場所あたりのスペースが制限されていることが想定されている。ここでの狙いは、実行のため低廉な時間およびメッセージ計算量を維持しながら、物理的デッドロック・フリーな実行を確実にするオンライン・スケジュールを生成することである。
【００１６】
しかして、本明細書中の本発明の各種実施形態に整合する、デッドロック・フリーな実行が保証された親和性駆動分散スケジューリング処理と、実証されたスペース、時間、およびメッセージの限界とを提示する。これらの処理では、所与の並列計算に対する、場所群全体を通しての負荷バランスが考慮された注釈の初期配置を想定している。該処理は、利用可能なリソース量に基づいて計算ＤＡＧのオンライン拡張を制御する。これら処理は、親和性を確実にするため、効率的な遠隔子生成および拒否取扱いメカニズムを用いる。場所内でのランダム化されたワーク・スティーリングが負荷バランシングを助力する。有限スペースに対する分散スケジューリング処理は、分散方式による実行のため、スレッド／アクテビティの順序付けに基づき見積もられた計算深度を使い、注意深くスペースを管理する。分散方式のデッドロック回避方策が並列計算のデッドロック・フリーな実行を確実にする。これらの処理は、場所当たりの数が可変のプロセッサに対しても、また同じ物理的場所にあるプログラム中の複数の論理的場所のマッピングに対しても、もしその物理的場所が十分なリソースを有するならば、容易に展開することができる。
【００１７】
本明細書において、場所当たり無制約および有限スペース双方に対する、新規の親和性駆動分散スケジューリング処理を提案する。この有限スペース処理は由来厳格な多場所計算のために設計され、新規の分散方式デッドロック回避方策を使って、物理的デッドロック・フリーな実行を確実にする。本明細書では、この処理に対するスペース限界およびデッドロック・フリー実証を提示する。
【００１８】
以下に、無制約スペース処理に対し、実行時間の下限期待値が  Ｏ（ｍａｘｋＴ１ｋ／ｍ＋Ｔ∞，ｎ）であり、上限期待値がＯ（Σｋ（Ｔ１ｋ／ｍ＋Ｔ∞ｋ））であることを示す。前式のｋは１からｎまでの場所を表す変数であり、ｍは場所当たりのプロセッサの数を表し、Ｔ１ｋは、単一個のプロセッサを使った場所ｋに対する実行時間を表し、Ｔ∞，ｎは、ｎ個の場所で、各場所で無限大の数のプロセッサを使って計算した場合の実行時間を表す。また、メッセージ計算量に対する確率的な下限期待値および上限期待値も以下に説明する。
【００１９】
共有メモリ・マルチプロセッサに対する動的に生成されたタスクのスケジューリングは、十分研究された課題である。従来の研究は、ランダム化されたワーク・スティーリングの方策を推進した。該方策では、ワークを持たないプロセッサ（ワークなしプロセッサ）はシステム内の別のプロセッサ（ビクチム）からランダムにワークを盗む。他の研究は、ＳＭＰプラットフォームにおける親子厳格な（ｆｕｌｌｙ−ｓｔｒｉｃｔ）計算のスケジューリングのために、スペース（Ｏ（Ｐ・Ｓ１））および時間（Ｏ（Ｔ１／Ｐ＋Ｔ∞））に対する効率的な限界を明らかにした。前式のＰはプロセッサの数であり、Ｔ１およびＳ１はそれぞれ逐次的実行に対する時間およびスペースであり、Ｔ∞は無限大数のプロセッサによる実行時間である。その後、スレッドのスケジューリングに対するデータのローカル性の重要性が、データのローカル性を使ったワーク・スティーリングを動機付けし、このスティーリング法では、データのローカル性はオンザフライで見出され計算の進行中維持された。また、この研究では、スケジューリングのための初期配置が探求され、該アプローチの有用性を示す実験結果が提示された。ただし、親和性は必ずしも追跡されず、アルゴリズムの範囲はＳＭＰ環境に限定され、時間計算量は解析されなかった。他の研究では、ＳＭＰプラットフォーム上の一般的並列計算のスケジューリングに対する時間計算量（Ｏ（Ｔ１／Ｐ＋Ｔ∞））は解析されたが、スペースおよびメッセージ計算量の限界は考慮されなかった。本明細書においては、本発明の実施形態は、親和性を確実にしさらに時間およびメッセージ限界を提示しながら、複数の場所（ＳＭＰのクラスタ）を通した分散方式スケジューリング課題を考察する。
【００２０】
他の従前の研究は、適応並列処理および障害許容力を用いる、分散メモリ環境におけるワーク・スティーリング・アルゴリズムを考案している。該研究では、タスク移動は、全面的に（ランダム化ワーク・スティーリング・アルゴリズムを介した）プル・ベースであり、しかして、上記研究は親和性を無視し、また、デッドロック・フリー性またはリソース利用度プロパティに対する何の公的な証明も提供しなかった。また、従前の研究は、初期配置ベースのスケジューリング方策が適切な、並列計算に対する多場所（分散）展開も記述している。多場所展開は、相互接続ネットワークにより接続された複数の場所を有し、各場所はＳＭＰプラットフォームとして連結された複数のプロセッサを有する。この研究は、マルチスレッド化計算のオンライン欲張りスケジューリングが、場所あたり制限されたスペースおよび通信リソースの下で、物理的デッドロックをもたらし得ることを論証した。制限されたリソース（スペースまたは通信リソース）は、場所間の循環依存を引き起こす可能性があり、物理的デッドロックにつながり得る。また、従前の研究は、初期配置に基づくスケジューリング方策を提供し、ドッペルゲンガー（Ｄｏｐｐｅｌｇａｅｎｇｅｒ）モードと呼ばれる縮退モードを用いて、物理的デッドロック・フリーの由来厳格な計算の実行に対するスペース限界を立証した。該計算では、このモードにおける親和性を顧慮されず、時間または通信の限界は提示されなかった。また、負荷バランシングの面は取り扱っていなかった。本発明の実施形態は、多場所構成におけるデッドロック・フリーな分散スケジューリングを保証しつつ親和性を確実にする。計算中の一部のアクテビティは場所親和性を有し計算中の他のアクテビティは任意の場所で実行することが可能な、ハイブリッド並列計算のスケジューリングが考案された。本研究は、場所群を通した優先化ランダム・ワーク・スティーリングに特別な焦点を当てており、本論文中に提示された、有限スペース・アルゴリズムに対するデッドロック・フリー性と、無制約スペース・アルゴリズムに対する時間およびメッセージ計算量とに関する詳細な結果を利用している。表形式による、本発明の実施形態の処理と従前の研究の処理との間の特質の比較を本明細書に提示する。
【００２１】
システムおよび計算モデル
本発明の実施形態によれば、計算ＤＡＧがスケジュールされる対象のシステムは、アクティブ・メッセージ・ネットワークによって連結されたＳＭＰのクラスタであると想定される。各ＳＭＰは共有メモリを有するプロセッサの群である。また、本明細書では各ＳＭＰを場所ともいう。アクティブ・メッセージ（ＡＭ：ＡｃｔｉｖｅＭｅｓｓａｇｅｓ）は、相互整合する要求／回答メッセージの順序化なしの信頼性ある配信をサポートする、低レベル軽量のＲＰＣ（ｒｅｍｏｔｅ ｐｒｏｃｅｄｕｒｅ ｃａｌｌ（遠隔手順呼び出し））メカニズムである。ｎ個の場所が存在し、各場所がｍ個のプロセッサ（本明細書では作業プロセッサという）を有することが想定されている。
【００２２】
システム上に動的にスケジュールされる対象の並列計算は、プログラマによって、Ｘ１０およびＣｈａｐｅｌなどの言語で規定されるとの想定がされる。本発明の例示的実施形態に整合する分散スケジューリング処理を説明するため、並列計算は、ＤＡＧ（ｄｉｒｅｃｔｅｄａｃｙｃｌｉｃ ｇｒａｐｈ（有向非巡回グラフ））構造を有し、ａｎｄ、ｏｒ、ｎｏｔ、ａｄｄ、およびその他の基本演算を表すノードから成るとの想定がされる。計算ＤＡＧ（図２）中のノード群の間には、新規アクテビティの生成を表す矢印線（子生成矢印線）と、スレッド／アクテビティ内のノード間の逐次的実行の流れを表す矢印線（継続矢印線）と、同期依存を表す矢印線（依存矢印線）とがある。本明細書では、スケジュール対象の並列計算を計算ＤＡＧという。より高いレベルでは、該並列計算は、アクテビティ群の計算ツリーとして見ることもできる。各アクテビティは、（マルチスレッド・プログラムにおいては）実行のスレッドであり、一組のノード（基本演算）から成る。各アクテビティは、特定の場所に割り当てられる（プログラマが規定した親和性による）。しかして、かかる計算は多場所計算と呼ばれ、ＤＡＧは場所注釈計算ＤＡＧといわれる（図２：ν１…ν２０はノード群を表し、Ｔ１…Ｔ６はアクテビティを表し、Ｐ１…Ｐ３は場所を表す）。計算ＤＡＧ中で用いられる表記記号を図１に説明する。
【００２３】
無制約スペースにおける分散スケジューリング
以下に、本発明の実施形態に整合する、無制約スペースにおける親和性駆動分散スケジューリングの説明を提示する。厳格な場所注釈計算ＤＡＧを考えてみる。下記に説明する分散スケジューリング処理は、アクテビティそれぞれの場所における親和性だけを用いてそれらアクテビティをスケジュールする。場所内でワーク・スティーリングが駆動され、その場所に関連する計算部分グラフの負荷バランスされた実行が可能になる。計算ＤＡＧは、親和性駆動のアクテビティがそれらそれぞれの遠隔場所に押入れられる際に、オンライン方式で場所群を通して幅優先の仕方で展開される。場所内では、計算ＤＡＧのオンライン展開は、効率的スペースおよび時間実行を可能にするため、深度優先の仕方で行われる。各場所に十分なスペースがあることが保証されているので、この処理ではスペース不足に起因する物理的デッドロックは生じ得ない。
【００２４】
各場所は、その場所の専用プロセッサ（作業プロセッサではない）によって管理される新着アクテビティ・バッファ（ＦＡＢ：ＦｒｅｓｈＡｃｔｉｖｉｔｙ Ｂｕｆｆｅｒ）を維持する。各場所における各作業プロセッサは、実行可状態デキューおよび停留バッファを有する（図３参照）。各場所のＦＡＢおよび各作業プロセッサの実行可状態デキューは、並列デキュー実装を用いる。ある遠隔場所に対する親和性を有するアクテビティは、その場所のＦＡＢに押し入れられる。ある場所における遊休作業プロセッサは、同じ場所の他の作業プロセッサからランダムにワークを盗む試みをすることになる（ランダム化されたワーク・スティーリング）。なお、ある場所に押し入れられたアクテビティはその場所の作業プロセッサの間を（ワーク・スティーリングによって）移動することができるが、別の場所には移動できず、しかして常に親和性に従う。例示的分散スケジューリング処理が図４に示されている。
【００２５】
有限スペースにおける分散スケジューリング
実際のシステムの制限されたスペースに起因して、分散スケジューリング処理は、実行時間への影響を最小化し同時にデッドロック・フリーの保証を提供しながら、計算ＤＡＧのオンラインでの幅優先の拡張を制限しなければならない。この処理には、分散方式デッドロック回避スキームが用いられる。システム中の各場所におけるスペースの制約に起因して、アクテビティはスペース不足により停留し得る。該処理は、システム上の、実行のためアクテビティが必要とする、利用可能なスタック・スペースを追跡把握する（簡明化のためヒープ・スペースは考えない）。あるアクテビティｕが必要とするスペースは、その実行に必要な最大スタック・スペース、すなわち（（Ｄｍａｘ−Ｄｕ）・Ｓｍａｘ）によって制限される。前式のＤｍａｘは計算ツリー中の最高アクテビティ深度であり、Ｄｕは計算ツリー中のｕの深度である。該処理は、パス上のより高い深度を有するアクテビティが、より低い深度を有するアクテビティの前に実行を完了することができるようにして、深度ベースの計算実行順序を追跡する。これは分散された仕方で行われる。ワーク・プッシングおよび場所内ワーク・スティーリング双方の過程で、各場所および作業プロセッサは、アクテビティ実行のためのスタック・スペースの利用可能性を点検する。深度ベースの順序付けによって、どの時点においても計算ツリー中の制限された数のパスだけが展開される。この制限はシステム中の利用可能なスペースに基づいている。この分散方式デッドロック回避スキームを用いて、システムは、ある数のパスの実行を保証するスペースを常に有し、この数は計算ＤＡＧの実行の間に変わり得る。
【００２６】
適切な時間およびメッセージの限界を提供するために、該分散方式デッドロック回避スキームは、低通信コストでありながら、同時に該場所注釈計算ＤＡＧに内在的な最大の並列性を示すように設計される。このスキームは、由来厳格な多場所計算に対しデッドロック・フリーな実行を確実にする。あるアクテビティが作業プロセッサのスペース不足に起因して停留した場合、該アクテビティはローカル停留状態になる。あるアクテビティが、遠隔場所に子生成できずに停留した場合、該アクテビティは遠隔停留状態になる。あるアクテビティが同期依存に起因して停留した場合、該アクテビティは依存停留状態になる。
【００２７】
計算ツリーの最大深度（アクテビティの数で表して）Ｄｍａｘは、実行の前に、インプット並列計算中に使われているパラメータから十分正確に見積もり可能であることが想定される。物理的デッドロック・フリーな実行を確実にするため、Ｄｍａｘ値が分散スケジューリング処理の中で用いられる。実行に先立ってＤｍａｘが分かっているという想定は、Ｊａｖａ（Ｒ）ＧｒａｎｄｅＢｅｎｃｈｍａｒｋパッケージのカーネルおよび大型アプリケーションに当てはまる。ＬＵＦａｃｔ（ＬＵ分解）、Ｓｐａｒｓｅ（スパース・マトリックスの乗算）、ＳＯＲ（ｓｕｃｃｅｓｓｉｖｅｏｖｅｒ ｒｅｌａｘａｔｉｏｎ）（有限差分方程式を解くための逐次過緩和）を含めてカーネルに対するＤｍａｘは、インプット・マトリックスの次元または反復の数あるいはその両方から正確に知ることができる。Ｃｒｙｐｔ（国際データ暗号化アルゴリズム）およびＳｅｒｉｅｓ（フーリエ係数解析）などのカーネルについても同様に、Ｄｍａｘは、インプットのアレイ・サイズから明確に定義される。Ｍｏｌｅｃｕｌａｒ Ｄｙｎａｍｉｃｓ、ＭｏｎｔｅＣａｒｌｏ Ｓｉｍｕｌａｔｉｏｎ、および３Ｄ Ｒａｙ Ｔｒａｃｅｒなどのアプリケーションについても同じことがいえる。また、ＳＳＣＡ＃２ベンチマーク中のグラフ・カーネルについても、Ｄｍａｘは、インプット・グラフの△ｇ（直径）（例えば、Ｒ−ＭＡＴグラフに対するＯ（ｐｏｌｙｌｏｇ（ｎ））、ＤＩＭＡＣＳグラフに対するＯ（√ｎ））を見積もることによって知ることができる。
【００２８】
分散データ構造およびプロセス設計
本発明の実施形態による、有限スペース処理に対する分散データ構造を図５に示す。図６は、本発明の実施形態による、有限スペースのスケジューリングに対する分散データ構造を示し、図７は、遠隔子生成および空デキューのケースを示す。
【００２９】
ＡＭＲｅｊｅｃｔＭａｐ（ｉ，ｒ）、ＰｒＱ（ｉ，ｒ）およびＳｔａｌｌＢｕｆｆｅｒ（ｉ，ｒ）がそれぞれ、場所Ｐｉの作業プロセッサＷｉｒに対するＡＭＲｅｊｅｃｔＭａｐ、ＰｒＱおよびＳｔａｌｌＢｕｆｆｅｒを表すものとする。ＢｉｒはＰｒＱ（ｉ，ｒ）およびＳｔａｌｌＢｕｆｆｅｒ（ｉ，ｒ）に対する組み合わされたスペースを表すものとする。ＦＡＢ（ｉ）およびＷｏｒｋＲｅｊｅｃｔＭａｐ（ｉ）がそれぞれ、場所ＰｉにおけるＦＡＢおよびＷｏｒｋＲｅｊｅｃｔＭａｐを表すものとする。ＦｉはＦＡＢ（ｉ）において現在利用可能なスペースを表すものとする。ＡＭ（Ｔ）は、アクテビティＴを子生成するためのアクティブ・メッセージを表すものとする。マップＡＭＲｅｊｅｃｔＭａｐ中の、場所に対応するタプルから得られるリストのヘッドおよび末尾を有するアクテビティＩＤを使った連結リストを用いて、遠隔停留状態にあるアクテビティが追跡される。
【００３０】
計算は、デフォルト場所Ｐ０の作業プロセッサＷ０ｓの計算ＤＡＧの根元（深度１）から開始される。どの時点においても、ある場所の作業プロセッサＷｉｒはアクテビティＴを実行しているか、または遊休中かのいずれかであり得る。詳細なプロセスを図８に提示する。この図には該プロセスのいくつかのケースが示されている。Ｔが場所Ｐｊに遠隔子生成（遠隔子生成の場合については図７を参照）を試みる必要があるとき、該アクテビティは、まず、ＡＭＲｅｊｅｃｔＭａｐ（ｉ，ｒ）中に停留アクテビティが既に所在するかどうかを点検する。停留アクテビティが既にある場合、ＴはＳｔａｌｌＢｕｆｆｅｒ（ｉ，ｒ）に追加され、ＡＭＲｅｊｅｃｔＭａｐ（ｉ，ｒ）中の、Ｐｊに対応するタプル中の末尾からの現在リンクがＴに設定される。タプルの末尾もまたＴに設定される。
【００３１】
ＡＭＲｅｊｅｃｔＭａｐ（ｉ，ｒ）中に場所Ｐｊに対する停留アクテビティがない場合、作業プロセッサは場所Ｐｊにおいて遠隔子生成を試みる。Ｐｊにおいては、専用プロセッサによってＦＡＢ（ｊ）中のスペース利用可能性の点検が行われる。ＦＡＢ（ｊ）が十分なスペースを有する場合、アクティブ・メッセージＡＭ（Ｕ）が遠隔ＦＡＢ（ｊ）中に格納され、ＦＡＢ（ｊ）中の利用可能なスペースが更新されて、Ｔは実行を継続する。十分なスペースがない場合、これに応じてＡＭＲｅｊｅｃｔＭａｐ（ｉ，ｒ）が更新され、ＴはＳｔａｌｌＢｕｆｆｅｒ（ｉ，ｒ）中に置かれる。
【００３２】
作業プロセッサＷｉｒが場所Ｐｊでスペースが利用可能との通知を受信した場合（通知受信のケース）、該プロセッサは、ＡＭＲｅｊｅｃｔＭａｐ（ｉ，ｒ）からＰｊに対するタプルを得、アクティブ・メッセージとヘッド・アクテビティとをＰｊに送信する。Ｐｊでは、ＷｏｒｋＲｅｊｅｃｔＭａｐ（ｊ）が更新される。また、Ｗｉｒは、タプル中の連結リストのリンクを更新することによってＰｊに対するタプルを更新する。遠隔滞留されたアクテビティは実行可能化され、ＰｒＱ（ｉ,ｒ）中に置かれる（アクテビティ実行可能化のケース）。
【００３３】
スペース限界およびデッドロック・フリーの論証
以下に、上記定理の論証の補題およびスケッチについて述べる（詳細については付属書Ｃ２を参照）。ここでは、スペース制約下での実行のためのスタック・スペースを考察するので、下記の補題／論証に、計算ツリー中のアクテビティの深度が使われる。アクテビティは一つの実行パスに沿って最大（Ｄｍａｘ−ｄ）個の停留アクテビティを生成することができ、各スタック・フレームはＳｍａｘバイトに制限されているので、深度ｄにあるアクテビティは、実行のため（（Ｄｍａｘ−ｄ）・Ｓｍａｘ）より少ない量のスタック・スペースを必要とする。処理の過程で、実行のためアクテビティを取り上げる前に（空デキューのケース）、またはＦＡＢ中に遠隔アクティブ・メッセージを置く前に（遠隔子生成のケース）、このスタック・スペース（（（Ｄｍａｘ−ｄ）・Ｓｍａｘ））が点検される。アクティブ・メッセージが受諾されるときには、ＦＡＢ中にＳｍａｘのスペースが留保され、遊休作業プロセッサがそのアクティブ・メッセージを実行のため取り上げるときに、ＦＡＢからＳｍａｘのスペースが払い出される。アクテビティが停留された場合（アクテビティ停留のケース）、ＢｉｒからＳｍａｘスペースが取り去られ、一方、アクテビティが実行のため取り上げられる場合（空デキューのケース）、ＢｉｒにＳｍａｘスペースが加えられる。
【００３４】
補題１：深度ｄ’を有するアクテビティを受諾する場所または作業プロセッサは、ｄ’＋１以上の深度のアクテビティを実行するスペースを有する。
【００３５】
補題２：深度Ｄｍａｘにあるアクテビティを実行するスペースが常に存在する。
【００３６】
補題３：（全計算ツリーの実行が終了する前の）どの時点においても、計算ツリー中の少なくとも一つのパスの実行が保証されている。
【００３７】
論証：ここでは、深度ベースの順序付け特性（スケジューリングの間有効）が用いられる。場所Ｐ１が実行中の最高深度アクテビティをｄ１とする。このとき、補題１により、該場所は、ｄ２＞ｄ１となるｄ２深度のアクテビティを実行／受諾することを保証されている。従って、この深度ｄ１のアクテビティが、ローカルに子アクテビティを生成したいと望む場合（ローカル子生成のケース）、何の問題もなく生成することができる（補題が当てはまる）。上記の外に、該アクテビティが、遠隔場所Ｐ２に子アクテビティを生成したいと望み、その場所がそれを拒否した場合を考えてみる（遠隔子生成およびアクテビティ停留のケース）。これに対し２つのケースがある。第一のケースにおいては、Ｐ２は、おそらくは深度ｄ１には達していない、停留していないアクティブな実行パスを有する（補題が当てはまる）。第二のケースにおいては、Ｐ２は、少なくとも深度ｄ１＋１のアクテビティを（該場所の作業プロセッサが）実行しているか（補題が当てはまる）、あるいは、停留状態にある、かかるアクテビティを有している。この停留状態が深度停留状態である場合、より高い深度のアクテビティがこの場所または別の場所で実行されている（補題が当てはまる）。この停留状態がローカル停留状態である場合、その作業プロセッサが実行しているより高い深度の別のアクテビティがなければならない（補題が当てはまる）。しかしながら、該停留状態が遠隔停留状態であれば、このアクテビティが待っている遠隔場所に同じ論旨が適用され、このリソース依存連鎖中のアクテビティの単調に増加する深度が見られることになる。この連鎖を追跡すれは、上記で説明した諸ケースにより、あるいは計算ツリー中の依存性なく実行可能な葉に到達することによって、最終的な実行パスに行き当たることになる（補題２）。しかして、計算ツリーに属する場所群を通してアクティブに実行しているパスが存在することが分かる。従って、各時間瞬間に、実行することを保証されたパスがシステム中に存在する。実際は、どの瞬間にも実行中の複数のパスがあり得、これはシステムおよび計算ツリー中の利用可能なスペース如何による。
【００３８】
定理１（葉実行の保証）：該スケジューリングは、計算の間、葉実行の保証プロパティを維持する。葉実行の保証は、計算ツリー中の各ノードが葉となって実行されることを確実にする。
【００３９】
証明：以下に、計算ツリー中のアクテビティの深度に関する帰納法による証明を記す。
【００４０】
基底ケース（アクテビティの深度はＤｍａｘである）：
【００４１】
補題３によって、葉へのパスは保証される。深度はＤｍａｘにあるアクテビティは、常に葉であり、他のアクテビティへの依存を有さない。従って、Ｄｍａｘに生じたアクテビティは（補題２により）常に実行される。
【００４２】
帰納法の仮定：ｄおよびより高い深度にあるアクテビティは全て葉となり実行されることを保証されていると仮定する。
【００４３】
帰納ステップ：深度ｄ−１の全てのアクテビティが葉となり実行される保証をされていることを論証する必要がある。帰納法の仮定により、ｄおよびより高い深度にあるアクテビティについては終了しているものとする。上記終了がされていれば、デキュー中に残っているアクテビティがある場合は（それらは深度（ｄ−１）であり）、葉となって実行のために取り上げられる。一方、デキューが空になっている場合（空デキューのケース）は、ＰｒＱおよびＦＡＢの両方から、最も深い深度のアクテビティが実行のため取り上げられる。かくて、深度（ｄ−１）にあるアクテビティの実行が開始される。さらに、計算ツリー中の依存は子孫から祖先へのものである（由来厳格な計算）。従って、ｄ以上の深度のアクテビティが実行を完了したとき、依存停留または遠隔停留状態にあった深度（ｄ−１）のアクテビティが確実に葉となって実行可能にされる。しかして、これらはそれぞれの作業プロセッサのＰｒＱの中に置かれる（アクテビティ実行可能化のケース）。深度（ｄ−１）にあるアクテビティが遠隔停留状態であったとすれば、深度ｄに子アクテビティを生成するため、阻止されていたアクティブ・メッセージが遠隔場所に送信される（通知受信のケース）。帰納法の仮定によって、深度ｄの全アクテビティは終了しているので、この処理は既に以前に行われてしまっている。ｄ深度のアクテビティが終了した時点で、デキューが空でなく、ＰｒＱ中に深度（ｄ−１）のアクテビティがあると仮定する。これらのアクテビティは、デキュー中の現在の実行パスが終了するまで待つ。次いで、葉となったこれらのアクテビティは実行のため取り上げられる（なぜなら、これらはＰｒＱの中で最高の深度を持ち最高の優先度を有しているからである）。従って、深度（ｄ−１）にある全てのアクテビティも、葉となって実行されることを保証されている。
【００４４】
定理２：図８のプロセスを使ってスケジュールされた由来厳格な計算は、場所あたりのスペースとしてＯ（ｍ・（Ｄｍａｘ・Ｓｍａｘ＋ｎ・Ｓｍａｘ＋Ｓ１））バイトを取る。
【００４５】
証明スケッチ：作業プロセッサ(プロセッサ)当たりの ＰｒＱ、ＳｔａｌｌＢｕｆｆｅｒ、ＡＭＲｅｊｅｃｔＭａｐ、およびデキューは、場所当たり合計でＯ（ｍ・（Ｄｍａｘ・Ｓｍａｘ＋ｎ・Ｓｍａｘ＋Ｓ１））バイトを取る。ＷｏｒｋＲｅｊｅｃｔＭａｐおよびＦＡＢは、それぞれ場所当たり合計Ｏ（ｍ・ｎ＋Ｄｍａｘ）およびＯ（Ｄｍａｘ・Ｓｍａｘ）のスペースを取る（前に説明した）。該スケジューリング方策は、有限スペースでデッドロック・フリーな実行を確実にするためスペース保持手段を用いる。この方策の基本的狙いは、各パスが最大Ｄｍａｘの深度まで進むことがあり得るとの前提で、利用可能なスペースに収容できるだけの範囲内でツリーの幅探索が行われるのを確実にすることである。
【００４６】
該方策は、場所毎の作業プロセッサ当たり利用可能なスペースが、少なくともＤｍａｘ・Ｓｍａｘあるとの初期条件で開始される。ある作業プロセッサに対してスケジュールされる一切のアクテビティは、その作業プロセッサのＰｒＱおよび ＳｔａｌｌＢｕｆｆｅｒ中の利用可能なスペースを超えないことが確実にされている。デキュー中のアクテビティだけが停留され得、実行の前に、停留アクテビティの最大数に対し十分なスペースが利用可能であることが点検されているので、上記が成立する。さらなる詳細については付属書Ｃ．２を参照。
【００４７】
時間およびメッセージの計算量の解析
ここでは、無制約および有限スペース双方の分散スケジューリング処理に対する時間およびメッセージの計算量の解析の概要を説明する。詳細については付属書（ＡおよびＢ）を参照。この解析は、作業プロセッサによる実行中のスロー（ｔｈｒｏｗ）の数に基づく。各スローは、作業プロセッサ（ワークを持たないプロセッサ）による別の作業プロセッサ（ビクチム）または同じ場所のＦＡＢ、のいずれかからアクテビティを盗む試みを表す。
【００４８】
補題２．１：無制約スペース・スケジューリング処理によって実行されている、場所当たりのワークＴ１ｋを有する厳格な場所注釈計算ＤＡＧを考えてみる（図４）。このとき、場所ｋに対する実行（完了）時間は、Ｏ（Ｔ１ｋ／ｍ＋Ｑｒｋ／ｍ＋Ｑｅｋ／ｍ）であり、Ｑｒｋは場所ｋに少なくとも一つの実行可状態のノードがあるときのスローの数を表し、Ｑｅｋは場所ｋに実行可状態のノードがないときのスローの数を表す。全計算の実行時間の下限はＯ（ｍａｘｋ（Ｔ１ｋ／ｍ＋Ｑｒｋ／ｍ））であり、上限はＯ（Σｋ（Ｔ１ｋ／ｍ＋Ｑｒｋ／ｍ））となる。
【００４９】
証明スケッチ：（トークン・ベースの計数法）各場所に置かれた、トークンを入れる３つのバケツを考える。ある場所の作業プロセッサが計算ＤＡＧのあるノードを実行するときトークンが入れられるワーク・バケツと、ある作業プロセッサが盗窃を試み、その場所に少なくとも一つの実行可状態ノードがあるときトークンが入れられる実行可状態ノード・スロー・バケツと、ある作業プロセッサが盗窃を試み、その場所に実行可状態ノードがないときトークンが入れられるゼロ・ノード・スロー・バケツ（場所にワークがないときの待ち時間をモデルしている）との３つのバケツである。ある場所の合計完了時間は、これら３つのバケツ中のトークンを数え、ランダム化ワーク・スティーリングを使い、場所内の負荷バランスされた実行を考察することによって計算することができる。実行時間の上限および下限は、計算ＤＡＧの構造および生成されたオンライン・スケジュールの構造の構造から得られる（付属書Ａ）。
【００５０】
次に、実行可状態ノード・スロー・バケツ中のトークンの数の限度が、ポテンシャル関数ベースの解析を使って計算される。独特の寄与は、場所内ワーク・スティーリングおよび遠隔場所への親和性駆動ワーク・プッシングの双方を用いる、図４に提示の多場所分散スケジューリング・アルゴリズムに対する時間計算量およびメッセージ計算量の上限および下限の証明にある。ポテンシャル関数ベースの解析のため、各実行可状態ノードｕには、それが実行に従事しているかいないかによって、ポテンシャル３２ｗ（ｕ）−１または３２ｗ（ｕ）を割り当てられる（上記のｗ（ｕ）＝Ｔ∞，ｎ−深度（ｕ））。実行可状態にないノードは全て０ポテンシャルを持つことになる。ステップｉにおけるシステムの合計ポテンシャルをφｉで表し、φｉ（Ｄｉ）によって、何らかの実行可状態のノードを有する全てのデキューのポテンシャルを表す。重要な考え方は、実行の過程で、ポテンシャルφｉが
【００５１】
【数１】
2011096247.tif 000003
【００５２】
（根元ノードのポテンシャル）から０（実行可状態ノードが残されていない）まで単調に減少し、これが有限な数のステップにおいて起こることを示すことである。
【００５３】
定理２．１：図４の親和性駆動多場所分散スケジューリング処理によって実行されている、場所ｋ当たり、Ｔ１ｋで表すワークを有する、厳格な場所注釈計算ｗＤＡＧを考える。実行時間の下限期待値は、Ｏ（ｍａｘｋ（Ｔ１ｋ／ｍ＋Ｔ∞ｋ））である。さらに、任意のε＞０に対し、実行時間の下限は、少なくとも１−εの確率で、Ｏ（ｍａｘｋＴ１ｋ／ｍ＋Ｔ∞，ｎ＋ｌｏｇ（１／ε））である。同様な確率的上限が存在する。
【００５４】
証明スケッチ：下限に対し、スローの数が（場所に少なくとも一つの実行可状態ノードがある場合）実行をフェーズに分けることによって解析される。各フェーズはＯ（Ｐ＝ｍｎ）のスロー（場所当たりＯ（ｍ）のスロー）を有する。一定の確率で、フェーズが一定のファクタによってポテンシャル低下を生じさせているのを示すことができる。さらに正確には、フェーズｉとｉ＋１との間で、Ｐｒ｛（φｉ−φｉ＋１）≧１／４・φｉ｝＞１／４となる（詳細は付属書Ｂ参照）。ポテンシャルは、
【００５５】
【数２】
2011096247.tif 000004
【００５６】
からスタートして０で終了し、積分値を取るので、うまく行くフェーズの数は最大でも（２Ｔ∞，ｎ−１）ｌｏｇ４／３３＜８Ｔ∞，ｎである。しかして、場所当たりのスローの期待数はＯ（Ｔ∞，ｎ・ｍ）によって制限され、（チェルノフの不等式を使えば）少なくとも１−εの確率で、スローの数は、Ｏ（Ｔ∞，ｎ・ｍ）＋ｌｏｇ（１／ε）となる。補題２．１を適用すれば、実行時間の下限期待値は、Ｏ（ｍａｘｋ（Ｔ１ｋ／ｍ）＋Ｔ∞，ｎ）となる。詳細な証明および確率限界を付属書Ｂに示す。
【００５７】
上限に関し、各場所における計算の部分グラフの実行を考えてみる。場所当たりの、実行可状態ノード・スロー・バケツ中のスローの数は、同様にＯ（Ｔ∞ｋ・ｍ）によって制限され得る。さらに、最後の実行を完了した場所は、他の全ての場所のワーク・バケツおよび実行可状態ノード・スロー・バケツ中のトークンと等しい数のゼロ・ノード・スロー・バケツ中のトークンを有することになり得る。
【００５８】
従って、その場所に対する完了時間は、全計算ＤＡＧの実行時間でもあり、Ｏ（Σｋ（Ｔ１ｋ／ｍ＋Ｔ∞ｋ））となる。確率的上限は、同様にチェルノフの不等式を使って算定することができる。
【００５９】
定理２．２：親和性駆動分散スケジューリング処理（図４）による、クリティカル・パス長さＴ∞，ｎを有する、厳格な場所注釈計算ＤＡＧの実行を考える。このとき、場所群を通して通信されるバイトの総計数は、Ｏ（Ｉ（Ｓｍａｘ＋ｎｄ））であり、ある場所内で通信されるバイトの合計数の下限はＯ（ｍ・Ｔ∞，ｎ・Ｓｍａｘ・ｎｄ）の期待値を有する。上記のｎｄは子孫から親への依存の矢印線の最大数であり、Ｉは一つの場所からある遠隔場所への遠隔子生成の数である。さらに、任意のε＞０に対し、少なくとも１−εの確率で、場所当たりの通信オーバーヘッドの下限は、Ｏ（ｍ・ｎ・（Ｔ∞＋ｌｏｇ（１／ε））・ｎｄ・Ｓｍａｘ）となる。同様にメッセージの上限が存在する。
【００６０】
場所間および場所内通信の通信計算量は、実行過程での遠隔子生成および場所内のワーク・スティーリングのためのスローをそれぞれ考察することによって導出することができる。詳細な証明は付属書Ｃに示す。
【００６１】
有限スペースのスケジューリング処理は、拒否された子生成に対して一定の作業を行うが、ＦＡＢ（並列優先キュー）操作のため追加のｌｏｇ（Ｄｍａｘ）ファクタを費消する。しかして、有限スペース・スケジューリング処理の時間計算量の下限期待値は、Ｏ（ｍａｘｋ（Ｔ１ｋ／ｍ）・ｌｏｇ（Ｄｍａｘ）＋Ｔ∞，ｎ）となる。時間計算量の上限の解析には、リソース駆動の待ち時間モデル設定が関わって来、本明細書では取り扱わない。場所間メッセージの計算量は、拒否された遠隔子生成の取扱いおよびスペース利用可能性の通知のために一定量の作業があるので、定理２．２と同様である。
【００６２】
本明細書で説明された本発明のさまざまな例示的実施形態を従来の研究と対比するため、以下に簡潔な説明を提示する。従来の研究は、由来厳格なＸ１０計算に対するワーク・スティーリングのフレームワークを拡張し、ＳＭＰ展開に対するデッドロック・フリーなスケジューリングを構築した。従来研究は、ドッペルゲンガー実行モードを使いながら、単一プロセッサ・クラスタ展開上の有限リソースを用いる、デッドロック・フリーな実行を実証した。しかしながら、この研究は、このフレームワーク中でのワーク・スティーリングを考慮せず、パフォーマンス限界の提示も行っていない。ドッペルゲンガー実行モードは、一般的に無原則に高いコストを招きかねない。これに対し、本発明の実施形態は、アクティブ・メッセージ・ネットワークを用いた、ＳＭＰクラスタ展開上の親和性駆動スケジューリングを考案している。さらに、本発明の実施形態は、場所内および場所間ワーク・スティーリングを含み、デッドロック・フリー保証のされた、スペースおよびパフォーマンス限界を実証している。
【００６３】
他の従来研究は、マルチプロセッサＨＳＭＳ（ｈａｒｄｗａｒｅ−ｃｏｎｔｒｏｌｌｅｄ ｓｈａｒｅｄ ｍｅｍｏｒｙ ｓｙｓｔｅｍ（ハードウエア制御共有メモリ・システム））上の入れ子並列計算を考案し、キャッシュ・ミスの数および実行時間の上限を実証した。また、該研究は、コスト高な各スレッド／アクテビティの同期化をもたらす、ローカル性誘導式ワーク・スティーリング・アルゴリズムを提示している。しかしながら、アクテビティをそれらが親和性を有するプロセッサで実行することはできない。これに対し、本発明の実施形態は、多場所構成における親和性駆動スケジューリングを考案し、デッドロック・フリーな実行を保証しながら、有限スペースの下でのパフォーマンス限界を提示する。
【００６４】
さらなる他の従来研究は、ポテンシャル関数技法を用いて、多様なカーネル・スケジュールの下における一般的なマルチスレッド計算に対する、多重プログラム化ＳＭＰ環境でのノンブロッキング・ワーク・スティーリング・アルゴリズムのパフォーマンス限界を提示した。しかしながら、このアプローチは、ローカル性誘導のスケジューリングを考慮していない。これに対し、本発明の実施形態は、有限リソースの下でデッドロック・フリー性を保証し、パフォーマンス解析にポテンシャル関数技法を活用しつつ、専用モードで実行されるアプリケーション（単独型）に対する親和性駆動多場所ワーク・スティーリング処理を考案している。
【００６５】
まださらなる従来研究は、小規模のＳＭＰ群への「ローカル性指向」負荷分散達成を試みる、ワークディーリング技法を導入した。これは、コスト高の比較交換演算なしに、大域的にバランスされたやり方で、ワークをプロセッサに分配するための低オーバーヘッドのメカニズムを有する。本発明の各種実施形態は、プログラマが、負荷バランスを考慮し最適なパフォーマンスが得られるようなやり方で、プログラム中の場所注釈を規定することを前提としている。本発明の実施形態によれば、ある場所に対する親和性を有するアクテビティは、デッドロック・フリー性を保証されながらその場所での実行を保証される。
【００６６】
まださらなる研究は、必要スペースの少ない深度優先スケジューラを使い、低廉なスケジューリング・オーバーヘッドとワーク・スティーリングの良好なローカル処理とを組み合わせた、共有メモリ・マシン用のスペース効率的なスケジューリング・アルゴリズムを提示している。この研究は、ローカル処理のため、計算ＤＡＧ中で近接したスレッドのスケジューリングの発見的問題解決方式を同一のプロセッサ上で用いている。本発明の実施形態は、多場所構成を考え、プログラマが場所注釈計算における親和性を規定することを前提としている。
【００６７】
まださらなる研究は、多重プログラム環境における、２レベル適応マルチプロセッサ・スケジューリングを研究した。この研究は、プロセッサの対する要求の形でジョブ・スケジューラに連続的な並列処理フィードバックを提供し、トリム解析を使ってパフォーマンス限界を得る、フォーク・ジョイン（ｆｏｒｋ−ｊｏｉｎ）マルチスレッド・ジョブのための、ランダム化ワーク・スティーリング・スレッド・スケジューラを提示した。しかしながら、この研究はローカル処理誘導のスケジューリングを考慮しなかった。本発明の各種実施形態は、専用モードの実行を想定しているが、多重プログラム・モードに拡張することもできる。
【００６８】
図１５は、各種のスケジューリング・アプローチと本発明の実施形態によるものとの間の例示的比較を示す。本発明の実施形態によるスケジューリングへのアプローチは、ＤＳＡ−Ｉ（無制約スペース用）およびＤＳＡ−ＩＩ（有限スペース用）として示されている。使われている標記は以下による。
●  列「スケジューリング・アルゴリズム」は、ＷＳ（Ｗｏｒｋ Ｓｔｅａｌｉｎｇ（ワーク・スティーリング））、ＷＤ（ＷｏｒｋＤｅａｌｉｎｇ（ワーク・ディーリング））、ＤＦＳ（Ｄｅｐｔｈ Ｆｉｒｓｔ Ｓｅａｒｃｈ（深度優先探索））、およびＷＰ（Ｗｏｒｋ Ｐｕｓｈｉｎｇ（ワーク・プッシング））の値を有する。
●  列「親和性」駆動は、Ｙ（はい）、Ｎ（いいえ）、およびＬ（限定された範囲）の値を有する。
●  列「計算の性質」は、ＦＳ（ｆｕｌｌｙ−ｓｔｒｉｃｔ（親子厳格））、Ｇ（ｇｅｎｅｒａｌ（一般））、ＮＰ（ｎｅｓｔｅｄｐａｒａｌｌｅｌ（入れ子並列））、ＩＤＰ（ｉｔｅｒａｔｉｖｅ ｄａｔａ ｐａｒａｌｌｅｌ（反復データ並列））、およびＴＳ（ｔｅｒｍｉｎａｌｌｙ ｓｔｒｉｃｔ（由来厳格））の値を有する。
●  列「ＭＰかＳＰか」は、多場所（ｍｕｌｔｉ−ｐｌａｃｅ（ＭＰ））アルゴリズムかまたは単一場所（ｓｉｎｇｌｅｐｌａｃｅ（ＳＰ））アルゴリズムかを示す。
●  列「ＤＭかＭＰＭか」は、専用モード（ｄｅｄｉｃａｔｅｄ ｍｏｄｅ （ＤＭ））環境かまたは多重プログラムモード（ｍｕｌｔｉ−ｐｒｏｇｒａｍｍｅｄｍｏｄｅ（ＭＰＭ））環境かを示す。
●  列「同期オーバーヘッド」は、Ｌ（ｌｏｗ（低））、Ｍ（ｍｅｄｉｕｍ（中間））およびＨ（ｈｉｇｈ（高））の値を有する。
●  列「ＤＧモード」は、多場所構成中にドッペルゲンガー・モードが用いられているかどうかを示す。
●  列「ＩＡＰか両方か」は、場所内スティーリング（ｉｎｔｒａ−ｐｌａｃｅｓｔｅａｌｉｎｇ（ＩＡＰ））だけがサポートされているのか、場所間および場所内スティーリングの両方がサポートされているのかを示す。
●  最後の列は、それぞれのスケジューリング・アプローチで、デッドロック・フリー性、スペース限界、および時間限界が提供されているかどうかを示す。
【００６９】
場所不問のアクテビティ
該ラン・タイム・システムは、メニーコア・超並列アーキテクチャ上に、大型ハイブリッド並列計算のオンライン分散スケジューリングを備える必要がある。本明細書では、事前規定された配置を有するアクテビティ（スレッド）を親和性注釈付きアクテビティという。加えて、該並列プログラム中には、どの場所でも実行可能なアクテビティ（スレッド）がある。かかるアクテビティを、場所不問アクテビティという。親和性注釈付きアクテビティおよび場所不問アクテビティの両方を有する並列計算をハイブリッド並列計算という。
【００７０】
本発明では、場所不問アクテビティをインプットされるハイブリッド計算ＤＡＧ中に入れることが可能である。この一般化は、プログラマがより多くの並列アプリケーションを容易に表現することを可能にする。さらに、本発明は、場所間優先化ランダム・ワーク・スティーリングを組入れて、場所群を通した自動的動的な負荷バランスを提供する、新規の分散スケジューリング処理を提供する。適切に選択された確率分布を使った、場所群を通しての優先化ランダム・ワーク・スティーリングが効率的であることが実証されている。さらに、これは、場所間の距離がさまざまな場合（例、３Ｄトーラス相互接続）、低廉な平均通信コストをもたらす。本発明の実施形態は、ハイブリッド並列計算の効率的スケジューリングのため、従来研究中の、デッドロック・フリーな実行のための分散デッドロック回避方策と、時間およびメッセージ計算量の実証とを活用している。本発明の各種実施形態のいくつかの主要な態様には以下が含まれる。
【００７１】
第一に、場所当たり無制約な（十分な）スペースを想定した、厳格な多場所ハイブリッド並列計算のためのオンライン多場所分散スケジューリング・アルゴリズムが提供される。この処理は、（ａ）場所内ワーク・スティーリング、（ｂ）親和性注釈アクテビティに対する遠隔場所ワーク・プッシング、および（ｃ）場所不問アクテビティに対する場所群を通しての優先化ランダム・ワーク・スティーリングを組み込んでいる。後記で、場所群を通した優先化ランダム・スティーリングが効率的であることを示す。また、スケジューリング・アルゴリズムの時間およびメッセージ計算量の限界も本明細書中に提示する。
【００７２】
第二に、場所当たり制限されたスペースに対する、証明可能な物理的デッドロック・フリー実行を伴った、由来厳格な多場所ハイブリッド計算のための新規な分散スケジューリング処理が提供される。
【００７３】
プロセス設計：各場所は、その場所のインタフェース・プロセッサに管理される、一つの新着アクテビティ・バッファ（ＦＡＢ）を維持する。ある遠隔場所に対する親和性を有するアクテビティは、その場所のＦＡＢに押し入れられる。各場所の各作業プロセッサは、（ａ）場所不問の実行可状態アクテビティを包含するＡＰＲデキュー、（ｂ）親和性注釈付き実行可状態アクテビティを包含するＡＦＲデキュー、および（ｃ）停留アクテビティを包含するＳｔａｌｌＢｕｆｆｅｒを有する（図９参照）。各場所のＦＡＢ並びに各作業プロセッサのＡＦＲデキューおよびＡＰＲデキューは、並列デキュー・データ構造を用いて実装される。また、各場所は、盗窃可状態の場所不問アクテビティを有する作業プロセッサのリストである、作業プロセッサ・リスト・バッファ（ＷＬＢ：ＷｏｒｋｅｒＬｉｓｔ Ｂｕｆｆｅｒ）も維持する。ＷＬＢは並列連結リストとして実装され、インタフェース・プロセッサによって維持される。ＷＬＢは、遠隔スティーリングの助力をし、この場所からアクテビティを盗もうとする遠隔の作業プロセッサは、ＷＬＢから、盗窃の対象とできる作業プロセッサについての情報を得る。該分散スケジューリング・アルゴリズムを、図１０に示す。
【００７４】
時間計算量解析：システム中の実行可状態ノードに対する、ポテンシャル関数を使った時間計算量解析の詳細は従来研究にあるのと同様である。以下に、時間およびメッセージの計算量の簡潔な直感的説明を示す。本発明の実施形態に独特の寄与は、（ａ）適切な確率密度関数を使った、優先化ランダム場所間ワーク・スティーリングが効率的であることの証明、並びに、（ｂ）本明細書で提示する多場所分散スケジューリング・アルゴリズムに対する時間計算量およびメッセージ計算量の下限および上限の証明が、（１）場所内ワーク・スティーリングと、（２）遠隔場所ワーク・スティーリングと、（３）遠隔場所親和性駆動ワーク・プッシングと、を含んでいることである。
【００７５】
以降、スローとは、作業プロセッサ（ワークのないプロセッサ）によるアクテビティを盗もうとする試みをいう。これは、別のローカル作業プロセッサ（ビクチム）からアクテビティが盗まれるときには場所内・スローとなり得、アクテビティが遠隔場所から盗まれるときは遠隔場所スローとなり得る。ポテンシャル関数ベースの解析のため、各実行可状態ノードｕには、それが実行に従事しているかいないかによって、ポテンシャル３２ｗ（ｕ）−１または３２ｗ（ｕ）が割り当てられる（上記のｗ（ｕ）＝Ｔ∞，ｎ−深度（ｕ））。ステップｉにおけるシステムの合計ポテンシャルをφｉで表し、φｉ（Ｄｉ）によって、一部に実行可状態のノードを有する、全ＡＰＲデキューおよびＡＦＲデキューのポテンシャルを表す。
【００７６】
優先化ランダム場所間ワーク・スティーリング：以下に、適切に選択された場所群を通した確率分布を用いた、距離優先化場所間ワーク・スティーリングが効率的に機能することを証明する。場所群を通した２Ｄトーラス相互接続を考える。あるプロセッサが盗窃を試みる場所を開始場所ということにする。開始場所の周囲の場所群をリングと見なすことができる。開始場所からより遠くの距離にあるリングに移動すると、リングのサイズが大きくなる。すなわち、開始場所からより遠方のリング中には、開始場所により近いリングよりも多くの場所が存在する。（図１１参照）。開始場所からの遠隔盗窃の試みにおいて、同一のリング中の場所群は等しい確率で選択される。
【００７７】
この確率は、リングの開始場所からの距離の増加とともに低減するが、全場所の全プロセッサに対するプロセッサ選択確率の合計は当然ながら１に等しい。このシナリオをモデル化するために、Ｐ個のボールが、独立的に、不規則ランダムにＰ個のビンに投げ入れられる、一般化された「ボールおよび重み付けビン（Ｂａｌｌｓａｎｄ Ｗｅｉｇｈｔｅｄ Ｂｉｎｓ）」ゲームを考える。マルコフの不等式を使い、失敗する盗窃試みの確率に対する上限が導かれる。
【００７８】
補題３．１．ボールおよび重み付けビン・ゲーム：２Ｄトーラス・トポロジ中に配置されたｎ個の場所があるとする。少なくともＰ個のボールが、独立的に、不規則ランダムにＰ個のビンに投げ入れられたとし、ｉ＝１，…，Ｐで、ビンｉは重みＷｉを有するとしよう。合計重みは、Ｗ＝Σ１≦ｉ≦ＰＷｉとなる。各ビンｉに対し、下記のようにランダム変数Ｘ（ｉ）を定義する。
どれかのボールがビンｉに入れば、Ｘ（ｉ）＝Ｗｉ
何も入らなければ、Ｘ（ｉ）＝０
開始場所から最後のリングまでの距離をｌｍａｘとする。リングを選択する確率分布を以下により定義する。盗窃要求元から距離ｌｍａｘにある最終リングを選択する確率をγ／ｌｍａｘと表すものとし、０＜γ＜１である。全プロセッサを通したプロセッサ選択の確率の和が１になるようにして、他のリングを選定する確率が適切に選ばれる。（例えばγ＝３／４とする。ここで、ｌｍａｘ／２の内側にあるリング群の各々に、５／（４ｌｍａｘ）の確率を、ｌｍａｘ／２の外側にあるリング群の各々に３／（４ｌｍａｘ）の確率を割り当てる。
Ｘ＝Σ１≦ｉ≦ＰＸ（ｉ）とし、βを０＜β＜１の範囲とすれば、
ＰｒＸ≧β・Ｗ＞１−１／（（１−β）ｅγ／２）。
【００７９】
証明：開始場所から距離ｌにあるリングは８ｌ個の場所を有する。各場所はｍ個のプロセッサを有するので距離ｌのリングは８ｌｍ個のプロセッサを有し、それらプロセッサの各々は、ボールがそのプロセッサ（ビン）に入る等しい確率を有する。
【００８０】
次に、各ビンｉに対し、ランダム変数 Ｗ（ｉ）−Ｘ（ｉ）を考える。この変数は、ボールがビン（ｉ）に到達しなければＷ（ｉ）の値を取り、到達すれば０値を取る。しかして、
【００８１】
【数３】
2011096247.tif 000005
【００８２】
これから、Ｅ［Ｗ−Ｘ］≦Ｗｅγ／２
従って、マルコフの不等式から：
Ｐｒ｛（Ｗ−Ｘ）＞（１−β）Ｗ｝＜Ｅ［Ｗ−Ｘ］／（（１−β）・Ｗ）
⇒Ｐｒ｛Ｘ＜β・Ｗ｝≦１／（１−β）・ｅγ／２
⇒Ｐｒ｛Ｘ≧β・Ｗ｝＞１−１／（（１−β）ｅγ／２）。
【００８３】
ボールがどのビンに行くかの選択が傾斜確率であるのに起因して、試みが成功する確率が一様確率の場合に比べて低下しているのが分かる。リングの距離が確率変動に基づいて選ばれたとしても、実際のプロセッサの距離ベースの確率変動も、適切な確率分布を使って同様に解析することができる。β＝１／５，γ＝３／４を選択することによって、システムに亘るＯ（ｍｎ）回の遠隔場所スローの後で、φｉ（Ｄｉ）中の実行可状態の場所不問アクテビティのポテンシャルが１／１６だけ減少するのを示すことができる。時間およびメッセージの計算量の下限および上限は下記の定理で与えられる。詳細な証明は従来研究中の解析を拡張して得られる。
【００８４】
定理３．１：（前述の）分散スケジューリング処理によって実行されている、場所Ｐｋに対するワーク（Ｔ１ｋと呼ぶ）を有する厳格な多場所ハイブリッド計算ＤＡＧを考える。該計算のクリチカルパス長さをＴ∞，ｎとする。実行時間期待値の下限はＯ（ｍａｘｋＴ１ｋ／ｍ＋Ｔ∞，ｎ）であり、上限はＯ（Σｋ（Ｔ１ｋ／ｍ＋Ｔ∞ｋ））である。さらに、任意のε＞０に対し、実行時間に対する下限は、少なくとも１−εの確率で、Ｏ（ｍａｘｋＴ１ｋ／ｍ＋Ｔ∞，ｎ＋ｌｏｇ（１／ε））となる。同様な確率的上限が存在する。
【００８５】
定理３．２：（前述の）分散スケジューリング・アルゴリズムによる、クリチカルパス長さＴ∞，ｎを有する厳格な多場所ハイブリッド計算ＤＡＧの実行を考えてみる。このとき、場所群を通して交信されるバイトの合計数の期待値は、Ｏ（（Ｉ・Ｓｍａｘ・ｎｄ）＋ｍ・Ｔ∞，ｎ・Ｓｍａｘ・ｎｄ）である。さらに、ある場所内で交信されるバイトの数の下限の期待値は、Ｏ（ｍ・Ｔ∞，ｎ・Ｓｍａｘ・ｎｄ）である。前式のｎｄは、子孫から親への依存矢印線の最大数であり、Ｉは一つの場所からある遠隔場所への遠隔子生成の数である。さらに、任意のε＞０に対し、少なくとも（１−ε）の確率で、場所当たりの場所内通信オーバーヘッドの下限は、Ｏ（ｍ・（Ｔ∞，ｎ＋ｌｏｇ（１／ε））・ｎｄ・Ｓｍａｘ）となる。同様にメッセージの上限が存在する。
【００８６】
有限スペースにおけるハイブリッド計算の分散スケジューリング：実際のシステムの限定されたスペースのため、分散スケジューリング・アルゴリズムは、実行時間への影響を最小化しつつ同時にデッドロック・フリー保証を与えながら、計算ＤＡＧのオンライン幅優先拡張を制限しなければならない。限定されたスペース制約という要因を背景として、この分散オンラインスケジューリング・アルゴリズムは、由来厳格な多場所ハイブリッド計算に対しデッドロック・フリー性を保証している。システム中の各場所におけるスペース制約があるため、該アルゴリズムは、物理的デッドロック・フリー性を確実にするため、各作業プロセッサおよび場所のスペース利用可能性を追跡把握している必要がある。該アルゴリズムは、現在のパス中の葉への残りのパスを実行するのに十分なスペースがある場合にだけ、遠隔アクテビティ・プッシング、場所間スティーリング、および場所内スティーリングが実施されることを確実にすることによって、上記を行っている。この利用可能なスペースの追跡およびＦＡＢから実行するための深度ベースのアクテビティの順序付けの使用は、分散されたデッドロック回避の助力となる。あるアクテビティは、（ａ）作業プロセッサに対するスペース不足によるローカル停留状態、（ｂ）遠隔場所への子生成の不成功による遠隔停留状態、（ｃ）同期依存による依存停留状態、の一つの状態になり得る。
【００８７】
本発明は、（アクテビティも数で表した）計算ツリーの最大深度Ｄｍａｘが、実行の前に、インプットされた並列計算で使われているパラメータからかなり正確に見積もることができることを前提としている。物理的デッドロック・フリーな実行を確実にするために、分散スケジューリング・アルゴリズムの中で、Ｄｍａｘの値が使われる。実行に先立ってＤｍａｘが分かっているという前提は、Ｊａｖａ（Ｒ）ＧｒａｎｄｅＢｅｎｃｈｍａｒｋパッケージのカーネルおよび大型アプリケーションに当てはまる。
【００８８】
分散データ構造およびプロセス設計：有限スペース・スケジューリング・アルゴリズムに対して使用されるデータ構造を図１２に記載する。図１３は、本発明の実施形態による、有限スペース・スケジューリングに対する分散データ構造を図示する。
【００８９】
ＡＭ（Ｔ）が、アクテビティＴを子生成するためのアクティブ・メッセージ表すものとする。マップＡＭＲｅｊｅｃｔＭａｐ中の、場所に対応するタプルから得られるリストのヘッドおよび末尾を有するアクテビティＩＤを使った連結リストを用いて、遠隔停留状態にあるアクテビティが追跡される。表記目的の上で、添え字（ｉ）および（ｉ，ｒ）はそれぞれ、データ構造が場所Ｐｊおよび作業プロセッサＷｉｒに所在することを表すものとする。
【００９０】
計算は、計算ＤＡＧの根元から開始されこれが深度１である。計算は、デフォルト場所Ｐ０の作業プロセッサＷ０ｓで開始される。どの時点においても、ある場所の作業プロセッサＷｉｒは、アクテビティＴを実行しているか、または遊休中かのいずれかであり得る。図１４に詳細なプロセスを提示する。簡潔にするため、インタフェース・プロセッサが取るアクションは暗黙の形で示されている。
【００９１】
分散方式デッドロック・フリーは、親和性駆動スケジューリングにおけるように帰納法によって証明でき、簡潔にするため証明を省略する。核心は、アクテビティが拒否された場合には、より高い深度のアクテビティが間違いなくその場所で実行されていることを論証することであり、次いで、最高深度アクテビティから始まって完了したアクテビティによってスペースが開放されるにつれ、より低い深度のアクテビティが遡求され、最終的には全てのアクテビティが葉となって実行されることを論証することができる。以下の定理がスペース限界を与える。
【００９２】
定理３．３：図１４のアルゴリズムを用いてスケジュールされた、由来厳格な計算は、場所当たりのスペースとしてＯ（ｍ・（Ｄｍａｘ・Ｓｍａｘ＋ｎ・Ｓｍａｘ＋Ｓ１））バイトを使用する。
【００９３】
場所間メッセージ計算量は、（場所間ワーク・スティーリングに対するスローと同様なオーダーの数を想定すれば）拒否された遠隔子生成の取扱いおよびスペース利用可能性の通知のために一定の作業量があるので、定理２．２と同様となる。場所内ワーク・スティーリングに対しても、メッセージの計算量は定理２．２と同じである。
【００９４】
多重プログラム・モード
本発明の実施形態は、適応ワーク・スティーリング・フレームワークを用いる多重プログラム・モードを提供する。このモードでは（複数の場所を有する）システム中に複数のジョブがある。カーネル・スケジューラが、ジョブのリソース利用度に基づいてそのジョブが利用可能なリソースを変更するので、このフレームワークは適応型である。スケジューラは、ジョブの利用度が高ければより多くの利用可能リソースを割り当てることがあり、利用度が低ければそのジョブからリソースを取り上げることがある。ユーザ・スケジューラは、カーネル・スケジューラから一組のリソース（リソースとはプロセッサ／メモリのことである）を与えられ、有限スペース親和性駆動分散スケジューリング・アルゴリズムを実行する。本発明の実施形態は、カーネル・スケジューラに、場所当たりのプロセッサおよび場所当たりのメモリに対する要求のオンラインのフィードバックを提供する。各ジョブ毎に、プロセッサ／コアおよびメモリの最低要求数があり得る。カーネル・スケジューラは、上記のリソースが各ジョブに常に利用可能であることを保証することになる。これは、そのジョブに対し期待されている最低パフォーマンス要求に基づく。このモードでは、２つのスケジューラがある。一つは、カーネル・スケジューラからリソースを得るユーザ・レベルのスケジューラである。該スケジューラは、定期的間隔で、供給されたリソースが過剰利用状態か過少利用状態かをカーネル・スケジューラに連絡する。もう一つは、複数のジョブにそれらのリソース利用度に基づいてリソースを供給する、カーネル・レベルのスケジューラである。上記のリソースは、プロセッサ／コアおよびメモリの両方を含む。
【００９５】
本発明の実施形態は、本明細書に記載したような本発明の実施形態の機能と整合するプログラム命令を実行するのに適するよう作られた、一つ以上の計算デバイスで実施することができる。この点に関し、図１６にかかる計算装置の非限定の一例を示す。
【００９６】
ここで図１６を参照すると、コンピュータ・システム１００の例示的実施形態のブロック図が描かれている。図１６に描かれた例示的実施形態は、デスクトップ・コンピュータ又はワークステーション・コンピュータなどの電子デバイスとすることができる。しかしながら、該図から見取れ、上記で説明したように、本発明の実施形態は、適切に構成された任意のデバイスで実行することができる。
【００９７】
図１６に示されるように、コンピュータ・システム１００は少なくとも一つのシステム・プロセッサ４２を含み、該プロセッサは、プロセッサ・バス４４によって、読取り専用メモリ（ＲＯＭ：Ｒｅａｄ−ＯｎｌｙＭｅｍｏｒｙ）４０およびシステム・メモリ４６に連結されている。システム・プロセッサ４２には、ＡＭＤ Ｃｏｒｐｏｒａｔｉｏｎが作製するＡＭＤプロセッサ系列の一つ、またはＩＮＴＥＬＣｏｒｐｏｒａｔｉｏｎが作製するプロセッサを含めることができ、該プロセッサは汎用型プロセッサであって、電源オン時に、ＲＯＭ４０中に格納された起動コード４１を実行し、しかる後、システム・メモリ４６に格納されたオペレーティング・システムおよびアプリケーション・ソフトウエアの制御の下でデータを処理する。システム・プロセッサ４２は、プロセッサ・バス４４とホスト・ブリッジ４８とを介して、ペリフェラル・コンポーネント ・インターコネクト（ＰＣＩ：Ｐｅｒｉｐｈｅｒａｌ Ｃｏｍｐｏｎｅｎｔ Ｉｎｔｅｒｃｏｎｎｅｃｔ）ローカル・バス５０に連結されている。
【００９８】
ＰＣＩローカル・バス５０は、アダプタおよびブリッジを含む、いくつかのデバイスの接続をサポートしている。これらのデバイスの中には、コンピュータ・システム１００をＬＡＮに結合するネットワーク・アダプタ６６、およびコンピュータ・システム１００をディスプレイ６９に結合するグラフィクス・アダプタ６８がある。ＰＣＩローカル・バス５０上の通信は、ローカルＰＣＩコントローラ５２に制御され、該コントローラは、メモリ・バス５４を介して不揮発性ランダム・アクセス・メモリ（ＮＶＲＡＭ：ｎｏｎ−ｖｏｌａｔｉｌｅｒａｎｄｏｍ  ａｃｃｅｓｓ  ｍｅｍｏｒｙ）５６に連結されている。ローカルＰＣＩコントローラ５２は、第二ホストブリッジ６０を介して追加のバスおよびデバイスに連結することができる。
【００９９】
コンピュータ・システム１００は、ＩＳＡブリッジ６４によってＰＣＩローカル・バス５０に連結された業界標準アーキテクチャ（ＩＳＡ：ＩｎｄｕｓｔｒｙＳｔａｎｄａｒｄ Ａｒｃｈｉｔｅｃｔｕｒｅ）バス６２をさらに含む。ＩＳＡバス６２には、入力／出力（Ｉ／Ｏ：ｉｎｐｕｔ／ｏｕｔｐｕｔ）コントローラ７０が連結されており、該コントローラは、コンピュータ・システム１００と、キーボード、マウス、シリアルおよびパラレル・ポート、その他などの接続周辺デバイスとの間の通信を制御する。ディスク・コントローラ７２は、ディスク・ドライブをＰＣＩローカル・バス５０に接続している。ＵＳＢバスおよびＵＳＢコントローラ（図示せず）は、ローカルＰＣＩコントローラ５２の一部である。
【０１００】
当業者が十分理解するように、本発明の態様をシステム、方法、またはコンピュータ・プログラムとして具現化することができる。従って、本発明の態様は、完全なハードウエア実施形態、完全なソフトウエア実施形態（ファームウエア、常駐ソフトウエア、マイクロ・コード等を含む）、または、ソフトウエア態様とハードウエア態様とを組み合わせた実施形態（本明細書では全体を、一般的に「回路」、「モジュール」または「システム」ということがある）の形を取ることができる。さらに、本発明の態様は、（体内に具現された）コンピュータ可読のプログラム・コードを有する（一つ以上のコンピュータ可読媒体（単数または複数）中に具現された）コンピュータ・プログラムの形を取ることができる。
【０１０１】
一つ以上のコンピュータ可読媒体（単数または複数）の任意の組合せを用いることができる。該コンピュータ可読の媒体は、信号媒体またはコンピュータ可読記憶媒体とすることができる。コンピュータ可読記憶媒体は、例えば、以下に限らないが、電子的、磁気的、光学的、電磁気的、赤外的な、または半導体の、システム、装置、またはデバイス、あるいは上記の任意の適切な組合せとすることができる。コンピュータ可読記憶媒体のさらに具体的例（非排他的リスト）には、一つ以上の配線を有する電気接続、携帯コンピュータ・ディスケット、ハード・ディスク、ランダムアクセス・メモリ（ＲＡＭ）、読取り専用メモリ（ＲＯＭ）、消去可能プログラマブル読取り専用メモリ（ＥＰＲＯＭ：ｅｒａｓａｂｌｅｐｒｏｇｒａｍｍａｂｌｅ ｒｅａｄ−ｏｎｌｙ ｍｅｍｏｒｙ、またはフラッシュ・メモリ）、光ファイバ、携帯コンパクト・ディスク読取り専用メモリ（ＣＤ−ＲＯＭ：ｃｏｍｐａｃｔｄｉｓｃ ｒｅａｄ−ｏｎｌｙ ｍｅｍｏｒｙ）、光記憶デバイス、磁気記憶デバイス、または上記の任意の適切な組合せが含まれよう。本文書の文脈において、コンピュータ可読記憶媒体は、命令実行システム、装置、またはデバイスによって、またはこれらに関連させて使うためのプログラムを包含または格納できる任意の有形媒体であり得る。
【０１０２】
コンピュータ可読の信号媒体は、例えばベースバンド、または搬送波の一部の中など、内部にコンピュータ可読プログラム・コードを具現する伝播データ信号を含み得る。かかる伝播信号は、以下に限らないが、電磁気的、光学的、またはそれらの任意の適切な組合せを含む、さまざまな形態の任意の形態をとり得る。コンピュータ可読信号媒体は、コンピュータ可読記憶媒体ではなく、命令実行システム、装置、またはデバイスによって、またはこれらに関連させて使うためのプログラムを通信、伝播、または移送可能な任意のコンピュータ可読媒体であり得る。
【０１０３】
コンピュータ可読媒体に具現されたプログラム・コードは、以下に限らないが、無線、有線、光ファイバ・ケーブル、ＲＦなどまたは上記の任意の適切な組合せを含め、任意の適切な媒体を使って送信することができる。
【０１０４】
本発明の態様のオペレーションを実施するためのコンピュータ・プログラム・コードは、Ｊａｖａ、Ｓｍａｌｌｔａｌｋ、Ｃ＋＋、又は類似の言語などのオブジェクト指向プログラミング言語、あるいは、「Ｃ］プログラミング言語、または類似プログラミング言語などの従来式手続き型プログラミング言語を含め、一つ以上のプログラミング言語の任意の組合せで書くことができる。該プログラム・コードは、単独型ソフトウエア・パッケージとして全部をユーザのコンピュータ（デバイス）でまたは部分的にユーザのコンピュータで実行することができ、もしくは、部分的にユーザのコンピュータで且つ部分的に遠隔コンピュータで、あるいは全部を遠隔のコンピュータまたはサーバで実行することができる。上記後段のシナリオでは、遠隔コンピュータは、ローカル・エリア・ネットワーク（ＬＡＮ：ｌｏｃａｌａｒｅａ ｎｅｔｗｏｒｋ）または広域ネットワーク（ＷＡＮ：ｗｉｄｅ ａｒｅａ ｎｅｔｗｏｒｋ）を含む任意の種類のネットワークを介してユーザのコンピュータに接続することができ、あるいは、（例えば、インターネットを介してインターネット・サービス・プロバイダを使うなど）外部のコンピュータに接続を行うことができる。
【０１０５】
本発明の態様は、本発明の実施形態による方法、装置（システム）およびコンピュータ・プログラムのフローチャート説明図またはブロック図あるいはその両方を参照しながら、本明細書に記載されている。これらフローチャート説明図またはブロック図あるいはその両方の中の各ブロック、および該フローチャート説明図またはブロック図あるいはその両方の中のブロックの組合せが、コンピュータ・プログラム命令によって実行可能なことは理解されよう。これらのコンピュータ・プログラム命令を、汎用コンピュータ、特殊用途コンピュータ、または他のプログラム可能データ処理装置のプロセッサに供給してマシンを形成し、これら命令が、該コンピュータまたは他のプログラム可能データ処理装置のプロセッサを介して実行され、上記フローチャートまたはブロック図あるいはその両方の中のブロックまたはブロック群に規定された機能／処理を実行するための手段を生成するようにすることができる。
【０１０６】
また、これらのコンピュータ・プログラム命令を、コンピュータ、他のプログラム可能データ処理装置、または特定の仕方で機能する他のデバイスに命令することが可能なコンピュータ・プログラムとして可読媒体等に格納することができ、該コンピュータ可読媒体等の中に格納された命令が、上記フローチャートまたはブロック図あるいはその両方の中のブロックまたはブロック群に規定された機能／処理を実行する命令を包含する製品を形成するようにすることもできる。
【０１０７】
さらに、これらのコンピュータ・プログラム命令を、コンピュータ、他のプログラム可能データ処理装置、または他のデバイスにロードし、該コンピュータ、他のプログラム可能データ処理装置、または他のデバイス上で一連の操作ステップを実施させ、該コンピュータまたは他のプログラム可能装置で実行される命令が、上記フローチャートまたはブロック図あるいはその両方の中のブロックまたはブロック群に規定された機能／処理を実行するためのプロセスをもたらすような、コンピュータ実行のプロセスを生成するようにできる。
【０１０８】
本開示は例示および説明の目的で提示されているが、全体網羅または範囲限定を意図するものではない。当業者には、多くの修改および変更が明白であろう。これらの実施形態は、原理および実際的応用を説明し、他の当業者が、意図された特定の用途に適したさまざまな変更を備えたさまざまな実施形態のために本開示を理解できるように、選ばれ記載されたものである。
【０１０９】
本発明の例示的実施形態は、添付の図面を参照しながら本明細書に説明されているが、本発明の実施形態はこれらにぴったりの実施形態に限定されるものでなく、当業者が、本開示の範囲または精神から逸脱することなく、これら実施形態に他のさまざまな変更および修改を加えることができることを理解すべきである。
【符号の説明】
【０１１０】
４０    ＲＯＭ
４１    起動コード
４２    システム・プロセッサ（群）
４４    プロセッサ・バス
４６    システム・メモリ
４８    ホスト・ブリッジ
５０    ＰＣＩローカル・バス
５２    ローカルＰＣＩコントローラ
５４    メモリ・バス
５６    ＮＶＲＡＭ
６０    ホスト・ブリッジ
６２    ＩＳＡバス
６４    ＩＳＡブリッジ
６６    ネットワーク・アダプタ
６８    グラフィック・アダプタ
６９    ディスプレイ
７０    Ｉ／Ｏコントローラ
７２    ディスク・コントローラ
【図１】
2011096247.tif 000006
【図２】
2011096247.tif 000007
【図３】
2011096247.tif 000008
【図４】
2011096247.tif 000009
【図５】
2011096247.tif 000010
【図６】
2011096247.tif 000011
【図７】
2011096247.tif 000012
【図８】
2011096247.tif 000013
【図９】
2011096247.tif 000014
【図１０】
2011096247.tif 000015
【図１１】
2011096247.tif 000016
【図１２】
2011096247.tif 000017
【図１３】
2011096247.tif 000018
【図１４】
2011096247.tif 000019
【図１５】
2011096247.tif 000020
【図１６】
2011096247.tif 000021