JPH09171503A - 並列処理方法および並列処理装置 - Google Patents

並列処理方法および並列処理装置

Info

Publication number
JPH09171503A
JPH09171503A JP8184626A JP18462696A JPH09171503A JP H09171503 A JPH09171503 A JP H09171503A JP 8184626 A JP8184626 A JP 8184626A JP 18462696 A JP18462696 A JP 18462696A JP H09171503 A JPH09171503 A JP H09171503A
Authority
JP
Japan
Prior art keywords
tasks
task
parallel processing
node
processing elements
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
JP8184626A
Other languages
English (en)
Inventor
Guy E Blelloch
イー.ブレルロッチ ガイ
Phillip B Gibbons
ビー.ギボンズ フィリップ
Yossi Matias
マティアス ヨッシ
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
LE-SENTO TECHNOL Inc
Nokia of America Corp
Original Assignee
LE-SENTO TECHNOL Inc
Lucent Technologies Inc
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by LE-SENTO TECHNOL Inc, Lucent Technologies Inc filed Critical LE-SENTO TECHNOL Inc
Publication of JPH09171503A publication Critical patent/JPH09171503A/ja
Pending legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5061Partitioning or combining of resources
    • G06F9/5066Algorithms for mapping a plurality of inter-dependent sub-tasks onto a plurality of physical CPUs
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2209/00Indexing scheme relating to G06F9/00
    • G06F2209/50Indexing scheme relating to G06F9/50
    • G06F2209/5021Priority

Abstract

(57)【要約】 【課題】 並列プログラミング言語における演算コス
ト、特に、プログラムが実行する演算の総数(ワーク)
と、依存性の最長シーケンス長(深さ)を、時間と空間
の双方の観点から減少させる。 【解決手段】 本発明の並列処理方法は、処理のために
タスクの逐次順序を決定するステップと、可能なタスク
に対して前記逐次順序に基づいてプライオリティを割り
当てる割当てステップと、利用可能な並列処理エレメン
トの総数よりも多い数のタスクを最高プライオリティを
有する可能なすべてのタスクから選択する選択ステップ
と、前記選択されたタスクを前記利用可能な並列処理エ
レメントの数と等しい数のグループに分割する分割ステ
ップと、前記並列処理エレメントにおいて前記タスクを
実行する実行ステップとからなる。

Description

【発明の詳細な説明】
【0001】
【発明の属する技術分野】本発明はパラレル(並列)プ
ロセッサによって実行されるタスクをスケジューリング
する方法およびその手段に関し、特に、アサインメント
(割当て)マネージャの制御下で複数個の機能ユニット
におけるオペレーションのコンカレント(同時)実行に
関する。
【0002】
【従来の技術】従来技術に係るデータ処理システムにお
いては、インストラクションシーケンス(命令列)が一
度に一つずつ実行されている。コンピュータの実行速度
を増大させる目的で、アルゴリズムにおけるプリミティ
ブなオペレーション、あるいはタスク、の並列処理を実
行するマルチプルプロセッサが用いられる。この種の並
列化には、シーケンシャルオペレーションの場合よりも
実質的により多くの(メモリ)空間が必要とされる。
【0003】
【発明が解決しようとする課題】数多くの並列プログラ
ミング言語により、個別の機能ユニットにおける並列処
理が可能になっている。これらの言語の目的は、ユーザ
に完全な並列処理を提供し、それら言語に並列処理のプ
ロセッサへのインプリメンテーションをさせることであ
る。この種のオペレーションのコストは、概念的には、
プログラムによって実行されるオペレーションの総数、
すなわち、“ワーク”と、依存の最長シーケンス長、す
なわち“深さ”(デプス)によって測られる。この種の
配置における性能異常は非常に一般的である。インプリ
メンテーションに用いられた論法は、しばしば失敗す
る。この種のシステムは、時間と空間の双方の観点か
ら、必ずしもよい性能を提供するとは限らない。
【0004】本発明の目的は、この種の方法および手段
を改良することである。
【0005】
【課題を解決するための手段】本発明の種々の特徴によ
れば、前記目的が、処理に係るタスクのシーケンシャル
な順序の決定、プライオリティの前記シーケンシャルな
順序付けに基づく可能なタスクへの割当て、最高のプラ
イオリティを有する可能なすべてからの、利用可能な処
理エレメントの総数よりも大きい個数のタスクの選択、
選択されたタスクの利用可能な並列処理エレメントの個
数と等しい数よりなるグループへの分割、および並列処
理エレメントにおけるタスクの実行、によって達成され
る。
【0006】本発明に係るこれらおよびその他の側面は
特許請求の範囲において指摘されている。本発明のその
他の目的および利点は、添付図とともに本明細書を読み
込むことによって明らかとなる。
【0007】
【発明の実施の形態】図1は、本発明の実施例を示すブ
ロック図である。ここで、プリプロセッサPP1は、入
力されたプログラムを翻訳(コンパイル)し、例えば機
械語レベルのインストラクション(命令)などの、実行
に適した形態にする。本発明の実施例に従って、プリプ
ロセッサPP1はオプションであり、省略されることも
可能である。入力プログラムは、タスクが並列処理によ
って実行されるべきであることを明らかにするが、それ
らタスクのプロセッサへの割当て(マッピング)を行わ
ないある種のプログラミング言語の形態を有するあらゆ
るシーケンシャルプログラムである。このプログラム
は、タスクの組およびそれらの間の関係が、プログラム
の入力データによって決定され(すなわち入力データに
依存し)、それがそのプログラムの入力データの並列処
理の間にのみ明らかになるようなものである。
【0008】アサインメント(割当て)マネージャAM
1は、スケジューリングされることが可能なタスクを決
定し、これらのタスクのサブセットを、図2に示されて
いる処理エレメントPE1およびルータRT1を有する
システムSY1に対して割り当てる。詳細に述べれば、
割当てマネージャAM1は、それぞれの処理エレメント
によって実行されるべき可能なタスクの組を供給する。
それぞれの処理エレメントPE1に対して、ルータRT
1は、割当てマネージャAM1によって供給された実行
されるべきタスクの組をそれぞれの処理エレメントPE
1内のタスクバッファ(図示せず)に対してルーティン
グする。システムSY1内のそれぞれの処理エレメント
PE1は、そのタスクバッファ内のタスクのインストラ
クションを実行し、タスクが完了した際には割当てマネ
ージャAM1に通知する。割当てマネージャAM1は、
実行されるべきプログラムタスクがさらに存在する限
り、かつ、プログラムが完了していない限り、その機能
を継続する。
【0009】処理エレメントPE1は、並列プログラム
のタスクがオペレートする入力データを受信する。その
後、処理エレメントPE1はプログラム出力データを出
力する。
【0010】図3は、図2に示されたシステムSY1の
別な実施例を示している。ここでは、処理エレメントP
E1の機能は、計算エレメントCEとメモリエレメント
MEに分割されている。ルータRT1は、割当てマネー
ジャAM1から、計算エレメントCEとメモリエレメン
トMEの形態を有する処理エレメントPE1宛にタスク
をルーティングする。それぞれの計算エレメントCE
は、ルータRT1を介して、メモリエレメントME(あ
るいはメモリエレメントMEのサブセットのみ)内のロ
ケーションを読み書きする。
【0011】図4は、処理エレメントPE1の詳細を示
した図である。ここでは、ルータインターフェースRI
1が、タスクバッファTB1、プロセッサPR1、およ
びメモリME1をそれぞれ互いに接続している。タスク
は、割当てマネージャAM1によってタスクバッファT
B1に配置される。プロセッサPR1がアイドリング状
態にある場合には、プロセッサPR1はタスクをタスク
バッファTB1から読み出して実行することができる。
【0012】タスク実行の完了に関連して、処理エレメ
ントPE1から割当てマネージャAM1へのフィードバ
ックが存在する。本発明の一実施例に従って、この種の
フィードバックは、タスクあるいはタスクの組が完了す
ると発生する。その後、処理エレメントPE1は割当て
マネージャAM1宛にルータRT1を介してアクノレッ
ジ信号を送出する。本発明の別の実施例に従うと、処理
エレメントPE1は、アクノレッジ信号を、割当てマネ
ージャによって読み出され得る個別のタスクバッファ宛
に出力する。
【0013】メモリエレメントME1は、プロセッサP
R1が利用可能なメモリを含んでいる。本発明の望まし
い実施例においては、プロセッサは、ルータRT1を介
して通信を行うことによって、他の処理エレメントPE
1内に存在するメモリエレメントME1のあるロケーシ
ョンを読み書きすることが可能である。タスクバッファ
TB1は、メモリエレメントME1内に存在することも
可能であり、また、個別のメモリデバイスであることも
可能である。
【0014】図1に示された割当てマネージャAM1の
詳細が図5に示されている。ここでは、タスクキューT
Q1が、スケジューリング可能なタスクの組(それらの
すべてである必要はない)を含んでいる。タスク割当て
器TA1は、タスクキューTQ1からタスクを読み取
り、それらを処理エレメントPE1を含むシステムSY
1に割り当て、それぞれの処理エレメントPE1に係る
タスクバッファTB1中にゼロあるいは複数個のタスク
よりなる組を供給する。
【0015】タスクキューおよびステータスバッファマ
ネージャ(TSM)BM1は、タスクをタスクキューT
Q1に追加する。タスクキューおよびステータスバッフ
ァマネージャBM1は、スケジューリング可能なタスク
を決定するために、タスクキューTQ1およびステータ
スバッファSB1を利用する。ステータスバッファSB
1は、タスク間の関係、例えば完了に際して同期が取ら
れなければならないタスク、に関する必要な情報を有し
ている。タスクキューおよびステータスバッファマネー
ジャBM1は、タスクキューTQ1およびステータスバ
ッファSB1を更新する目的で、処理エレメントPE1
を含むシステムSY1から得られたプログラムおよびフ
ィードバック情報を利用する。
【0016】タスクは、そのタスクの実行の前に完了さ
れなければならない先行タスクが存在しない場合に実行
可能である。すなわち、ある種のタスクは、単一あるい
は複数個の先行タスクが完了するまでは実行されること
が出来ない。この種のタスクは、先行拘束を有している
と言われる。この種のタスクは、それに関連する先行拘
束タスクのすべてが完了した時点で実行可能になる。あ
る種のタスクは、始めから、完了を必要とする先行タス
クを有さない。この種のタスクは、スタート時から実行
可能である。
【0017】単一のプロセッサとともに用いられること
が企図されたシーケンシャルプログラムは、プログラム
のそれぞれのタスクに対してインストラクションシーケ
ンス中でのタスクの順序を識別するコードすなわちキャ
ラクタリゼーションを指定する、シーケンシャルスケジ
ューラを通常利用する。よって、それぞれのタスクは、
スケジュール中の順序を識別する表示を有することにな
る。
【0018】本発明に係る方法は、並列処理が可能なタ
スクのサブセットを選択する目的で、シーケンシャルス
ケジューリングにおけるタスクの順序を利用する。すな
わち、本発明に係る方法は、シーケンシャルスケジュー
リングにおいてより早い時点で可能になったタスクに対
してより高いプライオリティを割り当てることによっ
て、並列処理が可能なタスクよりなるサブセットを選択
する。
【0019】図6は、図1から図4において示されたシ
ステムのオペレーションを示す流れ図である。ステップ
504において、プログラムがプリプロセッサPP1に
ロードされる。ステップ507において、プリプロセッ
サPP1は、システム内の特定のエレメントに適するよ
うな形態にプログラムを翻訳する。ステップ510にお
いては、割当てマネージャAM1がスケジューリング可
能なタスクを決定し、ステップ514において、タスク
を、図7および図8に示された流れ図に示されているよ
うに、処理エレメントに割り当てる。ステップ517に
おいては、処理エレメントPE1がタスクを実行し、ス
テップ520において、割当てマネージャAM1がプロ
グラムが完了したか否かを調べる。完了した場合には、
割当てマネージャAM1はオペレーションを停止する。
完了していない場合には、割当てマネージャはオペレー
ションをステップ510へ戻して続行する。
【0020】ステップ514の詳細が図7に示されてい
る。ステッ604において、割当てマネージャAM1
は、プログラム中のすべてのタスクに係る、本発明に係
る方法の開始時点で予め選択された特定のシーケンシャ
ルスケジューラによって決定された順序に従って、スケ
ジューリング可能なタスクにプライオリティを割り当て
る。このスケジューラは、例えば1DFT(depth first
traversal)スケジューラ等の公知のものである。DF
Tスケジューラは、以下、“理論”の項で議論される。
シーケンシャルスケジューラは、現時点でスケジューリ
ング可能なタスクに関して機能するのみならず、プログ
ラムの並列実行とは独立なシーケンシャル実行によって
決定されるすべてのタスクに対しても機能する。
【0021】本発明の一実施例に従って、割当てマネー
ジャAM1は、並列にオペレート可能な複数個のプロセ
ッサを有している。別の実施例においては、割当てマネ
ージャAM1は、並列処理を実行する複数個の処理エレ
メントPE1を用いる。
【0022】ステップ607においては、割当てマネー
ジャAM1は、割り当てられた最高のプライオリティを
有する可能なタスクのうちからN個のタスクを選択す
る。ここで、Nは、通常、処理エレメントの個数よりも
大きく、また可能なタスクの最大数よりも小さいが、必
ずしもそうである必要はない。
【0023】ステップ610においては、割当てマネー
ジャAM1は、N個の選択されたタスクを、それぞれ
(N/p)程度の大きさを有するp個のグループに分割
する。ここで、pは利用可能な処理エレメントPE1の
個数である。ステップ614においては、割当てマネー
ジャAM1は、それぞれのグループをそれぞれ処理エレ
メントPE1のうちの一つに割り当てる。
【0024】本発明の一実施例に従って、割当てマネー
ジャAM1は複数個のパラレルプロセッサを有してい
る。割当てマネージャAM1は、ステップ604、60
7、610、および614に示されたそれぞれの機能
を、一群の並列処理として実行する。割当てマネージャ
が複数個のパラレルプロセッサを有していない場合に
は、それぞれの機能を通常のシーケンスで実行する。
【0025】本発明の別の実施例は、選択されたタスク
の数Nが、過剰なメモリを占有してしまうことがない程
度な大きさであることを保証するように機能する。この
目的のために、ステップ607において選択されるタス
クの数Nに対して制限Lが置かれる。割当てマネージャ
AM1は、タスク群に対して常時利用可能なメモリ、お
よびこのタスク群に対して予約可能なメモリ、に基づい
て、選択されるタスクの数Nに制限Lを指定する。Lの
値は利用可能なメモリに従って変化する。あるいは、制
限Lは、プログラムの開始時に指定され入力される。も
し可能なタスク数Mが数L以上である場合には、N=L
とセットされ、処理はステップ610へ進む。M<Lで
ある場合には、処理はステップ610へ進む。
【0026】図8は、本発明の別の実施例の流れ図であ
り、割当てマネージャAM1のオペレーションの詳細を
示した図である。ステップ704において、割当てマネ
ージャAM1内のタスクキューおよびバッファマネージ
ャBM1(図5)が、最初のプログラムインストラクシ
ョンを読み取り、プログラムの開始時点で準備が整って
いるタスクの組を決定する。ステップ707において、
タスクキューおよびバッファマネージャBM1は、これ
らのタスクの適切な記録を保持するためにステータスバ
ッファSB1を初期化する。ステップ710において、
タスクキューおよびバッファマネージャBM1は、バッ
ファ内のタスクにプライオリティを割り当て、記録に基
づいてステータスバッファSB1内に存在するものから
高いプライオリティを有する準備が整ったN個のタスク
をタスクキューTQ1に配置する。本発明の別の実施例
に従うと、プライオリティの割当てはステータスバッフ
ァSB1によって実行される。ステップ714において
は、タスク割当て器TA1が、タスクをタスクキューT
Q1から削除して、それぞれの処理エレメントPE1に
係るタスクバッファTB1にN/p個の相異なったタス
クを供給する。本発明のさらに別の実施例に従うと、プ
ライオリティの割当てはタスク割当て器TA1において
実行される。ステップ715においては、処理エレメン
トPE1がタスクを実行する。
【0027】次いで、ステップ717において、タスク
キューおよびバッファマネージャBM1に対して、処理
エレメントPE1よりなるシステムSY1が、割り当て
られたタスクを完了したことを通知する。ステップ72
0においては、タスクキューおよびバッファマネージャ
BM1がプログラムおよびフィードバック情報を用いて
ステータスバッファSB1を更新し、新たに準備が整っ
たタスクの記録を含める。ステップ724においては、
タスクキューおよびバッファマネージャBM1が、すべ
てのタスクが完了したか否かを確認する。完了している
場合にはオペレーションが終了し、完了していない場合
にはオペレーションはステップ710へ戻る。
【0028】図9は、ステップ714の別の実施例を示
す流れ図である。このステップは、ステップ710に引
き続くものである。ステップ750においては、タスク
割当て器TA1がタスクキューTQ1からタスクを削除
する。本発明の一実施例に従って、タスクに対してはス
テップ710においてバッファマネージャBM1あるい
はタスクキューTQ1によって既にプライオリティが割
り当てられており、タスクマネージャTA1は高いプラ
イオリティを有するタスクのみを受信する。
【0029】本発明の別の実施例に従うと、タスク割当
て器TA1はプライオリティを割り当てる。ステップ7
54においては、タスク割当て器TA1が、その複雑さ
に基づいてタスクに重み付けを行う。ステップ757に
おいては、タスク割当て器TA1は、重み付けに基づい
て、選択されたタスクを複数個の利用可能な処理エレメ
ントPE1からなるグループに分け、それぞれのグルー
プの総重み付けすなわち複雑さが、その時点で処理を行
うことに係る処理エレメントPE1の能力に適合してい
るようにする。処理エレメントPE1とその能力が同一
である場合には、タスク割当て器TA1は、選択された
タスクを、複数個の利用可能な処理エレメントPE1の
間で重みがほぼ等しいようなグループに分割する。ステ
ップ760においては、タスク割当て器TA1は、タス
ク群をそれぞれの処理エレメントPE1のタスクバッフ
ァTB1に供給する。その後、処理は、ステップ715
へと戻る。
【0030】図10は、図5に示されたステータスバッ
ファSB1の実施例を示す図である。ステータスバッフ
ァSB1は、レディタスクマルチウェイスタックRS1
およびタスクステータスサポートバッファTSSB1を
有している。これらは、図11および13に示された割
当てマネージャAM1のオペレーションの実施例におい
て用いられる。
【0031】図11のステップ904においては、割当
てマネージャAM1内のタスクキューおよびバッファマ
ネージャBM1(図5)が初期プログラムインストラク
ションを読み取り、プログラムの開始時点で準備が整っ
ているタスクの組を決定する。ステップ907において
は、タスクキューおよびバッファマネージャBM1はこ
れらのタスクをレディタスクマルチウェイスタックRS
1に、および、適切な記録をタスクステータスサポート
バッファTSSB1にそれぞれ配置する。
【0032】ステップ910においては、タスクキュー
およびバッファマネージャBM1が、レディタスクマル
チウェイスタックRS1内に存在している最初のN個の
タスクをタスクキューTQ1に配置する。ステップ91
0のオペレーションの一部として、タスクキューおよび
バッファマネージャBM1はバッファ内のタスクにプラ
イオリティを割り当て、タスクキューTQ1内に、記録
に基づいて、ステータスバッファSB1のタスクステー
タスサポートバッファTSSB1内に存在しているタス
クの内から準備が整っておりかつ高いプライオリティを
有するタスクをN個配置する。
【0033】本発明の別の実施例に従うと、プライオリ
ティの割当ては、ステータスバッファSB1のバッファ
TSSB1によって実行される。ステップ914におい
ては、タスク割当て器914はタスクキューTQ1から
タスクを削除し、それぞれの処理エレメントPE1に係
るタスクバッファTB1にN/p個の相異なったタスク
を供給する。本発明のさらに別の実施例に従うと、プラ
イオリティの割り当ては、タスク割当て器TA1におい
て発生する。ステップ915においては、処理エレメン
トPE1がタスクを実行する。
【0034】ステップ917においては、タスクキュー
およびバッファマネージャBM1に対して、処理エレメ
ントPM1よりなるシステムSY1が、割り当てられた
すべてのタスクが完了したことを通知する。ステップ9
20においては、タスクキューおよびバッファマネージ
ャBM1がプログラムおよびフィードバック情報を用い
てタスクステータスサポートバッファTSSB1を適切
に更新し、新たに生じたタスクの記録を含める。
【0035】その後、処理は図12のステップ950へ
進む。ステップ950においては、タスクキューおよび
バッファマネージャBM1がタスクステータスサポート
バッファTSSB1情報を利用して、新たに準備が整っ
たタスクを決定する。ステップ954においては、タス
クキューおよびバッファマネージャBM1がレディタス
クマルチウェイスタックRS1を更新し、準備が整った
タスクすべてをDFT(デプスファーストトラバーサ
ル、深さ優先走査)順に含ませる。ステップ957にお
いては、すべてのステップが実行されたという観点でプ
ロセスが完了したか否かが調べられる。完了していない
場合には、処理はステップ910へ戻る。完了している
場合には処理は終了する。
【0036】図13は、ステップ914の別の実施例を
示す流れ図である。これらのステップは、ステップ91
0に引き続くものである。ステップ980においては、
タスク割当て器TA1はタスクをタスクキューTQ1か
ら削除する。本発明の一実施例に従うと、タスクに対し
てはステップ910においてバッファマネージャBM1
あるいはタスクキューTQ1によってプライオリティが
割り当てられており、タスク割当て器TA1は高いプラ
イオリティを有するタスクのみを受け取る。別の実施例
に従うと、タスク割当て器TA1はプライオリティを割
り当てる。
【0037】ステップ984においては、タスク割当て
器TA1が、複雑さに基づいて、タスクの重み付けを行
う。ステップ987においては、タスク割当て器TA1
1は、重み付けに基づいて、選択されたタスクを、利用
可能な処理エレメントPE1よりなるグループに、それ
ぞれのグループの総重みすなわち複雑さがほぼ等しくな
るように分割する。ステップ990においては、タスク
割当て器TA1はタスク群をそれぞれの処理エレメント
PE1に係るタスクバッファTB1に供給する。その
後、処理はステップ915へ戻る。
【0038】図1から図5に示された本発明の別の実施
例に従うと、割当てマネージャAM1は、シーケンシャ
ルな(すなわち集中された)インプリメンテーションか
パラレルな(すなわち分散された)インプリメンテーシ
ョンのいずれかを有することが可能である。パラレルイ
ンプリメンテーションは、処理エレメントPE1よりな
るシステムSY1上、あるいは個別のシステム上で実行
される。ステータスバッファマネージャBM1とタスク
割当て器TA1の動作は、処理エレメントPE1によっ
て、あるいはパラレルプロセッサの個別の組によって、
それぞれ実行されうるものであり、タスクキューTQ1
およびタスクステータスバッファSB1はタスクキュー
およびステータスバッファマネージャBM1内あるいは
個別のメモリメモリデバイス内においてインプリメント
され得る。図1から図5に示されたエレメントは、所定
の機能を実行するディスクリート素子の形態を有する
か、あるいはプロセッサか、もしくは複数個のプロセッ
サの一部である。
【0039】本発明は、並列処理可能なタスクの組を選
択し、シーケンシャルスケジュール中でより早くから利
用可能になったタスクに対してより高いプライオリティ
を割り当てることによって、並列処理に係るメモリ要求
を低減している。本発明のプロセスは、それぞれのプラ
イオリティに基づいて、タスク群を並列処理エレメント
に供給する。
【0040】処理は、新たなタスクを生成すると、その
タスクを生成した親タスクのスケジュール順序に従って
タスクを配置する。本発明の別の実施例に従うと、シー
ケンシャルスケジュール中での順序が、生成されたタス
クに対する位置を予約し、生成されたタスクがその位置
に配置される。
【0041】理論 本発明は、以下に記述される理論的背景に基づいてい
る。ここで、時間と空間(すなわちメモリ)の双方の観
点から、性能の限界を保証するための役に立つ汎用のイ
ンプリメンテーションを規定する。これらは、実行時
間、およびワーク、デプスおよびシーケンシャル空間の
関数としてのインプリメンテーションの空間に上限を設
定することによって規定される。ここでは、ワーク、デ
プスおよび空間の表示法を、計算が進むに連れて動的に
展開する有向非巡回グラフ(DAG、閉路を含まない有
向グラフ)として計算をモデル化することによって定式
化する。DAGは、R.D.Blumofe and C.E.Leiserson, i
n Proc. 25th ACM Symp. on Theory of Computing, pag
es 362-371, May 1993およびR.D.Blumofe and C.E.Leis
erson, Scheduling multithreaded computation by wor
k stealing, in Proc. 35th IEEE Symp. on Foundation
s of Computer Science pages 356-368, November 1994
という論文に記載されている。
【0042】DAGにおけるノード(節点)は単位ワー
クタスクを表現しており、エッジ(辺)は、タスク間
の、インプリメンテーションの際に考慮されなければな
らない順序の依存関係を表現している。これは非常に一
般的なモデルであり、(J.J'aJ'aによるAn Introductio
n to Parallel Algorithms, Addition-Wesley, Readin
g, MA, 1992に記述されている並列クイックソート等の
ような)タスクストラクチャあるいはデータ間の依存関
係が計算が実行されていくに連れて初めて明らかになる
ようなプログラムをもモデル化することが可能である。
計算のワークはDAG内のノードの個数に対応し、デプ
スはDAG内の最長経路に対応する。メモリ使用法を考
慮するために、DAGのそれぞれのノードに対して、そ
のノードが割り当てたり割り当て解除したりすることが
必要なメモリ量を表現する重みが割り当てられる。その
後、計算に係るシーケンシャル空間が、入力空間にその
DAGのデプスファーストトラバーサル(DFT)(標
準的なシーケンシャルインプリメンテーションによって
なされるトラバーサル)によって必要とされる空間を加
えたものとして定義される。
【0043】図14は、有向非巡回グラフとして表現さ
れた(“n=4”に対応する)行列乗算のタスクストラ
クチャを示した図である。ノードN01は単位ワークタ
スクを表現しており、エッジED1(この図においては
下向きであると仮定されている)はタスク間の制御およ
び/あるいはデータフローを表現している。このグラフ
のレベル毎スケジュール法は、このグラフの最大幅レベ
ルにおいて必要とされるn3個の中間結果を保持するた
めに、プログラム変数に対して“O(n3)”個の空間
を必要とする。さらに、このようなスケジュール法は、
スケジュールされ得る準備が整ったタスクを追跡するた
めに、タスク予約に関してO(n3)個の空間を必要と
する可能性がある。ここで、このグラフの標準的なデプ
スファーストシーケンシャルスケジュール法では、入力
および出力行列に必要となる空間をも考慮して、わずか
O(n2)個の空間しか用いないことに留意されたい。
【0044】プロセッサを良好に利用するあらゆる並列
スケジュール法は、ほとんど常に、シーケンシャルイン
プリメンテーションにおけるものとは相異なった順序で
タスクをスケジューリングする。このことにより、(そ
れぞれの段階において準備が整っているタスクの組の最
大のものを追跡するために)タスク予約に関連して必要
とされるメモリと(割り当てられてはいるが未だ割当て
解除されていない変数の組の最大のものを保持する目的
で)プログラム変数を割り当てるために必要となるメモ
リ量の双方の増大をもたらす。
【0045】効率的なスケジューリングを実現するため
に、動的に展開するあらゆるDAGに関して空間および
ステップ数の双方において恐らく効率的である並列スケ
ジューリングのクラスがまず識別される。計算がワーク
“W”およびデプス“D”を有していて“S1”シーケ
ンシャル空間を必要とする場合に、このクラスに属する
“p”プロセッサスケジューリング法は以下の利点を有
している。
【0046】このスケジューリング法においては、最大
“W/p+D”ステップが存在する。これは、すべての
スケジューリング法に関して可能な最良のものと比較し
て常にファクタ2以内に収まっている。充分な並列性
(すなわち、“W/p>>D”)を有するプログラムに
関しては、最良で“1+o(1)”のファクタ内に収ま
る。計算は、“S1+O(p・D)”の空間を利用する
のみである。これには、プログラム変数に係る空間およ
びタスク予約に係る空間が含まれる。よって、充分な並
列性(すなわち、“W/p>>D”)を有するプログラ
ムに関しては、“S1”が最小サイズの入力であること
を思い出すと、これはシーケンシャル空間の“1+o
(1)”のファクタ内に収まる。このことは、公知の限
界、例えば“S1・p”(例えば、F.W.Burton, Storage
management in virtual tree machines, IEEE Trans.
on Computers, 37(3):321-328, 1988; および、前掲の
R.D.Blumofe and C.E.Leisersonによる文献、およびF.
W.Burton and D.J.Simpson, Space efficient executio
n of deterministic parallel programs, 草稿、199
4年12月)すなわちシーケンシャル空間のファクタ
“p”倍、とは異なっている。
【0047】これらの制限は、個別のタスクが常に一定
量のメモリを割り当てる場合に適用される。単位ワーク
タスクがメモリを任意量割り当てる場合には、同一の空
間制限が最大“(W+S1)/p+D”ステップを用い
て得られ、一般には、空間とステップとの間のトレード
オフ関係が存在する。空間制限は、例えば、行列乗算に
必要とされるメモリが“S1+O(plog n)”で
あることを意味しており、これはすべての“o(n2
log n)内のp”に関する最良値のファクタ“1+
o(1)”内に収まっている。上記制限は、スケジュー
リング法をインプリメントする際のオーバーヘッドを考
慮していない。
【0048】(例えば前掲のR.D.Blumofe and C.E.Leis
erson, Space-efficient scheduling of multithreaded
computations, in Proc. 25th ACM Symp. on Theory o
f Computing, pages 362-371, May 1993,に記載されて
いる)共通のアプローチは、DAGのそれぞれのステッ
プにおいて“p”個の独立のノードを可能な限り貪欲に
スケジューリングすることである。ここで、“p”はプ
ロセッサの個数である。
【0049】希望される空間制限を求めるために、プロ
グラム変数に対するメモリの増大を制限することに注意
が集中している。なぜなら、本発明に係る解は、タスク
予約に係るメモリの増大を制限することも可能であるか
らである。個別のノードにその必要とするメモリ量を表
わすラベルを付することにより、前述されたR.D.Blumof
e and C.E.Leisersonに係る文献に記述されているよう
な、計算における巣レッド全体に関してメモリ要求量を
関連付けるこれまでのモデルよりも、より詳細なメモリ
割り当てが可能になる。ブロックメモリ割り当て、例え
ばアレイ、は、その重みが、その割り当てられるべきブ
ロックの大きさであるようなノードによって表現され
る。
【0050】基本的な疑問は、すべての計算DAGに関
する良好な空間制限を有する(貪欲な)並列スケジュー
リング法はどれかということである。第一のキーポイン
トは、与えられたシーケンシャルスケジュールに基づい
て並列スケジュールのクラスを規定し、シーケンシャル
スケジュールが並列スケジュールに対するスケジューリ
ングプライオリティを命ずるようにすることである。
【0051】並列スケジューリングは、与えられたシー
ケンシャルスケジューリング法には基づいてはいるが、
通常、シーケンシャルスケジューリングに関連しては、
それぞれのステップにおいて希望される並列性を実現す
る目的で、ノードをアウト・オブ・オーダーで(すなわ
ち早期に)スケジューリングする。第二のキーポイント
は、これらの“早期”ノードに注目することであり、
“p”個のプロセッサによるスケジューリング法のあら
ゆるステップにおいてこれらの早期ノードの数が最大で
DAGのデプス、“D”、の“p”倍であることを注意
深い議論で示すことである。このことは、すでに示され
た低い方の制限と一致しており、シーケンシャルスケジ
ューリング法に基づく並列スケジューリング方の利用を
正当化するものである。
【0052】第三のポイントは、空間に対する要求に制
限を与える目的で、早期ノードの数に係るこの制限を利
用することである。計算のそれぞれの並列ステップにお
いて、それぞれの早期ノードは、これらのノードによっ
て実行される付加的な割り当てのためおよびスケジュー
ルされ得る準備が整ったすべてのノードを追跡する目的
により、シーケンシャルスケジューリングにおいて必要
とされる空間以上の空間を必要とする。早期ノードが必
要とする余分の空間がそのノード数と比例関係にあるこ
とを保証するアプローチが示されている。最大で“p・
D”個の早期ノードが存在するため、“S1+O(p・
D)”という空間制限が得られる。ここで、“S1”は
シーケンシャルスケジューリングに必要となる空間であ
る。
【0053】上記結果は、シーケンシャルスケジューリ
ングに基づくあらゆる並列スケジューリングに適用され
る。標準的なシーケンシャルスケジューリングはDAG
のデプスファーストトラバーサル(DFT)であるた
め、定義および考察が、“p”−DFTスケジューリン
グに対して与えられる。これは、シーケンシャルデプス
ファーストスケジューリングに基づく並列スケジューリ
ングのクラスである。並列DFTを規定するために考慮
されるべき方法は数多く存在する。図示されている定義
は恐らく良好な性能制限を与えることになる。このスケ
ジューリング法は、“p”−DFTスケジューリング法
と呼称されるものであるが、それぞれのステップにおい
て最も深いノードに対してプライオリティを与えるよう
なスケジューリングとは異なっている。
【0054】効率的なスケジューリングプロセスを実現
するために、種々の定義が必要とされる。本明細書にお
いて定義される、並列スケジューリングにおける“p”
−DFTクラスは、標準的なシーケンシャルデプスファ
ーストトラバーサルに対して、時間および空間の双方に
おいて効率的である。第二の主要な結果は、ネスティン
グされた粒度の細かい並列性を有する言語(直並列DA
Gに通ずる言語)に関して、“p”−DFTスケジュー
リングを生成する効率的なランタイム(オンライン)ス
ケジューリングアルゴリズムである。以下に、“p”−
DFTスケジューリングをインプリメントするために必
要とされるプロセッサ割り当ておよびタスク同期が、プ
ロセッサによって最小の時間でかつ最小のオーバーヘッ
ドでどのように実行されるかが記述される。“W”個の
ワーク、“D”個のデプス、および“S1”個のシーケ
ンシャル空間に係る計算に関しては、これらのオーバー
ヘッドを含むスケジューリング計算の結果、以下の制限
が得られる。すなわち、EREW PRAMに関しては
“O(W/p)+D・log p)”時間が得られ、高
い確率を有する同一の時間制限が、超三次(ハイパーキ
ュービック)の、EREWスタイルの計算(すなわち、
同時に読み書きがなされないもの)に関して得られる。
より強いCRCW PRAMに関しては、アルゴリズム
を変形することにより、ワーストケースで“O(W/p
+D・loglog p)”時間が得られ、あるいはC
RCWスタイルの計算(すなわち同時読み書きがコスト
レスで許可されている場合)に関しては、より高い確率
で“O(W/p+D・logp)”時間が得られる。こ
れらのワーク効率の高いスケジューリング法は、“Th
eta(S1+D・plog p)”あるいはそれより
少ない空間しか用いない。タスクがメモリを任意量割り
当てることが可能な場合には、シーケンシャル実行時間
(すなわち“O(W)内のS1”)に関してシーケンシ
ャル空間が最悪線型である限りは、同一の制限が得られ
る。
【0055】これらの結果は、ネストされ得るものとさ
れ得ないものの双方を含むほとんどすべてのデータ並列
言語、さらには任意のファンアウトおよび任意のネステ
ィングを許可するものを含む、分岐−結合型並列性を実
現する大部分の言語に適用されるものである。
【0056】まず第一に、考慮している言語のクラスに
関して、計算のタスクストラクチャは、動的に進展する
直列−並列DAGであり、ある個数のノードは任意のフ
ァンアウトを有し(ソースノードと呼称される)、その
他の対応するノードは任意のファンインを有している
(シンクノードと呼称される)ことを理解する。次に、
この種のDAGに対して、単純なスタックに基づく並列
スケジューリングアルゴリズムにより、“p”−DFT
スケジュールおよびプロセッサがどのようにタスクに対
して割り当てられるべきかに係る規定が得られることを
理解する。よって、シーケンシャルスケジューリングに
基づく並列スケジューリングは、シーケンシャルスケジ
ュールを知ることなく高速に構成され得ることになる。
このアルゴリズムは、シーケンシャルデプスファースト
スケジューリングをあらわに構成するために必要とされ
る速度の低下を回避する。
【0057】単純なスタックに基づくアルゴリズムに加
えて、スタック空間に係る制限を得る、レイジースタッ
ク割り当てを用いる修正されたアルゴリズムが与えられ
ている。さらに、ネスティングされた並列性計算におけ
る未知かつ変化する再帰的ネスティングレベルとノード
において可能な大きなファンインが与えられると、スケ
ジューリング可能になるノードを効率的に識別すること
が困難になる。ここでは、この問題が、シンクノードに
係るタスク同期問題として指摘される。次のキーポイン
トは、このタスク同期問題に関する効率的なアルゴリズ
ムである。ここでは、“p”−DFTスケジューリング
の直列−並列DAGに係る性質が、本発明に係るアルゴ
リズムおよびそのデータストラクチャの正確さ、さらに
そのリソース制限を議論するために用いられる。
【0058】本発明に係る、スタックに基づくスケジュ
ーリングアルゴリズムは、スケジューリングのそれぞれ
のラウンドにおいて、並列プリフィックス総和演算を固
定回数、およびEREW PRAMステップを固定回
数、それぞれ実行する。これらのスケジューリングオー
バーヘッドを“償却”するために、スケジューリングデ
プスがプロセッサの個数よりも大きいような並列DFT
を実行することによって、ラウンド毎に各プロセッサに
対して複数個のタスクを割り当てる。このことにより、
時間および空間の複雑が増大するが、並列ワークが最適
値から一定ファクタ倍以内に収まっていることが保証さ
れる。さらに、適切なプリフィックス総和を用いるスケ
ジューリングアルゴリズムが、よりパワフルなCRCW
PRAMモデルに関して時間の複雑さを改善するため
に用いられ得ることが示される。
【0059】本発明が依拠している理論は、動的に展開
するDAGとしての計算に基づいており、DAGに係る
与えられたスケジュールに従ってプログラムを実行する
ために必要とされる空間を測定するために用いられる一
般的なモデルを含む、計算DAGおよびそのスケジュー
リングを記述する術語を用いる。本明細書においては、
標準的なグラフ理論に基づく術語が用いられる(例え
ば、T.H.Cormen, C.E.Leiserson, and R.L.Rivest, Int
roduction to Algorithms, McGraw-Hill, New York, N
Y, 1990,を参照)。
【0060】有向非巡回グラフ“G”を考える。“p≧
1”に対する“G”の“p”個のトラバーサル(すなわ
ち“p”個のスケジュール)は、“τ≧1”ステップよ
りなるシーケンスである。ここで、それぞれのステップ
“i”、“i=1,...,τ”はノード“Vi”(このス
テップにおいてスケジューリングされたノード)の組を
規定しており、以下の3つの性質が成り立つ。すなわ
ち、(i)それぞれのノードはスケジュール内で正確に
一度現れる;(ii)ノードは、その直前のノードがそ
れ以前のステップにおいてスケジューリングされた後に
のみスケジューリングされる;および(iii)それぞ
れのステップは、最大“p”個のノードから構成され
る。“G”のトラバーサル(すなわちスケジューリン
グ)は、ある“p”に関する“G”の“p”トラバーサ
ル(すなわち“p”スケジュール)である。
【0061】“G”のトラバーサル“T=V1,...,V
T”を考える。“G内のノードv”は、“v”が“V1
cup ・s cup Vi-1”内に現れる場合に、
“T”のステップ“i”よりも先にスケジューリングさ
れる。スケジューリングされていないノード“v”は、
その直前のノードすべて(そのすべての親ノードと等価
である)がステップ“i”以前にスケジューリングされ
ている場合に、“T”内のステップ“i”においてスケ
ジューリングされる準備が整っている。“T”内のステ
ップ“i”における“G”の最前線は、“i”以前にス
ケジューリングされた、スケジューリングされていない
子ノードを有するすべてのノードの組である。“貪欲
な”“p”トラバーサル(R.D.Blumofe and C.E.Leiser
son, Space-efficient scheduling of multithreaded c
omputations, in Proc. 25th ACM Symp. on Theory of
Computing, pages 362-371, May 1993,を参照)とは、
それぞれのステップ“i”において、少なくとも“p”
このノードが準備が整っている場合には、“|Vi|=
p”であり、“p”より少ない数のノードが準備が整っ
ている場合には,“Vi”が準備が整ったすべてのノー
ドから構成されるようなトラバーサルである。
【0062】デプスファースト1トラバーサル(DFT
あるいは1−DFT)は、準備が整ったノードのスタッ
クを管理することによって得られる。スタックは、ルー
とノードを含むように(あらゆる順序で)初期化されて
おり、それぞれのステップにおいて、スタックの最上部
に位置するノードが読み出され(すなわちポップされ)
てスケジューリングされ、新たに準備が整ったノードが
スタックの最上部に(あらゆる順序で)配置(プッシ
ュ)される。DFTの“i”番目のノードは、DFT番
号“i”を有していると呼称される。
【0063】(ソースおよびシンクが1つずつの)直列
−並列DAGは以下のように規定される。グラフ
“G0”は単一のノード(これはソースノードでもあり
シンクノードでもある)から構成された、エッジを有さ
ない直列−並列DAGである。“G1”および“G2”が
直列−並列である場合には、“G1 cup G2”に対
してシンクノード“G1”からソースノード“G2”への
ディレクテッドエッジを追加することによって得られる
グラフは直列−並列である。“G1,...,Gk”、“k
≧1”が直列−並列である場合には、“G1 cup
・s cup Gk”に対して、ソースノード
“G1,...,Gk”へのディレクテッドエッジを有する
新たなソースノード“u”を追加すること、およびシン
クノード“G1,...,Gk”からのディレクテッドエッ
ジを有する新たなシンクノード“v”を追加すること、
によって得られるグラフは直列−並列である。よって、
ノードは、1より大きい入射度(indegree)あ
るいは出射度(outdegree)を有することはあ
るが、双方を有することはない。ソースノード“u”
は、“i≠j”なる場合に“Gi中のw”および“Gj
のw’”というノードよりなるあらゆるノード対に関し
て最低共通ソースノードである。
【0064】シーケンシャルスケジューリングに基づい
た並列スケジューリングに関して、“p”トラバーサ
ル、すなわち“Tp”が、“ki≦p”なる“ki”に対
して、“Tp”のそれぞれのステップ“i”において、
当該ステップ“i”において準備が整った“T1”内の
“ki”個の最先ノードがスケジューリングされる場合
に、1トラバーサルに基づいているものと定義される。
言い換えれば、準備が整っているすべてのノード“u”
および“v”に関して、“T1”において“u”が
“v”に先立つものである場合には、双方がスケジュー
リングされるか、双方がスケジューリングされないか、
あるいは“u”のみがスケジューリングされるかのいず
れかである。与えられた1トラバーサルに関して、その
1トラバーサルに基づいた“p”トラバーサルが一意的
に定義されることに留意されたい。
【0065】考慮すべき重要な“p”トラバーサルは、
デプスファースト“p”トラバーサルである。デプスフ
ァースト“p”トラバーサル(“p”−DFT)は、デ
プスファースト1トラバーサルに基づく“p”トラバー
サルである。一例が図15に示されている。一般に、1
トラバーサルに基づいて“p”トラバーサルをインプリ
メントするためには、“p”トラバーサルのそれぞれの
ステップにおいて、準備が整っているノード間での1ト
ラバーサル間の相対的な順序を決定するための方法が必
要になる。
【0066】図15は、“p=3”の場合のDAG
“G”の“p”−DFTを示している。“G”中の左側
のノードNO2には、“G”の1−DFTの順序で番号
が付されている。右側では、“G”は、1−DFTに基
づく“p”−DFT、“Tp”に従ってラベルが付され
ている。ここで、“i=1,...,7”に関して“Tp
1,...,V7”であり、“Vi”はステップ“i”にお
いてスケジューリングされるノードの組であって図中で
は“i”というラベルが付されたノードの組である。
【0067】以下の説明は、動的に展開するDAGに係
るものである。ここでは、計算が、プログラムが与えら
れた入力に関して実行されるに従って動的に展開するD
AGとしてモデル化される。これまでの解析(例えば、
C.H.Papadimitriou and M.Yannakakis, Towards an arc
hitecture-independent analysis of parallel algorit
hms, in Proc. 20th ACM Symp. on Theory of Computin
g, pages 510-513, May 1988; R.D.Blumofe and C.E.Le
iserson, Space-efficient scheduling of multithread
ed computations, in Proc. 25th ACM Symp. on Theory
of Computing,pages 362-371, May 1993; R.D.Blumofe
and C.E.Leiserson, Scheduling multithreaded compu
tations by work stealing, in Proc. 35th IEEE Symp.
on Foundations of Computer Science, pages 356-36
8, November 1994)におけるのと同様、計算に係るDA
Gがノードがスケジューリングされる順序に依存しない
という意味において、プログラムが決定論的であること
を仮定する。計算中のそれぞれの単位ワークタスクに関
してDAG中にノードが存在するが、これをタスクとと
もに識別する。エッジは、タスク間のあらゆる順序依存
関係を表わしている。プログラムが“u”が“v”より
も以前に実行されなければならないことを命ずる場合に
は、DAG内に“u”から“v”への経路が存在する。
この種の順序付けは、データあるいは制御の依存関係に
基づくものである。(例えば、“u”が“v”を産み出
す場合には、“u”は“v”が読み出す値を書き込み、
“v”は“u”における出力に条件的に依存して実行さ
れ、あるいは“v”は同期ポイントにおいて“u”を待
機する。)ノードは任意の入射度および出射度を有す
る。プログラムは、ノードから出射するエッジの順序を
定義すると仮定されている。ここで、本発明に係るDA
Gがデータフローグラフとは相異なっていることに留意
されたい。なぜなら、ノード“u”から“v”へのデー
タフローエッジは、“u”から“v”への別の経路が存
在する場合にはDAG中に含まれる必要がないからであ
る。DAGは順序間の拘束条件を厳密に表現しており、
データフローを表現している訳ではない。
【0068】DAGは、以下のような意味で動的に展開
する。すなわち、(i)ノードがスケジューリングされ
ると、その出射エッジが明らかになる、および、(i
i)すべての入射エッジが明らかになると、そのノード
が表現しきられたことになり、スケジューリングされ得
るようになる。
【0069】動的に展開するDAGに係るオンラインス
ケジューリングアルゴリズムにおいては、それぞれのス
テップにおけるスケジューリング決定は、DAGの表現
しきられたノードおよびエッジにのみ基づいている。初
期状態では、ルートノードのみが表現しきられており、
アルゴリズムは、新たなノードが表現しきられた場合に
は、それらをスケジューリングするために検出しなけれ
ばならない。
【0070】DAGのデプスは、計算の並列デプス
“D”である。DAG中のノード数は、計算中の単位ワ
ークタスクの総数、“W”、である。プログラムが決定
論的であるために、“D”および“W”はトラバーサル
の順序に依存しない。ここで、決定論的プログラムでさ
えもランダム化されたアルゴリズムに基づき得ることに
留意されたい。このような場合には、DAGは、プログ
ラムに対する入力データの一部として見られるランダム
ビットの値に依存する。本発明に係る結果は、非決定論
的プログラム、例えば競争条件を有するようなプログラ
ム、に対しても拡張可能であるが、その制限は、すべて
のトラバーサルに係るワーストケースDAGに基づいて
いる。
【0071】空間モデルに関して、ここでは2つの空間
カテゴリが考慮される。すなわち、(i)タスクがスケ
ジューリングされた場合に当該タスクによって規定され
るプログラム変数空間;これには、タスク表現(“スタ
ックフレーム”)用の空間およびあらゆる動的メモリ利
用が含まれる;および、(ii)スケジューリング可能
なノードを追跡する目的でスケジューリングアルゴリズ
ムによって用いられるタスク予約空間;である。
【0072】プログラム変数空間は、入力を保持するた
めのメモリ、スタックフレーム用メモリ、プログラムイ
ンストラクションによってあらわに割り当てられたメモ
リ、およびプログラムによって計算された値を保持する
ために陰に割り当てられたメモリである。入力空間は予
め割り当てられたメモリブロック内に存在することが仮
定されている。残りの変数空間は、個別のタスクによっ
て割り当てられる。ここでは、タスクによって割り当て
られるメモリの量がDAGのトラバーサルに依存しな
い、ということを仮定する。割り当て解除に関しては、
この種の仮定は、もはや必要とされない値に対して割り
当てられていたメモリを自動的に割り当て解除するカー
ベジコレクションに依存する言語に対しては、過剰な拘
束条件である。特に、ある値に対するメモリは、その値
を参照した最後のタスクが完了するとすぐに割り当て解
除されることが可能になる。よって、このような割り当
て解除はタスクの組、すなわちその値を参照するタスク
の組に関連しており、スケジューリングされるべきその
ようなタスクのうちの最後のタスクが割り当て解除に関
する重要な役割を担っている。
【0073】計算におけるあらゆる時点において、用い
られるプログラム変数空間は、入力空間にスケジューリ
ングされたタスクによって割り当てられた空間の総和を
加えたものからスケジューリングされたタスクによって
割り当て解除された空間の総和を減じたものである。こ
こで、それぞれのタスク“u”に対して重み“w
(u)”を割り当てる。これは、タスクによって割り当
てられた空間量から割り当て解除された量を減じたもの
である。本明細書においては、この重みはノードをスケ
ジューリングする以前にスケジューラに対して利用可能
であること、あるいは、デプスが増大させられた場合に
は、ノードがひとたび割り当てられた後には割り当てに
係る重みとホールドオフを知ることが可能となる、とい
うことを仮定する。“p≧1”なる“p”トラバーサル
のプレフィックス“T=V1,...,Vj”に関して、
“Space(T)”を定義する。これは、“T”後に
用いられているプログラム変数空間が
【数1】 となるものである。ここで、“n”は入力を保持するた
めに必要とされる空間量である。この定義はプールされ
ている共通メモリを仮定しており、割り当て解除された
空間はすべてその後の割り当てによって再使用され得
る。さらに、単一のステップにおいて割り当てられたす
べてのタスクに係る空間についての全体としての影響の
みを考慮することによって、タスクが割り当てや割り当
て解除を実行することによる、そのステップ内でのメモ
リ使用量の揺らぎを無視する。この種の揺らぎは、希望
する場合には、それぞれのノードを、一方が割当てを行
って他方が割当て解除を行うような2つに分割すること
によって取り扱うことが可能である。
【0074】空間の複雑さ、すなわち“p”トラバーサ
ル、“Tp=V1,...,VT”に係る最大空間は、(Sp
=maxj=1,...,T{Space(V1,...,
j、)}、すなわちトラバーサルのあらゆるステップ
の後に用いられている最大空間、として定義される。
【0075】タスク予約に関しては、DAG内のタスク
“u”に関連して識別されているノードが一定サイズを
有しており、さらにそれぞれのエッジが一定サイズであ
ることが仮定されている。ここで、あるノードから出射
する、(あらわになった)エッジよりなるシーケンス、
“S”、を考える。“S”のすべての連続するサブシー
ケンスは、そのサブシーケンス内の最初および最後のエ
ッジをストアすることによって、一定空間内にコンパク
ト(compact)に表現され得る。しかしながら、
エッジは、その他方の端点におけるノードを識別するた
めに用いられ得る前に、それ自体の一定ストレージが割
り当てられなければならない。ノードに係る予約空間は
そのノードがスケジューリングされ得るようになる前に
割り当てられなければならず、かつ、そのノードがスケ
ジューリングされた後に割り当て解除が可能になる。こ
こで、スケジューリングアルゴリズムがあるステップに
おけるDAGのあらわになったノードおよびエッジのす
べてにその決定を基づかせることが可能であるにもかか
わらず、すべてのノードおよびエッジをストアする必要
がないことに留意されたい。実際、必要とされるのは、
スケジューリングアルゴリズムに係る希望されるリソー
ス制限の範囲内で準備が整ったノードを識別してスケジ
ューリングすることが可能であるために充分な数のノー
ドおよびエッジのみをストアすることである。
【0076】本発明に係る計算モデルをその空間モデル
とともに定義するためになされた仮定は、大部分の粒度
の細かい言語に関してリーズナブルである。例えば、モ
デルはNESLプログラムの実行を正確に反映する。
【0077】巨大な割り当ての処理: 本発明に係るア
プローチは、“k”メモリを割り当てるそれぞれのノー
ドを、その最後のものがサイズ“k”の実際の割当てを
実行する、“k/m”ダミーノードとして取り扱うこと
である。
【0078】1トラバーサルに基づいた欲張りな“p”
トラバーサルは、空間およびステップ数の双方に関して
効率的である。この種の“p”トラバーサルをインプリ
メントする際には、それぞれのステップにおいて準備が
整っているノードに関して1トラバーサルの相対的な順
序を決定するための方法、および、スケジューリングさ
れたタスクをプロセッサに割り当てて準備が整っている
ノードを識別する技法が必要とされる。この節では、特
定の“p”トラバーサル、デプスファースト“p”トラ
バーサルを高速にインプリメントするアルゴリズムが提
供される。前節の結果から、“p”−DFTが考察すべ
き最も興味深いトラバーサルであると考えられる。なぜ
なら、並列トラバーサルによって用いられる空間と標準
的なシーケンシャルトラバーサルによって用いられる空
間との直接的な比較を可能にするからである。
【0079】本発明に係るスケジューリングアルゴリズ
ムは、動的に展開する直列−並列DAGに対して適用さ
れる。この種のDAGは、ネスティングされた分岐−結
合型の並列性に係る言語から自然に生ずる。これには、
ほとんど統べてのデータ並列言語(ネスティングされ得
るものおよびされ得ないもの)および多くのその他の言
語が含まれる。これらのDAGにおけるソースノード
は、複数個の子タスクを分岐すなわち産み出すタスクに
対応する。それぞれのソースノードは、それぞれのステ
ップにおいて任意の個数のタスクを産み出す。このこと
により、ソースノードをバイナリファンアウトに制限す
る場合よりも、より浅いDAGが可能になる。しかしな
がら、この方法により、タスクのスケジューリングおよ
びその同期が複雑になる。データの依存関係は、ノード
間で、直列−並列DAGにおける経路によって順序付け
られる。
【0080】本発明に係る計算モデルにおいては、ノー
ドから出射するエッジが順序付けられていることが仮定
されており、ここで、標準的な1−DFTがこの“左か
ら右への”順序を利用することが仮定される。さらに、
あるノードのそれぞれの子ノードがそれぞれの兄弟ノー
ド間での、“左から右へ”という順序付けに対応するそ
のインデックスを有していること仮定する。最後に、あ
るノードから出射されるエッジの数が、そのエッジに対
して空間が割り当てられる以前に、そのノードがスケジ
ューリングされた時点で明らかになることが仮定され
る。本発明に係るスケジューリングアルゴリズムは、ス
ケジューリングのそれぞれのラウンドに関して、一定数
のEREW PRAMステップ(J'a J'aによる前掲文
献参照)および一定数のプレフィックス総和計算(R.E.
Ladner and M.J.Fischer, Parallelprefix computatio
n, Journal of the ACM, 27:831-838, 1980を参照)を
実行する。
【0081】スタックに基づくスケジューリングアルゴ
リズムは、直列−並列DAGに係る“1”−DFTの以
下の性質を利用する。直列−並列DAG“G”の1−D
FTを考え、“u”および“v”を“G”における順序
付けがなされていない、かつ“u”が“v”よりもより
低いDFT番号を有するノードとする。すると、DFT
は、“v”あるいは“v”のあらゆる派生ノードを訪れ
る前に、“u”のあらゆる派生ノードであって“v”の
派生ノードではないノードを訪れることになる。
【0082】証明は、“u”および“v”の最低共通ソ
ースノードに係る以下の観察による。“w”を、1−D
FT順序における“k>1”個の子ノード“c1,...,
k”を有する、G内におけるソースノードとし、
“w’”をその関連するシンクノードとする。“i=
1,...,k”に対して、“Gi”を、“ci”と“ci
の派生ノードであって“w’”の上流ノードでもあるす
べてのノードとから構成される、“G”のサブグラフと
する。すると、ノード“w”、“G1”のすべて、
“G2”のすべて,...,“Gk”のすべて、およびノー
ド“w’”、は、1−DFTの連続するサブシーケンス
となる。
【0083】レディノードアルゴリズム。 ここで、ノ
ードが準備が整った時点、すなわちその最終親ノードが
スケジューリングされた時点を識別可能であると仮定す
る。動的に展開する直列−並列DAG“G”を考える。
ここで、“R”を、“G”のルートノードを初期に含ん
でいるアレイとする。以下の2つのステップが、“G”
内のすべてのノードがスケジューリングされるまで反復
される。(1)“R”から最初の“min(p,|R
|)”個のノードをスケジューリングする。この際、
“R”内の“i”番目のノードをプロセッサ“i”に割
り当てる。(2)新たにスケジューリングされたノード
を、アレイ“R”内における左から右へという順序に従
って、その準備が整った子ノードと置換する。
【0084】上記レディノードアルゴリズムは、“G”
の1−DFTに基づいた“p”DFTを生成する。ここ
で、帰納法により、“p”DFTのステップにおいて以
下の不変量が存在することが示される。“R”は、正確
に準備が整ったノードよりなる組であり、“R”内のノ
ードはその1−DFT数に基づいて最低から最高へと順
序付けられており、および、スケジューリングされたノ
ードは“G”の“p”DFTのプリフィックスである。
初期状態では、ルートノードが唯一準備が整ったノード
であり、この不変量は基本となる場合に関して成立して
いる。この不変量がステップ“t≧1”の直前まで成り
立っていると仮定する。この仮定の下に、この不変量が
ステップ“t”の後にも成り立つことが示される。この
不変量によって、“R”がステップ“t”の直前におい
て準備が整ったノードを含み、かつそれらのノードが1
−DFTによって順序付けられているため、レディノー
ドアルゴリズムは、準備が整ったノードを最低DFT数
とともにスケジューリングする。第二に、ステップ
“t”の最後において、“R”は正確に準備が整ったノ
ードを含んでいる。なぜならスケジューリングされたノ
ードは“R”から除去され、新たに準備が整ったノード
はこのステップにおいてスケジューリングされた親ノー
ドを有し、よって“R”に追加されるからである。第三
に、ステップ“t”の最後において、“R”内のノード
は1−DFTによって順序付けられている。これを見る
には、“R”内のノードが“G”においては順序付けら
れていないことを見ればよい。よって、直列−並列DA
Gに関連して述べられた前記性質によって、ノード
“u”を置換する左から右へという順序付けがなされた
子ノードは、ステップ“t”の直前において“R”内で
“u”の右に存在していたあらゆるノード“v”や
“v”の子ノードよりも低いDFT数を有することにな
る。従って、帰納法により、このレディノードアルゴリ
ズムは“G”の“p”DFTを生成することになる。
【0085】以下は、Pレディノードアルゴリズムに関
連している。後者においては、本発明の実施例に従っ
て、それぞれの準備が整ったノードに関して、その親ノ
ードのうちの一つだけがストアされる。ここで、あるノ
ード“v”の最終親ノードを、“v”が準備が整うよう
になったステップにおいてスケジューリングされた、
“v”の親ノードのうちの最も左にあるものと定義す
る。“v”がソースノードである場合には単一の親ノー
ドしか有さないため、このような親ノードを区別するこ
とはシンクノードに関してのみ必要である。リソース要
求に関する制限を設定するために、準備が整ったノード
が、それらが直後のステップにおいてスケジューリング
される予定になった場合にのみデータストラクチャ中に
組み込まれる、レイジー割り当てを用いる。この節の残
りにおいては、Pレディノードアルゴリズムおよびデー
タストラクチャが詳細に議論される。
【0086】Pレディアレイ: データストラクチャの
主要コンポーネントは、準備が整ったそれぞれのノード
に関する最終親ノードを保持しているアレイである“フ
ロンティア”である。詳細に述べれば、“フロンティ
ア”中には2つのタイプのノードが存在する。(i)少
なくとも一つのスケジューリングされていないソース子
ノードを有するスケジューリングされたソースノード。
ここで、これらのスケジューリングされたノードの子ノ
ードは準備が整っていることに留意されたい。および、
(ii)スケジューリングされていない、準備が整った
子ノードの最終親ノードであるスケジューリングされた
シンクノード。ここでは、“フロンティア”内のそれぞ
れのノード“v”に関して、その(スケジューリングさ
れていない)子ノードの数“c(v)”に注目する。
(それぞれのステップにおいて、その子ノードのうちの
一部のみがスケジューリングされたソースノードが最大
1つ存在する。)不変量として、ノードが“Pレディ”
アレイ内において、その1−DFT数の順序で表現され
ている、ということを利用する。“Pレディ”アレイの
大きさは、“p”DFTトラバーサルに係る空間要求に
よって制限される。
【0087】以下のステップは、プロセッサ割当てに関
して機能する。“Pレディ”アレイの最初の“p”エン
トリ中に表現されているノード“v”に関する“c
(v)”値に係るプリフィックス総和計算を実行する。
出力シーケンスがアレイ“C”であるとする。“i’”
が“C[i’−1]<p≦C[i’]”を満足するとす
る(簡単のために、“p=C[i’]”と仮定する)。
最初の“i’”ノードの子ノードはスケジュールされる
べきである。それらは、サイズ“p”の補助アレイ“ア
クティブ”中に順に挿入される。“i=1,...,
i’”に対して、(“Pレディ”内の)ノード“i”の
子ノードの表現が、アレイ“アクティブ”のエントリ
“C[i−1]+1”から“C[i]”内に順に配置さ
れる。プロセッサ“j”は、“アクティブ[j]”内に
表現されているノードに対して割り当てられており、そ
のノードを訪ねる。それぞれのノード“v”に関して、
その子ノードの数“c(v)”がこの時点で明らかにな
る。“アクティブ”内のそれぞれのシンクノード“u”
に関して、それがその子ノードの最終親ノードではない
場合には、“c(u)=0”にセットされる。それらは
削除されるべきものとしてマークが付される。削除され
るべきものとしてマークが付されていない“アクティ
ブ”内のノードをまとめるためにプリフィックス総和計
算が用いられる。“Pレディ”アレイ内の最初の
“i’”エントリはクリアされ、“アクティブ”の内容
が“Pレディ”アレイに対して(順に)プリペンドされ
る。
【0088】pDFT Pレディ補助定理: 前述され
たPレディノードアルゴリズムは“G”の1−DFTに
基づく“p”DFTを生成する。そのインプリメンテー
ションには、一定数の“p”プロセッサEREW PR
AMオペレーションに、“p”DFTのステップ当たり
サイズ“p”の一定数のプリフィックス総和計算を加え
たものが必要とされる。
【0089】タスク同期: レディノードの識別。 イ
ンプリメンテーションを完了するために、ノードの準備
が整った時点をどのように識別するかが記述される。親
タスク(DAG内のファンアウト“n”のソースノー
ド)によって並列に生成された“n”個の子タスクから
なる組を考える。タスク同期問題は、親ノードに係る計
算の再スタート(すなわち、ソースタスクに対応するシ
ンクタスクの開始)を可能にするために最終子ノードが
完了した時点をすばやく検出することである。計算が動
的であるため、どの子ノードが最後に終了するあるいは
子ノードに係る計算がどの位の時間を必要とするかを前
もって知ることは出来ない。さらに、親ノードをアクテ
ィブにしておくことも不可能である。なぜなら、このこ
とによって効率が低下するからである(この種の生成が
ネスティングされ得ることに留意されたい)。タスク同
期をインプリメントする一つの方法は、親ノードに対し
て、“n”に初期化されていてそれぞれの子ノードが完
了するにつれてデクリメントされるようなカウンタを関
連付けることである。しかしながら、複数個の子ノード
が同時に完了し得るために、この方法は、(特にERE
W PRAMに関して)理論および実際の双方の面で高
コストとなるフェッチ−アンド−追加動作を必要とす
る。第二の選択肢は、タスクが生成された時点で、それ
らが完了するにつれて同期をとるために用いられること
になるバイナリツリーを構成することである。しかしな
がら、この方法は、同期を取る際にツリーを登るために
“O(log n)”のスローダウンを必要とし、動的
負荷均衡法が用いられない限り、余分なワークが必要と
される。特に、このインプリメンテーションにおいて
は、任意のファンアウトを許可することによる利点が失
われる。シミュレーションコストは、バイナリファンア
ウトによって必要とされるDAG内の余分なデプスに等
しい。
【0090】アルゴリズムおよびデータストラクチャに
係る記述: 前述された問題点を回避するために、イン
プリメンテーションは以下のポイントに基づいている。
(1)“n”個の子ノードが生成された時点でそれらの
調整リストを生成する。(2)それぞれの子ノードは、
それが終了した時点で、2つの隣接するノードを短絡す
ることによって、自分自身を除去する。同一のステップ
において隣接するノードのいずれもが終了しない場合に
は、短絡には一定の時間がかかる。(3)複数個の隣接
するノードが終了する場合には、すべての完了する隣接
ノードに関する短絡を計算するためにプリフィックス総
和計算が用いられる。これを可能にするために、完了す
るすべての隣接ノードがタスクアレイ中で隣接している
というDFTの性質を用いる。完了しない隣接ノード
は、タスクアレイ中に存在しない。なぜなら、それらは
子ノードを生成して停止中であるからである。(4)最
終子ノードが終了すると、親ノードが再起動される。複
数個の子ノードが同時に終了した場合には、最も左側に
あるものが親ノードを再起動する。
【0091】シンクポインタの構成。 ソースノード
“v”が(アレイ“アクティブ”を介して)スケジュー
リングされると、関連するシンクノード、“シンク
v”、の表現が生成され、組“シンク”に挿入される。
(シンクノードでもあるソースノードは、ここではソー
スノード−シンクノード対として考慮される。)ソース
ノードは、この表現に係るポインタを維持している。ソ
ースノードの子ノードがスケジューリングされると、そ
れらはそれぞれ同様に関連するシンクノードに係る表現
を生成する。それぞれの子ノード“u”は、スケジュー
リングに際して、その親ノード“v”からポインタを
“シンクv”へコピーし、“シンクv”を指し示すため
に“シンクu”をセットする。“v”の子ノードがスケ
ジューリングされた後、ノード“v”はデータストラク
チャから削除されることに留意されたい。以下に記述さ
れているように、ノードは、スケジューリングのための
準備が整うまで、あるいは捨て去られるまで、“シン
ク”に保管される
【0092】調整リンクリスト。 ソースノード“v”
の子ノードがスケジューリングされると、関連するシン
クノードに係るリンクリストが順次生成される。ここで
考慮する不変量は、リストが、元のリストから、データ
ストラクチャ内に依然として存在しているノード、すな
わち組“シンク”内に存在するかあるいは“Pレディ”
アレイ内に存在するノード、を正確にリンクしていると
いうことである。リストが空になると、シンクノード
“シンクv”がスケジューリングされる準備が整った状
態になる。それゆえ、(特定の時点において)リストの
先頭のものがスケジューリングされると、リストが空に
なったかがチェックされる。空になった場合には、アレ
イ“アクティブ”内に残り、“Pレディ”内に配置され
る。空になっていない場合には、リスト中のスケジュー
リングされていない次のノードがリストの先頭に来て、
スケジューリングされたものはデータストラクチャから
削除される。リストの、スケジューリングされていてリ
ストの先頭に位置していないそれぞれのノードは速やか
にデータストラクチャから削除されることに留意された
い。
【0093】調整リストの管理: 調整リストは、削除
がなされる際には管理されなければならない。予想され
る困難点は、リスト内の連続するノードからなるシーケ
ンスが同時に削除され得ることである。残存するノード
間のリンクを更新するためにポインタジャンプ法を用い
ることはむしろ遅く、標準的な技法を用いた効率的な
(しかしながら遅い)インプリメンテーションに係るこ
とになる。本発明に従って、本発明に係るデータストラ
クチャの特別の特徴を用いた、高速かつ簡潔な解法が提
供される。鍵となる観察は、2つあるいはそれ以上の隣
接する兄弟ノードからなるシーケンスが削除される場合
には、その表現がアレイ“アクティブ”の連続するエン
トリ中に存在するということである。よって、この削除
されたサブリストに係る調整リストを更新することは、
アレイ“アクティブの”、これらの表現を含むサブアレ
イ中の最初と最後のエントリを連鎖することと同様に容
易である。この種の局所的な連鎖計算は、アレイ“アク
ティブ”内に表現されたノードに係る全体的な連鎖計算
を用いることによって得られるものであり、例えばプリ
フィックス総和計算によってなされ得る。この観察が正
しい理由を示すために以下の事項をコメントする:
(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数の順序に従って調整リストに置か
れる。(iii)“アクティブ”内のノードはその1−
DFT数によって順序付けられている。(iv)ノード
は、アレイ“アクティブ”内に存在する場合に限り、削
除されうる。(v)ノードがアレイ“アクティブ”に配
置された後は、その上流ノードは”アクティブ“には配
置され得ない。ここで、”u“および”v”を調整リス
トにおける隣接ノード、かつ“u”が”v“より前に存
在するとし、双方が削除されるものとする。(iv)に
よって双方はアレイ”アクティブ“内に存在する。調整
リスト内の”u”と“v”との間に存在するすべてのノ
ード“w”に関して、”w“が既に削除されていたた
め、(iv)および(v)によって“w“の上流ノード
は”アクティブ”内に存在しない。同様に、“v”が”
アクティブ“内に存在するため、その上流ノードは”ア
クティブ”内に存在しない。観察は、(i)、(ii)
および(iii)による。
【0094】複雑性および拡張。 “p”DFTのそれ
ぞれのステップには、最大“p”個のユニットタイムタ
スクが関与している。ネスティングされた並列性計算
は、そのDAGによって順序付けられていない2つある
いはそれ以上の個数のノードが同一のプログラム変数を
読み書きする場合に、同時アクセスプリミティブを用い
ると言われる。このようなノードが存在しない場合に
は、計算は、排他アクセスプリミティブを用いる。
“p”DFTの1ステップに関して、上述されたスケジ
ューリングアルゴリズム内でのデータストラクチャに係
るオペレーションは、“p”プロセッサEREW PR
AMに係る一定数のステップにサイズ“p”のプリフィ
ックス総和計算の一定回数の適用を加えたものを用いる
ことによってインプリメントされ得る。本発明に従っ
て、“p”プロセッサに関する最適ワークインプリメン
テーションを、“(p log p)”DFTを用いる
ことによって得ることが可能であり、それぞれのステッ
プにおけるリソース割り当てに係るオーバーヘッドを償
還することができる(簡潔に述べれば、シーケンシャル
空間がシーケンシャルな実行時間中で最悪線形であるよ
うな場合に係る制限を述べている)。
【0095】排他アクセスインプリメンテーションに係
る定理。 ワーク“W”、デプス“D”、および、排他
アクセスプリミティブ(のみ)を用いるシーケンシャル
空間“S1”(S1はO(W)に含まれる)を考える。上
述されたスケジューリングアルゴリズムは、計算を、
“p”プロセッサEREW PRAM上で、“O(W/
p+D・log p)”時間内に“O(S1+D・p
log p)”空間で、あるいは同一の制限内で、より
高い確率を有して“p”プロセッサ超三次(ハイパーキ
ューブ)上で、インプリメントすることが可能である。
【0096】証明: 前述された(定数“m”を有す
る)大規模割り当てに係る定理により、ここで用いられ
る“(plog p)”DFTには“O(W/(plo
g p)+D)”個のステップが存在する。これらのス
テップのそれぞれが、“p”個のプロセッサ上で“O
(log p)”の時間がかかることが以下のように示
される。サイズ“p log p”のプリフィックス総
和計算は、“p”プロセッサEREW PRAM上ある
いはハイパーキューブ上で、“O(log p)”の時
間でインプリメントされ得る(Ladner and Fischerによ
る前掲の参考文献参照)。乱数ハッシング技法を用いる
と、“(plog p)”プロセッサEREW PRA
Mに係る共有メモリは、“(plog p)”プロセッ
サEREWPRAMのそれぞれのステップが高い確率を
有して“O(log* p)”の時間でハイパーキュー
ブ上にインプリメントされ得るように、“p”プロセッ
サハイパーキューブ上に配置され得る。(L.G.Valiant,
General purpose parallelarchitectures, in J.van L
eeuwen, editor, Handbook of Theoretical Computer S
cience, Volume A, pages 943-972, Elsevier Science
Publishers B.V., Amsterdam, The Netherlands, 1990,
を参照。)よって、スケジューリングは、“O(lo
g p)”時間で実行され得る。同様に、“p log
p”単位ワークタスクも、“O(log p)”時間
で実行され得る。
【0097】CRCW PRAM上でのより高速なイン
プリメンテーション。 より高速な実行は、CRCW
PRAM上で、それぞれのプリフィックス総和計算を近
似プリフィックス総和計算あるいは連鎖計算によって置
換することによって実現され得る。近似プリフィックス
総和計算および連鎖計算に係るアルゴリズムは、“O
(taps)”の時間がかかることが知られている。ここ
で、ワーストケースで“taps=loglog p”で
あり(Berkman and U.Vishkin, Recursive star-tree p
arallel data struture, SIAM Journal on Computing,
22(2), pages221-242, 1993, を参照。また、T.Goldber
g and U.Zwick, Optimal deterministic approximate p
arallel prefix sum and their applications, in Pro
c. 3rd Israel Symp. on Theory of Computing and Sys
tems, pages 220-228, January 1995,も参照)、高い確
率を有して“taps=log p”である(M.T.Goodric
h, Y.Matias, and U.Vishkin, Optimal parallel appro
ximation algorithms for prefix sums and integer so
rting, in Proc. 5th ACM-SIAM Symp. on Discrete Alg
orithms, pages 241-250, January 1994, P.L.Ragde, T
he parallel simplicity of compactation and chainin
g, Journal of Algorithms, vol.14, pages 371-380, 1
993, および、Berkman and Vishkinによる1993年の
文献を参照)。プリフィックス総和計算の近似バーショ
ンを用いるためには、アレイ“Pレディ”および“アク
ティブ”中にわずかの空セルが存在することを許可し、
さらに、“p”だけ(大規模割り当てを扱うことが許可
されていた場合のように)利用可能である場合にも
“p”よりわずかに少ないものだけがそれぞれのステッ
プにおいて割り当てられるということを許可することが
必要である。
【0098】同時アクセスインプリメンテーションに係
る定理。 ワーク“W”、デプス“D”、およびシーケ
ンシャル空間“O(W)内のS1”を有し、同時アクセ
スプリミティブを利用する、ネスティングされた並列性
計算を考える。上記スケジューリングアルゴリズムは、
“p”プロセッサCRCW PRAM上で、“O(W/
p+D・taps)”時間内かつ“O(S1+D・p
aps)”空間で計算をインプリメントすることが可能
である。ここで、“taps”は確実に“O(loglo
g p)”であり、高い確率を有して“O(log*
p)”である。
【0099】メモリ割り当て手続き。 前記定理におけ
る空間制限は、データストラクチャと実行の間に宣言さ
れたプログラム変数とに係るあらわなメモリ割り当ての
問題を取り扱うことなく、用いられるメモリセルの絶対
数を説明している。アレイデータストラクチャに係るメ
モリ割り当ては直截的なものである。“シンク”データ
ストラクチャの組に係るメモリ割り当ては、プログラム
変数に係るものと同様、動的ディクショナリデータスト
ラクチャを用いて実行され得る。それぞれのステップに
おいて、“シンク”データストラクチャの表現の数、あ
るいはプログラム変数の数、に関して空間を線形に維持
する目的で、空間の適応割り当ておよび割り当て解除
が、EREW PRAM上で“p”個のプロセッサおよ
び対数的時間で(W.J.Paul, U.Vishkin, and H.Wagene
r, Parallel dictionaries on 2-3 trees, in Proc. 10
th Int. Colloquium on Automata Languages and Progr
amming, Springer LNCS 154, pages 597-609, 1983, を
参照)、および、CRCWPRAM上でより高い確率で
“O(log* p)”時間および線形ワークで(前掲
のGil, Matias, Vishkinに係る1991年の参考文献参
照)、インプリメントされ得る。
【0100】これらの自動メモリ割当て手続きは、粒度
の細かいネスティング済み並列性を有する言語によって
書かれたプログラムの、時間的、ワーク的、および空間
的に効率的な実行を実現する目的で、上記スケジューリ
ングアルゴリズムに関連して用いられる。
【0101】以上、オンライン並列計算の一般的なクラ
スを実行するための空間およびステップ制限が導出され
た。ネスティング済み並列計算のより限定されたクラス
に関しては、スケジューリングアルゴリズムが記述さ
れ、スケジューリングコストを含む時間制限が導出され
た。充分な並列性を有する計算に関しては、本発明の実
施例に従って、空間制限が、これまでに知られていた制
限より著しく改善された。
【0102】本発明は、並列言語、特にNESL言語、
の空間効率のよいインプリメンテーションを生成すると
いう利点を有している。
【0103】タスクは、プロセスのあらゆる段階におい
て新たに生成され得る。この種のタスクが生成された場
合には、それらはフィードバックされ、この種のタスク
を割り当てるコンポーネントがプライオリティを割り当
てる。
【0104】以上の説明は、本発明の一実施例に関する
もので,この技術分野の当業者であれば、本発明の種々
の変形例が考え得るが、それらはいずれも本発明の技術
的範囲に包含される。
【0105】
【発明の効果】以上述べたごとく、本発明によれば、並
列プロセッサを効率的に利用するようにスケジューリン
グする方法およびその手段が提供される。
【図面の簡単な説明】
【図1】 本発明の特徴を実現するシステムを模式的に
示したブロック図である。
【図2】 本発明の特徴を実現する図1の処理エレメン
トアレイの詳細を示すブロック図である。
【図3】 図1に示された処理アレイの別の実施例を示
すブロック図である。
【図4】 図2および図3に示された処理エレメントの
詳細を示すブロック図である。
【図5】 図1に示された割当てマネージャのブロック
図である。
【図6】 図1から図5までに示されたシステムのオペ
レーションを示す流れ図である。
【図7】 図6のあるステップの詳細を示す図である。
【図8】 割当てマネージャのオペレーションを示すよ
り詳細な流れ図である。
【図9】 図8のある部分の処理の別の実施例を示す流
れ図である。
【図10】 図5の一部を示すブロック図である。
【図11】 割当てマネージャのオペレーションの別の
実施例を示す流れ図である。
【図12】 割当てマネージャのオペレーションの別の
実施例を示す流れ図である。
【図13】 図11および図12の一部における処理の
別の実施例を示す流れ図である。
【図14】 本発明に係るオペレーションセオリーにお
いて発生するノードを示す模式図である。
【図15】 本発明に係るオペレーションセオリーにお
いて発生するノードを示す模式図である。
───────────────────────────────────────────────────── フロントページの続き (71)出願人 596077259 600 Mountain Avenue, Murray Hill, New Je rsey 07974−0636U.S.A. (72)発明者 フィリップ ビー.ギボンズ アメリカ合衆国,07090 ニュージャージ ー,ウェストフィールド,エンブリー コ ート 201 (72)発明者 ヨッシ マティアス アメリカ合衆国,20854 メリーランド, ポトマック,ロサリンダ ドライブ 11815

Claims (26)

    【特許請求の範囲】
  1. 【請求項1】 処理のためにタスクの逐次順序を決定す
    るステップと、 可能なタスクに対して前記逐次順序に基づいてプライオ
    リティを割り当てる割当てステップと、 利用可能な並列処理エレメントの総数よりも多い数のタ
    スクを最高プライオリティを有する可能なすべてのタス
    クから選択する選択ステップと、 前記選択されたタスクを前記利用可能な並列処理エレメ
    ントの数と等しい数のグループに分割する分割ステップ
    と、 前記並列処理エレメントにおいて前記タスクを実行する
    実行ステップとからなることを特徴とする並列処理方
    法。
  2. 【請求項2】 前記選択されたタスクの個数が可能なタ
    スクの個数とは相異なり、かつ、前記並列処理エレメン
    トの利用可能な個数と相異なることを特徴とする請求項
    1の方法。
  3. 【請求項3】 前記選択されたタスクの個数が前記並列
    処理エレメントの利用可能な個数より多く、かつ、タス
    クの最大数より小さいことを特徴とする請求項1の方
    法。
  4. 【請求項4】 前記選択されたタスクの個数がNであ
    り、前記並列処理エレメントの利用可能な個数がpであ
    り、前記分割ステップがN個の選択されたタスクをほぼ
    N/pという大きさを有するグループに分割することを
    特徴とする請求項1の方法。
  5. 【請求項5】 前記分割ステップが、前記グループのそ
    れぞれを前記並列処理エレメントのうちの一つに割り当
    てるステップを有することを特徴とする請求項1の方
    法。
  6. 【請求項6】 前記割当てステップが、ある個数の並列
    ステップで割り当てるステップを有することを特徴とす
    る請求項1の方法。
  7. 【請求項7】 生成されたステップが、それらを生成し
    た親タスクの順序で配置されることを特徴とする請求項
    1の方法。
  8. 【請求項8】 前記分割ステップが、ある個数の並列ス
    テップで実行されることを特徴とする請求項1の方法。
  9. 【請求項9】 前記逐次順序が、デプスファーストトラ
    バーサルスケジュールであることを特徴とする請求項1
    の方法。
  10. 【請求項10】 前記実行ステップがある個数のタスク
    を生成し、前記割当てステップが生成されたタスクにプ
    ライオリティを割り当てることを特徴とする請求項1の
    方法。
  11. 【請求項11】 前記選択されたタスクの個数がNであ
    り、前記並列処理エレメントの利用可能な個数がpであ
    り、前記分割ステップがN個の選択されたタスクをほぼ
    N/pという大きさを有するグループに分割することを
    特徴とする請求項10の方法。
  12. 【請求項12】 前記選択ステップが、個数Mの可能な
    タスクから選択されたタスクの個数Nに対して制限Lを
    設定するステップを有しており、前記可能なタスクの個
    数Mが前記制限Lと等しいかあるいはそれ以上である場
    合にはN=Lとし、M<Lの場合にはN=Mとすること
    を特徴とする請求項1の方法。
  13. 【請求項13】 前記分割ステップが前記タスクの重み
    付けを行うステップを有しており、前記分割ステップが
    前記重みに基づいて前記タスクを前記グループに分割す
    るステップを有することを特徴とする請求項1の方法。
  14. 【請求項14】 処理のためにタスクの逐次順序を決定
    する手段と、 可能なタスクに対して前記逐次順序に基づいてプライオ
    リティを割り当てる割当て手段と、 利用可能な並列処理エレメントと、 前記利用可能な並列処理エレメントの総数よりも多い数
    のタスクを最高プライオリティを有する可能なすべての
    タスクから選択する手段と、 前記選択されたタスクを前記利用可能な並列処理エレメ
    ントの数と等しい数のグループに分割する分割手段と、 前記並列処理エレメントに前記タスクを実行する実行手
    段とからなることを特徴とする並列処理装置。
  15. 【請求項15】 前記選択されたタスクの個数が可能な
    タスクの個数とは相異なり、かつ、前記並列処理エレメ
    ントの利用可能な個数と相異なることを特徴とする請求
    項14の装置。
  16. 【請求項16】 前記選択されたタスクの個数が前記並
    列処理エレメントの利用可能な個数より多く、かつ、タ
    スクの最大数より小さいことを特徴とする請求項14の
    装置。
  17. 【請求項17】 前記選択されたタスクの個数がNであ
    り、前記並列処理エレメントの利用可能な個数がpであ
    り、前記分割手段がN個の選択されたタスクをほぼN/
    pという大きさを有するグループに分割することを特徴
    とする請求項14の装置。
  18. 【請求項18】 前記分割手段が、前記グループのそれ
    ぞれを前記並列処理エレメントのうちの一つに割り当て
    る手段を有することを特徴とする請求項14の装置。
  19. 【請求項19】 前記割当て手段が、ある個数の並列ス
    テップで割り当てる手段を有することを特徴とする請求
    項14の装置。
  20. 【請求項20】 前記割当て手段が、生成されたステッ
    プを、それらを生成した親タスクの順序で配置すること
    を特徴とする請求項14の装置。
  21. 【請求項21】 前記分割手段が、ある個数の並列ステ
    ップで実行されることを特徴とする請求項14の装置。
  22. 【請求項22】 前記逐次順序が、デプスファーストト
    ラバーサルスケジュールであることを特徴とする請求項
    14の装置。
  23. 【請求項23】 前記実行手段がある個数のタスクを生
    成し、前記割当て手段が生成されたタスクにプライオリ
    ティを割り当てることを特徴とする請求項14の装置。
  24. 【請求項24】 前記選択されたタスクの個数がNであ
    り、前記並列処理エレメントの利用可能な個数がpであ
    り、前記分割手段がN個の選択されたタスクをほぼN/
    pという大きさを有するグループに分割することを特徴
    とする請求項23の装置。
  25. 【請求項25】 前記選択手段が、個数Mの可能なタス
    クから選択されたタスクの個数Nに対して制限Lを設定
    する手段を有しており、前記可能なタスクの個数Mが前
    記制限Lと等しいかあるいはそれ以上である場合にはN
    =Lとし、M<Lの場合にはN=Mとすることを特徴と
    する請求項14の装置。
  26. 【請求項26】 前記分割手段が前記タスクの重み付け
    を行う手段を有しており、前記分割手段が前記重みに基
    づいて前記タスクを前記グループに分割する手段を有す
    ることを特徴とする請求項14の装置。
JP8184626A 1995-07-14 1996-07-15 並列処理方法および並列処理装置 Pending JPH09171503A (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US08/502,625 US5768594A (en) 1995-07-14 1995-07-14 Methods and means for scheduling parallel processors
US502625 1995-07-14

Publications (1)

Publication Number Publication Date
JPH09171503A true JPH09171503A (ja) 1997-06-30

Family

ID=23998659

Family Applications (1)

Application Number Title Priority Date Filing Date
JP8184626A Pending JPH09171503A (ja) 1995-07-14 1996-07-15 並列処理方法および並列処理装置

Country Status (4)

Country Link
US (2) US5768594A (ja)
EP (1) EP0753812A3 (ja)
JP (1) JPH09171503A (ja)
CA (1) CA2181099C (ja)

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH1131082A (ja) * 1997-07-11 1999-02-02 Teijin Seiki Co Ltd オペレーティングシステムおよびオペレーティングシステムを記録した媒体
JP2010086319A (ja) * 2008-09-30 2010-04-15 Toshiba Corp コンピュータプログラム、マルチプロセッサシステム及びグルーピング方法
JP2010237994A (ja) * 2009-03-31 2010-10-21 Mizuho Information & Research Institute Inc 演算処理システム、演算処理方法及び演算処理プログラム
JP2020522824A (ja) * 2017-11-20 2020-07-30 シャンハイ カンブリコン インフォメーション テクノロジー カンパニー リミテッドShanghai Cambricon Information Technology Co.,Ltd. タスク並列処理方法、装置、システム、記憶媒体およびコンピュータ機器
JP2020129404A (ja) * 2015-10-28 2020-08-27 グーグル エルエルシー 計算グラフの処理

Families Citing this family (197)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5768594A (en) 1995-07-14 1998-06-16 Lucent Technologies Inc. Methods and means for scheduling parallel processors
US6006266A (en) * 1996-06-03 1999-12-21 International Business Machines Corporation Multiplexing of clients and applications among multiple servers
US5954792A (en) * 1996-12-30 1999-09-21 Cadence Design Systems, Inc. Method for schedule validation of embedded systems
US6317774B1 (en) * 1997-01-09 2001-11-13 Microsoft Corporation Providing predictable scheduling of programs using a repeating precomputed schedule
US6401194B1 (en) * 1997-01-28 2002-06-04 Samsung Electronics Co., Ltd. Execution unit for processing a data stream independently and in parallel
US6178542B1 (en) 1997-02-24 2001-01-23 Lucent Technologies Inc. Hardware-software co-synthesis of embedded system architectures using quality of architecture metrics
US6110220A (en) * 1997-02-24 2000-08-29 Lucent Technologies Inc. Concurrent hardware-software co-synthesis of hard real-time aperiodic and periodic specifications of embedded system architectures
US6289488B1 (en) 1997-02-24 2001-09-11 Lucent Technologies Inc. Hardware-software co-synthesis of hierarchical heterogeneous distributed embedded systems
US6112023A (en) * 1997-02-24 2000-08-29 Lucent Technologies Inc. Scheduling-based hardware-software co-synthesis of heterogeneous distributed embedded systems
US6230303B1 (en) 1997-02-24 2001-05-08 Lucent Technologies Inc. Proximity-based cluster allocation for hardware-software co-synthesis of heterogeneous distributed embedded systems
US6117180A (en) * 1997-02-24 2000-09-12 Lucent Technologies Inc. Hardware-software co-synthesis of heterogeneous distributed embedded systems for low overhead fault tolerance
AU6586898A (en) * 1997-03-21 1998-10-20 University Of Maryland Spawn-join instruction set architecture for providing explicit multithreading
FR2766592B1 (fr) * 1997-07-23 1999-08-27 Bull Sa Dispositif et procede de regulation dynamique de l'attribution des ressources sur un systeme informatique
US5999961A (en) * 1997-09-15 1999-12-07 California Institute Of Technology Parallel prefix operations in asynchronous processors
US5937200A (en) * 1997-11-21 1999-08-10 Phoenix Technologies Ltd. Using firmware to enhance the functionality of a controller
US6086628A (en) * 1998-02-17 2000-07-11 Lucent Technologies Inc. Power-related hardware-software co-synthesis of heterogeneous distributed embedded systems
US6097886A (en) * 1998-02-17 2000-08-01 Lucent Technologies Inc. Cluster-based hardware-software co-synthesis of heterogeneous distributed embedded systems
US6106575A (en) * 1998-05-13 2000-08-22 Microsoft Corporation Nested parallel language preprocessor for converting parallel language programs into sequential code
US6292822B1 (en) 1998-05-13 2001-09-18 Microsoft Corporation Dynamic load balancing among processors in a parallel computer
EP1082687A1 (en) * 1998-06-05 2001-03-14 i2 TECHNOLOGIES, INC. Computer implemented scheduling system and process using abstract local search technique
US6920634B1 (en) * 1998-08-03 2005-07-19 International Business Machines Corporation Detecting and causing unsafe latent accesses to a resource in multi-threaded programs
US7451447B1 (en) * 1998-08-07 2008-11-11 Arc International Ip, Inc. Method, computer program and apparatus for operating system dynamic event management and task scheduling using function calls
US6415384B1 (en) 1998-10-30 2002-07-02 Lucent Technologies Inc. Hardware/software co-synthesis of dynamically reconfigurable embedded systems
WO2000036491A2 (en) * 1998-12-17 2000-06-22 California Institute Of Technology Programming system and thread synchronization mechanisms for the development of selectively sequential and multithreaded computer programs
US6826752B1 (en) 1998-12-17 2004-11-30 California Institute Of Technology Programming system and thread synchronization mechanisms for the development of selectively sequential and multithreaded computer programs
US6433802B1 (en) * 1998-12-29 2002-08-13 Ncr Corporation Parallel programming development environment
US6343371B1 (en) * 1999-01-14 2002-01-29 Compaq Computer Corporation System and method for statically detecting potential race conditions in multi-threaded computer programs
US6925642B1 (en) * 1999-04-29 2005-08-02 Hewlett-Packard Development Company, L.P. Distributed computer network which spawns inter-node parallel processes based on resource availability
US7401112B1 (en) * 1999-05-26 2008-07-15 Aspect Communication Corporation Methods and apparatus for executing a transaction task within a transaction processing system employing symmetric multiprocessors
US6470486B1 (en) * 1999-05-26 2002-10-22 Get2Chip Method for delay-optimizing technology mapping of digital logic
US6308313B1 (en) * 1999-06-09 2001-10-23 Nec Corporation Method for synthesis of common-case optimized circuits to improve performance and power dissipation
US6999994B1 (en) * 1999-07-01 2006-02-14 International Business Machines Corporation Hardware device for processing the tasks of an algorithm in parallel
US6820262B1 (en) * 1999-07-22 2004-11-16 Oracle International Corporation Method for computing the degree of parallelism in a multi-user environment
US6961708B1 (en) 1999-08-27 2005-11-01 Computer Sciences Corporation External interface for requesting data from remote systems in a generic fashion
US6970844B1 (en) 1999-08-27 2005-11-29 Computer Sciences Corporation Flow designer for establishing and maintaining assignment and strategy process maps
US6499037B1 (en) * 1999-09-09 2002-12-24 Lucent Technologies Inc. System and method for serializing updates to ancestor sites in a distributed database
US6658448B1 (en) * 1999-10-21 2003-12-02 Unisys Corporation System and method for assigning processes to specific CPU's to increase scalability and performance of operating systems
US6584487B1 (en) * 1999-11-16 2003-06-24 Hewlett-Packard Development Company, L.P. Method, system, and apparatus for managing tasks
US7518993B1 (en) * 1999-11-19 2009-04-14 The United States Of America As Represented By The Secretary Of The Navy Prioritizing resource utilization in multi-thread computing system
US6779183B1 (en) 1999-12-23 2004-08-17 Lucent Technologies Inc. Method and system for load scheduling multidimensional tasks among multiple processors
US20010042138A1 (en) * 1999-12-23 2001-11-15 Reinhard Buendgen Method and system for parallel and procedural computing
US6748593B1 (en) 2000-02-17 2004-06-08 International Business Machines Corporation Apparatus and method for starvation load balancing using a global run queue in a multiple run queue system
US6658449B1 (en) * 2000-02-17 2003-12-02 International Business Machines Corporation Apparatus and method for periodic load balancing in a multiple run queue system
US7216345B1 (en) * 2000-04-07 2007-05-08 Hall Aluminum Llc Method and apparatus for protectively operating a data/information processing device
US7315901B1 (en) * 2000-04-13 2008-01-01 International Business Machines Corporation Method and system for network processor scheduling outputs using disconnect/reconnect flow queues
US7739325B1 (en) 2000-04-24 2010-06-15 Aspect Software, Inc. Apparatus and method for extensible real-time workflows
US7221377B1 (en) 2000-04-24 2007-05-22 Aspect Communications Apparatus and method for collecting and displaying information in a workflow system
US7010788B1 (en) * 2000-05-19 2006-03-07 Hewlett-Packard Development Company, L.P. System for computing the optimal static schedule using the stored task execution costs with recent schedule execution costs
JP2002007150A (ja) * 2000-06-19 2002-01-11 Hitachi Ltd プロセスのスケジューリング方法および装置およびプロセスのスケジューリングプログラムを記録したコンピュータ読み取り可能な記録媒体
US7847803B1 (en) * 2000-07-26 2010-12-07 Ati Technologies Ulc Method and apparatus for interleaved graphics processing
US7039115B1 (en) * 2000-09-20 2006-05-02 General Instrument Corporation Processor allocation for channels in a video multi-processor system
US6918111B1 (en) * 2000-10-03 2005-07-12 Sun Microsystems, Inc. System and method for scheduling instructions to maximize outstanding prefetches and loads
JP3688618B2 (ja) * 2000-10-10 2005-08-31 株式会社ソニー・コンピュータエンタテインメント データ処理システム及びデータ処理方法、コンピュータプログラム、記録媒体
US7174359B1 (en) * 2000-11-09 2007-02-06 International Business Machines Corporation Apparatus and methods for sequentially scheduling a plurality of commands in a processing environment which executes commands concurrently
US7962716B2 (en) 2001-03-22 2011-06-14 Qst Holdings, Inc. Adaptive integrated circuitry with heterogeneous and reconfigurable matrices of diverse and adaptive computational units having fixed, application specific computational elements
US6836839B2 (en) 2001-03-22 2004-12-28 Quicksilver Technology, Inc. Adaptive integrated circuitry with heterogeneous and reconfigurable matrices of diverse and adaptive computational units having fixed, application specific computational elements
US7752419B1 (en) 2001-03-22 2010-07-06 Qst Holdings, Llc Method and system for managing hardware resources to implement system functions using an adaptive computing architecture
US7653710B2 (en) 2002-06-25 2010-01-26 Qst Holdings, Llc. Hardware task manager
US20040133745A1 (en) 2002-10-28 2004-07-08 Quicksilver Technology, Inc. Adaptable datapath for a digital processing system
CA2343437A1 (en) * 2001-04-06 2002-10-06 Ibm Canada Limited-Ibm Canada Limitee Method and system for cross platform, parallel processing
US6577678B2 (en) 2001-05-08 2003-06-10 Quicksilver Technology Method and system for reconfigurable channel coding
US20050065989A1 (en) * 2001-05-14 2005-03-24 Hiroshi Akiba Parallel infinite element method calculation system
US7159215B2 (en) * 2001-06-27 2007-01-02 Sun Microsystems, Inc. Termination detection for shared-memory parallel programs
US7089559B2 (en) * 2001-07-31 2006-08-08 International Business Machines Corporation Method, apparatus, and program for chaining server applications
US7249357B2 (en) * 2001-08-20 2007-07-24 Silicon Graphics, Inc. Transparent distribution and execution of data in a multiprocessor environment
US7046635B2 (en) 2001-11-28 2006-05-16 Quicksilver Technology, Inc. System for authorizing functionality in adaptable hardware devices
US6986021B2 (en) 2001-11-30 2006-01-10 Quick Silver Technology, Inc. Apparatus, method, system and executable module for configuration and operation of adaptive integrated circuitry having fixed, application specific computational elements
US8412915B2 (en) 2001-11-30 2013-04-02 Altera Corporation Apparatus, system and method for configuration of adaptive integrated circuitry having heterogeneous computational elements
US7215701B2 (en) 2001-12-12 2007-05-08 Sharad Sambhwani Low I/O bandwidth method and system for implementing detection and identification of scrambling codes
US7403981B2 (en) 2002-01-04 2008-07-22 Quicksilver Technology, Inc. Apparatus and method for adaptive multimedia reception and transmission in communication environments
US6959372B1 (en) * 2002-02-19 2005-10-25 Cogent Chipware Inc. Processor cluster architecture and associated parallel processing methods
US7085866B1 (en) 2002-02-19 2006-08-01 Hobson Richard F Hierarchical bus structure and memory access protocol for multiprocessor systems
US7532750B2 (en) * 2002-04-17 2009-05-12 Sony Corporation Image processing apparatus and method, program, and image processing system
US7328414B1 (en) 2003-05-13 2008-02-05 Qst Holdings, Llc Method and system for creating and programming an adaptive computing engine
US7660984B1 (en) 2003-05-13 2010-02-09 Quicksilver Technology Method and system for achieving individualized protected space in an operating system
US7360216B2 (en) * 2002-07-03 2008-04-15 Nvidia Corporation Method and system for real-time multitasking
US8874503B2 (en) * 2002-07-15 2014-10-28 Jmw Productivity, Llc Method, system and apparatus for organizing information for managing life affairs
US8108656B2 (en) * 2002-08-29 2012-01-31 Qst Holdings, Llc Task definition for specifying resource requirements
US7222218B2 (en) 2002-10-22 2007-05-22 Sun Microsystems, Inc. System and method for goal-based scheduling of blocks of code for concurrent execution
US7765532B2 (en) * 2002-10-22 2010-07-27 Oracle America, Inc. Inducing concurrency in software code
US7346902B2 (en) * 2002-10-22 2008-03-18 Sun Microsystems, Inc. System and method for block-based concurrentization of software code
US7603664B2 (en) * 2002-10-22 2009-10-13 Sun Microsystems, Inc. System and method for marking software code
US7937591B1 (en) 2002-10-25 2011-05-03 Qst Holdings, Llc Method and system for providing a device which can be adapted on an ongoing basis
US8276135B2 (en) 2002-11-07 2012-09-25 Qst Holdings Llc Profiling of software and circuit designs utilizing data operation analyses
US7225301B2 (en) 2002-11-22 2007-05-29 Quicksilver Technologies External memory controller node
US6912610B2 (en) * 2003-03-28 2005-06-28 Emulex Design & Manufacturing Corporation Hardware assisted firmware task scheduling and management
US6880047B2 (en) * 2003-03-28 2005-04-12 Emulex Design & Manufacturing Corporation Local emulation of data RAM utilizing write-through cache hardware within a CPU module
US20040249616A1 (en) * 2003-04-16 2004-12-09 Vierus Stephanie A. Resource modeler system and method
US20040233934A1 (en) * 2003-05-23 2004-11-25 Hooper Donald F. Controlling access to sections of instructions
US7058735B2 (en) * 2003-06-02 2006-06-06 Emulex Design & Manufacturing Corporation Method and apparatus for local and distributed data memory access (“DMA”) control
WO2005008414A2 (en) * 2003-07-11 2005-01-27 Computer Associates Think, Inc. Method and apparatus for parallel action processing
US7496921B2 (en) * 2003-08-29 2009-02-24 Intel Corporation Processing block with integrated light weight multi-threading support
CA2442803A1 (en) * 2003-09-26 2005-03-26 Ibm Canada Limited - Ibm Canada Limitee Structure and method for managing workshares in a parallel region
US7296256B2 (en) * 2003-10-20 2007-11-13 International Business Machines Corporation Method and apparatus for automatic modeling building using inference for IT systems
JP4203001B2 (ja) * 2004-01-28 2008-12-24 株式会社東芝 並列計算方法、並列計算プログラム及び計算機
US8689202B1 (en) * 2004-03-30 2014-04-01 Synopsys, Inc. Scheduling of instructions
US8677312B1 (en) 2004-03-30 2014-03-18 Synopsys, Inc. Generation of compiler description from architecture description
US20050222895A1 (en) * 2004-04-03 2005-10-06 Altusys Corp Method and Apparatus for Creating and Using Situation Transition Graphs in Situation-Based Management
US8694475B2 (en) * 2004-04-03 2014-04-08 Altusys Corp. Method and apparatus for situation-based management
US20050222810A1 (en) * 2004-04-03 2005-10-06 Altusys Corp Method and Apparatus for Coordination of a Situation Manager and Event Correlation in Situation-Based Management
US9280326B1 (en) 2004-05-26 2016-03-08 Synopsys, Inc. Compiler retargeting based on instruction semantic models
US8006225B1 (en) 2004-06-03 2011-08-23 Synposys, Inc. Method and system for automatic generation of instruction-set documentation from an abstract processor model described using a hierarchical architectural description language
US20060123401A1 (en) * 2004-12-02 2006-06-08 International Business Machines Corporation Method and system for exploiting parallelism on a heterogeneous multiprocessor computer system
US8607235B2 (en) * 2004-12-30 2013-12-10 Intel Corporation Mechanism to schedule threads on OS-sequestered sequencers without operating system intervention
US7747993B2 (en) * 2004-12-30 2010-06-29 Michigan Technological University Methods and systems for ordering instructions using future values
US8015564B1 (en) 2005-04-27 2011-09-06 Hewlett-Packard Development Company, L.P. Method of dispatching tasks in multi-processor computing environment with dispatching rules and monitoring of system status
US8214836B1 (en) 2005-05-13 2012-07-03 Oracle America, Inc. Method and apparatus for job assignment and scheduling using advance reservation, backfilling, and preemption
US7984447B1 (en) 2005-05-13 2011-07-19 Oracle America, Inc. Method and apparatus for balancing project shares within job assignment and scheduling
US7844968B1 (en) * 2005-05-13 2010-11-30 Oracle America, Inc. System for predicting earliest completion time and using static priority having initial priority and static urgency for job scheduling
US7908163B2 (en) * 2005-07-15 2011-03-15 The Board Of Trustees Of The University Of Alabama Method and system for parallel scheduling of complex dags under uncertainty
US7793299B2 (en) * 2005-08-30 2010-09-07 International Business Machines Corporation System and method for scheduling tasks for execution
US20070061805A1 (en) * 2005-09-15 2007-03-15 Brenner Larry B Method and apparatus for improving thread posting efficiency in a multiprocessor data processing system
US8112507B2 (en) * 2005-09-27 2012-02-07 Intel Corporation Remote node list searching mechanism for storage task scheduling
US7620751B2 (en) * 2005-09-27 2009-11-17 Intel Corporation Command scheduling and affiliation management for serial attached storage devices
US7451255B2 (en) * 2005-09-28 2008-11-11 Intel Corporation Hardware port scheduler (PTS) having register to indicate which of plurality of protocol engines PTS is to support
US8281313B1 (en) 2005-09-29 2012-10-02 Hewlett-Packard Development Company, L.P. Scheduling computer processing jobs that have stages and precedence constraints among the stages
WO2007068148A1 (en) * 2005-12-17 2007-06-21 Intel Corporation Method and apparatus for partitioning programs to balance memory latency
US7765536B2 (en) * 2005-12-21 2010-07-27 Management Services Group, Inc. System and method for the distribution of a program among cooperating processors
US8387033B2 (en) * 2005-12-21 2013-02-26 Management Services Group, Inc. System and method for the distribution of a program among cooperating processing elements
US8387034B2 (en) * 2005-12-21 2013-02-26 Management Services Group, Inc. System and method for the distribution of a program among cooperating processing elements
US8108863B2 (en) 2005-12-30 2012-01-31 Intel Corporation Load balancing for multi-threaded applications via asymmetric power throttling
US20070192766A1 (en) * 2006-02-13 2007-08-16 Ketan Padalia Apparatus and methods for parallelizing integrated circuit computer-aided design software
TW200734894A (en) * 2006-03-10 2007-09-16 Univ Chung Hua Virtual tree searcher using parallel tree search method
US8284206B2 (en) * 2006-03-14 2012-10-09 Transgaming, Inc. General purpose software parallel task engine
US7882498B2 (en) * 2006-03-31 2011-02-01 Intel Corporation Method, system, and program of a compiler to parallelize source code
US7870556B2 (en) * 2006-05-16 2011-01-11 Ab Initio Technology Llc Managing computing resources in graph-based computations
JP4784827B2 (ja) * 2006-06-06 2011-10-05 学校法人早稲田大学 ヘテロジニアスマルチプロセッサ向けグローバルコンパイラ
US7478118B2 (en) * 2006-06-29 2009-01-13 Research In Motion Limited Method and apparatus for synchronizing of databases connected by wireless interface
US8209703B2 (en) * 2006-12-08 2012-06-26 SAP France S.A. Apparatus and method for dataflow execution in a distributed environment using directed acyclic graph and prioritization of sub-dataflow tasks
US8255889B2 (en) * 2007-02-14 2012-08-28 The Mathworks, Inc. Method of using parallel processing constructs and dynamically allocating program portions
US8239845B2 (en) * 2007-02-14 2012-08-07 The Mathworks, Inc. Media for using parallel processing constructs
US8010954B2 (en) 2007-02-14 2011-08-30 The Mathworks, Inc. Parallel programming interface to dynamically allocate program portions
US8239846B2 (en) * 2007-02-14 2012-08-07 The Mathworks, Inc. Device for performing parallel processing of distributed arrays
US8250550B2 (en) * 2007-02-14 2012-08-21 The Mathworks, Inc. Parallel processing of distributed arrays and optimum data distribution
US8255890B2 (en) 2007-02-14 2012-08-28 The Mathworks, Inc. Media for performing parallel processing of distributed arrays
US8239844B2 (en) 2007-02-14 2012-08-07 The Mathworks, Inc. Method of using parallel processing constructs and dynamically allocating program portions
JP4776571B2 (ja) * 2007-03-16 2011-09-21 富士通株式会社 実行制御プログラム,実行制御方法及び実行制御装置
US8789031B2 (en) * 2007-09-18 2014-07-22 Intel Corporation Software constructed strands for execution on a multi-core architecture
US8281369B2 (en) * 2008-03-12 2012-10-02 Avaya Inc. Method and apparatus for creating secure write-enabled web pages that are associated with active telephone calls
US9038087B2 (en) * 2008-06-18 2015-05-19 Microsoft Technology Licensing, Llc Fence elision for work stealing
US9058206B2 (en) 2008-06-19 2015-06-16 Freescale emiconductor, Inc. System, method and program product for determining execution flow of the scheduler in response to setting a scheduler control variable by the debugger or by a processing entity
WO2009153620A1 (en) 2008-06-19 2009-12-23 Freescale Semiconductor, Inc. A system, method and computer program product for scheduling a processing entity task
JP4491026B2 (ja) * 2008-06-30 2010-06-30 株式会社東芝 情報処理装置、プログラム処理方法及びコンピュータプログラム
US8621471B2 (en) * 2008-08-13 2013-12-31 Microsoft Corporation High accuracy timer in a multi-processor computing system without using dedicated hardware timer resources
US8683471B2 (en) * 2008-10-02 2014-03-25 Mindspeed Technologies, Inc. Highly distributed parallel processing on multi-core device
US9703595B2 (en) * 2008-10-02 2017-07-11 Mindspeed Technologies, Llc Multi-core system with central transaction control
US20100169618A1 (en) * 2008-12-30 2010-07-01 Microsoft Corporation Identifying concurrency control from a sequential proof
US8667476B1 (en) * 2009-01-20 2014-03-04 Adaptmicrosys LLC Instruction grouping and ungrouping apparatus and method for an adaptive microprocessor system
US8879464B2 (en) 2009-01-29 2014-11-04 Avaya Inc. System and method for providing a replacement packet
US9525710B2 (en) * 2009-01-29 2016-12-20 Avaya Gmbh & Co., Kg Seamless switch over from centralized to decentralized media streaming
US8238335B2 (en) 2009-02-13 2012-08-07 Avaya Inc. Multi-route transmission of packets within a network
US7936746B2 (en) * 2009-03-18 2011-05-03 Avaya Inc. Multimedia communication session coordination across heterogeneous transport networks
US20100265834A1 (en) * 2009-04-17 2010-10-21 Avaya Inc. Variable latency jitter buffer based upon conversational dynamics
US8094556B2 (en) * 2009-04-27 2012-01-10 Avaya Inc. Dynamic buffering and synchronization of related media streams in packet networks
US8553849B2 (en) 2009-06-17 2013-10-08 Avaya Inc. Personal identification and interactive device for internet-based text and video communication services
US20120089730A1 (en) * 2009-06-26 2012-04-12 Nokia Siemens Networks Oy Modifying command sequences
US8800049B2 (en) * 2009-08-26 2014-08-05 Avaya Inc. Licensing and certificate distribution via secondary or divided signaling communication pathway
US8832663B2 (en) 2009-11-23 2014-09-09 International Business Machines Corporation Thread serialization and disablement tool
US8549523B2 (en) * 2009-11-23 2013-10-01 International Business Machines Corporation Performing runtime analysis and control of folding identified threads by assuming context of another thread and executing in lieu of another thread folding tool
US9959572B2 (en) * 2009-12-10 2018-05-01 Royal Bank Of Canada Coordinated processing of data by networked computing resources
SG181616A1 (en) 2009-12-10 2012-07-30 Royal Bank Of Canada Synchronized processing of data by networked computing resources
US9979589B2 (en) * 2009-12-10 2018-05-22 Royal Bank Of Canada Coordinated processing of data by networked computing resources
US10771536B2 (en) * 2009-12-10 2020-09-08 Royal Bank Of Canada Coordinated processing of data by networked computing resources
US9940670B2 (en) 2009-12-10 2018-04-10 Royal Bank Of Canada Synchronized processing of data by networked computing resources
US10057333B2 (en) 2009-12-10 2018-08-21 Royal Bank Of Canada Coordinated processing of data by networked computing resources
JP5990466B2 (ja) 2010-01-21 2016-09-14 スビラル・インコーポレーテッド ストリームに基づく演算を実装するための汎用複数コアシステムのための方法および装置
US9823991B2 (en) * 2010-12-06 2017-11-21 International Business Machines Corporation Concurrent workload simulation for application performance testing
DE112012000245T5 (de) 2011-01-10 2013-08-14 International Business Machines Corporation Aktivitätsaufzeichnungssystem für eine parallele Softwareumgebung
KR102082242B1 (ko) 2011-09-06 2020-02-27 인텔 코포레이션 전력 효율적 프로세서 아키텍처
WO2013101139A1 (en) 2011-12-30 2013-07-04 Intel Corporation Providing an asymmetric multicore processor system transparently to an operating system
US9471458B2 (en) * 2012-01-05 2016-10-18 International Business Machines Corporation Synchronization activity recording system for a concurrent software environment
US9135077B2 (en) * 2012-03-16 2015-09-15 Advanced Micro Devices, Inc. GPU compute optimization via wavefront reforming
US8943343B2 (en) 2012-06-20 2015-01-27 Intel Corporation Controlling an asymmetrical processor
US9116747B2 (en) * 2012-06-20 2015-08-25 Sas Institute Inc. Sparse threaded deterministic lock-free cholesky and LDLT factorizations
CN105308918B (zh) * 2013-06-19 2019-03-01 华为技术有限公司 调度装置
US9329899B2 (en) 2013-06-24 2016-05-03 Sap Se Parallel execution of parsed query based on a concurrency level corresponding to an average number of available worker threads
JP6221588B2 (ja) * 2013-09-30 2017-11-01 富士通株式会社 情報処理システム、管理装置制御プログラム及び情報処理システムの制御方法
US9229690B2 (en) * 2013-11-27 2016-01-05 Metis-Mp Ltd. Automatic computer code parallelization
US9652286B2 (en) 2014-03-21 2017-05-16 Oracle International Corporation Runtime handling of task dependencies using dependence graphs
US9348644B2 (en) * 2014-10-08 2016-05-24 International Business Machines Corporation Application-level dispatcher control of application-level pseudo threads and operating system threads
US10061577B2 (en) * 2014-10-14 2018-08-28 Electric Cloud, Inc. System and method for optimizing job scheduling within program builds
EP3269090B1 (en) * 2015-02-27 2019-10-02 Royal Bank Of Canada Coordinated processing of data by networked computing resources
JP6427055B2 (ja) * 2015-03-31 2018-11-21 株式会社デンソー 並列化コンパイル方法、及び並列化コンパイラ
US10108670B2 (en) 2015-08-19 2018-10-23 International Business Machines Corporation Parallel quicksort
US10877816B2 (en) * 2016-04-20 2020-12-29 Samsung Electronics Co., Ltd. Optimal task scheduler
US11240305B2 (en) * 2016-07-28 2022-02-01 At&T Intellectual Property I, L.P. Task allocation among devices in a distributed data storage system
US10455045B2 (en) 2016-09-06 2019-10-22 Samsung Electronics Co., Ltd. Automatic data replica manager in distributed caching and data processing systems
US10467195B2 (en) 2016-09-06 2019-11-05 Samsung Electronics Co., Ltd. Adaptive caching replacement manager with dynamic updating granulates and partitions for shared flash-based storage system
US10366084B2 (en) 2016-09-15 2019-07-30 Microsoft Technology Licensing, Llc Optimizing pipelining result sets with fault tolerance in distributed query execution
US10261799B2 (en) * 2017-02-28 2019-04-16 International Business Machines Corporation Programmatic implicit multithreading
US10754706B1 (en) 2018-04-16 2020-08-25 Microstrategy Incorporated Task scheduling for multiprocessor systems
US11126657B2 (en) * 2018-06-11 2021-09-21 Alibaba Group Holding Limited Efficient in-memory representation of computation graph for fast serialization and comparison
US10861126B1 (en) * 2019-06-21 2020-12-08 Intel Corporation Asynchronous execution mechanism
US20210096861A1 (en) * 2019-10-01 2021-04-01 Higon Austin R&D Center System and method to prefetch pointer based structures
GB2609781A (en) * 2020-03-20 2023-02-15 Synapse Innovation Inc Resource allocation method and system
CN112363819A (zh) * 2020-12-02 2021-02-12 深圳市房多多网络科技有限公司 大数据任务动态编排调度方法、装置及计算设备
US11893267B2 (en) 2022-01-14 2024-02-06 Bank Of America Corporation Data flow control and routing using machine learning

Family Cites Families (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4521874A (en) * 1982-09-28 1985-06-04 Trw Inc. Random access memory device
US5241677A (en) * 1986-12-19 1993-08-31 Nippon Telepgraph and Telehone Corporation Multiprocessor system and a method of load balancing thereof
US5155858A (en) * 1988-10-27 1992-10-13 At&T Bell Laboratories Twin-threshold load-sharing system with each processor in a multiprocessor ring adjusting its own assigned task list based on workload threshold
DE69130630T2 (de) * 1990-09-14 1999-09-09 Hitachi Ltd Synchrones Verfahren und Gerät für Prozessoren
JPH04195577A (ja) * 1990-11-28 1992-07-15 Hitachi Ltd マルチプロセッサにおけるタスクスケジューリング方式
US5325525A (en) * 1991-04-04 1994-06-28 Hewlett-Packard Company Method of automatically controlling the allocation of resources of a parallel processor computer system by calculating a minimum execution time of a task and scheduling subtasks against resources to execute the task in the minimum time
CA2076293A1 (en) * 1991-10-11 1993-04-12 Prathima Agrawal Multiprocessor computer for solving sets of equations
US5347654A (en) * 1992-02-03 1994-09-13 Thinking Machines Corporation System and method for optimizing and generating computer-based code in a parallel processing environment
US5325526A (en) * 1992-05-12 1994-06-28 Intel Corporation Task scheduling in a multicomputer system
US5442792A (en) * 1992-08-07 1995-08-15 Hughes Aircraft Company Expert system compilation method
US5768594A (en) 1995-07-14 1998-06-16 Lucent Technologies Inc. Methods and means for scheduling parallel processors
US5889989A (en) * 1996-09-16 1999-03-30 The Research Foundation Of State University Of New York Load sharing controller for optimizing monetary cost

Cited By (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH1131082A (ja) * 1997-07-11 1999-02-02 Teijin Seiki Co Ltd オペレーティングシステムおよびオペレーティングシステムを記録した媒体
JP2010086319A (ja) * 2008-09-30 2010-04-15 Toshiba Corp コンピュータプログラム、マルチプロセッサシステム及びグルーピング方法
JP4635082B2 (ja) * 2008-09-30 2011-02-16 株式会社東芝 マルチプロセッサシステム及びグルーピング方法
US8074211B2 (en) 2008-09-30 2011-12-06 Kabushiki Kaisha Toshiba Computer program, multiprocessor system, and grouping method
JP2010237994A (ja) * 2009-03-31 2010-10-21 Mizuho Information & Research Institute Inc 演算処理システム、演算処理方法及び演算処理プログラム
JP2020129404A (ja) * 2015-10-28 2020-08-27 グーグル エルエルシー 計算グラフの処理
JP2020522824A (ja) * 2017-11-20 2020-07-30 シャンハイ カンブリコン インフォメーション テクノロジー カンパニー リミテッドShanghai Cambricon Information Technology Co.,Ltd. タスク並列処理方法、装置、システム、記憶媒体およびコンピュータ機器
US11113104B2 (en) 2017-11-20 2021-09-07 Shanghai Cambricon Information Technology Co., Ltd Task parallel processing method, apparatus and system, storage medium and computer device
US11113103B2 (en) 2017-11-20 2021-09-07 Shanghai Cambricon Information Technology Co., Ltd Task parallel processing method, apparatus and system, storage medium and computer device
US11221877B2 (en) 2017-11-20 2022-01-11 Shanghai Cambricon Information Technology Co., Ltd Task parallel processing method, apparatus and system, storage medium and computer device
US11360811B2 (en) 2017-11-20 2022-06-14 Shanghai Cambricon Information Technology Co., Ltd Task parallel processing method, apparatus and system, storage medium and computer device

Also Published As

Publication number Publication date
EP0753812A3 (en) 1997-04-16
US5768594A (en) 1998-06-16
CA2181099A1 (en) 1997-01-15
US6434590B1 (en) 2002-08-13
EP0753812A2 (en) 1997-01-15
CA2181099C (en) 2001-09-11

Similar Documents

Publication Publication Date Title
JPH09171503A (ja) 並列処理方法および並列処理装置
JP7220914B2 (ja) コンピュータに実装する方法、コンピュータ可読媒体および異種計算システム
Cierniak et al. Compile-time scheduling algorithms for a heterogeneous network of workstations
KR102184280B1 (ko) 동적 파티셔닝을 이용한 데이터 프로세싱
JP3299611B2 (ja) 資源割付装置
JPH06202882A (ja) 複数のタスク及びジョブのスケジューリング方法
Kwok et al. FAST: A low-complexity algorithm for efficient scheduling of DAGs on parallel processors
CN108108242B (zh) 基于大数据的存储层智能分发控制方法
Sun et al. An adaptive framework for large-scale state space search
Kelefouras et al. Workflow simulation and multi-threading aware task scheduling for heterogeneous computing
JP4890468B2 (ja) ベイズ・ネットワーク構造学習のデータ分割及びクリティカル・セクション
Bohler et al. Improved Multiprocessor Task Scheduling Using Genetic Algorithms.
Hu et al. Cluster-scheduling big graph traversal task for parallel processing in heterogeneous cloud based on DAG transformation
Kuchumov et al. Staccato: shared-memory work-stealing task scheduler with cache-aware memory management
Radulescu et al. LLB: A fast and effective scheduling algorithm for distributed-memory systems
Sun et al. ParSSSE: An adaptive parallel state space search engine
Wen et al. A swap dominated tensor re-generation strategy for training deep learning models
Herrmann et al. Memory-aware list scheduling for hybrid platforms
CN114691302A (zh) 一种面向大数据处理的动态缓存替换方法及设备
CN111813525A (zh) 一种异构系统工作流调度方法
Hamidzadeb et al. Dynamic scheduling of real-time tasks, by assignment
Franc et al. Parallel triangular mesh reduction
Kelefouras et al. Workflow simulation aware and multi-threading effective task scheduling for heterogeneous computing
Foyer et al. Enabling System Wide Shared Memory for Performance Improvement in PyCOMPSs Applications
Kumar et al. Performance Models for Data Transfers: A Case Study with Molecular Chemistry Kernels