the,“T”のステップ“i”よりも先にスケジューリングされる。is,その直前のノードすべて(そのすべての親ノードと等価である)がステップ“i”以前にスケジューリングされている場合に、“T”内のステップ“i”においてスケジューリングされる準備が整っている。“T”内のステップ“i”における“G”の最前線は、“i”以前にスケジューリングされた、スケジューリングされていない子ノードを有するすべてのノードの組である。”が準備が整ったすべてのノードから構成されるようなトラバーサルである。(DFTあるいは1−DFT)は、準備が整ったノードのスタックを管理することによって得られる。popped)てスケジューリングされ、新たに準備が整ったノードがスタックの最上部に(あらゆる順序で)配置(プッシュ)される。DFTの“i”番目のノードは、DFT番号“i”を有していると呼称される。"i".【0063】(ソースおよびシンクが1つずつの)直列−並列DAGは以下のように規定される。”は単一のノード(これはソースノードでもありシンクノードでもある)から構成された、エッジを有さない直列−並列DAGである。”へのディレクテッドエッジを追加することによって得られるグラフは直列−並列である。k,によって得られるグラフは直列−並列である。Thus,ノードは、1より大きい入射度(indegree)あるいは出射度(outdegree)を有することはあるが、双方を有することはない。j中のw'”というノードよりなるあらゆるノード対に関して最低共通ソースノードである。”個の最先ノードがスケジューリングされる場合に、1トラバーサルに基づいているものと定義される。scheduled,あるいは“u”のみがスケジューリングされるかのいずれかである。与えられた1トラバーサルに関して、その1トラバーサルに基づいた“p”トラバーサルが一意的に定義されることに留意されたい。account,デプスファースト“p”トラバーサルである。デプスファースト“p”トラバーサル(“p”−DFT)は、デプスファースト1トラバーサルに基づく“p”トラバーサルである。一例が図15に示されている。1トラバーサルに基づいて“p”トラバーサルをインプリメントするためには、“p”トラバーサルのそれぞれのステップにおいて、準備が整っているノード間での1トラバーサル間の相対的な順序を決定するための方法が必要になる。DAG“G”の“p”−DFTを示している。“G”中の左側のノードNO2には、“G”の1−DFTの順序で番号が付されている。”に従ってラベルが付されている。”はステップ“i”においてスケジューリングされるノードの組であって図中では“i”というラベルが付されたノードの組である。".【0067】以下の説明は、動的に展開するDAGに係るものである。DAGとしてモデル化される。DAGがノードがスケジューリングされる順序に依存しないという意味において、プログラムが決定論的であることを仮定する。計算中のそれぞれの単位ワークタスクに関してDAG中にノードが存在するが、これをタスクとともに識別する。エッジは、タスク間のあらゆる順序依存関係を表わしている。プログラムが“u”が“v”よりも以前に実行されなければならないことを命ずる場合には、DAG内に“u”から“v”への経路が存在する。exists.この種の順序付けは、データあるいは制御の依存関係に基づくものである。"v",“v”は“u”における出力に条件的に依存して実行され、あるいは“v”は同期ポイントにおいて“u”を待機する。)ノードは任意の入射度および出射度を有する。プログラムは、ノードから出射するエッジの順序を定義すると仮定されている。DAGがデータフローグラフとは相異なっていることに留意されたい。ノード“u”から“v”へのデータフローエッジは、“u”から“v”への別の経路が存在する場合にはDAG中に含まれる必要がないからである。order,データフローを表現している訳ではない。flow.【0068】DAGは、以下のような意味で動的に展開する。(ii)すべての入射エッジが明らかになると、そのノードが表現しきられたことになり、スケジューリングされ得るようになる。scheduled.【0069】動的に展開するDAGに係るオンラインスケジューリングアルゴリズムにおいては、それぞれのステップにおけるスケジューリング決定は、DAGの表現しきられたノードおよびエッジにのみ基づいている。node,アルゴリズムは、新たなノードが表現しきられた場合には、それらをスケジューリングするために検出しなければならない。them.【0070】DAGのデプスは、計算の並列デプス“D”である。DAG中のノード数は、計算中の単位ワークタスクの総数、“W”、である。プログラムが決定論的であるために、“D”および“W”はトラバーサルの順序に依存しない。ここで、決定論的プログラムでさえもランダム化されたアルゴリズムに基づき得ることに留意されたい。このような場合には、DAGは、プログラムに対する入力データの一部として見られるランダムビットの値に依存する。本発明に係る結果は、非決定論的プログラム、例えば競争条件を有するようなプログラム、に対しても拡張可能であるが、その制限は、すべてのトラバーサルに係るワーストケースDAGに基づいている。traversal.【0071】空間モデルに関して、ここでは2つの空間カテゴリが考慮される。(i)タスクがスケジューリングされた場合に当該タスクによって規定されるプログラム変数空間;これには、タスク表現(“スタックフレーム”)用の空間およびあらゆる動的メモリ利用が含まれる;および、(ii)スケジューリング可能なノードを追跡する目的でスケジューリングアルゴリズムによって用いられるタスク予約空間;である。a.【0072】プログラム変数空間は、入力を保持するためのメモリ、スタックフレーム用メモリ、プログラムインストラクションによってあらわに割り当てられたメモリ、およびプログラムによって計算された値を保持するために陰に割り当てられたメモリである。入力空間は予め割り当てられたメモリブロック内に存在することが仮定されている。残りの変数空間は、個別のタスクによって割り当てられる。ここでは、タスクによって割り当てられるメモリの量がDAGのトラバーサルに依存しない、ということを仮定する。deallocation,この種の仮定は、もはや必要とされない値に対して割り当てられていたメモリを自動的に割り当て解除するカーベジコレクションに依存する言語に対しては、過剰な拘束条件である。ある値に対するメモリは、その値を参照した最後のタスクが完了するとすぐに割り当て解除されることが可能になる。よって、このような割り当て解除はタスクの組、すなわちその値を参照するタスクの組に関連しており、スケジューリングされるべきそのようなタスクのうちの最後のタスクが割り当て解除に関する重要な役割を担っている。ing.【0073】計算におけるあらゆる時点において、用いられるプログラム変数空間は、入力空間にスケジューリングされたタスクによって割り当てられた空間の総和を加えたものからスケジューリングされたタスクによって割り当て解除された空間の総和を減じたものである。"w(u)”を割り当てる。これは、タスクによって割り当てられた空間量から割り当て解除された量を減じたものである。本明細書においては、この重みはノードをスケジューリングする以前にスケジューラに対して利用可能であること、あるいは、デプスが増大させられた場合には、ノードがひとたび割り当てられた後には割り当てに係る重みとホールドオフを知ることが可能となる、ということを仮定する。",“Space(T)”を定義する。ここで、“n”は入力を保持するために必要とされる空間量である。この定義はプールされている共通メモリを仮定しており、割り当て解除された空間はすべてその後の割り当てによって再使用され得る。単一のステップにおいて割り当てられたすべてのタスクに係る空間についての全体としての影響のみを考慮することによって、タスクが割り当てや割り当て解除を実行することによる、そのステップ内でのメモリ使用量の揺らぎを無視する。この種の揺らぎは、希望する場合には、それぞれのノードを、一方が割当てを行って他方が割当て解除を行うような2つに分割することによって取り扱うことが可能である。)}、すなわちトラバーサルのあらゆるステップの後に用いられている最大空間、として定義される。as.【0075】タスク予約に関しては、DAG内のタスク“u”に関連して識別されているノードが一定サイズを有しており、さらにそれぞれのエッジが一定サイズであることが仮定されている。sequence,“S”、を考える。“S”のすべての連続するサブシーケンスは、そのサブシーケンス内の最初および最後のエッジをストアすることによって、一定空間内にコンパクト(compact)に表現され得る。However,エッジは、その他方の端点におけるノードを識別するために用いられ得る前に、それ自体の一定ストレージが割り当てられなければならない。ノードに係る予約空間はそのノードがスケジューリングされ得るようになる前に割り当てられなければならず、かつ、そのノードがスケジューリングされた後に割り当て解除が可能になる。ここで、スケジューリングアルゴリズムがあるステップにおけるDAGのあらわになったノードおよびエッジのすべてにその決定を基づかせることが可能であるにもかかわらず、すべてのノードおよびエッジをストアする必要がないことに留意されたい。is,スケジューリングアルゴリズムに係る希望されるリソース制限の範囲内で準備が整ったノードを識別してスケジューリングすることが可能であるために充分な数のノードおよびエッジのみをストアすることである。prepared.【0076】本発明に係る計算モデルをその空間モデルとともに定義するためになされた仮定は、大部分の粒度の細かい言語に関してリーズナブルである。モデルはNESLプログラムの実行を正確に反映する。本発明に係るアプローチは、“k”メモリを割り当てるそれぞれのノードを、その最後のものがサイズ“k”の実際の割当てを実行する、“k/m”ダミーノードとして取り扱うことである。"p"トラバーサルは、空間およびステップ数の双方に関して効率的である。この種の“p”トラバーサルをインプリメントする際には、それぞれのステップにおいて準備が整っているノードに関して1トラバーサルの相対的な順序を決定するための方法、および、スケジューリングされたタスクをプロセッサに割り当てて準備が整っているノードを識別する技法が必要とされる。この節では、特定の“p”トラバーサル、デプスファースト“p”トラバーサルを高速にインプリメントするアルゴリズムが提供される。前節の結果から、“p”−DFTが考察すべき最も興味深いトラバーサルであると考えられる。並列トラバーサルによって用いられる空間と標準的なシーケンシャルトラバーサルによって用いられる空間との直接的な比較を可能にするからである。traversal.【0079】本発明に係るスケジューリングアルゴリズムは、動的に展開する直列−並列DAGに対して適用される。この種のDAGは、ネスティングされた分岐−結合型の並列性に係る言語から自然に生ずる。this,ほとんど統べてのデータ並列言語(ネスティングされ得るものおよびされ得ないもの)および多くのその他の言語が含まれる。これらのDAGにおけるソースノードは、複数個の子タスクを分岐すなわち産み出すタスクに対応する。それぞれのソースノードは、それぞれのステップにおいて任意の個数のタスクを産み出す。このことにより、ソースノードをバイナリファンアウトに制限する場合よりも、より浅いDAGが可能になる。この方法により、タスクのスケジューリングおよびその同期が複雑になる。データの依存関係は、ノード間で、直列−並列DAGにおける経路によって順序付けられる。DAG.【0080】本発明に係る計算モデルにおいては、ノードから出射するエッジが順序付けられていることが仮定されており、ここで、標準的な1−DFTがこの“左から右への”順序を利用することが仮定される。further,あるノードのそれぞれの子ノードがそれぞれの兄弟ノード間での、“左から右へ”という順序付けに対応するそのインデックスを有していること仮定する。最後に、あるノードから出射されるエッジの数が、そのエッジに対して空間が割り当てられる以前に、そのノードがスケジューリングされた時点で明らかになることが仮定される。1980を参照)を実行する。1980).【0081】スタックに基づくスケジューリングアルゴリズムは、直列−並列DAGに係る“1”−DFTの以下の性質を利用する。"G"FTを考え、“u”および“v”を“G”における順序付けがなされていない、かつ“u”が“v”よりもより低いDFT番号を有するノードとする。DFTは、“v”あるいは“v”のあらゆる派生ノードを訪れる前に、“u”のあらゆる派生ノードであって“v”の派生ノードではないノードを訪れることになる。of.【0082】証明は、“u”および“v”の最低共通ソースノードに係る以下の観察による。G,“w'”をその関連するシンクノードとする。"の派生ノードであって“w'”の上流ノードでもあるすべてのノードとから構成される、“G”のサブグラフとする。”のすべて、およびノード“w'”、は、1−DFTの連続するサブシーケンスとなる。1-DFT.【0083】レディノードアルゴリズム。ここで、ノードが準備が整った時点、すなわちその最終親ノードがスケジューリングされた時点を識別可能であると仮定する。動的に展開する直列−並列DAG“G”を考える。"G".ここで、“R”を、“G”のルートノードを初期に含んでいるアレイとする。"G"内のすべてのノードがスケジューリングされるまで反復される。R|)”個のノードをスケジューリングする。time,“R”内の“i”番目のノードをプロセッサ“i”に割り当てる。(2)新たにスケジューリングされたノードを、アレイ“R”内における左から右へという順序に従って、その準備が整った子ノードと置換する。"G"の1−DFTに基づいた“p”DFTを生成する。ここで、帰納法により、“p”DFTのステップにおいて以下の不変量が存在することが示される。“R”は、正確に準備が整ったノードよりなる組であり、“R”内のノードはその1−DFT数に基づいて最低から最高へと順序付けられており、および、スケジューリングされたノードは“G”の“p”DFTのプリフィックスである。"G".初期状態では、ルートノードが唯一準備が整ったノードであり、この不変量は基本となる場合に関して成立している。この不変量がステップ“t≧1”の直前まで成り立っていると仮定する。この仮定の下に、この不変量がステップ“t”の後にも成り立つことが示される。1−DFTによって順序付けられているため、レディノードアルゴリズムは、準備が整ったノードを最低DFT数とともにスケジューリングする。第二に、ステップ“t”の最後において、“R”は正確に準備が整ったノードを含んでいる。スケジューリングされたノードは“R”から除去され、新たに準備が整ったノードはこのステップにおいてスケジューリングされた親ノードを有し、よって“R”に追加されるからである。第三に、ステップ“t”の最後において、“R”内のノードは1−DFTによって順序付けられている。これを見るには、“R”内のノードが“G”においては順序付けられていないことを見ればよい。DAGに関連して述べられた前記性質によって、ノード“u”を置換する左から右へという順序付けがなされた子ノードは、ステップ“t”の直前において“R”内で“u”の右に存在していたあらゆるノード“v”や“v”の子ノードよりも低いDFT数を有することになる。従って、帰納法により、このレディノードアルゴリズムは“G”の“p”DFTを生成することになる。"G".【0085】以下は、Pレディノードアルゴリズムに関連している。後者においては、本発明の実施例に従って、それぞれの準備が整ったノードに関して、その親ノードのうちの一つだけがストアされる。ready,“v”の親ノードのうちの最も左にあるものと定義する。“v”がソースノードである場合には単一の親ノードしか有さないため、このような親ノードを区別することはシンクノードに関してのみ必要である。リソース要求に関する制限を設定するために、準備が整ったノードが、それらが直後のステップにおいてスケジューリングされる予定になった場合にのみデータストラクチャ中に組み込まれる、レイジー割り当てを用いる。この節の残りにおいては、Pレディノードアルゴリズムおよびデータストラクチャが詳細に議論される。データストラクチャの主要コンポーネントは、準備が整ったそれぞれのノードに関する最終親ノードを保持しているアレイである“フロンティア”である。詳細に述べれば、“フロンティア”中には2つのタイプのノードが存在する。(i)少なくとも一つのスケジューリングされていないソース子ノードを有するスケジューリングされたソースノード。scheduling.ここで、これらのスケジューリングされたノードの子ノードは準備が整っていることに留意されたい。and,(ii)スケジューリングされていない、準備が整った子ノードの最終親ノードであるスケジューリングされたシンクノード。ここでは、“フロンティア”内のそれぞれのノード“v”に関して、その(スケジューリングされていない)子ノードの数“c(v)”に注目する。(v)".(それぞれのステップにおいて、その子ノードのうちの一部のみがスケジューリングされたソースノードが最大1つ存在する。Ready"アレイ内において、その1−DFT数の順序で表現されている、ということを利用する。“Pレディ”アレイの大きさは、“p”DFTトラバーサルに係る空間要求によって制限される。traversal.【0087】以下のステップは、プロセッサ割当てに関して機能する。"c(v)”値に係るプリフィックス総和計算を実行する。"value.出力シーケンスがアレイ“C”であるとする。'"が“C[i'−1]<p≦C[i']”を満足するとする(簡単のために、“p=C[i']”と仮定する)。assumed]").最初の“i'”ノードの子ノードはスケジュールされるべきである。それらは、サイズ“p”の補助アレイ“アクティブ”中に順に挿入される。...,i'”に対して、(“Pレディ”内の)ノード“i”の子ノードの表現が、アレイ“アクティブ”のエントリ“C[i−1]+1”から“C[i]”内に順に配置される。プロセッサ“j”は、“アクティブ[j]”内に表現されているノードに対して割り当てられており、そのノードを訪ねる。"v",その子ノードの数“c(v)”がこの時点で明らかになる。"u"に関して、それがその子ノードの最終親ノードではない場合には、“c(u)=0”にセットされる。それらは削除されるべきものとしてマークが付される。削除されるべきものとしてマークが付されていない“アクティブ”内のノードをまとめるためにプリフィックス総和計算が用いられる。“Pレディ”アレイ内の最初の“i'”エントリはクリアされ、“アクティブ”の内容が“Pレディ”アレイに対して(順に)プリペンドされる。前述されたPレディノードアルゴリズムは“G”の1−DFTに基づく“p”DFTを生成する。PRAMオペレーションに、“p”DFTのステップ当たりサイズ“p”の一定数のプリフィックス総和計算を加えたものが必要とされる。インプリメンテーションを完了するために、ノードの準備が整った時点をどのように識別するかが記述される。親タスク(DAG内のファンアウト“n”のソースノード)によって並列に生成された“n”個の子タスクからなる組を考える。タスク同期問題は、親ノードに係る計算の再スタート(すなわち、ソースタスクに対応するシンクタスクの開始)を可能にするために最終子ノードが完了した時点をすばやく検出することである。計算が動的であるため、どの子ノードが最後に終了するあるいは子ノードに係る計算がどの位の時間を必要とするかを前もって知ることは出来ない。親ノードをアクティブにしておくことも不可能である。このことによって効率が低下するからである(この種の生成がネスティングされ得ることに留意されたい)。タスク同期をインプリメントする一つの方法は、親ノードに対して、“n”に初期化されていてそれぞれの子ノードが完了するにつれてデクリメントされるようなカウンタを関連付けることである。PRAMに関して)理論および実際の双方の面で高コストとなるフェッチ−アンド−追加動作を必要とする。第二の選択肢は、タスクが生成された時点で、それらが完了するにつれて同期をとるために用いられることになるバイナリツリーを構成することである。n)”のスローダウンを必要とし、動的負荷均衡法が用いられない限り、余分なワークが必要とされる。このインプリメンテーションにおいては、任意のファンアウトを許可することによる利点が失われる。シミュレーションコストは、バイナリファンアウトによって必要とされるDAG内の余分なデプスに等しい。前述された問題点を回避するために、インプリメンテーションは以下のポイントに基づいている。points.(1)“n”個の子ノードが生成された時点でそれらの調整リストを生成する。node,それが終了した時点で、2つの隣接するノードを短絡することによって、自分自身を除去する。同一のステップにおいて隣接するノードのいずれもが終了しない場合には、短絡には一定の時間がかかる。(3)複数個の隣接するノードが終了する場合には、すべての完了する隣接ノードに関する短絡を計算するためにプリフィックス総和計算が用いられる。これを可能にするために、完了するすべての隣接ノードがタスクアレイ中で隣接しているというDFTの性質を用いる。完了しない隣接ノードは、タスクアレイ中に存在しない。それらは子ノードを生成して停止中であるからである。(4)最終子ノードが終了すると、親ノードが再起動される。複数個の子ノードが同時に終了した場合には、最も左側にあるものが親ノードを再起動する。node.【0091】シンクポインタの構成。ソースノード“v”が(アレイ“アクティブ”を介して)スケジューリングされると、関連するシンクノード、“シンクv”、の表現が生成され、組“シンク”に挿入される。"sink".(シンクノードでもあるソースノードは、ここではソースノード−シンクノード対として考慮される。)ソースノードは、この表現に係るポインタを維持している。ソースノードの子ノードがスケジューリングされると、それらはそれぞれ同様に関連するシンクノードに係る表現を生成する。それぞれの子ノード“u”は、スケジューリングに際して、その親ノード“v”からポインタを“シンクv”へコピーし、“シンクv”を指し示すために“シンクu”をセットする。“v”の子ノードがスケジューリングされた後、ノード“v”はデータストラクチャから削除されることに留意されたい。"sink"【0092】調整リンクリスト。"v"の子ノードがスケジューリングされると、関連するシンクノードに係るリンクリストが順次生成される。Ready"アレイ内に存在するノード、を正確にリンクしているということである。リストが空になると、シンクノード“シンクv”がスケジューリングされる準備が整った状態になる。それゆえ、(特定の時点において)リストの先頭のものがスケジューリングされると、リストが空になったかがチェックされる。空になった場合には、アレイ“アクティブ”内に残り、“Pレディ”内に配置される。list,スケジューリングされたものはデータストラクチャから削除される。リストの、スケジューリングされていてリストの先頭に位置していないそれぞれのノードは速やかにデータストラクチャから削除されることに留意されたい。調整リストは、削除がなされる際には管理されなければならない。予想される困難点は、リスト内の連続するノードからなるシーケンスが同時に削除され得ることである。残存するノード間のリンクを更新するためにポインタジャンプ法を用いることはむしろ遅く、標準的な技法を用いた効率的な(しかしながら遅い)インプリメンテーションに係ることになる。本発明に従って、本発明に係るデータストラクチャの特別の特徴を用いた、高速かつ簡潔な解法が提供される。鍵となる観察は、2つあるいはそれ以上の隣接する兄弟ノードからなるシーケンスが削除される場合には、その表現がアレイ“アクティブ”の連続するエントリ中に存在するということである。sublist,アレイ“アクティブの”、これらの表現を含むサブアレイ中の最初と最後のエントリを連鎖することと同様に容易である。この種の局所的な連鎖計算は、アレイ“アクティブ”内に表現されたノードに係る全体的な連鎖計算を用いることによって得られるものであり、例えばプリフィックス総和計算によってなされ得る。reason:(i)直列−並列DAGにおける1−DFT数の一般的な性質は、同一のシンク子ノード“s”を共有する2つのノード“u”および“v”、および“u”と“v”との間の1−DFT数を有するノード“w”が与えられた場合、“w”は共通のシンク子ノード“s”を共有するノード“v'”の上流ノードでなければならない。この際、“v'”の1−DFT数は、“u”のそれより大きく、かつ“v”のそれ以下でなければならない(すなわち、“v'”は“v”でありうる)。(ii)ノードは、その1−DFT数の順序に従って調整リストに置かれる。1-DFT数によって順序付けられている。(iv)ノードは、アレイ“アクティブ”内に存在する場合に限り、削除されうる。(v)ノードがアレイ“アクティブ”に配置された後は、その上流ノードは”アクティブ“には配置され得ない。ここで、”u“および”v”を調整リストにおける隣接ノード、かつ“u”が”v“より前に存在するとし、双方が削除されるものとする。(iv)によって双方はアレイ”アクティブ“内に存在する。調整リスト内の”u”と“v”との間に存在するすべてのノード“w”に関して、”w“が既に削除されていたため、(iv)および(v)によって“w“の上流ノードは”アクティブ”内に存在しない。"アクティブ“内に存在するため、その上流ノードは”アクティブ”内に存在しない。(ii)および(iii)による。(iii).【0094】複雑性および拡張。“p”DFTのそれぞれのステップには、最大“p”個のユニットタイムタスクが関与している。ネスティングされた並列性計算は、そのDAGによって順序付けられていない2つあるいはそれ以上の個数のノードが同一のプログラム変数を読み書きする場合に、同時アクセスプリミティブを用いると言われる。このようなノードが存在しない場合には、計算は、排他アクセスプリミティブを用いる。PRAMに係る一定数のステップにサイズ“p”のプリフィックス総和計算の一定回数の適用を加えたものを用いることによってインプリメントされ得る。p)”DFTを用いることによって得ることが可能であり、それぞれのステップにおけるリソース割り当てに係るオーバーヘッドを償還することができる(簡潔に述べれば、シーケンシャル空間がシーケンシャルな実行時間中で最悪線形であるような場合に係る制限を述べている)。time).【0095】排他アクセスインプリメンテーションに係る定理。1はO(W)に含まれる)を考える。p)”空間で、あるいは同一の制限内で、より高い確率を有して“p”プロセッサ超三次(ハイパーキューブ)上で、インプリメントすることが可能である。p)+D)”個のステップが存在する。p)”の時間がかかることが以下のように示される。Fischerによる前掲の参考文献参照)。p)”の時間でハイパーキューブ上にインプリメントされ得るように、“p”プロセッサハイパーキューブ上に配置され得る。p)”時間で実行され得る。p)”時間で実行され得る。PRAM上でのより高速なインプリメンテーション。CRCWPRAM上で、それぞれのプリフィックス総和計算を近似プリフィックス総和計算あるいは連鎖計算によって置換することによって実現され得る。)”の時間がかかることが知られている。Vishkinによる1993年の文献を参照)。"active",さらに、“p”だけ(大規模割り当てを扱うことが許可されていた場合のように)利用可能である場合にも“p”よりわずかに少ないものだけがそれぞれのステップにおいて割り当てられるということを許可することが必要である。to.【0098】同時アクセスインプリメンテーションに係る定理。”を有し、同時アクセスプリミティブを利用する、ネスティングされた並列性計算を考える。)”空間で計算をインプリメントすることが可能である。".【0099】メモリ割り当て手続き。前記定理における空間制限は、データストラクチャと実行の間に宣言されたプログラム変数とに係るあらわなメモリ割り当ての問題を取り扱うことなく、用いられるメモリセルの絶対数を説明している。アレイデータストラクチャに係るメモリ割り当ては直截的なものである。“シンク”データストラクチャの組に係るメモリ割り当ては、プログラム変数に係るものと同様、動的ディクショナリデータストラクチャを用いて実行され得る。Vishkinに係る1991年の参考文献参照)、インプリメントされ得る。implemented.【0100】これらの自動メモリ割当て手続きは、粒度の細かいネスティング済み並列性を有する言語によって書かれたプログラムの、時間的、ワーク的、および空間的に効率的な実行を実現する目的で、上記スケジューリングアルゴリズムに関連して用いられる。algorithm.【0101】以上、オンライン並列計算の一般的なクラスを実行するための空間およびステップ制限が導出された。ネスティング済み並列計算のより限定されたクラスに関しては、スケジューリングアルゴリズムが記述され、スケジューリングコストを含む時間制限が導出された。充分な並列性を有する計算に関しては、本発明の実施例に従って、空間制限が、これまでに知られていた制限より著しく改善された。language,の空間効率のよいインプリメンテーションを生成するという利点を有している。implementation.【0103】タスクは、プロセスのあらゆる段階において新たに生成され得る。この種のタスクが生成された場合には、それらはフィードバックされ、この種のタスクを割り当てるコンポーネントがプライオリティを割り当てる。priority.【0104】以上の説明は、本発明の一実施例に関するもので,この技術分野の当業者であれば、本発明の種々の変形例が考え得るが、それらはいずれも本発明の技術的範囲に包含される。[0105]【発明の効果】以上述べたごとく、本発明によれば、並列プロセッサを効率的に利用するようにスケジューリングする方法およびその手段が提供される。本発明の特徴を実現するシステムを模式的に示したブロック図である。本発明の特徴を実現する図1の処理エレメントアレイの詳細を示すブロック図である。図1に示された処理アレイの別の実施例を示すブロック図である。図2および図3に示された処理エレメントの詳細を示すブロック図である。図1に示された割当てマネージャのブロック図である。図1から図5までに示されたシステムのオペレーションを示す流れ図である。図6のあるステップの詳細を示す図である。割当てマネージャのオペレーションを示すより詳細な流れ図である。図8のある部分の処理の別の実施例を示す流れ図である。図5の一部を示すブロック図である。割当てマネージャのオペレーションの別の実施例を示す流れ図である。割当てマネージャのオペレーションの別の実施例を示す流れ図である。図11および図12の一部における処理の別の実施例を示す流れ図である。本発明に係るオペレーションセオリーにおいて発生するノードを示す模式図である。本発明に係るオペレーションセオリーにおいて発生するノードを示す模式図である。前記並列処理エレメントにおいて前記タスクを実行する実行ステップとからなることを特徴とする並列処理方法。前記選択されたタスクの個数が可能なタスクの個数とは相異なり、かつ、前記並列処理エレメントの利用可能な個数と相異なることを特徴とする請求項1の方法。前記選択されたタスクの個数が前記並列処理エレメントの利用可能な個数より多く、かつ、タスクの最大数より小さいことを特徴とする請求項1の方法。前記選択されたタスクの個数がNであり、前記並列処理エレメントの利用可能な個数がpであり、前記分割ステップがN個の選択されたタスクをほぼN/pという大きさを有するグループに分割することを特徴とする請求項1の方法。前記分割ステップが、前記グループのそれぞれを前記並列処理エレメントのうちの一つに割り当てるステップを有することを特徴とする請求項1の方法。前記割当てステップが、ある個数の並列ステップで割り当てるステップを有することを特徴とする請求項1の方法。生成されたステップが、それらを生成した親タスクの順序で配置されることを特徴とする請求項1の方法。前記分割ステップが、ある個数の並列ステップで実行されることを特徴とする請求項1の方法。scheduleの方法。前記実行ステップがある個数のタスクを生成し、前記割当てステップが生成されたタスクにプライオリティを割り当てることを特徴とする請求項1の方法。前記選択されたタスクの個数がNであり、前記並列処理エレメントの利用可能な個数がpであり、前記分割ステップがN個の選択されたタスクをほぼN/pという大きさを有するグループに分割することを特徴とする請求項10の方法。前記選択ステップが、個数Mの可能なタスクから選択されたタスクの個数Nに対して制限Lを設定するステップを有しており、前記可能なタスクの個数Mが前記制限Lと等しいかあるいはそれ以上である場合にはN=Lとし、M<Lの場合にはN=Mとすることを特徴とする請求項1の方法。前記分割ステップが前記タスクの重み付けを行うステップを有しており、前記分割ステップが前記重みに基づいて前記タスクを前記グループに分割するステップを有することを特徴とする請求項1の方法。前記並列処理エレメントに前記タスクを実行する実行手段とからなることを特徴とする並列処理装置。前記選択されたタスクの個数が可能なタスクの個数とは相異なり、かつ、前記並列処理エレメントの利用可能な個数と相異なることを特徴とする請求項14の装置。前記選択されたタスクの個数が前記並列処理エレメントの利用可能な個数より多く、かつ、タスクの最大数より小さいことを特徴とする請求項14の装置。/pという大きさを有するグループに分割することを特徴とする請求項14の装置。前記分割手段が、前記グループのそれぞれを前記並列処理エレメントのうちの一つに割り当てる手段を有することを特徴とする請求項14の装置。前記割当て手段が、ある個数の並列ステップで割り当てる手段を有することを特徴とする請求項14の装置。前記割当て手段が、生成されたステップを、それらを生成した親タスクの順序で配置することを特徴とする請求項14の装置。前記分割手段が、ある個数の並列ステップで実行されることを特徴とする請求項14の装置。前記逐次順序が、デプスファーストトラバーサルスケジュールであることを特徴とする請求項14の装置。前記実行手段がある個数のタスクを生成し、前記割当て手段が生成されたタスクにプライオリティを割り当てることを特徴とする請求項14の装置。/pという大きさを有するグループに分割することを特徴とする請求項23の装置。the=Lとし、M<Lの場合にはN=Mとすることを特徴とする請求項14の装置。前記分割手段が前記タスクの重み付けを行う手段を有しており、前記分割手段が前記重みに基づいて前記タスクを前記グループに分割する手段を有することを特徴とする請求項14の装置。