特許第5756271号(P5756271)IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ インターナショナル・ビジネス・マシーンズ・コーポレーションの特許一覧

特許5756271並列計算の親和性駆動分散スケジューリングのための装置、方法、およびコンピュータ・プログラム(並列計算の親和性駆動分散スケジューリングのためのシステムおよび方法)
<>
  • 特許5756271-並列計算の親和性駆動分散スケジューリングのための装置、方法、およびコンピュータ・プログラム(並列計算の親和性駆動分散スケジューリングのためのシステムおよび方法) 図000005
  • 特許5756271-並列計算の親和性駆動分散スケジューリングのための装置、方法、およびコンピュータ・プログラム(並列計算の親和性駆動分散スケジューリングのためのシステムおよび方法) 図000006
  • 特許5756271-並列計算の親和性駆動分散スケジューリングのための装置、方法、およびコンピュータ・プログラム(並列計算の親和性駆動分散スケジューリングのためのシステムおよび方法) 図000007
  • 特許5756271-並列計算の親和性駆動分散スケジューリングのための装置、方法、およびコンピュータ・プログラム(並列計算の親和性駆動分散スケジューリングのためのシステムおよび方法) 図000008
  • 特許5756271-並列計算の親和性駆動分散スケジューリングのための装置、方法、およびコンピュータ・プログラム(並列計算の親和性駆動分散スケジューリングのためのシステムおよび方法) 図000009
  • 特許5756271-並列計算の親和性駆動分散スケジューリングのための装置、方法、およびコンピュータ・プログラム(並列計算の親和性駆動分散スケジューリングのためのシステムおよび方法) 図000010
  • 特許5756271-並列計算の親和性駆動分散スケジューリングのための装置、方法、およびコンピュータ・プログラム(並列計算の親和性駆動分散スケジューリングのためのシステムおよび方法) 図000011
  • 特許5756271-並列計算の親和性駆動分散スケジューリングのための装置、方法、およびコンピュータ・プログラム(並列計算の親和性駆動分散スケジューリングのためのシステムおよび方法) 図000012
  • 特許5756271-並列計算の親和性駆動分散スケジューリングのための装置、方法、およびコンピュータ・プログラム(並列計算の親和性駆動分散スケジューリングのためのシステムおよび方法) 図000013
  • 特許5756271-並列計算の親和性駆動分散スケジューリングのための装置、方法、およびコンピュータ・プログラム(並列計算の親和性駆動分散スケジューリングのためのシステムおよび方法) 図000014
  • 特許5756271-並列計算の親和性駆動分散スケジューリングのための装置、方法、およびコンピュータ・プログラム(並列計算の親和性駆動分散スケジューリングのためのシステムおよび方法) 図000015
  • 特許5756271-並列計算の親和性駆動分散スケジューリングのための装置、方法、およびコンピュータ・プログラム(並列計算の親和性駆動分散スケジューリングのためのシステムおよび方法) 図000016
  • 特許5756271-並列計算の親和性駆動分散スケジューリングのための装置、方法、およびコンピュータ・プログラム(並列計算の親和性駆動分散スケジューリングのためのシステムおよび方法) 図000017
  • 特許5756271-並列計算の親和性駆動分散スケジューリングのための装置、方法、およびコンピュータ・プログラム(並列計算の親和性駆動分散スケジューリングのためのシステムおよび方法) 図000018
  • 特許5756271-並列計算の親和性駆動分散スケジューリングのための装置、方法、およびコンピュータ・プログラム(並列計算の親和性駆動分散スケジューリングのためのシステムおよび方法) 図000019
  • 特許5756271-並列計算の親和性駆動分散スケジューリングのための装置、方法、およびコンピュータ・プログラム(並列計算の親和性駆動分散スケジューリングのためのシステムおよび方法) 図000020
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】5756271
(24)【登録日】2015年6月5日
(45)【発行日】2015年7月29日
(54)【発明の名称】並列計算の親和性駆動分散スケジューリングのための装置、方法、およびコンピュータ・プログラム(並列計算の親和性駆動分散スケジューリングのためのシステムおよび方法)
(51)【国際特許分類】
   G06F 9/52 20060101AFI20150709BHJP
   G06F 9/50 20060101ALI20150709BHJP
【FI】
   G06F9/46 472A
   G06F9/46 465D
【請求項の数】5
【全頁数】26
(21)【出願番号】特願2010-224913(P2010-224913)
(22)【出願日】2010年10月4日
(65)【公開番号】特開2011-96247(P2011-96247A)
(43)【公開日】2011年5月12日
【審査請求日】2013年6月3日
(31)【優先権主張番号】12/607497
(32)【優先日】2009年10月28日
(33)【優先権主張国】US
【前置審査】
(73)【特許権者】
【識別番号】390009531
【氏名又は名称】インターナショナル・ビジネス・マシーンズ・コーポレーション
【氏名又は名称原語表記】INTERNATIONAL BUSINESS MACHINES CORPORATION
(74)【代理人】
【識別番号】100108501
【弁理士】
【氏名又は名称】上野 剛史
(74)【代理人】
【識別番号】100112690
【弁理士】
【氏名又は名称】太佐 種一
(72)【発明者】
【氏名】アンクル・ナラン
(72)【発明者】
【氏名】シヴァリ・アガルワル
(72)【発明者】
【氏名】ルドラパトナ・ケイ・シュヤマスンダル
【審査官】 田中 幸雄
(56)【参考文献】
【文献】 特表2006−502457(JP,A)
【文献】 国際公開第2005/116832(WO,A1)
【文献】 本橋健ほか,分散要求管理を用いるアクティビティ方式並列実行機構,情報処理学会論文誌,日本,社団法人情報処理学会,1994年10月,第35巻 第10号,2128−2137頁
【文献】 斎藤秀雄ほか,広域MPI用の局所性を考慮した接続管理とランク割当て,情報処理学会論文誌,日本,社団法人情報処理学会,2007年 5月23日,Vol.48 No.SIG 18,44−55頁
(58)【調査した分野】(Int.Cl.,DB名)
G06F 9/52
G06F 9/50
(57)【特許請求の範囲】
【請求項1】
複数のプロセッサと、
コンピュータ可読プログラム・コードを有し、前記複数のプロセッサによって実行可能なコンピュータ・プログラムと、を含み、前記複数のプロセッサによる並列計算の分散スケジューリングを行うための装置であって、前記複数のプロセッサは、ネットワークによって連結されてメッセージを交換する複数の場所(場所は、共有のメモリを有する一つ以上のプロセッサの群をいう。以下、同じ。)を含むクラスタを構成しており、前記並列計算は、それぞれ特定の場所に親和性が規定された複数のアクテビティを含み構成され、
前記装置は、
前記複数の場所での並列計算の親和性駆動の分散スケジューリングを、オンライン方式でかつデッドロック・フリーな仕方で、前記複数の場所各々に提供するための手段と、
前記親和性駆動の分散スケジューリングをデッドロック・フリーな仕方で提供することとして、前記場所当たり無制約のスペースを提供し、負荷バランスのための場所内でのワークの移動と、場所に対する親和性を持続するため前記クラスタにわたる遠隔した場所へのアクテビティの押入れとが組合せて使われるとして、各アクテビティに対し実行するべき場所を表す場所識別子が指定されるマルチスレッド計算のための親和性駆動の分散スケジューリングを提供する手段と、
新着アクテビティ・バッファであって、遠隔した場所からのメッセージに応じて子のアクテビティとして生成された新規アクテビティを保持するため使われる並列デキュー・データ構造として実装される新着アクテビティ・バッファを提供する手段と
を含む、装置。
【請求項2】
前記装置は、前記クラスタにわたる自動的負荷バランスを可能にするため、並列計算中に、実行する場所が不問である場所不問アクテビティを設ける手段をさらに含む、請求項1に記載の装置。
【請求項3】
前記装置は、前記クラスタにわたり、第1の場所からアクテビティを取得する確率を、前記第1の場所より遠い第2の場所から取得する確率よりも高く提供する手段をさらに含む、請求項1に記載の装置。
【請求項4】
前記装置は、計算のためのスペースが有限である場合におけるスケジューリングを提供するための手段をさらに含み、前記スペースが有限である場合におけるスケジューリングでは、デッドロック・フリーな実行のため、アクテビティを、より高い深度を有するアクテビティが、より低い深度を有するアクテビティの前に実行を完了するように、深度ベースの優先付けする、請求項1に記載の装置。
【請求項5】
前記装置は、カーネル・スケジューラがジョブに利用可能なリソースを利用度に基づいて変更する、多重プログラム・モードを提供するための手段をさらに含む、請求項1に記載の装置。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、並列計算の親和性駆動分散スケジューリングのための装置、方法、およびにコンピュータ・プログラムに関する。
【背景技術】
【0002】
区分化大域アドレス(PGAS:partitioned global address)パラダィムに基づいた、X10、Chapel、およびFortressなどの言語は、メニーコア・超並列プラットフォームによるより高い生産性およびパフォーマンスを目指した、国防高等研究計画局の高生産性計算システム(DARPA HPCS:DefenseAdvanced Research Projects Agency High Productivity Computing Systems)プログラムの一部として設計され、実現されたものである。しかしながら、メニーコア・超並列プラットフォームは、並列計算のスケジューリングに関して重大な欠点を有する。
【発明の概要】
【発明が解決しようとする課題】
【0003】
本発明の実施形態は、より高い生産性およびパフォーマンスのための、並列計算の効率的なスケジューリングを提供する。本発明の実施形態は、物理的デッドロック・フリーな、多場所(「場所」とは共有のメモリを持つプロセッサの群である)並列計算の親和性駆動分散スケジューリングのための効果的な各種方法を提供する。本発明の実施形態は、無制約なスペースを想定した厳密な場所注釈マルチスレッド計算のためのオンライン親和性駆動分散スケジューリング処理を提供する。さらに、本発明の実施形態は、場所あたり制限されたスペースを想定した、新規な親和性駆動オンライン分散スケジューリング処理を提供する。
【課題を解決するための手段】
【0004】
要約すれば、本発明の一つの態様は、一つ以上のプロセッサと、該一つ以上のプロセッサが実行可能な、体内に具現されたコンピュータ可読プログラム・コードを有するコンピュータ・プログラム(コンピュータ可読記憶媒体に記憶されることもある)とを含む装置を提供し、該コンピュータ可読プログラム・コードは、多場所計算のオンライン分散親和性駆動スケジューリングをデッドロック・フリーな仕方で一つ以上の場所に提供するように作られたコンピュータ可読プログラム・コードを含み、該一つ以上の場所の各々は、共用メモリを有する一つ以上のプロセッサを含む。
【0005】
本発明の別の態様は、プログラム記憶デバイス中に有形に具現された命令のプログラムを一つ以上のプロセッサを用いて実行するステップを含む方法を提供し、該命令のプログラムは、多場所計算のオンライン分散親和性駆動スケジューリングを、デッドロック・フリーな仕方で一つ以上の場所に提供するように作られたコンピュータ可読プログラム・コードを含み、該一つ以上の場所の各々は共用メモリを有する一つ以上のプロセッサを含む。
【0006】
本発明のさらなる態様は、(体内に具現された)コンピュータ可読のプログラム・コードを有する(コンピュータ可読記憶媒体を含む、)コンピュータ・プログラムを提供し、該コンピュータ可読プログラム・コードは、多場所計算のオンライン分散親和性駆動スケジューリングを、デッドロック・フリーな仕方で一つ以上の場所に提供するように作られたコンピュータ可読プログラム・コードを含み、該一つ以上の場所の各々は共用メモリを有する一つ以上のプロセッサを含む。
【0007】
本発明の例示的実施形態を、本発明の他のおよびさらなる特質と利点とともにより良く理解してもらうため、添付の図面と関連させて以下の説明に言及することとし、本発明の請求対象の実施形態の範囲については、特許請求の範囲に記載した請求項において指摘するものとする。
【図面の簡単な説明】
【0008】
図1】本発明の実施形態による、定義および記号のいくつかを示す。
図2】本発明の実施形態による、場所注釈計算DAGを示す。
図3】本発明の実施形態による、分散スケジューリング処理を示す。
図4】本発明の実施形態による、分散スケジューリング処理を示す。
図5】本発明の実施形態による、分散データ構造を示す。
図6】本発明の実施形態による、有限スペースのスケジューリングに対する分散データ構造を示す。
図7】本発明の実施形態による、遠隔子生成および空デキューのケースを示す。
図8】本発明の実施形態による、多場所分散スケジューリングを示す。
図9】本発明の実施形態による、ハイブリッド分散スケジューリングを示す。
図10】本発明の実施形態による、分散スケジューリングを示す。
図11】本発明の実施形態による、場所の円環群を有する2Dトーラスを示す。
図12】本発明の実施形態による、多場所分散データ構造を示す。
図13】本発明の実施形態による、有限スペースのスケジューリングに対する分散データ構造を示す。
図14】本発明の実施形態による、多場所分散スケジューリングを示す。
図15】各種スケジューリングと本発明の実施形態によるスケジューリングとの間の例示的比較を提示する。
図16】本発明の一つの実施形態による、例示的コンピュータ・システムを示す。
【発明を実施するための形態】
【0009】
本明細書に一般的に記述され図に示された本発明の実施形態の構成要素が、記載された例示的実施形態の他にも、種々さまざまの異なった構成に編成でき設計できることは容易に理解されよう。従って、以下の、図に示されたような本発明の実施形態のさらに詳細な説明は、特許請求の範囲の各請求項において請求された本発明の実施形態の範囲を限定することを意図したものでなく、単に本発明の例示的実施形態を表したものである。
【0010】
本明細書全体を通して、「一つの実施形態」または「ある実施形態」(または類似の語句)への言及は、その実施形態に関連して説明する特定の特質、構造、または特性が、本発明の少なくとも一つの実施形態に含まれていることを意味する。しかして、本明細書全体を通してさまざまな箇所における「一つの実施形態において」または「ある実施形態において」または類似の語句の出現は、必ずしもその全てが、同一の実施形態に言及してはいない。
【0011】
さらに、記述された特質、構造、または特性は、任意の適切なやり方で一つ以上の実施形態中に組み合わせることができる。以下の説明において、本発明の実施形態の完全な理解を得るために、数多くの具体的明細が提示される。しかしながら、当業者は、一つ以上の特定の明細がなくても、あるいは他の方法、構成要素、材料などを使っても、本発明の各種実施形態が実施可能なことを認識するであろう。他の事例では、本発明の態様があいまいになるのを避けるために、周知の構造、材料、または工程については提示せず説明もしない。
【0012】
本発明者は、マルチコアおよびメニーコア・アーキテクチャの出現とともに、より高い生産性およびパフォーマンスを得るための並列プログラムのスケジューリングが重要な課題となっているのを認識している。X10、Chapel、およびFortressなど、PGASパラダィムに基づく言語は、メニーコア・超並列プラットフォームによるより高い生産性およびパフォーマンスを目指した、DARPAHPCSプログラムの一部として設計され、実現されたものである。これらの言語は、並列プログラム中のスレッド(アクテビティともいう)の初期配置およびデータ構造のための内蔵サポートを有し、これにプログラムには局所性が暗黙裡に含まれている。これらの言語のランタイム・システムは、中程度〜きめ細かな並列処理を使った並列計算のアルゴリズム的オンライン・スケジューリングを備える必要がある。大きな並列計算を取り扱うため、該スケジューリング・アルゴリズムは、メニーコア・超並列アーキテクチャを使い分散されたやり方で機能するよう設計する必要がある。さらに、該アルゴリズムは、有限スペース下で物理的デッドロック・フリーな実行を確実にする必要がある。並列計算は、制御、データ、または同期依存に起因するいかなる論理的デッドロックをも有さず、従って、物理的デッドロックは、有限スペースでの循環依存に起因してだけ生じ得ることが前提とされる。これは非常に困難な課題である。というのは、分散スケジューリング・アルゴリズムは、分散方式のデッドロック・フリー性を保ちつつ、親和性を追跡して効率的なスペースおよび時間計算量(complexity)を提供する必要があるからである。
【0013】
以降、図面を参照しながら説明する。本発明の例示的実施形態は、図面を参照することによって最善に理解することができよう。以下の説明は、例示のためだけに意図されたものであって、本明細書の特許請求の範囲の各請求項において請求される本発明の選ばれた特定の例示的実施形態を説明するだけのものである。
【0014】
図面中のフローチャートおよびブロック図は、本発明の各種実施形態によるシステム、装置、方法、およびコンピュータ・プログラムの実行可能な実施のアーキテクチャ、機能、および工程を示す。この点に関し、フローチャートまたはブロック図の中の各ブロックは、規定された論理機能(群)を実行するための一つ以上の実行可能命令を含む、コードのモジュール、セグメント、または部分を表し得る。また、別のいくつか実施において、ブロック中に記載された機能が、図面に記載された順序と異なる順序で生じる得ることにも留意すべきである。例えば、連続して示される2つのブロックが、関与する機能如何によっては、実際上ほぼ同時に実行されることがあり、あるいはこれらブロックが逆の順序で実行され得る。また、ブロック図またはフローチャート図あるいはその両方の中の各ブロック、およびブロック図またはフローチャート図あるいはその両方の中のブロックの組合せが、特定の機能または作用を実施する特殊用途ハードウエア・ベースのシステムによって、あるいは特殊用途ハードウエアおよびコンピュータ命令の組合せによって実行可能であることにも留意する。
【0015】
本明細書で取り扱う親和性駆動分散スケジューリングの課題は、以下の2つである。所与課題:(a)細かな〜中程度のきめの並列処理を使った、並列マルチスレッド計算を表現するインプット計算DAG(図2)。DAG中の各ノードは、and/or/addなどの基本演算であり、そのノードが実行されるべき場所を表す場所識別子で注釈されている。DAG中の矢印線は、(i)新規スレッドの生成、または(ii)実行の逐次的流れ、または(iii)2つのノード間の同期依存を表す。(b)計算DAGをスケジュールする標的アーキテクチャとしてのn個SMPのクラスタ(場所とも呼ばれる各SMPは一定数(m)のプロセッサおよびメモリを有する)。解決策:両方の課題に対し、インプットDAG中の指定された場所へのノードの的確なマッピングを確実にするオンライン分散方式で、計算DAGのノードに対するスケジュールを生成する必要がある。特に、第一の課題に対しては、インプットは、厳格な(インプットDAG中の同期依存矢印線が、あるスレッドとその祖先スレッドとの間だけにつながっている)計算DAGであり、場所当たり無制約のスペースがあると想定される。ここでは、時間およびメッセージの計算量を最小化しながら、計算DAG中のノードに対するオンライン・スケジュールを生成する必要がある。第二の課題に対しては、インプットは、由来厳格な(terminallystrict)並列計算DAG(同期依存矢印線が、あるアクテビティが子孫アクテビティの完了を待っている状態を表している)であり、場所あたりのスペースが制限されていることが想定されている。ここでの狙いは、実行のため低廉な時間およびメッセージ計算量を維持しながら、物理的デッドロック・フリーな実行を確実にするオンライン・スケジュールを生成することである。
【0016】
しかして、本明細書中の本発明の各種実施形態に整合する、デッドロック・フリーな実行が保証された親和性駆動分散スケジューリング処理と、実証されたスペース、時間、およびメッセージの限界とを提示する。これらの処理では、所与の並列計算に対する、場所群全体を通しての負荷バランスが考慮された注釈の初期配置を想定している。該処理は、利用可能なリソース量に基づいて計算DAGのオンライン拡張を制御する。これら処理は、親和性を確実にするため、効率的な遠隔子生成および拒否取扱いメカニズムを用いる。場所内でのランダム化されたワーク・スティーリングが負荷バランシングを助力する。有限スペースに対する分散スケジューリング処理は、分散方式による実行のため、スレッド/アクテビティの順序付けに基づき見積もられた計算深度を使い、注意深くスペースを管理する。分散方式のデッドロック回避方策が並列計算のデッドロック・フリーな実行を確実にする。これらの処理は、場所当たりの数が可変のプロセッサに対しても、また同じ物理的場所にあるプログラム中の複数の論理的場所のマッピングに対しても、もしその物理的場所が十分なリソースを有するならば、容易に展開することができる。
【0017】
本明細書において、場所当たり無制約および有限スペース双方に対する、新規の親和性駆動分散スケジューリング処理を提案する。この有限スペース処理は由来厳格な多場所計算のために設計され、新規の分散方式デッドロック回避方策を使って、物理的デッドロック・フリーな実行を確実にする。本明細書では、この処理に対するスペース限界およびデッドロック・フリー実証を提示する。
【0018】
以下に、無制約スペース処理に対し、実行時間の下限期待値が O(max/m+T∞,n)であり、上限期待値がO(Σ(T/m+T))であることを示す。前式のkは1からnまでの場所を表す変数であり、mは場所当たりのプロセッサの数を表し、Tは、単一個のプロセッサを使った場所kに対する実行時間を表し、T∞,nは、n個の場所で、各場所で無限大の数のプロセッサを使って計算した場合の実行時間を表す。また、メッセージ計算量に対する確率的な下限期待値および上限期待値も以下に説明する。
【0019】
共有メモリ・マルチプロセッサに対する動的に生成されたタスクのスケジューリングは、十分研究された課題である。従来の研究は、ランダム化されたワーク・スティーリングの方策を推進した。該方策では、ワークを持たないプロセッサ(ワークなしプロセッサ)はシステム内の別のプロセッサ(ビクチム)からランダムにワークを盗む。他の研究は、SMPプラットフォームにおける親子厳格な(fully−strict)計算のスケジューリングのために、スペース(O(P・S))および時間(O(T/P+T))に対する効率的な限界を明らかにした。前式のPはプロセッサの数であり、TおよびSはそれぞれ逐次的実行に対する時間およびスペースであり、Tは無限大数のプロセッサによる実行時間である。その後、スレッドのスケジューリングに対するデータのローカル性の重要性が、データのローカル性を使ったワーク・スティーリングを動機付けし、このスティーリング法では、データのローカル性はオンザフライで見出され計算の進行中維持された。また、この研究では、スケジューリングのための初期配置が探求され、該アプローチの有用性を示す実験結果が提示された。ただし、親和性は必ずしも追跡されず、アルゴリズムの範囲はSMP環境に限定され、時間計算量は解析されなかった。他の研究では、SMPプラットフォーム上の一般的並列計算のスケジューリングに対する時間計算量(O(T/P+T))は解析されたが、スペースおよびメッセージ計算量の限界は考慮されなかった。本明細書においては、本発明の実施形態は、親和性を確実にしさらに時間およびメッセージ限界を提示しながら、複数の場所(SMPのクラスタ)を通した分散方式スケジューリング課題を考察する。
【0020】
他の従前の研究は、適応並列処理および障害許容力を用いる、分散メモリ環境におけるワーク・スティーリング・アルゴリズムを考案している。該研究では、タスク移動は、全面的に(ランダム化ワーク・スティーリング・アルゴリズムを介した)プル・ベースであり、しかして、上記研究は親和性を無視し、また、デッドロック・フリー性またはリソース利用度プロパティに対する何の公的な証明も提供しなかった。また、従前の研究は、初期配置ベースのスケジューリング方策が適切な、並列計算に対する多場所(分散)展開も記述している。多場所展開は、相互接続ネットワークにより接続された複数の場所を有し、各場所はSMPプラットフォームとして連結された複数のプロセッサを有する。この研究は、マルチスレッド化計算のオンライン欲張りスケジューリングが、場所あたり制限されたスペースおよび通信リソースの下で、物理的デッドロックをもたらし得ることを論証した。制限されたリソース(スペースまたは通信リソース)は、場所間の循環依存を引き起こす可能性があり、物理的デッドロックにつながり得る。また、従前の研究は、初期配置に基づくスケジューリング方策を提供し、ドッペルゲンガー(Doppelgaenger)モードと呼ばれる縮退モードを用いて、物理的デッドロック・フリーの由来厳格な計算の実行に対するスペース限界を立証した。該計算では、このモードにおける親和性を顧慮されず、時間または通信の限界は提示されなかった。また、負荷バランシングの面は取り扱っていなかった。本発明の実施形態は、多場所構成におけるデッドロック・フリーな分散スケジューリングを保証しつつ親和性を確実にする。計算中の一部のアクテビティは場所親和性を有し計算中の他のアクテビティは任意の場所で実行することが可能な、ハイブリッド並列計算のスケジューリングが考案された。本研究は、場所群を通した優先化ランダム・ワーク・スティーリングに特別な焦点を当てており、本論文中に提示された、有限スペース・アルゴリズムに対するデッドロック・フリー性と、無制約スペース・アルゴリズムに対する時間およびメッセージ計算量とに関する詳細な結果を利用している。表形式による、本発明の実施形態の処理と従前の研究の処理との間の特質の比較を本明細書に提示する。
【0021】
システムおよび計算モデル
本発明の実施形態によれば、計算DAGがスケジュールされる対象のシステムは、アクティブ・メッセージ・ネットワークによって連結されたSMPのクラスタであると想定される。各SMPは共有メモリを有するプロセッサの群である。また、本明細書では各SMPを場所ともいう。アクティブ・メッセージ(AM:ActiveMessages)は、相互整合する要求/回答メッセージの順序化なしの信頼性ある配信をサポートする、低レベル軽量のRPC(remote procedure call(遠隔手順呼び出し))メカニズムである。n個の場所が存在し、各場所がm個のプロセッサ(本明細書では作業プロセッサという)を有することが想定されている。
【0022】
システム上に動的にスケジュールされる対象の並列計算は、プログラマによって、X10およびChapelなどの言語で規定されるとの想定がされる。本発明の例示的実施形態に整合する分散スケジューリング処理を説明するため、並列計算は、DAG(directedacyclic graph(有向非巡回グラフ))構造を有し、and、or、not、add、およびその他の基本演算を表すノードから成るとの想定がされる。計算DAG(図2)中のノード群の間には、新規アクテビティの生成を表す矢印線(子生成矢印線)と、スレッド/アクテビティ内のノード間の逐次的実行の流れを表す矢印線(継続矢印線)と、同期依存を表す矢印線(依存矢印線)とがある。本明細書では、スケジュール対象の並列計算を計算DAGという。より高いレベルでは、該並列計算は、アクテビティ群の計算ツリーとして見ることもできる。各アクテビティは、(マルチスレッド・プログラムにおいては)実行のスレッドであり、一組のノード(基本演算)から成る。各アクテビティは、特定の場所に割り当てられる(プログラマが規定した親和性による)。しかして、かかる計算は多場所計算と呼ばれ、DAGは場所注釈計算DAGといわれる(図2:ν1…ν20はノード群を表し、T1…T6はアクテビティを表し、P1…P3は場所を表す)。計算DAG中で用いられる表記記号を図1に説明する。
【0023】
無制約スペースにおける分散スケジューリング
以下に、本発明の実施形態に整合する、無制約スペースにおける親和性駆動分散スケジューリングの説明を提示する。厳格な場所注釈計算DAGを考えてみる。下記に説明する分散スケジューリング処理は、アクテビティそれぞれの場所における親和性だけを用いてそれらアクテビティをスケジュールする。場所内でワーク・スティーリングが駆動され、その場所に関連する計算部分グラフの負荷バランスされた実行が可能になる。計算DAGは、親和性駆動のアクテビティがそれらそれぞれの遠隔場所に押入れられる際に、オンライン方式で場所群を通して幅優先の仕方で展開される。場所内では、計算DAGのオンライン展開は、効率的スペースおよび時間実行を可能にするため、深度優先の仕方で行われる。各場所に十分なスペースがあることが保証されているので、この処理ではスペース不足に起因する物理的デッドロックは生じ得ない。
【0024】
各場所は、その場所の専用プロセッサ(作業プロセッサではない)によって管理される新着アクテビティ・バッファ(FAB:FreshActivity Buffer)を維持する。各場所における各作業プロセッサは、実行可状態デキューおよび停留バッファを有する(図3参照)。各場所のFABおよび各作業プロセッサの実行可状態デキューは、並列デキュー実装を用いる。ある遠隔場所に対する親和性を有するアクテビティは、その場所のFABに押し入れられる。ある場所における遊休作業プロセッサは、同じ場所の他の作業プロセッサからランダムにワークを盗む試みをすることになる(ランダム化されたワーク・スティーリング)。なお、ある場所に押し入れられたアクテビティはその場所の作業プロセッサの間を(ワーク・スティーリングによって)移動することができるが、別の場所には移動できず、しかして常に親和性に従う。例示的分散スケジューリング処理が図4に示されている。
【0025】
有限スペースにおける分散スケジューリング
実際のシステムの制限されたスペースに起因して、分散スケジューリング処理は、実行時間への影響を最小化し同時にデッドロック・フリーの保証を提供しながら、計算DAGのオンラインでの幅優先の拡張を制限しなければならない。この処理には、分散方式デッドロック回避スキームが用いられる。システム中の各場所におけるスペースの制約に起因して、アクテビティはスペース不足により停留し得る。該処理は、システム上の、実行のためアクテビティが必要とする、利用可能なスタック・スペースを追跡把握する(簡明化のためヒープ・スペースは考えない)。あるアクテビティuが必要とするスペースは、その実行に必要な最大スタック・スペース、すなわち((Dmax−D)・Smax)によって制限される。前式のDmaxは計算ツリー中の最高アクテビティ深度であり、Dは計算ツリー中のuの深度である。該処理は、パス上のより高い深度を有するアクテビティが、より低い深度を有するアクテビティの前に実行を完了することができるようにして、深度ベースの計算実行順序を追跡する。これは分散された仕方で行われる。ワーク・プッシングおよび場所内ワーク・スティーリング双方の過程で、各場所および作業プロセッサは、アクテビティ実行のためのスタック・スペースの利用可能性を点検する。深度ベースの順序付けによって、どの時点においても計算ツリー中の制限された数のパスだけが展開される。この制限はシステム中の利用可能なスペースに基づいている。この分散方式デッドロック回避スキームを用いて、システムは、ある数のパスの実行を保証するスペースを常に有し、この数は計算DAGの実行の間に変わり得る。
【0026】
適切な時間およびメッセージの限界を提供するために、該分散方式デッドロック回避スキームは、低通信コストでありながら、同時に該場所注釈計算DAGに内在的な最大の並列性を示すように設計される。このスキームは、由来厳格な多場所計算に対しデッドロック・フリーな実行を確実にする。あるアクテビティが作業プロセッサのスペース不足に起因して停留した場合、該アクテビティはローカル停留状態になる。あるアクテビティが、遠隔場所に子生成できずに停留した場合、該アクテビティは遠隔停留状態になる。あるアクテビティが同期依存に起因して停留した場合、該アクテビティは依存停留状態になる。
【0027】
計算ツリーの最大深度(アクテビティの数で表して)Dmaxは、実行の前に、インプット並列計算中に使われているパラメータから十分正確に見積もり可能であることが想定される。物理的デッドロック・フリーな実行を確実にするため、Dmax値が分散スケジューリング処理の中で用いられる。実行に先立ってDmaxが分かっているという想定は、Java(R)GrandeBenchmarkパッケージのカーネルおよび大型アプリケーションに当てはまる。LUFact(LU分解)、Sparse(スパース・マトリックスの乗算)、SOR(successiveover relaxation)(有限差分方程式を解くための逐次過緩和)を含めてカーネルに対するDmaxは、インプット・マトリックスの次元または反復の数あるいはその両方から正確に知ることができる。Crypt(国際データ暗号化アルゴリズム)およびSeries(フーリエ係数解析)などのカーネルについても同様に、Dmaxは、インプットのアレイ・サイズから明確に定義される。Molecular Dynamics、MonteCarlo Simulation、および3D Ray Tracerなどのアプリケーションについても同じことがいえる。また、SSCA#2ベンチマーク中のグラフ・カーネルについても、Dmaxは、インプット・グラフの△(直径)(例えば、R−MATグラフに対するO(polylog(n))、DIMACSグラフに対するO(√n))を見積もることによって知ることができる。
【0028】
分散データ構造およびプロセス設計
本発明の実施形態による、有限スペース処理に対する分散データ構造を図5に示す。図6は、本発明の実施形態による、有限スペースのスケジューリングに対する分散データ構造を示し、図7は、遠隔子生成および空デキューのケースを示す。
【0029】
AMRejectMap(i,r)、PrQ(i,r)およびStallBuffer(i,r)がそれぞれ、場所Pの作業プロセッサWに対するAMRejectMap、PrQおよびStallBufferを表すものとする。BはPrQ(i,r)およびStallBuffer(i,r)に対する組み合わされたスペースを表すものとする。FAB(i)およびWorkRejectMap(i)がそれぞれ、場所PにおけるFABおよびWorkRejectMapを表すものとする。FはFAB(i)において現在利用可能なスペースを表すものとする。AM(T)は、アクテビティTを子生成するためのアクティブ・メッセージを表すものとする。マップAMRejectMap中の、場所に対応するタプルから得られるリストのヘッドおよび末尾を有するアクテビティIDを使った連結リストを用いて、遠隔停留状態にあるアクテビティが追跡される。
【0030】
計算は、デフォルト場所Pの作業プロセッサWの計算DAGの根元(深度1)から開始される。どの時点においても、ある場所の作業プロセッサWはアクテビティTを実行しているか、または遊休中かのいずれかであり得る。詳細なプロセスを図8に提示する。この図には該プロセスのいくつかのケースが示されている。Tが場所Pに遠隔子生成(遠隔子生成の場合については図7を参照)を試みる必要があるとき、該アクテビティは、まず、AMRejectMap(i,r)中に停留アクテビティが既に所在するかどうかを点検する。停留アクテビティが既にある場合、TはStallBuffer(i,r)に追加され、AMRejectMap(i,r)中の、Pに対応するタプル中の末尾からの現在リンクがTに設定される。タプルの末尾もまたTに設定される。
【0031】
AMRejectMap(i,r)中に場所Pに対する停留アクテビティがない場合、作業プロセッサは場所Pにおいて遠隔子生成を試みる。Pにおいては、専用プロセッサによってFAB(j)中のスペース利用可能性の点検が行われる。FAB(j)が十分なスペースを有する場合、アクティブ・メッセージAM(U)が遠隔FAB(j)中に格納され、FAB(j)中の利用可能なスペースが更新されて、Tは実行を継続する。十分なスペースがない場合、これに応じてAMRejectMap(i,r)が更新され、TはStallBuffer(i,r)中に置かれる。
【0032】
作業プロセッサWが場所Pでスペースが利用可能との通知を受信した場合(通知受信のケース)、該プロセッサは、AMRejectMap(i,r)からPに対するタプルを得、アクティブ・メッセージとヘッド・アクテビティとをPに送信する。Pでは、WorkRejectMap(j)が更新される。また、Wは、タプル中の連結リストのリンクを更新することによってPに対するタプルを更新する。遠隔滞留されたアクテビティは実行可能化され、PrQ(i,r)中に置かれる(アクテビティ実行可能化のケース)。
【0033】
スペース限界およびデッドロック・フリーの論証
以下に、上記定理の論証の補題およびスケッチについて述べる(詳細については付属書C2を参照)。ここでは、スペース制約下での実行のためのスタック・スペースを考察するので、下記の補題/論証に、計算ツリー中のアクテビティの深度が使われる。アクテビティは一つの実行パスに沿って最大(Dmax−d)個の停留アクテビティを生成することができ、各スタック・フレームはSmaxバイトに制限されているので、深度dにあるアクテビティは、実行のため((Dmax−d)・Smax)より少ない量のスタック・スペースを必要とする。処理の過程で、実行のためアクテビティを取り上げる前に(空デキューのケース)、またはFAB中に遠隔アクティブ・メッセージを置く前に(遠隔子生成のケース)、このスタック・スペース(((Dmax−d)・Smax))が点検される。アクティブ・メッセージが受諾されるときには、FAB中にSmaxのスペースが留保され、遊休作業プロセッサがそのアクティブ・メッセージを実行のため取り上げるときに、FABからSmaxのスペースが払い出される。アクテビティが停留された場合(アクテビティ停留のケース)、BからSmaxスペースが取り去られ、一方、アクテビティが実行のため取り上げられる場合(空デキューのケース)、BにSmaxスペースが加えられる。
【0034】
補題1:深度d’を有するアクテビティを受諾する場所または作業プロセッサは、d’+1以上の深度のアクテビティを実行するスペースを有する。
【0035】
補題2:深度Dmaxにあるアクテビティを実行するスペースが常に存在する。
【0036】
補題3:(全計算ツリーの実行が終了する前の)どの時点においても、計算ツリー中の少なくとも一つのパスの実行が保証されている。
【0037】
論証:ここでは、深度ベースの順序付け特性(スケジューリングの間有効)が用いられる。場所Pが実行中の最高深度アクテビティをdとする。このとき、補題1により、該場所は、d>dとなるd深度のアクテビティを実行/受諾することを保証されている。従って、この深度dのアクテビティが、ローカルに子アクテビティを生成したいと望む場合(ローカル子生成のケース)、何の問題もなく生成することができる(補題が当てはまる)。上記の外に、該アクテビティが、遠隔場所Pに子アクテビティを生成したいと望み、その場所がそれを拒否した場合を考えてみる(遠隔子生成およびアクテビティ停留のケース)。これに対し2つのケースがある。第一のケースにおいては、Pは、おそらくは深度dには達していない、停留していないアクティブな実行パスを有する(補題が当てはまる)。第二のケースにおいては、Pは、少なくとも深度d+1のアクテビティを(該場所の作業プロセッサが)実行しているか(補題が当てはまる)、あるいは、停留状態にある、かかるアクテビティを有している。この停留状態が深度停留状態である場合、より高い深度のアクテビティがこの場所または別の場所で実行されている(補題が当てはまる)。この停留状態がローカル停留状態である場合、その作業プロセッサが実行しているより高い深度の別のアクテビティがなければならない(補題が当てはまる)。しかしながら、該停留状態が遠隔停留状態であれば、このアクテビティが待っている遠隔場所に同じ論旨が適用され、このリソース依存連鎖中のアクテビティの単調に増加する深度が見られることになる。この連鎖を追跡すれは、上記で説明した諸ケースにより、あるいは計算ツリー中の依存性なく実行可能な葉に到達することによって、最終的な実行パスに行き当たることになる(補題2)。しかして、計算ツリーに属する場所群を通してアクティブに実行しているパスが存在することが分かる。従って、各時間瞬間に、実行することを保証されたパスがシステム中に存在する。実際は、どの瞬間にも実行中の複数のパスがあり得、これはシステムおよび計算ツリー中の利用可能なスペース如何による。
【0038】
定理1(葉実行の保証):該スケジューリングは、計算の間、葉実行の保証プロパティを維持する。葉実行の保証は、計算ツリー中の各ノードが葉となって実行されることを確実にする。
【0039】
証明:以下に、計算ツリー中のアクテビティの深度に関する帰納法による証明を記す。
【0040】
基底ケース(アクテビティの深度はDmaxである):
【0041】
補題3によって、葉へのパスは保証される。深度はDmaxにあるアクテビティは、常に葉であり、他のアクテビティへの依存を有さない。従って、Dmaxに生じたアクテビティは(補題2により)常に実行される。
【0042】
帰納法の仮定:dおよびより高い深度にあるアクテビティは全て葉となり実行されることを保証されていると仮定する。
【0043】
帰納ステップ:深度d−1の全てのアクテビティが葉となり実行される保証をされていることを論証する必要がある。帰納法の仮定により、dおよびより高い深度にあるアクテビティについては終了しているものとする。上記終了がされていれば、デキュー中に残っているアクテビティがある場合は(それらは深度(d−1)であり)、葉となって実行のために取り上げられる。一方、デキューが空になっている場合(空デキューのケース)は、PrQおよびFABの両方から、最も深い深度のアクテビティが実行のため取り上げられる。かくて、深度(d−1)にあるアクテビティの実行が開始される。さらに、計算ツリー中の依存は子孫から祖先へのものである(由来厳格な計算)。従って、d以上の深度のアクテビティが実行を完了したとき、依存停留または遠隔停留状態にあった深度(d−1)のアクテビティが確実に葉となって実行可能にされる。しかして、これらはそれぞれの作業プロセッサのPrQの中に置かれる(アクテビティ実行可能化のケース)。深度(d−1)にあるアクテビティが遠隔停留状態であったとすれば、深度dに子アクテビティを生成するため、阻止されていたアクティブ・メッセージが遠隔場所に送信される(通知受信のケース)。帰納法の仮定によって、深度dの全アクテビティは終了しているので、この処理は既に以前に行われてしまっている。d深度のアクテビティが終了した時点で、デキューが空でなく、PrQ中に深度(d−1)のアクテビティがあると仮定する。これらのアクテビティは、デキュー中の現在の実行パスが終了するまで待つ。次いで、葉となったこれらのアクテビティは実行のため取り上げられる(なぜなら、これらはPrQの中で最高の深度を持ち最高の優先度を有しているからである)。従って、深度(d−1)にある全てのアクテビティも、葉となって実行されることを保証されている。
【0044】
定理2:図8のプロセスを使ってスケジュールされた由来厳格な計算は、場所あたりのスペースとしてO(m・(Dmax・Smax+n・Smax+S))バイトを取る。
【0045】
証明スケッチ:作業プロセッサ(プロセッサ)当たりの PrQ、StallBuffer、AMRejectMap、およびデキューは、場所当たり合計でO(m・(Dmax・Smax+n・Smax+S))バイトを取る。WorkRejectMapおよびFABは、それぞれ場所当たり合計O(m・n+Dmax)およびO(Dmax・Smax)のスペースを取る(前に説明した)。該スケジューリング方策は、有限スペースでデッドロック・フリーな実行を確実にするためスペース保持手段を用いる。この方策の基本的狙いは、各パスが最大Dmaxの深度まで進むことがあり得るとの前提で、利用可能なスペースに収容できるだけの範囲内でツリーの幅探索が行われるのを確実にすることである。
【0046】
該方策は、場所毎の作業プロセッサ当たり利用可能なスペースが、少なくともDmax・Smaxあるとの初期条件で開始される。ある作業プロセッサに対してスケジュールされる一切のアクテビティは、その作業プロセッサのPrQおよび StallBuffer中の利用可能なスペースを超えないことが確実にされている。デキュー中のアクテビティだけが停留され得、実行の前に、停留アクテビティの最大数に対し十分なスペースが利用可能であることが点検されているので、上記が成立する。さらなる詳細については付属書C.2を参照。
【0047】
時間およびメッセージの計算量の解析
ここでは、無制約および有限スペース双方の分散スケジューリング処理に対する時間およびメッセージの計算量の解析の概要を説明する。詳細については付属書(AおよびB)を参照。この解析は、作業プロセッサによる実行中のスロー(throw)の数に基づく。各スローは、作業プロセッサ(ワークを持たないプロセッサ)による別の作業プロセッサ(ビクチム)または同じ場所のFAB、のいずれかからアクテビティを盗む試みを表す。
【0048】
補題2.1:無制約スペース・スケジューリング処理によって実行されている、場所当たりのワークTを有する厳格な場所注釈計算DAGを考えてみる(図4)。このとき、場所kに対する実行(完了)時間は、O(T/m+Q/m+Q/m)であり、Qは場所kに少なくとも一つの実行可状態のノードがあるときのスローの数を表し、Qは場所kに実行可状態のノードがないときのスローの数を表す。全計算の実行時間の下限はO(max(T/m+Q/m))であり、上限はO(Σ(T/m+Q/m))となる。
【0049】
証明スケッチ:(トークン・ベースの計数法)各場所に置かれた、トークンを入れる3つのバケツを考える。ある場所の作業プロセッサが計算DAGのあるノードを実行するときトークンが入れられるワーク・バケツと、ある作業プロセッサが盗窃を試み、その場所に少なくとも一つの実行可状態ノードがあるときトークンが入れられる実行可状態ノード・スロー・バケツと、ある作業プロセッサが盗窃を試み、その場所に実行可状態ノードがないときトークンが入れられるゼロ・ノード・スロー・バケツ(場所にワークがないときの待ち時間をモデルしている)との3つのバケツである。ある場所の合計完了時間は、これら3つのバケツ中のトークンを数え、ランダム化ワーク・スティーリングを使い、場所内の負荷バランスされた実行を考察することによって計算することができる。実行時間の上限および下限は、計算DAGの構造および生成されたオンライン・スケジュールの構造の構造から得られる(付属書A)。
【0050】
次に、実行可状態ノード・スロー・バケツ中のトークンの数の限度が、ポテンシャル関数ベースの解析を使って計算される。独特の寄与は、場所内ワーク・スティーリングおよび遠隔場所への親和性駆動ワーク・プッシングの双方を用いる、図4に提示の多場所分散スケジューリング・アルゴリズムに対する時間計算量およびメッセージ計算量の上限および下限の証明にある。ポテンシャル関数ベースの解析のため、各実行可状態ノードuには、それが実行に従事しているかいないかによって、ポテンシャル32w(u)−1または32w(u)を割り当てられる(上記のw(u)=T∞,n−深度(u))。実行可状態にないノードは全て0ポテンシャルを持つことになる。ステップiにおけるシステムの合計ポテンシャルをφで表し、φ(D)によって、何らかの実行可状態のノードを有する全てのデキューのポテンシャルを表す。重要な考え方は、実行の過程で、ポテンシャルφ
【0051】
【数1】
【0052】
(根元ノードのポテンシャル)から0(実行可状態ノードが残されていない)まで単調に減少し、これが有限な数のステップにおいて起こることを示すことである。
【0053】
定理2.1:図4の親和性駆動多場所分散スケジューリング処理によって実行されている、場所k当たり、Tで表すワークを有する、厳格な場所注釈計算wDAGを考える。実行時間の下限期待値は、O(max(T/m+T))である。さらに、任意のε>0に対し、実行時間の下限は、少なくとも1−εの確率で、O(max/m+T∞,n+log(1/ε))である。同様な確率的上限が存在する。
【0054】
証明スケッチ:下限に対し、スローの数が(場所に少なくとも一つの実行可状態ノードがある場合)実行をフェーズに分けることによって解析される。各フェーズはO(P=mn)のスロー(場所当たりO(m)のスロー)を有する。一定の確率で、フェーズが一定のファクタによってポテンシャル低下を生じさせているのを示すことができる。さらに正確には、フェーズiとi+1との間で、Pr{(φ−φi+1)≧1/4・φ}>1/4となる(詳細は付属書B参照)。ポテンシャルは、
【0055】
【数2】
【0056】
からスタートして0で終了し、積分値を取るので、うまく行くフェーズの数は最大でも(2T∞,n−1)log4/33<8T∞,nである。しかして、場所当たりのスローの期待数はO(T∞,n・m)によって制限され、(チェルノフの不等式を使えば)少なくとも1−εの確率で、スローの数は、O(T∞,n・m)+log(1/ε)となる。補題2.1を適用すれば、実行時間の下限期待値は、O(max(T/m)+T∞,n)となる。詳細な証明および確率限界を付属書Bに示す。
【0057】
上限に関し、各場所における計算の部分グラフの実行を考えてみる。場所当たりの、実行可状態ノード・スロー・バケツ中のスローの数は、同様にO(T・m)によって制限され得る。さらに、最後の実行を完了した場所は、他の全ての場所のワーク・バケツおよび実行可状態ノード・スロー・バケツ中のトークンと等しい数のゼロ・ノード・スロー・バケツ中のトークンを有することになり得る。
【0058】
従って、その場所に対する完了時間は、全計算DAGの実行時間でもあり、O(Σ(T/m+T))となる。確率的上限は、同様にチェルノフの不等式を使って算定することができる。
【0059】
定理2.2:親和性駆動分散スケジューリング処理(図4)による、クリティカル・パス長さT∞,nを有する、厳格な場所注釈計算DAGの実行を考える。このとき、場所群を通して通信されるバイトの総計数は、O(I(Smax+n))であり、ある場所内で通信されるバイトの合計数の下限はO(m・T∞,n・Smax・n)の期待値を有する。上記のnは子孫から親への依存の矢印線の最大数であり、Iは一つの場所からある遠隔場所への遠隔子生成の数である。さらに、任意のε>0に対し、少なくとも1−εの確率で、場所当たりの通信オーバーヘッドの下限は、O(m・n・(T+log(1/ε))・n・Smax)となる。同様にメッセージの上限が存在する。
【0060】
場所間および場所内通信の通信計算量は、実行過程での遠隔子生成および場所内のワーク・スティーリングのためのスローをそれぞれ考察することによって導出することができる。詳細な証明は付属書Cに示す。
【0061】
有限スペースのスケジューリング処理は、拒否された子生成に対して一定の作業を行うが、FAB(並列優先キュー)操作のため追加のlog(Dmax)ファクタを費消する。しかして、有限スペース・スケジューリング処理の時間計算量の下限期待値は、O(max(T/m)・log(Dmax)+T∞,n)となる。時間計算量の上限の解析には、リソース駆動の待ち時間モデル設定が関わって来、本明細書では取り扱わない。場所間メッセージの計算量は、拒否された遠隔子生成の取扱いおよびスペース利用可能性の通知のために一定量の作業があるので、定理2.2と同様である。
【0062】
本明細書で説明された本発明のさまざまな例示的実施形態を従来の研究と対比するため、以下に簡潔な説明を提示する。従来の研究は、由来厳格なX10計算に対するワーク・スティーリングのフレームワークを拡張し、SMP展開に対するデッドロック・フリーなスケジューリングを構築した。従来研究は、ドッペルゲンガー実行モードを使いながら、単一プロセッサ・クラスタ展開上の有限リソースを用いる、デッドロック・フリーな実行を実証した。しかしながら、この研究は、このフレームワーク中でのワーク・スティーリングを考慮せず、パフォーマンス限界の提示も行っていない。ドッペルゲンガー実行モードは、一般的に無原則に高いコストを招きかねない。これに対し、本発明の実施形態は、アクティブ・メッセージ・ネットワークを用いた、SMPクラスタ展開上の親和性駆動スケジューリングを考案している。さらに、本発明の実施形態は、場所内および場所間ワーク・スティーリングを含み、デッドロック・フリー保証のされた、スペースおよびパフォーマンス限界を実証している。
【0063】
他の従来研究は、マルチプロセッサHSMS(hardware−controlled shared memory system(ハードウエア制御共有メモリ・システム))上の入れ子並列計算を考案し、キャッシュ・ミスの数および実行時間の上限を実証した。また、該研究は、コスト高な各スレッド/アクテビティの同期化をもたらす、ローカル性誘導式ワーク・スティーリング・アルゴリズムを提示している。しかしながら、アクテビティをそれらが親和性を有するプロセッサで実行することはできない。これに対し、本発明の実施形態は、多場所構成における親和性駆動スケジューリングを考案し、デッドロック・フリーな実行を保証しながら、有限スペースの下でのパフォーマンス限界を提示する。
【0064】
さらなる他の従来研究は、ポテンシャル関数技法を用いて、多様なカーネル・スケジュールの下における一般的なマルチスレッド計算に対する、多重プログラム化SMP環境でのノンブロッキング・ワーク・スティーリング・アルゴリズムのパフォーマンス限界を提示した。しかしながら、このアプローチは、ローカル性誘導のスケジューリングを考慮していない。これに対し、本発明の実施形態は、有限リソースの下でデッドロック・フリー性を保証し、パフォーマンス解析にポテンシャル関数技法を活用しつつ、専用モードで実行されるアプリケーション(単独型)に対する親和性駆動多場所ワーク・スティーリング処理を考案している。
【0065】
まださらなる従来研究は、小規模のSMP群への「ローカル性指向」負荷分散達成を試みる、ワークディーリング技法を導入した。これは、コスト高の比較交換演算なしに、大域的にバランスされたやり方で、ワークをプロセッサに分配するための低オーバーヘッドのメカニズムを有する。本発明の各種実施形態は、プログラマが、負荷バランスを考慮し最適なパフォーマンスが得られるようなやり方で、プログラム中の場所注釈を規定することを前提としている。本発明の実施形態によれば、ある場所に対する親和性を有するアクテビティは、デッドロック・フリー性を保証されながらその場所での実行を保証される。
【0066】
まださらなる研究は、必要スペースの少ない深度優先スケジューラを使い、低廉なスケジューリング・オーバーヘッドとワーク・スティーリングの良好なローカル処理とを組み合わせた、共有メモリ・マシン用のスペース効率的なスケジューリング・アルゴリズムを提示している。この研究は、ローカル処理のため、計算DAG中で近接したスレッドのスケジューリングの発見的問題解決方式を同一のプロセッサ上で用いている。本発明の実施形態は、多場所構成を考え、プログラマが場所注釈計算における親和性を規定することを前提としている。
【0067】
まださらなる研究は、多重プログラム環境における、2レベル適応マルチプロセッサ・スケジューリングを研究した。この研究は、プロセッサの対する要求の形でジョブ・スケジューラに連続的な並列処理フィードバックを提供し、トリム解析を使ってパフォーマンス限界を得る、フォーク・ジョイン(fork−join)マルチスレッド・ジョブのための、ランダム化ワーク・スティーリング・スレッド・スケジューラを提示した。しかしながら、この研究はローカル処理誘導のスケジューリングを考慮しなかった。本発明の各種実施形態は、専用モードの実行を想定しているが、多重プログラム・モードに拡張することもできる。
【0068】
図15は、各種のスケジューリング・アプローチと本発明の実施形態によるものとの間の例示的比較を示す。本発明の実施形態によるスケジューリングへのアプローチは、DSA−I(無制約スペース用)およびDSA−II(有限スペース用)として示されている。使われている標記は以下による。
● 列「スケジューリング・アルゴリズム」は、WS(Work Stealing(ワーク・スティーリング))、WD(WorkDealing(ワーク・ディーリング))、DFS(Depth First Search(深度優先探索))、およびWP(Work Pushing(ワーク・プッシング))の値を有する。
● 列「親和性」駆動は、Y(はい)、N(いいえ)、およびL(限定された範囲)の値を有する。
● 列「計算の性質」は、FS(fully−strict(親子厳格))、G(general(一般))、NP(nestedparallel(入れ子並列))、IDP(iterative data parallel(反復データ並列))、およびTS(terminally strict(由来厳格))の値を有する。
● 列「MPかSPか」は、多場所(multi−place(MP))アルゴリズムかまたは単一場所(singleplace(SP))アルゴリズムかを示す。
● 列「DMかMPMか」は、専用モード(dedicated mode (DM))環境かまたは多重プログラムモード(multi−programmedmode(MPM))環境かを示す。
● 列「同期オーバーヘッド」は、L(low(低))、M(medium(中間))およびH(high(高))の値を有する。
● 列「DGモード」は、多場所構成中にドッペルゲンガー・モードが用いられているかどうかを示す。
● 列「IAPか両方か」は、場所内スティーリング(intra−placestealing(IAP))だけがサポートされているのか、場所間および場所内スティーリングの両方がサポートされているのかを示す。
● 最後の列は、それぞれのスケジューリング・アプローチで、デッドロック・フリー性、スペース限界、および時間限界が提供されているかどうかを示す。
【0069】
場所不問のアクテビティ
該ラン・タイム・システムは、メニーコア・超並列アーキテクチャ上に、大型ハイブリッド並列計算のオンライン分散スケジューリングを備える必要がある。本明細書では、事前規定された配置を有するアクテビティ(スレッド)を親和性注釈付きアクテビティという。加えて、該並列プログラム中には、どの場所でも実行可能なアクテビティ(スレッド)がある。かかるアクテビティを、場所不問アクテビティという。親和性注釈付きアクテビティおよび場所不問アクテビティの両方を有する並列計算をハイブリッド並列計算という。
【0070】
本発明では、場所不問アクテビティをインプットされるハイブリッド計算DAG中に入れることが可能である。この一般化は、プログラマがより多くの並列アプリケーションを容易に表現することを可能にする。さらに、本発明は、場所間優先化ランダム・ワーク・スティーリングを組入れて、場所群を通した自動的動的な負荷バランスを提供する、新規の分散スケジューリング処理を提供する。適切に選択された確率分布を使った、場所群を通しての優先化ランダム・ワーク・スティーリングが効率的であることが実証されている。さらに、これは、場所間の距離がさまざまな場合(例、3Dトーラス相互接続)、低廉な平均通信コストをもたらす。本発明の実施形態は、ハイブリッド並列計算の効率的スケジューリングのため、従来研究中の、デッドロック・フリーな実行のための分散デッドロック回避方策と、時間およびメッセージ計算量の実証とを活用している。本発明の各種実施形態のいくつかの主要な態様には以下が含まれる。
【0071】
第一に、場所当たり無制約な(十分な)スペースを想定した、厳格な多場所ハイブリッド並列計算のためのオンライン多場所分散スケジューリング・アルゴリズムが提供される。この処理は、(a)場所内ワーク・スティーリング、(b)親和性注釈アクテビティに対する遠隔場所ワーク・プッシング、および(c)場所不問アクテビティに対する場所群を通しての優先化ランダム・ワーク・スティーリングを組み込んでいる。後記で、場所群を通した優先化ランダム・スティーリングが効率的であることを示す。また、スケジューリング・アルゴリズムの時間およびメッセージ計算量の限界も本明細書中に提示する。
【0072】
第二に、場所当たり制限されたスペースに対する、証明可能な物理的デッドロック・フリー実行を伴った、由来厳格な多場所ハイブリッド計算のための新規な分散スケジューリング処理が提供される。
【0073】
プロセス設計:各場所は、その場所のインタフェース・プロセッサに管理される、一つの新着アクテビティ・バッファ(FAB)を維持する。ある遠隔場所に対する親和性を有するアクテビティは、その場所のFABに押し入れられる。各場所の各作業プロセッサは、(a)場所不問の実行可状態アクテビティを包含するAPRデキュー、(b)親和性注釈付き実行可状態アクテビティを包含するAFRデキュー、および(c)停留アクテビティを包含するStallBufferを有する(図9参照)。各場所のFAB並びに各作業プロセッサのAFRデキューおよびAPRデキューは、並列デキュー・データ構造を用いて実装される。また、各場所は、盗窃可状態の場所不問アクテビティを有する作業プロセッサのリストである、作業プロセッサ・リスト・バッファ(WLB:WorkerList Buffer)も維持する。WLBは並列連結リストとして実装され、インタフェース・プロセッサによって維持される。WLBは、遠隔スティーリングの助力をし、この場所からアクテビティを盗もうとする遠隔の作業プロセッサは、WLBから、盗窃の対象とできる作業プロセッサについての情報を得る。該分散スケジューリング・アルゴリズムを、図10に示す。
【0074】
時間計算量解析:システム中の実行可状態ノードに対する、ポテンシャル関数を使った時間計算量解析の詳細は従来研究にあるのと同様である。以下に、時間およびメッセージの計算量の簡潔な直感的説明を示す。本発明の実施形態に独特の寄与は、(a)適切な確率密度関数を使った、優先化ランダム場所間ワーク・スティーリングが効率的であることの証明、並びに、(b)本明細書で提示する多場所分散スケジューリング・アルゴリズムに対する時間計算量およびメッセージ計算量の下限および上限の証明が、(1)場所内ワーク・スティーリングと、(2)遠隔場所ワーク・スティーリングと、(3)遠隔場所親和性駆動ワーク・プッシングと、を含んでいることである。
【0075】
以降、スローとは、作業プロセッサ(ワークのないプロセッサ)によるアクテビティを盗もうとする試みをいう。これは、別のローカル作業プロセッサ(ビクチム)からアクテビティが盗まれるときには場所内・スローとなり得、アクテビティが遠隔場所から盗まれるときは遠隔場所スローとなり得る。ポテンシャル関数ベースの解析のため、各実行可状態ノードuには、それが実行に従事しているかいないかによって、ポテンシャル32w(u)−1または32w(u)が割り当てられる(上記のw(u)=T∞,n−深度(u))。ステップiにおけるシステムの合計ポテンシャルをφで表し、φ(D)によって、一部に実行可状態のノードを有する、全APRデキューおよびAFRデキューのポテンシャルを表す。
【0076】
優先化ランダム場所間ワーク・スティーリング:以下に、適切に選択された場所群を通した確率分布を用いた、距離優先化場所間ワーク・スティーリングが効率的に機能することを証明する。場所群を通した2Dトーラス相互接続を考える。あるプロセッサが盗窃を試みる場所を開始場所ということにする。開始場所の周囲の場所群をリングと見なすことができる。開始場所からより遠くの距離にあるリングに移動すると、リングのサイズが大きくなる。すなわち、開始場所からより遠方のリング中には、開始場所により近いリングよりも多くの場所が存在する。(図11参照)。開始場所からの遠隔盗窃の試みにおいて、同一のリング中の場所群は等しい確率で選択される。
【0077】
この確率は、リングの開始場所からの距離の増加とともに低減するが、全場所の全プロセッサに対するプロセッサ選択確率の合計は当然ながら1に等しい。このシナリオをモデル化するために、P個のボールが、独立的に、不規則ランダムにP個のビンに投げ入れられる、一般化された「ボールおよび重み付けビン(Ballsand Weighted Bins)」ゲームを考える。マルコフの不等式を使い、失敗する盗窃試みの確率に対する上限が導かれる。
【0078】
補題3.1.ボールおよび重み付けビン・ゲーム:2Dトーラス・トポロジ中に配置されたn個の場所があるとする。少なくともP個のボールが、独立的に、不規則ランダムにP個のビンに投げ入れられたとし、i=1,…,Pで、ビンiは重みWを有するとしよう。合計重みは、W=Σ1≦i≦Pとなる。各ビンiに対し、下記のようにランダム変数X(i)を定義する。
どれかのボールがビンiに入れば、X(i)=W
何も入らなければ、X(i)=0
開始場所から最後のリングまでの距離をlmaxとする。リングを選択する確率分布を以下により定義する。盗窃要求元から距離lmaxにある最終リングを選択する確率をγ/lmaxと表すものとし、0<γ<1である。全プロセッサを通したプロセッサ選択の確率の和が1になるようにして、他のリングを選定する確率が適切に選ばれる。(例えばγ=3/4とする。ここで、lmax/2の内側にあるリング群の各々に、5/(4lmax)の確率を、lmax/2の外側にあるリング群の各々に3/(4lmax)の確率を割り当てる。
X=Σ1≦i≦PX(i)とし、βを0<β<1の範囲とすれば、
PrX≧β・W>1−1/((1−β)eγ/2)。
【0079】
証明:開始場所から距離lにあるリングは8l個の場所を有する。各場所はm個のプロセッサを有するので距離lのリングは8lm個のプロセッサを有し、それらプロセッサの各々は、ボールがそのプロセッサ(ビン)に入る等しい確率を有する。
【0080】
次に、各ビンiに対し、ランダム変数 W(i)−X(i)を考える。この変数は、ボールがビン(i)に到達しなければW(i)の値を取り、到達すれば0値を取る。しかして、
【0081】
【数3】
【0082】
これから、E[W−X]≦Weγ/2
従って、マルコフの不等式から:
Pr{(W−X)>(1−β)W}<E[W−X]/((1−β)・W)
⇒Pr{X<β・W}≦1/(1−β)・eγ/2
⇒Pr{X≧β・W}>1−1/((1−β)eγ/2)。
【0083】
ボールがどのビンに行くかの選択が傾斜確率であるのに起因して、試みが成功する確率が一様確率の場合に比べて低下しているのが分かる。リングの距離が確率変動に基づいて選ばれたとしても、実際のプロセッサの距離ベースの確率変動も、適切な確率分布を使って同様に解析することができる。β=1/5,γ=3/4を選択することによって、システムに亘るO(mn)回の遠隔場所スローの後で、φ(D)中の実行可状態の場所不問アクテビティのポテンシャルが1/16だけ減少するのを示すことができる。時間およびメッセージの計算量の下限および上限は下記の定理で与えられる。詳細な証明は従来研究中の解析を拡張して得られる。
【0084】
定理3.1:(前述の)分散スケジューリング処理によって実行されている、場所Pに対するワーク(Tと呼ぶ)を有する厳格な多場所ハイブリッド計算DAGを考える。該計算のクリチカルパス長さをT∞,nとする。実行時間期待値の下限はO(max/m+T∞,n)であり、上限はO(Σ(T/m+T))である。さらに、任意のε>0に対し、実行時間に対する下限は、少なくとも1−εの確率で、O(max/m+T∞,n+log(1/ε))となる。同様な確率的上限が存在する。
【0085】
定理3.2:(前述の)分散スケジューリング・アルゴリズムによる、クリチカルパス長さT∞,nを有する厳格な多場所ハイブリッド計算DAGの実行を考えてみる。このとき、場所群を通して交信されるバイトの合計数の期待値は、O((I・Smax・n)+m・T∞,n・Smax・n)である。さらに、ある場所内で交信されるバイトの数の下限の期待値は、O(m・T∞,n・Smax・n)である。前式のnは、子孫から親への依存矢印線の最大数であり、Iは一つの場所からある遠隔場所への遠隔子生成の数である。さらに、任意のε>0に対し、少なくとも(1−ε)の確率で、場所当たりの場所内通信オーバーヘッドの下限は、O(m・(T∞,n+log(1/ε))・n・Smax)となる。同様にメッセージの上限が存在する。
【0086】
有限スペースにおけるハイブリッド計算の分散スケジューリング:実際のシステムの限定されたスペースのため、分散スケジューリング・アルゴリズムは、実行時間への影響を最小化しつつ同時にデッドロック・フリー保証を与えながら、計算DAGのオンライン幅優先拡張を制限しなければならない。限定されたスペース制約という要因を背景として、この分散オンラインスケジューリング・アルゴリズムは、由来厳格な多場所ハイブリッド計算に対しデッドロック・フリー性を保証している。システム中の各場所におけるスペース制約があるため、該アルゴリズムは、物理的デッドロック・フリー性を確実にするため、各作業プロセッサおよび場所のスペース利用可能性を追跡把握している必要がある。該アルゴリズムは、現在のパス中の葉への残りのパスを実行するのに十分なスペースがある場合にだけ、遠隔アクテビティ・プッシング、場所間スティーリング、および場所内スティーリングが実施されることを確実にすることによって、上記を行っている。この利用可能なスペースの追跡およびFABから実行するための深度ベースのアクテビティの順序付けの使用は、分散されたデッドロック回避の助力となる。あるアクテビティは、(a)作業プロセッサに対するスペース不足によるローカル停留状態、(b)遠隔場所への子生成の不成功による遠隔停留状態、(c)同期依存による依存停留状態、の一つの状態になり得る。
【0087】
本発明は、(アクテビティも数で表した)計算ツリーの最大深度Dmaxが、実行の前に、インプットされた並列計算で使われているパラメータからかなり正確に見積もることができることを前提としている。物理的デッドロック・フリーな実行を確実にするために、分散スケジューリング・アルゴリズムの中で、Dmaxの値が使われる。実行に先立ってDmaxが分かっているという前提は、Java(R)GrandeBenchmarkパッケージのカーネルおよび大型アプリケーションに当てはまる。
【0088】
分散データ構造およびプロセス設計:有限スペース・スケジューリング・アルゴリズムに対して使用されるデータ構造を図12に記載する。図13は、本発明の実施形態による、有限スペース・スケジューリングに対する分散データ構造を図示する。
【0089】
AM(T)が、アクテビティTを子生成するためのアクティブ・メッセージ表すものとする。マップAMRejectMap中の、場所に対応するタプルから得られるリストのヘッドおよび末尾を有するアクテビティIDを使った連結リストを用いて、遠隔停留状態にあるアクテビティが追跡される。表記目的の上で、添え字(i)および(i,r)はそれぞれ、データ構造が場所Pおよび作業プロセッサWに所在することを表すものとする。
【0090】
計算は、計算DAGの根元から開始されこれが深度1である。計算は、デフォルト場所Pの作業プロセッサWで開始される。どの時点においても、ある場所の作業プロセッサWは、アクテビティTを実行しているか、または遊休中かのいずれかであり得る。図14に詳細なプロセスを提示する。簡潔にするため、インタフェース・プロセッサが取るアクションは暗黙の形で示されている。
【0091】
分散方式デッドロック・フリーは、親和性駆動スケジューリングにおけるように帰納法によって証明でき、簡潔にするため証明を省略する。核心は、アクテビティが拒否された場合には、より高い深度のアクテビティが間違いなくその場所で実行されていることを論証することであり、次いで、最高深度アクテビティから始まって完了したアクテビティによってスペースが開放されるにつれ、より低い深度のアクテビティが遡求され、最終的には全てのアクテビティが葉となって実行されることを論証することができる。以下の定理がスペース限界を与える。
【0092】
定理3.3:図14のアルゴリズムを用いてスケジュールされた、由来厳格な計算は、場所当たりのスペースとしてO(m・(Dmax・Smax+n・Smax+S))バイトを使用する。
【0093】
場所間メッセージ計算量は、(場所間ワーク・スティーリングに対するスローと同様なオーダーの数を想定すれば)拒否された遠隔子生成の取扱いおよびスペース利用可能性の通知のために一定の作業量があるので、定理2.2と同様となる。場所内ワーク・スティーリングに対しても、メッセージの計算量は定理2.2と同じである。
【0094】
多重プログラム・モード
本発明の実施形態は、適応ワーク・スティーリング・フレームワークを用いる多重プログラム・モードを提供する。このモードでは(複数の場所を有する)システム中に複数のジョブがある。カーネル・スケジューラが、ジョブのリソース利用度に基づいてそのジョブが利用可能なリソースを変更するので、このフレームワークは適応型である。スケジューラは、ジョブの利用度が高ければより多くの利用可能リソースを割り当てることがあり、利用度が低ければそのジョブからリソースを取り上げることがある。ユーザ・スケジューラは、カーネル・スケジューラから一組のリソース(リソースとはプロセッサ/メモリのことである)を与えられ、有限スペース親和性駆動分散スケジューリング・アルゴリズムを実行する。本発明の実施形態は、カーネル・スケジューラに、場所当たりのプロセッサおよび場所当たりのメモリに対する要求のオンラインのフィードバックを提供する。各ジョブ毎に、プロセッサ/コアおよびメモリの最低要求数があり得る。カーネル・スケジューラは、上記のリソースが各ジョブに常に利用可能であることを保証することになる。これは、そのジョブに対し期待されている最低パフォーマンス要求に基づく。このモードでは、2つのスケジューラがある。一つは、カーネル・スケジューラからリソースを得るユーザ・レベルのスケジューラである。該スケジューラは、定期的間隔で、供給されたリソースが過剰利用状態か過少利用状態かをカーネル・スケジューラに連絡する。もう一つは、複数のジョブにそれらのリソース利用度に基づいてリソースを供給する、カーネル・レベルのスケジューラである。上記のリソースは、プロセッサ/コアおよびメモリの両方を含む。
【0095】
本発明の実施形態は、本明細書に記載したような本発明の実施形態の機能と整合するプログラム命令を実行するのに適するよう作られた、一つ以上の計算デバイスで実施することができる。この点に関し、図16にかかる計算装置の非限定の一例を示す。
【0096】
ここで図16を参照すると、コンピュータ・システム100の例示的実施形態のブロック図が描かれている。図16に描かれた例示的実施形態は、デスクトップ・コンピュータ又はワークステーション・コンピュータなどの電子デバイスとすることができる。しかしながら、該図から見取れ、上記で説明したように、本発明の実施形態は、適切に構成された任意のデバイスで実行することができる。
【0097】
図16に示されるように、コンピュータ・システム100は少なくとも一つのシステム・プロセッサ42を含み、該プロセッサは、プロセッサ・バス44によって、読取り専用メモリ(ROM:Read−OnlyMemory)40およびシステム・メモリ46に連結されている。システム・プロセッサ42には、AMD Corporationが作製するAMDプロセッサ系列の一つ、またはINTELCorporationが作製するプロセッサを含めることができ、該プロセッサは汎用型プロセッサであって、電源オン時に、ROM40中に格納された起動コード41を実行し、しかる後、システム・メモリ46に格納されたオペレーティング・システムおよびアプリケーション・ソフトウエアの制御の下でデータを処理する。システム・プロセッサ42は、プロセッサ・バス44とホスト・ブリッジ48とを介して、ペリフェラル・コンポーネント ・インターコネクト(PCI:Peripheral Component Interconnect)ローカル・バス50に連結されている。
【0098】
PCIローカル・バス50は、アダプタおよびブリッジを含む、いくつかのデバイスの接続をサポートしている。これらのデバイスの中には、コンピュータ・システム100をLANに結合するネットワーク・アダプタ66、およびコンピュータ・システム100をディスプレイ69に結合するグラフィクス・アダプタ68がある。PCIローカル・バス50上の通信は、ローカルPCIコントローラ52に制御され、該コントローラは、メモリ・バス54を介して不揮発性ランダム・アクセス・メモリ(NVRAM:non−volatilerandom access memory)56に連結されている。ローカルPCIコントローラ52は、第二ホストブリッジ60を介して追加のバスおよびデバイスに連結することができる。
【0099】
コンピュータ・システム100は、ISAブリッジ64によってPCIローカル・バス50に連結された業界標準アーキテクチャ(ISA:IndustryStandard Architecture)バス62をさらに含む。ISAバス62には、入力/出力(I/O:input/output)コントローラ70が連結されており、該コントローラは、コンピュータ・システム100と、キーボード、マウス、シリアルおよびパラレル・ポート、その他などの接続周辺デバイスとの間の通信を制御する。ディスク・コントローラ72は、ディスク・ドライブをPCIローカル・バス50に接続している。USBバスおよびUSBコントローラ(図示せず)は、ローカルPCIコントローラ52の一部である。
【0100】
当業者が十分理解するように、本発明の態様をシステム、方法、またはコンピュータ・プログラムとして具現化することができる。従って、本発明の態様は、完全なハードウエア実施形態、完全なソフトウエア実施形態(ファームウエア、常駐ソフトウエア、マイクロ・コード等を含む)、または、ソフトウエア態様とハードウエア態様とを組み合わせた実施形態(本明細書では全体を、一般的に「回路」、「モジュール」または「システム」ということがある)の形を取ることができる。さらに、本発明の態様は、(体内に具現された)コンピュータ可読のプログラム・コードを有する(一つ以上のコンピュータ可読媒体(単数または複数)中に具現された)コンピュータ・プログラムの形を取ることができる。
【0101】
一つ以上のコンピュータ可読媒体(単数または複数)の任意の組合せを用いることができる。該コンピュータ可読の媒体は、信号媒体またはコンピュータ可読記憶媒体とすることができる。コンピュータ可読記憶媒体は、例えば、以下に限らないが、電子的、磁気的、光学的、電磁気的、赤外的な、または半導体の、システム、装置、またはデバイス、あるいは上記の任意の適切な組合せとすることができる。コンピュータ可読記憶媒体のさらに具体的例(非排他的リスト)には、一つ以上の配線を有する電気接続、携帯コンピュータ・ディスケット、ハード・ディスク、ランダムアクセス・メモリ(RAM)、読取り専用メモリ(ROM)、消去可能プログラマブル読取り専用メモリ(EPROM:erasableprogrammable read−only memory、またはフラッシュ・メモリ)、光ファイバ、携帯コンパクト・ディスク読取り専用メモリ(CD−ROM:compactdisc read−only memory)、光記憶デバイス、磁気記憶デバイス、または上記の任意の適切な組合せが含まれよう。本文書の文脈において、コンピュータ可読記憶媒体は、命令実行システム、装置、またはデバイスによって、またはこれらに関連させて使うためのプログラムを包含または格納できる任意の有形媒体であり得る。
【0102】
コンピュータ可読の信号媒体は、例えばベースバンド、または搬送波の一部の中など、内部にコンピュータ可読プログラム・コードを具現する伝播データ信号を含み得る。かかる伝播信号は、以下に限らないが、電磁気的、光学的、またはそれらの任意の適切な組合せを含む、さまざまな形態の任意の形態をとり得る。コンピュータ可読信号媒体は、コンピュータ可読記憶媒体ではなく、命令実行システム、装置、またはデバイスによって、またはこれらに関連させて使うためのプログラムを通信、伝播、または移送可能な任意のコンピュータ可読媒体であり得る。
【0103】
コンピュータ可読媒体に具現されたプログラム・コードは、以下に限らないが、無線、有線、光ファイバ・ケーブル、RFなどまたは上記の任意の適切な組合せを含め、任意の適切な媒体を使って送信することができる。
【0104】
本発明の態様のオペレーションを実施するためのコンピュータ・プログラム・コードは、Java、Smalltalk、C++、又は類似の言語などのオブジェクト指向プログラミング言語、あるいは、「C]プログラミング言語、または類似プログラミング言語などの従来式手続き型プログラミング言語を含め、一つ以上のプログラミング言語の任意の組合せで書くことができる。該プログラム・コードは、単独型ソフトウエア・パッケージとして全部をユーザのコンピュータ(デバイス)でまたは部分的にユーザのコンピュータで実行することができ、もしくは、部分的にユーザのコンピュータで且つ部分的に遠隔コンピュータで、あるいは全部を遠隔のコンピュータまたはサーバで実行することができる。上記後段のシナリオでは、遠隔コンピュータは、ローカル・エリア・ネットワーク(LAN:localarea network)または広域ネットワーク(WAN:wide area network)を含む任意の種類のネットワークを介してユーザのコンピュータに接続することができ、あるいは、(例えば、インターネットを介してインターネット・サービス・プロバイダを使うなど)外部のコンピュータに接続を行うことができる。
【0105】
本発明の態様は、本発明の実施形態による方法、装置(システム)およびコンピュータ・プログラムのフローチャート説明図またはブロック図あるいはその両方を参照しながら、本明細書に記載されている。これらフローチャート説明図またはブロック図あるいはその両方の中の各ブロック、および該フローチャート説明図またはブロック図あるいはその両方の中のブロックの組合せが、コンピュータ・プログラム命令によって実行可能なことは理解されよう。これらのコンピュータ・プログラム命令を、汎用コンピュータ、特殊用途コンピュータ、または他のプログラム可能データ処理装置のプロセッサに供給してマシンを形成し、これら命令が、該コンピュータまたは他のプログラム可能データ処理装置のプロセッサを介して実行され、上記フローチャートまたはブロック図あるいはその両方の中のブロックまたはブロック群に規定された機能/処理を実行するための手段を生成するようにすることができる。
【0106】
また、これらのコンピュータ・プログラム命令を、コンピュータ、他のプログラム可能データ処理装置、または特定の仕方で機能する他のデバイスに命令することが可能なコンピュータ・プログラムとして可読媒体等に格納することができ、該コンピュータ可読媒体等の中に格納された命令が、上記フローチャートまたはブロック図あるいはその両方の中のブロックまたはブロック群に規定された機能/処理を実行する命令を包含する製品を形成するようにすることもできる。
【0107】
さらに、これらのコンピュータ・プログラム命令を、コンピュータ、他のプログラム可能データ処理装置、または他のデバイスにロードし、該コンピュータ、他のプログラム可能データ処理装置、または他のデバイス上で一連の操作ステップを実施させ、該コンピュータまたは他のプログラム可能装置で実行される命令が、上記フローチャートまたはブロック図あるいはその両方の中のブロックまたはブロック群に規定された機能/処理を実行するためのプロセスをもたらすような、コンピュータ実行のプロセスを生成するようにできる。
【0108】
本開示は例示および説明の目的で提示されているが、全体網羅または範囲限定を意図するものではない。当業者には、多くの修改および変更が明白であろう。これらの実施形態は、原理および実際的応用を説明し、他の当業者が、意図された特定の用途に適したさまざまな変更を備えたさまざまな実施形態のために本開示を理解できるように、選ばれ記載されたものである。
【0109】
本発明の例示的実施形態は、添付の図面を参照しながら本明細書に説明されているが、本発明の実施形態はこれらにぴったりの実施形態に限定されるものでなく、当業者が、本開示の範囲または精神から逸脱することなく、これら実施形態に他のさまざまな変更および修改を加えることができることを理解すべきである。
【符号の説明】
【0110】
40 ROM
41 起動コード
42 システム・プロセッサ(群)
44 プロセッサ・バス
46 システム・メモリ
48 ホスト・ブリッジ
50 PCIローカル・バス
52 ローカルPCIコントローラ
54 メモリ・バス
56 NVRAM
60 ホスト・ブリッジ
62 ISAバス
64 ISAブリッジ
66 ネットワーク・アダプタ
68 グラフィック・アダプタ
69 ディスプレイ
70 I/Oコントローラ
72 ディスク・コントローラ
図1
図2
図3
図4
図5
図6
図7
図8
図9
図10
図11
図12
図13
図14
図15
図16